summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2015-01-06 21:10:51 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2015-01-06 21:10:51 +0100
commitaddcea9cd45a87f2ae56f879bad86425efc16fba (patch)
tree2ee5d9b04e7ff01ae632a5f7747022bd0cc2ac09
parent5f9672111f86c693d843138c00934a6c3eeede45 (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.php18
-rw-r--r--app/views/configure/display.phtml2
-rw-r--r--app/views/user/manage.phtml2
-rw-r--r--lib/Minz/Session.php2
-rw-r--r--lib/Minz/Translate.php31
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;
}
/**