Elgg  Version master
LocaleService.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\I18n;
4 
5 use Elgg\Config;
6 
14 
15  protected array $locale;
16 
22  public function __construct(protected Config $config) {
23  $this->initializeElggLocale();
24  }
25 
31  public function getLanguageCodes() {
32  return array_keys($this->locale);
33  }
34 
43  public function setLocaleForLanguage(string $language, array $locale = []) {
44  $this->locale[$language] = $locale;
45  }
46 
54  public function getLocaleForLanguage(string $language) {
55  return $this->locale[$language] ?? [];
56  }
57 
65  public function getLocale(int $category) {
66  return (array) setlocale($category, 0);
67  }
68 
80  public function setLocale(int $category, $locale) {
81  $current = $this->getLocale($category);
82 
83  setlocale($category, $locale);
84 
85  return $current;
86  }
87 
96  public function setLocaleFromLanguageKey(int $category, string $language = null) {
97  if (!isset($language)) {
99  }
100 
101  $locale = [
102  $language,
103  ];
104  $locale += $this->getLocaleForLanguage($language);
105 
106  return $this->setLocale($category, $locale);
107  }
108 
118  private function initializeElggLocale() {
119  $this->locale = [
120  'aa' => [], // 'Afar'
121  'ab' => [], // 'Abkhazian'
122  'af' => [], // 'Afrikaans'
123  'am' => [], // 'Amharic'
124  'ar' => [], // 'Arabic'
125  'as' => [], // 'Assamese'
126  'ay' => [], // 'Aymara'
127  'az' => [], // 'Azerbaijani'
128  'ba' => [], // 'Bashkir'
129  'be' => [], // 'Byelorussian'
130  'bg' => [], // 'Bulgarian'
131  'bh' => [], // 'Bihari'
132  'bi' => [], // 'Bislama'
133  'bn' => [], // 'Bengali; Bangla'
134  'bo' => [], // 'Tibetan'
135  'br' => [], // 'Breton'
136  'ca' => [], // 'Catalan'
137  'cmn' => [], // 'Mandarin Chinese' // ISO 639-3
138  'co' => [], // 'Corsican'
139  'cs' => [], // 'Czech'
140  'cy' => [], // 'Welsh'
141  'da' => [], // 'Danish'
142  'de' => [], // 'German'
143  'dz' => [], // 'Bhutani'
144  'el' => [], // 'Greek'
145  'en' => [], // 'English'
146  'eo' => [], // 'Esperanto'
147  'es' => [], // 'Spanish'
148  'et' => [], // 'Estonian'
149  'eu' => [], // 'Basque'
150  'eu_es' => [], // 'Basque (Spain)'
151  'fa' => [], // 'Persian'
152  'fi' => [], // 'Finnish'
153  'fj' => [], // 'Fiji'
154  'fo' => [], // 'Faeroese'
155  'fr' => [], // 'French'
156  'fy' => [], // 'Frisian'
157  'ga' => [], // 'Irish'
158  'gd' => [], // 'Scots / Gaelic'
159  'gl' => [], // 'Galician'
160  'gn' => [], // 'Guarani'
161  'gu' => [], // 'Gujarati'
162  'he' => [], // 'Hebrew'
163  'ha' => [], // 'Hausa'
164  'hi' => [], // 'Hindi'
165  'hr' => [], // 'Croatian'
166  'hu' => [], // 'Hungarian'
167  'hy' => [], // 'Armenian'
168  'ia' => [], // 'Interlingua'
169  'id' => [], // 'Indonesian'
170  'ie' => [], // 'Interlingue'
171  'ik' => [], // 'Inupiak'
172  'is' => [], // 'Icelandic'
173  'it' => [], // 'Italian'
174  'iu' => [], // 'Inuktitut'
175  'iw' => [], // 'Hebrew (obsolete)'
176  'ja' => [], // 'Japanese'
177  'ji' => [], // 'Yiddish (obsolete)'
178  'jw' => [], // 'Javanese'
179  'ka' => [], // 'Georgian'
180  'kk' => [], // 'Kazakh'
181  'kl' => [], // 'Greenlandic'
182  'km' => [], // 'Cambodian'
183  'kn' => [], // 'Kannada'
184  'ko' => [], // 'Korean'
185  'ks' => [], // 'Kashmiri'
186  'ku' => [], // 'Kurdish'
187  'ky' => [], // 'Kirghiz'
188  'la' => [], // 'Latin'
189  'ln' => [], // 'Lingala'
190  'lo' => [], // 'Laothian'
191  'lt' => [], // 'Lithuanian'
192  'lv' => [], // 'Latvian/Lettish'
193  'mg' => [], // 'Malagasy'
194  'mi' => [], // 'Maori'
195  'mk' => [], // 'Macedonian'
196  'ml' => [], // 'Malayalam'
197  'mn' => [], // 'Mongolian'
198  'mo' => [], // 'Moldavian'
199  'mr' => [], // 'Marathi'
200  'ms' => [], // 'Malay'
201  'mt' => [], // 'Maltese'
202  'my' => [], // 'Burmese'
203  'na' => [], // 'Nauru'
204  'ne' => [], // 'Nepali'
205  'nl' => [], // 'Dutch'
206  'no' => [], // 'Norwegian'
207  'oc' => [], // 'Occitan'
208  'om' => [], // '(Afan) Oromo'
209  'or' => [], // 'Oriya'
210  'pa' => [], // 'Punjabi'
211  'pl' => [], // 'Polish'
212  'ps' => [], // 'Pashto / Pushto'
213  'pt' => [], // 'Portuguese'
214  'pt_br' => [], // 'Portuguese (Brazil)'
215  'qu' => [], // 'Quechua'
216  'rm' => [], // 'Rhaeto-Romance'
217  'rn' => [], // 'Kirundi'
218  'ro' => [], // 'Romanian'
219  'ro_ro' => [], // 'Romanian (Romania)'
220  'ru' => [], // 'Russian'
221  'rw' => [], // 'Kinyarwanda'
222  'sa' => [], // 'Sanskrit'
223  'sd' => [], // 'Sindhi'
224  'sg' => [], // 'Sangro'
225  'sh' => [], // 'Serbo-Croatian'
226  'si' => [], // 'Singhalese'
227  'sk' => [], // 'Slovak'
228  'sl' => [], // 'Slovenian'
229  'sm' => [], // 'Samoan'
230  'sn' => [], // 'Shona'
231  'so' => [], // 'Somali'
232  'sq' => [], // 'Albanian'
233  'sr' => [], // 'Serbian'
234  'sr_latin' => [], // 'Serbian (Latin)'
235  'ss' => [], // 'Siswati'
236  'st' => [], // 'Sesotho'
237  'su' => [], // 'Sundanese'
238  'sv' => [], // 'Swedish'
239  'sw' => [], // 'Swahili'
240  'ta' => [], // 'Tamil'
241  'te' => [], // 'Tegulu'
242  'tg' => [], // 'Tajik'
243  'th' => [], // 'Thai'
244  'ti' => [], // 'Tigrinya'
245  'tk' => [], // 'Turkmen'
246  'tl' => [], // 'Tagalog'
247  'tn' => [], // 'Setswana'
248  'to' => [], // 'Tonga'
249  'tr' => [], // 'Turkish'
250  'ts' => [], // 'Tsonga'
251  'tt' => [], // 'Tatar'
252  'tw' => [], // 'Twi'
253  'ug' => [], // 'Uigur'
254  'uk' => [], // 'Ukrainian'
255  'ur' => [], // 'Urdu'
256  'uz' => [], // 'Uzbek'
257  'vi' => [], // 'Vietnamese'
258  'vo' => [], // 'Volapuk'
259  'wo' => [], // 'Wolof'
260  'xh' => [], // 'Xhosa'
261  'yi' => [], // 'Yiddish'
262  'yo' => [], // 'Yoruba'
263  'za' => [], // 'Zuang'
264  'zh' => [], // 'Chinese'
265  'zh_hans' => [], // 'Chinese Simplified'
266  'zu' => [], // 'Zulu'
267  ];
268 
269  // merge $CONFIG mapping into the array
270  // this can be set in settings.php
271  if (is_array($this->config->language_to_locale_mapping)) {
272  $this->locale = array_merge($this->locale, $this->config->language_to_locale_mapping);
273  }
274  }
275 }
elgg_get_current_language()
Get the current system/user language or &#39;en&#39;.
Definition: languages.php:27
getLocaleForLanguage(string $language)
Returns the configured locale settings for a given language key.
setLocaleForLanguage(string $language, array $locale=[])
Set the locale settings for a language key.
setLocale(int $category, $locale)
Set the system locale to a new value, return the locale before the change.
setLocaleFromLanguageKey(int $category, string $language=null)
Set the locale from a language key.
getLanguageCodes()
Returns a list of supported laguage codes.
$config
Advanced site settings, debugging section.
Definition: debugging.php:6
Provides locale related features.
getLocale(int $category)
Get the current locale.
__construct(protected Config $config)
Create new service.
$language
Definition: useradd.php:17