多言語翻訳操作に ThinkPHP6 を使用するにはどうすればよいですか?

王林
リリース: 2023-06-12 08:49:40
オリジナル
1120 人が閲覧しました

グローバリゼーションの進展に伴い、多言語サポートを必要とする Web サイトやアプリケーションがますます増えています。 ThinkPHP6 フレームワークを使用する開発者にとって、多言語翻訳操作を実装する方法は重要な要件です。この記事では、ThinkPHP6 を使用して多言語翻訳作業を行う方法を紹介します。

  1. 言語パッケージの構成

ThinkPHP6 では、言語パッケージはキーと値のペアを含む配列です。これは、app/lang/ ディレクトリの下のさまざまなサブディレクトリに保存できます。例:

/app/lang/zh-cn/
/app/lang/en-us/
ログイン後にコピー

このうち、zh-cn と en-us は言語パッケージの名前であり、言語バージョンの翻訳は対応するディレクトリに保存される必要があります。言語パック ディレクトリには、通常、アプリケーションの翻訳とフォーム検証にそれぞれ対応する app.php または validation.php ファイルがあります。

例:

/app/lang/zh-cn/app.php
/app/lang/en-us/app.php
ログイン後にコピー

これらの 2 つのファイルでは、アプリケーション内のテキストを翻訳するためにいくつかのキーと値のペアが定義されます。たとえば、単純な app.php ファイルは次のようになります。

<?php
return [
    'welcome' => '欢迎',
    'login' => '登录',
    'logout' => '退出登录',
];
ログイン後にコピー

ここでは 3 つのキーと値のペアが定義されており、アプリケーション内の「ようこそ」、「ログイン」、および「ログアウト」を変換するために使用されます。 。 言葉。英語版の場合は、en-us/app.php ファイルを作成し、上記の中国語翻訳を英語翻訳に置き換えることができます:

<?php
return [
    'welcome' => 'Welcome',
    'login' => 'Log in',
    'logout' => 'Log out',
];
ログイン後にコピー
  1. 言語パックを読む

アプリケーションでは、通常、ユーザーの言語設定に応じて、対応する言語パックを読み取る必要があります。次のコードを使用して、現在の言語設定を取得できます。

$lang = $request->lang();
ログイン後にコピー

ここでは $request オブジェクトの lang() メソッドが使用されており、リクエスト オブジェクトの lang パラメータを取得できます。通常、このパラメータにはユーザーの言語設定が保存されます。例:

http://example.com/?lang=zh-cn
http://example.com/?lang=en-us
ログイン後にコピー

ここで lang パラメータが指定されていない場合、ブラウザの Accept-Language ヘッダーを読み取ることでユーザーの言語設定を推測できます。

次に、lang() 関数を使用して現在の言語パッケージを読み取ることができます。例:

$lang = $request->lang();

app()->setLocale($lang);

$translations = lang('app');
ログイン後にコピー

ここでは app() 関数を使用してアプリケーション オブジェクトを取得し、 setLocale( ) メソッドを使用して現在のロケールを設定します。最後に、lang() 関数を使用して言語パックを読み取ります。これにより、現在のロケールでのすべての翻訳を含む配列が返されます。

  1. 翻訳の使用

言語パックと翻訳配列を使用すると、アプリケーションで翻訳を使用できます。たとえば、テンプレート内のタグを使用して翻訳を取得できます。

<p>{{ __('app.welcome') }}</p>
ログイン後にコピー

ここでは、__ 関数を使用して翻訳を取得します。 __ 関数は、ドット メソッドに従って受信文字列を配列に解析し、翻訳配列から対応する翻訳を見つけます。

対応する翻訳が見つからない場合、__ 関数は元の文字列を返します。したがって、英語の文字列をデフォルト値として __ 関数に渡すことができます。たとえば、次のようになります。

<p>{{ __('app.welcome', ['default' => 'Welcome']) }}</p>
ログイン後にコピー

ここではデフォルトのパラメータが指定されており、その値は 'Welcome' です。 「ようこそ」キーに対応する翻訳が翻訳配列内に見つからない場合、__ 関数はこのデフォルト値を返します。

  1. カスタム翻訳の追加

フォーム検証エラー メッセージなどのカスタム翻訳を追加する必要がある場合があります。次のコードを使用してカスタム翻訳を追加できます。

use thinkacadeLang;

Lang::load([
    'validation.custom' => [
        'email' => [
            'required' => '请填写邮箱地址',
            'email' => '请输入有效的邮箱地址',
        ],
    ],
]);
ログイン後にコピー

ここでは、Lang クラスのload() メソッドを使用してカスタム翻訳を追加します。 load() メソッドは、言語パッケージの構造に従って編成され、カスタム翻訳を追加するために使用される配列をパラメータとして受け入れます。

上記の例では、「email」キーのカスタム翻訳を含む validation.custom 言語パックが追加されます。これらの翻訳は、システムのデフォルトの翻訳をオーバーライドします。

  1. 概要

多言語翻訳操作には ThinkPHP6 を使用すると非常に便利です。言語パックを準備し、言語パックを読んで翻訳を使用するだけです。カスタム翻訳を追加する必要がある場合、それは非常に簡単です。多言語サポートは、アプリケーションの使いやすさを向上させるだけでなく、ユーザーのニーズをより適切に満たし、ユーザー エクスペリエンスを向上させます。

以上が多言語翻訳操作に ThinkPHP6 を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート