mirror of
https://github.com/nextcloud/server.git
synced 2026-02-18 18:28:50 -05:00
Merge pull request #55476 from nextcloud/fix/l10n/generic-language-no-user
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
fix(l10n): do not consider user language when getting the generic one
This commit is contained in:
commit
fac380fb88
2 changed files with 48 additions and 91 deletions
|
|
@ -228,27 +228,7 @@ class Factory implements IFactory {
|
|||
return $defaultLanguage;
|
||||
}
|
||||
|
||||
// Step 3.1: Check if Nextcloud is already installed before we try to access user info
|
||||
if (!$this->config->getSystemValueBool('installed', false)) {
|
||||
return 'en';
|
||||
}
|
||||
// Step 3.2: Check the current user (if any) for their preferred language
|
||||
$user = $this->userSession->getUser();
|
||||
if ($user !== null) {
|
||||
$userLang = $this->config->getUserValue($user->getUID(), 'core', 'lang', null);
|
||||
if ($userLang !== null) {
|
||||
return $userLang;
|
||||
}
|
||||
}
|
||||
|
||||
// Step 4: Check the request headers
|
||||
try {
|
||||
return $this->getLanguageFromRequest($appId);
|
||||
} catch (LanguageNotFoundException $e) {
|
||||
// Ignore and continue
|
||||
}
|
||||
|
||||
// Step 5: fall back to English
|
||||
// Step 3: fall back to English
|
||||
return 'en';
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -551,8 +551,24 @@ class FactoryTest extends TestCase {
|
|||
self::assertSame($expected, $lang);
|
||||
}
|
||||
|
||||
public function testFindGenericLanguageByRequestParam(): void {
|
||||
$factory = $this->getFactory();
|
||||
$this->request->expects(self::once())
|
||||
->method('getParam')
|
||||
->with('forceLanguage')
|
||||
->willReturn('cz');
|
||||
|
||||
$lang = $factory->findGenericLanguage();
|
||||
|
||||
self::assertSame('cz', $lang);
|
||||
}
|
||||
|
||||
public function testFindGenericLanguageByEnforcedLanguage(): void {
|
||||
$factory = $this->getFactory();
|
||||
$this->request->expects(self::once())
|
||||
->method('getParam')
|
||||
->with('forceLanguage')
|
||||
->willReturn(null);
|
||||
$this->config->expects(self::once())
|
||||
->method('getSystemValue')
|
||||
->with('force_language', false)
|
||||
|
|
@ -565,6 +581,10 @@ class FactoryTest extends TestCase {
|
|||
|
||||
public function testFindGenericLanguageByDefaultLanguage(): void {
|
||||
$factory = $this->getFactory(['languageExists']);
|
||||
$this->request->expects(self::once())
|
||||
->method('getParam')
|
||||
->with('forceLanguage')
|
||||
->willReturn(null);
|
||||
$this->config->expects(self::exactly(2))
|
||||
->method('getSystemValue')
|
||||
->willReturnMap([
|
||||
|
|
@ -581,83 +601,40 @@ class FactoryTest extends TestCase {
|
|||
self::assertSame('cz', $lang);
|
||||
}
|
||||
|
||||
public function testFindGenericLanguageByUserLanguage(): void {
|
||||
public function testFindGenericLanguageByDefaultLanguageNotExists(): void {
|
||||
$factory = $this->getFactory(['languageExists']);
|
||||
$this->request->expects(self::once())
|
||||
->method('getParam')
|
||||
->with('forceLanguage')
|
||||
->willReturn(null);
|
||||
$this->config->expects(self::exactly(2))
|
||||
->method('getSystemValue')
|
||||
->willReturnMap([
|
||||
['force_language', false, false,],
|
||||
['default_language', false, 'cz',],
|
||||
]);
|
||||
$factory->expects(self::once())
|
||||
->method('languageExists')
|
||||
->with(null, 'cz')
|
||||
->willReturn(false);
|
||||
|
||||
$lang = $factory->findGenericLanguage();
|
||||
|
||||
self::assertSame('en', $lang);
|
||||
}
|
||||
|
||||
public function testFindGenericLanguageFallback(): void {
|
||||
$factory = $this->getFactory();
|
||||
$this->request->expects(self::once())
|
||||
->method('getParam')
|
||||
->with('forceLanguage')
|
||||
->willReturn(null);
|
||||
$this->config->expects(self::exactly(2))
|
||||
->method('getSystemValue')
|
||||
->willReturnMap([
|
||||
['force_language', false, false,],
|
||||
['default_language', false, false,],
|
||||
]);
|
||||
$user = $this->createMock(IUser::class);
|
||||
$this->userSession->expects(self::once())
|
||||
->method('getUser')
|
||||
->willReturn($user);
|
||||
$user->method('getUID')->willReturn('user123');
|
||||
$this->config->expects(self::once())
|
||||
->method('getUserValue')
|
||||
->with('user123', 'core', 'lang', null)
|
||||
->willReturn('cz');
|
||||
|
||||
$lang = $factory->findGenericLanguage();
|
||||
|
||||
self::assertSame('cz', $lang);
|
||||
}
|
||||
|
||||
public function testFindGenericLanguageByRequestLanguage(): void {
|
||||
$factory = $this->getFactory(['findAvailableLanguages', 'languageExists']);
|
||||
$this->config->method('getSystemValue')
|
||||
->willReturnMap([
|
||||
['force_language', false, false,],
|
||||
['default_language', false, false,],
|
||||
]);
|
||||
$user = $this->createMock(IUser::class);
|
||||
$this->userSession->expects(self::once())
|
||||
->method('getUser')
|
||||
->willReturn($user);
|
||||
$user->method('getUID')->willReturn('user123');
|
||||
$this->config->expects(self::once())
|
||||
->method('getUserValue')
|
||||
->with('user123', 'core', 'lang', null)
|
||||
->willReturn(null);
|
||||
$this->request->expects(self::once())
|
||||
->method('getHeader')
|
||||
->with('ACCEPT_LANGUAGE')
|
||||
->willReturn('cz');
|
||||
$factory->expects(self::once())
|
||||
->method('findAvailableLanguages')
|
||||
->with(null)
|
||||
->willReturn(['cz']);
|
||||
|
||||
$lang = $factory->findGenericLanguage();
|
||||
|
||||
self::assertSame('cz', $lang);
|
||||
}
|
||||
|
||||
public function testFindGenericLanguageFallback(): void {
|
||||
$factory = $this->getFactory(['findAvailableLanguages', 'languageExists']);
|
||||
$this->config->method('getSystemValue')
|
||||
->willReturnMap([
|
||||
['force_language', false, false,],
|
||||
['default_language', false, false,],
|
||||
]);
|
||||
$user = $this->createMock(IUser::class);
|
||||
$this->userSession->expects(self::once())
|
||||
->method('getUser')
|
||||
->willReturn($user);
|
||||
$user->method('getUID')->willReturn('user123');
|
||||
$this->config->expects(self::once())
|
||||
->method('getUserValue')
|
||||
->with('user123', 'core', 'lang', null)
|
||||
->willReturn(null);
|
||||
$this->request->expects(self::once())
|
||||
->method('getHeader')
|
||||
->with('ACCEPT_LANGUAGE')
|
||||
->willReturn('');
|
||||
$factory->expects(self::never())
|
||||
->method('findAvailableLanguages');
|
||||
$factory->expects(self::never())
|
||||
->method('languageExists');
|
||||
|
||||
$lang = $factory->findGenericLanguage();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue