@@ -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