2014-03-19 37 views
0

我想知道蛋糕php中的多语言。如何在.po文件中写入事务。 我想用两个语言是英语和法语,现在我在下面的路径创建了两个default.po文件Cake php 2.x .po文件需要什么以及如何在.po文件中编写翻译文字?

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

如何访问default.po文件,我不得不在屋里default.po写什么文件

请帮我找出解决方案。

感谢Sanjib

回答

2

1.最小它是如何工作

在你查看使用功能__(),例如,用英文写(主要语言):

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

然后在.po文件for French/app/Locale/fra/LC_MESSAGES/default.po translate:

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

您可以使用poedit还是不错的PHP编辑器(UTF-8)所示eclipse

然后在控制器 - 可以AppController.php - >public function beforeFilter()你可以设置你的语言,如:

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


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

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

和使用会话组件 - 在你的控制器:

public $components = array('Session'); 


2。有关完整的多语言系统 您需要:

  • 附加功能初始化语言$this->_setLanguage();从网址参数
  • 附加功能获得语言切换语言在你的视图/站点布局的链接语言PARAM
  • 集你的config/routes.php文件
  • 可以路由扩展的HtmlHelper语言PARAM添加到所有哟乌尔链接,如:

应用::使用( '的HtmlHelper', '查看/助手'); 类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); 
    } 
} 

UPDATE:

现场实地所有语言:http://api.cakephp.org/2.4/source-class-L10n.html#177-326

+0

你是绝对正确的,当我设置在核心默认语言。 php ::配置::写('Config.language','eng');工作正常 但当我改变英语法语,在beforeFilter() $ this-> Session-> write('Config.language','fre'); 法国版本不起作用。 终于在英文版本正常工作,但不适用于法文版本 – psanjib

+0

您应该使用'fra'而不是'fre' - 对不起,我的错误 –

+0

我也使用'fra',但在得到您的反馈后,我使用'fre'不工作 – psanjib

相关问题