i18n

Software screenshot:
i18n
Rincian Software:
Versi: 0.1
Tanggal Upload: 14 Apr 15
Pengembang: Antonio Cuni
Lisensi: Gratis
Popularitas: 17

Rating: 3.0/5 (Total Votes: 1)

i18n adalah paket yang mencoba untuk menyederhanakan alur kerja dan pengembangan aplikasi internasionalisasi & nbsp;. Ini adalah pembungkus tipis sekitar alat yang ada, di gettext tertentu dan babel.
Dasar penggunaan
# Demo.py
#
dari i18n.translator impor Translator
supported_languages ​​= ['it_IT', 'fr_FR', 'de_DE']
# Mengaktifkan terjemahan Italia
tr = Translator ('/ path / ke / root', supported_languages, 'it_IT')
print tr ._ ('Hello world!')
dimana / path / ke / root / adalah direktori root proyek Anda. Saat dipakai, kelas Translator secara otomatis membuat direktori yang disebut / path / ke / root / bahasa mana terjemahan disimpan.
Pesan Ekstrak
Sebelum melakukan terjemahan yang sebenarnya, Anda perlu untuk mengambil pesan dari file sumber Anda, dengan menerapkan perintah ekstrak pada modul i18n, yang merupakan pembungkus sekitar ekstrak pybabel dan memperbarui pybabel:
& Nbsp; python -m i18n --root = / path / ke / root --languages ​​= it_IT, fr_FR, de_DE ekstrak
Ekstrak mencari semua pesan dibungkus dalam panggilan ke _ (), gettext () atau ngettext () dan menghasilkan file bernama bahasa / template.pot. Ini adalah po file` gettext standar yang berisi semua pesan yang ditemukan dalam aplikasi.
Selain itu, ekstrak () juga menciptakan file katalog pesan untuk masing-masing bahasa yang didukung sebagai bahasa / $ KODE / LC_MESSAGES / messages.po, di mana $ KODE merupakan salah satu bahasa yang tercantum dalam supported_languages ​​(it_IT, fr_FR dan de_DE dalam contoh di atas ).
Berkas katalog sekarang siap untuk diterjemahkan menggunakan salah satu dari banyak alat yang ada, misalnya QT Linguist atau poedit. Untuk fungsi yang benar dari aplikasi, seluruh bahasa / hirarki perlu dipertahankan. Kami menyarankan untuk melacak berbagai file messages.po di Versi Sistem Pengendalian bersama dengan file lain milik aplikasi.
Pesan Memperbarui
Selama pengembangan aplikasi, Anda pasti akan menambahkan pesan baru yang akan diterjemahkan. Perintah ekstrak secara otomatis menangani kasus ini: jika menemukan file katalog yang ada, konten mereka (termasuk terjemahan yang ada) yang tergabung dengan pesan yang baru diekstrak.
Kompilasi katalog
Hal ini diperlukan untuk mengkompilasi file katalog sebelum menggunakan mereka dengan gettext. Secara default, objek Translator kami secara otomatis mengkompilasi semua katalog yang ditemukan dalam bahasa /, menghasilkan file yang sesuai .mo. Kompilasi dilakukan hanya ketika file katalog telah dimodifikasi. Ini berarti bahwa dalam kebanyakan kasus, Anda tidak perlu khawatir tentang penyusunan katalog.
Jika Anda lebih memilih untuk memiliki kontrol lebih pada langkah ini, Anda dapat melewati autocompile = False untuk konstruktor Penterjemah dan kompilasi secara manual dari baris perintah:
& Nbsp; python -m i18n --root = / path / ke / root --languages ​​= it_IT, fr_FR, de_DE kompilasi
Menyimpan terjemahan dalam database
Untuk beberapa aplikasi hal ini berguna untuk membiarkan pengguna untuk menentukan terjemahan baru dan / atau mengganti yang default. i18n mendukung penggunaan kasus ini dengan kelas DBTranslator, yang merupakan subclass dari Translator. Saat menerjemahkan, DBTranslator pertama terlihat dalam database: jika pesan tidak ditemukan, maka delegasi dengan perilaku gettext standar.
DBTranslator didasarkan pada SQLAlchemy. Konstruktor mengambil parameter mesin tambahan:
dari i18n.dbtranslator impor DBTranslator
dari SQLAlchemy impor create_engine
Mesin = create_engine ('sqlite: ///db.sqlite')
ROOT = '/ path / ke / root'
BAHASA = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
tr = DBTranslator (ROOT, BAHASA, DEST_LANGUAGE, mesin = mesin)
print tr ._ ("hello world")
DBTranslator otomatis menciptakan translation_entries meja di DB. Kemudian, terserah aplikasi untuk menyediakan sebuah antarmuka pengguna untuk memanipulasi tabel. Untuk pengujian, Anda dapat menggunakan metode add_translation () untuk menyisipkan terjemahan baru di DB:
tr.add_translation ("it_IT", "hello world", "ciao mondo")
print tr ._ ("hello world") # mencetak "ciao mondo"
Cara menggunakan Penterjemah global yang
Dengan desain, i18n mencoba untuk benar-benar menghindari negara global. Ini berarti bahwa Anda dapat instantiate sebanyak Translator dan DBTranslator yang Anda inginkan, masing-masing mengacu pada direktori yang berbeda dan / atau database. Hal ini sangat berguna untuk pengujian.
Namun, dalam praktiknya sebagian besar proyek ingin menggunakan penerjemah dunia yang tahu tentang pesan dari semua komponen dalam proyek. Aplikasi demo menunjukkan cara untuk melakukannya dalam modul translate.py:
impor py
dari i18n.translator impor Translator
# Mengatur akar proyek ke direktori yang berisi file ini
ROOT = py.path.local (__ __ berkas). Dirpath ()
BAHASA = ['it_IT', 'fr_FR', 'de_DE']
tr = Translator (ROOT, BAHASA, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
jika __name__ == '__main__':
& Nbsp; tr.cmdline (sys.argv)
Dengan cara ini, seluruh aplikasi hanya dapat mengimpor dan menggunakan _ () dan ngettext () dari translate.py. Atau, preferensi Anda, impor langsung objek tr dan penggunaan tr ._ () dan tr.ngettext () untuk menerjemahkan pesan.
Dua baris terakhir dari kode memungkinkan cara yang nyaman untuk menelepon ekstrak dan kompilasi dari baris perintah tanpa harus manual menentukan dir root dan bahasa yang didukung. Hanya menjalankan:
& Nbsp; ekstrak python translate.py # ... atau kompilasi

Persyaratan :

  • Python

Software yang serupa

python-gettext
python-gettext

14 Apr 15

setup-gettext
setup-gettext

3 Jun 15

translationstring
translationstring

14 Apr 15

gtranslator
gtranslator

14 Apr 15

Perangkat lunak lain dari pengembang Antonio Cuni

pdbpp
pdbpp

11 May 15

Komentar untuk i18n

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!