Rumah > Artikel > rangka kerja php > Pengantarabangsaan dan penyetempatan di Laravel: menyesuaikan diri dengan keperluan bahasa dan wilayah yang berbeza
Pengantarabangsaan dan penyetempatan di Laravel: Menyesuaikan diri dengan keperluan bahasa dan wilayah yang berbeza
Pengenalan:
Dalam era globalisasi sekarang, semakin banyak aplikasi perlu dapat menyesuaikan diri dengan keperluan bahasa yang berbeza dan wilayah. Laravel, sebagai rangka kerja PHP yang popular, menyediakan fungsi yang kaya untuk menyokong pengantarabangsaan dan penyetempatan aplikasi. Artikel ini akan memperkenalkan cara melaksanakan pengantarabangsaan dan penyetempatan dalam Laravel dan memberikan contoh kod yang berkaitan.
1. Apakah pengantarabangsaan dan penyetempatan
Pengantarabangsaan merujuk kepada mereka bentuk aplikasi untuk menyesuaikan diri dengan bahasa dan tabiat budaya yang berbeza merujuk kepada menyesuaikan aplikasi dengan sewajarnya mengikut kawasan atau negara yang berbeza untuk memenuhi keperluan pengguna tempatan.
2. Fail bahasa dalam Laravel
Dalam Laravel, kami boleh menggunakan fail bahasa untuk mencapai pengantarabangsaan dan penyetempatan. Fail bahasa disimpan dalam direktori resources/lang
dan setiap bahasa mempunyai direktori yang sepadan. Contohnya, direktori en
menyimpan fail bahasa Inggeris dan direktori zh-CN
menyimpan fail bahasa Cina. resources/lang
目录下,每个语言有一个对应的目录。例如,en
目录存放英文语言文件,zh-CN
目录存放中文语言文件。
首先,我们需要创建一个语言文件,可以通过运行以下命令来生成:
php artisan make:lang zh-CN
这将在resources/lang
目录下生成一个zh-CN
目录,并在该目录下生成一个messages.php
文件。
打开resources/lang/zh-CN/messages.php
,我们可以定义一些语言键值对,例如:
return [ 'welcome' => '欢迎', 'about' => '关于我们', // ... ];
我们可以在应用中通过trans()
函数来获取对应的语言值,例如:
echo trans('messages.welcome'); // 输出:欢迎
三、设置应用的语言
打开config/app.php
文件,可以找到locale
配置项。我们可以将其值设置为相应的语言代码,例如'locale' => 'zh-CN'
。
我们可以创建一个中间件来设置应用的语言。首先,可以使用Artisan命令创建一个中间件:
php artisan make:middleware SetLocale
然后,打开生成的SetLocale
中间件的handle
方法,添加以下代码:
public function handle($request, Closure $next) { // 获取用户的首选语言 $locale = $request->getPreferredLanguage(['en', 'zh-CN']); // 设置应用的语言 app()->setLocale($locale); return $next($request); }
接下来,打开app/Http/Kernel.php
文件,将生成的中间件添加到中间件组中:
protected $middlewareGroups = [ // ... 'web' => [ // ... AppHttpMiddlewareSetLocale::class, ], // ... ];
现在,每次用户访问应用时,中间件将根据用户的首选语言设置应用的语言。
四、根据语言文件显示内容
在视图文件中,我们可以使用trans()
函数来根据语言文件显示内容。例如,我们可以在resources/views/welcome.blade.php
文件中添加以下代码:
<h1>{{ trans('messages.welcome') }}</h1> <p>{{ trans('messages.about') }}</p>
当应用的语言设置为zh-CN
时,用户访问/
路径将看到"欢迎"和"关于我们"的内容。
五、动态替换参数
有时,我们需要根据用户的输入或其他动态变量来显示内容。在语言文件中,我们可以使用:
符号来指定参数,例如:
return [ 'welcome' => '欢迎,:name', ];
然后,我们可以在视图或控制器中使用trans()
函数的第二个参数来替换参数的值,例如:
echo trans('messages.welcome', ['name' => '王小明']); // 输出:欢迎,王小明
使用动态参数可以实现更灵活的语言输出。
六、语言选择功能
有时,我们需要在应用中提供语言选择的功能,让用户自由切换应用的语言。在Laravel中,可以使用URL::to()
方法来生成包含语言参数的URL。
首先,我们可以在routes/web.php
Route::get('/lang/{locale}', function ($locale) { // 设置应用的语言 App::setLocale($locale); // 生成包含语言参数的URL $url = URL::to('/'); // 重定向到指定语言的路径 return redirect($url); });Ini akan berada dalam
zh-CN
dijana di bawah direktori kod> dan fail messages.php
dijana dalam direktori ini.
resources/lang/zh-CN/messages.php
, kami boleh menentukan beberapa kunci bahasa Pasangan nilai, contohnya: <a href="{{ url('lang/en') }}">English</a> <a href="{{ url('lang/zh-CN') }}">中文</a>Kita boleh menggunakan fungsi
trans()
dalam aplikasi untuk mendapatkan nilai bahasa yang sepadan, contohnya: rrreee
3. Tetapkan bahasa aplikasiconfig/app.php
dan anda boleh menemui item konfigurasi locale
. Kita boleh menetapkan nilainya kepada kod bahasa yang sepadan, seperti 'locale' => 'zh-CN'
. 🎜handle
bagi middleware SetLocale
yang dihasilkan dan tambahkan kod berikut: 🎜rrreee🎜 Seterusnya, Buka fail app/Http/Kernel.php
dan tambahkan middleware yang dijana pada kumpulan middleware: 🎜rrreee🎜Kini, setiap kali pengguna mengakses aplikasi, middleware akan ditetapkan mengikut bahasa pilihan pengguna Bahasa aplikasi. 🎜🎜4. Paparkan kandungan berdasarkan fail bahasa🎜🎜Dalam fail paparan, kita boleh menggunakan fungsi trans()
untuk memaparkan kandungan berdasarkan fail bahasa. Sebagai contoh, kita boleh menambah kod berikut dalam fail resources/views/welcome.blade.php
: 🎜rrreee🎜Apabila bahasa aplikasi ditetapkan kepada zh-CN
, pengguna mengakses Laluan /
akan melihat kandungan "Selamat Datang" dan "Perihal Kami". 🎜🎜5. Penggantian dinamik parameter🎜🎜Kadangkala, kita perlu memaparkan kandungan berdasarkan input pengguna atau pembolehubah dinamik yang lain. Dalam fail bahasa, kita boleh menggunakan simbol :
untuk menentukan parameter, contohnya: 🎜rrreee🎜 Kemudian, kita boleh menggunakan fungsi trans()
dalam paparan atau pengawal Dua parameter untuk menggantikan nilai parameter, contohnya: 🎜rrreee🎜Menggunakan parameter dinamik boleh mencapai output bahasa yang lebih fleksibel. 🎜🎜6. Fungsi pemilihan bahasa 🎜🎜 Kadangkala, kita perlu menyediakan fungsi pemilihan bahasa dalam aplikasi untuk membolehkan pengguna menukar bahasa aplikasi secara bebas. Dalam Laravel, anda boleh menggunakan kaedah URL::to()
untuk menjana URL yang mengandungi parameter bahasa. 🎜🎜Pertama, kita boleh menentukan laluan dalam fail routes/web.php
: 🎜rrreee🎜Kemudian, tambahkan pautan pemilihan bahasa dalam fail paparan, contohnya: 🎜rrreee🎜Pengguna mengklik sepadan Apabila dipautkan, apl akan mengubah hala ke laluan untuk bahasa yang sepadan. 🎜🎜Kesimpulan: 🎜🎜Dengan menggunakan fungsi pengantarabangsaan dan penyetempatan yang disediakan oleh Laravel, kami boleh menyesuaikan aplikasi dengan mudah kepada keperluan bahasa dan wilayah yang berbeza. Artikel ini memperkenalkan cara menggunakan fail bahasa, menetapkan bahasa aplikasi, menggantikan parameter dan teknologi lain secara dinamik. Saya harap ia akan membantu anda untuk mencapai pengantarabangsaan dan penyetempatan dalam aplikasi Laravel. 🎜🎜Di atas ialah kandungan yang berkaitan tentang pelaksanaan pengantarabangsaan dan penyetempatan di Laravel, saya harap ia akan membantu anda. 🎜Atas ialah kandungan terperinci Pengantarabangsaan dan penyetempatan di Laravel: menyesuaikan diri dengan keperluan bahasa dan wilayah yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!