最近使用谷歌翻译的插件,发现直接使用网上的资源可能会出现链接超时错误,附上本地静态资源链接:
链接:https://pan.baidu.com/s/12QcRb-WOY0eSc4OhlcgG0g
提取码:ji90
首先是成功后出现的调用资源的顺序,可以看看自己的项目是在哪一步,没有被调用到什么资源。
第一次遇见的BUG ——没有加载完整资源
看自己的前端network,参考上面的正确的调用顺序,发现自己的页面调用到element.js?cb=goodleTranslateElementInit后面就没调用其他翻译中的资源了。
(正确的应该会调用element_**.js,element_main.js、element.js)
有可能是你element.js、element_main.js、你选择的那个语言编码js(比如中文是main-ZH-cn.js),看看这几个文件中有没有出现resourceUrl这个变量。如果有,有两种方法:
1.去掉所有element.js、element-main.js、你所用到的翻译语言js(比如英文是main_en.js)、的resouceUrl,主要是下面贴代码的这几个文件。
2.第二种方法是我在项目中遇见的,就是把所有的调用资源的语句前面加上resourceUrl,,,,,,,,,
下面是这几个需要去掉或加上的js文件,大家根据自己的情况而定:
注意resouceUrl + "/js/te_bk.gif" 需要在原来的js前加一个"/",不要出现路径拼接的问题
element.js ———位置在文件的最后面
var b = s + h;
c._pah = h;
c._pas = s;
c._pbi = resourcesUrl + '/js/te_bk.gif';
c._pci = resourcesUrl +'/js/te_ctrl3.gif';
c._pli = resourcesUrl +'/js/loading.gif';
c._plla = h+'/translate_a/l';
c._pmi = resourcesUrl +'/js/mini_google.png';
c._ps = resourcesUrl + '/css/translateelement.css';
c._puh = resourcesUrl + '/translate.google.com';
_loadCss(c._ps);
if(localLanguage == 'en'){
_loadJs(resourcesUrl + '/js/main.js');
}else{
_loadJs(resourcesUrl + '/js/main_'+localLanguage+'.js');
}
element_ZH-CN.js ————位置同样在项目的后面
else {
var C = g._pas + g._pah + A,
D = document.createElement("script");
D.type = "text/javascript";
D.charset = "UTF-8";
D.src = resourcesUrl + "/js/element_main.js";
var E = document.getElementsByTagName("head")[0];
E || (E = document.body.parentNode.appendChild(document.createElement("head")));
E.appendChild(D)
}
e("google.translate.m", f);
e("google.translate.v", h)
};
main.js————同样在项目最后
else {
var D = h._pas + h._pah + B,
E = document.createElement("script");
E.type = "text/javascript";
E.charset = "UTF-8";
// E.src = D;
E.src = resourcesUrl + "/js/element_main.js";
var F = document.getElementsByTagName("head")[0];
F || (F = document.body.parentNode.appendChild(document.createElement("head")));
F.appendChild(E)
}
f("google.translate.m", g);
f("google.translate.v", k)
};
}).call(window)
第二次遇见的BUG
在网上搜这个error可能是因为该变量上一行的拼写错误,于是我localLanguage定义放在了第一行,,,,,结果还是不行,最后发现截图中选中的那条引用语句位置不对。
这条js引用应该写在
让localLuanguage去调用系统中的语言,不去使用谷歌翻译插件。