.
i18n iş və beynəlxalq applications inkişafı & nbsp asanlaşdırmaq üçün çalışır olan bir paket, Bu xüsusi getText və babil ətrafında nazik banderol mövcud tools edir.
Əsas istifadə
# Demo.py
#
i18n.translator idxal Translator
supported_languages = ['it_IT "," fr_FR "," de_DE']
# Italian tərcümə aktivləşdirmək
tr = Translator ('/ path / / root üçün, supported_languages, it_IT)
Çap tr ._ ('Salam dünya! ")
harada / path / / kök / layihənin kök kataloq edir. Instantiated zaman, Tərcüməçi sinif avtomatik olaraq yaradır bir kataloq adlı / yol / və / root / tərcümə saxlanılır languages.
Mədən messages
Faktiki tərcümə bunu əvvəl, siz pybabel çıxarış və pybabel yeniləmə ətrafında banderol edir i18n modulu üzrə çıxarış komanda invoking, sizin mənbə faylları mesaj çıxarış lazımdır:
& Nbsp; python-m i18n --root = / yol / və / root --languages = it_IT, fr_FR, de_DE çıxarış
çıxarış daxilində bükülmüş bütün mesajları zənglər üçün görünür _ (), gettext () və ya ngettext () və bir fayl adlı languages / template.pot istehsal edir. Bu proqram olan bütün mesajlar ehtiva edən bir standart gettext po file` edir.
Bundan başqa, $ CODE yuxarıda misal supported_languages (it_IT, fr_FR və de_DE listelenen dillərdən biridir languages / $ CODE / LC_MESSAGES / messages.po kimi desteklenen diller hər biri üçün bir mesaj kataloq faylı yaradır) (çıxarış ).
catalog faylları Məsələn QT Linguist və ya Poedit üçün, artıq bir çox mövcud vasitələrdən biri istifadə tərcümə etməyə hazırıq. Tətbiqi düzgün işləməsi üçün bütün dillər / iyerarxiya saxlanılır olmalıdır. Biz tətbiqi aid digər faylları ilə birlikdə Version Control sistemi müxtəlif messages.po faylları izlemek üçün gəlir.
yenilənməsi messages
Proqram inkişaf zamanı, siz mütləq yeni mesaj əlavə edəcək tərcümə olunmalıdır. Bu (mövcud tərcümələr daxil olmaqla) mövcud kataloq faylları, onların məzmunu tapsa yeni hasil mesajları ilə birləşmə: çıxarış komanda avtomatik olaraq bu halda idarə.
tərtib kataloqlar
Bu getText ilə istifadə etməzdən əvvəl katalog faylları tərtib etmək lazımdır. Mənim cari olaraq, bizim Translator obyekt avtomatik mo müvafiq faylları istehsal dildə / olan bütün kataloqlar, tərtib edir. yığma kataloqu fayl redaktə olunubsa yalnız edilir. Bu əksər hallarda kataloqlar tərtib narahat yoxdur deməkdir.
Bu addım daha çox nəzarət tercih etsəniz, siz Translator qurucusu ilə Saxta autocompile = keçir və command line onları əl tərtib edə bilərsiniz:
& Nbsp; python-m i18n --root = / yol / və / root --languages = it_IT, fr_FR, de_DE tərtib
bazasında tərcümə saxlanılması
Bəzi applications üçün yeni tərcümə müəyyən və / və ya default olanları yalnış istifadəçi imkan faydalıdır. i18n Translator bir yarımsinif DBTranslator sinif ilə bu istifadə halda dəstəkləyir. Tərcümə edərkən, DBTranslator ilk bazasında görünür: Mesaj tapılmadı əgər, standart gettext davranış üçün nümayəndə.
DBTranslator sqlalchemy əsaslanır. Onun konstruktor əlavə mühərrik parametr edir:
i18n.dbtranslator idxal DBTranslator dən
sqlalchemy idxal create_engine dən
mühərrik = create_engine (SQLite: ///db.sqlite)
KÖK = '/ yol / və / root "
Dillər = ['it_IT "," fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, Dillər, DEST_LANGUAGE, mühərrik = mühərriki)
Çap tr ._ ("salam dünya")
DBTranslator avtomatik DB masa translation_entries yaradır. Sonra o, masa manipulyasiya üçün bir istifadəçi interfeysi təmin etmək üçün ərizə qədər. Test üçün, DB bir yeni tərcümə əlavə etmək üçün add_translation () metodu istifadə edə bilərsiniz:
tr.add_translation ("it_IT", "Salam dünya", "ciao mondo")
Çap tr ._ ("salam dünya") # izləri "ciao mondo"
qlobal Translator Necə istifadə
Dizayn, i18n tamamilə hər hansı qlobal dövlət qarşısını almaq üçün çalışır. Bu, istədiyiniz kimi bir çox Translator və DBTranslator, fərqli bir kataloq və / və ya verilənlər bazası istinad hər bir instantiate edə bilərsiniz. Bu test üçün xüsusilə faydalıdır.
Lakin praktikada ən çox layihə layihənin bütün komponentləri mesajları bilir qlobal tərcüməçi istifadə etmək istəyirik. demo proqram translate.py modulu bunu etmək üçün bir yol göstərir:
idxal py
i18n.translator idxal Translator
# Bu fayl olan kataloq layihənin kök müəyyən
KÖK = py.path.local (__ fayl __). Dirpath ()
Dillər = ['it_IT "," fr_FR "," de_DE']
tr = Translator (ROOT, Dillər, it_IT)
_ = Tr._
ngettext = tr.ngettext
__name__ == '__main__ əgər:
& Nbsp; tr.cmdline (sys.argv)
Bu yolla, proqram qalan sadəcə idxal və translate.py olan _ () və ngettext () istifadə edə bilərsiniz. Və ya, üstünlük, idxal birbaşa tr obyekt və istifadə tr ._ () və tr.ngettext da () mesaj tərcümə.
Kodu son iki xətləri əl kök dir və dəstək dildə müəyyən olmadan çıxarış zəng və command line tərtib üçün rahat bir yol verir. Just run:
& Nbsp; python translate.py çıxarış # ... və ya tərtib
tələblər
- Python
Şərhlər tapılmadı