أفضل الممارسات في تدويل النص مع الكثير من العلامات؟

StackOverflow https://stackoverflow.com/questions/516453

سؤال

أنا أعمل على مشروع ويب (آمل) أن يكون متاحًا بعدة لغات يومًا ما (أقول "آمل" لأنه بينما لدينا موقع باللغة الإنجليزية فقط مخطط له اليوم، فإن المنتجات الأخرى لشركتي متعددة اللغات وآمل أن نتمكن من ذلك) ناجحة بما يكفي لتحتاج إلى ذلك أيضًا).

أدرك أن أفضل الممارسات (أنا أستخدم Java وSpring MVC وVelocity هنا) هي وضع كل النص الذي سيراه المستخدم في ملفات خارجية، والإشارة إليها في ملفات واجهة المستخدم بالاسم، مثل:

#in messages_en.properties:
welcome.header = Welcome to AppName!

#in the markup
<title>#springMessage("welcome.header")</title>

ولكن، بما أنني لم أضطر مطلقًا إلى إجراء هذه العملية في مشروع ما بنفسي من قبل، فأنا أشعر بالفضول لمعرفة أفضل طريقة للتعامل مع هذا عندما يكون لديك بعض أجزاء واجهة المستخدم التي تكون ثقيلة في الترميز، مثل:

<p>We are excited to announce that Company1 has been acquired by
<a href="http://www.companydivisionx.com" class="boldLink">Division X</a>,
a fast-growing division of <a href="http://www.company2.com" class="boldLink">Company 2</a>, Inc. 
(Nasdaq: <a href="http://finance.google.com/finance?q=blah" class="boldLink">BLAH</a>), based in...

أحد الخيارات التي يمكنني التفكير فيها هو تخزين هذا "المستوى المنخفض" من العلامات في messages.properties نفسها للرسالة - ولكن يبدو أن هذا هو أسوأ خيار ممكن.

الخيارات الأخرى التي يمكنني التفكير فيها هي:

  • قم بتخزين كل جزء داخلي غير ترميزي في messages.properties، مثل acquisitionAnnounce1, acquisitionAnnounce2, acquisitionAnnounce3.هذا يبدو جداً رغم أنها مملة.
  • قم بتقسيم هذه الرسالة إلى مكونات أكثر قابلية لإعادة الاستخدام، مثل Company1.name, Company2.name, Company2.ticker, وما إلى ذلك، حيث من المحتمل أن يتم إعادة استخدام كل منها في العديد من الرسائل الأخرى.من المحتمل أن يمثل هذا 80% من الكلمات في هذه الرسالة بالذات.

هل هناك أي أفضل الممارسات للتعامل مع تدويل النص المثقل بالترميز مثل هذا؟هل عليك فقط أن تعض وتتحمل الألم الناتج عن تقسيم كل جزء من النص؟ما هو الحل الأفضل من بين أي مشاريع تعاملت معها شخصيًا؟

هل كانت مفيدة؟

المحلول

عادةً إذا كنت تستخدم محرك قالب مثل شبكة الموقع أو سرعة يمكنك إدارة كتل بناء HTML الأصغر هذه كقوالب فرعية بشكل أكثر فعالية.

من خلال القيام بذلك، يمكنك بشكل تدريجي تقليل السلاسل التي هي سلاسل مدوّلة بحتة إلى مجموعات وجعلها ذات صلة بقوالب الترميز الفرعية تلك.بعد أن قمنا بهذا النوع من العمل باستخدام قوالب لتطبيق يمتد إلى لغات متعددة في نفس اللغة، بالإضافة إلى لغات متعددة، لم نضع مطلقًا ترميزًا في حزم رسائلنا.

أقترح أن إحدى الممارسات الجيدة الرئيسية هي تجنب وضع العلامات (حتى على مستوى منخفض كما ذكرت) داخل ملفات خصائص الرسالة باي ثمن! إن الإمكانية التي ينطوي عليها ذلك لإطلاق العنان للجحيم ليست شيئًا يجب التغاضي عنه - فتناول الرصاصة وتقسيم الأشياء بشكل صحيح، أقل ألمًا بكثير من الاضطرار إلى إدارة العديد من الملفات باستخدام علامات HTML المتناثرة.من المهم أن تتمكن من تصور العلامات على أنها قطع شاملة وتشتت في كل مكان من شأنه أن يجعل التطوير اليومي عملاً روتينيًا نظرًا لأن:

  • ستفقد تمييز ألوان IDE والتحقق من صحة بناء الجملة
  • احتمال كبير أن يتم تفويت ملف محلي أو آخر بسهولة عند تصفية التغييرات في التصميمات/العلامات

إن تقسيم الأشياء (إلى نقطة واقعية، على سبيل المثال هياكل الجملة المنطقية ولكن ليس بشكل أفضل) هو عمل شاق إلى حد ما مقدمًا ولكنه يستحق الجهد المبذول.

فيما يتعلق بتفاصيل انهيار السلسلة، إليك عينة مما فعلناه:

    comment.atom-details=Subscribe To Comments
    comment.username-mandatory=You must supply your name
    comment.useremail-mandatory=You must supply your email address 
    comment.email.notification=Dear {0}, the comment thread you are watching has been updated.
    comment.feed.title=Comments on {0}
    comment.feed.title.default=Comments
    comment.feed.entry.title=Comment on {0} at {1,date,medium} {2,time,HH:mm} by {3}


    comment.atom-details=Suscribir a Comentarios
    comment.username-mandatory=Debes indicar tu nombre
    comment.useremail-mandatory=Debes indicar tu direcci\u00f3n de correo electr\u00f3nico
    comment.email.notification=La conversaci\u00f3n que estas viendo ha sido actualizada
    comment.feed.title=Comentarios sobre {0}
    comment.feed.title.default=Comentarios
    comment.feed.entry.title=Comentarios sobre {0} a {1,date,medium} {2,time,HH:mm} por {3}

لذلك يمكنك القيام بأشياء مثيرة للاهتمام من خلال كيفية استبدال السلسلة في حزمة الرسائل والتي قد تساعدك أيضًا في الحفاظ على معناها المنطقي ولكنها تسمح لك بمعالجتها في منتصف الجملة.

نصائح أخرى

كما قال الآخرون، يرجى عدم تقسيم السلاسل إلى أجزاء.سوف تتسبب في حزن المترجمين حيث يتعين عليهم إجبار تركيب لغتهم على القواعد المخصصة التي أنشأتها عن غير قصد.في كثير من الأحيان لن يكون من الممكن تقديم ترجمة صحيحة نحويًا، خاصة إذا قمت بإعادة استخدام أجزاء معينة في سياقات مختلفة.

لا تقم بإزالة العلامات أيضًا.

من فضلك لا تفترض أن المترجمين المحترفين يعملون في برنامج Notepad :) أدوات الترجمة بمساعدة الكمبيوتر (CAT)، مثل مجموعة Trados، تعرف جيدًا الترميز.إذا كانت العلامات بتنسيق HTML، بدلاً من بعض تنسيقات XML المخصصة، فلا يلزم إجراء أي تحضيرات خاصة.ستقوم Trados بحماية العلامات من التعديل العرضي، مع السماح بالتغييرات عند الضرورة.لاحظ أن بعض عناصر العلامات غالبًا ما تحتاج إلى الترجمة، على سبيل المثال:نص بديل أو بعض سلاسل الاستعلام، لذا فإن مجرد تجريد كل العلامات لن يكون كافيًا.

والأفضل من ذلك كله، ما لم تكن تعمل على مشروع شخصي بميزانية صفرية، فكر في الاتصال ببائع الترجمة.التعريب هو خدمة مثل تصميم الويب.سيساعدك البائع المختص على اختيار الحل/التنسيق الأمثل لمشروعك ويرشدك خلال إعداد المادة المصدر ودمج النتيجة المحلية.وبالطبع سيكون لديهم هم ومترجموهم جميع الأدوات اللازمة.(الكشف الكامل:أنا متخصص في الترجمة/التعريب.ولا تفرقوا الخيوط :)

أولا، لا تقسيم السلاسل الخاصة بك.وهذا يجعل من الصعب على المترجمين ترجمة النص لأنهم لا يستطيعون رؤية السلسلة بأكملها لترجمتها.

ربما سأحاول استخدام العناصر النائبة حول الروابط:

<a href="%link1%" class="%link1class%">القسم X</a>

هذه هي الطريقة التي قمت بها عندما كنت أقوم بترجمة موقع إلى 30 لغة.إنها ليست مثالية، لكنها تعمل.

لا أعتقد أنه من الممكن (أو من السهل) إزالة جميع العلامات من السلاسل، فأنت بحاجة إلى طريقة لإدراج عناوين URL وأي علامات إضافية.

يجب عليك تجنب كسر السلاسل الخاصة بك.لا يصبح هذا كابوسًا للترجمة فحسب، بل يؤدي أيضًا إلى افتراضات نحوية قد لا تكون صحيحة في اللغة الهدف.

على الرغم من أن العناصر النائبة يمكن أن تكون مفيدة للعديد من الأشياء، إلا أنني لا أوصي باستخدام العناصر النائبة لعناوين URL.يتيح لك هذا تخصيص عنوان URL للغات المختلفة.ففي النهاية، ليس من المنطقي إرسالهم إلى صفحة باللغة الإنجليزية عندما تكون لغتهم المحلية هي الإسبانية الأرجنتينية!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top