Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/core/Intl
diff options
context:
space:
mode:
authorMatthieu Napoli <matthieu@mnapoli.fr>2014-12-31 04:42:22 +0300
committerMatthieu Napoli <matthieu@mnapoli.fr>2015-01-09 00:13:31 +0300
commitb1aca50678da78016490bfce02f49f073471f946 (patch)
tree33193bf9d2802bd816f60572d22c2b15a3ff3995 /core/Intl
parent6708a431479b8e1d2d59fd4580afb9f941b99ea1 (diff)
Moved some data files into the Intl component
Diffstat (limited to 'core/Intl')
-rw-r--r--core/Intl/Data/Provider/LanguageDataProvider.php4
-rw-r--r--core/Intl/Data/Provider/RegionDataProvider.php4
-rw-r--r--core/Intl/Data/Resources/Countries.php326
-rw-r--r--core/Intl/Data/Resources/LanguageToCountry.php63
-rw-r--r--core/Intl/Data/Resources/Languages.php203
5 files changed, 596 insertions, 4 deletions
diff --git a/core/Intl/Data/Provider/LanguageDataProvider.php b/core/Intl/Data/Provider/LanguageDataProvider.php
index 44fcfab5d0..d4758995b6 100644
--- a/core/Intl/Data/Provider/LanguageDataProvider.php
+++ b/core/Intl/Data/Provider/LanguageDataProvider.php
@@ -22,7 +22,7 @@ class LanguageDataProvider
*/
public static function getLanguageList()
{
- require PIWIK_INCLUDE_PATH . '/core/DataFiles/Languages.php';
+ require __DIR__ . '/../Resources/Languages.php';
return $GLOBALS['Piwik_LanguageList'];
}
@@ -36,7 +36,7 @@ class LanguageDataProvider
*/
public static function getLanguageToCountryList()
{
- require PIWIK_INCLUDE_PATH . '/core/DataFiles/LanguageToCountry.php';
+ require __DIR__ . '/../Resources/LanguageToCountry.php';
return $GLOBALS['Piwik_LanguageToCountry'];
}
diff --git a/core/Intl/Data/Provider/RegionDataProvider.php b/core/Intl/Data/Provider/RegionDataProvider.php
index a859ac80ba..3471124ef0 100644
--- a/core/Intl/Data/Provider/RegionDataProvider.php
+++ b/core/Intl/Data/Provider/RegionDataProvider.php
@@ -21,7 +21,7 @@ class RegionDataProvider
*/
public function getContinentList()
{
- require PIWIK_INCLUDE_PATH . '/core/DataFiles/Countries.php';
+ require __DIR__ . '/../Resources/Countries.php';
return $GLOBALS['Piwik_ContinentList'];
}
@@ -35,7 +35,7 @@ class RegionDataProvider
*/
public static function getCountryList($includeInternalCodes = false)
{
- require PIWIK_INCLUDE_PATH . '/core/DataFiles/Countries.php';
+ require __DIR__ . '/../Resources/Countries.php';
$countriesList = $GLOBALS['Piwik_CountryList'];
$extras = $GLOBALS['Piwik_CountryList_Extras'];
diff --git a/core/Intl/Data/Resources/Countries.php b/core/Intl/Data/Resources/Countries.php
new file mode 100644
index 0000000000..4d752d75ae
--- /dev/null
+++ b/core/Intl/Data/Resources/Countries.php
@@ -0,0 +1,326 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+/**
+ * Country code and continent database.
+ *
+ * The mapping of countries to continents is from MaxMind with the exception
+ * of Central America. MaxMind groups Central American countries with
+ * North America. Piwik previously grouped Central American countries with
+ * South America. Given this conflict and the fact that most of Central
+ * America lies on its own continental plate (i.e., the Caribbean Plate), we
+ * currently use a separate continent code (amc).
+ */
+if (!isset($GLOBALS['Piwik_CountryList'])) {
+ // Primary reference: ISO 3166-1 alpha-2
+ $GLOBALS['Piwik_CountryList'] = array(
+ 'ad' => 'eur',
+ 'ae' => 'asi',
+ 'af' => 'asi',
+ 'ag' => 'amc',
+ 'ai' => 'amc',
+ 'al' => 'eur',
+ 'am' => 'asi',
+ 'ao' => 'afr',
+ 'aq' => 'ant',
+ 'ar' => 'ams',
+ 'as' => 'oce',
+ 'at' => 'eur',
+ 'au' => 'oce',
+ 'aw' => 'amc',
+ 'ax' => 'eur',
+ 'az' => 'asi',
+ 'ba' => 'eur',
+ 'bb' => 'amc',
+ 'bd' => 'asi',
+ 'be' => 'eur',
+ 'bf' => 'afr',
+ 'bg' => 'eur',
+ 'bh' => 'asi',
+ 'bi' => 'afr',
+ 'bj' => 'afr',
+ 'bl' => 'amc',
+ 'bm' => 'amc',
+ 'bn' => 'asi',
+ 'bo' => 'ams',
+ 'bq' => 'amc',
+ 'br' => 'ams',
+ 'bs' => 'amc',
+ 'bt' => 'asi',
+ 'bv' => 'ant',
+ 'bw' => 'afr',
+ 'by' => 'eur',
+ 'bz' => 'amc',
+ 'ca' => 'amn',
+ 'cc' => 'asi',
+ 'cd' => 'afr',
+ 'cf' => 'afr',
+ 'cg' => 'afr',
+ 'ch' => 'eur',
+ 'ci' => 'afr',
+ 'ck' => 'oce',
+ 'cl' => 'ams',
+ 'cm' => 'afr',
+ 'cn' => 'asi',
+ 'co' => 'ams',
+ 'cr' => 'amc',
+ 'cu' => 'amc',
+ 'cv' => 'afr',
+ 'cw' => 'amc',
+ 'cx' => 'asi',
+ 'cy' => 'eur',
+ 'cz' => 'eur',
+ 'de' => 'eur',
+ 'dj' => 'afr',
+ 'dk' => 'eur',
+ 'dm' => 'amc',
+ 'do' => 'amc',
+ 'dz' => 'afr',
+ 'ec' => 'ams',
+ 'ee' => 'eur',
+ 'eg' => 'afr',
+ 'eh' => 'afr',
+ 'er' => 'afr',
+ 'es' => 'eur',
+ 'et' => 'afr',
+ 'fi' => 'eur',
+ 'fj' => 'oce',
+ 'fk' => 'ams',
+ 'fm' => 'oce',
+ 'fo' => 'eur',
+ 'fr' => 'eur',
+ 'ga' => 'afr',
+ 'gb' => 'eur',
+ 'gd' => 'amc',
+ 'ge' => 'asi',
+ 'gf' => 'ams',
+ 'gg' => 'eur',
+ 'gh' => 'afr',
+ 'gi' => 'eur',
+ 'gl' => 'amn',
+ 'gm' => 'afr',
+ 'gn' => 'afr',
+ 'gp' => 'amc',
+ 'gq' => 'afr',
+ 'gr' => 'eur',
+ 'gs' => 'ant',
+ 'gt' => 'amc',
+ 'gu' => 'oce',
+ 'gw' => 'afr',
+ 'gy' => 'ams',
+ 'hk' => 'asi',
+ 'hm' => 'ant',
+ 'hn' => 'amc',
+ 'hr' => 'eur',
+ 'ht' => 'amc',
+ 'hu' => 'eur',
+ 'id' => 'asi',
+ 'ie' => 'eur',
+ 'il' => 'asi',
+ 'im' => 'eur',
+ 'in' => 'asi',
+ 'io' => 'asi',
+ 'iq' => 'asi',
+ 'ir' => 'asi',
+ 'is' => 'eur',
+ 'it' => 'eur',
+ 'je' => 'eur',
+ 'jm' => 'amc',
+ 'jo' => 'asi',
+ 'jp' => 'asi',
+ 'ke' => 'afr',
+ 'kg' => 'asi',
+ 'kh' => 'asi',
+ 'ki' => 'oce',
+ 'km' => 'afr',
+ 'kn' => 'amc',
+ 'kp' => 'asi',
+ 'kr' => 'asi',
+ 'kw' => 'asi',
+ 'ky' => 'amc',
+ 'kz' => 'asi',
+ 'la' => 'asi',
+ 'lb' => 'asi',
+ 'lc' => 'amc',
+ 'li' => 'eur',
+ 'lk' => 'asi',
+ 'lr' => 'afr',
+ 'ls' => 'afr',
+ 'lt' => 'eur',
+ 'lu' => 'eur',
+ 'lv' => 'eur',
+ 'ly' => 'afr',
+ 'ma' => 'afr',
+ 'mc' => 'eur',
+ 'md' => 'eur',
+ 'me' => 'eur',
+ 'mf' => 'amc',
+ 'mg' => 'afr',
+ 'mh' => 'oce',
+ 'mk' => 'eur',
+ 'ml' => 'afr',
+ 'mm' => 'asi',
+ 'mn' => 'asi',
+ 'mo' => 'asi',
+ 'mp' => 'oce',
+ 'mq' => 'amc',
+ 'mr' => 'afr',
+ 'ms' => 'amc',
+ 'mt' => 'eur',
+ 'mu' => 'afr',
+ 'mv' => 'asi',
+ 'mw' => 'afr',
+ 'mx' => 'amn',
+ 'my' => 'asi',
+ 'mz' => 'afr',
+ 'na' => 'afr',
+ 'nc' => 'oce',
+ 'ne' => 'afr',
+ 'nf' => 'oce',
+ 'ng' => 'afr',
+ 'ni' => 'amc',
+ 'nl' => 'eur',
+ 'no' => 'eur',
+ 'np' => 'asi',
+ 'nr' => 'oce',
+ 'nu' => 'oce',
+ 'nz' => 'oce',
+ 'om' => 'asi',
+ 'pa' => 'amc',
+ 'pe' => 'ams',
+ 'pf' => 'oce',
+ 'pg' => 'oce',
+ 'ph' => 'asi',
+ 'pk' => 'asi',
+ 'pl' => 'eur',
+ 'pm' => 'amn',
+ 'pn' => 'oce',
+ 'pr' => 'amc',
+ 'ps' => 'asi',
+ 'pt' => 'eur',
+ 'pw' => 'oce',
+ 'py' => 'ams',
+ 'qa' => 'asi',
+ 're' => 'afr',
+ 'ro' => 'eur',
+ 'rs' => 'eur',
+ 'ru' => 'eur',
+ 'rw' => 'afr',
+ 'sa' => 'asi',
+ 'sb' => 'oce',
+ 'sc' => 'afr',
+ 'sd' => 'afr',
+ 'se' => 'eur',
+ 'sg' => 'asi',
+ 'sh' => 'afr',
+ 'si' => 'eur',
+ 'sj' => 'eur',
+ 'sk' => 'eur',
+ 'sl' => 'afr',
+ 'sm' => 'eur',
+ 'sn' => 'afr',
+ 'so' => 'afr',
+ 'sr' => 'ams',
+ 'ss' => 'afr',
+ 'st' => 'afr',
+ 'sv' => 'amc',
+ 'sx' => 'amc',
+ 'sy' => 'asi',
+ 'sz' => 'afr',
+ 'tc' => 'amc',
+ 'td' => 'afr',
+ 'tf' => 'ant',
+ 'tg' => 'afr',
+ 'th' => 'asi',
+ 'ti' => 'asi',
+ 'tj' => 'asi',
+ 'tk' => 'oce',
+ 'tl' => 'asi',
+ 'tm' => 'asi',
+ 'tn' => 'afr',
+ 'to' => 'oce',
+ 'tr' => 'eur',
+ 'tt' => 'amc',
+ 'tv' => 'oce',
+ 'tw' => 'asi',
+ 'tz' => 'afr',
+ 'ua' => 'eur',
+ 'ug' => 'afr',
+ 'um' => 'oce',
+ 'us' => 'amn',
+ 'uy' => 'ams',
+ 'uz' => 'asi',
+ 'va' => 'eur',
+ 'vc' => 'amc',
+ 've' => 'ams',
+ 'vg' => 'amc',
+ 'vi' => 'amc',
+ 'vn' => 'asi',
+ 'vu' => 'oce',
+ 'wf' => 'oce',
+ 'ws' => 'oce',
+ 'ye' => 'asi',
+ 'yt' => 'afr',
+ 'za' => 'afr',
+ 'zm' => 'afr',
+ 'zw' => 'afr',
+ );
+
+ // codes for internal use
+ $GLOBALS['Piwik_CountryList_Extras'] = array(
+ // unknown
+ 'xx' => 'unk',
+
+ // exceptionally reserved
+ 'ac' => 'afr', // .ac TLD
+ 'cp' => 'amc',
+ 'dg' => 'asi',
+ 'ea' => 'afr',
+ 'eu' => 'eur', // .eu TLD
+ 'fx' => 'eur',
+ 'ic' => 'afr',
+ 'su' => 'eur', // .su TLD
+ 'ta' => 'afr',
+ 'uk' => 'eur', // .uk TLD
+
+ // transitionally reserved
+ 'an' => 'amc', // former Netherlands Antilles
+ 'bu' => 'asi',
+ 'cs' => 'eur', // former Serbia and Montenegro
+ 'nt' => 'asi',
+ 'sf' => 'eur',
+ 'tp' => 'oce', // .tp TLD
+ 'yu' => 'eur', // .yu TLD
+ 'zr' => 'afr',
+
+ // MaxMind GeoIP specific
+ 'a1' => 'unk',
+ 'a2' => 'unk',
+ 'ap' => 'asi',
+ 'o1' => 'unk',
+
+ // Catalonia (Spain)
+ 'cat' => 'eur',
+ );
+}
+
+if (!isset($GLOBALS['Piwik_ContinentList'])) {
+ // Primary reference: ISO 3166-1 alpha-2
+ $GLOBALS['Piwik_ContinentList'] = array(
+ 'unk', // unknown
+ 'amn', // North America
+ 'amc', // Central America
+ 'ams', // South America
+ 'eur', // Europe
+ 'afr', // Africa
+ 'asi', // Asia
+ 'oce', // Oceania
+ 'ant', // Antarctica
+ );
+}
diff --git a/core/Intl/Data/Resources/LanguageToCountry.php b/core/Intl/Data/Resources/LanguageToCountry.php
new file mode 100644
index 0000000000..fdfbb97e72
--- /dev/null
+++ b/core/Intl/Data/Resources/LanguageToCountry.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+/**
+ * Language to Country mapping
+ *
+ * This list is used to guess the visitor's country when the region is
+ * not specified in the first language tag. Inclusion/exclusion is
+ * based on Piwik.org visitor statistics and probability of disambiguation.
+ * (Notably, "en" and "zh" are excluded.)
+ *
+ * If you want to add a new entry, please email us at hello at piwik.org
+ */
+if (!isset($GLOBALS['Piwik_LanguageToCountry'])) {
+ $GLOBALS['Piwik_LanguageToCountry'] = array(
+ 'bg' => 'bg', // Bulgarian => Bulgaria
+ 'ca' => 'es', // Catalan => Spain
+ 'cs' => 'cz', // Czech => Czech Republic
+ 'da' => 'dk', // Danish => Denmark
+ 'de' => 'de', // German => Germany
+ 'el' => 'gr', // Greek => Greece
+ 'es' => 'es', // Spanish => Spain
+ 'et' => 'ee', // Estonian => Estonia
+ 'fa' => 'ir', // Farsi => Iran
+ 'fi' => 'fi', // Finnish => Finland
+ 'fr' => 'fr', // French => France
+ 'he' => 'il', // Hebrew => Israel
+ 'hr' => 'hr', // Croatian => Croatia
+ 'hu' => 'hu', // Hungarian => Hungary
+ 'id' => 'id', // Indonesian => Indonesia
+ 'is' => 'is', // Icelandic => Iceland
+ 'it' => 'it', // Italian => Italy
+ 'ja' => 'jp', // Japanese => Japan
+ 'ko' => 'kr', // Korean => South Korea
+ 'lt' => 'lt', // Lithuanian => Lithuania
+ 'lv' => 'lv', // Latvian => Latvia
+ 'mk' => 'mk', // Macedonian => Macedonia
+ 'ms' => 'my', // Malay => Malaysia
+ 'nb' => 'no', // Bokmål => Norway
+ 'nl' => 'nl', // Dutch => Netherlands
+ 'nn' => 'no', // Nynorsk => Norway
+ 'no' => 'no', // Norwegian => Norway
+ 'pl' => 'pl', // Polish => Poland
+ 'pt' => 'pt', // Portugese => Portugal
+ 'ro' => 'ro', // Romanian => Romania
+ 'ru' => 'ru', // Russian => Russia
+ 'sk' => 'sk', // Slovak => Slovakia
+ 'sl' => 'si', // Slovene => Slovenia
+ 'sq' => 'al', // Albanian => Albania
+ 'sr' => 'rs', // Serbian => Serbia
+ 'sv' => 'se', // Swedish => Sweden
+ 'th' => 'th', // Thai => Thailand
+ 'bo' => 'ti', // Tibetan => Tibet
+ 'tr' => 'tr', // Turkish => Turkey
+ 'uk' => 'ua', // Ukrainian => Ukraine
+ );
+}
diff --git a/core/Intl/Data/Resources/Languages.php b/core/Intl/Data/Resources/Languages.php
new file mode 100644
index 0000000000..d41b443ff4
--- /dev/null
+++ b/core/Intl/Data/Resources/Languages.php
@@ -0,0 +1,203 @@
+<?php
+/**
+ * Piwik - free/libre analytics platform
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+/*
+ * Language database
+ */
+if (!isset($GLOBALS['Piwik_LanguageList'])) {
+ // Reference: ISO 639-1 alpha-2
+ $GLOBALS['Piwik_LanguageList'] = array(
+ 'aa' => array('Afar'),
+ 'ab' => array('Abkhazian'),
+ 'ae' => array('Avestan'),
+ 'af' => array('Afrikaans'),
+ 'ak' => array('Akan'),
+ 'am' => array('Amharic'),
+ 'an' => array('Aragonese'),
+ 'ar' => array('Arabic'),
+ 'as' => array('Assamese'),
+ 'av' => array('Avaric'),
+ 'ay' => array('Aymara'),
+ 'az' => array('Azerbaijani'),
+ 'ba' => array('Bashkir'),
+ 'be' => array('Belarusian'),
+ 'bg' => array('Bulgarian'),
+ 'bh' => array('Bihari'), // 'Bihari languages'
+ 'bi' => array('Bislama'),
+ 'bm' => array('Bambara'),
+ 'bn' => array('Bengali'),
+ 'bo' => array('Tibetan'),
+ 'br' => array('Breton'),
+ 'bs' => array('Bosnian'),
+ 'ca' => array('Catalan', 'Valencian'),
+ 'ce' => array('Chechen'),
+ 'ch' => array('Chamorro'),
+ 'co' => array('Corsican'),
+ 'cr' => array('Cree'),
+ 'cs' => array('Czech'),
+ 'cu' => array('Church Slavic', 'Old Slavonic', 'Church Slavonic', 'Old Bulgarian', 'Old Church Slavonic'),
+ 'cv' => array('Chuvash'),
+ 'cy' => array('Welsh'),
+ 'da' => array('Danish'),
+ 'de' => array('German'),
+ 'dv' => array('Divehi', 'Dhivehi', 'Maldivian'),
+ 'dz' => array('Dzongkha'),
+ 'ee' => array('Ewe'),
+ 'el' => array('Greek', 'Modern Greek', 'Hellenic'), // Greek, Modern (1453-)
+ 'en' => array('English'),
+ 'eo' => array('Esperanto'),
+ 'es' => array('Spanish', 'Castilian'),
+ 'et' => array('Estonian'),
+ 'eu' => array('Basque'),
+ 'fa' => array('Persian'),
+ 'ff' => array('Fulah'),
+ 'fi' => array('Finnish'),
+ 'fj' => array('Fijian'),
+ 'fo' => array('Faroese'),
+ 'fr' => array('French'),
+ 'fy' => array('Western Frisian'),
+ 'ga' => array('Irish'),
+ 'gd' => array('Gaelic', 'Scottish Gaelic'),
+ 'gl' => array('Galician'),
+ 'gn' => array('Guarani'),
+ 'gu' => array('Gujarati'),
+ 'gv' => array('Manx'),
+ 'ha' => array('Hausa'),
+ 'he' => array('Hebrew'),
+ 'hi' => array('Hindi'),
+ 'ho' => array('Hiri Motu'),
+ 'hr' => array('Croatian'),
+ 'ht' => array('Haitian', 'Haitian Creole'),
+ 'hu' => array('Hungarian'),
+ 'hy' => array('Armenian'),
+ 'hz' => array('Herero'),
+ 'ia' => array('Interlingua'), // 'Interlingua (International Auxiliary Language Association)'
+ 'id' => array('Indonesian'),
+ 'ie' => array('Interlingue', 'Occidental'),
+ 'ig' => array('Igbo'),
+ 'ii' => array('Sichuan Yi', 'Nuosu'),
+ 'ik' => array('Inupiaq'),
+ 'io' => array('Ido'),
+ 'is' => array('Icelandic'),
+ 'it' => array('Italian'),
+ 'iu' => array('Inuktitut'),
+ 'ja' => array('Japanese'),
+ 'jv' => array('Javanese'),
+ 'ka' => array('Georgian'),
+ 'kg' => array('Kongo'),
+ 'ki' => array('Kikuyu', 'Gikuyu'),
+ 'kj' => array('Kuanyama', 'Kwanyama'),
+ 'kk' => array('Kazakh'),
+ 'kl' => array('Kalaallisut', 'Greenlandic'),
+ 'km' => array('Central Khmer'),
+ 'kn' => array('Kannada'),
+ 'ko' => array('Korean'),
+ 'kr' => array('Kanuri'),
+ 'ks' => array('Kashmiri'),
+ 'ku' => array('Kurdish'),
+ 'kv' => array('Komi'),
+ 'kw' => array('Cornish'),
+ 'ky' => array('Kirghiz', 'Kyrgyz'),
+ 'la' => array('Latin'),
+ 'lb' => array('Luxembourgish', 'Letzeburgesch'),
+ 'lg' => array('Ganda'),
+ 'li' => array('Limburgan', 'Limburger', 'Limburgish'),
+ 'ln' => array('Lingala'),
+ 'lo' => array('Lao'),
+ 'lt' => array('Lithuanian'),
+ 'lu' => array('Luba-Katanga'),
+ 'lv' => array('Latvian'),
+ 'mg' => array('Malagasy'),
+ 'mh' => array('Marshallese'),
+ 'mi' => array('Maori'),
+ 'mk' => array('Macedonian'),
+ 'ml' => array('Malayalam'),
+ 'mn' => array('Mongolian'),
+// 'mo' => array('Moldavian'), // deprecated
+ 'mr' => array('Marathi'),
+ 'ms' => array('Malay'),
+ 'mt' => array('Maltese'),
+ 'my' => array('Burmese'),
+ 'na' => array('Nauru'),
+ 'nb' => array('Norwegian Bokmål'),
+ 'nd' => array('North Ndebele'),
+ 'ne' => array('Nepali'),
+ 'ng' => array('Ndonga'),
+ 'nl' => array('Dutch', 'Flemish'),
+ 'nn' => array('Norwegian Nynorsk'),
+ 'no' => array('Norwegian'),
+ 'nr' => array('South Ndebele'),
+ 'nv' => array('Navajo', 'Navaho'),
+ 'ny' => array('Chichewa', 'Chewa', 'Nyanja'),
+ 'oc' => array('Occitan', 'Provençal'), // Occitan (post 1500)
+ 'oj' => array('Ojibwa'),
+ 'om' => array('Oromo'),
+ 'or' => array('Oriya'),
+ 'os' => array('Ossetian', 'Ossetic'),
+ 'pa' => array('Panjabi', 'Punjabi'),
+ 'pi' => array('Pali'),
+ 'pl' => array('Polish'),
+ 'ps' => array('Pushto', 'Pashto'),
+ 'pt' => array('Portuguese'),
+ 'qu' => array('Quechua'),
+ 'rm' => array('Romansh'),
+ 'rn' => array('Rundi'),
+ 'ro' => array('Romanian', 'Moldavian', 'Moldovan'),
+ 'ru' => array('Russian'),
+ 'rw' => array('Kinyarwanda'),
+ 'sa' => array('Sanskrit'),
+ 'sc' => array('Sardinian'),
+ 'sd' => array('Sindhi'),
+ 'se' => array('Northern Sami'),
+ 'sg' => array('Sango'),
+// 'sh' => array('Serbo-Croatian'), // deprecated
+ 'si' => array('Sinhala', 'Sinhalese'),
+ 'sk' => array('Slovak'),
+ 'sl' => array('Slovenian'),
+ 'sm' => array('Samoan'),
+ 'sn' => array('Shona'),
+ 'so' => array('Somali'),
+ 'sq' => array('Albanian'),
+ 'sr' => array('Serbian'),
+ 'ss' => array('Swati'),
+ 'st' => array('Southern Soth'),
+ 'su' => array('Sundanese'),
+ 'sv' => array('Swedish'),
+ 'sw' => array('Swahili'),
+ 'ta' => array('Tamil'),
+ 'te' => array('Telugu'),
+ 'tg' => array('Tajik'),
+ 'th' => array('Thai'),
+ 'ti' => array('Tigrinya'),
+ 'tk' => array('Turkmen'),
+ 'tl' => array('Tagalog'),
+ 'tn' => array('Tswana'),
+ 'to' => array('Tonga'), // Tonga (Tonga Islands)
+ 'tr' => array('Turkish'),
+ 'ts' => array('Tsonga'),
+ 'tt' => array('Tatar'),
+ 'tw' => array('Twi'),
+ 'ty' => array('Tahitian'),
+ 'ug' => array('Uighur', 'Uyghur'),
+ 'uk' => array('Ukrainian'),
+ 'ur' => array('Urdu'),
+ 'uz' => array('Uzbek'),
+ 've' => array('Venda'),
+ 'vi' => array('Vietnamese'),
+ 'vo' => array('Volapük'),
+ 'wa' => array('Walloon'),
+ 'wo' => array('Wolof'),
+ 'xh' => array('Xhosa'),
+ 'yi' => array('Yiddish'),
+ 'yo' => array('Yoruba'),
+ 'za' => array('Zhuang', 'Chuang'),
+ 'zh' => array('Chinese'),
+ 'zu' => array('Zulu'),
+ );
+}