Cake php 2.x .po文件需要什么,以及如何在.po文件中写翻译单词?

时间:2014-03-19 06:52:25

标签: php cakephp

我想知道蛋糕php中的多语言。如何在.po文件中写入事务。 我想使用英语和法语两种语言,现在我在下面的路径中创建了两个default.po文件

/app/Locale/eng/LC_MESSAGES/default.po (English)
/app/Locale/fra/LC_MESSAGES/default.po (French)

如何访问default.po文件以及我必须在default.po文件中编写的内容

请帮我找出解决方案。

感谢Sanjib

2 个答案:

答案 0 :(得分:2)

<强> 1。最低限度检查它是如何工作的

查看中使用函数__(),例如,用英语(主要语言)写一下:

<?php echo __('My name is Tom');?>

然后在你的.po文件中查找法语/ app / Locale / fra / LC_MESSAGES / default.po 翻译:

msgid "My name is Tom"
msgstr "Mon nom est Tom"

您可以使用poedit或良好的PHP编辑器(UTF-8),例如eclipse

然后在您的控制器中,可以AppController.php - &gt; public function beforeFilter()您可以将您的语言设置为:

$this->Session->write('Config.language', 'fra');


和...
不要忘记在/Config/core.php中设置您的主要语言,如:

Configure::write('Config.language', 'eng');

并使用会话组件 - 在您的控制器中:

public $components = array('Session');


2。完整的多方计划系统 你需要:

  • 将功能添加到初始化语言,例如$this->_setLanguage();,以便从URL参数获取语言
  • 使用语言参数
  • 为您的视图/网站布局中的链接添加切换语言的功能 在您的Config / routes.php 中
  • 设置路由
  • 可以扩展HtmlHelper,为所有链接添加语言参数,例如:
  

App ::使用(&#39; HtmlHelper&#39;,&#39; View / Helper&#39;);       class MyHtmlHelper扩展了HtmlHelper {

    public function url($url = null, $full = false) {

       if(!isset($url['language']) && isset($this->params['language'])) {
          $url['language'] = $this->params['language'];
        }
        return parent::url($url, $full);
   }
}

<强>更新

所有语言的区域设置字段表格:http://api.cakephp.org/2.4/source-class-L10n.html#177-326

答案 1 :(得分:1)

请参阅CakePHP书中的这个基本指南:http://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html

您问题的具体答案:通过蛋糕生成po文件后,您应该使用翻译程序打开它们(例如,po-edit)。在那里你可以插入所有的翻译。之后,程序将写入po文件并生成mo文件。 CakePHP应该自动读取并本地化您的应用程序!