ホームページ >バックエンド開発 >PHPチュートリアル >PHP は多言語サポートのために Symfony Translation コンポーネントをどのように使用しますか?

PHP は多言語サポートのために Symfony Translation コンポーネントをどのように使用しますか?

WBOY
WBOYオリジナル
2024-03-27 08:12:04676ブラウズ

php如何使用Symfony Translation组件进行多语言支持?

Symfony Translation コンポーネントは、多言語サイトの開発を簡素化するために使用できる強力なツールです。この記事では、PHP と Symfony Translation コンポーネントを使用して多言語 Web サイトを実装する方法を紹介します。

Symfony 翻訳コンポーネントとは何ですか?

Symfony Translation コンポーネントは Symfony フレームワークの一部であり、多言語サイトの開発を簡素化するために使用されます。これは、リソースをローカライズして翻訳するためのシンプルかつ柔軟な方法を提供します。個人または専門的なプロジェクトで使用できます。

Symfony Translation コンポーネントを使用して多言語サポートを実現するにはどうすればよいですか?

Symfony Translation コンポーネントを使用するには、翻訳ファイルを作成する必要があります。これは通常、翻訳対象のファイルと対応する翻訳をリストした YAML ファイルです。英語と中国語でサイトを作成しており、すべてのテキスト フィールドを両方の言語に翻訳したいとします。次のようにファイルを作成できます。

ステップ 1: 翻訳ファイルの作成

1. ファイルを保存するための src/translations ディレクトリを作成します。

2.messages.en.yaml (英語) とmessages.zh.yaml (中国語) の 2 つのファイルを作成します。

3. 次のように各ファイルに翻訳を追加します:

messages.en.yaml:

welcome: Welcome to our website!
about: About us
contact: Contact us

messages.zh.yaml:

welcome: 欢迎来到我们的网站!
about: 关于我们
contact: 联系我们

ステップ 2 : Symfony プロジェクトで Translation コンポーネントを使用する

Symfony Translation コンポーネントを使用するには、それを Symfony プロジェクトに追加する必要があります。 Symfony プロジェクトを作成し、Symfony Translation コンポーネントをインストールしたと仮定すると、それをコントローラーまたはテンプレートで呼び出して、多言語サポートを実装する必要があります。ここでは、コントローラーに実装する方法を説明します。

1. 必要な名前空間を追加します

use SymfonyComponentTranslationTranslatorInterface;
use SymfonyComponentHttpFoundationResponse;

2. コントローラーを作成します

public function index(TranslatorInterface $translator)
{
    $welcome = $translator->trans('welcome');
    $about = $translator->trans('about');
    $contact = $translator->trans('contact');

    return new Response(
        '<html><body>'.$welcome.' '.$about.' '.$contact.'</body></html>'
    );
}

3. コントローラーで Symfony Translation コンポーネントを呼び出します

ここでたとえば、Symfony の自動サービス インジェクション メカニズムを使用しており、アノテーションを通じて依存サービスを追加したり、コンストラクター インジェクションを使用したりできます。コントローラー メソッドでは、トランスレーターをインスタンス化し、trans メソッドを使用して対応する翻訳を取得します。この例では、trans メソッドを呼び出して、messages.en.yaml またはmessages.zh.yaml ファイルからようこそ、概要、連絡先テキストの翻訳されたコンテンツを取得します。

4. ルーティングでコントローラーをバインドする

index:
    path: /{_locale}
    controller: AppControllerDefaultController::index
    requirements:
        _locale: '%app_locales%'

上記のルーティングでは、Web サイトの言語設定を表すために {_locale} を使用します。これは、ユーザーが話す言語を識別するパラメータです。たとえば、ユーザーが英語を話す場合、_locale 変数に「en」を渡すと、翻訳者がmessages.en.yaml ファイルで翻訳を検索できるようになります。

最後に、config/packages/translations.yaml ファイルに構成を追加して、サポートされる言語を指定します。

# config/packages/translations.yaml
framework:
    default_locale: '%locale%'  # 站点默认语言
    translator:
        default_path: '%kernel.project_dir%/translations'
        fallbacks:
          - '%locale%'
        paths:
          - '%kernel.project_dir%/tests/translations'
          - '%kernel.project_dir%/vendor/symfony/form/Resources/translations'
          - '%kernel.project_dir%/vendor/symfony/security-bundle/Resources/translations'
          - '%kernel.project_dir%/src/MyBundle/Resources/translations'
        loaders:
          xlf: 'SymfonyComponentTranslationLoaderXliffFileLoader'
          yaml: 'SymfonyComponentTranslationLoaderYamlFileLoader'

これは、Symfony Translation コンポーネントを使用して多言語サポートを実現するプロセスです。上記の手順に従って、必要な多言語サイトを作成できます。このアプローチはクロスプラットフォームであり、すべての主要な言語と地域をサポートしています。

以上がPHP は多言語サポートのために Symfony Translation コンポーネントをどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。