2012-11-02 56 views
0

我有在Kohana中對國際化功能的麻煩3.3在Kohana中使用的I18n功能3.3

我的I18n文件夾結構如下

的i18n/

  • EN/
    • us.php
  • zh/
    • hk.php
    • cn.php

我得到的問題是,無論我讀它應該是可能加載的語言,像這樣i18n::lang('en-us');因爲API指出,它爆炸「 - 」關於字符串的字符,所以默認目標語言「EN-US」導致搜索以下文件:

/application/i18n/en.php 
/application/i18n/en/us.php 

似乎只加載正確的語言文件時我用代替i18n::lang('en-us');

回答

1

適合我。這些電話都是平等的Kohana的:

I18n::lang('en-us'); 
I18n::lang('en us'); 
I18n::lang('en_us'); 

當您使用恩/我們的價值,國際化功能將不會加載i18n/en.php文件,只有i18n/en/us.php

我可以建議只有一個問題,你的理由是:

您使用__()功能,而忽略了默認語言的翻譯(「EN-US」硬編碼)。所以,當你調用I18n :: lang('en/us')時,默認語言仍然是英語,但它不同於'en-us'。小黑客:)

可以擴展的I18n類APPPATH/classes/I18n.php文件(標準Kohana的方式),並添加自己版本的該功能:

// translate always! 
function __($string, array $values = NULL, $lang = 'en-us') 
{ 
    $string = I18n::get($string); 

    return empty($values) ? $string : strtr($string, $values); 
} 
+0

對不起,我仍然很新的這一切。 所以它就像[this](http://ideone.com/nuUm76)?我把它放在'APPPATH/classes/I18n.php'中? – ChaoticLoki

+0

它不是一個類方法。 http://ideone.com/J81rTY – biakaveron

+0

哦,等等,我愚蠢的我哈哈太累了,當我寫這些,不知道爲什麼我認爲這是一個類的方法。 – ChaoticLoki