使用Kohana 3.3中的I18n功能
我在Kohana 3.3中的I18n功能方面遇到了问题 我的I18n文件夹结构如下 i18n/使用Kohana 3.3中的I18n功能,kohana,kohana-3,Kohana,Kohana 3,我在Kohana 3.3中的I18n功能方面遇到了问题 我的I18n文件夹结构如下 i18n/ 嗯/ us.php zh/ hk.php cn.php 我遇到的问题是,无论我读到哪里,都应该可以加载这样的语言:soi18n::lang('en-us')因为api声明它分解“-”字符上的字符串,所以默认目标语言“en us”会搜索以下文件: /application/i18n/en.php /application/i18n/en/us.php 当我使用i18n::lang('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')时,它似乎只加载了正确的语言文件代码>而不是i18n::lang('en-us')代码>对我有用。对于科哈纳来说,这些调用是相等的:
I18n::lang('en-us');
I18n::lang('en us');
I18n::lang('en_us');
使用“en/us”值时,I18n不会加载I18n/en.php
文件,只加载I18n/en/us.php
对于你的问题,我只能提出一个原因:
您正在使用\uu()
函数,该函数忽略默认语言的翻译(“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);
}
对不起,我对这一切还很陌生。那是什么样子?我把它放在APPPATH/classes/I18n.php
?哦,等一下,愚蠢的我哈哈在我写这篇文章的时候太累了,不知道为什么我会认为它是一个类方法。它不是一个类方法,但Kohana在与的同一个文件中包含了uu()函数,所以如果你把它放在其他地方,请确保手动包含该文件。