Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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上多语言网站的基本url中的语言_Kohana_Kohana 3 - Fatal编程技术网

Kohana 3上多语言网站的基本url中的语言

Kohana 3上多语言网站的基本url中的语言,kohana,kohana-3,Kohana,Kohana 3,找不到我的具体案例的例子 我正在Kohana 3.3上创建一个多语言网站。我需要创建如下URL: http://example.com for English version http://es.example.com for Spanish http://fr.example.com for French 等等。但我能找到的所有例子都像http://example.com/lang/ 我必须做什么才能实现目标?我是否必须为每种语言制作不同的应用程序,然后调整.htaccess?或者有一种方法

找不到我的具体案例的例子

我正在Kohana 3.3上创建一个多语言网站。我需要创建如下URL:

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的例子中)。

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

首先,我将首先设置服务器,使所有域指向一个单一的应用程序(我假设您已经准备好了)

接下来,在您的
bootstrap.php
中,我将使用一个助手函数,该函数将根据访问网站的URL为我定义它,然后我的引导可能如下所示:

/**
 * Set the default language
 */
I18n::lang(MyApp::get_request_language_code());
我希望我的
MyApp::get\u request\u language\u code()
返回一个与I18n类使用的语言代码匹配的字符串。如果url无效(例如xxx.example.com),此帮助程序还应重定向请求

然后,我可能会使用
$\u SERVER['HTTP\u HOST']
设置基本url,即:

Kohana::init(array(
    'base_url'      => $_SERVER['HTTP_HOST'],
));
或者,我会有另一个助手函数,它会返回域前缀,我会将其与我的实际域连接起来,例如:

Kohana::init(array(
    'base_url'      => MyApp::get_request_language_url_prefix().'example.com',
));
通过在Kohana::init()期间在
base\u url
中设置带有语言前缀的域名,可以确保使用路由或url类生成的所有url都包含适当的语言

这就是我解决问题的方法。再一次,我想强调的是,我在这里只是试图提出一个问题的解决方案,而上述方法还没有经过测试