首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >laravel 4多语言网站

laravel 4多语言网站
EN

Stack Overflow用户
提问于 2013-02-10 07:53:29
回答 2查看 5.7K关注 0票数 3

我正在尝试实现一个多语言的laravel 4网站,在url中使用语言代码( mywebsite.com/en/home和mywebsite.com/de/home )

我已经看到了一些选项,比如过滤所有请求和检查第一个参数是否是语言代码之一。

我也查看了packagist,但还没有找到已经做tee工作的东西。

有没有更好的方法来实现它?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-02-10 22:41:40

最后,我在config/app.php中创建了一个配置变量

代码语言:javascript
运行
复制
'available_language' => array('en', 'fr', 'es'),

在filters.php中,我检测到浏览器语言:

代码语言:javascript
运行
复制
Route::filter('detectLang', function($lang = "auto")
{
    if($lang != "auto" && in_array($lang , Config::get('app.available_language')))
    {
        Config::set('app.locale', $lang);
    }else{
        $browser_lang = !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtok(strip_tags($_SERVER['HTTP_ACCEPT_LANGUAGE']), ',') : '';
        $browser_lang = substr($browser_lang, 0,2);
        $userLang = (in_array($browser_lang, Config::get('app.available_language'))) ? $browser_lang : Config::get('app.locale');
        Config::set('app.locale', $userLang);
    }
});

然后在routes.php中,我可以检测语言或强制它:

代码语言:javascript
运行
复制
Route::get('/', array(
    'before' => 'detectLang()', // auto-detect language
    function(){
        ...
    })
);

代码语言:javascript
运行
复制
Route::get('/', array(
    'before' => 'detectLang("fr")', // force language to "fe"
    function(){
        ...
    })
);
票数 6
EN

Stack Overflow用户

发布于 2013-02-10 15:16:45

您可以在用户会话中设置语言变量。

然后使用'before‘过滤器,查看该变量,并记录正确的语言文件。

如果没有变量集,则使用默认值(可能基于其IP位置)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14793008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档