Skip to content

Commit ccc0c3c

Browse files
st3inySebastianKrupinski
authored andcommitted
fix(l10n): do not consider user language when getting the generic one
Signed-off-by: Richard Steinmetz <[email protected]>
1 parent 775d610 commit ccc0c3c

File tree

2 files changed

+39
-82
lines changed

2 files changed

+39
-82
lines changed

lib/private/L10N/Factory.php

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -228,27 +228,7 @@ public function findGenericLanguage(?string $appId = null): string {
228228
return $defaultLanguage;
229229
}
230230

231-
// Step 3.1: Check if Nextcloud is already installed before we try to access user info
232-
if (!$this->config->getSystemValueBool('installed', false)) {
233-
return 'en';
234-
}
235-
// Step 3.2: Check the current user (if any) for their preferred language
236-
$user = $this->userSession->getUser();
237-
if ($user !== null) {
238-
$userLang = $this->config->getUserValue($user->getUID(), 'core', 'lang', null);
239-
if ($userLang !== null) {
240-
return $userLang;
241-
}
242-
}
243-
244-
// Step 4: Check the request headers
245-
try {
246-
return $this->getLanguageFromRequest($appId);
247-
} catch (LanguageNotFoundException $e) {
248-
// Ignore and continue
249-
}
250-
251-
// Step 5: fall back to English
231+
// Step 3: fall back to English
252232
return 'en';
253233
}
254234

tests/lib/L10N/FactoryTest.php

Lines changed: 38 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -551,8 +551,24 @@ public function testFindLanguage($loggedIn, $availableLang, $expected): void {
551551
self::assertSame($expected, $lang);
552552
}
553553

554+
public function testFindGenericLanguageByRequestParam(): void {
555+
$factory = $this->getFactory();
556+
$this->request->expects(self::once())
557+
->method('getParam')
558+
->with('forceLanguage')
559+
->willReturn('cz');
560+
561+
$lang = $factory->findGenericLanguage();
562+
563+
self::assertSame('cz', $lang);
564+
}
565+
554566
public function testFindGenericLanguageByEnforcedLanguage(): void {
555567
$factory = $this->getFactory();
568+
$this->request->expects(self::once())
569+
->method('getParam')
570+
->with('forceLanguage')
571+
->willReturn(null);
556572
$this->config->expects(self::once())
557573
->method('getSystemValue')
558574
->with('force_language', false)
@@ -565,6 +581,10 @@ public function testFindGenericLanguageByEnforcedLanguage(): void {
565581

566582
public function testFindGenericLanguageByDefaultLanguage(): void {
567583
$factory = $this->getFactory(['languageExists']);
584+
$this->request->expects(self::once())
585+
->method('getParam')
586+
->with('forceLanguage')
587+
->willReturn(null);
568588
$this->config->expects(self::exactly(2))
569589
->method('getSystemValue')
570590
->willReturnMap([
@@ -581,83 +601,40 @@ public function testFindGenericLanguageByDefaultLanguage(): void {
581601
self::assertSame('cz', $lang);
582602
}
583603

584-
public function testFindGenericLanguageByUserLanguage(): void {
585-
$factory = $this->getFactory();
604+
public function testFindGenericLanguageByDefaultLanguageNotExists(): void {
605+
$factory = $this->getFactory(['languageExists']);
606+
$this->request->expects(self::once())
607+
->method('getParam')
608+
->with('forceLanguage')
609+
->willReturn(null);
586610
$this->config->expects(self::exactly(2))
587611
->method('getSystemValue')
588612
->willReturnMap([
589613
['force_language', false, false,],
590-
['default_language', false, false,],
591-
]);
592-
$user = $this->createMock(IUser::class);
593-
$this->userSession->expects(self::once())
594-
->method('getUser')
595-
->willReturn($user);
596-
$user->method('getUID')->willReturn('user123');
597-
$this->config->expects(self::once())
598-
->method('getUserValue')
599-
->with('user123', 'core', 'lang', null)
600-
->willReturn('cz');
601-
602-
$lang = $factory->findGenericLanguage();
603-
604-
self::assertSame('cz', $lang);
605-
}
606-
607-
public function testFindGenericLanguageByRequestLanguage(): void {
608-
$factory = $this->getFactory(['findAvailableLanguages', 'languageExists']);
609-
$this->config->method('getSystemValue')
610-
->willReturnMap([
611-
['force_language', false, false,],
612-
['default_language', false, false,],
614+
['default_language', false, 'cz',],
613615
]);
614-
$user = $this->createMock(IUser::class);
615-
$this->userSession->expects(self::once())
616-
->method('getUser')
617-
->willReturn($user);
618-
$user->method('getUID')->willReturn('user123');
619-
$this->config->expects(self::once())
620-
->method('getUserValue')
621-
->with('user123', 'core', 'lang', null)
622-
->willReturn(null);
623-
$this->request->expects(self::once())
624-
->method('getHeader')
625-
->with('ACCEPT_LANGUAGE')
626-
->willReturn('cz');
627616
$factory->expects(self::once())
628-
->method('findAvailableLanguages')
629-
->with(null)
630-
->willReturn(['cz']);
617+
->method('languageExists')
618+
->with(null, 'cz')
619+
->willReturn(false);
631620

632621
$lang = $factory->findGenericLanguage();
633622

634-
self::assertSame('cz', $lang);
623+
self::assertSame('en', $lang);
635624
}
636625

637626
public function testFindGenericLanguageFallback(): void {
638-
$factory = $this->getFactory(['findAvailableLanguages', 'languageExists']);
639-
$this->config->method('getSystemValue')
627+
$factory = $this->getFactory();
628+
$this->request->expects(self::once())
629+
->method('getParam')
630+
->with('forceLanguage')
631+
->willReturn(null);
632+
$this->config->expects(self::exactly(2))
633+
->method('getSystemValue')
640634
->willReturnMap([
641635
['force_language', false, false,],
642636
['default_language', false, false,],
643637
]);
644-
$user = $this->createMock(IUser::class);
645-
$this->userSession->expects(self::once())
646-
->method('getUser')
647-
->willReturn($user);
648-
$user->method('getUID')->willReturn('user123');
649-
$this->config->expects(self::once())
650-
->method('getUserValue')
651-
->with('user123', 'core', 'lang', null)
652-
->willReturn(null);
653-
$this->request->expects(self::once())
654-
->method('getHeader')
655-
->with('ACCEPT_LANGUAGE')
656-
->willReturn('');
657-
$factory->expects(self::never())
658-
->method('findAvailableLanguages');
659-
$factory->expects(self::never())
660-
->method('languageExists');
661638

662639
$lang = $factory->findGenericLanguage();
663640

0 commit comments

Comments
 (0)