重写语种识别策略
这个语种识别,它的影响范围:
- 你没有设置本地语种,它自动识别你的本地语种是什么
- 当启用了 元素整体翻译能力 后,它自动识别你网页中每个元素的内容是什么语种
- 当使用 识别字符串语种及分析 translate.language.recognition(‘xxx’)
比如,一个元素中的文本为:
使用场景:Can be used to obtain application user access credentials
按照我们的正常方式判定,它会被判定为英语。
但是你需要实现这个需求:
如果页面中出现 中英文共存的场景,统一都认为是中文,当切换翻译为英文时,这种中英文共存的元素都要被翻译为英文。
这时需要修改语种识别的策略,修改方式为:
/*
语种识别策略
str 要识别的字符串
data 对于str字符串识别的结果,格式如:
{
languageName: 'english',
languageArray:[
english:[
list[
{beforeText: ' ', afterText: ' ', text: 'hello word'},
{beforeText: ' ', afterText: ' ', text: 'who?'},
],
number:12
],
japanese:[
......
]
]
}
有关这里面具体参数的说明,参考 translate.language.recognition 的说明
languagesSize key:语言名, value:语言字符数
allSize 当前所有发现的语种,加起来的总字符数,也就是 languagesSize 遍历所有的value相加的数
最后,要 return data;
*/
translate.language.recognitionAlgorithm(str, data, languagesSize, allSize){
/*
如果简体中文跟英文一起出现,那么认为当前是简体中文
*/
if(typeof(languagesSize['chinese_simplified']) != 'undefined' && typeof(languagesSize['english']) != 'undefined'){
data.languageName = 'chinese_simplified';
}
return data;
}
注意
- 需要 translate.js v3.17.2.20250705 及更高版本
- 这个是为二次开发考虑,进行扩展开发使用的。正常使用翻译这个是用不到的
- 使用时,要放在 translate.execute() 前面