Laravel ローカライゼーションは、開発者が多言語ウェブサイトを作成できるようにする強力な機能です。実装することで ウェブローカライゼーション をあなたの Laravel プロジェクトに導入すると、異なる言語的背景を持つ訪問者にパーソナライズされたユーザー体験を提供でき、最終的にリーチを拡大し、ユーザーエンゲージメントを向上させることができます。
Laravelアプリケーションにローカライズを実装する方法を順を追って説明し、ローカライズ作業を簡素化・強化できるツールをご紹介します!
Laravel のウェブサイトをローカライズすべき理由は何でしょうか?

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

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

Laravel アプリケーションやウェブを翻訳する前に満たす必要がある要件を理解したところで、Laravel を簡単に翻訳するためのいくつかの手順を紹介します。.
これを行うには、ローカライズしたいビューファイル(例えば resources/views/welcome.blade.php)を開きます。次に、bodyタグを以下のコードに置き換えます。.
Welcome to Linguise website!
ご覧のとおり、上記のテキストは現在コードに直接書かれています。これは効率が悪く、 ウェブサイトをさまざまな言語に翻訳する (国際化)のが難しくなります。
上記のテキストを、さまざまな言語に簡単に適応できるよう、より柔軟にしていきます。 Laravel はこのための非常に便利な機能を提供しています。それがローカリゼーションシステムです。最初のステップとして、既存のテキストを次のコードに置き換えてください。.
{{ __('Welcome to Linguise website!') }}
Laravel はデフォルトで上記のテキストを表示し、ユーザーが英語以外の言語を選択した場合に翻訳を検索します。この場合、英語がアプリケーションのデフォルト言語として使用されます。.
Setting up locales in a Laravel multilingual 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 ウェブを試して、英語、イタリア語、フランス語の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 の翻訳ファイルを整理する主な方法は 2 つあります。.
- 従来のアプローチでは、resources/lang/{en,fr,it}/{myfile.php} というパスにファイルを保存します。.
- 最新のアプローチでは、resources/lang/{fr.json, it.json}ファイルを利用します。.
この記事では2番目の方法に焦点を当てますが、原則はどちらにも適用できます(翻訳キーの命名方法とアクセス方法に違いがあります)。.
地域によって異なる言語の場合、ISO 15897 標準に従って言語ディレクトリやファイルに名前を付けることをお勧めします。例えば、イギリス英語は en-gb ではなく en_GB と表記します。.
Creating Laravel translation files
アプリケーションのロケールを設定したので、デフォルトのウェルカムメッセージの翻訳に進みましょう。.
まず、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 が自動的に認識するため、en.jsonファイルを作成する必要はありません。.
Laravel 多言語アプリで言語切り替えを設定する

さらに、 Laravel はまだローカル言語を上書きするように設定されていないため、今のところ、ルート内で直接翻訳を処理します。routes/web.phpファイル内のデフォルトのウェルカムルートを次のように変更します。.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
この場合、オプションのlocale GETパラメータを取得し、それに基づいて現在のロケールを設定しています(要求されたロケールがサポートされている場合)。.
これで、あなたのウェブサイトにアクセスし、URLの最初のセグメントとしてサポートされている言語のいずれかを含めることができます。たとえば、localhost/it や localhost/fr に移動すると、ローカライズされたコンテンツが表示されます。ロケールを指定しない場合、またはサポートされていないロケールを選択した場合、 Laravel はデフォルトで英語(en)になります。.
Laravelのローカリゼーションミドルウェア
すべてのURLにロケールを含めるのは理想的ではなく、サイトの視覚的な魅力を損なう可能性があります。これに対処するため、言語切り替え機能を設定し、ユーザーセッションを利用して翻訳されたコンテンツを表示します。app/Http/Middleware/Localization.phpファイルに新しいミドルウェアを作成するか、artisan make:middleware Localizationコマンドを実行して生成できます。.
次に、その中に以下のコードを追加します。.
このミドルウェアは、セッションにこのオプションが存在する場合、ユーザーが選択したロケーションをLaravelに使用させます。.
この操作をすべてのリクエストで実行する必要があるため、app/Http/Kernel.phpのwebミドルウェアグループのデフォルトミドルウェアスタックに追加してください。.
/**
* 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();
});
Additionally, remove the locale switching that was previously added to the default welcome route. Your root route should now look like this.
Route::get('/', function () {
return view('welcome');
});
これが完了すると、ユーザーは localhost/language/{locale} にアクセスすることによってのみ、有効な言語を切り替えることができます。選択されたロケールはセッションに保存され、ユーザーは以前のページにリダイレクトされます(Localization ミドルウェアによって処理されます)。.
テストするには、localhost/language/it にアクセスしてください(ブラウザでセッション Cookie が有効になっていることが前提です)。翻訳されたコンテンツが表示されるはずです。サイト内を移動したりページを更新しても、選択した言語は有効なままです。.
言語切り替え機能の実装
次に、ユーザーがURLにロケールコードを手動で入力する必要なく、 言語切り替え機能を Laravel ウェブ で変更できるクリック可能なオプションを提供する必要があります。これを実現するには、シンプルな言語切り替え機能を作成します。resources/views/partials/language_switcher.blade.php に新しいファイルを追加し、以下のコードを挿入してください。
@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 は日付と時刻の管理に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 のロケールを設定し、それに応じて日付をフォーマットします。.
To display the localized date in a view:
{{ __('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 }}
数値と通貨の書式設定
国によって数値のフォーマット方法はさまざまです。例えば。.
- France → 123 123,12
- ドイツ → 123.123,12
- 日本 → 123,123
Laravel アプリケーションでこれらのバリエーションに対応するには、NumberFormatter を使用できます。.
You can also spell out numbers in a specific language.
通貨は次のとおりです。フランス語ロケール(`fr`)では通貨はユーロ(€)で表示され、米国ロケール(`en_US`)では米ドル($)で表示されます。.
Linguiseによる Laravel のローカリゼーションの代替ソリューション

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


