للعثور على ترجمة قديمة ما زالت تظهر كمترجمة، تتبّع الرسالة المصدرية التي تغيّرت حتى تصل إلى إدخالها في كتالوج السلاسل، ثم أعد البناء وقارن الصياغة. لا تكفي علامة الاختيار الخضراء وحدها لحل تعارض سبق أن رصدته.
هذا الإجراء مخصص لمن يتولى صيانة تطبيق Mac في Xcode باستخدام كتالوج .xcstrings موجود. تتمثل المهمة في تحديد الترجمات التي تحتاج إلى مراجعة بعد تعديل المصدر الإنجليزي، والحفاظ على النصوص الحالية المفيدة، والتحقق من الرسالة المصححة في التطبيق أثناء تشغيله.
ما الذي ينبغي أن يحدث عند تغيير رسالة مصدرية؟
توضح Apple أن تغيير سلسلة مصدرية يضع ترجماتها للمراجعة. وتُميّز حالات الكتالوج بين السلاسل غير المترجمة (New)، والسلاسل التي تحتاج إلى مراجعة (Needs Review)، والسلاسل المترجمة ذات علامة الاختيار الخضراء. أما الحالة المنفصلة Stale فتعني أن Xcode لم يعد يعثر في الشيفرة على سلسلة سبق ترجمتها. التعرّف على كتالوجات السلاسل
تكتسب هذه المصطلحات أهميتها عند تشخيص هذه المشكلة. فالترجمة القديمة لرسالة ما زال تطبيقك يستخدمها تتطلب مراجعة. وقد لا يكشف البحث عن حالة Stale وحدها في الكتالوج عن هذه المشكلة.
يوضح السلوك الموثق من Apple عند تغيير المصدر النتيجة المتوقعة، لكنه لا يبيّن سبب احتفاظ إدخال بعينه بحالة الترجمة. عند حدوث ذلك، تحقّق من العلاقة بين المصدر المعدّل والكتالوج قبل اعتبار علامة الاختيار دليلًا كافيًا على حداثة الصياغة.
حدّد الرسالة الدقيقة قبل مراجعة الترجمات
ابدأ برسالة واحدة تغيّرت. سجّل صياغتها الإنجليزية السابقة والحالية، ومفتاح البحث إن كان منفصلًا، واسم الكتالوج. هذا السجل المقارن الموجز وسيلة تشخيصية موصى بها، وليس ميزة في Xcode. فهو يمنحك شيئًا ملموسًا للتحقق منه عندما تبدو عدة إدخالات متشابهة.
على سبيل المثال، لنفترض أن زرًا في تطبيق سطح المكتب كان يعرض سابقًا Open item وأصبح يعرض الآن Open selected items. والسؤال عند المراجعة هو ما إذا كانت كل ترجمة ما زالت تصف فتح العناصر المحددة حاليًا، بما يشمل احتمال تحديد عدة عناصر. مجرد العثور على ترجمة لكلمة Open لا يجيب عن هذا السؤال.
ميّز بين مفتاح البحث والنص المعروض
تدعم Swift مفتاح بحث ثابتًا صريحًا مع قيمة افتراضية منفصلة هي defaultValue. عادةً ما تكون هذه القيمة نصًا بلغة التطوير، ويُستخدم عند تعذّر البحث. ويوفر comment سياقًا للمترجم. إذا لم يُحدَّد جدول، يستخدم البحث Localizable؛ وإذا لم تُحدَّد حزمة، يبحث في الحزمة الرئيسية للتطبيق. مهيّئ السلاسل ذي المفتاح الصريح في Swift
استخدم سجل الرسالة التوضيحي هذا للتمييز بين تلك المكوّنات. هذه قيم افتراضية توضيحية، وليست ملف كتالوج أو برنامجًا قابلًا للتنفيذ.
| المكوّن | قبل التعديل | بعد التعديل |
|---|---|---|
| مفتاح البحث | selection.open |
selection.open |
| القيمة المصدرية الإنجليزية | Open item |
Open selected items |
| سياق المترجم | Button that opens one item |
Button that opens every item in the current selection |
| جدول الكتالوج | Localizable |
Localizable |
في هذا المثال، يبقى المعرّف كما هو بينما تتغير الرسالة. لذا فإن التدقيق الذي يقارن أسماء المفاتيح وحدها سيغفل هذا التعديل. قارن القيمة المصدرية والسياق أيضًا.
تستخدم بعض استدعاءات الترجمة في Swift صياغة لغة التطوير كمفتاح. وتوضح Apple أن String.LocalizationValue يدعم هذا النموذج، بما في ذلك الاستيفاء. وفي هذا الترتيب، قد يؤدي تغيير الصياغة أيضًا إلى تغيير مفتاح البحث، لذا تحقّق من الإدخالين القديم والجديد بدلًا من افتراض أن الترجمة ما زالت مرتبطة بمعرّف واحد. String.LocalizationValue
أعد البناء وافحص موضع المصدر
في Xcode، اختر Product > Build، ثم حدّد الكتالوج المعني في مستعرض المشروع. وتوضح Apple أن عمليات البناء تحدّث الكتالوجات بالتغييرات التي تطرأ على السلاسل القابلة للتوطين في الشيفرة. اختر Editor > Assistant وحدّد المفتاح لفحص موضع مصدره. توطين النص وتغيير صيغته باستخدام كتالوج السلاسل
قارن نص المصدر في الكتالوج بالتعديل المقصود. إذا كان الكتالوج ما زال يحتوي على Open item، فابدأ بمعالجة سبب عدم وصول المصدر الجديد إلى ذلك الإدخال. فمراجعة ترجمة مستهدفة بالاستناد إلى المصدر القديم لن تحل المشكلة الأصلية.
تحقّق من جدول استدعاء التوطين وحزمته، خصوصًا إذا كان المشروع يحتوي على عدة كتالوجات أو وحدات. وتوضح Apple إمكانية تمرير اسم جدول لتحديد كتالوج، واختيار حزمة مناسبة للسلاسل الموجودة خارج الحزمة الرئيسية للتطبيق. كما توصي بواجهات برمجية قابلة للتوطين كي يتمكن Xcode من اكتشاف النصوص الظاهرة للمستخدم. إعداد نص تطبيقك للترجمة
بالنسبة إلى إدخال يُدار يدويًا، افحص مصدره وصنه مباشرةً: تذكر Apple أن مزامنة البناء لا تحدّث السلاسل المُدارة يدويًا ولا تحذفها. لا تتوقع أن يؤدي البناء وحده إلى تحديثه. التعرّف على كتالوجات السلاسل
قارن المعنى باستخدام جدول لاتخاذ قرار بشأن تغييرات المصدر
بعد ظهور المصدر الحالي، اختر كل لغة مستهدفة وافحص الإدخال المتأثر. يدعم Xcode تصفية النصوص والفرز حسب الحالة، ما قد يساعد في العثور على عناصر تحتاج إلى مراجعة. افحص أيضًا الرسالة المحددة التي تغيّرت حتى إن ظلت حالتها «مترجمة». التعرّف على كتالوجات السلاسل
أداة اتخاذ القرار التالية مستمدة من مقارنة معنى الرسائل، وليست تقييمًا آليًا للترجمة. تسمياتها الإنجليزية أمثلة توضيحية. وهي تساعد على تحديد ما ينبغي أن تطلب من المترجم المحلي التحقق منه، دون افتراض أن كل تعديل في المصدر يتطلب تغيير الصياغة المستهدفة.
| تغيير توضيحي في المصدر | ما ينبغي فحصه | قرار المراجعة |
|---|---|---|
Open item → Open selected items |
نطاق التحديد ومعنى المفرد أو الجمع | تحقّق مما إذا كانت الترجمة ما زالت تصف الإجراء كاملًا. |
Show details → Hide details |
اتجاه الإجراء | تحقّق من أن الإجراء المترجم تغيّر وفقًا لذلك. |
Items → Items: |
علامات الترقيم وموضع التسمية | أبقِ الصياغة فقط إذا ظلت مناسبة للسياق. |
تظل Open كما هي، لكن استخدامها يتغير |
ما إذا كانت التسمية تشير الآن إلى إجراء مختلف | راجع السياق رغم تطابق نص المصدر. |
لكل رسالة مرشحة، قارن ثلاثة أمور: معنى الرسالة القديمة، ومعنى الرسالة الحالية، وما تنقله الترجمة الآن. اختلاف المصدر الظاهر يجعل الرسالة مرشحة للمراجعة؛ لكنه لا يثبت وحده ضرورة تغيير الصياغة المستهدفة.
تغييرات السياق وحدها تستحق تحققًا صريحًا. توضح Apple أن التعليقات تُستخدم لإرشاد المترجم، لكن الوثائق المسترجعة لا تثبت أن كل تعديل على تعليق يبطل الترجمات الحالية تلقائيًا. إذا اكتسبت تسمية إنجليزية لم تتغير معنى مختلفًا، فأدرجها بنفسك في قائمة المراجعة. إعداد نص تطبيقك للترجمة
إذا كانت الرسالة تتضمن عددًا أو صيغة خاصة بجهاز معيّن، فوسّع هذه الصيغ بدلًا من الاكتفاء بفحص الصف الرئيسي. توضح Apple دعم صيغ الجمع واختلافات الأجهزة داخل الكتالوجات. فمثلًا، قد يتطلب العدد في الإنجليزية 1 item و2 items؛ راجع الصيغ المناسبة لكل لغة مستهدفة بدلًا من نسخ قواعد الإنجليزية آليًا. توطين النص وتغيير صيغته باستخدام كتالوج السلاسل
أنجز المراجعة دون التخلص من الترجمات المفيدة
استخدم قائمة السياق للإدخال لوضع الترجمة موضع الشك للمراجعة. عندما تُراجع الصياغة الحالية وتجد أنها ما زالت مناسبة، اختر Mark as Reviewed؛ وإلا فحدّث الترجمة. وتشرح جولة Apple الإرشادية حول كتالوجات السلاسل إجراءات المراجعة هذه. التعرّف على كتالوجات السلاسل
احتفظ بالصياغة الحالية أثناء مقارنتها بالمصدر المعدّل. فمسح الترجمات لمجرد تقليل الالتباس يزيل مادة مفيدة للمقارنة. وبالمثل، تجنّب حذف إدخال لمجرد أن ترجمته قديمة: تحقّق أولًا مما إذا كان التطبيق لا يزال يستخدم مفتاحه.
في مثال التحديد التوضيحي، تتضمن إحالة مفيدة المفتاح selection.open، والتغيير من Open item إلى Open selected items، وشرحًا بأن الزر يفتح كل العناصر المحددة. يمنح ذلك المترجم المحلي إجراءً ونطاقًا محددين لتقييمهما.
هناك حد عملي هنا: لا تصف وثائق Apple المسترجعة لهذا الإجراء أمرًا استعاديًا يعيد إنشاء كل تغييرات المصدر التي فات رصدها في الإدخالات المترجمة. إذا لم تعد الصياغة السابقة متاحة، يمكنك مراجعة المصدر الحالي مقارنةً بالترجمة الحالية، لكن لا يمكنك تحديد وقت بدء عدم التطابق بدقة. استخدم نسخة سابقة متاحة من المشروع أو نسخة محفوظة من المصدر عندما تكون المقارنة بين ما قبل التعديل وما بعده مهمة.
تحقّق من الرسالة المصححة في تطبيق Mac
بعد التعديل، اختبر الواجهة الفعلية. اختر Product > Scheme > Edit Scheme، وحدّد Run، وافتح Options، ثم اختر اللغة المستهدفة ضمن App Language. أغلق مربع الحوار، وحدّد وجهة تشغيل Mac، وشغّل التطبيق. وتوثق Apple اختبار التوطين المعتمد على المخطط هذا. اختبار التوطينات عند تشغيل التطبيق
ارجع إلى عنصر التحكم المحدد الذي بدأ التحقيق. بالنسبة إلى Open selected items، جرّب تحديد عنصر واحد وعدة عناصر. تحقّق مما إذا كانت التسمية تصف الإجراء في الحالتين، وما إذا كانت الصياغة المعروضة تطابق إدخال الكتالوج الذي عدّلته. إذا ظهر اختلاف في هذه المرحلة، فأعد فحص مفتاح البحث أو الجدول أو الحزمة أو الصيغة المعنية.
اختتم بتحديد واضح لحالة كل لغة متأثرة: الصياغة الحالية ما زالت مناسبة، أو حُدّثت الترجمة، أو ما زالت المراجعة معلّقة. وبهذا تُغلق المهمة حول الرسالة المعدّلة وسلوكها في الواجهة، مع دعم حالة الكتالوج لهذا القرار.