File size: 944 Bytes
f23825d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import localization from "./localization"

export type Language = "en" | "ja" | "zh"

export function localized(key: string): string | undefined
export function localized(key: string, defaultValue: string): string
export function localized(
  key: string,
  defaultValue: string,
  language?: Language,
): string
export function localized(
  key: string,
  defaultValue?: string,
  language?: Language,
): string | undefined {
  // ja-JP or ja -> ja

  const locale = language ?? getBrowserLanguage()

  if (
    key !== null &&
    localization[locale] !== undefined &&
    localization[locale][key] !== undefined
  ) {
    return localization[locale][key]
  }
  return defaultValue
}

function getBrowserLanguage() {
  // Use URL parameter ?lang=ja or navigator.language
  const navigatorLanguage = navigator.language.split("-")[0]
  const langParam = new URL(location.href).searchParams.get("lang")
  return langParam ?? navigatorLanguage
}