Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Kohana 3.3中的I18n功能_Kohana_Kohana 3 - Fatal编程技术网

使用Kohana 3.3中的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/

我在Kohana 3.3中的I18n功能方面遇到了问题

我的I18n文件夹结构如下

i18n/

  • 嗯/
    • us.php
  • zh/
    • hk.php
    • cn.php
我遇到的问题是,无论我读到哪里,都应该可以加载这样的语言:so
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()函数,所以如果你把它放在其他地方,请确保手动包含该文件。