Browse Source

handle config.php values

Signed-off-by: Georg Ehrke <developer@georgehrke.com>
tags/v14.0.0beta1
Thomas Citharel 6 years ago
parent
commit
abab7eb7f0
No account linked to committer's email address

+ 4
- 0
apps/provisioning_api/lib/Controller/UsersController.php 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';
}


+ 23
- 0
config/config.sample.php 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

+ 10
- 5
lib/private/L10N/Factory.php 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';
}

Loading…
Cancel
Save