list of available languages can be set

this will reduce the languages in the language selector and also
shorten the time for loading all translations
This commit is contained in:
Uwe Steinmann 2016-11-17 11:31:58 +01:00
parent 0c4122b0f6
commit f0a6265b4a
4 changed files with 51 additions and 16 deletions

View File

@ -103,6 +103,8 @@ class Settings { /* {{{ */
var $_contentOffsetDir = "1048576";
// Maximum number of sub-directories per parent directory
var $_maxDirID = 32700;
// default available languages (list of languages shown in language selector)
var $_availablelanguages = array();
// default language (name of a subfolder in folder "languages")
var $_language = "en_GB";
// users are notified about document-changes that took place within the last $_updateNotifyTime seconds
@ -376,6 +378,8 @@ class Settings { /* {{{ */
$this->_footNote = strval($tab["footNote"]);
$this->_printDisclaimer = Settings::boolVal($tab["printDisclaimer"]);
$this->_language = strval($tab["language"]);
if(trim(strval($tab["availablelanguages"])))
$this->_availablelanguages = explode(',',strval($tab["availablelanguages"]));
$this->_theme = strval($tab["theme"]);
if(isset($tab["previewWidthList"]))
$this->_previewWidthList = intval($tab["previewWidthList"]);
@ -678,6 +682,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "footNote", $this->_footNote);
$this->setXMLAttributValue($node, "printDisclaimer", $this->_printDisclaimer);
$this->setXMLAttributValue($node, "language", $this->_language);
$this->setXMLAttributValue($node, "availablelanguages", implode(',', $this->_availablelanguages));
$this->setXMLAttributValue($node, "theme", $this->_theme);
$this->setXMLAttributValue($node, "previewWidthList", $this->_previewWidthList);
$this->setXMLAttributValue($node, "previewWidthDetail", $this->_previewWidthDetail);

View File

@ -20,7 +20,10 @@
$LANG = array();
$MISSING_LANG = array();
foreach(getLanguages() as $_lang) {
$__languages = getLanguages();
if(!in_array($settings->_language, $__languages))
$__languages[] = $settings->_language;
foreach($__languages as $_lang) {
if(file_exists($settings->_rootDir . "languages/" . $_lang . "/lang.inc")) {
include $settings->_rootDir . "languages/" . $_lang . "/lang.inc";
$LANG[$_lang] = $text;
@ -28,15 +31,14 @@ foreach(getLanguages() as $_lang) {
}
unset($text);
function getLanguages()
{
GLOBAL $settings;
function getAvailableLanguages() { /* {{{ */
global $settings;
$languages = array();
$path = $settings->_rootDir . "languages/";
$handle = opendir($path);
while ($entry = readdir($handle) )
{
if ($entry == ".." || $entry == ".")
@ -48,7 +50,17 @@ function getLanguages()
asort($languages);
return $languages;
}
} /* }}} */
function getLanguages() { /* {{{ */
global $settings;
if($settings->_availablelanguages) {
return $settings->_availablelanguages;
}
return getAvailableLanguages();
} /* }}} */
/**
* Get translation
@ -98,11 +110,11 @@ function getMLText($key, $replace = array(), $defaulttext = "", $lang="") { /* {
*/
if (count($replace) == 0)
return $tmpText;
$keys = array_keys($replace);
foreach ($keys as $key)
$tmpText = str_replace("[".$key."]", $replace[$key], $tmpText);
return $tmpText;
} /* }}} */

View File

@ -57,6 +57,7 @@ if ($action == "saveSettings")
$settings->_footNote = $_POST["footNote"];
$settings->_printDisclaimer = getBoolValue("printDisclaimer");
$settings->_language = $_POST["language"];
$settings->_availablelanguages = $_POST["availablelanguages"];
$settings->_theme = $_POST["theme"];
$settings->_previewWidthList = $_POST["previewWidthList"];
$settings->_previewWidthDetail = $_POST["previewWidthDetail"];

View File

@ -111,12 +111,29 @@ if(!is_writeable($settings->_configFilePath)) {
<td><?php printMLText("settings_printDisclaimer");?>:</td>
<td><input name="printDisclaimer" type="checkbox" <?php if ($settings->_printDisclaimer) echo "checked" ?> /></td>
</tr>
<tr title="<?php printMLText("settings_language_desc");?>">
<tr title="<?php printMLText("settings_available_languages_desc");?>">
<td><?php printMLText("settings_available_languages");?>:</td>
<td>
<select name="availablelanguages[]" multiple>
<?php
$languages = getAvailableLanguages();
foreach($languages as $language)
{
echo '<option value="' . $language . '" ';
if (in_array($language, $settings->_availablelanguages))
echo "selected";
echo '>' . getMLText($language) . '</option>';
}
?>
</select>
</td>
</tr>
<tr title="<?php printMLText("settings_language_desc");?>">
<td><?php printMLText("settings_language");?>:</td>
<td>
<SELECT name="language">
<select name="language">
<?php
$languages = getLanguages();
$languages = getAvailableLanguages();
foreach($languages as $language)
{
echo '<option value="' . $language . '" ';
@ -125,13 +142,13 @@ if(!is_writeable($settings->_configFilePath)) {
echo '>' . getMLText($language) . '</option>';
}
?>
</SELECT>
</select>
</td>
</tr>
<tr title="<?php printMLText("settings_theme_desc");?>">
<td><?php printMLText("settings_theme");?>:</td>
<td>
<SELECT name="theme">
<select name="theme">
<?php
$themes = UI::getStyles();
foreach($themes as $theme)
@ -142,7 +159,7 @@ if(!is_writeable($settings->_configFilePath)) {
echo '>' . $theme . '</option>';
}
?>
</SELECT>
</select>
</td>
</tr>
<tr title="<?php printMLText("settings_previewWidthList_desc");?>">