i18n

البرمجيات قطة:
i18n
تفاصيل البرنامج:
الإصدار: 0.1
تاريخ إيداع: 14 Apr 15
المطور: Antonio Cuni
ترخيص: حرر
شعبية: 17

Rating: 3.0/5 (Total Votes: 1)

وI18N هو الحزمة التي يحاول تبسيط سير العمل وتطوير تطبيقات المدولة على & nbsp؛. وهو المجمع رقيق حول الأدوات الموجودة في gettext وبابل معين.
الاستخدام الأساسي
# demo.py
#
من i18n.translator استيراد المترجم
supported_languages ​​= ['it_IT'، 'fr_FR'، 'de_DE']
# تفعيل ترجمة إيطالية
TR = المترجم ('/ الطريق / / الجذر "، supported_languages،" it_IT')
TR طباعة ._ ('مرحبا العالم!')
حيث / مسار / إلى / الجذر / هو الدليل الجذر من المشروع الخاص بك. عندما مثيل، وصنف المترجم تلقائيا بإنشاء دليل يسمى / مسار / إلى / الجذر / اللغات حيث يتم تخزين الترجمات.
استخراج الرسائل
قبل القيام الترجمة الفعلية، تحتاج إلى استخراج الرسائل من الملفات المصدر، من خلال استدعاء الأمر استخراج على وحدة I18N، وهو التفاف حول استخراج pybabel وتحديث pybabel:
على & nbsp؛ بيثون م I18N --root = / الطريق / / الجذر --languages ​​= it_IT، fr_FR، de_DE استخراج
استخراج بالبحث عن كافة الرسائل ملفوفة داخل تدعو إلى _ ()، gettext () أو ngettext () وينتج ملف يسمى اللغات / template.pot. هذا هو معيار ص gettext file` الذي يحتوي على جميع الرسائل الموجودة في التطبيق.
وعلاوة على ذلك، واستخراج () أيضا بإنشاء ملف كتالوج رسالة لكل من اللغات المعتمدة لغات / $ CODE / LC_MESSAGES / messages.po، حيث $ CODE هي واحدة من اللغات المذكورة في supported_languages ​​(it_IT، fr_FR وde_DE في المثال أعلاه ).
ملفات الكتالوج هي الآن جاهزة للترجمتها باستخدام واحدة من العديد من الأدوات الموجودة، على سبيل المثال QT مترجم أو Poedit. لعمل الصحيح للتطبيق، يحتاج اللغات كلها / التسلسل الهرمي ليتم الحفاظ عليها. نقترح لتتبع مختلف الملفات messages.po في نسخة من نظام مراقبة مع الملفات الأخرى التي تنتمي إلى التطبيق.
تحديث الرسائل
أثناء تطوير التطبيق، سوف تقوم بإضافة الرسائل الجديدة بالتأكيد لترجمتها. الأمر استخراج التعامل تلقائيا هذه الحالة: إذا وجد ملفات كتالوج القائمة ومضمونها (بما في ذلك الترجمات الموجودة) واندمجت مع الرسائل المستخرجة حديثا.
تجميع كتالوجات
فمن الضروري لتجميع ملفات الكتالوج قبل استخدامها مع gettext. افتراضيا، وجوه المترجم لدينا يجمع كافة النشرات المصورة وجدت في اللغات /، وتنتج الملفات المقابلة .mo تلقائيا. ويتم تجميع فقط عندما تم تعديل ملف كتالوج. وهذا يعني أنه في معظم الحالات لم يكن لديك ما يدعو للقلق تجميع كتالوجات.
إذا كنت تفضل الحصول على مزيد من السيطرة على هذه الخطوة، يمكنك تمرير autocompile = خطأ إلى منشئ المترجم وجمعها يدويا من سطر الأوامر:
على & nbsp؛ بيثون م I18N --root = / الطريق / / الجذر --languages ​​= it_IT، fr_FR، de_DE تجميع
تخزين ترجمة في قاعدة بيانات
بالنسبة لبعض التطبيقات من المفيد للسماح للمستخدم لتحديد ترجمات جديدة و / أو تجاوز تلك الافتراضي. I18N يدعم هذه الحالة استخدام مع الطبقة DBTranslator، وهي فئة فرعية من المترجم. عند ترجمة، DBTranslator يبدو أولا في قاعدة البيانات: إذا لم يتم العثور على الرسالة، فإنه المندوبين إلى السلوك gettext القياسية.
ويستند DBTranslator على sqlalchemy. المنشئ لها يأخذ المعلمة محرك إضافية:
من i18n.dbtranslator DBTranslator استيراد
من sqlalchemy create_engine استيراد
محرك = create_engine ('سكليتي: ///db.sqlite')
ROOT = '/ مسار / إلى / الجذر "
LANGUAGES = ['it_IT'، 'fr_FR']
DEST_LANGUAGE = 'it_IT "
TR = DBTranslator (ROOT، LANGUAGES، DEST_LANGUAGE، محرك = المحرك)
TR طباعة ._ ("مرحبا العالم")
DBTranslator تلقائيا يخلق translation_entries الجدول في DB. ثم، والأمر متروك للتطبيق لتوفير واجهة المستخدم للتلاعب في الجدول. للاختبار، يمكنك استخدام الأسلوب add_translation () لإدراج الترجمة الجديدة في DB:
tr.add_translation ("it_IT"، "مرحبا العالم"، "تشاو موندو")
TR طباعة ._ ("مرحبا العالم") # يطبع "تشاو موندو"
كيفية استخدام المترجم العالمي
حسب التصميم، يحاول I18N لتجنب تماما أي دولة في العالم. هذا يعني أنه يمكنك إنشاء مثيل عن العديد من المترجم وDBTranslator كما تريد، كل واحد في إشارة إلى دليل و / أو قاعدة بيانات مختلفة. وهذا مفيد خصوصا للاختبار.
ومع ذلك، من الناحية العملية معظم المشاريع ترغب في استخدام الترجمة العالمية التي يعرف عن الرسائل من جميع المكونات في المشروع. ويظهر تطبيق تجريبي طريقة للقيام بذلك في وحدة translate.py:
الحمر استيراد
من i18n.translator استيراد المترجم
# تعيين جذر المشروع إلى الدليل الذي يحتوي هذا الملف
ROOT = py.path.local (__ __ الملف). dirpath ()
LANGUAGES = ['it_IT'، 'fr_FR'، 'de_DE']
TR = المترجم (ROOT، LANGUAGES، "it_IT ')
_ = tr._
ngettext = tr.ngettext
إذا __name__ == '__main__':
على & nbsp؛ tr.cmdline (sys.argv)
بهذه الطريقة، والباقي من التطبيق يمكن ببساطة استيراد واستخدام _ () وngettext () من translate.py. أو، على تفضله والاستيراد مباشرة الكائن آر واستخدام آر ._ () وtr.ngettext () لترجمة الرسائل.
آخر سطرين من قانون يتيح وسيلة مريحة لدعوة استخراج وتجميع من سطر الأوامر دون الحاجة لتحديد دير الجذر واللغات المدعومة يدويا. فقط تشغيل:
على & nbsp؛ استخراج الثعبان translate.py # ... أو تجميع

المتطلبات:

بيثون

برامج مماثلة

البرامج الأخرى من المطور Antonio Cuni

pdbpp
pdbpp

11 May 15

تعليقات ل i18n

لم يتم العثور على التعليقات
إضافة تعليق
بدوره على الصور!