私はこのフォーラムに不慣れで、これが私の最初の質問です。 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',
一部のパッケージには、独自の言語ファイルが付属している場合があります。パッケージのコアファイルを変更してこれらの行を微調整する代わりに、ファイルをresources/lang/vendor/{package}/{locale}
ディレクトリに配置することでそれらをオーバーライドできます。
https://laravel.com/docs/5.7/localization
このパッケージは言語の切り替えに役立つと思います