|
1 | 1 | <!DOCTYPE html> |
2 | | -<html lang="zh-CN"> |
| 2 | +<html> |
3 | 3 | <head> |
4 | 4 | <meta charset="UTF-8" /> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
@@ -2604,6 +2604,50 @@ <h3 class="contact-subtitle"> |
2604 | 2604 | <script> |
2605 | 2605 | let currentLang = "zh"; |
2606 | 2606 |
|
| 2607 | + function detectLanguageByLocation() { |
| 2608 | + return new Promise((resolve) => { |
| 2609 | + const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; |
| 2610 | + |
| 2611 | + if ( |
| 2612 | + timezone.includes("Asia/Shanghai") || |
| 2613 | + timezone.includes("Asia/Beijing") || |
| 2614 | + timezone.includes("Asia/Chongqing") || |
| 2615 | + timezone.includes("Asia/Harbin") || |
| 2616 | + timezone.includes("Asia/Kashgar") || |
| 2617 | + timezone.includes("Asia/Urumqi") |
| 2618 | + ) { |
| 2619 | + resolve("zh"); |
| 2620 | + return; |
| 2621 | + } |
| 2622 | + |
| 2623 | + // 日本时区 |
| 2624 | + if (timezone.includes("Asia/Tokyo")) { |
| 2625 | + resolve("ja"); |
| 2626 | + return; |
| 2627 | + } |
| 2628 | + |
| 2629 | + // 韩国时区 |
| 2630 | + if (timezone.includes("Asia/Seoul")) { |
| 2631 | + resolve("ja"); |
| 2632 | + return; |
| 2633 | + } |
| 2634 | + |
| 2635 | + // 尝试通过浏览器语言检测 |
| 2636 | + const browserLang = navigator.language || navigator.languages[0]; |
| 2637 | + |
| 2638 | + if (browserLang.startsWith("zh")) { |
| 2639 | + resolve("zh"); |
| 2640 | + } else if ( |
| 2641 | + browserLang.startsWith("ja") || |
| 2642 | + browserLang.startsWith("ko") |
| 2643 | + ) { |
| 2644 | + resolve("ja"); |
| 2645 | + } else { |
| 2646 | + resolve("en"); |
| 2647 | + } |
| 2648 | + }); |
| 2649 | + } |
| 2650 | + |
2607 | 2651 | function toggleLanguageSwitcher() { |
2608 | 2652 | const switcher = document.getElementById("languageSwitcher"); |
2609 | 2653 | switcher.classList.toggle("show"); |
@@ -2654,9 +2698,20 @@ <h3 class="contact-subtitle"> |
2654 | 2698 | localStorage.setItem("rushdb-language", lang); |
2655 | 2699 | } |
2656 | 2700 |
|
2657 | | - document.addEventListener("DOMContentLoaded", function () { |
2658 | | - const savedLang = localStorage.getItem("rushdb-language") || "zh"; |
2659 | | - switchLanguage(savedLang); |
| 2701 | + document.addEventListener("DOMContentLoaded", async function () { |
| 2702 | + // 检查是否已有保存的语言设置 |
| 2703 | + const savedLang = localStorage.getItem("rushdb-language"); |
| 2704 | + |
| 2705 | + let selectedLang; |
| 2706 | + if (savedLang) { |
| 2707 | + // 如果用户之前已经选择过语言,使用保存的设置 |
| 2708 | + selectedLang = savedLang; |
| 2709 | + } else { |
| 2710 | + // 如果是首次访问,根据地理位置自动选择语言 |
| 2711 | + selectedLang = await detectLanguageByLocation(); |
| 2712 | + } |
| 2713 | + |
| 2714 | + switchLanguage(selectedLang); |
2660 | 2715 |
|
2661 | 2716 | document.addEventListener("click", function (event) { |
2662 | 2717 | const switcher = document.getElementById("languageSwitcher"); |
|
0 commit comments