ThinkPHP6 is an excellent PHP development framework, which provides very good code management and scalability. In actual development, with the trend of globalization, more and more websites need to provide multi-language support. So how to implement a multi-language website in ThinkPHP6? This article will explain it from the following four aspects.
1. Define multilingual variables in the configuration file
In ThinkPHP6, it is highly recommended to define multilingual variables through the configuration file. First we need to create a lang.php
file in the config
directory, and then define a multi-language array in it, for example:
<?php return [ 'welcome' => '欢迎', 'hello' => '你好', 'bye' => '再见', ... ];
Then pass # in the controller ##lang Helper function to obtain these multi-language variables, for example:
echo lang('welcome');
lang.php file The corresponding multilingual variable value in .
Language.php middleware file in the
app/middleware directory. The code is as follows:
<?php namespace appmiddleware; use thinkacadeSession; use thinkRequest; class Language { public function handle(Request $request, Closure $next) { $lang = $request->param('lang'); if(!in_array($lang, ['zh-cn', 'en-us'])){ $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; } Session::set('lang', $lang); return $next($request); } }
app/middleware.php and use it in a controller that needs to support multiple languages, for example:
<?php namespace appcontroller; use thinkacadeSession; class Index { public function index() { $lang = Session::get('lang'); return lang('welcome'); } }
Route::get(':lang/index', 'index/index'); Route::get(':lang/about', 'index/about');
https://example.com/zh-cn/index and
https://example.com /zh-cn/about will enter the corresponding controller, and the front desk does not need to pass the language parameters separately.
{: lang('welcome') }
{lang name="welcome"}
The above is the detailed content of How to implement a multi-language website in ThinkPHP6?. For more information, please follow other related articles on the PHP Chinese website!