X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flanguage-functions.php;h=f8e9d6162288b29089a2ba92f94bc9da481dc2ad;hp=a148f534f5e343365b6120ed7707d9060d470ca4;hb=25b4a580b4c7e0d429eb8e436785d3c2ef304f8e;hpb=66b91ce490ab549425619c95fc12086e126d541b diff --git a/inc/language-functions.php b/inc/language-functions.php index a148f534f5..f8e9d61622 100644 --- a/inc/language-functions.php +++ b/inc/language-functions.php @@ -1,7 +1,7 @@ '; + } // END - if + + // Return it + return $GLOBALS['lang_inc'][$ext_name]; +} + // Load the current language file or fixes it to 'de' -// If ext_name is empty, load general language support, else load extension's -// language file. -function loadLanguageFile ($ext_name = '') { +// 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 - $mx_lang = getSession('mx_lang'); + $currLanguage = getLanguage(); // Set default language if it is not (yet) set - if (is_null($mx_lang)) $mx_lang = getConfig('DEFAULT_LANG'); + if (is_null($currLanguage)) { + // Get it from config + $currLanguage = getConfig('DEFAULT_LANG'); - // Generate filename - if (empty($ext_name)) { - // Generic - $languageInclude = sprintf("inc/language/%s.php", SQL_ESCAPE($mx_lang)); - } else { - // Extension's language file - $languageInclude = sprintf("inc/language/%s_%s.php", $ext_name, getLanguage()); - } + // And save it in session + setLanguage($currLanguage); + } // END - if - // Look for file if no extension name is provided - if ((empty($ext_name)) && (isIncludeReadable($languageInclude) === false)) { + // Do we have the language file NOT? + if (!isLanguageIncludeReadable($ext_name)) { // Switch to default (DO NOT CHANGE!!!) setLanguage('de'); - $languageInclude = 'inc/language/de.php'; // And set it temporarily setConfigEntry('DEFAULT_LANG', 'de'); } // END - if // Is the file there? - if (isIncludeReadable($languageInclude)) { + if (isLanguageIncludeReadable($ext_name)) { // Load language file - loadIncludeOnce($languageInclude); - } elseif ((isDebugModeEnabled()) && ($ext_name != 'sql_patches') && (substr($ext_name, 0, 10) != 'admintheme')) { + loadLanguageInclude($ext_name); + } elseif ((isDebugModeEnabled()) && (getOutputMode() == '0') && ($ext_name != 'sql_patches') && (substr($ext_name, 0, 10) != 'admintheme')) { // No language file is not so good... - DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("NOTICE: Extension %s has no language file or we cannot read from it. lang=%s", - $ext_name, getLanguage() + 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 ((isInstalling()) || (!isInstalled()) || (!isAdminRegistered())) { - // Load matching language file - loadInclude('inc/language/install_' . getSession('mx_lang') . '.php'); + 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]