Menerjemahkan teks yang lebih panjang (tampilan dan templat email) dengan gettext

9

Saya sedang mengembangkan aplikasi web PHP multibahasa, dan saya punya teks panjang (-ish) yang perlu saya terjemahkan dengan gettext. Ini adalah templat email (biasanya pendek, tetapi masih beberapa baris) dan beberapa templat tampilan (blok teks yang lebih deskriptif). Teks-teks ini akan menyertakan beberapa HTML sederhana (hal-hal seperti huruf tebal / miring untuk penekanan, mungkin tautan di sini atau di sana). Templat adalah skrip PHP yang hasilnya ditangkap.

Masalahnya adalah bahwa gettext tampaknya sangat canggung untuk menangani teks yang lebih panjang. Teks yang lebih panjang biasanya memiliki lebih banyak perubahan dari waktu ke waktu daripada teks pendek - Saya dapat mengubah msgid dan memastikan untuk memperbaruinya di semua terjemahan (bisa jadi banyak pekerjaan dan sangat rawan kesalahan ketika msgid panjang), atau saya bisa menyimpannya msgid tidak berubah dan hanya memodifikasi terjemahan (yang akan meninggalkan teks usang yang menyesatkan dalam templat). Juga, saya telah melihat saran untuk tidak memasukkan HTML dalam string gettext, tetapi menghindari itu akan memecah satu bagian teks menjadi beberapa bagian, yang akan menjadi mimpi buruk yang lebih besar untuk diterjemahkan dan dipasang kembali, dan saya juga melihat saran untuk pemisahan string gettext yang tidak perlu menjadi pesan terpisah.

Pendekatan lain yang saya lihat adalah mengabaikan gettext sama sekali untuk teks-teks yang lebih panjang ini, dan untuk memisahkan blok-blok itu di subtemplates eksternal untuk setiap lokal, dan hanya memasukkan satu untuk lokal saat ini. Kerugiannya adalah bahwa saya memisahkan upaya penerjemahan antara file .t gettext dan templat terpisah yang terletak di lokasi yang sama sekali berbeda.

Karena aplikasi ini akan digunakan sebagai titik awal untuk aplikasi lain di masa depan, saya mencoba untuk datang dengan pendekatan terbaik untuk jangka panjang. Saya butuh saran untuk praktik terbaik dalam skenario seperti itu. Bagaimana Anda menerapkan kasus serupa? Apa yang ternyata berhasil dan apa yang ternyata merupakan ide yang buruk?

lanzz
sumber

Jawaban:

3

Saya menemukan masalah yang sama belum lama ini (lihat /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).

Pada dasarnya, ada dua opsi:

  1. Lakukan dengan cara gettext dimaksudkan untuk digunakan: Gunakan teks asli sebagai msgid, HTML dan semua. Maka setiap perubahan pada teks asli akan membatalkan semua terjemahan. msgmergeNamun, pencocokan kabur akan tetap cocok dengan teks asli yang tepat dengan terjemahan lama, jadi biasanya terjemahan lama akan tersedia untuk penerjemah.
  2. Insted menggunakan teks asli sebagai msgid, gunakan beberapa pengidentifikasi sintetis (seperti EMAIL_TEMPLATE_NEWSLETTER_START). Dengan begitu, ID tidak pernah berubah. Teks asli (mungkin bahasa Inggris) kemudian hanya akan menjadi terjemahan lain untuk gettext. Kerugian utama: 1) Anda harus melacak secara terpisah terjemahan mana yang mutakhir; 2) Beberapa alat gettext mungkin tidak menangani ini dengan baik (penerjemah mungkin membutuhkan alat khusus).
sleske
sumber
1

ubah msgid dan pastikan untuk memperbaruinya dalam semua terjemahan (bisa jadi banyak pekerjaan> dan sangat rawan kesalahan ketika msgid panjang)

Itu adalah sesuatu yang Anda dapat dengan mudah diotomatisasi, sehingga membuatnya lebih rentan terhadap kesalahan dan juga kurang berfungsi.

Dario Hamidi
sumber