重写语种识别策略

这个语种识别,它的影响范围:

  1. 你没有设置本地语种,它自动识别你的本地语种是什么
  2. 当启用了 元素整体翻译能力 后,它自动识别你网页中每个元素的内容是什么语种
  3. 当使用 识别字符串语种及分析 translate.language.recognition(‘xxx’)

比如,一个元素中的文本为:

  1. 使用场景:Can be used to obtain application user access credentials

按照我们的正常方式判定,它会被判定为英语。

但是你需要实现这个需求:
如果页面中出现 中英文共存的场景,统一都认为是中文,当切换翻译为英文时,这种中英文共存的元素都要被翻译为英文。
这时需要修改语种识别的策略,修改方式为:

  1. /*
  2. 语种识别策略
  3. str 要识别的字符串
  4. data 对于str字符串识别的结果,格式如:
  5. {
  6. languageName: 'english',
  7. languageArray:[
  8. english:[
  9. list[
  10. {beforeText: ' ', afterText: ' ', text: 'hello word'},
  11. {beforeText: ' ', afterText: ' ', text: 'who?'},
  12. ],
  13. number:12
  14. ],
  15. japanese:[
  16. ......
  17. ]
  18. ]
  19. }
  20. 有关这里面具体参数的说明,参考 translate.language.recognition 的说明
  21. languagesSize key:语言名, value:语言字符数
  22. allSize 当前所有发现的语种,加起来的总字符数,也就是 languagesSize 遍历所有的value相加的数
  23. 最后,要 return data;
  24. */
  25. translate.language.recognitionAlgorithm(str, data, languagesSize, allSize){
  26. /*
  27. 如果简体中文跟英文一起出现,那么认为当前是简体中文
  28. */
  29. if(typeof(languagesSize['chinese_simplified']) != 'undefined' && typeof(languagesSize['english']) != 'undefined'){
  30. data.languageName = 'chinese_simplified';
  31. }
  32. return data;
  33. }

注意

  1. 需要 translate.js v3.17.2.20250705 及更高版本
  2. 这个是为二次开发考虑,进行扩展开发使用的。正常使用翻译这个是用不到的
  3. 使用时,要放在 translate.execute() 前面