默认网络请求的自定义控制

这里针对 translate.js 自带的默认的一些网络请求进行相关控制
比如页面一打开后, translate.js 会自动进行初始化相关接口请求 /init.json ,获取当前支持的语种列表 language.json ,进行多节点测速的 connectTest.json 等,这些如果不想让他发起这些网络请求,将其设置为空字符串即可,如:

  1. translate.request.api.language = '';
  2. translate.request.api.ip = '';
  3. translate.request.api.connectTest = '';
  4. translate.request.api.init = '';
  5. translate.request.api.translate = '';

如果哪个不想发起网络请求,便将其设置为空字符便可,这样就不会再发起网络请求了。

每个请求的解释

translate.request.api.language

获取当前翻译服务所支持的语种,支持翻译哪些语种。 这是一个语种列表。

translate.request.api.ip

它是配合 自动切换为用户所使用的语种 来使用的。
自动切换为用户所使用的语种,首先会根据用户本身浏览器默认语种来自动切换,如果某些很小的情况没有获取到,才会触发通过这个接口,来获取用户所在哪个国家,然后根据哪个国家使用哪个语种比较多,来切换为这个语种。
也就是这个接口它实际使用率是很低的,可能有千分之一的几率。

translate.request.api.connectTest

translate.js 的自动测速能力,translate.js 支持介入多个独立的网络节点,当用户打开某个网页时,网页中会自动初始化去各个网络节点测速,采用速度最快的可用的网络节点来接入翻译能力。

translate.request.api.init

translate.js 启动后的一些初始化,比如判定当前translate.js 的版本号、当前可用的 translate.service 服务等。
当然,多数时候这个请求是并不会对translate.js的使用产生实质性作用的。

translate.request.api.translate

如果你的离线翻译缓存没有命中的话,它还是会发起这个翻译的网络请求进行。但是如果你设置了

  1. translate.request.api.translate = '';

那么即使有需要进行通过后端翻译服务进行翻译的文本,因为设置不允许使用,所以文本也不会通过网络传输进行翻译。
如果你审查元素,查看网络请求一栏,会发现 /translate.json 请求是根本就没有这个请求的。

其他场景示例:进行了网络转发,翻译的请求路径完全变了

比如经过API网关或者Nginx 进行网络转发,请求路径完全变了,比如正常翻译的网络请求是:

  1. http://12.12.12.12/translate.json

但是你经过网络转发后,它的实际请求URL变成了:

  1. http://12.12.12.12/fanyi/trans.php

这里,可以看到,路径、文件名完全变了,这样需要进行设置:

  1. translate.request.api.host = ['http://12.12.12.12/fanyi/']; //设置请求路径,详细可参考 http://translate.zvo.cn/4068.html
  2. translate.request.api.translate = 'trans.php'; //设置请求的url的文件名

设置不请求language.json时,默认的切换语言下拉框没了

这种场景多数是在一体机的场景,小型一体机,不会再额外去在一体机本身去部署 translate.service 服务,避免产生大的性能消耗。
但是有网环境下,开发时能正常通过语言切换的select切换语言,但是一体机中设置了不发起 language.json 请求,也就不会再返回支持的语种列表, 界面的select切换语言的入口自然也没了, 但是还需要这个进行切换语言,这是可以通过手动指定当前指定的切换语言的形式,来进行设定,比如这个小型一体机设备需要支持中文、韩语两种语言的切换,那么可以这么设置:

  1. translate.request.api.language = [{id: "chinese_simplified", name: "简体中文"},{id: "korean", name: "한국어"}];

这样它便可以继续出现有网络环境时所正常看到的 select切换语言 了,不过可切换的语言就只有所设置的简体中文、韩语 这两个。

注意

  1. 需要 translate.js v3.17.8.20250724 及更高版本
  2. 使用时,要放在 translate.execute() 前面