‪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 ‪$hreflang = '';
77 
84  protected ‪$typo3Language = '';
85 
89  protected ‪$fallbackType = 'strict';
90 
94  protected ‪$fallbackLanguageIds = [];
95 
99  protected ‪$enabled = true;
100 
105  protected ‪$configuration = [];
106 
110  public function ‪__construct(int ‪$languageId, string ‪$locale, UriInterface ‪$base, array ‪$configuration)
111  {
112  $this->languageId = ‪$languageId;
113  $this->locale = new ‪Locale(‪$locale);
114  $this->base = ‪$base;
115  $this->configuration = ‪$configuration;
116 
117  if (!empty(‪$configuration['title'])) {
118  $this->title = ‪$configuration['title'];
119  }
120  if (!empty(‪$configuration['navigationTitle'])) {
121  $this->navigationTitle = ‪$configuration['navigationTitle'];
122  }
123  if (!empty(‪$configuration['websiteTitle'])) {
124  $this->websiteTitle = ‪$configuration['websiteTitle'];
125  }
126  if (!empty(‪$configuration['flag'])) {
127  $this->flagIdentifier = ‪$configuration['flag'];
128  }
129  if (!empty(‪$configuration['typo3Language'])) {
130  $this->typo3Language = ‪$configuration['typo3Language'];
131  }
132  if (!empty(‪$configuration['hreflang'])) {
133  $this->hreflang = ‪$configuration['hreflang'];
134  }
135  if (!empty(‪$configuration['fallbackType'])) {
136  $this->fallbackType = ‪$configuration['fallbackType'];
137  }
138  if (isset(‪$configuration['fallbacks'])) {
140 
141  // It is important to distinct between "0" and "" so, empty() should not be used here
142  if (is_string(‪$fallbackLanguageIds)) {
143  if (‪$fallbackLanguageIds !== '') {
145  } else {
147  }
148  } elseif (is_scalar(‪$fallbackLanguageIds)) {
150  }
151  $this->fallbackLanguageIds = array_map(intval(...), ‪$fallbackLanguageIds);
152  }
153  if (isset(‪$configuration['enabled'])) {
154  $this->‪enabled = (bool)‪$configuration['enabled'];
155  }
156  }
157 
162  public function ‪toArray(): array
163  {
164  return array_merge($this->configuration, [
165  'languageId' => $this->‪getLanguageId(),
166  // kept for backwards-compat for the time being, might change to BGP-47 format
167  'locale' => $this->‪getLocale()->posixFormatted(),
168  'base' => (string)$this->‪getBase(),
169  'title' => $this->‪getTitle(),
170  'websiteTitle' => $this->‪getWebsiteTitle(),
171  'navigationTitle' => $this->‪getNavigationTitle(),
172  'hreflang' => $this->hreflang ?: $this->locale->getName(),
173  'typo3Language' => $this->getTypo3Language(),
174  'flagIdentifier' => $this->getFlagIdentifier(),
175  'fallbackType' => $this->getFallbackType(),
176  'enabled' => $this->enabled(),
177  'fallbackLanguageIds' => $this->getFallbackLanguageIds(),
178  ]);
179  }
180 
181  public function ‪getLanguageId(): int
182  {
183  return ‪$this->languageId;
184  }
185 
186  public function ‪getLocale(): ‪Locale
187  {
188  return ‪$this->locale;
189  }
190 
191  public function ‪getBase(): UriInterface
192  {
193  return ‪$this->base;
194  }
195 
196  public function ‪getTitle(): string
197  {
198  return ‪$this->title;
199  }
200 
201  public function ‪getNavigationTitle(): string
202  {
203  return $this->navigationTitle ?: ‪$this->title;
204  }
205 
206  public function ‪getWebsiteTitle(): string
207  {
208  return ‪$this->websiteTitle;
209  }
210 
211  public function ‪getFlagIdentifier(): string
212  {
214  }
215 
222  public function ‪getTypo3Language(): string
223  {
224  if ($this->typo3Language !== '') {
226  }
227  // locale is just set to "C" or "en", this should then be mapped to "default"
228  if ($this->locale->getLanguageCode() === 'en' && !$this->locale->getCountryCode()) {
229  return 'default';
230  }
231  ‪$typo3Language = $this->locale->getLanguageCode();
232  if ($this->locale->getCountryCode()) {
233  ‪$typo3Language .= '_' . $this->locale->getCountryCode();
234  }
235  return ‪$typo3Language;
236  }
237 
241  public function ‪hasCustomTypo3Language(): bool
242  {
243  return $this->typo3Language !== '';
244  }
245 
249  public function ‪getHreflang(bool $fetchCustomSetting = false): string
250  {
251  // Ensure to check if a custom attribute is set
252  if ($fetchCustomSetting) {
253  return ‪$this->hreflang;
254  }
255  return $this->hreflang ?: $this->locale->getName();
256  }
257 
261  public function ‪enabled(): bool
262  {
263  return ‪$this->enabled;
264  }
265 
269  public function ‪isEnabled(): bool
270  {
271  return ‪$this->enabled;
272  }
273 
274  public function ‪getFallbackType(): string
275  {
276  return ‪$this->fallbackType;
277  }
278 
279  public function ‪getFallbackLanguageIds(): array
280  {
282  }
283 }
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\__construct
‪__construct(int $languageId, string $locale, UriInterface $base, array $configuration)
Definition: SiteLanguage.php:98
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\isEnabled
‪isEnabled()
Definition: SiteLanguage.php:257
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$base
‪UriInterface $base
Definition: SiteLanguage.php:43
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getHreflang
‪getHreflang(bool $fetchCustomSetting=false)
Definition: SiteLanguage.php:237
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getFallbackType
‪getFallbackType()
Definition: SiteLanguage.php:262
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getNavigationTitle
‪getNavigationTitle()
Definition: SiteLanguage.php:189
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getLocale
‪getLocale()
Definition: SiteLanguage.php:174
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$enabled
‪bool $enabled
Definition: SiteLanguage.php:88
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$typo3Language
‪string $typo3Language
Definition: SiteLanguage.php:76
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\enabled
‪enabled()
Definition: SiteLanguage.php:249
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$hreflang
‪string $hreflang
Definition: SiteLanguage.php:69
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage
Definition: SiteLanguage.php:27
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getFallbackLanguageIds
‪getFallbackLanguageIds()
Definition: SiteLanguage.php:267
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getBase
‪getBase()
Definition: SiteLanguage.php:179
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$flagIdentifier
‪string $flagIdentifier
Definition: SiteLanguage.php:63
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getFlagIdentifier
‪getFlagIdentifier()
Definition: SiteLanguage.php:199
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$configuration
‪array $configuration
Definition: SiteLanguage.php:93
‪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:80
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getLanguageId
‪getLanguageId()
Definition: SiteLanguage.php:169
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getTypo3Language
‪getTypo3Language()
Definition: SiteLanguage.php:210
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getWebsiteTitle
‪getWebsiteTitle()
Definition: SiteLanguage.php:194
‪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:229
‪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:150
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\$fallbackLanguageIds
‪array $fallbackLanguageIds
Definition: SiteLanguage.php:84
‪TYPO3\CMS\Core\Site\Entity\SiteLanguage\getTitle
‪getTitle()
Definition: SiteLanguage.php:184