import { extend } from "../2.base"; import { replaceAll } from "../func"; let i18nStore = {}; const i18nFormatters = {}; export function changeI18n(i18n) { if (i18n) { i18nStore = i18n; } } export function addI18n(i18n) { extend(i18nStore, i18n); } export function i18nText(key) { let localeText = i18nStore[key] || (BI.i18n && BI.i18n[key]) || ""; if (!localeText) { localeText = key; } const len = arguments.length; if (len > 1) { if (localeText.indexOf("{R1") > -1) { for (let i = 1; i < len; i++) { const reg = new RegExp(`{R${i},(.*?)}`, "g"); const result = reg.exec(localeText); if (result) { const formatName = result[1]; localeText = replaceAll(localeText, reg, i18nFormatters[formatName](key, arguments[i])); } else { localeText = replaceAll(localeText, `{R${i}}`, `${arguments[i]}`); } } } else { const args = Array.prototype.slice.call(arguments); let count = 1; return replaceAll(localeText, "\\{\\s*\\}", () => `${args[count++]}`); } } return localeText; } export function addI18nFormatter(formatName, fn) { i18nFormatters[formatName] = fn; }