diff --git a/main/inc/global.inc.php b/main/inc/global.inc.php index 27e25e7aec..ee7414ced4 100755 --- a/main/inc/global.inc.php +++ b/main/inc/global.inc.php @@ -463,34 +463,34 @@ if (isset($language_file)) { $language_files = array_merge($language_files, $language_file); } } - +// if a set of language files has been properly defined if (is_array($language_files)) { + // if the sub-language feature is on if (api_get_setting('allow_use_sub_language') == 'true') { - foreach ($language_files as $index => $language_file) { + require_once api_get_path(SYS_CODE_PATH).'admin/sub_language.class.php'; + $parent_path = SubLanguageManager::get_parent_language_path($language_interface); + foreach ($language_files as $index => $language_file) { + // include English include $langpath.'english/'.$language_file.'.inc.php'; - $langfile = $langpath.$language_interface.'/'.$language_file.'.inc.php'; - - $tbl_admin_languages = Database :: get_main_table(TABLE_MAIN_LANGUAGE); - $sql_sub_language = 'SELECT dokeos_folder FROM '.$tbl_admin_languages.' WHERE parent_id=(SELECT id FROM '.$tbl_admin_languages.' WHERE dokeos_folder="'.Database::escape_string($language_interface).'" AND ISNULL(parent_id))'; - - $rs_sub_language = Database::query($sql_sub_language); - $num_row_sub_language = Database::num_rows($rs_sub_language); - - if (file_exists($langfile)) { - include $langfile; - for ($i = 0; $i < $num_row_sub_language; $i++) { - $row_sub_language = Database::result($rs_sub_language, $i, 'dokeos_folder'); - $sub_langfile = $langpath.$row_sub_language.'/'.$language_file.'.inc.php'; - if (file_exists($sub_langfile)) { - include $sub_langfile; - } - } - + // prepare string for current language and its parent + $lang_file = $langpath.$language_interface.'/'.$language_file.'.inc.php'; + $parent_lang_file = $langpath.$parent_path.'/'.$language_file.'.inc.php'; + // load the parent language file first + if (file_exists($parent_lang_file)) { + include $parent_lang_file; + } + // overwrite the parent language translations if there is a child + if (file_exists($lang_file)) { + include $lang_file; } } } else { + // if the sub-languages feature is not on, then just load the + // set language interface foreach ($language_files as $index => $language_file) { + // include English include $langpath.'english/'.$language_file.'.inc.php'; + // prepare string for current language $langfile = $langpath.$language_interface.'/'.$language_file.'.inc.php'; if (file_exists($langfile)) { include $langfile;