babel-plugin-react-translate/runtime.js

68 lines
1.3 KiB
JavaScript

// babel-plugin-react-translate
// (c) Vitaliy Filippov 2021+
// SPDX-License-Identifier: LGPL-3.0
import plural from './plural_ru.js';
const strings = {};
export { plural };
export function setStrings(lang, strHash)
{
strings[lang] = strHash;
}
export function addStrings(lang, strHash)
{
Object.assign(strings[lang], strHash);
}
let fallback = 'en', language = 'ru';
export function setLanguage(lang)
{
language = lang;
}
export function getLanguage()
{
return language;
}
export function setFallback(lang)
{
fallback = lang;
}
export function getFallback()
{
return fallback;
}
export function L(s)
{
s = strings[language] && strings[language][s] || strings[fallback] && strings[fallback][s] || s;
if (arguments.length > 1)
{
const arg = arguments;
s = s.replace(/\{(\d+)\}/g, (m, m1) =>
{
let r = arg[parseInt(m1)];
if (r == null)
r = '';
return r;
});
s = s.replace(
/\{N:(\d+):((?:[^:\\]+|\\.)*):((?:[^:\\]+|\\.)*):((?:[^:\\]+|\\.)*)\}/g,
(m, m1, m2, m3, m4) => plural(
arg[parseInt(m1)]||'',
m2.replace(/\\(.)/g, '$1'),
m3.replace(/\\(.)/g, '$1'),
m4.replace(/\\(.)/g, '$1')
)
);
}
return s;
}