diff options
| author | 2015-01-06 21:10:51 +0100 | |
|---|---|---|
| committer | 2015-01-06 21:10:51 +0100 | |
| commit | addcea9cd45a87f2ae56f879bad86425efc16fba (patch) | |
| tree | 2ee5d9b04e7ff01ae632a5f7747022bd0cc2ac09 | |
| parent | 5f9672111f86c693d843138c00934a6c3eeede45 (diff) | |
Fix i18n loading and availableLanguages calls
- Change the way to init i18n
- Add a availableLanguages() method to Minz_Translate
See https://github.com/FreshRSS/FreshRSS/issues/730
| -rw-r--r-- | app/FreshRSS.php | 18 | ||||
| -rw-r--r-- | app/views/configure/display.phtml | 2 | ||||
| -rw-r--r-- | app/views/user/manage.phtml | 2 | ||||
| -rw-r--r-- | lib/Minz/Session.php | 2 | ||||
| -rw-r--r-- | lib/Minz/Translate.php | 31 |
5 files changed, 40 insertions, 15 deletions
diff --git a/app/FreshRSS.php b/app/FreshRSS.php index a53174394..7b5df7ced 100644 --- a/app/FreshRSS.php +++ b/app/FreshRSS.php @@ -31,15 +31,25 @@ class FreshRSS extends Minz_FrontController { // Load context and configuration. FreshRSS_Context::init(); - // Init i18n. - Minz_Session::_param('language', FreshRSS_Context::$user_conf->language); - Minz_Translate::init(); - + $this->initI18n(); $this->loadStylesAndScripts(); $this->loadNotifications(); $this->loadExtensions(); } + private function initI18n() { + $lang = Minz_Session::param('language'); + if ($lang === false) { + Minz_Session::_param('language', FreshRSS_Context::$user_conf->language); + $lang = FreshRSS_Context::$user_conf->language; + } + + Minz_Translate::init(array( + 'en' => 'English', + 'fr' => 'Français', + ), $lang); + } + private function loadStylesAndScripts() { $theme = FreshRSS_Themes::load(FreshRSS_Context::$user_conf->theme); if ($theme) { diff --git a/app/views/configure/display.phtml b/app/views/configure/display.phtml index b68bf925b..36a075ea7 100644 --- a/app/views/configure/display.phtml +++ b/app/views/configure/display.phtml @@ -10,7 +10,7 @@ <label class="group-name" for="language"><?php echo _t('conf.display.language'); ?></label> <div class="group-controls"> <select name="language" id="language"> - <?php $languages = FreshRSS_Context::$user_conf->availableLanguages(); ?> + <?php $languages = Minz_Translate::availableLanguages(); ?> <?php foreach ($languages as $short => $lib) { ?> <option value="<?php echo $short; ?>"<?php echo FreshRSS_Context::$user_conf->language === $short ? ' selected="selected"' : ''; ?>><?php echo $lib; ?></option> <?php } ?> diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml index 6e472ca0b..11c42a857 100644 --- a/app/views/user/manage.phtml +++ b/app/views/user/manage.phtml @@ -10,7 +10,7 @@ <label class="group-name" for="new_user_language"><?php echo _t('admin.user.language'); ?></label> <div class="group-controls"> <select name="new_user_language" id="new_user_language"> - <?php $languages = FreshRSS_Context::$user_conf->availableLanguages(); ?> + <?php $languages = Minz_Translate::availableLanguages(); ?> <?php foreach ($languages as $short => $lib) { ?> <option value="<?php echo $short; ?>"<?php echo FreshRSS_Context::$user_conf->language === $short ? ' selected="selected"' : ''; ?>><?php echo $lib; ?></option> <?php } ?> diff --git a/lib/Minz/Session.php b/lib/Minz/Session.php index af4de75bb..cfe8debe9 100644 --- a/lib/Minz/Session.php +++ b/lib/Minz/Session.php @@ -55,7 +55,7 @@ class Minz_Session { if (!$force) { self::_param('language', $language); - Minz_Translate::reset(); + Minz_Translate::reset($language); } } diff --git a/lib/Minz/Translate.php b/lib/Minz/Translate.php index 39200e81f..1b4102ca9 100644 --- a/lib/Minz/Translate.php +++ b/lib/Minz/Translate.php @@ -10,6 +10,11 @@ */ class Minz_Translate { /** + * $lang_list is the list of available languages. + */ + private static $lang_list = array(); + + /** * $lang_name is the name of the current language to use. */ private static $lang_name; @@ -25,20 +30,30 @@ class Minz_Translate { private static $translates = array(); /** - * Load $lang_name and $lang_path based on configuration and selected language. + * Init the translation object. + * @param $lang_list the list of available languages. + * @param $lang_name the lang to show. */ - public static function init() { - $conf = Minz_Configuration::get('system'); - $l = $conf->language; - self::$lang_name = Minz_Session::param('language', $l); + public static function init($lang_list, $lang_name) { + self::$lang_list = $lang_list; + self::$lang_name = $lang_name; self::$lang_path = APP_PATH . '/i18n/' . self::$lang_name . '/'; } /** - * Alias for init(). + * Reset the translation object with a new language. + * @param $lang_name the new language to use + */ + public static function reset($lang_name) { + self::init(self::$lang_list, $lang_name); + } + + /** + * Return the list of available languages. + * @return an array. */ - public static function reset() { - self::init(); + public static function availableLanguages() { + return self::$lang_list; } /** |
