Laravelローカリゼーションは、開発者が多言語ウェブサイトを作成できるようにする強力なツールです。LaravelにウェブローカリゼーションをLaravel、異なる言語的背景を持つ訪問者にパーソナライズされたユーザーエクスペリエンスを提供でき、最終的にはリーチを拡大し、ユーザーエンゲージメントを向上させることができます。
Laravel アプリケーションでローカリゼーションを実装する手順を説明し、ローカリゼーションの作業を簡素化および強化できるツールを紹介します。
Laravel ウェブサイトをローカライズする必要があるのはなぜですか?

Laravel ウェブサイトをローカライズする必要がある重要な理由をいくつか紹介します。.
- 世界中のユーザーにリーチ: Laravelローカライズすることで、アプリのリーチを国際的なユーザーにまで広げることができます。これにより、様々な国や言語背景を持つユーザーがコンテンツを理解し、利用できるようになります。
- ユーザーエクスペリエンスの向上:ローカリゼーションにより、ユーザーは母国語でアプリを操作できるようになり、ユーザーエクスペリエンスが大幅に向上します。これにより、エンゲージメント率の向上、直帰率の低減、コンバージョン率の向上が期待できます。
- 競争優位性:競争の激しいグローバル市場において、アプリを複数言語で提供することは、競合他社に対して大きな優位性をもたらす可能性があります。これは、国際市場へのコミットメントを示すとともに、新規市場へのより効果的な参入にもつながります。
- SEOの向上:適切にローカライズされたウェブサイトは、特定の言語での検索において検索エンジンのランキングが高くなる傾向があります。ブログのトラフィックと様々な市場でのオンラインプレゼンスの向上が期待できます。
多言語 Laravel ローカリゼーションの要件

Laravelで多言語ローカリゼーションを実装する際には、考慮すべき要件と手順がいくつかあります。.
- 最新のローカリゼーション機能を利用するには、 Laravel の最新バージョン (バージョン 10.x など) を使用していることを確認してください。.
- PHP と Laravel フレームワークの基本的な理解は、実装プロセスに役立ちます。.
- Web サーバーやデータベースなど、 Laravelをサポートするローカル開発環境またはサーバーをセットアップします。.
- アプリケーションがサポートする言語を最初から決定します。.
シンプルな Laravel 翻訳

Laravel アプリケーションまたは Web を翻訳する前に満たす必要がある要件を理解した後、 Laravel 簡単に翻訳するための手順をいくつか示します。.
これを行うには、ローカライズするビューファイル(例:resources/views/welcome.blade.php)を開きます。次に、bodyタグを以下のコードに置き換えます。.
Welcome to Linguise website!
ご覧のとおり、上記のテキストは現在コード内に直接記述されています。これは効率が悪く、ウェブサイトを異なる言語に翻訳(国際化)することが困難になります。
上記のテキストをより柔軟にし、様々な言語に簡単に適応できるようにします。Laravel Laravel は、このために非常に便利な機能であるローカリゼーションシステムが用意されています。まず、既存のテキストを以下のコードに置き換えてください。.
{{ __('Welcome to Linguise website!') }}
Laravel デフォルトで上記のテキストを表示し、ユーザーが英語以外の言語を選択した場合は翻訳を検索します。この場合、アプリケーションのデフォルト言語として英語が使用されます。.
Laravel 多言語Webでのロケールの設定

しかし、 Laravel どのようにして現在の言語を判別し、アプリケーションで利用可能な言語を把握するのでしょうか?config/app.phpファイルのロケール設定を確認します。このファイルを開き、次の2つのキーを探してください。.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
キーの上にある説明は明確でしょう。要約すると、locale キーはアプリケーションのデフォルトロケールを保持します(コード内で他のロケールが指定されていない場合)。fallback_locale は、アプリケーションで存在しないロケールが要求された場合に有効になります。.
ここで、このファイルに新しいキーを追加して、サポートされているすべてのロケールのリストを提供しましょう。.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
現時点では、 Laravel Web で英語、イタリア語、フランス語の 3 つの言語をサポートすることを試しています。.
Laravel 翻訳ファイルの概要

Laravelでは、他の多くのフレームワークと同様に、異なる言語の翻訳は別々のファイルに保存されます。これらの翻訳ファイルを整理するために、2つの方法が使用されています。.
従来の方法では、ファイルはresources/lang/{en,fr,it}/{myfile.php}という構造で保存されます。新しい方法では、resources/lang/{fr.json, it.json}のようなJSONファイルを使用します。この記事では新しい方法に焦点を当てますが、翻訳キーの命名方法とアクセス方法の違いを除けば、基本的な考え方は従来の方法とほぼ同じです。.
地域によって異なる言語の場合は、ISO 15897規格に従って言語ディレクトリまたはファイルに名前を付ける必要があります。例えば、イギリス英語の場合はen-gbではなくen_GBという名前になります。.
一般情報
Laravelでは、多くのフレームワークと同様に、異なる言語の翻訳は別々のファイルに保存されます。Laravel Laravel 翻訳ファイルを整理する方法は主に2つあります。.
- 従来のアプローチでは、ファイルを resources/lang/{en,fr,it}/{myfile.php} というパスの下に保存します。.
- 最新のアプローチでは、resources/lang/{fr.json, it.json} ファイルが使用されます。.
この記事では 2 番目の方法に重点を置きますが、その原則はどちらにも適用できます (翻訳キーの命名方法とアクセス方法が異なります)。.
地域によって異なる言語の場合は、ISO 15897規格に従って言語ディレクトリ/ファイルに名前を付けることをお勧めします。例えば、イギリス英語はen-gbではなくen_GBと表記されます。.
Laravel 翻訳ファイルの作成
アプリケーションのロケールを設定したら、デフォルトのウェルカム メッセージの翻訳に進むことができます。.
まず、resources/langディレクトリ内にJSON形式の新しいローカリゼーションファイルを作成しましょう。まず、resources/lang/it.jsonファイルを作成し、適切な翻訳を入力します。.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
次に、resources/lang/fr.json ファイルを追加します。.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
ご覧のとおり、welcome.blade.php ファイルのデフォルトメッセージ ({{ __('Welcome to Linguise website!') }}) を常に参照しています。Laravel Laravel デフォルトメッセージが英語であることを自動的に認識するため、en.json ファイルを作成する必要はありません。.
Laravel 多言語アプリで言語スイッチャーを設定する

さらに、 Laravel まだローカル言語をオーバーライドするように設定されていないため、今のところはルート内で直接翻訳を処理します。routes/web.phpファイル内のデフォルトの welcome ルートを次のように変更します。.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
この場合、オプションのロケール GET パラメータをキャプチャし、それに基づいて現在のロケールを設定します (要求されたロケールがサポートされている場合)。.
これで、ウェブサイトにアクセスし、URLの最初のセグメントにサポートされている言語のいずれかを含めることができます。例えば、localhost/it または localhost/fr にアクセスすると、ローカライズされたコンテンツが表示されます。ロケールを指定しなかった場合、またはサポートされていないロケールを選択した場合、 Laravel デフォルトで英語 (en) を使用します。.
Laravelのローカリゼーションミドルウェア
すべてのURLにロケール情報を含めるのは理想的ではなく、サイトの見た目を損なう可能性があります。これに対処するため、言語スイッチャーを設定し、ユーザーセッションを利用して翻訳されたコンテンツを表示します。app/Http/Middleware/Localization.php ファイルに新しいミドルウェアを作成するか、 artisan make:middleware Localization コマンドを実行して生成できます。.
次に、次のコードを内部に追加します。.
このミドルウェアは、このオプションがセッション内に存在する場合、ユーザーが選択した場所を使用するように Laravel に指示します。.
すべてのリクエストで操作を実行する必要があるため、Web ミドルウェア グループの app/Http/Kernel.php のデフォルトのミドルウェア スタックに追加します。.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
ルートの変更
次に、routes/web.php ファイルでロケールを変更するためのルートを定義します。ここではクロージャルートを使用していますが、必要に応じて同じコードをコントローラー内に配置することもできます。.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
さらに、デフォルトのウェルカムルートに以前追加したロケール切り替えを削除します。ルートルートは次のようになります。.
Route::get('/', function () {
return view('welcome');
});
これが完了すると、ユーザーはlocalhost/language/{locale}にアクセスすることでのみアクティブな言語を切り替えることができます。選択されたロケールはセッションに保存され、ユーザーは(ローカリゼーションミドルウェアによって処理され)前のページにリダイレクトされます。.
テストするには、localhost/language/it にアクセスしてください(ブラウザでセッションCookieが有効になっていることを前提としています)。翻訳されたコンテンツが表示されるはずです。サイト内を移動したり、ページを更新したりしても、選択した言語はそのまま有効です。.
言語スイッチャーの実装
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
新しく作成した言語スイッチャーを「welcome」ビューに含めるには、スイッチャーを表示する welcome.blade.php ファイルに次の行を追加するだけです。.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
app/Providers/AppServiceProvider.php ファイルを開き、boot() メソッドに次のコードを追加して、言語スイッチャーが使用されているときに現在のロケールをすべてのビューと共有します。
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Laravel PHPの高度な翻訳機能

この議論では、日付、数値、通貨といった他のローカリゼーション要素についても扱います。手順は以下のとおりです。.
Laravelでのローカライズされた日付
日付と時刻の扱いはローカライズプロセスにおいて非常に重要です。Laravel Laravel Carbonを使用して日付と時刻を管理します。Carbonを使用してローカライズされた日付を表示する方法は次のとおりです。.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
このコードは、アプリケーションの現在のロケールに基づいて Carbon ロケールを設定し、それに応じて日付をフォーマットします。.
ビューにローカライズされた日付を表示するには:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
数値と通貨の書式設定
国によって数字の書式は異なります。例えば、.
- フランス → 123 123,12
- ドイツ → 123.123,12
- 日本 → 123,123
Laravel アプリケーションでこれらのバリエーションに対応するには、NumberFormatter を使用できます。.
特定の言語で数字を表記することもできます。.
通貨は次のとおりです。フランス語ロケール(`fr`)では通貨はユーロ(€)で表示され、米国ロケール(`en_US`)では米ドル($)で表示されます。.
Linguiseを使用した Laravel ローカリゼーションの代替ソリューション

記事で説明されている Laravel ローカリゼーションの手順を理解した後、このプロセスには、ユーザーが Laravel プログラム コードを詳細に理解する必要がある多くの手順が含まれます。.
これは、アプリケーションのローカライズを希望する初心者ユーザーにとって確かに困難を伴います。そのため、迅速な翻訳が可能で、ローカライズをサポートし、わずかな手順で簡単に実装できる、より革新的なソリューションが必要です。.
有望なソリューションの一つが Linguiseです。Linguise Linguise Linguise 深いコーディング知識を必要とせずに、 Laravel ローカリゼーションをより簡単で効率的に実現します。Linguiseの主な機能は以下のとおりです。.
- Laravelとの簡単な統合
- コーディングなしで言語スイッチャーをカスタマイズ
- 画像翻訳
- ライブエディターで翻訳をローカルコンテキストに合わせてカスタマイズ
- 動的に生成されたコンテンツの動的翻訳
- 多言語版のSEO最適化
LaravelウェブサイトにLinguiseをインストールする手順も簡単です。以下に簡単に説明します。
- Linguise アカウントを作成する(30日間の無料トライアルを無料でご利用いただけます)
- Laravel ウェブドメインを登録し、いくつかの情報を入力してください。APIキーを取得できます。.
- 取得した Laravel フォルダーに Linguise 翻訳スクリプトをアップロードして接続します。.
- htaccess ファイルで言語 URL を設定します。.
- 言語切り替えスクリプトを HTML のヘッダーに挿入します。.
- 必要に応じて言語スイッチャーをカスタマイズする
- Laravel Web に言語スイッチャーが表示され、コンテンツを自動的に翻訳できます。.
どうやって? Linguiseなら、登録してアクティベートするだけで、言語スイッチャーが表示されます。その後は、ライブエディターを使ったローカライズ、メディアや画像の翻訳など、自由に操作できます。.
結論
Laravel ローカリゼーションは、開発者が多言語対応のウェブサイトやアプリケーションを作成できるようにする強力な機能です。これまで見てきたように、 Laravel に組み込まれているローカリゼーションプロセスは複数のステップで構成されており、フレームワークへの深い理解が求められます。初心者や、より迅速な解決策を探している人にとっては、難しいと感じるかもしれません。.
Linguiseのようなツールは、より効率的なアプローチを求める人にとって革新的な選択肢となります。これらのソリューションは、迅速な翻訳機能、容易な統合、そしてカスタマイズ可能な言語スイッチャーや画像翻訳といったユーザーフレンドリーな機能を提供します。今すぐLinguiseアカウントを作成し Laravelのローカライズ機能をご利用ください!



