Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 1x 1x 1x 1x 1x 1x 1x 1x | function loadTranslations() {
const rv: Record<string, Record<string, string>> = {};
try {
const ctx = require.context("../../../translations", true, /\.json$/);
ctx.keys().forEach((key) => {
const langIdMatch = key.match(/([a-z]+)/);
if (langIdMatch) {
rv[langIdMatch[1]] = ctx(key);
}
});
} catch (err) {
// require.context is not available when running tests.
}
return rv;
}
const translations: Record<string, Record<string, string>> = loadTranslations();
let currentLanguage = "en";
let currentTranslations = translations[currentLanguage];
export function setCurrentLanguage(lang: string) {
currentLanguage = lang;
currentTranslations = translations[currentLanguage];
}
export function getCurrentLanguge() {
return currentLanguage;
}
export type Translatable = Partial<Record<string, string>>;
/**
* Get translation for a key.
* @param key - The translation key.
*/
export function trans(key: string): string {
return currentTranslations[key] ?? key;
}
/**
* Get translation from an object of translations
* @param translation_object - The object containing translations.
*/
export function trans_obj(translation_object: Translatable): string {
return translation_object[currentLanguage] ?? translation_object.en ?? "";
}
/**
* Get translation for a key with a fallback.
* @param translation_object - The translation key
* @param fallback - A fallback to use if the translation is missing.
*/
export function trans_fallback(
translation_object: Translatable | undefined,
fallback: string
): string {
if (!translation_object) {
return fallback;
}
return trans_obj(translation_object) || fallback;
}
/**
* Get translation for a key with a `%s` replacement.
* @param key - The translation key
* @param replacement - replacement for `%s`.
*/
export function trans_format(key: string, replacement: string): string {
const translation = trans(key);
return translation.replace("%s", replacement);
}
|