@omegagrid/localize 0.6.114 → 0.6.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/localization.js +1 -1
- package/dist/localization.js.map +1 -1
- package/package.json +1 -1
package/dist/localization.js
CHANGED
package/dist/localization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../src/localization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"localization.js","sourceRoot":"","sources":["../src/localization.ts"],"names":[],"mappings":"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","sourcesContent":["export type LocaleId = string;\n\nexport type MsgData = Record<string, string|number>;\n\nexport type MsgOptions = {\n /** Unique message id */\n id?: string;\n /** Description of this message */\n desc?: string;\n\t/** word separator */\n\tseparator?: string;\n\t/** replacable message data */\n\tdata?: MsgData;\n}\n\nexport type LocalizeItem = {\n\tid: string;\n\tsource: string;\n\ttarget: string;\n\ttranslate?: (data: MsgData) => string\n}\n\nexport class LocaleChangeEvent extends Event {\n\tlocale: string;\n\tconstructor(locale: string) {\n\t\tsuper('localechange');\n\t\tthis.locale = locale;\n\t}\n}\n\nexport function getSystemLocale(): string {\n\treturn typeof navigator !== 'undefined' ? (\n\t\tnavigator.languages && navigator.languages.length\n\t\t\t? navigator.languages[0]\n\t\t\t: navigator.language\n\t) : 'en';\n}\n\nconst locales = new Map<LocaleId, LocalizeItem[]>();\nconst localeSourceMap = new Map<LocaleId, Map<string, LocalizeItem>>();\n\nlet currentLocale: string = getSystemLocale();\n\nexport function registerLocale(locale: LocaleId|LocaleId[], items: LocalizeItem[]) {\n\t(Array.isArray(locale) ? locale : [locale]).forEach(l => locales.set(l, items));\n}\n\nexport function getLocale() {\n\treturn currentLocale;\n}\n\nexport function hasLocale(locale: LocaleId) {\n\treturn locales.has(locale);\n}\n\nexport function setLocale(locale: LocaleId): void {\n\tif (!locales.has(locale)) {\n\t\tlet newLocale = currentLocale;\n\t\tif (newLocale == null) {\n\t\t\tif (locales.has('en')) newLocale = 'en';\t\n\t\t\telse if (locales.size > 0) newLocale = locales.keys().next().value;\n\t\t}\n\t\t// log.getLogger().warn(`Locale ${locale} is not registered.${newLocale ? ` Switching to ${newLocale}.` : ''}`);\n\t}\n\n\tif (!localeSourceMap.has(locale)) localeSourceMap.set(locale, new Map());\n\tconst map = localeSourceMap.get(locale);\n\tlocales.get(locale)?.forEach(i => map.set(i.source, i));\n\n\tif (currentLocale !== locale) {\n\t\tcurrentLocale = locale;\n\t\tdocument.dispatchEvent(new LocaleChangeEvent(locale));\n\t}\n}\n\nexport function createTranslateFunction(template: string): (data?: MsgData) => string {\n\tconst regex = /\\{([^}]+)\\}/g;\n\tconst matches = Array.from(template.matchAll(regex));\n\tconst placeholders = matches.map(match => ({\n\t\tname: match[1],\n\t\tstart: match.index!,\n\t\tend: match.index! + match[0].length\n\t}));\n\n\treturn (data?: MsgData): string => {\n\t\tif (!data) return template;\n\t\t\n\t\tlet result = '';\n\t\tlet lastIndex = 0;\n\t\t\n\t\tfor (const placeholder of placeholders) {\n\t\t\t// Add text before placeholder\n\t\t\tresult += template.slice(lastIndex, placeholder.start);\n\t\t\t\n\t\t\t// Add placeholder value\n\t\t\tconst value = data[placeholder.name];\n\t\t\tresult += value != null ? String(value) : '';\n\t\t\t\n\t\t\tlastIndex = placeholder.end;\n\t\t}\n\t\t\n\t\t// Add remaining text after last placeholder\n\t\treturn result + template.slice(lastIndex);\n\t};\n}\n\n/**\n * Translate a message to the current locale\n * @param message source message\n * @param options translation options\n * @returns \n */\nexport function msg(message: string|string[], options?: MsgOptions): string {\n\tif (Array.isArray(message)) {\n\t\treturn message.map(m => msg(m, options)).join(options?.separator ?? ' ');\n\t}\n\n\tif (message == null || message === '') return '';\n\t\n\tconst source = message.toLowerCase();\n\tlet locale = localeSourceMap.get(currentLocale);\n\tif (!locale) {\n\t\tlocale = new Map<string, LocalizeItem>();\n\t\tlocaleSourceMap.set(currentLocale, locale);\n\t}\n\n\tlet localeItem = locale.get(source);\n\tif (!localeItem) {\n\t\tlocaleItem = {\n\t\t\tid: options?.id ?? null,\n\t\t\tsource: source,\n\t\t\ttarget: message\n\t\t};\n\t\tlocale.set(source, localeItem);\n\t}\n\n\t// create translate function if not exists\t\t\n\tif (options?.data && !localeItem.translate) {\n\t\tlocaleItem.translate = createTranslateFunction(localeItem.target);\n\t}\n\n\tif (!localeItem) return message;\n\n\tlet target = localeItem.translate ? localeItem.translate(options?.data) : localeItem.target;\n\tif (target == null || target === '') return '';\n\n\t// Capitalize the first letter if the source message first letter is capitalized\n\tif (message.length > 0 && message[0] === message[0].toUpperCase()) {\n\t\ttarget = target[0].toUpperCase() + target.slice(1);\n\t}\n\n\treturn target;\n}"]}
|