You've already forked tf2wikipricing
refactor: debuggable localization function
This commit is contained in:
@@ -1,32 +1,41 @@
|
|||||||
const localizations: {[lang: string]: any} = {
|
import { logDebug } from "./log";
|
||||||
|
|
||||||
|
const localizations: Record<string, object> = {
|
||||||
'en': require('../../strings/en'), // English
|
'en': require('../../strings/en'), // English
|
||||||
'es': require('../../strings/es'), // Spanish
|
'es': require('../../strings/es'), // Spanish
|
||||||
'ja': require('../../strings/ja'), // Japanese
|
'ja': require('../../strings/ja'), // Japanese
|
||||||
'it': require('../../strings/it'), // Italian
|
'it': require('../../strings/it'), // Italian
|
||||||
'ar': require('../../strings/ar') as object, // Arabic
|
'ar': require('../../strings/ar'), // Arabic
|
||||||
'cs': require('../../strings/cs') as object, // Czech
|
'cs': require('../../strings/cs'), // Czech
|
||||||
'da': require('../../strings/da') as object, // Danish
|
'da': require('../../strings/da'), // Danish
|
||||||
'de': require('../../strings/de') as object, // German
|
'de': require('../../strings/de'), // German
|
||||||
'fi': require('../../strings/fi') as object, // Finnish
|
'fi': require('../../strings/fi'), // Finnish
|
||||||
'fr': require('../../strings/fr') as object, // French
|
'fr': require('../../strings/fr'), // French
|
||||||
'hu': require('../../strings/hu') as object, // Hungarian
|
'hu': require('../../strings/hu'), // Hungarian
|
||||||
'ko': require('../../strings/ko') as object, // Korean
|
'ko': require('../../strings/ko'), // Korean
|
||||||
'nl': require('../../strings/nl') as object, // Dutch
|
'nl': require('../../strings/nl'), // Dutch
|
||||||
'no': require('../../strings/no') as object, // Norwegian Bokmål
|
'no': require('../../strings/no'), // Norwegian Bokmål
|
||||||
'pl': require('../../strings/pl') as object, // Polish
|
'pl': require('../../strings/pl'), // Polish
|
||||||
'pt': require('../../strings/pt') as object, // Portuguese
|
'pt': require('../../strings/pt'), // Portuguese
|
||||||
'pt-BR': require('../../strings/pt-BR') as object, // Brazilian Portuguese
|
'pt-BR': require('../../strings/pt-BR'), // Brazilian Portuguese
|
||||||
'ro': require('../../strings/ro') as object, // Romanian
|
'ro': require('../../strings/ro'), // Romanian
|
||||||
'ru': require('../../strings/ru') as object, // Russian
|
'ru': require('../../strings/ru'), // Russian
|
||||||
'sv': require('../../strings/sv') as object, // Swedish
|
'sv': require('../../strings/sv'), // Swedish
|
||||||
'tr': require('../../strings/tr') as object, // Turkish
|
'tr': require('../../strings/tr'), // Turkish
|
||||||
'zh-Hans': require('../../strings/zh-Hans') as object, // Simplified Chinese
|
'zh-Hans': require('../../strings/zh-Hans'), // Simplified Chinese
|
||||||
'zh-Hant': require('../../strings/zh-Hant') as object, // Traditional Chinese
|
'zh-Hant': require('../../strings/zh-Hant'), // Traditional Chinese
|
||||||
}
|
}
|
||||||
|
|
||||||
export function $T(s: string, locale?: Intl.LocalesArgument): string {
|
export function $T(s: string, locale?: Intl.LocalesArgument): string {
|
||||||
const code = locale ? locale.toString() : extractLocaleFromURL(document.URL)
|
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<string, string>;
|
||||||
|
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 {
|
export function extractLocaleFromURL(url: string): string {
|
||||||
|
|||||||
Reference in New Issue
Block a user