mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
parent
afe06661ef
commit
c78c0aa828
@ -2224,12 +2224,19 @@ class i18n extends Object implements TemplateGlobalProvider {
|
||||
$allLocales = Config::inst()->get('i18n', 'all_locales');
|
||||
$moduleLocales = scandir("{$module}/lang/");
|
||||
foreach($moduleLocales as $moduleLocale) {
|
||||
preg_match('/(.*)\.[\w\d]+$/',$moduleLocale, $matches);
|
||||
if($locale = @$matches[1]) {
|
||||
// Normalize locale to include likely region tag.
|
||||
$locale = pathinfo($moduleLocale, PATHINFO_FILENAME);
|
||||
$ext = pathinfo($moduleLocale, PATHINFO_EXTENSION);
|
||||
if($locale && in_array($ext, array('php','yml'))) {
|
||||
// Normalize locale to include likely region tag, avoid repetition in locale labels
|
||||
// TODO Replace with CLDR list of actually available languages/regions
|
||||
$locale = str_replace('-', '_', self::get_locale_from_lang($locale));
|
||||
$locales[$locale] = (isset($allLocales[$locale])) ? $allLocales[$locale] : $locale;
|
||||
// Only allow explicitly registered locales, otherwise we'll get into trouble
|
||||
// if the locale doesn't exist in Zend's CLDR data
|
||||
$labelLocale = str_replace('-', '_', self::get_locale_from_lang($locale));
|
||||
if(isset(self::$all_locales[$locale])) {
|
||||
$locales[$locale] = self::$all_locales[$locale];
|
||||
} else if(isset(self::$all_locales[$labelLocale])) {
|
||||
$locales[$locale] = self::$all_locales[$labelLocale];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user