Daha uzun metinleri (görünüm ve e-posta şablonları) gettext ile çevirme


9

Çok dilli bir PHP web uygulaması geliştiriyorum ve gettext ile çevirmem gereken uzun (-ish) metinlerim var. Bunlar e-posta şablonları (genellikle kısa, ancak yine de birkaç satır) ve görünüm şablonlarının parçalarıdır (daha uzun açıklayıcı metin blokları). Bu metinler bazı basit HTML'leri içerir (vurgu için kalın / italik, muhtemelen burada veya orada bir bağlantı). Şablonlar çıktısı alınan PHP komut dosyalarıdır.

Sorun, gettext'in daha uzun metinleri işlemek için çok sakar görünmesi. Daha uzun metinlerde zamanla kısa metinlerden daha fazla değişiklik olur - msgid'i değiştirebilir ve tüm çevirilerde güncelleyebileceğimden emin olabilirim (msgid uzun olduğunda çok fazla iş yapabilir ve hataya açık olabilir) veya tutabilirim msgstr değişmedi ve sadece çevirileri değiştirdi (bunlar şablonlarda yanıltıcı metinler bırakacaktı). Ayrıca, HTML'yi gettext dizelerine eklemeye karşı tavsiyede bulundum, ancak bundan kaçınmak, tek bir doğal metni çok sayıda parçaya bölebiliyordu, bu da çevirmek ve yeniden birleştirmek için daha büyük bir kabus olacak ve ayrıca gettext dizelerinin ayrı msgidlere gereksiz yere bölünmesi.

Gördüğüm diğer yaklaşım, bu uzun metinler için gettext'i tamamen yok saymak ve bu blokları her yerel ayar için harici alt şablonlarda ayırmak ve sadece geçerli yerel ayar için olanı dahil etmektir. Dezavantajı, gettext .po dosyaları ve tamamen farklı bir konumda bulunan ayrı şablonlar arasındaki çeviri çabasını ayırmam.

Bu uygulama gelecekte diğer uygulamalar için bir başlangıç ​​noktası olarak kullanılacağından, uzun vadede en iyi yaklaşımı bulmaya çalışıyorum. Bu senaryolarda en iyi uygulamalar için tavsiyeye ihtiyacım var. Benzer vakaları nasıl uyguladınız? Ne işe yaradı ve ne kötü bir fikir ortaya çıktı?


Yanıtlar:


3

Ben uzun zaman önce benzer bir sorun üzerinde tökezledi (bkz. Https://stackoverflow.com/questions/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).

Temel olarak, iki seçenek vardır:

  1. Gettext'in kullanılması gerektiği gibi yapın: Orijinal metinleri msgid, HTML ve hepsi olarak kullanın. Ardından orijinal metinde yapılan her değişiklik tüm çevirileri geçersiz kılacaktır. msgmergeBununla birlikte, bulanık eşleme genellikle doğru orijinal metni eski çeviriyle eşleştirecektir, bu nedenle genellikle eski çevirmen çevirmen tarafından kullanılabilir olacaktır.
  2. Orijinal metni msgid olarak kullanmaktan vazgeçildiğinde, bazı sentetik tanımlayıcılar kullanın (EMAIL_TEMPLATE_NEWSLETTER_START gibi). Bu şekilde kimlikler asla değişmez. Orijinal (muhtemelen İngilizce) metinler gettext için başka bir çeviri olacaktır. Ana dezavantajları: 1) Hangi çevirilerin güncel olduğunu ayrı ayrı takip etmelisiniz; 2) Bazı gettext araçları bunu iyi bir şekilde yerine getirmeyebilir (çevirmenler özel araçlara ihtiyaç duyabilir).

1

msgid'i değiştirin ve tüm çevirilerde güncellediğinizden emin olun (msgid uzun olduğunda çok> ve çok hataya açık olabilir)

Bu, kolayca otomatikleştirebileceğiniz bir şeydir, böylece daha az hataya eğilimli ve daha az iş yapar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.