-
下载最新的 translate.js 文件
你可以通过以下网址任选其一,下载最新的 translate.js 文件,放到自己服务器。
Gitee 下载:https://gitee.com/mail_osc/translate/raw/master/translate.js/translate.js
Github下载: https://raw.githubusercontent.com/xnx3/translate/refs/heads/master/translate.js/translate.js
-
进行语种切换的时候,会先显示原语种,然后才会显示翻译后的语种
[TOC]
## 场景
进行网页浏览时,当前网页是中文的,通过切换语种切换成了英文,当点击这个网页中的超链接后打开新页面进行浏览时,发现新页面会先显示原本的中文内容,1秒后才变成了英文内容
## 解释
新打开的页面先显示原本的中文内容,是因为 translate.js 会有个翻译的过程,并不是实时立即就翻译完毕,它会有个计算过程,所以会有个延迟,也就出现了这个所为的1秒的延迟效果。以后随着后续AI算力芯片的提升,这个延迟效果会进行逐渐缩短。
另外新页面第一次打开,内容以前没有被翻译过的,才会有这个1秒的切换效果,如果你已经打开过一次翻译过了,当你在进行刷新页面时,是没有这个1秒切换效果的,而是打开后立即显示的就是英文,不会再有先显示中文在切换英文的过渡,因为translate.js 它本身有一层浏览器级别的缓存,你浏览器打开翻译过一次后,它就将翻译结果进入了浏览器缓存,你刷新页面后,它会直接从缓存中取出翻译结果赋予页面,这个过程非常快,人眼是感知不出来的,所以感觉上是打开后直接就是英文的。
## 优化
如何能让访客在第一次访问时(也就是访客的浏览器本身没有翻译缓存时),也能做到极速翻译切换的效果,避免出现中文或者降低中文出现的时间?
#### 方式一:
采用 [离线翻译](https://translate.zvo.cn/4076.html) 的能力,离线翻译是不依赖自动化翻译,而是跟传统的i18n的原理类似,提前讲某段文字对应语种的译文提前以代码的方式配置好了,当用户打开页面浏览时,程序会自动从配置里讲译文取出迅速进行翻译,完全规避用户视觉上出现先中文,卡顿一下再出现英文的视觉感知。而是直接打开后直接就是英文的。
但是这个方式是有个缺点的,这个缺点就是传统 i18n 的缺点,需要提前进行配置,只不过 translate.js 会简单非常多,它可以一键导出来。
在一些正常使用的场景中,可以这么考虑,在网页的第一屏出现的文字用离线翻译配置好,那么用户访问时,第一屏是最先看到的,而后面向下滑动才能看到的文字,可以依旧用 translate.js 的自动化翻译来进行,这样对技术的工作量是比较少的。
#### 方式二:
[启用GiteeAI企业级翻译通道](545867.html) 它跟开源的翻译通道相比,它是独立的,用户没有那么多,且是大模型翻译,有开源中国提供所有的算力支持。
它有两层服务端的翻译缓存,如果你本身的页面的文字是固定的(是指整个页面翻译的文字是固定的,比如你要翻译的文字中有当前时间的,当前时间肯定每次看都是变化的,那这个就不是固定的,有变动了),翻译后服务端会进行一次结果的缓存,当下一次在进行翻译时,他会直接从缓存中吧结果返回,极大降低这个耗时。 如果已经翻译过一次,访问时命中缓存,它从开始网络请求到翻译完成的时间大概不到200毫秒,会非常迅速。
## 隐藏原文
1. [网页打开时自动隐藏文字,翻译完成后显示译文](549731.html)
2. [启用翻译中的遮罩层](407105.html)
这两个的作用是,当切换页面时,网页中的原文会先隐藏,不会先显示出来,避免出现先显示原文一瞬间又切换到译文的那种视觉的不舒服。
在一个是如果本身网页端没有缓存,通过服务端进行翻译时,它还会再要翻译的文本上出现一个加载中的动画,给用户一种非常好的视觉体验。
如果你使用这两个后,发现还是不满意,可以[联系我](4030.html),来做完美的适配
-
支持的语种表 - translate.service通道
````
corsican:科西嘉语
guarani:瓜拉尼语
kinyarwanda:卢旺达语
hausa:豪萨语
norwegian:挪威语
dutch:荷兰语
yoruba:约鲁巴语
english:英语
gongen:贡根语
latin:拉丁语
nepali:尼泊尔语
french:法语
czech:捷克语
hawaiian:夏威夷语
georgian:格鲁吉亚语
russian:俄语
chinese_simplified:简体中文
persian:波斯语
bhojpuri:博杰普尔语
hindi:印地语
belarusian:白俄罗斯语
swahili:斯瓦希里语
icelandic:冰岛语
yiddish:意第绪语
twi:契维语
irish:爱尔兰语
gujarati:古吉拉特语
khmer:高棉语
slovak:斯洛伐克语
hebrew:希伯来语
kannada:卡纳达语
hungarian:匈牙利语
tamil:泰米尔语
arabic:阿拉伯语
bengali:孟加拉语
azerbaijani:阿塞拜疆语
samoan:萨摩亚语
afrikaans:南非荷兰语
indonesian:印尼语
danish:丹麦语
shona:修纳语
bambara:班巴拉语
lithuanian:立陶宛语
vietnamese:越南语
maltese:马耳他语
turkmen:土库曼语
assamese:阿萨姆语
catalan:加泰罗尼亚语
singapore:僧伽罗语
cebuano:宿务语
scottish_gaelic:苏格兰盖尔语
sanskrit:梵语
polish:波兰语
galician:加利西亚语
latvian:拉脱维亚语
ukrainian:乌克兰语
tatar:鞑靼语
welsh:威尔士语
japanese:日语
filipino:菲律宾语
aymara:艾马拉语
lao:老挝语
telugu:泰卢固语
romanian:罗马尼亚语
haitian_creole:海地克里奥尔语
dogrid:多格来语
swedish:瑞典语
maithili:迈蒂利语
thai:泰语
armenian:亚美尼亚语
burmese:缅甸语
pashto:普什图语
hmong:苗语
dhivehi:迪维希语
chinese_traditional:繁體中文
luxembourgish:卢森堡语
sindhi:信德语
kurdish:库尔德语(库尔曼吉语)
turkish:土耳其语
macedonian:马其顿语
bulgarian:保加利亚语
malay:马来语
luganda:卢干达语
marathi:马拉地语
estonian:爱沙尼亚语
malayalam:马拉雅拉姆语
deutsch:德语
slovene:斯洛文尼亚语
urdu:乌尔都语
portuguese:葡萄牙语
igbo:伊博语
kurdish_sorani:库尔德语(索拉尼)
oromo:奥罗莫语
greek:希腊语
spanish:西班牙语
frisian:弗里西语
somali:索马里语
amharic:阿姆哈拉语
nyanja:齐切瓦语
punjabi:旁遮普语
basque:巴斯克语
italian:意大利语
albanian:阿尔巴尼亚语
korean:韩语
tajik:塔吉克语
finnish:芬兰语
kyrgyz:吉尔吉斯语
ewe:埃维语
croatian:克罗地亚语
creole:克里奥尔语
quechua:克丘亚语
bosnian:波斯尼亚语
maori:毛利语
````
-
每日翻译字符上限的解释
## 注意
这是使用translate.js 中默认内置的开源翻译通道才会有这个限制,而你上线的项目,我们建议你采用启用了内存缓存跟文件缓存的giteeai通道,来提供极速的翻译通道支持。具体可参考: [项目上线 - 更换更稳定响应更快翻译更好的大模型翻译通道](545867.html)
## 说明
首先很荣幸,我们的多语言翻译的项目能被贵方采纳,能被您认可、以及能对更多的朋友提供便利,我们也非常高兴。2023.7月底,后端翻译的请求量已达到 1.5亿次/月,而到了24年底,更是达到了60亿次/日的恐怖增速,其中包括一些城投集团、政府单位像是环境保障局、企业国际化经营服务平台、政务服务网等等被广泛使用,并且还在非常快速的持续增大,这对于我们后端翻译服务器来说,造成了不少压力。
起因是一个海外的盗版小说站使用,因为他们是盗版,没有留任何联系方式,我想给他发邮件联系他给他私有部署,但没有他的联系方式,根本联系不到对方,才无奈增加了一个每日翻译字符上限的拦截,避免被大量占用影响正常用户使用,因为联系不到对方才加的拦截,因为据我们统计,一般的网站使用量也只是在30万以内字符,可以说99%的网站每日翻译字符都是在50万以内的,而我们所统计的除了那个小说站外,多的一天使用量也就二百多万翻译字符左右,所以我们才加了一个上限是100万的限制,目的是为了让所有正常用的都能没问题。而且正常使用如果您发现超过这个上限,看到这个说明了,没关系,您可以有以下两种方式来增加每日翻译的字符上限
-
文本翻译开放API接口文档
对文本进行翻译,传入一句或多句文本,设定上要翻译为什么语种,比如英文,它会立即进行翻译给你返回。
## API文档
http://api.zvo.cn/translate/service/20250814/translate.json.html
这个API文档提供快速测试及参考,真正使用时要针对这个文档进行以下调整:
## 真正对接及使用要进行几处调整:
#### 1. 请求url 调整
请求URL改为:
https://america-enterprise-api-translate.zvo.cn/translate.json
#### 2. 传入参数调整
传入参数新增两个参数传入:
| 参数名 | 示例 | 说明 |
| ------------ | ------------ |
| cache | 0 | 缓存控制,这里固定传入 0 |
| key | xxxxxxxxxxxxxxxxxxxxxxxxx | [企业版翻译通道](43262.html)我们给你开的key |
| lowercase | 0 | 翻译结果是否需要段落首字母大写?
如果需要段落首字母大写就传入0
否则不传入则默认是1采用全小写形态 |
## 其他说明
#### 如何查看我的每日翻译字符数
在翻译的响应头会有返回。具体可参考: [每日翻译字符数查看](43496.html)
#### 支持的语种列表一览
````
corsican:科西嘉语
guarani:瓜拉尼语
kinyarwanda:卢旺达语
hausa:豪萨语
norwegian:挪威语
dutch:荷兰语
yoruba:约鲁巴语
english:英语
gongen:贡根语
latin:拉丁语
nepali:尼泊尔语
french:法语
czech:捷克语
hawaiian:夏威夷语
georgian:格鲁吉亚语
russian:俄语
chinese_simplified:简体中文
persian:波斯语
bhojpuri:博杰普尔语
hindi:印地语
belarusian:白俄罗斯语
swahili:斯瓦希里语
icelandic:冰岛语
yiddish:意第绪语
twi:契维语
irish:爱尔兰语
gujarati:古吉拉特语
khmer:高棉语
slovak:斯洛伐克语
hebrew:希伯来语
kannada:卡纳达语
hungarian:匈牙利语
tamil:泰米尔语
arabic:阿拉伯语
bengali:孟加拉语
azerbaijani:阿塞拜疆语
samoan:萨摩亚语
afrikaans:南非荷兰语
indonesian:印尼语
danish:丹麦语
shona:修纳语
bambara:班巴拉语
lithuanian:立陶宛语
vietnamese:越南语
maltese:马耳他语
turkmen:土库曼语
assamese:阿萨姆语
catalan:加泰罗尼亚语
singapore:僧伽罗语
cebuano:宿务语
scottish-gaelic:苏格兰盖尔语
sanskrit:梵语
polish:波兰语
galician:加利西亚语
latvian:拉脱维亚语
ukrainian:乌克兰语
tatar:鞑靼语
welsh:威尔士语
japanese:日语
filipino:菲律宾语
aymara:艾马拉语
lao:老挝语
telugu:泰卢固语
romanian:罗马尼亚语
haitian_creole:海地克里奥尔语
dogrid:多格来语
swedish:瑞典语
maithili:迈蒂利语
thai:泰语
armenian:亚美尼亚语
burmese:缅甸语
pashto:普什图语
hmong:苗语
dhivehi:迪维希语
chinese_traditional:繁體中文
luxembourgish:卢森堡语
sindhi:信德语
kurdish:库尔德语(库尔曼吉语)
turkish:土耳其语
macedonian:马其顿语
bulgarian:保加利亚语
malay:马来语
luganda:卢干达语
marathi:马拉地语
estonian:爱沙尼亚语
malayalam:马拉雅拉姆语
deutsch:德语
slovene:斯洛文尼亚语
urdu:乌尔都语
portuguese:葡萄牙语
igbo:伊博语
kurdish_sorani:库尔德语(索拉尼)
oromo:奥罗莫语
greek:希腊语
spanish:西班牙语
frisian:弗里西语
somali:索马里语
amharic:阿姆哈拉语
nyanja:齐切瓦语
punjabi:旁遮普语
basque:巴斯克语
italian:意大利语
albanian:阿尔巴尼亚语
korean:韩语
tajik:塔吉克语
finnish:芬兰语
kyrgyz:吉尔吉斯语
ewe:埃维语
croatian:克罗地亚语
creole:克里奥尔语
quechua:克丘亚语
bosnian:波斯尼亚语
maori:毛利语
````
-
html源码翻译接口文档
对html源码进行翻译,传入一个html源文件,设定上要翻译为什么语种,比如英文,它会立即将当前html文件转换为英文输出。
## 请求url
`
https://translate.apistore.huaweicloud.com/html
`
## 请求方式 method
`POST`
## 请求头 header
````
Content-Type:application/x-www-form-urlencoded
X-Apig-AppCode:41c5899dfdf247fc8b999318c17936521c60f13de5g348d38636e069297e95df
````
其中的 `X-Apig-AppCode`参数是通过 https://marketplace.huaweicloud.com/contents/b042e7ed-a5a1-48fb-8328-91762ef67312 购买后获得的,购买后查看方式如下图


## 传入、返回参数
传入参数及相应参数请参考: http://doc.zvo.cn/tcdn/api/doc.html
## CURL 调用接口请求示例
````
curl --location --request POST 'https://translate.apistore.huaweicloud.com/html'
--header 'X-Apig-AppCode: appcodexxxxxxxxxxxxxxxxxxx'
--data-urlencode 'html=
你好,欢迎测试 哈哈,我是测试的第一行文本
'
--data-urlencode 'language=english'
````
将其中的 ````appcodexxxxxxxxxxxxxxxxxxx```` 换成你从华为云购买后获取到的 appcode ,即可直接使用了
## API接口调试工具
https://apifox.com/apidoc/shared-a84837d4-1580-4ae2-9e3d-26915c6dbd54
## 支持的语种列表一览
````
corsican:科西嘉语
guarani:瓜拉尼语
kinyarwanda:卢旺达语
hausa:豪萨语
norwegian:挪威语
dutch:荷兰语
yoruba:约鲁巴语
english:英语
gongen:贡根语
latin:拉丁语
nepali:尼泊尔语
french:法语
czech:捷克语
hawaiian:夏威夷语
georgian:格鲁吉亚语
russian:俄语
chinese_simplified:简体中文
persian:波斯语
bhojpuri:博杰普尔语
hindi:印地语
belarusian:白俄罗斯语
swahili:斯瓦希里语
icelandic:冰岛语
yiddish:意第绪语
twi:契维语
irish:爱尔兰语
gujarati:古吉拉特语
khmer:高棉语
slovak:斯洛伐克语
hebrew:希伯来语
kannada:卡纳达语
hungarian:匈牙利语
tamil:泰米尔语
arabic:阿拉伯语
bengali:孟加拉语
azerbaijani:阿塞拜疆语
samoan:萨摩亚语
afrikaans:南非荷兰语
indonesian:印尼语
danish:丹麦语
shona:修纳语
bambara:班巴拉语
lithuanian:立陶宛语
vietnamese:越南语
maltese:马耳他语
turkmen:土库曼语
assamese:阿萨姆语
catalan:加泰罗尼亚语
singapore:僧伽罗语
cebuano:宿务语
scottish-gaelic:苏格兰盖尔语
sanskrit:梵语
polish:波兰语
galician:加利西亚语
latvian:拉脱维亚语
ukrainian:乌克兰语
tatar:鞑靼语
welsh:威尔士语
japanese:日语
filipino:菲律宾语
aymara:艾马拉语
lao:老挝语
telugu:泰卢固语
romanian:罗马尼亚语
haitian_creole:海地克里奥尔语
dogrid:多格来语
swedish:瑞典语
maithili:迈蒂利语
thai:泰语
armenian:亚美尼亚语
burmese:缅甸语
pashto:普什图语
hmong:苗语
dhivehi:迪维希语
chinese_traditional:繁體中文
luxembourgish:卢森堡语
sindhi:信德语
kurdish:库尔德语(库尔曼吉语)
turkish:土耳其语
macedonian:马其顿语
bulgarian:保加利亚语
malay:马来语
luganda:卢干达语
marathi:马拉地语
estonian:爱沙尼亚语
malayalam:马拉雅拉姆语
deutsch:德语
slovene:斯洛文尼亚语
urdu:乌尔都语
portuguese:葡萄牙语
igbo:伊博语
kurdish_sorani:库尔德语(索拉尼)
oromo:奥罗莫语
greek:希腊语
spanish:西班牙语
frisian:弗里西语
somali:索马里语
amharic:阿姆哈拉语
nyanja:齐切瓦语
punjabi:旁遮普语
basque:巴斯克语
italian:意大利语
albanian:阿尔巴尼亚语
korean:韩语
tajik:塔吉克语
finnish:芬兰语
kyrgyz:吉尔吉斯语
ewe:埃维语
croatian:克罗地亚语
creole:克里奥尔语
quechua:克丘亚语
bosnian:波斯尼亚语
maori:毛利语
````
-
自己网站每日翻译字符数查看
您可以实时查看您某个网站(域名)的每日翻译字符使用情况。
注意,这种方式是针对使用了 [translate.service 翻译方式的](43086.html) ,另外需要说明的是,[企业版高稳定翻译通道](43262.html) 使用的便是这种方式
## 查看方式
审核元素,然后随便翻译一下,找到 translate.json 的请求,如下图所示

* **Day_current_size** 是今天已经使用的翻译字符数
* **Day_max_size** 是当前的字符限制,你这个域名每天能有多少翻译字符
如果您追求高质量、高效、高稳定,推荐您采用企业版本的翻译,会让您更好的使用、异常指导等。
-
谷歌浏览器网页整体翻译插件
当前 translate.js 已经做成谷歌浏览器插件,可在谷歌内核的浏览器使用,比如 Chrome、Edge 等
它可直接针对你的网页进行整体翻译。
它的实际效果跟谷歌浏览器的 右键 - 翻译为中文 这个是一样的,但是谷歌浏览器中国境内这个右键翻译不能使用了,这个插件可以完美替代,让你在中国境内也能非常好的翻译整个网页
## 安装
#### 1. Chrome 应用商店 安装
https://chromewebstore.google.com/detail/translate-web-page/eiaheeageapononkeckimdkkmfdgchll
不过这种安装需要翻墙,中国境内打不开这个网址
#### 2. 插件的离线安装包
http://down.zvo.cn/translate/chrome_plugin/eiaheeageapononkeckimdkkmfdgchll_v3.1.6.crx
## 源码
源码已开源: https://github.com/xnx3/translate/tree/master/extend/chrome_plugin
-
生态共赢-寻开发者参与适配各种框架如 react、uniapp、vue
## 现状
当前 translate.js 用于常规的html中,但是在一些框架中,比如react、vue、uniapp等,他们都有自己的语法规范,如果按照常规的translate.js使用方式,在这些框架中使用,使用者需要付出不少的精力去不断尝试,会消耗使用者很多精力、无谓的踩坑。
开发者可以对其进行进一步的适配包装,让某个框架的使用者可以按照固有的步骤,一步步就能完成接入使用。比如这个:
http://translate.zvo.cn/42048.html
## 开发者合作
我们希望开发者可以再我们 translate.js 的基础上进行扩展,比如进行uniapp、vue2、vue3、react、…… 各种前端框架, 还有以及各种管理后台框架如 tiny、 ruiyi…… 等等,进行适配或接入。让 translate.js 能彻底解放前端开发者未来再国际化方面的开发投入。使开发者无论做什么项目,它都是支持国际化的,而不需要在做额外的工作!
## 开发者收益
* 您开发的翻译插件,您可以发布到其应用市场,进行收费。在这方面,[discuz的哥们做的就很棒,插件已获得万+的收入](https://addon.dismall.com/plugins/domi_translate.html) 这些费用都是你自己的。我们也是完全认可并允许的。
* 如果你是技术,也不懂推广,也没法很好的沟通客户,你可以将你这个插件托管到我们这边,我来帮你推广及对接客户。比如你针对vue、react 等框架做的插件,如果有这方面需要时,这些插件被使用,我们作为一个中间方进行介入
* 保障你的插件没有问题付费者能正常使用
* 避免使用者能用了,钱不给了的情况,我们会中间做托管,使用者先支付过来费用,在使用您的插件,如果使用者用不起来,钱还会给人原样退回去。
* 使用后一个月内没什么问题,费用在转到您的账户中。其中我们会抽里面的30%作为我们参与推广、对接用户、协调等的费用。
* 您还可以直接将您做的这个插件无偿贡献出来,合并到我们 translate.js 的主仓库中,以后无论是找工作、还是吹牛,你都可以自豪的说,那个translate.js的AI前端国际化全球第一的项目,它之所以那么多人用,因为里面有某某功能是我做的。 我们也会在主页及 README.md 中为你署名。
* 企业版通道收费分成。使用者如果用你做的插件,向我们购买 [企业版稳定翻译通道](https://translate.zvo.cn/4087.html) ,您作为插件的作者,可以获得10%的分成! 而购买企业版通道这事,你完全无需任何参与、推广、沟通客户、等等一系列问题,全部有我们同事接管,你只管拿分成!
* 赠送[企业版稳定翻译通道](https://translate.zvo.cn/4087.html) (600元/年)永久使用。 只要您的插件一直有效并且能正常使用,出bug积极配合修复,我们会赠送你一个 [企业版稳定翻译通道](https://translate.zvo.cn/4087.html) 并且无时间限制。 你可以自己用,也可以送人。你的付出,我们认可,并给与感谢!
* 任务外包。我有一家网络公司是外包性质的,技术部只有项目经理的角色,结过活来后,项目经理会吧任务分解,然后将前端了、后端了、等分好模块外包出去做。给擅长的人做擅长的任务,提高效率,降低成本,同时还能给第三方带来收益。在当前不景气的经济环境下也能缓解第三方资金上的压力。因为你参与,起码也是证明了你技术的过硬,我们对外分配的任务会优先向你倾斜。
## 当前使用情况
本项目始于2021年,2022年全部重构推出v2版本,23年初使用量已经达到每月六千万次,2023年底推出v3版本前,使用量已经达到每月40亿+,并以及其迅猛的速度快速增长。所以23年底推出v3版本进行去中心化服务器,以应对更加庞大的使用量。
目前像是 Discuz、易优CMS、迅睿CMS、……等应用市场都有本插件的包装版本上架并进行销售,而且也取得了比较丰富的收益!重点是我们完全支持这样做,而且开发时遇到任何技术问题我提供全程参与指导、以及插件推广也会挂到我们主页中!
## 我能给与哪些支持
1. 您做应用或插件适配时,我提供全程技术指导,有必要可以拉我进行在线会议实时沟通
1. 您做的应用或插件,所给你带来的收益,我们完全支持并认可。
1. 在我们官方首页位置、以及开源仓库介绍中,加入您应用或插件的链接入口,帮您推广
## 联系
有意向的朋友,欢迎加我微信 17076012262 也可直接打我这个电话,说一下你想开发哪方面的插件、需要我提供什么支持等
-
为什么切换语言会刷新页面的解释
这个目前是第一次切换语种时,不会刷新页面,但是第二次或以后切换语种时,会刷新页面。
也就是比如,你当前页面本身是简体中文,你切换成了英文,并不会刷新页面,但是你切换成英文后,在想切换成法语等别的语种时,就会先刷新当前页面,再切换成法语。
有好几个朋友都提过这个问题,为什么不做到无刷新切换呢?首先这个需要开发,而且搞这个会投入不小精力,最重要的一点是,我认为这个需求并不是非常需要的。作为一个正常的用户,用户的需求并不是去帮你做测试的,而是去使用你的本身的产品!如果用户去不断的切换语言,这只能说明这个用户带着试试的态度,探寻的目的去看看它能不能真的切换,切换后是什么样子,它的重点已经不是全部放在你本身的产品上了。
另外还有人提过,用户已经看了一些内容了,刷新后再看,如果我做的是类似今日头条这种每次打开都会推荐不同的内容,那岂不是用户看了一半然后一切换就找不到了吗? 可是用户既然要切换语言,证明当前的语种就是自己不熟悉的,都不熟悉怎么会先看一半?
经过综合评估,感觉这个功能的投入时间跟实际作用并不成正比,只是感觉上这个效果挺好,但是实际呢,也就只是开发者、测试人员感觉挺好。
如果您的老板强烈要求你必须增加无刷新翻译的功能,并且您的老板可以提供一点点赞助,我们可以做无刷新切换
-
广告联盟计划-广告投放及分佣
最近时不时有朋友找我询问,是否可以通过我们所覆盖的庞大的的流量,通过我们投放广告进行宣传推广自己,所以有了这个想法,一是网站主可以展示广告;二是广告主可以投放广告。而我提供中间方平台支持。
当前像是国内推广,比如百度竞价排名了,国外推广像是谷歌推广了,费用都是不低的,所以才有了这个想法
## 广告主:
1. 可指定国家投放广告。比如想让广告只在哪个国家才会展示
## 网站主:
1. 不管你网站内容是什么,都可投放(只是想法,会尽量去做到)
1. 开启简单,直接加入一行 ````translate.ad('你的广告收益ID');```` 就能开启,执行这个后会去动态加载广告需要的库(当前还没有,只是想法)
1. 不管你是否有自己网站,只要你可以加入广告代码,并且在网站上能展示出来,都能来赚钱。比如你做开源产品的,插入广告用来维持你的生活开支。
1. 你可以把广告加到别人网站中去,只要 translate.ad(‘广告收益id’) 这个广告收益id是你的,广告展示就会记到你的名下。这个更倾向于面向开源产品,开源产品被人使用时,某个页面中会显示一些广告,作为给开源者的回馈
## 联系
如果您是网站可以投放广告、或者您想在哪个国家投放广告、或者您是搞技术的可以将这个翻译代码加入您的产品或者给其他人用想开启广告赚取收益,都可以联系我,微信 xnx3com 当前只是有这个想法,所以提出来,看有多少想参与的朋友
-
translate.js v2 升级 v3 注意事项
首先,v2版本可完美升级到v3版本,无需做任何别的变动。
其次,v3版本感谢微软为此提供的翻译服务、感谢七牛云提供全球CDN加速服务。我们还是建议您进行以下方式的操作:
## 操作方式
##### 1. 更换translate.js 的 CDN源【非必须】
如果您之前使用的是
````
http://res.wang.market/translate/translate.js
````
这个是放在了香港服务器,并未做全球cdn加速,建议您可以更换为七牛云提供的全球CDN加速的:
````
https://cdn.staticfile.net/translate.js/3.1.5/translate.js
````
##### 2. 增加 client.edge 设定【非必须】
在 translate.execute() 前,加入一行
````
translate.service.use('client.edge');
````
设置翻译通道不在依赖translate.service,而是直接有微软提供支持。注意的是 client.edge 支持 73 种翻译语种。
详细说明参见 [http://translate.zvo.cn/43086.html](http://translate.zvo.cn/43086.html)
## 说明
* v3版本增加了[翻译服务通道](43086.html)的设定,但是这种模式相比v2版本的,它的缺点是语种少了几十个,v2版本支持一百二十来个语种,而v3版本这个当下只是支持七十多个语种,当然常用的语种肯定是包含了的。两种版本支持的语种对比: [V3版本 client.edge 支持的语种](https://api.translate.zvo.cn/language_edge.json) | [V2版本 translate.service 支持的语种](https://api.translate.zvo.cn/language.json)
* v2版本的翻译服务有私有部署的 translate.service 提供,也就是translate.js本身是脱离不了 translate.service 翻译服务的,而v3版本的翻译服务核心不再依赖 translate.service 翻译服务,有微软直接提供翻译服务,即使 translate.service 翻译服务宕机,也不会影响 translate.js 的正常使用
* 不再有日翻译字符上限!就算你网站一天翻译一百亿字符都可以。但是如果手动设置了 translate.service.use('translate.service'); 进行强制指定翻译服务有 translate.service 提供,那么还是有每日翻译上限额,并且每日翻译上限有2023年的每日500万字符上限,会进行逐步降低,目前暂定降低策略为2024.4.1日每日300万字符的上限,2024.6.1日每日 100万字符上限。
建议升级到 client.edge 的方式,享受翻译无字符上限。
* 使用它后,不再给你网址进行翻译字符数统计(因为不再有字符限制了)
* 使用它后,不再局限于本地的几种语种了,例如你可以在日文网站上用(还需待大量实践验证)
* 使用它后,你的翻译语句更通顺了,比如它来翻译文档或者小说,更易于阅读了。
* 拥有更好的自动容错能力,你对前端不需要太了解,就能非常好的把它植入你的网站中
这里变动的主要由于支持语种有一百二十多种降低到七十多种,如果您在使用时,有过自定义切换语种,并且自定义切换语种的界面所支持的语种比较多,那么您需要对比一下您自定义的语种是否在v3中有支持。如果您普通的使用比如英文、简体中文、繁体中文、法语、德语、俄语 等常用语种,那么肯定都是支持的,如果您切换语种非常多,有些非常不常见的语种,那么您需要进行跟v3的语种对比看看,免得这个切换的语种在v3中再不支持。
至于其他的没有什么不同,v2版本可无缝升级v3,无需任何其他改动
## 感谢
v3版本的机器翻译服务有微软提供
v3版本的 translate.js 全球高速cdn通道有七牛云提供
服务器香港/美国 节点分别有指点云、AO3读者提供
-
作者参与BUG排查修复
如果使用方式没问题,是 translate.js 本身翻译出现了bug,那么可以联系作者进行排查并将进行修复。
为了方便进行排查,您需要把您的项目进行一些操作,使其最终给到我时,可以达到以下条件
1. 我可以本地不需要安装任何环境了准备了,直接双击就能在浏览器中打开调试,比如 demo.html
2. 也或者我可以直接把你给我的直接丢到tomcat中就能访问调试
3. 把问题能复现出来,不要教我怎么第一步,怎么第二步,怎么第三步。。。。尽量简化这个步骤,简化到一两步内就能复现我就能调试
4. translate.js 这个文件可以放在跟你给我的demo.html 文件同目录,demo.html文件你可以被压缩、被加密等都没关系,我只需要能改动 translate.js进行调试就可以
5. 尽量把无关的东西删一删,不然给到我看着乱七八糟一大堆影响调试我也要自己来删,尽量提高我调试的效率
需要满足以上几点,然后把你弄的这个文件或文件夹直接发我,我来帮你解决问题。免费。
## 回馈
如果你反馈的这个确认后真的是个bug,我们将赠送你:
[GiteeAI 的企业级翻译通道一年(价值300元)](545867.html)
-
translate.service.use 的使用
## 使用
````
translate.service.use('client.edge');
````
这个要加到 ````translate.execute()```` 之前
## 注意
1. 这个是一个临时方法,内测完成后,translate.js默认便会直接带着这个设置,不需要在加这一行设置代码
1. 需要 translate.js 的版本为 2.11.7.20240122 , 可直接使用 https://res.wang.market/translate/translate.js
## 带来的改变
##### 首先,先感谢微软为此提供的翻译服务!
1. 使用它后,不再有日翻译字符上限!就算你网站一天翻译一百亿字符都可以。
1. 使用它后,不再给你网址进行翻译字符数统计(因为不再有字符限制了)
1. 使用它后,不再局限于本地的几种语种了,例如你可以在日文网站上用(待大量实践验证)
1. 使用它后,你的翻译语句更通顺了,比如它来翻译文档或者小说,更易于阅读了。
1. 未来translate.js翻译的走向是倾向于这个的,待验证此中方式无任何bug后,默认将会使用此方式。一些显著的使用比如,不需要再用代码设置本地语种是什么
1. 我们计划于年前推出 chrome 的一键翻译插件,以解决 chrome浏览器在中国境内“一键翻译为中文”无法使用的问题。而这个插件的核心,便是此。它会给网站带来通用的适配,网站不再需要单独进行设置,不需要前端技术使用代码进行单独适配了。
1. 更好的自动容错能力,你对前端不需要太了解,就能非常好的把它植入你的网站中
-
联系作者
作者微信:xnx3com (使用交流可加QQ群进行,我看微信不太及时)
Telegram : [untran](https://t.me/untran)
交流QQ群:181781514(已满)
交流QQ群:641047127(已满)
交流QQ群:240567964(已满)
交流QQ群:1034085260
交流QQ群:1017938586
交流QQ群:749330213
作者邮箱:
[email protected]
微信公众号:wangmarket
-
TCDN使用说明-2024.4
[TOC]
这个是当前 2024.4 最新的,部署在我们服务器做内测使用的,SAAS版本的,极大降低了TCDN部署服务器的成本。它翻译后的网页支持推送到阿里云OSS、华为云OBS、七牛云Kodo、SFTP、等等多种存储方式,使用其进行存放翻译后的网页,从速度、自定义控制、部署成本等进行了极大幅度的优化。
并且提供了在线的使用体验,降低了使用门槛。
目前已完美适配了网市场云建站系统做的网站,其他建站系统做的网站基本也都支持,如果您的网站支持不够好,可以反馈,我们将进行适配。
[TCDN已开放授权私有部署,详情点击查看。 - 2024.4.30](43504.html)
在线试用步骤:
## 1. 免费注册TCDN账户
[http://tcdn.zvo.cn/reg.html](http://tcdn.zvo.cn/reg.html)
点击链接在线注册开通,免费使用。 (因使用量比较大,当前只限网站页面不超过100个网页的网站,如果你网站页面比较多,可以联系我们放开限制)

另外注册以后,登录的网址为 [http://tcdn.zvo.cn](http://tcdn.zvo.cn)
## 2. 站点管理-添加
通过左侧站点管理,添加一个网站。
这里添加的网站,也就是你要进行翻译的网站,比如你原本网站是中文,要根据这个中文网站来自动生成英文、韩语网站,这里添加的网站就是你的原本的中文网站


其中 sitemap 是非必填的。 一开始的时候这里完全可以忽略不用填写。
这里可以自定义此网站的sitemap.xml
这里如果不设置(也就是留空),那么在执行翻译任务操作时,会自动获取 此网站/sitemap.xml 他们网站本身的这个 sitemap.xml ,如果这个网站没有 sitemap.xml ,那么是没法执行翻译任务的,所以这里就有用了,如果原本网站没有这个文件,就可以自己用在线生成sitemap.xml的工具生成一个此网站的sitemap.xml文件,然后传上来。
另外如果源站人家原本的sitemap.xml文件中的网址不全,或者少了哪些连接、多了哪些无用的连接了,也都可以手动下载人家源站的sitemap.xml文件,经过改动后传上来。
## 3. 翻译管理

点击源站网址、或者 管理 按钮,都可以进入 管理 页面,对这个源站的翻译进行详细的设置、调试等。进入后的页面如下:

其中,鼠标放到某个文字上,会实时出现相应提示说明,便于理解是什么作用,如下

## 4. 添加翻译语种


比如,添加时,访问域名你不知道怎么填写,你可以将鼠标放到 访问域名 这四个字上,会出现相应提示,告诉你这是干什么的,什么作用,如何填写,如下:

## 5. 预览调试
鼠标放到 预览调试 文字上,会出现这个得相关说明。
它可以对某个页面进行翻译预览。它的作用是进行精细的调控,比如翻译之后的页面感觉某个地方不合适,或者某个图片没翻译好,可以通过此来进行调试,因为它可以针对某一个具体的页面进行调试预览,速度会很快,十来秒就能取得翻译的结果,而不需要生成整个网站后在取查看某个页面的翻译结果。
当这个调试的页面感觉翻译没问题后,您就可以放心的对整站进行翻译了。
可以这么理解,您再生成整站前,可以将您网站的某些页面在这里调试预览,提前试一下,看是否有要进行调整的

这里点击预览调试按钮,进行预览调试(预览调试按钮前面有个输入框,默认是 / 也就是使用你源站的首页进行预览调试。 比如你还有个关于我们页面想要调试,你可以再预览调试前面的输入框填写 /aboutus.html 然后再点预览调试,那调试的便是这个关于我们的页面了 )

然后我们即可看到翻译的结果页面了

(这个案例网站中,像是首页、关于我们这些文字是js动态显示的,所以翻译后看到它的文字依旧是中文,这个就需要用 翻译控制 能力进行精细调节、或者更改源站不要使用js动态控制文本显示)
当我们查看其页面源代码,会发现源代码是已经被翻译之后的

## 6. 翻译控制 - 对翻译结果进行调整
这里打个比方,比如,我们想忽略导航栏,不让顶部导航栏被翻译,那么可以这么做,首先找到顶部导航栏的属性,这里直接取导航栏的id,如下图

得到导航栏的id为 menu_pc_ul
这里我们知道,translate.js 中,如果对某个id忽略不进行翻译,是
````
translate.ignore.id.push('menu_pc_ul');
````
(文档来源: [http://translate.zvo.cn/41547.html](http://translate.zvo.cn/41547.html) )
然后 翻译控制 的编辑按钮,进行编辑

填入后,点击底部的保存。

即可完成了保存。
如果对这填写的两项有疑惑,不知道是什么作用,可以鼠标放到其上面查看相关说明:

设置完毕后,再执行第五步的预览调试:

即可发现,结果已经发生了变化:

顶部导航栏已经不再被翻译,我们通过翻译控制进行自定义调整已经生效了。
到此,您已可以对页面完成了翻译能力的配置,剩下的,就是吧翻译的结果推送到某个地方进行保存、提供对外访问了。
## 7. 存储设置

配置这个语种翻译之后的网页,是要存储在什么地方。
比如,翻译的语种是日本,您可以在华为云OBS开通一个日本的OBS云存储,配置上,然后将日本这个语种的访问域名绑定到华为云OBS,如此当日本的用户访问时,访问到的是本国的存储节点,达到秒开。
存储方式支持SFTP、FTP、华为云OBS、阿里云OSS、七牛云Kodo……多种存储方式,您可以选择您最熟悉的存储方式配置上。
(存储能力有开源项目 [https://gitee.com/mail_osc/FileUpload](https://gitee.com/mail_osc/FileUpload) 提供支持)
当然,鼠标放到 设置 文字上,也能看到存储设置的相关说明:

点击存储设置按钮后,即可弹出一个存储设置的填写,如下图:

这里你可以选择一个你所熟悉的存储方式,填写完毕,进行保存时,系统会自动进行连接测试,如果填写没问题,能连通,那么就可以设置成功了。
## 8. 执行翻译
进行翻译,执行翻译,将原本网站翻译为指定语种,并存储到您自己设置的存储位置进行存储。
**注意**
1. 执行翻译时,会自动读取您源站根路径下的 sitemap.xml 文件,根据此文件中存在的页面进行翻译。 如果您源站没有 sitemap.xml 文件,则只是会翻译首页提供效果测试
2. 当前因使用人数众多,所以增加了一个限制,sitemap.xml 中不超过100个页面,才会进行翻译,如果超过了100个页面了,需要与我们联系后才能放开限制,以防止有人故意提交页面非常多的网站,占用计算资源,导致其他人排队等待会非常漫长。
2. 点击执行后,会创建一个翻译任务,翻译任务并不会立即执行,而是进入排队期,前面排队的任务(包括别人的)都执行完后才会执行您此次的翻译任务。您可以通过“查看日志”来时时查看任务执行情况
## 9. 查看翻译任务排队情况
由于您提交翻译任务后会进入排队状态,所以只有排队到您的任务时,才会正式被翻译并推送到您自己设置的存储空间。
当前有多少人在排队,你排在第几位,我们可以通过此来查看当前实时的排队情况

同样,鼠标放到文本上,也会显示相应提示:

如果你当前已经提交翻译任务并且已经在执行了,你可以方便的查看当前执行情况及进度,如下图:

其中右上角的 [刷新] 按钮,可以随时点击刷新查看当前任务的最新进度,比如执行到了第几个、是否有某个页面翻译失败等。
[立即结束我的任务] 按钮,可以立即结束你当前正在进行的任务。 当你点击按钮结束任务后,你可以查看日志,便可以看到任务执行完哪一个网址后结束的

## 10. 查看翻译结果及访问
当您的翻译任务排到并执行后,您可以手动登录您在上面第7步所配置的存储中,进入看一下,看看是否已经多了您网站相关的翻译页面。
这些页面便是TCDN自动翻译并将翻译后的网页自动推送过来的。
有了页面,您也就可以绑定域名进行访问了。 比如绑定个二级域名 english.xxxx.com 提供英文翻译页面的访问
如果您想通过目录式访问,比如 www.xxxx.com/english 您可以要在第7步中,将存储空间设置到您本身网站的 english 路径下,这样翻译完成后自然也就能访问到了
## 11. 翻译日志查看

您可以通过翻译日志,来查看您的翻译具体执行情况
可以检索结果,如下图所示,可以检索翻译失败的记录

找到这个失败翻译记录,可以进行下载这个任务翻译失败的url (仅仅只是这个任务的)
自动将本任务中所有翻译失败的url组合为一个sitemap.xml下载下来,您可以将这个翻译失败的sitemap.xml 上传上去重新执行翻译。
## 12. 更多使用扩展
#### 示例一:设置网页翻译属性
比如我想设置网页中翻译时,直接使用[元素整体翻译](http://translate.zvo.cn/42563.html),这样可以翻译的更准确些,那么就可以设置 [翻译控制] - [翻译前执行的JavaScript] 来进行设置,如下图:

#### 示例二:超链接处理替换
设置网页中所有的超链接(也就是A标签),链接地址中如果包含有 ````http://www.zvo.cn```` 这个域名的,自动替换为 ````http://abc.com/english```` 那么也可以使用翻译控制来进行

其中代码:
````
// 获取当前网页中所有的 a 标签
const links = document.getElementsByTagName('a');
for (let i = 0; i < links.length; i++) {
const link = links[i];
const href = link.getAttribute('href');
if(typeof(href) == 'undefined' || href == null){
continue;
}
if (href.includes('http://www.zvo.cn')) {
if(href.indexOf('http://abc.com/english') > -1){
//已经替换过了
continue;
}
link.href = href.replace('http://www.zvo.cn', 'http://abc.com/english');
}
}
````
#### 示例三:中文翻译为英文,文字变长撑破布局了
中文的文本宽度比英文的要小很多,很多情况下中文站翻译为英文后会出现布局被文本撑破的现象。这样就要针对英文的来进行单独的适配。
比较实际的做法,就是如果是英文站,那么引入一个专门为英文站适配的css样式文件,对原本的某些样式进行重写,以应对英文浏览。那么这个英文适配的css文件 ```````` 把这个样式引入设置到 [翻译控制] - [翻译后追加的html代码] 这样翻译后的页面变会自动将这个引入样式的代码追加到 ````