]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
fixed logic that caused plugin language files to not be loaded
authorcash <cash.costello@gmail.com>
Wed, 1 Feb 2012 23:57:00 +0000 (18:57 -0500)
committercash <cash.costello@gmail.com>
Wed, 1 Feb 2012 23:57:00 +0000 (18:57 -0500)
engine/lib/languages.php
engine/lib/plugins.php

index c6e2fc15236d5cd65d3b41195268c82b8dbaa8ae..bf6829a39912e4122fcfa5c6504b10c685b54329 100644 (file)
@@ -145,9 +145,16 @@ function elgg_echo($message_key, $args = array(), $language = "") {
 function register_translations($path, $load_all = false) {
        global $CONFIG;
 
+       static $load_from_cache;
+       static $cache_loaded_langs;
+       if (!isset($load_from_cache)) {
+               $load_from_cache = $CONFIG->system_cache_enabled;
+               $cache_loaded_langs = array();
+       }
+
        $path = sanitise_filepath($path);
 
-       // Make a note of this path just incase we need to register this language later
+       // Make a note of this path just in case we need to register this language later
        if (!isset($CONFIG->language_paths)) {
                $CONFIG->language_paths = array();
        }
@@ -164,36 +171,29 @@ function register_translations($path, $load_all = false) {
 
        $load_language_files = array_unique($load_language_files);
 
-       if ($CONFIG->system_cache_enabled && !$load_all) {
+       if ($load_from_cache && !$load_all) {
                // load language files from cache
                $data = array();
-               $anything_loaded = false;
-               $missing_cache = false;
                foreach ($load_language_files as $lang_file) {
                        $lang = substr($lang_file, 0, strpos($lang_file, '.'));
-                       // only load if this language isn't already loaded
-                       if (!isset($CONFIG->translations) || !isset($CONFIG->translations[$lang])) {
+                       if (!isset($cache_loaded_langs[$lang])) {
                                $data[$lang] = elgg_load_system_cache($lang_file);
-                               if (!$data[$lang]) {
-                                       $missing_cache = true;
-                                       break;
+                               if ($data[$lang]) {
+                                       $cache_loaded_langs[$lang] = true;
                                } else {
-                                       $anything_loaded = true;
+                                       // this language file not cached yet
+                                       $load_from_cache = false;
                                }
                        }
                }
 
-               // did we load all requested languages from the cache
-               if (!$missing_cache && $anything_loaded) {
+               // are we still suppose to load from cache
+               if ($load_from_cache) {
                        foreach ($data as $lang => $map) {
                                add_translation($lang, unserialize($map));
                        }
-
                        $CONFIG->i18n_loaded_from_cache = true;
                        return true;
-               } else if (!$missing_cache && !$anything_loaded) {
-                       // everything previously loaded from cache
-                       return true;
                }
        }
 
@@ -220,6 +220,9 @@ function register_translations($path, $load_all = false) {
 
        elgg_log("Translations loaded from: $path");
 
+       // make sure caching code saves language data if system cache is on
+       $CONFIG->i18n_loaded_from_cache = false;
+
        return $return;
 }
 
index 488387ba7b2b9970fa4041c6f6da87732b09a673..07b21d276b3727490798b62f2260adf38426f371 100644 (file)
@@ -303,9 +303,6 @@ function elgg_load_plugins() {
 
        if (elgg_get_config('system_cache_loaded')) {
                $start_flags = $start_flags & ~ELGG_PLUGIN_REGISTER_VIEWS;
-               if ($CONFIG->i18n_loaded_from_cache) {
-                       $start_flags = $start_flags & ~ELGG_PLUGIN_REGISTER_LANGUAGES;
-               }
        }
 
        $return = true;