/**
  * ContentController
  * lets us extend init() through this method on SiteTree.
  * we will override page init to change domains if the page locale is 
  * different than the detected locale of the domain.
  *
  * 3 Things to be aware of (while developing..  these are all accounted for here):
  *		¥ Intended Locale of the Domain (.fr, .de, .com?)
  *		¥ Page's Locale in the Database
  *		¥ i18n locale that is in the header.
  *
  */
 public function contentcontrollerInit()
 {
     if ($this->owner->hasExtension('Translatable')) {
         //find the correct locale
         $curLoc = TranslatableDomains::getLocaleFromHost();
         // compare page locale vs domain's locale
         // low occurance of these not matching, but important
         if (Translatable::get_current_locale() != $curLoc) {
             // check to see if the page has a translation for the url, if so, translate.
             // helpful for homepages where / == /home but we want the german translation..
             if ($this->owner->hasTranslation($curLoc)) {
                 //if page exists and translation exists, redirect & show translation
                 $correctPage = $this->owner->getTranslation($curLoc);
                 Director::redirect($correctPage->Link());
             } else {
                 //otherwise, find requested page by url, determine locale, and put us in the right domain.
                 $newUrl = TranslatableDomains::convertLocaleToTLD($withEndSlash = false) . $this->owner->Link();
                 Director::redirect($newUrl);
             }
         } else {
             i18n::set_locale($this->owner->Locale);
         }
     }
 }
 /**
  * Test conversion of a url's locale to a TLD
  * (make sure a german page shows with a .de extension)
  */
 function testConvertURLLocaleToTLD()
 {
     $orig_locale = Translatable::get_current_locale();
     Translatable::set_current_locale('en_US');
     $url = "http://www.mysite.co.uk:8888/home/";
     $expectedResult = "mysite.com";
     $newURL = TranslatableDomains::setDomainByPageLocale($url);
     $newURLTLD = TranslatableDomains::getTLD($newURL);
     $this->assertTrue($newURLTLD == $expectedResult, "Failed converting {$url} to {$expectedResult}");
     Translatable::set_current_locale('de_DE');
     $url = "http://mysite.com/home-de/";
     $expectedResult = "another.de";
     $newURL = TranslatableDomains::setDomainByPageLocale($url);
     $newURLTLD = TranslatableDomains::getTLD($newURL);
     $this->assertTrue($newURLTLD == $expectedResult, "Failed converting {$url} to {$expectedResult}");
     Translatable::set_current_locale('en_GB');
     $url = "http://sub.sub.mysite.com/home-gb/";
     $expectedResult = "mysite.co.uk";
     $newURL = TranslatableDomains::setDomainByPageLocale($url);
     $newURLTLD = TranslatableDomains::getTLD($newURL);
     $this->assertTrue($newURLTLD == $expectedResult, "Failed converting {$url} to {$expectedResult}");
     Translatable::set_current_locale('fr_FR');
     $url = "http://sub.localhost-jp/home-fr/";
     $expectedResult = "localhost-fr";
     $newURL = TranslatableDomains::setDomainByPageLocale($url);
     $newURLTLD = TranslatableDomains::getTLD($newURL);
     $this->assertTrue($newURLTLD == $expectedResult, "Failed converting {$url} to {$expectedResult}");
     Translatable::set_current_locale('ja_JP');
     $url = "http://localhost-jp:8888/home-jp/";
     $expectedResult = "localhost-jp";
     $newURL = TranslatableDomains::setDomainByPageLocale($url);
     $newURLTLD = TranslatableDomains::getTLD($newURL);
     $this->assertTrue($newURLTLD == $expectedResult, "Failed converting {$url} to {$expectedResult}");
     Translatable::set_current_locale($orig_locale);
 }