2008-11-20 19 views
6

Tüm MVC-Modelini kurdum ve HTML görünümlerini şablon olarak kullanıyorum. Ama orda Almanca dilleri var, bir noktada diğer dillere çeviri yapmak istiyorum.Zend Framework çeviri aracı nerede kullanılır?

Bunu yapmanın en iyi yolu nedir? Zend_Translate'i kullanmam gerektiğini biliyorum, ancak görünüm şablonumda sahip olduğum her kelime için bir çevirme işlevine tek bir çağrı yapmak zorunda mıyım?

cevap

12

Her şeyden önce, çevirilerinizin temeli olarak tam ifadeleri kullanmanızı öneririm. Sözcüklerle, her zaman cümle yapısı söz konusu olduğunda dillerin tutarlı olmadığı problemine sahipsiniz. Ardından, mevcut Zend_Transalate bağdaştırıcılarından birini seçmeniz gerekir: Array, Csv, Gettext, Ini, Tbx, Tmx, Qt, Xliff veya XmlTm. Bunların çoğu çeviri bilgilerini depolamak için endüstri standartlarına bağdaştırıcılardır, bu nedenle Array, Csv veya Ini'yi başlangıçta ve kullanım kolaylığı için seçtiyseniz, muhtemelen yeterli olacaktır. Lütfen Zend Framework kılavuzunda 49.2.1. How to decide which translation adapter to use'a bakın.

[...] 
<title><?php echo this->translate('Title'); ?></title> 
[...] 
<p>You can also do <?php echo $this->translate('Hello %1$s', $this->userName); ?></p> 
[...] 

bu sadece kısa bir giriş olduğuna dikkat edin: Varsayılan çeviri kaynağı olarak standartlaştırılmış Zend_Registry girişi Zend_Translate erişmek bir Zend_View_Helper_Translate, görünümlerinizde aşağıdaki kullanabilirsiniz bulunmadığından

// setup your translation 
$translate = new Zend_Translate('csv', '/my/path/source-de.csv', 'de'); 
$translate->addTranslation('/my/path/source-en.csv', 'en'); 
// add the translation adapter to the registry 
Zend_Registry::set('Zend_Translate', $translate); 

Zend_Translate içine ve hiçbir şekilde bu bileşen tarafından sağlanan işlevselliğin tam bir sunumu. Örneğin, çeviri adaptörünün kullanacağı yerel ayarın belirlenmesi hakkında söylenecek çok şey var.

Ben yerelleştirme karmaşık bir sorun olabilir ve Zend_Translate burada tamamen tarif edilemez çünkü, Zend Framework kılavuzda aşağıdaki okumak öneririm:

+0

Teşekkürler. Bu yüzden her zaman $ this-> translate(). Teşekkür ederim! –

1

Hayır, her kelimeyi çevirmeniz gerekmez. Bu anlamda çeviri fikri bir mesaj çeviri fikridir.

Güncel projemde iki tür çeviri yapıyoruz. Kısa bir metin olacaksa, bunu doğrudan okunabilirlik amacıyla kaynak koduna yazıyoruz.

I.E.

<?=$this->translate('Add');?> 
<?=$this->translate('Delete');?> 
<?=$this->translate('Are you sure you want to delete %1$s?', $thing);?> 

Ama bu mesaj çok daha uzun ise, genellikle çeviri sistemi için işaretlemek için bir standart izleyin:

<?=$this->translate('controller-action_form-information');?> 

sonra çok uzun bir metinde ile değiştirmek temeline dayanır çeviri aracınız ve görüntü düzenini düzenli tutar.