+// 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__, __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;
+}
+