i18n-jsautotranslate 3.18.53 → 3.18.55
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/ArcoDesign/Vue3/LanguageSelect.vue +10 -13
- package/index.js +66 -55
- package/package.json +1 -1
|
@@ -52,10 +52,8 @@ const LanguageSelectOnChange = (value: string) => {
|
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
onMounted(() => {
|
|
55
|
-
|
|
56
55
|
//重写渲染语言下拉列表出现时的函数,这里是为了把默认创建的 <div id="translate" 这个给去掉,其他无改变
|
|
57
56
|
translate.selectLanguageTag.render = function(){ //v2增加
|
|
58
|
-
console.log('translate.selectLanguageTag.render已被渲染,触发来源:', new Error('调用栈追踪').stack);
|
|
59
57
|
if(translate.selectLanguageTag.alreadyRender){
|
|
60
58
|
return;
|
|
61
59
|
}
|
|
@@ -74,6 +72,7 @@ onMounted(() => {
|
|
|
74
72
|
console.log('load language list error : '+data.info);
|
|
75
73
|
return;
|
|
76
74
|
}
|
|
75
|
+
translate.request.api.language = data.list; //进行缓存,下一次切换语言渲染的时候直接从缓存取,就不用在通过网络加载了
|
|
77
76
|
translate.selectLanguageTag.customUI(data.list);
|
|
78
77
|
}, null);
|
|
79
78
|
}else if(typeof(translate.request.api.language) == 'object'){
|
|
@@ -82,7 +81,7 @@ onMounted(() => {
|
|
|
82
81
|
}
|
|
83
82
|
|
|
84
83
|
//显示切换语言
|
|
85
|
-
var TranslateJsSelectLanguages = document.getElementsByClassName('
|
|
84
|
+
var TranslateJsSelectLanguages = document.getElementsByClassName('LanguageSelect');
|
|
86
85
|
TranslateJsSelectLanguages[0].style.display = 'block';
|
|
87
86
|
}
|
|
88
87
|
|
|
@@ -114,14 +113,12 @@ onMounted(() => {
|
|
|
114
113
|
languageList.value = allowLanguageList;
|
|
115
114
|
|
|
116
115
|
//显示上一次切换后的语种
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
language.value = translate.language.getCurrent();
|
|
117
|
+
//setTimeout(function(){
|
|
118
|
+
//language.value = translate.language.getCurrent();
|
|
119
|
+
//}, 100);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
console.log('1111')
|
|
124
|
-
|
|
125
122
|
const refreshLanguage = function(){
|
|
126
123
|
//渲染语言下拉列表出现
|
|
127
124
|
window.translate.selectLanguageTag.refreshRender();
|
|
@@ -129,18 +126,18 @@ onMounted(() => {
|
|
|
129
126
|
language.value = translate.language.getCurrent();
|
|
130
127
|
};
|
|
131
128
|
|
|
129
|
+
|
|
132
130
|
// 当用户打开页面后,第一次触发 translate.execute() 时,进行触发
|
|
133
131
|
translate.lifecycle.execute.trigger.push(function(data){
|
|
134
|
-
if(
|
|
135
|
-
console.log('这是打开页面后,第一次触发 translate.execute() ,因为translate.executeNumber 记录的是translate.execute() 执行完的次数。');
|
|
132
|
+
if(data.executeTriggerNumber === 1){
|
|
133
|
+
//console.log('这是打开页面后,第一次触发 translate.execute() ,因为translate.executeNumber 记录的是translate.execute() 执行完的次数。');
|
|
136
134
|
// 触发语言下拉列表出现
|
|
137
135
|
//渲染语言下拉列表出现
|
|
138
136
|
refreshLanguage();
|
|
139
137
|
}
|
|
140
138
|
});
|
|
141
|
-
|
|
142
139
|
//如果已经触发了 translate.execute() 那么直接就渲染
|
|
143
|
-
console.log(translate.executeTriggerNumber+ ', '+translate.state)
|
|
140
|
+
//console.log(translate.executeTriggerNumber+ ', '+translate.state)
|
|
144
141
|
if(translate.executeTriggerNumber > 0 || translate.state > 0){
|
|
145
142
|
refreshLanguage();
|
|
146
143
|
}
|
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.
|
|
17
|
+
version: '3.18.55.20250928',
|
|
18
18
|
// AUTO_VERSION_END
|
|
19
19
|
/*
|
|
20
20
|
当前使用的版本,默认使用v2. 可使用 setUseVersion2();
|
|
@@ -185,6 +185,7 @@ var translate = {
|
|
|
185
185
|
return;
|
|
186
186
|
}
|
|
187
187
|
//console.log(data.list);
|
|
188
|
+
translate.request.api.language = data.list; //进行缓存,下一次切换语言渲染的时候直接从缓存取,就不用在通过网络加载了
|
|
188
189
|
translate.selectLanguageTag.customUI(data.list);
|
|
189
190
|
}, null);
|
|
190
191
|
}else if(typeof(translate.request.api.language) == 'object'){
|
|
@@ -1892,22 +1893,34 @@ var translate = {
|
|
|
1892
1893
|
这个触发是指在所有判断之前,也就是只要 触发了 translate.execute() 会立即触发此,然后在进行执行其他的。
|
|
1893
1894
|
{
|
|
1894
1895
|
to: , //翻译为的语种
|
|
1895
|
-
docs: //当前触发 translate.execute() 要进行翻译的元素。
|
|
1896
|
-
比如单纯触发执行 translate.execute() 、translate.request.listener.start() 那么这里 docs 则是 通过 translate.setDocuments(...)
|
|
1896
|
+
docs: //当前触发 translate.execute() 要进行翻译的元素。
|
|
1897
|
+
比如单纯触发执行 translate.execute() 、translate.request.listener.start() 那么这里 docs 则是 通过 translate.setDocuments(...) 所设置的元素。 如果没有使用 translate.setDocuments(...) 设置过,那就是翻译整个html页面。
|
|
1897
1898
|
如果是 translate.listener.start(); 监控页面发生变化的元素进行翻译,则这里的docs 则是发生变化的元素
|
|
1898
|
-
|
|
1899
|
+
executeTriggerNumber: 整数型,当前触发 translate.execute() 执行,属于打开页面后第几次执行 translate.execute() , 它不会经过任何初始化判断,只要触发了 translate.execute() 就会立即+1,即使初始化判断当前不需要翻译、或者当前正在翻译需要排队等待,它依旧也会+1
|
|
1900
|
+
|
|
1899
1901
|
}
|
|
1900
1902
|
|
|
1903
|
+
注意,它有返回参数,boolean 类型:
|
|
1904
|
+
true 则是继续执行 translate.execute()
|
|
1905
|
+
false 则是不继续执行,直接终止本次的 translate.execute() 也就是后面的 translate.lifecycle.execute.start 都不会执行到,不会触发。
|
|
1906
|
+
如果钩子没有任何返回值,则默认是 true
|
|
1907
|
+
|
|
1908
|
+
如果本钩子有多个实现,其中某个实现返回 false,它不会阻止其他钩子的执行,其他的钩子实现也都会触发执行。 只不过里面只要其中有一个是返回 false,那么 translate.execute() 都会终止。
|
|
1901
1909
|
*/
|
|
1902
1910
|
trigger: [],
|
|
1903
1911
|
trigger_Trigger:function(data){
|
|
1912
|
+
var isNextExecute = true; //是否继续向下执行,true则是继续执行,false则是不继续执行。
|
|
1904
1913
|
for(var i = 0; i < translate.lifecycle.execute.trigger.length; i++){
|
|
1905
1914
|
try{
|
|
1906
|
-
translate.lifecycle.execute.trigger[i](data);
|
|
1915
|
+
var isNext = translate.lifecycle.execute.trigger[i](data);
|
|
1916
|
+
if(typeof(isNext) === 'boolean' && boolean === false){
|
|
1917
|
+
isNextExecute = false;
|
|
1918
|
+
}
|
|
1907
1919
|
}catch(e){
|
|
1908
1920
|
console.log(e);
|
|
1909
1921
|
}
|
|
1910
1922
|
}
|
|
1923
|
+
return isNextExecute;
|
|
1911
1924
|
},
|
|
1912
1925
|
|
|
1913
1926
|
/*
|
|
@@ -2104,15 +2117,53 @@ var translate = {
|
|
|
2104
2117
|
如果不传入或者传入null,则是翻译整个网页所有能翻译的元素
|
|
2105
2118
|
*/
|
|
2106
2119
|
execute:function(docs){
|
|
2120
|
+
translate.executeTriggerNumber = translate.executeTriggerNumber + 1;
|
|
2121
|
+
var triggerNumber = translate.executeTriggerNumber; //为了整个 translate.execute 的数据一致性,下面都是使用这个变量
|
|
2122
|
+
|
|
2123
|
+
//每次执行execute,都会生成一个唯一uuid,也可以叫做队列的唯一标识,每一次执行execute都会创建一个独立的翻译执行队列
|
|
2124
|
+
var uuid = translate.util.uuid();
|
|
2125
|
+
translate.time.log('创建uuid:'+uuid);
|
|
2126
|
+
|
|
2127
|
+
//如果页面打开第一次使用,先判断缓存中有没有上次使用的语种,从缓存中取出
|
|
2128
|
+
if(translate.to == null || translate.to == ''){
|
|
2129
|
+
var to_storage = translate.storage.get('to');
|
|
2130
|
+
if(to_storage != null && typeof(to_storage) != 'undefined' && to_storage.length > 0){
|
|
2131
|
+
translate.to = to_storage;
|
|
2132
|
+
}
|
|
2133
|
+
}
|
|
2134
|
+
|
|
2135
|
+
/*
|
|
2136
|
+
进行翻译指定的node操作。优先级为:
|
|
2137
|
+
1. 这个方法已经指定的翻译 nodes
|
|
2138
|
+
2. setDocuments 指定的
|
|
2139
|
+
3. 整个网页
|
|
2140
|
+
其实2、3都是通过 getDocuments() 取,在getDocuments() 就对2、3进行了判断
|
|
2141
|
+
*/
|
|
2142
|
+
var all;
|
|
2143
|
+
if(typeof(docs) != 'undefined' && docs != null){
|
|
2144
|
+
if(typeof(docs.length) == 'undefined'){
|
|
2145
|
+
//不是数组,是单个元素
|
|
2146
|
+
all = new Array();
|
|
2147
|
+
all[0] = docs;
|
|
2148
|
+
}else{
|
|
2149
|
+
//是数组,直接赋予
|
|
2150
|
+
all = docs;
|
|
2151
|
+
}
|
|
2152
|
+
}else{
|
|
2153
|
+
//2、3
|
|
2154
|
+
all = translate.getDocuments();
|
|
2155
|
+
}
|
|
2156
|
+
|
|
2157
|
+
|
|
2107
2158
|
//钩子
|
|
2108
2159
|
translate.lifecycle.execute.trigger_Trigger({
|
|
2109
2160
|
to:translate.to,
|
|
2110
|
-
docs:
|
|
2161
|
+
docs: all,
|
|
2162
|
+
executeTriggerNumber: triggerNumber
|
|
2163
|
+
uuid: uuid
|
|
2111
2164
|
});
|
|
2112
2165
|
|
|
2113
2166
|
|
|
2114
|
-
translate.executeTriggerNumber = translate.executeTriggerNumber + 1;
|
|
2115
|
-
var triggerNumber = translate.executeTriggerNumber; //为了整个 translate.execute 的数据一致性,下面都是使用这个变量
|
|
2116
2167
|
|
|
2117
2168
|
if(translate.waitingExecute.use){
|
|
2118
2169
|
if(translate.state != 0){
|
|
@@ -2149,7 +2200,7 @@ var translate = {
|
|
|
2149
2200
|
|
|
2150
2201
|
//钩子
|
|
2151
2202
|
translate.lifecycle.execute.finally_Trigger({
|
|
2152
|
-
uuid:
|
|
2203
|
+
uuid:uuid,
|
|
2153
2204
|
to:translate.to,
|
|
2154
2205
|
state: 2,
|
|
2155
2206
|
triggerNumber: triggerNumber
|
|
@@ -2187,9 +2238,7 @@ var translate = {
|
|
|
2187
2238
|
/****** 采用 2.x 版本的翻译,使用自有翻译算法 */
|
|
2188
2239
|
|
|
2189
2240
|
|
|
2190
|
-
|
|
2191
|
-
var uuid = translate.util.uuid();
|
|
2192
|
-
translate.time.log('创建uuid:'+uuid);
|
|
2241
|
+
|
|
2193
2242
|
//console.log('=====')
|
|
2194
2243
|
//console.log(translate.nodeQueue);
|
|
2195
2244
|
|
|
@@ -2202,13 +2251,7 @@ var translate = {
|
|
|
2202
2251
|
//console.log(translate.nodeQueue);
|
|
2203
2252
|
//console.log('=====end')
|
|
2204
2253
|
|
|
2205
|
-
|
|
2206
|
-
if(translate.to == null || translate.to == ''){
|
|
2207
|
-
var to_storage = translate.storage.get('to');
|
|
2208
|
-
if(to_storage != null && typeof(to_storage) != 'undefined' && to_storage.length > 0){
|
|
2209
|
-
translate.to = to_storage;
|
|
2210
|
-
}
|
|
2211
|
-
}
|
|
2254
|
+
|
|
2212
2255
|
|
|
2213
2256
|
translate.time.log('渲染出选择语言的select窗口-开始');
|
|
2214
2257
|
//渲染select选择语言
|
|
@@ -2231,7 +2274,7 @@ var translate = {
|
|
|
2231
2274
|
|
|
2232
2275
|
//钩子
|
|
2233
2276
|
translate.lifecycle.execute.finally_Trigger({
|
|
2234
|
-
uuid:
|
|
2277
|
+
uuid:uuid,
|
|
2235
2278
|
to:translate.to,
|
|
2236
2279
|
state: 3,
|
|
2237
2280
|
triggerNumber: triggerNumber
|
|
@@ -2251,8 +2294,8 @@ var translate = {
|
|
|
2251
2294
|
|
|
2252
2295
|
//钩子
|
|
2253
2296
|
translate.lifecycle.execute.finally_Trigger({
|
|
2254
|
-
uuid:
|
|
2255
|
-
to:
|
|
2297
|
+
uuid:uuid,
|
|
2298
|
+
to:translate.to,
|
|
2256
2299
|
state: 5,
|
|
2257
2300
|
triggerNumber: triggerNumber
|
|
2258
2301
|
});
|
|
@@ -2278,39 +2321,7 @@ var translate = {
|
|
|
2278
2321
|
translate.images.execute();
|
|
2279
2322
|
translate.time.log('进行图片翻译-完成');
|
|
2280
2323
|
|
|
2281
|
-
|
|
2282
|
-
进行翻译指定的node操作。优先级为:
|
|
2283
|
-
1. 这个方法已经指定的翻译 nodes
|
|
2284
|
-
2. setDocuments 指定的
|
|
2285
|
-
3. 整个网页
|
|
2286
|
-
其实2、3都是通过 getDocuments() 取,在getDocuments() 就对2、3进行了判断
|
|
2287
|
-
*/
|
|
2288
|
-
var all;
|
|
2289
|
-
if(typeof(docs) != 'undefined' && docs != null){
|
|
2290
|
-
//1. 这个方法已经指定的翻译 nodes
|
|
2291
|
-
|
|
2292
|
-
/* v3.12.6 注释,转到判断非null
|
|
2293
|
-
if(docs == null){
|
|
2294
|
-
//要翻译的目标区域不存在
|
|
2295
|
-
console.log('translate.execute(...) 中传入的要翻译的目标区域不存在。');
|
|
2296
|
-
translate.state = 0;
|
|
2297
|
-
return;
|
|
2298
|
-
}
|
|
2299
|
-
*/
|
|
2300
|
-
|
|
2301
|
-
if(typeof(docs.length) == 'undefined'){
|
|
2302
|
-
//不是数组,是单个元素
|
|
2303
|
-
all = new Array();
|
|
2304
|
-
all[0] = docs;
|
|
2305
|
-
}else{
|
|
2306
|
-
//是数组,直接赋予
|
|
2307
|
-
all = docs;
|
|
2308
|
-
}
|
|
2309
|
-
|
|
2310
|
-
}else{
|
|
2311
|
-
//2、3
|
|
2312
|
-
all = translate.getDocuments();
|
|
2313
|
-
}
|
|
2324
|
+
|
|
2314
2325
|
//console.log('----要翻译的目标元素-----');
|
|
2315
2326
|
//console.log(all)
|
|
2316
2327
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "i18n-jsautotranslate",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.55",
|
|
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": {
|