<?php
/************************************************************************
- * MXChange v0.2.1 Start: 08/25/2003 *
- * =============== Last change: 11/29/2005 *
+ * Mailer v0.2.1-FINAL Start: 08/25/2003 *
+ * =================== Last change: 11/29/2005 *
* *
* -------------------------------------------------------------------- *
* File : language-functions.php *
* 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 *
// 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));
return $return;
}
+// Getter for message string as a mask
+function getMaskedMessage ($messageId, $data) {
+ return sprintf(getMessage($messageId), $data);
+}
+
// Init messages
function initMessages () {
- $GLOBALS['messages'] = array();
+ $GLOBALS['messages'][getLanguage()] = array();
}
-// Add message
+// Add messages
function addMessages ($messages) {
// Merge both
- $GLOBALS['messages'] = merge_array($GLOBALS['messages'], $messages);
+ $GLOBALS['messages'][getCurrentLanguage()] = merge_array($GLOBALS['messages'][getCurrentLanguage()], $messages);
+
+ // Don't count them if we don't want it
+ if (isset($GLOBALS['count'])) return;
+
+ // And count them
+ if (isset($GLOBALS['msg_count'][getCurrentLanguage()])) {
+ $GLOBALS['msg_count'][getCurrentLanguage()] += count($messages);
+ } else {
+ $GLOBALS['msg_count'][getCurrentLanguage()] = 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 () {
- // Set default return value to default language from config
- $ret = getConfig('DEFAULT_LANG');
+ // Default is 'de'. DO NOT CHANGE THIS!!!
+ $ret = 'de';
- // Init variable
- $lang = '';
+ // Set default return value to default language from config
+ if (isConfigEntrySet('DEFAULT_LANG')) $ret = getConfig('DEFAULT_LANG');
// 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');
}
// Cache entry
- $GLOBALS['language'] = $ret;
+ setCurrentLanguage($ret);
// Return value
return $ret;
// "Setter" for language
function setLanguage ($lang) {
- // Accept only first 2 chars!
- $lang = substr(SQL_ESCAPE(secureString($lang)), 0, 2);
+ // Accept only first 2 chars and still secure them
+ $lang = substr(secureString($lang), 0, 2);
// Set cookie
setSession('mx_lang', $lang);
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",
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("NOTICE: Extension %s has no language file or we cannot read from it. lang=%s, mode=%s",
$ext_name,
- getLanguage()
+ getLanguage(),
+ getExtensionMode()
));
}
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__ . ': 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];
+}
+
+// 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__ . ': Invalid message id ' . $messageId . ' detected.');
+ } // END - if
+
+ // Now simply check it
+ $masked = (strpos($GLOBALS['messages'][getCurrentLanguage()][$messageId], '%') !== false);
+
+ // Return result
+ return $masked;
}
// [EOF]