@coffic/cosy-ui 0.6.36 → 0.6.38

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.
@@ -2,103 +2,103 @@ import { defineCollection, z } from 'astro:content';
2
2
  import { glob } from 'astro/loaders';
3
3
 
4
4
  export const makeArticleCollection = (base: string) => {
5
- return defineCollection({
6
- loader: glob({
7
- pattern: '**/*.{md,mdx}',
8
- base,
9
- }),
10
- schema: z.object({
11
- title: z.string(),
12
- folder: z.boolean(),
13
- order: z.number(),
14
- description: z.string().optional(),
15
- }),
16
- });
5
+ return defineCollection({
6
+ loader: glob({
7
+ pattern: '**/*.{md,mdx}',
8
+ base,
9
+ }),
10
+ schema: z.object({
11
+ title: z.string().optional(),
12
+ folder: z.boolean().optional(),
13
+ order: z.number().optional(),
14
+ description: z.string().optional(),
15
+ }),
16
+ });
17
17
  };
18
18
 
19
19
  export const makeBlogCollection = (base: string) => {
20
- return defineCollection({
21
- loader: glob({
22
- pattern: '**/*.{md,mdx}',
23
- base,
24
- }),
25
- schema: z.object({
26
- title: z.string(),
27
- description: z.string().optional(),
28
- tags: z.array(z.string()).optional(),
29
- date: z.date().optional(),
30
- authors: z
31
- .array(
32
- z.object({
33
- name: z.string(),
34
- picture: z.string().optional(),
35
- url: z.string().optional(),
36
- })
37
- )
38
- .optional(),
39
- }),
40
- });
20
+ return defineCollection({
21
+ loader: glob({
22
+ pattern: '**/*.{md,mdx}',
23
+ base,
24
+ }),
25
+ schema: z.object({
26
+ title: z.string(),
27
+ description: z.string().optional(),
28
+ tags: z.array(z.string()).optional(),
29
+ date: z.date().optional(),
30
+ authors: z
31
+ .array(
32
+ z.object({
33
+ name: z.string(),
34
+ picture: z.string().optional(),
35
+ url: z.string().optional(),
36
+ })
37
+ )
38
+ .optional(),
39
+ }),
40
+ });
41
41
  };
42
42
 
43
43
  export const makeCourseCollection = (base: string) => {
44
- return defineCollection({
45
- loader: glob({
46
- pattern: '**/*.{md,mdx}',
47
- base,
48
- }),
49
- schema: z.object({
50
- title: z.string(),
51
- description: z.string().optional(),
52
- folder: z.boolean(),
53
- order: z.number(),
54
- }),
55
- });
44
+ return defineCollection({
45
+ loader: glob({
46
+ pattern: '**/*.{md,mdx}',
47
+ base,
48
+ }),
49
+ schema: z.object({
50
+ title: z.string().optional(),
51
+ description: z.string().optional(),
52
+ folder: z.boolean().optional(),
53
+ order: z.number().optional(),
54
+ }),
55
+ });
56
56
  };
57
57
 
58
58
  export const makeExperimentCollection = (base: string) => {
59
- return defineCollection({
60
- loader: glob({
61
- pattern: '**/*.{md,mdx}',
62
- base,
63
- }),
64
- schema: z.object({
65
- title: z.string(),
66
- description: z.string().optional(),
67
- pubDate: z.date().optional(),
68
- }),
69
- });
59
+ return defineCollection({
60
+ loader: glob({
61
+ pattern: '**/*.{md,mdx}',
62
+ base,
63
+ }),
64
+ schema: z.object({
65
+ title: z.string().optional(),
66
+ description: z.string().optional(),
67
+ pubDate: z.date().optional(),
68
+ }),
69
+ });
70
70
  };
71
71
 
72
72
  export const makeLessonCollection = (base: string) => {
73
- return defineCollection({
74
- loader: glob({
75
- pattern: '**/*.{md,mdx}',
76
- base,
77
- }),
78
- schema: z.object({
79
- title: z.string(),
80
- description: z.string().optional(),
81
- authors: z
82
- .array(
83
- z.object({
84
- name: z.string(),
85
- picture: z.string().optional(),
86
- })
87
- )
88
- .optional(),
89
- }),
90
- });
73
+ return defineCollection({
74
+ loader: glob({
75
+ pattern: '**/*.{md,mdx}',
76
+ base,
77
+ }),
78
+ schema: z.object({
79
+ title: z.string().optional(),
80
+ description: z.string().optional(),
81
+ authors: z
82
+ .array(
83
+ z.object({
84
+ name: z.string(),
85
+ picture: z.string().optional(),
86
+ })
87
+ )
88
+ .optional(),
89
+ }),
90
+ });
91
91
  };
92
92
 
93
93
  export const makeMetaCollection = (base: string) => {
94
- return defineCollection({
95
- loader: glob({
96
- pattern: '**/*.{md,mdx}',
97
- base,
98
- }),
99
- schema: z.object({
100
- title: z.string(),
101
- description: z.string().optional(),
102
- }),
103
- });
94
+ return defineCollection({
95
+ loader: glob({
96
+ pattern: '**/*.{md,mdx}',
97
+ base,
98
+ }),
99
+ schema: z.object({
100
+ title: z.string().optional(),
101
+ description: z.string().optional(),
102
+ }),
103
+ });
104
104
  };
@@ -0,0 +1,240 @@
1
+ /**
2
+ * 多语言工具类
3
+ *
4
+ * 这个类提供了一套完整的多语言文本管理工具,用于在组件库中处理国际化需求。
5
+ * 主要特点:
6
+ * - 提供链式API来创建和管理多语言文本
7
+ * - 支持动态添加和获取不同语言的文本
8
+ * - 可以通过属性访问器直接获取特定语言的文本
9
+ * - 支持合并多个语言条目
10
+ *
11
+ * 使用示例:
12
+ * ```typescript
13
+ * // 创建并设置多语言文本
14
+ * const entry = new LangEntry()
15
+ * .setZh('你好')
16
+ * .setEn('Hello')
17
+ * .setJa('こんにちは');
18
+ *
19
+ * // 获取特定语言的文本
20
+ * console.log(entry.get('zh-cn')); // 你好
21
+ *
22
+ * // 使用代理后可以通过属性访问
23
+ * // 需要通过 langEntryHandler 创建代理
24
+ * const proxiedEntry = new Proxy(entry, langEntryHandler);
25
+ * console.log(proxiedEntry.en); // Hello
26
+ * console.log(proxiedEntry['zh-cn']); // 你好
27
+ * ```
28
+ */
29
+ export class LangEntry {
30
+ private translations: Record<string, string> = {};
31
+
32
+ /**
33
+ * 设置中文文本
34
+ *
35
+ * @param text 中文文本
36
+ * @returns 返回当前实例,支持链式调用
37
+ * @example
38
+ * const entry = new LangEntry().setZh('你好');
39
+ */
40
+ setZh(text: string): LangEntry {
41
+ this.translations['zh-cn'] = text;
42
+ return this;
43
+ }
44
+
45
+ /**
46
+ * 设置英文文本
47
+ *
48
+ * @param text 英文文本
49
+ * @returns 返回当前实例,支持链式调用
50
+ * @example
51
+ * const entry = new LangEntry().setEn('Hello');
52
+ */
53
+ setEn(text: string): LangEntry {
54
+ this.translations['en'] = text;
55
+ return this;
56
+ }
57
+
58
+ /**
59
+ * 设置日文文本
60
+ *
61
+ * @param text 日文文本
62
+ * @returns 返回当前实例,支持链式调用
63
+ * @example
64
+ * const entry = new LangEntry().setJa('こんにちは');
65
+ */
66
+ setJa(text: string): LangEntry {
67
+ this.translations['ja'] = text;
68
+ return this;
69
+ }
70
+
71
+ /**
72
+ * 设置任意语言的文本
73
+ *
74
+ * @param lang 语言代码,如 'fr' 表示法语,'de' 表示德语等
75
+ * @param text 文本内容
76
+ * @returns 返回当前实例,支持链式调用
77
+ * @example
78
+ * const entry = new LangEntry().set('fr', 'Bonjour').set('de', 'Hallo');
79
+ */
80
+ set(lang: string, text: string): LangEntry {
81
+ this.translations[lang] = text;
82
+ return this;
83
+ }
84
+
85
+ /**
86
+ * 设置所有语言为相同的文本值
87
+ * 适用于不需要翻译的品牌名、专有名词等
88
+ *
89
+ * @param text 所有语言共用的文本
90
+ * @returns 返回当前实例,支持链式调用
91
+ * @example
92
+ * const brandName = new LangEntry().setAll('Cosy UI');
93
+ */
94
+ setAll(text: string): LangEntry {
95
+ // 如果已有语言,则更新它们
96
+ if (Object.keys(this.translations).length > 0) {
97
+ for (const lang of Object.keys(this.translations)) {
98
+ this.translations[lang] = text;
99
+ }
100
+ } else {
101
+ // 默认至少设置中英文
102
+ this.translations['zh-cn'] = text;
103
+ this.translations['en'] = text;
104
+ }
105
+ return this;
106
+ }
107
+
108
+ /**
109
+ * 获取指定语言的文本
110
+ *
111
+ * @param lang 语言代码
112
+ * @param defaultValue 默认值,如果未找到翻译则返回此值
113
+ * @returns 指定语言的文本,如果不存在则返回默认值或第一个可用的翻译或空字符串
114
+ * @example
115
+ * const entry = new LangEntry().setZh('你好').setEn('Hello');
116
+ * console.log(entry.get('zh-cn')); // 你好
117
+ * console.log(entry.get('fr', 'Default')); // Default
118
+ */
119
+ get(lang: string, defaultValue?: string): string {
120
+ return this.translations[lang] || defaultValue || this.getFirst() || '';
121
+ }
122
+
123
+ /**
124
+ * 获取第一个可用的翻译文本
125
+ *
126
+ * @returns 第一个可用的翻译文本,如果没有任何翻译则返回 undefined
127
+ * @example
128
+ * const entry = new LangEntry().setEn('Hello').setZh('你好');
129
+ * console.log(entry.getFirst()); // 取决于对象属性顺序,可能是 'Hello' 或 '你好'
130
+ */
131
+ getFirst(): string | undefined {
132
+ const keys = Object.keys(this.translations);
133
+ return keys.length > 0 ? this.translations[keys[0]] : undefined;
134
+ }
135
+
136
+ /**
137
+ * 获取所有可用的语言代码
138
+ *
139
+ * @returns 所有已设置翻译的语言代码数组
140
+ * @example
141
+ * const entry = new LangEntry().setZh('你好').setEn('Hello');
142
+ * console.log(entry.getLanguages()); // ['zh-cn', 'en']
143
+ */
144
+ getLanguages(): string[] {
145
+ return Object.keys(this.translations);
146
+ }
147
+
148
+ /**
149
+ * 获取所有翻译
150
+ *
151
+ * @returns 包含所有语言翻译的对象副本
152
+ * @example
153
+ * const entry = new LangEntry().setZh('你好').setEn('Hello');
154
+ * console.log(entry.getAll()); // { 'zh-cn': '你好', 'en': 'Hello' }
155
+ */
156
+ getAll(): Record<string, string> {
157
+ return { ...this.translations };
158
+ }
159
+
160
+ /**
161
+ * 合并另一个语言条目
162
+ * 如果两个条目有相同的语言,则后者会覆盖前者
163
+ *
164
+ * @param other 要合并的语言条目
165
+ * @returns 返回当前实例,支持链式调用
166
+ * @example
167
+ * const entry1 = new LangEntry().setZh('你好').setEn('Hello');
168
+ * const entry2 = new LangEntry().setJa('こんにちは').setEn('Hi');
169
+ * entry1.merge(entry2);
170
+ * console.log(entry1.getAll()); // { 'zh-cn': '你好', 'en': 'Hi', 'ja': 'こんにちは' }
171
+ */
172
+ merge(other: LangEntry): LangEntry {
173
+ Object.assign(this.translations, other.getAll());
174
+ return this;
175
+ }
176
+
177
+ /**
178
+ * 检查是否包含指定语言
179
+ *
180
+ * @param lang 语言代码
181
+ * @returns 如果包含指定语言则返回 true,否则返回 false
182
+ * @example
183
+ * const entry = new LangEntry().setZh('你好').setEn('Hello');
184
+ * console.log(entry.has('zh-cn')); // true
185
+ * console.log(entry.has('ja')); // false
186
+ */
187
+ has(lang: string): boolean {
188
+ return lang in this.translations;
189
+ }
190
+
191
+ /**
192
+ * 转换为普通对象
193
+ *
194
+ * @returns 包含所有语言翻译的对象副本
195
+ * @example
196
+ * const entry = new LangEntry().setZh('你好').setEn('Hello');
197
+ * const obj = entry.toObject();
198
+ * console.log(obj); // { 'zh-cn': '你好', 'en': 'Hello' }
199
+ */
200
+ toObject(): Record<string, string> {
201
+ return { ...this.translations };
202
+ }
203
+
204
+ /**
205
+ * 允许以对象属性方式访问翻译
206
+ * 例如: entry['zh-cn'] 或 entry.en
207
+ *
208
+ * 注意:这个索引签名本身不提供功能,实际的属性访问是通过 langEntryHandler 代理实现的
209
+ */
210
+ [key: string]: any;
211
+ }
212
+
213
+ /**
214
+ * 创建索引访问器的Proxy处理程序
215
+ *
216
+ * 这个处理程序允许通过属性访问方式获取语言翻译,例如:
217
+ * - entry.en 代替 entry.get('en')
218
+ * - entry['zh-cn'] 代替 entry.get('zh-cn')
219
+ *
220
+ * @example
221
+ * const entry = new LangEntry().setZh('你好').setEn('Hello');
222
+ * const proxiedEntry = new Proxy(entry, langEntryHandler);
223
+ * console.log(proxiedEntry.en); // Hello
224
+ * console.log(proxiedEntry['zh-cn']); // 你好
225
+ */
226
+ export const langEntryHandler: ProxyHandler<LangEntry> = {
227
+ get(target: LangEntry, prop: string | symbol): any {
228
+ // 如果是字符串属性并且不是LangEntry的方法,则尝试作为语言代码获取翻译
229
+ if (
230
+ typeof prop === 'string' &&
231
+ !(prop in Object.getPrototypeOf(target)) &&
232
+ prop !== 'translations'
233
+ ) {
234
+ return target.get(prop);
235
+ }
236
+
237
+ // 否则返回原始属性
238
+ return (target as any)[prop];
239
+ },
240
+ };
@@ -1,221 +1,150 @@
1
- /**
2
- * 多语言工具类
3
- * 提供链式API来创建和管理多语言文本
4
- */
5
- export class LangEntry {
6
- private translations: Record<string, string> = {};
7
-
8
- /**
9
- * 设置中文文本
10
- * @param text 中文文本
11
- */
12
- setZh(text: string): LangEntry {
13
- this.translations['zh-cn'] = text;
14
- return this;
15
- }
16
-
17
- /**
18
- * 设置英文文本
19
- * @param text 英文文本
20
- */
21
- setEn(text: string): LangEntry {
22
- this.translations['en'] = text;
23
- return this;
24
- }
25
-
26
- /**
27
- * 设置日文文本
28
- * @param text 日文文本
29
- */
30
- setJa(text: string): LangEntry {
31
- this.translations['ja'] = text;
32
- return this;
33
- }
34
-
35
- /**
36
- * 设置任意语言的文本
37
- * @param lang 语言代码
38
- * @param text 文本内容
39
- */
40
- set(lang: string, text: string): LangEntry {
41
- this.translations[lang] = text;
42
- return this;
43
- }
44
-
45
- /**
46
- * 设置所有语言为相同的文本值
47
- * 适用于不需要翻译的品牌名、专有名词等
48
- * @param text 所有语言共用的文本
49
- */
50
- setAll(text: string): LangEntry {
51
- // 如果已有语言,则更新它们
52
- if (Object.keys(this.translations).length > 0) {
53
- for (const lang of Object.keys(this.translations)) {
54
- this.translations[lang] = text;
55
- }
56
- } else {
57
- // 默认至少设置中英文
58
- this.translations['zh-cn'] = text;
59
- this.translations['en'] = text;
60
- }
61
- return this;
62
- }
63
-
64
- /**
65
- * 获取指定语言的文本
66
- * @param lang 语言代码
67
- * @param defaultValue 默认值,如果未找到翻译则返回此值
68
- */
69
- get(lang: string, defaultValue?: string): string {
70
- return this.translations[lang] || defaultValue || this.getFirst() || '';
71
- }
72
-
73
- /**
74
- * 获取第一个可用的翻译文本
75
- */
76
- getFirst(): string | undefined {
77
- const keys = Object.keys(this.translations);
78
- return keys.length > 0 ? this.translations[keys[0]] : undefined;
79
- }
80
-
81
- /**
82
- * 获取所有可用的语言代码
83
- */
84
- getLanguages(): string[] {
85
- return Object.keys(this.translations);
86
- }
87
-
88
- /**
89
- * 获取所有翻译
90
- */
91
- getAll(): Record<string, string> {
92
- return { ...this.translations };
93
- }
94
-
95
- /**
96
- * 合并另一个语言条目
97
- * @param other 要合并的语言条目
98
- */
99
- merge(other: LangEntry): LangEntry {
100
- Object.assign(this.translations, other.getAll());
101
- return this;
102
- }
103
-
104
- /**
105
- * 检查是否包含指定语言
106
- * @param lang 语言代码
107
- */
108
- has(lang: string): boolean {
109
- return lang in this.translations;
110
- }
111
-
112
- /**
113
- * 转换为普通对象
114
- */
115
- toObject(): Record<string, string> {
116
- return { ...this.translations };
117
- }
118
-
119
- /**
120
- * 允许以对象属性方式访问翻译
121
- * 例如: entry['zh-cn'] 或 entry.en
122
- */
123
- [key: string]: any;
124
- }
125
-
126
- // 创建索引访问器的Proxy处理程序
127
- const langEntryHandler: ProxyHandler<LangEntry> = {
128
- get(target: LangEntry, prop: string | symbol): any {
129
- // 如果是字符串属性并且不是LangEntry的方法,则尝试作为语言代码获取翻译
130
- if (
131
- typeof prop === 'string' &&
132
- !(prop in Object.getPrototypeOf(target)) &&
133
- prop !== 'translations'
134
- ) {
135
- return target.get(prop);
136
- }
137
-
138
- // 否则返回原始属性
139
- return (target as any)[prop];
140
- },
141
- };
1
+ import { LangEntry, langEntryHandler } from "./lang_entry";
142
2
 
143
3
  /**
144
4
  * 提供快捷访问的LangPackage
145
- * 可以直接通过静态方法创建和配置语言条目
5
+ *
6
+ * 这个类提供了一系列静态方法,用于快速创建和配置多语言文本条目。
7
+ * 它是对 LangEntry 类的便捷封装,简化了多语言文本的创建和管理过程。
8
+ *
9
+ * 使用示例:
10
+ * ```typescript
11
+ * // 创建一个空的语言条目并逐步添加翻译
12
+ * const emptyEntry = LangPackage.make();
13
+ * emptyEntry.setZh('你好').setEn('Hello');
14
+ *
15
+ * // 从对象创建语言条目
16
+ * const fromObj = LangPackage.from({
17
+ * 'zh-cn': '你好',
18
+ * 'en': 'Hello',
19
+ * 'ja': 'こんにちは'
20
+ * });
21
+ *
22
+ * // 创建只包含中英文的语言条目
23
+ * const zhEnEntry = LangPackage.zhEn('你好', 'Hello');
24
+ *
25
+ * // 创建所有语言都使用相同文本的条目(适用于品牌名等)
26
+ * const brandName = LangPackage.common('Cosy UI');
27
+ *
28
+ * // 访问翻译的方式
29
+ * console.log(zhEnEntry.get('zh-cn')); // 你好
30
+ * console.log(zhEnEntry['zh-cn']); // 你好 (通过代理实现的属性访问)
31
+ * console.log(zhEnEntry.en); // Hello (简写形式)
32
+ * ```
146
33
  */
147
34
  export class LangPackage {
148
- /**
149
- * 创建一个新的语言条目
150
- */
151
- static make(): LangEntry {
152
- return new Proxy(new LangEntry(), langEntryHandler);
153
- }
154
-
155
- /**
156
- * 从对象创建语言条目
157
- * @param obj 包含语言翻译的对象
158
- */
159
- static from(obj: Record<string, string>): LangEntry {
160
- const entry = new LangEntry();
161
- Object.entries(obj).forEach(([lang, text]) => {
162
- entry.set(lang, text);
163
- });
164
- return new Proxy(entry, langEntryHandler);
165
- }
166
-
167
- /**
168
- * 创建只包含中文和英文的语言条目
169
- * @param zh 中文文本
170
- * @param en 英文文本
171
- */
172
- static zhEn(zh: string, en: string): LangEntry {
173
- return new Proxy(new LangEntry().setZh(zh).setEn(en), langEntryHandler);
174
- }
175
-
176
- /**
177
- * 创建所有语言都使用相同文本的语言条目
178
- * 适用于品牌名、产品名等不需要翻译的文本
179
- * @param text 所有语言共用的文本
180
- */
181
- static common(text: string): LangEntry {
182
- return new Proxy(new LangEntry().setAll(text), langEntryHandler);
183
- }
184
-
185
- /**
186
- * 设置中文文本
187
- * 快捷方法,直接返回一个新的LangEntry实例
188
- * @param text 中文文本
189
- */
190
- static setZh(text: string): LangEntry {
191
- return new Proxy(new LangEntry().setZh(text), langEntryHandler);
192
- }
193
-
194
- /**
195
- * 设置英文文本
196
- * 快捷方法,直接返回一个新的LangEntry实例
197
- * @param text 英文文本
198
- */
199
- static setEn(text: string): LangEntry {
200
- return new Proxy(new LangEntry().setEn(text), langEntryHandler);
201
- }
202
-
203
- /**
204
- * 设置日文文本
205
- * 快捷方法,直接返回一个新的LangEntry实例
206
- * @param text 日文文本
207
- */
208
- static setJa(text: string): LangEntry {
209
- return new Proxy(new LangEntry().setJa(text), langEntryHandler);
210
- }
211
-
212
- /**
213
- * 设置任意语言的文本
214
- * 快捷方法,直接返回一个新的LangEntry实例
215
- * @param lang 语言代码
216
- * @param text 文本内容
217
- */
218
- static set(lang: string, text: string): LangEntry {
219
- return new Proxy(new LangEntry().set(lang, text), langEntryHandler);
220
- }
35
+ /**
36
+ * 创建一个新的空语言条目
37
+ *
38
+ * @returns 返回一个代理包装的 LangEntry 实例,可以通过属性方式访问翻译
39
+ * @example
40
+ * const entry = LangPackage.make();
41
+ * entry.setZh('你好').setEn('Hello');
42
+ */
43
+ static make(): LangEntry {
44
+ return new Proxy(new LangEntry(), langEntryHandler);
45
+ }
46
+
47
+ /**
48
+ * 从对象创建语言条目
49
+ *
50
+ * @param obj 包含语言翻译的对象,键为语言代码,值为对应的翻译文本
51
+ * @returns 返回一个代理包装的 LangEntry 实例
52
+ * @example
53
+ * const entry = LangPackage.from({
54
+ * 'zh-cn': '你好',
55
+ * 'en': 'Hello',
56
+ * 'ja': 'こんにちは'
57
+ * });
58
+ */
59
+ static from(obj: Record<string, string>): LangEntry {
60
+ const entry = new LangEntry();
61
+ Object.entries(obj).forEach(([lang, text]) => {
62
+ entry.set(lang, text);
63
+ });
64
+ return new Proxy(entry, langEntryHandler);
65
+ }
66
+
67
+ /**
68
+ * 创建只包含中文和英文的语言条目
69
+ *
70
+ * @param zh 中文文本
71
+ * @param en 英文文本
72
+ * @returns 返回一个代理包装的 LangEntry 实例
73
+ * @example
74
+ * const entry = LangPackage.zhEn('你好', 'Hello');
75
+ * console.log(entry.zh-cn); // 你好
76
+ * console.log(entry.en); // Hello
77
+ */
78
+ static zhEn(zh: string, en: string): LangEntry {
79
+ return new Proxy(new LangEntry().setZh(zh).setEn(en), langEntryHandler);
80
+ }
81
+
82
+ /**
83
+ * 创建所有语言都使用相同文本的语言条目
84
+ * 适用于品牌名、产品名等不需要翻译的文本
85
+ *
86
+ * @param text 所有语言共用的文本
87
+ * @returns 返回一个代理包装的 LangEntry 实例
88
+ * @example
89
+ * const brandName = LangPackage.common('Cosy UI');
90
+ * // 所有语言都会返回相同的值
91
+ * console.log(brandName.zh-cn); // Cosy UI
92
+ * console.log(brandName.en); // Cosy UI
93
+ */
94
+ static common(text: string): LangEntry {
95
+ return new Proxy(new LangEntry().setAll(text), langEntryHandler);
96
+ }
97
+
98
+ /**
99
+ * 设置中文文本
100
+ * 快捷方法,直接返回一个新的LangEntry实例
101
+ *
102
+ * @param text 中文文本
103
+ * @returns 返回一个代理包装的 LangEntry 实例,只包含中文翻译
104
+ * @example
105
+ * const entry = LangPackage.setZh('你好');
106
+ */
107
+ static setZh(text: string): LangEntry {
108
+ return new Proxy(new LangEntry().setZh(text), langEntryHandler);
109
+ }
110
+
111
+ /**
112
+ * 设置英文文本
113
+ * 快捷方法,直接返回一个新的LangEntry实例
114
+ *
115
+ * @param text 英文文本
116
+ * @returns 返回一个代理包装的 LangEntry 实例,只包含英文翻译
117
+ * @example
118
+ * const entry = LangPackage.setEn('Hello');
119
+ */
120
+ static setEn(text: string): LangEntry {
121
+ return new Proxy(new LangEntry().setEn(text), langEntryHandler);
122
+ }
123
+
124
+ /**
125
+ * 设置日文文本
126
+ * 快捷方法,直接返回一个新的LangEntry实例
127
+ *
128
+ * @param text 日文文本
129
+ * @returns 返回一个代理包装的 LangEntry 实例,只包含日文翻译
130
+ * @example
131
+ * const entry = LangPackage.setJa('こんにちは');
132
+ */
133
+ static setJa(text: string): LangEntry {
134
+ return new Proxy(new LangEntry().setJa(text), langEntryHandler);
135
+ }
136
+
137
+ /**
138
+ * 设置任意语言的文本
139
+ * 快捷方法,直接返回一个新的LangEntry实例
140
+ *
141
+ * @param lang 语言代码
142
+ * @param text 文本内容
143
+ * @returns 返回一个代理包装的 LangEntry 实例,包含指定语言的翻译
144
+ * @example
145
+ * const entry = LangPackage.set('fr', 'Bonjour');
146
+ */
147
+ static set(lang: string, text: string): LangEntry {
148
+ return new Proxy(new LangEntry().set(lang, text), langEntryHandler);
149
+ }
221
150
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coffic/cosy-ui",
3
- "version": "0.6.36",
3
+ "version": "0.6.38",
4
4
  "description": "An astro component library",
5
5
  "author": {
6
6
  "name": "nookery",