瀏覽代碼

【程序目录】优化多语言

吴昊天 3 年之前
父節點
當前提交
ea91cbb123
共有 3 個文件被更改,包括 39 次插入19 次删除
  1. 20 7
      crmeb/app/api/controller/v1/PublicController.php
  2. 2 0
      crmeb/app/api/route/v1.php
  3. 17 12
      crmeb/app/common.php

+ 20 - 7
crmeb/app/api/controller/v1/PublicController.php

@@ -618,14 +618,15 @@ class PublicController
         $request = app()->request;
         $request = app()->request;
         //获取接口传入的语言类型
         //获取接口传入的语言类型
         if (!$range = $request->header('cb-lang')) {
         if (!$range = $request->header('cb-lang')) {
-//            //根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文
-//            if ($request->header('accept-language') !== null) {
-//                $range = explode(',', $request->header('accept-language'))[0];
-//            } else {
-//                $range = 'zh-CN';
-//            }
             //没有传入则使用系统默认语言显示
             //没有传入则使用系统默认语言显示
-            $range = $langTypeServices->value(['is_default'=>1],'file_name');
+            if (!$range = $langTypeServices->value(['is_default' => 1], 'file_name')) {
+                //系统没有设置默认语言的话,根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文
+                if ($request->header('accept-language') !== null) {
+                    $range = explode(',', $request->header('accept-language'))[0];
+                } else {
+                    $range = 'zh-CN';
+                }
+            }
         }
         }
         // 获取type_id
         // 获取type_id
         $typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1;
         $typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1;
@@ -643,6 +644,18 @@ class PublicController
         return app('json')->success([$range => $lang]);
         return app('json')->success([$range => $lang]);
     }
     }
 
 
+    /**
+     * 获取当前后台设置的默认语言类型
+     * @return mixed
+     */
+    public function getDefaultLangType()
+    {
+        /** @var LangTypeServices $langTypeServices */
+        $langTypeServices = app()->make(LangTypeServices::class);
+        $lang_type = $langTypeServices->value(['is_default' => 1], 'file_name');
+        return app('json')->success(compact('lang_type'));
+    }
+
     /**
     /**
      * 获取版本号
      * 获取版本号
      * @return mixed
      * @return mixed

+ 2 - 0
crmeb/app/api/route/v1.php

@@ -386,6 +386,8 @@ Route::group(function () {
     Route::get('get_lang_type_list', 'v1.PublicController/getLangTypeList')->name('getLangTypeList');
     Route::get('get_lang_type_list', 'v1.PublicController/getLangTypeList')->name('getLangTypeList');
     //获取当前语言json
     //获取当前语言json
     Route::get('get_lang_json', 'v1.PublicController/getLangJson')->name('getLangJson');
     Route::get('get_lang_json', 'v1.PublicController/getLangJson')->name('getLangJson');
+    //获取当前后台设置的默认语言类型
+    Route::get('get_default_lang_type', 'v1.PublicController/getDefaultLangType')->name('getLangJson');
 })->middleware(\app\http\middleware\AllowOriginMiddleware::class)->middleware(\app\api\middleware\StationOpenMiddleware::class)->middleware(\app\api\middleware\AuthTokenMiddleware::class, false);
 })->middleware(\app\http\middleware\AllowOriginMiddleware::class)->middleware(\app\api\middleware\StationOpenMiddleware::class)->middleware(\app\api\middleware\AuthTokenMiddleware::class, false);
 
 
 Route::miss(function () {
 Route::miss(function () {

+ 17 - 12
crmeb/app/common.php

@@ -921,25 +921,32 @@ if (!function_exists('getLang')) {
      */
      */
     function getLang($code, array $replace = [])
     function getLang($code, array $replace = [])
     {
     {
+        /** @var LangCountryServices $langCountryServices */
+        $langCountryServices = app()->make(LangCountryServices::class);
+        /** @var LangTypeServices $langTypeServices */
+        $langTypeServices = app()->make(LangTypeServices::class);
+        /** @var LangCodeServices $langCodeServices */
+        $langCodeServices = app()->make(LangCodeServices::class);
+
         $request = app()->request;
         $request = app()->request;
         //获取接口传入的语言类型
         //获取接口传入的语言类型
         if (!$range = $request->header('cb-lang')) {
         if (!$range = $request->header('cb-lang')) {
-            if ($request->header('accept-language') !== null) {
-                $range = explode(',', $request->header('accept-language'))[0];
-            } else {
-                $range = 'zh-CN';
+            //没有传入则使用系统默认语言显示
+            if (!$range = $langTypeServices->value(['is_default' => 1], 'file_name')) {
+                //系统没有设置默认语言的话,根据浏览器语言显示,如果浏览器语言在库中找不到,则使用简体中文
+                if ($request->header('accept-language') !== null) {
+                    $range = explode(',', $request->header('accept-language'))[0];
+                } else {
+                    $range = 'zh-CN';
+                }
             }
             }
         }
         }
 
 
         // 获取type_id
         // 获取type_id
-        /** @var LangCountryServices $langCountryServices */
-        $langCountryServices = app()->make(LangCountryServices::class);
         $typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1;
         $typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1;
 
 
         // 获取类型
         // 获取类型
-        $langData = CacheService::redisHandler()->remember('lang_type_data', function () {
-            /** @var LangTypeServices $langTypeServices */
-            $langTypeServices = app()->make(LangTypeServices::class);
+        $langData = CacheService::redisHandler()->remember('lang_type_data', function () use ($langTypeServices) {
             return $langTypeServices->getColumn(['status' => 1, 'is_del' => 0], 'file_name', 'id');
             return $langTypeServices->getColumn(['status' => 1, 'is_del' => 0], 'file_name', 'id');
         }, 3600);
         }, 3600);
 
 
@@ -947,9 +954,7 @@ if (!function_exists('getLang')) {
         $langStr = 'lang_' . str_replace('-', '_', $langData[$typeId]);
         $langStr = 'lang_' . str_replace('-', '_', $langData[$typeId]);
 
 
         //读取当前语言的语言包
         //读取当前语言的语言包
-        $lang = CacheService::redisHandler()->remember($langStr, function () use ($typeId, $range) {
-            /** @var LangCodeServices $langCodeServices */
-            $langCodeServices = app()->make(LangCodeServices::class);
+        $lang = CacheService::redisHandler()->remember($langStr, function () use ($typeId, $range, $langCodeServices) {
             return $langCodeServices->getColumn(['type_id' => $typeId, 'is_admin' => 1], 'lang_explain', 'code');
             return $langCodeServices->getColumn(['type_id' => $typeId, 'is_admin' => 1], 'lang_explain', 'code');
         }, 3600);
         }, 3600);
         //获取返回文字
         //获取返回文字