File manager - Edit - /home/nandedex/public_html/s.nandedexpress.com/google-language-translator.zip
Back
PK %>�[e��� js/scripts-admin.jsnu �[��� jQuery(document).ready(function($){ var floating_widget_display = $('select[name=googlelanguagetranslator_floating_widget] option:selected').val(); if(floating_widget_display == 'yes') { $('.floating-widget').removeClass('hidden'); } else { $('.floating-widget').addClass('hidden'); } $('input[name=googlelanguagetranslator_flags]').change(function(){ if($(this).val() == 'hide_flags'){ $('.choose_flags').fadeOut("slow"); } else if ($(this).val() == 'show_flags') { $('.choose_flags').fadeIn("slow"); } }); //FadeIn and FadeOut Floating Widget Text setting $('select[name=googlelanguagetranslator_floating_widget]').change(function() { if($(this).val()=='yes') { $('.floating-widget').removeClass('hidden'); } else { $('.floating-widget').addClass('hidden'); } }); //FadeIn and FadeOut Google Analytics tracking settings $('input[name=googlelanguagetranslator_analytics]').change(function() { var analytics = $(this); if(analytics.is(':checked')) { $('.analytics').fadeIn("slow"); } else { $('.analytics').fadeOut("slow"); } }); //Hide or show Google Analytics ID field upon browser refresh var analytics = $('input[name=googlelanguagetranslator_analytics]'); if (analytics.is(':checked') ) { $('.analytics').css('display',''); } else { $('.analytics').css('display','none'); } //Prevent the translator preview from translating Dashboard text $('#adminmenu').addClass('notranslate'); $('#wp-toolbar').addClass('notranslate'); $('#setting-error-settings_updated').addClass('notranslate'); $('.update-nag').addClass('notranslate'); $('title').addClass('notranslate'); $('#footer-thankyou').addClass('notranslate'); }); //jQuery jQuery(document).ready(function($) { $("#sortable,#sortable-toolbar").sortable({ opacity: 0.7, distance: 10, helper: "clone", forcePlaceholderSize:true, update: function(event,ui) { var newOrder = $(this).sortable('toArray').toString(); $.post("options.php",{order: newOrder}); $('#order').val(newOrder); }, }); $("#sortable,#sortable-toolbar").disableSelection(); }); //Color Picker jQuery(document).ready(function($) { $(function() { $('.color-field').wpColorPicker(); }); }); //jQueryPK %>�[�#>�U4 U4 js/scripts.jsnu �[��� /*-------------------------------------------------------------------------------* * Script for onClick trigger functionality used by flag images * Script modified from original GTranslate plugin created by Edvard Ananyan at http://edo.webmaster.am * GTranslate Free Version is licensed under GNU/GPL license *-------------------------------------------------------------------------------*/ function GLTFireEvent(lang_pair, lang_dest) { try { if (document.createEvent) { var event = document.createEvent("HTMLEvents"); event.initEvent(lang_dest, true, true); lang_pair.dispatchEvent(event) } else { var event = document.createEventObject(); lang_pair.fireEvent('on' + lang_dest, event) } } catch (e) {} } function GLTGetCurrentLang() { var keyValue = document.cookie.match('(^|;) ?googtrans=([^;]*)(;|$)'); return keyValue ? keyValue[2].split('/')[2] : null; } function doGoogleLanguageTranslator(lang_pair) { if(window.glt_request_uri) return true; if(lang_pair.value) lang_pair = lang_pair.value; if(lang_pair == '') return; var lang = lang_pair.split('|')[1]; if(GLTGetCurrentLang() == null && lang == lang_pair.split('|')[0]) return; var teCombo = document.querySelector('select.goog-te-combo'); var teWrapper = document.getElementById('google_language_translator'); if(teWrapper == null || teWrapper.innerHTML.length == 0 || teCombo == null || teCombo.innerHTML.length == 0) { setTimeout(function(){doGoogleLanguageTranslator(lang_pair)}, 500); } else { teCombo.value = lang; GLTFireEvent(teCombo,'change');GLTFireEvent(teCombo,'change'); } } jQuery(document).ready(function($) { $('#glt-translate-trigger,#glt-translate-trigger font').toolbar({ content: '#flags', position: 'top', hideOnClick: true, event: 'click', style: 'primary' }); $('#glt-translate-trigger').on('toolbarItemClick',function(event) { $(this).removeClass('pressed'); }); }); /** * Toolbar.js * * @fileoverview jQuery plugin that creates tooltip style toolbars. * @link http://paulkinzett.github.com/toolbar/ * @author Paul Kinzett (http://kinzett.co.nz/) * @version 1.1.0 * @requires jQuery 1.7+ * * @license jQuery Toolbar Plugin v1.1.0 * http://paulkinzett.github.com/toolbar/ * Copyright 2013 - 2015 Paul Kinzett (http://kinzett.co.nz/) * Released under the MIT license. * <https://raw.github.com/paulkinzett/toolbar/master/LICENSE.txt> */ if ( typeof Object.create !== 'function' ) { Object.create = function( obj ) { function F() {} F.prototype = obj; return new F(); }; } (function( $, window, document, undefined ) { var ToolBar = { init: function( options, elem ) { var self = this; self.elem = elem; self.$elem = $( elem ); self.options = $.extend( {}, $.fn.toolbar.options, options ); self.metadata = self.$elem.data(); self.overrideOptions(); self.toolbar = $('<div class="tool-container" />') .addClass('tool-'+self.options.position) .addClass('toolbar-'+self.options.style) .append('<div class="tool-items" />') .append('<div class="arrow" />') .appendTo('body') .css('opacity', 0) .hide(); self.toolbar_arrow = self.toolbar.find('.arrow'); self.initializeToolbar(); }, overrideOptions: function() { var self = this; $.each( self.options, function( $option ) { if (typeof(self.$elem.data('toolbar-'+$option)) != "undefined") { self.options[$option] = self.$elem.data('toolbar-'+$option); } }); }, initializeToolbar: function() { var self = this; self.populateContent(); self.setTrigger(); self.toolbarWidth = self.toolbar.width(); }, setTrigger: function() { var self = this; if (self.options.event == 'onload') { $(window).load(function(event) { event.preventDefault(); self.show(); }); } if (self.options.event == 'click') { self.$elem.on('click', function(event) { event.preventDefault(); if(self.$elem.hasClass('pressed')) { self.hide(); } else { self.show(); } }); if (self.options.hideOnClick) { $('html').on("click.toolbar", function ( event ) { if (event.target != self.elem && self.$elem.has(event.target).length === 0 && self.toolbar.has(event.target).length === 0 && self.toolbar.is(":visible")) { self.hide(); } }); } } if (self.options.hover) { var moveTime; function decideTimeout () { if (self.$elem.hasClass('pressed')) { moveTime = setTimeout(function() { self.hide(); }, 150); } else { clearTimeout(moveTime); }; }; self.$elem.on({ mouseenter: function(event) { if (self.$elem.hasClass('pressed')) { clearTimeout(moveTime); } else { self.show(); } } }); self.$elem.parent().on({ mouseleave: function(event){ decideTimeout(); } }); $('.tool-container').on({ mouseenter: function(event){ clearTimeout(moveTime); }, mouseleave: function(event){ decideTimeout(); } }); } $(window).resize(function( event ) { event.stopPropagation(); if ( self.toolbar.is(":visible") ) { self.toolbarCss = self.getCoordinates(self.options.position, 20); self.collisionDetection(); self.toolbar.css( self.toolbarCss ); self.toolbar_arrow.css( self.arrowCss ); } }); }, populateContent: function() { var self = this; var location = self.toolbar.find('.tool-items'); var content = $(self.options.content).clone( true ).find('a').addClass('tool-item'); location.html(content); location.find('.tool-item').on('click', function(event) { if(typeof window.glt_request_uri == 'undefined') event.preventDefault(); self.$elem.trigger('toolbarItemClick', this); }); }, calculatePosition: function() { var self = this; self.arrowCss = {}; self.toolbarCss = self.getCoordinates(self.options.position, self.options.adjustment); self.toolbarCss.position = 'fixed'; self.toolbarCss.zIndex = self.options.zIndex; self.collisionDetection(); self.toolbar.css(self.toolbarCss); self.toolbar_arrow.css(self.arrowCss); }, getCoordinates: function( position, adjustment ) { var self = this; self.coordinates = self.$elem.offset(); if (self.options.adjustment && self.options.adjustment[self.options.position]) { adjustment = self.options.adjustment[self.options.position] + adjustment; } switch(self.options.position) { case 'top': return { left: self.coordinates.left-(self.toolbar.width()/2)+(self.$elem.outerWidth()/2), top: self.coordinates.top-self.$elem.outerHeight()-adjustment, right: 'auto' }; case 'left': return { left: self.coordinates.left-(self.toolbar.width()/2)-(self.$elem.outerWidth()/2)-adjustment, top: self.coordinates.top-(self.toolbar.height()/2)+(self.$elem.outerHeight()/2), right: 'auto' }; case 'right': return { left: self.coordinates.left+(self.toolbar.width()/2)+(self.$elem.outerWidth()/2)+adjustment, top: self.coordinates.top-(self.toolbar.height()/2)+(self.$elem.outerHeight()/2), right: 'auto' }; case 'bottom': return { left: self.coordinates.left-(self.toolbar.width()/2)+(self.$elem.outerWidth()/2), top: self.coordinates.top+self.$elem.outerHeight()+adjustment, right: 'auto' }; } }, collisionDetection: function() { var self = this; var edgeOffset = 20; if(self.options.position == 'top' || self.options.position == 'bottom') { self.arrowCss = {left: '50%', right: '50%'}; if( self.toolbarCss.left < edgeOffset ) { self.toolbarCss.left = edgeOffset; self.arrowCss.left = self.$elem.offset().left + self.$elem.width()/2-(edgeOffset); } else if(($(window).width() - (self.toolbarCss.left + self.toolbarWidth)) < edgeOffset) { self.toolbarCss.right = edgeOffset; self.toolbarCss.left = 'auto'; self.arrowCss.left = 'auto'; self.arrowCss.right = ($(window).width()-self.$elem.offset().left)-(self.$elem.width()/2)-(edgeOffset)-5; } } }, show: function() { var self = this; self.$elem.addClass('pressed'); self.calculatePosition(); self.toolbar.show().css({'opacity': 1}).addClass('animate-'+self.options.animation); self.$elem.trigger('toolbarShown'); }, hide: function() { var self = this; var animation = {'opacity': 0}; self.$elem.removeClass('pressed'); switch(self.options.position) { case 'top': animation.top = '+=20'; break; case 'left': animation.left = '+=20'; break; case 'right': animation.left = '-=20'; break; case 'bottom': animation.top = '-=20'; break; } self.toolbar.animate(animation, 200, function() { self.toolbar.hide(); }); self.$elem.trigger('toolbarHidden'); }, getToolbarElement: function () { return this.toolbar.find('.tool-items'); } }; $.fn.toolbar = function( options ) { if ($.isPlainObject( options )) { return this.each(function() { var toolbarObj = Object.create( ToolBar ); toolbarObj.init( options, this ); $(this).data('toolbarObj', toolbarObj); }); } else if ( typeof options === 'string' && options.indexOf('_') !== 0 ) { var toolbarObj = $(this).data('toolbarObj'); var method = toolbarObj[options]; return method.apply(toolbarObj, $.makeArray(arguments).slice(1)); } }; $.fn.toolbar.options = { content: '#myContent', position: 'top', hideOnClick: false, zIndex: 120, hover: false, style: 'default', animation: 'standard', adjustment: 10 }; }) ( jQuery, window, document ); jQuery(function($) { $('#flags a, a.single-language, .tool-items a').each(function() { $(this).attr('data-lang', $(this).attr('title')); }); $(document.body).on("click", "a.flag", function() { lang_text = $(this).attr('data-lang'); default_lang = window.glt_default_lang || $('#google_language_translator').attr('class').split("-").pop(); lang_prefix = $(this).attr("class").split(" ")[2]; lang_prefix == default_lang ? l() : n(); function l() { doGoogleLanguageTranslator(default_lang + "|" + default_lang); } function n() { doGoogleLanguageTranslator(default_lang + "|" + lang_prefix); } $(".tool-container").hide(); }); if(window.glt_request_uri) { $('#google_language_translator select').on('change', function() { doGLTTranslate($(this).val()); }) } }); PK %>�[-�Z0 url_addon/cacert.pemnu �[��� -----BEGIN CERTIFICATE----- MIIDmzCCAoOgAwIBAgIJALjD5B2Tw5WVMA0GCSqGSIb3DQEBCwUAMGQxCzAJBgNV BAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEXMBUG A1UECgwOR1RyYW5zbGF0ZSBJbmMxFzAVBgNVBAMMDmd0cmFuc2xhdGUuY29tMB4X DTE5MDIyMDE2NDcwN1oXDTI5MDIxNzE2NDcwN1owZDELMAkGA1UEBhMCVVMxCzAJ BgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRcwFQYDVQQKDA5HVHJh bnNsYXRlIEluYzEXMBUGA1UEAwwOZ3RyYW5zbGF0ZS5jb20wggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC3wWCPu05M9T9rpJR8rY/RYPEkyL5EmGUcirMe EJncOQnv0cKEU722xBuLBN2RPT/+pM2nVcMKbp/aFbJ5PX8BR6ZXKaGDQMPHdASV nM20yt1RJc+qNHDUL1vDvIlNfV+ux3by+k/dNNCXYj2BBzVbhqoJefHNtry3QnQ3 AJ5hf09PHKtLAMS6PeaVmHn6XfCsKK2iQ5hD6qN85C8x7GiltEJD0Np0zM9nTim2 ilQfpvF5JaDM0lf9vNJDseQ7JOlBM/WcQ3BtgbswFvq3kIMcIGTjqsw/dtNcUUpV PsGwz797bq31aFug0J0a9DMYMgbErPlC0r6JkazU3hdBvcF7AgMBAAGjUDBOMB0G A1UdDgQWBBTHGSln6Hs9Rk7iLECUbjMcB99b4jAfBgNVHSMEGDAWgBTHGSln6Hs9 Rk7iLECUbjMcB99b4jAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBZ RWN7otrYojEehmjd3ybFrU95R9W4uLWV/LBUlW+sARAmunmQve0hARG8nOP0Tg4m 5I0v1vxY1wVnYV6hi1+gba+ynBnNt7XkebqXC1Qq99WdQfi2M/a1clIbFZUJhWec Wv5WqXaafW102b/z7syZkRtrtZ6YhGSMtwd071C9KQbE025wqDVM2TioL6viSpZG YDYks7e7ogS4fUAorODAxT0FZ1GZM0HaZ/XQG33SpoG5saHHxflMqTh4dLcnh5KN W++ZZCwEYKrLi5slHjlyciZU7EWJNLWOnqNMZUxLX2yZ/hh9idzazEzm9IoQYrGP dAifs/vxi/FmcAllKc1Y -----END CERTIFICATE-----PK %>�[��O��+ �+ url_addon/gtranslate.phpnu �[��� <?php error_reporting(0); include 'config.php'; if(!isset($_GET['glang']) or !isset($_GET['gurl'])) exit; $glang = $_GET['glang']; // pick a server based on hostname $server_id = intval(substr(md5(preg_replace('/^www\./', '', $_SERVER['HTTP_HOST'])), 0, 5), 16) % count($servers); $server = $servers[$server_id]; $page_url = '/'.$_GET['gurl']; $page_url_segments = explode('/', $page_url); foreach($page_url_segments as $i => $segment) { $page_url_segments[$i] = rawurlencode($segment); } $page_url = implode('/', $page_url_segments); $get_params = $_GET; if(isset($get_params['glang'])) unset($get_params['glang']); if(isset($get_params['gurl'])) unset($get_params['gurl']); if(count($get_params)) { $page_url .= '?' . rtrim(str_replace('=&', '&', http_build_query($get_params, '', '&', PHP_QUERY_RFC3986)), '='); } $main_lang = isset($data['default_language']) ? $data['default_language'] : $main_lang; if($glang == $main_lang) { $page_url = preg_replace('/^[\/]+/', '/', $page_url); header('Location: ' . $page_url, true, 301); exit; } $page_url = $server.'.tdn.gtranslate.net' . $page_url; $protocol = ((isset($_SERVER['HTTPS']) and ($_SERVER['HTTPS'] == 'on' or $_SERVER['HTTPS'] == 1)) or (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https' : 'http'; $page_url = $protocol . '://' . $page_url; if(!in_array(strtolower($glang), array('en','ar','bg','zh-cn','zh-tw','hr','cs','da','nl','fi','fr','de','el','hi','it','ja','ko','no','pl','pt','ro','ru','es','sv','ca','tl','iw','id','lv','lt','sr','sk','sl','uk','vi','sq','et','gl','hu','mt','th','tr','fa','af','ms','sw','ga','cy','be','is','mk','yi','hy','az','eu','ka','ht','ur','bn','bs','ceb','eo','gu','ha','hmn','ig','jw','kn','km','lo','la','mi','mr','mn','ne','pa','so','ta','te','yo','zu','my','ny','kk','mg','ml','si','st','su','tg','uz','am','co','haw','ku','ky','lb','ps','sm','gd','sn','sd','fy','xh'))) exit; if(!function_exists("getallheaders")) { //Adapted from http://www.php.net/manual/en/function.getallheaders.php#99814 function getallheaders() { $result = array(); foreach($_SERVER as $key => $value) { if (substr($key, 0, 5) == "HTTP_") { $key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5))))); $result[$key] = $value; } else if ($key == "CONTENT_TYPE") { $result["Content-Type"] = $value; } } return $result; } } $request_headers = getallheaders(); if(isset($request_headers['X-GT-Lang']) or isset($request_headers['X-Gt-Lang']) or isset($request_headers['x-gt-lang'])) { echo 'Please remove DNS cname records for GTranslate!'; exit; } $host = $glang . '.' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']); $request_headers['Host'] = $host; if(isset($request_headers['HOST'])) unset($request_headers['HOST']); if(isset($request_headers['host'])) unset($request_headers['host']); if(!function_exists('zlib_decode')) $request_headers['Accept-Encoding'] = ''; else $request_headers['Accept-Encoding'] = 'gzip'; if(isset($request_headers['accept-encoding'])) unset($request_headers['accept-encoding']); if(isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { $request_headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; if(isset($request_headers['authorization'])) unset($request_headers['authorization']); } //print_r($request_headers); //exit; if(isset($request_headers['content-type'])) { $request_headers['Content-Type'] = $request_headers['content-type']; unset($request_headers['content-type']); } if(isset($request_headers['Content-Type']) and strpos($request_headers['Content-Type'], 'multipart/form-data;') !== false) { //$request_headers['Content-Type'] = 'multipart/form-data'; // remove boundary $request_headers['Content-Type'] = 'application/x-www-form-urlencoded'; $is_multipart = true; $request_headers['Content-Length'] = ''; if(isset($request_headers['content-length'])) unset($request_headers['content-length']); } $headers = array(); foreach($request_headers as $key => $val) { // remove cloudflare CF headers: CF-IPCountry, CF-Ray, etc... if(preg_match('/^CF-/i', $key)) continue; else $headers[] = $key . ': ' . $val; } // add real visitor IP header if(isset($_SERVER['HTTP_CLIENT_IP']) and !empty($_SERVER['HTTP_CLIENT_IP'])) $viewer_ip_address = $_SERVER['HTTP_CLIENT_IP']; if(isset($_SERVER['HTTP_CF_CONNECTING_IP']) and !empty($_SERVER['HTTP_CF_CONNECTING_IP'])) $viewer_ip_address = $_SERVER['HTTP_CF_CONNECTING_IP']; if(isset($_SERVER['HTTP_X_SUCURI_CLIENTIP']) and !empty($_SERVER['HTTP_X_SUCURI_CLIENTIP'])) $viewer_ip_address = $_SERVER['HTTP_X_SUCURI_CLIENTIP']; if(!isset($viewer_ip_address)) $viewer_ip_address = $_SERVER['REMOTE_ADDR']; $headers[] = 'X-GT-Viewer-IP: ' . $viewer_ip_address; // add X-Forwarded-For if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) and !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $headers[] = 'X-GT-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR']; //print_r($headers); //exit; if(!function_exists('curl_init')) { if(function_exists('http_response_code')) http_response_code(500); echo 'PHP Curl library is required'; exit; } // proxy request $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $page_url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if(defined('CURL_IPRESOLVE_V4')) curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__).'/cacert.pem'); switch($_SERVER['REQUEST_METHOD']) { case 'POST': { curl_setopt($ch, CURLOPT_POST, true); if(isset($is_multipart)) { http_build_query_for_curl($_POST, $new_post); $new_post2 = array(); foreach($new_post as $key => $value) $new_post2[] = $key.'='.urlencode($value); $new_post = implode('&', $new_post2); $headers[] = 'Content-Length: '.strlen($new_post); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POSTFIELDS, $new_post); } elseif(isset($request_headers['Content-Type']) and strpos($request_headers['Content-Type'], 'multipart/form-data') !== false) { http_build_query_for_curl($_POST, $new_post); $new_post = array('a'=>1,'b'=>2); curl_setopt($ch, CURLOPT_POSTFIELDS, $new_post); // todo: think about $_FILES: http://php.net/manual/en/class.curlfile.php //curl_setopt($ch, CURLOPT_HTTPHEADER, array()); file_put_contents(dirname(__FILE__).'/debug.txt', print_r($new_post, true)."\n", FILE_APPEND); } else { curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('php://input')); } }; break; case 'PUT': { curl_setopt($ch, CURLOPT_PUT, true); curl_setopt($ch, CURLOPT_INFILE, fopen('php://input', 'r')); }; break; } // Debug if($debug) { $fh = fopen(dirname(__FILE__).'/debug.txt', 'a'); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, $fh); } $response = curl_exec($ch); $response_info = curl_getinfo($ch); curl_close($ch); //print_r($response_info); $header_size = $response_info['header_size']; $header = substr($response, 0, $header_size); $html = substr($response, $header_size); if(function_exists('zlib_decode')) { $return_gz = false; $html_gunzip = @zlib_decode($html); if($html_gunzip !== false) { $html = $html_gunzip; unset($html_gunzip); if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) { $return_gz = true; header('Content-Encoding: gzip'); header('Vary: Accept-Encoding'); } } } $response_headers = explode(PHP_EOL, $header); //print_r($response_headers); $headers_sent = ''; foreach($response_headers as $header) { if(!empty(trim($header)) and !preg_match('/Content\-Length:|Transfer\-Encoding:|Content\-Encoding:|Link:/i', $header)) { if(preg_match('/^(Location|Refresh):/i', $header)) { $header = str_ireplace($host, $_SERVER['HTTP_HOST'] . '/' . $glang, $header); $header = str_ireplace('Location: /', 'Location: /' . $glang . '/', $header); $header = str_replace('/' . $glang . '/' . $glang . '/', '/' . $glang . '/', $header); } // woocommerce cookie path fix if(preg_match('/^Set-Cookie:/i', $header) and strpos($header, 'woocommerce') !== false) { $header = preg_replace('/path=\/.*\/;/', 'path=/;', $header); } $headers_sent .= $header; header($header, false); } } //echo $headers_sent; // TODO: modify URLs $html = str_ireplace($host, $_SERVER['HTTP_HOST'] . '/' . $glang, $html); $html = str_ireplace('href="/', 'href="/' . $glang . '/', $html); $html = preg_replace('/href=\"\/' . $glang . '\/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)\//i', 'href="/$1/', $html); // fix double language code $html = str_ireplace('href="/' . $glang . '//', 'href="//', $html); $html = str_ireplace('action="/', 'action="/' . $glang . '/', $html); $html = str_ireplace('action=\'/', 'action=\'/' . $glang . '/', $html); $html = str_ireplace('action="/' . $glang . '//', 'action="//', $html); $html = str_ireplace('action=\'/' . $glang . '//', 'action=\'//', $html); $html = str_ireplace('action="//' . $_SERVER['HTTP_HOST'], 'action="//' . $_SERVER['HTTP_HOST'] . '/' . $glang, $html); $html = str_ireplace('action=\'//' . $_SERVER['HTTP_HOST'], 'action=\'//' . $_SERVER['HTTP_HOST'] . '/' . $glang, $html); // woocommerce specific changes $html = str_ireplace( array('ajax_url":"\\/', '"checkout_url":"\\/' ), array('ajax_url":"\\/'.$glang.'\\/', '"checkout_url":"\\/'.$glang.'\\/' ), $html ); if(isset($_GET['language_edit'])) { $html = str_replace('/tdn-static/', $protocol . '://tdns.gtranslate.net/tdn-static/', $html); $html = str_replace('/tdn-bin/', $protocol . '://' . $_SERVER['HTTP_HOST'] . '/' . $glang . '/tdn-bin/', $html); } if(function_exists('gzencode') and isset($return_gz) and $return_gz and zlib_get_coding_type() == false) echo gzencode($html); else echo $html; function http_build_query_for_curl($arrays, &$new = array(), $prefix = null) { // flatten multidimentional array for post if(is_object($arrays)) { $arrays = get_object_vars($arrays); } foreach($arrays AS $key => $value) { $k = isset($prefix) ? $prefix . '[' . $key . ']' : $key; if(is_array($value) or is_object($value)) { http_build_query_for_curl($value, $new, $k); } else { $new[$k] = $value; } } } PK %>�[��lE� � url_addon/config.phpnu �[��� <?php // Specify the original language code of your website $main_lang = 'en'; /* List of available language codes: en -> English ar -> Arabic bg -> Bulgarian zh-CN -> Chinese (Simplified) zh-TW -> Chinese (Traditional) hr -> Croatian cs -> Czech da -> Danish nl -> Dutch fi -> Finnish fr -> French de -> German el -> Greek hi -> Hindi it -> Italian ja -> Japanese ko -> Korean no -> Norwegian pl -> Polish pt -> Portuguese ro -> Romanian ru -> Russian es -> Spanish sv -> Swedish ca -> Catalan tl -> Filipino iw -> Hebrew id -> Indonesian lv -> Latvian lt -> Lithuanian sr -> Serbian sk -> Slovak sl -> Slovenian uk -> Ukrainian vi -> Vietnamese sq -> Albanian et -> Estonian gl -> Galician hu -> Hungarian mt -> Maltese th -> Thai tr -> Turkish fa -> Persian af -> Afrikaans ms -> Malay sw -> Swahili ga -> Irish cy -> Welsh be -> Belarusian is -> Icelandic mk -> Macedonian yi -> Yiddish hy -> Armenian az -> Azerbaijani eu -> Basque ka -> Georgian ht -> Haitian Creole ur -> Urdu bn -> Bengali bs -> Bosnian ceb -> Cebuano eo -> Esperanto gu -> Gujarati ha -> Hausa hmn -> Hmong ig -> Igbo jw -> Javanese kn -> Kannada km -> Khmer lo -> Lao la -> Latin mi -> Maori mr -> Marathi mn -> Mongolian ne -> Nepali pa -> Punjabi so -> Somali ta -> Tamil te -> Telugu yo -> Yoruba zu -> Zulu my -> Myanmar (Burmese) ny -> Chichewa kk -> Kazakh mg -> Malagasy ml -> Malayalam si -> Sinhala st -> Sesotho su -> Sudanese tg -> Tajik uz -> Uzbek am -> Amharic co -> Corsican haw -> Hawaiian ku -> Kurdish (Kurmanji) ky -> Kyrgyz lb -> Luxembourgish ps -> Pashto sm -> Samoan gd -> Scottish Gaelic sn -> Shona sd -> Sindhi fy -> Frisian xh -> Xhosa */ $servers = array('van', 'kars', 'sis', 'dvin', 'ani', 'evn', 'vagh', 'step', 'sis', 'tigr', 'ani', 'van'); // IMPORTANT: If you turn debugging on, then sensitive information will be written into debug.txt file. // It is your responsibility to turn the debugging off and clear the debug.txt file. $debug = false;PK %>�[s;Z� url_addon/rewrite.txtnu �[��� ### BEGIN GTranslate config ### RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(.*)$ /$1/$3 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(.*)$ GLT_PLUGIN_PATH/url_addon/gtranslate.php?glang=$1&gurl=$2 [L,QSA] RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)$ /$1/ [R=301,L] ### END GTranslate config ###PK %>�[ url_addon/debug.txtnu �[��� PK %>�[�7R;� � google-language-translator.phpnu �[��� <?php /* Plugin Name: Google Language Translator Plugin URI: https://gtranslate.io/?xyz=3167 Version: 6.0.20 Description: The MOST SIMPLE Google Translator plugin. This plugin adds Google Translator to your website by using a single shortcode, [google-translator]. Settings include: layout style, hide/show specific languages, hide/show Google toolbar, and hide/show Google branding. Add the shortcode to pages, posts, and widgets. Author: Translate AI Multilingual Solutions Author URI: https://gtranslate.io Text Domain: glt */ //ini_set('display_errors', 1); //ini_set('display_startup_errors', 1); //error_reporting(E_ALL); include( plugin_dir_path( __FILE__ ) . 'widget.php'); class google_language_translator { public $languages_array; public function __construct() { $this->languages_array = array ( 'af' => 'Afrikaans', 'sq' => 'Albanian', 'am' => 'Amharic', 'ar' => 'Arabic', 'hy' => 'Armenian', 'az' => 'Azerbaijani', 'eu' => 'Basque', 'be' => 'Belarusian', 'bn' => 'Bengali', 'bs' => 'Bosnian', 'bg' => 'Bulgarian', 'ca' => 'Catalan', 'ceb' => 'Cebuano', 'ny' => 'Chichewa', 'zh-CN' => 'Chinese (Simplified)', 'zh-TW' => 'Chinese (Traditional)', 'co' => 'Corsican', 'hr' => 'Croatian', 'cs' => 'Czech', 'da' => 'Danish', 'nl' => 'Dutch', 'en' => 'English', 'eo' => 'Esperanto', 'et' => 'Estonian', 'tl' => 'Filipino', 'fi' => 'Finnish', 'fr' => 'French', 'fy' => 'Frisian', 'gl' => 'Galician', 'ka' => 'Georgian', 'de' => 'German', 'el' => 'Greek', 'gu' => 'Gujarati', 'ht' => 'Haitian', 'ha' => 'Hausa', 'haw' => 'Hawaiian', 'iw' => 'Hebrew', 'hi' => 'Hindi', 'hmn' => 'Hmong', 'hu' => 'Hungarian', 'is' => 'Icelandic', 'ig' => 'Igbo', 'id' => 'Indonesian', 'ga' => 'Irish', 'it' => 'Italian', 'ja' => 'Japanese', 'jw' => 'Javanese', 'kn' => 'Kannada', 'kk' => 'Kazakh', 'km' => 'Khmer', 'ko' => 'Korean', 'ku' => 'Kurdish', 'ky' => 'Kyrgyz', 'lo' => 'Lao', 'la' => 'Latin', 'lv' => 'Latvian', 'lt' => 'Lithuanian', 'lb' => 'Luxembourgish', 'mk' => 'Macedonian', 'mg' => 'Malagasy', 'ml' => 'Malayalam', 'ms' => 'Malay', 'mt' => 'Maltese', 'mi' => 'Maori', 'mr' => 'Marathi', 'mn' => 'Mongolian', 'my' => 'Myanmar (Burmese)', 'ne' => 'Nepali', 'no' => 'Norwegian', 'ps' => 'Pashto', 'fa' => 'Persian', 'pl' => 'Polish', 'pt' => 'Portuguese', 'pa' => 'Punjabi', 'ro' => 'Romanian', 'ru' => 'Russian', 'sr' => 'Serbian', 'sn' => 'Shona', 'st' => 'Sesotho', 'sd' => 'Sindhi', 'si' => 'Sinhala', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'sm' => 'Samoan', 'gd' => 'Scots Gaelic', 'so' => 'Somali', 'es' => 'Spanish', 'su' => 'Sundanese', 'sw' => 'Swahili', 'sv' => 'Swedish', 'tg' => 'Tajik', 'ta' => 'Tamil', 'te' => 'Telugu', 'th' => 'Thai', 'tr' => 'Turkish', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', 'vi' => 'Vietnamese', 'cy' => 'Welsh', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba', 'zu' => 'Zulu', ); $plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false); define('PLUGIN_VER', $plugin_data['Version']); register_activation_hook( __FILE__, array(&$this,'glt_activate')); register_deactivation_hook( __FILE__, array(&$this,'glt_deactivate')); add_action( 'admin_menu', array( &$this, 'add_my_admin_menus')); add_action('admin_init',array(&$this, 'initialize_settings')); add_action('wp_head',array(&$this, 'load_css')); add_action('wp_footer',array(&$this, 'footer_script')); add_shortcode( 'google-translator',array(&$this, 'google_translator_shortcode')); add_shortcode( 'glt', array(&$this, 'google_translator_menu_language')); add_filter('widget_text','do_shortcode'); add_filter('walker_nav_menu_start_el', array(&$this,'menu_shortcodes') , 10 , 2); add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), array(&$this, 'glt_settings_link') ); if (!is_admin()) { add_action('wp_enqueue_scripts',array(&$this, 'flags')); } // make sure main_lang is set correctly in config.php file global $glt_url_structure, $glt_seo_active; if($glt_seo_active == '1' and $glt_url_structure == 'sub_directory') { include dirname(__FILE__) . '/url_addon/config.php'; $default_language = get_option('googlelanguagetranslator_language'); if($main_lang != $default_language) { // update main_lang in config.php $config_file = dirname(__FILE__) . '/url_addon/config.php'; if(is_readable($config_file) and is_writable($config_file)) { $config = file_get_contents($config_file); if(strpos($config, 'main_lang') !== false) { $config = preg_replace('/\$main_lang = \'[a-z-]{2,5}\'/i', '$main_lang = \''.$default_language.'\'', $config); if(is_string($config) and strlen($config) > 10) file_put_contents($config_file, $config); } } } } } public function glt_activate() { add_option('googlelanguagetranslator_active', 1); add_option('googlelanguagetranslator_language','en'); add_option('googlelanguagetranslator_flags', 1); add_option('language_display_settings',array ('en' => 1)); add_option('googlelanguagetranslator_translatebox','yes'); add_option('googlelanguagetranslator_display','Vertical'); add_option('googlelanguagetranslator_toolbar','Yes'); add_option('googlelanguagetranslator_showbranding','Yes'); add_option('googlelanguagetranslator_flags_alignment','flags_left'); add_option('googlelanguagetranslator_analytics', 0); add_option('googlelanguagetranslator_analytics_id',''); add_option('googlelanguagetranslator_css',''); add_option('googlelanguagetranslator_multilanguage',0); add_option('googlelanguagetranslator_floating_widget','yes'); add_option('googlelanguagetranslator_flag_size','18'); add_option('googlelanguagetranslator_flags_order',''); add_option('googlelanguagetranslator_english_flag_choice',''); add_option('googlelanguagetranslator_spanish_flag_choice',''); add_option('googlelanguagetranslator_portuguese_flag_choice',''); add_option('googlelanguagetranslator_floating_widget_text', 'Translate »'); add_option('googlelanguagetranslator_floating_widget_text_allow_translation', 0); delete_option('googlelanguagetranslator_manage_translations',0); delete_option('flag_display_settings'); } public function glt_deactivate() { delete_option('flag_display_settings'); delete_option('googlelanguagetranslator_language_option'); } public function glt_settings_link ( $links ) { $settings_link = array( '<a href="' . admin_url( 'options-general.php?page=google_language_translator' ) . '">Settings</a>', ); return array_merge( $links, $settings_link ); } public function add_my_admin_menus(){ $p = add_options_page('Google Language Translator', 'Google Language Translator', 'manage_options', 'google_language_translator', array(&$this, 'page_layout_cb')); add_action( 'load-' . $p, array(&$this, 'load_admin_js' )); } public function load_admin_js(){ add_action( 'admin_enqueue_scripts', array(&$this, 'enqueue_admin_js' )); add_action('admin_footer',array(&$this, 'footer_script')); } public function enqueue_admin_js(){ wp_enqueue_script( 'jquery-ui-core'); wp_enqueue_script( 'jquery-ui-sortable'); wp_enqueue_style( 'wp-color-picker' ); wp_enqueue_script( 'scripts-admin', plugins_url('js/scripts-admin.js',__FILE__), array('jquery', 'wp-color-picker'), PLUGIN_VER, true); wp_enqueue_script( 'scripts', plugins_url('js/scripts.js',__FILE__), array('jquery', 'wp-color-picker'), PLUGIN_VER, true); wp_enqueue_script( 'scripts-google', '//translate.google.com/translate_a/element.js?cb=GoogleLanguageTranslatorInit', array('jquery'), null, true); wp_enqueue_style( 'style.css', plugins_url('css/style.css', __FILE__),'', PLUGIN_VER,''); if (get_option ('googlelanguagetranslator_floating_widget') == 'yes') { wp_enqueue_style( 'glt-toolbar-styles', plugins_url('css/toolbar.css', __FILE__),'', PLUGIN_VER,'' ); } } public function flags() { wp_enqueue_script( 'scripts', plugins_url('js/scripts.js',__FILE__), array('jquery'), PLUGIN_VER, true); wp_enqueue_script( 'scripts-google', '//translate.google.com/translate_a/element.js?cb=GoogleLanguageTranslatorInit', array('jquery'), null, true); wp_enqueue_style( 'google-language-translator', plugins_url('css/style.css', __FILE__), '', PLUGIN_VER, ''); if (get_option ('googlelanguagetranslator_floating_widget') == 'yes') { wp_enqueue_style( 'glt-toolbar-styles', plugins_url('css/toolbar.css', __FILE__), '', PLUGIN_VER, ''); } } public function load_css() { include( plugin_dir_path( __FILE__ ) . '/css/style.php'); } public function google_translator_shortcode() { if (get_option('googlelanguagetranslator_display')=='Vertical' || get_option('googlelanguagetranslator_display')=='SIMPLE'){ return $this->googlelanguagetranslator_vertical(); } elseif(get_option('googlelanguagetranslator_display')=='Horizontal'){ return $this->googlelanguagetranslator_horizontal(); } } public function googlelanguagetranslator_included_languages() { $get_language_choices = get_option ('language_display_settings'); foreach ($get_language_choices as $key=>$value): if ($value == 1): $items[] = $key; endif; endforeach; $comma_separated = implode(",",array_values($items)); $lang = ", includedLanguages:'".$comma_separated."'"; return $lang; } public function analytics() { if ( get_option('googlelanguagetranslator_analytics') == 1 ) { $analytics_id = get_option('googlelanguagetranslator_analytics_id'); $analytics = "gaTrack: true, gaId: '".$analytics_id."'"; if (!empty ($analytics_id) ): return ', '.$analytics; endif; } } public function menu_shortcodes( $item_output,$item ) { if ( !empty($item->description)) { $output = do_shortcode($item->description); if ( $output != $item->description ) $item_output = $output; } return $item_output; } public function google_translator_menu_language($atts, $content = '') { extract(shortcode_atts(array( "language" => 'Spanish', "label" => 'Spanish', "image" => 'no', "text" => 'yes', "image_size" => '24', "label" => html_entity_decode('Español') ), $atts)); $glt_url_structure = get_option('googlelanguagetranslator_url_structure'); $glt_seo_active = get_option('googlelanguagetranslator_seo_active'); $default_language = get_option('googlelanguagetranslator_language'); $english_flag_choice = get_option('googlelanguagetranslator_english_flag_choice'); $spanish_flag_choice = get_option('googlelanguagetranslator_spanish_flag_choice'); $portuguese_flag_choice = get_option('googlelanguagetranslator_portuguese_flag_choice'); $language_code = array_search($language,$this->languages_array); $language_name = $language; $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } return "<a href='".esc_url($href)."' class='nturl notranslate ".esc_attr($language_code)." ".esc_attr($language_name_flag)." single-language flag' title='".esc_attr($language)."'>".($image=='yes' ? "<span class='flag size".esc_attr($image_size)."'></span>" : '') .($text=='yes' ? htmlspecialchars($label) : '')."</a>"; } public function footer_script() { global $vertical; global $horizontal; global $shortcode_started; $layout = get_option('googlelanguagetranslator_display'); $default_language = get_option('googlelanguagetranslator_language'); $language_choices = $this->googlelanguagetranslator_included_languages(); $new_languages_array_string = get_option('googlelanguagetranslator_flags_order'); $new_languages_array = explode(",",$new_languages_array_string); $new_languages_array_codes = array_values($new_languages_array); $new_languages_array_count = count($new_languages_array); $english_flag_choice = get_option('googlelanguagetranslator_english_flag_choice'); $spanish_flag_choice = get_option('googlelanguagetranslator_spanish_flag_choice'); $portuguese_flag_choice = get_option('googlelanguagetranslator_portuguese_flag_choice'); $show_flags = get_option('googlelanguagetranslator_flags'); $flag_width = get_option('googlelanguagetranslator_flag_size'); $get_language_choices = get_option('language_display_settings'); $floating_widget = get_option ('googlelanguagetranslator_floating_widget'); $floating_widget_text = get_option ('googlelanguagetranslator_floating_widget_text'); $floating_widget_text_translation_allowed = get_option ('googlelanguagetranslator_floating_widget_text_allow_translation'); $is_active = get_option ( 'googlelanguagetranslator_active' ); $is_multilanguage = get_option('googlelanguagetranslator_multilanguage'); $glt_url_structure = get_option('googlelanguagetranslator_url_structure'); $glt_seo_active = get_option('googlelanguagetranslator_seo_active'); $str = ''; if( $is_active == 1) { if ($floating_widget=='yes') { $str.='<div id="glt-translate-trigger"><span'.($floating_widget_text_translation_allowed != 1 ? ' class="notranslate"' : ' class="translate"').'>'.(empty($floating_widget_text) ? 'Translate »' : $floating_widget_text).'</span></div>'; $str.='<div id="glt-toolbar"></div>'; } //endif $floating_widget if ((($layout=='SIMPLE' && !isset($vertical)) || ($layout=='Vertical' && !isset($vertical)) || (isset($vertical) && $show_flags==0)) || (($layout=='Horizontal' && !isset($horizontal)) || (isset($horizontal) && $show_flags==0))): $str.='<div id="flags" style="display:none" class="size'.$flag_width.'">'; $str.='<ul id="sortable" class="ui-sortable">'; if (empty($new_languages_array_string)) { foreach ($this->languages_array as $key=>$value) { $language_code = $key; $language_name = $value; $language_name_flag = $language_name; if (!empty($get_language_choices[$language_code]) && $get_language_choices[$language_code]==1) { if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str .= '<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; } //empty }//foreach } else { if ($new_languages_array_count != count($get_language_choices)): foreach ($get_language_choices as $key => $value) { $language_code = $key; $language_name = $this->languages_array[$key]; $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.='<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; } //foreach else: foreach ($new_languages_array_codes as $value) { $language_name = $value; $language_code = array_search ($language_name, $this->languages_array); $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.='<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; }//foreach endif; }//endif $str.='</ul>'; $str.='</div>'; endif; //layout } $language_choices = $this->googlelanguagetranslator_included_languages(); $layout = get_option('googlelanguagetranslator_display'); $is_multilanguage = get_option('googlelanguagetranslator_multilanguage'); $horizontal_layout = ', layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL'; $simple_layout = ', layout: google.translate.TranslateElement.InlineLayout.SIMPLE'; $auto_display = ', autoDisplay: false'; $default_language = get_option('googlelanguagetranslator_language'); if($floating_widget == 'yes') $simple_layout = ''; if ($is_multilanguage == 1): $multilanguagePage = ', multilanguagePage:true'; if($glt_seo_active != '1') $str.="<div id='glt-footer'>".(!isset($vertical) && !isset($horizontal) ? '<div id="google_language_translator" class="default-language-'.$default_language.'"></div>' : '')."</div><script>function GoogleLanguageTranslatorInit() { new google.translate.TranslateElement({pageLanguage: '".$default_language."'".$language_choices . ($layout=='Horizontal' ? $horizontal_layout : ($layout=='SIMPLE' ? $simple_layout : '')) . $auto_display . $multilanguagePage . $this->analytics()."}, 'google_language_translator');}</script>"; echo $str; else: if($glt_seo_active != '1') $str.="<div id='glt-footer'>".(!isset($vertical) && !isset($horizontal) ? '<div id="google_language_translator" class="default-language-'.$default_language.'"></div>' : '')."</div><script>function GoogleLanguageTranslatorInit() { new google.translate.TranslateElement({pageLanguage: '".$default_language."'".$language_choices . ($layout=='Horizontal' ? $horizontal_layout : ($layout=='SIMPLE' ? $simple_layout : '')) . $auto_display . $this->analytics()."}, 'google_language_translator');}</script>"; echo $str; endif; //is_multilanguage } public function googlelanguagetranslator_vertical() { global $started; global $vertical; $vertical = 1; $started = false; $new_languages_array_string = get_option('googlelanguagetranslator_flags_order'); $new_languages_array = explode(",",$new_languages_array_string); $new_languages_array_codes = array_values($new_languages_array); $new_languages_array_count = count($new_languages_array); $get_language_choices = get_option ('language_display_settings'); $show_flags = get_option('googlelanguagetranslator_flags'); $flag_width = get_option('googlelanguagetranslator_flag_size'); $default_language_code = get_option('googlelanguagetranslator_language'); $english_flag_choice = get_option('googlelanguagetranslator_english_flag_choice'); $spanish_flag_choice = get_option('googlelanguagetranslator_spanish_flag_choice'); $portuguese_flag_choice = get_option('googlelanguagetranslator_portuguese_flag_choice'); $is_active = get_option ( 'googlelanguagetranslator_active' ); $language_choices = $this->googlelanguagetranslator_included_languages(); $floating_widget = get_option ('googlelanguagetranslator_floating_widget'); $glt_url_structure = get_option('googlelanguagetranslator_url_structure'); $glt_seo_active = get_option('googlelanguagetranslator_seo_active'); $default_language = $default_language_code; $str = ''; if ($is_active==1): if ($show_flags==1): $str.='<div id="flags" class="size'.$flag_width.'">'; $str.='<ul id="sortable" class="ui-sortable" style="float:left">'; if (empty($new_languages_array_string)): foreach ($this->languages_array as $key=>$value) { $language_code = $key; $language_name = $value; $language_name_flag = $language_name; if (!empty($get_language_choices[$language_code]) && $get_language_choices[$language_code]==1) { if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.="<li id='".$language_name."'><a href='".esc_url($href)."' title='".$language_name."' class='nturl notranslate ".$language_code." flag ".$language_name_flag."'></a></li>"; } //endif }//foreach else: if ($new_languages_array_count != count($get_language_choices)): foreach ($get_language_choices as $key => $value) { $language_code = $key; $language_name = $this->languages_array[$key]; $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.='<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; } //foreach else: foreach ($new_languages_array_codes as $value) { $language_name = $value; $language_code = array_search ($language_name, $this->languages_array); $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.='<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; }//foreach endif; endif; $str.='</ul>'; $str.='</div>'; endif; //show_flags if($glt_seo_active == '1') { $str .= '<div id="google_language_translator" class="default-language-'.$default_language_code.'">'; $str .= '<select aria-label="Website Language Selector" class="notranslate"><option value="">Select Language</option>'; $get_language_choices = get_option ('language_display_settings'); foreach($get_language_choices as $key => $value) { if($value == 1) $str .= '<option value="'.$default_language.'|'.$key.'">'.$this->languages_array[$key].'</option>'; } $str .= '</select></div>'; $str .= '<script>'; if($glt_url_structure == 'sub_directory') { $str .= "function doGLTTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.pathname+location.search);}var plang=location.pathname.split('/')[1];if(plang.length !=2 && plang != 'zh-CN' && plang != 'zh-TW' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='$default_language';if(lang == '$default_language')location.href=location.protocol+'//'+location.host+glt_request_uri;else location.href=location.protocol+'//'+location.host+'/'+lang+glt_request_uri;}"; } elseif($glt_url_structure == 'sub_domain') { $str .= "function doGLTTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.hostname+location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.hostname+location.pathname+location.search);}var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='$default_language';location.href=location.protocol+'//'+(lang == '$default_language' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '[.]'), '')+glt_request_uri;}"; } $str .= '</script>'; } else $str.='<div id="google_language_translator" class="default-language-'.$default_language_code.'"></div>'; return $str; endif; } // End glt_vertical public function googlelanguagetranslator_horizontal() { global $started; global $horizontal; $horizontal = 1; $started = false; $new_languages_array_string = get_option('googlelanguagetranslator_flags_order'); $new_languages_array = explode(",",$new_languages_array_string); $new_languages_array_codes = array_values($new_languages_array); $new_languages_array_count = count($new_languages_array); $get_language_choices = get_option ('language_display_settings'); $show_flags = get_option('googlelanguagetranslator_flags'); $flag_width = get_option('googlelanguagetranslator_flag_size'); $default_language_code = get_option('googlelanguagetranslator_language'); $english_flag_choice = get_option('googlelanguagetranslator_english_flag_choice'); $spanish_flag_choice = get_option('googlelanguagetranslator_spanish_flag_choice'); $portuguese_flag_choice = get_option('googlelanguagetranslator_portuguese_flag_choice'); $is_active = get_option ( 'googlelanguagetranslator_active' ); $language_choices = $this->googlelanguagetranslator_included_languages(); $floating_widget = get_option ('googlelanguagetranslator_floating_widget'); $glt_url_structure = get_option('googlelanguagetranslator_url_structure'); $glt_seo_active = get_option('googlelanguagetranslator_seo_active'); $default_language = $default_language_code; $str = ''; if ($is_active==1): if ($show_flags==1): $str.='<div id="flags" class="size'.$flag_width.'">'; $str.='<ul id="sortable" class="ui-sortable" style="float:left">'; if (empty($new_languages_array_string)): foreach ($this->languages_array as $key=>$value) { $language_code = $key; $language_name = $value; $language_name_flag = $language_name; if (!empty($get_language_choices[$language_code]) && $get_language_choices[$language_code]==1) { if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.="<li id='".$language_name."'><a href='".esc_url($href)."' title='".$language_name."' class='nturl notranslate ".$language_code." flag ".$language_name_flag."'></a></li>"; } //endif }//foreach else: if ($new_languages_array_count != count($get_language_choices)): foreach ($get_language_choices as $key => $value) { $language_code = $key; $language_name = $this->languages_array[$key]; $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.='<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; } //foreach else: foreach ($new_languages_array_codes as $value) { $language_name = $value; $language_code = array_search ($language_name, $this->languages_array); $language_name_flag = $language_name; if ( $language_name == 'English' && $english_flag_choice == 'canadian_flag') { $language_name_flag = 'canada'; } if ( $language_name == "English" && $english_flag_choice == 'us_flag') { $language_name_flag = 'united-states'; } if ( $language_name == 'Spanish' && $spanish_flag_choice == 'mexican_flag') { $language_name_flag = 'mexico'; } if ( $language_name == 'Portuguese' && $portuguese_flag_choice == 'brazilian_flag') { $language_name_flag = 'brazil'; } $href = '#'; if($glt_seo_active == '1') { $current_url = network_home_url(add_query_arg(null, null)); switch($glt_url_structure) { case 'sub_directory': $href = ($language_code == $default_language) ? $current_url : '/' . $language_code . $_SERVER['REQUEST_URI']; break; case 'sub_domain': $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); $href = ($language_code == $default_language) ? $current_url : str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $language_code . '.' . $domain, $current_url); break; default: break; } } $str.='<li id="'.$language_name.'"><a href="'.esc_url($href).'" title="'.$language_name.'" class="nturl notranslate '.$language_code.' flag '.$language_name_flag.'"></a></li>'; }//foreach endif; endif; $str.='</ul>'; $str.='</div>'; endif; //show_flags if($glt_seo_active == '1') { $str .= '<div id="google_language_translator" class="default-language-'.$default_language_code.'">'; $str .= '<select aria-label="Website Language Selector" class="notranslate"><option value="">Select Language</option>'; $get_language_choices = get_option ('language_display_settings'); foreach($get_language_choices as $key => $value) { if($value == 1) $str .= '<option value="'.$default_language.'|'.$key.'">'.$this->languages_array[$key].'</option>'; } $str .= '</select></div>'; $str .= '<script>'; if($glt_url_structure == 'sub_directory') { $str .= "function doGLTTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.pathname+location.search);}var plang=location.pathname.split('/')[1];if(plang.length !=2 && plang != 'zh-CN' && plang != 'zh-TW' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='$default_language';if(lang == '$default_language')location.href=location.protocol+'//'+location.host+glt_request_uri;else location.href=location.protocol+'//'+location.host+'/'+lang+glt_request_uri;}"; } elseif($glt_url_structure == 'sub_domain') { $str .= "function doGLTTranslate(lang_pair) {if(lang_pair.value)lang_pair=lang_pair.value;if(lang_pair=='')return;var lang=lang_pair.split('|')[1];if(typeof _gaq!='undefined'){_gaq.push(['_trackEvent', 'GTranslate', lang, location.hostname+location.pathname+location.search]);}else {if(typeof ga!='undefined')ga('send', 'event', 'GTranslate', lang, location.hostname+location.pathname+location.search);}var plang=location.hostname.split('.')[0];if(plang.length !=2 && plang.toLowerCase() != 'zh-cn' && plang.toLowerCase() != 'zh-tw' && plang != 'hmn' && plang != 'haw' && plang != 'ceb')plang='$default_language';location.href=location.protocol+'//'+(lang == '$default_language' ? '' : lang+'.')+location.hostname.replace('www.', '').replace(RegExp('^' + plang + '[.]'), '')+glt_request_uri;}"; } $str .= '</script>'; } else $str.='<div id="google_language_translator" class="default-language-'.$default_language_code.'"></div>'; return $str; endif; } // End glt_horizontal public function initialize_settings() { add_settings_section('glt_settings','Settings','','google_language_translator'); $settings_name_array = array ( 'googlelanguagetranslator_active', 'googlelanguagetranslator_language', 'language_display_settings', 'googlelanguagetranslator_flags', 'googlelanguagetranslator_translatebox', 'googlelanguagetranslator_display', 'glt_language_switcher_width', 'glt_language_switcher_text_color', 'glt_language_switcher_bg_color', 'googlelanguagetranslator_toolbar', 'googlelanguagetranslator_showbranding', 'googlelanguagetranslator_flags_alignment', 'googlelanguagetranslator_analytics', 'googlelanguagetranslator_analytics_id', 'googlelanguagetranslator_css', 'googlelanguagetranslator_multilanguage', 'googlelanguagetranslator_floating_widget', 'googlelanguagetranslator_flag_size', 'googlelanguagetranslator_flags_order', 'googlelanguagetranslator_english_flag_choice', 'googlelanguagetranslator_spanish_flag_choice', 'googlelanguagetranslator_portuguese_flag_choice', 'googlelanguagetranslator_floating_widget_text', 'glt_floating_widget_text_color', 'googlelanguagetranslator_floating_widget_text_allow_translation', 'glt_floating_widget_position', 'glt_floating_widget_bg_color', 'googlelanguagetranslator_seo_active', 'googlelanguagetranslator_url_structure', 'googlelanguagetranslator_url_translation_active', 'googlelanguagetranslator_hreflang_tags_active', ); foreach ($settings_name_array as $setting) { add_settings_field( $setting,'',$setting.'_cb','google_language_translator','glt_settings'); if ($setting == 'googlelanguagetranslator_floating_widget_text') register_setting( 'google_language_translator', $setting, array('sanitize_callback' => 'wp_kses_post')); else register_setting( 'google_language_translator',$setting); } } public function googlelanguagetranslator_active_cb() { $option_name = 'googlelanguagetranslator_active' ; $new_value = 1; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_active" id="googlelanguagetranslator_active" value="1" '.checked(1,$options,false).'/> Check this box to activate'; echo $html; } public function googlelanguagetranslator_language_cb() { $option_name = 'googlelanguagetranslator_language'; $new_value = 'en'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_language" id="googlelanguagetranslator_language"> <?php foreach ($this->languages_array as $key => $value) { $language_code = $key; $language_name = $value; ?> <option value="<?php echo $language_code; ?>" <?php if($options==''.$language_code.''){echo "selected";}?>><?php echo $language_name; ?></option> <?php } ?> </select> <?php } public function language_display_settings_cb() { $default_language_code = get_option('googlelanguagetranslator_language'); $option_name = 'language_display_settings'; $new_value = array(''.$default_language_code.'' => 1); if ( get_option( $option_name ) == false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $get_language_choices = get_option (''.$option_name.''); ?> <script>jQuery(document).ready(function($) { $('.select-all-languages').on('click',function(e) { e.preventDefault(); $('.languages').find('input:checkbox').prop('checked', true); }); $('.clear-all-languages').on('click',function(e) { e.preventDefault(); $('.languages').find('input:checkbox').prop('checked', false); }); }); </script> <?php foreach ($this->languages_array as $key => $value) { $language_code = $key; $language_name = $value; $language_code_array[] = $key; if (!isset($get_language_choices[''.$language_code.''])) { $get_language_choices[''.$language_code.''] = 0; } $items[] = $get_language_choices[''.$language_code.'']; $language_codes = $language_code_array; $item_count = count($items); if ($item_count == 1 || $item_count == 27 || $item_count == 53 || $item_count == 79) { ?> <div class="languages" style="width:25%; float:left"> <?php } ?> <div><input type="checkbox" name="language_display_settings[<?php echo $language_code; ?>]" value="1"<?php checked( 1,$get_language_choices[''.$language_code.'']); ?>/><?php echo $language_name; ?></div> <?php if ($item_count == 26 || $item_count == 52 || $item_count == 78 || $item_count == 104) { ?> </div> <?php } } ?> <div class="clear"></div> <?php } public function googlelanguagetranslator_flags_cb() { $option_name = 'googlelanguagetranslator_flags' ; $new_value = 1; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_flags" id="googlelanguagetranslator_flags" value="1" '.checked(1,$options,false).'/> Check to show flags'; echo $html; } public function googlelanguagetranslator_floating_widget_cb() { $option_name = 'googlelanguagetranslator_floating_widget' ; $new_value = 'yes'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_floating_widget" id="googlelanguagetranslator_floating_widget" style="width:170px"> <option value="yes" <?php if($options=='yes'){echo "selected";}?>>Yes, show widget</option> <option value="no" <?php if($options=='no'){echo "selected";}?>>No, hide widget</option> </select> <?php } public function googlelanguagetranslator_floating_widget_text_cb() { $option_name = 'googlelanguagetranslator_floating_widget_text' ; $new_value = 'Translate »'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <input type="text" name="googlelanguagetranslator_floating_widget_text" id="googlelanguagetranslator_floating_widget_text" value="<?php echo esc_attr($options); ?>" style="width:170px"/> <?php } public function googlelanguagetranslator_floating_widget_text_allow_translation_cb() { $option_name = 'googlelanguagetranslator_floating_widget_text_allow_translation' ; $new_value = 0; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_floating_widget_text_allow_translation" id="googlelanguagetranslator_floating_widget_text_allow_translation" value="1" '.checked(1,$options,false).'/> Check to allow'; echo $html; } public function glt_floating_widget_position_cb() { $option_name = 'glt_floating_widget_position'; $new_value = ''; if (get_option($option_name) === false): update_option($option_name, $new_value); endif; $options = get_option(''.$option_name.''); ?> <select name="glt_floating_widget_position" id="glt_floating_widget_position" style="width:170px"> <option value="bottom_left" <?php if($options=='bottom_left'){echo "selected";}?>>Bottom left</option> <option value="bottom_center" <?php if($options=='bottom_center'){echo "selected";}?>>Bottom center</option> <option value="bottom_right" <?php if($options=='bottom_right'){echo "selected";}?>>Bottom right</option> <option value="top_left" <?php if($options=='top_left'){echo "selected";}?>>Top left</option> <option value="top_center" <?php if($options=='top_center'){echo "selected";}?>>Top center</option> <option value="top_right" <?php if($options=='top_right'){echo "selected";}?>>Top right</option> </select> <?php } public function glt_floating_widget_text_color_cb() { $option_name = 'glt_floating_widget_text_color'; $new_value = '#ffffff'; if (get_option($option_name) === false): update_option($option_name, $new_value); endif; $options = get_option(''.$option_name.''); ?> <input type="text" name="glt_floating_widget_text_color" id="glt_floating_widget_text_color" class="color-field" value="<?php echo $options; ?>"/> <?php } public function glt_floating_widget_bg_color_cb() { $option_name = 'glt_floating_widget_bg_color'; $new_value = '#f89406'; if (get_option($option_name) === false): update_option($option_name, $new_value); endif; $options = get_option(''.$option_name.''); ?> <input type="text" name="glt_floating_widget_bg_color" id="glt_floating_widget_bg_color" class="color-field" value="<?php echo $options; ?>"/> <?php } public function glt_language_switcher_width_cb() { $option_name = 'glt_language_switcher_width' ; $new_value = ''; if ( get_option( $option_name ) === false ) { update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="glt_language_switcher_width" id="glt_language_switcher_width" style="width:110px;"> <option value="100%" <?php if($options=='100%'){echo "selected";}?>>100%</option> <option value="">-------</option> <option value="150px" <?php if($options=='150px'){echo "selected";}?>>150px</option> <option value="160px" <?php if($options=='160px'){echo "selected";}?>>160px</option> <option value="170px" <?php if($options=='170px'){echo "selected";}?>>170px</option> <option value="180px" <?php if($options=='180px'){echo "selected";}?>>180px</option> <option value="190px" <?php if($options=='190px'){echo "selected";}?>>190px</option> <option value="200px" <?php if($options=='200px'){echo "selected";}?>>200px</option> <option value="210px" <?php if($options=='210px'){echo "selected";}?>>210px</option> <option value="220px" <?php if($options=='220px'){echo "selected";}?>>220px</option> <option value="230px" <?php if($options=='230px'){echo "selected";}?>>230px</option> <option value="240px" <?php if($options=='240px'){echo "selected";}?>>240px</option> <option value="250px" <?php if($options=='250px'){echo "selected";}?>>250px</option> <option value="260px" <?php if($options=='260px'){echo "selected";}?>>260px</option> <option value="270px" <?php if($options=='270px'){echo "selected";}?>>270px</option> <option value="280px" <?php if($options=='280px'){echo "selected";}?>>280px</option> <option value="290px" <?php if($options=='290px'){echo "selected";}?>>290px</option> <option value="300px" <?php if($options=='300px'){echo "selected";}?>>300px</option> </select> <?php } public function glt_language_switcher_text_color_cb() { $option_name = 'glt_language_switcher_text_color'; $new_value = '#32373c'; if (get_option($option_name) === false): update_option($option_name, $new_value); endif; $options = get_option(''.$option_name.''); ?> <input type="text" name="glt_language_switcher_text_color" id="glt_language_switcher_text_color" class="color-field" value="<?php echo $options; ?>"/> <?php } public function glt_language_switcher_bg_color_cb() { $option_name = 'glt_language_switcher_bg_color'; $new_value = ''; if (get_option($option_name) === false): update_option($option_name, $new_value); endif; $options = get_option(''.$option_name.''); ?> <input type="text" name="glt_language_switcher_bg_color" id="glt_language_switcher_bg_color" class="color-field" value="<?php echo $options; ?>"/> <?php } public function googlelanguagetranslator_translatebox_cb() { $option_name = 'googlelanguagetranslator_translatebox' ; $new_value = 'yes'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_translatebox" id="googlelanguagetranslator_translatebox" style="width:190px"> <option value="yes" <?php if($options=='yes'){echo "selected";}?>>Show language switcher</option> <option value="no" <?php if($options=='no'){echo "selected";}?>>Hide language switcher</option> </select> <?php } public function googlelanguagetranslator_display_cb() { $option_name = 'googlelanguagetranslator_display' ; $new_value = 'Vertical'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_display" id="googlelanguagetranslator_display" style="width:170px;"> <option value="Vertical" <?php if(get_option('googlelanguagetranslator_display')=='Vertical'){echo "selected";}?>>Vertical</option> <option value="Horizontal" <?php if(get_option('googlelanguagetranslator_display')=='Horizontal'){echo "selected";}?>>Horizontal</option> <?php $browser_lang = !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? strtok(strip_tags($_SERVER['HTTP_ACCEPT_LANGUAGE']), ',') : ''; if (!empty($get_http_accept_language)): $get_http_accept_language = explode(",",$browser_lang); else: $get_http_accept_language = explode(",",$browser_lang); endif; $bestlang = $get_http_accept_language[0]; $bestlang_prefix = substr($get_http_accept_language[0],0,2); if ($bestlang_prefix == 'en'): ?> <option value="SIMPLE" <?php if (get_option('googlelanguagetranslator_display')=='SIMPLE'){echo "selected";}?>>SIMPLE</option> <?php endif; ?> </select> <?php } public function googlelanguagetranslator_toolbar_cb() { $option_name = 'googlelanguagetranslator_toolbar' ; $new_value = 'Yes'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_toolbar" id="googlelanguagetranslator_toolbar" style="width:170px;"> <option value="Yes" <?php if(get_option('googlelanguagetranslator_toolbar')=='Yes'){echo "selected";}?>>Yes</option> <option value="No" <?php if(get_option('googlelanguagetranslator_toolbar')=='No'){echo "selected";}?>>No</option> </select> <?php } public function googlelanguagetranslator_showbranding_cb() { $option_name = 'googlelanguagetranslator_showbranding' ; $new_value = 'Yes'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_showbranding" id="googlelanguagetranslator_showbranding" style="width:170px;"> <option value="Yes" <?php if(get_option('googlelanguagetranslator_showbranding')=='Yes'){echo "selected";}?>>Yes</option> <option value="No" <?php if(get_option('googlelanguagetranslator_showbranding')=='No'){echo "selected";}?>>No</option> </select> <?php } public function googlelanguagetranslator_flags_alignment_cb() { $option_name = 'googlelanguagetranslator_flags_alignment' ; $new_value = 'flags_left'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, 'flags_left' ); } $options = get_option (''.$option_name.''); ?> <input type="radio" name="googlelanguagetranslator_flags_alignment" id="flags_left" value="flags_left" <?php if($options=='flags_left'){echo "checked";}?>/> <label for="flags_left">Align Left</label><br/> <input type="radio" name="googlelanguagetranslator_flags_alignment" id="flags_right" value="flags_right" <?php if($options=='flags_right'){echo "checked";}?>/> <label for="flags_right">Align Right</label> <?php } public function googlelanguagetranslator_analytics_cb() { $option_name = 'googlelanguagetranslator_analytics' ; $new_value = 0; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_analytics" id="googlelanguagetranslator_analytics" value="1" '.checked(1,$options,false).'/> Activate Google Analytics tracking?'; echo $html; } public function googlelanguagetranslator_analytics_id_cb() { $option_name = 'googlelanguagetranslator_analytics_id' ; $new_value = ''; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="text" name="googlelanguagetranslator_analytics_id" id="googlelanguagetranslator_analytics_id" value="'.$options.'" />'; echo $html; } public function googlelanguagetranslator_flag_size_cb() { $option_name = 'googlelanguagetranslator_flag_size' ; $new_value = '18'; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); ?> <select name="googlelanguagetranslator_flag_size" id="googlelanguagetranslator_flag_size" style="width:110px;"> <option value="16" <?php if($options=='16'){echo "selected";}?>>16px</option> <option value="18" <?php if($options=='18'){echo "selected";}?>>18px</option> <option value="20" <?php if($options=='20'){echo "selected";}?>>20px</option> <option value="22" <?php if($options=='22'){echo "selected";}?>>22px</option> <option value="24" <?php if($options=='24'){echo "selected";}?>>24px</option> </select> <?php } public function googlelanguagetranslator_flags_order_cb() { $option_name = 'googlelanguagetranslator_flags_order'; $new_value = ''; if ( get_option ( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option ( ''.$option_name.'' ); ?> <input type="hidden" id="order" name="googlelanguagetranslator_flags_order" value="<?php print_r(get_option('googlelanguagetranslator_flags_order')); ?>" /> <?php } public function googlelanguagetranslator_english_flag_choice_cb() { $option_name = 'googlelanguagetranslator_english_flag_choice'; $new_value = 'us_flag'; if ( get_option ( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option ( ''.$option_name.'' ); ?> <select name="googlelanguagetranslator_english_flag_choice" id="googlelanguagetranslator_english_flag_choice"> <option value="us_flag" <?php if($options=='us_flag'){echo "selected";}?>>U.S. Flag</option> <option value="uk_flag" <?php if ($options=='uk_flag'){echo "selected";}?>>U.K Flag</option> <option value="canadian_flag" <?php if ($options=='canadian_flag'){echo "selected";}?>>Canadian Flag</option> </select> <?php } public function googlelanguagetranslator_spanish_flag_choice_cb() { $option_name = 'googlelanguagetranslator_spanish_flag_choice'; $new_value = 'spanish_flag'; if ( get_option ( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option ( ''.$option_name.'' ); ?> <select name="googlelanguagetranslator_spanish_flag_choice" id="googlelanguagetranslator_spanish_flag_choice"> <option value="spanish_flag" <?php if($options=='spanish_flag'){echo "selected";}?>>Spanish Flag</option> <option value="mexican_flag" <?php if ($options=='mexican_flag'){echo "selected";}?>>Mexican Flag</option> </select> <?php } public function googlelanguagetranslator_portuguese_flag_choice_cb() { $option_name = 'googlelanguagetranslator_portuguese_flag_choice'; $new_value = 'portuguese_flag'; if ( get_option ( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option ( ''.$option_name.'' ); ?> <select name="googlelanguagetranslator_portuguese_flag_choice" id="googlelanguagetranslator_spanish_flag_choice"> <option value="portuguese_flag" <?php if($options=='portuguese_flag'){echo "selected";}?>>Portuguese Flag</option> <option value="brazilian_flag" <?php if ($options=='brazilian_flag'){echo "selected";}?>>Brazilian Flag</option> </select> <?php } public function googlelanguagetranslator_seo_active_cb() { $option_name = 'googlelanguagetranslator_seo_active' ; $new_value = 0; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_seo_active" id="googlelanguagetranslator_seo_active" value="1" '.checked(1,$options,false).'/>'; echo $html; } public function googlelanguagetranslator_url_structure_choice_cb() { $option_name = 'googlelanguagetranslator_url_structure' ; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, 'sub_domain' ); } $options = get_option (''.$option_name.''); ?> <input type="radio" name="googlelanguagetranslator_url_structure" id="sub_domain" value="sub_domain" <?php if($options=='sub_domain'){echo "checked";}?>/> <label for="sub_domain">Sub-domain (http://<b>es</b>.example.com/)</label><br/><br/> <input type="radio" name="googlelanguagetranslator_url_structure" id="sub_directory" value="sub_directory" <?php if($options=='sub_directory'){echo "checked";}?>/> <label for="sub_directory">Sub-directory (http://example.com/<b>de</b>/)</label> <?php } public function googlelanguagetranslator_url_translation_active_cb() { $option_name = 'googlelanguagetranslator_url_translation_active' ; $new_value = 0; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_url_translation_active" id="googlelanguagetranslator_url_translation_active" value="1" '.checked(1,$options,false).'/>'; echo $html; } public function googlelanguagetranslator_hreflang_tags_active_cb() { $option_name = 'googlelanguagetranslator_hreflang_tags_active' ; $new_value = 0; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_hreflang_tags_active" id="googlelanguagetranslator_hreflang_tags_active" value="1" '.checked(1,$options,false).'/>'; echo $html; } public function googlelanguagetranslator_css_cb() { $option_name = 'googlelanguagetranslator_css' ; $new_value = ''; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<textarea style="width:100%;" rows="5" name="googlelanguagetranslator_css" id="googlelanguagetranslator_css">'.$options.'</textarea>'; echo $html; } public function googlelanguagetranslator_multilanguage_cb() { $option_name = 'googlelanguagetranslator_multilanguage' ; $new_value = 0; if ( get_option( $option_name ) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="checkbox" name="googlelanguagetranslator_multilanguage" id="googlelanguagetranslator_multilanguage" value="1" '.checked(1,$options,false).'/> Turn on multilanguage mode?'; echo $html; } public function googlelanguagetranslator_exclude_translation_cb() { $option_name = 'googlelanguagetranslator_exclude_translation'; $new_value = ''; if (get_option($option_name) === false ) { // The option does not exist, so we update it. update_option( $option_name, $new_value ); } $options = get_option (''.$option_name.''); $html = '<input type="text" name="'.$option_name.'" id="'.$option_name.'" value="'.$options.'" />'; echo $html; } public function page_layout_cb() { include( plugin_dir_path( __FILE__ ) . '/css/style.php'); add_thickbox(); ?> <div id="glt-settings" class="wrap"> <div id="icon-options-general" class="icon32"></div> <h2><span class="notranslate">Google Language Translator</span></h2> <form action="<?php echo admin_url( '/options.php'); ?>" method="post"> <div class="metabox-holder has-right-sidebar" style="float:left; width:65%"> <div class="postbox glt-main-settings" style="width: 100%"> <h3 class="notranslate">Main Settings</h3> <?php settings_fields('google_language_translator'); ?> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr> <td style="width:60%" class="notranslate">Plugin Status:</td> <td class="notranslate"><?php $this->googlelanguagetranslator_active_cb(); ?></td> </tr> <tr class="notranslate"> <td>Choose the original language of your website</td> <td><?php $this->googlelanguagetranslator_language_cb(); ?></td> </tr> <tr class="notranslate"> <td colspan="2">What languages will be active? (<a class="select-all-languages" href="#">Select All</a> | <a class="clear-all-languages" href="#">Clear</a>)</td> </tr> <tr class="notranslate languages"> <td colspan="2"><?php $this->language_display_settings_cb(); ?></td> </tr> </table> </div> <!-- .postbox --> <div class="postbox glt-seo-settings"> <h3>SEO Settings (paid) <strong style="color:red">NEW!</strong></h3> <div class="inside"> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr class="notranslate"> <td class="advanced">Enable search engine indexing: <a href="#TB_inline?width=200&height=150&inlineId=search-engine-indexing-description" title="What is search engine indexing?" class="thickbox">Learn more</a><div id="search-engine-indexing-description" style="display:none"><p>When turned on search engines will crawl your translated pages and index them, so that your website's translated pages can appear in search engines results pages. This will increase your international traffic. Search engine indexing is an essential feature for multilingual SEO.<br><br><i>Please Note:</i> You must have <a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank">GTranslate paid plan</a> to be able to use this option.</p></div></td> <td class="advanced"><?php $this->googlelanguagetranslator_seo_active_cb(); ?></td> </tr> <tr class="notranslate"> <td class="advanced">URL Structure:</td> <td class="advanced"><?php $this->googlelanguagetranslator_url_structure_choice_cb(); ?></td> </tr> <tr class="notranslate"> <td class="advanced">URL Translation: <a href="#TB_inline?width=200&height=150&inlineId=url-translation-description" title="What is URL translation?" class="thickbox">Learn more</a><div id="url-translation-description" style="display:none"><p>When turned on your URL slugs will be translated which will create additional keywords in other languages and increase your ranking on search engine results pages. For example http://example.com/<b>about-us</b> will become http://de.example.com/<b>uber-uns</b> for German version.<br><br><i>Please Note:</i> This feature will work only if you have GTranslate plan with URL translation option included.</p></div></td> <td class="advanced"><?php $this->googlelanguagetranslator_url_translation_active_cb(); ?></td> </tr> <tr class="notranslate"> <td class="advanced">Add hreflang meta tags: <a href="#TB_inline?width=200&height=150&inlineId=hreflang-tags-description" title="What are hreflang tags?" class="thickbox">Learn more</a><div id="hreflang-tags-description" style="display:none"><p>Hreflang tags are a technical solution for sites that have similar content in multiple languages. The owner of a multilingual site wants search engines to send people to the content in their own language. Say a user is Dutch and the page that ranks is English, but there's also a Dutch version. You would want Google to show the Dutch page in the search results for that Dutch user. This is the kind of problem hreflang was designed to solve.</p></div></td> <td class="advanced"><?php $this->googlelanguagetranslator_hreflang_tags_active_cb(); ?></td> </tr> </table> </div> <!-- .inside --> </div> <!-- .postbox --> <div class="postbox glt-layout-settings" style="width: 100%"> <h3 class="notranslate">Language Switcher Settings</h3> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr class="notranslate"> <td class="choose_flags_intro">Language switcher width:</td> <td class="choose_flags_intro"><?php $this->glt_language_switcher_width_cb(); ?></td> </tr> <tr class="notranslate"> <td class="choose_flags_intro">Language switcher text color:</td> <td class="choose_flags_intro"><?php $this->glt_language_switcher_text_color_cb(); ?></td> </tr> <tr class="notranslate"> <td class="choose_flags_intro">Language switcher background color:</td> <td class="choose_flags_intro"><?php $this->glt_language_switcher_bg_color_cb(); ?></td> </tr> <tr class="notranslate"> <td class="choose_flags_intro">Show flag images?<br/>(Display up to 104 flags above the language switcher)</td> <td class="choose_flags_intro"><?php $this->googlelanguagetranslator_flags_cb(); ?></td> </tr> <tr class="notranslate"> <td>Show or hide the langauge switcher?</td> <td><?php $this->googlelanguagetranslator_translatebox_cb(); ?></td> </tr> <tr class="notranslate"> <td>Layout option:</td> <td><?php $this->googlelanguagetranslator_display_cb(); ?></td> </tr> <tr class="notranslate"> <td>Show Google Toolbar?</td> <td><?php $this->googlelanguagetranslator_toolbar_cb(); ?></td> </tr> <tr class="notranslate"> <td>Show Google Branding? <a href="https://developers.google.com/translate/v2/attribution" target="_blank">Learn more</a></td> <td><?php $this->googlelanguagetranslator_showbranding_cb(); ?></td> </tr> <tr class="alignment notranslate"> <td class="flagdisplay">Align the translator left or right?</td> <td class="flagdisplay"><?php $this->googlelanguagetranslator_flags_alignment_cb(); ?></td> </tr> </table> </div> <!-- .postbox --> <div class="postbox glt-floating-widget-settings" style="width: 100%"> <h3 class="notranslate">Floating Widget Settings</h3> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr class="floating_widget_show notranslate"> <td>Show floating translation widget?</td> <td><?php $this->googlelanguagetranslator_floating_widget_cb(); ?></td> </tr> <tr class="floating-widget floating-widget-custom-text notranslate hidden"> <td>Custom text for the floating widget:</td> <td><?php $this->googlelanguagetranslator_floating_widget_text_cb(); ?></td> </tr> <tr class="floating-widget floating-widget-text-translate notranslate hidden"> <td>Allow floating widget text to translate?:</td> <td><?php $this->googlelanguagetranslator_floating_widget_text_allow_translation_cb(); ?></td> </tr> <tr class="floating-widget floating-widget-position notranslate hidden"> <td>Floating Widget Position:</td> <td><?php $this->glt_floating_widget_position_cb(); ?></td> </tr> <tr class="floating-widget floating-widget-text-color notranslate hidden"> <td>Floating Widget Text Color:</td> <td><?php $this->glt_floating_widget_text_color_cb(); ?></td> </tr> <tr class="floating-widget floating-widget-color notranslate hidden"> <td>Floating Widget Background Color</td> <td><?php $this->glt_floating_widget_bg_color_cb(); ?></td> </tr> </table> </div> <!-- .postbox --> <div class="postbox glt-behavior-settings" style="width: 100%;display:none;"> <h3 class="notranslate">Behavior Settings</h3> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr class="multilanguage notranslate"> <td>Multilanguage Page option? <a href="#TB_inline?width=200&height=150&inlineId=multilanguage-page-description" title="What is the Multi-Language Page Option?" class="thickbox">Learn more</a><div id="multilanguage-page-description" style="display:none"><p>If you activate this setting, Google will translate all text into a single language when requested by your user, even if text is written in multiple languages. In most cases, this setting is not recommended, although for certain websites it might be necessary.</p></div></td> <td><?php $this->googlelanguagetranslator_multilanguage_cb(); ?></td> </tr> <tr class="notranslate"> <td>Google Analytics:</td> <td><?php $this->googlelanguagetranslator_analytics_cb(); ?></td> </tr> <tr class="analytics notranslate"> <td>Google Analytics ID (Ex. 'UA-11117410-2')</td> <td><?php $this->googlelanguagetranslator_analytics_id_cb(); ?></td> </tr> </table> </div> <!-- .postbox --> <div class="postbox glt-usage-settings" style="width: 100%"> <h3 class="notranslate">Usage</h3> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr class="notranslate"> <td>For usage in pages/posts/sidebar:</td> <td><code>[google-translator]</code></td> </tr> <tr class="notranslate"> <td style="width:40%">For usage in header/footer/page templates:</td> <td style="width:60%"><code><?php echo do_shortcode('[google-translator]'); ?></code></td> </tr> <tr class="notranslate"> <td colspan="2">Single language usage in menus/pages/posts</td> </tr> <tr class="notranslate"> <td colspan="2"><code>[glt language="Spanish" label="Español" image="yes" text="yes" image_size="24"]</code></td> </tr> <tr class="notranslate"> <td colspan="2"> <a href="#TB_inline?width=200&height=450&inlineId=single-language-shortcode-description" title="How to place a single language in your Wordpress menu" class="thickbox">How to place a single language in your Wordpress menu</a> <div id="single-language-shortcode-description" style="display:none"> <p>For menu usage, you need to create a new menu, or use an existing menu, by navigating to "Appearance > Menus".</p> <p>First you will need to enable "descriptions" for your menu items, which can be found in a tab labeled "Screen Options" in the upper-right area of the page.</p> <p>Once descriptions are enabled, follow these steps:<br/> <ol> <li>Create a new menu item using "Link" as the menu item type.</li> <li>Use <code style="border:none">#</code> for the URL</li> <li>Enter a navigation label of your choice. This label does not appear on your website - it is meant only to help you identify the menu item.</li> <li>Place the following shortcode into the "description" field, and modify it to display the language and navigation label of your choice:</li> </ol> <p><code>[glt language="Spanish" label="Español"]</code></p> </div> <!-- .single-language-shortcode-description --> </td> </tr> </table> </div> <!-- .postbox --> <?php if (isset($_POST['submit'])) { if (empty($_POST['submit']) && !check_admin_referer( 'glt-save-settings', 'glt-save-settings-nonce' )) { wp_die(); } } wp_nonce_field('glt-save-settings, glt-save-settings-nonce', false); submit_button(); ?> <p><a target="_blank" href="https://wordpress.org/support/plugin/google-language-translator/reviews/?filter=5"><?php _e('Love Google Language Translator? Give us 5 stars on WordPress.org :)', 'glt'); ?></a></p> </div> <!-- .metbox-holder --> <div class="metabox-holder" style="float:right; clear:right; width:33%"> <div class="postbox glt-preview-settings"> <h3 class="notranslate">Preview</h3> <table style="width:100%"> <tr> <td style="box-sizing:border-box; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; padding:15px 15px; margin:0px"><span class="notranslate"> Drag & drop flags to change their position.<br/><br/>(Note: flag order resets when flags are added/removed)</span><br/><br/><?php echo do_shortcode('[google-translator]'); ?><p class="hello"><span class="notranslate">Translated text:</span> <span>Hello</span></p> </td> </tr> </table> </div> <!-- .postbox --> </div> <!-- .metabox-holder --> <div class="metabox-holder box-right notranslate" style="float: right; width: 33%; clear:right"> <div class="postbox glt-flag-settings"> <h3>Flag Settings</h3> <div class="inside"> <table style="border-collapse:separate" width="100%" border="0" cellspacing="8" cellpadding="0" class="form-table"> <tr class="notranslate"> <td class="advanced">Select flag size:</td> <td class="advanced"><?php $this->googlelanguagetranslator_flag_size_cb(); ?></td> </tr> <tr class="notranslate"> <td class="advanced">Flag for English:</td> <td class="advanced"><?php $this->googlelanguagetranslator_english_flag_choice_cb(); ?></td> </tr> <tr class="notranslate"> <td class="advanced">Flag for Spanish:</td> <td class="advanced"><?php $this->googlelanguagetranslator_spanish_flag_choice_cb(); ?></td> </tr> <tr class="notranslate"> <td class="advanced">Flag for Portuguese:</td> <td class="advanced"><?php $this->googlelanguagetranslator_portuguese_flag_choice_cb(); ?></td> </tr> </table> </div> <!-- .inside --> </div> <!-- .postbox --> </div> <!-- .metabox-holder --> <div class="metabox-holder box-right notranslate" style="float: right; width: 33%;"> <div class="postbox glt-gtranslate-ad"> <h3>Enable SEO features with GTranslate</h3> <div class="inside"> <a class="wp-studio-logo" href="https://gtranslate.io/?xyz=3167#pricing" target="_blank"><img style="width:177px;" src="<?php echo plugins_url( 'images/gt_logo.svg' , __FILE__ ); ?>"></a><br /> <ul id="features" style="margin-left:15px"> <li style="list-style:square outside"><?php _e('Search engine indexing', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Search engine friendly (SEF) URLs', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Human level neural translations', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Edit translations manually', 'glt'); ?></li> <li style="list-style:square outside"><a href="https://gtranslate.io/website-translation-quote" title="Website Translation Price Calculator" target="_blank"><?php _e('Automatic translation post-editing service and professional translations', 'glt'); ?></a></li> <li style="list-style:square outside"><?php _e('Meta data translation (keywords, page description, etc...)', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('URL/slug translation', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Language hosting (custom domain like example.fr, example.es)', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Seamless updates', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Increased international traffic and AdSense revenue', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Works in China', 'glt'); ?></li> <li style="list-style:square outside"><?php _e('Priority Live Chat support', 'glt'); ?></li> </ul> <p><?php _e('Prices starting from <b>$9.99/month</b>!', 'glt'); ?></p> <a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank" class="button-primary"><?php _e('Try Now (15 days free)', 'glt'); ?></a> <a href="https://gtranslate.io/?xyz=3167#faq" target="_blank" class="button-primary"><?php _e('FAQ', 'glt'); ?></a> <a href="https://gtranslate.io/?xyz=3167#contact" target="_blank" class="button-primary"><?php _e('Live Chat', 'glt'); ?></a> </div> <!-- .inside --> </div> <!-- .postbox --> </div> <!-- .metabox-holder --> <div class="metabox-holder box-right notranslate" style="float: right; width: 33%;"> <div class="postbox glt-css-settings"> <h3>Add CSS Styles</h3> <div class="inside"> <p>You can apply any necessary CSS styles below:</p> <?php $this->googlelanguagetranslator_css_cb(); ?> </div> <!-- .inside --> </div> <!-- .postbox --> </div> <!-- .metabox-holder --> <?php $this->googlelanguagetranslator_flags_order_cb(); ?> </form> </div> <!-- .wrap --> <?php $default_language = get_option('googlelanguagetranslator_language'); $glt_url_structure = get_option('googlelanguagetranslator_url_structure'); $glt_seo_active = get_option('googlelanguagetranslator_seo_active'); $pro_version = $enterprise_version = null; if($glt_seo_active == '1' and $glt_url_structure == 'sub_domain') $pro_version = '1'; if($glt_seo_active == '1' and $glt_url_structure == 'sub_directory') $enterprise_version = '1'; ?> <script>window.intercomSettings = {app_id: "r70azrgx", 'platform': 'wordpress-glt', 'translate_from': '<?php echo $default_language; ?>', 'is_sub_directory': <?php echo (empty($pro_version) ? '0' : '1'); ?>, 'is_sub_domain': <?php echo (empty($enterprise_version) ? '0' : '1'); ?>};(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://widget.intercom.io/widget/r70azrgx';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})()</script> <?php } } class GLT_Notices { protected $prefix = 'glt'; public $notice_spam = 0; public $notice_spam_max = 3; // Basic actions to run public function __construct() { // Runs the admin notice ignore function incase a dismiss button has been clicked add_action('admin_init', array($this, 'admin_notice_ignore')); // Runs the admin notice temp ignore function incase a temp dismiss link has been clicked add_action('admin_init', array($this, 'admin_notice_temp_ignore')); // Adding notices add_action('admin_notices', array($this, 'glt_admin_notices')); } // Checks to ensure notices aren't disabled and the user has the correct permissions. public function glt_admin_notice() { $gt_settings = get_option($this->prefix . '_admin_notice'); if (!isset($gt_settings['disable_admin_notices']) || (isset($gt_settings['disable_admin_notices']) && $gt_settings['disable_admin_notices'] == 0)) { if (current_user_can('manage_options')) { return true; } } return false; } // Primary notice function that can be called from an outside function sending necessary variables public function admin_notice($admin_notices) { // Check options if (!$this->glt_admin_notice()) { return false; } foreach ($admin_notices as $slug => $admin_notice) { // Call for spam protection if ($this->anti_notice_spam()) { return false; } // Check for proper page to display on if (isset( $admin_notices[$slug]['pages']) and is_array( $admin_notices[$slug]['pages'])) { if (!$this->admin_notice_pages($admin_notices[$slug]['pages'])) { return false; } } // Check for required fields if (!$this->required_fields($admin_notices[$slug])) { // Get the current date then set start date to either passed value or current date value and add interval $current_date = current_time("n/j/Y"); $start = (isset($admin_notices[$slug]['start']) ? $admin_notices[$slug]['start'] : $current_date); $start = date("n/j/Y", strtotime($start)); $end = ( isset( $admin_notices[ $slug ]['end'] ) ? $admin_notices[ $slug ]['end'] : $start ); $end = date( "n/j/Y", strtotime( $end ) ); $date_array = explode('/', $start); $interval = (isset($admin_notices[$slug]['int']) ? $admin_notices[$slug]['int'] : 0); $date_array[1] += $interval; $start = date("n/j/Y", mktime(0, 0, 0, $date_array[0], $date_array[1], $date_array[2])); // This is the main notices storage option $admin_notices_option = get_option($this->prefix . '_admin_notice', array()); // Check if the message is already stored and if so just grab the key otherwise store the message and its associated date information if (!array_key_exists( $slug, $admin_notices_option)) { $admin_notices_option[$slug]['start'] = $start; $admin_notices_option[$slug]['int'] = $interval; update_option($this->prefix . '_admin_notice', $admin_notices_option); } // Sanity check to ensure we have accurate information // New date information will not overwrite old date information $admin_display_check = (isset($admin_notices_option[$slug]['dismissed']) ? $admin_notices_option[$slug]['dismissed'] : 0); $admin_display_start = (isset($admin_notices_option[$slug]['start']) ? $admin_notices_option[$slug]['start'] : $start); $admin_display_interval = (isset($admin_notices_option[$slug]['int']) ? $admin_notices_option[$slug]['int'] : $interval); $admin_display_msg = (isset($admin_notices[$slug]['msg']) ? $admin_notices[$slug]['msg'] : ''); $admin_display_title = (isset($admin_notices[$slug]['title']) ? $admin_notices[$slug]['title'] : ''); $admin_display_link = (isset($admin_notices[$slug]['link']) ? $admin_notices[$slug]['link'] : ''); $admin_display_dismissible= (isset($admin_notices[$slug]['dismissible']) ? $admin_notices[$slug]['dismissible'] : true); $output_css = false; // Ensure the notice hasn't been hidden and that the current date is after the start date if ($admin_display_check == 0 and strtotime($admin_display_start) <= strtotime($current_date)) { // Get remaining query string $query_str = esc_url(add_query_arg($this->prefix . '_admin_notice_ignore', $slug)); // Admin notice display output echo '<div class="update-nag glt-admin-notice">'; echo '<div class="glt-notice-logo"></div>'; echo ' <p class="glt-notice-title">'; echo $admin_display_title; echo ' </p>'; echo ' <p class="glt-notice-body">'; echo $admin_display_msg; echo ' </p>'; echo '<ul class="glt-notice-body glt-red"> ' . $admin_display_link . ' </ul>'; if($admin_display_dismissible) echo '<a href="' . $query_str . '" class="dashicons dashicons-dismiss"></a>'; echo '</div>'; $this->notice_spam += 1; $output_css = true; } if ($output_css) { wp_enqueue_style($this->prefix . '-admin-notices', plugins_url(plugin_basename(dirname(__FILE__))) . '/css/glt-notices.css', array()); } } } } // Spam protection check public function anti_notice_spam() { if ($this->notice_spam >= $this->notice_spam_max) { return true; } return false; } // Ignore function that gets ran at admin init to ensure any messages that were dismissed get marked public function admin_notice_ignore() { // verify nonce if(!isset($_GET['_wpnonce']) or !wp_verify_nonce($_GET['_wpnonce'])) return; // If user clicks to ignore the notice, update the option to not show it again if (isset($_GET[$this->prefix . '_admin_notice_ignore'])) { $admin_notices_option = get_option($this->prefix . '_admin_notice', array()); $key = $_GET[$this->prefix . '_admin_notice_ignore']; if(!preg_match('/^[a-z_0-9]+$/i', $key)) return; $admin_notices_option[$key]['dismissed'] = 1; update_option($this->prefix . '_admin_notice', $admin_notices_option); $query_str = remove_query_arg(array($this->prefix . '_admin_notice_ignore', '_wpnonce')); wp_redirect($query_str); exit; } } // Temp Ignore function that gets ran at admin init to ensure any messages that were temp dismissed get their start date changed public function admin_notice_temp_ignore() { // verify nonce if(!isset($_GET['_wpnonce']) or !wp_verify_nonce($_GET['_wpnonce'])) return; // If user clicks to temp ignore the notice, update the option to change the start date - default interval of 14 days if (isset($_GET[$this->prefix . '_admin_notice_temp_ignore'])) { $admin_notices_option = get_option($this->prefix . '_admin_notice', array()); $current_date = current_time("n/j/Y"); $date_array = explode('/', $current_date); $interval = (isset($_GET['gt_int']) ? intval($_GET['gt_int']) : 14); $date_array[1] += $interval; $new_start = date("n/j/Y", mktime(0, 0, 0, $date_array[0], $date_array[1], $date_array[2])); $key = $_GET[$this->prefix . '_admin_notice_temp_ignore']; if(!preg_match('/^[a-z_0-9]+$/i', $key)) return; $admin_notices_option[$key]['start'] = $new_start; $admin_notices_option[$key]['dismissed'] = 0; update_option($this->prefix . '_admin_notice', $admin_notices_option); $query_str = remove_query_arg(array($this->prefix . '_admin_notice_temp_ignore', 'gt_int', '_wpnonce')); wp_redirect( $query_str ); exit; } } public function admin_notice_pages($pages) { foreach ($pages as $key => $page) { if (is_array($page)) { if (isset($_GET['page']) and $_GET['page'] == $page[0] and isset($_GET['tab']) and $_GET['tab'] == $page[1]) { return true; } } else { if ($page == 'all') { return true; } if (get_current_screen()->id === $page) { return true; } if (isset($_GET['page']) and $_GET['page'] == $page) { return true; } } } return false; } // Required fields check public function required_fields( $fields ) { if (!isset( $fields['msg']) or (isset($fields['msg']) and empty($fields['msg']))) { return true; } if (!isset( $fields['title']) or (isset($fields['title']) and empty($fields['title']))) { return true; } return false; } // Special parameters function that is to be used in any extension of this class public function special_parameters($admin_notices) { // Intentionally left blank } public function glt_admin_notices() { $deactivate_plugins= array('WP Translator' => 'wptranslator/WPTranslator.php', 'TranslatePress' => 'translatepress-multilingual/index.php', 'Google Website Translator' => 'google-website-translator/google-website-translator.php', 'Weglot' => 'weglot/weglot.php', 'TransPosh' => 'transposh-translation-filter-for-wordpress/transposh.php', 'Advanced Google Translate' => 'advanced-google-translate/advanced-google-translate.php', 'My WP Translate' => 'my-wp-translate/my-wp-translate.php', 'WPML Multilingual CMS' => 'sitepress-multilingual-cms/sitepress.php'); foreach($deactivate_plugins as $name => $plugin_file) { if(is_plugin_active($plugin_file)) { $deactivate_link = wp_nonce_url('plugins.php?action=deactivate&plugin='.urlencode($plugin_file ).'&plugin_status=all&paged=1&s=', 'deactivate-plugin_' . $plugin_file); $notices['deactivate_plugin_'.strtolower(str_replace(' ', '', $name))] = array( 'title' => sprintf(__('Please deactivate %s plugin', 'glt'), $name), 'msg' => sprintf(__('%s plugin causes conflicts with Google Language Translator.', 'glt'), $name), 'link' => '<li><span class="dashicons dashicons-dismiss"></span><a href="'.$deactivate_link.'">' . sprintf(__('Deactivate %s plugin', 'glt'), $name) . '</a></li>', 'dismissible' => false, 'int' => 0 ); } } // check if translation debug is on and add a notice include dirname(__FILE__) . '/url_addon/config.php'; if($debug) { $edit_file_link = admin_url('plugin-editor.php?file=google-language-translator%2Furl_addon%2Fconfig.php&plugin=google-language-translator%2Fgoogle-language-translator.php'); $view_debug_link = admin_url('plugin-editor.php?file=google-language-translator%2Furl_addon%2Fdebug.txt&plugin=google-language-translator%2Fgoogle-language-translator.php'); $notices['glt_debug_notice'] = array( 'title' => __('Translation debug mode is ON.', 'glt'), 'msg' => __('Please note that sensitive information can be written into google-language-translator/url_addon/debug.txt file, which can be accessed publicly. It is your responsibility to deny public access to it and clean debug information after you are done.', 'glt'), 'link' => '<li><span class="dashicons dashicons-edit"></span><a href="'.$edit_file_link.'">' . __('Edit config.php', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-visibility"></span><a href="'.$view_debug_link.'">' . __('View debug.txt', 'glt') . '</a></li>', 'dismissible' => false, 'int' => 0 ); } $glt_announcement_ignore = esc_url(wp_nonce_url(add_query_arg(array($this->prefix . '_admin_notice_ignore' => 'glt_announcement')))); $glt_announcement_temp = esc_url(wp_nonce_url(add_query_arg(array($this->prefix . '_admin_notice_temp_ignore' => 'glt_announcement', 'gt_int' => 2)))); $notices['glt_announcement'] = array( 'title' => __('Announcement - Google Language Translator', 'glt'), 'msg' => __("<p><b>Google Language Translator</b> plugin is now a part of <b>GTranslate</b> family!</p> <p>GTranslate is a leader in website translation technology. You can continue using this plugin and enjoy <b>new SEO features</b> and free <b>Live chat support</b> brought to you by GTranslate.</p>", 'glt'), 'link' => '<li><span class="dashicons dashicons-megaphone"></span><a href="https://gtranslate.io/blog/google-language-translator-becomes-part-of-gtranslate-family" target="_blank">' . __('Read More', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-external"></span><a href="https://gtranslate.io/?xyz=3167" target="_blank">' . __('Visit GTranslate', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-admin-settings"></span><a href="' . admin_url('options-general.php?page=google_language_translator') . '">' . __('Open Settings Page', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $glt_announcement_temp . '">' . __('Remind me later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $glt_announcement_ignore . '">' . __('Dismiss', 'glt') . '</a></li>', 'later_link' => $glt_announcement_temp, 'int' => 0 ); $two_week_review_ignore = esc_url(wp_nonce_url(add_query_arg(array($this->prefix . '_admin_notice_ignore' => 'two_week_review')))); $two_week_review_temp = esc_url(wp_nonce_url(add_query_arg(array($this->prefix . '_admin_notice_temp_ignore' => 'two_week_review', 'gt_int' => 6)))); $notices['two_week_review'] = array( 'title' => __('Please Leave a Review', 'glt'), 'msg' => __("We hope you have enjoyed using Google Language Translator! Would you mind taking a few minutes to write a review on WordPress.org? <br>Just writing a simple <b>'thank you'</b> will make us happy!", 'glt'), 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://wordpress.org/support/plugin/google-language-translator/reviews/?filter=5" target="_blank">' . __('Sure! I would love to!', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-smiley"></span><a href="' . $two_week_review_ignore . '">' . __('I have already left a review', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $two_week_review_temp . '">' . __('Maybe later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $two_week_review_ignore . '">' . __('Never show again', 'glt') . '</a></li>', 'later_link' => $two_week_review_temp, 'int' => 5 ); $upgrade_tips_ignore = esc_url(wp_nonce_url(add_query_arg(array($this->prefix . '_admin_notice_ignore' => 'upgrade_tips')))); $upgrade_tips_temp = esc_url(wp_nonce_url(add_query_arg(array($this->prefix . '_admin_notice_temp_ignore' => 'upgrade_tips', 'gt_int' => 7)))); if(get_option('googlelanguagetranslator_seo_active') != '1') { $notices['upgrade_tips'][] = array( 'title' => __('Did you know?', 'glt'), 'msg' => __('You can have <b>neural machine translations</b> which are human level with GTranslate paid version.', 'glt'), 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank">' . __('Learn more', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'glt') . '</a></li>', 'later_link' => $upgrade_tips_temp, 'int' => 2 ); $notices['upgrade_tips'][] = array( 'title' => __('Did you know?', 'glt'), 'msg' => __('You can <b>increase</b> your international <b>traffic</b> with GTranslate paid version.', 'glt'), 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank">' . __('Learn more', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'glt') . '</a></li>', 'later_link' => $upgrade_tips_temp, 'int' => 2 ); $notices['upgrade_tips'][] = array( 'title' => __('Did you know?', 'glt'), 'msg' => __('You can have your <b>translated pages indexed</b> in search engines with GTranslate paid version.', 'glt'), 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank">' . __('Learn more', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'glt') . '</a></li>', 'later_link' => $upgrade_tips_temp, 'int' => 2 ); $notices['upgrade_tips'][] = array( 'title' => __('Did you know?', 'glt'), 'msg' => __('You can <b>increase</b> your <b>AdSense revenue</b> with GTranslate paid version.', 'glt'), 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank">' . __('Learn more', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'glt') . '</a></li>', 'later_link' => $upgrade_tips_temp, 'int' => 2 ); $notices['upgrade_tips'][] = array( 'title' => __('Did you know?', 'glt'), 'msg' => __('You can <b>edit translations</b> with GTranslate paid version.', 'glt'), 'link' => '<li><span class="dashicons dashicons-external"></span><a href="https://gtranslate.io/?xyz=3167#pricing" target="_blank">' . __('Learn more', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-calendar-alt"></span><a href="' . $upgrade_tips_temp . '">' . __('Maybe later', 'glt') . '</a></li>' . '<li><span class="dashicons dashicons-dismiss"></span><a href="' . $upgrade_tips_ignore . '">' . __('Never show again', 'glt') . '</a></li>', 'later_link' => $upgrade_tips_temp, 'int' => 2 ); shuffle($notices['upgrade_tips']); $notices['upgrade_tips'] = $notices['upgrade_tips'][0]; } $this->admin_notice($notices); } } if(is_admin()) { global $pagenow; if(!defined('DOING_AJAX') or !DOING_AJAX) new GLT_Notices(); } global $glt_url_structure, $glt_seo_active; $glt_url_structure = get_option('googlelanguagetranslator_url_structure'); $glt_seo_active = get_option('googlelanguagetranslator_seo_active'); if($glt_seo_active == '1' and $glt_url_structure == 'sub_directory') { // gtranslate redirect rules with PHP (for environments with no .htaccess support (pantheon, flywheel, etc.), usually .htaccess rules override this) @list($request_uri, $query_params) = explode('?', $_SERVER['REQUEST_URI']); if(preg_match('/^\/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)\/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)\/(.*)$/', $request_uri, $matches)) { header('Location: ' . '/' . $matches[1] . '/' . $matches[3] . (empty($query_params) ? '' : '?'.$query_params), true, 301); exit; } // #1 redirect double language codes /es/en/... if(preg_match('/^\/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)$/', $request_uri)) { header('Location: ' . $request_uri . '/' . (empty($query_params) ? '' : '?'.$query_params), true, 301); exit; } // #2 add trailing slash $get_language_choices = get_option ('language_display_settings'); $items = array(); foreach($get_language_choices as $key => $value) { if($value == 1) $items[] = $key; } $allowed_languages = implode('|', $items); // ex: en|ru|it|de if(preg_match('/^\/('.$allowed_languages.')\/(.*)/', $request_uri, $matches)) { $_GET['glang'] = $matches[1]; $_GET['gurl'] = rawurldecode($matches[2]); require_once dirname(__FILE__) . '/url_addon/gtranslate.php'; exit; } // #3 proxy translation } if($glt_seo_active == '1' and ($glt_url_structure == 'sub_directory' or $glt_url_structure == 'sub_domain')) { add_action('wp_head', 'glt_request_uri_var'); if(isset($_GET['page']) and $_GET['page'] == 'google_language_translator') add_action('admin_head', 'glt_request_uri_var'); function glt_request_uri_var() { global $glt_url_structure; echo '<script>'; echo "var glt_request_uri = '".addslashes($_SERVER['REQUEST_URI'])."';"; echo "var glt_url_structure = '".addslashes($glt_url_structure)."';"; echo "var glt_default_lang = '".addslashes(get_option('googlelanguagetranslator_language'))."';"; echo '</script>'; } if(get_option('googlelanguagetranslator_url_translation_active') == '1') { add_action('wp_head', 'glt_url_translation_meta', 1); function glt_url_translation_meta() { echo '<meta name="uri-translation" content="on" />'; } } if(get_option('googlelanguagetranslator_hreflang_tags_active') == '1') { add_action('wp_head', 'glt_add_hreflang_tags', 1); function glt_add_hreflang_tags() { global $glt_url_structure; $default_language = get_option('googlelanguagetranslator_language'); $enabled_languages = array(); $get_language_choices = get_option ('language_display_settings'); foreach($get_language_choices as $key => $value) { if($value == 1) $enabled_languages[] = $key; } //$current_url = wp_get_canonical_url(); $current_url = network_home_url(add_query_arg(null, null)); if($current_url !== false) { // adding default language if($default_language === 'iw') echo '<link rel="alternate" hreflang="he" href="'.esc_url($current_url).'" />'."\n"; elseif($default_language === 'jw') echo '<link rel="alternate" hreflang="jv" href="'.esc_url($current_url).'" />'."\n"; else echo '<link rel="alternate" hreflang="'.$default_language.'" href="'.esc_url($current_url).'" />'."\n"; // adding enabled languages foreach($enabled_languages as $lang) { $href = ''; $domain = str_replace('www.', '', $_SERVER['HTTP_HOST']); if($glt_url_structure == 'sub_domain') $href = str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $lang . '.' . $domain, $current_url); elseif($glt_url_structure == 'sub_directory') $href = str_ireplace('://' . $_SERVER['HTTP_HOST'], '://' . $_SERVER['HTTP_HOST'] . '/' . $lang, $current_url); if(!empty($href) and $lang != $default_language) { if($lang === 'iw') echo '<link rel="alternate" hreflang="he" href="'.esc_url($href).'" />'."\n"; elseif($lang === 'jw') echo '<link rel="alternate" hreflang="jv" href="'.esc_url($href).'" />'."\n"; else echo '<link rel="alternate" hreflang="'.$lang.'" href="'.esc_url($href).'" />'."\n"; } } } } } } // translate WP REST API posts and categories data in JSON response if($glt_seo_active == '1') { function glt_rest_post($response, $post, $request) { if(isset($response->data['content']) and is_array($response->data['content'])) $response->data['content']['gt_translate_keys'] = array(array('key' => 'rendered', 'format' => 'html')); if(isset($response->data['excerpt']) and is_array($response->data['excerpt'])) $response->data['excerpt']['gt_translate_keys'] = array(array('key' => 'rendered', 'format' => 'html')); if(isset($response->data['title']) and is_array($response->data['title'])) $response->data['title']['gt_translate_keys'] = array(array('key' => 'rendered', 'format' => 'text')); if(isset($response->data['link'])) $response->data['gt_translate_keys'] = array(array('key' => 'link', 'format' => 'url')); // more fields can be added here return $response; } function glt_rest_category($response, $category, $request) { if(isset($response->data['description'])) $response->data['gt_translate_keys'][] = array('key' => 'description', 'format' => 'html'); if(isset($response->data['name'])) $response->data['gt_translate_keys'][] = array('key' => 'name', 'format' => 'text'); if(isset($response->data['link'])) $response->data['gt_translate_keys'][] = array('key' => 'link', 'format' => 'url'); // more fields can be added here return $response; } add_filter('rest_prepare_post', 'glt_rest_post', 10, 3); add_filter('rest_prepare_category', 'glt_rest_category', 10, 3); } // convert wp_localize_script format into JSON + JS parser if($glt_seo_active == '1') { function glt_filter_l10n_scripts() { global $wp_scripts; $translate_handles = array( 'agile-store-locator-script', 'wmc-wizard', 'wc-address-i18n', 'wc-checkout', 'wc-country-select', 'wc-add-to-cart', 'wc-password-strength-meter', 'googlecode_regular', 'googlecode_property', 'googlecode_contact', 'mapfunctions', 'myhome-min', ); //echo '<!--' . print_r($wp_scripts, true). '-->'; //return; foreach($wp_scripts->registered as $handle => $script) { if(isset($script->extra['data']) and in_array($handle, $translate_handles)) { $l10n = $script->extra['data']; preg_match_all('/var (.+) = ({(.*)});/', $l10n, $matches); //echo '<!--' . print_r($matches, true). '-->'; if(isset($matches[1]) and isset($matches[2])) { $vars = $matches[1]; $scripts = $matches[2]; } else continue; foreach($vars as $i => $var_name) { $attribute_ids = $wp_scripts->get_data($handle, 'attribute-ids'); $attribute_ids[] = $var_name . '-glt-l10n-'.$i; $jsons = $wp_scripts->get_data($handle, 'jsons'); $jsons[] = $scripts[$i]; $jss = $wp_scripts->get_data($handle, 'jss'); $jss[] = "var $var_name = JSON.parse(document.getElementById('$var_name-glt-l10n-$i').innerHTML);"; $wp_scripts->add_data($handle, 'attribute-ids', $attribute_ids); $wp_scripts->add_data($handle, 'jsons', $jsons); $wp_scripts->add_data($handle, 'jss', $jss); } unset($wp_scripts->registered[$handle]->extra['data']); } } //echo '<!--' . print_r($wp_scripts, true). '-->'; } function glt_add_script_attributes($tag, $handle) { global $wp_scripts; glt_filter_l10n_scripts(); if(isset($wp_scripts->registered[$handle]->extra['attribute-ids'])) { $attribute_ids = $wp_scripts->get_data($handle, 'attribute-ids'); $jsons = $wp_scripts->get_data($handle, 'jsons'); $jss = $wp_scripts->get_data($handle, 'jss'); $return = ''; foreach($attribute_ids as $i => $attribute_id) { $json = $jsons[$i]; $js = $jss[$i]; $return .= "<script id='$attribute_id' type='application/json'>$json</script>\n<script type='text/javascript'>$js</script>\n"; } return $return . $tag; } return $tag; } // filter for woocommerce script params function glt_filter_woocommerce_scripts_data($data, $handle) { switch($handle) { case 'wc-address-i18n': { $data['gt_translate_keys'] = array( array('key' => 'locale', 'format' => 'json'), 'i18n_required_text', 'i18n_optional_text', ); $locale = json_decode($data['locale']); if(isset($locale->default->address_1)) $locale->default->address_1->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->address_2)) $locale->default->address_2->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->city)) $locale->default->city->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->postcode)) $locale->default->postcode->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->state)) $locale->default->state->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->shipping->address_1)) $locale->default->shipping->address_1->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->shipping->address_2)) $locale->default->shipping->address_2->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->shipping->city)) $locale->default->shipping->city->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->shipping->postcode)) $locale->default->shipping->postcode->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->shipping->state)) $locale->default->shipping->state->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->billing->address_1)) $locale->default->billing->address_1->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->billing->address_2)) $locale->default->billing->address_2->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->billing->city)) $locale->default->billing->city->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->billing->postcode)) $locale->default->billing->postcode->gt_translate_keys = array('label', 'placeholder'); if(isset($locale->default->billing->state)) $locale->default->billing->state->gt_translate_keys = array('label', 'placeholder'); $data['locale'] = json_encode($locale); } break; case 'wc-checkout': { $data['gt_translate_keys'] = array('i18n_checkout_error'); } break; case 'wc-country-select': { $data['gt_translate_keys'] = array('i18n_ajax_error', 'i18n_input_too_long_1', 'i18n_input_too_long_n', 'i18n_input_too_short_1', 'i18n_input_too_short_n', 'i18n_load_more', 'i18n_no_matches', 'i18n_searching', 'i18n_select_state_text', 'i18n_selection_too_long_1', 'i18n_selection_too_long_n'); } break; case 'wc-add-to-cart': { $data['gt_translate_keys'] = array('i18n_view_cart', array('key' => 'cart_url', 'format' => 'url')); } break; case 'wc-password-strength-meter': { $data['gt_translate_keys'] = array('i18n_password_error', 'i18n_password_hint', ''); } break; default: break; } return $data; } function glt_woocommerce_geolocate_ip($false) { if(isset($_SERVER['HTTP_X_GT_VIEWER_IP'])) $_SERVER['HTTP_X_REAL_IP'] = $_SERVER['HTTP_X_GT_VIEWER_IP']; elseif(isset($_SERVER['HTTP_X_GT_CLIENTIP'])) $_SERVER['HTTP_X_REAL_IP'] = $_SERVER['HTTP_X_GT_CLIENTIP']; return $false; } //add_action('wp_print_scripts', 'glt_filter_l10n_scripts', 1); //add_action('wp_print_header_scripts', 'glt_filter_l10n_scripts', 1); //add_action('wp_print_footer_scripts', 'glt_filter_l10n_scripts', 1); add_filter('script_loader_tag', 'glt_add_script_attributes', 100, 2); add_filter('woocommerce_get_script_data', 'glt_filter_woocommerce_scripts_data', 10, 2 ); add_filter('woocommerce_geolocate_ip', 'glt_woocommerce_geolocate_ip', 10, 4); } $google_language_translator = new google_language_translator(); function glt_update_option($old_value, $value, $option_name) { if(get_option('googlelanguagetranslator_seo_active') == '1' and get_option('googlelanguagetranslator_url_structure') == 'sub_directory') { // check if rewrite rules are in place $htaccess_file = get_home_path() . '.htaccess'; // todo: use insert_with_markers functions instead if(is_writeable($htaccess_file)) { $htaccess = file_get_contents($htaccess_file); if(strpos($htaccess, 'gtranslate.php') === false) { // no config rules $rewrite_rules = file_get_contents(dirname(__FILE__) . '/url_addon/rewrite.txt'); $rewrite_rules = str_replace('GLT_PLUGIN_PATH', str_replace(str_replace(array('https:', 'http:'), array(':', ':'), home_url()), '', str_replace(array('https:', 'http:'), array(':', ':'), plugins_url())) . '/google-language-translator', $rewrite_rules); $htaccess = $rewrite_rules . "\r\n\r\n" . $htaccess; if(!empty($htaccess)) { // going to update .htaccess file_put_contents($htaccess_file, $htaccess); add_settings_error( 'glt_settings_notices', esc_attr( 'settings_updated' ), '<p style="color:red;">' . __('.htaccess file updated', 'glt') . '</p>', 'updated' ); } } } else { $rewrite_rules = file_get_contents(dirname(__FILE__) . '/url_addon/rewrite.txt'); $rewrite_rules = str_replace('GLT_PLUGIN_PATH', str_replace(home_url(), '', plugins_url()) . '/google-language-translator', $rewrite_rules); add_settings_error( 'glt_settings_notices', esc_attr( 'settings_updated' ), '<p style="color:red;">' . __('Please add the following rules to the top of your .htaccess file', 'glt') . '</p><pre style="background-color:#eaeaea;">' . $rewrite_rules . '</pre>', 'error' ); } // update main_lang in config.php $config_file = dirname(__FILE__) . '/url_addon/config.php'; if(is_readable($config_file) and is_writable($config_file)) { $config = file_get_contents($config_file); if(strpos($config, 'main_lang') !== false) { $config = preg_replace('/\$main_lang = \'[a-z-]{2,5}\'/i', '$main_lang = \''.get_option('googlelanguagetranslator_language').'\'', $config); if(is_string($config) and strlen($config) > 10) file_put_contents($config_file, $config); } } else { add_settings_error( 'glt_settings_notices', esc_attr( 'settings_updated' ), '<p style="color:red;">' . __('Cannot update google-language-translator/url_addon/config.php file. Make sure to update it manually and set correct $main_lang.', 'glt') . '</p>', 'error' ); } } else { // todo: remove rewrite rules // do nothing } } add_action('update_option_googlelanguagetranslator_seo_active', 'glt_update_option', 10, 3); add_action('update_option_googlelanguagetranslator_url_structure', 'glt_update_option', 10, 3); add_action('update_option_googlelanguagetranslator_language', 'glt_update_option', 10, 3); // exclude javascript minification by cache plugins for free version if($glt_seo_active != '1') { function cache_exclude_js_glt($excluded_js) { if(is_array($excluded_js) or empty($excluded_js)) $excluded_js[] = 'translate.google.com/translate_a/element.js'; return $excluded_js; } // LiteSpeed Cache add_filter('litespeed_optimize_js_excludes', 'cache_exclude_js_glt'); // WP Rocket add_filter('rocket_exclude_js', 'cache_exclude_js_glt'); add_filter('rocket_minify_excluded_external_js', 'cache_exclude_js_glt'); }PK %>�[��7� css/glt-notices.cssnu �[��� .glt-admin-notice { background: #fff; border-color: #ED494D; border-top: 4px; display: block; min-height: 68px; padding: 10px 40px 10px 145px; position: relative; } .glt-admin-notice a { color: #ED494D; text-decoration:none; } .glt-notice-logo { clear: both; content: ""; display: block; background-image: url(../images/gt_logo.svg); background-size: 125px auto; background-repeat: no-repeat; background-position: 0 45%; width: 125px; position: absolute; top: 0; bottom: 0; left: 5px; } .glt-admin-notice > .dashicons { color: #424242; position: absolute; right: 20px; top: 40%; } .glt-notice-title { font-size: 24px; margin: 0; } .glt-notice-body { font-weight: normal; margin: 5px 0; } .glt-notice-body:after { clear: both; content: ""; display: block; } .glt-notice-body li { float: left; margin-right: 20px; } .glt-notice-body .dashicons { font-size: 17px; } .glt-red { color: #ED494D; }PK %>�[ r�jd d css/toolbar.cssnu �[��� #glt-toolbar { display:none; } #glt-translate-trigger { position:fixed; bottom:0px; top:auto; right: 20px; z-index:200002; padding:6px 20px 3px; font-size:16px; font-family:Arial; font-weight:700; color:#fff; text-shadow:0px -1px 0px rgba(0,0,0,0.25); text-decoration:none; text-align:center; box-shadow:0px 0px 9px rgba(0,0,0,0.3); -webkit-box-shadow:0px 0px 9px rgba(0,0,0,0.3); -moz-box-shadow:0px 0px 9px rgba(0,0,0,0.3); box-sizing:content-box !important; -webkit-box-sizing:content-box !important; -moz-box-sizing:content-box !important; background:linear-gradient(center top, #fbb450, #f89406); background: -webkit-gradient(linear, center top, center bottom, from(#fbb450), to(#f89406)); background: -webkit-linear-gradient(#fbb450, #f89406); background: -moz-linear-gradient(#fbb450, #f89406); background: -o-linear-gradient(#fbb450, #f89406); background: -ms-linear-gradient(#fbb450, #f89406); background: linear-gradient(#fbb450, #f89406); background: -o-linear-gradientcenter(center top, #fbb450, #f89406); } .tool-container { background-color: #d0cbcb; background: -webkit-gradient(linear, left top, left bottom, color-stop(14%, #d0cbcb), color-stop(100%, #e9e5e5)); background: -moz-linear-gradient(top, #d0cbcb 14%, #e9e5e5 100%); background: -ms-linear-gradient(top, #d0cbcb 14%,#e9e5e5 100%); background: linear-gradient(to bottom, #d0cbcb 14%,#e9e5e5 100%); background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIxNCUiIHN0b3AtY29sb3I9IiNkMGNiY2IiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZTllNWU1IiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L2xpbmVhckdyYWRpZW50PgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9InVybCgjZ3JhZC11Y2dnLWdlbmVyYXRlZCkiIC8+Cjwvc3ZnPg==); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d0cbcb', endColorstr='#e9e5e5',GradientType=0 ); background-size: 100% 100%; border-radius: 3px; box-shadow: 0px 0px 15px #000; position: absolute; } .tool-container.tool-top, .tool-container.tool-bottom { border-bottom: 1px solid #beb8b8 ; /* #B1A9A9 */ } .tool-items { height: 100%; } .tool-top .tool-item, .tool-bottom .tool-item { float: left; /*border-right: 1px solid #e2dfdf; border-left: 1px solid #9f9898;*/ } .tool-left .tool-item, .tool-right .tool-item { height: 34px; border-top: 1px solid #e2dfdf; border-bottom: 1px solid #9f9898; } .tool-item { height: 100%; display: block; width: 34px; text-align: center; } .tool-item:first-child { border-left: none; } .tool-left .tool-item:first-child, .tool-right .tool-item:first-child { border-top: 1px solid transparent; } .tool-item:last-child { border-right: none; border-bottom: none; } .tool-item.selected, .tool-item:hover { background: #a79f9f; background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #a79f9f), color-stop(93%, #e2dfdf)); background: -moz-linear-gradient(top, #a79f9f 0%, #e2dfdf 93%); background: -ms-linear-gradient(top, #a79f9f 0%, #e2dfdf 93%); background: linear-gradient(to bottom, #a79f9f 0%, #e2dfdf 93%); background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2E3OWY5ZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjkzJSIgc3RvcC1jb2xvcj0iI2UyZGZkZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSJ1cmwoI2dyYWQtdWNnZy1nZW5lcmF0ZWQpIiAvPgo8L3N2Zz4=); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a79f9f', endColorstr='#e2dfdf',GradientType=0 ); } .tool-top .tool-item:last-child:hover, .tool-bottom .tool-item:last-child:hover { border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .tool-top .tool-item:first-child:hover, .tool-bottom .tool-item:first-child:hover { border-top-left-radius: 4px; border-bottom-left-radius: 4px; } .tool-left .tool-item:last-child:hover, .tool-right .tool-item:last-child:hover { border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } .tool-left .tool-item:first-child:hover, .tool-right .tool-item:first-child:hover { border-top-right-radius: 4px; border-top-left-radius: 4px; } .tool-container .arrow { width:0; height:0; position: absolute; border-width:7px; border-style:solid; } .tool-container.tool-top .arrow { border-color: #e9e5e5 transparent transparent; left: 50%; bottom: -14px; margin-left: -7px; } .tool-container.tool-bottom .arrow { border-color: transparent transparent #e9e5e5; left: 50%; top: -14px; margin-left: -7px; } .tool-container.tool-left .arrow { border-color: transparent transparent transparent #E9E5E5; top: 50%; right: -14px; margin-top: -7px; } .tool-container.tool-right .arrow { border-color: transparent #E9E5E5 transparent transparent; top: 50%; left: -14px; margin-top: -7px; } .demo-link { color: #89CDE4; text-decoration: underline; cursor: pointer; margin-left: 30px; } .demo-link:hover { text-decoration: none; cursor: pointer; } PK %>�[ϰH�� � css/style.phpnu �[��� <?php $glt_css = get_option('googlelanguagetranslator_css'); $language_switcher_width = get_option('glt_language_switcher_width'); $language_switcher_text_color = get_option('glt_language_switcher_text_color'); $language_switcher_bg_color = get_option('glt_language_switcher_bg_color'); $glt_display = get_option('googlelanguagetranslator_display'); $floating_widget_position = get_option ('glt_floating_widget_position'); $floating_widget_text_color = get_option ('glt_floating_widget_text_color'); $floating_widget_bg_color = get_option('glt_floating_widget_bg_color'); echo '<style>'; echo $glt_css; if(get_option('googlelanguagetranslator_flags') == 1) { if($glt_display == 'Vertical') { echo 'p.hello{font-size:12px;color:darkgray;}'; echo '#google_language_translator,#flags{text-align:left;}'; } elseif($glt_display == 'Horizontal') { if(get_option('googlelanguagetranslator_flags_alignment') == 'flags_right') { echo '#google_language_translator{text-align:left!important;}'; echo 'select.goog-te-combo{float:right;}'; echo '.goog-te-gadget{padding-top:13px;}'; echo '.goog-te-gadget .goog-te-combo{margin-top:-7px!important;}'; } echo '.goog-te-gadget{margin-top:2px!important;}'; echo 'p.hello{font-size:12px;color:#666;}'; echo 'div.skiptranslate.goog-te-gadget{display:inline!important;}'; } elseif($glt_display == 'SIMPLE' and get_option('googlelanguagetranslator_flags_alignment') == 'flags_right') { echo '.goog-te-gadget{float:right;clear:right;}'; echo 'div.skiptranslate.goog-te-gadget{display:inline!important;}'; } if(get_option('googlelanguagetranslator_flags_alignment') == 'flags_right') { echo '#google_language_translator,#language{clear:both;width:160px;text-align:right;}'; echo '#language{float:right;}'; echo '#flags{text-align:right;width:165px;float:right;clear:right;}'; echo '#flags ul{float:right!important;}'; echo 'p.hello{text-align:right;float:right;clear:both;}'; echo '.glt-clear{height:0px;clear:both;margin:0px;padding:0px;}'; } if(get_option('googlelanguagetranslator_flags_alignment') == 'flags_left') { echo '#google_language_translator{clear:both;}'; echo '#flags{width:165px;}'; echo '#flags a{display:inline-block;margin-right:2px;}'; } elseif(get_option('googlelanguagetranslator_flags_alignment') == 'flags_right') { echo '#flags{width:165px;}'; echo '#flags a{display:inline-block;margin-left:2px;}'; } } if(get_option('googlelanguagetranslator_active') == 1) { if(get_option('googlelanguagetranslator_showbranding') == 'Yes') { echo '#google_language_translator{width:auto!important;}'; echo 'div.skiptranslate.goog-te-gadget{display:inline!important;}'; } elseif(get_option('googlelanguagetranslator_showbranding') == 'No' and $glt_display != 'SIMPLE') { echo '#google_language_translator a{display:none!important;}'; echo 'div.skiptranslate.goog-te-gadget{display:inline!important;}'; echo '.goog-te-gadget{color:transparent!important;}'; echo '.goog-te-gadget{font-size:0px!important;}'; echo '.goog-branding{display:none;}'; } echo '.goog-tooltip{display: none!important;}'; echo '.goog-tooltip:hover{display: none!important;}'; echo '.goog-text-highlight{background-color:transparent!important;border:none!important;box-shadow:none!important;}'; if(get_option('googlelanguagetranslator_translatebox') == 'no') echo '#google_language_translator{display:none;}'; } if(!empty($language_switcher_text_color)) echo '#google_language_translator select.goog-te-combo{color:'.$language_switcher_text_color.';}'; if(get_option('googlelanguagetranslator_flags') == 0 and get_option('googlelanguagetranslator_active') == 1) echo '#flags{display:none;}'; if(get_option('googlelanguagetranslator_active') == 1) { if(get_option('googlelanguagetranslator_toolbar') == 'Yes'){ echo '#google_language_translator{color:transparent;}'; } elseif(get_option('googlelanguagetranslator_toolbar') == 'No') { echo 'div.skiptranslate{display:none!important;}'; } echo 'body{top:0px!important;}'; echo '#goog-gt-{display:none!important;}'; echo 'font font{background-color:transparent!important;box-shadow:none!important;position:initial!important;}'; } if($floating_widget_position == 'bottom_left') { echo '#glt-translate-trigger{left:20px;right:auto;}'; } elseif($floating_widget_position == 'top_right') { echo '#glt-translate-trigger{bottom:auto;top:0;}'; echo '.tool-container.tool-top{top:50px!important;bottom:auto!important;}'; echo '.tool-container.tool-top .arrow{border-color:transparent transparent #d0cbcb; top:-14px;}'; } elseif ($floating_widget_position == 'top_left') { echo '#glt-translate-trigger{bottom:auto;top:0;left:20px;right:auto;}'; echo '.tool-container.tool-top{top:50px!important;bottom:auto!important;}'; echo '.tool-container.tool-top .arrow{border-color:transparent transparent #d0cbcb;top:-14px;}'; } elseif ($floating_widget_position == 'top_center') { echo '#glt-translate-trigger{bottom:auto;top:0;left:50%;margin-left:-63px;right:auto;}'; echo '.tool-container.tool-top{top:50px!important;bottom:auto!important;}'; echo '.tool-container.tool-top .arrow{border-color:transparent transparent #d0cbcb;top:-14px;}'; } elseif ($floating_widget_position == 'bottom_center') { echo '#glt-translate-trigger{left:50%; margin-left:-63px; right:auto;}'; } if(!empty($floating_widget_text_color)) echo '#glt-translate-trigger > span{color:'.$floating_widget_text_color.';}'; if(!empty($floating_widget_bg_color)) echo '#glt-translate-trigger{background:'.$floating_widget_bg_color.';}'; if(!empty($language_switcher_width) and isset($language_switcher_width) and $glt_display != 'Horizontal') echo '.goog-te-gadget .goog-te-combo{width:'.$language_switcher_width.';}'; if(!empty($language_switcher_bg_color) and isset($language_switcher_bg_color)) echo '#google_language_translator .goog-te-gadget .goog-te-combo{background:'.$language_switcher_bg_color.';border:0!important;}'; echo '</style>';PK %>�[�@c�� � css/style.cssnu �[��� #glt-settings.wrap { max-width:1300px; } #glt-settings.wrap:after { content:''; display:block; clear:both; } #glt-footer, #glt-footer #google_language_translator { display:none !important; } #glt-translate-trigger, #glt-translate-trigger span { cursor:pointer; } #glt-settings .glt-main-settings h3:before { content:'\f108'; } #glt-settings .glt-layout-settings h3:before { content:'\f116'; } #glt-settings .glt-floating-widget-settings h3:before { content:'\f134'; } #glt-settings .glt-behavior-settings h3:before { content:'\f185'; } #glt-settings .glt-usage-settings h3:before { content:'\f106'; } #glt-settings .glt-preview-settings h3:before { content:'\f115'; } #glt-settings .glt-flag-settings h3:before { content:'\f227'; } #glt-settings .glt-seo-settings h3:before { content:'\f11e'; } #glt-settings .glt-gtranslate-ad h3:before { content:'\f326'; } #glt-settings .glt-css-settings h3:before { content:'\f119'; } #glt-settings .glt-seo-settings {background-color: #FFC293;} #glt-settings .glt-main-settings h3:before, #glt-settings .glt-layout-settings h3:before, #glt-settings .glt-behavior-settings h3:before, #glt-settings .glt-floating-widget-settings h3:before, #glt-settings .glt-usage-settings h3:before, #glt-settings .glt-preview-settings h3:before, #glt-settings .glt-flag-settings h3:before, #glt-settings .glt-seo-settings h3:before, #glt-settings .glt-gtranslate-ad h3:before, #glt-settings .glt-css-settings h3:before { margin-right: 5px; display: inline-block; width: 20px; height: 20px; font-size: 20px; line-height: 1; font-family: dashicons; text-decoration: inherit; font-weight: 400; font-style: normal; vertical-align: top; text-align: center; -webkit-transition: color .1s ease-in 0; transition: color .1s ease-in 0; -webkit-font-smoothing: antialiased; } #glt-settings .button, #glt-settings .button-primary { text-shadow: none; border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; box-shadow: none; transition: .25s opacity ease-in-out; -webkit-transition: .25s opacity ease-in-out; -moz-transition: .25s opacity ease-in-out; } #glt-settings .button { background: #95a5a6; border:1px solid #95a5a6; color:#fff; } #glt-settings .button-primary { background:#ea4335; border:1px solid #ea4335; } #glt-settings .button:hover { opacity:0.8; } #glt-settings .button-primary:hover { opacity:0.8; background:#ea4335; border:1px solid #ea4335; } .tool-container { bottom:50px !important; top:auto !important; z-index:99999999 !important; } .tool-container .tool-items a { margin:4px; } .box-right { clear:right; } a.wp-studio-logo:focus, a.wp-helpdesk-logo:focus { box-shadow:none !important; -webkit-box-shadow:none !important; -moz-box-shadow:none !important; } .goog-te-gadget-simple { margin:4px 0; } #google_language_translator select.goog-te-combo { width:143px; background:#fff; box-shadow:none !important; -moz-box-shadow:none !important; -webkit-box-shadow:none !important; padding:3px !important; height:auto !important; border:1px solid lightgray !important; border-radius:0px !important; -webkit-border-radius:0px; -moz-border-radius:0px !important; -o-border-radius:0px !important; } #google_language_translator select.goog-te-combo:focus { outline:none !important; } #flags { overflow:hidden; } #flags ul { margin:0; padding:0; } #flags li { float:left !important; margin-bottom:0 !important; padding:0 !important; border:none !important; list-style:none !important; content:none !important; } #flags li:before { content:none !important; border:none !important; background:none !important; } #flags a, .tool-container .tool-items a { display:inline-block; cursor:pointer; } a.nturl.single-language { border:0; } a.single-language span.flag { display:inline-block; vertical-align:middle; margin-right:5px; } #flags.size24 a, .tool-container .tool-items a, a.single-language span.size24 { width: 24px !important; height: 18px !important; box-sizing:content-box; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; -o-box-sizing:content-box; -ms-box-sizing:content-box; } #flags.size22 a, a.single-language span.size22 { width: 22px !important; height: 17px !important; box-sizing:content-box; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; -o-box-sizing:content-box; -ms-box-sizing:content-box; } #flags.size20 a, a.single-language span.size20 { width: 20px !important; height: 14px !important; box-sizing:content-box; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; -o-box-sizing:content-box; -ms-box-sizing:content-box; } #flags.size18 a, a.single-language span.size18 { width: 18px !important; height: 14px !important; box-sizing:content-box; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; -o-box-sizing:content-box; -ms-box-sizing:content-box; } #flags.size16 a, #language span.size16, a.single-language span.size16 { width: 16px !important; height: 12px !important; box-sizing:content-box; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; -o-box-sizing:content-box; -ms-box-sizing:content-box; } .tool-container .tool-items a { display:inline-block; margin:3px 5px 3px; width:24px !important; height:18px !important; } .goog-te-gadget { color:#444; font-size:11px; font-family:"Arial",sans,sans-serif; } .goog-te-gadget img { vertical-align:middle; } select.goog-te-combo:focus { box-shadow:none !important; -moz-box-shadow:none !important; -webkit-box-shadow:none !important; } .metabox-holder { width:65%; float:left; } .metabox-holder h2 { margin-bottom:18px; } .submit { padding:0px; } .form-table th { width:50%; } td.advanced { padding-top:0px; padding-bottom:0px; } p.hello { font-size:12px; color:darkgray; } .flag{ padding:1px 0; } a.nturl { cursor:pointer; } .flag img, .alt_flag img{ border:0px !important; margin-top:2px !important; padding:0px !important; } .attribution { width:152px; line-height:1em; margin-top:4px; } span.goog-branding { font-size: 11px; font-family: arial; color: rgb(102, 102, 102); white-space: nowrap; padding-top: 4px; text-align: left; width: 150px; margin-top: 2px; left:170px; z-index: 9999; float: right; } .goog-logo-link, .goog-logo-link:link, .goog-logo-link:visited, .goog-logo-link:hover, .goog-logo-link:active { font-size: 12px; font-weight: bold; color: rgb(68, 68, 68); text-decoration: none; line-height:0.8em; } span.goog-branding img { float: left; margin:0px; width: 37px; } span.vertical-translator { position:auto; float:none !important; font-size: 11px; font-family: arial; color: rgb(102, 102, 102); white-space: nowrap; vertical-align: middle; padding-top: 4px; text-align: left; width: 150px; margin-top: 2px; right: -50px; z-index: 9999; } .tool-container .tool-items .flag img { width:24px !important; height:24px !important; margin-top:1px !important; } .tool-items .flag { padding:0px !important; } .tool-container { line-height:1; } #footer-instance { display:none !important; } code { border:1px solid lightgray; } /* Individual flag backgrounds (22px) */ #flags.size22 a[title="Afrikaans"], .tool-container .tool-items a[title="Afrikaans"], a.single-language[title="Afrikaans"] span.size22 { background: url('../images/flags22.png') -1px -3px no-repeat; } #flags.size22 a[title="Albanian"], .tool-container .tool-items a[title="Albanian"], a.single-language[title="Albanian"] span.size22 { background: url('../images/flags22.png') -30px -3px no-repeat; } #flags.size22 a[title="Amharic"], .tool-container .tool-items a[title="Amharic"], a.single-language[title="Amharic"] span.size22 { background: url('../images/flags22.png') -1px -467px no-repeat; } #flags.size22 a[title="Arabic"], .tool-container .tool-items a[title="Arabic"], a.single-language[title="Arabic"] span.size22 { background: url('../images/flags22.png') -59px -3px no-repeat; } #flags.size22 a[title="Armenian"], .tool-container .tool-items a[title="Armenian"], a.single-language[title="Armenian"] span.size22 { background: url('../images/flags22.png') -88px -3px no-repeat; } #flags.size22 a[title="Azerbaijani"], .tool-container .tool-items a[title="Azerbaijani"], a.single-language[title="Azerbaijani"] span.size22 { background: url('../images/flags22.png') -117px -3px no-repeat; } #flags.size22 a[title="Basque"], .tool-container .tool-items a[title="Basque"], a.single-language[title="Basque"] span.size22 { background: url('../images/flags22.png') -146px -3px no-repeat; } #flags.size22 a[title="Belarusian"], .tool-container .tool-items a[title="Belarusian"], a.single-language[title="Belarusian"] span.size22 { background: url('../images/flags22.png') -1px -32px no-repeat; } #flags.size22 a[title="Bengali"], .tool-container .tool-items a[title="Bengali"], a.single-language[title="Bengali"] span.size22 { background: url('../images/flags22.png') -30px -32px no-repeat; } #flags.size22 a[title="Bosnian"], .tool-container .tool-items a[title="Bosnian"], a.single-language[title="Bosnian"] span.size22 { background: url('../images/flags22.png') -59px -32px no-repeat; } #flags.size22 a[title="Bulgarian"], .tool-container .tool-items a[title="Bulgarian"], a.single-language[title="Bulgarian"] span.size22 { background: url('../images/flags22.png') -88px -32px no-repeat; } #flags.size22 a[title="Catalan"], .tool-container .tool-items a[title="Catalan"], a.single-language[title="Catalan"] span.size22 { background: url('../images/flags22.png') -117px -32px no-repeat; } #flags.size22 a[title="Cebuano"], .tool-container .tool-items a[title="Cebuano"], a.single-language[title="Cebuano"] span.size22 { background: url('../images/flags22.png') -146px -32px no-repeat; } #flags.size22 a[title="Chichewa"], .tool-container .tool-items a[title="Chichewa"], a.single-language[title="Chichewa"] span.size22 { background: url('../images/flags22.png') -88px -409px no-repeat; } #flags.size22 a[title="Chinese (Simplified)"], .tool-container .tool-items a[title="Chinese (Simplified)"], a.single-language[title="Chinese (Simplified)"] span.size22 { background: url('../images/flags22.png') -1px -61px no-repeat; } #flags.size22 a[title="Chinese (Traditional)"], .tool-container .tool-items a[title="Chinese (Traditional)"], a.single-language[title="Chinese (Traditional)"] span.size22 { background: url('../images/flags22.png') -30px -61px no-repeat; } #flags.size22 a[title="Corsican"], .tool-container .tool-items a[title="Corsican"], a.single-language[title="Corsican"] span.size22 { background: url('../images/flags22.png') -117px -90px no-repeat; } #flags.size22 a[title="Croatian"], .tool-container .tool-items a[title="Croatian"], a.single-language[title="Croatian"] span.size22 { background: url('../images/flags22.png') -59px -61px no-repeat; } #flags.size22 a[title="Czech"], .tool-container .tool-items a[title="Czech"], a.single-language[title="Afrikaans"] span.size22 { background: url('../images/flags22.png') -88px -61px no-repeat; } #flags.size22 a[title="Danish"], .tool-container .tool-items a[title="Danish"], a.single-language[title="Danish"] span.size22 { background: url('../images/flags22.png') -117px -61px no-repeat; } #flags.size22 a[title="Dutch"], .tool-container .tool-items a[title="Dutch"], a.single-language[title="Dutch"] span.size22 { background: url('../images/flags22.png') -146px -61px no-repeat; } #flags.size22 a[title="English"], .tool-container .tool-items a[title="English"], a.single-language[title="English"] span.size22 { background: url('../images/flags22.png') -88px -351px no-repeat; } #flags.size22 a.united-states[title="English"], a.single-language.united-states[title="English"] span.size22 { background: url('../images/flags22.png') -117px -351px no-repeat; } #flags.size22 a.canada[title="English"], a.single-language.canada[title="English"] span.size22 { background: url('../images/flags22.png') -88px -438px no-repeat; } #flags.size22 a[title="Esperanto"], .tool-container .tool-items a[title="Esperanto"], a.single-language[title="Esperanto"] span.size22 { background: url('../images/flags22.png') -1px -90px no-repeat; } #flags.size22 a[title="Estonian"], .tool-container .tool-items a[title="Estonian"], a.single-language[title="Estonian"] span.size22 { background: url('../images/flags22.png') -30px -90px no-repeat; } #flags.size22 a[title="Filipino"], .tool-container .tool-items a[title="Filipino"], a.single-language[title="Filipino"] span.size22 { background: url('../images/flags22.png') -59px -90px no-repeat; } #flags.size22 a[title="Finnish"], .tool-container .tool-items a[title="Finnish"], a.single-language[title="Finnish"] span.size22 { background: url('../images/flags22.png') -88px -90px no-repeat; } #flags.size22 a[title="French"], .tool-container .tool-items a[title="French"], a.single-language[title="French"] span.size22 { background: url('../images/flags22.png') -117px -90px no-repeat; } #flags.size22 a[title="Frisian"], .tool-container .tool-items a[title="Frisian"], a.single-language[title="Frisian"] span.size22 { background: url('../images/flags22.png') -146px -61px no-repeat; } #flags.size22 a[title="Galician"], .tool-container .tool-items a[title="Galician"], a.single-language[title="Galician"] span.size22 { background: url('../images/flags22.png') -146px -90px no-repeat; } #flags.size22 a[title="Georgian"], .tool-container .tool-items a[title="Georgian"], a.single-language[title="Georgian"] span.size22 { background: url('../images/flags22.png') -1px -119px no-repeat; } #flags.size22 a[title="German"], .tool-container .tool-items a[title="German"], a.single-language[title="German"] span.size22 { background: url('../images/flags22.png') -30px -119px no-repeat; } #flags.size22 a[title="Greek"], .tool-container .tool-items a[title="Greek"], a.single-language[title="Greek"] span.size22 { background: url('../images/flags22.png') -59px -119px no-repeat; } #flags.size22 a[title="Gujarati"], .tool-container .tool-items a[title="Gujarati"], a.single-language[title="Gujarati"] span.size22 { background: url('../images/flags22.png') -88px -119px no-repeat; } #flags.size22 a[title="Haitian"], .tool-container .tool-items a[title="Haitian"], a.single-language[title="Haitian"] span.size22 { background: url('../images/flags22.png') -117px -119px no-repeat; } #flags.size22 a[title="Hausa"], .tool-container .tool-items a[title="Hausa"], a.single-language[title="Hausa"] span.size22 { background: url('../images/flags22.png') -146px -119px no-repeat; } #flags.size22 a[title="Hawaiian"], .tool-container .tool-items a[title="Hawaiian"], a.single-language[title="Hawaiian"] span.size22 { background: url('../images/flags22.png') -88px -467px no-repeat; } #flags.size22 a[title="Hebrew"], .tool-container .tool-items a[title="Hebrew"] { background: url('../images/flags22.png') -1px -148px no-repeat; } #flags.size22 a[title="Hindi"], .tool-container .tool-items a[title="Hindi"], a.single-language[title="Hindi"] span.size22 { background: url('../images/flags22.png') -30px -148px no-repeat; } #flags.size22 a[title="Hmong"], .tool-container .tool-items a[title="Hmong"], a.single-language[title="Hmong"] span.size22 { background: url('../images/flags22.png') -59px -148px no-repeat; } #flags.size22 a[title="Hungarian"], .tool-container .tool-items a[title="Hungarian"], a.single-language[title="Hungarian"] span.size22 { background: url('../images/flags22.png') -88px -148px no-repeat; } #flags.size22 a[title="Icelandic"], .tool-container .tool-items a[title="Icelandic"], a.single-language[title="Icelandic"] span.size22 { background: url('../images/flags22.png') -117px -148px no-repeat; } #flags.size22 a[title="Igbo"], .tool-container .tool-items a[title="Igbo"], a.single-language[title="Igbo"] span.size22 { background: url('../images/flags22.png') -146px -148px no-repeat; } #flags.size22 a[title="Indonesian"], .tool-container .tool-items a[title="Indonesian"], a.single-language[title="Indonesian"] span.size22 { background: url('../images/flags22.png') -1px -177px no-repeat; } #flags.size22 a[title="Irish"], .tool-container .tool-items a[title="Irish"], a.single-language[title="Irish"] span.size22 { background: url('../images/flags22.png') -30px -177px no-repeat; } #flags.size22 a[title="Italian"], .tool-container .tool-items a[title="Italian"], a.single-language[title="Italian"] span.size22 { background: url('../images/flags22.png') -59px -177px no-repeat; } #flags.size22 a[title="Japanese"], .tool-container .tool-items a[title="Japanese"], a.single-language[title="Japanese"] span.size22 { background: url('../images/flags22.png') -88px -177px no-repeat; } #flags.size22 a[title="Javanese"], .tool-container .tool-items a[title="Javanese"], a.single-language[title="Javanese"] span.size22 { background: url('../images/flags22.png') -117px -177px no-repeat; } #flags.size22 a[title="Kannada"], .tool-container .tool-items a[title="Kannada"], a.single-language[title="Kannada"] span.size22 { background: url('../images/flags22.png') -146px -177px no-repeat; } #flags.size22 a[title="Kazakh"], .tool-container .tool-items a[title="Kazakh"], a.single-language[title="Kazakh"] span.size22 { background: url('../images/flags22.png') -1px -409px no-repeat; } #flags.size22 a[title="Khmer"], .tool-container .tool-items a[title="Khmer"], a.single-language[title="Khmer"] span.size22 { background: url('../images/flags22.png') -1px -206px no-repeat; } #flags.size22 a[title="Korean"], .tool-container .tool-items a[title="Korean"], a.single-language[title="Korean"] span.size22 { background: url('../images/flags22.png') -30px -206px no-repeat; } #flags.size22 a[title="Kurdish"], .tool-container .tool-items a[title="Kurdish"], a.single-language[title="Kurdish"] span.size22 { background: url('../images/flags22.png') -117px -467px no-repeat; } #flags.size22 a[title="Kyrgyz"], .tool-container .tool-items a[title="Kyrgyz"], a.single-language[title="Kyrgyz"] span.size22 { background: url('../images/flags22.png') -146px -467px no-repeat; } #flags.size22 a[title="Lao"], .tool-container .tool-items a[title="Lao"], a.single-language[title="Lao"] span.size22 { background: url('../images/flags22.png') -59px -206px no-repeat; } #flags.size22 a[title="Latin"], .tool-container .tool-items a[title="Latin"], a.single-language[title="Latin"] span.size22 { background: url('../images/flags22.png') -88px -206px no-repeat; } #flags.size22 a[title="Latvian"], .tool-container .tool-items a[title="Latvian"], a.single-language[title="Latvian"] span.size22 { background: url('../images/flags22.png') -117px -206px no-repeat; } #flags.size22 a[title="Lithuanian"], .tool-container .tool-items a[title="Lithuanian"], a.single-language[title="Lithuanian"] span.size22 { background: url('../images/flags22.png') -146px -206px no-repeat; } #flags.size22 a[title="Luxembourgish"], .tool-container .tool-items a[title="Luxembourgish"], a.single-language[title="Luxembourgish"] span.size22 { background: url('../images/flags22.png') -1px -496px no-repeat; } #flags.size22 a[title="Macedonian"], .tool-container .tool-items a[title="Macedonian"], a.single-language[title="Macedonian"] span.size22 { background: url('../images/flags22.png') -1px -235px no-repeat; } #flags.size22 a[title="Malagasy"], .tool-container .tool-items a[title="Malagasy"], a.single-language[title="Malagasy"] span.size22 { background: url('../images/flags22.png') -59px -409px no-repeat; } #flags.size22 a[title="Malay"], .tool-container .tool-items a[title="Malay"], a.single-language[title="Malay"] span.size22 { background: url('../images/flags22.png') -30px -235px no-repeat; } #flags.size22 a[title="Malayalam"], .tool-container .tool-items a[title="Malayalam"], a.single-language[title="Malayalam"] span.size22 { background: url('../images/flags22.png') -117px -409px no-repeat; } #flags.size22 a[title="Maltese"], .tool-container .tool-items a[title="Maltese"], a.single-language[title="Maltese"] span.size22 { background: url('../images/flags22.png') -59px -235px no-repeat; } #flags.size22 a[title="Maori"], .tool-container .tool-items a[title="Maori"], a.single-language[title="Maori"] span.size22 { background: url('../images/flags22.png') -88px -235px no-repeat; } #flags.size22 a[title="Marathi"], .tool-container .tool-items a[title="Marathi"], a.single-language[title="Marathi"] span.size22 { background: url('../images/flags22.png') -117px -235px no-repeat; } #flags.size22 a[title="Mongolian"], .tool-container .tool-items a[title="Mongolian"], a.single-language[title="Mongolian"] span.size22 { background: url('../images/flags22.png') -146px -235px no-repeat; } #flags.size22 a[title="Myanmar (Burmese)"], .tool-container .tool-items a[title="Myanmar (Burmese)"], a.single-language[title="Myanmar (Buremese)"] span.size22 { background: url('../images/flags22.png') -146px -409px no-repeat; } #flags.size22 a[title="Nepali"], .tool-container .tool-items a[title="Nepali"], a.single-language[title="Nepali"] span.size22 { background: url('../images/flags22.png') -1px -264px no-repeat; } #flags.size22 a[title="Norwegian"], .tool-container .tool-items a[title="Norwegian"], a.single-language[title="Norwegian"] span.size22 { background: url('../images/flags22.png') -30px -264px no-repeat; } #flags.size22 a[title="Pashto"], .tool-container .tool-items a[title="Pashto"], a.single-language[title="Pashto"] span.size22 { background: url('../images/flags22.png') -30px -496px no-repeat; } #flags.size22 a[title="Persian"], .tool-container .tool-items a[title="Persian"], a.single-language[title="Persian"] span.size22 { background: url('../images/flags22.png') -59px -264px no-repeat; } #flags.size22 a[title="Polish"], .tool-container .tool-items a[title="Polish"], a.single-language[title="Polish"] span.size22 { background: url('../images/flags22.png') -88px -264px no-repeat; } #flags.size22 a[title="Portuguese"], .tool-container .tool-items a[title="Portuguese"], a.single-language[title="Portuguese"] span.size22 { background: url('../images/flags22.png') -117px -264px no-repeat; } #flags.size22 a.brazil[title="Portuguese"], a.single-language.brazil[title="Portuguese"] span.size22 { background: url('../images/flags22.png') -146px -438px no-repeat; } #flags.size22 a[title="Punjabi"], .tool-container .tool-items a[title="Punjabi"], a.single-language[title="Punjabi"] span.size22 { background: url('../images/flags22.png') -146px -264px no-repeat; } #flags.size22 a[title="Romanian"], .tool-container .tool-items a[title="Romanian"], a.single-language[title="Romanian"] span.size22 { background: url('../images/flags22.png') -1px -293px no-repeat; } #flags.size22 a[title="Russian"], .tool-container .tool-items a[title="Russian"], a.single-language[title="Russian"] span.size22 { background: url('../images/flags22.png') -30px -293px no-repeat; } #flags.size22 a[title="Samoan"], .tool-container .tool-items a[title="Samoan"], a.single-language[title="Samoan"] span.size22 { background: url('../images/flags22.png') -30px -467px no-repeat; } #flags.size22 a[title="Scots Gaelic"], .tool-container .tool-items a[title="Scots Gaelic"], a.single-language[title="Scots Gaelic"] span.size22 { background: url('../images/flags22.png') -59px -467px no-repeat; } #flags.size22 a[title="Serbian"], .tool-container .tool-items a[title="Serbian"], a.single-language[title="Serbian"] span.size22 { background: url('../images/flags22.png') -59px -293px no-repeat; } #flags.size22 a[title="Sesotho"], .tool-container .tool-items a[title="Sesotho"], a.single-language[title="Sesotho"] span.size22 { background: url('../images/flags22.png') -30px -409px no-repeat; } #flags.size22 a[title="Shona"], .tool-container .tool-items a[title="Shona"], a.single-language[title="Shona"] span.size22 { background: url('../images/flags22.png') -59px -496px no-repeat; } #flags.size22 a[title="Sindhi"], .tool-container .tool-items a[title="Sindhi"], a.single-language[title="Sindhi"] span.size22 { background: url('../images/flags22.png') -146px -351px no-repeat; } #flags.size22 a[title="Sinhala"], .tool-container .tool-items a[title="Sinhala"], a.single-language[title="Sinhala"] span.size22 { background: url('../images/flags22.png') -1px -438px no-repeat; } #flags.size22 a[title="Slovak"], .tool-container .tool-items a[title="Slovak"], a.single-language[title="Slovak"] span.size22 { background: url('../images/flags22.png') -88px -293px no-repeat; } #flags.size22 a[title="Slovenian"], .tool-container .tool-items a[title="Slovenian"], a.single-language[title="Slovenian"] span.size22 { background: url('../images/flags22.png') -117px -293px no-repeat; } #flags.size22 a[title="Somali"], .tool-container .tool-items a[title="Somali"], a.single-language[title="Somali"] span.size22 { background: url('../images/flags22.png') -146px -293px no-repeat; } #flags.size22 a[title="Spanish"], .tool-container .tool-items a[title="Spanish"], a.single-language[title="Spanish"] span.size22 { background: url('../images/flags22.png') -1px -322px no-repeat; } #flags.size22 a.mexico[title="Spanish"], a.single-language.mexico[title="Spanish"] span.size22 { background: url('../images/flags22.png') -117px -438px no-repeat; } #flags.size22 a[title="Sundanese"], .tool-container .tool-items a[title="Sundanese"], a.single-language[title="Sundanse"] span.size22 { background: url('../images/flags22.png') -146px -380px no-repeat; } #flags.size22 a[title="Swahili"], .tool-container .tool-items a[title="Swahili"], a.single-language[title="Swahili"] span.size22 { background: url('../images/flags22.png') -30px -322px no-repeat; } #flags.size22 a[title="Swedish"], .tool-container .tool-items a[title="Swedish"], a.single-language[title="Swedish"] span.size22 { background: url('../images/flags22.png') -59px -322px no-repeat; } #flags.size22 a[title="Tajik"], .tool-container .tool-items a[title="Tajik"], a.single-language[title="Tajik"] span.size22 { background: url('../images/flags22.png') -30px -438px no-repeat; } #flags.size22 a[title="Tamil"], .tool-container .tool-items a[title="Tamil"], a.single-language[title="Tamil"] span.size22 { background: url('../images/flags22.png') -88px -322px no-repeat; } #flags.size22 a[title="Telugu"], .tool-container .tool-items a[title="Telugu"], a.single-language[title="Telugu"] span.size22 { background: url('../images/flags22.png') -117px -322px no-repeat; } #flags.size22 a[title="Thai"], .tool-container .tool-items a[title="Thai"], a.single-language[title="Thai"] span.size22 { background: url('../images/flags22.png') -146px -322px no-repeat; } #flags.size22 a[title="Turkish"], .tool-container .tool-items a[title="Turkish"], a.single-language[title="Turkish"] span.size22 { background: url('../images/flags22.png') -30px -351px no-repeat; } #flags.size22 a[title="Ukrainian"], .tool-container .tool-items a[title="Ukrainian"], a.single-language[title="Ukrainian"] span.size22 { background: url('../images/flags22.png') -59px -351px no-repeat; } #flags.size22 a[title="Uzbek"], .tool-container .tool-items a[title="Uzbek"], a.single-language[title="Uzbek"] span.size22 { background: url('../images/flags22.png') -59px -438px no-repeat; } #flags.size22 a[title="Urdu"], .tool-container .tool-items a[title="Urdu"], a.single-language[title="Urdu"] span.size22 { background: url('../images/flags22.png') -146px -351px no-repeat; } #flags.size22 a[title="Vietnamese"], .tool-container .tool-items a[title="Vietnamese"], a.single-language[title="Vietnamese"] span.size22 { background: url('../images/flags22.png') -1px -380px no-repeat; } #flags.size22 a[title="Welsh"], .tool-container .tool-items a[title="Welsh"], a.single-language[title="Welsh"] span.size22 { background: url('../images/flags22.png') -30px -380px no-repeat; } #flags.size22 a[title="Xhosa"], .tool-container .tool-items a[title="Xhosa"], a.single-language[title="Xhosa"] span.size22 { background: url('../images/flags22.png') -1px -3px no-repeat; } #flags.size22 a[title="Yiddish"], .tool-container .tool-items a[title="Yiddish"], a.single-language[title="Yiddish"] span.size22 { background: url('../images/flags22.png') -59px -380px no-repeat; } #flags.size22 a[title="Yoruba"], .tool-container .tool-items a[title="Yoruba"], a.single-language[title="Yoruba"] span.size22 { background: url('../images/flags22.png') -88px -380px no-repeat; } #flags.size22 a[title="Zulu"], .tool-container .tool-items a[title="Zulu"], a.single-language[title="Zulu"] span.size22 { background: url('../images/flags22.png') -117px -380px no-repeat; } /* Individual flag backgrounds (20px) */ #flags.size20 a[title="Afrikaans"], .tool-container .tool-items a[title="Afrikaans"], a.single-language[title="Afrikaans"] span.size20 { background: url('../images/flags20.png') -2px -4px no-repeat; } #flags.size20 a[title="Albanian"], .tool-container .tool-items a[title="Albanian"], a.single-language[title="Albanian"] span.size20 { background: url('../images/flags20.png') -31px -4px no-repeat; } #flags.size20 a[title="Amharic"], .tool-container .tool-items a[title="Amharic"], a.single-language[title="Amharic"] span.size20 { background: url('../images/flags20.png') -2px -468px no-repeat; } #flags.size20 a[title="Arabic"], .tool-container .tool-items a[title="Arabic"], a.single-language[title="Arabic"] span.size20 { background: url('../images/flags20.png') -60px -4px no-repeat; } #flags.size20 a[title="Armenian"], .tool-container .tool-items a[title="Armenian"], a.single-language[title="Armenian"] span.size20 { background: url('../images/flags20.png') -89px -4px no-repeat; } #flags.size20 a[title="Azerbaijani"], .tool-container .tool-items a[title="Azerbaijani"], a.single-language[title="Azerbaijani"] span.size20 { background: url('../images/flags20.png') -118px -4px no-repeat; } #flags.size20 a[title="Basque"], .tool-container .tool-items a[title="Basque"], a.single-language[title="Basque"] span.size20 { background: url('../images/flags20.png') -147px -4px no-repeat; } #flags.size20 a[title="Belarusian"], .tool-container .tool-items a[title="Belarusian"], a.single-language[title="Belarusian"] span.size20 { background: url('../images/flags20.png') -2px -33px no-repeat; } #flags.size20 a[title="Bengali"], .tool-container .tool-items a[title="Bengali"], a.single-language[title="Bengali"] span.size20 { background: url('../images/flags20.png') -31px -33px no-repeat; } #flags.size20 a[title="Bosnian"], .tool-container .tool-items a[title="Bosnian"], a.single-language[title="Bosnian"] span.size20 { background: url('../images/flags20.png') -60px -33px no-repeat; } #flags.size20 a[title="Bulgarian"], .tool-container .tool-items a[title="Bulgarian"], a.single-language[title="Bulgarian"] span.size20 { background: url('../images/flags20.png') -89px -33px no-repeat; } #flags.size20 a[title="Catalan"], .tool-container .tool-items a[title="Catalan"], a.single-language[title="Catalan"] span.size20 { background: url('../images/flags20.png') -118px -33px no-repeat; } #flags.size20 a[title="Cebuano"], .tool-container .tool-items a[title="Cebuano"], a.single-language[title="Cebuano"] span.size20 { background: url('../images/flags20.png') -147px -33px no-repeat; } #flags.size20 a[title="Chichewa"], .tool-container .tool-items a[title="Chichewa"], a.single-language[title="Chichewa"] span.size20 { background: url('../images/flags20.png') -89px -410px no-repeat; } #flags.size20 a[title="Chinese (Simplified)"], .tool-container .tool-items a[title="Chinese (Simplified)"], a.single-language[title="Chinese (Simplified)"] span.size20 { background: url('../images/flags20.png') -2px -62px no-repeat; } #flags.size20 a[title="Chinese (Traditional)"], .tool-container .tool-items a[title="Chinese (Traditional)"], a.single-language[title="Chinese (Traditional)"] span.size20 { background: url('../images/flags20.png') -31px -62px no-repeat; } #flags.size20 a[title="Corsican"], .tool-container .tool-items a[title="Corsican"], a.single-language[title="Corsican"] span.size20 { background: url('../images/flags20.png') -118px -91px no-repeat; } #flags.size20 a[title="Croatian"], .tool-container .tool-items a[title="Croatian"], a.single-language[title="Croatian"] span.size20 { background: url('../images/flags20.png') -60px -62px no-repeat; } #flags.size20 a[title="Czech"], .tool-container .tool-items a[title="Czech"], a.single-language[title="Czech"] span.size20 { background: url('../images/flags20.png') -89px -62px no-repeat; } #flags.size20 a[title="Danish"], .tool-container .tool-items a[title="Danish"], a.single-language[title="Danish"] span.size20 { background: url('../images/flags20.png') -118px -62px no-repeat; } #flags.size20 a[title="Dutch"], .tool-container .tool-items a[title="Dutch"], a.single-language[title="Dutch"] span.size20 { background: url('../images/flags20.png') -147px -62px no-repeat; } #flags.size20 a[title="English"], .tool-container .tool-items a[title="English"], a.single-language[title="English"] span.size20 { background: url('../images/flags20.png') -89px -352px no-repeat; } #flags.size20 a.united-states[title="English"], a.single-language.united-states[title="English"] span.size20 { background: url('../images/flags20.png') -118px -352px no-repeat; } #flags.size20 a.canada[title="English"], a.single-language.canada[title="English"] span.size20 { background: url('../images/flags20.png') -89px -439px no-repeat; } #flags.size20 a[title="Esperanto"], .tool-container .tool-items a[title="Esperanto"], a.single-language[title="Esperanto"] span.size20 { background: url('../images/flags20.png') -2px -91px no-repeat; } #flags.size20 a[title="Estonian"], .tool-container .tool-items a[title="Estonian"], a.single-language[title="Estonian"] span.size20 { background: url('../images/flags20.png') -31px -91px no-repeat; } #flags.size20 a[title="Filipino"], .tool-container .tool-items a[title="Filipino"], a.single-language[title="Filipino"] span.size20 { background: url('../images/flags20.png') -60px -91px no-repeat; } #flags.size20 a[title="Finnish"], .tool-container .tool-items a[title="Finnish"], a.single-language[title="Finnish"] span.size20 { background: url('../images/flags20.png') -89px -91px no-repeat; } #flags.size20 a[title="French"], .tool-container .tool-items a[title="French"], a.single-language[title="French"] span.size20 { background: url('../images/flags20.png') -118px -91px no-repeat; } #flags.size20 a[title="Frisian"], .tool-container .tool-items a[title="Frisian"], a.single-language[title="Frisian"] span.size20 { background: url('../images/flags20.png') -147px -62px no-repeat; } #flags.size20 a[title="Galician"], .tool-container .tool-items a[title="Galician"], a.single-language[title="Galician"] span.size20 { background: url('../images/flags20.png') -147px -91px no-repeat; } #flags.size20 a[title="Georgian"], .tool-container .tool-items a[title="Georgian"], a.single-language[title="Georgian"] span.size20 { background: url('../images/flags20.png') -2px -120px no-repeat; } #flags.size20 a[title="German"], .tool-container .tool-items a[title="German"], a.single-language[title="German"] span.size20 { background: url('../images/flags20.png') -31px -120px no-repeat; } #flags.size20 a[title="Greek"], .tool-container .tool-items a[title="Greek"], a.single-language[title="Greek"] span.size20 { background: url('../images/flags20.png') -60px -120px no-repeat; } #flags.size20 a[title="Gujarati"], .tool-container .tool-items a[title="Gujarati"], a.single-language[title="Gujarati"] span.size20 { background: url('../images/flags20.png') -89px -120px no-repeat; } #flags.size20 a[title="Haitian"], .tool-container .tool-items a[title="Haitian"], a.single-language[title="Haitian"] span.size20 { background: url('../images/flags20.png') -118px -120px no-repeat; } #flags.size20 a[title="Hausa"], .tool-container .tool-items a[title="Hausa"], a.single-language[title="Hausa"] span.size20 { background: url('../images/flags20.png') -147px -120px no-repeat; } #flags.size20 a[title="Hawaiian"], .tool-container .tool-items a[title="Hawaiian"], a.single-language[title="Hawaiian"] span.size20 { background: url('../images/flags20.png') -89px -468px no-repeat; } #flags.size20 a[title="Hebrew"], .tool-container .tool-items a[title="Hebrew"], a.single-language[title="Hebrew"] span.size20 { background: url('../images/flags20.png') -2px -149px no-repeat; } #flags.size20 a[title="Hindi"], .tool-container .tool-items a[title="Hindi"], a.single-language[title="Hindi"] span.size20 { background: url('../images/flags20.png') -31px -149px no-repeat; } #flags.size20 a[title="Hmong"], .tool-container .tool-items a[title="Hmong"], a.single-language[title="Hmong"] span.size20 { background: url('../images/flags20.png') -60px -149px no-repeat; } #flags.size20 a[title="Hungarian"], .tool-container .tool-items a[title="Hungarian"], a.single-language[title="Hungarian"] span.size20 { background: url('../images/flags20.png') -89px -149px no-repeat; } #flags.size20 a[title="Icelandic"], .tool-container .tool-items a[title="Icelandic"], a.single-language[title="Icelandic"] span.size20 { background: url('../images/flags20.png') -118px -149px no-repeat; } #flags.size20 a[title="Igbo"], .tool-container .tool-items a[title="Igbo"], a.single-language[title="Igbo"] span.size20 { background: url('../images/flags20.png') -147px -149px no-repeat; } #flags.size20 a[title="Indonesian"], .tool-container .tool-items a[title="Indonesian"], a.single-language[title="Indonesian"] span.size20 { background: url('../images/flags20.png') -2px -178px no-repeat; } #flags.size20 a[title="Irish"], .tool-container .tool-items a[title="Irish"], a.single-language[title="Irish"] span.size20 { background: url('../images/flags20.png') -31px -178px no-repeat; } #flags.size20 a[title="Italian"], .tool-container .tool-items a[title="Italian"], a.single-language[title="Italian"] span.size20 { background: url('../images/flags20.png') -60px -178px no-repeat; } #flags.size20 a[title="Japanese"], .tool-container .tool-items a[title="Japanese"], a.single-language[title="Japanese"] span.size20 { background: url('../images/flags20.png') -89px -178px no-repeat; } #flags.size20 a[title="Javanese"], .tool-container .tool-items a[title="Javanese"], a.single-language[title="Javanese"] span.size20 { background: url('../images/flags20.png') -118px -178px no-repeat; } #flags.size20 a[title="Kannada"], .tool-container .tool-items a[title="Kannada"], a.single-language[title="Kannada"] span.size20 { background: url('../images/flags20.png') -147px -178px no-repeat; } #flags.size20 a[title="Kazakh"], .tool-container .tool-items a[title="Kazakh"], a.single-language[title="Kazakh"] span.size20 { background: url('../images/flags20.png') -2px -410px no-repeat; } #flags.size20 a[title="Khmer"], .tool-container .tool-items a[title="Khmer"], a.single-language[title="Khmer"] span.size20 { background: url('../images/flags20.png') -2px -207px no-repeat; } #flags.size20 a[title="Korean"], .tool-container .tool-items a[title="Korean"], a.single-language[title="Korean"] span.size20 { background: url('../images/flags20.png') -31px -207px no-repeat; } #flags.size20 a[title="Kurdish"], .tool-container .tool-items a[title="Kurdish"], a.single-language[title="Kurdish"] span.size20 { background: url('../images/flags20.png') -118px -468px no-repeat; } #flags.size20 a[title="Kyrgyz"], .tool-container .tool-items a[title="Kyrgyz"], a.single-language[title="Kyrgyz"] span.size20 { background: url('../images/flags20.png') -147px -468px no-repeat; } #flags.size20 a[title="Lao"], .tool-container .tool-items a[title="Lao"], a.single-language[title="Lao"] span.size20 { background: url('../images/flags20.png') -60px -207px no-repeat; } #flags.size20 a[title="Latin"], .tool-container .tool-items a[title="Latin"], a.single-language[title="Latin"] span.size20 { background: url('../images/flags20.png') -89px -207px no-repeat; } #flags.size20 a[title="Latvian"], .tool-container .tool-items a[title="Latvian"], a.single-language[title="Latvian"] span.size20 { background: url('../images/flags20.png') -118px -207px no-repeat; } #flags.size20 a[title="Lithuanian"], .tool-container .tool-items a[title="Lithuanian"], a.single-language[title="Lithuanian"] span.size20 { background: url('../images/flags20.png') -147px -207px no-repeat; } #flags.size20 a[title="Luxembourgish"], .tool-container .tool-items a[title="Luxembourgish"], a.single-language[title="Luxembourgish"] span.size20 { background: url('../images/flags20.png') -2px -497px no-repeat; } #flags.size20 a[title="Macedonian"], .tool-container .tool-items a[title="Macedonian"], a.single-language[title="Macedonian"] span.size20 { background: url('../images/flags20.png') -2px -236px no-repeat; } #flags.size20 a[title="Malagasy"], .tool-container .tool-items a[title="Malagasy"], a.single-language[title="Malagasy"] span.size20 { background: url('../images/flags20.png') -60px -410px no-repeat; } #flags.size20 a[title="Malay"], .tool-container .tool-items a[title="Malay"], a.single-language[title="Malay"] span.size20 { background: url('../images/flags20.png') -31px -236px no-repeat; } #flags.size20 a[title="Maltese"], .tool-container .tool-items a[title="Maltese"], a.single-language[title="Maltese"] span.size20 { background: url('../images/flags20.png') -60px -236px no-repeat; } #flags.size20 a[title="Malayalam"], .tool-container .tool-items a[title="Malayalam"], a.single-language[title="Malayalam"] span.size20 { background: url('../images/flags20.png') -118px -410px no-repeat; } #flags.size20 a[title="Maori"], .tool-container .tool-items a[title="Maori"], a.single-language[title="Maori"] span.size20 { background: url('../images/flags20.png') -89px -236px no-repeat; } #flags.size20 a[title="Marathi"], .tool-container .tool-items a[title="Marathi"], a.single-language[title="Marathi"] span.size20 { background: url('../images/flags20.png') -118px -236px no-repeat; } #flags.size20 a[title="Mongolian"], .tool-container .tool-items a[title="Mongolian"], a.single-language[title="Mongolian"] span.size20 { background: url('../images/flags20.png') -147px -236px no-repeat; } #flags.size20 a[title="Myanmar (Burmese)"], .tool-container .tool-items a[title="Myanmar (Burmese)"], a.single-language[title="Myanmar (Burmese)"] span.size20 { background: url('../images/flags20.png') -147px -410px no-repeat; } #flags.size20 a[title="Nepali"], .tool-container .tool-items a[title="Nepali"], a.single-language[title="Nepali"] span.size20 { background: url('../images/flags20.png') -2px -265px no-repeat; } #flags.size20 a[title="Norwegian"], .tool-container .tool-items a[title="Norwegian"], a.single-language[title="Norwegian"] span.size20 { background: url('../images/flags20.png') -31px -265px no-repeat; } #flags.size20 a[title="Pashto"], .tool-container .tool-items a[title="Pashto"], a.single-language[title="Pashto"] span.size20 { background: url('../images/flags20.png') -31px -497px no-repeat; } #flags.size20 a[title="Persian"], .tool-container .tool-items a[title="Persian"], a.single-language[title="Persian"] span.size20 { background: url('../images/flags20.png') -60px -265px no-repeat; } #flags.size20 a[title="Polish"], .tool-container .tool-items a[title="Polish"], a.single-language[title="Polish"] span.size20 { background: url('../images/flags20.png') -89px -265px no-repeat; } #flags.size20 a[title="Portuguese"], .tool-container .tool-items a[title="Portuguese"], a.single-language[title="Portuguese"] span.size20 { background: url('../images/flags20.png') -118px -265px no-repeat; } #flags.size20 a.brazil[title="Portuguese"], a.single-language.brazil[title="Portuguese"] span.size20 { background: url('../images/flags20.png') -147px -439px no-repeat; } #flags.size20 a[title="Punjabi"], .tool-container .tool-items a[title="Punjabi"], a.single-language[title="Punjabi"] span.size20 { background: url('../images/flags20.png') -147px -265px no-repeat; } #flags.size20 a[title="Romanian"], .tool-container .tool-items a[title="Romanian"], a.single-language[title="Romanian"] span.size20 { background: url('../images/flags20.png') -2px -294px no-repeat; } #flags.size20 a[title="Russian"], .tool-container .tool-items a[title="Russian"], a.single-language[title="Russian"] span.size20 { background: url('../images/flags20.png') -31px -294px no-repeat; } #flags.size20 a[title="Samoan"], .tool-container .tool-items a[title="Samoan"], a.single-language[title="Samoan"] span.size20 { background: url('../images/flags20.png') -31px -468px no-repeat; } #flags.size20 a[title="Scots Gaelic"], .tool-container .tool-items a[title="Scots Gaelic"], a.single-language[title="Scots Gaelic"] span.size20 { background: url('../images/flags20.png') -60px -468px no-repeat; } #flags.size20 a[title="Serbian"], .tool-container .tool-items a[title="Serbian"], a.single-language[title="Serbian"] span.size20 { background: url('../images/flags20.png') -60px -294px no-repeat; } #flags.size20 a[title="Sesotho"], .tool-container .tool-items a[title="Sesotho"], a.single-language[title="Sesotho"] span.size20 { background: url('../images/flags20.png') -31px -410px no-repeat; } #flags.size20 a[title="Shona"], .tool-container .tool-items a[title="Shona"], a.single-language[title="Shona"] span.size20 { background: url('../images/flags20.png') -60px -497px no-repeat; } #flags.size20 a[title="Sindhi"], .tool-container .tool-items a[title="Sindhi"], a.single-language[title="Sindhi"] span.size20 { background: url('../images/flags20.png') -147px -352px no-repeat; } #flags.size20 a[title="Sinhala"], .tool-container .tool-items a[title="Sinhala"], a.single-language[title="Sinhala"] span.size20 { background: url('../images/flags20.png') -2px -439px no-repeat; } #flags.size20 a[title="Slovak"], .tool-container .tool-items a[title="Slovak"], a.single-language[title="Slovak"] span.size20 { background: url('../images/flags20.png') -89px -294px no-repeat; } #flags.size20 a[title="Slovenian"], .tool-container .tool-items a[title="Slovenian"], a.single-language[title="Slovenian"] span.size20 { background: url('../images/flags20.png') -118px -294px no-repeat; } #flags.size20 a[title="Somali"], .tool-container .tool-items a[title="Somali"], a.single-language[title="Somali"] span.size20 { background: url('../images/flags20.png') -147px -294px no-repeat; } #flags.size20 a[title="Spanish"], .tool-container .tool-items a[title="Spanish"], a.single-language[title="Spanish"] span.size20 { background: url('../images/flags20.png') -2px -323px no-repeat; } #flags.size20 a.mexico[title="Spanish"], a.single-language.mexico[title="Spanish"] span.size20 { background: url('../images/flags20.png') -118px -439px no-repeat; } #flags.size20 a[title="Sundanese"], .tool-container .tool-items a[title="Sundanese"], a.single-language[title="Sundanese"] span.size20 { background: url('../images/flags20.png') -147px -381px no-repeat; } #flags.size20 a[title="Swahili"], .tool-container .tool-items a[title="Swahili"], a.single-language[title="Swahili"] span.size20 { background: url('../images/flags20.png') -31px -323px no-repeat; } #flags.size20 a[title="Swedish"], .tool-container .tool-items a[title="Swedish"], a.single-language[title="Swedish"] span.size20 { background: url('../images/flags20.png') -60px -323px no-repeat; } #flags.size20 a[title="Tajik"], .tool-container .tool-items a[title="Tajik"], a.single-language[title="Tajik"] span.size20 { background: url('../images/flags20.png') -31px -439px no-repeat; } #flags.size20 a[title="Tamil"], .tool-container .tool-items a[title="Tamil"], a.single-language[title="Tamil"] span.size20 { background: url('../images/flags20.png') -89px -323px no-repeat; } #flags.size20 a[title="Telugu"], .tool-container .tool-items a[title="Telugu"], a.single-language[title="Telugu"] span.size20 { background: url('../images/flags20.png') -118px -323px no-repeat; } #flags.size20 a[title="Thai"], .tool-container .tool-items a[title="Thai"], a.single-language[title="Thai"] span.size20 { background: url('../images/flags20.png') -147px -323px no-repeat; } #flags.size20 a[title="Turkish"], .tool-container .tool-items a[title="Turkish"], a.single-language[title="Turkish"] span.size20 { background: url('../images/flags20.png') -31px -352px no-repeat; } #flags.size20 a[title="Ukrainian"], .tool-container .tool-items a[title="Ukrainian"], a.single-language[title="Ukrainian"] span.size20 { background: url('../images/flags20.png') -60px -352px no-repeat; } #flags.size20 a[title="Urdu"], .tool-container .tool-items a[title="Urdu"], a.single-language[title="Urdu"] span.size20 { background: url('../images/flags20.png') -147px -352px no-repeat; } #flags.size20 a[title="Uzbek"], .tool-container .tool-items a[title="Uzbek"], a.single-language[title="Uzbek"] span.size20 { background: url('../images/flags20.png') -60px -439px no-repeat; } #flags.size20 a[title="Vietnamese"], .tool-container .tool-items a[title="Vietnamese"], a.single-language[title="Vietnamese"] span.size20 { background: url('../images/flags20.png') -2px -381px no-repeat; } #flags.size20 a[title="Welsh"], .tool-container .tool-items a[title="Welsh"], a.single-language[title="Welsh"] span.size20 { background: url('../images/flags20.png') -31px -381px no-repeat; } #flags.size20 a[title="Xhosa"], .tool-container .tool-items a[title="Xhosa"], a.single-language[title="Xhosa"] span.size20 { background: url('../images/flags20.png') -2px -4px no-repeat; } #flags.size20 a[title="Yiddish"], .tool-container .tool-items a[title="Yiddish"], a.single-language[title="Yiddish"] span.size20 { background: url('../images/flags20.png') -60px -381px no-repeat; } #flags.size20 a[title="Yoruba"], .tool-container .tool-items a[title="Yoruba"], a.single-language[title="Yoruba"] span.size20 { background: url('../images/flags20.png') -89px -381px no-repeat; } #flags.size20 a[title="Zulu"], .tool-container .tool-items a[title="Zulu"], a.single-language[title="Zulu"] span.size20 { background: url('../images/flags20.png') -118px -381px no-repeat; } /* Individual flag backgrounds (18px) */ #flags.size18 a[title="Afrikaans"], .tool-container .tool-items a[title="Afrikaans"], a.single-language[title="Afrikaans"] span.size18 { background: url('../images/flags18.png') -2px -4px no-repeat; } #flags.size18 a[title="Albanian"], .tool-container .tool-items a[title="Albanian"], a.single-language[title="Albanian"] span.size18 { background: url('../images/flags18.png') -31px -4px no-repeat; } #flags.size18 a[title="Amharic"], .tool-container .tool-items a[title="Amharic"], a.single-language[title="Amharic"] span.size18 { background: url('../images/flags18.png') -2px -468px no-repeat; } #flags.size18 a[title="Arabic"], .tool-container .tool-items a[title="Arabic"], a.single-language[title="Arabic"] span.size18 { background: url('../images/flags18.png') -60px -4px no-repeat; } #flags.size18 a[title="Armenian"], .tool-container .tool-items a[title="Armenian"], a.single-language[title="Armenian"] span.size18 { background: url('../images/flags18.png') -89px -4px no-repeat; } #flags.size18 a[title="Azerbaijani"], .tool-container .tool-items a[title="Azerbaijani"], a.single-language[title="Azerbaijani"] span.size18 { background: url('../images/flags18.png') -118px -4px no-repeat; } #flags.size18 a[title="Basque"], .tool-container .tool-items a[title="Basque"], a.single-language[title="Basque"] span.size18 { background: url('../images/flags18.png') -147px -4px no-repeat; } #flags.size18 a[title="Belarusian"], .tool-container .tool-items a[title="Belarusian"], a.single-language[title="Belarusian"] span.size18 { background: url('../images/flags18.png') -2px -33px no-repeat; } #flags.size18 a[title="Bengali"], .tool-container .tool-items a[title="Bengali"], a.single-language[title="Bengali"] span.size18 { background: url('../images/flags18.png') -31px -33px no-repeat; } #flags.size18 a[title="Bosnian"], .tool-container .tool-items a[title="Bosnian"], a.single-language[title="Bosnian"] span.size18 { background: url('../images/flags18.png') -60px -33px no-repeat; } #flags.size18 a[title="Bulgarian"], .tool-container .tool-items a[title="Bulgarian"], a.single-language[title="Bulgarian"] span.size18 { background: url('../images/flags18.png') -89px -33px no-repeat; } #flags.size18 a[title="Catalan"], .tool-container .tool-items a[title="Catalan"], a.single-language[title="Catalan"] span.size18 { background: url('../images/flags18.png') -118px -33px no-repeat; } #flags.size18 a[title="Cebuano"], .tool-container .tool-items a[title="Cebuano"], a.single-language[title="Cebuano"] span.size18 { background: url('../images/flags18.png') -147px -33px no-repeat; } #flags.size18 a[title="Chichewa"], .tool-container .tool-items a[title="Chichewa"], a.single-language[title="Chichewa"] span.size18 { background: url('../images/flags18.png') -89px -410px no-repeat; } #flags.size18 a[title="Chinese (Simplified)"], .tool-container .tool-items a[title="Chinese (Simplified)"], a.single-language[title="Chinese (Simplified)"] span.size18 { background: url('../images/flags18.png') -2px -62px no-repeat; } #flags.size18 a[title="Chinese (Traditional)"], .tool-container .tool-items a[title="Chinese (Traditional)"], a.single-language[title="Chinese (Traditional)"] span.size18 { background: url('../images/flags18.png') -31px -62px no-repeat; } #flags.size18 a[title="Corsican"], .tool-container .tool-items a[title="Corsican"], a.single-language[title="Corsican"] span.size18 { background: url('../images/flags18.png') -118px -91px no-repeat; } #flags.size18 a[title="Croatian"], .tool-container .tool-items a[title="Croatian"], a.single-language[title="Croatian"] span.size18 { background: url('../images/flags18.png') -60px -62px no-repeat; } #flags.size18 a[title="Czech"], .tool-container .tool-items a[title="Czech"], a.single-language[title="Czech"] span.size18 { background: url('../images/flags18.png') -89px -62px no-repeat; } #flags.size18 a[title="Danish"], .tool-container .tool-items a[title="Danish"], a.single-language[title="Danish"] span.size18 { background: url('../images/flags18.png') -118px -62px no-repeat; } #flags.size18 a[title="Dutch"], .tool-container .tool-items a[title="Dutch"], a.single-language[title="Dutch"] span.size18 { background: url('../images/flags18.png') -147px -62px no-repeat; } #flags.size18 a[title="English"], .tool-container .tool-items a[title="English"], a.single-language[title="English"] span.size18 { background: url('../images/flags18.png') -89px -352px no-repeat; } #flags.size18 a.united-states[title="English"], a.single-language.united-states[title="English"] span.size18 { background: url('../images/flags18.png') -118px -352px no-repeat; } #flags.size18 a.canada[title="English"] a.single-language.canada[title="English"] span.size18 { background: url('../images/flags18.png') -89px -439px no-repeat; } #flags.size18 a[title="Esperanto"], .tool-container .tool-items a[title="Esperanto"], a.single-language[title="Esperanto"] span.size18 { background: url('../images/flags18.png') -2px -91px no-repeat; } #flags.size18 a[title="Estonian"], .tool-container .tool-items a[title="Estonian"], a.single-language[title="Estonian"] span.size18 { background: url('../images/flags18.png') -31px -91px no-repeat; } #flags.size18 a[title="Filipino"], .tool-container .tool-items a[title="Filipino"], a.single-language[title="Filipino"] span.size18 { background: url('../images/flags18.png') -60px -91px no-repeat; } #flags.size18 a[title="Finnish"], .tool-container .tool-items a[title="Finnish"], a.single-language[title="Finnish"] span.size18 { background: url('../images/flags18.png') -89px -91px no-repeat; } #flags.size18 a[title="French"], .tool-container .tool-items a[title="French"], a.single-language[title="French"] span.size18 { background: url('../images/flags18.png') -118px -91px no-repeat; } #flags.size18 a[title="Frisian"], .tool-container .tool-items a[title="Frisian"], a.single-language[title="Frisian"] span.size18 { background: url('../images/flags18.png') -147px -62px no-repeat; } #flags.size18 a[title="Galician"], .tool-container .tool-items a[title="Galician"], a.single-language[title="Galician"] span.size18 { background: url('../images/flags18.png') -147px -91px no-repeat; } #flags.size18 a[title="Georgian"], .tool-container .tool-items a[title="Georgian"], a.single-language[title="Georgian"] span.size18 { background: url('../images/flags18.png') -2px -120px no-repeat; } #flags.size18 a[title="German"], .tool-container .tool-items a[title="German"], a.single-language[title="German"] span.size18 { background: url('../images/flags18.png') -31px -120px no-repeat; } #flags.size18 a[title="Greek"], .tool-container .tool-items a[title="Greek"], a.single-language[title="Greek"] span.size18 { background: url('../images/flags18.png') -60px -120px no-repeat; } #flags.size18 a[title="Gujarati"], .tool-container .tool-items a[title="Gujarati"], a.single-language[title="Gujarati"] span.size18 { background: url('../images/flags18.png') -89px -120px no-repeat; } #flags.size18 a[title="Haitian"], .tool-container .tool-items a[title="Haitian"], a.single-language[title="Haitian"] span.size18 { background: url('../images/flags18.png') -118px -120px no-repeat; } #flags.size18 a[title="Hawaiian"], .tool-container .tool-items a[title="Hawaiian"], a.single-language[title="Hawaiian"] span.size18 { background: url('../images/flags18.png') -89px -468px no-repeat; } #flags.size18 a[title="Hausa"], .tool-container .tool-items a[title="Hausa"], a.single-language[title="Hausa"] span.size18 { background: url('../images/flags18.png') -147px -120px no-repeat; } #flags.size18 a[title="Hebrew"], .tool-container .tool-items a[title="Hebrew"], a.single-language[title="Hebrew"] span.size18 { background: url('../images/flags18.png') -2px -149px no-repeat; } #flags.size18 a[title="Hindi"], .tool-container .tool-items a[title="Hindi"], a.single-language[title="Hindi"] span.size18 { background: url('../images/flags18.png') -31px -149px no-repeat; } #flags.size18 a[title="Hmong"], .tool-container .tool-items a[title="Hmong"], a.single-language[title="Hmong"] span.size18 { background: url('../images/flags18.png') -60px -149px no-repeat; } #flags.size18 a[title="Hungarian"], .tool-container .tool-items a[title="Hungarian"], a.single-language[title="Hungarian"] span.size18 { background: url('../images/flags18.png') -89px -149px no-repeat; } #flags.size18 a[title="Icelandic"], .tool-container .tool-items a[title="Icelandic"], a.single-language[title="Icelandic"] span.size18 { background: url('../images/flags18.png') -118px -149px no-repeat; } #flags.size18 a[title="Igbo"], .tool-container .tool-items a[title="Igbo"], a.single-language[title="Igbo"] span.size18 { background: url('../images/flags18.png') -147px -149px no-repeat; } #flags.size18 a[title="Indonesian"], .tool-container .tool-items a[title="Indonesian"], a.single-language[title="Indonesian"] span.size18 { background: url('../images/flags18.png') -2px -178px no-repeat; } #flags.size18 a[title="Irish"], .tool-container .tool-items a[title="Irish"], a.single-language[title="Irish"] span.size18 { background: url('../images/flags18.png') -31px -178px no-repeat; } #flags.size18 a[title="Italian"], .tool-container .tool-items a[title="Italian"], a.single-language[title="Italian"] span.size18 { background: url('../images/flags18.png') -60px -178px no-repeat; } #flags.size18 a[title="Japanese"], .tool-container .tool-items a[title="Japanese"], a.single-language[title="Japanese"] span.size18 { background: url('../images/flags18.png') -89px -178px no-repeat; } #flags.size18 a[title="Javanese"], .tool-container .tool-items a[title="Javanese"], a.single-language[title="Javanese"] span.size18 { background: url('../images/flags18.png') -118px -178px no-repeat; } #flags.size18 a[title="Kannada"], .tool-container .tool-items a[title="Kannada"], a.single-language[title="Kannada"] span.size18 { background: url('../images/flags18.png') -147px -178px no-repeat; } #flags.size18 a[title="Kazakh"], .tool-container .tool-items a[title="Kazakh"], a.single-language[title="Kazakh"] span.size18 { background: url('../images/flags18.png') -2px -410px no-repeat; } #flags.size18 a[title="Khmer"], .tool-container .tool-items a[title="Khmer"], a.single-language[title="Khmer"] span.size18 { background: url('../images/flags18.png') -2px -207px no-repeat; } #flags.size18 a[title="Korean"], .tool-container .tool-items a[title="Korean"], a.single-language[title="Korean"] span.size18 { background: url('../images/flags18.png') -31px -207px no-repeat; } #flags.size18 a[title="Kurdish"], .tool-container .tool-items a[title="Kurdish"], a.single-language[title="Kurdish"] span.size18 { background: url('../images/flags18.png') -118px -468px no-repeat; } #flags.size18 a[title="Kyrgyz"], .tool-container .tool-items a[title="Kyrgyz"], a.single-language[title="Kyrgyz"] span.size18 { background: url('../images/flags18.png') -147px -468px no-repeat; } #flags.size18 a[title="Lao"], .tool-container .tool-items a[title="Lao"], a.single-language[title="Lao"] span.size18 { background: url('../images/flags18.png') -60px -207px no-repeat; } #flags.size18 a[title="Latin"], .tool-container .tool-items a[title="Latin"], a.single-language[title="Latin"] span.size18 { background: url('../images/flags18.png') -89px -207px no-repeat; } #flags.size18 a[title="Latvian"], .tool-container .tool-items a[title="Latvian"], a.single-language[title="Latvian"] span.size18 { background: url('../images/flags18.png') -118px -207px no-repeat; } #flags.size18 a[title="Lithuanian"], .tool-container .tool-items a[title="Lithuanian"], a.single-language[title="Lithuanian"] span.size18 { background: url('../images/flags18.png') -147px -207px no-repeat; } #flags.size18 a[title="Luxembourgish"], .tool-container .tool-items a[title="Luxembourgish"], a.single-language[title="Luxembourgish"] span.size18 { background: url('../images/flags18.png') -2px -496px no-repeat; } #flags.size18 a[title="Macedonian"], .tool-container .tool-items a[title="Macedonian"], a.single-language[title="Macedonian"] span.size18 { background: url('../images/flags18.png') -2px -236px no-repeat; } #flags.size18 a[title="Malagasy"], .tool-container .tool-items a[title="Malagasy"], a.single-language[title="Malagasy"] span.size18 { background: url('../images/flags18.png') -60px -410px no-repeat; } #flags.size18 a[title="Malay"], .tool-container .tool-items a[title="Malay"], a.single-language[title="Malay"] span.size18 { background: url('../images/flags18.png') -31px -236px no-repeat; } #flags.size18 a[title="Malayalam"], .tool-container .tool-items a[title="Malayalam"], a.single-language[title="Malayalam"] span.size18 { background: url('../images/flags18.png') -118px -410px no-repeat; } #flags.size18 a[title="Maltese"], .tool-container .tool-items a[title="Maltese"], a.single-language[title="Maltese"] span.size18 { background: url('../images/flags18.png') -60px -236px no-repeat; } #flags.size18 a[title="Maori"], .tool-container .tool-items a[title="Maori"], a.single-language[title="Maori"] span.size18 { background: url('../images/flags18.png') -89px -236px no-repeat; } #flags.size18 a[title="Marathi"], .tool-container .tool-items a[title="Marathi"], a.single-language[title="Marathi"] span.size18 { background: url('../images/flags18.png') -118px -236px no-repeat; } #flags.size18 a[title="Mongolian"], .tool-container .tool-items a[title="Mongolian"], a.single-language[title="Mongolian"] span.size18 { background: url('../images/flags18.png') -147px -236px no-repeat; } #flags.size18 a[title="Myanmar (Burmese)"], .tool-container .tool-items a[title="Myanmar (Burmese)"], a.single-language[title="Myanmar (Burmese)"] span.size18 { background: url('../images/flags18.png') -147px -410px no-repeat; } #flags.size18 a[title="Nepali"], .tool-container .tool-items a[title="Nepali"], a.single-language[title="Nepali"] span.size18 { background: url('../images/flags18.png') -2px -265px no-repeat; } #flags.size18 a[title="Norwegian"], .tool-container .tool-items a[title="Norwegian"], a.single-language[title="Norwegian"] span.size18 { background: url('../images/flags18.png') -31px -265px no-repeat; } #flags.size18 a[title="Pashto"], .tool-container .tool-items a[title="Pashto"], a.single-language[title="Pashto"] span.size18 { background: url('../images/flags18.png') -31px -496px no-repeat; } #flags.size18 a[title="Persian"], .tool-container .tool-items a[title="Persian"], a.single-language[title="Persian"] span.size18 { background: url('../images/flags18.png') -60px -265px no-repeat; } #flags.size18 a[title="Polish"], .tool-container .tool-items a[title="Polish"], a.single-language[title="Polish"] span.size18 { background: url('../images/flags18.png') -89px -265px no-repeat; } #flags.size18 a[title="Portuguese"], .tool-container .tool-items a[title="Portuguese"], a.single-language[title="Portuguese"] span.size18 { background: url('../images/flags18.png') -118px -265px no-repeat; } #flags.size18 a.brazil[title="Portuguese"], a.single-language.brazil[title="Portuguese"] span.size18 { background: url('../images/flags18.png') -147px -439px no-repeat; } #flags.size18 a[title="Punjabi"], .tool-container .tool-items a[title="Punjabi"], a.single-language[title="Punjabi"] span.size18 { background: url('../images/flags18.png') -147px -265px no-repeat; } #flags.size18 a[title="Romanian"], .tool-container .tool-items a[title="Romanian"], a.single-language[title="Romanian"] span.size18 { background: url('../images/flags18.png') -2px -294px no-repeat; } #flags.size18 a[title="Russian"], .tool-container .tool-items a[title="Russian"], a.single-language[title="Russian"] span.size18 { background: url('../images/flags18.png') -31px -294px no-repeat; } #flags.size18 a[title="Samoan"], .tool-container .tool-items a[title="Samoan"], a.single-language[title="Samoan"] span.size18 { background: url('../images/flags18.png') -31px -468px no-repeat; } #flags.size18 a[title="Scots Gaelic"], .tool-container .tool-items a[title="Scots Gaelic"], a.single-language[title="Scots Gaelic"] span.size18 { background: url('../images/flags18.png') -60px -468px no-repeat; } #flags.size18 a[title="Serbian"], .tool-container .tool-items a[title="Serbian"], a.single-language[title="Serbian"] span.size18 { background: url('../images/flags18.png') -60px -294px no-repeat; } #flags.size18 a[title="Sesotho"], .tool-container .tool-items a[title="Sesotho"], a.single-language[title="Sesotho"] span.size18 { background: url('../images/flags18.png') -31px -410px no-repeat; } #flags.size18 a[title="Shona"], .tool-container .tool-items a[title="Shona"], a.single-language[title="Shona"] span.size18 { background: url('../images/flags18.png') -60px -496px no-repeat; } #flags.size18 a[title="Sindhi"], .tool-container .tool-items a[title="Sindhi"], a.single-language[title="Sindhi"] span.size18 { background: url('../images/flags18.png') -147px -352px no-repeat; } #flags.size18 a[title="Sinhala"], .tool-container .tool-items a[title="Sinhala"], a.single-language[title="Sinhala"] span.size18 { background: url('../images/flags18.png') -2px -439px no-repeat; } #flags.size18 a[title="Slovak"], .tool-container .tool-items a[title="Slovak"], a.single-language[title="Slovak"] span.size18 { background: url('../images/flags18.png') -89px -294px no-repeat; } #flags.size18 a[title="Slovenian"], .tool-container .tool-items a[title="Slovenian"], a.single-language[title="Slovenian"] span.size18 { background: url('../images/flags18.png') -118px -294px no-repeat; } #flags.size18 a[title="Somali"], .tool-container .tool-items a[title="Somali"], a.single-language[title="Somali"] span.size18 { background: url('../images/flags18.png') -147px -294px no-repeat; } #flags.size18 a[title="Spanish"], .tool-container .tool-items a[title="Spanish"], a.single-language[title="Spanish"] span.size18 { background: url('../images/flags18.png') -2px -323px no-repeat; } #flags.size18 a.mexico[title="Spanish"], a.single-language.mexico[title="Spanish"] span.size18 { background: url('../images/flags18.png') -118px -439px no-repeat; } #flags.size18 a[title="Sundanese"], .tool-container .tool-items a[title="Sundanese"], a.single-language[title="Sundanese"] span.size18 { background: url('../images/flags18.png') -147px -381px no-repeat; } #flags.size18 a[title="Swahili"], .tool-container .tool-items a[title="Swahili"], a.single-language[title="Swahili"] span.size18 { background: url('../images/flags18.png') -31px -323px no-repeat; } #flags.size18 a[title="Swedish"], .tool-container .tool-items a[title="Swedish"], a.single-language[title="Swedish"] span.size18 { background: url('../images/flags18.png') -60px -323px no-repeat; } #flags.size18 a[title="Tajik"], .tool-container .tool-items a[title="Tajik"], a.single-language[title="Tajik"] span.size18 { background: url('../images/flags18.png') -31px -439px no-repeat; } #flags.size18 a[title="Tamil"], .tool-container .tool-items a[title="Tamil"], a.single-language[title="Tamil"] span.size18 { background: url('../images/flags18.png') -89px -323px no-repeat; } #flags.size18 a[title="Telugu"], .tool-container .tool-items a[title="Telugu"], a.single-language[title="Telugu"] span.size18 { background: url('../images/flags18.png') -118px -323px no-repeat; } #flags.size18 a[title="Thai"], .tool-container .tool-items a[title="Thai"], a.single-language[title="Thai"] span.size18 { background: url('../images/flags18.png') -147px -323px no-repeat; } #flags.size18 a[title="Turkish"], .tool-container .tool-items a[title="Turkish"], a.single-language[title="Turkish"] span.size18 { background: url('../images/flags18.png') -31px -352px no-repeat; } #flags.size18 a[title="Ukrainian"], .tool-container .tool-items a[title="Ukrainian"], a.single-language[title="Ukrainian"] span.size18 { background: url('../images/flags18.png') -60px -352px no-repeat; } #flags.size18 a[title="Urdu"], .tool-container .tool-items a[title="Urdu"], a.single-language[title="Urdu"] span.size18 { background: url('../images/flags18.png') -147px -352px no-repeat; } #flags.size18 a[title="Uzbek"], .tool-container .tool-items a[title="Uzbek"], a.single-language[title="Uzbek"] span.size18 { background: url('../images/flags18.png') -60px -439px no-repeat; } #flags.size18 a[title="Vietnamese"], .tool-container .tool-items a[title="Vietnamese"], a.single-language[title="Vietnamese"] span.size18 { background: url('../images/flags18.png') -2px -381px no-repeat; } #flags.size18 a[title="Welsh"], .tool-container .tool-items a[title="Welsh"], a.single-language[title="Welsh"] span.size18 { background: url('../images/flags18.png') -31px -381px no-repeat; } #flags.size18 a[title="Xhosa"], .tool-container .tool-items a[title="Xhosa"], a.single-language[title="Xhosa"] span.size18 { background: url('../images/flags18.png') -2px -4px no-repeat; } #flags.size18 a[title="Yiddish"], .tool-container .tool-items a[title="Yiddish"], a.single-language[title="Yiddish"] span.size18 { background: url('../images/flags18.png') -60px -381px no-repeat; } #flags.size18 a[title="Yoruba"], .tool-container .tool-items a[title="Yoruba"], a.single-language[title="Yoruba"] span.size18 { background: url('../images/flags18.png') -89px -381px no-repeat; } #flags.size18 a[title="Zulu"], .tool-container .tool-items a[title="Zulu"], a.single-language[title="Zulu"] span.size18 { background: url('../images/flags18.png') -118px -381px no-repeat; } /* Individual flag backgrounds (16px) */ #flags.size16 a[title="Afrikaans"], #language .switcher .selected a[title="Afrikaans"] span, #language .switcher .option a[title="Afrikaans"] span, .tool-container .tool-items a[title="Afrikaans"], a.single-language[title="Afrikaans"] span.size16 { background: url('../images/flags16.png') -4px -5px no-repeat; } #flags.size16 a[title="Albanian"], #language .switcher .selected a[title="Albanian"] span, #language .switcher .option a[title="Albanian"] span, .tool-container .tool-items a[title="Albanian"], a.single-language[title="Albanian"] span.size16 { background: url('../images/flags16.png') -33px -5px no-repeat; } #flags.size16 a[title="Amharic"], #language .switcher .selected a[title="Amharic"] span, #language .switcher .option a[title="Amharic"] span, .tool-container .tool-items a[title="Amharic"], a.single-language[title="Amharic"] span.size16 { background: url('../images/flags16.png') -4px -469px no-repeat; } #flags.size16 a[title="Arabic"], #language .switcher .selected a[title="Arabic"] span, #language .switcher .option a[title="Arabic"] span, .tool-container .tool-items a[title="Arabic"], a.single-language[title="Arabic"] span.size16 { background: url('../images/flags16.png') -62px -5px no-repeat; } #flags.size16 a[title="Armenian"], #language .switcher .selected a[title="Armenian"] span, #language .switcher .option a[title="Armenian"] span, .tool-container .tool-items a[title="Armenian"], a.single-language[title="Armenian"] span.size16 { background: url('../images/flags16.png') -91px -5px no-repeat; } #flags.size16 a[title="Azerbaijani"], #language .switcher .selected a[title="Azerbaijani"] span, #language .switcher .option a[title="Azerbaijani"] span, .tool-container .tool-items a[title="Azerbaijani"], a.single-language[title="Azerbaijani"] span.size16 { background: url('../images/flags16.png') -120px -5px no-repeat; } #flags.size16 a[title="Basque"], #language .switcher .selected a[title="Basque"] span, #language .switcher .option a[title="Basque"] span, .tool-container .tool-items a[title="Basque"], a.single-language[title="Basque"] span.size16 { background: url('../images/flags16.png') -149px -5px no-repeat; } #flags.size16 a[title="Belarusian"], #language .switcher .selected a[title="Belarusian"] span, #language .switcher .option a[title="Belarusian"] span, .tool-container .tool-items a[title="Belarusian"], a.single-language[title="Belarusian"] span.size16 { background: url('../images/flags16.png') -4px -34px no-repeat; } #flags.size16 a[title="Bengali"], #language .switcher .selected a[title="Bengali"] span, #language .switcher .option a[title="Bengali"] span, .tool-container .tool-items a[title="Bengali"], a.single-language[title="Bengali"] span.size16 { background: url('../images/flags16.png') -33px -34px no-repeat; } #flags.size16 a[title="Bosnian"], #language .switcher .selected a[title="Bosnian"] span, #language .switcher .option a[title="Bosnian"] span, .tool-container .tool-items a[title="Bosnian"], a.single-language[title="Bosnian"] span.size16 { background: url('../images/flags16.png') -62px -34px no-repeat; } #flags.size16 a[title="Bulgarian"], #language .switcher .selected a[title="Bulgarian"] span, #language .switcher .option a[title="Bulgarian"] span, .tool-container .tool-items a[title="Bulgarian"], a.single-language[title="Bulgarian"] span.size16 { background: url('../images/flags16.png') -91px -34px no-repeat; } #flags.size16 a[title="Catalan"], #language .switcher .selected a[title="Catalan"] span, #language .switcher .option a[title="Catalan"] span, .tool-container .tool-items a[title="Catalan"], a.single-language[title="Catalan"] span.size16 { background: url('../images/flags16.png') -120px -34px no-repeat; } #flags.size16 a[title="Cebuano"], #language .switcher .selected a[title="Cebuano"] span, #language .switcher .option a[title="Cebuano"] span, .tool-container .tool-items a[title="Cebuano"], a.single-language[title="Cebuano"] span.size16 { background: url('../images/flags16.png') -149px -34px no-repeat; } #flags.size16 a[title="Chichewa"], #language .switcher .selected a[title="Chichewa"] span, #language .switcher .option a[title="Chichewa"] span, .tool-container .tool-items a[title="Chichewa"], a.single-language[title="Chichewa"] span.size16 { background: url('../images/flags16.png') -91px -411px no-repeat; } #flags.size16 a[title="Chinese (Simplified)"], #language .switcher .selected a[title="Chinese (Simplified)"] span, #language .switcher .option a[title="Chinese (Simplified)"] span, .tool-container .tool-items a[title="Chinese (Simplified)"], a.single-language[title="Chinese (Simplified)"] span.size16 { background: url('../images/flags16.png') -4px -63px no-repeat; } #flags.size16 a[title="Chinese (Traditional)"], #language .switcher .selected a[title="Chinese (Traditional)"] span, #language .switcher .option a[title="Chinese (Traditional)"] span, .tool-container .tool-items a[title="Chinese (Traditional)"], a.single-language[title="Chinese (Traditional)"] span.size16 { background: url('../images/flags16.png') -33px -63px no-repeat; } #flags.size16 a[title="Corsican"], #language .switcher .selected a[title="Corsican"] span, #language .switcher .option a[title="Corsican"] span, .tool-container .tool-items a[title="Corsican"], a.single-language[title="Corsican"] span.size16 { background: url('../images/flags16.png') -120px -92px no-repeat; } #flags.size16 a[title="Croatian"], #language .switcher .selected a[title="Croatian"] span, #language .switcher .option a[title="Croatian"] span, .tool-container .tool-items a[title="Croatian"], a.single-language[title="Croatian"] span.size16 { background: url('../images/flags16.png') -62px -63px no-repeat; } #flags.size16 a[title="Czech"], #language .switcher .selected a[title="Czech"] span, #language .switcher .option a[title="Czech"] span, .tool-container .tool-items a[title="Czech"], a.single-language[title="Czech"] span.size16 { background: url('../images/flags16.png') -91px -63px no-repeat; } #flags.size16 a[title="Danish"], #language .switcher .selected a[title="Danish"] span, #language .switcher .option a[title="Danish"] span, .tool-container .tool-items a[title="Danish"], a.single-language[title="Danish"] span.size16 { background: url('../images/flags16.png') -120px -63px no-repeat; } #flags.size16 a[title="Dutch"], #language .switcher .selected a[title="Dutch"] span, #language .switcher .option a[title="Dutch"] span, .tool-container .tool-items a[title="Dutch"], a.single-language[title="Dutch"] span.size16 { background: url('../images/flags16.png') -149px -63px no-repeat; } #flags.size16 a[title="English"], #language .switcher .selected a[title="English"] span, #language .switcher .option a[title="English"] span, .tool-container .tool-items a[title="English"], a.single-language[title="English"] span.size16 { background: url('../images/flags16.png') -91px -353px no-repeat; } #flags.size16 a.united-states[title="English"], #language .switcher .selected a[title="English"] span.united-states, #language .switcher .option a[title="English"] span.united-states, a.single-language.united-states[title="English"] span.size16 { background: url('../images/flags16.png') -120px -353px no-repeat; } #flags.size16 a.canada[title="English"], #language .switcher .selected a[title="English"] span.canada, #language .switcher .option a[title="English"] span.canada, a.single-language.canada[title="English"] span.size16 { background: url('../images/flags16.png') -91px -440px no-repeat; } #flags.size16 a[title="Esperanto"], #language .switcher .selected a[title="Esperanto"] span, #language .switcher .option a[title="Esperanto"] span, .tool-container .tool-items a[title="Esperanto"], a.single-language[title="Esperanto"] span.size16 { background: url('../images/flags16.png') -4px -92px no-repeat; } #flags.size16 a[title="Estonian"], #language .switcher .selected a[title="Estonian"] span, #language .switcher .option a[title="Estonian"] span, .tool-container .tool-items a[title="Estonian"], a.single-language[title="Estonian"] span.size16 { background: url('../images/flags16.png') -33px -92px no-repeat; } #flags.size16 a[title="Filipino"], #language .switcher .selected a[title="Filipino"] span, #language .switcher .option a[title="Filipino"] span, .tool-container .tool-items a[title="Filipino"], a.single-language[title="Filipino"] span.size16 { background: url('../images/flags16.png') -62px -92px no-repeat; } #flags.size16 a[title="Finnish"], #language .switcher .selected a[title="Finnish"] span, #language .switcher .option a[title="Finnish"] span, .tool-container .tool-items a[title="Finnish"], a.single-language[title="Finnish"] span.size16 { background: url('../images/flags16.png') -91px -92px no-repeat; } #flags.size16 a[title="French"], #language .switcher .selected a[title="French"] span, #language .switcher .option a[title="French"] span, .tool-container .tool-items a[title="French"], a.single-language[title="French"] span.size16 { background: url('../images/flags16.png') -120px -92px no-repeat; } #flags.size16 a[title="Frisian"], #language .switcher .selected a[title="Frisian"] span, #language .switcher .option a[title="Frisian"] span, .tool-container .tool-items a[title="Frisian"], a.single-language[title="Frisian"] span.size16 { background: url('../images/flags16.png') -149px -63px no-repeat; } #flags.size16 a[title="Galician"], #language .switcher .selected a[title="Galician"] span, #language .switcher .option a[title="Galician"] span, .tool-container .tool-items a[title="Galician"], a.single-language[title="Galician"] span.size16 { background: url('../images/flags16.png') -149px -92px no-repeat; } #flags.size16 a[title="Georgian"], #language .switcher .selected a[title="Georgian"] span, #language .switcher .option a[title="Georgian"] span, .tool-container .tool-items a[title="Georgian"], a.single-language[title="Georgian"] span.size16 { background: url('../images/flags16.png') -4px -121px no-repeat; } #flags.size16 a[title="German"], #language .switcher .selected a[title="German"] span, #language .switcher .option a[title="German"] span, .tool-container .tool-items a[title="German"], a.single-language[title="German"] span.size16 { background: url('../images/flags16.png') -33px -121px no-repeat; } #flags.size16 a[title="Greek"], #language .switcher .selected a[title="Greek"] span, #language .switcher .option a[title="Greek"] span, .tool-container .tool-items a[title="Greek"], a.single-language[title="Greek"] span.size16 { background: url('../images/flags16.png') -62px -121px no-repeat; } #flags.size16 a[title="Gujarati"], #language .switcher .selected a[title="Gujarati"] span, #language .switcher .option a[title="Gujarati"] span, .tool-container .tool-items a[title="Gujarati"], a.single-language[title="Gujarati"] span.size16 { background: url('../images/flags16.png') -91px -121px no-repeat; } #flags.size16 a[title="Haitian"], #language .switcher .selected a[title="Haitian"] span, #language .switcher .option a[title="Haitian"] span, .tool-container .tool-items a[title="Haitian"], a.single-language[title="Haitian"] span.size16 { background: url('../images/flags16.png') -120px -121px no-repeat; } #flags.size16 a[title="Hawaiian"], #language .switcher .selected a[title="Hawaiian"] span, #language .switcher .option a[title="Hawaiian"] span, .tool-container .tool-items a[title="Hawaiian"], a.single-language[title="Hawaiian"] span.size16 { background: url('../images/flags16.png') -91px -469px no-repeat; } #flags.size16 a[title="Hausa"], #language .switcher .selected a[title="Hausa"] span, #language .switcher .option a[title="Hausa"] span, .tool-container .tool-items a[title="Hausa"], a.single-language[title="Hausa"] span.size16 { background: url('../images/flags16.png') -149px -121px no-repeat; } #flags.size16 a[title="Hebrew"], #language .switcher .selected a[title="Hebrew"] span, #language .switcher .option a[title="Hebrew"] span, .tool-container .tool-items a[title="Hebrew"], a.single-language[title="Hebrew"] span.size16 { background: url('../images/flags16.png') -4px -150px no-repeat; } #flags.size16 a[title="Hindi"], #language .switcher .selected a[title="Hindi"] span, #language .switcher .option a[title="Hindi"] span, .tool-container .tool-items a[title="Hindi"], a.single-language[title="Hindi"] span.size16 { background: url('../images/flags16.png') -33px -150px no-repeat; } #flags.size16 a[title="Hmong"], #language .switcher .selected a[title="Hmong"] span, #language .switcher .option a[title="Hmong"] span, .tool-container .tool-items a[title="Hmong"], a.single-language[title="Hmong"] span.size16 { background: url('../images/flags16.png') -62px -150px no-repeat; } #flags.size16 a[title="Hungarian"], #language .switcher .selected a[title="Hungarian"] span, #language .switcher .option a[title="Hungarian"] span, .tool-container .tool-items a[title="Hungarian"], a.single-language[title="Hungarian"] span.size16 { background: url('../images/flags16.png') -91px -150px no-repeat; } #flags.size16 a[title="Icelandic"], #language .switcher .selected a[title="Icelandic"] span, #language .switcher .option a[title="Icelandic"] span, .tool-container .tool-items a[title="Icelandic"], a.single-language[title="Icelandic"] span.size16 { background: url('../images/flags16.png') -120px -150px no-repeat; } #flags.size16 a[title="Igbo"], #language .switcher .selected a[title="Igbo"] span, #language .switcher .option a[title="Igbo"] span, .tool-container .tool-items a[title="Igbo"], a.single-language[title="Igbo"] span.size16 { background: url('../images/flags16.png') -149px -150px no-repeat; } #flags.size16 a[title="Indonesian"], #language .switcher .selected a[title="Indonesian"] span, #language .switcher .option a[title="Indonesian"] span, .tool-container .tool-items a[title="Indonesian"], a.single-language[title="Indonesian"] span.size16 { background: url('../images/flags16.png') -4px -179px no-repeat; } #flags.size16 a[title="Irish"], #language .switcher .selected a[title="Irish"] span, #language .switcher .option a[title="Irish"] span, .tool-container .tool-items a[title="Irish"], a.single-language[title="Irish"] span.size16 { background: url('../images/flags16.png') -33px -179px no-repeat; } #flags.size16 a[title="Italian"], #language .switcher .selected a[title="Italian"] span, #language .switcher .option a[title="Italian"] span, .tool-container .tool-items a[title="Italian"], a.single-language[title="Italian"] span.size16 { background: url('../images/flags16.png') -62px -179px no-repeat; } #flags.size16 a[title="Japanese"], #language .switcher .selected a[title="Japanese"] span, #language .switcher .option a[title="Japanese"] span, .tool-container .tool-items a[title="Japanese"], a.single-language[title="Japanese"] span.size16 { background: url('../images/flags16.png') -91px -179px no-repeat; } #flags.size16 a[title="Javanese"], #language .switcher .selected a[title="Javanese"] span, #language .switcher .option a[title="Javanese"] span, .tool-container .tool-items a[title="Javanese"], a.single-language[title="Javanese"] span.size16 { background: url('../images/flags16.png') -120px -179px no-repeat; } #flags.size16 a[title="Kannada"], #language .switcher .selected a[title="Kannada"] span, #language .switcher .option a[title="Kannada"] span, .tool-container .tool-items a[title="Kannada"], a.single-language[title="Kannada"] span.size16 { background: url('../images/flags16.png') -149px -179px no-repeat; } #flags.size16 a[title="Kazakh"], #language .switcher .selected a[title="Kazakh"] span, #language .switcher .option a[title="Kazakh"] span, .tool-container .tool-items a[title="Kazakh"], a.single-language[title="Kazakh"] span.size16 { background: url('../images/flags16.png') -4px -411px no-repeat; } #flags.size16 a[title="Khmer"], #language .switcher .selected a[title="Khmer"] span, #language .switcher .option a[title="Khmer"] span, .tool-container .tool-items a[title="Khmer"], a.single-language[title="Khmer"] span.size16 { background: url('../images/flags16.png') -4px -208px no-repeat; } #flags.size16 a[title="Korean"], #language .switcher .selected a[title="Korean"] span, #language .switcher .option a[title="Korean"] span, .tool-container .tool-items a[title="Korean"], a.single-language[title="Korean"] span.size16 { background: url('../images/flags16.png') -33px -208px no-repeat; } #flags.size16 a[title="Kurdish"], #language .switcher .selected a[title="Kurdish"] span, #language .switcher .option a[title="Kurdish"] span, .tool-container .tool-items a[title="Kurdish"], a.single-language[title="Kurdish"] span.size16 { background: url('../images/flags16.png') -120px -469px no-repeat; } #flags.size16 a[title="Kyrgyz"], #language .switcher .selected a[title="Kyrgyz"] span, #language .switcher .option a[title="Kyrgyz"] span, .tool-container .tool-items a[title="Kyrgyz"], a.single-language[title="Kyrgyz"] span.size16 { background: url('../images/flags16.png') -149px -469px no-repeat; } #flags.size16 a[title="Lao"], #language .switcher .selected a[title="Lao"] span, #language .switcher .option a[title="Lao"] span, .tool-container .tool-items a[title="Lao"], a.single-language[title="Lao"] span.size16 { background: url('../images/flags16.png') -62px -208px no-repeat; } #flags.size16 a[title="Latin"], #language .switcher .selected a[title="Latin"] span, #language .switcher .option a[title="Latin"] span, .tool-container .tool-items a[title="Latin"], a.single-language[title="Latin"] span.size16 { background: url('../images/flags16.png') -91px -208px no-repeat; } #flags.size16 a[title="Latvian"], #language .switcher .selected a[title="Latvian"] span, #language .switcher .option a[title="Latvian"] span, .tool-container .tool-items a[title="Latvian"], a.single-language[title="Latvian"] span.size16 { background: url('../images/flags16.png') -120px -208px no-repeat; } #flags.size16 a[title="Lithuanian"], #language .switcher .selected a[title="Lithuanian"] span, #language .switcher .option a[title="Lithuanian"] span, .tool-container .tool-items a[title="Lithuanian"], a.single-language[title="Lithuanian"] span.size16 { background: url('../images/flags16.png') -149px -208px no-repeat; } #flags.size16 a[title="Luxembourgish"], #language .switcher .selected a[title="Luxembourgish"] span, #language .switcher .option a[title="Luxembourgish"] span, .tool-container .tool-items a[title="Luxembourgish"], a.single-language[title="Luxembourgish"] span.size16 { background: url('../images/flags16.png') -4px -498px no-repeat; } #flags.size16 a[title="Macedonian"], #language .switcher .selected a[title="Macedonian"] span, #language .switcher .option a[title="Macedonian"] span, .tool-container .tool-items a[title="Macedonian"], a.single-language[title="Macedonian"] span.size16 { background: url('../images/flags16.png') -4px -237px no-repeat; } #flags.size16 a[title="Malay"], #language .switcher .selected a[title="Malay"] span, #language .switcher .option a[title="Malay"] span, .tool-container .tool-items a[title="Malay"], a.single-language[title="Malay"] span.size16 { background: url('../images/flags16.png') -33px -237px no-repeat; } #flags.size16 a[title="Malagasy"], #language .switcher .selected a[title="Malagasy"] span, #language .switcher .option a[title="Malagasy"] span, .tool-container .tool-items a[title="Malagasy"], a.single-language[title="Malagasy"] span.size16 { background: url('../images/flags16.png') -62px -411px no-repeat; } #flags.size16 a[title="Malayalam"], #language .switcher .selected a[title="Malayalam"] span, #language .switcher .option a[title="Malayalam"] span, .tool-container .tool-items a[title="Malayalam"], a.single-language[title="Malayalam"] span.size16 { background: url('../images/flags16.png') -120px -411px no-repeat; } #flags.size16 a[title="Maltese"], #language .switcher .selected a[title="Maltese"] span, #language .switcher .option a[title="Maltese"] span, .tool-container .tool-items a[title="Maltese"], a.single-language[title="Maltese"] span.size16 { background: url('../images/flags16.png') -62px -237px no-repeat; } #flags.size16 a[title="Maori"], #language .switcher .selected a[title="Maori"] span, #language .switcher .option a[title="Maori"] span, .tool-container .tool-items a[title="Maori"], a.single-language[title="Maori"] span.size16 { background: url('../images/flags16.png') -91px -237px no-repeat; } #flags.size16 a[title="Marathi"], #language .switcher .selected a[title="Marathi"] span, #language .switcher .option a[title="Marathi"] span, .tool-container .tool-items a[title="Marathi"], a.single-language[title="Marathi"] span.size16 { background: url('../images/flags16.png') -120px -237px no-repeat; } #flags.size16 a[title="Mongolian"], #language .switcher .selected a[title="Mongolian"] span, #language .switcher .option a[title="Mongolian"] span, .tool-container .tool-items a[title="Mongolian"], a.single-language[title="Mongolian"] span.size16 { background: url('../images/flags16.png') -149px -237px no-repeat; } #flags.size16 a[title="Myanmar (Burmese)"], #language .switcher .selected a[title="Myanmar (Burmese)"] span, #language .switcher .option a[title="Myanmar (Burmese)"] span, .tool-container .tool-items a[title="Myanmar (Burmese)"], a.single-language[title="Myanmar (Burmese)"] span.size16 { background: url('../images/flags16.png') -149px -411px no-repeat; } #flags.size16 a[title="Nepali"], #language .switcher .selected a[title="Nepali"] span, #language .switcher .option a[title="Nepali"] span, .tool-container .tool-items a[title="Nepali"], a.single-language[title="Nepali"] span.size16 { background: url('../images/flags16.png') -4px -266px no-repeat; } #flags.size16 a[title="Norwegian"], #language .switcher .selected a[title="Norwegian"] span, #language .switcher .option a[title="Norwegian"] span, .tool-container .tool-items a[title="Norwegian"], a.single-language[title="Norwegian"] span.size16 { background: url('../images/flags16.png') -33px -266px no-repeat; } #flags.size16 a[title="Pashto"], #language .switcher .selected a[title="Pashto"] span, #language .switcher .option a[title="Pashto"] span, .tool-container .tool-items a[title="Pashto"], a.single-language[title="Pashto"] span.size16 { background: url('../images/flags16.png') -33px -498px no-repeat; } #flags.size16 a[title="Persian"], #language .switcher .selected a[title="Persian"] span, #language .switcher .option a[title="Persian"] span, .tool-container .tool-items a[title="Persian"], a.single-language[title="Persian"] span.size16 { background: url('../images/flags16.png') -62px -266px no-repeat; } #flags.size16 a[title="Polish"], #language .switcher .selected a[title="Polish"] span, #language .switcher .option a[title="Polish"] span, .tool-container .tool-items a[title="Polish"], a.single-language[title="Polish"] span.size16 { background: url('../images/flags16.png') -91px -266px no-repeat; } #flags.size16 a[title="Portuguese"], #language .switcher .selected a[title="Portuguese"] span, #language .switcher .option a[title="Portuguese"] span, .tool-container .tool-items a[title="Portuguese"], a.single-language[title="Portuguese"] span.size16 { background: url('../images/flags16.png') -120px -266px no-repeat; } #flags.size16 a.brazil[title="Portuguese"], #language .switcher .selected a[title="Portuguese"] span.brazil, #language .switcher .option a[title="Portuguese"] span.brazil, a.single-language.brazil[title="Portuguese"] span.size16 { background: url('../images/flags16.png') -149px -440px no-repeat; } #flags.size16 a[title="Punjabi"], #language .switcher .selected a[title="Punjabi"] span, #language .switcher .option a[title="Punjabi"] span, .tool-container .tool-items a[title="Punjabi"], a.single-language[title="Punjabi"] span.size16 { background: url('../images/flags16.png') -149px -266px no-repeat; } #flags.size16 a[title="Romanian"], #language .switcher .selected a[title="Romanian"] span, #language .switcher .option a[title="Romanian"] span, .tool-container .tool-items a[title="Romanian"], a.single-language[title="Romanian"] span.size16 { background: url('../images/flags16.png') -4px -295px no-repeat; } #flags.size16 a[title="Russian"], #language .switcher .selected a[title="Russian"] span, #language .switcher .option a[title="Russian"] span, .tool-container .tool-items a[title="Russian"], a.single-language[title="Russian"] span.size16 { background: url('../images/flags16.png') -33px -295px no-repeat; } #flags.size16 a[title="Samoan"], #language .switcher .selected a[title="Samoan"] span, #language .switcher .option a[title="Samoan"] span, .tool-container .tool-items a[title="Samoan"], a.single-language[title="Samoan"] span.size16 { background: url('../images/flags16.png') -33px -469px no-repeat; } #flags.size16 a[title="Scots Gaelic"], #language .switcher .selected a[title="Scots Gaelic"] span, #language .switcher .option a[title="Scots Gaelic"] span, .tool-container .tool-items a[title="Scots Gaelic"], a.single-language[title="Scots Gaelic"] span.size16 { background: url('../images/flags16.png') -62px -469px no-repeat; } #flags.size16 a[title="Serbian"], #language .switcher .selected a[title="Serbian"] span, #language .switcher .option a[title="Serbian"] span, .tool-container .tool-items a[title="Serbian"], a.single-language[title="Serbian"] span.size16 { background: url('../images/flags16.png') -62px -295px no-repeat; } #flags.size16 a[title="Sesotho"], #language .switcher .selected a[title="Sesotho"] span, #language .switcher .option a[title="Sesotho"] span, .tool-container .tool-items a[title="Sesotho"], a.single-language[title="Sesotho"] span.size16 { background: url('../images/flags16.png') -33px -411px no-repeat; } #flags.size16 a[title="Shona"], #language .switcher .selected a[title="Shona"] span, #language .switcher .option a[title="Shona"] span, .tool-container .tool-items a[title="Shona"], a.single-language[title="Shona"] span.size16 { background: url('../images/flags16.png') -62px -498px no-repeat; } #flags.size16 a[title="Sindhi"], #language .switcher .selected a[title="Sindhi"] span, #language .switcher .option a[title="Sindhi"] span, .tool-container .tool-items a[title="Sindhi"], a.single-language[title="Sindhi"] span.size16 { background: url('../images/flags16.png') -149px -353px no-repeat; } #flags.size16 a[title="Sinhala"], #language .switcher .selected a[title="Sinhala"] span, #language .switcher .option a[title="Sinhala"] span, .tool-container .tool-items a[title="Sinhala"], a.single-language[title="Sinhala"] span.size16 { background: url('../images/flags16.png') -4px -440px no-repeat; } #flags.size16 a[title="Slovak"], #language .switcher .selected a[title="Slovak"] span, #language .switcher .option a[title="Slovak"] span, .tool-container .tool-items a[title="Slovak"], a.single-language[title="Slovak"] span.size16 { background: url('../images/flags16.png') -91px -295px no-repeat; } #flags.size16 a[title="Slovenian"], #language .switcher .selected a[title="Slovenian"] span, #language .switcher .option a[title="Slovenian"] span, .tool-container .tool-items a[title="Slovenian"], a.single-language[title="Slovenian"] span.size16 { background: url('../images/flags16.png') -120px -295px no-repeat; } #flags.size16 a[title="Somali"], #language .switcher .selected a[title="Somali"] span, #language .switcher .option a[title="Somali"] span, .tool-container .tool-items a[title="Somali"], a.single-language[title="Somali"] span.size16 { background: url('../images/flags16.png') -149px -295px no-repeat; } #flags.size16 a[title="Spanish"], #language .switcher .selected a[title="Spanish"] span, #language .switcher .option a[title="Spanish"] span, .tool-container .tool-items a[title="Spanish"], a.single-language[title="Spanish"] span.size16 { background: url('../images/flags16.png') -4px -324px no-repeat; } #flags.size16 a.mexico[title="Spanish"], #language .switcher .selected a[title="Spanish"] span.mexico, #language .switcher .option a[title="Spanish"] span.mexico, a.single-language.mexico[title="Spanish"] span.size16 { background: url('../images/flags16.png') -120px -440px no-repeat; } #flags.size16 a[title="Swahili"], #language .switcher .selected a[title="Swahili"] span, #language .switcher .option a[title="Swahili"] span, .tool-container .tool-items a[title="Swahili"], a.single-language[title="Swahili"] span.size16 { background: url('../images/flags16.png') -33px -324px no-repeat; } #flags.size16 a[title="Swedish"], #language .switcher .selected a[title="Swedish"] span, #language .switcher .option a[title="Swedish"] span, .tool-container .tool-items a[title="Swedish"], a.single-language[title="Swedish"] span.size16 { background: url('../images/flags16.png') -62px -324px no-repeat; } #flags.size16 a[title="Sundanese"], #language .switcher .selected a[title="Sundanese"] span, #language .switcher .option a[title="Sundanese"] span, .tool-container .tool-items a[title="Sundanese"], a.single-language[title="Sundanese"] span.size16 { background: url('../images/flags16.png') -149px -382px no-repeat; } #flags.size16 a[title="Tajik"], #language .switcher .selected a[title="Tajik"] span, #language .switcher .option a[title="Tajik"] span, .tool-container .tool-items a[title="Tajik"], a.single-language[title="Tajik"] span.size16 { background: url('../images/flags16.png') -33px -440px no-repeat; } #flags.size16 a[title="Tamil"], #language .switcher .selected a[title="Tamil"] span, #language .switcher .option a[title="Tamil"] span, .tool-container .tool-items a[title="Tamil"], a.single-language[title="Tamil"] span.size16 { background: url('../images/flags16.png') -91px -324px no-repeat; } #flags.size16 a[title="Telugu"], #language .switcher .selected a[title="Telugu"] span, #language .switcher .option a[title="Telugu"] span, .tool-container .tool-items a[title="Telugu"], a.single-language[title="Telugu"] span.size16 { background: url('../images/flags16.png') -120px -324px no-repeat; } #flags.size16 a[title="Thai"], #language .switcher .selected a[title="Thai"] span, #language .switcher .option a[title="Thai"] span, .tool-container .tool-items a[title="Thai"], a.single-language[title="Thai"] span.size16 { background: url('../images/flags16.png') -149px -324px no-repeat; } #flags.size16 a[title="Turkish"], #language .switcher .selected a[title="Turkish"] span, #language .switcher .option a[title="Turkish"] span, .tool-container .tool-items a[title="Turkish"], a.single-language[title="Turkish"] span.size16 { background: url('../images/flags16.png') -33px -353px no-repeat; } #flags.size16 a[title="Ukrainian"], #language .switcher .selected a[title="Ukrainian"] span, #language .switcher .option a[title="Ukrainian"] span, .tool-container .tool-items a[title="Ukrainian"], a.single-language[title="Ukrainian"] span.size16 { background: url('../images/flags16.png') -62px -353px no-repeat; } #flags.size16 a[title="Urdu"], #language .switcher .selected a[title="Urdu"] span, #language .switcher .option a[title="Urdu"] span, .tool-container .tool-items a[title="Urdu"], a.single-language[title="Urdu"] span.size16 { background: url('../images/flags16.png') -149px -353px no-repeat; } #flags.size16 a[title="Uzbek"], #language .switcher .selected a[title="Uzbek"] span, #language .switcher .option a[title="Uzbek"] span, .tool-container .tool-items a[title="Uzbek"], a.single-language[title="Uzbek"] span.size16 { background: url('../images/flags16.png') -62px -440px no-repeat; } #flags.size16 a[title="Vietnamese"], #language .switcher .selected a[title="Vietnamese"] span, #language .switcher .option a[title="Vietnamese"] span, .tool-container .tool-items a[title="Vietnamese"], a.single-language[title="Vietnamese"] span.size16 { background: url('../images/flags16.png') -4px -382px no-repeat; } #flags.size16 a[title="Welsh"], #language .switcher .selected a[title="Welsh"] span, #language .switcher .option a[title="Welsh"] span, .tool-container .tool-items a[title="Welsh"], a.single-language[title="Welsh"] span.size16 { background: url('../images/flags16.png') -33px -382px no-repeat; } #flags.size16 a[title="Xhosa"], #language .switcher .selected a[title="Xhosa"] span, #language .switcher .option a[title="Xhosa"] span, .tool-container .tool-items a[title="Xhosa"], a.single-language[title="Xhosa"] span.size16 { background: url('../images/flags16.png') -4px -5px no-repeat; } #flags.size16 a[title="Yiddish"], #language .switcher .selected a[title="Yiddish"] span, #language .switcher .option a[title="Yiddish"] span, .tool-container .tool-items a[title="Yiddish"], a.single-language[title="Yiddish"] span.size16 { background: url('../images/flags16.png') -62px -382px no-repeat; } #flags.size16 a[title="Yoruba"], #language .switcher .selected a[title="Yoruba"] span, a.single-language[title="Yoruba"] span.size16 span, #language .switcher .option a[title="Yoruba"] span, .tool-container .tool-items a[title="Yoruba"], a.single-language[title="Yoruba"] span.size16 { background: url('../images/flags16.png') -91px -382px no-repeat; } #flags.size16 a[title="Zulu"], #language .switcher .selected a[title="Zulu"] span, #language .switcher .option a[title="Zulu"] span, .tool-container .tool-items a[title="Zulu"], a.single-language[title="Zulu"] span.size16 { background: url('../images/flags16.png') -120px -382px no-repeat; } /* Individual flag backgrounds (24px) */ #flags.size24 a[title="Afrikaans"], .tool-container .tool-items a[title="Afrikaans"], a.single-language[title="Afrikaans"] span.size24 { background: url('../images/flags.png') 0 -3px no-repeat; } #flags.size24 a[title="Albanian"], .tool-container .tool-items a[title="Albanian"], a.single-language[title="Albanian"] span.size24 { background: url('../images/flags.png') -29px -3px no-repeat; } #flags.size24 a[title="Amharic"], .tool-container .tool-items a[title="Amharic"], a.single-language[title="Amharic"] span.size24 { background: url('../images/flags.png') 0 -467px no-repeat; } #flags.size24 a[title="Arabic"], .tool-container .tool-items a[title="Arabic"], a.single-language[title="Arabic"] span.size24 { background: url('../images/flags.png') -58px -3px no-repeat; } #flags.size24 a[title="Armenian"], .tool-container .tool-items a[title="Armenian"], a.single-language[title="Armenian"] span.size24 { background: url('../images/flags.png') -87px -3px no-repeat; } #flags.size24 a[title="Azerbaijani"], .tool-container .tool-items a[title="Azerbaijani"], a.single-language[title="Azerbaijani"] span.size24 { background: url('../images/flags.png') -116px -3px no-repeat; } #flags.size24 a[title="Basque"], .tool-container .tool-items a[title="Basque"], a.single-language[title="Basque"] span.size24 { background: url('../images/flags.png') -145px -3px no-repeat; } #flags.size24 a[title="Belarusian"], .tool-container .tool-items a[title="Belarusian"], a.single-language[title="Belarusian"] span.size24 { background: url('../images/flags.png') 0 -32px no-repeat; } #flags.size24 a[title="Bengali"], .tool-container .tool-items a[title="Bengali"], a.single-language[title="Bengali"] span.size24 { background: url('../images/flags.png') -29px -32px no-repeat; } #flags.size24 a[title="Bosnian"], .tool-container .tool-items a[title="Bosnian"], a.single-language[title="Bosnian"] span.size24 { background: url('../images/flags.png') -58px -32px no-repeat; } #flags.size24 a[title="Bulgarian"], .tool-container .tool-items a[title="Bulgarian"], a.single-language[title="Bulgarian"] span.size24 { background: url('../images/flags.png') -87px -32px no-repeat; } #flags.size24 a[title="Catalan"], .tool-container .tool-items a[title="Catalan"], a.single-language[title="Catalan"] span.size24 { background: url('../images/flags.png') -116px -32px no-repeat; } #flags.size24 a[title="Cebuano"], .tool-container .tool-items a[title="Cebuano"], a.single-language[title="Cebuano"] span.size24 { background: url('../images/flags.png') -145px -32px no-repeat; } #flags.size24 a[title="Chichewa"], .tool-container .tool-items a[title="Chichewa"], a.single-language[title="Chichewa"] span.size24 { background: url('../images/flags.png') -87px -409px no-repeat; } #flags.size24 a[title="Chinese (Simplified)"], .tool-container .tool-items a[title="Chinese (Simplified)"], a.single-language[title="Chinese (Simplified)"] span.size24 { background: url('../images/flags.png') 0 -61px no-repeat; } #flags.size24 a[title="Chinese (Traditional)"], .tool-container .tool-items a[title="Chinese (Traditional)"], a.single-language[title="Chinese (Traditional)"] span.size24 { background: url('../images/flags.png') -29px -61px no-repeat; } #flags.size24 a[title="Corsican"], .tool-container .tool-items a[title="Corsican"], a.single-language[title="Corsican"] span.size24 { background: url('../images/flags.png') -116px -90px no-repeat; } #flags.size24 a[title="Croatian"], .tool-container .tool-items a[title="Croatian"], a.single-language[title="Croatian"] span.size24 { background: url('../images/flags.png') -58px -61px no-repeat; } #flags.size24 a[title="Czech"], .tool-container .tool-items a[title="Czech"], a.single-language[title="Czech"] span.size24 { background: url('../images/flags.png') -87px -61px no-repeat; } #flags.size24 a[title="Danish"], .tool-container .tool-items a[title="Danish"], a.single-language[title="Danish"] span.size24 { background: url('../images/flags.png') -116px -61px no-repeat; } #flags.size24 a[title="Dutch"], .tool-container .tool-items a[title="Dutch"], a.single-language[title="Dutch"] span.size24 { background: url('../images/flags.png') -145px -61px no-repeat; } #flags.size24 a[title="English"], .tool-container .tool-items a[title="English"], a.single-language[title="English"] span.size24 { background: url('../images/flags.png') -87px -351px no-repeat; } #flags.size24 a.united-states[title="English"], .tool-container a.united-states[title="English"], a.single-language.united-states[title="English"] span.size24 { background: url('../images/flags.png') -116px -351px no-repeat !important; } #flags.size24 a.canada[title="English"], .tool-container a.canada[title="English"], a.single-language.canada[title="English"] span.size24 { background: url('../images/flags.png') -87px -438px no-repeat !important; } #flags.size24 a[title="Esperanto"], .tool-container .tool-items a[title="Esperanto"], a.single-language[title="Esperanto"] span.size24 { background: url('../images/flags.png') 0 -90px no-repeat; } #flags.size24 a[title="Estonian"], .tool-container .tool-items a[title="Estonian"], a.single-language[title="Estonian"] span.size24 { background: url('../images/flags.png') -29px -90px no-repeat; } #flags.size24 a[title="Filipino"], .tool-container .tool-items a[title="Filipino"], a.single-language[title="Filipino"] span.size24 { background: url('../images/flags.png') -58px -90px no-repeat; } #flags.size24 a[title="Finnish"], .tool-container .tool-items a[title="Finnish"], a.single-language[title="Finnish"] span.size24 { background: url('../images/flags.png') -87px -90px no-repeat; } #flags.size24 a[title="French"], .tool-container .tool-items a[title="French"], a.single-language[title="French"] span.size24 { background: url('../images/flags.png') -116px -90px no-repeat; } #flags.size24 a[title="Frisian"], .tool-container .tool-items a[title="Frisian"], a.single-language[title="Frisian"] span.size24 { background: url('../images/flags.png') -145px -61px no-repeat; } #flags.size24 a[title="Galician"], .tool-container .tool-items a[title="Galician"], a.single-language[title="Galician"] span.size24 { background: url('../images/flags.png') -145px -90px no-repeat; } #flags.size24 a[title="Georgian"], .tool-container .tool-items a[title="Georgian"], a.single-language[title="Georgian"] span.size24 { background: url('../images/flags.png') 0 -119px no-repeat; } #flags.size24 a[title="German"], .tool-container .tool-items a[title="German"], a.single-language[title="German"] span.size24 { background: url('../images/flags.png') -29px -119px no-repeat; } #flags.size24 a[title="Greek"], .tool-container .tool-items a[title="Greek"], a.single-language[title="Greek"] span.size24 { background: url('../images/flags.png') -58px -119px no-repeat; } #flags.size24 a[title="Gujarati"], .tool-container .tool-items a[title="Gujarati"], a.single-language[title="Gujarati"] span.size24 { background: url('../images/flags.png') -87px -119px no-repeat; } #flags.size24 a[title="Haitian"], .tool-container .tool-items a[title="Haitian"], a.single-language[title="Haitian"] span.size24 { background: url('../images/flags.png') -116px -119px no-repeat; } #flags.size24 a[title="Hausa"], .tool-container .tool-items a[title="Hausa"], a.single-language[title="Hausa"] span.size24 { background: url('../images/flags.png') -145px -119px no-repeat; } #flags.size24 a[title="Hawaiian"], .tool-container .tool-items a[title="Hawaiian"], a.single-language[title="Hawaiian"] span.size24 { background: url('../images/flags.png') -87px -467px no-repeat; } #flags.size24 a[title="Hebrew"], .tool-container .tool-items a[title="Hebrew"], a.single-language[title="Hebrew"] span.size24 { background: url('../images/flags.png') 0 -148px no-repeat; } #flags.size24 a[title="Hindi"], .tool-container .tool-items a[title="Hindi"], a.single-language[title="Hindi"] span.size24 { background: url('../images/flags.png') -29px -148px no-repeat; } #flags.size24 a[title="Hmong"], .tool-container .tool-items a[title="Hmong"], a.single-language[title="Hmong"] span.size24 { background: url('../images/flags.png') -58px -148px no-repeat; } #flags.size24 a[title="Hungarian"], .tool-container .tool-items a[title="Hungarian"], a.single-language[title="Hungarian"] span.size24 { background: url('../images/flags.png') -87px -148px no-repeat; } #flags.size24 a[title="Icelandic"], .tool-container .tool-items a[title="Icelandic"], a.single-language[title="Icelandic"] span.size24 { background: url('../images/flags.png') -116px -148px no-repeat; } #flags.size24 a[title="Igbo"], .tool-container .tool-items a[title="Igbo"], a.single-language[title="Igbo"] span.size24 { background: url('../images/flags.png') -145px -148px no-repeat; } #flags.size24 a[title="Indonesian"], .tool-container .tool-items a[title="Indonesian"], a.single-language[title="Indonesian"] span.size24 { background: url('../images/flags.png') 0 -177px no-repeat; } #flags.size24 a[title="Irish"], .tool-container .tool-items a[title="Irish"], a.single-language[title="Irish"] span.size24 { background: url('../images/flags.png') -29px -177px no-repeat; } #flags.size24 a[title="Italian"], .tool-container .tool-items a[title="Italian"], a.single-language[title="Italian"] span.size24 { background: url('../images/flags.png') -58px -177px no-repeat; } #flags.size24 a[title="Japanese"], .tool-container .tool-items a[title="Japanese"], a.single-language[title="Japanese"] span.size24 { background: url('../images/flags.png') -87px -177px no-repeat; } #flags.size24 a[title="Javanese"], .tool-container .tool-items a[title="Javanese"], a.single-language[title="Javanese"] span.size24 { background: url('../images/flags.png') -116px -177px no-repeat; } #flags.size24 a[title="Kannada"], .tool-container .tool-items a[title="Kannada"], a.single-language[title="Kannada"] span.size24 { background: url('../images/flags.png') -145px -177px no-repeat; } #flags.size24 a[title="Kazakh"], .tool-container .tool-items a[title="Kazakh"], a.single-language[title="Kazakh"] span.size24 { background: url('../images/flags.png') 0 -409px no-repeat; } #flags.size24 a[title="Khmer"], .tool-container .tool-items a[title="Khmer"], a.single-language[title="Khmer"] span.size24 { background: url('../images/flags.png') 0 -206px no-repeat; } #flags.size24 a[title="Korean"], .tool-container .tool-items a[title="Korean"], a.single-language[title="Korean"] span.size24 { background: url('../images/flags.png') -29px -206px no-repeat; } #flags.size24 a[title="Kurdish"], .tool-container .tool-items a[title="Kurdish"], a.single-language[title="Kurdish"] span.size24 { background: url('../images/flags.png') -116px -467px no-repeat; } #flags.size24 a[title="Kyrgyz"], .tool-container .tool-items a[title="Kyrgyz"], a.single-language[title="Kyrgyz"] span.size24 { background: url('../images/flags.png') -145px -467px no-repeat; } #flags.size24 a[title="Lao"], .tool-container .tool-items a[title="Lao"], a.single-language[title="Lao"] span.size24 { background: url('../images/flags.png') -58px -206px no-repeat; } #flags.size24 a[title="Latin"], .tool-container .tool-items a[title="Latin"], a.single-language[title="Latin"] span.size24 { background: url('../images/flags.png') -87px -206px no-repeat; } #flags.size24 a[title="Latvian"], .tool-container .tool-items a[title="Latvian"], a.single-language[title="Latvian"] span.size24 { background: url('../images/flags.png') -116px -206px no-repeat; } #flags.size24 a[title="Lithuanian"], .tool-container .tool-items a[title="Lithuanian"], a.single-language[title="Lithuanian"] span.size24 { background: url('../images/flags.png') -145px -206px no-repeat; } #flags.size24 a[title="Luxembourgish"], .tool-container .tool-items a[title="Luxembourgish"], a.single-language[title="Luxembourgish"] span.size24 { background: url('../images/flags.png') 0 -496px no-repeat; } #flags.size24 a[title="Macedonian"], .tool-container .tool-items a[title="Macedonian"], a.single-language[title="Macedonian"] span.size24 { background: url('../images/flags.png') 0 -235px no-repeat; } #flags.size24 a[title="Malagasy"], .tool-container .tool-items a[title="Malagasy"], a.single-language[title="Malagasy"] span.size24 { background: url('../images/flags.png') -58px -409px no-repeat; } #flags.size24 a[title="Malay"], .tool-container .tool-items a[title="Malay"], a.single-language[title="Malay"] span.size24 { background: url('../images/flags.png') -29px -235px no-repeat; } #flags.size24 a[title="Malayalam"], .tool-container .tool-items a[title="Malayalam"], a.single-language[title="Malayalam"] span.size24 { background: url('../images/flags.png') -116px -409px no-repeat; } #flags.size24 a[title="Maltese"], .tool-container .tool-items a[title="Maltese"], a.single-language[title="Maltese"] span.size24 { background: url('../images/flags.png') -58px -235px no-repeat; } #flags.size24 a[title="Maori"], .tool-container .tool-items a[title="Maori"], a.single-language[title="Maori"] span.size24 { background: url('../images/flags.png') -87px -235px no-repeat; } #flags.size24 a[title="Marathi"], .tool-container .tool-items a[title="Marathi"], a.single-language[title="Marathi"] span.size24 { background: url('../images/flags.png') -116px -235px no-repeat; } #flags.size24 a[title="Mongolian"], .tool-container .tool-items a[title="Mongolian"], a.single-language[title="Mongolian"] span.size24 { background: url('../images/flags.png') -145px -235px no-repeat; } #flags.size24 a[title="Myanmar (Burmese)"], .tool-container .tool-items a[title="Myanmar (Burmese)"], a.single-language[title="Myanmar (Burmese)"] span.size24 { background: url('../images/flags.png') -145px -409px no-repeat; } #flags.size24 a[title="Nepali"], .tool-container .tool-items a[title="Nepali"], a.single-language[title="Nepali"] span.size24 { background: url('../images/flags.png') 0 -264px no-repeat; } #flags.size24 a[title="Norwegian"], .tool-container .tool-items a[title="Norwegian"], a.single-language[title="Norwegian"] span.size24 { background: url('../images/flags.png') -29px -264px no-repeat; } #flags.size24 a[title="Pashto"], .tool-container .tool-items a[title="Pashto"], a.single-language[title="Pashto"] span.size24 { background: url('../images/flags.png') -29px -496px no-repeat; } #flags.size24 a[title="Persian"], .tool-container .tool-items a[title="Persian"], a.single-language[title="Persian"] span.size24 { background: url('../images/flags.png') -58px -264px no-repeat; } #flags.size24 a[title="Polish"], .tool-container .tool-items a[title="Polish"], a.single-language[title="Polish"] span.size24 { background: url('../images/flags.png') -87px -264px no-repeat; } #flags.size24 a[title="Portuguese"], .tool-container .tool-items a[title="Portuguese"], a.single-language[title="Portuguese"] span.size24 { background: url('../images/flags.png') -116px -264px no-repeat !important; } #flags.size24 a.brazil[title="Portuguese"], .tool-container a.brazil[title="Portuguese"], a.single-language.brazil[title="Portuguese"] span.size24 { background: url('../images/flags.png') -145px -438px no-repeat !important; } #flags.size24 a[title="Punjabi"], .tool-container .tool-items a[title="Punjabi"], a.single-language[title="Punjabi"] span.size24 { background: url('../images/flags.png') -145px -264px no-repeat; } #flags.size24 a[title="Romanian"], .tool-container .tool-items a[title="Romanian"], a.single-language[title="Romanian"] span.size24 { background: url('../images/flags.png') 0 -293px no-repeat; } #flags.size24 a[title="Russian"], .tool-container .tool-items a[title="Russian"], a.single-language[title="Russian"] span.size24 { background: url('../images/flags.png') -29px -293px no-repeat; } #flags.size24 a[title="Samoan"], .tool-container .tool-items a[title="Samoan"], a.single-language[title="Samoan"] span.size24 { background: url('../images/flags.png') -29px -467px no-repeat; } #flags.size24 a[title="Scots Gaelic"], .tool-container .tool-items a[title="Scots Gaelic"], a.single-language[title="Scots Gaelic"] span.size24 { background: url('../images/flags.png') -58px -467px no-repeat; } #flags.size24 a[title="Serbian"], .tool-container .tool-items a[title="Serbian"], a.single-language[title="Serbian"] span.size24 { background: url('../images/flags.png') -58px -293px no-repeat; } #flags.size24 a[title="Sesotho"], .tool-container .tool-items a[title="Sesotho"], a.single-language[title="Sesotho"] span.size24 { background: url('../images/flags.png') -29px -409px no-repeat; } #flags.size24 a[title="Shona"], .tool-container .tool-items a[title="Shona"], a.single-language[title="Shona"] span.size24 { background: url('../images/flags.png') -58px -496px no-repeat; } #flags.size24 a[title="Sindhi"], .tool-container .tool-items a[title="Sindhi"], a.single-language[title="Sindhi"] span.size24 { background: url('../images/flags.png') -145px -351px no-repeat; } #flags.size24 a[title="Sinhala"], .tool-container .tool-items a[title="Sinhala"], a.single-language[title="Sinhala"] span.size24 { background: url('../images/flags.png') 0px -438px no-repeat; } #flags.size24 a[title="Slovak"], .tool-container .tool-items a[title="Slovak"], a.single-language[title="Slovak"] span.size24 { background: url('../images/flags.png') -87px -293px no-repeat; } #flags.size24 a[title="Slovenian"], .tool-container .tool-items a[title="Slovenian"], a.single-language[title="Slovenian"] span.size24 { background: url('../images/flags.png') -116px -293px no-repeat; } #flags.size24 a[title="Somali"], .tool-container .tool-items a[title="Somali"], a.single-language[title="Somali"] span.size24 { background: url('../images/flags.png') -145px -293px no-repeat; } #flags.size24 a[title="Spanish"], .tool-container .tool-items a[title="Spanish"], a.single-language[title="Spanish"] span.size24 { background: url('../images/flags.png') 0 -322px no-repeat; } #flags.size24 a.mexico[title="Spanish"], .tool-container a.mexico[title="Spanish"], a.single-language.mexico[title="Spanish"] span.size24 { background: url('../images/flags.png') -116px -438px no-repeat !important; } #flags.size24 a[title="Sundanese"], .tool-container .tool-items a[title="Sundanese"], a.single-language[title="Sundanese"] span.size24 { background: url('../images/flags.png') -145px -380px no-repeat; } #flags.size24 a[title="Swahili"], .tool-container .tool-items a[title="Swahili"], a.single-language[title="Swahili"] span.size24 { background: url('../images/flags.png') -29px -322px no-repeat; } #flags.size24 a[title="Swedish"], .tool-container .tool-items a[title="Swedish"], a.single-language[title="Swedish"] span.size24 { background: url('../images/flags.png') -58px -322px no-repeat; } #flags.size24 a[title="Tajik"], .tool-container .tool-items a[title="Tajik"], a.single-language[title="Tajik"] span.size24 { background: url('../images/flags.png') -29px -438px no-repeat; } #flags.size24 a[title="Tamil"], .tool-container .tool-items a[title="Tamil"], a.single-language[title="Tamil"] span.size24 { background: url('../images/flags.png') -87px -322px no-repeat; } #flags.size24 a[title="Telugu"], .tool-container .tool-items a[title="Telugu"], a.single-language[title="Telugu"] span.size24 { background: url('../images/flags.png') -116px -322px no-repeat; } #flags.size24 a[title="Thai"], .tool-container .tool-items a[title="Thai"], a.single-language[title="Thai"] span.size24 { background: url('../images/flags.png') -145px -322px no-repeat; } #flags.size24 a[title="Turkish"], .tool-container .tool-items a[title="Turkish"], a.single-language[title="Turkish"] span.size24 { background: url('../images/flags.png') -29px -351px no-repeat; } #flags.size24 a[title="Ukrainian"], .tool-container .tool-items a[title="Ukrainian"], a.single-language[title="Ukrainian"] span.size24 { background: url('../images/flags.png') -58px -351px no-repeat; } #flags.size24 a[title="Urdu"], .tool-container .tool-items a[title="Urdu"], a.single-language[title="Urdu"] span.size24 { background: url('../images/flags.png') -145px -351px no-repeat; } #flags.size24 a[title="Uzbek"], .tool-container .tool-items a[title="Uzbek"], a.single-language[title="Uzbek"] span.size24 { background: url('../images/flags.png') -58px -438px no-repeat; } #flags.size24 a[title="Vietnamese"], .tool-container .tool-items a[title="Vietnamese"], a.single-language[title="Vietnamese"] span.size24 { background: url('../images/flags.png') 0 -380px no-repeat; } #flags.size24 a[title="Welsh"], .tool-container .tool-items a[title="Welsh"], a.single-language[title="Welsh"] span.size24 { background: url('../images/flags.png') -29px -380px no-repeat; } #flags.size24 a[title="Xhosa"], .tool-container .tool-items a[title="Xhosa"], a.single-language[title="Xhosa"] span.size24 { background: url('../images/flags.png') 0 -3px no-repeat; } #flags.size24 a[title="Yiddish"], .tool-container .tool-items a[title="Yiddish"], a.single-language[title="Yiddish"] span.size24 { background: url('../images/flags.png') -58px -380px no-repeat; } #flags.size24 a[title="Yoruba"], .tool-container .tool-items a[title="Yoruba"], a.single-language[title="Yoruba"] span.size24 { background: url('../images/flags.png') -87px -380px no-repeat; } #flags.size24 a[title="Zulu"], .tool-container .tool-items a[title="Zulu"], a.single-language[title="Zulu"] span.size24 { background: url('../images/flags.png') -116px -380px no-repeat; } .glt-controls { margin-bottom: 15px; background: #f0f0f0; padding: 10px; } /* Some Dashboard mobile styles */ @media only screen and (max-width:1023px) { .metabox-holder { float:none !important; width:100% !important; } .flagdisplay { float:none !important; width:100% !important; } .flagdisplay div { margin-bottom:10px; } } /* End 1023px */PK %>�[�rI� widget.phpnu �[��� <?php class glt_widget extends WP_Widget { function __construct() { parent::__construct( 'glt_widget', __('Google Language Translator', 'text_domain'), array( 'description' => __( 'Add the Google Language Translator website tool.', 'text_domain' ), ) ); } public function widget( $args, $instance ) { $title = apply_filters( 'widget_title', $instance['title'] ); echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; echo do_shortcode('[google-translator]'); echo $args['after_widget']; } public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'Translate:', 'text_domain' ); } ?> <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label><input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>"></p> <?php } public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; } } // class glt_widget function register_glt_widget() { register_widget( 'glt_widget' ); } add_action( 'widgets_init', 'register_glt_widget' );PK %>�[6Q�>� >� images/flags20.pngnu �[��� �PNG IHDR � �M bKGD � � ����� pHYs �� tIME�!�B_ IDATx��y�U���>��n�t:; ���/aS40��E�,nEp��7�;�73�/�3Ȍ�:������D� �}�N�w���Gս}��K��3�z|��[��s�s��S��K�����l:��R���Z*��R����A6����7�~���ް�}�������|�֭�X��`�0^�����Z�qU��Cg/z��#:(t<b����c��\��Q}N�̢Io9j!�E��>ZCE�?�Y��ߍ��ɓ�4i�Bpڙ�e!����kGo��M��]qP���Lbb�J�1Q;��w'�ۓM���\���h��<�;�`���{=~?��{Oh%Њ5���k��b�^���0!�vm��'��c>�e�u��^�Ӿ]Zk�5Hb|�y�l�e��E-J�Q���y�誇����r(�Ek�A�6�V 1k-X� B��a�6���{�K�+�F�z�39rn��v�J�(���A�X,�Z|�>���s���_&n��V*8�<*�Ce2�58N�3� ���>�y�j��P`�=�$l�u�y Q�]���� ��G�!D"+�V�BC5)(�'^H������K)�峡Oq�����p4J;�͚��k���0��~7å�*�]g���{Y���T{���K�Wfk�^߲�s��ǝ�ٻ�� ?�,�0c�ѷu ծn�wt��{F���nr���F� hU�����Q��OƏ�gC2����^�3�Ci�+ �?k��e�Mi�A� V�趲�cs"�Ag����Hg'����;q"�u�������!�Z$M�Y� "��.���N��ջ���fÃY�ӇX������ϴ]{}t헼�]_:s"�Z�ﲼw#t�w�>�"�t|�l�'�6|4� �����U��7_A�R���;�֑��콚R ��(���A���3cP��A�32-LU.���3�_��J4��[��x⣬0.7�c�C�ɲ���7��|�&��o'��+]�6� =��ֻAS�e�:@�E�<P���* �@��&������VEiM�C㞵��������͝||S��^7� ����\��ȥk�(�� �Gµ�<q"�3�#�+\�B�T�ge���/�\��E>{|�e���r+�n]�Ϳ�6�s&g��w6��t��ӓ�`�@R�x�?]����d� �:(�HP"����:Ï�^�Ɏa�;_��i���k�{�^��=�� � ��C� ���Y�Ԗ������=�0��T��c��Zd��ġ��Ea<���ܽ�Ѩ��E�������G=愭�y��O�(�b��4� Y��f`�z�]{���lc! ��`��=�,?I8��ݻhEq��zY3)�S3�wx�����2%�q7S�Y���J�?�DZ{}� >�H�p��t[���w�%~�n��e����mG�bw��}�_NՇ��B˒/'��b��x{a�b��3a�����5��!p2��E_Ĥ�S)e�e�k9$?����|� �����]�hˎ�x�-w�挡��8�0��^d��y"n}i(�L�JI=kT*d n"���u;=�G��߷�"�BZ>v5���`VoB�qt����Bl�o}%L_�Rb�}}���G��Q�ʬ�?^0�����a�qyS�7l��cO�%k��~=$[�"(�J�¿�U�g3����p��.>��8��?�דh*c���r%Ѫ7J�4�_��W(���;ʡ/ЄYM��(] E�J~� ��&qX�v;�;9Vun���Ū��(����\+k;7�ـ�_\T(43o�J~<��ơ�ĄoQ* �S�R- ����c3.��A�#��Kȿ�bJ��5���0�đ� ���};�ʷ3��'���8Q��=��\t�ǯ������&9�C�Ze���p�����Q'V�%-v�<�1�k�0X"�ŪZ#��Js�v��XFB=��3MgP�D�L}�f¦Dj�A;"��YҾ�(4���Ac��D'�I�x�;3�t����8oW�?�7�4!���, ����X�����֡�%�g�a���Z[�Rj�PG;���9�iww7-y�G.�s�Ey��}�h�-�@�(�=�,AH3���8ݣհ±"��{8Y9�+ޚ�H� �]������\T��i������S;�k�!)��܃9���؏n"��1�i��~w]�� ���n�)�bVl���(��A�T��%i�x��w�����U��T zs����eXs�� ��k8{K�x��l��*=�C��#�3��9��[;���]�( ��8�0�m��;y����Z��j�*.���ɺ>0J#q�B�0`��y�*�3�ޑkc�W�K���� 6�hm�����?�fRCS�-|��������w-%���ԕ45ً(�@5�U[z��K e��X�J��ס���{��`-�3/#� 8.(��kQ�M�$��61J! ����y>���t��S��e�p��C;��7Mb�a&���G��D�];�g]������ �ի���b[�� g�:��\�a:�V��'��'��ł���v$� &4e�YS +.sT�e�Jo-�ƺp��B�X�F�6���`��V�a"J���tz����m�6�D,"�4� �ya� ��vG+qN�t�%��M��h�L�g��y_}4�u���}>�N �:b���X�o(mm�[�$��!F�՚���ݧ��*��O����>�����cv��u��=��B��{k���u�f'�僫��9o!Z�̝q4�{��#����=��7Ï#� AS+m��J�n$�l-��p�3A8�:x�O��A^��/Mx�?�K' Vv�g���g���i-1a����6�@�����6�U�}4��H�"A3i�D��.�D{� 7P�-`��7I>�o(8f,�=�bNsފN.Z_��UB�0^݇��D�����[������#�\��ț���!D�Lq<��6��8�|�p���xx�F��W'4�IoJX���AH�"�N�:�P)���V����D�A)�Y Ycm�9�] A@X��A�$�/��BYPF�wsd�'�R Q:�IU��vV� ��-;?�bG9�"��1��"�ͣ�,����qO=��bC� ����W�U��p�v֦�P�g3q;]�R8J��9 ���P,� �v����N��e� ���i(���=�O<��x�A����P����!��a�N���r����6~x�X�~΅���uZ=��ǿ�w�9��-]|��ż���d[$b�e���#-��5�8��:�Z�%D��W�=�Q[��B��8�dO�8.��F9J� �${�P"�F��A��㰭�������7�jϳX�0�@h�L.L$R�q(t�Q;u@�A�p�N�K��&j�Iy��X�ͼ����kQ� ���9�p�#ef�*p�qcy�� �z�Kmr0�cE`�X;� ���g����n�z��$[ˤ>S���Ti!^j�>��Z*��RKE�Z*��RKE�Zj�HSKE�Zj�HSKE�Zj�HSK-ij�HSK��Z�)��w͢�9y!k֑;�8��5dN8���g� ���vF?�'�L�:��E�枼0.���0᳝���Oȯ��F�9����>z�G>�v����|�G�:��X��e��Z0�������,��G�t�]��q��h�G��l��4�ԟj?��SF�V�<<%TJt�]��(�ο�=;Z;�]z͢J��Ka�T\���Yj�86�5�5��q ��:�=���v��p�~T��O?�1�jTKb���P-C�l����P-w�y|&K.�%�81TK��i���}�1x�O5�)8�y�D>�^�v�\r��j� <��������V�V�yP� �w���c��늿�ǿx<�Ok�{�GR���D�z��$>���y}��Q�FRÇx�w_N���g:��?=��ϱfk �5WG�Z�8� i6��2�Z<?��r�{���%�bI�����R@v�BZ��=��yf��!�8���P�b�n�롳Z�.�JtX�� 31?�u;�&:xogQwvW(W ��w���ml��6M���d��]JT���Ybæ=�|A���u�%�`�Zk)��I|��K��*��~�M����O�$l �ڣ�`%W�{);:���&^\ۓ�D*����V�u[����?�2Lg'n�X��3G::���z^��`��j ��0�p�' g���4KZ5�Y=�]�b����X)�z]=���'y�I���{#?~`�~v�:k�ȳR�P���5�5�[���`�&��.����^�2�Zv�{�u��sŐA��sR�E%p�LDƼP�8����;�g�w�7�so%AЉ�W,�}[����=踰�n܂B�{ zz�����!�������H:�>�#� ���= ^���aY����O�)&'���sO/�`E�|�n��Y� �:�"�}�+��9H�F��s$�b�6�^�N6�R�a�H8aHa����%��\��e�b,�A �A���9�YF�D"�J\.�2A;8�H�3n���/�����l�U���)��b0�o�sR? ��#s�������i'�������Ոl��''��rqt��}v�DZe[_���^�����T���?(c���z�*�\@�W��qk3mc���p�<��|�}�dڸ� �j�m|����Ŏm|k�����cҁ�� KV-Mt��OZ�;k��6g-{�M4�깳ى����N��y��Ɗ�En��Vn���a�$:�⺄�8(��+�����<h�hj�ʓ���K^�M$cG�- ��O�@��nC���m�#���L}N)Ŧ����V��/��Yˍ_.����C�z�]�[(�=�� �|�:�;7�5I"m��B���~�a��W(�x~�'�} E���ː�U|<Z$��Ս��6�?����y3�]9�;~�����A�Ԣ$:��F��WԊ������ ��i!\5�5�W� ��Dlc���cю� "Bh�T�yyU;�)��|�Wq۵?gZ[O�9U�1���2�9z@.�8��_��v���`����f�ek�Uя0��6��9�u����;v���Q��gCVl[ύ��4��'��q�/.%s��H�D�ى�Օhu/@���R�o��S崾�#���f�gc'�J�BO_T�k&^����s�<���\��*��B�g>���-k��MD��J)�L��]D���|��2� 6^'5�Zb��lF�}];'{��'T���n�9e��Ev~�a*K_0����E�����AV��b�\���it4��8� �g�d� M�Ư _9D���vH� ��F�?�1�)dv���t�U�R�ug7/���]�w���C_{'߿�N��6�F�H���Vm��w���Vw�7f�g����|0�q�C�|^� �J������V�4�U�@�{P�r��@�� ;��s��Q�F�)4@7`��I���2z�dl���2cL��L�UbA���P�!"Q���?�����3�d����ge�u�#��1�7���jS��]p [wts��g�YG��/]ė����<�<7_��:<,\ͤa����;���I����;0�%�/�O�p���(�Ae�#nhe��,��'Fo� ����V�n>����i���x��(�F��&�{<�7������2Y�te���}V�"�ib�<���f��k�Q��f���Q�������x߹K��F�h"|�fSMF��������c�����2����XL��� ~�Ӹ���)=�,������g1]= f��t "u�:�M� Ԙ1(��y���A�j�І&�}�~5�";�$P�8�(�|6K�uɸ<Li��x<!��C��%�0��y�dP-���+�,�\�l�%�q�[��ە�����[�u�~��;xd����B5fS �"P�l.��dq21���@^��+Vc0�� |ϋ�:�3A��q`N� lJ���%��E*��BY��ɠ\wڔ(?��@� ���TY��+��7�;�,��d.�G��U���u'_YE�+��� T˥���v�_��ZI���0���Ks�N �5~��+#;]S�ͮ�[����Gᖯ�'�pr�d[���'ݿA�~��h��q�%drN"���ž���I�������߁���� �R`�@�Jk�B ,y=D �:�>-)�,��^;K��O-ij��"M-ij��"M-�T���"M-�T���"M-�T�����4����,LJ�~ZZNt�e/��[/p�1��g B���S��U ��nK�Z\.�>�m[zU�����#]t��iNb���F�Q�d]&�!L�����8"T��momk��u��3�0�up]�$�e�8ވA���'��L�.�[����ڀޑ|���=찅��9JG5����H<�̨���\��]�plK�5��p�q�n8���V��o�G��ذ�H�+B{y��_���G.���#:�V˥���ړ�&~��O/,��+މ��8�N&�r�� i吙� �i��,�$0���<l.���>�ۻ%�R�8o|�1tvzL�X�S&�,[�� ��3h&1'�k)�"a��}�ĉt,_����Q_�lE��vt5ng.n��묆��D�/���y�|��?���ز��}f}/o}��:�� �a��+ފ��\�ˢ�̬Y�u���:�Fp6���c=�0�e�/�O���o��n.��ˡ\��ꃡ�wQ�!��z�s<�_�}�E�uw꠳�ݍ1��t�R�p���W]�GTi}1�m<}��3� |_ut�ر����=�c��R��Y��N�b�V`��>��(�x�?���t�с��4DR��Cag���� �Of��n�:aN����; .m[}�k�G���[��u���<̕���g��t��2��m:�P�}�BT�2�7/.!�El�`ƵRڴ%��JW��vtb{z�2�dUl�u�8�n�T�9`�6�"�S�ȝ��;r(%T�(�@�TT����%�S*6ł���={<G5���#�p�x�.�`�z�P�:�H�d��!kɆ3S*�<���֎���3�W+(4�q}�0f��m쩼k�,�`J��H-e��g��l�.>tՙ�k�'�`�&6�R���Aj<�����/"�R��jq!(�P����G�����2�۽=Vh=' �� ��P�P|8���IW�GI�)���@�@a���d�*�vwW��P���DU��R�UJ%�@��>"m�������Y椓Ȝy&�87����wvu1���-�0�?�s����v��l �őH���g- _�Z�K�soO�>U�'^���+���g��Oe���DQ4C���/z�����ܰV�n�����"�}}j�G�q'τ�g�s��ES"���!�����Ǿ" K�T;��>�~a�ޞ,� �pd����:o�qQ�LE3���K/�Z��3���|6DĐ��-����c3��>3'�D��K��ru�m�{���`��mk�/�hŘ)�_~y5�y��1#�H��X��Qx�Aq���䲍�v�eL�8�Pk���"u���_o�������m�Fpc��Ⱦ�2�~"�N���!�6iZc���<f>m� ��2B�Y!ܣQ(�C6�r4�[?��)eQ�w䡒2����/�Z���w����T0��im�B���d�0�v��:�x�O� ��f܍7��/�=�T2��_G-�5#�r�C�HJC��V���_~���9\��cG\�7�s�v&=����Hj��:�C�#��'b���>@��'3(WP[�U�e6!��L6�n��H2��I��8O8�H䳶_��� ��:5��:��� {�i8S������կR}�I����1�L���H� cЮ�#+sKS.��/��g�i����5l^������Z3�|�|X8��=1DW�7f$Y��� IDAT�QU{X��W/�,j�����@��n��+b$J���$� �`H~}ᬹ��k�R������;pg�b� �c��AS�枾28.�/:��A��(��܀�v&�[��лr+��x��E���5���,+�Rٳ;�`�o��jܷ#ibT�� �f��q���>H�x;H�-��Q͊D{rq�B6څP [P���������j��UOE(�ZC�6��g*�%�P�i��\��/�FIS��tnK<�c"�R�d4�-O2��=�dԷ��1;Ho�)�Ĉ���Ɇ��[P��i������]�Qh�}��_X�n�t�oZ�&)C�����>L�EL��:t7�"ф�Tr�S�YC�M,���D�������;9���\t�TV���r�7��W���� �sI��^MS$�0�t4�?���n����0 ��,ky� Cl�?W�=��&I�~}D0�w##��`TJ71/6�A,b 2�T�[߈M��T}#6�G|�Hj� ���t����`���CҔ�;��ȿ�w�hy/��K4�БH�"�~��-s����ę����pT�M��$�`D� WG��p����@"_��&�6�Pԭ*9�z��!���&=�T�b����l�.T��%6�j��x�辫v���w����L&�j 6��Y{�L�1� �Α�E�X�Ϲd�.�Ei��z�LbZ`h,A�����e6�ϩA���|������݊u���:H%5�� �ˬ��$�i4� id38�[E�:dʐ�c�>�|�Ð�zB������K�u��v蝵��� 0A�c�.R�q���p�B��6~�%d��+�ur� �Z����f�p2:z���_46�(�G���qkq��Mp[�u N ����%>L����a.��v��p��i�� �^呰o�]�l��Z2N��+���U�*��J� 7F���v�� ��VdH fsp����Z�x*f�$D���E�@�˦:��+5�[�P�z /�U�X���f�yU�����-�ڷ69�����n>E���A�Fy�%�����hg��<��2�la�XKj��,��goi�Sj�HSK-ij�HSK-ij��"M-ij��"M-ij��"M-�T�������]��뮽v�P�z��xOsg~�p5��M���,�A��qF}��΄��E=A���G�9��kU�.X�] �1Z+�K�ZmL��_�8�ϛ>�E7�x��Z�Z Xv�-��_�~��,�|�e�&��օ�5n�o?5| }�'?UF��g;����TW�gW,X��g۲�1����� v����y� �� n���w�qx��a�]����kQz����s�P1�|�%��d�V�(�yU����Ăo,^`�!G��/&�y�L������9�l-��&��>u�:�>m��~h��'�9�=�?�ȧ5�=��#������/�ъY1Dl8������J(�.����(���ޅ�g<�Ͳ��ɀeXqǝq�\��Y���ÿLØ�Ӵ@/^\��5�/�o>�Ƹc��w/��_Lt��D�G��,Vu{�O��P*P�;�I��abNX��'�O�ڣ�`%W�{);:���&^\ۃ>������M�3m���V����Z���ξ�n��Y2���}�]� �±���nN�s�VzK9�W��~|q{/���9�#B��8��IV��/�lc�F~��ܱ���8�+[��]��Z�9����ڙ�-��狞�cV��&E "�"6y�3�@1����D�Y����ν��C(��ק�8G���p�߇�`�&�b����u6�� �+b�ǖ��������o�8���C�_�1��j-���q��;���`v�l��Ρ�+�����}Z3��@)�]"K����W���ra��k8����$�Ja�2A;8�H�3n���/�����l�Ub�秥��������u��M�=Ũ�j��E�f�e��[B��зjTa�'oq�j�H3��_�D.�>��)�Mݬ�@�Ԋ]��mv�fO����rNy���u�V��y ���Nk���F'#��x�+�K.�=��y�CF�Q�F��R�|Ib�c�NlϽQ��R�r�;�F�~+6���kX��k@�T (�DI�z�e�oF,���" ������ҟf(1,yii�H�S�":S��k�6��>,��w�"4[�pH!�Gge�� <����<���g�f�|.)îj�CJ's��$)��G��z^��O-L�fH�B9�4��DV*�x��̀�D���ː�U|<�l��Bu#������?o��oW���c{{yP4�( ��C�j�2�0�H���T -u E��H��T��H�>���l�F��c9�K��� ,�<�U{]Δ>��t;7�z��u��N�� �hkr,��?j�A7����#M_Co�� PVE?*B�hk�lDqNyGo�>��]ѱ����!+����dN�v:: ��\jj�9�#Lb�*��)A�U�"�߉˚�ILI��e�3w_�k�Z�EX����'���՝<ՉLȻ��TB�� ļ����~mw�E�X��q�ҟP�S���1X�P�1TW����,}y�(�a^J{�%�q��S(lA�����g�H�U�TX�z5�a��-V�1�9�=' z{BҌEx�upSrv���3>E�|2K��56`��տ[˯�v��3b�|C���U�3��~�%��jn��V�|�m�� �V��Z���/����h{�[��(� �a�?���=���i�x�FR�wm\8�ij��x�$9Bh�*�Y��0�5��!Q(d����?�V�Wfs�qe�V��wp��Xq����q�ɦr�1�7���M姵;1�z�ό�>�鈛Z��7�{�Q�Cߍi��:T;� G�~����; �5h@K1'��� �J�p: *=���l�>�1��d*����j�+��(Vn�&�c|���eδ"i� ������x�uF�~�,�^<k+�=O�o"���ij��z��'��t�$��o�:\;k��#������>l NL�S W�~Po��}E��}#V~�b��s�f3��<���?��m�e�R�Ǿ�"�:��K[v61ݿ�9��S��d�Yt̄j�+3��'���~p�t%VKl���T?��7�A��) �߲� ª�i �Lõs�1�܆=P� �ѶU>됭��F j��X��& ģ��0��7��p��i����쨀�m[z�Ǝ�C���_�5��5۶m��$Ѵ1O����d2�|�w�~z{�d�W�x#�`s�Ud��+jg�g ��A�v��C��ā�&�(��_��P��o�Q����r��i|Ͻi��<�g^����[�!�4`Y�3���g��T�\:�o}}�$����gʂJ����'�SKE�Zj�HSKE�Zj�HSK-ij�HSK-ij�HSK-ij��"M-ij�\�?5T��l����o�W՚<yѤI��ƬY�6��y�&Mz��h|*~�E𰋿?��eЏ�}�::���c�4�腮V8:z��V*#����B�9����Y�.�4��ĵMͼ�e��e �<��}�ڢI睲��cEI[0�e���EubJ����?�=X6T���ox���~C��]�`�J�|>O.�#��ԟ\w�6�q0����yT�U ���sOB��.Xp��!��0{�����"FѠ��_wm,�o�j5�Pp�����"�s/�'�C�Y�v��3��!�@� 6DBx�*��'�O�Ϋ�H�*�sr9���f� `6/���{~�T2�"�S��L���!���#B�����m�T���p�����t0Tk� �`�7o�?�SO <�-����e��[�P��N���NgggS����"L�8�u��%�Y���E:;�>�~G������ � �?��7��сe�m+]H؇�"hs\�ȷ�J�#<�����V�� Q�(������kb�˺��|�zu{��N����|a��z�Xab��u{��}�&�����l��ff����7DC���z>����ߺ�I��E<�{E"-�� ,=<ϠTu�������#�5��GqM�T�� ��4�b����492��l�&HE��g#�F�ntH��Ȣx0�� ށ���5���o�N�OŤw]�_��3��2��q��'�<&�㲦�Z�oޱG��.�%��>2�ws�u������k���Ј?��;ꟹ��;G���T��� !i�!�z:n���T��"y���� ��r�@�K�r�~�=�V%���n?f���'L��'"�ZK&�ܼ���pK__҇�#��ۉ8*J���H��=�b�Z��0�E���b�.%�ڀ��>=���;��k�R��>��R�%K��r�O��G��D� �R�P�w~�E�-�P����쳿]��O���m���<^~�8�;t�2�X̬y��\=߯Y���C��2��`Ϛ2�3���s��4���ܖH�=}��G�Z�5k�:��=x7���0�� |�;/7�*����"BO����>���D#�QwWJ1�-:� �0�0��D5[iǼ�>A(�<D��W���?`�6�Hkyi�@ k�Y�vt��0!�c�m�Z�sgժ����'@��ǔ = 7�ZƑ��pt�G/��7O��3ls"J~1z�H:�.���T;L$�V�ظ�Z*i�G5[;G3"{�}FS�Ek�OCJ�9��^����z��6`��ՉEZۙ���/�h�j�5�"����X��x���2�s/9�D�] ����|� ��^ g��9o:���SV ��YÊ�:nHxA# ����u��ʈ`�(���p�+͎�ޠ�qwp|vw�㦫�H��JMz������{��eش��3Θ�R�M�����Y�n0�$�b �z�PJ�e���;62��Y�aZY&�ˋ�'��ӟ�V�'���-!��G���9iW��!3�f�\}5r��|��4}�3�[��J�Z�T��U� <���Cl.����vI�� � �GG?���p��g�r�M�"⾐���:np$�f\0��+�p�3ik��#��e|̠�m/� � ��v3�7� ��(���A?JT|#��I�Fh�o��8��)0aD���{�����Z+_�NZ��>�����-?�Nx�����E�,c��xE�.B�&cI�ݲe{��מ�u�1 ��L�ZC��ܙ���?��� d��?Ζ?%@qg)q$5�HA �e�~�C�~x�4h����h��,������F���ȑs҆)i���$�v~�[L��C�ƫ��s/E����L���MA�W�8��/Jv��E.��oQ�q]�;Z�'ѝ5��`�?�rk� ���U�>iy� �����m3.�w94,��}�>�����h0�Ap��>��8�W3��k��;lH-�?�^xh��Z"c~���<Zgq��B�^@6���k����*� "N�<1��G�.��ķ�U��N+j���! �Mѥ %U:�͑u�d�Zi��n���X������{ ���8�X P��g��,����8�Ft�f3A����E��I�S�� +��,Y7C�uG�Q3�0� �Àj�!N���tTx�`"s�z%P-�q��^�u�/t�RA2x��� c���Ɇ�D�zu'[��1�(��rM1�a��u\��<�Q�_x�0Q��"k�t6$ [�q��4�Rh �~^����ќ"M��&ng�lPZ@WT5z���V���\���(�a6GmC,��>��}����矽�X�ڟ��O槖�4��R����4��R���Z*��R���Z*��R���Z*��RKE�Z*��R;��X6��`� y]������Ph}�FEj(� "��|�g��x������ď�_����aǾeѤ�/X���0;���;�t�9���6T�6bS".���o ,E��,; /��^�ϭ��F�'G�N��nmEe2��Ez��r����g7~L���y�誇����r(���j$M����5Hb<S���/�{_�v"�]p�YT|˲ѫ�g͚Řk�f�Y�t����h%�3�<?�e5��DŽ>_e`�7�ۤ�+������LlU|� �䅣��{p��|h��u8�WI� �� ���b���9ᦸ�MF�Y���~G'��7�-`@a��͌ ᬀ�GφM����S��]e:��8��wn�e <�t�(�S�ؚa��=�|��2�b9��kbi^1"�bYHZ-v0@^p]K6���iD<��p�� ��5���������f*�1���Ee�M��Ƹ3�RSմŲ��ۆ�j�GD�pd�b)���n���k/=�/~��z=�P�K��7�:a��V���=Ν��M�t>���l���SE�e�?E��[�^�L'��Aӻ�E* ��s<��� �QѝjN�X�xa�xe�_J4�w��C4F0���c=����Xf�yi{u�e 9�`��s+{�����-F#��w1}j���Q�.�u��K���`��j�ej�Q*���G]�Q #�;T��z�2O�s��������Is~cY�c����.;���%������0���_>���6��ο#�xu�e#@�ƏuX���W��Dpӿ��/Nb��]@^�x �?���ƞr2�Y���2�1c�`}"`�~�3i?5�ή���u[v�%B��Yj���1r*�|`��Չ��,�%b��=��q��J�Z�U��0�y���X�_����*�B��K2t�BޅR���ۙt��Lhlj��hW�#�i��ɫ,��uW��<|�s�rB��s+�8��6�V� �: /CT�>ԧ[��� a�X:�˞=[a�ҥ�t)�Bc�D��v6���L;�_q3n��B����5\ʱ��&��J�By��}_�1����F�j�9gg�ǧ�܀1��G�#l$���j�Wx5l� k/��&��10����j� �Hb��1~�������J�� ��г}O2���W��t�\ź���Q�p��%�Z�!={�%���)�Lk�Ϩ��E�0C��35�7���p�y¸,���������7��o7� �Sx�1��6�Іy%�C�j��C$�@5�Q&FƏ$�(�S&�o����n'?Y�t���& ��j���z���/�k � ̘+����(ҝ{�od�"UV�a�KJC1�=&�*L^/�&���5jߎ �M1�Đg]��ab���׳� H����e��i���$�͒�f��R��, |��}6l��.O"������p2�W��yiw�����;����}���h�T����b���= �2��Q�3C�A�5#��F�Y3�|�%�uɸ."�3u �M;p��ZB+A��T�Ap�J��`�����˳�Td�-&>OC&E��U����[���$<�b��$��9�k�%:Ã�F��:t�4A���7����a�;�u�D(h�`s�d>S`Y��>S`Y����g ,K����'�SKE�Zj�HSKE�Zj�HSK-ij�HSK-ij�HSK-ij��"M-ij�\�?uP�Z���h�9��3����^r��ɷ�cc�������ϯ��EsM��8�0�:T��{��7|�D�&����zt0�A����y�j�uײ�@���� `��jYq̽�����\�r�J��₿F���Ư:V/�'�ϳ.n�jeA���Dj����<�������;��y��=R:���U�#�/���.҃�*��r7�a)꼤�i;^���+��Dʻ�5�3h�gq��|,�Z�%�� t��u�r���j���(�,!i��z�~ּ�zS�}�e��W�$@�@����k\GF�b�>m쳡�G�i}�>έR*'٠s7�v����_QY���13��y�gM��5�&��q=�u�� Pݹ�l��$:�@H�d�R IDAT���;���"�M�Ñ�m���9Q9z_E���AP-5�O��Xo�!���&%���!�����>��e���Fu��g{��c�/e�ܓ�����g�Q4�K��^��z0[2�H����F�Ou���8L&��j)i$�ڑ#��R�T��0F5Ց�P���I|�}}.^ ��~܆�~��eC�?�Gƞu*/��0��q=��>�� Jj�+�J�@є`J~�qTK�+�G5�� hBɯ��l1#�+�zl��gÉt0��w�J���5��{Z��A������Wl�j_�Nx���ύ�'M��W�U�˗�E%�Ic�q�A �#��5�)�F>�|�P�<��hjWu��1���~(`�%Ǵ���Xv0�����W�1i�V*���A�Hte���g$�5�M�����{��夥�~�!MMHݕ>�~Bw����7��I3�6s�!�\?�ajlK]��j]OU���!Ԡ�w�7�IW7�˚y��!�!��)�&�M�bh"��P--1�T����C�h�mj��o�y��c���ʽ�]k��&3If&�S�z!D �"�����Wl�� X�����Ң(�"] !H����!���vYk��}Μɴ}^�~>��ϙ#g�笵�Ye��h~���]oVҦ��{E�w�o���&� X6�(b7�e�Ɋ�*�� G.�A�U�I��j��`��Z~��+cPFG�PT��}�0|��=���bc�f�W?�U?��xtw ����.�R�PZp���!z$ `U`�֣ ��u�����Uq���cɈ+ ����1��T5&�n���P��bܝj&9���J�qdЀw�nߓ��oi�ݹ����e��)���pe��C?Ӯ��=���:E�1iA��@�P-�dTk�'�v�H��<�q�2J+j��neM�Q��y�����v��7�2�L�AX*\ ��6��4�Ã��d�!��#�Զ,2Y��4�"�t"A��tu�<���� �JF*�{Q��O��� "��e��=�g,�}��>c`Yl{��;�c�E[l�Hc�E[l�Hc�-il�Hc�-il�Hc�-il��"�-il���V�5j��O�߃��3S��o~!y�v~M͂5��g��h#|���Ԝ�(��f̽�LPo~�M�L�`��.�1H�v�mc����ܙ��Y�_p�>�͗B�;A��u��zP;���<���>}�����)D�A7��$����A|�+��e`�y�P0�� R)�DB"�����p��Ak�R��8�O���.|���yuww0bĈAU,)�>������>�õ4\9���阮�d�7��A�{%i8�E����E��X�4�+�OZX �N���䯟�u�r��9�8$R)�d�SH���]ʩA�Vh/ �y��H�X��h`6���9�CX��4�J!�\*$�zܻ ����a���(Ҽ��e�e����ess��6?�dQ�h�hj����fݺ���>��w��s���3k�,,�oz��<��cl߾�������QF��ơ�ɭ�r=�#�pn��^�yqY�k�7'h�}:iȜ�1�z���;.N2�O����!}:;e����D�*��NȪ��uSD0[�]�b+�t�e�ވ�(O�A����ח}VFR�Y�1�H�٬&j|%�멧�b�Ν$ �q<�@���d:�V�X�z5���,]���?|�y��E��WaY{oA��V�}^y��� ��`�@M� h�� �ގ_�$�q]�T+�R¡�� �� ��}�@SV*���v�Ez6/�"aL�@Jd:���;�Dd*E�c�!{�(T[[9�P^��D�擑 D�l6KSSJ)jkk��K�-y��w=�j�-��:�9��Og���<���ض�ԩS�d2�3��GwaL���K%�S N?~&S&4 ����g����+��n����àk�>}��;���e�ד�VÁ���x4�,1E� *�䡀�j4����We�F�ߘ��o��~d�dw6c�Ƥ���Ԁߝ� �wf�{m˶�a�oU�4#�_�M �w�u;;����Cz�4{�M��'�#S)v��� L��v�����剅+DՌ���Z.��bv��ȑ#I�Ӭ��;��f���d��ɿ�������0a�Ǝ�R �q�J���·��/#x����E�����犯��J`���{��9>ܨ�QT| �ȓH+p������h!���}�}�ٕl9���>�:�L��o�J�zAҨ��8�È�+����������^����7Fg(�@�mn ֳKw~.�4�ϲ~�����cM��ll����IL�Fb���7�E�W�G���k̘1 �}���`R6� �P?�k�2.�����8_1f̘^3�jD��1TF��u��>�3e|=S�7��ͦ�*71$���4�S�}�r����S��>�n��nE�j��rN#+`p�'�A�p��kw_���R�|�֘t����8 ���0��s@�뢥� ���*���J(����sF��3ucx�~`�$3��k8B+�����z����l ��1:�W�+�zUd�{0�H+�]�d�J�wR�Q�ݽ� ap��iϘ�"i��7&5����kuT���6 S,�R�a��d��$�m�p���Bu��B�J�}&���cx��DK�;��g�N�ִl�V��u�@�U�.{}3g�9��g7lm�eo�Ue�n��7bIs��$1� �2�W��ĸ9Y|��%hy^��Ht����o�ݪ�5 ].v�E��Ғ��P�Wߡ}UZ�6�g�A�)�@"�>v���6P|Wu'�L��E�����1�r9�-[� �5k�\s ����/�}�aX)�ԏ��/�Ͳe�կ~ży�8����bU�)U��ſ<��K�<��&�*�[�8nE��"��߾��5�b��>���)�J�龎|�b��mN�鐞���zX��v�f��5O[� �}�g�6��F�����#<��&B"��(��IC0�g4�Z["]7���zaI){=��>�k�fC[;7���~�����Qw�i�oG���L�͂XÆ7��k�x�ѣq����~7&N---���?g �X��%K�p�yG�qk+��4p�Q����N`��^�"�L�����r�-��i�� i�H+�fv�tq�G�`�>�����4�1=��>d�A��� ��;��I%���+�I%����Y��@� �� -`[I!�%��['���<�)k(|̴;�^�7��,�G8�'�s�d���խ@k?_�^ٙ!���uRp���O$�z�Ǹq����{1���s�1s�L~��sq� b%A�f�,Z��aÆ�}� &P("�����~�yҕ�w�PӠ��h�h[���"R`�V�x���y�@�N����hW��� �,t�1�`�.�:]3r���\���=�纈0��H�p<ym�u����c�j���.���,R!��-�"�N�L�$�XƲD����y���5��p]�b���e�C�(-/�j͚5�n�!'N,wM%q��2�in��:::�0aB�P-)0"X�H�S�D;�f����o���Y���NQ�h�CCm�f�1�G�HY��4�>9x�� ��CH� 5��-�8Zp��,��g#�-\eQ�T ;��J�!V��#��h�Q���y(�Dш�D�:�d:���%�[�Q���E�V���Զ,2���$�'�(K!KJh2�1�O�E�@P� 6D�nذ�j���,v&-l)��G� �#o��t��ׂ���6�5�2��Z]C��ѵ��� J���P����7a-��gh� o�ð����W��h"�l�N)��@z.�w�h��4��R�$S��>mZ-KJ��!���P�F�[�J>c`Y�s���b�{��X�o���b��[,��b��[,��b�E[,��b�E[,��b�E[l�Hc�E[lﭕwA}��Q>����q�t?p�`�?�-���oԝ#� �M����г�p5j��4N?w>���͇wu=��ƠÝ�~��u�s�D��I��I�ד������EW�z�k?)�}���C�����,�����'�?���>v;/��˱i��ؿQ�z��4|�#�5qo��"�DŽ0�G���}l�X������EbH�WL�����ۻ�����x�u?��W��K��u>�=�y�L/`YiķSt�N�l�Vu�-RӃ�:F\�Akd��~��1Jɿ��KQz�l5m�;� �!�J�JZ$��&��z�s`ah�1��a��Ò���Ñ|� i&W�e�v�N�Hj��>�����Nzv�k�G;.��`�)�=�H>�����LcZ���~�"0��+0�ǜ��nތ�[yb�6��� g��F�t�N��G&)X��"�-��Iá~����CM�Dor�إ%���q|�<���p�I�`p^p�X`p�"a��|�胂��Jw!�o��a<�`pi^����,���v�l�m35��h�� 1j�@�p6@�����g �b�w�ŀ~��ސ��@��u!Q��� ���uk��#�0g�U4w��%dzf���g?{�ٻ�^�yu��'�7�O�X���6:[[is ��[�#QW���� �{��>זs����9|�sܑ$��{)ɿ�*�P`� 7P3z45��'��%7=�����)�s2|r= u6�6E��a�twAwl^[}�G��9�O��]z�-ȎN��l�9��{��=�Pc�#Gе�`��l��"w��� v84^M_��k=iх�@;`����!� ���n���R��l��q��=�Y¯�u �<��c�8p�:�m�����N�ݯ1�5I�>�P$^��֍�(&-��1�Ɠ��8a"�&�� i̕>�C�\.r[M����� �I鎿5o^���5��f�4X�.���H���L �}.�y��*����=� $��!�S�֎[ ��a���ij"i�����Ps$��"ض �`q[ -h� v��Kz����&z>���9�IN��y6���3�c�Z���_�{�ϲ-{�>��>�Ԙ�[t�O����ңU�aܴ��]�Pp?b$#Ǎ�N�rFI�]��Ta���9�P2�g������<���H�p�%�>۹(��~�~������uL}�S���^���ԫB]�&|t��Y�w�v���D�28�OBu�1^WW�z����7�h����f�6An�!� D����p��|���O�-HL{ 0A0�# �tv����Kӹ��g9e��<��<�t__1���'