استمرار سلسلة من المقالات حول إعداد تعريب مستمر. يمكنك العثور على الأول هنا . في هذه المقالة ، سأخبرك بكيفية دمج حزمة Serge-Smartcat-GitLab وتكوين ملفات تكوين Serge باستخدام مشروع اختبار مثال. تعليمات لأوبونتو.
التثبيت عبر vagrantfile
إذا لم يكن لديك خادم مع أوبونتو في متناول اليد ، يمكنك استخدام Vagrant. كيف يعمل:
- تثبيت Vagrant و VirtualBox باتباع الإرشادات .
- قم بتنزيل البرنامج النصي vagrantfile and bash.
- إطلاق vagrantfile باتباع التعليمات .
نتيجة Vagrant build هي آلة افتراضية مع Ubuntu ، حيث تم تثبيت Serge مع البرنامج المساعد Smartcat. سيتم نسخ جميع الملفات اللازمة ، يتم إنشاء مفتاح سه. يمكنك المتابعة فورًا إلى إعداد المشروع وتشغيل التطبيق.
التثبيت اليدوي
إنشاء المستخدم
إنشاء مجموعة مستخدم serge:
sudo groupadd serge
قم بإنشاء مستخدم serge باستخدام الدليل الرئيسي / usr / local / serge:
sudo useradd -g serge serge -m -d /usr/local/serge
تثبيت سيرج
وثائق سيرج كاملة هنا .
تحديث البيانات الأولية لقاعدة بيانات الحزمة المحلية:
sudo apt-get -qq update
تثبيت أدوات التجميع ، وكذلك الحزم اللازمة. قبل بدء التثبيت ، تأكد من تثبيت Perl 5.10 أو أعلى.
sudo apt-get -qq -y install build-essential libssl-dev libexpat-dev unzip wget
انتقل إلى الدليل الرئيسي لمستخدم serge وتثبيت Serge بجميع التبعيات اللازمة.
cd /usr/local/serge sudo -u serge wget https://github.com/evernote/serge/archive/master.zip -O serge-master.zip sudo -u serge unzip serge-master.zip sudo -u serge unlink serge-master.zip cd serge-master sudo cpan App::cpanminus sudo cpanm --installdeps . sudo -u serge sudo ln -s /usr/local/serge/serge-master/bin/serge /usr/local/bin/serge
تثبيت البرنامج المساعد Smartcat
sudo cpanm HTTP::Daemon@6.01 sudo cpanm Serge::Sync::Plugin::TranslationService::Smartcat sudo cpan install LWP::Protocol::https
مفتاح الخلق
قم بإنشاء مستخدم serge باستخدام المفتاح ssh الذي سيستخدمه مستخدم serge في GitLab:
sudo -u serge ssh-keygen -t rsa -N "" -f .id_rsa_serge
التكامل مع GitLab
إنشاء مستخدم سيرج في GitLab وإضافته إلى جميع مستودعات المطور.
انسخ المفتاح ssh من ملف id_rsa_serge.pub إلى إعدادات ملف تعريف المستخدم serge في GitLab. يعد ذلك ضروريًا حتى يتمكن سيرج من تلقي وإرسال السلاسل في GitLab.
اكتمال التثبيت!
تكامل Smartcat
للبدء ، يجب عليك:
- الاشتراك في Smartcat .
- قم بإنشاء مشروع من خلال الإشارة إلى اللغات التي تنوي ترجمتها إليها. عند إعداد المكوّن الإضافي ، ستحتاج إلى رموز اللغة التي تستخدمها Smartcat.
- الحصول على project_id ، الرمز المميز و token_id .
- الكتابة إلى support@smartcat.ai واطلب تمكين الدعم لخوارزمية تحليل ملف Serge
تكوين سيرج Smartcat
قبل المتابعة إلى الإعداد ، سوف أصف المبدأ العام للعملية. تتضمن دورة التوطين القياسية 5 خطوات:

- سحب - الحصول على خطوط جديدة من مستودع.
- السحب - احصل على سلاسل مترجمة من Smartcat (تم تمكين مكون Smartcat الإضافي).
- الترجمة - يتم تحليل جميع تنسيقات المصدر من المستودع وتحويلها إلى ملفات .po ، تتم كتابة الترجمات المستلمة إلى ملفات .po. تتم كتابة جميع الأسطر إلى قاعدة بيانات ذاكرة الترجمة Serge.
- push-ts - يتم إرسال خطوط جديدة مستلمة في الخطوة الأولى إلى Smartcat (باستخدام المكون الإضافي Smartcat).
- يتم الضغط على سلاسل المترجمة في GitLab.
يمكنك استخدام التكامل مع نظام CAT آخر ، على سبيل المثال ، هناك مكون إضافي لبرنامج Pootle .
مستودعات Serge و git
كيف يعرف سيرج أي خطوط لإرسالها للترجمة؟ لتحديد خطوط جديدة ، يتم استخدام أدوات git القياسية: يتم أخذ الفرق بين الفرع الرئيسي والفرع الحالي. يتم إرسال Diff للترجمة.

هام : كقاعدة عامة ، يتم حماية الفرع الرئيسي ، وبالتالي يتم استخدام فرع ترجمة إضافي لتحديد الاختلافات ، ونطلق عليه "الترجمة الأساسية". وهذا هو ، بعد دمج الإصدار في ماجستير ، يجب أن يكون سيد عقدت بالإضافة إلى ذلك في ترجمة قاعدة.
هناك نقطة مهمة هنا. من الضروري بناء العمليات بطريقة تجعل المطورين ، من ناحية ، يفهمون ماذا وفي أي لحظة سيذهبون إلى الترجمة ، ومن ناحية أخرى ، بحيث لا يعمل techpec في دوائر ، ممسكًا برأسه ، لأن فرقه هو 1000 سطر. ويبدو أنه تم تصحيح العنوان فقط.
مبدأ العمل
يدخل Serge إلى المستودع ، ويأخذ جميع الفروع ، ويبدأ بمقارنتها بالفرع الرئيسي. لكل فرع يتم اكتشاف الفرق فيه ، فإنه ينشئ مجموعة من مستندات الترجمة في مشروع Smartcat. لكي لا تتورط في فوضى الفروع غير الملائمة وألا تقف بالقرب من كل مطور بسؤال: "هل تذكر حذف الفرع؟" ، فمن المناسب استخدام البادئات. على سبيل المثال ، يعمل Serge فقط مع الفروع التي لها بادئة الترجمة .
من المهم أيضًا أن تندرج النصوص المقروءة والمعتمدة بالفعل والتي أصبحت جاهزة للترجمة في الفرع مع ترجمة البادئة. بعد كل شيء ، لا أحد يريد تحليل تاريخ الإرتكارات دون جدوى لفهم أي نوع من النصوص هم ولماذا يبدو الفرق مثل هذا؟
إعداد المحتوى
عملية إعداد المحتوى لدينا هي كما يلي:

بيان المشكلة. عندما تكون المهمة في مرحلة الصياغة ، تظهر النصوص في بعض الأحيان بالفعل والتي يجب أن تذهب إلى التطبيق دون تغيير. إذا كان الأمر كذلك ، فإن مؤلف الإعلانات والكاتب الفني يساعدان في وضع اللمسات الأخيرة عليها.
تطوير التصاميم. عندما أعد المصمم المخططات ، قرأ الكاتب التقني وكاتب النصوص جميع النصوص. وبالتالي ، فإن المخططات المستخلصة في اللغة الإنجليزية تقع في التطور. لا يتعين على المطور التفكير في النصوص ؛ إنه ببساطة يأخذ خطوطًا جاهزة من المخططات.
التنمية. لسوء الحظ ، لا يمكن أن تغطي الخطوات السابقة جميع أنواع النصوص الممكنة. على سبيل المثال ، لا تتضمن التخطيطات أدوات التحقق ، أخطاء واجهة برمجة التطبيقات ، بعض الإطارات المشروطة. إذا كان من الضروري أثناء عملية التطوير إضافة خطوط ، فإن الكاتب التقني ومؤلف الإعلانات يزودان المطور بجميع النصوص اللازمة.
وبالتالي ، في وقت ما ، لدينا حالة حيث يحتوي الفرع على جميع النصوص الجديدة اللازمة لجزء من الكود الذي يتم تطويره فيه. في هذه المرحلة ، يتم إنشاء فرع جديد منه مع ترجمة البادئة - ويمكن أن يبدأ سيرج عملية الترجمة. عندما تكون الترجمات جاهزة ، يأخذها المطور من فرع الترجمة ، ثم يتصرف بناءً على تدفق البوابة المقبول في الفريق.
تقلل هذه العملية من مشاركة المطور في عملية التعريب ، وتقلل أيضًا من حجم العمل اليدوي: تحتاج فقط إلى إنشاء فرع.
يعتمد الوصف الإضافي لعملية التوليف اعتمادًا كبيرًا على حقيقة أن الفريق لديه ترتيبات وعمليات مماثلة.
إعداد المشروع
تسجيل الدخول باسم سيرج:
sudo -Hu serge -i
قم بإنشاء دليل المجموعات:
mkdir groups
سيستضيف هذا الدليل المشروعات المقابلة لمستودعات التخزين في GitLab. من المنطقي تكرار بنية مجموعات المستودعات ومواقعها لتسهيل التنقل.
إنشاء دليل للمشروع الأول:
cd groups mkdir myproject cd myproject
نسخ ملفات التكوين سيرج. يمكنك تثبيت قائد منتصف الليل وإدارة الملفات باستخدام مدير الملفات. قبل تثبيت MC ، يجب عليك تسجيل الخروج من حساب سيرج الخاص بك.
exit sudo apt install mc sudo -Hu serge -i
الملفات المراد نسخها من / usr / local / serge / serge-master / bin / tools / feature-branch-config-generator:
- ملف التكوين سيرج: myproject.cfg
- ملف قالب المهمة: myproject.inc
- .serge template: myproject.serge.tmpl
- ملف لإضافة الفروع يدويًا: myproject_branches.txt
- النصي للعمل مع GitLab: fbcgen.pl
cp /usr/local/serge/serge-master/bin/tools/feature-branch-config-generator/{myproject.cfg,myproject.inc,myproject.serge.tmpl,myproject_branches.txt} /usr/local/serge/serge-master/groups/myproject cp /usr/local/serge/serge-master/bin/tools/feature-branch-config-generator/fbcgen.pl /usr/local/serge/serge-master/
إنشاء ملف لتسجيل سجلات البرنامج المساعد:
mkdir log cd log touch smartcat.log
تكوين myproject.inc
- في حقل الاسم ، حدد تنسيق ملف المورد المستخدم في المشروع.
- املأ المعرف بالقناع٪ yourproject٪.٪ Yourformat٪.٪ Yourmasterbranchname٪.
- في مجال destination_languages ، حدد اللغات التي تريد الترجمة إليها.
- املأ المصدر بالقناع. /٪yourproject٪/٪yourmasterbranch٪/res/ar.
- املأ output_file_path باستخدام القناع. /٪yourproject٪/٪yourmasterbranch٪/res/٪ LANG٪ /٪ FILE٪.
- املأ source_match بالقناع.٪ Yourformat٪.
- اعتمادًا على تنسيق ملفات الموارد ، حدد المكون الإضافي المطلوب للتحليل. الإضافات مدرجة في وثائق سيرج . املأ ts_file_path باستخدام قناع ./po/٪yourproject٪/٪ LOCALE٪ /٪ FILE٪ .po.
- املأ master_job باستخدام قناع٪ yourproject٪.٪ Yourformat٪.٪ Yourmasterbranch٪.
يتم ترك المعلمات المتبقية دون تغيير.
تكوين myproject.serge.tmpl
- project_id - معرف المشروع في Smartcat
- token_id ، الرمز المميز - البيانات من Smartcat
- remotepath - هنا يجب عليك تحديد اسم المعلمة وقيمته {٪ yourmasterbranch ٪٪ ssh_path_to_your_repo٪ #٪ yourmasterbranch٪} بشكل صحيح
- $ FBCGEN_DIR_PADDED -٪ ssh_path_to_your_repo٪ # FBCGEN_BRANCH
- id - job.yourmasterbranch
- اسم - مشروعك
- source_language - en
- destination_languages - اللغات التي يلزم الترجمة إليها
- source_dir - ./branches/yourmasterbranch/٪path_to_resource_files٪
- source_match - en.٪ yourformat٪
- db_source - DBI: SQLite: dbname -./٪ yourproject٪ .db3
- db_namespace -٪ yourproject٪
- ts_file_path - ./po/PROJECT_ID_IN_SMARTCAT/٪ LANG٪ /٪ FILE٪ .po
- output_file_path - ./branches/٪yourmasterbranch٪/٪path_to_resource_files٪/٪ LOCALE٪. ٪ yourformat٪
- output_lang_rewrite {
zh-hans zh-cn '' zh-hant-tw zh-tw
} - تسمح لك هذه المعلمة بإعادة تعريف تسميات اللغة. إذا كانت تسميات اللغة في المشروع لا تتطابق مع التسميات المستخدمة في Smartcat ، فيمكنك إعادة تعريفها. - master_job - الوظيفة.٪ yourmasterbranch٪
- inherit -. # jobs /:٪ yourmasterbranch٪
- source_dir (في FBCGEN_BRANCH_JOBS) - ./branches/$FBCGEN_DIR/٪path_to_resource_files٪/
- output_file_path (في FBCGEN_BRANCH_JOBS) - ./branches/$FBCGEN_DIR/٪path_to_resource_files٪/٪ LOCALE٪. ٪ yourformat٪
! المهم في source_path_prefix ، يجب أن تكون النهاية هي النقطة٪ FBCGEN_BRANCH.
يجب إضافة مكالمة إلى المكون الإضافي Smartcat إلى القسم المناسب myproject.serge.tmpl
sync { ts { plugin Smartcat data { project_id 12345678-1234-1234-1234-1234567890123 token_id 12345678-1234-1234-1234-1234567890123 token 1_qwertyuiopasdfghjklzxcvbn push { disassemble_algorithm_name Serge.io PO } pull { complete_projects NO complete_documents YES } log_file ./log/smartcat.log } }
وصف بعض المعلمات:
- disassemble_algorithm_name Serge.io PO - استخدم تجزئة المفتاح التي تم تمريرها إلى Serge. هذه المعلمة ضرورية لتحسين وقت تنفيذ أوامر السحب وأوامر الدفع.
- Complete_projects NO - اختر خطوطًا من Smartcat فقط إذا تم إكمال جميع المستندات في المشروع. لتكاملنا ، المشروع في Smartcat مرادف لمستودع التخزين في GitLab ، ويتضمن مجموعة من الوثائق. الوثيقة هي نتاج ديكارت لعدد الفروع في المستودع واللغات التي تمت بها الترجمة. أي إذا كان في مستودعك فرعين يلزم ترجمتهما إلى 6 لغات ، سيتم إنشاء 12 وثيقة في المشروع.
- Complete_documents YES - اختر خطوطًا من Smartcat إذا كانت الوثيقة في حالة الانتهاء. يتم ذلك لتقليل عدد مرات الالتزام بالمستودع.
مثال مشروع مخصص
فيما يلي ملفات التكوين لمشروع مع 6 لغات. يخزن المشروع خطوط المصدر بتنسيق js. يتم استخدام تنسيق تسمية الملف ذو 5 أحرف. المسار إلى ملفات الموارد: ./branches/base-translate/client/src/translations.
myproject.cfg
myproject.inc
myproject.serge.tmpl
sync { ts { plugin Smartcat data { project_id %project_id% token_id %token_id% token %token% push { disassemble_algorithm_name Serge.io PO } pull { complete_projects NO complete_documents YES } } } vcs { plugin git data { local_path ./branches add_unversioned YES name L10N Robot email l10n-robot@example.com remote_path { base-translate git@gitlab.loc:common/myproject.git
إطلاق التطبيق
استنساخ المستودع
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" git clone -b base-translate git@gitlab.loc:groups/myproject.git branches/base-translate/
دورة التعريب
يتم تشكيل ملف .serge:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" /usr/local/serge/serge-master/fbcgen.pl myproject.cfg
جلب التغييرات من جميع فروع المستودع:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull --initialize myproject.local.serge
مجموعة من تغييرات الترجمة لجميع الفروع من Smartcat:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull-ts myproject.local.serge
تشكيل قاعدة البيانات و. ppo:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge localize myproject.local.serge
إرسال بيانات جديدة من المستودع إلى Smartcat:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push-ts myproject.local.serge
إرسال التحويلات المستلمة إلى المستودع في الفروع المناسبة:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push myproject.local.serge
سيتم تخصيص المقالات التالية لاستكشاف ووصف حالات التكامل الخاصة.
المادة الأخيرة: 20 مشروعًا ، 20 لغة ، الموعد النهائي أمس. الجزء 3