Locale.php 1023 B

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