我从来没有这样做过,所以我只是试图描述我将如何处理这个问题,就好像我面对它一样。
首先,我会从设置服务器开始,以便所有域都指向一个单一的应用程序(我假设您已经拥有该应用程序)。
接下来,在您的 bootstrap.php 中,当 setting the language 时,我将使用一个帮助函数,它会根据访问网站的 URL 为我定义它,然后我的引导程序可能看起来像这样:
/**
* Set the default language
*/
I18n::lang(MyApp::get_request_language_code());
我希望我的MyApp::get_request_language_code() 返回一个与 I18n 类使用的语言代码匹配的字符串。如果 url 无效(例如 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 类生成的所有 url 都包含适当的语言。
这就是我尝试解决问题的方法。再次强调,我在这里只是想提出一个问题的解决方案,上述方法尚未经过测试。