added get_existing_translations(), adapted to coding conventions

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@42725 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2007-09-27 20:47:16 +00:00
parent eb45e6ec6d
commit 77cebb3352

View File

@ -11,7 +11,7 @@ class i18n extends Controller {
/** /**
* This static variable is used to store the current defined locale. Default value is 'en_US' * This static variable is used to store the current defined locale. Default value is 'en_US'
*/ */
static $currentlocale = 'en_US'; static $current_locale = 'en_US';
/** /**
* This is the locale in which generated language files are (we assume US English) * This is the locale in which generated language files are (we assume US English)
@ -25,7 +25,7 @@ class i18n extends Controller {
* *
* @var array * @var array
*/ */
static $allLocales = array( static $all_locales = array(
'aa_DJ' => 'Afar (Djibouti)', 'aa_DJ' => 'Afar (Djibouti)',
'ab_GE' => 'Abkhazian (Georgia)', 'ab_GE' => 'Abkhazian (Georgia)',
'abr_GH' => 'Abron (Ghana)', 'abr_GH' => 'Abron (Ghana)',
@ -199,7 +199,7 @@ class i18n extends Controller {
'en_TZ' => 'English (Tanzania)', 'en_TZ' => 'English (Tanzania)',
'en_UG' => 'English (Uganda)', 'en_UG' => 'English (Uganda)',
'en_UM' => 'English (United States Minor Outlying Islands)', 'en_UM' => 'English (United States Minor Outlying Islands)',
// 'en_US' => 'English (United States)', 'en_US' => 'English (United States)',
'en_VC' => 'English (Saint Vincent and the Grenadines)', 'en_VC' => 'English (Saint Vincent and the Grenadines)',
'en_VG' => 'English (British Virgin Islands)', 'en_VG' => 'English (British Virgin Islands)',
'en_VI' => 'English (U.S. Virgin Islands)', 'en_VI' => 'English (U.S. Virgin Islands)',
@ -601,7 +601,7 @@ class i18n extends Controller {
* A list of commonly used languages, in the form * A list of commonly used languages, in the form
* langcode => array( EnglishName, NativeName) * langcode => array( EnglishName, NativeName)
*/ */
static $commonLanguages = array( static $common_languages = array(
'af' => array('Afrikaans', 'Afrikaans'), 'af' => array('Afrikaans', 'Afrikaans'),
'sq' => array('Albanian', 'shqip'), 'sq' => array('Albanian', 'shqip'),
'ar' => array('Arabic', 'العربية'), 'ar' => array('Arabic', 'العربية'),
@ -695,7 +695,7 @@ class i18n extends Controller {
*/ */
static function get_common_languages($native = false) { static function get_common_languages($native = false) {
$languages = array(); $languages = array();
foreach (i18n::$commonLanguages as $code => $name) { foreach (i18n::$common_languages as $code => $name) {
$languages[$code] = ($native ? $name[1] : $name[0]); $languages[$code] = ($native ? $name[1] : $name[0]);
} }
return $languages; return $languages;
@ -707,7 +707,7 @@ class i18n extends Controller {
* @return list of languages in the form 'code' => 'name' * @return list of languages in the form 'code' => 'name'
*/ */
static function get_locale_list() { static function get_locale_list() {
return i18n::$allLocales; return i18n::$all_locales;
} }
/** /**
@ -716,20 +716,48 @@ class i18n extends Controller {
* @param string $className Look for languages in elements of this class * @param string $className Look for languages in elements of this class
* @return array Map of languages in the form langCode => langName * @return array Map of languages in the form langCode => langName
*/ */
static function get_existing_languages($className = 'SiteTree', $where = '') { static function get_existing_content_languages($className = 'SiteTree', $where = '') {
if(!Translatable::is_enabled()) return false; if(!Translatable::is_enabled()) return false;
$query = new SQLQuery('Lang',$className.'_lang',$where,"",'Lang'); $query = new SQLQuery('Lang',$className.'_lang',$where,"",'Lang');
$dbLangs = $query->execute()->column(); $dbLangs = $query->execute()->column();
$langlist = array_merge((array)Translatable::default_lang(), (array)$dbLangs); $langlist = array_merge((array)Translatable::default_lang(), (array)$dbLangs);
$returnMap = array(); $returnMap = array();
$allCodes = array_merge(i18n::$allLocales, i18n::$commonLanguages); $allCodes = array_merge(i18n::$all_locales, i18n::$common_languages);
foreach ($langlist as $langCode) { foreach ($langlist as $langCode) {
$returnMap[$langCode] = (is_array($allCodes[$langCode]) ? $allCodes[$langCode][0] : $allCodes[$langCode]); $returnMap[$langCode] = (is_array($allCodes[$langCode]) ? $allCodes[$langCode][0] : $allCodes[$langCode]);
} }
return $returnMap; return $returnMap;
} }
/**
* Searches the root-directory for module-directories
* (identified by having a _config.php on their first directory-level).
* Returns all found locales.
*
* @return array
*/
static function get_existing_translations() {
$locales = array();
$baseDir = Director::baseFolder();
$modules = scandir($baseDir);
foreach($modules as $module) {
$moduleDir = $baseDir . DIRECTORY_SEPARATOR . $module;
$langDir = $moduleDir . DIRECTORY_SEPARATOR . "lang";
if(is_dir($moduleDir) && is_file($moduleDir . DIRECTORY_SEPARATOR . "_config.php") && is_dir($langDir)) {
$moduleLocales = scandir($langDir);
foreach($moduleLocales as $moduleLocale) {
if(preg_match('/(.*)\.php$/',$moduleLocale, $matches)) {
$locales[$matches[1]] = self::$all_locales[$matches[1]];
}
}
}
}
return $locales;
}
/** /**
* Get a name from a language code * Get a name from a language code
* *
@ -738,7 +766,7 @@ class i18n extends Controller {
* @return Name of the language * @return Name of the language
*/ */
static function get_language_name($code, $native = false) { static function get_language_name($code, $native = false) {
$langs = i18n::$commonLanguages; $langs = i18n::$common_languages;
return ($native ? $langs[$code][1] : $langs[$code][0]); return ($native ? $langs[$code][1] : $langs[$code][0]);
} }
@ -937,7 +965,7 @@ class i18n extends Controller {
* @param string $locale Locale to be set * @param string $locale Locale to be set
*/ */
static function set_locale($locale) { static function set_locale($locale) {
if ($locale) i18n::$currentlocale = $locale; if ($locale) i18n::$current_locale = $locale;
} }
/** /**
@ -946,7 +974,7 @@ class i18n extends Controller {
* @return string Current locale in the system * @return string Current locale in the system
*/ */
static function get_locale() { static function get_locale() {
return i18n::$currentlocale; return i18n::$current_locale;
} }
/** /**