لإجراء دورة ترجمة ذهابًا وإيابًا لتطبيق Mac، صدّر كتالوج توطين Xcode، وحافظ على بنية الجمع وتعيينات الوسائط فيه، ثم استورد الحزمة المعادة واختبرها. يستخدم هذا الدليل تسمية اختيار اصطناعية لتوضيح ما ينبغي تسليمه والتحقق منه بدقة.
هذه المهمة موجّهة إلى من يجهّز مواد التسليم للمترجمين في Xcode على جهاز Mac: أرسل رسالة واحدة تعتمد على العدد لترجمتها، ثم أعدها مع الحفاظ على سلوكها. تسمية المثال هي Selected 3 tiles in 2 groups. ويمكن أن يتغير كلا العددين على نحو مستقل، لذا يجب أن تحافظ مواد التسليم على ما هو أكثر من صياغة مفهومة.
حدّد مواصفات الرسالة قبل التصدير
تعامل مع مواصفات الرسالة بوصفها وصفًا موجزًا يحدد المدخل الذي يستدعيه التطبيق، والقيم التي يمررها وقت التشغيل، والقيم التي تتحكم في التنويع النحوي. توضح Apple أن String.LocalizationValue يدعم السلاسل القابلة للتوطين ذات الاستيفاء، بما في ذلك القيم المقدمة وقت التشغيل. وتشرح وثائقه أيضًا كيفية استخدام مفتاح ثابت وقيمة افتراضية منفصلة عندما ينبغي أن يختلف المعرّف عن النص المعروض في المصدر. String.LocalizationValue
في هذا المثال التطبيقي، دوّن المواصفات التالية بجانب طلب الترجمة. هذه متطلبات توضيحية للتسمية الاصطناعية، وليست تنسيق ملفات من Apple.
| عنصر المواصفات | المتطلب في هذا المثال |
|---|---|
| الغرض من الرسالة | تلخيص التحديد الحالي |
| النص الإنجليزي المصدر | Selected 3 tiles in 2 groups. مع تمرير كلا الرقمين وقت التشغيل |
| الوسيط 1 | عدد المربعات؛ يتحكم في صيغة tile |
| الوسيط 2 | عدد المجموعات؛ يتحكم في صيغة group |
| التمثيل الرقمي | الاحتفاظ بالنوع ومحدِّد التنسيق اللذين يسجلهما Xcode لكل وسيط |
| حرية الترجمة | إعادة ترتيب الجملة مع الحفاظ على معنى كل وسيط |
| السلوك المطلوب | أن يتوافق كل اسم مع عدده |
دوّن أيضًا الكتالوج والجدول والمفتاح الفعليين من المشروع. لا تخترع مفتاحًا بديلًا أثناء الترجمة. يوضح دليل Apple للتحضير أن واجهات API القابلة للتوطين تملأ الكتالوجات أثناء البناء، وأن المعامل table أو tableName يحدد الكتالوج. كما يتيح إضافة تعليقات تشرح سياق السلسلة. Preparing your app’s text for translation
ومن التعليقات الاصطناعية المفيدة: ملخص التحديد. الوسيط 1 هو عدد المربعات المحددة. الوسيط 2 هو عدد المجموعات التي تضم تلك المربعات. يتغير العددان كلٌّ على حدة. أبقِ كل عدد مرتبطًا بالاسم المقابل له. يمنح هذا المترجم معلومات كافية للتمييز بين وسيطين حتى عندما يشتركان في النوع الرقمي نفسه.
أعدّ تنويعات الجمع المستقلة في الكتالوج
ابدأ بالرسالة في المصدر القابل للتوطين في التطبيق، ثم ابنِ المشروع. في محرر كتالوج السلاسل، انقر بزر التحكم على المفتاح المعني واختر Vary by Plural. توضح Apple أن Xcode يحدد محدِّد تنسيق الاستيفاء، ويضيف صيغ الجمع الخاصة باللغة، ويملأ حقول التنويعات مبدئيًا بالقيمة الموجودة. وتظل هذه القيم المعبأة مسبقًا بحاجة إلى تحرير. Localizing and varying text with a string catalog
بالنسبة إلى النص الإنجليزي المصدر، تشمل النتائج المعروضة المقصودة Selected 1 tile in 1 group. وSelected 3 tiles in 1 group. وSelected 1 tile in 2 groups. ولا يكفي اختيار واحد يعتمد على عدد المربعات وحده لإنتاج كل التركيبات على نحو صحيح.
يوضح عرض Apple التوضيحي لكتالوج السلاسل إمكانية تنويع وسائط متعددة باستخدام الاستبدالات. يحتوي كل استبدال على حالات جمع، ويحدد المفتش موضع الوسيط ومحدِّد التنسيق بأسلوب C. ويجمع وقت التشغيل الاستبدالات المحددة ضمن الرسالة المحيطة بها. Discover String Catalogs
استخدم هذه الآلية للعددين المستقلين. أبقِ الكلمات التي يجب أن تتوافق مع العدد داخل التنويع المقابل، بدلًا من ترك اسم بصيغة جمع ثابتة في الجملة المحيطة. امنح الاستبدالات أسماء ذات دلالة حيثما يسمح المحرر بذلك، ثم افحص تعييناتها: يجب أن يظل استبدال المربعات مرتبطًا بالوسيط 1، واستبدال المجموعات بالوسيط 2.
لا تشترط أن تعيد كل لغة مستهدفة إنتاج قائمة الفروع الإنجليزية نفسها. توضح Apple أن Xcode يضيف تنويعات الجمع الخاصة باللغة. كما أن إضافة تنويع إلى اللغة المصدر تنشره إلى الترجمات؛ أما إضافته إلى لغة أخرى وحدها فيؤثر في تلك اللغة فقط. راجع الفروع الفعلية للغة المستهدفة قبل التصدير. Localizing and varying text with a string catalog
حافظ على هوية الوسائط عند نقل ترتيب الكلمات
يؤدي موضع العنصر النائب في الجملة ورقم الوسيط غرضين مختلفين. قد يحتاج المترجم إلى تقديم عدد المجموعات على عدد المربعات دون تغيير ترتيب القيم التي يمررها التطبيق.
يوثّق مرجع محددات التنسيق التدوين الموضعي باستخدام n$. فمثلًا، يشير %1$lld إلى الوسيط 1 بتحويل عدد صحيح من نوع long long، بينما يشير %2$lld إلى الوسيط 2 بهذا التحويل. أما %d فيدل على تمثيل مختلف للأعداد الصحيحة؛ وليس صيغة أقصر من %lld. هذا المرجع وثائق مؤرشفة، لذا استخدمه للاطلاع على قواعد التنسيق الراسخة هذه إلى جانب سير العمل الحالي للكتالوج. String Format Specifiers
تأمل جزء التنسيق التوضيحي Groups: %2$lld; tiles: %1$lld. إذا كانت قيمة الوسيط 1 تساوي 3 والوسيط 2 تساوي 2، فالناتج المقصود هو Groups: 2; tiles: 3. يوضح هذا الجزء ترتيب الوسائط فقط؛ ولا ينفذ اختيار صيغ الجمع النحوية، وينبغي ألا يحل محل استبدالات الكتالوج.
راجع العناصر النائبة بحسب المعنى والفهرس والنوع. إن التحقق من بقاء علامتي النسبة المئوية فقط لن يكشف تبديل العددين. كما أن التحقق من النوع وحده لن يكشف التبديل لأن القيمتين عددان صحيحان. وعلى العكس، فإن تغيير ترتيب وسائط التطبيق لمجرد ملاءمة ترجمة واحدة سيغير المواصفات لكل ترجمة أخرى تستخدم هذا المدخل.
في مواد التسليم، اطلب من المترجم الحفاظ على ارتباطات الوسائط وأنواع التنسيق المصدّرة مع تكييف الصياغة. وأي تغيير بنيوي في أحد الاستبدالات يستلزم مراجعة صريحة وفق المواصفات. وقد يكون تغيير ترتيب الكلمات مناسبًا تمامًا.
صدّر حزمة يمكن للمترجم إعادتها
قبل التصدير، فعّل إعداد البناء Use Compiler to Extract Swift Strings في المشروع كي تُضمّن سلاسل Swift القابلة للتوطين. حدّد المشروع في متصفح المشروع، واختر Product > Export Localizations، ثم حدّد اللغات المطلوبة والوجهة وصدّر. توثّق Apple هذه الخطوات وحزمة .xcloc الناتجة. Exporting localizations
للامتدادين الخاصين بالكتالوج وظيفتان مختلفتان. يحتوي ملف .xcstrings الخاص بالمشروع على كتالوج السلاسل. أما حزمة .xcloc المصدّرة فهي حزمة التسليم للمترجم؛ ويحتوي مجلد Localized Contents فيها على XLIFF، ويمكن أن يضم مجلد Notes نصوصًا داعمة. أرسل الحزمة مع ملاحظة المواصفات بدلًا من اختزال الرسالة إلى قائمة بعمودين من الجمل الظاهرة. Exporting localizations
تحقق من أن أداة الترجمة تدعم تنويعات كتالوج السلاسل في XLIFF. توضح Apple أن معرّفات التنويعات المستمدة من الكتالوج ترمز إلى مفتاح السلسلة وإعداد التنويع، وتوثّق إعداد Localization Prefers String Catalogs لتمثيل التصدير هذا. ينبغي الحفاظ على هذه البنى خلال رحلة الإرجاع. Discover String Catalogs
استخدم قائمة التحقق العملية التالية لمواد التسليم. إنها توصية لسير العمل مستمدة من بنية الحزمة الموثّقة ومواصفات المثال.
- أعد حزمة
.xclocالمترجمة مع مواردها ذات الصلة سليمة. - حافظ على معرّفات الرسائل ومسارات التنويعات، ما لم يوثّق تغيير بنيوي مقصود.
- وفّر نصًا باللغة المستهدفة لفروع الجمع المطلوبة في اللغة المستهدفة.
- حافظ على هويات الوسائط وأنواعها الرقمية وتعيينات الاستبدالات.
- حدّد أي تغييرات في المصدر وردت بعد التصدير لتسويتها قبل الاستيراد.
إذا كانت أداة المترجم لا تستطيع الحفاظ على المدخلات ذات التنويعات، فاستخدم Xcode لتحرير التوطين المصدّر أو لإدخال الترجمات في كتالوج المشروع. توثّق Apple تحرير أهداف XLIFF وتحرير كتالوجات السلاسل في Xcode؛ وتتضمن عمليات التصدير اللاحقة تغييرات الكتالوج. أما تبادل النصوص المسطّحة وحده فيترك إعادة بناء بنية التنويعات لشخص ما. Editing XLIFF and string catalog files
استورد الحزمة المعادة وافحص الفروق الفعلية
احتفظ بالتصدير الأصلي للمقارنة. عند عودة الحزمة المترجمة، حدّد المشروع واختر Product > Import Localizations. حدّد مجلد كتالوج توطين Xcode. في واجهة الاستيراد، افحص التحذيرات والأخطاء عبر Issues View، والتغييرات عبر File View قبل إكمال الاستيراد. تذكر Apple أن محرر المقارنة يعرض النسخة المستوردة على اليسار ونسخة المشروع الحالية على اليمين. Importing localizations
بالنسبة إلى السلاسل المنشأة من الكتالوج، توثّق Apple استيراد الترجمات إلى كتالوج السلاسل المناسب. بعد الاستيراد، افتح مدخل ملخص التحديد مجددًا وافحص كلا الاستبدالين وتعيينات وسائطهما وفروع اللغة المستهدفة. Discover String Catalogs
اتبع تسلسلًا تشخيصيًا محددًا إذا بدا شيء ما غير صحيح. إذا غاب مدخل، فقارن جدوله ومفتاحه بالتصدير الأصلي. وإذا غابت تنويعات الجمع، فقارن بنية التنويعات المعادة. وإذا ظهرت الأعداد بجانب الأسماء الخطأ، فقارن تعيينات الوسائط. وإذا كانت تركيبة واحدة فقط غير سليمة، فافحص نص ذلك الفرع قبل تغيير شيفرة التطبيق. يتبع هذا التسلسل تبعيات المثال؛ ولا يعني ذلك أن Xcode يكتشف تلقائيًا كل مخالفة للمواصفات.
اختبر أعدادًا مختلفة لكشف تبديل الوسائط
يثبت نجاح الاستيراد أن Xcode قبل مواد التسليم. لكن المثال لا يزال بحاجة إلى فحوص سلوكية. استخدم بيانات الاختبار في التطبيق أو تجهيزًا للاختبار لعرض التركيبات التالية. توضح الجمل المتوقعة مواصفات النص الإنجليزي المصدر؛ أما الصياغة واختيار الفروع باللغة المستهدفة فينبغي أن يتبعا توطينها.
| عدد المربعات | عدد المجموعات | الناتج المتوقع للنص الإنجليزي المصدر | ما يساعد على كشفه |
|---|---|---|---|
| 1 | 1 | Selected 1 tile in 1 group. |
صيغتا المفرد |
| 3 | 1 | Selected 3 tiles in 1 group. |
تنويع المربعات المستقل |
| 1 | 2 | Selected 1 tile in 2 groups. |
تنويع المجموعات المستقل |
| 3 | 2 | Selected 3 tiles in 2 groups. |
قيم مختلفة تكشف تبديل الوسائط |
أضف فحصًا للعدد صفر إذا كان التطبيق يستطيع عرض تحديد فارغ. واختر أيضًا قيمًا تفعّل كل فئات الجمع المطلوبة لكل لغة مستهدفة. تغطي الصفوف الأربعة أعلاه تركيبات المفرد والجمع الإنجليزية، لا كل الفروع الممكنة للغات المستهدفة.
لتشغيل تطبيق Mac بلغة مستهدفة، اختر Product > Scheme > Edit Scheme، وحدّد Run، وافتح Options. عيّن App Language، وعند الحاجة App Region، ثم أغلق المحرر وحدّد وجهة التشغيل الخاصة بـ Mac وشغّل التطبيق. توثّق Apple سير العمل هذا للاختبار عبر المخطط. Testing localizations when running your app
اقرأ الرسالة المعروضة وافحص ملاءمتها لواجهة سطح المكتب. إذا ظلت الأعداد مرتبطة بالأسماء الصحيحة، وعمل كل فرع مطلوب على النحو الصحيح، وطابقت البنية المعادة المواصفات المقصودة، فقد حافظت دورة الترجمة ذهابًا وإيابًا على السلوك الذي تحتاج إليه هذه التسمية. احتفظ بملاحظة المواصفات مع مواد التسليم حتى يمكن التحقق من التغيير التالي في الصياغة وفق المتطلبات الصريحة نفسها.
المصادر
- String.LocalizationValue — Apple
- Preparing your app’s text for translation — Apple
- Localizing and varying text with a string catalog — Apple
- Discover String Catalogs — Apple
- String Format Specifiers — Apple
- Exporting localizations — Apple
- Editing XLIFF and string catalog files — Apple
- Importing localizations — Apple
- Testing localizations when running your app — Apple