‪TYPO3CMS  ‪main
SiteLanguage.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 
20 use Psr\Http\Message\UriInterface;
22 
27 {
33  protected ‪$languageId;
34 
38  protected ‪Locale ‪$locale;
39 
45  protected ‪$base;
46 
51  protected ‪$title = 'Default';
52 
57  protected ‪$navigationTitle = '';
58 
63  protected ‪$websiteTitle = '';
64 
69  protected ‪$flagIdentifier = '';
70 
76  protected ‪$twoLetterIsoCode = '';
77 
85  protected ‪$hreflang = '';
86 
92  protected ‪$direction = '';
93 
100  protected ‪$typo3Language = '';
101 
105  protected ‪$fallbackType = 'strict';
106 
110  protected ‪$fallbackLanguageIds = [];
111 
115  protected ‪$enabled = true;
116 
121  protected ‪$configuration = [];
122 
126  public function ‪__construct(int ‪$languageId, string ‪$locale, UriInterface ‪$base, array ‪$configuration)
127  {
128  $this->languageId = ‪$languageId;
129  $this->locale = new ‪Locale(‪$locale);
130  $this->base = ‪$base;
131  $this->configuration = ‪$configuration;
132 
133  if (!empty(‪$configuration['title'])) {
134  $this->title = ‪$configuration['title'];
135  }
136  if (!empty(‪$configuration['navigationTitle'])) {
137  $this->navigationTitle = ‪$configuration['navigationTitle'];
138  }
139  if (!empty(‪$configuration['websiteTitle'])) {
140  $this->websiteTitle = ‪$configuration['websiteTitle'];
141  }
142  if (!empty(‪$configuration['flag'])) {
143  $this->flagIdentifier = ‪$configuration['flag'];
144  }
145  if (!empty(‪$configuration['typo3Language'])) {
146  $this->typo3Language = ‪$configuration['typo3Language'];
147  }
148  if (!empty(‪$configuration['iso-639-1'])) {
149  $this->twoLetterIsoCode = ‪$configuration['iso-639-1'];
150  }
151  if (!empty(‪$configuration['hreflang'])) {
152  $this->hreflang = ‪$configuration['hreflang'];
153  }
154  if (!empty(‪$configuration['direction'])) {
155  $this->direction = ‪$configuration['direction'];
156  }
157  if (!empty(‪$configuration['fallbackType'])) {
158  $this->fallbackType = ‪$configuration['fallbackType'];
159  }
160  if (isset(‪$configuration['fallbacks'])) {
162 
163  // It is important to distinct between "0" and "" so, empty() should not be used here
164  if (is_string(‪$fallbackLanguageIds)) {
165  if (‪$fallbackLanguageIds !== '') {
167  } else {
169  }
170  } elseif (is_scalar(‪$fallbackLanguageIds)) {
172  }
173  $this->fallbackLanguageIds = array_map('intval', ‪$fallbackLanguageIds);
174  }
175  if (isset(‪$configuration['enabled'])) {
176  $this->‪enabled = (bool)‪$configuration['enabled'];
177  }
178  }
179 
184  public function ‪toArray(): array
185  {
186  return array_merge($this->configuration, [
187  'languageId' => $this->‪getLanguageId(),
188  // kept for backwards-compat for the time being, might change to BGP-47 format
189  'locale' => $this->‪getLocale()->posixFormatted(),
190  'base' => (string)$this->‪getBase(),
191  'title' => $this->‪getTitle(),
192  'websiteTitle' => $this->‪getWebsiteTitle(),
193  'navigationTitle' => $this->‪getNavigationTitle(),
194  // @deprecated will be removed in TYPO3 v13.0
195  'twoLetterIsoCode' => $this->twoLetterIsoCode ?: $this->locale->getLanguageCode(),
196  'hreflang' => $this->hreflang ?: $this->locale->getName(),
197  'direction' => $this->direction ?: ($this->locale->isRightToLeftLanguageDirection() ? 'rtl' : ''),
198  'typo3Language' => $this->getTypo3Language(),
199  'flagIdentifier' => $this->getFlagIdentifier(),
200  'fallbackType' => $this->getFallbackType(),
201  'enabled' => $this->enabled(),
202  'fallbackLanguageIds' => $this->getFallbackLanguageIds(),
203  ]);
204  }
205 
206  public function ‪getLanguageId(): int
207  {
208  return ‪$this->languageId;
209  }
210 
211  public function ‪getLocale(): ‪Locale
212  {
213  return ‪$this->locale;
214  }
215 
216  public function ‪getBase(): UriInterface
217  {
218  return ‪$this->base;
219  }
220 
221  public function ‪getTitle(): string
222  {
223  return ‪$this->title;
224  }
225 
226  public function ‪getNavigationTitle(): string
227  {
228  return $this->navigationTitle ?: ‪$this->title;
229  }
230 
231  public function ‪getWebsiteTitle(): string
232  {
234  }
235 
236  public function ‪getFlagIdentifier(): string
237  {
239  }
240 
247  public function ‪getTypo3Language(): string
248  {
249  if ($this->typo3Language !== '') {
251  }
252  // locale is just set to "C" or "en", this should then be mapped to "default"
253  if ($this->locale->getLanguageCode() === 'en' && !$this->locale->getCountryCode()) {
254  return 'default';
255  }
256  ‪$typo3Language = $this->locale->getLanguageCode();
257  if ($this->locale->getCountryCode()) {
258  ‪$typo3Language .= '_' . $this->locale->getCountryCode();
259  }
260  return ‪$typo3Language;
261  }
262 
266  public function ‪hasCustomTypo3Language(): bool
267  {
268  return $this->typo3Language !== '';
269  }
270 
275  public function ‪getTwoLetterIsoCode(): string
276  {
277  trigger_error('SiteLanguage->getTwoLetterIsoCode() will be removed in TYPO3 v13.0. Use SiteLanguage->getLocale()->getLanguageCode() instead.', E_USER_DEPRECATED);
278  return $this->twoLetterIsoCode ?: $this->locale->getLanguageCode();
279  }
280 
285  public function ‪getHreflang(bool $isInternalCall = false): string
286  {
287  if (!$isInternalCall) {
288  trigger_error('SiteLanguage->getHreflang() will be removed in TYPO3 v13.0. Use SiteLanguage->getLocale()->getName() instead.', E_USER_DEPRECATED);
289  }
290  return $this->hreflang ?: $this->locale->getName();
291  }
292 
297  public function ‪getDirection(): string
298  {
299  trigger_error('SiteLanguage->getDirection() will be removed in TYPO3 v13.0. Use SiteLanguage->getLocale()->isRightToLeftLanguageDirection() instead.', E_USER_DEPRECATED);
301  }
302 
306  public function ‪enabled(): bool
307  {
308  return ‪$this->enabled;
309  }
310 
314  public function ‪isEnabled(): bool
315  {
316  return ‪$this->enabled;
317  }
318 
319  public function ‪getFallbackType(): string
320  {
321  return ‪$this->fallbackType;
322  }
323 
324  public function ‪getFallbackLanguageIds(): array
325  {
327  }
328 }
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\__construct
‪__construct(int $languageId, string $locale, UriInterface $base, array $configuration)
Definition: SiteLanguage.php:112
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\isEnabled
‪isEnabled()
Definition: SiteLanguage.php:300
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$base
‪UriInterface $base
Definition: SiteLanguage.php:43
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$twoLetterIsoCode
‪string $twoLetterIsoCode
Definition: SiteLanguage.php:69
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getFallbackType
‪getFallbackType()
Definition: SiteLanguage.php:305
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getNavigationTitle
‪getNavigationTitle()
Definition: SiteLanguage.php:212
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getLocale
‪getLocale()
Definition: SiteLanguage.php:197
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$enabled
‪bool $enabled
Definition: SiteLanguage.php:102
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getTwoLetterIsoCode
‪getTwoLetterIsoCode()
Definition: SiteLanguage.php:261
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$typo3Language
‪string $typo3Language
Definition: SiteLanguage.php:90
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\enabled
‪enabled()
Definition: SiteLanguage.php:292
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$hreflang
‪string $hreflang
Definition: SiteLanguage.php:77
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage
Definition: SiteLanguage.php:27
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getFallbackLanguageIds
‪getFallbackLanguageIds()
Definition: SiteLanguage.php:310
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getBase
‪getBase()
Definition: SiteLanguage.php:202
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$flagIdentifier
‪string $flagIdentifier
Definition: SiteLanguage.php:63
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getFlagIdentifier
‪getFlagIdentifier()
Definition: SiteLanguage.php:222
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$configuration
‪array $configuration
Definition: SiteLanguage.php:107
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$websiteTitle
‪string $websiteTitle
Definition: SiteLanguage.php:58
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$fallbackType
‪string $fallbackType
Definition: SiteLanguage.php:94
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getLanguageId
‪getLanguageId()
Definition: SiteLanguage.php:192
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$direction
‪string $direction
Definition: SiteLanguage.php:83
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getTypo3Language
‪getTypo3Language()
Definition: SiteLanguage.php:233
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getWebsiteTitle
‪getWebsiteTitle()
Definition: SiteLanguage.php:217
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$languageId
‪int $languageId
Definition: SiteLanguage.php:32
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$navigationTitle
‪string $navigationTitle
Definition: SiteLanguage.php:53
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$title
‪string $title
Definition: SiteLanguage.php:48
‪TYPO3\CMS\Core\Site\Entity
Definition: NullSite.php:18
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\hasCustomTypo3Language
‪hasCustomTypo3Language()
Definition: SiteLanguage.php:252
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getHreflang
‪getHreflang(bool $isInternalCall=false)
Definition: SiteLanguage.php:271
‪TYPO3\CMS\Core\Localization\Locale
Definition: Locale.php:30
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$locale
‪Locale $locale
Definition: SiteLanguage.php:37
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\toArray
‪toArray()
Definition: SiteLanguage.php:170
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$fallbackLanguageIds
‪array $fallbackLanguageIds
Definition: SiteLanguage.php:98
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getTitle
‪getTitle()
Definition: SiteLanguage.php:207
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getDirection
‪getDirection()
Definition: SiteLanguage.php:283