LangService.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\common\service;
  4. /**
  5. * 多语言
  6. */
  7. class LangService extends BaseService{
  8. /**
  9. * 当前语言包文件
  10. * @var string
  11. */
  12. private $lang;
  13. protected function init()
  14. {
  15. }
  16. public function get(string $name = null, array $vars = [])
  17. {
  18. if(!isset($this->lang[$name])) {
  19. $keys=array_keys($vars);
  20. foreach ($keys as &$k){
  21. $k='%'.$k;
  22. }
  23. return str_replace($keys,array_values($vars),$name);
  24. }
  25. $r=$this->lang[$name];
  26. $keys=array_keys($vars);
  27. foreach ($keys as &$k){
  28. $k='%'.$k;
  29. }
  30. return str_replace($keys,array_values($vars),$r);
  31. }
  32. public function load(string $language)
  33. {
  34. if($this->lang){
  35. return;
  36. }
  37. $modulename=app('http')->getName();
  38. $controllername = 'app\\'.$modulename.'\\controller\\'.str_replace('.','\\',request()->controller());
  39. $langFile = app()->getBasePath().$modulename.DS.'lang'.DS.$language.'.php';
  40. if(!is_file($langFile)){
  41. throw new \Exception('语言包文件不存在:'.$langFile);
  42. }
  43. $lang=include $langFile;
  44. $arr=isset($lang['default'])?$lang['default']:[];
  45. foreach ($lang['controller'] as $key=>$val){
  46. if($controllername==$key){
  47. $arr=array_merge($arr,$val);
  48. }
  49. }
  50. $this->lang=$arr;
  51. }
  52. public function all()
  53. {
  54. return $this->lang;
  55. }
  56. }