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