当前位置: 首页 > 知识库问答 >
问题:

语言区域设置不改变与应用程序::setLocale但更新会话::把()在laravel 5.2

端木狐若
2023-03-14

我正在为我的laravel应用程序提供多语言支持,所有的材料都在网上看到说,将区域设置传递到应用程序门面并调用setLocale方法翻译网站,我试过了,但没有运气。

在我的路由文件中,我有这个

Route::group(['middleware' => ['web']], function () {
  Route::get('change-locale', ['uses' => 'HomeController@changeLocale', 'as' => 'locale.change']);
});

HomeController@changeLocale我有...

namespace Gudaapp\Http\Controllers;
use Illuminate\Http\Request;

use Gudaapp\Http\Requests;
use Gudaapp\Http\Controllers\Controller;
class HomeController extends Controller
{
public function changeLocale(Request $request) {
    if(empty($request->locale)) { redirect()->back()->withMessage('Unknown locale, please, if problem persists, contact admin.'); }
    session()->put('locale', $request->locale);
    return redirect()->back()->withMessage('Your locale has now been changed to <b>'.$request->locale.'</b>')->withMessageType('success');
}
}

在发送请求的视图中...

<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
   @foreach(config('app.languages') as $locale => $lang)
       <li class="{{ session('locale') == $locale ? 'active' : '' }}">
           <a href="{!! route('locale.change', ['locale'=> $locale]) !!}" ><img src='{!! asset($lang["flag"]) !!}' alt="" />&nbsp;{{ $lang['language'] }}</a>
        </li>
  @endforeach
</ul>

我总是收到成功的通知,但是App::getLocale()仍然是默认设置,因此网站不会被翻译。我需要帮助。

共有1个答案

韦星文
2023-03-14

在应用程序启动时,您是否也从会话中配置区域设置?您可以在服务提供商的引导方法中执行此操作,例如:

// app/Providers/AppServiceProvider.php
public function boot()
{
    $locale = $this->app['session']->get('locale'); // This would be the same as session()->get(... and Session::get(...
    $this->app->setLocale($locale); // This would also equal app()->setLocale(... and App::setLocale(...
}

您可能需要在此处执行一些额外操作,以确保区域设置有效。

 类似资料:
  • 问题内容: 我正在尝试实现可以​​更改应用程序语言的功能。 我试图这样设置: 在应用重启后,语言仍然是“系统默认值”。 现在,我通过设置来测试不同的语言。 但是,用户是否可以单击按钮,然后在重新启动后查看选择的语言? 另外,执行此操作以避免在重新启动时更改语言的正确方法是什么? 问题答案: 是的,您可以立即更改应用语言,例如, 使用您的NSUserDefaults值来设置语言。

  • 使用一种语言比另外一种语言更流利?请为您的 Creative Cloud 应用程序选择其他语言。 选择您的操作系统筛选依据:所有系统较新的系统:Mac OS 10.7、Windows 7 或更高版本较旧的系统:Mac OS 10.6、Windows Vista 或更早版本 较新的系统:Mac OS 10.7、Windows 7 或更高版本 使用 Adobe Creative Cloud 桌面应用程

  • 我在我的应用程序中,打开了一个活动。我按下主页按钮并更改语言,从taskmanager打开我的应用程序。问题:我的活动布局越来越宽。 对应于该活动的androidmanifest的更改: 注意:若我在android清单中添加语言环境,布局是正确的,但语言不会立即更新。用户必须关闭该活动,然后重新启动,只有这样语言才能得到更新。 请提供您的意见。

  • 我正在做一个项目,它需要在飞行中改变语言。我正在尝试设置所需的区域设置,但我一设置,应用程序就崩溃了,抱怨它找不到资源(比如r.layout.*r.drawable.*) 这是我用来设置新区域设置的代码: 编辑:已添加日志 E/AndroidRuntime:致命异常:main java.lang.RuntimeException:无法启动activity组件Info{com.flavorburst

  • 我想强制我的Symfony 2.5应用程序的区域设置为。我希望这个区域设置用于strftime()函数。 我的: 我正在我的一个控制器中使用以下代码来调试: 当这样执行时,它显示:。 但是,当第一行未注释时,它会显示:,因此区域设置已安装在系统中并正常工作。 我如何使Symfony始终使用配置中指定的语言环境? $locale-a:

  • 我刚开始使用symfony,我正在尝试建立一个multilang网站,但是我在更改区域设置时遇到了一个问题 我读了一些帖子,也读了相关文档,但语言环境没有改变,我尝试: 但是$locale中的值总是'en'(我的默认语言环境) 我也试试 在本例中,$locale是fr,但翻译总是来自消息。ENyml 我想第一次使用$\u SERVER['HTTP\u ACCEPT\u LANGUAGE']检测用户