Menerjemahkan aplikasi pygobject ke dalam bahasa yang berbeda - Bagian 5

Menerjemahkan aplikasi pygobject ke dalam bahasa yang berbeda - Bagian 5

Kami melanjutkan seri pemrograman pygobject dengan Anda dan di sini dalam hal ini Ke -5 sebagian, kita akan belajar cara menerjemahkan aplikasi pygobject kita ke dalam bahasa yang berbeda. Menerjemahkan aplikasi Anda adalah penting jika Anda akan mempublikasikannya untuk dunia, itu akan lebih ramah pengguna untuk pengguna akhir karena tidak semua orang mengerti bahasa Inggris.

Menerjemahkan bahasa aplikasi pygobject

Bagaimana proses penerjemahan bekerja

Kami dapat meringkas langkah -langkah menerjemahkan program apa pun di bawah desktop Linux menggunakan langkah -langkah ini:

  1. Ekstrak string yang dapat diterjemahkan dari file python.
  2. Simpan string ke .pot file yang merupakan format yang memungkinkan Anda menerjemahkannya nanti ke bahasa lain.
  3. Mulailah menerjemahkan string.
  4. Ekspor string terjemahan baru ke a .PO file yang akan digunakan secara otomatis saat bahasa sistem diubah.
  5. Tambahkan beberapa perubahan terprogram kecil ke file python utama dan .Desktop mengajukan.

Dan itu saja! Setelah melakukan langkah-langkah ini, aplikasi Anda akan siap digunakan untuk pengguna akhir dari seluruh dunia (akan ... Anda harus menerjemahkan program Anda ke semua bahasa di seluruh dunia !), Kedengarannya mudah bukan? :-)

Pertama, untuk menghemat waktu, mengunduh file proyek dari tautan di bawah ini dan mengekstrak file di direktori home Anda.

  1. https: // salin.com/tjyzaangeq6bb7yn

Buka "mempersiapkan.py"File dan perhatikan perubahan yang kami lakukan:

Kode terjemahan
# Di sini kami mengimpor modul 'Pengaturan' yang memungkinkan kami menginstal skrip python ke sistem lokal di samping melakukan beberapa tugas lain, Anda dapat menemukan dokumentasinya di sini: https: // docs.Python.org/2/distutils/apiref.html dari distutils.Pengaturan Impor Inti # Modul -modul tersebut akan membantu kami dalam membuat file terjemahan untuk program secara otomatis. Dari Subproses Impor Panggilan dari Glob Impor Glob dari OS.jalur impor splitext, split # jangan fotget untuk mengganti 'myprogram' dengan nama program Anda di setiap file dalam proyek ini. data_files = [("lib/myprogram", ["ui.Glade "]), # Ini akan menginstal" UI.File Glade "di bawah jalur/usr/lib/myprogram. ("Bagikan/Aplikasi", ["myprogram.Desktop"]]] # Kode ini melakukan segala yang dibutuhkan untuk membuat file terjemahan, pertama -tama itu akan mencari semua .File PO di dalam folder PO, maka itu akan menentukan jalur default untuk tempat menginstal file terjemahan (.mo) pada sistem lokal, maka itu akan membuat direktori pada sistem lokal untuk file terjemahan program kami dan akhirnya akan mengonversi semua .file po ke .File MO menggunakan perintah "msgfmt". po_files = glob ("po/*.po ") untuk po_file di po_files: lang = splitext (split (po_file) [1]) [0] mo_path =" local//lc_messages/myprogram.MO ".Format (Lang) # Buat Direktori Lokal Panggilan ("Mkdir -P Locale//lc_messages/".format (lang), shell = true) # menghasilkan panggilan file mo ("msgfmt  -o ".format (po_file, mo_path), shell = true) locales = peta (lambda i: ('share/'+i, [i+'/myprogram.mo ',]), glob (' locale/*/lc_messages ')) # di sini, penginstal akan secara otomatis menambahkan .File Mo ke file data untuk menginstalnya nanti. data_files.Perpanjang (Lokal) Pengaturan (name = "myprogram", # Nama program. versi = "1.0", # Versi program. deskripsi = "Antarmuka web yang mudah digunakan untuk membuat & berbagi pasta dengan mudah", # Anda tidak membutuhkan bantuan di sini. penulis = "Tecmint", # Atau di sini. Author_email = "[Email dilindungi]",# Atau di sini: D url ="http: // contoh.com", # Jika Anda memiliki situs web untuk program Anda ... Letakkan di sini. lisensi = 'Gplv3', # Lisensi program. skrip = ['myprogram'], # Ini adalah nama file skrip Python utama, dalam kasus kami itu "myprogram", ini adalah file yang kami tambahkan di bawah folder "myprogram". # Di sini Anda dapat memilih di mana Anda ingin menginstal file Anda di sistem lokal, file "myprogram" akan secara otomatis diinstal di tempat yang benar nanti, jadi Anda hanya perlu memilih di mana Anda ingin menginstal file opsional tempat Anda Bentuk dengan skrip python data_files = data_files) # dan ini akan menginstal .File desktop di bawah folder/usr/share/aplikasi, semua folder diinstal secara otomatis di bawah folder/usr di partisi root Anda, Anda tidak perlu menambahkan "/usr/ke jalur. 

Juga buka “myprogram"File dan lihat perubahan terprogram yang kami lakukan, semua perubahan dijelaskan dalam komentar:

#!/usr/bin/python #-*-Coding: UTF-8-*-## Ganti nama dan email Anda. # Namaku <[email protected]> ## Di sini Anda harus menambahkan lisensi file, ganti "MyProgram" dengan nama program Anda. # Lisensi: # myprogram adalah perangkat lunak gratis: Anda dapat mendistribusikannya kembali dan/atau memodifikasi # itu di bawah ketentuan lisensi publik umum GNU seperti yang diterbitkan oleh # foundation perangkat lunak gratis, baik versi 3 lisensi, atau # (atas opsi Anda ) versi selanjutnya. # # MyProgram didistribusikan dengan harapan akan bermanfaat, # tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari # diperjualbelbayakan atau kebugaran untuk tujuan tertentu. Lihat lisensi publik umum # GNU untuk lebih jelasnya. # # Anda seharusnya menerima salinan Lisensi Publik Umum GNU bersama dengan MyProgram. Jika tidak, lihat . dari GI.Repositori Impor GTK Impor OS, Gettext, Locale ## Ini adalah perubahan terprogram yang perlu Anda tambahkan ke file Python, ganti saja "MyProgram" dengan nama program Anda. Modul "lokal" dan "gettext" akan berhati -hati tentang sisa operasi. lokal.setlocale (lokal.Lc_all, ") gettext.bindTextDomain ('myprogram', '/usr/share/locale') gettext.textDomain ('myprogram') _ = getText.gettext gettext.install ("myprogram", "/usr/share/locale") class handler: def openterminal (self, tombol): ## Ketika pengguna mengklik tombol pertama, terminal akan dibuka. os.Sistem ("X-terminal-emulator") def closeprogram (self, tombol): gtk.Main_quit () # Tidak ada yang baru di sini… kami baru saja mengimpor 'UI.File Glade. builder = gtk.Pembangun () pembangun.add_from_file ("/usr/lib/myprogram/ui.Glade ") pembangun.connect_signals (handler ()) label = pembangun.get_object ("label1") # Ini perubahan kecil lainnya, alih -alih mengatur teks ke ("Selamat datang di program pengujian saya!") Kita harus menambahkan karakter" _ "sebelumnya untuk mengizinkan skrip yang bertanggung jawab tentang proses penerjemahan untuk mengenali bahwa itu adalah string yang dapat diterjemahkan. label.set_text (_ ("Selamat datang di program pengujian saya !")) tombol = pembangun.get_object ("button2") # dan inilah hal yang sama ... Anda harus melakukan ini untuk semua teks di program Anda, di tempat lain, mereka tidak akan diterjemahkan. tombol.set_label (_ ("klik saya untuk membuka terminal")) window = pembangun.get_object ("window1") window.Connect ("Delete-Event", GTK.Main_quit) jendela.show_all () gtk.utama() 

Sekarang… mari kita mulai menerjemahkan program kami. Pertama kali buat .pot file (file yang berisi semua string yang dapat diterjemahkan dalam program) sehingga Anda
dapat mulai menerjemahkan menggunakan perintah berikut:

$ cd myprogram $ xgetText --danguage = python --keyword = _ -o po/myprogram.Pot MyProgram 

Ini akan membuat “myprogram.pot"File di dalam"PO”Folder di folder proyek utama yang berisi kode berikut:

# Beberapa judul deskriptif. # Hak Cipta (C) Tahun Pemegang Hak Cipta Paket # File ini didistribusikan di bawah lisensi yang sama dengan paket paket. # Penulis Pertama <[email protected]>, TAHUN. # #, fuzzy msgid "" msgstr "" "Project-id-Version: Paket Versi \ n" "Report-MSGID-BUGS-TO: \ n" "Pot-Creation-Date: 2014-12-29 21: 28+ 0200 \ n "" Po-Revision-Tanggal: Tahun-Mo-Da Ho: Mi+Zone \ n "" Translator Terakhir: Nama Lengkap <[email protected]>\ n "" Team Bahasa: Bahasa <[email protected]>\ n "" Bahasa: \ n "" Mime-Versi: 1.0 \ n "" tipe konten: teks/polos; Charset = Charset \ n "" Konten-Transfer-Enkoding: 8bit \ n " #: MyProgram: 48 msgid" Selamat datang di program pengujian saya !"msgstr" " #: myprogram: 52 msgid" klik saya untuk membuka terminal "msgstr" " 

Sekarang untuk mulai menerjemahkan string ... buat file terpisah untuk setiap bahasa yang ingin Anda terjemahkan program Anda untuk menggunakan “ISO-639-1"Kode bahasa di dalam"POFolder, misalnya, jika Anda ingin menerjemahkan program Anda ke Arab, Buat file yang disebut “ar.PO"Dan salin konten dari"myprogram.pot“File untuk itu.

Jika Anda ingin menerjemahkan program Anda ke Jerman, membuat "de.PO"File dan salin konten dari"myprogram.potFile ke sana ... dan satu, Anda harus membuat file untuk setiap bahasa yang ingin Anda terjemahkan program Anda.

Sekarang, kami akan mengerjakan “ar.PO"File, salin konten dari"myprogram.pot"File dan letakkan di dalam file itu dan edit berikut:

  1. Beberapa judul deskriptif: Anda dapat memasukkan judul proyek Anda di sini jika Anda mau.
  2. Tahun pemegang hak cipta paket: ganti dengan tahun yang telah Anda buat proyek.
  3. KEMASAN: ganti dengan nama paket.
  4. Penulis Pertama <[email protected]>, TAHUN: ganti ini dengan nama asli, email dan tahun Anda menerjemahkan file.
  5. Versi paket: ganti dengan versi paket dari file debian/kontrol.
  6. Tahun-mo-da ho: zona mi+: tidak memerlukan penjelasan, Anda dapat mengubahnya ke tanggal apa pun yang Anda inginkan.
  7. NAMA LENGKAP <[email protected]>: Juga gantilah nama Anda dan email Anda.
  8. Tim bahasa: gantilah dengan nama bahasa yang Anda terjemahkan, misalnya "Arab" atau "Prancis".
  9. Bahasa: Di sini, Anda harus memasukkan kode ISO-639-1 untuk bahasa yang Anda terjemahkan, misalnya "ar", "fr", "de" ... dll, Anda dapat menemukan daftar lengkap di sini.
  10. Charset: Langkah ini penting, ganti string ini dengan "UTF-8" (tanpa kutipan) yang mendukung sebagian besar bahasa.

Sekarang mulailah menerjemahkan! Tambahkan terjemahan Anda untuk setiap string setelah kutipan di "msgstr". Simpan file dan keluar. File terjemahan yang bagus untuk
Bahasa Arab sebagai contoh seharusnya terlihat seperti ini:

# Program saya # Hak Cipta (C) 2014 # File ini didistribusikan di bawah lisensi yang sama dengan paket MyProgram. # Hanny Helal <[email protected]<, 2014. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 1.0 \ n"" Laporan-msgid-Bugs-to: \ n "" Pot-Creation-Date: 2014-12-29 21: 28+0200\ n "" PO-Revision-Date: 2014-12-29 22: 28+0200\ n "" Translator terakhir: M.Hanny Sabbagh \ n "" tim bahasa: Arab <[email protected]<\ n "" Bahasa: ar \n "" mime-versi: 1.0\ n "" tipe konten: teks/polos; Charset = UTF-8\ n "" penyandian konten-transfer: 8bit\ n " #: myprogram: 48 msgid"Selamat datang di program pengujian saya !"msgstr"أهلًا بك إلى برنامجي الاخepatan!" #: MyProgram: 52 MSGID"Klik saya untuk membuka terminal"msgstr"اضغط عليّ لفrameح الطرفية" 

Tidak ada lagi yang bisa dilakukan, cukup kemas program menggunakan perintah berikut:

$ debuild -us -uc 

Sekarang cobalah untuk menginstal paket baru yang dibuat menggunakan perintah berikut.

$ sudo dpkg -i myprogram_1.0_all.Deb 

Dan ubah bahasa sistem menggunakan “Dukungan bahasaProgram atau menggunakan program lain untuk Arab (atau bahasa yang telah Anda terjemahkan file Anda ke):

Dukungan bahasa

Setelah memilih, program Anda akan diterjemahkan ke bahasa Arab.

Diterjemahkan ke bahasa Arab

Di sini berakhir seri kami tentang pemrograman pygobject untuk desktop Linux, tentu saja ada banyak hal lain yang dapat Anda pelajari dari dokumentasi resmi dan referensi API Python GI…

Apa pendapat Anda tentang serial ini? Apakah Anda merasa berguna? Apakah Anda dapat membuat aplikasi pertama Anda dengan mengikuti seri ini? Bagikan Pikiran Anda!