2011-11-30 14 views
6

मेरे पास बल्गेरियाई में एक वेब पेज है और मैं चाहता हूं कि मेरे उपयोगकर्ता इसे अंग्रेजी में एक-क्लिक का अनुवाद कर सकें। पृष्ठ के शीर्ष पर कोई भी अनुवाद बैनर भी नहीं होना चाहिए जब उपयोगकर्ता पृष्ठ पर प्रवेश करता है (यह उपयोगकर्ता द्वारा अनुवाद लिंक पर क्लिक करने के बाद भी हो सकता है)। मैं #googtrans(bg|en) (doc) का उपयोग करने की कोशिश की है, लेकिन यह काम नहीं किया, यह भी इस कोड की वजह से पेज के शीर्ष पर एक बैनर से पता चलता:Google अनुवाद लिंक को कैसे जोड़ना है जो अनुवाद को ट्रिगर करता है?

<script> 
function googleTranslateElementInit() { 
    new google.translate.TranslateElement({ 
    pageLanguage: 'bg', 
    autoDisplay: false, 
    layout: google.translate.TranslateElement.InlineLayout.SIMPLE 
    }, 'google_translate_element'); 
} 
</script><script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

(doc)

कोड यहाँ है krumovgrad.eu दाएं शीर्ष पर झंडे क्लिक करें।

+0

अब तक आप क्या प्राप्त कर चुके हैं? गैर-लिंकिंग लिंक के साथ – Hannele

+0

अनुवाद बैनर। मुझे बैनर नहीं चाहिए, मुझे लिंक चाहिए जो काम करता है/अनुवाद करता है। – ilhan

+0

अद्यतन: फ़ायरफ़ॉक्स में; एक लिंक के साथ बैनर जो काम करता है। आईई 8 में कुछ भी नहीं। – ilhan

उत्तर

1

Google ने मेरे दोस्त को आगे सोचा है। कृपया इस पृष्ठ को देखने के: http://translate.google.com/translate_tools

संपादित करें: मैं माफी चाहता, मैं सिर्फ एहसास हुआ आप उपयोग कर रहे क्या पेज प्रदान करता है! आप सरल जावास्क्रिप्ट के साथ, प्रदर्शित किए गए तत्वों को छुपा सकते हैं और अंग्रेजी के लिए एक लिंक बना सकते हैं जहां यह चालू है छुपा चयन तत्व के मान को बदलता है ... और आपके पूरे पृष्ठ का अनुवाद किया जाता है।

यह थोड़ा गंदा है, लेकिन यह काम किया हो जाता है और उपयोगकर्ता को पता नहीं है कि यह मौजूद है!

तुम भी अनुरोध गूगल को भेजी जाने वाली सर्वर का अनुवाद और लिंक है कि जब आप अंग्रेजी का चयन करें और सिर्फ इतना है कि लिंक का उपयोग करें कहा जाता है पर कब्जा कब्जा करने पर विचार कर सकते हैं।

क्रोम अनुरोध (ctrl + shift + एक डेवलपर कंसोल के लिए जे देखें)

+0

आदमी! मुझे अपना जवाब संपादित करने के लिए एक मिनट दें! lol ... – vinnybad

9

मैं एक ही मुद्दा था कुछ दिन पहले और एक समाधान है कि काम करता है के साथ आया था पर कब्जा करने के लिए एक अच्छा उपयोगिता है। मेरे पास स्पेनिश में एक साइट है, और जब तक हम इसे अंग्रेजी में अनुवाद नहीं करते हैं, हम अपने उपयोगकर्ताओं को 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 यात्रा कर सकते हैं देखने के लिए; कम से कम जब तक हम अंततः इसका अनुवाद नहीं करते हैं।

+1

आपके कोड में समस्या 'setCookie()' फ़ंक्शन है क्योंकि यह एक ही कुकी के साथ दूसरी कुकी लिखती है क्योंकि आपने पथ निर्दिष्ट नहीं किया है। यहां देखें, बिंदु 1: http://www.sitepoint.com/3-things-about-cookies-you-may-not-know/ अपने viajoasalta.com वेबसाइट पर आप यह भी देख सकते हैं। जब आप अनुवाद बार में "मूल देखें" पर क्लिक करते हैं, तो Google स्क्रिप्ट द्वारा लिखी गई googtrans कुकी हटा दी जाती है लेकिन डुप्लिकेट अभी भी पृष्ठ को अनुवादित करने के लिए मजबूर करता है और आपके झंडे को भी गड़बड़ कर देता है। यह एक साधारण फिक्स है: 'फ़ंक्शन सेटकुकी (cname, cvalue) {document.cookie = cname + "=" + cvalue + "; पथ = /"; } ' – FFish

+0

@FFish आपकी टिप्पणी के लिए धन्यवाद। मैंने 'setCookie()' फ़ंक्शन को संशोधित किया है, इसलिए यह 'पथ' और' डोमेन' पैरामीटर दोनों स्वीकार करता है। मुझे 'डोमेन' पैरामीटर की आवश्यकता है क्योंकि Google की वेबसाइट ट्रांसलेटर ने "www.viajoasalta.com" और ".viajoasalta.com" के लिए कुकीज़ सेट की हैं। मैं 'exdays' का उपयोग 0 के बराबर करता हूं ताकि कुकी का जीवनकाल सत्र का हो। जब भी आप अनुवाद बार में "मूल देखें" पर क्लिक करते हैं, तब भी मुझे नहीं पता कि झंडे को कैसे अपडेट किया जाए। अगर मुझे पता चलता है कि, मैं एक नई टिप्पणी पोस्ट करूंगा। – kiki

संबंधित मुद्दे