2013-05-15 58 views

回答

24

App::setLocale()不是持久的 - 也就是说,它不会给存储哪些请求之间记住。相反,您可以使用会话来记住所选的语言环境,并从会话中读取每个请求的语言环境。如果会话中没有设置,我们还可以读取默认语言环境(来自配置)。

// app/routes.php 
Route::get('lang/{lang}', function($lang) 
{ 
    Session::put('my.locale', $lang); 
    return Redirect::to('/'); 
}); 

// app/start/global.php 
App::setLocale(Session::get('my.locale', Config::get('app.locale'))); 
+0

酷。怎么样用cookies?我想设置一个永久持续的cookie。我尝试过'Cookie :: forever'和'Cookie :: get',但它不起作用。正如你所展示的那样,会话是有效的。我尝试过打印cookie,但它是空的。打印会话虽然工作。代码在两种情况下都是相似的,我只是将它更改为使用Cookie而不是会话。 – MikkoP

1

我通过把

App::setLocale(Session::get('lang', 'en')); 

在应用程序解决了这个问题/开始/ global.php