【I18n】ブラウザの設定言語を変えても表示言語が変わらない問題


やりたいこと

  • ブラウザの設定言語に合わせて表示言語を変更する

問題・再現手順

  1. ブラウザの設定言語を 日本語 に設定する
  2. 対象のサイトをブラウザで表示する( 日本語 で表示される)
  3. ブラウザの設定言語を 英語 に変更する
  4. 2の画面をリロードする
    ・期待する表示: 英語
    ・実際の表示: 日本語

原因

  • 初回表示時は、ブラウザの設定言語を検出しLocalStorageに保存する
    (ブラウザの設定言語で表示される)
  • 2回目以降は、LocalStorageに保存された言語で表示される
    (ブラウザの設定言語は見ない)

-> ブラウザの設定言語を変更しても表示言語が変わらない

対応策

  • ブラウザの設定言語の優先度を上げる
import LanguageDetector from 'i18next-browser-languagedetector';

const detector = new LanguageDetector(null, {
  order: ['navigator', 'localStorage']
});