1 Star 1 Fork 373

连山/translate

forked from 鬼画符/translate 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
translate.js 6.32 KB
一键复制 编辑 原始数据 按行查看 历史
鬼画符 提交于 2022-10-10 14:09 +08:00 . update v1.2
/**
* 国际化,网页自动翻译。
* 整理人:管雷鸣
*/
var translate = {
/*
* 当前的版本
*/
version:1.2,
/*
* 翻译的对象,也就是 new google.translate.TranslateElement(...)
*/
translate:null,
/*
* 支持哪些语言切换,包括:de,hi,lt,hr,lv,ht,hu,zh-CN,hy,uk,mg,id,ur,mk,ml,mn,af,mr,uz,ms,el,mt,is,it,my,es,et,eu,ar,pt-PT,ja,ne,az,fa,ro,nl,en-GB,no,be,fi,ru,bg,fr,bs,sd,se,si,sk,sl,ga,sn,so,gd,ca,sq,sr,kk,st,km,kn,sv,ko,sw,gl,zh-TW,pt-BR,co,ta,gu,ky,cs,pa,te,tg,th,la,cy,pl,da,tr
* 已废弃,请使用 translate.selectLanguageTag.languages
*/
includedLanguages:'zh-CN,zh-TW,en',
/*
* 资源文件url的路径
*/
resourcesUrl:'//res.zvo.cn/translate',
/**
* 默认出现的选择语言的 select 选择框,可以通过这个选择切换语言。
*/
selectLanguageTag:{
/* 是否显示 select选择语言的选择框,true显示; false不显示。默认为true */
show:true,
/* 支持哪些语言切换,包括:de,hi,lt,hr,lv,ht,hu,zh-CN,hy,uk,mg,id,ur,mk,ml,mn,af,mr,uz,ms,el,mt,is,it,my,es,et,eu,ar,pt-PT,ja,ne,az,fa,ro,nl,en-GB,no,be,fi,ru,bg,fr,bs,sd,se,si,sk,sl,ga,sn,so,gd,ca,sq,sr,kk,st,km,kn,sv,ko,sw,gl,zh-TW,pt-BR,co,ta,gu,ky,cs,pa,te,tg,th,la,cy,pl,da,tr */
languages:'zh-CN,zh-TW,en',
},
/*
* 当前本地语言
*/
//localLanguage:'zh-CN',
localLanguage:'zh-CN',
/**
* google翻译执行的
*/
googleTranslateElementInit:function(){
var selectId = '';
if(document.getElementById('translate') != null){ // && document.getElementById('translate').innerHTML.indexOf('translateSelectLanguage') > 0
//已经创建过了,存在
selectId = 'translate';
}
translate.translate = new google.translate.TranslateElement(
{
//这参数没用,请忽略
pageLanguage: 'zh-CN',
//一共80种语言选择,这个是你需要翻译的语言,比如你只需要翻译成越南和英语,这里就只写en,vi
//includedLanguages: 'de,hi,lt,hr,lv,ht,hu,zh-CN,hy,uk,mg,id,ur,mk,ml,mn,af,mr,uz,ms,el,mt,is,it,my,es,et,eu,ar,pt-PT,ja,ne,az,fa,ro,nl,en-GB,no,be,fi,ru,bg,fr,bs,sd,se,si,sk,sl,ga,sn,so,gd,ca,sq,sr,kk,st,km,kn,sv,ko,sw,gl,zh-TW,pt-BR,co,ta,gu,ky,cs,pa,te,tg,th,la,cy,pl,da,tr',
includedLanguages: translate.selectLanguageTag.languages,
//选择语言的样式,这个是面板,还有下拉框的样式,具体的记不到了,找不到api~~
layout: 0,
//自动显示翻译横幅,就是翻译后顶部出现的那个,有点丑,设置这个属性不起作用的话,请看文章底部的其他方法
//autoDisplay: false,
//disableAutoTranslation:false,
//还有些其他参数,由于原插件不再维护,找不到详细api了,将就了,实在不行直接上dom操作
},
selectId //触发按钮的id
);
},
/**
* 初始化,如加载js、css资源
*/
init:function(){
/****** 先判断当前协议,定义资源路径 ******/
var protocol = window.location.protocol;
if(window.location.protocol == 'file:'){
//本地的,那就用http
protocol = 'http:';
}
if(this.resourcesUrl.indexOf('://') == -1){
//还没设置过,进行设置
this.resourcesUrl = protocol + this.resourcesUrl;
}
//this.resourcesUrl = 'file:///Users/apple/git/translate';
},
/**
* 执行翻译操作
*/
execute:function(){
/*********** 判断translate 的id是否存在,不存在就创建一个 */
if(document.getElementById('translate') == null){
if(translate.selectLanguageTag.show){
var body_trans = document.getElementsByTagName('body')[0];
var div = document.createElement("div"); //创建一个script标签
div.id="translate";
body_trans.appendChild(div);
}
}
/* 处理1.0 - 1.1 升级的 */
if(translate.includedLanguages != 'zh-CN,zh-TW,en'){
/* 用户1.0版本设置过这个,那么就以这个为主 */
translate.selectLanguageTag.languages = translate.includedLanguages;
console.log('translate.js tip: translate.includedLanguages obsolete, please use the translate.selectLanguageTag.languages are set');
}
/****** 先加载资源 ******/
var head0 = document.getElementsByTagName('head')[0];
var script = document.createElement("script"); //创建一个script标签
script.type = "text/javascript";
//script.async = true;
script.src = this.resourcesUrl+'/js/element.js';
head0.appendChild(script);
},
/**
* 设置Cookie,失效时间一年。
* @param name
* @param value
*/
setCookie:function (name,value){
var cookieString=name+"="+escape(value);
document.cookie=cookieString;
},
//获取Cookie。若是不存再,返回空字符串
getCookie:function (name){
var strCookie=document.cookie;
var arrCookie=strCookie.split("; ");
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split("=");
if(arr[0]==name){
return unescape(arr[1]);
}
}
return "";
},
/**
* 获取当前页面采用的是什么语言
* 返回值如 en、zh-CN、zh-TW (如果是第一次用,没有设置过,那么返回的是 translate.localLanguage 设置的值)
*/
currentLanguage:function(){
translate.check();
var cookieValue = translate.getCookie('googtrans');
if(cookieValue.length > 0){
return cookieValue.substr(cookieValue.lastIndexOf('/')+1,cookieValue.length-1);
}else{
return translate.localLanguage;
}
},
/**
* 切换语言,比如切换为英语、法语
* @param languageName 要切换的语言语种。传入如 en、zh-CN
*/
changeLanguage:function(languageName){
translate.check();
var googtrans = '/'+translate.localLanguage+'/'+languageName;
//先清空泛解析域名的设置
var s = document.location.host.split('.');
if(s.length > 2){
var fanDomain = s[s.length-2]+'.'+s[s.length-1];
document.cookie = 'googtrans=;expires='+(new Date(1))+';domain='+fanDomain+';path=/';
document.cookie = 'googtrans='+googtrans+';domain='+fanDomain+';path=/';
}
translate.setCookie('googtrans', ''+googtrans);
location.reload();
},
/**
* 自检提示
*/
check:function(){
if(window.location.protocol == 'file:'){
console.log('\r\n---WARNING----\r\ntranslate.js 主动翻译组件自检异常,当前协议是file协议,翻译组件要在正常的线上http、https协议下才能正常使用翻译功能\r\n------------');
}
}
}
try{
translate.init();
//translate.execute();
}catch(e){ console.log(e); }
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/gygczxq/translate.git
git@gitee.com:gygczxq/translate.git
gygczxq
translate
translate
master

搜索帮助