重写语种识别策略
这个语种识别,它的影响范围:
- 你没有设置本地语种,它自动识别你的本地语种是什么
- 当启用了 元素整体翻译能力 后,它自动识别你网页中每个元素的内容是什么语种
- 当使用 识别字符串语种及分析 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 = function(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() 前面