@flowgram.ai/i18n 0.1.0

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.
@@ -0,0 +1,79 @@
1
+ // src/index.ts
2
+ import { Emitter } from "@flowgram.ai/utils";
3
+
4
+ // src/i18n/zh-CN.ts
5
+ var zh_CN_default = {
6
+ languageId: "zh-CN",
7
+ languageName: "Chinese",
8
+ localizedLanguageName: "\u4E2D\u6587(\u4E2D\u56FD)",
9
+ contents: {
10
+ Yes: "\u662F",
11
+ No: "\u5426"
12
+ }
13
+ };
14
+
15
+ // src/i18n/en-US.ts
16
+ var en_US_default = {
17
+ languageId: "en-US",
18
+ languageName: "English",
19
+ localizedLanguageName: "English",
20
+ contents: {
21
+ Yes: "Yes",
22
+ No: "No"
23
+ }
24
+ };
25
+
26
+ // src/index.ts
27
+ var I18nImpl = class {
28
+ constructor(languages) {
29
+ this._languages = /* @__PURE__ */ new Map();
30
+ this._localLanguage = "en-US";
31
+ this._onLanguageChangeEmitter = new Emitter();
32
+ this.onLanguageChange = this._onLanguageChangeEmitter.event;
33
+ languages.forEach((language) => this.addLanguage(language));
34
+ }
35
+ /**
36
+ * TODO support replace
37
+ * @param key
38
+ * @param options
39
+ */
40
+ t(key, options) {
41
+ const contents = this._languages.get(this._localLanguage)?.contents || {};
42
+ if (contents[key]) {
43
+ return contents[key];
44
+ }
45
+ if (options?.disableReturnKey) return "";
46
+ return key;
47
+ }
48
+ getLocalLanguage() {
49
+ return this._localLanguage;
50
+ }
51
+ setLocalLanguage(langId) {
52
+ if (langId === this._localLanguage) return;
53
+ this._localLanguage = langId;
54
+ this._onLanguageChangeEmitter.fire(langId);
55
+ }
56
+ getLangauges() {
57
+ return this._languages;
58
+ }
59
+ addLanguage(newLanguage) {
60
+ let oldLanguage = this._languages.get(newLanguage.languageId);
61
+ if (oldLanguage) {
62
+ this._languages.set(newLanguage.languageId, {
63
+ ...oldLanguage,
64
+ ...newLanguage,
65
+ contents: {
66
+ ...oldLanguage.contents,
67
+ ...newLanguage.contents
68
+ }
69
+ });
70
+ } else {
71
+ this._languages.set(newLanguage.languageId, newLanguage);
72
+ }
73
+ }
74
+ };
75
+ var I18n = new I18nImpl([en_US_default, zh_CN_default]);
76
+ export {
77
+ I18n
78
+ };
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts","../../src/i18n/zh-CN.ts","../../src/i18n/en-US.ts"],"sourcesContent":["import { Emitter } from '@flowgram.ai/utils';\n\ninterface I18nLanguage {\n languageId: string;\n languageName?: string;\n localizedLanguageName?: string;\n contents: Record<string, string>;\n}\n\nimport zhCNLanguageDefault from './i18n/zh-CN';\nimport enUSLanguageDefault from './i18n/en-US';\n\nclass I18nImpl {\n private _languages = new Map<string, I18nLanguage>();\n\n private _localLanguage = 'en-US';\n\n private _onLanguageChangeEmitter = new Emitter<string>();\n\n readonly onLanguageChange = this._onLanguageChangeEmitter.event;\n\n constructor(languages: I18nLanguage[]) {\n languages.forEach((language) => this.addLanguage(language));\n }\n\n /**\n * TODO support replace\n * @param key\n * @param options\n */\n t(key: string, options?: { disableReturnKey?: boolean }): string {\n const contents: Record<string, string> =\n this._languages.get(this._localLanguage)?.contents || {};\n if (contents[key]) {\n return contents[key];\n }\n if (options?.disableReturnKey) return '';\n return key;\n }\n\n getLocalLanguage() {\n return this._localLanguage;\n }\n\n setLocalLanguage(langId: string) {\n if (langId === this._localLanguage) return;\n this._localLanguage = langId;\n this._onLanguageChangeEmitter.fire(langId);\n }\n\n getLangauges() {\n return this._languages;\n }\n\n addLanguage(newLanguage: I18nLanguage): void {\n let oldLanguage = this._languages.get(newLanguage.languageId);\n if (oldLanguage) {\n this._languages.set(newLanguage.languageId, {\n ...oldLanguage,\n ...newLanguage,\n contents: {\n ...oldLanguage.contents,\n ...newLanguage.contents,\n },\n });\n } else {\n this._languages.set(newLanguage.languageId, newLanguage);\n }\n }\n}\n\nconst I18n = new I18nImpl([enUSLanguageDefault, zhCNLanguageDefault]);\n\nexport { I18n, I18nLanguage };\n","export default {\n languageId: 'zh-CN',\n languageName: 'Chinese',\n localizedLanguageName: '中文(中国)',\n contents: {\n Yes: '是',\n No: '否',\n },\n};\n","export default {\n languageId: 'en-US',\n languageName: 'English',\n localizedLanguageName: 'English',\n contents: {\n Yes: 'Yes',\n No: 'No',\n },\n};\n"],"mappings":";AAAA,SAAS,eAAe;;;ACAxB,IAAO,gBAAQ;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,UAAU;AAAA,IACR,KAAK;AAAA,IACL,IAAI;AAAA,EACN;AACF;;;ACRA,IAAO,gBAAQ;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,UAAU;AAAA,IACR,KAAK;AAAA,IACL,IAAI;AAAA,EACN;AACF;;;AFIA,IAAM,WAAN,MAAe;AAAA,EASb,YAAY,WAA2B;AARvC,SAAQ,aAAa,oBAAI,IAA0B;AAEnD,SAAQ,iBAAiB;AAEzB,SAAQ,2BAA2B,IAAI,QAAgB;AAEvD,SAAS,mBAAmB,KAAK,yBAAyB;AAGxD,cAAU,QAAQ,CAAC,aAAa,KAAK,YAAY,QAAQ,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,EAAE,KAAa,SAAkD;AAC/D,UAAM,WACJ,KAAK,WAAW,IAAI,KAAK,cAAc,GAAG,YAAY,CAAC;AACzD,QAAI,SAAS,GAAG,GAAG;AACjB,aAAO,SAAS,GAAG;AAAA,IACrB;AACA,QAAI,SAAS,iBAAkB,QAAO;AACtC,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,iBAAiB,QAAgB;AAC/B,QAAI,WAAW,KAAK,eAAgB;AACpC,SAAK,iBAAiB;AACtB,SAAK,yBAAyB,KAAK,MAAM;AAAA,EAC3C;AAAA,EAEA,eAAe;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,aAAiC;AAC3C,QAAI,cAAc,KAAK,WAAW,IAAI,YAAY,UAAU;AAC5D,QAAI,aAAa;AACf,WAAK,WAAW,IAAI,YAAY,YAAY;AAAA,QAC1C,GAAG;AAAA,QACH,GAAG;AAAA,QACH,UAAU;AAAA,UACR,GAAG,YAAY;AAAA,UACf,GAAG,YAAY;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,WAAK,WAAW,IAAI,YAAY,YAAY,WAAW;AAAA,IACzD;AAAA,EACF;AACF;AAEA,IAAM,OAAO,IAAI,SAAS,CAAC,eAAqB,aAAmB,CAAC;","names":[]}
@@ -0,0 +1,30 @@
1
+ import * as _flowgram_ai_utils from '@flowgram.ai/utils';
2
+
3
+ interface I18nLanguage {
4
+ languageId: string;
5
+ languageName?: string;
6
+ localizedLanguageName?: string;
7
+ contents: Record<string, string>;
8
+ }
9
+ declare class I18nImpl {
10
+ private _languages;
11
+ private _localLanguage;
12
+ private _onLanguageChangeEmitter;
13
+ readonly onLanguageChange: _flowgram_ai_utils.Event<string>;
14
+ constructor(languages: I18nLanguage[]);
15
+ /**
16
+ * TODO support replace
17
+ * @param key
18
+ * @param options
19
+ */
20
+ t(key: string, options?: {
21
+ disableReturnKey?: boolean;
22
+ }): string;
23
+ getLocalLanguage(): string;
24
+ setLocalLanguage(langId: string): void;
25
+ getLangauges(): Map<string, I18nLanguage>;
26
+ addLanguage(newLanguage: I18nLanguage): void;
27
+ }
28
+ declare const I18n: I18nImpl;
29
+
30
+ export { I18n, type I18nLanguage };
@@ -0,0 +1,30 @@
1
+ import * as _flowgram_ai_utils from '@flowgram.ai/utils';
2
+
3
+ interface I18nLanguage {
4
+ languageId: string;
5
+ languageName?: string;
6
+ localizedLanguageName?: string;
7
+ contents: Record<string, string>;
8
+ }
9
+ declare class I18nImpl {
10
+ private _languages;
11
+ private _localLanguage;
12
+ private _onLanguageChangeEmitter;
13
+ readonly onLanguageChange: _flowgram_ai_utils.Event<string>;
14
+ constructor(languages: I18nLanguage[]);
15
+ /**
16
+ * TODO support replace
17
+ * @param key
18
+ * @param options
19
+ */
20
+ t(key: string, options?: {
21
+ disableReturnKey?: boolean;
22
+ }): string;
23
+ getLocalLanguage(): string;
24
+ setLocalLanguage(langId: string): void;
25
+ getLangauges(): Map<string, I18nLanguage>;
26
+ addLanguage(newLanguage: I18nLanguage): void;
27
+ }
28
+ declare const I18n: I18nImpl;
29
+
30
+ export { I18n, type I18nLanguage };
package/dist/index.js ADDED
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ I18n: () => I18n
24
+ });
25
+ module.exports = __toCommonJS(src_exports);
26
+ var import_utils = require("@flowgram.ai/utils");
27
+
28
+ // src/i18n/zh-CN.ts
29
+ var zh_CN_default = {
30
+ languageId: "zh-CN",
31
+ languageName: "Chinese",
32
+ localizedLanguageName: "\u4E2D\u6587(\u4E2D\u56FD)",
33
+ contents: {
34
+ Yes: "\u662F",
35
+ No: "\u5426"
36
+ }
37
+ };
38
+
39
+ // src/i18n/en-US.ts
40
+ var en_US_default = {
41
+ languageId: "en-US",
42
+ languageName: "English",
43
+ localizedLanguageName: "English",
44
+ contents: {
45
+ Yes: "Yes",
46
+ No: "No"
47
+ }
48
+ };
49
+
50
+ // src/index.ts
51
+ var I18nImpl = class {
52
+ constructor(languages) {
53
+ this._languages = /* @__PURE__ */ new Map();
54
+ this._localLanguage = "en-US";
55
+ this._onLanguageChangeEmitter = new import_utils.Emitter();
56
+ this.onLanguageChange = this._onLanguageChangeEmitter.event;
57
+ languages.forEach((language) => this.addLanguage(language));
58
+ }
59
+ /**
60
+ * TODO support replace
61
+ * @param key
62
+ * @param options
63
+ */
64
+ t(key, options) {
65
+ const contents = this._languages.get(this._localLanguage)?.contents || {};
66
+ if (contents[key]) {
67
+ return contents[key];
68
+ }
69
+ if (options?.disableReturnKey) return "";
70
+ return key;
71
+ }
72
+ getLocalLanguage() {
73
+ return this._localLanguage;
74
+ }
75
+ setLocalLanguage(langId) {
76
+ if (langId === this._localLanguage) return;
77
+ this._localLanguage = langId;
78
+ this._onLanguageChangeEmitter.fire(langId);
79
+ }
80
+ getLangauges() {
81
+ return this._languages;
82
+ }
83
+ addLanguage(newLanguage) {
84
+ let oldLanguage = this._languages.get(newLanguage.languageId);
85
+ if (oldLanguage) {
86
+ this._languages.set(newLanguage.languageId, {
87
+ ...oldLanguage,
88
+ ...newLanguage,
89
+ contents: {
90
+ ...oldLanguage.contents,
91
+ ...newLanguage.contents
92
+ }
93
+ });
94
+ } else {
95
+ this._languages.set(newLanguage.languageId, newLanguage);
96
+ }
97
+ }
98
+ };
99
+ var I18n = new I18nImpl([en_US_default, zh_CN_default]);
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ I18n
103
+ });
104
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/i18n/zh-CN.ts","../src/i18n/en-US.ts"],"sourcesContent":["import { Emitter } from '@flowgram.ai/utils';\n\ninterface I18nLanguage {\n languageId: string;\n languageName?: string;\n localizedLanguageName?: string;\n contents: Record<string, string>;\n}\n\nimport zhCNLanguageDefault from './i18n/zh-CN';\nimport enUSLanguageDefault from './i18n/en-US';\n\nclass I18nImpl {\n private _languages = new Map<string, I18nLanguage>();\n\n private _localLanguage = 'en-US';\n\n private _onLanguageChangeEmitter = new Emitter<string>();\n\n readonly onLanguageChange = this._onLanguageChangeEmitter.event;\n\n constructor(languages: I18nLanguage[]) {\n languages.forEach((language) => this.addLanguage(language));\n }\n\n /**\n * TODO support replace\n * @param key\n * @param options\n */\n t(key: string, options?: { disableReturnKey?: boolean }): string {\n const contents: Record<string, string> =\n this._languages.get(this._localLanguage)?.contents || {};\n if (contents[key]) {\n return contents[key];\n }\n if (options?.disableReturnKey) return '';\n return key;\n }\n\n getLocalLanguage() {\n return this._localLanguage;\n }\n\n setLocalLanguage(langId: string) {\n if (langId === this._localLanguage) return;\n this._localLanguage = langId;\n this._onLanguageChangeEmitter.fire(langId);\n }\n\n getLangauges() {\n return this._languages;\n }\n\n addLanguage(newLanguage: I18nLanguage): void {\n let oldLanguage = this._languages.get(newLanguage.languageId);\n if (oldLanguage) {\n this._languages.set(newLanguage.languageId, {\n ...oldLanguage,\n ...newLanguage,\n contents: {\n ...oldLanguage.contents,\n ...newLanguage.contents,\n },\n });\n } else {\n this._languages.set(newLanguage.languageId, newLanguage);\n }\n }\n}\n\nconst I18n = new I18nImpl([enUSLanguageDefault, zhCNLanguageDefault]);\n\nexport { I18n, I18nLanguage };\n","export default {\n languageId: 'zh-CN',\n languageName: 'Chinese',\n localizedLanguageName: '中文(中国)',\n contents: {\n Yes: '是',\n No: '否',\n },\n};\n","export default {\n languageId: 'en-US',\n languageName: 'English',\n localizedLanguageName: 'English',\n contents: {\n Yes: 'Yes',\n No: 'No',\n },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwB;;;ACAxB,IAAO,gBAAQ;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,UAAU;AAAA,IACR,KAAK;AAAA,IACL,IAAI;AAAA,EACN;AACF;;;ACRA,IAAO,gBAAQ;AAAA,EACb,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,UAAU;AAAA,IACR,KAAK;AAAA,IACL,IAAI;AAAA,EACN;AACF;;;AFIA,IAAM,WAAN,MAAe;AAAA,EASb,YAAY,WAA2B;AARvC,SAAQ,aAAa,oBAAI,IAA0B;AAEnD,SAAQ,iBAAiB;AAEzB,SAAQ,2BAA2B,IAAI,qBAAgB;AAEvD,SAAS,mBAAmB,KAAK,yBAAyB;AAGxD,cAAU,QAAQ,CAAC,aAAa,KAAK,YAAY,QAAQ,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,EAAE,KAAa,SAAkD;AAC/D,UAAM,WACJ,KAAK,WAAW,IAAI,KAAK,cAAc,GAAG,YAAY,CAAC;AACzD,QAAI,SAAS,GAAG,GAAG;AACjB,aAAO,SAAS,GAAG;AAAA,IACrB;AACA,QAAI,SAAS,iBAAkB,QAAO;AACtC,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,iBAAiB,QAAgB;AAC/B,QAAI,WAAW,KAAK,eAAgB;AACpC,SAAK,iBAAiB;AACtB,SAAK,yBAAyB,KAAK,MAAM;AAAA,EAC3C;AAAA,EAEA,eAAe;AACb,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,aAAiC;AAC3C,QAAI,cAAc,KAAK,WAAW,IAAI,YAAY,UAAU;AAC5D,QAAI,aAAa;AACf,WAAK,WAAW,IAAI,YAAY,YAAY;AAAA,QAC1C,GAAG;AAAA,QACH,GAAG;AAAA,QACH,UAAU;AAAA,UACR,GAAG,YAAY;AAAA,UACf,GAAG,YAAY;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,OAAO;AACL,WAAK,WAAW,IAAI,YAAY,YAAY,WAAW;AAAA,IACzD;AAAA,EACF;AACF;AAEA,IAAM,OAAO,IAAI,SAAS,CAAC,eAAqB,aAAmB,CAAC;","names":[]}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@flowgram.ai/i18n",
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "exports": {
6
+ "types": "./dist/index.d.ts",
7
+ "import": "./dist/esm/index.js",
8
+ "require": "./dist/index.js"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "module": "./dist/esm/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "dependencies": {
17
+ "@flowgram.ai/utils": "0.1.0"
18
+ },
19
+ "devDependencies": {
20
+ "@testing-library/react": "^12",
21
+ "@testing-library/react-hooks": "^8.0.1",
22
+ "@types/lodash": "^4.14.137",
23
+ "@types/react": "^18",
24
+ "@types/react-dom": "^18",
25
+ "@vitest/coverage-v8": "^0.32.0",
26
+ "eslint": "^8.54.0",
27
+ "tsup": "^8.0.1",
28
+ "vitest": "^0.34.6",
29
+ "@flowgram.ai/ts-config": "0.1.0",
30
+ "@flowgram.ai/eslint-config": "0.1.0"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "registry": "https://registry.npmjs.org/"
35
+ },
36
+ "scripts": {
37
+ "build": "npm run build:fast -- --dts-resolve",
38
+ "build:fast": "tsup src/index.ts --format cjs,esm --sourcemap --legacy-output",
39
+ "build:watch": "npm run build:fast -- --dts-resolve",
40
+ "clean": "rimraf dist",
41
+ "test": "vitest run",
42
+ "test:cov": "vitest run --coverage",
43
+ "watch": "npm run build:fast -- --dts-resolve --watch --ignore-watch dist"
44
+ }
45
+ }