Locale.php 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace app\common\middleware;
  3. use think\facade\Lang;
  4. use think\facade\Config;
  5. class Locale
  6. {
  7. public function handle($request, \Closure $next)
  8. {
  9. $locale = $request->header('Accept-Language'); // 从HTTP头获取语言设置
  10. //$config=lang::getConfig();
  11. $config = Config::get('lang');
  12. if ($locale) {
  13. $extLang=$config['extend_list'];
  14. if(!isset($extLang[$locale])){
  15. $lang=$config['default_lang'];
  16. }
  17. $accept_lang=$config['accept_language'];
  18. // 检测替换包
  19. if(isset($accept_lang[$locale])){
  20. $lang=$accept_lang[$locale];
  21. }else{
  22. $lang=$config['default_lang'];
  23. }
  24. // 根据Accept-Language头设置语言
  25. Lang::setLangSet($lang); // 例如 'zh-cn' 或 'en'
  26. } else {
  27. // 如果没有指定语言,可以设置默认语言
  28. Lang::setLangSet($config['default_lang']); // 默认语言设置为中文
  29. }
  30. return $next($request);
  31. }
  32. }