Laravel - ローカライズ:ビギナーズガイド

こんにちは、将来の開発者たち!今日は、Laravelのローカライズの世界に興味深い旅に出かけます。プログラミングが初めてであっても心配しないでください。私はあなたの親切なガイドとして、すべてをステップバイステップで説明します。このチュートリアルの終わりまでに、あなたはLaravelアプリケーションを複数の言語で話させることができるようになるでしょう!始めましょう!

Laravel - Localization

ローカライズとは?

コードに進む前に、ローカライズとは何かを理解しましょう。素晴らしいウェブサイトを作成したとしましょうが、すべてのユーザーが同じ言語を話すわけではありません。ユーザーの好みに基づいて自動的に言語を切り替えるサイトがあれば素晴らしいですね。それがまさにローカライズです!

ローカライズは、アプリケーションを異なる言語や地域に適応させるプロセスです。アプリに多言語を教えるようなものです。

ローカライズの重要性

ちょっとした話を共有しましょう。数年前、私の生徒の一人が素晴らしいECサイトを作成しました。完璧なサイトでしたが、英語だけで作られていました。スペイン語を話す市場に進出しようとしたとき、ほぼすべてを再構築する必要があることに気づきました!もしそれが最初からローカライズされていたら、もっと簡単だったでしょう。

ローカライズは以下のような利点があります:

  1. グローバルなオーディエンスにリーチ
  2. ユーザーエクスペリエンスを向上
  3. ユーザーエンゲージメントとリテンションを増加

さあ、Laravelがこのプロセスを簡単にする方法を見てみましょう!

Laravelでのローカライズの設定

ステップ1:言語ファイルの作成

まず、言語ファイルを作成します。Laravelはこれを非常に簡単にします!

  1. Laravelプロジェクトのresources/langディレクトリに移動します。
  2. サポートしたい各言語のための新しいフォルダーを作成します。例えば、英語はen、スペイン語はes
  3. 各フォルダー内に、翻訳したい機能に基づいて名付けられたPHPファイルを作成します。まずはmessages.phpから始めましょう。

ディレクトリ構造は以下のようになります:

resources/
lang/
en/
messages.php
es/
messages.php

これらのファイルに翻訳を追加します:

// resources/lang/en/messages.php
return [
'welcome' => 'Welcome to our website!',
'goodbye' => 'Goodbye, see you soon!',
];

// resources/lang/es/messages.php
return [
'welcome' => '¡Bienvenido a nuestro sitio web!',
'goodbye' => '¡Adiós, hasta pronto!',
];

ステップ2:コード内での翻訳の使用

翻訳ができたので、コード内でそれらを使用しましょう。Laravelはいくつかの方法でこれを行うことができます:

メソッド1:__()ヘルパー関数の使用

echo __('messages.welcome');

これは、アプリが英語に設定されている場合「Welcome to our website!」、スペイン語に設定されている場合「¡Bienvenido a nuestro sitio web!」と出力されます。

メソッド2:trans()ヘルパー関数の使用

echo trans('messages.goodbye');

これは__()と同じことをしますが、一部の開発者はこのシンタックスを好むことがあります。

メソッド3:Bladeテンプレート内での@langディレクティブの使用

Bladeテンプレート内では、@langディレクティブを使用できます:

<h1>@lang('messages.welcome')</h1>

これはHTMLテンプレートで特に便利です。

ステップ3:アプリケーションのロケールを変更する

では、Laravelにどの言語を使用するかを伝えるにはどうしたらよいでしょうか?いくつかの方法があります:

メソッド1:デフォルトのロケールを設定する

config/app.phpファイル内でデフォルトのロケールを設定できます:

'locale' => 'en',

メソッド2:ランタイムでロケールを変更する

コード内でロケールを動的に変更できます:

App::setLocale('es');

これは、ユーザーの好みや設定に基づいて言語を変更したいときに便利です。

メソッド3:ミddlewareを使用してロケールを設定する

より高度な制御を行うために、ミddlewareを作成してさまざまな要因に基づいてロケールを設定することができます。以下は簡単な例です:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\App;

class SetLocale
{
public function handle($request, Closure $next)
{
if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}
return $next($request);
}
}

その後、app/Http/Kernel.phpにこのミddlewareを登録します:

protected $middlewareGroups = [
'web' => [
// ... 他のミddleware
\App\Http\Middleware\SetLocale::class,
],
];

高度なローカライズ技術

複数形化

Laravelは複数形化もサポートしています!以下のようにします:

// 言語ファイル内
'apples' => '{0} No apples|{1} One apple|[2,*] :count apples',

// コード内
echo trans_choice('apples', 0); // 出力: No apples
echo trans_choice('apples', 1); // 出力: One apple
echo trans_choice('apples', 5); // 出力: 5 apples

パラメーターのローカライズ

翻訳内にパラメータを使用することもできます:

// 言語ファイル内
'welcome_name' => 'Welcome, :name!',

// コード内
echo __('messages.welcome_name', ['name' => 'John']); // 出力: Welcome, John!

結論

おめでとうございます!あなたはLaravelのローカライズの世界に初めてのステップを踏み出しました。これらのツールを手に入れたことで、ユーザーがどこにいるにせよ、彼ら自身の言語で話すアプリケーションを作成できるようになりました。

忘れないでください、ローカライズ(そしてプログラミング一般)をマスターする鍵は練習です。小さなプロジェクトを作成して、最初からローカライズを実装してみてください。すぐに自然なものになることに驚くでしょう!

ハッピーコーディング、そしてあなたのアプリが多くの言語を話すことを祈っています! ??️?

メソッド 説明
__() 翻訳のためのヘルパー関数 __('messages.welcome')
trans() 別の翻訳のためのヘルパー関数 trans('messages.goodbye')
@lang Bladeディレクティブのための翻訳 @lang('messages.welcome')
App::setLocale() アプリケーションロケールの設定 App::setLocale('es')
trans_choice() 複数形化のための翻訳 trans_choice('apples', 5)

Credits: Image by storyset