Penerjemahan suatu aplikasi ke dalam berbagai bahasa dan pelokalannya adalah sesuatu yang harus dihadapi oleh semua pengembang. Materi, terjemahan yang kami terbitkan hari ini, memberikan panduan singkat tentang internasionalisasi aplikasi Django.Bagian dari apa yang akan dibahas di sini berlaku untuk pelokalan proyek-proyek Python. Setelah memeriksa dasar-dasarnya, kita akan berbicara tentang percepatan upaya internasionalisasi. Secara khusus, tentang penggunaan platform Phrase . Diasumsikan bahwa pembaca materi ini memiliki aplikasi Django yang berfungsi, dan bahwa ia memiliki paket yang diinstal (Anda dapat menginstalnya, misalnya, dengan perintah ). Jika Anda belum pernah menggunakan Django (kerangka web berbasis Python populer) sebelumnya, maka mungkin berguna bagi Anda untuk melihatnya terlebih dahulu.
gettext
pip install gettext
panduan resmi , dan kemudian kembali ke artikel ini.Pengaturan lingkungan kerja dasar
Jadi, misalkan Anda memiliki proyek Django mysite
, dan aplikasi bernama polls
. Struktur proyek akan terlihat seperti ini:/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
polls/
migrations/
__init__.py
admin.py
models.py
tests.py
views.py
Langkah pertama dari pekerjaan kami adalah memeriksa apakah opsi internasionalisasi diaktifkan dalam konfigurasi proyek. Untuk melakukan ini, Anda perlu melakukan perubahan berikut untuk mysite/settings.py
:
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Internasionalisasi template
Sekarang Anda perlu menandai semua baris yang harus diterjemahkan ke bahasa yang berbeda. Misalkan Anda memiliki file templat berikut polls/templates/polls/index.html
:
<h1>Welcome to our site!</h1>
<p>Here you find polls.</p>
File ini perlu diproses sebagai berikut:
{% load i18n %}
<h1>{% trans 'WelcomeHeading' %}</h1>
<p>{% trans 'WelcomeMessage' %}</p>
Di sini kami mengimpor paket untuk pelokalan dan mengganti semua teks dengan tampilan konstruksi trans 'SomeTranslationKeyName'
. Selain itu, sebagai alternatif dari pendekatan ini, Anda dapat menggunakan teks terjemahan default dalam bentuk kunci terjemahan. Dengan pendekatan ini, Anda akan selalu memiliki teks default yang baik jika tidak ada terjemahan yang tersedia untuk kunci tertentu.Internasionalisasi dalam Kode Python
Jika Anda ingin melokalisasi string di dalam kode Python (misalnya, dalam file polls/views.py
), Anda perlu mengimpor fungsi ke file ugettext
. Untuknya, yang cukup normal, Anda dapat menetapkan alias _
. Inilah tampilan versi sederhana dari fungsi sederhana dari sebuah file views.py
:
from django.http import HttpResponse
from django.utils.translation import ugettext as _
def index(request):
output = _('StatusMsg')
return HttpResponse(output)
Membuat File Terjemahan
Sekarang kita perlu membuat file terjemahan untuk setiap pengaturan bahasa yang ingin kita dukung. Untuk melakukan ini, buat direktori polls/locale
dan polls
jalankan perintah berikut di direktori :django-admin makemessage -l de
Di sini de
Anda dapat mengganti kode lokal untuk bahasa yang Anda rencanakan untuk ditambahkan ke aplikasi. Dalam contoh kita, eksekusi perintah ini akan mengarah pada pembuatan gettext
file -file dengan polls/locale/de/LC_MESSAGES/django.po
konten berikut:
...
msgid "WelcomeHeading"
msgstr ""
msgid "WelcomeMessage"
msgstr ""
Sekarang Anda dapat memasukkan umpan baris dalam file ini:
...
msgid "WelcomeHeading"
msgstr "Willkommen auf unserer Seite!"
msgid "WelcomeMessage"
msgstr "Hier findet Ihr Umfragen."
Saat terjemahan siap, Anda perlu mengkompilasi semuanya dengan menjalankan perintah berikut:$ django-admin compilemessages
Jalankan perintah ini lagi, di direktori polls
.Agar dapat memeriksa operabilitas terjemahan dengan cepat, Anda perlu mengubah kode bahasa dalam file mysite/settings.py
. Misalnya, seperti ini:
LANGUAGE_CODE = 'de'
Jika sekarang Anda membuka aplikasi di browser, itu harus diterjemahkan ke dalam bahasa Jerman.Mempercepat lokalisasi aplikasi menggunakan Frase
Jika Anda menggunakan Frasa untuk mengatur kerja pada aplikasi pelokalan, maka Anda benar-benar tidak perlu secara manual membuat dan mengedit file * .po! Anda hanya perlu membuat dan mentransfer kunci WelcomeHeading
dan WelcomeMessage
di Frasa dan menggunakan fungsi ekspor untuk mengunduh file * .po.Jika Anda menginstal alat baris perintah kami Phrase Client
, maka pekerjaan Anda semakin disederhanakan. Cukup membuat file konfigurasi di direktori root proyek .phraseapp.yml
dengan konten berikut:
phraseapp:
access_token: <your access token>
project_id: <your project's id on PhraseApp>
file_format: po
pull:
targets:
file: "polls/locale/<locale_code>/LC_MESSAGES/django.po
Maka Anda perlu menjalankan perintah berikut di direktori root proyek:phraseapp pull && django-admin compilemessages
Berkat ini, semua terjemahan proyek akan diperbarui.Selain itu, penggunaan Editor Dalam Konteks kami di proyek Django Anda dapat lebih menyederhanakan pekerjaan . Untuk melakukan ini, cukup instal django-phrase
menggunakan pip
:pip install django-phrase
Kemudian cukup edit templat ketika bekerja dengan yang Anda rencanakan untuk digunakan In-Context-Editor
:<!-- polls/templates/polls/index.html -->
{% load i18n %}
{% load phrase_i18n %}
{% phrase_javascript %}
<h1>{% trans 'WelcomeHeading' %}</h1>
<p>{% trans 'WelcomeMessage' %}</p>
Harap dicatat bahwa pemuatan phrase_i18n
harus dilakukan setelah i18n
.Akhirnya, tambahkan yang berikut ke file konfigurasi:
PHRASE_ENABLED = True
PHRASE_PROJECT_ID = 'YOUR_PROJECT_ID'
PHRASE_PREFIX = '{{__'
PHRASE_SUFFIX = '__}}'
Setelah itu, semuanya akan siap.Pilihan lokal
Biasanya, pengembang aplikasi mengatur lokal berdasarkan pada pengaturan browser pengguna. Untuk melakukan ini, Anda perlu membawa file mysite/settings.py
ke formulir berikut:
from django.utils.translation import ugettext_lazy as _
...
MIDDLEWARE_CLASSES = (
...,
'django.middleware.locale.LocaleMiddleware',
...,
)
...
LANGUAGE_CODE = 'en-us'
LANGUAGES = (
('en-us', _('English')),
('de', _('German')),
)
Dengan pendekatan ini, jika pengguna memiliki lokal German
, ia akan melihat opsi terjemahan de
. Kalau tidak, terjemahan standar akan digunakan en-us
. Anda dapat memverifikasi operasi yang benar dari mekanisme ini menggunakan curl
:curl http://localhost:8000/polls -H "Accept-Language: de"
Perintah ini harus mengembalikan sesuatu seperti berikut:<h1>Willkommen auf unserer Seite!</h1>
<p>Hier findet Ihr Umfragen.</p>
Ringkasan
Dalam artikel ini, kami memeriksa dasar-dasar internasionalisasi aplikasi Django. Di sini kita berbicara tentang layanan Frasa, yang dapat mempercepat dan menyederhanakan pekerjaan. Kami berharap apa yang Anda pelajari bermanfaat bagi Anda.Pembaca yang budiman! Bagaimana Anda mendekati internasionalisasi proyek Python Anda?