2302 lines
65 KiB
PHP
2302 lines
65 KiB
PHP
<?php
|
||
|
||
/* --------------------------------------------------------------------
|
||
|
||
Chevereto
|
||
http://chevereto.com/
|
||
|
||
@author Rodolfo Berrios A. <http://rodolfoberrios.com/>
|
||
<inbox@rodolfoberrios.com>
|
||
|
||
Copyright (C) Rodolfo Berrios A. All rights reserved.
|
||
|
||
BY USING THIS SOFTWARE YOU DECLARE TO ACCEPT THE CHEVERETO EULA
|
||
http://chevereto.com/license
|
||
|
||
--------------------------------------------------------------------- */
|
||
|
||
namespace CHV;
|
||
|
||
use G;
|
||
use Exception;
|
||
use DirectoryIterator;
|
||
use RegexIterator;
|
||
|
||
class L10n
|
||
{
|
||
protected static $instance;
|
||
protected static $processed;
|
||
const CHV_DEFAULT_LANGUAGE_EXTENSION = 'po';
|
||
const CHV_BASE_LANGUAGE = 'en';
|
||
|
||
public static $gettext;
|
||
public static $translation_table;
|
||
public static $available_languages;
|
||
public static $enabled_languages;
|
||
public static $disabled_languages;
|
||
public static $locale = self::CHV_BASE_LANGUAGE;
|
||
public static $forced_locale = false;
|
||
|
||
public function __construct()
|
||
{
|
||
try {
|
||
|
||
// Stock the available languages
|
||
self::$available_languages = [];
|
||
$directory = new DirectoryIterator(CHV_APP_PATH_CONTENT_LANGUAGES);
|
||
$regex = new RegexIterator($directory, '/^.+\.'. self::CHV_DEFAULT_LANGUAGE_EXTENSION .'$/i', RegexIterator::GET_MATCH);
|
||
|
||
$locales = self::getLocales();
|
||
$missing_locales = [];
|
||
foreach ($regex as $file) {
|
||
$file = $file[0];
|
||
$locale_code = basename($file, '.' . self::CHV_DEFAULT_LANGUAGE_EXTENSION);
|
||
self::$available_languages[$locale_code] = $locales[$locale_code];
|
||
}
|
||
|
||
// Remove any missing lang array
|
||
self::$available_languages = array_filter(self::$available_languages);
|
||
|
||
// Handle the enabled/disabled languages
|
||
self::$enabled_languages = self::$available_languages;
|
||
self::$disabled_languages = [];
|
||
foreach (getSetting('languages_disable') as $k) {
|
||
self::$disabled_languages[$k] = $locales[$k];
|
||
unset(self::$enabled_languages[$k]);
|
||
}
|
||
|
||
if (!self::$forced_locale) {
|
||
|
||
// Set default website locale
|
||
if (array_key_exists(getSetting('default_language'), self::$available_languages)) {
|
||
$locale = getSetting('default_language'); // Default from DB value
|
||
} else {
|
||
$locale = self::$locale; // Default from class static
|
||
}
|
||
|
||
// Auto-language?
|
||
if (getSetting('auto_language') and !Login::isLoggedUser()) {
|
||
foreach (G\get_client_languages() as $k => $v) {
|
||
$user_locale = str_replace('_', '-', $k);
|
||
if (array_key_exists($user_locale, self::$available_languages) and !array_key_exists($user_locale, self::$disabled_languages)) {
|
||
$locale = $user_locale;
|
||
break;
|
||
} else {
|
||
// try to use a base language
|
||
foreach (self::$available_languages as $k => $v) {
|
||
if ($v['base'] == substr($user_locale, 0, 2)) {
|
||
$locale = $k;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if ($locale) {
|
||
break;
|
||
}
|
||
};
|
||
}
|
||
|
||
// Override with the user selected lang
|
||
if (Login::isLoggedUser() || $_COOKIE['USER_SELECTED_LANG']) {
|
||
$user_lang = Login::getUser() ? Login::getUser()['language'] : $_COOKIE['USER_SELECTED_LANG'];
|
||
if (array_key_exists($user_lang, self::$available_languages) and !array_key_exists($user_lang, self::$disabled_languages)) {
|
||
$locale = $user_lang;
|
||
}
|
||
}
|
||
} else {
|
||
$locale = self::$forced_locale;
|
||
}
|
||
|
||
// Set some language definitions
|
||
if (!defined('CHV_LANGUAGE_CODE')) {
|
||
define('CHV_LANGUAGE_CODE', $locale);
|
||
}
|
||
if (!defined('CHV_LANGUAGE_FILE')) {
|
||
define('CHV_LANGUAGE_FILE', CHV_APP_PATH_CONTENT_LANGUAGES . $locale . '.' . self::CHV_DEFAULT_LANGUAGE_EXTENSION);
|
||
}
|
||
|
||
self::processTranslation($locale);
|
||
} catch (Exception $e) {
|
||
throw $e;
|
||
}
|
||
}
|
||
|
||
public static function getInstance()
|
||
{
|
||
if (is_null(self::$instance)) {
|
||
self::$instance = new self;
|
||
}
|
||
return self::$instance;
|
||
}
|
||
|
||
public static function setLocale($locale)
|
||
{
|
||
if (is_null(self::$instance)) {
|
||
self::$forced_locale = $locale;
|
||
} else {
|
||
self::processTranslation($locale);
|
||
}
|
||
}
|
||
|
||
public static function processTranslation($locale)
|
||
{
|
||
if (is_null($locale)) {
|
||
$locale = self::$locale;
|
||
}
|
||
|
||
// Already did it
|
||
if ($locale == self::$locale and isset(self::$translation_table)) {
|
||
return;
|
||
}
|
||
|
||
// If locale isn't available use the default one and if that fails use the first one in the available table
|
||
if (!array_key_exists($locale, self::$available_languages)) {
|
||
if (array_key_exists(self::$locale, self::$available_languages)) {
|
||
$locale = self::$available_languages;
|
||
} else {
|
||
$array = self::$available_languages;
|
||
reset($array);
|
||
$first_key = key($array);
|
||
$locale = $first_key;
|
||
}
|
||
}
|
||
|
||
// Filename
|
||
$filename = $locale . '.' . self::CHV_DEFAULT_LANGUAGE_EXTENSION;
|
||
|
||
// Overriding?
|
||
$language_file = CHV_APP_PATH_CONTENT_LANGUAGES . $filename;
|
||
$language_override_file = dirname($language_file) . '/overrides/' . $filename;
|
||
|
||
// Stock the static $locale
|
||
self::$locale = $locale;
|
||
|
||
// Handle translation and its overrides
|
||
$language_handling = [
|
||
'base' => [
|
||
'file' => $language_file,
|
||
'cache_path' => dirname($language_file) . '/cache/',
|
||
'table' => [],
|
||
],
|
||
'override' => [
|
||
'file' => $language_override_file,
|
||
'cache_path' => dirname($language_file) . '/cache/overrides/',
|
||
'table' => [],
|
||
]
|
||
];
|
||
|
||
foreach ($language_handling as $k => $v) {
|
||
$cache_path = $v['cache_path'];
|
||
$cache_file = basename($v['file']) . '.cache.php';
|
||
|
||
if (!file_exists($v['file'])) {
|
||
continue;
|
||
}
|
||
|
||
if (!file_exists($cache_path) and !@mkdir($cache_path)) {
|
||
$cache_path = dirname($cache_path);
|
||
}
|
||
|
||
try {
|
||
self::$gettext = new G\Gettext([
|
||
'file' => $v['file'],
|
||
'cache_filepath' => $cache_path . $cache_file,
|
||
'cache_header' => $k == 'base',
|
||
]);
|
||
if ($k == 'base') {
|
||
$translation_plural = self::$gettext->translation_plural;
|
||
$translation_header = self::$gettext->translation_header;
|
||
}
|
||
$language_handling[$k]['table'] = self::$gettext->translation_table;
|
||
} catch (GettextException $e) {
|
||
error_log($e); // Silence
|
||
}
|
||
}
|
||
|
||
// Re-stock the base language values
|
||
self::$gettext->translation_plural = $translation_plural;
|
||
self::$gettext->translation_header = $translation_header;
|
||
self::$gettext->translation_table = array_merge($language_handling['base']['table'], $language_handling['override']['table']);
|
||
self::$translation_table = self::$gettext->translation_table;
|
||
}
|
||
|
||
// gettext wrapper
|
||
public static function gettext($msg)
|
||
{
|
||
$translation = self::getGettext()->gettext($msg);
|
||
return $translation;
|
||
}
|
||
|
||
// ngettext wrapper
|
||
public static function ngettext($msg, $msg_plural, $count)
|
||
{
|
||
$translation = self::getGettext()->ngettext($msg, $msg_plural, $count);
|
||
return $translation;
|
||
}
|
||
|
||
public static function setStatic($var, $value)
|
||
{
|
||
$instance = self::getInstance();
|
||
$instance::${$var} = $value;
|
||
}
|
||
|
||
public static function getStatic($var)
|
||
{
|
||
$instance = self::getInstance();
|
||
return $instance::${$var};
|
||
}
|
||
public static function getAvailableLanguages()
|
||
{
|
||
return self::getStatic('available_languages');
|
||
}
|
||
public static function getEnabledLanguages()
|
||
{
|
||
return self::getStatic('enabled_languages');
|
||
}
|
||
public static function getDisabledLanguages()
|
||
{
|
||
return self::getStatic('disabled_languages');
|
||
}
|
||
public static function getGettext()
|
||
{
|
||
return self::getStatic('gettext');
|
||
}
|
||
public static function getTranslation()
|
||
{
|
||
return self::getStatic('translation_table');
|
||
}
|
||
public static function getLocale()
|
||
{
|
||
return self::getStatic('locale');
|
||
}
|
||
|
||
// Locales table
|
||
public static function getLocales()
|
||
{
|
||
return [
|
||
'af' => [
|
||
'code' => 'af',
|
||
'dir' => 'ltr',
|
||
'name' => 'Afrikaans',
|
||
'base' => 'af',
|
||
'short_name' => 'AF',
|
||
],
|
||
'af-AF' => [
|
||
'code' => 'af-AF',
|
||
'dir' => 'ltr',
|
||
'name' => 'Afrikaans',
|
||
'base' => 'af',
|
||
'short_name' => 'AF (AF)',
|
||
],
|
||
'am' => [
|
||
'code' => 'am',
|
||
'dir' => 'ltr',
|
||
'name' => 'āmariññā',
|
||
'base' => 'am',
|
||
'short_name' => 'AM',
|
||
],
|
||
'am-AM' => [
|
||
'code' => 'am-AM',
|
||
'dir' => 'ltr',
|
||
'name' => 'āmariññā',
|
||
'base' => 'am',
|
||
'short_name' => 'AM (AM)',
|
||
],
|
||
'an' => [
|
||
'code' => 'an',
|
||
'dir' => 'ltr',
|
||
'name' => 'Aragonés',
|
||
'base' => 'an',
|
||
'short_name' => 'AN',
|
||
],
|
||
'an-AN' => [
|
||
'code' => 'an-AN',
|
||
'dir' => 'ltr',
|
||
'name' => 'Aragonés',
|
||
'base' => 'an',
|
||
'short_name' => 'AN (AN)',
|
||
],
|
||
'ar' => [
|
||
'code' => 'ar',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR',
|
||
],
|
||
'ar-AE' => [
|
||
'code' => 'ar-AE',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (الإمارات)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (AE)',
|
||
],
|
||
'ar-BH' => [
|
||
'code' => 'ar-BH',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (البحرين)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (BH)',
|
||
],
|
||
'ar-DZ' => [
|
||
'code' => 'ar-DZ',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (الجزائر)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (DZ)',
|
||
],
|
||
'ar-EG' => [
|
||
'code' => 'ar-EG',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (مصر)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (EG)',
|
||
],
|
||
'ar-IQ' => [
|
||
'code' => 'ar-IQ',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (العراق)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (IQ)',
|
||
],
|
||
'ar-JO' => [
|
||
'code' => 'ar-JO',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (الأردن)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (JO)',
|
||
],
|
||
'ar-KW' => [
|
||
'code' => 'ar-KW',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (الكويت)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (KW)',
|
||
],
|
||
'ar-LB' => [
|
||
'code' => 'ar-LB',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (لبنان)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (LB)',
|
||
],
|
||
'ar-LY' => [
|
||
'code' => 'ar-LY',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (ليبيا)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (LY)',
|
||
],
|
||
'ar-MA' => [
|
||
'code' => 'ar-MA',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (المغرب)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (MA)',
|
||
],
|
||
'ar-OM' => [
|
||
'code' => 'ar-OM',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (سلطنة عمان)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (OM)',
|
||
],
|
||
'ar-QA' => [
|
||
'code' => 'ar-QA',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (قطر)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (QA)',
|
||
],
|
||
'ar-SA' => [
|
||
'code' => 'ar-SA',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (السعودية)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (SA)',
|
||
],
|
||
'ar-SD' => [
|
||
'code' => 'ar-SD',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (السودان)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (SD)',
|
||
],
|
||
'ar-SY' => [
|
||
'code' => 'ar-SY',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (سوريا)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (SY)',
|
||
],
|
||
'ar-TN' => [
|
||
'code' => 'ar-TN',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (تونس)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (TN)',
|
||
],
|
||
'ar-YE' => [
|
||
'code' => 'ar-YE',
|
||
'dir' => 'rtl',
|
||
'name' => 'العربية (اليمن)',
|
||
'base' => 'ar',
|
||
'short_name' => 'AR (YE)',
|
||
],
|
||
'as' => [
|
||
'code' => 'as',
|
||
'dir' => 'ltr',
|
||
'name' => 'অসমীয়া',
|
||
'base' => 'as',
|
||
'short_name' => 'AS',
|
||
],
|
||
'as-AS' => [
|
||
'code' => 'as-AS',
|
||
'dir' => 'ltr',
|
||
'name' => 'অসমীয়া',
|
||
'base' => 'as',
|
||
'short_name' => 'AS (AS)',
|
||
],
|
||
'ast' => [
|
||
'code' => 'ast',
|
||
'dir' => 'ltr',
|
||
'name' => 'Asturianu',
|
||
'base' => 'ast',
|
||
'short_name' => 'AST',
|
||
],
|
||
'ast-AST' => [
|
||
'code' => 'ast-AST',
|
||
'dir' => 'ltr',
|
||
'name' => 'Asturianu',
|
||
'base' => 'ast',
|
||
'short_name' => 'AST (AST)',
|
||
],
|
||
'az' => [
|
||
'code' => 'az',
|
||
'dir' => 'ltr',
|
||
'name' => 'Azərbaycan',
|
||
'base' => 'az',
|
||
'short_name' => 'AZ',
|
||
],
|
||
'az-AZ' => [
|
||
'code' => 'az-AZ',
|
||
'dir' => 'ltr',
|
||
'name' => 'Azərbaycan',
|
||
'base' => 'az',
|
||
'short_name' => 'AZ (AZ)',
|
||
],
|
||
'ba' => [
|
||
'code' => 'ba',
|
||
'dir' => 'ltr',
|
||
'name' => 'Башҡорт',
|
||
'base' => 'ba',
|
||
'short_name' => 'BA',
|
||
],
|
||
'ba-BA' => [
|
||
'code' => 'ba-BA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Башҡорт',
|
||
'base' => 'ba',
|
||
'short_name' => 'BA (BA)',
|
||
],
|
||
'be' => [
|
||
'code' => 'be',
|
||
'dir' => 'ltr',
|
||
'name' => 'Беларускі',
|
||
'base' => 'be',
|
||
'short_name' => 'BE',
|
||
],
|
||
'be-BY' => [
|
||
'code' => 'be-BY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Беларускі',
|
||
'base' => 'be',
|
||
'short_name' => 'BE (BY)',
|
||
],
|
||
'bg' => [
|
||
'code' => 'bg',
|
||
'dir' => 'ltr',
|
||
'name' => 'Български',
|
||
'base' => 'bg',
|
||
'short_name' => 'BG',
|
||
],
|
||
'bg-BG' => [
|
||
'code' => 'bg-BG',
|
||
'dir' => 'ltr',
|
||
'name' => 'Български',
|
||
'base' => 'bg',
|
||
'short_name' => 'BG (BG)',
|
||
],
|
||
'bn' => [
|
||
'code' => 'bn',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bangla',
|
||
'base' => 'bn',
|
||
'short_name' => 'BN',
|
||
],
|
||
'bn-BN' => [
|
||
'code' => 'bn-BN',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bangla',
|
||
'base' => 'bn',
|
||
'short_name' => 'BN (BN)',
|
||
],
|
||
'br' => [
|
||
'code' => 'br',
|
||
'dir' => 'ltr',
|
||
'name' => 'Brezhoneg',
|
||
'base' => 'br',
|
||
'short_name' => 'BR',
|
||
],
|
||
'br-BR' => [
|
||
'code' => 'br-BR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Brezhoneg',
|
||
'base' => 'br',
|
||
'short_name' => 'BR (BR)',
|
||
],
|
||
'bs' => [
|
||
'code' => 'bs',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bosanski',
|
||
'base' => 'bs',
|
||
'short_name' => 'BS',
|
||
],
|
||
'bs-BS' => [
|
||
'code' => 'bs-BS',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bosanski',
|
||
'base' => 'bs',
|
||
'short_name' => 'BS (BS)',
|
||
],
|
||
'ca' => [
|
||
'code' => 'ca',
|
||
'dir' => 'ltr',
|
||
'name' => 'Сatalà',
|
||
'base' => 'ca',
|
||
'short_name' => 'CA',
|
||
],
|
||
'ca-ES' => [
|
||
'code' => 'ca-ES',
|
||
'dir' => 'ltr',
|
||
'name' => 'Сatalà (Espanya)',
|
||
'base' => 'ca',
|
||
'short_name' => 'CA (ES)',
|
||
],
|
||
'ce' => [
|
||
'code' => 'ce',
|
||
'dir' => 'ltr',
|
||
'name' => 'Нохчийн',
|
||
'base' => 'ce',
|
||
'short_name' => 'CE',
|
||
],
|
||
'ce-CE' => [
|
||
'code' => 'ce-CE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Нохчийн',
|
||
'base' => 'ce',
|
||
'short_name' => 'CE (CE)',
|
||
],
|
||
'ch' => [
|
||
'code' => 'ch',
|
||
'dir' => 'ltr',
|
||
'name' => 'Chamoru',
|
||
'base' => 'ch',
|
||
'short_name' => 'CH',
|
||
],
|
||
'ch-CH' => [
|
||
'code' => 'ch-CH',
|
||
'dir' => 'ltr',
|
||
'name' => 'Chamoru',
|
||
'base' => 'ch',
|
||
'short_name' => 'CH (CH)',
|
||
],
|
||
'co' => [
|
||
'code' => 'co',
|
||
'dir' => 'ltr',
|
||
'name' => 'Corsu',
|
||
'base' => 'co',
|
||
'short_name' => 'CO',
|
||
],
|
||
'co-CO' => [
|
||
'code' => 'co-CO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Corsu',
|
||
'base' => 'co',
|
||
'short_name' => 'CO (CO)',
|
||
],
|
||
'cr' => [
|
||
'code' => 'cr',
|
||
'dir' => 'ltr',
|
||
'name' => 'Cree',
|
||
'base' => 'cr',
|
||
'short_name' => 'CR',
|
||
],
|
||
'cr-CR' => [
|
||
'code' => 'cr-CR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Cree',
|
||
'base' => 'cr',
|
||
'short_name' => 'CR (CR)',
|
||
],
|
||
'cs' => [
|
||
'code' => 'cs',
|
||
'dir' => 'ltr',
|
||
'name' => 'Čeština',
|
||
'base' => 'cs',
|
||
'short_name' => 'CS',
|
||
],
|
||
'cs-CZ' => [
|
||
'code' => 'cs-CZ',
|
||
'dir' => 'ltr',
|
||
'name' => 'Čeština',
|
||
'base' => 'cs',
|
||
'short_name' => 'CS (CZ)',
|
||
],
|
||
'cv' => [
|
||
'code' => 'cv',
|
||
'dir' => 'ltr',
|
||
'name' => 'Чăвашла',
|
||
'base' => 'cv',
|
||
'short_name' => 'CV',
|
||
],
|
||
'cv-CV' => [
|
||
'code' => 'cv-CV',
|
||
'dir' => 'ltr',
|
||
'name' => 'Чăвашла',
|
||
'base' => 'cv',
|
||
'short_name' => 'CV (CV)',
|
||
],
|
||
'cy' => [
|
||
'code' => 'cy',
|
||
'dir' => 'ltr',
|
||
'name' => 'Cymraeg',
|
||
'base' => 'cy',
|
||
'short_name' => 'CY',
|
||
],
|
||
'cy-CY' => [
|
||
'code' => 'cy-CY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Cymraeg',
|
||
'base' => 'cy',
|
||
'short_name' => 'CY (CY)',
|
||
],
|
||
'da' => [
|
||
'code' => 'da',
|
||
'dir' => 'ltr',
|
||
'name' => 'Dansk',
|
||
'base' => 'da',
|
||
'short_name' => 'DA',
|
||
],
|
||
'da-DK' => [
|
||
'code' => 'da-DK',
|
||
'dir' => 'ltr',
|
||
'name' => 'Dansk',
|
||
'base' => 'da',
|
||
'short_name' => 'DA (DK)',
|
||
],
|
||
'de' => [
|
||
'code' => 'de',
|
||
'dir' => 'ltr',
|
||
'name' => 'Deutsch',
|
||
'base' => 'de',
|
||
'short_name' => 'DE',
|
||
],
|
||
'de-AT' => [
|
||
'code' => 'de-AT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Deutsch (Österreich)',
|
||
'base' => 'de',
|
||
'short_name' => 'DE (AT)',
|
||
],
|
||
'de-CH' => [
|
||
'code' => 'de-CH',
|
||
'dir' => 'ltr',
|
||
'name' => 'Deutsch (Schweiz)',
|
||
'base' => 'de',
|
||
'short_name' => 'DE (CH)',
|
||
],
|
||
'de-DE' => [
|
||
'code' => 'de-DE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Deutsch (Deutschland)',
|
||
'base' => 'de',
|
||
'short_name' => 'DE (DE)',
|
||
],
|
||
'de-LU' => [
|
||
'code' => 'de-LU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Deutsch (Luxemburg)',
|
||
'base' => 'de',
|
||
'short_name' => 'DE (LU)',
|
||
],
|
||
'el' => [
|
||
'code' => 'el',
|
||
'dir' => 'ltr',
|
||
'name' => 'Ελληνικά',
|
||
'base' => 'el',
|
||
'short_name' => 'EL',
|
||
],
|
||
'el-CY' => [
|
||
'code' => 'el-CY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Ελληνικά (Κύπρος)',
|
||
'base' => 'el',
|
||
'short_name' => 'EL (CY)',
|
||
],
|
||
'el-GR' => [
|
||
'code' => 'el-GR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Ελληνικά (Ελλάδα)',
|
||
'base' => 'el',
|
||
'short_name' => 'EL (GR)',
|
||
],
|
||
'en' => [
|
||
'code' => 'en',
|
||
'dir' => 'ltr',
|
||
'name' => 'English',
|
||
'base' => 'en',
|
||
'short_name' => 'EN',
|
||
],
|
||
'en-AU' => [
|
||
'code' => 'en-AU',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (Australia)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (AU)',
|
||
],
|
||
'en-CA' => [
|
||
'code' => 'en-CA',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (Canada)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (CA)',
|
||
],
|
||
'en-GB' => [
|
||
'code' => 'en-GB',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (UK)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (GB)',
|
||
],
|
||
'en-IE' => [
|
||
'code' => 'en-IE',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (Ireland)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (IE)',
|
||
],
|
||
'en-IN' => [
|
||
'code' => 'en-IN',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (India)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (IN)',
|
||
],
|
||
'en-MT' => [
|
||
'code' => 'en-MT',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (Malta)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (MT)',
|
||
],
|
||
'en-NZ' => [
|
||
'code' => 'en-NZ',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (New Zealand)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (NZ)',
|
||
],
|
||
'en-PH' => [
|
||
'code' => 'en-PH',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (Philippines)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (PH)',
|
||
],
|
||
'en-SG' => [
|
||
'code' => 'en-SG',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (Singapore)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (SG)',
|
||
],
|
||
'en-US' => [
|
||
'code' => 'en-US',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (US)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (US)',
|
||
],
|
||
'en-ZA' => [
|
||
'code' => 'en-ZA',
|
||
'dir' => 'ltr',
|
||
'name' => 'English (South Africa)',
|
||
'base' => 'en',
|
||
'short_name' => 'EN (ZA)',
|
||
],
|
||
'eo' => [
|
||
'code' => 'eo',
|
||
'dir' => 'ltr',
|
||
'name' => 'Esperanta',
|
||
'base' => 'eo',
|
||
'short_name' => 'EO',
|
||
],
|
||
'eo-EO' => [
|
||
'code' => 'eo-EO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Esperanta',
|
||
'base' => 'eo',
|
||
'short_name' => 'EO (EO)',
|
||
],
|
||
'es' => [
|
||
'code' => 'es',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español',
|
||
'base' => 'es',
|
||
'short_name' => 'ES',
|
||
],
|
||
'es-AR' => [
|
||
'code' => 'es-AR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Argentina)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (AR)',
|
||
],
|
||
'es-BO' => [
|
||
'code' => 'es-BO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Bolivia)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (BO)',
|
||
],
|
||
'es-CL' => [
|
||
'code' => 'es-CL',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Chile)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (CL)',
|
||
],
|
||
'es-CO' => [
|
||
'code' => 'es-CO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Colombia)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (CO)',
|
||
],
|
||
'es-CR' => [
|
||
'code' => 'es-CR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Costa Rica)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (CR)',
|
||
],
|
||
'es-DO' => [
|
||
'code' => 'es-DO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (República Dominicana)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (DO)',
|
||
],
|
||
'es-EC' => [
|
||
'code' => 'es-EC',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Ecuador)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (EC)',
|
||
],
|
||
'es-ES' => [
|
||
'code' => 'es-ES',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (España)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (ES)',
|
||
],
|
||
'es-GT' => [
|
||
'code' => 'es-GT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Guatemala)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (GT)',
|
||
],
|
||
'es-HN' => [
|
||
'code' => 'es-HN',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Honduras)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (HN)',
|
||
],
|
||
'es-MX' => [
|
||
'code' => 'es-MX',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (México)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (MX)',
|
||
],
|
||
'es-NI' => [
|
||
'code' => 'es-NI',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Nicaragua)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (NI)',
|
||
],
|
||
'es-PA' => [
|
||
'code' => 'es-PA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Panamá)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (PA)',
|
||
],
|
||
'es-PE' => [
|
||
'code' => 'es-PE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Perú)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (PE)',
|
||
],
|
||
'es-PR' => [
|
||
'code' => 'es-PR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Puerto Rico)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (PR)',
|
||
],
|
||
'es-PY' => [
|
||
'code' => 'es-PY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Paraguay)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (PY)',
|
||
],
|
||
'es-SV' => [
|
||
'code' => 'es-SV',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (El Salvador)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (SV)',
|
||
],
|
||
'es-US' => [
|
||
'code' => 'es-US',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Estados Unidos)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (US)',
|
||
],
|
||
'es-UY' => [
|
||
'code' => 'es-UY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Uruguay)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (UY)',
|
||
],
|
||
'es-VE' => [
|
||
'code' => 'es-VE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Español (Venezuela)',
|
||
'base' => 'es',
|
||
'short_name' => 'ES (VE)',
|
||
],
|
||
'et' => [
|
||
'code' => 'et',
|
||
'dir' => 'ltr',
|
||
'name' => 'Eesti',
|
||
'base' => 'et',
|
||
'short_name' => 'ET',
|
||
],
|
||
'et-EE' => [
|
||
'code' => 'et-EE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Eesti (Eesti)',
|
||
'base' => 'et',
|
||
'short_name' => 'ET (EE)',
|
||
],
|
||
'eu' => [
|
||
'code' => 'eu',
|
||
'dir' => 'ltr',
|
||
'name' => 'Euskera',
|
||
'base' => 'eu',
|
||
'short_name' => 'EU',
|
||
],
|
||
'eu-EU' => [
|
||
'code' => 'eu-EU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Euskera',
|
||
'base' => 'eu',
|
||
'short_name' => 'EU (EU)',
|
||
],
|
||
'fa' => [
|
||
'code' => 'fa',
|
||
'dir' => 'rtl',
|
||
'name' => 'فارسی',
|
||
'base' => 'fa',
|
||
'short_name' => 'FA',
|
||
],
|
||
'fa-FA' => [
|
||
'code' => 'fa-FA',
|
||
'dir' => 'rtl',
|
||
'name' => 'فارسی',
|
||
'base' => 'fa',
|
||
'short_name' => 'FA (FA)',
|
||
],
|
||
'fi' => [
|
||
'code' => 'fi',
|
||
'dir' => 'ltr',
|
||
'name' => 'Suomi',
|
||
'base' => 'fi',
|
||
'short_name' => 'FI',
|
||
],
|
||
'fi-FI' => [
|
||
'code' => 'fi-FI',
|
||
'dir' => 'ltr',
|
||
'name' => 'Suomi',
|
||
'base' => 'fi',
|
||
'short_name' => 'FI (FI)',
|
||
],
|
||
'fj' => [
|
||
'code' => 'fj',
|
||
'dir' => 'ltr',
|
||
'name' => 'Na Vosa Vakaviti',
|
||
'base' => 'fj',
|
||
'short_name' => 'FJ',
|
||
],
|
||
'fj-FJ' => [
|
||
'code' => 'fj-FJ',
|
||
'dir' => 'ltr',
|
||
'name' => 'Na Vosa Vakaviti',
|
||
'base' => 'fj',
|
||
'short_name' => 'FJ (FJ)',
|
||
],
|
||
'fo' => [
|
||
'code' => 'fo',
|
||
'dir' => 'ltr',
|
||
'name' => 'Føroyskt',
|
||
'base' => 'fo',
|
||
'short_name' => 'FO',
|
||
],
|
||
'fo-FO' => [
|
||
'code' => 'fo-FO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Føroyskt',
|
||
'base' => 'fo',
|
||
'short_name' => 'FO (FO)',
|
||
],
|
||
'fr' => [
|
||
'code' => 'fr',
|
||
'dir' => 'ltr',
|
||
'name' => 'Français',
|
||
'base' => 'fr',
|
||
'short_name' => 'FR',
|
||
],
|
||
'fr-BE' => [
|
||
'code' => 'fr-BE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Français (Belgique)',
|
||
'base' => 'fr',
|
||
'short_name' => 'FR (BE)',
|
||
],
|
||
'fr-CA' => [
|
||
'code' => 'fr-CA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Français (Canada)',
|
||
'base' => 'fr',
|
||
'short_name' => 'FR (CA)',
|
||
],
|
||
'fr-CH' => [
|
||
'code' => 'fr-CH',
|
||
'dir' => 'ltr',
|
||
'name' => 'Français (Suisse)',
|
||
'base' => 'fr',
|
||
'short_name' => 'FR (CH)',
|
||
],
|
||
'fr-FR' => [
|
||
'code' => 'fr-FR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Français (France)',
|
||
'base' => 'fr',
|
||
'short_name' => 'FR (FR)',
|
||
],
|
||
'fr-LU' => [
|
||
'code' => 'fr-LU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Français (Luxembourg)',
|
||
'base' => 'fr',
|
||
'short_name' => 'FR (LU)',
|
||
],
|
||
'fy' => [
|
||
'code' => 'fy',
|
||
'dir' => 'ltr',
|
||
'name' => 'Frysk',
|
||
'base' => 'fy',
|
||
'short_name' => 'FY',
|
||
],
|
||
'fy-FY' => [
|
||
'code' => 'fy-FY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Frysk',
|
||
'base' => 'fy',
|
||
'short_name' => 'FY (FY)',
|
||
],
|
||
'ga' => [
|
||
'code' => 'ga',
|
||
'dir' => 'ltr',
|
||
'name' => 'Gaeilge',
|
||
'base' => 'ga',
|
||
'short_name' => 'GA',
|
||
],
|
||
'ga-IE' => [
|
||
'code' => 'ga-IE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Gaeilge (Éire)',
|
||
'base' => 'ga',
|
||
'short_name' => 'GA (IE)',
|
||
],
|
||
'gd' => [
|
||
'code' => 'gd',
|
||
'dir' => 'ltr',
|
||
'name' => 'Gàidhlig',
|
||
'base' => 'gd',
|
||
'short_name' => 'GD',
|
||
],
|
||
'gd-GD' => [
|
||
'code' => 'gd-GD',
|
||
'dir' => 'ltr',
|
||
'name' => 'Gàidhlig',
|
||
'base' => 'gd',
|
||
'short_name' => 'GD (GD)',
|
||
],
|
||
'gl' => [
|
||
'code' => 'gl',
|
||
'dir' => 'ltr',
|
||
'name' => 'Galego',
|
||
'base' => 'gl',
|
||
'short_name' => 'GL',
|
||
],
|
||
'gl-GL' => [
|
||
'code' => 'gl-GL',
|
||
'dir' => 'ltr',
|
||
'name' => 'Galego',
|
||
'base' => 'gl',
|
||
'short_name' => 'GL (GL)',
|
||
],
|
||
'gu' => [
|
||
'code' => 'gu',
|
||
'dir' => 'ltr',
|
||
'name' => 'Gujarati',
|
||
'base' => 'gu',
|
||
'short_name' => 'GU',
|
||
],
|
||
'gu-GU' => [
|
||
'code' => 'gu-GU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Gujarati',
|
||
'base' => 'gu',
|
||
'short_name' => 'GU (GU)',
|
||
],
|
||
'he' => [
|
||
'code' => 'he',
|
||
'dir' => 'rtl',
|
||
'name' => 'עברית',
|
||
'base' => 'he',
|
||
'short_name' => 'HE',
|
||
],
|
||
'he-IL' => [
|
||
'code' => 'he-IL',
|
||
'dir' => 'rtl',
|
||
'name' => 'עברית',
|
||
'base' => 'he',
|
||
'short_name' => 'HE (IL)',
|
||
],
|
||
'hi' => [
|
||
'code' => 'hi',
|
||
'dir' => 'ltr',
|
||
'name' => 'हिंदी',
|
||
'base' => 'hi',
|
||
'short_name' => 'HI',
|
||
],
|
||
'hi-IN' => [
|
||
'code' => 'hi-IN',
|
||
'dir' => 'ltr',
|
||
'name' => 'हिंदी (भारत)',
|
||
'base' => 'hi',
|
||
'short_name' => 'HI (IN)',
|
||
],
|
||
'hr' => [
|
||
'code' => 'hr',
|
||
'dir' => 'ltr',
|
||
'name' => 'Hrvatski',
|
||
'base' => 'hr',
|
||
'short_name' => 'HR',
|
||
],
|
||
'hr-HR' => [
|
||
'code' => 'hr-HR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Hrvatski',
|
||
'base' => 'hr',
|
||
'short_name' => 'HR (HR)',
|
||
],
|
||
'hsb' => [
|
||
'code' => 'hsb',
|
||
'dir' => 'ltr',
|
||
'name' => 'Hornjoserbšćina',
|
||
'base' => 'hsb',
|
||
'short_name' => 'HSB',
|
||
],
|
||
'hsb-HSB' => [
|
||
'code' => 'hsb-HSB',
|
||
'dir' => 'ltr',
|
||
'name' => 'Hornjoserbšćina',
|
||
'base' => 'hsb',
|
||
'short_name' => 'HSB (HSB)',
|
||
],
|
||
'ht' => [
|
||
'code' => 'ht',
|
||
'dir' => 'ltr',
|
||
'name' => 'Kreyòl Ayisyen',
|
||
'base' => 'ht',
|
||
'short_name' => 'HT',
|
||
],
|
||
'ht-HT' => [
|
||
'code' => 'ht-HT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Kreyòl Ayisyen',
|
||
'base' => 'ht',
|
||
'short_name' => 'HT (HT)',
|
||
],
|
||
'hu' => [
|
||
'code' => 'hu',
|
||
'dir' => 'ltr',
|
||
'name' => 'Magyar',
|
||
'base' => 'hu',
|
||
'short_name' => 'HU',
|
||
],
|
||
'hu-HU' => [
|
||
'code' => 'hu-HU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Magyar',
|
||
'base' => 'hu',
|
||
'short_name' => 'HU (HU)',
|
||
],
|
||
'hy' => [
|
||
'code' => 'hy',
|
||
'dir' => 'ltr',
|
||
'name' => 'հայերեն',
|
||
'base' => 'hy',
|
||
'short_name' => 'HY',
|
||
],
|
||
'hy-HY' => [
|
||
'code' => 'hy-HY',
|
||
'dir' => 'ltr',
|
||
'name' => 'հայերեն',
|
||
'base' => 'hy',
|
||
'short_name' => 'HY (HY)',
|
||
],
|
||
'ia' => [
|
||
'code' => 'ia',
|
||
'dir' => 'ltr',
|
||
'name' => 'Interlingua',
|
||
'base' => 'ia',
|
||
'short_name' => 'IA',
|
||
],
|
||
'ia-IA' => [
|
||
'code' => 'ia-IA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Interlingua',
|
||
'base' => 'ia',
|
||
'short_name' => 'IA (IA)',
|
||
],
|
||
'id' => [
|
||
'code' => 'id',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bahasa Indonesia',
|
||
'base' => 'id',
|
||
'short_name' => 'ID',
|
||
],
|
||
'id-ID' => [
|
||
'code' => 'id-ID',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bahasa Indonesia',
|
||
'base' => 'id',
|
||
'short_name' => 'ID (ID)',
|
||
],
|
||
'ie' => [
|
||
'code' => 'ie',
|
||
'dir' => 'ltr',
|
||
'name' => 'Interlingue',
|
||
'base' => 'ie',
|
||
'short_name' => 'IE',
|
||
],
|
||
'ie-IE' => [
|
||
'code' => 'ie-IE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Interlingue',
|
||
'base' => 'ie',
|
||
'short_name' => 'IE (IE)',
|
||
],
|
||
'in' => [
|
||
'code' => 'in',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bahasa Indonesia',
|
||
'base' => 'in',
|
||
'short_name' => 'IN',
|
||
],
|
||
'in-ID' => [
|
||
'code' => 'in-ID',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bahasa Indonesia (Indonesia)',
|
||
'base' => 'in',
|
||
'short_name' => 'IN (ID)',
|
||
],
|
||
'is' => [
|
||
'code' => 'is',
|
||
'dir' => 'ltr',
|
||
'name' => 'Íslenska',
|
||
'base' => 'is',
|
||
'short_name' => 'IS',
|
||
],
|
||
'is-IS' => [
|
||
'code' => 'is-IS',
|
||
'dir' => 'ltr',
|
||
'name' => 'Íslenska (Ísland)',
|
||
'base' => 'is',
|
||
'short_name' => 'IS (IS)',
|
||
],
|
||
'it' => [
|
||
'code' => 'it',
|
||
'dir' => 'ltr',
|
||
'name' => 'Italiano',
|
||
'base' => 'it',
|
||
'short_name' => 'IT',
|
||
],
|
||
'it-CH' => [
|
||
'code' => 'it-CH',
|
||
'dir' => 'ltr',
|
||
'name' => 'Italiano (Svizzera)',
|
||
'base' => 'it',
|
||
'short_name' => 'IT (CH)',
|
||
],
|
||
'it-IT' => [
|
||
'code' => 'it-IT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Italiano (Italia)',
|
||
'base' => 'it',
|
||
'short_name' => 'IT (IT)',
|
||
],
|
||
'iu' => [
|
||
'code' => 'iu',
|
||
'dir' => 'ltr',
|
||
'name' => 'Inuktitut',
|
||
'base' => 'iu',
|
||
'short_name' => 'IU',
|
||
],
|
||
'iu-IU' => [
|
||
'code' => 'iu-IU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Inuktitut',
|
||
'base' => 'iu',
|
||
'short_name' => 'IU (IU)',
|
||
],
|
||
'iw' => [
|
||
'code' => 'iw',
|
||
'dir' => 'ltr',
|
||
'name' => 'עברית',
|
||
'base' => 'iw',
|
||
'short_name' => 'IW',
|
||
],
|
||
'iw-IL' => [
|
||
'code' => 'iw-IL',
|
||
'dir' => 'ltr',
|
||
'name' => 'עברית',
|
||
'base' => 'iw',
|
||
'short_name' => 'IW (IL)',
|
||
],
|
||
'ja' => [
|
||
'code' => 'ja',
|
||
'dir' => 'ltr',
|
||
'name' => '日本語',
|
||
'base' => 'ja',
|
||
'short_name' => 'JA',
|
||
],
|
||
'ja-JP' => [
|
||
'code' => 'ja-JP',
|
||
'dir' => 'ltr',
|
||
'name' => '日本語',
|
||
'base' => 'ja',
|
||
'short_name' => 'JA (JP)',
|
||
],
|
||
'ka' => [
|
||
'code' => 'ka',
|
||
'dir' => 'ltr',
|
||
'name' => 'ქართული',
|
||
'base' => 'ka',
|
||
'short_name' => 'KA',
|
||
],
|
||
'ka-KA' => [
|
||
'code' => 'ka-KA',
|
||
'dir' => 'ltr',
|
||
'name' => 'ქართული',
|
||
'base' => 'ka',
|
||
'short_name' => 'KA (KA)',
|
||
],
|
||
'kk' => [
|
||
'code' => 'kk',
|
||
'dir' => 'ltr',
|
||
'name' => 'Қазақша',
|
||
'base' => 'kk',
|
||
'short_name' => 'KK',
|
||
],
|
||
'kk-KK' => [
|
||
'code' => 'kk-KK',
|
||
'dir' => 'ltr',
|
||
'name' => 'Қазақша',
|
||
'base' => 'kk',
|
||
'short_name' => 'KK (KK)',
|
||
],
|
||
'km' => [
|
||
'code' => 'km',
|
||
'dir' => 'ltr',
|
||
'name' => 'Khmer',
|
||
'base' => 'km',
|
||
'short_name' => 'KM',
|
||
],
|
||
'km-KM' => [
|
||
'code' => 'km-KM',
|
||
'dir' => 'ltr',
|
||
'name' => 'Khmer',
|
||
'base' => 'km',
|
||
'short_name' => 'KM (KM)',
|
||
],
|
||
'ko' => [
|
||
'code' => 'ko',
|
||
'dir' => 'ltr',
|
||
'name' => '한국어',
|
||
'base' => 'ko',
|
||
'short_name' => 'KO',
|
||
],
|
||
'ko-KR' => [
|
||
'code' => 'ko-KR',
|
||
'dir' => 'ltr',
|
||
'name' => '한국어',
|
||
'base' => 'ko',
|
||
'short_name' => 'KO (KR)',
|
||
],
|
||
'ky' => [
|
||
'code' => 'ky',
|
||
'dir' => 'ltr',
|
||
'name' => 'Кыргызча',
|
||
'base' => 'ky',
|
||
'short_name' => 'KY',
|
||
],
|
||
'ky-KY' => [
|
||
'code' => 'ky-KY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Кыргызча',
|
||
'base' => 'ky',
|
||
'short_name' => 'KY (KY)',
|
||
],
|
||
'la' => [
|
||
'code' => 'la',
|
||
'dir' => 'ltr',
|
||
'name' => 'Latina',
|
||
'base' => 'la',
|
||
'short_name' => 'LA',
|
||
],
|
||
'la-LA' => [
|
||
'code' => 'la-LA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Latina',
|
||
'base' => 'la',
|
||
'short_name' => 'LA (LA)',
|
||
],
|
||
'lb' => [
|
||
'code' => 'lb',
|
||
'dir' => 'ltr',
|
||
'name' => 'Lëtzebuergesch',
|
||
'base' => 'lb',
|
||
'short_name' => 'LB',
|
||
],
|
||
'lb-LB' => [
|
||
'code' => 'lb-LB',
|
||
'dir' => 'ltr',
|
||
'name' => 'Lëtzebuergesch',
|
||
'base' => 'lb',
|
||
'short_name' => 'LB (LB)',
|
||
],
|
||
'lt' => [
|
||
'code' => 'lt',
|
||
'dir' => 'ltr',
|
||
'name' => 'Lietuvių',
|
||
'base' => 'lt',
|
||
'short_name' => 'LT',
|
||
],
|
||
'lt-LT' => [
|
||
'code' => 'lt-LT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Lietuvių (Lietuva)',
|
||
'base' => 'lt',
|
||
'short_name' => 'LT (LT)',
|
||
],
|
||
'lv' => [
|
||
'code' => 'lv',
|
||
'dir' => 'ltr',
|
||
'name' => 'Latviešu',
|
||
'base' => 'lv',
|
||
'short_name' => 'LV',
|
||
],
|
||
'lv-LV' => [
|
||
'code' => 'lv-LV',
|
||
'dir' => 'ltr',
|
||
'name' => 'Latviešu (Latvija)',
|
||
'base' => 'lv',
|
||
'short_name' => 'LV (LV)',
|
||
],
|
||
'mi' => [
|
||
'code' => 'mi',
|
||
'dir' => 'ltr',
|
||
'name' => 'Te Reo Māori',
|
||
'base' => 'mi',
|
||
'short_name' => 'MI',
|
||
],
|
||
'mi-MI' => [
|
||
'code' => 'mi-MI',
|
||
'dir' => 'ltr',
|
||
'name' => 'Te Reo Māori',
|
||
'base' => 'mi',
|
||
'short_name' => 'MI (MI)',
|
||
],
|
||
'mk' => [
|
||
'code' => 'mk',
|
||
'dir' => 'ltr',
|
||
'name' => 'Македонски',
|
||
'base' => 'mk',
|
||
'short_name' => 'MK',
|
||
],
|
||
'mk-MK' => [
|
||
'code' => 'mk-MK',
|
||
'dir' => 'ltr',
|
||
'name' => 'Македонски (Македонија)',
|
||
'base' => 'mk',
|
||
'short_name' => 'MK (MK)',
|
||
],
|
||
'ml' => [
|
||
'code' => 'ml',
|
||
'dir' => 'ltr',
|
||
'name' => 'Malayalam',
|
||
'base' => 'ml',
|
||
'short_name' => 'ML',
|
||
],
|
||
'ml-ML' => [
|
||
'code' => 'ml-ML',
|
||
'dir' => 'ltr',
|
||
'name' => 'Malayalam',
|
||
'base' => 'ml',
|
||
'short_name' => 'ML (ML)',
|
||
],
|
||
'mo' => [
|
||
'code' => 'mo',
|
||
'dir' => 'ltr',
|
||
'name' => 'Graiul Moldovenesc',
|
||
'base' => 'mo',
|
||
'short_name' => 'MO',
|
||
],
|
||
'mo-MO' => [
|
||
'code' => 'mo-MO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Graiul Moldovenesc',
|
||
'base' => 'mo',
|
||
'short_name' => 'MO (MO)',
|
||
],
|
||
'mr' => [
|
||
'code' => 'mr',
|
||
'dir' => 'ltr',
|
||
'name' => 'मराठी',
|
||
'base' => 'mr',
|
||
'short_name' => 'MR',
|
||
],
|
||
'mr-MR' => [
|
||
'code' => 'mr-MR',
|
||
'dir' => 'ltr',
|
||
'name' => 'मराठी',
|
||
'base' => 'mr',
|
||
'short_name' => 'MR (MR)',
|
||
],
|
||
'ms' => [
|
||
'code' => 'ms',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bahasa Melayu',
|
||
'base' => 'ms',
|
||
'short_name' => 'MS',
|
||
],
|
||
'ms-MY' => [
|
||
'code' => 'ms-MY',
|
||
'dir' => 'ltr',
|
||
'name' => 'Bahasa Melayu',
|
||
'base' => 'ms',
|
||
'short_name' => 'MS (MY)',
|
||
],
|
||
'mt' => [
|
||
'code' => 'mt',
|
||
'dir' => 'ltr',
|
||
'name' => 'Malti',
|
||
'base' => 'mt',
|
||
'short_name' => 'MT',
|
||
],
|
||
'mt-MT' => [
|
||
'code' => 'mt-MT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Malti',
|
||
'base' => 'mt',
|
||
'short_name' => 'MT (MT)',
|
||
],
|
||
'nb' => [
|
||
'code' => 'nb',
|
||
'dir' => 'ltr',
|
||
'name' => 'Norsk Bokmål',
|
||
'base' => 'nb',
|
||
'short_name' => 'NB',
|
||
],
|
||
'nb-NB' => [
|
||
'code' => 'nb-NB',
|
||
'dir' => 'ltr',
|
||
'name' => 'Norsk Bokmål',
|
||
'base' => 'nb',
|
||
'short_name' => 'NB (NB)',
|
||
],
|
||
'ne' => [
|
||
'code' => 'ne',
|
||
'dir' => 'ltr',
|
||
'name' => 'नेपाली',
|
||
'base' => 'ne',
|
||
'short_name' => 'NE',
|
||
],
|
||
'ne-NE' => [
|
||
'code' => 'ne-NE',
|
||
'dir' => 'ltr',
|
||
'name' => 'नेपाली',
|
||
'base' => 'ne',
|
||
'short_name' => 'NE (NE)',
|
||
],
|
||
'ng' => [
|
||
'code' => 'ng',
|
||
'dir' => 'ltr',
|
||
'name' => 'Oshiwambo',
|
||
'base' => 'ng',
|
||
'short_name' => 'NG',
|
||
],
|
||
'ng-NG' => [
|
||
'code' => 'ng-NG',
|
||
'dir' => 'ltr',
|
||
'name' => 'Oshiwambo',
|
||
'base' => 'ng',
|
||
'short_name' => 'NG (NG)',
|
||
],
|
||
'nl' => [
|
||
'code' => 'nl',
|
||
'dir' => 'ltr',
|
||
'name' => 'Nederlands',
|
||
'base' => 'nl',
|
||
'short_name' => 'NL',
|
||
],
|
||
'nl-BE' => [
|
||
'code' => 'nl-BE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Nederlands (België)',
|
||
'base' => 'nl',
|
||
'short_name' => 'NL (BE)',
|
||
],
|
||
'nl-NL' => [
|
||
'code' => 'nl-NL',
|
||
'dir' => 'ltr',
|
||
'name' => 'Nederlands (Nederland)',
|
||
'base' => 'nl',
|
||
'short_name' => 'NL (NL)',
|
||
],
|
||
'nn' => [
|
||
'code' => 'nn',
|
||
'dir' => 'ltr',
|
||
'name' => 'Norsk',
|
||
'base' => 'nn',
|
||
'short_name' => 'NN',
|
||
],
|
||
'nn-NN' => [
|
||
'code' => 'nn-NN',
|
||
'dir' => 'ltr',
|
||
'name' => 'Norsk (Nynorsk)',
|
||
'base' => 'nn',
|
||
'short_name' => 'NN (NN)',
|
||
],
|
||
'no' => [
|
||
'code' => 'no',
|
||
'dir' => 'ltr',
|
||
'name' => 'Norsk',
|
||
'base' => 'no',
|
||
'short_name' => 'NO',
|
||
],
|
||
'no-NO' => [
|
||
'code' => 'no-NO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Norsk (Norge)',
|
||
'base' => 'no',
|
||
'short_name' => 'NO (NO)',
|
||
],
|
||
'nv' => [
|
||
'code' => 'nv',
|
||
'dir' => 'ltr',
|
||
'name' => 'Diné Bizaad',
|
||
'base' => 'nv',
|
||
'short_name' => 'NV',
|
||
],
|
||
'nv-NV' => [
|
||
'code' => 'nv-NV',
|
||
'dir' => 'ltr',
|
||
'name' => 'Diné Bizaad',
|
||
'base' => 'nv',
|
||
'short_name' => 'NV (NV)',
|
||
],
|
||
'oc' => [
|
||
'code' => 'oc',
|
||
'dir' => 'ltr',
|
||
'name' => 'Lenga d’òc',
|
||
'base' => 'oc',
|
||
'short_name' => 'OC',
|
||
],
|
||
'oc-OC' => [
|
||
'code' => 'oc-OC',
|
||
'dir' => 'ltr',
|
||
'name' => 'Lenga d’òc',
|
||
'base' => 'oc',
|
||
'short_name' => 'OC (OC)',
|
||
],
|
||
'om' => [
|
||
'code' => 'om',
|
||
'dir' => 'ltr',
|
||
'name' => 'Afaan Oromoo',
|
||
'base' => 'om',
|
||
'short_name' => 'OM',
|
||
],
|
||
'om-OM' => [
|
||
'code' => 'om-OM',
|
||
'dir' => 'ltr',
|
||
'name' => 'Afaan Oromoo',
|
||
'base' => 'om',
|
||
'short_name' => 'OM (OM)',
|
||
],
|
||
'pa' => [
|
||
'code' => 'pa',
|
||
'dir' => 'rtl',
|
||
'name' => 'भारत गणराज्य',
|
||
'base' => 'pa',
|
||
'short_name' => 'PA',
|
||
],
|
||
'pa-IN' => [
|
||
'code' => 'pa-IN',
|
||
'dir' => 'rtl',
|
||
'name' => 'भारत गणराज्य (नेपाली)',
|
||
'base' => 'pa',
|
||
'short_name' => 'PA (IN)',
|
||
],
|
||
'pa-PK' => [
|
||
'code' => 'pa-PK',
|
||
'dir' => 'rtl',
|
||
'name' => 'یپنجاب (پنجاب)',
|
||
'base' => 'pa',
|
||
'short_name' => 'PA (PK)',
|
||
],
|
||
'pl' => [
|
||
'code' => 'pl',
|
||
'dir' => 'ltr',
|
||
'name' => 'Polski',
|
||
'base' => 'pl',
|
||
'short_name' => 'PL',
|
||
],
|
||
'pl-PL' => [
|
||
'code' => 'pl-PL',
|
||
'dir' => 'ltr',
|
||
'name' => 'Polski (Polska)',
|
||
'base' => 'pl',
|
||
'short_name' => 'PL (PL)',
|
||
],
|
||
'pt' => [
|
||
'code' => 'pt',
|
||
'dir' => 'ltr',
|
||
'name' => 'Português',
|
||
'base' => 'pt',
|
||
'short_name' => 'PT',
|
||
],
|
||
'pt-BR' => [
|
||
'code' => 'pt-BR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Português (Brasil)',
|
||
'base' => 'pt',
|
||
'short_name' => 'PT (BR)',
|
||
],
|
||
'pt-PT' => [
|
||
'code' => 'pt-PT',
|
||
'dir' => 'ltr',
|
||
'name' => 'Português (Portugal)',
|
||
'base' => 'pt',
|
||
'short_name' => 'PT (PT)',
|
||
],
|
||
'qu' => [
|
||
'code' => 'qu',
|
||
'dir' => 'ltr',
|
||
'name' => 'Runa Simi',
|
||
'base' => 'qu',
|
||
'short_name' => 'QU',
|
||
],
|
||
'qu-QU' => [
|
||
'code' => 'qu-QU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Runa Simi',
|
||
'base' => 'qu',
|
||
'short_name' => 'QU (QU)',
|
||
],
|
||
'rm' => [
|
||
'code' => 'rm',
|
||
'dir' => 'ltr',
|
||
'name' => 'Rumantsch',
|
||
'base' => 'rm',
|
||
'short_name' => 'RM',
|
||
],
|
||
'rm-RM' => [
|
||
'code' => 'rm-RM',
|
||
'dir' => 'ltr',
|
||
'name' => 'Rumantsch',
|
||
'base' => 'rm',
|
||
'short_name' => 'RM (RM)',
|
||
],
|
||
'ro' => [
|
||
'code' => 'ro',
|
||
'dir' => 'ltr',
|
||
'name' => 'Română',
|
||
'base' => 'ro',
|
||
'short_name' => 'RO',
|
||
],
|
||
'ro-RO' => [
|
||
'code' => 'ro-RO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Română (România)',
|
||
'base' => 'ro',
|
||
'short_name' => 'RO (RO)',
|
||
],
|
||
'ru' => [
|
||
'code' => 'ru',
|
||
'dir' => 'ltr',
|
||
'name' => 'Русский',
|
||
'base' => 'ru',
|
||
'short_name' => 'RU',
|
||
],
|
||
'ru-RU' => [
|
||
'code' => 'ru-RU',
|
||
'dir' => 'ltr',
|
||
'name' => 'Русский (Россия)',
|
||
'base' => 'ru',
|
||
'short_name' => 'RU (RU)',
|
||
],
|
||
'sa' => [
|
||
'code' => 'sa',
|
||
'dir' => 'ltr',
|
||
'name' => 'संस्कृत',
|
||
'base' => 'sa',
|
||
'short_name' => 'SA',
|
||
],
|
||
'sa-SA' => [
|
||
'code' => 'sa-SA',
|
||
'dir' => 'ltr',
|
||
'name' => 'संस्कृत',
|
||
'base' => 'sa',
|
||
'short_name' => 'SA (SA)',
|
||
],
|
||
'sc' => [
|
||
'code' => 'sc',
|
||
'dir' => 'ltr',
|
||
'name' => 'Sardu',
|
||
'base' => 'sc',
|
||
'short_name' => 'SC',
|
||
],
|
||
'sc-SC' => [
|
||
'code' => 'sc-SC',
|
||
'dir' => 'ltr',
|
||
'name' => 'Sardu',
|
||
'base' => 'sc',
|
||
'short_name' => 'SC (SC)',
|
||
],
|
||
'sd' => [
|
||
'code' => 'sd',
|
||
'dir' => 'rtl',
|
||
'name' => 'فارسی',
|
||
'base' => 'sd',
|
||
'short_name' => 'SD',
|
||
],
|
||
'sd-SD' => [
|
||
'code' => 'sd-SD',
|
||
'dir' => 'rtl',
|
||
'name' => 'فارسی',
|
||
'base' => 'sd',
|
||
'short_name' => 'SD (SD)',
|
||
],
|
||
'sg' => [
|
||
'code' => 'sg',
|
||
'dir' => 'ltr',
|
||
'name' => 'Sango',
|
||
'base' => 'sg',
|
||
'short_name' => 'SG',
|
||
],
|
||
'sg-SG' => [
|
||
'code' => 'sg-SG',
|
||
'dir' => 'ltr',
|
||
'name' => 'Sango',
|
||
'base' => 'sg',
|
||
'short_name' => 'SG (SG)',
|
||
],
|
||
'sk' => [
|
||
'code' => 'sk',
|
||
'dir' => 'ltr',
|
||
'name' => 'Slovenčina',
|
||
'base' => 'sk',
|
||
'short_name' => 'SK',
|
||
],
|
||
'sk-SK' => [
|
||
'code' => 'sk-SK',
|
||
'dir' => 'ltr',
|
||
'name' => 'Slovenčina (Slovenská republika)',
|
||
'base' => 'sk',
|
||
'short_name' => 'SK (SK)',
|
||
],
|
||
'sl' => [
|
||
'code' => 'sl',
|
||
'dir' => 'ltr',
|
||
'name' => 'Slovenščina',
|
||
'base' => 'sl',
|
||
'short_name' => 'SL',
|
||
],
|
||
'sl-SI' => [
|
||
'code' => 'sl-SI',
|
||
'dir' => 'ltr',
|
||
'name' => 'Slovenščina (Slovenija)',
|
||
'base' => 'sl',
|
||
'short_name' => 'SL (SI)',
|
||
],
|
||
'so' => [
|
||
'code' => 'so',
|
||
'dir' => 'ltr',
|
||
'name' => 'Af Somali',
|
||
'base' => 'so',
|
||
'short_name' => 'SO',
|
||
],
|
||
'so-SO' => [
|
||
'code' => 'so-SO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Af Somali',
|
||
'base' => 'so',
|
||
'short_name' => 'SO (SO)',
|
||
],
|
||
'sq' => [
|
||
'code' => 'sq',
|
||
'dir' => 'ltr',
|
||
'name' => 'Shqipe',
|
||
'base' => 'sq',
|
||
'short_name' => 'SQ',
|
||
],
|
||
'sq-AL' => [
|
||
'code' => 'sq-AL',
|
||
'dir' => 'ltr',
|
||
'name' => 'Shqipe',
|
||
'base' => 'sq',
|
||
'short_name' => 'SQ (AL)',
|
||
],
|
||
'sr' => [
|
||
'code' => 'sr',
|
||
'dir' => 'ltr',
|
||
'name' => 'Српски',
|
||
'base' => 'sr',
|
||
'short_name' => 'SR',
|
||
],
|
||
'sr-BA' => [
|
||
'code' => 'sr-BA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Српски (Босна и Херцеговина)',
|
||
'base' => 'sr',
|
||
'short_name' => 'SR (BA)',
|
||
],
|
||
'sr-CS' => [
|
||
'code' => 'sr-CS',
|
||
'dir' => 'ltr',
|
||
'name' => 'Српски (Србија и Црна Гора)',
|
||
'base' => 'sr',
|
||
'short_name' => 'SR (CS)',
|
||
],
|
||
'sr-RS' => [
|
||
'code' => 'sr-RS',
|
||
'dir' => 'ltr',
|
||
'name' => 'Српски',
|
||
'base' => 'sr',
|
||
'short_name' => 'SR (RS)',
|
||
],
|
||
'sv' => [
|
||
'code' => 'sv',
|
||
'dir' => 'ltr',
|
||
'name' => 'Svenska',
|
||
'base' => 'sv',
|
||
'short_name' => 'SV',
|
||
],
|
||
'sv-SE' => [
|
||
'code' => 'sv-SE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Svenska (Sverige)',
|
||
'base' => 'sv',
|
||
'short_name' => 'SV (SE)',
|
||
],
|
||
'sw' => [
|
||
'code' => 'sw',
|
||
'dir' => 'ltr',
|
||
'name' => 'Kiswahili',
|
||
'base' => 'sw',
|
||
'short_name' => 'SW',
|
||
],
|
||
'sw-SW' => [
|
||
'code' => 'sw-SW',
|
||
'dir' => 'ltr',
|
||
'name' => 'Kiswahili',
|
||
'base' => 'sw',
|
||
'short_name' => 'SW (SW)',
|
||
],
|
||
'ta' => [
|
||
'code' => 'ta',
|
||
'dir' => 'ltr',
|
||
'name' => 'தமிழ',
|
||
'base' => 'ta',
|
||
'short_name' => 'TA',
|
||
],
|
||
'ta-TA' => [
|
||
'code' => 'ta-TA',
|
||
'dir' => 'ltr',
|
||
'name' => 'தமிழ',
|
||
'base' => 'ta',
|
||
'short_name' => 'TA (TA)',
|
||
],
|
||
'th' => [
|
||
'code' => 'th',
|
||
'dir' => 'ltr',
|
||
'name' => 'ไทย',
|
||
'base' => 'th',
|
||
'short_name' => 'TH',
|
||
],
|
||
'th-TH' => [
|
||
'code' => 'th-TH',
|
||
'dir' => 'ltr',
|
||
'name' => 'ไทย (ประเทศไทย)',
|
||
'base' => 'th',
|
||
'short_name' => 'TH (TH)',
|
||
],
|
||
'tig' => [
|
||
'code' => 'tig',
|
||
'dir' => 'ltr',
|
||
'name' => 'Tigré',
|
||
'base' => 'tig',
|
||
'short_name' => 'TIG',
|
||
],
|
||
'tig-TIG' => [
|
||
'code' => 'tig-TIG',
|
||
'dir' => 'ltr',
|
||
'name' => 'Tigré',
|
||
'base' => 'tig',
|
||
'short_name' => 'TIG (TIG)',
|
||
],
|
||
'tk' => [
|
||
'code' => 'tk',
|
||
'dir' => 'ltr',
|
||
'name' => 'Түркмен',
|
||
'base' => 'tk',
|
||
'short_name' => 'TK',
|
||
],
|
||
'tk-TK' => [
|
||
'code' => 'tk-TK',
|
||
'dir' => 'ltr',
|
||
'name' => 'Түркмен',
|
||
'base' => 'tk',
|
||
'short_name' => 'TK (TK)',
|
||
],
|
||
'tlh' => [
|
||
'code' => 'tlh',
|
||
'dir' => 'ltr',
|
||
'name' => 'tlhIngan Hol',
|
||
'base' => 'tlh',
|
||
'short_name' => 'TLH',
|
||
],
|
||
'tlh-TLH' => [
|
||
'code' => 'tlh-TLH',
|
||
'dir' => 'ltr',
|
||
'name' => 'tlhIngan Hol',
|
||
'base' => 'tlh',
|
||
'short_name' => 'TLH (TLH)',
|
||
],
|
||
'tr' => [
|
||
'code' => 'tr',
|
||
'dir' => 'ltr',
|
||
'name' => 'Türkçe',
|
||
'base' => 'tr',
|
||
'short_name' => 'TR',
|
||
],
|
||
'tr-TR' => [
|
||
'code' => 'tr-TR',
|
||
'dir' => 'ltr',
|
||
'name' => 'Türkçe',
|
||
'base' => 'tr',
|
||
'short_name' => 'TR (TR)',
|
||
],
|
||
'uk' => [
|
||
'code' => 'uk',
|
||
'dir' => 'ltr',
|
||
'name' => 'Українська',
|
||
'base' => 'uk',
|
||
'short_name' => 'UK',
|
||
],
|
||
'uk-UA' => [
|
||
'code' => 'uk-UA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Українська',
|
||
'base' => 'uk',
|
||
'short_name' => 'UK (UA)',
|
||
],
|
||
've' => [
|
||
'code' => 've',
|
||
'dir' => 'ltr',
|
||
'name' => 'Tshivenda',
|
||
'base' => 've',
|
||
'short_name' => 'VE',
|
||
],
|
||
've-VE' => [
|
||
'code' => 've-VE',
|
||
'dir' => 'ltr',
|
||
'name' => 'Tshivenda',
|
||
'base' => 've',
|
||
'short_name' => 'VE (VE)',
|
||
],
|
||
'vi' => [
|
||
'code' => 'vi',
|
||
'dir' => 'ltr',
|
||
'name' => 'Tiếng Việt',
|
||
'base' => 'vi',
|
||
'short_name' => 'VI',
|
||
],
|
||
'vi-VN' => [
|
||
'code' => 'vi-VN',
|
||
'dir' => 'ltr',
|
||
'name' => 'Tiếng Việt',
|
||
'base' => 'vi',
|
||
'short_name' => 'VI (VN)',
|
||
],
|
||
'vo' => [
|
||
'code' => 'vo',
|
||
'dir' => 'ltr',
|
||
'name' => 'Volapük',
|
||
'base' => 'vo',
|
||
'short_name' => 'VO',
|
||
],
|
||
'vo-VO' => [
|
||
'code' => 'vo-VO',
|
||
'dir' => 'ltr',
|
||
'name' => 'Volapük',
|
||
'base' => 'vo',
|
||
'short_name' => 'VO (VO)',
|
||
],
|
||
'wa' => [
|
||
'code' => 'wa',
|
||
'dir' => 'ltr',
|
||
'name' => 'Walon',
|
||
'base' => 'wa',
|
||
'short_name' => 'WA',
|
||
],
|
||
'wa-WA' => [
|
||
'code' => 'wa-WA',
|
||
'dir' => 'ltr',
|
||
'name' => 'Walon',
|
||
'base' => 'wa',
|
||
'short_name' => 'WA (WA)',
|
||
],
|
||
'xh' => [
|
||
'code' => 'xh',
|
||
'dir' => 'ltr',
|
||
'name' => 'isiXhosa',
|
||
'base' => 'xh',
|
||
'short_name' => 'XH',
|
||
],
|
||
'xh-XH' => [
|
||
'code' => 'xh-XH',
|
||
'dir' => 'ltr',
|
||
'name' => 'isiXhosa',
|
||
'base' => 'xh',
|
||
'short_name' => 'XH (XH)',
|
||
],
|
||
'yi' => [
|
||
'code' => 'yi',
|
||
'dir' => 'rtl',
|
||
'name' => 'ייִדיש',
|
||
'base' => 'yi',
|
||
'short_name' => 'YI',
|
||
],
|
||
'yi-YI' => [
|
||
'code' => 'yi-YI',
|
||
'dir' => 'rtl',
|
||
'name' => 'ייִדיש',
|
||
'base' => 'yi',
|
||
'short_name' => 'YI (YI)',
|
||
],
|
||
'zh' => [
|
||
'code' => 'zh',
|
||
'dir' => 'ltr',
|
||
'name' => '中文',
|
||
'base' => 'zh',
|
||
'short_name' => 'ZH',
|
||
],
|
||
'zh-CN' => [
|
||
'code' => 'zh-CN',
|
||
'dir' => 'ltr',
|
||
'name' => '简体中文',
|
||
'base' => 'zh',
|
||
'short_name' => 'ZH (CN)',
|
||
],
|
||
'zh-HK' => [
|
||
'code' => 'zh-HK',
|
||
'dir' => 'ltr',
|
||
'name' => '中文 (香港)',
|
||
'base' => 'zh',
|
||
'short_name' => 'ZH (HK)',
|
||
],
|
||
'zh-SG' => [
|
||
'code' => 'zh-SG',
|
||
'dir' => 'ltr',
|
||
'name' => '中文 (新加坡)',
|
||
'base' => 'zh',
|
||
'short_name' => 'ZH (SG)',
|
||
],
|
||
'zh-TW' => [
|
||
'code' => 'zh-TW',
|
||
'dir' => 'ltr',
|
||
'name' => '繁体中文',
|
||
'base' => 'zh',
|
||
'short_name' => 'ZH (TW)',
|
||
],
|
||
'zu' => [
|
||
'code' => 'zu',
|
||
'dir' => 'ltr',
|
||
'name' => 'isiZulu',
|
||
'base' => 'zu',
|
||
'short_name' => 'ZU',
|
||
],
|
||
'zu-ZU' => [
|
||
'code' => 'zu-ZU',
|
||
'dir' => 'ltr',
|
||
'name' => 'isiZulu',
|
||
'base' => 'zu',
|
||
'short_name' => 'ZU (ZU)',
|
||
],
|
||
];
|
||
}
|
||
}
|
||
|
||
class L10nException extends Exception
|
||
{
|
||
}
|
||
|
||
//error_reporting($error_reporting_level);
|