2013-05-28 81 views

回答

2

我會引用我提供的答案right here。我不會費心去編輯文本太多,所以不要爲一些句子而煩惱,但是本質很重要,並且會幫助你很多。

的第一件事就是讓表單的翻譯工作是將文件添加到translator

當添加新的翻譯到您的配置,做使用默認的翻譯文本域。語法如下:

$translator->addTranslationFile(
    $type, 
    $resource, 
    $textDomain, //<-- this is the important one 
    $lang 
); 

在您的示例中,您已將文件添加到default-textdomain。不幸的是,這給它帶來了很多麻煩,因爲它不會像預期的那樣工作。每當你添加翻譯文件,將它們添加到你自己的文本域!

之後,您需要做的就是分配Zend\Form\View\Helper您的文本域。這是由以下完成:

// For Labels 
$this->formLabel()->setTranslatorTextDomain('your-textdomain'); 

// For Buttons (input type submit) 
$this->formButton()->setTranslatorTextDomain('your-textdomain'); 

// For Error-Messages 
$this->formElementErrors()->setTranslatorTextDomain('your-textdomain'); 

關於譯者本身

另外一點需要注意的是:只要有連接到您的配置名稱爲translator,它會轉換,服務自動作爲默認翻譯器附加到表單上。這是一個簡單的配置我經常我的模塊中使用:

'translator' => array(
    'locale' => 'de_DE', 
    'translation_file_patterns' => array(
     array(
      'type'  => 'phparray', 
      'base_dir' => __DIR__ . '/lang', 
      'pattern' => '%s.php', 
      'text_domain' => __NAMESPACE__, 
     ), 
    ), 
), 
+0

我有一節我的'應用程序/配置/ module.config.php'但使用gettext的還是我必須把它在配置文件中,每模塊? – Dawid

+0

'Application'模塊只定義了SkeletonApplication中的默認字符串。如果您有自己的字符串進行翻譯,則必須將這些翻譯文件與您的模塊一起交付,並通過上述配置添加文件。 – Sam

+0

好吧,現在它工作,但我不得不從''gettext' **更改翻譯器類型** ** phparray' ** – Dawid