i18n-jsautotranslate 3.15.0 → 3.15.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +52 -12
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -14,7 +14,7 @@ var translate = {
14
14
  * 格式:major.minor.patch.date
15
15
  */
16
16
  // AUTO_VERSION_START
17
- version: '3.15.0.20250429',
17
+ version: '3.15.5.20250517',
18
18
  // AUTO_VERSION_END
19
19
  /*
20
20
  当前使用的版本,默认使用v2. 可使用 setUseVersion2();
@@ -336,6 +336,22 @@ var translate = {
336
336
 
337
337
  translate.to = languageName;
338
338
  translate.storage.set('to',languageName); //设置目标翻译语言
339
+
340
+ /*
341
+ 1. 先触发父级,免得当前刷新了,导致父级不执行翻译了
342
+ */
343
+ //检测当前是否处于iframe中,如果当前是在iframe中,有父级页面,也要触发父级进行翻译
344
+ try{
345
+ if(window.self !== window.top){
346
+ if(typeof(window.parent.translate) == 'object' && typeof(window.parent.translate.version) == 'string'){
347
+ //iframe页面中存在 translate,那么也控制iframe中的进行翻译
348
+ window.parent.translate.changeLanguage(languageName);
349
+ }
350
+ }
351
+ }catch(e){
352
+ //增加try,避免异常导致无法用
353
+ console.log(e);
354
+ }
339
355
 
340
356
  if(isReload){
341
357
  location.reload(); //刷新页面
@@ -351,7 +367,11 @@ var translate = {
351
367
  const iframeWindow = iframe.contentWindow;
352
368
  if(typeof(iframeWindow.translate) == 'object' && typeof(iframeWindow.translate.version) == 'string'){
353
369
  //iframe页面中存在 translate,那么也控制iframe中的进行翻译
354
- iframeWindow.translate.execute();
370
+ if(iframeWindow.translate.to != languageName){
371
+ iframeWindow.translate.to = languageName;
372
+ iframeWindow.translate.storage.set('to',languageName); //设置目标翻译语言
373
+ iframeWindow.translate.execute();
374
+ }
355
375
  }
356
376
  }
357
377
  }
@@ -2902,7 +2922,7 @@ var translate = {
2902
2922
  }
2903
2923
  }
2904
2924
 
2905
- console.log(textArray);
2925
+ //console.log(textArray);
2906
2926
  return textArray;
2907
2927
  },
2908
2928
 
@@ -3617,6 +3637,8 @@ var translate = {
3617
3637
  thai 泰语
3618
3638
  arabic 阿拉伯语
3619
3639
  romanian 罗马尼亚语
3640
+ hebrew 希伯来语
3641
+
3620
3642
  */
3621
3643
  getCharLanguage:function(charstr){
3622
3644
  if(charstr == null || typeof(charstr) == 'undefined'){
@@ -3665,6 +3687,9 @@ var translate = {
3665
3687
  if(this.romanian(charstr)){
3666
3688
  return 'romanian';
3667
3689
  }
3690
+ if(this.hebrew(charstr)){
3691
+ return 'hebrew';
3692
+ }
3668
3693
  //未识别是什么语种
3669
3694
  //console.log('not find is language , char : '+charstr+', unicode: '+charstr.charCodeAt(0).toString(16));
3670
3695
  return '';
@@ -4032,6 +4057,10 @@ var translate = {
4032
4057
  return false;
4033
4058
  }
4034
4059
  },
4060
+ //希伯来语
4061
+ hebrew:function(str){
4062
+ return /[\u0590-\u05FF]/u.test(str);
4063
+ },
4035
4064
  //0-9 阿拉伯数字
4036
4065
  number:function(str){
4037
4066
  if(/.*[\u0030-\u0039]+.*$/.test(str)){
@@ -4974,15 +5003,17 @@ var translate = {
4974
5003
  //机器翻译采用哪种翻译服务
4975
5004
  service:{
4976
5005
  /*
4977
- name填写的值有
4978
- translate.service 有 http://translate.zvo.cn/41160.html 提供机器翻译服务
4979
- client.edge 有edge浏览器接口提供翻译服务 ,也就是执行翻译时直接是
4980
-
5006
+ name填写的值,参考 translate.service.use 的注释
4981
5007
  */
4982
5008
  name:'translate.service',
4983
5009
 
4984
5010
  /*
4985
5011
  其实就是设置 translate.service.name
5012
+ 可以设置为:
5013
+
5014
+ translate.service 自行部署的translate.service 翻译API服务,部署参考: https://translate.zvo.cn/391129.html
5015
+ client.edge 使用无服务器的翻译,有edge浏览器接口提供翻译服务
5016
+ siliconflow 使用指点云提供的服务器、硅基流动提供的AI算力进行大模型翻译
4986
5017
 
4987
5018
  */
4988
5019
  use: function(serviceName){
@@ -4990,11 +5021,17 @@ var translate = {
4990
5021
  console.log('您已启用了企业级翻译通道 translate.enterprise.use(); (文档:https://translate.zvo.cn/4087.html) , 所以您设置的 translate.service.use(\''+serviceName+'\'); (文档:https://translate.zvo.cn/4081.html) 将失效不起作用,有企业级翻译通道全部接管。');
4991
5022
  return;
4992
5023
  }
4993
- if(typeof(serviceName) == 'string' && serviceName == 'client.edge'){
5024
+ if(typeof(serviceName) == 'string'){
4994
5025
  translate.service.name = serviceName;
5026
+ if(serviceName != 'translate.service'){
5027
+ if(serviceName == 'siliconflow'){
5028
+ //设定翻译接口为硅基流动的
5029
+ translate.request.api.host=['https://siliconflow.zvo.cn/','https://america.api.translate.zvo.cn:1414/','https://deutsch.enterprise.api.translate.zvo.cn:1414/'];
5030
+ }
4995
5031
 
4996
- //增加元素整体翻译能力
4997
- translate.whole.enableAll();
5032
+ //增加元素整体翻译能力
5033
+ translate.whole.enableAll();
5034
+ }
4998
5035
  }
4999
5036
  },
5000
5037
  //客户端方式的edge提供机器翻译服务
@@ -5034,7 +5071,10 @@ var translate = {
5034
5071
  let translateTextArray = translate.util.split(textArray, 40000, 900);
5035
5072
 
5036
5073
  translate.request.send(translate.service.edge.api.auth, {}, function(auth){
5037
- var from = translate.service.edge.language.getMap()[data.from];
5074
+ var from = data.from;
5075
+ if(from != 'auto'){
5076
+ from = translate.service.edge.language.getMap()[data.from];
5077
+ }
5038
5078
  var to = translate.service.edge.language.getMap()[data.to];
5039
5079
  var transUrl = translate.service.edge.api.translate.replace('{from}',from).replace('{to}',to);
5040
5080
 
@@ -6337,7 +6377,7 @@ var translate = {
6337
6377
  //console.log(JSON.stringify(kvs, null, 2));
6338
6378
 
6339
6379
  /**** 第二步,将文本值进行翻译 ***/
6340
- //先将其 kvs 的key 取出来
6380
+ //先将其 kvs 的key 取出来
6341
6381
  var texts = new Array();
6342
6382
  for (const key in kvs) {
6343
6383
  texts.push(key);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "i18n-jsautotranslate",
3
- "version": "3.15.0",
3
+ "version": "3.15.5",
4
4
  "description": "Two lines of js realize automatic html translation. No need to change the page, no language configuration file, no API key, SEO friendly!",
5
5
  "main": "index.js",
6
6
  "scripts": {