diff --git a/src/content/utils/localization.ts b/src/content/utils/localization.ts index 5d21dfc..4706b8b 100644 --- a/src/content/utils/localization.ts +++ b/src/content/utils/localization.ts @@ -1,32 +1,41 @@ -const localizations: {[lang: string]: any} = { +import { logDebug } from "./log"; + +const localizations: Record = { 'en': require('../../strings/en'), // English 'es': require('../../strings/es'), // Spanish 'ja': require('../../strings/ja'), // Japanese 'it': require('../../strings/it'), // Italian - 'ar': require('../../strings/ar') as object, // Arabic - 'cs': require('../../strings/cs') as object, // Czech - 'da': require('../../strings/da') as object, // Danish - 'de': require('../../strings/de') as object, // German - 'fi': require('../../strings/fi') as object, // Finnish - 'fr': require('../../strings/fr') as object, // French - 'hu': require('../../strings/hu') as object, // Hungarian - 'ko': require('../../strings/ko') as object, // Korean - 'nl': require('../../strings/nl') as object, // Dutch - 'no': require('../../strings/no') as object, // Norwegian Bokmål - 'pl': require('../../strings/pl') as object, // Polish - 'pt': require('../../strings/pt') as object, // Portuguese - 'pt-BR': require('../../strings/pt-BR') as object, // Brazilian Portuguese - 'ro': require('../../strings/ro') as object, // Romanian - 'ru': require('../../strings/ru') as object, // Russian - 'sv': require('../../strings/sv') as object, // Swedish - 'tr': require('../../strings/tr') as object, // Turkish - 'zh-Hans': require('../../strings/zh-Hans') as object, // Simplified Chinese - 'zh-Hant': require('../../strings/zh-Hant') as object, // Traditional Chinese + 'ar': require('../../strings/ar'), // Arabic + 'cs': require('../../strings/cs'), // Czech + 'da': require('../../strings/da'), // Danish + 'de': require('../../strings/de'), // German + 'fi': require('../../strings/fi'), // Finnish + 'fr': require('../../strings/fr'), // French + 'hu': require('../../strings/hu'), // Hungarian + 'ko': require('../../strings/ko'), // Korean + 'nl': require('../../strings/nl'), // Dutch + 'no': require('../../strings/no'), // Norwegian Bokmål + 'pl': require('../../strings/pl'), // Polish + 'pt': require('../../strings/pt'), // Portuguese + 'pt-BR': require('../../strings/pt-BR'), // Brazilian Portuguese + 'ro': require('../../strings/ro'), // Romanian + 'ru': require('../../strings/ru'), // Russian + 'sv': require('../../strings/sv'), // Swedish + 'tr': require('../../strings/tr'), // Turkish + 'zh-Hans': require('../../strings/zh-Hans'), // Simplified Chinese + 'zh-Hant': require('../../strings/zh-Hant'), // Traditional Chinese } export function $T(s: string, locale?: Intl.LocalesArgument): string { const code = locale ? locale.toString() : extractLocaleFromURL(document.URL) - return localizations.hasOwnProperty(code) ? (localizations[code as unknown as keyof object])[s] || s : s; + if (code in localizations) { + const translation = localizations[code] as Record; + const result = translation[s] ?? s; + logDebug(`Translating "${s}" to locale "${code}": ${result}`); + return result; + } + logDebug(`Untranslated string "${s}" in locale "${code}`); + return s; } export function extractLocaleFromURL(url: string): string {