Spaces:
Running
Running
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 | |
} | |