Zend_Form değerler ve hataların i18n

1 Cevap php

Bu durumu kabul

$form->addElement('select', 'companies', array(
  'disableTranslator' => true,
  'label'             => Zend_Registry::get('Zend_Translate')->_('companies'),
  'filters'           => array('Int'),
  'required'          => true,
  'multiOptions'      => array(1 => 'Company 1', 2 => 'Company 2')
));

if($_POST && $form->isValid($_POST)) {
  $form->save();
}

$form->render();

This select serves to select companies from a given list of options.
The form has a default translator set with 1 translated phrase "my_translated_text" => "here comes the translation".

Seçin kutusunda seçenekleri kullanıcıların da "my_translated_text" diyerek seçin kutusunda yeni bir seçenek olarak görünmelidir adı my_translated_text ile bir şirket ekleyebilirsiniz demektir kullanıcılar tarafından girilen verilere göre doldurulur.

Hiçbir disableTranslator => true seçenek olsaydı, my_translated_text şirketi here comes the translation çevrilmiştir ve böylece tercüme metin olarak görünür olurdu -> çevirmenlik devre dışı bırakmanız gerekir.

Ama varsa disableTranslator => true (örneğin "değer gerekli" olduğu gibi) hata iletileri tercüme edilmez.

Ideally I don't want to translate the values, but want to translate everything else regarding the select box.
How do you deal with such situation? Have you ever had similar problem?

Teşekkür ederim

1 Cevap

Ben bazı sorun soruyu anlamak var, ama doğru anlamak, tercüme seçenek değerlerini istemiyorum. Zend_Form bu yapmak için hiçbir yolu yoktur. Dediğin gibi, yalnızca / tr tüm elemanı için çevirmen devre dışı bırakabilirsiniz.

Yapabileceğiniz en iyi şey, bir özel Form Element veya Dekoratör oluşturmak olacaktır. Ben çeviriler gerçekleşecek nereye tamamen emin değilim, ama ben seçenekler zaten Zend_Form_Multi en _translateValue() yöntemle çevrilir düşünüyorum. Başka sınıfı Görünüm Yardımcısı Seçin Box render olurdu bakmak için.


Bir dipnot düşmek: varsayılan bir çevirmen kümesi olduğunda, yapmanız gerekmez

'label' => Zend_Registry::get('Zend_Translate')->_('companies')

çünkü labels are translated by default. Ve bunu yapmak zorunda bile, çevirmen daha iyi Zend_Form::getTranslator() instead of via Zend_Registry bağlanmasını önlemek için tarafından alınır.