PHP Yerelleştirme İyi Uygulamalar?

3 Cevap php

Biz birden fazla dil sağlayan, bizim web sitesi uluslararası yapma sürecindedir.

Ben doğru anlıyorum, ben büyük bir kusur görüyor, ancak php "gettext" içine baktım:

Benim web sayfası statik bir metin olarak "Merhaba Dünya" diyelim varsa. I <?php echo gettext("Hello World"); ?>, bir aracı kullanarak po / mo dosyaları oluşturmak gibi dize koyabilirsiniz. Sonra üzerinde çalışmak için bir çevirmen dosyayı verecek.

A few days later we want to change the text in English to say "Hello Small World"? Do I change the value in gettext? Do I create an english PO file and change it there? If you change the gettext it will consider it as a new string and you'll instantly loose the current translation ...

It seems to me that gradually, the content of the php file will have old text everywhere. Or people translating might have to be told "when you see Hello World, instead, translate Hello Small World".

Ben karıştı alıyorum bilmiyorum.

Diğer programlama dillerinde, ben onlar gibi web.home.featured.HelloWorld gibi anahtar kelimeler kullanabilirsiniz gördüm.

PHP çeviriler işlemek için en iyi yolu nedir?

Teşekkürler

3 Cevap

Bu temelde sordu ve cevabı sadece PO dosyalarının nasıl çalıştığını biraz daha iyi bir anlayış sahip olabilir, kendi sorusunu yanıtladı.

PO dosyası içindeki bir MSGID ve bir msgstr var. Msgstr lokalizasyonu bağlı PHP dosyası içinde msgstr ile değiştirilir değerdir.

Şimdi sen istiyorum bu MSGID de bir şey yapabilir, çok iyi yapabilir:

<?php echo _("web.home.featured.HelloWorld"); ?>

Ve sonra kaynak içinde tekrar bu dize dokunma asla, sadece PO dosyaları üzerinden dizesini düzenleyin.

Yani temelde sorunun cevabı size gettext, dize ne demeliyim için tanımlayıcılar değerleri ancak çevirmenler genellikle tanımlayıcı kendisi, dönüşüm için temel olarak varsayılan dil dosyaları metni değil kullanmak olun.

Ben bu açıktır umuyoruz.

Şu anda, aynı konu ile uğraşıyorum. Gettext ile yaygın bir uygulama anahtarı olarak İngilizce metin kullanmaktır. Son zamanlarda, bizim kopya editörü İngilizce metin (diğer dillerde pek dokundu) arasında sürü değişti böylece tüm kaynak kodunu tüm PO dosyaları değiştirmek zorunda.

Biz tarafsız bir anahtara geçiş vardır. Biz zaten Java bazı siteler var çünkü. Biz aynı özellik adı biçimini kullanır.

Ben bir cevap kabul edilmiştir biliyorum, ve yukarıdaki cevap iyidir. Ama GetText çalışırken thing.stuff.widget gibi kalıcı makinesi tarzı tuşları kullanarak başka bir sorun vardır.

Kalıcı tuşlarını kullanarak geliştirme için daha iyi bir yaklaşım olmakla birlikte, Gettext çalışma bu tarzı için kurulmuş değildir ve bu workflow karmaşık hale getirebilir.

Eğer kaynak metin yerine tuşları ile doldurulan PO dosyası ile bir çevirmen sunmak, onlar İngilizce olması gerektiğini bilmiyor olabilir. Yani onları karşılaştırmak için kaynak dil çevirilerini içeren ikinci bir dosya ile bunları sağlamak için olurdu. Dünyanın sonu değil, ama Gettext nasıl tasarlandığına daha onlar için keman değil. (Kare peg, yuvarlak delik vb.)

Ben PO PHP çeviriler için bir dosya biçimi olarak gayet ve iyi bir l10n modülüne sahip bir çerçeve ile çalışıyoruz değilseniz özellikle tavsiye düşünüyorum, ama bu iş akışı ve çeviri süreci için iyi olduğu anlamına gelmez.

Ben size programcılar kalıcı tuşları ile çalışmaya olanak sağlayan bir iş akışı azından, çevirmenler kelimelerle çalışmak gelmesi, ve diğer ucunu dışarı dosya size MO verir öneririz. Bu bir çözüm için Loco bir göz atın.

Alternatif tuşları ve kelimelerin kullanımına izin farklı bir geçici dosya biçimi kullanabilirsiniz. TMX bir örnektir. Eğer hala yapabilirsiniz zamanında GetText kullanmak istiyorsanız convert the files.