Gengo: Using different domains for different languages
-
On my website I needed to use different domains for the two different languages. This may well also help with SEO, too. I didn’t want to edit Gengo core code, so created a plugin which does the job. If you use it, you’ll need to change the language codes and URLs throughout the plugin. It will only work with two-character language codes.
<?php /* Plugin Name: EMW WordPress Hacks Version: 0.2 Plugin URI: https://www.emw.org.uk/ Description: Various hacks to make the bi-lingual site work with two domains. Author: Mark Barnes Author URI: https://www.4-14.org.uk/ */ //Returns the language requested in the URL function emw_get_language() { if ($_GET['lang']) return $_GET['lang']; else { $uri = $_SERVER['REQUEST_URI']; $query = $_SERVER['QUERY_STRING']; if (substr($uri, -strlen($query)) == $query) $uri = substr($uri, 0, -strlen($query)-1); return substr(trailingslashit($uri), -3, 2); } } //Updates the WordPress address function emw_retain_uri($content) { $code = emw_get_language(); if ($code == "en") return "https://www.emw.org.uk"; elseif ($code == "cy") return "https://www.mudiad-efengylaidd.org"; else return "https://".$_SERVER['SERVER_NAME']; } //Redirects the page if wrong domain is used function emw_redirect () { $code = emw_get_language(); $host = $_SERVER['HTTP_HOST']; if ($code=="en" && $host != "www.emw.org.uk") { header('HTTP/1.1 301 Moved Permanently'); header('Location: https://www.emw.org.uk'.$_SERVER['REQUEST_URI']); } elseif ($code=="cy" && $host != "www.mudiad-efengylaidd.org") { header('HTTP/1.1 301 Moved Permanently'); header('Location: https://www.mudiad-efengylaidd.org'.$_SERVER['REQUEST_URI']); } } //Ensures list_pages and similar functions return correct domain name // This function requires Gengo to append language links automatically. function emw_rewrite_link ($link) { $code = substr($link, -3, -1); if ($code=="en") return str_replace ("https://www.mudiad-efengylaidd.org", "https://www.emw.org.uk", $link); elseif ($code=="cy") return str_replace ("https://www.emw.org.uk", "https://www.mudiad-efengylaidd.org", $link); else return $link; } //Adds translation widget function emw_translation_links($args) { extract($args); if(function_exists("the_translations")) { echo $before_widget; echo $before_title.$after_title; echo '<div id="change-language">'; the_translations('pre=&post=&inner=&title_exists=&snippet=view_page'); echo '</div>'; echo $after_widget; } } //Registers all custom widgets function emw_widget_init() { register_sidebar_widget('Translation Links', 'emw_translation_links'); } add_action('template_redirect', 'emw_redirect'); add_filter('option_home', 'emw_retain_uri', 1); add_filter('option_siteurl', 'emw_retain_uri', 1); add_filter('page_link', 'emw_rewrite_link', 101); add_filter('post_link', 'emw_rewrite_link', 101); add_filter('category_link', 'emw_rewrite_link', 101); add_filter('category_feed_link', 'emw_rewrite_link', 101); add_action('widgets_init', 'emw_widget_init'); ?>
Viewing 1 replies (of 1 total)
Viewing 1 replies (of 1 total)
- The topic ‘Gengo: Using different domains for different languages’ is closed to new replies.