Skip to content

Commit ce0b8da

Browse files
committed
增加 translate.selectLanguageTag.customLanguagesHandle 用以对translate.selectLanguageTag.languages自定义语种进行过滤及自定义显示语种的顺序保持
1 parent fcd0fa5 commit ce0b8da

1 file changed

Lines changed: 61 additions & 17 deletions

File tree

translate.js/translate.js

Lines changed: 61 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ var translate = {
1414
* 格式:major.minor.patch.date
1515
*/
1616
// AUTO_VERSION_START
17-
version: '3.18.74.20251011',
17+
version: '3.18.75.20251011',
1818
// AUTO_VERSION_END
1919
/*
2020
当前使用的版本,默认使用v2. 可使用 setUseVersion2();
@@ -97,6 +97,61 @@ var translate = {
9797

9898
translate.selectLanguageTag.render();
9999
},
100+
/*
101+
自定义语种 translate.selectLanguageTag.languages 的处理,进行按顺序筛选出来
102+
103+
@param languageList 当前支持的所有语种列表,传入格式如:
104+
[
105+
{id: 'english', name: 'English', serviceId: 'en'},
106+
{id: 'korean', name: '한국어', serviceId: 'ko'},
107+
...
108+
]
109+
110+
返回值是将当前翻译通道所支持的语种进行按顺序筛选完后的结果返回。
111+
比如
112+
translate.selectLanguageTag.languages = 'english,chinese_simplified,korean';
113+
那么这里返回的便是
114+
115+
[
116+
{id: 'english', name: 'English', serviceId: 'en'},
117+
{id: 'chinese_simplified', name: '简体中文', serviceId: 'zh-CHS'},
118+
{id: 'korean', name: '한국어', serviceId: 'ko'}
119+
]
120+
121+
如果 translate.selectLanguageTag.languages 未设置,那么这里将返回当前支持的所有语种
122+
*/
123+
customLanguagesHandle:function(languageList){
124+
if(translate.selectLanguageTag.languages.length > 0){
125+
//设置了自定义显示的语言,需要重新根据自定义的语言进行过滤,同时顺序也要保持跟它一致
126+
127+
//都转小写判断
128+
var divLanguages = translate.selectLanguageTag.languages.toLowerCase();
129+
var divArray = divLanguages.split(',');
130+
131+
//将支持的语种 languageList 转化为 map 形态
132+
if(typeof(translate.selectLanguageTag.supportLanguageMap) == 'undefined'){
133+
translate.selectLanguageTag.supportLanguageMap = new Map();
134+
for(var si = 0; si<languageList.length; si++){
135+
if(typeof(languageList[si]) != 'undefined' && typeof(languageList[si].id)){
136+
translate.selectLanguageTag.supportLanguageMap.set(languageList[si].id, languageList[si]);
137+
}
138+
}
139+
//console.log(translate.selectLanguageTag.supportLanguageMap)
140+
}
141+
142+
143+
//重新组合要显示的语种
144+
var newLangs = [];
145+
for(var i = 0; i<divArray.length; i++){
146+
if(divArray[i].length > 0 && translate.selectLanguageTag.supportLanguageMap.get(divArray[i]) != null){
147+
newLangs.push(translate.selectLanguageTag.supportLanguageMap.get(divArray[i]));
148+
}
149+
}
150+
return newLangs;
151+
}
152+
153+
return languageList;
154+
},
100155

101156
/*
102157
自定义切换语言的样式渲染 v3.2.4 增加
@@ -111,24 +166,13 @@ var translate = {
111166
selectLanguage.id = translate.selectLanguageTag.documentId+'SelectLanguage';
112167
selectLanguage.className = translate.selectLanguageTag.documentId+'SelectLanguage';
113168
var to = translate.language.getCurrent();
169+
170+
114171
for(var i = 0; i<languageList.length; i++){
115172
var option = document.createElement("option");
116173
option.setAttribute("value",languageList[i].id);
117174

118-
//判断 selectLanguageTag.languages 中允许使用哪些
119-
120-
if(translate.selectLanguageTag.languages.length > 0){
121-
//设置了自定义显示的语言
122-
123-
//都转小写判断
124-
var langs_indexof = (','+translate.selectLanguageTag.languages+',').toLowerCase();
125-
//console.log(langs_indexof)
126-
if(langs_indexof.indexOf(','+languageList[i].id.toLowerCase()+',') < 0){
127-
//没发现,那不显示这个语种,调出
128-
continue
129-
}
130-
}
131-
175+
132176
/*判断默认要选中哪个语言*/
133177

134178
if(to != null && typeof(to) != 'undefined' && to.length > 0){
@@ -197,11 +241,11 @@ var translate = {
197241
}
198242
//console.log(data.list);
199243
translate.request.api.language = data.list; //进行缓存,下一次切换语言渲染的时候直接从缓存取,就不用在通过网络加载了
200-
translate.selectLanguageTag.customUI(data.list);
244+
translate.selectLanguageTag.customUI(translate.selectLanguageTag.customLanguagesHandle(data.list));
201245
}, null);
202246
}else if(typeof(translate.request.api.language) == 'object'){
203247
//无网络环境下,自定义显示语种
204-
translate.selectLanguageTag.customUI(translate.request.api.language);
248+
translate.selectLanguageTag.customUI(translate.selectLanguageTag.customLanguagesHandle(translate.request.api.language));
205249
}
206250
}
207251
},

0 commit comments

Comments
 (0)