@yxw007/translate 0.4.1 → 1.0.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.
Files changed (56) hide show
  1. package/README.md +165 -56
  2. package/README_zh-CN.md +166 -52
  3. package/dist/browser/index.cjs +2303 -2886
  4. package/dist/browser/index.esm.js +2303 -2876
  5. package/dist/browser/index.esm.min.js +28 -1
  6. package/dist/browser/index.min.cjs +28 -1
  7. package/dist/browser/index.umd.js +2393 -2972
  8. package/dist/browser/index.umd.min.js +28 -1
  9. package/dist/engines/amazon.d.ts +7 -0
  10. package/dist/engines/azure.d.ts +9 -0
  11. package/dist/engines/baidu.d.ts +6 -0
  12. package/dist/engines/deepl.d.ts +88 -0
  13. package/dist/engines/google.d.ts +3 -0
  14. package/dist/engines/helper.d.ts +2 -0
  15. package/dist/engines/index.d.ts +16 -0
  16. package/dist/engines/openai.d.ts +8 -0
  17. package/dist/engines/tencent.d.ts +7 -0
  18. package/dist/engines/yandex.d.ts +5 -0
  19. package/dist/index.d.ts +20 -5342
  20. package/dist/language/check/baidu.d.ts +9 -0
  21. package/dist/language/check/index.d.ts +775 -0
  22. package/dist/language/engines/amazon.d.ts +158 -0
  23. package/dist/language/engines/azure.d.ts +278 -0
  24. package/dist/language/engines/baidu.d.ts +424 -0
  25. package/dist/language/engines/deepl.d.ts +77 -0
  26. package/dist/language/engines/google.d.ts +494 -0
  27. package/dist/language/engines/index.d.ts +1973 -0
  28. package/dist/language/engines/openai.d.ts +494 -0
  29. package/dist/language/engines/tencent.d.ts +44 -0
  30. package/dist/language/index.d.ts +8 -0
  31. package/dist/language/origin/deepl.d.ts +36 -0
  32. package/dist/language/origin/index.d.ts +998 -0
  33. package/dist/language/origin/tencent.d.ts +22 -0
  34. package/dist/language/target/amazon.d.ts +78 -0
  35. package/dist/language/target/azure.d.ts +138 -0
  36. package/dist/language/target/baidu.d.ts +211 -0
  37. package/dist/language/target/deepl.d.ts +39 -0
  38. package/dist/language/target/google.d.ts +246 -0
  39. package/dist/language/target/index.d.ts +1000 -0
  40. package/dist/language/target/tencent.d.ts +21 -0
  41. package/dist/node/index.cjs +2300 -2853
  42. package/dist/node/index.js +2299 -2844
  43. package/dist/node/index.min.cjs +28 -1
  44. package/dist/node/index.min.js +28 -1
  45. package/dist/package.json +14 -23
  46. package/dist/types/index.d.ts +56 -0
  47. package/dist/types/typescript.d.ts +1 -0
  48. package/dist/utils/cache.d.ts +15 -0
  49. package/dist/utils/check.d.ts +2 -0
  50. package/dist/utils/constant.d.ts +2 -0
  51. package/dist/utils/index.d.ts +6 -0
  52. package/dist/utils/logger.d.ts +6 -0
  53. package/dist/utils/node.d.ts +2 -0
  54. package/dist/utils/path.d.ts +1 -0
  55. package/dist/utils/utils.d.ts +7 -0
  56. package/package.json +14 -23
package/README_zh-CN.md CHANGED
@@ -11,6 +11,7 @@
11
11
  Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套简单的api,让你可以轻松将一种语种翻译成另外一种语种。
12
12
 
13
13
  ## ❓ 为什么需要Translate?
14
+
14
15
  1. 市面上不少翻译工具库,基本都不太维护了
15
16
  2. 不是ts写的,使用时提示不够友好
16
17
  3. 功能单一,不支持批量翻译 or 只支持一种翻译引擎
@@ -19,6 +20,7 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
19
20
  > 说明:Translate 全部帮你搞定以上问题,未来将拓展更多内容
20
21
 
21
22
  ## ✨ 特点
23
+
22
24
  - 🌐 **多环境支持**:Node环境、浏览器环境
23
25
  - ✨ **简单易用**:提供了简洁的API,就可以轻松帮你翻译
24
26
  - 🌍 **支持多翻译引擎**:Google、Azure Translate、Amazon Translate、Deepl、Baidu、OpenAI等(未来将拓展更多)
@@ -28,6 +30,8 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
28
30
 
29
31
  > **特别提醒:虽然库已支持浏览器环境使用,但是请仅使用google engine翻译(google不需要key),使用其他翻译engine 需要配置key,在前端使用会导致key泄露,千万不要这么做**
30
32
 
33
+ > 浏览器产物已排除 Node 专用工具,例如文件系统辅助方法。浏览器环境请仅使用适合在前端暴露的翻译能力。
34
+
31
35
  ## 💻翻译引擎,集成情况
32
36
 
33
37
  | name | 支持 | 描述 |
@@ -41,6 +45,39 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
41
45
  | tencent | ✔ | 已投产,可以正常使用 |
42
46
  | yandex | | 由于我没有平台支持的银行账号,所以未调通(欢迎有条件的朋友帮忙调通,感谢) |
43
47
 
48
+ ## 🛠 开发命令
49
+
50
+ 当前项目已将 `rollup`、`eslint`、`prettier` 分别替换为 `rolldown`、`oxlint`、`oxfmt`。
51
+
52
+ ```bash
53
+ pnpm build
54
+ pnpm lint
55
+ pnpm lint:fix
56
+ pnpm format
57
+ pnpm format:check
58
+ pnpm test
59
+ ```
60
+
61
+ - `pnpm build`:使用 `rolldown` 构建 Node 与浏览器产物,并用 TypeScript 生成 `.d.ts` 声明文件。
62
+ - `pnpm lint`:执行 `oxlint` 和 `oxfmt --check`。
63
+ - `pnpm lint:fix`:执行 `oxlint --fix` 并用 `oxfmt` 自动格式化代码。
64
+ - `pnpm format`:使用 `oxfmt` 格式化仓库代码。
65
+ - `pnpm test`:运行默认稳定、无需外网的测试。
66
+
67
+ 依赖真实网络和第三方密钥的集成测试默认关闭。如需手动运行,请先设置 `RUN_INTEGRATION_TESTS=true` 再执行 `pnpm test`。
68
+
69
+ - Bash
70
+
71
+ ```bash
72
+ RUN_INTEGRATION_TESTS=true pnpm test
73
+ ```
74
+
75
+ - PowerShell
76
+
77
+ ```powershell
78
+ $env:RUN_INTEGRATION_TESTS = "true"
79
+ pnpm test
80
+ ```
44
81
 
45
82
  ## 🚀 安装
46
83
 
@@ -56,7 +93,7 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
56
93
  yarn add @yxw007/translate
57
94
  ```
58
95
 
59
- - pnpm
96
+ - pnpm
60
97
 
61
98
  ```bash
62
99
  pnpm i @yxw007/translate
@@ -67,18 +104,21 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
67
104
  ### Node
68
105
 
69
106
  - ESM
107
+
70
108
  ```typescript
71
- import { translator, engines } from "@yxw007/translate"
109
+ import { translator, engines } from "@yxw007/translate";
72
110
  ```
73
111
 
74
112
  - Commonjs
113
+
75
114
  ```typescript
76
- const { translator, engines } = required("@yxw007/translate")
115
+ const { translator, engines } = required("@yxw007/translate");
77
116
  ```
78
117
 
79
118
  - 翻译例子
119
+
80
120
  ```typescript
81
- translator.addEngine(engines.google());
121
+ translator.addEngine(engines.google);
82
122
  const res1 = await translator.translate("hello", { from: "en", to: "zh" });
83
123
  console.log(res1);
84
124
 
@@ -87,31 +127,36 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
87
127
  ```
88
128
 
89
129
  输出结果
130
+
90
131
  ```bash
91
132
  ['你好']
92
133
  ["你好", "好的"]
93
134
  ```
135
+
94
136
  - 语言检测例子
137
+
95
138
  ```typescript
96
- translator.addEngine(engines.google());
97
- const res1 = await translator.checkLanguage("hello", { engine:"google" });
139
+ translator.addEngine(engines.google);
140
+ const res1 = await translator.checkLanguage("hello", { engine: "google" });
98
141
  console.log(res1);
99
142
  ```
100
143
 
101
144
  输出结果
145
+
102
146
  ```bash
103
147
  en
104
148
  ```
105
149
 
106
150
  ### Browser
107
151
 
108
- 使用 jsDelivr CDN
152
+ 使用 jsDelivr CDN
109
153
 
110
154
  - `development`
155
+
111
156
  ```html
112
157
  <script src="https://cdn.jsdelivr.net/npm/@yxw007/translate@0.0.7/dist/browser/index.umd.js"></script>
113
158
  ```
114
-
159
+
115
160
  - `production`
116
161
 
117
162
  ```html
@@ -133,7 +178,7 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
133
178
  <script>
134
179
  (async () => {
135
180
  const { engines, translator } = translate;
136
- translator.addEngine(engines.google());
181
+ translator.addEngine(engines.google);
137
182
  const res = await translator.translate("hello", { from: "en", to: "zh" });
138
183
  console.log(res);
139
184
  })();
@@ -144,7 +189,7 @@ Translate 是一个支持多翻译引擎的翻译工具库,它提供了一套
144
189
 
145
190
  ```
146
191
 
147
- ## 📚 API
192
+ ## 📚 API
148
193
 
149
194
  ### Translator
150
195
 
@@ -168,6 +213,12 @@ class Translator {
168
213
  removeEngine(engineName: string) {
169
214
  ...
170
215
  }
216
+ getFromLanguages(engineName: string) {
217
+ ...
218
+ }
219
+ getToLanguages(engineName: string) {
220
+ ...
221
+ }
171
222
  translate<T extends Engines>(text: string | string[], options: TranslateOptions<T>) {
172
223
  ...
173
224
  }
@@ -181,7 +232,11 @@ class Translator {
181
232
  ```typescript
182
233
  export type Engine = {
183
234
  name: string;
184
- translate: <T extends Engines>(text: string | string[], opts: EngineTranslateOptions<T>) => Promise<string[]>;
235
+ getFromLanguages: () => Record<string, string>;
236
+ getToLanguages: () => Record<string, string>;
237
+ normalFromLanguage: (language?: string) => string;
238
+ normalToLanguage: (language?: string) => string;
239
+ translate: (text: string | string[], opts: EngineTranslateOptions) => Promise<string[]>;
185
240
  };
186
241
  ```
187
242
 
@@ -193,6 +248,15 @@ export type Engine = {
193
248
  translate: <T extends Engines>(text: string | string[], opts: EngineTranslateOptions<T>) => Promise<string[]>;
194
249
  ```
195
250
 
251
+ #### `getFromLanguages` / `getToLanguages`
252
+
253
+ 读取指定 Engine 的语言列表。
254
+
255
+ ```typescript
256
+ translator.getFromLanguages("google");
257
+ translator.getToLanguages("google");
258
+ ```
259
+
196
260
  #### TranslateOptions
197
261
 
198
262
  ```typescript
@@ -211,17 +275,60 @@ export type TranslateOptions<T extends Engines> = {
211
275
  };
212
276
  ```
213
277
 
214
- > 提示:如需了解各Engine语言支持情况,请到以下目录查看对应配置
215
-
216
- - from: [https://github.com/yxw007/translate/blob/master/src/language/origin/index.ts](https://github.com/yxw007/translate/blob/master/src/language/origin/index.ts)
217
- - to: [https://github.com/yxw007/translate/blob/master/src/language/target/index.ts](https://github.com/yxw007/translate/blob/master/src/language/target/index.ts)
278
+ > 提示:现在每个 Engine 都单独维护自己的 `from`/`to` 语言配置,可直接查看 `src/language/engines/*`。
218
279
 
219
280
  ### 各翻译Engine的Option
220
281
 
221
282
  #### BaseEngineOption
222
283
 
223
284
  ```typescript
224
- interface BaseEngineOption {}
285
+ interface BaseEngineOption {
286
+ fromLanguages?: Record<string, string>;
287
+ toLanguages?: Record<string, string>;
288
+ }
289
+ ```
290
+
291
+ > `fromLanguages` / `toLanguages` 仅用于某些工厂型 engine 初始化时传入自定义语言表,不会作为 engine 实例的公开字段暴露给上层。
292
+
293
+ #### 自定义 Engine
294
+
295
+ ```typescript
296
+ import { Translator, type Engine } from "@yxw007/translate";
297
+
298
+ const translator = new Translator();
299
+
300
+ const fromLanguages = { Auto: "auto", English: "en" };
301
+ const toLanguages = { Chinese: "zh", Japanese: "ja" };
302
+
303
+ const customEngine: Engine = {
304
+ name: "custom",
305
+ getFromLanguages() {
306
+ return fromLanguages;
307
+ },
308
+ getToLanguages() {
309
+ return toLanguages;
310
+ },
311
+ normalFromLanguage(language) {
312
+ if (!language || language === "auto") return "auto";
313
+ return fromLanguages[language as keyof typeof fromLanguages] ?? "";
314
+ },
315
+ normalToLanguage(language) {
316
+ if (!language) return "";
317
+ return toLanguages[language as keyof typeof toLanguages] ?? "";
318
+ },
319
+ async translate(text, options) {
320
+ const list = Array.isArray(text) ? text : [text];
321
+ return list.map((item) => `[${options.from}->${options.to}] ${item}`);
322
+ },
323
+ };
324
+
325
+ translator.addEngine(customEngine);
326
+ ```
327
+
328
+ 内置 engine 直接引用即可:
329
+
330
+ ```typescript
331
+ translator.addEngine(engines.google);
225
332
  ```
226
333
 
227
334
  #### AzureEngineOption
@@ -237,11 +344,10 @@ interface AzureEngineOption extends BaseEngineOption {
237
344
 
238
345
  - 相关文档:[rest-api-guide](https://learn.microsoft.com/zh-cn/azure/ai-services/translator/reference/rest-api-guide?WT.mc_id=Portal-Microsoft_Azure_ProjectOxford)
239
346
 
240
-
241
347
  #### AmazonEngineOption
242
348
 
243
349
  ```typescript
244
- interface AmazonEngineOption extends BaseEngineOption{
350
+ interface AmazonEngineOption extends BaseEngineOption {
245
351
  region: string;
246
352
  accessKeyId: string;
247
353
  secretAccessKey: string;
@@ -252,7 +358,7 @@ interface AmazonEngineOption extends BaseEngineOption{
252
358
 
253
359
  - 相关文档:https://docs.aws.amazon.com/translate/latest/dg/what-is.html
254
360
  - 相关库:https://www.npmjs.com/package/@aws-sdk/client-translate
255
-
361
+
256
362
  #### BaiduEngineOption
257
363
 
258
364
  ```typescript
@@ -324,34 +430,34 @@ export type OpenAIModel = (typeof OPEN_AI_MODELS)[number];
324
430
 
325
431
  ```typescript
326
432
  export interface TencentEngineOption extends BaseEngineOption {
327
- secretId: string;
328
- secretKey: string;
329
- region?: string;
433
+ secretId: string;
434
+ secretKey: string;
435
+ region?: string;
330
436
  }
331
437
  ```
332
438
 
333
- > 说明:option param 请从对应平台获取。
439
+ > 说明:option param 请从对应平台获取。
440
+
334
441
  - 相关文档:https://console.cloud.tencent.com/cam/capi
335
442
 
336
443
  - region 配置表
337
- | 地域 | 取值 |
444
+ | 地域 | 取值 |
338
445
  | ---------------------- | ---------------- |
339
- | 亚太东南(曼谷) | ap-bangkok |
340
- | 华北地区(北京) | ap-beijing |
341
- | 西南地区(成都) | ap-chengdu |
342
- | 西南地区(重庆) | ap-chongqing |
343
- | 华南地区(广州) | ap-guangzhou |
344
- | 港澳台地区(中国香港) | ap-hongkong |
345
- | 亚太东北(首尔) | ap-seoul |
346
- | 华东地区(上海) | ap-shanghai |
347
- | 华东地区(上海金融) | ap-shanghai-fsi |
348
- | 华南地区(深圳金融) | ap-shenzhen-fsi |
349
- | 亚太东南(新加坡) | ap-singapore |
350
- | 亚太东北(东京) | ap-tokyo |
351
- | 欧洲地区(法兰克福) | eu-frankfurt |
352
- | 美国东部(弗吉尼亚) | na-ashburn |
353
- | 美国西部(硅谷) | na-siliconvalley |
354
-
446
+ | 亚太东南(曼谷) | ap-bangkok |
447
+ | 华北地区(北京) | ap-beijing |
448
+ | 西南地区(成都) | ap-chengdu |
449
+ | 西南地区(重庆) | ap-chongqing |
450
+ | 华南地区(广州) | ap-guangzhou |
451
+ | 港澳台地区(中国香港) | ap-hongkong |
452
+ | 亚太东北(首尔) | ap-seoul |
453
+ | 华东地区(上海) | ap-shanghai |
454
+ | 华东地区(上海金融) | ap-shanghai-fsi |
455
+ | 华南地区(深圳金融) | ap-shenzhen-fsi |
456
+ | 亚太东南(新加坡) | ap-singapore |
457
+ | 亚太东北(东京) | ap-tokyo |
458
+ | 欧洲地区(法兰克福) | eu-frankfurt |
459
+ | 美国东部(弗吉尼亚) | na-ashburn |
460
+ | 美国西部(硅谷) | na-siliconvalley |
355
461
 
356
462
  ## 🤝 贡献
357
463
 
@@ -364,8 +470,8 @@ export interface TencentEngineOption extends BaseEngineOption {
364
470
  ```
365
471
 
366
472
  - 添加新Engine
367
-
368
473
  - 添加新平台engine插件
474
+
369
475
  ```typescript
370
476
  export interface XXEngineOption extends BaseEngineOption {
371
477
  key: string;
@@ -397,8 +503,9 @@ export interface TencentEngineOption extends BaseEngineOption {
397
503
  };
398
504
  }
399
505
  ```
400
- - 将插件添加至engines(位置:```/src/engines/index.ts```)
401
-
506
+
507
+ - 将插件添加至engines(位置:`/src/engines/index.ts`)
508
+
402
509
  ```typescript
403
510
  import { xxx } from "./xxx";
404
511
  export const engines = {
@@ -408,18 +515,19 @@ export interface TencentEngineOption extends BaseEngineOption {
408
515
  baidu,
409
516
  deepl,
410
517
  openai,
411
- xxx
518
+ xxx,
412
519
  } as const;
413
520
  ```
521
+
414
522
  - 添加对应Engine支持的origin语言配置
415
-
523
+
416
524
  ```typescript
417
525
  //说明:如果origin与target语言都一样,那么可以直接用target语言配置即可,否则请单独配置
418
- //src/language/origin/index.ts
526
+ //src/language/origin/index.ts
419
527
  import azure from "../target/azure";
420
528
  ...
421
529
  import xxx from "../target/xxx"
422
-
530
+
423
531
  export const originLanguages = {
424
532
  azure: azure,
425
533
  ...
@@ -441,9 +549,9 @@ export interface TencentEngineOption extends BaseEngineOption {
441
549
  ```
442
550
 
443
551
  - 添加对应Engine支持的target语言配置
444
-
552
+
445
553
  ```typescript
446
- //src/language/target/index.ts
554
+ //src/language/target/index.ts
447
555
  import azure from "./azure";
448
556
  ...
449
557
  import xxx from "./amazon";
@@ -465,9 +573,14 @@ export interface TencentEngineOption extends BaseEngineOption {
465
573
  ...
466
574
  xxx: ValuesOf<typeof xxx>;
467
575
  };
576
+ ```
577
+
578
+ ```
579
+
468
580
  ```
469
-
581
+
470
582
  - 打包
583
+
471
584
  ```bash
472
585
  pnpm build
473
586
  ```
@@ -478,10 +591,11 @@ export interface TencentEngineOption extends BaseEngineOption {
478
591
  ```
479
592
 
480
593
  > **提示:目前库已可以正常使用,欢迎大家体验、如果你有任何问题和建议都可以提Issue给我反馈。
481
- 如果你感兴趣,特别欢迎你的加入,让我们一起完善好这个工具。
482
- 帮忙点个star⭐,让更多人知道这个工具,感谢大家🙏**
594
+ > 如果你感兴趣,特别欢迎你的加入,让我们一起完善好这个工具。
595
+ > 帮忙点个star⭐,让更多人知道这个工具,感谢大家🙏**
483
596
 
484
597
  ## 🌹 特别致谢
598
+
485
599
  - [franciscop/translate](https://github.com/franciscop/translate.git)
486
600
 
487
601
  > 说明:感谢[franciscop/translate](https://github.com/franciscop/translate.git)为我快速实现这个库提供了思路,同时也间接了他的部分代码。非常感谢🙏