Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menggunakan ThinkPHP6 untuk operasi terjemahan berbilang bahasa?

Bagaimana untuk menggunakan ThinkPHP6 untuk operasi terjemahan berbilang bahasa?

王林
王林asal
2023-06-12 08:49:401100semak imbas

Dengan perkembangan globalisasi, semakin banyak laman web dan aplikasi perlu menyediakan sokongan berbilang bahasa. Bagi pembangun yang menggunakan rangka kerja ThinkPHP6, cara melaksanakan operasi terjemahan berbilang bahasa adalah keperluan penting. Artikel ini akan memperkenalkan cara menggunakan ThinkPHP6 untuk operasi terjemahan berbilang bahasa.

  1. Mengkonfigurasi pek bahasa

Dalam ThinkPHP6, pek bahasa ialah tatasusunan yang mengandungi pasangan nilai kunci. Ini boleh disimpan dalam pelbagai subdirektori di bawah direktori app/lang/. Contohnya:

/app/lang/zh-cn/
/app/lang/en-us/

Antaranya, zh-cn dan en-us ialah nama pakej bahasa dan terjemahan versi bahasa ini harus disimpan dalam direktori yang sepadan. Dalam direktori pek bahasa, biasanya terdapat fail app.php atau validation.php, yang sepadan dengan terjemahan permohonan dan pengesahan borang masing-masing.

Contohnya:

/app/lang/zh-cn/app.php
/app/lang/en-us/app.php

Dalam kedua-dua fail ini, beberapa pasangan nilai kunci akan ditakrifkan untuk menterjemah teks dalam aplikasi. Contohnya, fail app.php mudah mungkin kelihatan seperti ini:

<?php
return [
    'welcome' => '欢迎',
    'login' => '登录',
    'logout' => '退出登录',
];

Tiga pasangan nilai kunci ditakrifkan di sini, yang digunakan untuk menterjemah "Selamat Datang", "Log Masuk" dan "Log Keluar" dalam aplikasi . Untuk versi bahasa Inggeris, anda boleh mencipta fail en-us/app.php dan menggantikan terjemahan bahasa Cina di atas dengan terjemahan bahasa Inggeris:

<?php
return [
    'welcome' => 'Welcome',
    'login' => 'Log in',
    'logout' => 'Log out',
];
  1. Baca pek bahasa

dalam Dalam aplikasi, biasanya perlu membaca pek bahasa yang sepadan mengikut tetapan bahasa pengguna. Anda boleh menggunakan kod berikut untuk mendapatkan tetapan bahasa semasa:

$lang = $request->lang();

Kaedah lang() bagi objek $request digunakan di sini, yang boleh mendapatkan parameter lang dalam objek permintaan. Biasanya parameter ini akan menyimpan tetapan bahasa pengguna, contohnya:

http://example.com/?lang=zh-cn
http://example.com/?lang=en-us

Jika parameter lang tidak dinyatakan di sini, tetapan bahasa pengguna boleh meneka dengan membaca pengepala Accept-Language penyemak imbas.

Seterusnya, anda boleh menggunakan fungsi lang() untuk membaca pek bahasa semasa, contohnya:

$lang = $request->lang();

app()->setLocale($lang);

$translations = lang('app');

Di sini fungsi app() digunakan untuk mendapatkan objek aplikasi, dan kemudian melalui kaedah setLocale( ) untuk menetapkan tempat semasa. Akhir sekali, gunakan fungsi lang() untuk membaca pek bahasa, yang mengembalikan tatasusunan yang mengandungi semua terjemahan dalam tempat semasa.

  1. Menggunakan terjemahan

Dengan pek bahasa dan tatasusunan terjemahan, anda boleh menggunakan terjemahan dalam aplikasi anda. Contohnya, anda boleh menggunakan teg dalam templat untuk mendapatkan terjemahan:

<p>{{ __('app.welcome') }}</p>

Fungsi __ digunakan di sini untuk mendapatkan terjemahan. Fungsi __ akan menghuraikan rentetan masuk ke dalam tatasusunan mengikut kaedah titik, dan kemudian mencari terjemahan yang sepadan daripada tatasusunan terjemahan.

Jika tiada terjemahan yang sepadan ditemui, fungsi __ akan mengembalikan rentetan asal. Oleh itu, anda boleh menghantar rentetan bahasa Inggeris ke dalam fungsi __ sebagai nilai lalai, contohnya:

<p>{{ __('app.welcome', ['default' => 'Welcome']) }}</p>

Parameter lalai ditentukan di sini dan nilainya ialah 'Selamat Datang'. Jika terjemahan yang sepadan dengan kunci 'selamat datang' tidak ditemui dalam tatasusunan terjemahan, fungsi __ akan mengembalikan nilai lalai ini.

  1. Tambah terjemahan tersuai

Kadangkala anda perlu menambah beberapa terjemahan tersuai, seperti mesej ralat pengesahan borang. Anda boleh menggunakan kod berikut untuk menambah terjemahan tersuai:

use thinkacadeLang;

Lang::load([
    'validation.custom' => [
        'email' => [
            'required' => '请填写邮箱地址',
            'email' => '请输入有效的邮箱地址',
        ],
    ],
]);

Di sini kaedah load() kelas Lang digunakan untuk menambah terjemahan tersuai. Kaedah load() menerima tatasusunan sebagai parameter, yang disusun mengikut struktur pakej bahasa dan digunakan untuk menambah terjemahan tersuai.

Dalam contoh di atas, pek validation.custom language ditambah, yang mengandungi terjemahan tersuai untuk kunci 'e-mel'. Terjemahan ini akan mengatasi terjemahan lalai sistem.

  1. Ringkasan

Menggunakan ThinkPHP6 untuk operasi terjemahan berbilang bahasa adalah sangat mudah. Hanya sediakan pek bahasa, kemudian baca pek bahasa dan gunakan terjemahan. Jika anda perlu menambah terjemahan tersuai, ia sangat mudah. Sokongan berbilang bahasa bukan sahaja meningkatkan kebolehgunaan aplikasi, tetapi juga memenuhi keperluan pengguna dengan lebih baik dan meningkatkan pengalaman pengguna.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan ThinkPHP6 untuk operasi terjemahan 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