From 8f108b69172736cf26a4e64b67cccaddf54a78dc Mon Sep 17 00:00:00 2001 From: Kristoffer Svanmark Date: Tue, 9 Aug 2016 16:12:48 +0200 Subject: [PATCH] Load Google Translate on-demand --- assets/dist/js/packaged.js | 44 ++++++++++++++++++++++++++++++++++ assets/dist/js/packaged.min.js | 2 +- assets/source/js/app.js | 44 ++++++++++++++++++++++++++++++++++ library/Theme/Enqueue.php | 2 ++ 4 files changed, 91 insertions(+), 1 deletion(-) diff --git a/assets/dist/js/packaged.js b/assets/dist/js/packaged.js index 91556f903..01d98dde6 100644 --- a/assets/dist/js/packaged.js +++ b/assets/dist/js/packaged.js @@ -1,5 +1,15 @@ var Municipio = {}; +var googleTranslateLoaded = false; + +if (location.href.indexOf('translate=true') > -1) { + loadGoogleTranslate(); +} + +$('[href="#translate"]').on('click', function (e) { + loadGoogleTranslate(); +}); + function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: "sv", @@ -9,6 +19,40 @@ function googleTranslateElementInit() { }, "google-translate-element"); } +function loadGoogleTranslate() { + if (googleTranslateLoaded) { + return; + } + + $.getScript('//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit', function() { + $('a').each(function () { + var hrefUrl = $(this).attr('href'); + + // Check if external or non valid url (do not add querystring) + if (hrefUrl.indexOf(location.origin) === -1 || hrefUrl.substr(0, 1) === '#') { + return; + } + + hrefUrl = updateQueryStringParameter(hrefUrl, 'translate', 'true'); + + $(this).attr('href', hrefUrl); + }); + + googleTranslateLoaded = true; + }); +} + +function updateQueryStringParameter(uri, key, value) { + var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); + var separator = uri.indexOf('?') !== -1 ? "&" : "?"; + + if (uri.match(re)) { + return uri.replace(re, '$1' + key + "=" + value + '$2'); + } + + return uri + separator + key + "=" + value; +} + var Municipio = {}; jQuery('.index-php #screen-meta-links').append('\ diff --git a/assets/dist/js/packaged.min.js b/assets/dist/js/packaged.min.js index ba1ab7748..679bf78a2 100644 --- a/assets/dist/js/packaged.min.js +++ b/assets/dist/js/packaged.min.js @@ -1 +1 @@ -function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:"sv",autoDisplay:!1,gaTrack:HbgPrimeArgs.googleTranslate.gaTrack,gaId:HbgPrimeArgs.googleTranslate.gaUA},"google-translate-element")}var Municipio={},Municipio={};jQuery(".index-php #screen-meta-links").append('
Lathund
'); \ No newline at end of file +function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:"sv",autoDisplay:!1,gaTrack:HbgPrimeArgs.googleTranslate.gaTrack,gaId:HbgPrimeArgs.googleTranslate.gaUA},"google-translate-element")}function loadGoogleTranslate(){googleTranslateLoaded||$.getScript("//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit",function(){$("a").each(function(){var e=$(this).attr("href");-1!==e.indexOf(location.origin)&&"#"!==e.substr(0,1)&&(e=updateQueryStringParameter(e,"translate","true"),$(this).attr("href",e))}),googleTranslateLoaded=!0})}function updateQueryStringParameter(e,a,t){var n=new RegExp("([?&])"+a+"=.*?(&|$)","i"),r=-1!==e.indexOf("?")?"&":"?";return e.match(n)?e.replace(n,"$1"+a+"="+t+"$2"):e+r+a+"="+t}var Municipio={},googleTranslateLoaded=!1;location.href.indexOf("translate=true")>-1&&loadGoogleTranslate(),$('[href="#translate"]').on("click",function(e){loadGoogleTranslate()});var Municipio={};jQuery(".index-php #screen-meta-links").append('
Lathund
'); \ No newline at end of file diff --git a/assets/source/js/app.js b/assets/source/js/app.js index be4557725..c8d71235b 100644 --- a/assets/source/js/app.js +++ b/assets/source/js/app.js @@ -1,5 +1,15 @@ var Municipio = {}; +var googleTranslateLoaded = false; + +if (location.href.indexOf('translate=true') > -1) { + loadGoogleTranslate(); +} + +$('[href="#translate"]').on('click', function (e) { + loadGoogleTranslate(); +}); + function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: "sv", @@ -8,3 +18,37 @@ function googleTranslateElementInit() { gaId: HbgPrimeArgs.googleTranslate.gaUA }, "google-translate-element"); } + +function loadGoogleTranslate() { + if (googleTranslateLoaded) { + return; + } + + $.getScript('//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit', function() { + $('a').each(function () { + var hrefUrl = $(this).attr('href'); + + // Check if external or non valid url (do not add querystring) + if (hrefUrl.indexOf(location.origin) === -1 || hrefUrl.substr(0, 1) === '#') { + return; + } + + hrefUrl = updateQueryStringParameter(hrefUrl, 'translate', 'true'); + + $(this).attr('href', hrefUrl); + }); + + googleTranslateLoaded = true; + }); +} + +function updateQueryStringParameter(uri, key, value) { + var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); + var separator = uri.indexOf('?') !== -1 ? "&" : "?"; + + if (uri.match(re)) { + return uri.replace(re, '$1' + key + "=" + value + '$2'); + } + + return uri + separator + key + "=" + value; +} diff --git a/library/Theme/Enqueue.php b/library/Theme/Enqueue.php index fc881fd1f..9e287572e 100644 --- a/library/Theme/Enqueue.php +++ b/library/Theme/Enqueue.php @@ -92,10 +92,12 @@ public function script() wp_register_script('municipio', get_template_directory_uri() . '/assets/dist/js/packaged.min.js', '', '1.0.0', true); wp_enqueue_script('municipio'); + /* if (get_field('show_google_translate', 'option') !== false && get_field('show_google_translate', 'option') != 'false') { wp_register_script('google-translate', '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit', '', '1.0.0', true); wp_enqueue_script('google-translate'); } + */ } public function moveScriptsToFooter()