@vyr/locale 0.0.1
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/build/index.d.ts +18 -0
- package/build/index.js +71 -0
- package/package.json +11 -0
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface LanguageProvider {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
declare class Language<T extends LanguageProvider = LanguageProvider> {
|
|
6
|
+
private _provider;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
constructor(provider: T);
|
|
9
|
+
private _replaceParams;
|
|
10
|
+
get(key: keyof T, params?: Partial<Record<string, string | number>>): string;
|
|
11
|
+
setProvider(provider: T): void;
|
|
12
|
+
}
|
|
13
|
+
declare class Locale {
|
|
14
|
+
static register(language: LanguageProvider): void;
|
|
15
|
+
static use(id: string): void;
|
|
16
|
+
static getLanguage<T extends LanguageProvider = LanguageProvider>(name: string): Language<T>;
|
|
17
|
+
}
|
|
18
|
+
export { LanguageProvider, Language, Locale, };
|
package/build/index.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["__VYR_RUNTIME_@vyr/locale"] = {}));
|
|
5
|
+
})(this, (function (exports) { 'use strict';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
10
|
+
class Language {
|
|
11
|
+
constructor(provider) {
|
|
12
|
+
__publicField(this, "_provider");
|
|
13
|
+
__publicField(this, "name");
|
|
14
|
+
this.name = provider.name;
|
|
15
|
+
this._provider = provider;
|
|
16
|
+
}
|
|
17
|
+
_replaceParams(text, params) {
|
|
18
|
+
if (!text || !text.includes("{{") || params === void 0) {
|
|
19
|
+
return text;
|
|
20
|
+
}
|
|
21
|
+
return text.replace(/\{\{\s*([^{}]+?)\s*\}\}/g, (match, key) => {
|
|
22
|
+
const trimmedKey = key.trim();
|
|
23
|
+
return params.hasOwnProperty(trimmedKey) ? String(params[trimmedKey]) : match;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
get(key, params) {
|
|
27
|
+
const value = this._provider[key] ?? "";
|
|
28
|
+
return this._replaceParams(value, params);
|
|
29
|
+
}
|
|
30
|
+
setProvider(provider) {
|
|
31
|
+
this._provider = provider;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const privateState = {
|
|
35
|
+
languageProviderCollection: /* @__PURE__ */ new Map(),
|
|
36
|
+
languageCollection: /* @__PURE__ */ new Map(),
|
|
37
|
+
currentLanguageId: "zh_CN"
|
|
38
|
+
};
|
|
39
|
+
class Locale {
|
|
40
|
+
static register(language) {
|
|
41
|
+
privateState.languageProviderCollection.set(language.id + language.name, language);
|
|
42
|
+
}
|
|
43
|
+
static use(id) {
|
|
44
|
+
if (privateState.currentLanguageId === id) return;
|
|
45
|
+
privateState.currentLanguageId = id;
|
|
46
|
+
const languages = privateState.languageCollection.values();
|
|
47
|
+
for (const language of languages) {
|
|
48
|
+
const provider = privateState.languageProviderCollection.get(id + language.name);
|
|
49
|
+
if (provider === void 0) continue;
|
|
50
|
+
language.setProvider(provider);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static getLanguage(name) {
|
|
54
|
+
let language = privateState.languageCollection.get(name);
|
|
55
|
+
if (language === void 0) {
|
|
56
|
+
let provider = privateState.languageProviderCollection.get(privateState.currentLanguageId + name);
|
|
57
|
+
if (provider === void 0) {
|
|
58
|
+
provider = privateState.languageProviderCollection.get("zh_CN" + name);
|
|
59
|
+
if (provider === void 0) provider = { id: "zh_CN", name };
|
|
60
|
+
}
|
|
61
|
+
language = new Language(provider);
|
|
62
|
+
privateState.languageCollection.set(name, language);
|
|
63
|
+
}
|
|
64
|
+
return language;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
exports.Language = Language;
|
|
69
|
+
exports.Locale = Locale;
|
|
70
|
+
|
|
71
|
+
}));
|