【问题标题】:Language in base url for multilingual website on Kohana 3Kohana 3 上多语言网站的基本 URL 中的语言
【发布时间】:2013-03-30 20:54:15
【问题描述】:

找不到适合我的特殊情况的示例。

我正在 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)。

【问题讨论】:

    标签: kohana kohana-3


    【解决方案1】:

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

    首先,我会从设置服务器开始,以便所有域都指向一个单一的应用程序(我假设您已经拥有该应用程序)。

    接下来,在您的 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 都包含适当的语言。

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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2015-04-03
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 2020-09-04
      相关资源
      最近更新 更多