Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah php menggunakan komponen Terjemahan Symfony untuk sokongan berbilang bahasa?

Bagaimanakah php menggunakan komponen Terjemahan Symfony untuk sokongan berbilang bahasa?

WBOY
WBOYasal
2024-03-27 08:12:04662semak imbas

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

Komponen Terjemahan Symfony ialah alat berkuasa yang boleh digunakan untuk memudahkan pembangunan tapak berbilang bahasa. Dalam artikel ini, kami akan memperkenalkan cara menggunakan komponen PHP dan Symfony Translation untuk melaksanakan tapak web berbilang bahasa.

Apakah komponen Terjemahan Symfony?

Komponen Terjemahan Symfony ialah sebahagian daripada rangka kerja Symfony dan digunakan untuk memudahkan pembangunan tapak berbilang bahasa. Ia menyediakan cara yang mudah dan fleksibel untuk menyetempatkan dan menterjemah sumber. Anda boleh menggunakannya dalam projek peribadi atau profesional.

Bagaimana untuk menggunakan komponen Terjemahan Symfony untuk mencapai sokongan berbilang bahasa?

Untuk menggunakan komponen Terjemahan Symfony, anda perlu mencipta fail terjemahan. Ini biasanya fail YAML yang menyenaraikan fail yang akan diterjemahkan dan terjemahan yang sepadan. Katakan anda sedang mencipta tapak dalam bahasa Inggeris dan Cina, dan anda ingin menterjemah semua medan teks ke dalam kedua-dua bahasa. Anda boleh membuat fail seperti berikut.

Langkah pertama: Buat fail terjemahan

1 Buat direktori src/terjemahan untuk menyimpan fail.

2. Cipta dua fail: messages.en.yaml (Bahasa Inggeris) dan messages.zh.yaml (Bahasa Cina).

3. Tambahkan terjemahan dalam setiap fail seperti berikut:

messages.en.yaml:

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

messages.zh.yaml:

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

Langkah 2: Gunakan komponen terjemahan dalam projek Symfony

Komponen Terjemahan Symfony, anda perlu menambahkannya dalam projek Symfony anda. Dengan mengandaikan bahawa anda telah mencipta projek Symfony dan memasang komponen Terjemahan Symfony, anda perlu memanggilnya dalam pengawal atau templat untuk melaksanakan sokongan berbilang bahasa. Di sini saya akan menunjukkan cara melaksanakannya dalam pengawal.

1. Tambahkan ruang nama yang diperlukan

use SymfonyComponentTranslationTranslatorInterface;
use SymfonyComponentHttpFoundationResponse;

2 Buat pengawal

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 Panggil komponen Symfony Translation dalam pengawal

Dalam contoh ini, kami menggunakan mekanisme suntikan perkhidmatan automatik Symfony atau gunakan suntikan pembina. Dalam kaedah pengawal, kami membuat instantiate penterjemah dan menggunakan kaedah trans untuk mendapatkan terjemahan yang sepadan. Dalam contoh ini, kami memanggil kaedah trans untuk mendapatkan kandungan terjemahan teks alu-aluan, perihal dan hubungan daripada fail messages.en.yaml atau messages.zh.yaml.

4. Ikat pengawal dalam laluan

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

Dalam laluan di atas, kami menggunakan {_locale} untuk mewakili tetapan bahasa tapak web. Ia adalah parameter yang mengenal pasti bahasa yang dituturkan oleh pengguna. Contohnya, jika pengguna berbahasa Inggeris, anda boleh menghantar "en" kepada pembolehubah _locale supaya penterjemah boleh mencari terjemahan dalam fail messages.en.yaml.

Akhir sekali, tambahkan konfigurasi dalam fail config/packages/translations.yaml untuk menentukan bahasa yang disokong.

# 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'

Ini adalah proses menggunakan komponen Terjemahan Symfony untuk mencapai sokongan berbilang bahasa. Anda boleh mengikuti langkah di atas untuk membuat tapak berbilang bahasa yang anda inginkan. Pendekatan ini merentas platform dan menyokong semua bahasa dan wilayah utama.

Atas ialah kandungan terperinci Bagaimanakah php menggunakan komponen Terjemahan Symfony untuk sokongan berbilang bahasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn