2012-04-10 98 views
3

我使用cakePHP 2.0并使用控制台工具创建一个.../app/locale/default.pot。现在,我想让我的网站翻译成多种语言。我在cakephp cook书(http://book.cakephp.org/1.2/en/view/162/Internationalizing-Your-Application)上阅读了有关国际化的段落。如何从.pot文件获取.po文件

我的default.pot文件复制到

  • ... /应用/区域/英/ LC_MESSAGES/default.pot
  • ... /应用/区域/ FRE/LC_MESSAGES /默认。锅
  • ... /应用/区域/ POL/LC_MESSAGES/default.pot
  • ...

,并进入tranalations字符串以UTF-8的文本编辑器(如gedit中)。而且...我的网站根本不会翻译。

我注意到AppController可能会实现一些代码来更改Configure :: write('Config.language',some_three_letters_language),因为配置没有任何改变,我已经实现了一些非常简单的代码。

// in AppController 
public function beforeFilter() { 
     Configure::write('Config.language', 'fre'); 
} 

为什么翻译功能总是返回它的参数,而不是在.POT文件翻译的字符串(在视图中,__(“东西”)-answers->“东西”)?

我发现没有.pot文件被翻译成.po。我怎样才能使用REHL或CentOS获得这些.po文件(在名称中不能获得任何合适的包或poeditor包)?

感谢您的回答。

回答

8

.pot和.po文件是相同的文件格式。 .pot代表“PO 模板”。不同的是,你应该使用这个模板文件,并将其提供给你的翻译人员,他们将生成翻译后的.po文件。 .pot文件是多个本地化.po文件的模板。见http://www.gnu.org/software/gettext/manual/gettext.html#Files

换句话说,只需将.pot重命名为.po即可。
在适当的gettext工作流程中,有msginit工具可以执行此操作,该工具还会将多个标题设置为所选语言环境的正确值。

+0

谢谢你的回答。我已将fre/RC_MESSAGES/default.pot重命名为default.po,但这并未解决问题。 – 2012-04-10 08:34:58

+1

“RC_MESSAGES”?应该是'LC_MESSAGES'。 – deceze 2012-04-10 08:35:58

+0

是的,对不起,我改变了它。你知道一种方法来检查.po文件的有效性吗? – 2012-04-10 09:41:44