summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/L10N/Factory.php6
-rw-r--r--tests/lib/L10N/FactoryTest.php50
2 files changed, 49 insertions, 7 deletions
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index a7ffb401b7b..74cea7aa843 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -130,6 +130,12 @@ class Factory implements IFactory {
return $this->requestLanguage;
}
+ $forceLang = $this->config->getSystemValue('force_language', false);
+ if (is_string($forceLang) && $this->languageExists($app, $forceLang)) {
+ $this->requestLanguage = $forceLang;
+ return $forceLang;
+ }
+
/**
* At this point Nextcloud might not yet be installed and thus the lookup
* in the preferences table might fail. For this reason we need to check
diff --git a/tests/lib/L10N/FactoryTest.php b/tests/lib/L10N/FactoryTest.php
index 1e5c2ef5421..3008e0a239c 100644
--- a/tests/lib/L10N/FactoryTest.php
+++ b/tests/lib/L10N/FactoryTest.php
@@ -117,7 +117,12 @@ class FactoryTest extends TestCase {
->with('MyApp', 'de')
->willReturn(false);
$this->config
- ->expects($this->once())
+ ->expects($this->at(0))
+ ->method('getSystemValue')
+ ->with('force_language', false)
+ ->willReturn(false);
+ $this->config
+ ->expects($this->at(1))
->method('getSystemValue')
->with('installed', false)
->willReturn(true);
@@ -151,7 +156,12 @@ class FactoryTest extends TestCase {
->with('MyApp', 'de')
->willReturn(false);
$this->config
- ->expects($this->at(0))
+ ->expects($this->at(0))
+ ->method('getSystemValue')
+ ->with('force_language', false)
+ ->willReturn(false);
+ $this->config
+ ->expects($this->at(1))
->method('getSystemValue')
->with('installed', false)
->willReturn(true);
@@ -174,7 +184,7 @@ class FactoryTest extends TestCase {
->with('MyApp', 'jp')
->willReturn(false);
$this->config
- ->expects($this->at(2))
+ ->expects($this->at(3))
->method('getSystemValue')
->with('default_language', false)
->willReturn('es');
@@ -194,7 +204,12 @@ class FactoryTest extends TestCase {
->with('MyApp', 'de')
->willReturn(false);
$this->config
- ->expects($this->at(0))
+ ->expects($this->at(0))
+ ->method('getSystemValue')
+ ->with('force_language', false)
+ ->willReturn(false);
+ $this->config
+ ->expects($this->at(1))
->method('getSystemValue')
->with('installed', false)
->willReturn(true);
@@ -217,7 +232,7 @@ class FactoryTest extends TestCase {
->with('MyApp', 'jp')
->willReturn(false);
$this->config
- ->expects($this->at(2))
+ ->expects($this->at(3))
->method('getSystemValue')
->with('default_language', false)
->willReturn('es');
@@ -240,7 +255,12 @@ class FactoryTest extends TestCase {
->with('MyApp', 'de')
->willReturn(false);
$this->config
- ->expects($this->at(0))
+ ->expects($this->at(0))
+ ->method('getSystemValue')
+ ->with('force_language', false)
+ ->willReturn(false);
+ $this->config
+ ->expects($this->at(1))
->method('getSystemValue')
->with('installed', false)
->willReturn(true);
@@ -263,7 +283,7 @@ class FactoryTest extends TestCase {
->with('MyApp', 'jp')
->willReturn(false);
$this->config
- ->expects($this->at(2))
+ ->expects($this->at(3))
->method('getSystemValue')
->with('default_language', false)
->willReturn('es');
@@ -280,6 +300,22 @@ class FactoryTest extends TestCase {
$this->assertSame('en', $factory->findLanguage('MyApp'));
}
+ public function testFindLanguageWithForcedLanguage() {
+ $factory = $this->getFactory(['languageExists']);
+ $this->config
+ ->expects($this->at(0))
+ ->method('getSystemValue')
+ ->with('force_language', false)
+ ->willReturn('de');
+
+ $factory->expects($this->once())
+ ->method('languageExists')
+ ->with('MyApp', 'de')
+ ->willReturn(true);
+
+ $this->assertSame('de', $factory->findLanguage('MyApp'));
+ }
+
/**
* @dataProvider dataFindAvailableLanguages
*