web-dev-qa-db-ja.com

laravel 5.7で言語を切り替える方法

私はこのフォーラムに不慣れで、これが私の最初の質問です。 laravel application.soを開発しているので、アプリケーションのデフォルト言語はEnglishです。これをChinese

私の要件は、主な言語はChineseであり、他の言語はEnglishです。言語チューザーは正常に機能していますが、アプリの「ローカル」を中国語に変更すると変更されます。キャッシュをクリアして同じことを再確認しました。言語を変更しないでください。私はすでに英語の「en」を中国語の「ch」の2つの言語配列を作成しました。

config/app.php

'locale' => 'en',  

'fallback_locale' => 'ch',

LanguageMiddlewareapp/Http/Middleware

public function handle($request, Closure $next)
{

    if(Session::has('locale')){
        app()->setLocale(Session::get('locale'));
    }

    return $next($request);
}

web.phproutes/web.php

Route::group(['middleware' => 'language'],function(){
    Route::get('/', function () {
        return view('welcome');
    });
});

ありがとうございました。

これを試してみてください

アプリファサードのsetLocaleメソッドを使用して、実行時にアクティブな言語を変更できます

App::setLocale($locale);     //by facade.
app()->setLocate($locate);   ///by helper 

getLocaleメソッドとisLocaleメソッドを使用して、現在のロケールを判別したり、ロケールが指定された値であるかどうかを確認したりできます。

$locale = App::getLocale();   //get current language

if (App::isLocale('en')) {  //if current language is english then true else false.
    //
}

「フォールバック言語」を構成することもできます。これは、アクティブな言語に特定の翻訳文字列が含まれていない場合に使用されます。

'fallback_locale' => 'en',

詳細については、こちらをお読みください 記事 および 参照 laravel公式文書

1
Jignesh Joisar

一部のパッケージには、独自の言語ファイルが付属している場合があります。パッケージのコアファイルを変更してこれらの行を微調整する代わりに、ファイルをresources/lang/vendor/{package}/{locale}ディレクトリに配置することでそれらをオーバーライドできます。

https://laravel.com/docs/5.7/localization

このパッケージは言語の切り替えに役立つと思います

https://github.com/akaunting/language

0
Ismoil Shifoev