使用Kohana 3.3中的I18n功能

时间:2012-11-02 06:38:31

标签: kohana kohana-3

我在Kohana 3.3中遇到I18n功能问题

我的I18n文件夹结构如下

I18N /

  • 烯/
    • 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');代替i18n::lang('en-us');

时,似乎只能加载正确的语言文件

1 个答案:

答案 0 :(得分:1)

适合我。这些电话等于Kohana:

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

当您使用'en / us'值时,I18n将不会加载i18n/en.php文件,只会加载i18n/en/us.php

我只能建议你解决问题的原因之一:

您正在使用__()函数,该函数忽略默认语言的翻译('en-us'是硬编码的)。所以,当你调用I18n :: lang('en / us')时,默认语言仍然是英语,但它与'en-us'不同。小黑客:)

您可以使用APPPATH/classes/I18n.php文件(标准Kohana方式)扩展I18n类,并为该函数添加您自己的版本:

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

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