2014-03-19 69 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

相關問題