Signed-off-by: Georg Ehrke <developer@georgehrke.com>tags/v14.0.0beta1
@@ -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'; | |||
} | |||
@@ -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 |
@@ -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'; | |||
} |