From 3d0c4a1615b4ac63e713826a4be59e0817f9751e Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 29 Apr 2009 23:15:38 +0000 Subject: [PATCH] BUGFIX Fixed i18n::get_locale_from_lang() to return original parameter if it detects a fully qualified locale that shouldn't be converted git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@75675 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- core/i18n.php | 4 +++- tests/i18n/i18nTest.php | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/core/i18n.php b/core/i18n.php index 7097d2fb4..42ed4d127 100755 --- a/core/i18n.php +++ b/core/i18n.php @@ -1603,7 +1603,9 @@ class i18n extends Object { * @return string Long locale, e.g. "en_US" */ static function get_locale_from_lang($lang) { - if(isset(self::$likely_subtags[$lang])) { + if(preg_match('/\-|_/', $lang)) { + return $lang; + } else if(isset(self::$likely_subtags[$lang])) { return self::$likely_subtags[$lang]; } else { return $lang . '_' . strtoupper($lang); diff --git a/tests/i18n/i18nTest.php b/tests/i18n/i18nTest.php index 51b53edee..bdbd8fca5 100644 --- a/tests/i18n/i18nTest.php +++ b/tests/i18n/i18nTest.php @@ -198,6 +198,12 @@ class i18nTest extends SapphireTest { i18n::set_locale($oldLocale); } + + function testGetLocaleFromLang() { + $this->assertEquals('en_US', i18n::get_locale_from_lang('en')); + $this->assertEquals('de_DE', i18n::get_locale_from_lang('de_DE')); + $this->assertEquals('xy_XY', i18n::get_locale_from_lang('xy')); + } } class i18nTest_DataObject extends DataObject implements TestOnly {