找不到我的具体案例。
我正在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)。
答案 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类生成的所有网址都包含适当的语言。
这就是我试图解决问题的方法。我再次强调,我只是想在这里尝试解决一个问题并且上述方法尚未经过测试。