نحتاج إلى أن نجعل من السهل جدًا على الأشخاص المساهمة في ترجمة Mudlet - وهذا يعني شيئًا مستندًا إلى الويب حيث يكون العائق الوحيد هو تسجيل الدخول. قد تكون هناك خدمة قائمة على الويب يمكن أن تقدم لنا ترخيصًا مفتوح المصدر للحصول على الإعداد .
البدائل المتاحة:
Launchpad - المستقبل مشكوك فيه
Transifex - مشروع تجريبي هنا: https://www.transifex.com/mudlet/mudlet/dashboard/
يوجد POEditor كتكامل مع جيثب ، مما يسمح بترجمة XLIFF
الملفات (التي من المفترض أن يدعمها اللغوي qt). ولديهم نظام تشغيل
رخصة.
خيار آخر هو القرطبة ، والذي لا يبدو أنه يكلف شيئًا محليًا
دعم ملفات ts.
لم أستخدم مطلقًا أي خدمة / تطبيق ترجمة ، لذلك ليس لدي تفضيلات.
Vadim Peretokin [email protected] schrieb am So. ، 9 أبريل 2017 ،
13:14:
نحتاج إلى أن نجعل من السهل جدًا على الأشخاص المساهمة في ترجمة Mudlet
- هذا يعني شيئًا يستند إلى الويب حيث يكون العائق الوحيد هو تسجيل الدخول فقط.
قد تكون هناك خدمة قائمة على الويب يمكن أن تقدم لنا ملف
ترخيص مفتوح المصدر للحصول على الإعداد.البدائل المتاحة:
Launchpad https://translations.launchpad.net/ - إنه المستقبل
مشكوك فيه مع ذلك-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/Mudlet/Mudlet/issues/856 أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ABAeDUJoAsg-zvnOq1YUvuIqn-fbRwcCks5ruL2WgaJpZM4M3_u1
.
رد: XLIFF _Qt Linguist Manual: Translators_ Qt Doc notes:
__ترجمة السلاسل__
تفتح ملفات مصدر الترجمة (TS) في Qt Linguist للترجمة. ملفات TS هي ملفات XML يمكن للبشر قراءتها وتحتوي على عبارات المصدر وترجماتها. يتم عادةً إنشاء ملفات TS وتحديثها بواسطة lupdate. إذا لم يكن لديك ملف TS ، فراجع Release Manager لمعرفة كيفية إنشاء ملف.
يمكنك استخدام Qt Linguist أيضًا لترجمة الملفات في تنسيق ملف تبادل تعريب XML الدولي (XLIFF) التي تم إنشاؤها بواسطة برامج أخرى. ومع ذلك ، بالنسبة لمشاريع Qt القياسية ، يتم استخدام تنسيق ملف TS فقط. الحد الأدنى للإصدار المدعوم لملفات تنسيق XLIFF هو 1.1.
توجد الآن منصات ترجمة قائمة على الويب تتمتع بمزايا هائلة مقارنة بتطبيقات سطح المكتب: لا حاجة لتثبيت أي برنامج ، وتقترح ترجمات للنصوص المترجمة بالفعل ، وما إلى ذلك.
SlySven لقد قرأت هذا ، ولهذا قلت ما قلته. يقرأ وكأنه غير مدعوم بالكامل أو فكرة متأخرة ، ولهذا السبب أضفته من المفترض (لم أختبره أبدًا).
@ vadi2 المنتجات التي ذكرتها هي منصات قائمة على الويب. لكنك ستظل بحاجة إلى استخدام qt linguist لجعل إخراج تلك المنصات قابلة للاستخدام بواسطة إطار عمل ترجمة Qt. وهو ما يربطنا أيضًا بالتنسيقات المدعومة TS
ملفات و XLIFF
.
لقد لعبت مع Linguist وكانت واجهة المستخدم جيدة جدًا بقدر ما أستطيع أن أقول (أنا معجب: heart_eyes :) ، فهي تكرر حوارات واجهة المستخدم {وتعرض الكود المصدري حيث تنشأ سلسلة النص لـ C ++ التي تنشأ QStrings
} حتى تتمكن من رؤية فكرة جيدة عما سيبدو عليه باللغات المختلفة ويمكنك العمل على ترجمات متعددة في وقت واحد. آمل فقط أن تكون Qt أكثر تشددًا في عدم إعادة ترتيب محتويات ملفات TS دون داعٍ للحفاظ على ضوضاء git عند تحديث الملف من قبل أحد المساهمين - على عكس ، على سبيل المثال ، QGridLayouts
في ملفات .ui. * تنهد *
بالنسبة للحاجة إلى استخدام Qt Linguist - أعتقد أننا نستخدم مكتبات Qt بشكل عام ، فمن المحتمل أن نكون ملتزمين بها (كما هو الحال في _Pig_ بدلاً من _Chicken_ مستويات الالتزام في _ bacon-and-egg sarnie_) بالإضافة إلى التحول إلى gettext
سيكون _ Harder_ بطريقة ليست جيدة على ما أعتقد.
يبدو أنني مهتم برؤية تصدير Qt Linguist إلى شيء مستند إلى الويب ، مع خيار للأشخاص لتثبيت ومعاينة ترجماتهم في الوقت الفعلي إذا رغبوا في ذلك. سألقي نظرة على الخدمات التي ذكرتها
كان لدي أيضًا Transifex في ذهني ولكن لا يبدو أن هذا يعمل جيدًا بعد الآن.
منصة أخرى لترجمة الويب: https://hosted.weblate.org/projects/tilix/translations/
إليك كيفية تعامل مشروع Mozilla مع الترجمة والترجمة: https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Quick_start_guide/Translation_phase
نظرة متعمقة أخرى رائعة على العديد من البدائل والعملية بشكل عام في أطروحة الدراسة الرئيسية هذه حول "الترجمات في البرمجيات الحرة": https://larjona.wordpress.com/translations-in-libre-software/
شكرًا Kebap ، لقد قرأت الورقة التي قمت بربطها. أنا مهتم بـ Weblate و Transifex - سأقوم بفحصهما.
أرغب في الحصول على أقل حاجز ممكن للدخول وهذا يستبعد الترجمة المستندة إلى سطح المكتب حيث يتعين على الشخص تنزيل البرامج وتثبيتها ، ثم البحث عن الملفات الصحيحة قبل أن تتاح لهم فرصة بدء العمل.
يبدو Weblate لطيفًا ومفتوح المصدر ، لكن نسخته المستضافة معطلة أيضًا في الوقت الحالي - وكذلك جميع الترجمات المستضافة مثل مشروع Tilix. ليس جيدا. أنا أيضًا حذر من استضافة أي أشياء أخرى على خادمنا لأنه يعمل عند الحد الأقصى بالفعل.
سأحاول تجربة Transifex التجريبي. إنهم يدعمون المصادر المفتوحة ويبدو أنهم متجر أكبر بكثير ، ومن غير المرجح أن ينخفضوا كثيرًا ، على عكس Weblate.
مع ذلك ، إذا نجح تكامل Weblates Git بالفعل ، فسيكون استخدامه أفضل كثيرًا لأنه _يجب_ تحديث نص المصدر الجديد تلقائيًا من Git ، وربما إلزامه مرة أخرى. Transifex من ناحية أخرى يتطلب مني تحميل الملفات يدويًا لترجمتها.
بينما يدعم Transifex ملفات .ts محليًا ، يبدو أنه يختنق عند التحميل. تم استخدام ts2po
وتحميل ملفات .po
بالرغم من ذلك.
يبدو أنه يمكنك الحصول على تحديثات تلقائية ثنائية الاتجاه بين Transifex و Github باستخدام بعض البرامج الوسيطة: https://docs.transifex.com/integrations/github-txgh
تمكنت من تنزيل .po
مع الترجمة سليمة من Transifex ، لكن po2ts
يختنق بالملف مع وجود خطأ ترميز Python:
po2ts: WARNING: Error processing: input ./for_use_mudlet_rupo_1_ru.po, output ./for_use_mudlet_rupo_1_ru.ts, template None: 'ascii' codec can't encode characters in position 1994-1999: ordinal not in range(128)
سأترك المشروع Transifex حتى في https://www.transifex.com/mudlet/mudlet/dashboard إذا كان أي شخص آخر يرغب في ذلك لترجمةKebapkeneanung. سيعطي Weblate المحاولة التالية.
يعد Weblate أمرًا رائعًا - فهو يحتوي على _ton_ من خيارات تسجيل الدخول من طرف ثالث ، لذا فإن الانضمام إليه خالٍ من أي احتكاك.
كتب @ vadi2:
تمكنت من تنزيل .po مع الترجمة سليمة من Transifex ، لكن po2ts تختنق الملف مع وجود خطأ ترميز Python:
أعتقد أنني قرأت في مكان ما أن نسختهم من po2ts
تعمل فقط مع المواصفات القديمة لملف .ts
وتحتاج إلى التحديث (في نهايتها على ما أعتقد) - ألاحظ أنها تأتي من مجموعة أدوات الترجمة من كود مصدر Translate House صفحة تدويل mixxx .
في الواقع ، يبدو خطأ "التشفير" وكأنه يحاول إنتاج ملف .ts
حيث يكون التشفير هو ASCII وليس UTF-8 ، لذا فهو يتداول في النقطة التي يحتاج فيها إلى استخدام بعض الأحرف (في سلسلة _translated_) التي ليست ASCII ...
تم تحديث هذه الصفحة آخر مرة منذ أربع سنوات! انتهت العملية للمطورين
من التاريخ ، على ما أعتقد. هذه بعض وثائق الترجمة الرائعة
على أية حال!
في الثلاثاء ، 19 سبتمبر 2017 ، الساعة 6:18 مساءً ، كتب ستيفن ليونز [email protected] :
كتب @ vadi2:
تمكنت من تنزيل ملف .po مع الترجمة سليمة من Transifex ،
لكن po2ts تختنق الملف بخطأ ترميز بايثون:أعتقد أنني قرأت في مكان ما أن نسختهم من po2ts تعمل فقط مع نسخة قديمة
مواصفات ملف .ts وتحتاج إلى تحديث (في نهايتها أعتقد) - أنا
لاحظ أنه يأتي من مجموعة أدوات الترجمة
http://toolkit.translatehouse.org/ من Translate House Github المصدر
كود https://github.com/translate/translate وآخر إصدار هو
2.2.5 (لا أعرف ما يستخدمونه) وقت كتابة هذا التقرير. وجدت
صفحة ويب من مشروع آخر (لست متأكدًا من أنها تستند إلى GitHub ولكن ملف
بدت العملية الشاملة بالنسبة لهم مثل نوع الأشياء التي سيتعين علينا القيام بها: mixxx
صفحة التدويل
https://mixxx.org/wiki/doku.php/internationalization .-
أنت تتلقى هذا لأنه تم تعيينك.قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/Mudlet/Mudlet/issues/856#issuecomment-330592819 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AAGxjEdeBPs-7fDkUwfoLjUt48eJJhl0ks5sj-lagaJpZM4M3_u1
.
لا يبدو أن Weblate في وضع جيد. لم أتلق ردًا على طلبي المستضاف بعد ، ولا يحصل المشروع على الكثير من التحديثات. العودة إلى Transifex هو عليه.
نصائح حول كيفية الحصول على إعداد Transifex باستخدام Qt: https://forum.qt.io/topic/36750/qt5-ts-files-and-transifex-continuous-translation-localization
https://bugreports.qt.io/browse/QTBUG-1136 :
أخيرًا ، اللغوي هو أساسًا على دعم الحياة - لقد تنازلنا عن الأرض ل ISVs المتخصصين في هذا المجال.
Qt Linguist هي تقنية طريق مسدود - لن تحصل على أي ميزات للمضي قدمًا ، لذلك يتعين علينا استخدام نظام أساسي قائم على الويب هنا.
سأبحث في الحصول على ترجمات Transifex وتشغيلها الآن بعد توفر # 1334.
فقط لتكرار ما ذكرته في المرجع التبادلي لـ Kebap أن الحشد بدا أيضًا كخيار صالح لمشروع مفتوح المصدر مثل مشروعنا - ويمكنهم التعامل مع ملفات Qt .ts
ولديه أيضًا تكامل Github - يجب أن تكون ميزة pseudolocalizaton أيضًا ساعدنا في منع حدوث مشاكل في واجهة المستخدم الرسومية لأننا لم نقم بتصميم النص بشكل صحيح (على ما أعتقد ) وسنساعدنا بالتأكيد على ضمان ترك مساحة كافية للغات ذات السلاسل الأطول من en-US
...
يبدو كرودين لطيفًا - دعنا نرى كيف يقارن مع Transifex ، لديّ مشروع تجريبي هنا .
SlySven هذا لغة html أفضل للمترجمين كان سابقًا لأوانه - Transifex على سبيل المثال يتعامل مع ترميز html لطيف بالفعل:
لقد فهمت الأمر - لدى Crowdin هذا الخيار أيضًا. ما عليك سوى تحديد "إخفاء" في إعدادات علامات المحرر :
هذا يعني أنه لا يتعين علينا تنفيذ التعليمات البرمجية التي يقوم SlySven بعملها بعد الآن - يمكننا استخدام HTML كما هو في سلاسل المصدر ، ولا يتم إزعاج كل من المبرمجين والمترجمين.
أنا سعيد مع اقتراحSlySven الصورة باستخدامcrowdin للترجمة. Kebap ، keneanung ، SlySven أفكارك؟
بمجرد أن نتفق ، سأقوم بتنقيح المشروع على برنامج Crdin ليكون رسميًا ، وأتقدم بطلب للحصول على ترخيص مفتوح المصدر وسنبدأ في نشر الكلمة للمترجمين.
مهلا،
أنا جزء من فريق Crowdin وسأساعد بكل سرور في مزيد من الإعداد إذا لزم الأمر! لا تتردد في ذكرني إذا ظهرت أي أسئلة
أنا بخير مع كرودين أيضًا. كانت واجهة المستخدم الخاصة بها مربكة في البداية ، لكنني متأكد من أننا (أنا) سنعتاد عليها.
سأعترف بأنني لم ألقي نظرة عن كثب على Transifex واحد لأنني أوقفته عقليًا نظرًا لأنني فهمت أنه لم يتعامل بشكل جيد مع تنسيق Qt .ts
بشكل جيد / مباشر - هل تغير ذلك أو كنت غير صحيح في هذا الاعتقاد؟
هناك شيء واحد عن Crowdin الذي أراه في التزامات git الأخيرة وهو أنك كنت تحمل عدة ملفات .ts
والتي تم تهيئتها محليًا لتكون للغة معينة. لقد قمت بإصلاحه الآن من خلال إرسال ملف واحد فقط mudlet_en.ts
ولكن هذا لا يزال يبدو غير مناسب تمامًا بالنسبة لي. قد ترغب في إزالة أو التعليق على الأسطر TRANSLATIONS =
في الملف mudlet.pro
ولديك نص برمجي يعمل (في قاعدة المصدر):
lupdate -recursive ./src/ -ts ./translations/mudlet.ts
لإنشاء ملف واحد غير محدد اللغة لتمريره إلى عملية ترجمة Crowdin والحصول على ذلك لإنتاج ملفات mudlet_xx_YY.ts
التي نريدها (لقد قمت بالفعل بتغيير أحد الإعدادات على Crowdin لتحديد _xx_YY
language + اللواحق المحلية حيث بدت في الأصل أنها معيّنة على لغة _xx
واحدة فقط). سيظل ينتج عن ذلك مجموعة من الملفات ليتم نسخها بعد ذلك إلى نفس الدليل جاهزًا مقابل lrelease
.
راجع للشغل إن ترك الملف العادي غير المُلحق مفيدًا لأنه يعني أنه يمكن للأطراف المهتمة بلغة الأقلية نسخه وإعادة تسميته للعمل بشكل خاص إذا رغبوا في استخدام لغة مختلفة غير مكشوفة باستخدام Qt Linguist المقدم. {ربما حدث قرصاني يوم 19 سبتمبر على سبيل المثال !!!}
أعتقد أن خطوات HTML لمكافحة التشويش التي اتخذتها تبدو أنها أصبحت أقل أهمية بعض الشيء حيث يبدو أن المكون الإضافي Qt Designer أصبح أقل حرصًا على تشويش HTML في الإصدارين الأخيرين من Qt. لست مقتنعًا تمامًا بعد بأنه لن يفسد الأشياء ويغير الأشياء ، على سبيل المثال ، إجبار استخدام الخطوط المعينة التي يمتلكها آخر شخص قام بتحريرها في أنظمته بدلاً من تركها لتكون عامة يمكن أن تعمل على جميع المنصات. سألقي نظرة أخرى وأبلغ عن ذلك هنا لأنه سيؤثر على كيفية تسجيلنا لمثل هذا HTML في عملنا.
سأعترف بأنني لم ألقي نظرة عن كثب على Transifex واحد لأنني أوقفته عقليًا نظرًا لأنني فهمت أنه لم يتعامل مع تنسيق Qt .ts الحالي بشكل جيد / مباشر - هل تغير ذلك أو لم أكن مخطئًا في هذا الاعتقاد؟
كنت كذلك ، يبدو أنه قد تغير: https://docs.transifex.com/formats/qt-ts
لا أخطط لاستخدام المكوّن الإضافي Qt Designer ، لذا فإن أي تشويش لا يكون ذا صلة - يتعامل كرادين مع الترجمات جيدًا بما يكفي من تلقاء نفسه ، كما أن عرض HTML بنمط "إخفاء" أمر مقبول.
أوه ، ما زال يفعل ذلك - إدخال الجداول و DTD - لذلك ، وهو أسهل في القراءة والتحليل من قبل البشر ، هذا:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'FreeSans'; font-size:9pt; font-weight:400; font-style:normal;">
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:large; font-weight:600;">Welcome to Mudlet!</span></p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click on one of the MUDs on the list to play.</p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To play a game not in the list, click on <img src=":/icons/list-add_small.png" /><span style=" color:#555753;">New</span>, fill in the <span style=" font-style:italic;">Profile Name</span>, <span style=" font-style:italic;">Server address</span>, and <span style=" font-style:italic;">Port</span> fields in the <span style=" font-style:italic;">Required</span> area.</p>
<p align="center" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">After that, click <img src=":/icons/dialog-ok-apply_small.png" /><span style=" color:#555753;">Connect</span> to play.</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Have fun!</p>
<p align="right" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The Mudlet Team <img src=":/icons/mudlet_main_16px.png" /></p></body></html>
أو هذا ، الذي يفعل نفس الشيء فيما يتعلق بنا:
<html><head/><body><center><big><b>Welcome to Mudlet!</b></big></center></p>
<p><center>Click on one of the MUDs on the list to play.<center></p>
<p><center>To play a game not in the list, click on <img src=":/icons/list-add_small.png"/> <span style="color:#555753;">New</span>, fill in the <i>Profile Name</i>, <i>Server address</i>, and <i>Port</i> fields in the <i>Required</i> area.<center></p>
<p><center>After that, click <img src=":/icons/dialog-ok-apply_small.png"/> <span style=" color:#555753;">Connect</span> to play.</center></p>
<p>Have fun!</p>
<p align="right">The Mudlet Team <img src=":/icons/mudlet_main_16px.png"/></p></body></html>
من الناحية الفنية ، هذا هو كل Qt rich-text التي هي فقط مجموعة فرعية من HTML (فلماذا يتم فرض تضمين HTML 4.0 DTD الصارم؟)
حتى إظهار <
و >
هنا بدلاً من <
و >
في الملف الخام الذي سيراه المترجمون ، أعتقد أنه من الواضح ما الذي سينتقل إلى يسهل التعامل معها في حالة عدم وجود عنصر واجهة مستخدم لعرض النص المنسق بتنسيق HTML / Qt ...
أعتقد أنني قرأت في مكان ما أن لغات CJK يجب ألا تستخدم تأثيرات الخط Bold أو Italics (بدلاً من ذلك أعتقد أنها تستخدم ما يعادل لهجة النقطة على حافة واحدة من الحرف الرسومي) - لذلك في هذه الحالات يمكن أن تشارك العلامات في عملية الترجمة ...
تشغيل البرامج النصية من shell ليس محمولاً (لنظام التشغيل Windows) ، لذلك أفضل عدم القيام بذلك. يبدو أن الملف الحالي mudlet_en.ts
يعمل بشكل جيد؟
إنه يوم الجمعة ، لذلك دعونا نتوصل إلى نتيجة بشأن هذا في اليومين المقبلين حتى نتمكن من البدء في الخطوات التالية ، والتي أعتقد أنها ستكون:
1) عملية للمترجمين للإبلاغ عن السلاسل المحيرة - إذا لم يستطع المترجم فهمها ، فمن المحتمل أن مستخدمينا لا يفعلون ذلك أيضًا
2) عملية الترجمة الفعلية وكيف ستعمل مع سير العمل لدينا
أوصي أولاً بالتفكير أكثر في تفاصيل العمليات التي نحتاجها ، وعندها فقط حدد الأداة التي تناسبها بشكل أفضل.
بقدر ما أستطيع أن أرى الآن ، لدينا بعض المصادر الرئيسية المختلفة للنص:
ثم تكون العمليات الخاصة بكل منها متشابهة إلى حد كبير ، ولكنها تحتاج إلى المراجعة بشكل منفصل:
لقد لاحظت بعض المكونات الإضافية لـ Wordpress و Mediawiki ، بالإضافة إلى التكامل في Crowdin و Transifex ، لكن لم يكن لدي الكثير من الوقت للبحث في كل هذا بمزيد من التفصيل.
أرغب في إجراء أكثر العمليات تلقائية لجميع الخطوات المذكورة أعلاه ، واختيار الأداة التي يمكن أن تدعم بشكل أفضل.
فيما يتعلق بالشفرة المصدر / الحوار (النماذج) ، انتقل إلى:
lupdate
الذي يستخرج نصوص المصدر من ، خمن ماذا ، الكود المصدري ويضيف / يحدّث سجلاتهم في - ما أعتقد أنه يجب أن يكون لغة محايدة mudlet.ts
file (the يشير mudlet_en.ts
لبعض الأطراف إلى أنه يحمل ترجمات للغة الإنجليزية على وجه التحديد - بينما - كيف سنستخدمها كرمز مصدر ==> وسيط نقل تاريخ Crowdin ، سيتم استخدامه للجميع باستثناء اللغة الإنجليزية (الأمريكية ) حالة. إذا لم يتم استدعاؤها باستخدام الخيار --no-obsolete
فلن تتم إزالة السلاسل الموجودة ولكن التي اختفت الآن - وهو ما نريده على الأقل أثناء مراحل التطوير. السبب الذي أقترحه لإنشاء واحدة منفصلة لـ لغة en-US لأنها ستكون قصيرة جدًا وتحتوي فقط على سلاسل لمضاعفات الجمع ، أي الأماكن التي سيكون لدينا فيها سلاسل مصدر مثل "حذف٪ n غرفة (غرف)" بحيث ، في هذه الحالة ، إما "حذف غرفة واحدة" أو يتم استخدام "حذف غرفتين"..ts
المحدث من (أقترح) إصدار linux CI (لأنه من الأسهل بالنسبة لنا كتابة البرنامج النصي لـ)lupdate
- ولكن هذا يجب أن يحدث بشكل طبيعي عبر البرمجة النصية CI على تحديثات فرع "التطوير"mudlet_xx_YY.ts
الملفات يدويا من Crowdin والجهاز الهضمي ارتكابها في /translations
الدليل - تذكر أن لا يتم تحديث هذه الملفات بواسطة lupdate
باستثناء ، ربما ، لصيغ الجمع فقط mudlet_en_US.ts
one - بدلاً من ذلك يتم إنشاؤها في Crowdin من ملف mudlet.ts
..ts
. بدلاً من ذلك ، بمجرد مراجعة الكود وإخراجها للعامة ، سيقرأ تطبيق mudlet الترجمات في وقت التشغيل عن طريق تحميل الملف الثنائي المحدد mudlet_xx_YY.qm
(جنبًا إلى جنب مع ملف Qt المناسب - والذي ألاحظ أننا قمنا به بالفعل التوزيع باستخدام إصدارات المثبت!) لذا أتخيل مبدئيًا أن أحدنا سيشغل lrelease
لتحويل ملفات .ts
إلى ملفات .qm
المطابقة وإلزامها بمستودع git كـ نحن سوف. في النهاية اقترح Vadim أننا سنقوم بشحن إصدارات الإصدار بمجموعة من ملفات .qm
المضمنة كملف موارد. هذا مناسب لإصدارات المثبِّت ولكن برامج حزم Linux ستتوقع بدلاً من ذلك تخزينها في ، على سبيل المثال /usr/share/mudlet/translations
للقراءة فقط (جنبًا إلى جنب مع ملفات Mudlet lua الخارجية). لدي كود نموذج أولي يسمح بالتعامل مع هذين الترتيبين ولكن من خلال السماح للمستخدم بتحميل ملفات الترجمة من مكان آخر (ربما من دليل /translations
في الكود المصدري) ، سيسمح ذلك بالتطوير المستقل للترجمات بالنسبة للغات الأقليات الأخرى من قبل الأطراف المهتمة باستخدام أداة Qt الأصلية Linguist
- ستسمح أيضًا للمطورين بالعمل في حالات خاصة / اختبارية.QLangaugeEvent
أكثر تعقيدًا مما نحتاج إليه حيث يتم إطلاقه في كل مرة يتم استدعاء QQTranslator::load(...)
- لقد وجدت أنه من الأسهل الحصول على mudlet
class emit
a (void) signal_translatorChangeCompleted(const QString&, const QString&)
حيث لا يتم استخدام وسيطات الرموز الحالية والسابقة xx_YY
(language_COUNTRY / REGION) إلى حد كبير باستثناء IIRC Host
الذي ينشئ حدث lua للنص البرمجي / معالجات أحداث الحزمة للعمل معها. يتم إرسال هذه الإشارة إلى كل فئة تحتوي على نصوص واجهة مستخدم رسومية ثابتة إلى slot_guiLanguageChange()
حيث تستدعي retranslateUi(this)
المطلوب المحدد في كل فئة تستخدم أيضًا setupUi(this)
بشرط أن تقوم بإعداد الخيار في Qt IDE بشكل صحيح (لا أعرف كيف يعمل هذا عند استخدام qmake
مباشرة):tr(...)
لإنشائها.هذا ليس كل ما لدي في هذا الموضوع ولكن يمكنني أن أرى كيف يجب أن تذهب معظم الخطوات لنصوص واجهة المستخدم الرسومية للتطبيق ...
شكرا على تلك التفاصيل SlySven! يبدو لي ، ربما فعلت هذا من قبل؟ لتطبيق آخر؟ مع كورودين؟ هذا من شأنه أن يجعل ترجمة تطبيق Mudlet نفسه أسهل بكثير.
من ناحية أخرى ، لا يزال لدينا نفس الأسئلة لمصادر النص الأخرى في Mudlet universe ، مثل توثيق wiki وموقع Mudlet والنصوص الإضافية التي قد تحتاج إلى دمجها يدويًا إلى حد ما ، كما هو موضح في آخر مشاركة لي أعلاه.
لم أجرب الإجابة أعلاه بشكل كامل ولكن Crowdin لديه تكامل Github الذي لا يفسر - https://github.com/Mudlet/Mudlet/pull/1692 عبارة عن علاقات عامة تم إنشاؤها تلقائيًا ، ولن نحتاج إلى القيام بذلك أي تحميل أو تنزيل يدوي ؛ ببساطة دمج العلاقات العامة. وبالتالي فإن العملية ستكون أبسط قليلاً مما هو موصوف!
ستنتهي صلاحية محاكمة Crewdin في غضون 4 أيام ، لذا أحتاج إلى yay / nay - يبدو أننا سعداء بها حتى الآن
كان هناك yay مني!
مرحبا! ؛)
لقد جربت https://crowdin.com/ ... للترجمة ، لا بأس ، لا أعرف ما إذا كان ذلك مفيدًا للتعليقات السريعة والطلبات وما إلى ذلك ... مثل "contestualization" للترجمة أو مثال ...
ماذا عن قسم التعليقات في كرادين؟
مرحبًا @ Joker-ITA ،
توجد بالفعل عدة طرق حول كيفية إضافة سياق إضافي للمترجمين:
1) في المحرر ، انقر فوق "تعديل السياق" أسفل السلسلة لتوفير مزيد من المعلومات للمترجمين ؛
2) يمكنك ترك تعليق لأي سلسلة في المحرر (في اللوحة اليمنى ، اكتب تعليقك) ؛
3) إضافة سياق لأي سلسلة عبر إعدادات المشروع -> علامة التبويب سلاسل ؛
4) أراهن أن لديك بعض المصطلحات المحددة التي قد لا يفهمها المترجمون العاديون ، وبالتالي فمن المنطقي إنشاء مسرد وتحميله إلى Crowdin. مزيد من المعلومات . يمكن أن يكون جدول بيانات Excel يحتوي على عمودين: المصطلح والوصف ؛
5) إذا كان لديك تعليقات داخل الملفات (مثل Android XML ، سلاسل iOS ، .properties ، .yml ، Google Chrome JSON) ، فسيتم استيرادها تلقائيًا مع الملف ؛
6) يمكنك تحميل لقطة الشاشة على Crowdin ووضع علامة على أي سلسلة عليها: https://support.crowdin.com/adding-screenshots/
7) إذا تحدثنا عن webapp l10n ، فمن المنطقي تجربة ميزة In-Context الخاصة بنا للسماح للمترجمين بالترجمة مباشرة على موقع الويب الخاص بك.
إنها فقط الطرق الرئيسية التي يمكنك من خلالها وضع نصوص في سياق الترجمة 😄
كتب Kebap :
شكرا على تلك التفاصيل SlySven! يبدو لي ، ربما فعلت هذا من قبل؟ لتطبيق آخر؟ مع كورودين؟ هذا من شأنه أن يجعل ترجمة تطبيق Mudlet نفسه أسهل بكثير.
فقط باستخدام أدوات Qt الخاصة يدويًا (قضيت أسبوعين في جنوب فرنسا في العامين الماضيين في العمل على التفاصيل). سنستمر في استخدام اثنين منهم - lupdate
& lrelease
- لكننا نستبدل Qt Linguist
(كونها الأداة التي تضيف الترجمات إلى النصوص الأصلية الموجودة في عدد من .ts
الملفات التي تم إنشاؤها من قبل lupdate
لكل الترجمة، قبل lrelease
ينتقل منها الى محددة لغة / الموقع mudlet_xx_YY.qm
الملفات المطلوبة - مرة أخرى واحدة في الانجليزية / الترجمة موقع معروض) مع Crowdin الذي سيأخذ ملفًا واحدًا mudlet.ts
† وينشئ ملفات mudlet_xx_YY.ts
بدلاً من ذلك.
أحد الاختلافات المهمة بين استخدام linguist
وما سنفعله باستخدام Crowid هو أنه يمكننا الابتعاد بدون:
TRANSLATIONS =
سطر في ملف مشروع Crowid.
† في الواقع أعتقد أننا سنحتاج إلى ملفين - mudlet.ts
لجميع اللغات والتي ستخضع لعملية Crowdin و mudlet_en_US.ts
والتي سيتم استخلاصها باستخدام الخيار -pluralonly
وسيكون لها فقط بعض الترجمات لتحويل رسائل مثل tr("deleted %n room(s)", "", roomCount)
إلى "deleted 1 room"
أو "deleted 2 rooms"
اعتمادًا على قيمة roomCount
ويمكن على الأرجح أن يتم ذلك عن طريق رسالتك ...
عظيم - نحن نذهب مع Crowdin :)
سأقوم بتعديل اسم الملف كما يقترح SlySven وإعداد المشروع في Crowdin المناسب حتى يتمكن الناس من البدء في الترجمة. سيتم حفظ أي ترجمات اختبارية حالية قمنا بها في ذاكرة المعاملات ، لذا فإن إعادة تطبيقها سيكون أمرًا سهلاً للغاية.
الإجابة على أسئلةKebap ، مع مراعاة إجابةSlySven :
lupdate
بهذاlupdate
يدويًا ونلزمها بـ development
- يمكن أتمتة هذا الجزء على أساس يومي بواسطة Travisما هي الحاجة لملف ترجمات منفصل مع الجمع فقط؟
تتوفر إرشادات الترجمة على https://wiki.mudlet.org/w/Translating_Mudlet
التعليق الأكثر فائدة
ستنتهي صلاحية محاكمة Crewdin في غضون 4 أيام ، لذا أحتاج إلى yay / nay - يبدو أننا سعداء بها حتى الآن