我有一個使用ZF2編寫的小型學習應用程序(基於ZF2用戶指南:http://framework.zend.com/manual/2.2/en/user-guide/skeleton-application.html),現在我想添加國際化到我的應用程序,它幾乎完成,但我卡住了在翻譯形式。當我想在表單類中使用$this->translate
時,出現錯誤,說該方法翻譯不存在。 ZF2中有沒有關於國際化的好例子或教程?Zend Framework 2形式的國際化(i18n)
0
A
回答
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__,
),
),
),
相關問題
- 1. 國際化i18n codeigniter 2
- 2. symfony中的i18n(國際化)
- 3. Grails的國際化(i18n)
- 4. Vaadin 8國際化i18n
- 5. Codeigniter國際化國際化i18n尾部斜槓沒有添加
- 6. 國際化和程序本地化。 i18n
- 7. 國際化(i18n)或本地化
- 8. JavaScript警報消息的國際化(i18n)
- 9. 國際化i18n測試的Eclipse插件
- 10. 角2 I18N-國際:message.xlf是空
- 11. 的Symfony形式的國際化和add_empty
- 12. Java首選項和國際化(i18n)
- 13. Django國際化(I18N)不改變文字
- 14. 小枝:工作國際化(i18n)示例
- 15. 活動管理國際化(I18n)
- 16. 如何在javafx.scene.control.DatePicker做國際化(i18n)?
- 17. CSRF錯誤django 1.8 i18n國際化
- 18. 國際化(i18n)與Apache HTTP服務器
- 19. i18n(國際化)燃料視圖
- 20. GWT國際化(i18n)在服務器端
- 21. Django的形式和國際化
- 22. 國際化形式的最佳實踐?
- 23. jqGrid日期格式化i18n國際化文件
- 24. cakephp 2.x路由器與i18n國際化
- 25. 國際化的角度2
- 26. 國際化的I18n爲正則表達式尊稱檢查
- 27. JavaME國際化(國際化)
- 28. Zend Framework的驗證形式
- 29. Zend Framework vs Zend Framework 2
- 30. 如何「國際化」Play Framework 2.1路線?
我有一節我的'應用程序/配置/ module.config.php'但使用gettext的還是我必須把它在配置文件中,每模塊? – Dawid
'Application'模塊只定義了SkeletonApplication中的默認字符串。如果您有自己的字符串進行翻譯,則必須將這些翻譯文件與您的模塊一起交付,並通過上述配置添加文件。 – Sam
好吧,現在它工作,但我不得不從''gettext' **更改翻譯器類型** ** phparray' ** – Dawid