2017-10-23 19:26:07 +02:00
|
|
|
<?php
|
|
|
|
/**
|
2020-02-15 18:57:46 +01:00
|
|
|
* Sets locale information for i18n support
|
|
|
|
*/
|
2017-10-23 19:26:07 +02:00
|
|
|
|
2019-04-10 10:37:35 +02:00
|
|
|
/**
|
2020-02-15 18:57:46 +01:00
|
|
|
* Rudimentary language detection via the browser.
|
|
|
|
* Accept-Language returns a list of weighted values with a quality (or 'q') parameter.
|
|
|
|
* A better method would parse the list of preferred languages and match this with
|
|
|
|
* the languages supported by our platform.
|
|
|
|
*
|
|
|
|
* Refer to: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4
|
2018-05-29 20:55:08 +02:00
|
|
|
*/
|
2018-09-13 00:23:08 +02:00
|
|
|
if (empty($_SESSION['locale']) && strlen($_SERVER['HTTP_ACCEPT_LANGUAGE']) >= 2) {
|
2019-04-10 10:37:35 +02:00
|
|
|
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
|
|
|
|
switch ($lang) {
|
2020-02-15 18:57:46 +01:00
|
|
|
case "de":
|
|
|
|
$locale = "de_DE.UTF-8";
|
|
|
|
break;
|
|
|
|
case "fr":
|
|
|
|
$locale = "fr_FR.UTF-8";
|
|
|
|
break;
|
|
|
|
case "it":
|
|
|
|
$locale = "it_IT.UTF-8";
|
|
|
|
break;
|
|
|
|
case "pt":
|
|
|
|
$locale = "pt_BR.UTF-8";
|
|
|
|
break;
|
|
|
|
case "sv":
|
|
|
|
$locale = "sv_SE.UTF-8";
|
|
|
|
break;
|
|
|
|
case "nl":
|
|
|
|
$locale = "nl_NL.UTF-8";
|
|
|
|
break;
|
|
|
|
case "zh":
|
2020-04-15 10:37:08 +02:00
|
|
|
if ($_SERVER['HTTP_ACCEPT_LANGUAGE'] == 'zh_TW') {
|
|
|
|
$locale = "zh_TW.UTF-8";
|
|
|
|
} else {
|
|
|
|
$locale = "zh_CN.UTF-8";
|
|
|
|
}
|
2020-02-15 18:57:46 +01:00
|
|
|
break;
|
|
|
|
case "cs":
|
|
|
|
$locale = "cs_CZ.UTF-8";
|
|
|
|
break;
|
|
|
|
case "ru":
|
|
|
|
$locale = "ru_RU.UTF-8";
|
|
|
|
break;
|
|
|
|
case "es":
|
|
|
|
$locale = "es_MX.UTF-8";
|
|
|
|
break;
|
|
|
|
case "fi":
|
|
|
|
$locale = "fi_FI.UTF-8";
|
|
|
|
break;
|
2020-04-10 23:27:48 +02:00
|
|
|
case "da":
|
|
|
|
$locale = "da_DK.UTF-8";
|
2020-02-15 18:57:46 +01:00
|
|
|
break;
|
|
|
|
case "tr":
|
|
|
|
$locale = "tr_TR.UTF-8";
|
|
|
|
break;
|
|
|
|
case "id":
|
|
|
|
$locale = "id_ID.UTF-8";
|
|
|
|
break;
|
|
|
|
case "ko":
|
|
|
|
$locale = "ko_KR.UTF-8";
|
|
|
|
break;
|
|
|
|
case "ja":
|
|
|
|
$locale = "ja_JP.UTF-8";
|
|
|
|
break;
|
|
|
|
case "vi":
|
|
|
|
$locale = "vi_VN.UTF-8";
|
|
|
|
break;
|
|
|
|
case "el":
|
|
|
|
$locale = "el_GR.UTF-8";
|
|
|
|
break;
|
2020-10-01 08:54:40 +02:00
|
|
|
case "pl":
|
|
|
|
$locale = "pl_PL.UTF-8";
|
|
|
|
break;
|
2020-02-15 18:57:46 +01:00
|
|
|
default:
|
|
|
|
$locale = "en_GB.UTF-8";
|
|
|
|
break;
|
2019-04-10 10:37:35 +02:00
|
|
|
}
|
2018-09-12 16:43:23 +02:00
|
|
|
|
2019-04-10 10:37:35 +02:00
|
|
|
$_SESSION['locale'] = $locale;
|
2017-10-23 19:26:07 +02:00
|
|
|
}
|
2017-10-23 21:51:34 +02:00
|
|
|
|
2019-09-07 17:42:31 +02:00
|
|
|
// Note: the associated locale must be installed on the RPi
|
|
|
|
// Use: 'sudo raspi-configure' and select 'Localisation Options'
|
2018-05-27 17:50:16 +02:00
|
|
|
|
2018-09-12 16:43:23 +02:00
|
|
|
// activate the locale setting
|
|
|
|
putenv("LANG=" . $_SESSION['locale']);
|
|
|
|
setlocale(LC_ALL, $_SESSION['locale']);
|
|
|
|
|
|
|
|
bindtextdomain(LOCALE_DOMAIN, LOCALE_ROOT);
|
|
|
|
bind_textdomain_codeset(LOCALE_DOMAIN, 'UTF-8');
|
|
|
|
|
|
|
|
textdomain(LOCALE_DOMAIN);
|
2023-03-22 20:39:00 +01:00
|
|
|
|
|
|
|
function getLocales()
|
|
|
|
{
|
|
|
|
$arrLocales = array(
|
|
|
|
'en_GB.UTF-8' => 'English',
|
|
|
|
'cs_CZ.UTF-8' => 'Čeština',
|
|
|
|
'zh_TW.UTF-8' => '正體中文 (Chinese traditional)',
|
|
|
|
'zh_CN.UTF-8' => '简体中文 (Chinese simplified)',
|
|
|
|
'da_DK.UTF-8' => 'Dansk',
|
|
|
|
'de_DE.UTF-8' => 'Deutsch',
|
|
|
|
'es_MX.UTF-8' => 'Español',
|
|
|
|
'fi_FI.UTF-8' => 'Finnish',
|
|
|
|
'fr_FR.UTF-8' => 'Français',
|
|
|
|
'el_GR.UTF-8' => 'Ελληνικά',
|
|
|
|
'id_ID.UTF-8' => 'Indonesian',
|
|
|
|
'it_IT.UTF-8' => 'Italiano',
|
|
|
|
'ja_JP.UTF-8' => '日本語 (Japanese)',
|
|
|
|
'ko_KR.UTF-8' => '한국어 (Korean)',
|
|
|
|
'nl_NL.UTF-8' => 'Nederlands',
|
|
|
|
'pl_PL.UTF-8' => 'Polskie',
|
|
|
|
'pt_BR.UTF-8' => 'Português',
|
|
|
|
'ru_RU.UTF-8' => 'Русский',
|
|
|
|
'ro_RO.UTF-8' => 'Română',
|
|
|
|
'sv_SE.UTF-8' => 'Svenska',
|
|
|
|
'tr_TR.UTF-8' => 'Türkçe',
|
|
|
|
'vi_VN.UTF-8' => 'Tiếng Việt (Vietnamese)'
|
|
|
|
);
|
|
|
|
return $arrLocales;
|
|
|
|
}
|
|
|
|
|