From 0be9cb582057e661344e9b89ca29403854815518 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Thu, 30 Nov 2017 12:47:55 +0100 Subject: [PATCH] use formal version of German by default, if not explicitely defined differently Signed-off-by: Bjoern Schiessle --- lib/private/L10N/Factory.php | 2 ++ tests/lib/L10N/FactoryTest.php | 44 +++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php index 399bebb8189c3..c5223ee192099 100644 --- a/lib/private/L10N/Factory.php +++ b/lib/private/L10N/Factory.php @@ -159,6 +159,8 @@ public function findLanguage($app = null) { try { // Try to get the language from the Request $lang = $this->getLanguageFromRequest($app); + // use formal version of german ("Sie" instead of "Du") by default + $lang = strtolower($lang) === 'de' ? 'de_DE' : $lang; if ($userId !== null && $app === null && !$userLang) { $this->config->setUserValue($userId, 'core', 'lang', $lang); } diff --git a/tests/lib/L10N/FactoryTest.php b/tests/lib/L10N/FactoryTest.php index 171be67d33694..334a2063ffe3e 100644 --- a/tests/lib/L10N/FactoryTest.php +++ b/tests/lib/L10N/FactoryTest.php @@ -437,12 +437,12 @@ public function dataFindLanguage() { // Not logged in [false, [], 'en'], [false, ['fr'], 'fr'], - [false, ['de', 'fr'], 'de'], - [false, ['nl', 'de', 'fr'], 'de'], + [false, ['de', 'fr', 'de_DE'], 'de_DE'], + [false, ['nl', 'de', 'fr', 'de_DE'], 'de_DE'], [true, [], 'en'], [true, ['fr'], 'fr'], - [true, ['de', 'fr'], 'de'], + [true, ['de', 'fr', 'de_DE'], 'de_DE'], [true, ['nl', 'de', 'fr'], 'nl'], ]; } @@ -513,4 +513,42 @@ public function testFindLanguage($loggedIn, $availableLang, $expected) { $this->assertSame($expected, $lang); } + + /** + * test if we keep non-formal german ('Du' instead of 'Sie') if it is set explicitly + */ + public function testFindLanguageGerman() { + $availableLang = ['de']; + $expected = 'de'; + $userLang = 'de'; + + $this->config->expects($this->any()) + ->method('getSystemValue')->with('installed', false)->willReturn(true); + + $user = $this->getMockBuilder(IUser::class) + ->getMock(); + $user->expects($this->any()) + ->method('getUID') + ->willReturn('MyUserUid'); + $this->userSession + ->expects($this->any()) + ->method('getUser') + ->willReturn($user); + $this->config->expects($this->any()) + ->method('getUserValue') + ->with('MyUserUid', 'core', 'lang', null) + ->willReturn($userLang); + + $factory = $this->getFactory(['languageExists', 'findAvailableLanguages']); + + $factory->expects($this->any()) + ->method('languageExists') + ->will($this->returnCallback(function ($app, $lang) use ($availableLang) { + return in_array($lang, $availableLang); + })); + + $lang = $factory->findLanguage(null); + $this->assertSame($expected, $lang); + + } }