这是 demo 。
它在js小提琴和我的localhost上工作得很好但是当我在shopify商店执行它时它不起作用。告诉我以下错误...
Uncaught TypeError: $(...).translate is not a function
出于试用目的,我按照shopify store的所有步骤进行了操作。
任何人都可以制作另一个初始化逻辑。
我使用的插件的文档可以在 here 找到。
答案 0 :(得分:0)
看起来没有添加js。试试这个:
$(function() {
var t = {
"Toggle navigation": {
pt: "Mostrar/esconder navegação",
es: "Mostrar/esconder navegação in spanish",
de: "Mostrar/esconder navegação in german"
},
"Home": {
pt: "InÃcio",
es: "InAcio in spanish",
de: "InAcio in german"
},
"abhishek": {
pt: "abisek",
es: "abishek in spanish",
de: "abhishek in german"
},
"kirar": {
pt: "kerar",
es: "kirar in spanish",
de: "kirar in german"
},
"indore": {
pt: "Indoor",
es: "indoor in spanish",
de: "indoore in german"
},
About: {
pt: "Acerca",
es: "acerea in spanish",
de: "acerea in german"
},
"Language": {
pt: "Idioma",
es: "idioam in spanish",
de: "idioam in german"
},
"Step": {
pt: "Passo",
es: "passo in spanish",
de: "passo in german"
},
"translate.js is a jQuery plugin to translate text in the client side." : {
pt: "translate.js é um plugin JQuery para traduzir texto client side.",
es: "translate.js é um plugin JQuery para traduzir texto client side. in spanish",
de: "translate.js é um plugin JQuery para traduzir texto client side. in german"
},
"Usage: translate entire page": {
pt: "Uso: traduzir uma página inteira",
es: "Uso: traduzir uma página inteira in spanish",
de: "Uso: traduzir uma página inteira in german"
},
"Usage: translate a string": {
pt: "Uso: traduzir uma string",
es: "Uso: traduzir uma string in es",
de: "Uso: traduzir uma string in de"
},
"include JQuery and translate.js in your page" : {
pt: "incluir JQuery e translate.js na página",
es: "incluir JQuery e translate.js na página in spanish",
de: "incluir JQuery e translate.js na página in german"
},
"every text you want translated include the <code>trn</code> class" : {
pt: "incluir a classe <code>trn</code> no texto a traduzir",
es: "incluir a classe <code>trn</code> no texto a traduzir in spanish",
de: "incluir a classe <code>trn</code> no texto a traduzir in german"
},
"create your dictionary" : {
pt: "criar o dicionário",
es: "criar o dicionário in spanish",
de: "criar o dicionário in ger in german "
},
"initialize the plugin and translate the entire page body" : {
pt: "iniciar o plugin e traduzir o body da página",
es: "iniciar o plugin e traduzir o body da página in spanish",
de: "iniciar o plugin e traduzir o body da página in german"
},
"change to another language" : {
pt: "mudar para outro idioma",
es: "mudar para outro idioma in spanish",
de: "mudar para outro idioma in german"
},
"try it" : {
pt: "experimentar",
es: "experimentar in spanish",
de: "experimentar in german"
},
"translate to English": {
pt: "traduzir para Inglês",
es: "traduzir para Inglês in spanish",
de: "traduzir para Inglês in german"
},
"translate to Portuguese": {
pt: "traduzir para Português",
es: "traduzir para Português in spanish",
de: "traduzir para Português in german"
},
"After you initialize the component you can translate a string" : {
pt: "Depois do componente iniciado, pode-se traduzir uma string",
es: "Depois do componente iniciado, pode-se traduzir uma string in spanish",
de: "Depois do componente iniciado, pode-se traduzir uma string in german"
},
"Download translate.js": {
pt: "Descarregar translate.js",
es: "Descarregar translate.js in spanish",
de: "Descarregar translate.js in german"
}
};
var translater = $('body').translate({lang: "en", t: t});
var str = translater.g("translate");
console.log(str);
// this is used for set default language cook
$(".lang_selector").click(function(ev) {
var lang = $(this).attr("data-value");
translater.lang(lang);
$("#language_drop li").removeClass("active");
$(this).parent().addClass("active");
console.log(lang);
ev.preventDefault();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://www.openxrest.com/translatejs/jquery.translate.js"></script>
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span>Language</span> <b class="caret"></b></a>
<ul class="dropdown-menu" id="language_drop">
<li>
<a href="#" class="lang_selector" data-value="pt"> Português</a>
</li>
<li>
<a href="#" class="lang_selector" data-value="es"> Spanish</a>
</li>
<li>
<a href="#" class="lang_selector" data-value="de"> German</a>
</li>
<li class="active">
<a href="#" class="lang_selector" data-value="en"> English</a>
</li>
</ul>
</li>
</ul>
<a class="btn btn-default lang_selector" href="#" role="button" data-value="en">translate to English</a>
<a class="btn btn-default lang_selector" href="#" role="button" data-value="pt">translate to Portuguese</a>
<a class="btn btn-default lang_selector" href="#" role="button" data-value="es">translate to spanish</a>
<a class="btn btn-default lang_selector" href="#" role="button" data-value="de">translate to german</a>
<h2>Usage: translate entire page</h2>
<span>include JQuery and translate.js in your page</span>
<p>Step</p>
<span>every text you want translated include the <code>trn</code> class</span>
<div class="trn">Step</div>
<ks>Usage: translate a string</ks>
<p>Usage: translate a string</p>
<p>Step</p>
<span>initialize the plugin and translate the entire page body</span>
<p>initialize the plugin and translate the entire page body</p>
<span>Step</span>
<span>change to another language</span>
<span>Step</span>
<span>try it</span>
<h2>Usage: translate a string</h2>
<p>After you initialize the component you can translate a string</p>
<!-- <script src="./js/jquery-1.10.2.min.js"></script> -->
<script>
var a = document.getElementsByTagName("div"); //moved inside function, returns array
for(i=0;i<a.length;i++){ //loop through array
document.getElementsByTagName("div")[i].className += " trn";
}
var a = document.getElementsByTagName("span"); //moved inside function, returns array
for(i=0;i<a.length;i++){ //loop through array
document.getElementsByTagName("span")[i].className += " trn";
}
var a = document.getElementsByTagName("p"); //moved inside function, returns array
for(i=0;i<a.length;i++){ //loop through array
document.getElementsByTagName("p")[i].className += " trn";
}
var a = document.getElementsByTagName("h2"); //moved inside function, returns array
for(i=0;i<a.length;i++){ //loop through array
document.getElementsByTagName("h2")[i].className += " trn";
}
var a = document.getElementsByTagName("a"); //moved inside function, returns array
for(i=0;i<a.length;i++){ //loop through array
document.getElementsByTagName("a")[i].className += " trn";
}
</script>
</body>
</html>
答案 1 :(得分:0)
$ch = curl_init("https://$shop_name/admin/script_tags.json");
$params = json_encode(array("script_tag"=> array("event" => "onload",
"src" => "https://monza.mochahost.com/~shreyasoft/languagetranslator/new_script_tag.php")));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"X-Shopify-Access-Token: $token"
));
$result = curl_exec($ch);
// print_r($result);
我得到了解决方案,外部脚本标签。问题是shopify限制。