]> source.dussan.org Git - nextcloud-server.git/commitdiff
Be smarter when checking single app language availability
authorBart Visscher <bartv@thisnet.nl>
Sat, 16 Jun 2012 18:52:01 +0000 (20:52 +0200)
committerBart Visscher <bartv@thisnet.nl>
Sat, 16 Jun 2012 18:52:10 +0000 (20:52 +0200)
lib/l10n.php

index 3596c992baede8d07ff3d368f61f05d4f738861b..ba4bf23780e62274f3ed13f1703b5e94837a1828 100644 (file)
@@ -228,23 +228,29 @@ class OC_L10N{
                        return self::$language;
                }
 
-               $available = array();
-               if(is_array($app)){
-                       $available = $app;
-               }
-               else{
-                       $available=self::findAvailableLanguages($app);
-               }
                if(OC_User::getUser() && OC_Preferences::getValue(OC_User::getUser(), 'core', 'lang')){
                        $lang = OC_Preferences::getValue(OC_User::getUser(), 'core', 'lang');
                        self::$language = $lang;
-                       if(array_search($lang, $available) !== false){
+                       if(is_array($app)){
+                               $available = $app;
+                               $lang_exists = array_search($lang, $available) !== false;
+                       }
+                       else {
+                               $lang_exists = self::languageExists($app, $lang);
+                       }
+                       if($lang_exists){
                                return $lang;
                        }
                }
 
                if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
                        $accepted_languages = preg_split('/,\s*/', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+                       if(is_array($app)){
+                               $available = $app;
+                       }
+                       else{
+                               $available = self::findAvailableLanguages($app);
+                       }
                        foreach($accepted_languages as $i){
                                $temp = explode(';', $i);
                                if(array_search($temp[0], $available) !== false){
@@ -296,4 +302,15 @@ class OC_L10N{
                }
                return $available;
        }
+
+       public static function languageExists($app, $lang){
+               if ($lang == 'en'){//english is always available
+                       return true;
+               }
+               $dir = self::findI18nDir($app);
+               if(is_dir($dir)){
+                       return file_exists($dir.'/'.$lang.'.php');
+               }
+               return false;
+       }
 }