summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Citharel <tcit@tcit.fr>2017-07-13 10:34:27 +0200
committerGeorg Ehrke <developer@georgehrke.com>2018-06-27 13:19:23 +0200
commitabab7eb7f071282a4a3fa839dcc6f61ac4632f6b (patch)
tree6f217feea2391c44cd959b6087e3ff0a697dc5ec
parent4a9f8623b50ab0ba6a7fd411c0750a6bd5f63c14 (diff)
downloadnextcloud-server-abab7eb7f071282a4a3fa839dcc6f61ac4632f6b.tar.gz
nextcloud-server-abab7eb7f071282a4a3fa839dcc6f61ac4632f6b.zip
handle config.php values
Signed-off-by: Georg Ehrke <developer@georgehrke.com>
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php4
-rw-r--r--config/config.sample.php23
-rw-r--r--lib/private/L10N/Factory.php15
3 files changed, 37 insertions, 5 deletions
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index 32967742bd2..8b39de29086 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -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';
}
diff --git a/config/config.sample.php b/config/config.sample.php
index a1445d77095..2218021bab9 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -179,6 +179,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
* gallery. You can use a comma-separated list of app names, so if the first
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index a6b91d53e4f..86f2ab3b1f0 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -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';
}