Daha açıklayıcı Dil Dize tutucudur?

4 Cevap php
<?LANG(no_download, 'you are not allowed to download')

yerine

$lang[no_download]

Ben şablonları dil dizeleri gömmek için daha iyi bir yaklaşım olduğunu düşünüyorum var.

Neredeyse tüm PHP uygulamalarında, baskın dil tutucu biçimi <?=$lang['no_download']?> veya {{no_download}} gibi. Diğer tasarımcılar / geliştiriciler / çevirmenler dil dosyasına atıfta olmadan tutucuları neyi temsil deşifre zor bir zaman olacak.

In order to make language placeholders more descriptive, why don't we include the original string together with the placeholder? e.g.

<?=lang( 'no_download' , 'You are not allowed to download this file because you have exceeded your quota' )?>

İkinci parametre bir kukla olduğunu ve böylece hiçbir şey lang () fonksiyonu tarafından kendisine yapılıyor.

At a glance, one might think that it is too verbose, adding clutter to the template markup. But in my opinion it is not a valid argument since the language string would've taken as much space as the placeholder if it weren't language aware.

Ben bu konu ile ilgili düşüncelerinizi duymak istiyorum.

4 Cevap

EDIT Didnt see this was tagged Smarty. Disregard my answer if you want a Smarty specific answer.

Ben bir predominant tutucudur biçimi olduğunu kabul etmem. Genel olarak, biçimi çeviriler üstesinden nasıl bağlıdır ve bu değişebilir.

Bunun dışında, bu çeviri etiket olarak varsayılan dil dizeleri sağlamak için nadir değildir. Örneğin, Zend Framework kılavuzunu, bu onların usage example parçasıdır. Bunda yanlış bir şey çeviri bağdaştırıcısı, bu destekler eğer. Bu kimlikleri gerektiriyorsa, o zaman bir seçenek değil.

Şahsen, kimlikleri tercih ve örneğin, uygulama onların kullanımına göre onlara isim deneyin form.label.login.username veya cart.checkout veya flashmessage.notice.

Kimliklerini kullanarak da ayrılık başka bir katman sağlar. Manifatura geliştirici veya şablon tasarımcısı ya sorumluluk düşmek olmayabilir göz önüne alındığında, bu şablonları kimlikleri var ve bu iyi.

To my opinion, it's wiser to think about setting great descriptive "keys" fveya your entries... Your "no_download" key doesn't describe the message well because it lacks a verb.

Keys, iyi bir adlandırma kuralı yanı sıra, değişkenler ve fonksiyonlar adını gerekir.

Sizin anahtar örneğin olmalıdır:

{{user_quota_exeeded}}

veya

{{user_quota_exeeded_alert}}

In the long run, if your "real string" gets changed and the "dummy parameter" in the template doesn't, it will fool some of your co-wveyakers/clients/...

Furthermveyae, it fveyaces you to type your messages twice.

Mveyae on naming conventions on wikipedia.

Gettext bunu zaten yapıyor. Böyle bir şey gider:

_('Gettext does this already. It goes something like this:');

Bu tüm büyük cevaplar, büyük anlayışlar, adamlar vardı.

Arno, I am very aware of naming conventions. My example language key was indeed not very aptly named but it was only done so to serve as an example. Throughout the translation process of my web application, I came across strings that were hard to summarize/describe with a few strings, thus the thought of including the default language string as translation labels. I'm sure if you have worked on translation enough you will come across this scenario.

Neyse görmek için güvence olduğunu Zend & Zaten bu yaklaşımı benimsemiştir gettext.

Aklıma başka bir soru performans ceza.

Will using function calls , e.g. LANG() , take up significantly more resources than simply printing out $lang[] arrays?

Ne dya düşünüyorsun?