كيف يمكنك تحويل القائمة من قبل التطبيق على شبكة الإنترنت في اللغات ؟

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

سؤال

أنا ذاهب للعمل على المشروع حيث إلى حد كبير على شبكة الإنترنت التطبيق يحتاج إلى أنب إلى التعامل مع العديد من اللغات.الشيء يعمل مع جهة وضعت كود PHP لكنه نظيف جدا.

كنت أتساءل ما يمكن أن يكون أفضل طريقة للقيام بذلك ؟

  1. صنع شيء في بلدي, في محاولة لاحتواء الفعلية العمارة.

  2. إعادة كتابة جزء كبير من ذلك باستخدام إطار (على سبيل المثال ، Symfony) أن إدارة i18n لي ؟

الخيار 1 ، حيث يجب تخزين i18n البيانات ؟ *.بو ، xliff ، نقية DB ؟

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

ولكن ربما هناك بعض مستقل محركات الترجمة من شأنه القيام بهذه المهمة أفضل من كامل الويب الإطار.انها قليلا مثل استخدام مدفع لقتل ذبابة...

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

المحلول

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

صحيح.الحلول.على أساس أن كنت لا ترغب في كتابة الموقع ثم ببساطة استنساخ الموقع لديك وترجمة نسخ إلى اللغة الهدف.على افتراض رمز قاعدة مستقرة يمكنك استخدام فكس لإدارة أي تغييرات في التعليمات البرمجية.يمكنك قرص كل جزء من أجزاء الموقع لتناسب اللغة الهدف ، على سبيل المثال النص الفرنسي هو في المتوسط 30 ٪ أكبر من اللغة الإنجليزية يعادل النص باستخدام موقع واحد لتقديم هذا يعني أنك قد (سوف) لديهم مشاكل التنسيق تحتاج إلى تبديل ملف css المختلفة داخل وخارج اعتمادا على اللغة.قد يبدو عالي الكعب طريقة للقيام بذلك ولكن بعد ذلك كم هي المواقع الذهاب إلى الوجود ؟ إدارة النفقات العامة من القيام بهذه الطريقة قد تكون أقل من غيرها من الخيارات.

الطريقة الثانية دون بناء.استبدال كافة المحتوى في الموقع الحالي مع الكلمات ثم وضع لغة مختلفة في ملف أو db الجداول شم مستخدمي اللغة المطلوبة (هل لديك المستخدمين المسجلين الذين يمكن أن تجعل الأفضلية أو هل ترغب في الحصول على المتصفح اللغة العلامة ، أو أنها ستكون URL دوت كوم dot-fr, دوت دي أن جعل الاختيار) ثم استبدال الكلمات الدليلية مع اللغة الهدف.ثم تحتاج إلى معالجة القضايا التحجيم الصورة القضايا بشكل منفصل.هذا الحل هو في الواقع عندما أطر مثل Symfony و زند هل لتنفيذ l10n.

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

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

نصائح أخرى

العمل مع ملفات اللغات.

  1. استبدال كل سلسلة نصية من قبل متغير
  2. إنشاء ملف لغة واحدة في اللغة في تعريف كل متغير مع ما يقابلها من النص.(بالفرنسية.inc, الهولندية.inc ...)
  3. تشمل الملف الصحيح في كل صفحة.

هذا المواقع الصغيرة.

إذا كان الحصول على أكبر استبدال الملفات عن طريق DB.:)

من المهم أن نلاحظ أن هناك نوعان من الخطوات التي تنطوي عليها قبل ترجمة:

  1. التدويل:التي تمكن موقع الويب الخاص بك للتعامل مع لغات متعددة
  2. التعريب:وهذا يشمل ترجمة النصوص الخاصة بك (التي تم الحصول عليها في الخطوة 1) لكل لغة خطة لدعم

انظر المزيد عن هذا في ويكيبيديا.

الخطوة 1 تتطلب منك أن تأخذ في الاعتبار حقيقة أن بعض اللغات المكتوبة من اليمين إلى اليسار (RTL) وغير الأوروبية الشخصيات مثل اليابانية أو الصينية.إذا كنت لا تخطط للتعامل مع هذه اللغات و الحروف قد يكون أبسط.

هذا النوع من الحالة التي كنت تفضل أن يكون ملف اللغة (في الواقع العديد من ملفات اللغة باعتبارها لغة لا خطة لدعم تسمية كل langcode.php كما في en.php أو fr.php) مع النقابي تحتوي على جميع النصوص المستخدمة في الموقع.هذا الإجراء سوف تذهب على النحو التالي:

  1. مسح موقع الويب الخاص بك في كل نص يجب أن تكون مترجمة
  2. لكل صفحة/القسم الأول من شأنه أن يخلق $lang['sectionname'][] مجموعة
  3. لكل نص وأود أن إنشاء $lang['sectionname']['textname'] دخول
  4. وأود أن إنشاء Lang.php الطبقة التي من شأنها أن تلقي lang المعلمة عند إنشاء مثيل ولكن قد افتراضي في حالة لا lang تلقت (هذه الطريقة الأحمال langcode.php اعتمادا على المعلمة أو الافتراضي حسب اللغة المفضلة)
  5. فئة قد setPage() الطريقة التي سوف تظهر صفحة/القسم سوف يتم عرض
  6. فئة قد show() طريقة من شأنها أن تلقي النص سيتم عرضه (show() سوف يتم استدعاء العديد من المرات كما هو النصوص المبينة في صفحة معينة... show() كونه نوع من المجمع echo $lang['mypage']['mytext'])

بهذه الطريقة يمكنك الحصول على العديد من اللغات كما تريد بطريقة سهلة جدا.هل يمكن أن يكون حتى لغة الادارة حيث يمكنك فتح قاعدة الخاص بك اللغة الصفحة (كنت في الواقع مجرد قراءة متكرر المصفوفات وعرضها في textareas) ثم "حفظ باسم..." بعض اللغات الأخرى.

يمكنني استخدام نهج مماثل في موقعي.هو صفحة واحدة فقط على الرغم من ولكن أنا جعلت مواقع متعددة الصفحات مع هذه الفكرة.

إذا كان لديك المحتوى المقدم المستخدم أو بعض معقدة نوعا ما CMS سيكون قصة مختلفة.يمكنك أن تبحث عن i18n-ودية الأطر (دروبال يتبادر إلى الذهن).

هل يمكن أن ننظر Zend_Translate, فهي جميلة شاملة موثقة جيدا عموما رمز نوعية كبيرة.كما يسمح لك استخدام مجموعة موحدة API gettext, csv, db, ini file, مجموعة أو ما كنت في نهاية المطاف إنقاذ الخاص بك السلاسل المترجمة في.

أيضا أنظر/مشاهدة هذا الموضوع: ما هي أدوات جيدة/أطر i18n من برنامج php?.يبدو مشابه لسؤالك.

إذا كان متعدد البايت الدعم ثم قد يكون من المفيد التحقق من multibyte سلسلة الدوال في PHP:

http://uk.php.net/manual/en/book.mbstring.php

هذه أفضل التعامل مع أحرف متعددة البايت.

يمكنني استخدام hl المعلمة gettext الجمع بين محرك الترجمات هناك بالفعل مع الخاصة .بو مما يجعل ترجمات جديدة و لغات تظهر عند المحرك أو جانغو/gae على سبيل المثال ويضيف:

{% get_current_language as LANGUAGE_CODE %}{{ LANGUAGE_CODE }}{% get_available_languages as LANGUAGES %}{% for LANGUAGE in LANGUAGES %}{% ifnotequal LANGUAGE_CODE LANGUAGE.0 %}{{ LANGUAGE.0 }}{% endifnotequal %}{% endfor %}

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

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