用于Kohana 3多语言网站的基本网址语言

时间:2013-03-30 20:54:15

标签: kohana kohana-3

找不到我的具体案例。

我正在Kohana 3.3上创建一个多语种网站。我需要创建以下网址:

http://example.com for English version
http://es.example.com for Spanish
http://fr.example.com for French

等等。但我能找到的所有例子都像http://example.com/lang/

我需要做些什么来完成目标?我是否必须为每种语言制作不同的应用程序,然后调整.htaccess?或者有一种方法可以从URL读取语言(如果是lang.example.com)。

1 个答案:

答案 0 :(得分:0)

我从来没有这样做,所以我只是试图描述我如何处理这个问题,就像我面对它一样。

首先,我首先设置服务器,以便所有域都指向一个单一的应用程序(我假设你已经有了)。

接下来,在bootstrap.php,当setting the language时,我会使用一个帮助函数,根据访问网站的URL,为我定义它,然后我的引导程序可能会看起来像这样:

/**
 * Set the default language
 */
I18n::lang(MyApp::get_request_language_code());

我希望我的MyApp::get_request_language_code()返回一个与I18n类使用的语言代码相匹配的字符串。如果网址无效(例如xxx.example.com),此帮助程序还应重定向请求。

然后,我可能会使用$_SERVER['HTTP_HOST']设置基本网址,即:

Kohana::init(array(
    'base_url'      => $_SERVER['HTTP_HOST'],
));

或者,我有另一个辅助函数,它将返回我将与我的实际域连接的域前缀,例如:

Kohana::init(array(
    'base_url'      => MyApp::get_request_language_url_prefix().'example.com',
));

通过在Kohana :: init()期间在base_url中设置带有语言前缀的域名,您可以确保使用Route或URL类生成的所有网址都包含适当的语言。

这就是我试图解决问题的方法。我再次强调,我只是想在这里尝试解决一个问题并且上述方法尚未经过测试。