मैं एक ही मुद्दा था कुछ दिन पहले और एक समाधान है कि काम करता है के साथ आया था पर कब्जा करने के लिए एक अच्छा उपयोगिता है। मेरे पास स्पेनिश में एक साइट है, और जब तक हम इसे अंग्रेजी में अनुवाद नहीं करते हैं, हम अपने उपयोगकर्ताओं को Google वेबसाइट ट्रांसलेटर का उपयोग करने की संभावना देते हैं। जब उपयोगकर्ता अंग्रेजी ध्वज पर क्लिक करते हैं, तो यह एक ट्विटर बूटस्ट्रैप मोडल खोलता है जो उपयोगकर्ता को बताता है कि वेबसाइट का अभी तक अनुवाद नहीं किया गया है, और वहां एक बटन है जिसे वे अनुवाद को ट्रिगर करने के लिए क्लिक कर सकते हैं। मैं जावास्क्रिप्ट के साथ घटना को कैप्चर करता हूं, कुकी 'googtrans' को मूल्य '/ es/en' के साथ सेट करता हूं और पृष्ठ को फिर से लोड करता हूं। Google की लिपि बाकी है। पुनः लोड करने के बाद, मैं जांचता हूं कि कुकी मौजूद है या स्पेनिश ध्वज के लिए अंग्रेजी ध्वज बदलती है। जब उपयोगकर्ता उस पर क्लिक करता है, तो मैंने कुकी को '' (खाली स्ट्रिंग) पर सेट किया, और पृष्ठ को फिर से लोड किया।
सादगी के लिए, मैं बूटस्ट्रैप मोडल हिस्सा शामिल नहीं होंगे।
एचटीएमएल
<!DOCTYPE html>
<html>
<head>
(...)
<meta name="google-translate-customization" content="(YOUR_TRANSLATE_CUSTOMIZATION_ID)" />
(...)
</head>
<body>
(...)
<a id="lang-change-en" class="lang-change" href="javascript:void(0);">
<img src="images/en-flag.png" alt="English Flag">
</a>
(...)
<script src="js/script.js"></script>
<script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
</body>
</html>
जावास्क्रिप्ट (script.js)
function setCookie(cname, cvalue, exdays) {
var expires;
if (exdays === 0) {
expires = '';
} else {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
expires = "expires=" + d.toGMTString();
}
var domain = (typeof domain === "undefined") ? '' : "; domain="+domain;
document.cookie = cname + "=" + cvalue + "; " + expires + "path=" + path + domain;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
//Google provides this function
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'es',
includedLanguages: 'en',
layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
autoDisplay: false
},'google_translate_element');
}
//Using jQuery
$(document).ready(function() {
$(document).on('click','#lang-change-en', function() {
setCookie('googtrans', '/es/en', 0, '.viajoasalta.com');
setCookie('googtrans', '', 0, '/');
location.reload();
});
$(document).on('click', '#lang-change-es', function() {
setCookie('googtrans', '', 0, '/', '.viajoasalta.com');
setCookie('googtrans', '', 0, '/');
location.reload();
});
var googTrans = getCookie('googtrans');
if (googTrans === '/es/en') {
var src = $('#lang-change-en > img').attr('src').replace('en-flag', 'es-flag');
$('#lang-change-en > img').attr('src', src);
$('#lang-change-en').attr('id', 'lang-change-es');
}
});
वेबसाइट अनुवादक सेटअप विज़ार्ड में, आप भाषाओं आप सूची में दिखाना चाहते हैं चुन सकते हैं। इसके बाद आप कर सकते हैं अपने खुद के <select>
जहां प्रत्येक <option>
value
के रूप में कुकी यह होना चाहिए, या data-cookie="value"
की तरह कुछ के साथ झंडे के साथ एक साधारण सूची के महत्व है। फिर जावास्क्रिप्ट के साथ आप 'परिवर्तन' ईवेंट (चयन के लिए) या सूची के लिए 'क्लिक' ईवेंट कैप्चर करते हैं, और कुकी को उचित रूप से सेट करते हैं।
नोट: मैं जानबूझकर div जहां वेबसाइट अनुवादक गाया जाता है हटा दिया:
<div id="google_translate_element"></div>
यह काम कर रहा है, तो आप www.viajoasalta.com यात्रा कर सकते हैं देखने के लिए; कम से कम जब तक हम अंततः इसका अनुवाद नहीं करते हैं।
अब तक आप क्या प्राप्त कर चुके हैं? गैर-लिंकिंग लिंक के साथ – Hannele
अनुवाद बैनर। मुझे बैनर नहीं चाहिए, मुझे लिंक चाहिए जो काम करता है/अनुवाद करता है। – ilhan
अद्यतन: फ़ायरफ़ॉक्स में; एक लिंक के साथ बैनर जो काम करता है। आईई 8 में कुछ भी नहीं। – ilhan