3 * This class is part of FlightAirmap. It's used to use languages translations
5 * Copyright (c) Ycarus (Yannick Chabanois) <support@flightairmap.com>
6 * Licensed under AGPL license.
7 * For more information see: https://www.flightairmap.com/
10 if (!function_exists("gettext")) {
15 if (isset($_COOKIE['language']) && $_COOKIE['language'] != 'en_GB' && (isset($globalTranslate) && $globalTranslate)) {
16 $Language = new Language();
17 $lang = $_COOKIE['language'];
18 putenv("LC_ALL=$lang");
19 setlocale(LC_ALL
, $Language->getLocale($lang));
20 bindtextdomain("fam", dirname(__FILE__
).'/../locale');
22 bind_textdomain_codeset("fam", 'UTF-8');
27 public $all_languages = array('ar_SA' => array('العَرَبِيَّةُ', 'ar', 'arabic'),
28 'bg_BG' => array('Български', 'bg', 'bulgarian'),
29 'id_ID' => array('Bahasa Indonesia', 'id', 'indonesian'),
30 'ms_MY' => array('Bahasa Melayu', 'ms', 'malay'),
31 'ca_ES' => array('Català', 'ca', 'catalan'), // ca_CA
32 'cs_CZ' => array('Čeština', 'cs', 'czech'),
33 'de_DE' => array('Deutsch', 'de', 'german'),
34 'da_DK' => array('Dansk', 'da', 'danish') , // dk_DK
35 'et_EE' => array('Eesti', 'et', 'estonian'), // ee_ET
36 'en_GB' => array('English', 'en', 'english'),
37 'en_US' => array('English (US)', 'en', 'english'),
38 'es_AR' => array('Español (Argentina)', 'es', 'spanish'),
39 'es_CO' => array('Español (Colombia)', 'es', 'spanish'),
40 'es_ES' => array('Español', 'es', 'spanish'),
41 'es_419' => array('Español (América Latina)', 'es', 'spanish'),
42 'es_MX' => array('Español (Mexico)', 'es', 'spanish'),
43 'es_VE' => array('Español (Venezuela)', 'es', 'spanish'),
44 'eu_ES' => array('Euskara', 'en', 'basque'),
45 'fr_FR' => array('Français', 'fr', 'french'),
46 'gl_ES' => array('Galego', 'gl', 'galician'),
47 'el_GR' => array('Ελληνικά', 'el', 'greek'), // el_EL
48 'he_IL' => array('עברית', 'he', 'hebrew'), // he_HE
49 'hr_HR' => array('Hrvatski', 'hr', 'croatian'),
50 'hu_HU' => array('Magyar', 'hu', 'hungarian'),
51 'it_IT' => array('Italiano', 'it', 'italian'),
52 'lv_LV' => array('Latviešu', 'lv', 'latvian'),
53 'lt_LT' => array('Lietuvių', 'lt', 'lithuanian'),
54 'nl_NL' => array('Nederlands', 'nl', 'dutch'),
55 'nb_NO' => array('Norsk (Bokmål)', 'nb', 'norwegian'), // no_NB
56 'nn_NO' => array('Norsk (Nynorsk)', 'nn', 'norwegian'), // no_NN
57 'fa_IR' => array('فارسی', 'fa', 'persian'),
58 'pl_PL' => array('Polski', 'pl', 'polish'),
59 'pt_PT' => array('Português', 'pt', 'portuguese'),
60 'pt_BR' => array('Português do Brasil', 'pt', 'brazilian portuguese'),
61 'ro_RO' => array('Română', 'en', 'romanian'),
62 'ru_RU' => array('Pусский', 'ru', 'russian'),
63 'sk_SK' => array('Slovenčina', 'sk', 'slovak'),
64 'sl_SI' => array('Slovenščina', 'sl', 'slovenian slovene'),
65 'sr_RS' => array('Srpski', 'sr', 'serbian'),
66 'fi_FI' => array('Suomi', 'fi', 'finish'),
67 'sv_SE' => array('Svenska', 'sv', 'swedish'),
68 'vi_VN' => array('Tiếng Việt', 'vi', 'vietnamese'),
69 'th_TH' => array('ภาษาไทย', 'th', 'thai'),
70 'tr_TR' => array('Türkçe', 'tr', 'turkish'),
71 'uk_UA' => array('Українська', 'en', 'ukrainian'), // ua_UA
72 'ja_JP' => array('日本語', 'ja', 'japanese'),
73 'zh_CN' => array('简体中文', 'zh', 'chinese'),
74 'zh_TW' => array('繁體中文', 'zh', 'chinese'),
75 'ko_KR' => array('한글', 'ko', 'korean')
79 * Returns list of available locales
83 public function listLocaleDir()
85 $result = array('en_GB');
86 if (!is_dir(dirname(__FILE__
).'/../locale')) {
89 $handle = @opendir
(dirname(__FILE__
).'/../locale');
90 if ($handle === false) return $result;
91 while (false !== ($file = readdir($handle))) {
92 $path = dirname(__FILE__
).'/../locale'.'/'.$file.'/LC_MESSAGES/fam.mo';
93 if ($file != "." && $file != ".." && @file_exists
($path)) {
101 public function getLocale($locale)
103 return array($locale,$this->all_languages
[$locale][1],$this->all_languages
[$locale][2],$locale.'.utf8',$locale.'.UTF8');
107 * Returns list of available languages
111 public function getLanguages()
113 $available = $this->listLocaleDir();
114 $allAvailableLanguages = array();
115 $currentLocal = setlocale(LC_ALL
, 0);
116 foreach ($available as $lang) {
117 if (isset($this->all_languages
[$lang]) && (setlocale(LC_ALL
,$this->getLocale($lang)) ||
$lang = 'en_GB')) $allAvailableLanguages[$lang] = $this->all_languages
[$lang];
119 setlocale(LC_ALL
,$currentLocal);
120 return $allAvailableLanguages;