‪TYPO3CMS  11.5
LocalesTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
23 
27 class ‪LocalesTest extends UnitTestCase
28 {
29  protected ‪$resetSingletonInstances = true;
30 
34  protected ‪$originalLocale;
35 
36  protected function ‪setUp(): void
37  {
38  parent::setUp();
39  $this->originalLocale = setlocale(LC_COLLATE, 0);
40  }
41 
42  protected function ‪tearDown(): void
43  {
44  // Restore original locale
45  setlocale(LC_COLLATE, $this->originalLocale);
46  setlocale(LC_MONETARY, $this->originalLocale);
47  setlocale(LC_TIME, $this->originalLocale);
48  parent::tearDown();
49  }
50 
54  public function ‪browserLanguageDetectionWorksDataProvider(): array
55  {
56  return [
57  'german' => [
58  'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4',
59  'de',
60  ],
61  'english as default' => [
62  'en-US;q=0.8,en;q=0.6;de-DE,de;q=0.4',
63  'default',
64  ],
65  'chinese simplified' => [
66  'zh-CN,en-US;q=0.5,en;q=0.3',
67  'ch',
68  ],
69  'chinese simplified han' => [
70  'zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3',
71  'ch',
72  ],
73  ];
74  }
75 
83  public function ‪browserLanguageDetectionWorks(string $acceptLanguageHeader, string $expected): void
84  {
85  $detectedLanguage = (new Locales())->getPreferredClientLanguage(
86  $acceptLanguageHeader
87  );
88  self::assertSame($expected, $detectedLanguage);
89  }
90 
95  {
96  $site = $this->‪createSiteWithDefaultLanguage('');
97  $result = ‪Locales::setSystemLocaleFromSiteLanguage($site->getLanguageById(0));
98  self::assertFalse($result);
99  $currentLocale = setlocale(LC_COLLATE, 0);
100  // Check that the locale was not overridden
101  self::assertEquals($this->originalLocale, $currentLocale);
102  }
103 
108  {
109  $locale = 'en_US';
110  $site = $this->‪createSiteWithDefaultLanguage($locale);
111  $result = ‪Locales::setSystemLocaleFromSiteLanguage($site->getLanguageById(0));
112  self::assertTrue($result);
113  $currentLocale = setlocale(LC_COLLATE, 0);
114  // Check that the locale was overridden
115  self::assertEquals($locale, $currentLocale);
116  }
117 
118  private function ‪createSiteWithDefaultLanguage(string $locale): ‪Site
119  {
120  return new ‪Site('test', 1, [
121  'identifier' => 'test',
122  'rootPageId' => 1,
123  'base' => '/',
124  'languages' => [
125  [
126  'languageId' => 0,
127  'locale' => $locale,
128  'base' => '/',
129  ],
130  ],
131  ]);
132  }
133 }
‪TYPO3\CMS\Core\Localization\Locales\setSystemLocaleFromSiteLanguage
‪static bool setSystemLocaleFromSiteLanguage(SiteLanguage $siteLanguage)
Definition: Locales.php:261
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\createSiteWithDefaultLanguage
‪createSiteWithDefaultLanguage(string $locale)
Definition: LocalesTest.php:117
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\$resetSingletonInstances
‪$resetSingletonInstances
Definition: LocalesTest.php:29
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\$originalLocale
‪string $originalLocale
Definition: LocalesTest.php:33
‪TYPO3\CMS\Core\Localization\Locales
Definition: Locales.php:30
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\setSystemLocaleFromSiteLanguageWithProperLocaleSetsLocale
‪setSystemLocaleFromSiteLanguageWithProperLocaleSetsLocale()
Definition: LocalesTest.php:106
‪TYPO3\CMS\Core\Site\Entity\Site
Definition: Site.php:42
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\setUp
‪setUp()
Definition: LocalesTest.php:35
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\browserLanguageDetectionWorksDataProvider
‪array browserLanguageDetectionWorksDataProvider()
Definition: LocalesTest.php:53
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\tearDown
‪tearDown()
Definition: LocalesTest.php:41
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\browserLanguageDetectionWorks
‪browserLanguageDetectionWorks(string $acceptLanguageHeader, string $expected)
Definition: LocalesTest.php:82
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest\setSystemLocaleFromSiteLanguageWithoutLocaleDoesNotSetLocale
‪setSystemLocaleFromSiteLanguageWithoutLocaleDoesNotSetLocale()
Definition: LocalesTest.php:93
‪TYPO3\CMS\Core\Tests\Unit\Localization
Definition: LocalesTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Localization\LocalesTest
Definition: LocalesTest.php:28