我不贊成所選答案:P
當添加新的翻譯到您的配置,做不使用默認的翻譯文本域。語法如下:
$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');
如何獲得的ServiceManager到表格?
這也很簡單。簡單之一是使用constructor-injection
並將ServiceManager
或ServiceLocator
注入您的表單的__construct()
。在控制器級,這將是這個樣子:
$serviceLocator = $this->getServiceLocator();
$form = new My\Form($serviceLocator);
更深入地介紹了FORM-依賴可以發現on my Blog,在這裏我說明上依賴於數據庫的連接的Zend\Form\Element\Select
- 元素的人口。
關於譯者本身
另外一點需要注意的是:只要有連接到您的配置名稱爲translator
譯者-服務,它會自動連接到形式爲默認的轉換。這是我經常在模塊中使用的配置示例:
'translator' => array(
'locale' => 'de_DE',
'translation_file_patterns' => array(
array(
'type' => 'phparray',
'base_dir' => __DIR__ . '/lang',
'pattern' => '%s.php',
'text_domain' => __NAMESPACE__,
),
),
),
來源
2013-04-03 13:01:39
Sam
如果你有'.po'和'.mo'翻譯文件,爲什麼要添加一個'.php'文件?你還沒有說明你的代碼的問題是什麼? – Havelock
我只是想添加翻譯在Zend表單驗證錯誤,這是無法翻譯,因爲我使用echo $ this-> formElementerrors( $ form-> get('username'));其中包裹錯誤消息 – Arvind