Added fallback to english for missing language strings.

This commit is contained in:
Dmitry Khomutov 2015-10-21 22:20:12 +06:00
parent 708889af63
commit 7f2c3e9cc0

View file

@ -18,10 +18,26 @@ use b8\Config;
*/
class Lang
{
protected static $language = null;
protected static $strings = array();
/**
* @var string
*/
protected static $language = null;
/**
* @var array
*/
protected static $languages = array();
/**
* @var array
*/
protected static $strings = array();
/**
* @var array
*/
protected static $en_strings = array();
/**
* Get a specific string from the language file.
*
@ -35,6 +51,9 @@ class Lang
if (array_key_exists($string, self::$strings)) {
$vars[0] = self::$strings[$string];
return call_user_func_array('sprintf', $vars);
} elseif ('en' !== self::$language && array_key_exists($string, self::$en_strings)) {
$vars[0] = self::$en_strings[$string];
return call_user_func_array('sprintf', $vars);
}
return '%%MISSING STRING: ' . $string . '%%';
@ -111,6 +130,7 @@ class Lang
*/
public static function init(Config $config)
{
self::$en_strings = self::loadLanguage('en');
self::loadAvailableLanguages();
// Try cookies first:
@ -140,17 +160,22 @@ class Lang
// Fall back to English:
self::$language = 'en';
self::$strings = self::loadLanguage();
self::$strings = self::loadLanguage();
}
/**
* Load a specific language file.
*
* @param string $language
*
* @return string[]|null
*/
protected static function loadLanguage()
protected static function loadLanguage($language = null)
{
$langFile = PHPCI_DIR . 'PHPCI/Languages/lang.' . self::$language . '.php';
$language = $language
? $language
: self::$language;
$langFile = PHPCI_DIR . 'PHPCI/Languages/lang.' . $language . '.php';
if (!file_exists($langFile)) {
return null;