Răsfoiți Sursa

feat:language

igb 4 luni în urmă
părinte
comite
2a8a3ac7b5

+ 2 - 2
app/Distributor/Controllers/AuthController.php

@@ -28,7 +28,7 @@ class AuthController extends BaseAuthController
         if(!empty($lang))
         {
             switchLanguage($lang);
-            return redirect()->to(request()->url()); // 刷新页面,去掉查询参数
+            return response()->json(['success' => true, 'lang' => $lang]);
         }
 
         if ($this->guard()->check()) {
@@ -60,7 +60,6 @@ class AuthController extends BaseAuthController
         {
             Session::forget('captcha');
 
-
             return response()->json([
                 'success' => false,
                 'message' => 'The captcha is incorrect. Please refresh the page and try again.',
@@ -74,6 +73,7 @@ class AuthController extends BaseAuthController
 
 
         unset($credentials['captcha']);
+
         if ($validator->fails()) {
             return $this->validationErrorsResponse($validator);
         }

+ 1 - 8
app/Distributor/Controllers/LanguageController.php

@@ -33,14 +33,7 @@ class LanguageController extends Controller
         if (!in_array($lang, ['en', 'zh_CN'])) {
             abort(404);
         }
-
-        $configArray = ['lang' => $lang,];
-
-        user_admin_config($configArray);
-
-        // 动态修改 app.locale 配置
-        config(['app.locale' => $lang]);
-
+        switchLanguage($lang);
         return response()->json(['success' => true, 'lang' => $lang]);
     }
 

+ 3 - 3
app/Distributor/bootstrap.php

@@ -44,7 +44,7 @@ $user = Admin::guard()->check() ? Admin::user() : null;
 config(['distributor.layout.home_url'=>getDistributorDomain()]);
 
 
-
 //// 覆盖默认配置
-config(['admin' => user_admin_config()]);
-config(['app.locale' => config('admin.lang') ?: config('app.locale')]);
+//config(['admin' => user_admin_config()]);
+
+config(['app.locale' => Session::get('lang') ?: config('app.locale')]);

+ 1 - 3
app/helpers.php

@@ -46,9 +46,7 @@ if (! function_exists('switchLanguage')) {
             return false;
         }
 
-        $configArray = ['lang' => $lang,];
-
-        user_admin_config($configArray);
+        Session::put('lang', $lang);
 
         // 动态修改 app.locale 配置
         config(['app.locale' => $lang]);

+ 34 - 2
resources/views/distributor/pages/login.blade.php

@@ -137,8 +137,8 @@
                     </div>
                     <div class="form-group d-flex justify-content-between align-items-center">
                         <div class="text-left">
-                            <a href="?lang=en">English</a>
-                            <a href="?lang=zh_CN">中文</a>
+                            <a class="lang-item" href="javascript:void(0);" data-lang="en">English</a>
+                            <a class="lang-item" href="javascript:void(0);" data-lang="zh_CN">中文</a>
                         </div>
                     </div>
                     <button type="submit" class="btn btn-primary float-right login-btn">
@@ -162,3 +162,35 @@ Dcat.ready(function () {
     });
 });
 </script>
+
+<script>
+    document.querySelectorAll('.lang-item').forEach(item => {
+        item.addEventListener('click', function() {
+            const lang = this.getAttribute('data-lang');
+            switchLanguage(lang);
+        });
+    });
+
+    function switchLanguage(lang) {
+        fetch(`/dist/auth/login?lang=${encodeURIComponent(lang)}`, {
+            method: 'GET'
+        })
+            .then(response => {
+                if (!response.ok) {
+                    throw new Error('Network response was not ok');
+                }
+                return response.json();
+            })
+            .then(data => {
+                if (data.success) {
+                    window.location.reload();
+                } else {
+                    throw new Error(data.error || 'Language switch failed');
+                }
+            })
+            .catch(error => {
+                console.error('Language Switch Error:', error);
+                alert('Failed to switch language. Please try again.');
+            });
+    }
+</script>

+ 23 - 9
resources/views/distributor/partials/navbar.blade.php

@@ -58,8 +58,8 @@
                             <i class="fa fa-language f16"></i> {{trans('admin.language')}}
                         </a>
                         <div class="dropdown-menu" aria-labelledby="navbarDropdown">
-                            <a class="dropdown-item" href="javascript:null;" onclick="javascript:switchLanguage('en');" style="padding-left: 10px;">English</a>
-                            <a class="dropdown-item"  href="javascript:null;" onclick="javascript:switchLanguage('zh_CN');" onclick="javascript:switchLanguage('en');" style="padding-left: 10px;">中文</a>
+                            <a class="dropdown-item lang-item" href="javascript:void(0);" data-lang="en">English</a>
+                            <a class="dropdown-item lang-item" href="javascript:void(0);" data-lang="zh_CN">中文</a>
                         </div>
                     </div>
 
@@ -76,21 +76,35 @@
 </nav>
 @endif
 {!! admin_section(Dcat\Admin\Admin::SECTION['NAVBAR_AFTER']) !!}
+
 <script>
-    function switchLanguage(lang) {
+    document.querySelectorAll('.lang-item').forEach(item => {
+        item.addEventListener('click', function() {
+            const lang = this.getAttribute('data-lang');
+            switchLanguage(lang);
+        });
+    });
 
-        fetch(`/dist/language-switch?lang=${lang}`, {
+    function switchLanguage(lang) {
+        fetch(`/dist/language-switch?lang=${encodeURIComponent(lang)}`, {
             method: 'GET'
         })
-            .then(response => response.json())
+            .then(response => {
+                if (!response.ok) {
+                    throw new Error('Network response was not ok');
+                }
+                return response.json();
+            })
             .then(data => {
                 if (data.success) {
-                    window.location.reload(); // Optional: Reload to fetch updated language
+                    window.location.reload();
                 } else {
-                    alert(data.error);
+                    throw new Error(data.error || 'Language switch failed');
                 }
             })
-            .catch(error => console.error('Error:', error));
+            .catch(error => {
+                console.error('Language Switch Error:', error);
+                alert('Failed to switch language. Please try again.');
+            });
     }
-
 </script>