i18n-jsautotranslate 3.18.66 → 3.18.72

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,57 @@
1
+ # ArcoDesign
2
+
3
+ ## 接入 vue3 方式使用 translate.js
4
+ http://translate.zvo.cn/4041.html
5
+
6
+ ## 页面上出现语言切换的Select下拉切换菜单
7
+
8
+ #### 效果
9
+ 见下图右上角的多语言切换
10
+ ![](./resource/preview.png)
11
+
12
+ #### 代码
13
+
14
+ 比如要在 index.vue 页面上显示切换语言的 select 下拉菜单,那么 index.vue 页面中,要进行的操作:
15
+ 先在 index.vue 中,加入一行导入 ArcoDesign 的多语言切换Select
16
+ ````import LanguageSelect from 'i18n-jsautotranslate/ArcoDesign/Vue3/LanguageSelect.vue';````
17
+ 然后在要显示select菜单的位置,直接加入
18
+ ````<LanguageSelect/>````
19
+ 即可。
20
+ 最后,可以使用css样式来进行自定义美化,比如要将这个语言切换放到页面的右上角:
21
+ ````
22
+ /* 多语言切换Select */
23
+ .LanguageSelect {
24
+ position: fixed;
25
+ top: 20px;
26
+ right: 80px;
27
+ }
28
+ ````
29
+ 注意,这个多语言切换的 select ,它的class 名字为 LanguageSelect
30
+
31
+ 完整的示例代码如下:
32
+ ````
33
+ <template>
34
+ <div class="login">
35
+ <h3 class="login-logo">
36
+ Logo
37
+ </h3>
38
+
39
+ <!-- 多语言切换的 Select 下拉选择 -->
40
+ <LanguageSelect/>
41
+ </div>
42
+ </template>
43
+
44
+ <script setup>
45
+ import { computed, ref } from 'vue'
46
+ import LanguageSelect from 'i18n-jsautotranslate/ArcoDesign/Vue3/LanguageSelect.vue';
47
+ </script>
48
+
49
+ <style scoped>
50
+ .LanguageSelect {
51
+ position: fixed;
52
+ top: 20px;
53
+ right: 80px;
54
+ }
55
+ </style>
56
+ ````
57
+
package/index.js CHANGED
@@ -14,7 +14,7 @@ var translate = {
14
14
  * 格式:major.minor.patch.date
15
15
  */
16
16
  // AUTO_VERSION_START
17
- version: '3.18.66.20250930',
17
+ version: '3.18.72.20251010',
18
18
  // AUTO_VERSION_END
19
19
  /*
20
20
  当前使用的版本,默认使用v2. 可使用 setUseVersion2();
@@ -73,6 +73,11 @@ var translate = {
73
73
  */
74
74
  languages:'',
75
75
  alreadyRender:false, //当前是否已渲染过了 true为是 v2.2增加
76
+
77
+ changeLanguageBeforeLoadOfflineFile: function(path){
78
+
79
+ },
80
+
76
81
  selectOnChange:function(event){
77
82
  var language = event.target.value;
78
83
  translate.changeLanguage(language);
@@ -950,7 +955,22 @@ var translate = {
950
955
  },
951
956
  },
952
957
 
958
+ //已转为 offline ,这个是对旧版做兼容
953
959
  office:{
960
+ export:function(){
961
+ console.log('请使用最新版本的 translate.offline.export , 而不是 translate.office.export');
962
+ },
963
+ showPanel:function(){
964
+ console.log('请使用最新版本的 translate.offline.showPanel , 而不是 translate.office.export');
965
+ },
966
+ append:function(to, properties){
967
+ translate.offline.append(to, properties);
968
+ },
969
+ fullExtract:{
970
+ isUse:false
971
+ }
972
+ },
973
+ offline:{
954
974
  /*
955
975
  网页上翻译之后,自动导出当前页面的术语库
956
976
 
@@ -996,7 +1016,7 @@ var translate = {
996
1016
 
997
1017
  if(text.length > 0){
998
1018
  //有内容
999
- text = 'translate.office.append(\''+translate.language.getCurrent()+'\',`'+text+'\n`);';
1019
+ text = 'translate.offline.append(\''+translate.language.getCurrent()+'\',`'+text+'\n`);';
1000
1020
  //console.log(text);
1001
1021
  translate.util.loadMsgJs();
1002
1022
  msg.popups({
@@ -1021,7 +1041,7 @@ var translate = {
1021
1041
  //导出按钮
1022
1042
  let button = document.createElement('button');
1023
1043
  button.onclick = function() {
1024
- translate.office.export();
1044
+ translate.offline.export();
1025
1045
  };
1026
1046
  button.innerHTML = '导出配置信息';
1027
1047
  button.setAttribute('style', 'margin-left: 72px; margin-top: 30px; margin-bottom: 20px; font-size: 25px; background-color: blue; padding: 15px; padding-top: 3px; padding-bottom: 3px; border-radius: 3px;');
@@ -1084,7 +1104,7 @@ var translate = {
1084
1104
 
1085
1105
  //全部提取能力(整站的离线翻译数据提取)
1086
1106
  fullExtract:{
1087
- /*js translate.office.fullExtract.set start*/
1107
+ /*js translate.offline.fullExtract.set start*/
1088
1108
  /*
1089
1109
  将翻译的结果加入
1090
1110
  hash: 翻译前的文本的hash
@@ -1106,9 +1126,9 @@ var translate = {
1106
1126
  obj[toLanguage] = translateText;
1107
1127
  await translate.storage.IndexedDB.set('hash_'+hash, obj);
1108
1128
  },
1109
- /*js translate.office.fullExtract.set end*/
1129
+ /*js translate.offline.fullExtract.set end*/
1110
1130
 
1111
- /*js translate.office.fullExtract.export start*/
1131
+ /*js translate.offline.fullExtract.export start*/
1112
1132
  /*
1113
1133
  将存储的数据导出为 txt 文件下载下来
1114
1134
  */
@@ -1121,7 +1141,7 @@ var translate = {
1121
1141
  translate.log('error : to param not find, example: "english"');
1122
1142
  return;
1123
1143
  }
1124
- var text = 'translate.office.append(\'';
1144
+ var text = 'translate.offline.append(\''+to+'\',`';
1125
1145
 
1126
1146
  var data = await translate.storage.IndexedDB.list('hash_*');
1127
1147
  for(var i in data){
@@ -1141,7 +1161,7 @@ var translate = {
1141
1161
  link.click();
1142
1162
  URL.revokeObjectURL(url);
1143
1163
  },
1144
- /*js translate.office.fullExtract.export end*/
1164
+ /*js translate.offline.fullExtract.export end*/
1145
1165
 
1146
1166
  /*
1147
1167
  是否启用全部提取的能力
@@ -2413,7 +2433,7 @@ var translate = {
2413
2433
 
2414
2434
  if(all.length > 500){
2415
2435
  translate.log('------tip------');
2416
- translate.log('translate.execute( docs ) 传入的docs.length 过大,超过500,这很不正常,当前 docs.length : '+all.length+' ,如果你感觉真的没问题,请联系作者 http://translate.zvo.cn/43006.html 说明情况,根据你的情况进行分析。 当前只取前500个元素进行翻译');
2436
+ translate.log('translate.execute( docs ) 传入的docs.length 过大,超过1500,这很不正常,当前 docs.length : '+all.length+' ,如果你感觉真的没问题,请联系作者 http://translate.zvo.cn/43006.html 说明情况,根据你的情况进行分析。 当前只取前1500个元素进行翻译');
2417
2437
  }
2418
2438
 
2419
2439
  //初始化 translate.element.tagAttribute ,主要针对 v3.17.10 版本的适配调整,对 translate.element.tagAttribute 的设置做了改变,做旧版本的适配
@@ -2439,7 +2459,7 @@ var translate = {
2439
2459
 
2440
2460
  translate.time.log('开始扫描要翻译区域的元素');
2441
2461
  //检索目标内的node元素
2442
- for(var i = 0; i< all.length & i < 500; i++){
2462
+ for(var i = 0; i< all.length & i < 1500; i++){
2443
2463
  var node = all[i];
2444
2464
  translate.element.whileNodes(uuid, node);
2445
2465
  }
@@ -3162,8 +3182,8 @@ var translate = {
3162
3182
  //将翻译结果以 key:hash value翻译结果的形式缓存
3163
3183
  translate.storage.set('hash_'+data.to+'_'+cacheHash,text);
3164
3184
  //如果离线翻译启用了全部提取,那么还要存入离线翻译指定存储
3165
- if(translate.office.fullExtract.isUse){
3166
- translate.office.fullExtract.set(hash, originalWord, data.to, text);
3185
+ if(translate.offline.fullExtract.isUse){
3186
+ translate.offline.fullExtract.set(hash, originalWord, data.to, text);
3167
3187
  }
3168
3188
  }
3169
3189
  task.execute(); //执行渲染任务
@@ -8138,8 +8158,8 @@ var translate = {
8138
8158
  var hash = translate.util.hash(apiTranslateText[i]);
8139
8159
  translate.storage.set('hash_'+to+'_'+hash, resultData.text[i]);
8140
8160
  //如果离线翻译启用了全部提取,那么还要存入离线翻译指定存储
8141
- if(translate.office.fullExtract.isUse){
8142
- translate.office.fullExtract.set(hash, apiTranslateText[i], data.to, resultData.text[i]);
8161
+ if(translate.offline.fullExtract.isUse){
8162
+ translate.offline.fullExtract.set(hash, apiTranslateText[i], data.to, resultData.text[i]);
8143
8163
  }
8144
8164
 
8145
8165
  //进行组合数据到 translateResultArray
@@ -9315,20 +9335,99 @@ var translate = {
9315
9335
 
9316
9336
  obj: js对象
9317
9337
  formatSupplementaryCharLength: 对这个js对象进行格式化自动补充字符的长度,比如 2、 4
9338
+
9339
+ 2025.10.10 优化传入参数
9340
+ obj:{
9341
+ jsObject: 原本的obj参数, 也就是js对象
9342
+ formatSupplementaryCharLength: 对这个js对象进行格式化自动补充字符的长度,比如 2、 4 ,默认不设置则是4
9343
+ functionBodyHandle: 针对值是function函数类型时,可以自定义对函数体的源码进行处理,它是传入 function 类型的,比如:
9344
+ functionBodyHandle: function(functionBody){
9345
+ functionBody = functionBody+'123';
9346
+ return functionBody;
9347
+ }
9348
+ 传入值是函数体的string类型的源码内容
9349
+ 返回值是修改过后最新的函数体的string类型的源码内容
9350
+ 这是 2025.10.10 新增参数,应对layui的 i18n 全自动翻译函数体中的字符串文本
9351
+ }
9318
9352
  */
9319
9353
  objToString:function(obj, formatSupplementaryCharLength){
9354
+ if(typeof(obj) === 'object'){
9355
+ if(typeof(obj.jsObject) === 'object'){
9356
+ //是 2025.10.10 以后的新版本
9357
+ }else{
9358
+ //是 2025.10.10 以前的旧版本
9359
+ var newObj = {
9360
+ jsObject: obj
9361
+ }
9362
+ obj = newObj;
9363
+ }
9364
+ }else{
9365
+ obj = {};
9366
+ }
9367
+ if(typeof(formatSupplementaryCharLength) === 'number'){
9368
+ obj.formatSupplementaryCharLength = formatSupplementaryCharLength;
9369
+ }
9370
+ //未设置,就赋予默认值4
9371
+ if(typeof(obj.formatSupplementaryCharLength) !== 'number'){
9372
+ obj.formatSupplementaryCharLength = 4;
9373
+ }
9374
+
9320
9375
  // 自定义replacer函数,将函数转换为字符串
9321
- const jsonStr = JSON.stringify(obj, (key, value) => {
9376
+ let jsonStr = JSON.stringify(obj.jsObject, (key, value) => {
9322
9377
  if (typeof value === 'function') {
9323
9378
  // 将函数转换为其源代码字符串
9324
- return value.toString();
9379
+ var funcString = value.toString();
9380
+ if(typeof(funcString) === 'string' && funcString.length > 0){
9381
+ funcString = funcString.replace(/\n/g, '___TRANSLATEJS_LINE_BREAK___');
9382
+ }
9383
+ return funcString;
9384
+ }else{
9385
+ return value;
9325
9386
  }
9326
- return value;
9327
- }, formatSupplementaryCharLength);
9328
9387
 
9329
- // 将转义的\n替换为实际的换行符
9330
- const formattedStr = jsonStr.replace(/\\n/g, '\n');
9331
- return formattedStr;
9388
+ return result;
9389
+ }, obj.formatSupplementaryCharLength);
9390
+
9391
+
9392
+ //对 function 的函数体进行处理
9393
+ // 将转义的\n替换为实际的换行符 -- 20251009 优化,去掉换行符替换,layui 工具中发现这样会将原本文本中的换行符替换掉,而是调整为仅仅针对function方法进行针对替换
9394
+ // 逐行判断,判断其中哪一行的value是function,要将function的字符串格式变为function函数格式
9395
+ if(jsonStr.indexOf('___TRANSLATEJS_LINE_BREAK___') > -1){
9396
+ const lines = jsonStr.split('\n');
9397
+ for(var li = 0; li<lines.length; li++){
9398
+ // 检查当前行是否包含特定标记
9399
+ if (lines[li].includes('___TRANSLATEJS_LINE_BREAK___')) {
9400
+ lines[li] = lines[li].replace(/___TRANSLATEJS_LINE_BREAK___/g, '\n'); //将其替换为原本的换行符
9401
+
9402
+ // 查找值部分(假设格式是 "key": "function...")
9403
+ const valueMatch = lines[li].match(/"[^"]+":\s*"([^"]+)"/);
9404
+ if (valueMatch && valueMatch[1]) {
9405
+ // 替换换行标记为实际换行
9406
+ let functionStr = valueMatch[1].replace(/___TRANSLATEJS_LINE_BREAK___/g, '\n');
9407
+
9408
+ // 将函数字符串转换为实际函数
9409
+ try {
9410
+ // 使用Function构造函数创建函数更安全一些
9411
+ const functionParts = functionStr.match(/function\s*([^\(]*)\(([^)]*)\)\s*\{([\s\S]*)\}/);
9412
+
9413
+ if (functionParts) {
9414
+ var [, name, params, body] = functionParts;
9415
+ if(typeof(obj.functionBodyHandle) === 'function'){
9416
+ body = obj.functionBodyHandle(body);
9417
+ }
9418
+ // 替换原行中的字符串为函数表达式
9419
+ lines[li] = lines[li].replace(`"${valueMatch[1]}"`, `function${name}(${params}){${body}}`);
9420
+ }
9421
+ } catch (e) {
9422
+ console.error('转换函数时出错:', e);
9423
+ }
9424
+ }
9425
+ }
9426
+ }
9427
+ jsonStr = lines.join('\n');
9428
+ }
9429
+
9430
+ return jsonStr;
9332
9431
  }
9333
9432
  },
9334
9433
  /*js dispose end*/
@@ -10937,7 +11036,7 @@ var nodeuuid = {
10937
11036
  //延迟触发,方便拦截自定义
10938
11037
  setTimeout(function(){
10939
11038
  translate.log('------ translate.js ------\nTwo lines of js html automatic translation, page without change, no language configuration file, no API Key, SEO friendly! Open warehouse : https://github.com/xnx3/translate \n两行js实现html全自动翻译。 无需改动页面、无语言配置文件、无API Key、对SEO友好!完全开源,代码仓库:https://gitee.com/mail_osc/translate');
10940
- }, 1000);
11039
+ }, 3000);
10941
11040
  /*js copyright-notice end*/
10942
11041
 
10943
11042
  //初始化
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i18n-jsautotranslate",
3
- "version": "3.18.66",
3
+ "version": "3.18.72",
4
4
  "description": "Two lines of js realize automatic html translation. No need to change the page, no language configuration file, no API key, SEO friendly!",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -7,48 +7,55 @@ import {translateJsVueUseModel, translate} from './translateVue3TS' // 导入 tr
7
7
  1. 直接将所有配置全部注释掉
8
8
  2. 将 /src/main.ts 中的这一行 app.use(translateJsVueUseModel) 注释掉即可。
9
9
 
10
+ 这些将会在 app.use(translateJsVueUseModel) 时被执行
10
11
  */
12
+ translate.vue3.config = function(app){
11
13
 
12
- //打印包含具体执行时间的debug日志
13
- //translate.time.use = true;
14
- //window.translate.time.printTime = 100;
14
+ //打印包含具体执行时间的debug日志
15
+ //translate.time.use = true;
16
+ //window.translate.time.printTime = 100;
15
17
 
16
- // 针对翻译动作的性能监控 https://translate.zvo.cn/549733.html
17
- translate.time.execute.start();
18
+ // 针对翻译动作的性能监控 https://translate.zvo.cn/549733.html
19
+ translate.time.execute.start();
18
20
 
19
- // 设置当前切换所支持的语言 http://translate.zvo.cn/4056.html
20
- window.translate.selectLanguageTag.languages = 'chinese_simplified,english,korean,latin,french,russian';
21
+ // 设置当前切换所支持的语言 http://translate.zvo.cn/4056.html
22
+ window.translate.selectLanguageTag.languages = 'chinese_simplified,english,korean,latin,french,russian';
21
23
 
22
- // 设置本地语种(当前网页的语种) ,如果你网页语种很多,比如国际化论坛,哪个国家发言的都有,那这里你可以不用设置,交给 translate.js 自动去识别当前网页语种 http://translate.zvo.cn/4066.html
23
- window.translate.language.setLocal('chinese_simplified');
24
+ // 设置本地语种(当前网页的语种) ,如果你网页语种很多,比如国际化论坛,哪个国家发言的都有,那这里你可以不用设置,交给 translate.js 自动去识别当前网页语种 http://translate.zvo.cn/4066.html
25
+ window.translate.language.setLocal('chinese_simplified');
24
26
 
25
- // 本地语种也进行强制翻译 http://translate.zvo.cn/289574.html
26
- //translate.language.translateLocal = true;
27
+ // 禁用翻译的排队执行。注意,这是私有部署才有的能力,可极大提高视觉上的翻译效果,不需要再排队等待翻译。 http://translate.zvo.cn/391129.html
28
+ // 注意,如果你用开源版本,请不要启用此,不然请求过快,会触发接口风控保护,禁用你的终端
29
+ //translate.waitingExecute.use = false;
27
30
 
28
- // 翻译时忽略指定的文字不翻译 http://translate.zvo.cn/283381.html
29
- translate.ignore.text.push('ContiNew Admin');
31
+ // 本地语种也进行强制翻译 http://translate.zvo.cn/289574.html
32
+ //translate.language.translateLocal = true;
30
33
 
31
- // 网页打开时自动隐藏文字,翻译完成后显示译文 http://translate.zvo.cn/549731.html
32
- // 注意,如果不启用本多语言切换能力,这个要注释掉,不然你网页的文本是会被隐藏的
33
- //window.translate.visual.webPageLoadTranslateBeforeHiddenText({inHeadTip: false});
34
+ // 翻译时忽略指定的文字不翻译 http://translate.zvo.cn/283381.html
35
+ //translate.ignore.text.push('xxxxx');
34
36
 
35
- // 启用翻译中的遮罩层 http://translate.zvo.cn/407105.html
36
- window.translate.progress.api.startUITip();
37
+ // 网页打开时自动隐藏文字,翻译完成后显示译文 http://translate.zvo.cn/549731.html
38
+ // 注意,如果不启用本多语言切换能力,这个要注释掉,不然你网页的文本是会被隐藏的
39
+ //window.translate.visual.webPageLoadTranslateBeforeHiddenText({inHeadTip: false});
37
40
 
38
- // 设置采用开源免费的 client.edge 无服务端翻译服务通道,无需任何注册接入即可直接使用 http://translate.zvo.cn/4081.html
39
- translate.service.use('client.edge');
41
+ // 启用翻译中的遮罩层 http://translate.zvo.cn/407105.html
42
+ window.translate.progress.api.startUITip();
40
43
 
41
- // 网页ajax请求触发自动翻译 http://translate.zvo.cn/4086.html
42
- translate.request.listener.start();
44
+ // 设置采用开源免费的 client.edge 无服务端翻译服务通道,无需任何注册接入即可直接使用 http://translate.zvo.cn/4081.html
45
+ translate.service.use('client.edge');
43
46
 
44
- // 开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
45
- translate.listener.start();
47
+ // 网页ajax请求触发自动翻译 http://translate.zvo.cn/4086.html
48
+ translate.request.listener.start();
46
49
 
47
- // 元素的内容整体翻译能力配置 ,提高翻译的语义 http://translate.zvo.cn/4078.html
48
- translate.whole.enableAll();
50
+ // 开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
51
+ translate.listener.start();
49
52
 
50
- //触发翻译执行,有关这个的说明可参考 http://translate.zvo.cn/547814.html
51
- translate.execute();
53
+ // 元素的内容整体翻译能力配置 ,提高翻译的语义 http://translate.zvo.cn/4078.html
54
+ translate.whole.enableAll();
55
+
56
+ //触发翻译执行,有关这个的说明可参考 http://translate.zvo.cn/547814.html
57
+ translate.execute();
58
+ }
52
59
 
53
60
  //导出,其中translateJsVueUseModel为vue插件,translate为js函数
54
61
  export { translateJsVueUseModel, translate };
@@ -1,13 +1,6 @@
1
1
  import { nextTick } from 'vue';
2
2
  import translate from 'i18n-jsautotranslate'
3
3
 
4
- /*
5
-
6
- 因为这个文件没什么需要用户单独设置的,只是整体对vue的适配,所以这个文件后续调好了会放到 npm 上,当前因为下面DOM渲染完毕触发的问题没有精准触发,所以暂时先放到这里进行方便优化调试
7
-
8
-
9
- */
10
-
11
4
  //vue3框架的一些单独设置
12
5
  translate.vue3 = {
13
6
  /*
@@ -16,8 +9,18 @@ translate.vue3 = {
16
9
  false则不会再dom渲染完后自动进行翻译,自然也不会显示 select 选择语言
17
10
  */
18
11
  isExecute: false,
12
+ /*
13
+ 是否在vue入口文件中 调用了 translateJsVueUseModel 插件 app.use(translateJsVueUseModel)
14
+ 有则是true,没有则是false
15
+ */
16
+ isUse: false,
17
+ /*
18
+ 用户自定义配置,将在 app.use(translateJsVueUseModel) 时触发这个方法的执行
19
+ */
20
+ config: function(app){}
19
21
  }
20
- //如果网页上有 translate.execute() 代码的触发,那么就设置 isExecute 为 true
22
+
23
+ //如果 translate.vue3.config 中有 translate.execute() 代码的触发,那么就设置 isExecute 为 true ,同时阻止此次的 translate.execute() 执行,因为此次执行是在vue3的初始化阶段,而不是在dom渲染完毕后触发的,所以这里只是进行一个标记,待 真实 DOM渲染完毕后再来触发。
21
24
  translate.lifecycle.execute.trigger.push(function(data){
22
25
  if(data.executeTriggerNumber === 1){
23
26
  translate.vue3.isExecute = true;
@@ -25,16 +28,22 @@ translate.lifecycle.execute.trigger.push(function(data){
25
28
  return false;
26
29
  }
27
30
  });
28
- translate.time.log('设置vue3初始化配置 - translate.vue3');
29
31
 
30
32
  //将 translate 参数挂载到 window 上,方便在全局调用
31
33
  if(typeof(window.translate) === 'undefined'){
32
34
  window.translate = translate;
33
35
  }
34
- translate.time.log('将 translate 参数挂载到 window 上,方便在全局调用');
36
+ translate.time.log('将 translate 参数挂载到 window 上,方便在全局调用及调试');
37
+
35
38
 
36
39
  const translateJsVueUseModel = {
37
40
  install(app) {
41
+ translate.time.log(' app.use(translateJsVueUseModel) ');
42
+ translate.vue3.isUse = true;
43
+
44
+ //触发自定义配置
45
+ translate.vue3.config(app);
46
+
38
47
  // 直接监听应用挂载完成
39
48
  const originalMount = app.mount;
40
49
  app.mount = function(...args) {
@@ -53,22 +62,13 @@ const translateJsVueUseModel = {
53
62
 
54
63
  */
55
64
 
56
-
57
65
  if(translate.vue3.isExecute){
58
66
  translate.time.log('组件渲染完成,触发 translate.execute();');
59
67
 
60
68
  //对vue3的某些第三方组件进行容错处理
61
69
  translate.faultTolerance.documentCreateTextNode.use(); //对VUE的某些组件频繁渲染dom进行容错
62
70
  translate.time.log('对vue3的某些第三方组件进行容错处理 - translate.faultTolerance.documentCreateTextNode.use();');
63
-
64
- console.log(translate.getDocuments());
65
71
  translate.execute();
66
- setTimeout(() => {
67
- translate.execute();
68
- }, 100);
69
- setTimeout(() => {
70
- translate.execute();
71
- }, 2000);
72
72
  }else{
73
73
  translate.time.log('组件渲染完成,但未发现translate.execute();存在,不进行翻译');
74
74
  }