February 28, 2026

多語系取值次序選擇 Language Source Priority Strategy


🌍 多語系取值次序選擇

📌 目的

在多語系網站中,語言來源可能來自多個地方,例如:

如果沒有明確的優先順序,可能會出現:

本文件定義語言來源的設計策略與建議實作方式。


🎯 建議順序

  1. URL
  2. Cookie
  3. localStorage
  4. Browser Language

🥇 1. URL(最高優先)

範例:

/en/products
/zh-TW/products
?lang=ja

為什麼 URL 要放第一?

👉 URL = 當前頁面的權威語言


當 URL 沒指定語言時:

適合場景


localStorage

適合:

缺點


在不確定使用者語言狀況下使用客戶端 navigator 獲取對方可能語言

navigator.language;


例如:

en

當所有來源都不存在時使用。


🧠 語言偵測流程範例

function detectLanguage() {
  const urlLang = getLangFromUrl();
  if (urlLang) return urlLang;

  const cookieLang = getCookie("lang");
  if (cookieLang) return cookieLang;

  const localLang = localStorage.getItem("lang");
  if (localLang) return localLang;

  const browserLang = navigator.language;
  if (browserLang) return mapToSupportedLang(browserLang);

  return "en";
}

🔄 語言切換設計原則

當使用者切換語言時:

  1. 更新 URL
  2. 寫入 Cookie
  3. (可選)寫入 localStorage

範例:

function switchLanguage(lang) {
  updateUrl(lang);
  setCookie("lang", lang);
  localStorage.setItem("lang", lang);
}

🏗 不同專案架構建議

SPA

URL > localStorage > Browser > Default

Next.js / SSR 專案(推薦)

URL > Cookie > Default

🚨 常見錯誤設計


🏁 最佳實務總結

來源 是否權威 適用場景



多語系語言優先順序應為:
URL > Cookie > localStorage > Browser > Default