Skip to content

Commit 26b3f0c

Browse files
authored
Create GoogleJavaScript.php
1 parent dfa0976 commit 26b3f0c

File tree

1 file changed

+161
-0
lines changed

1 file changed

+161
-0
lines changed

GoogleJavaScript.php

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
<?php
2+
class GoogleJavaScript{
3+
public static function printScript($provider, $siteLang = "en", $element = "demo_element2"){
4+
$JSScript = "<script>
5+
var GTranslator = {
6+
siteLang: \"{$siteLang}\",
7+
googleElement: \"{$element}\",
8+
OPTION_ACTIVE: false,
9+
Current: function() {
10+
var keyValue = document['cookie'].match('(^|;) ?googtrans=([^;]*)(;|$)'); return keyValue ? keyValue[2].split('/')[2] : GTranslator.siteLang;
11+
},
12+
13+
Event: function(element,event){
14+
try{
15+
if(document.createEventObject){
16+
var evt=document.createEventObject();element.fireEvent('on'+event,evt)
17+
}else{
18+
var evt=document.createEvent('HTMLEvents');
19+
evt.initEvent(event,true,true);
20+
element.dispatchEvent(evt);
21+
}
22+
}catch(e){
23+
console.log('GTranslator: ' + e);
24+
}
25+
},
26+
27+
GoogleInit: function() {
28+
new google.translate.TranslateElement({pageLanguage: \"{$siteLang}\", autoDisplay: false}, GTranslator.googleElement);
29+
},
30+
31+
GoogleScript: function(){
32+
var s1=document.createElement('script');
33+
s1.async=true;
34+
s1.type = 'text/javascript';
35+
s1.src='https://translate.google.com/translate_a/element.js?cb=GTranslator.GoogleInit';
36+
var s0 = document.getElementsByTagName('script')[0];
37+
s0.parentNode.insertBefore(s1, s0);
38+
},
39+
40+
runTranslate: function(from, to) {
41+
42+
if (GTranslator.Current() == null && lang == from){
43+
return;
44+
}
45+
46+
var teCombo;
47+
var sel = document.getElementsByTagName('select');
48+
for (var i = 0; i < sel.length; i++){
49+
if (/goog-te-combo/.test(sel[i].className)) {
50+
teCombo = sel[i];
51+
break;
52+
}
53+
}
54+
55+
if (document.getElementById(GTranslator.googleElement) == null || document.getElementById(GTranslator.googleElement).innerHTML.length == 0 || teCombo.length == 0 || teCombo.innerHTML.length == 0) {
56+
setTimeout(function() {
57+
GTranslator.runTranslate(from, to)
58+
}, 500)
59+
} else {
60+
teCombo.value = to;
61+
GTranslator.Event(teCombo, 'change');
62+
}
63+
},
64+
65+
Translate: function(self, lang_pair) {
66+
if (typeof lang_pair != 'undefined'){
67+
if(lang_pair.value){
68+
lang_pair = lang_pair.value;
69+
}
70+
}
71+
72+
if (lang_pair == '' || lang_pair.length < 1){
73+
return;
74+
}
75+
76+
var langs = lang_pair.split('|');
77+
var from = langs[0];
78+
var lang = langs[1];
79+
GTranslator.runTranslate(from, lang);";
80+
if($provider == 1){
81+
$JSScript .= "document.getElementById('php-g-translator').innerHTML = '<img alt=\"' + lang + '\" src=\"{$iconPath}' + lang + '{$iconType}\"> ' + self.getAttribute('title') + '<span class=\"toggle-cert\"></span>';";
82+
}else if($provider == 2){
83+
$JSScript .= "document.getElementById('php-g-translator').innerHTML = '<img alt=\"' + lang + '\" src=\"{$iconPath}' + GTranslator.Current() + '{$iconType}\"> ' + self.getAttribute('title');";
84+
}
85+
$JSScript .= "},";
86+
if($provider == 1){
87+
$JSScript .= "
88+
toggle: function() {
89+
var x = document.getElementById('php-gt-languages');
90+
if (x.style.display === 'none') {
91+
x.style.display = 'block';
92+
setTimeout(function(){
93+
GTranslator.OPTION_ACTIVE = true;
94+
}, 500);
95+
} else {
96+
x.style.display = 'none';
97+
GTranslator.OPTION_ACTIVE = false;
98+
}
99+
},
100+
101+
toggleClass: function() {
102+
var element = document.getElementById('php-g-translator');
103+
element.classList.toggle('open');
104+
},
105+
106+
Init: function(){
107+
GTranslator.GoogleScript(); var wheel = document.getElementById('php-gt-languages');
108+
document.getElementsByClassName('toggle-languages')[0].onclick = function(event) {
109+
event.preventDefault();
110+
GTranslator.toggle();
111+
GTranslator.toggleClass();
112+
};
113+
114+
wheel.addEventListener('wheel', function(event){
115+
if (window.getComputedStyle(wheel).display === 'block') {
116+
wheel.scrollTo({
117+
top: wheel.scrollTop - (event.wheelDelta || -event.detail)
118+
});
119+
}
120+
return false;
121+
});
122+
123+
document.querySelectorAll('body').forEach(function(ele, i){
124+
ele.addEventListener('click', function(event){
125+
if(window.getComputedStyle(wheel).display === 'block' && GTranslator.OPTION_ACTIVE){
126+
console.log('Is Open');
127+
GTranslator.toggle();
128+
GTranslator.toggleClass();
129+
}
130+
});
131+
});if(GTranslator.Current() != null){
132+
document.querySelectorAll('.drop-li').forEach(function(ele, i){
133+
if(GTranslator.Current() == ele.firstChild.getAttribute('lang')){
134+
document.getElementById('php-g-translator').innerHTML = '<img alt=\"' + GTranslator.Current() + '\" src=\"{$iconPath}' + GTranslator.Current() + '{$iconType}\"> ' + ele.firstChild.textContent + '<span class=\"toggle-cert\"></span>';
135+
}
136+
});
137+
}
138+
}
139+
};";
140+
}else if($provider == 2){
141+
$JSScript .= "
142+
Init: function(){
143+
GTranslator.GoogleScript();if(GTranslator.Current() != null){
144+
document.querySelectorAll('.drop-li').forEach(function(ele, i){
145+
if(GTranslator.Current() == ele.firstChild.getAttribute('lang')){
146+
document.getElementById('php-g-translator').innerHTML = '<img alt=\"' + GTranslator.Current() + '\" src=\"{$iconPath}' + GTranslator.Current() + '{$iconType}\"> ' + ele.firstChild.textContent;
147+
}
148+
});
149+
}
150+
}
151+
};";
152+
}
153+
154+
$JSScript .= "
155+
(function(){
156+
GTranslator.Init();
157+
})();
158+
</script>";
159+
return $JSScript;
160+
}
161+
}

0 commit comments

Comments
 (0)