Sokongan berbilang bahasa
Aplikasi ini melibatkan sokongan antarabangsa, kemudian anda boleh menentukan fail pek bahasa yang berkaitan
Buka dan muatkan pek bahasa
Sistem lalai akan memuatkan pek bahasa lalai, tetapi jika anda memerlukan pengesanan automatik dan penukaran automatik berbilang bahasa, Anda perlu menambah definisi middleware dalam fail definisi middleware global:
'think\middleware\LoadLangPack',
Secara lalai, sistem memuatkan pakej bahasa lalai yang dikonfigurasikan dan tidak mengesan bahasa sistem semasa secara automatik. Tetapan berkaitan berbilang bahasa ditetapkan dalam fail konfigurasi lang.php.
Bahasa lalai ditetapkan oleh parameter konfigurasi default_lang Tetapan lalai sistem ialah:
// 默认语言 'default_lang' => 'zh-cn',
Selepas mendayakan perisian tengah, sistem akan secara automatik mengesan dan bertukar antara berbilang bahasa secara automatik dalam fail konfigurasi:
// 自动侦测的GET变量名 'detect_var' => 'lang',
Selepas menghidupkan pengesanan automatik, mula-mula ia akan menyemak sama ada URL atau kuki yang diminta mengandungi pembolehubah bahasa, dan kemudian secara automatik mengenal pasti bahasa semasa (dan memuatkan pek bahasa yang sepadan) berdasarkan HTTP_ACCEPT_LANGUAGE.
Jika anda ingin menetapkan senarai bahasa yang dibenarkan apabila mengesan bahasa secara automatik, dan bahasa yang tiada dalam senarai masih akan menggunakan bahasa lalai, anda boleh mengkonfigurasi:
// 设置允许的语言 'allow_lang_list' => ['zh-cn', 'en-us']
Jika anda ingin menggunakan kuki untuk simpan bahasa, anda boleh tetapkan
// 使用Cookie保存 'use_cookie' => true, // Cookie保存变量 'cookie_var' => 'think_lang',
Selepas tetapan, Bahasa yang dikesan secara automatik akan direkodkan melalui Cookie, dan bahasa akan ditentukan terus melalui Cookie pada masa akan datang.
Definisi pembolehubah bahasa
Takrifan pembolehubah bahasa hanya perlu ditulis sebagai:
Lang::get('add user error'); // 使用系统封装的助手函数 lang('add user error');
di mana berbilang bahasa perlu digunakan dengan kata lain, maklumat rentetan harus ditukar kepada Lang::get kaedah untuk mewakilinya.
Takrifan bahasa biasanya diterangkan dalam bahasa Inggeris.
Definisi fail bahasa
Fail bahasa aplikasi yang dimuatkan secara automatik terletak di:
// 单应用模式 app\lang\当前语言.php // 多应用模式 app\应用\lang\当前语言.php
Jika anda perlu memuatkan pakej bahasa lain, anda boleh menetapkannya melalui extend_list, contohnya:
'extend_list' => [ 'zh-cn' => [ app()->getBasePath() . 'lang\zh-cn\app.php', app()->getBasePath() . 'lang\zh-cn\core.php', ], ]
Pada masa ini, rangka kerja teras sahaja mempunyai pakej bahasa zh-cn terbina dalam, jika anda memerlukan gesaan dalam bahasa lain, anda boleh memuatkannya sendiri dengan memanjangkan pek bahasa.
Takrifan fail bahasa ThinkPHP menggunakan kaedah tatasusunan kembali:
return [ 'hello thinkphp' => '欢迎使用ThinkPHP', 'data type error' => '数据类型错误', ];
Biasanya berbilang bahasa digunakan dalam pengawal, tetapi fungsi pengesahan automatik kelas model akan menggunakan maklumat segera.
Jika anda menggunakan fungsi berbilang bahasa (dengan mengandaikan bahawa kami telah mentakrifkan 'lang_var'=>'Tajuk mesti!' dalam pakej bahasa semasa), anda boleh menggunakan rentetan berikut untuk menggantikan mesej ralat asal.
{%lang_var}
Jika anda ingin mengeluarkan pembolehubah bahasa dalam templat tanpa memberikan nilai dalam pengawal, anda boleh terus menggunakan teg khas enjin templat untuk terus mengeluarkan nilai definisi bahasa:
{$Think.lang.lang_var}
Anda boleh mengeluarkan bahasa lang_var definisi yang ditakrifkan dalam pakej bahasa semasa.
Sokongan hantaran pembolehubah
Menyokong lulus dalam pembolehubah semasa mentakrifkan pakej bahasa Terdapat dua cara
Gunakan kaedah pengikatan yang dinamakan, contohnya:
'file_format' => '文件格式: {:format},文件大小:{:size}',
Pas dalam nilai pembolehubah dalam templat rentetan bahasa. Itu sahaja:
{:lang('file_format',['format' => 'jpeg,png,gif,jpg','size' => '2MB'])}
Kaedah kedua ialah menggunakan rentetan format Jika anda perlu menggunakan alat terjemahan pihak ketiga, adalah disyorkan untuk menggunakan kaedah ini untuk menentukan pembolehubah.
'file_format' => '文件格式: %s,文件大小:%d',
Cara mengeluarkan berbilang bahasa dalam templat telah ditukar kepada:
{:lang('file_format',['jpeg,png,gif,jpg','2MB'])}
Pengumpulan bahasa
Mula-mula anda perlu mendayakan pengumpulan bahasa dalam fail konfigurasi lang.php,
// 开启多语言分组 'allow_group' => true
Kemudian anda boleh menggunakan definisi pengelompokan apabila mentakrifkan berbilang bahasa
return [ 'user' => [ 'welcome' => '欢迎回来', 'login' => '用户登录', 'logout' => '用户登出', ] ];
Kemudian gunakan kaedah berikut untuk mendapatkan pembolehubah berbilang bahasa
Lang::get('user.login'); lang('user.login');