X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flanguage-functions.php;h=5e393b722519d8ee0bb5cb9153cc1e70db0455a7;hp=f2fe7a9536d422c83e12a0a6c2a53c94b503b724;hb=8fad776382e63b3f73f8dbe289f229d79cfc2c22;hpb=a2ca374f65976d21651fffb64a78d3a9678bb3b8 diff --git a/inc/language-functions.php b/inc/language-functions.php index f2fe7a9536..5e393b7225 100644 --- a/inc/language-functions.php +++ b/inc/language-functions.php @@ -1,7 +1,7 @@ '; + //* DEBUG: */ debugOutput(__FUNCTION__ . ':' . $ext_name . '=' . $languageInclude . '=' . intval(isIncludeReadable($languageInclude))); } // END - if // Return it @@ -161,13 +194,13 @@ function loadLanguageFile ($ext_name = 'none') { // Set default language if it is not (yet) set if (is_null($currLanguage)) { // Get it from config - $currLanguage = getConfig('DEFAULT_LANG'); + $currLanguage = getDefaultLanguage(); // And save it in session setLanguage($currLanguage); } // END - if - // Do we have the language file NOT? + // Is there the language file NOT? if (!isLanguageIncludeReadable($ext_name)) { // Switch to default (DO NOT CHANGE!!!) setLanguage('de'); @@ -180,7 +213,7 @@ function loadLanguageFile ($ext_name = 'none') { if (isLanguageIncludeReadable($ext_name)) { // Load language file loadLanguageInclude($ext_name); - } elseif ((isDebugModeEnabled()) && (getOutputMode() == 0) && ($ext_name != 'sql_patches') && (substr($ext_name, 0, 10) != 'admintheme')) { + } elseif ((isDebugModeEnabled()) && (isHtmlOutputMode()) && ($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, @@ -213,9 +246,121 @@ function loadLanguageInclude ($ext_name = 'none') { loadIncludeOnce($languageInclude); } else { // Not readable! - DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Language file %s not found or readable.", $languageInclude)); + 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; + } // END - if + + // *Does* match by default + $matches = true; + + // Is one not readable? + if (!isIncludeReadable($source)) { + // Please report this bug! + reportBug(__FUNCTION__, __LINE__, 'Source file ' . $source . ' is not readable.'); + } elseif (!isIncludeReadable($target)) { + // Please report this bug! + reportBug(__FUNCTION__, __LINE__, 'Target file ' . $target . ' is not readable.'); + } elseif ($targetLanguage == getCurrentLanguage()) { + // Must be different + reportBug(__FUNCTION__, __LINE__, '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); + + // Is there 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]; +} + +// Checks whether the given message is masked +function isMessageMasked ($messageId, $strict = true) { + // Is the message id valid? + if (($strict === true) && (!isMessageIdValid($messageId))) { + // No, then abort here + reportBug(__FUNCTION__, __LINE__, 'Invalid message id ' . $messageId . ' detected.'); + } // END - if + + // Now simply check it + $masked = isInString('%', getMessage($messageId)); + + // Return result + return $masked; +} + // [EOF] ?>