// WEEBLY MULTILANGUAGE TOOLS // http://blessingsweb.weebly.com/weebly-multilanguage.html /* // Things that should go in SETTINGS -> SEO -> Header Code : // (all page names in should go in lowercase) var langs = [ //lang_code, name of first page of that language, HTML of the language changing link ['en', 'home', 'English'], ['es', 'inicio', 'EspaƱol'], ]; var not_clickable = []; var all_langs = []; */ var all_langs = []; var not_clickable = []; //inner variables from now on var localStorage_enabled = typeof(Storage) !== "undefined"; try {language = language;} catch(e) {var language = null;} //if language is not defined, use null // Function that sets up all features of multilanguage. // Alternatively, you can call these functions one by one. function setup_multilanguage() { hide_menus(); hide_items(); add_lang_links(); make_not_clickable(); } function add_lang_links() { setup_language(); console.log('adding language links'); if (is_weebly_mobile()) { jQuery('.wsite-mobile #content') .prepend(''); } else { jQuery('td.social').after(''); } append_lang_links(jQuery('#lang_links')); } function append_lang_links(lang_links_div) { console.log('appending lang links to:'); console.log(lang_links_div); //add the language links for (var i = 0; i < langs.length; i++) { var lang_code = langs[i][0]; var lang_link_text = langs[i][2]; var link = (lang_code == language) ? lang_link_text : '' + lang_link_text + ''; console.log('language ' + lang_code + ': ' + link); if (i > 0) lang_links_div.append(' '); lang_links_div.append('' + link + ''); } } function hide_items() { setup_language(); var lang_class = 'lang_'+language; console.log('hiding language items... checking for ' + lang_class); $('begin_lang').each(function() { var begin = $(this); var must_hide = !begin.hasClass(lang_class); console.log(this); console.log(must_hide ? 'HIDE' : 'SHOW'); if (must_hide) { elems = begin.parent().parent().nextAll().toArray(); for (var i = 0; i < elems.length; i++) { var elem = $(elems[i]); var is_end_lang = elem.find('end_lang').is('end_lang'); if (is_end_lang) break; elem.hide(); } } }); } function hide_menus() { var menu_selector = '.wsite-menu-default'; setup_language(); console.log('Language: ' + language); var current_lang = null; var matched_langs = []; jQuery('.wsite-menu-item-wrap').each(function(){ var menu = jQuery(this); var a = menu.children('a'); var page_url = a.attr('href'); var text = get_menu_name(a); in_all_langs = all_langs.indexOf(text) >= 0; var lang_info = get_lang_info_for_page(text, matched_langs); if (lang_info != null) { if (lang_info.length == 3) lang_info.push(page_url); current_lang = lang_info[0].toLowerCase(); //if this is the first page of this language, set the logo to go to this page url if (current_lang == language) { jQuery('.wsite-logo a').attr('href', page_url); } } if (in_all_langs) { current_lang = null; show = true; } else { show = (current_lang == language); } if (show) menu.show(); else menu.hide(); console.log('MENU: '+ text + ' - current lang: ' + current_lang + ' - ' + (show ? 'SHOW' : 'HIDE')); console.log((langs[text] != null ? 'in langs: ' + langs[text] : 'not in langs') + ' - ' + (in_all_langs ? 'in all_langs' : 'not in all_langs')); }); } function make_not_clickable() { top_menus = jQuery('.wsite-menu-item-wrap'); submenus = jQuery('.wsite-menu-subitem-wrap'); menus = jQuery.merge(top_menus, submenus); menus.each(function(){ var a = jQuery(this).children('a'); var text = get_menu_name(a); clickable = (not_clickable.indexOf(text) < 0); console.log(text + ' - ' + (clickable ? 'clickable' : 'NOT clickable')); if (!clickable) { a.attr('href', 'javascript:void'); a.hover(function() { jQuery(this).css('cursor', 'default'); }); } }); } function setup_language() { if (language == 'all' || language == null) { if(localStorage_enabled) language = localStorage.getItem("language"); else language = langs[0][0]; //default_language } language = language.toLowerCase(); if(localStorage_enabled) localStorage.setItem("language", language); } function get_lang_info_for_page(page_name, matched_langs) { for (var i = 0; i < langs.length; i++) { var lang_info = langs[i]; if ( lang_info[1].toLowerCase() == page_name.toLowerCase() && matched_langs.indexOf(lang_info[0]) == -1) { matched_langs.push(lang_info[0]); return lang_info; } } return null; } function get_lang_info_for_lang(lang) { for (var i = 0; i < langs.length; i++) { var lang_info = langs[i]; if (lang_info[0].toLowerCase() == lang) return lang_info; } return null; } function change_lang(lang) { var lang_info = get_lang_info_for_lang(lang); document.location.href = lang_info[3]; } function get_menu_name(menu_a) { var span = menu_a.children('span'); var text = (span.length == 0) ? menu_a.html() : span.html(); return text.toLowerCase().trim(); } // check if it is web or mobile version function is_weebly_mobile() { return jQuery('.wsite-mobile').length > 0; }