merged branch astina/fallback-locale-fix (PR #5746)

This PR was submitted for the master branch but it was merged into the 2.1 branch instead (closes #5746).

Commits
-------

96d87ad [Locale] fixed fallback locale

Discussion
----------

[Locale] fixed fallback locale

The `getFallbackLocale()` method in `Symfony\Component\Locale\Locale` did not return a fallback locale if the current locale (`Locale::getDefault()`) was a 5-char locale like de_CH.

`LocaleTest` failed when the locale was set to de_CH before running (see changes in LocaleTest).

(second attempt after messing up PR#5641)

---------------------------------------------------------------------------

by eriksencosta at 2012-10-15T05:08:25Z

Original PR: #5641.
This commit is contained in:
Fabien Potencier 2012-10-19 13:24:34 +02:00
commit dba9bc3595
2 changed files with 10 additions and 5 deletions

View File

@ -285,12 +285,8 @@ class Locale extends \Locale
*/
protected static function getFallbackLocale($locale)
{
if ($locale === self::getDefault()) {
return null;
}
if (false === $pos = strrpos($locale, '_')) {
return self::getDefault();
return null;
}
return substr($locale, 0, $pos);

View File

@ -19,6 +19,9 @@ class LocaleTest extends LocaleTestCase
public function testGetDisplayCountriesReturnsFullListForSubLocale()
{
$this->skipIfIntlExtensionIsNotLoaded();
Locale::setDefault('de_CH');
$countriesDe = Locale::getDisplayCountries('de');
$countriesDeCh = Locale::getDisplayCountries('de_CH');
@ -30,6 +33,9 @@ class LocaleTest extends LocaleTestCase
public function testGetDisplayLanguagesReturnsFullListForSubLocale()
{
$this->skipIfIntlExtensionIsNotLoaded();
Locale::setDefault('de_CH');
$languagesDe = Locale::getDisplayLanguages('de');
$languagesDeCh = Locale::getDisplayLanguages('de_CH');
@ -41,6 +47,9 @@ class LocaleTest extends LocaleTestCase
public function testGetDisplayLocalesReturnsFullListForSubLocale()
{
$this->skipIfIntlExtensionIsNotLoaded();
Locale::setDefault('de_CH');
$localesDe = Locale::getDisplayLocales('de');
$localesDeCh = Locale::getDisplayLocales('de_CH');