handle config.php values

Signed-off-by: Georg Ehrke <developer@georgehrke.com>
This commit is contained in:
Thomas Citharel 2017-07-13 10:34:27 +02:00 committed by Georg Ehrke
parent 4a9f8623b5
commit abab7eb7f0
No known key found for this signature in database
GPG Key ID: 9D98FD9380A1CB43
3 changed files with 37 additions and 5 deletions

View File

@ -442,6 +442,10 @@ class UsersController extends AUserData {
if ($this->config->getSystemValue('force_language', false) === false ||
$this->groupManager->isAdmin($currentLoggedInUser->getUID())) {
$permittedFields[] = 'language';
}
if ($this->config->getSystemValue('force_locale', false) === false ||
$this->groupManager->isAdmin($currentLoggedInUser->getUID())) {
$permittedFields[] = 'locale';
}

View File

@ -178,6 +178,29 @@ $CONFIG = array(
*/
'force_language' => 'en',
/**
* This sets the default locale on your Nextcloud server, using ISO_639
* language codes such as ``en`` for English, ``de`` for German, and ``fr`` for
* French, and ISO-3166 country codes such as ``GB``, ``US``, ``CA``, as defined
* in RFC 5646. It overrides automatic locale detection on public pages like
* login or shared items. User's locale preferences configured under "personal
* -> locale" override this setting after they have logged in.
*
* Defaults to ``en``
*/
'default_locale' => 'en_US',
/**
* With this setting a locale can be forced for all users. If a locale is
* forced, the users are also unable to change their locale in the personal
* settings. If users shall be unable to change their locale, but users have
* different languages, this value can be set to ``true`` instead of a locale
* code.
*
* Defaults to ``false``
*/
'force_locale' => 'en_US',
/**
* Set the default app to open on login. Use the app names as they appear in the
* URL after clicking them in the Apps menu, such as documents, calendar, and

View File

@ -111,6 +111,11 @@ class Factory implements IFactory {
$lang = $forceLang;
}
$forceLocale = $this->config->getSystemValue('force_locale', false);
if (is_string($forceLocale)) {
$locale = $forceLocale;
}
if ($lang === null || !$this->languageExists($app, $lang)) {
$lang = $this->findLanguage($app);
}
@ -207,17 +212,17 @@ class Factory implements IFactory {
return $userLocale;
}
// If no user locale set, use lang as locale
if (null !== $lang && $this->localeExists($lang)) {
return $lang;
}
// Default : use system default locale
$defaultLocale = $this->config->getSystemValue('default_locale', false);
if ($defaultLocale !== false && $this->localeExists($defaultLocale)) {
return $defaultLocale;
}
// If no user locale set, use lang as locale
if (null !== $lang && $this->localeExists($lang)) {
return $lang;
}
// At last, return USA
return 'en_US';
}