X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flanguage-functions.php;h=0db9afe7130c7ff49f4be9ce105ca9522a2fe7e1;hp=cb1f925dbcb9a016f1cbd89d9f164312573bef82;hb=49acdb7a7adbcf25a8e8683b5581bfcec72b23bd;hpb=9afd6ec5878544a7982c50ed9c0dd7de37606d5b diff --git a/inc/language-functions.php b/inc/language-functions.php index cb1f925dbc..0db9afe713 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 +188,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,9 +207,9 @@ 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", + 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() @@ -190,7 +217,7 @@ function loadLanguageFile ($ext_name = 'none') { } // Check for installation mode - if ((isInstallationPhase()) || (!isAdminRegistered())) { + if ((isInstaller()) || (!isAdminRegistered())) { // Load language file loadLanguageInclude('install'); } // END - if @@ -201,10 +228,10 @@ function loadLanguageInclude ($ext_name = 'none') { // Generate filename if ($ext_name == 'none') { // Generic - $languageInclude = sprintf("inc/language/%s.php", getLanguage()); + $languageInclude = sprintf('inc/language/%s.php', getLanguage()); } else { // Extension's language file - $languageInclude = sprintf("inc/language/%s_%s.php", $ext_name, getLanguage()); + $languageInclude = sprintf('inc/language/%s_%s.php', $ext_name, getLanguage()); } // Check it before loading @@ -213,8 +240,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 + $isMasked = isInString('%', getMessage($messageId)); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'messageId=' . $messageId . ',isMasked=' . intval($isMasked)); + + // Return result + return $isMasked; } // [EOF]