X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Flanguage-functions.php;h=db660ff2572c25b69e311492eb0c31ddca7613fb;hp=906a78dc9766992f0e657e99b3ed492c05416464;hb=e8ca54fe91872ab95a6ffdc4f1268bf18889021d;hpb=263a089d8a499e0e26d0af9e7aa7639f88b8ca60 diff --git a/inc/language-functions.php b/inc/language-functions.php index 906a78dc97..db660ff257 100644 --- a/inc/language-functions.php +++ b/inc/language-functions.php @@ -14,10 +14,9 @@ * $Date:: $ * * $Tag:: 0.2.1-FINAL $ * * $Author:: $ * - * Needs to be in all Files and every File needs "svn propset * - * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * + * Copyright (c) 2009, 2010 by Mailer Developer Team * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -50,7 +49,7 @@ function getMessage ($messageId) { // Is the language string found? if (isMessageIdValid($messageId)) { // Language array element found in small_letters - $return = $GLOBALS['messages'][$messageId]; + $return = $GLOBALS['messages'][getCurrentLanguage()][$messageId]; } else { // Missing language constant logDebugMessage(__FUNCTION__, __LINE__, sprintf("Missing message string %s detected.", $messageId)); @@ -60,61 +59,83 @@ function getMessage ($messageId) { return $return; } +// Getter for message string as a mask +function getMaskedMessage ($messageId, $data) { + // Construct message + $message = sprintf(getMessage($messageId), $data); + + // Return it + return $message; +} + // Init messages function initMessages () { - $GLOBALS['messages'] = array(); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getLanguage()=' . getLanguage()); + $GLOBALS['messages'][getLanguage()] = array(); } -// Add message +// Add messages function addMessages ($messages) { + // Cache current language + $currentLanguage = getCurrentLanguage(); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'currentLanguage=' . $currentLanguage); + // Merge both - $GLOBALS['messages'] = merge_array($GLOBALS['messages'], $messages); + $GLOBALS['messages'][$currentLanguage] = merge_array($GLOBALS['messages'][$currentLanguage], $messages); + + // Don't count them if we don't want it + if (isset($GLOBALS['count'])) { + return; + } // END - if + + // And count them + if (isset($GLOBALS['msg_count'][$currentLanguage])) { + $GLOBALS['msg_count'][$currentLanguage] += count($messages); + } else { + $GLOBALS['msg_count'][$currentLanguage] = count($messages); + } } // Checks wether given message id is valid function isMessageIdValid ($messageId) { - return (isset($GLOBALS['messages'][$messageId])); + return (isset($GLOBALS['messages'][getCurrentLanguage()][$messageId])); } -// "Getter for current language +// Getter for current language function getCurrentLanguage () { return $GLOBALS['language']; } +// Setter for current language +function setCurrentLanguage ($language) { + $GLOBALS['language'] = (string) $language; +} + // "Getter" for language function getLanguage () { // Default is 'de'. DO NOT CHANGE THIS!!! $ret = 'de'; // Set default return value to default language from config - if (isConfigEntrySet('DEFAULT_LANG')) $ret = getConfig('DEFAULT_LANG'); - - // Init variable - $lang = ''; + if (isConfigEntrySet('DEFAULT_LANG')) $ret = getDefaultLanguage(); // Is the variable set - if (isGetRequestElementSet('mx_lang')) { + if (isGetRequestParameterSet('mx_lang')) { // Accept only first 2 chars - $lang = substr(getRequestElement('mx_lang'), 0, 2); + $ret = substr(getRequestParameter('mx_lang'), 0, 2); } elseif (isset($GLOBALS['language'])) { // Use cached $ret = getCurrentLanguage(); - } elseif (!empty($lang)) { - // Check if main language file does exist - if (isIncludeReadable('inc/language/' . $lang . '.php')) { - // Okay found, so let's update cookies - setLanguage($lang); - } // END - if } elseif (isSessionVariableSet('mx_lang')) { // Return stored value from cookie $ret = getSession('mx_lang'); // Fixes a warning before the session has the mx_lang constant - if (empty($ret)) $ret = getConfig('DEFAULT_LANG'); + if (empty($ret)) $ret = getDefaultLanguage(); } // Cache entry - $GLOBALS['language'] = $ret; + setCurrentLanguage($ret); // Return value return $ret; @@ -144,7 +165,7 @@ function isLanguageIncludeReadable ($ext_name = 'none') { // Look for file if no extension name is provided $GLOBALS['lang_inc'][$ext_name] = isIncludeReadable($languageInclude); - //* DEBUG: */ print __FUNCTION__.':'.$ext_name.'='.$languageInclude.'='.intval(isIncludeReadable($languageInclude)).'
'; + //* DEBUG: */ debugOutput(__FUNCTION__.':'.$ext_name.'='.$languageInclude.'='.intval(isIncludeReadable($languageInclude))); } // END - if // Return it @@ -161,7 +182,7 @@ 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); @@ -180,7 +201,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,8 +234,118 @@ 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; + + // *Does* match by default + $matches = true; + + // Is one not readable? + if (!isIncludeReadable($source)) { + // Please report this bug! + debug_report_bug(__FUNCTION__, __LINE__, 'Source file ' . $source . ' is not readable.'); + } elseif (!isIncludeReadable($target)) { + // Please report this bug! + debug_report_bug(__FUNCTION__, __LINE__, 'Target file ' . $target . ' is not readable.'); + } elseif ($targetLanguage == getCurrentLanguage()) { + // Must be different + debug_report_bug(__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); + + // 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]; +} + +// Checks wether the given message is masked +function isMessageMasked ($messageId) { + // Is the message id valid? + if (!isMessageIdValid($messageId)) { + // No, then abort here + debug_report_bug(__FUNCTION__, __LINE__, 'Invalid message id ' . $messageId . ' detected.'); + } // END - if + + // Now simply check it + $masked = (strpos($GLOBALS['messages'][getCurrentLanguage()][$messageId], '%') !== false); + + // Return result + return $masked; } // [EOF]