'; } // END - if // Return it return $GLOBALS['lang_inc'][$ext_name]; } // Load the current language file or fixes it to 'de' // If ext_name is 'none', load general language support, else load extension's // language file. In installation phase load the install language file. function loadLanguageFile ($ext_name = 'none') { // Try to get language from session $currLanguage = getLanguage(); // Set default language if it is not (yet) set if (is_null($currLanguage)) { // Get it from config $currLanguage = getConfig('DEFAULT_LANG'); // And save it in session setLanguage($currLanguage); } // END - if // Do we have the language file NOT? if (!isLanguageIncludeReadable($ext_name)) { // Switch to default (DO NOT CHANGE!!!) setLanguage('de'); // And set it temporarily setConfigEntry('DEFAULT_LANG', 'de'); } // END - if // Is the file there? if (isLanguageIncludeReadable($ext_name)) { // Load language file loadLanguageInclude($ext_name); } elseif ((isDebugModeEnabled()) && (getOutputMode() == '0') && ($ext_name != 'sql_patches') && (substr($ext_name, 0, 10) != 'admintheme')) { // No language file is not so good... logDebugMessage(__FUNCTION__, __LINE__, sprintf("NOTICE: Extension %s has no language file or we cannot read from it. lang=%s, mode=%s", $ext_name, getLanguage(), getExtensionMode() )); } // Check for installation mode if ((isInstallationPhase()) || (!isAdminRegistered())) { // Load language file loadLanguageInclude('install'); } // END - if } // Loads the language file function loadLanguageInclude ($ext_name = 'none') { // Generate filename if ($ext_name == 'none') { // Generic $languageInclude = sprintf("inc/language/%s.php", getLanguage()); } else { // Extension's language file $languageInclude = sprintf("inc/language/%s_%s.php", $ext_name, getLanguage()); } // Check it before loading if (isLanguageIncludeReadable($ext_name)) { // Load it loadIncludeOnce($languageInclude); } else { // Not readable! logDebugMessage(__FUNCTION__, __LINE__, sprintf("Language file %s not found or readable.", $languageInclude)); } } // Getter for an array of valid languages with no except by default function getValidLanguages ($except = '') { // @TODO These are all valid languages, again hard-coded $langs = array('de' => 'de', 'en' => 'en'); // Should we keep one out? if (!empty($except)) { // Remove this unset($langs[$except]); } // END - if // Return the array return $langs; } // Compares two language files function ifLanguageFilesCompares ($source, $target, $targetLanguage) { // Init differences $GLOBALS['lang_diff'][$target] = array(); $GLOBALS['lang_diff_count'][$target] = 0; if (!isset($GLOBALS['lang_diff_count']['total'])) $GLOBALS['lang_diff_count']['total'] = 0; // *Does* match by default $matches = true; // Is one not readable? if (!isIncludeReadable($source)) { // Please report this bug! debug_report_bug(__FUNCTION__ . ': Source file ' . $source . ' is not readable.'); } elseif (!isIncludeReadable($target)) { // Please report this bug! debug_report_bug(__FUNCTION__ . ': Target file ' . $target . ' is not readable.'); } elseif ($targetLanguage == getCurrentLanguage()) { // Must be different debug_report_bug(__FUNCTION__ . ': Target language ' . $targetLanguage . ' is same as current.'); } // Backup current messages/language $backupLang = getCurrentLanguage(); $messages[$backupLang] = $GLOBALS['messages'][$backupLang]; $GLOBALS['messages'][$backupLang] = array(); // Both are readable so include current language file $GLOBALS['count'] = false; loadInclude($source); $GLOBALS['msgs'][$source] = $GLOBALS['messages'][$backupLang]; unset($GLOBALS['count']); // Set target language setCurrentLanguage($targetLanguage); // Do we have an array? if (!isset($GLOBALS['messages'][$targetLanguage])) { // Then create it to avoid notice $GLOBALS['messages'][$targetLanguage] = array(); $GLOBALS['msg_count'][$targetLanguage] = 0; } // END - if // Load target language file loadInclude($target); $GLOBALS['msgs'][$target] = $GLOBALS['messages'][$targetLanguage]; // Set backup back setCurrentLanguage($backupLang); $GLOBALS['messages'][$backupLang] = $messages[$backupLang]; unset($messages[$backupLang]); // Do they mismatch? if ((count($GLOBALS['msgs'][$source])) != (count($GLOBALS['msgs'][$target]))) { // Does not match $matches = false; // Check all differences foreach ($GLOBALS['msgs'][$source] as $key => $value) { // Don't we have it? if (!isset($GLOBALS['msgs'][$target][$key])) { // Then add is as difference $GLOBALS['lang_diff'][$target][$key] = $value; // ... and count it $GLOBALS['lang_diff_count'][$target]++; $GLOBALS['lang_diff_count']['total']++; } // END - if } // END - foreach } // END - if // Return result return $matches; } // Getter for getting difference of target file function getLanguageComparisonDifference ($target) { return $GLOBALS['lang_diff_count'][$target]; } // [EOF] ?>