يتيح التوطين المستمر لمطوري البرامج توطين محتواهم دون إعاقة عملية التطوير. إليك كيف حققت Xsolla ذلك بمساعدة أدوات متاحة مجانًا.
التحدي
أدى ظهور ممارسات التطوير السريعة والأدوات المستندة إلى الويب إلى زيادة التحديات التي تواجه العلاقات بين المطورين والمترجمين. إذا كان المحتوى الجديد يظهر في السابق كل بضعة أشهر، فإن دورات الإصدار الآن قد لا تتجاوز بضعة أسابيع. كل إصدار جديد يحمل محتوى جديدًا، ويجب ترجمته في غضون أيام. خذ على سبيل المثال Xsolla، وهي شركة عالمية لتوزيع ونشر ألعاب الفيديو تزود مطوري الألعاب بأدوات لتعزيز إمكانات ألعابهم. تمتلك الشركة 8 منتجات رئيسية، ودورة إصدار مدتها أسبوعان، و6 إلى 21 لغة لترجمة كل منتج إليها.
لقد استخدمت الشركة تاريخياً العديد من منصات الترجمة عبر الإنترنت لإنجاز المهمة، ولكنها كانت غير راضية عنها في كثير من النواحي. تقول ناتاليا بافليكوفا، مهندسة التوطين في Xsolla: "استغرق توطين بعض السلاسل الجديدة إلى 20 لغة وقتاً أطول في إدارة المشروع أكثر من وقت الترجمة". ولهذا السبب، بدأت Xsolla في البحث عن حل بديل.
ناتاليا بافليكوفا، مهندسة توطين في Xsolla
المعايير
أرادت Xsolla أن تقوم المنصة الجديدة بما يلي:
الحصول تلقائيًا على المحتوى القابل للترجمة من مستودع أكواد الشركة،
تمكين عملية ترجمة شفافة ومرنة، و
إرسال المحتوى المترجم إلى مستودع الأكواد.
جاء الحل مع حزمة من أداتين مجانيتين، Serge و Smartcat. Serge — محرك استخراج السلاسل وتوليد الموارد — هو أداة مستقلة تتيح الترجمة المستمرة (انظر التوضيح). يقوم تلقائيًا بجمع المواد المصدرية الجديدة ونشرها للترجمة والحصول على الترجمات المكتملة ودمجها مرة أخرى في المنتج. Serge هو مشروع مفتوح المصدر تديره Evernote. Smartcat، بدوره، هو منصة ترجمة حيث يمكن للمرء الاحتفاظ بالمشاريع وذاكرة الترجمة، والعثور على مترجمين، وتعيينهم لوثائق، والدفع مقابل عملهم.
الترجمة المستمرة: متى تحتاج إليها؟
يعمل التوطين المستمر بشكل أفضل في الحالات التي يكون فيها لديك الكثير من المحتوى الذي يتم تحديثه باستمرار و/أو حيث تدير فرق مختلفة عملية التطوير والتوطين. ومن الأمثلة على ذلك:
توطين البرامج وألعاب الفيديو، حيث تظهر سلاسل جديدة في كل إصدار.
أدلة المستخدم ومواصفات واجهة برمجة التطبيقات (API)، بما في ذلك تلك التي يتم إنشاؤها تلقائيًا.
مواقع الويب والمدونات التي تم إنشاؤها باستخدام مولدات المواقع الثابتة.
أي مشاريع يتناسب فيها إنشاء المحتوى مع إطار عمل مرن.
بشكل عام، عندما تقوم بتخزين سلاسل قابلة للترجمة في نظام التحكم في الإصدارات، فإن الترجمة المستمرة ستكون الطريقة الأكثر فعالية. (وإذا لم تكن تفعل ذلك، فمن الأفضل أن تفكر في القيام بذلك.) استخدام عملية موحدة وآلية لترجمة السلاسل يقلل من الأخطاء البشرية ويوفر الكثير من وقت موظفيك، مما يتيح لهم الوقت للقيام بأمور أكثر أهمية وإبداعية.
الحل
في حالة Xsolla، يبدو سير عمل التوطين المستمر كما يلي:
يقوم مطورو Xsolla بتحديث ملفات المشروع في مستودع Git.
يقوم Serge بمراقبة المستودع باستمرار في الوقت الفعلي، وعند الحاجة، يستخرج السلاسل من التحديثات، ويُنشئ ملفات موارد PO بها، ويرسلها إلى Smartcat.
يقوم مدير التوطين في Xsolla بتوزيع السلاسل غير المترجمة على المترجمين المستقلين في فريقه.
يقوم المترجمون المستقلون بترجمة المستندات ووضع علامة عليها على أنها مكتملة.
يأخذ Serge السلاسل المترجمة، ويعيدها إلى الملفات المصدرية، ويرسلها إلى مستودع Git الخاص بـ Xsolla.
ينشر مطورو Xsolla الإصدار مع الترجمة.
لماذا سيرج؟
يدعم Smartcat أنماط ملفات مختلفة بحد ذاته. فلماذا يستخدم المرء Serge كوسيط بين ملفات الموارد الأصلية وخدمة الترجمة؟
"قد يبدو Serge من الوهلة الأولى وكأنه محول لتنسيق الملفات. لكنه ليس كذلك"، يقول إيغور أفاناسييف، مدير التوطين في Evernote والشخص الذي يقف وراء Serge. "Serge هو خط أنابيب مرن لمعالجة الملفات ومزامنتها يمكن تهيئته لتلبية احتياجات سير عمل التوطين المختلفة، مما يتيح تكاملاً مستمراً بالفعل. يضمن Serge أن ملفات الموارد المترجمة لها نفس بنية الملفات المصدرية ويتعامل مع الحالات التي تتغير فيها الملفات المصدرية بينما لا تزال إصداراتها القديمة قيد الترجمة. وهذا يوفر على المهندسين عناء دمج التغييرات ويزيل العوائق التي تعترض دورة التطوير. بطريقة ما، مع Serge، يشعر المهندسون أنه لا توجد "عملية توطين" على الإطلاق." ميزة أخرى مهمة لـ Serge هي أنه يحتفظ بقاعدة بيانات الترجمة الخاصة به ويعمل في مقر العميل. هذا يعني أن Smartcat لا تحتاج إلى الوصول إلى مستودعات Git الخاصة بـ Xsolla، وأن ملفات الترجمة التي تحصل عليها Smartcat من Serge هي ملفات موارد مصححة لا تحتوي على أي معلومات حساسة. أخيرًا، نظرًا لأن Serge يعمل محليًا على خادم Xsolla بشكل مستمر، فإنه يحصل على موارد مترجمة محدثة في غضون دقائق. وهذا يضمن أن الملفات المترجمة محدثة دائمًا وأن عمليات البناء لا تفشل بسبب الموارد القديمة.
إيغور أفاناسييف، مدير التوطين في Evernote
النتائج
النتيجة الرئيسية للتحول إلى الترجمة المستمرة هي أن مديري المشاريع يمكنهم التركيز على عملهم، بينما يمكن للمطورين التركيز على عملهم. وهذا يوفر الكثير من جهد إدارة المشاريع، ولا يتعين على أحد القيام بمهمة إرسال الملفات وتحويل التنسيقات — فهذا ما يقوم به سيرج.
"الآن يمكننا إدارة سلاسلنا بنفس الطريقة التي ندير بها كودنا"، يقول مكسيم كونغورتسيف، مطور الواجهة الأمامية في Xsolla. "يمكننا إنشاء فروع جديدة ودمجها وإعادتها إلى الوراء — مع التأكد من أن حزمة Serge–Smartcat تقوم بكل المهام في الخلفية للحصول على سلاسل تلك الفروع المحددة المترجمة في مستودعنا. إنها تعمل كالسحر!" ولا يقل أهمية عن ذلك، أن قدرات إدارة الفريق في Smartcat تجعل من السهل ضمان جودة المحتوى المترجم. تقول ناتاليا: "لدينا بالفعل فريق متماسك من المترجمين على Smartcat يضمنون اتساق صوتنا في جميع الأجزاء. وبالنسبة للمحتوى الأكثر أهمية، يمكننا إضافة المزيد من اللغويين كمراجعين لنفس المحتوى."
ماكسيم كونغورتسيف، مطور واجهة المستخدم في Xsolla
الخطط المستقبلية
كان هذا أول مشروع توطين مستمر لـ Smartcat مع Serge، ويعمل الفريق عن كثب مع كل من Xsolla و Igor Afanasyev. لا يزال هناك الكثير من الأمور التي تتطلع Xsolla إلى تحقيقها في المستقبل، مثل:
تعيين المترجمين بنقرة واحدة،
دعم العلامات القابلة للتعدد،
تعيين محررين للنصوص المصدرية،
إشعارات أكثر مرونة.
لكن Smartcat متفائلة. يقول بافيل دورونين، مدير المنتجات في Smartcat: "سنعمل جاهدين لتنفيذ طلبات Xsolla المتعلقة بالميزات. ليس فقط لأنهم من أكثر العملاء دفعًا، ولكن أيضًا لتزويد مستخدمينا الآخرين بسير عمل أفضل للترجمة المستمرة، والتي نحن على يقين من أنها ستستمر". في المستقبل، نخطط لتوفير المزيد من الخيارات للترجمة المستمرة مع Smartcat، بما في ذلك السيناريوهات الأصلية والتكاملات الخارجية التي تؤكد نهجنا الإيكولوجي للنمو. في نهاية المطاف، ما يهم هو ما يحبه مستخدمونا أكثر، وهذا ما سنركز عليه.
بافيل دورونين، مدير المنتجات في Smartcat
روابط مفيدة
إذا كنت ترغب في تكوين سير عمل توطين مستمر مشابه لـ Xsolla، فستحتاج إلى:
تنزيل وتثبيت Serge.
التسجيل في Smartcat.
قم بتثبيت المكون الإضافي Serge Smartcat.



