i18n-jsautotranslate 3.18.62 → 3.18.66

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i18n-jsautotranslate",
3
- "version": "3.18.62",
3
+ "version": "3.18.66",
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": {
@@ -14,7 +14,8 @@
14
14
  ],
15
15
  "files": [
16
16
  "index.js",
17
- "ArcoDesign/**"
17
+ "ArcoDesign/**",
18
+ "vue/**"
18
19
  ],
19
20
  "homepage": "https://github.com/xnx3/translate#readme",
20
21
  "bugs": {
@@ -0,0 +1,54 @@
1
+ import {translateJsVueUseModel, translate} from './translateVue3TS' // 导入 translate 的 VUE3 的 ts 插件
2
+
3
+ /*
4
+
5
+ translate.js AI 多语言切换模块的自定义配置。
6
+ 如果不想启用,你可以通过以下方式中的任何一种进行禁用
7
+ 1. 直接将所有配置全部注释掉
8
+ 2. 将 /src/main.ts 中的这一行 app.use(translateJsVueUseModel) 注释掉即可。
9
+
10
+ */
11
+
12
+ //打印包含具体执行时间的debug日志
13
+ //translate.time.use = true;
14
+ //window.translate.time.printTime = 100;
15
+
16
+ // 针对翻译动作的性能监控 https://translate.zvo.cn/549733.html
17
+ translate.time.execute.start();
18
+
19
+ // 设置当前切换所支持的语言 http://translate.zvo.cn/4056.html
20
+ window.translate.selectLanguageTag.languages = 'chinese_simplified,english,korean,latin,french,russian';
21
+
22
+ // 设置本地语种(当前网页的语种) ,如果你网页语种很多,比如国际化论坛,哪个国家发言的都有,那这里你可以不用设置,交给 translate.js 自动去识别当前网页语种 http://translate.zvo.cn/4066.html
23
+ window.translate.language.setLocal('chinese_simplified');
24
+
25
+ // 本地语种也进行强制翻译 http://translate.zvo.cn/289574.html
26
+ //translate.language.translateLocal = true;
27
+
28
+ // 翻译时忽略指定的文字不翻译 http://translate.zvo.cn/283381.html
29
+ translate.ignore.text.push('ContiNew Admin');
30
+
31
+ // 网页打开时自动隐藏文字,翻译完成后显示译文 http://translate.zvo.cn/549731.html
32
+ // 注意,如果不启用本多语言切换能力,这个要注释掉,不然你网页的文本是会被隐藏的
33
+ //window.translate.visual.webPageLoadTranslateBeforeHiddenText({inHeadTip: false});
34
+
35
+ // 启用翻译中的遮罩层 http://translate.zvo.cn/407105.html
36
+ window.translate.progress.api.startUITip();
37
+
38
+ // 设置采用开源免费的 client.edge 无服务端翻译服务通道,无需任何注册接入即可直接使用 http://translate.zvo.cn/4081.html
39
+ translate.service.use('client.edge');
40
+
41
+ // 网页ajax请求触发自动翻译 http://translate.zvo.cn/4086.html
42
+ translate.request.listener.start();
43
+
44
+ // 开启页面元素动态监控,js改变的内容也会被翻译,参考文档: http://translate.zvo.cn/4067.html
45
+ translate.listener.start();
46
+
47
+ // 元素的内容整体翻译能力配置 ,提高翻译的语义 http://translate.zvo.cn/4078.html
48
+ translate.whole.enableAll();
49
+
50
+ //触发翻译执行,有关这个的说明可参考 http://translate.zvo.cn/547814.html
51
+ translate.execute();
52
+
53
+ //导出,其中translateJsVueUseModel为vue插件,translate为js函数
54
+ export { translateJsVueUseModel, translate };
@@ -0,0 +1,83 @@
1
+ import { nextTick } from 'vue';
2
+ import translate from 'i18n-jsautotranslate'
3
+
4
+ /*
5
+
6
+ 因为这个文件没什么需要用户单独设置的,只是整体对vue的适配,所以这个文件后续调好了会放到 npm 上,当前因为下面DOM渲染完毕触发的问题没有精准触发,所以暂时先放到这里进行方便优化调试
7
+
8
+
9
+ */
10
+
11
+ //vue3框架的一些单独设置
12
+ translate.vue3 = {
13
+ /*
14
+ 是否有 translate.execute() 代码的触发
15
+ 有则是true,没有则是false
16
+ false则不会再dom渲染完后自动进行翻译,自然也不会显示 select 选择语言
17
+ */
18
+ isExecute: false,
19
+ }
20
+ //如果网页上有 translate.execute() 代码的触发,那么就设置 isExecute 为 true
21
+ translate.lifecycle.execute.trigger.push(function(data){
22
+ if(data.executeTriggerNumber === 1){
23
+ translate.vue3.isExecute = true;
24
+ translate.time.log('打开页面后,第一次触发 translate.execute() - 设置 translate.vue3.isExecute = true;');
25
+ return false;
26
+ }
27
+ });
28
+ translate.time.log('设置vue3初始化配置 - translate.vue3');
29
+
30
+ //将 translate 参数挂载到 window 上,方便在全局调用
31
+ if(typeof(window.translate) === 'undefined'){
32
+ window.translate = translate;
33
+ }
34
+ translate.time.log('将 translate 参数挂载到 window 上,方便在全局调用');
35
+
36
+ const translateJsVueUseModel = {
37
+ install(app) {
38
+ // 直接监听应用挂载完成
39
+ const originalMount = app.mount;
40
+ app.mount = function(...args) {
41
+ const root = originalMount.apply(this, args);
42
+ // 应用挂载完成后执行
43
+ // 使用双重nextTick确保DOM完全稳定后再执行翻译
44
+ // 第一个nextTick确保初始DOM渲染完成
45
+ nextTick(() => {
46
+ // 第二个nextTick确保可能的异步更新也完成
47
+ nextTick(() => {
48
+
49
+ /*
50
+
51
+ 这里有问题,应该是vue的DOM渲染完毕后触发,但是实际打断点测试,DOM还没有渲染完就触发了,这里还需要跟踪优化
52
+
53
+
54
+ */
55
+
56
+
57
+ if(translate.vue3.isExecute){
58
+ translate.time.log('组件渲染完成,触发 translate.execute();');
59
+
60
+ //对vue3的某些第三方组件进行容错处理
61
+ translate.faultTolerance.documentCreateTextNode.use(); //对VUE的某些组件频繁渲染dom进行容错
62
+ translate.time.log('对vue3的某些第三方组件进行容错处理 - translate.faultTolerance.documentCreateTextNode.use();');
63
+
64
+ console.log(translate.getDocuments());
65
+ translate.execute();
66
+ setTimeout(() => {
67
+ translate.execute();
68
+ }, 100);
69
+ setTimeout(() => {
70
+ translate.execute();
71
+ }, 2000);
72
+ }else{
73
+ translate.time.log('组件渲染完成,但未发现translate.execute();存在,不进行翻译');
74
+ }
75
+ });
76
+ });
77
+ return root;
78
+ };
79
+ }
80
+ };
81
+
82
+ //export default translateJsVueUseModel;
83
+ export { translateJsVueUseModel, translate };