Gettext: Bu ileti kimliği ingilizce metin olması için iyi bir fikir mi?

8 Cevap php

Biz çeşitli dillere bizim PHP web çevirmek için hazır alıyoruz, ve PHP gettext destek gitmek için yol gibi görünüyor.

Tüm gördüğüm öğreticiler ileti kimliği olarak İngilizce metin kullanmanızı öneririz, yani

gettext ("Merhaba!")

Ama bu gerçekten iyi bir fikir mi? Adlı pazarlama birisi için metni değiştirmek istiyor diyelim "Merhaba millet!". Aslında mesaj kimliğidir - - değişti Sonra bu dize çünkü tüm dil dosyalarını güncelleştirmek zorunda değilsiniz?

O "hello.message" gibi genel kimliği çeşit, ve bir ingilizce çeviri dosyası için daha iyi mi?

8 Cevap

Ben her zaman benim "baz" dil olarak İngilizce olması olurdu "welcome back, %1" vb "welcome_back_1" olarak anlamlı kimlikleri kullanın, böylece kötü durum senaryosunda zaman belirli bir dil doesn 't bir ileti kimliği var, ben sonbahar-geri İngilizce üzerinde.

Ben İngilizce değiştirir eğer öyleyse kimliğini yapar, çünkü ileti kimlikleri gibi gerçek İngilizce ifadeler kullanmak sevmiyorum. Bazı otomatik araçları kullanırsanız bu size çok etkiler olmayabilir, ama bu beni rahatsız ediyor. Ben bir şey demek istemiyorum çünkü (msg3975) gibi basit kodları kullanmak ister, bu yüzden kod okumayı çöp yorumlar sürece her yerde daha zordur yok.

Vay be, ben kimse bir anahtar olarak İngilizce kullanarak savunduğu şaşırdım. Ben yazılım projelerinin bir çift bu tarz kullanılan ve IMHO oldukça iyi çalıştı. Kod okunabilirliği büyük ve İngilizce bir dize değiştirmek eğer mesajı (iyi bir şey olduğu) re-çeviri için dikkat edilmesi gereken belli olur.

Yalnızca yazım düzeltme veya kesinlikle çeviri gerektirmeyen diğer bazı değişiklik yapıyoruz durumda, kaynak dosyaları bu dizi için kimlikleri güncelleştirmek için basit bir mesele.

Ben şu anda yeni bir proje ileri I18N yapmanın bu şekilde taşımak için olsun ya da olmasın değerlendiriyorum, dedi, bu yüzden iyi bir fikir olmayabilir neden bazı düşünceler duymak güzel.

Ben şiddetle o "tek yol" olduğunu bildiren hangi Richard Harrisons cevap ile katılmıyorum. "Tek yol" yok, çünkü sevgili asker, bu tek yol olduğunu bildiren bir cevap güvenmiyorum.

İşte IMHO Richards yaklaşım üzerinde birkaç avantajı vardır başka yoludur:

  • Orijinal olarak İngilizce dize proto-sürümünü kullanarak başlayın.
  • Bu proto-dizeleri gösterilecek ama İngilizce nontheless için bir çeviri dosyası oluşturmak etmeyin
  • Başlangıçta için çeviri proto-dizeleri kopyalayın

Avantajları:

  • okunabilir kod
  • kodunuzu metin ne görünüm, aynı çok yakın olmasa bile
  • Eğer İngilizce metni değiştirmek istiyorsanız, proto-dize ama çeviri değişmez
  • if you want to translate the same thing twice, just write a slightly different proto-string or just add 'version for this and that' and you still have a perfectly okunabilir kod

The reason for the IDs being English is so that the ID is returned if the translation fails for whatever reason - the translation for the current language and token not being available, or other errors. That of course assumes the developer is writing the original English text, not some documentation person.

Ayrıca İngilizce metin değişiklikler, sonra muhtemelen diğer çevirileri güncellendi gerekiyorsa?

Pratikte biz de ziyade İngilizce metin daha Saf kimlikleri kullanmak, ama biz İngilizce varsayılan ekstra sayıda iş yapmak zorunda anlamına gelmez.

Bir kelimeyle bunu yapmayın.

İngilizce aynı kelime / cümle yeterince sık birden fazla anlamı olabilir ve her biri farklı bir çeviri anlam.

Dizeleri için anımsatıcı kimlikleri tanımlamak ve sadece başka bir dil olarak İngilizce davranın.

Kodda id numaraları kod okunabilirliği için bir kabus olduğunu, diğer posterleri ile katılıyorum.

Ex yerelleştirme mühendisi

Zaten kendi sorunuzu yanıtladı mı? :)

Eğer uygulama i18n desteklemek niyetinde olmadığını Açıkçası, bütün dil uygulamalarında aynı tedavi gerekir. Birisi bir dize değiştirmek gerekiyor karar verirse, tüm dil dosyaları benzer bir değişiklik yapmak. Tarihi ile meta grup tüm dil aynı değişiklik dosyaları birlikte olmalıdır. Lütfen "default" dil farklı şekilde ele alınır ise, o korumak için daha zor hale getirir.

Ben bugüne kadar size (asla çoğu değerleri için) bir şey tuşları Serbest metin olarak kullanmak istiyorsanız asla söylemek için gitmek istiyorum. SO Örneğin bu sayfaya anahtarı olarak sorgu ünvanını kullanan düşünün. Birisi kendisine bağlanan ve sonra başlık düzenlenirse, bağlantı artık geçerli değil.

Ayrıca tüm bağlantıları güncellemek için sorumlu olacağını hariç Senin sorunun, benzer ...

Douglas Leeder bahseder gibi, ne muhtemelen yapmak istiyorum İngilizce ve karışmış başka bir dil kullanan bir arayüzü son derece kafa karıştırıcı (ama hafif eğlenceli, çok) olmasına rağmen, varsayılan (yedek) dil olarak İngilizce kullanmaktır.

Yukarıdaki hususlar ek olarak, "anahtar" (msgid) kaynak metin (İngilizce) farklı olmasını isterdim birçok durumlar vardır. Örneğin, HTML görünümünde, o çapa etiketinin hedef ve etiket kullanıcı yerel ayarı bağlıdır burada [yyyy] söylemek isteyebilirsiniz. Örneğin Bir sosyal ağ için bir bağlantı olabilir, ve ABD bu Facebook olurdu ama Çin'de Weibo olurdu. Yani MsgIds socialSiteUrl ve socialSiteLabel gibi bir şey olabilir.

Ben bir karışımını kullanın.

Ben sanmıyorum temel dizeleri çatışmalar / değişiklik / garip anlamlara sahip olacak, ben anahtar İngilizce gibi aynı yapacağız.