You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
7.7 KiB
216 lines
7.7 KiB
1 year ago
|
<?php
|
||
|
/*
|
||
|
** Zabbix
|
||
|
** Copyright (C) 2001-2023 Zabbix SIA
|
||
|
**
|
||
|
** This program is free software; you can redistribute it and/or modify
|
||
|
** it under the terms of the GNU General Public License as published by
|
||
|
** the Free Software Foundation; either version 2 of the License, or
|
||
|
** (at your option) any later version.
|
||
|
**
|
||
|
** This program is distributed in the hope that it will be useful,
|
||
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
** GNU General Public License for more details.
|
||
|
**
|
||
|
** You should have received a copy of the GNU General Public License
|
||
|
** along with this program; if not, write to the Free Software
|
||
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
**/
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Returns a list of all used locales.
|
||
|
*
|
||
|
* Each locale has the following properties:
|
||
|
* - name - the full name of the locale
|
||
|
* - display - whether to display the locale in the frontend
|
||
|
*
|
||
|
* @return array an array of locales with locale codes as keys and arrays as values
|
||
|
*/
|
||
|
function getLocales(): array {
|
||
|
return [
|
||
|
'en_GB' => ['name' => _('English (en_GB)'), 'display' => true],
|
||
|
'en_US' => ['name' => _('English (en_US)'), 'display' => true],
|
||
|
'bg_BG' => ['name' => _('Bulgarian (bg_BG)'), 'display' => false],
|
||
|
'ca_ES' => ['name' => _('Catalan (ca_ES)'), 'display' => true],
|
||
|
'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => true],
|
||
|
'zh_TW' => ['name' => _('Chinese (zh_TW)'), 'display' => false],
|
||
|
'cs_CZ' => ['name' => _('Czech (cs_CZ)'), 'display' => true],
|
||
|
'nl_NL' => ['name' => _('Dutch (nl_NL)'), 'display' => false],
|
||
|
'fi_FI' => ['name' => _('Finnish (fi_FI)'), 'display' => false],
|
||
|
'fr_FR' => ['name' => _('French (fr_FR)'), 'display' => true],
|
||
|
'ka_GE' => ['name' => _('Georgian (ka_GE)'), 'display' => false],
|
||
|
'de_DE' => ['name' => _('German (de_DE)'), 'display' => true],
|
||
|
'el_GR' => ['name' => _('Greek (el_GR)'), 'display' => false],
|
||
|
'he_IL' => ['name' => _('Hebrew (he_IL)'), 'display' => true],
|
||
|
'hu_HU' => ['name' => _('Hungarian (hu_HU)'), 'display' => false],
|
||
|
'id_ID' => ['name' => _('Indonesian (id_ID)'), 'display' => false],
|
||
|
'it_IT' => ['name' => _('Italian (it_IT)'), 'display' => true],
|
||
|
'ko_KR' => ['name' => _('Korean (ko_KR)'), 'display' => true],
|
||
|
'ja_JP' => ['name' => _('Japanese (ja_JP)'), 'display' => true],
|
||
|
'lv_LV' => ['name' => _('Latvian (lv_LV)'), 'display' => false],
|
||
|
'lt_LT' => ['name' => _('Lithuanian (lt_LT)'), 'display' => false],
|
||
|
'nb_NO' => ['name' => _('Norwegian (nb_NO)'), 'display' => true],
|
||
|
'fa_IR' => ['name' => _('Persian (fa_IR)'), 'display' => false],
|
||
|
'pl_PL' => ['name' => _('Polish (pl_PL)'), 'display' => true],
|
||
|
'pt_BR' => ['name' => _('Portuguese (pt_BR)'), 'display' => true],
|
||
|
'pt_PT' => ['name' => _('Portuguese (pt_PT)'), 'display' => true],
|
||
|
'ro_RO' => ['name' => _('Romanian (ro_RO)'), 'display' => false],
|
||
|
'ru_RU' => ['name' => _('Russian (ru_RU)'), 'display' => true],
|
||
|
'sk_SK' => ['name' => _('Slovak (sk_SK)'), 'display' => true],
|
||
|
'es_ES' => ['name' => _('Spanish (es_ES)'), 'display' => false],
|
||
|
'sv_SE' => ['name' => _('Swedish (sv_SE)'), 'display' => false],
|
||
|
'tr_TR' => ['name' => _('Turkish (tr_TR)'), 'display' => true],
|
||
|
'uk_UA' => ['name' => _('Ukrainian (uk_UA)'), 'display' => true],
|
||
|
'vi_VN' => ['name' => _('Vietnamese (vi_VN)'), 'display' => true]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get support URL for specified language.
|
||
|
*
|
||
|
* @param string|null $language ISO639-1 code or null for English support URL.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
function getSupportUrl(string $language = null): string {
|
||
|
$urls = [
|
||
|
'cs' => 'https://www.zabbix.com/cz/support',
|
||
|
'fr' => 'https://www.zabbix.com/fr/support',
|
||
|
'ja' => 'https://www.zabbix.com/jp/support',
|
||
|
'pt' => 'https://www.zabbix.com/br/support',
|
||
|
'ru' => 'https://www.zabbix.com/ru/support',
|
||
|
'zh' => 'https://www.zabbix.com/cn/support'
|
||
|
];
|
||
|
|
||
|
return array_key_exists($language, $urls) ? $urls[$language] : 'https://www.zabbix.com/support';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get integrations URL for specified language.
|
||
|
*
|
||
|
* @param string|null $language ISO639-1 code or null for English integrations URL.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
function getIntegrationsUrl(string $language = null): string {
|
||
|
$urls = [
|
||
|
'cs' => 'https://www.zabbix.com/cz/integrations',
|
||
|
'fr' => 'https://www.zabbix.com/fr/integrations',
|
||
|
'ja' => 'https://www.zabbix.com/jp/integrations',
|
||
|
'pt' => 'https://www.zabbix.com/br/integrations',
|
||
|
'ru' => 'https://www.zabbix.com/ru/integrations',
|
||
|
'zh' => 'https://www.zabbix.com/cn/integrations'
|
||
|
];
|
||
|
|
||
|
return array_key_exists($language, $urls) ? $urls[$language] : 'https://www.zabbix.com/integrations';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns an array of locale name variants based on language.
|
||
|
*
|
||
|
* @param string $language Language in format 'ru_RU', 'en_EN' and so on.
|
||
|
*
|
||
|
* @return array A list of possible locale names.
|
||
|
*/
|
||
|
function zbx_locale_variants($language) {
|
||
|
if (stripos(PHP_OS, 'WIN') === 0) {
|
||
|
return zbx_locale_variants_win($language);
|
||
|
}
|
||
|
|
||
|
return zbx_locale_variants_unix($language);
|
||
|
}
|
||
|
|
||
|
function zbx_locale_variants_unix($language) {
|
||
|
$postfixes = [
|
||
|
'',
|
||
|
'.utf8',
|
||
|
'.UTF-8',
|
||
|
'.iso885915',
|
||
|
'.ISO8859-1',
|
||
|
'.ISO8859-2',
|
||
|
'.ISO8859-4',
|
||
|
'.ISO8859-5',
|
||
|
'.ISO8859-15',
|
||
|
'.ISO8859-13',
|
||
|
'.CP1131',
|
||
|
'.CP1251',
|
||
|
'.CP1251',
|
||
|
'.CP949',
|
||
|
'.KOI8-U',
|
||
|
'.US-ASCII',
|
||
|
'.eucKR',
|
||
|
'.eucJP',
|
||
|
'.SJIS',
|
||
|
'.GB18030',
|
||
|
'.GB2312',
|
||
|
'.GBK',
|
||
|
'.eucCN',
|
||
|
'.Big5HKSCS',
|
||
|
'.Big5',
|
||
|
'.armscii8',
|
||
|
'.cp1251',
|
||
|
'.eucjp',
|
||
|
'.euckr',
|
||
|
'.euctw',
|
||
|
'.gb18030',
|
||
|
'.gbk',
|
||
|
'.koi8r',
|
||
|
'.tcvn'
|
||
|
];
|
||
|
|
||
|
$result = [];
|
||
|
foreach ($postfixes as $postfix) {
|
||
|
$result[] = $language.$postfix;
|
||
|
}
|
||
|
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
function zbx_locale_variants_win($language) {
|
||
|
// Windows locales are written like language[_country[.charset]].
|
||
|
// For a list of supported languages see:
|
||
|
// http://msdn.microsoft.com/en-us/library/39cwe7zf(vs.71).aspx
|
||
|
// http://docs.moodle.org/dev/Table_of_locales#Table
|
||
|
// This array should contain all array keys from getLocales() function, but in lowercase.
|
||
|
$win_language_names = [
|
||
|
'en_gb' => ['English_United Kingdom.1252', 'english-uk'],
|
||
|
'en_us' => ['English_United States.1252', 'english-usa'],
|
||
|
'bg_bg' => ['Bulgarian_Bulgaria.1251'],
|
||
|
'ca_es' => ['Catalan_Spain.1252'],
|
||
|
'zh_cn' => ['Chinese (Simplified)_People\'s Republic of China.936', 'chinese'],
|
||
|
'zh_tw' => ['Chinese_Taiwan.950', 'chinese'],
|
||
|
'cs_cz' => ['Czech_Czech Republic.1250', 'czech'],
|
||
|
'nl_nl' => ['Dutch_Netherlands.1252', 'dutch'],
|
||
|
'fi_fi' => ['Finnish_Finland.1252', 'finnish'],
|
||
|
'fr_fr' => ['French_France.1252', 'french'],
|
||
|
'ka_ge' => ['Georgian_Georgia.65001', 'georgian'],
|
||
|
'de_de' => ['German_Germany.1252', 'german'],
|
||
|
'el_gr' => ['Greek_Greece.1253', 'greek'],
|
||
|
'he_il' => ['Hebrew_Israel.1255', 'hebrew'],
|
||
|
'hu_hu' => ['Hungarian_Hungary.1250', 'hungarian'],
|
||
|
'id_id' => ['Indonesian_indonesia.1252', 'indonesian'],
|
||
|
'it_it' => ['Italian_Italy.1252', 'italian'],
|
||
|
'ko_kr' => ['Korean_Korea.949', 'korean'],
|
||
|
'ja_jp' => ['Japanese_Japan.932', 'japanese'],
|
||
|
'lv_lv' => ['Latvian_Latvia.1257', 'latvian'],
|
||
|
'lt_lt' => ['Lithuanian_Lithuania.1257', 'lithuanian'],
|
||
|
'nb_no' => ['Norwegian_Norway.1252', 'norwegian'],
|
||
|
'fa_ir' => ['Farsi_Iran.1256', 'farsi'],
|
||
|
'pl_pl' => ['Polish_Poland.1250', 'polish'],
|
||
|
'pt_br' => ['Portuguese_Brazil.1252', 'portuguese-brazil'],
|
||
|
'pt_pt' => ['Portuguese_Portugal.1252', 'portuguese'],
|
||
|
'ro_ro' => ['Romanian_Romania.1250', 'romanian'],
|
||
|
'ru_ru' => ['Russian_Russia.1251', 'russian'],
|
||
|
'sk_sk' => ['Slovak_Slovakia.1250', 'slovak'],
|
||
|
'es_es' => ['Spanish_Spain.1252', 'spanish'],
|
||
|
'sv_se' => ['Swedish_Sweden.1252', 'swedish'],
|
||
|
'tr_tr' => ['Turkish_Turkey.1254', 'turkish'],
|
||
|
'uk_ua' => ['Ukrainian_Ukraine.1251', 'ukrainian'],
|
||
|
'vi_vn' => ['Vietnamese_Viet Nam.1258', 'vietnamese']
|
||
|
];
|
||
|
|
||
|
return $win_language_names[strtolower($language)];
|
||
|
}
|