Laravelローカリゼーションは、開発者が多言語 Web サイトを作成できるようにする強力な機能です。 LaravelにWeb ローカリゼーションを実装すると、さまざまな言語的背景を持つ訪問者にパーソナライズされたユーザー エクスペリエンスを提供でき、最終的にリーチが拡大し、ユーザー エンゲージメントが向上します。
Laravelアプリケーションにローカリゼーションを実装する手順を説明し、ローカリゼーションの取り組みを簡素化および強化できるツールを紹介します。
Laravel Web サイトをローカライズする必要があるのはなぜですか?
Laravel Web サイトをローカライズする必要がある重要な理由をいくつか紹介します。
- 世界中の視聴者にリーチする: Laravel をローカライズすることで、アプリのリーチを世界中の視聴者に広げることができます。これにより、さまざまな国や言語背景のユーザーがコンテンツを理解し、操作できるようになります。
- ユーザー エクスペリエンスの向上:ローカリゼーションにより、ユーザーは母国語でアプリを操作できるようになり、ユーザー エクスペリエンスが大幅に向上します。これにより、エンゲージメント率が向上し、直帰率が低下し、コンバージョンが増加します。
- 競争上の優位性:競争の激しい世界市場では、複数の言語でアプリを提供することで、競合他社に対して大きな優位性を得ることができます。これは国際市場への取り組みを示し、新しい市場へのより効果的な参入に役立ちます。
- SEO の向上:適切にローカライズされた Web サイトは、特定の言語での検索において検索エンジンでのランクが向上する傾向があります。ブログのトラフィックとさまざまな市場でのオンラインでの認知度を高めることができます。
多言語Laravelローカリゼーションの要件
Laravelで多言語ローカリゼーションを実装する際には、考慮すべき要件と手順がいくつかあります。
- 最新のローカリゼーション機能を入手するには、 Laravelの最新バージョン (バージョン 10.x など) を使用していることを確認してください。
- PHP とLaravelフレームワークの基本を理解していると、実装プロセスに役立ちます。
- Web サーバーやデータベースなど、 Laravelサポートするローカル開発環境またはサーバーをセットアップします。
- アプリケーションがサポートする言語を最初から決定します。
簡単なLaravel翻訳
Laravelアプリケーションまたは Web を翻訳する前に満たす必要がある要件を理解した後、 Laravel簡単に翻訳するためのいくつかの手順を示します。
これを行うには、ローカライズするビュー ファイル (resources/views/welcome.blade.php など) を開きます。次に、body タグを次のコードに置き換えます。
Welcome to Linguise website!
ご覧のとおり、上記のテキストは現在コードに直接書き込まれています。 Web サイトを別の言語に翻訳する(国際化)ことが困難になります
上記のテキストをより柔軟にして、さまざまな言語に簡単に適応できるようにします。 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',
キーの上の説明は明確である必要があります。要約すると、ロケール キーはアプリケーションのデフォルトのロケールを保持します (コード内で他のロケールが指定されていない場合)。 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 つの方法が使用されます。
古い方法では、ファイルは resource/lang/{en,fr,it}/{myfile.php} の構造に保存されます。新しい方法では、resources/lang/{fr.json, it.json} などの JSON ファイルを使用します。この記事では新しい方法に焦点を当てますが、変換キーの名前とアクセス方法の違いを除けば、原則は古い方法でも同様です。
地域によって異なる言語の場合は、ISO 15897 標準に従って言語ディレクトリまたはファイルに名前を付ける必要があります。たとえば、イギリス英語には、en-gb ではなく en_GB という名前が付けられます。
一般情報
Laravelでは、多くのフレームワークと同様に、さまざまな言語の翻訳が別のファイルに保存されます。 Laravel翻訳ファイルを整理するには、主に 2 つの方法があります。
- 従来のアプローチでは、ファイルをパス resource/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 ファイルのデフォルト メッセージ ({{ __(' Linguise Web サイトへようこそ!') }}) を一貫して参照しています。 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 パラメーターを取得し、それに基づいて現在のロケールを設定します (要求されたロケールがサポートされている場合)。
これで、Web サイトにアクセスし、サポートされている言語のいずれかを 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.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のローカライズされた日付
日付と時刻の処理は、ローカリゼーション プロセスにおいて非常に重要です。 LaravelCarbon を使用して日付と時刻を管理します。 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プログラム コードを深く理解する必要があります。
このため、アプリケーションをローカライズしたい初心者ユーザーにとっては確かに困難になる可能性があります。したがって、高速翻訳が可能で、ローカリゼーションをサポートし、実装に必要な手順が簡単な、より革新的なソリューションが必要です。
有望なソリューションの 1 つはLinguiseです。 Linguise深いコーディング知識を必要とせずに、 Laravelローカリゼーションへのより簡単で効率的なアプローチを提供します。 Linguiseの主な機能は次のとおりです。
- Laravelとの簡単な統合
- コーディングなしで言語スイッチャーをカスタマイズ
- 画像翻訳
- ローカルコンテキストに合わせて翻訳をカスタマイズするライブエディター
- 動的に生成されたコンテンツの動的翻訳
- 多言語バージョンの SEO 最適化
Laravel Web サイトにLinguiseインストールする手順も簡単に実行できます。ここで簡単に説明します。
- Linguiseアカウントを作成します (30 日間の無料トライアルを無料で使用します)
- Laravel Web ドメインを登録し、いくつかの情報を入力します。 APIキーを取得します。
- 取得したLaravelフォルダーにLinguise翻訳スクリプトをアップロードして接続します。
- htaccess ファイルに言語 URL を設定します。
- 言語スイッチャー スクリプトを HTML の先頭に挿入します。
- 必要に応じて言語スイッチャーをカスタマイズします
- 言語スイッチャーがLaravel Web 上に表示され、コンテンツを自動的に翻訳できます。
どうやって? Linguise使用すると、登録してアクティブ化するだけで、言語スイッチャーが表示されます。その後は、ライブ エディターを使用してローカライズしたり、メディアや画像などを翻訳したりすることができます。
結論
Laravelローカリゼーションは、開発者が多言語の Web サイトやアプリケーションを作成できるようにする強力な機能です。これまで見てきたように、組み込みのLaravelローカリゼーション プロセスには複数のステップが含まれており、フレームワークをよく理解する必要があります。初心者や、より迅速な解決策を探している人にとっては、難しいかもしれません。
Linguiseのようなツールは、より合理化されたアプローチを求める人にとって革新的な代替手段を提供します。これらのソリューションは、迅速な翻訳機能、簡単な統合、カスタマイズ可能な言語スイッチャーや画像翻訳などのユーザーフレンドリーな機能を提供します。さあ、 Linguiseアカウントを作成して Laravelローカライズする機能をお楽しみください。