From e331d8fd2c949aba74978aa097ce9726ee750cc7 Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Mon, 5 Apr 2021 23:25:27 +0200 Subject: [PATCH] Add array for ISO639-2b language codes --- src/MDLanguagesSet.php | 194 ++++++++++++++++++++++++++++++++++- tests/MDLanguagesSetTest.php | 38 +++++++ tests/config.xml | 40 ++++++++ 3 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 tests/MDLanguagesSetTest.php create mode 100644 tests/config.xml diff --git a/src/MDLanguagesSet.php b/src/MDLanguagesSet.php index 7686e52..513b7ae 100644 --- a/src/MDLanguagesSet.php +++ b/src/MDLanguagesSet.php @@ -200,7 +200,199 @@ final class MDLanguagesSet { 'yo' => 'Yoruba', 'za' => 'Zhuang, Chuang', 'zh' => 'Chinese', - 'zu' => 'Zulu' + 'zu' => 'Zulu', + ]; + + const LANGUAGES_ISO639_2B = [ + 'aa' => 'aar', # 'Afar-áf', + 'ab' => 'abk', # 'аҧсуа бызшәа', + 'ae' => 'ave', # 'Avestan', + 'af' => 'afr', # 'Afrikaans', + 'ak' => 'aka', # 'Akan', + 'am' => 'amh', # 'Amharic', + 'an' => 'arg', # 'Aragonese', + 'ar' => 'ara', # 'العربية', + 'as' => 'asm', # 'Assamese', + 'av' => 'ava', # 'Avaric', + 'ay' => 'aym', # 'Aymara', + 'az' => 'aze', # 'Azerbaijani', + 'ba' => 'bak', # 'Bashkir', + 'be' => 'bel', # 'беларуская мова', + 'bg' => 'bul', # 'български език', + 'bh' => 'bih', # 'Bihari', + 'bi' => 'bis', # 'Bislama', + 'bm' => 'bam', # 'Bambara', + 'bn' => 'ben', # 'Bengali', + 'bo' => 'tib', # 'བོད་སྐད', + 'br' => 'bre', # 'Breton', + 'bs' => 'bos', # 'Bosnian', + 'ca' => 'cat', # 'català', + 'ce' => 'che', # 'Chechen', + 'ch' => 'cha', # 'Chamorro', + 'co' => 'cos', # 'Corsican', + 'cr' => 'cre', # 'Cree', + 'cs' => 'cze', # 'čeština', + 'cu' => 'chu', # 'словѣньскъ ѩзыкъ', + 'cv' => 'chv', # 'Chuvash', + 'cy' => 'wel', # 'Welsh', + 'da' => 'dan', # 'Danish', + 'de' => 'ger', # 'Deutsch', + 'dsb' => 'dsb', # 'Dolnoserbšćina', + 'dv' => 'div', # 'Divehi; Dhivehi; Maldivian;', + 'dz' => 'dzo', # 'Dzongkha', + 'ee' => 'ewe', # 'Ewe', + 'egy' => 'egy', # 'Egyptian language', + 'el' => 'gre', # 'ελληνικά', + 'en' => 'eng', # 'English', + 'eo' => 'epo', # 'Esperanto', + 'es' => 'spa', # 'Spanish; Castilian', + 'et' => 'est', # 'Estonian', + 'eu' => 'baq', # 'Basque', + 'fa' => 'per', # 'Persian', + 'ff' => 'ful', # 'Fula; Fulah; Pulaar; Pular', + 'fi' => 'fin', # 'Finnish', + 'fj' => 'fij', # 'Fijian', + 'fo' => 'fao', # 'Faroese', + 'fr' => 'fre', # 'French', + 'fy' => 'fry', # 'Western Frisian', + 'ga' => 'gle', # 'Irish', + 'gd' => 'gla', # 'Scottish Gaelic; Gaelic', + 'gl' => 'glg', # 'Galician', + 'gn' => 'grn', # 'Guaraní', + 'grc' => 'grc', # 'Ancient Greek', + 'gu' => 'guj', # 'Gujarati', + 'gv' => 'glv', # 'Manx', + 'ha' => 'hau', # 'Hausa', + 'he' => 'heb', # 'Hebrew (modern)', + 'hi' => 'hin', # 'Hindi', + 'ho' => 'hmo', # 'Hiri Motu', + 'hr' => 'hrv', # 'Croatian', + 'hsb' => 'hsb', # 'Hornjoserbšćina', + 'ht' => 'hat', # 'Haitian; Haitian Creole', + 'hu' => 'hun', # 'Magyar', + 'hy' => 'arm', # 'Armenian', + 'hz' => 'her', # 'Herero', + 'ia' => 'ina', # 'Interlingua', + 'id' => 'ind', # 'Bahasa Indonesia', + 'ie' => 'ile', # 'Interlingue', + 'ig' => 'ibo', # 'Igbo', + 'ii' => 'iii', # 'Nuosu', + 'ik' => 'ipk', # 'Inupiaq', + 'io' => 'ido', # 'Ido', + 'is' => 'ice', # 'Icelandic', + 'it' => 'ita', # 'Italian', + 'iu' => 'iku', # 'Inuktitut', + 'ja' => 'jpn', # 'Japanese (ja)', + 'jv' => 'jav', # 'Javanese (jv)', + 'ka' => 'geo', # 'Georgian', + 'kg' => 'kon', # 'Kongo', + 'ki' => 'kik', # 'Kikuyu, Gikuyu', + 'kj' => 'kua', # 'Kwanyama, Kuanyama', + 'kk' => 'kaz', # 'Kazakh', + 'kl' => 'kal', # 'Kalaallisut, Greenlandic', + 'km' => 'khm', # 'Khmer', + 'kn' => 'kan', # 'Kannada', + 'ko' => 'kor', # 'Korean', + 'kr' => 'kau', # 'Kanuri', + 'ks' => 'kas', # 'Kashmiri', + 'ku' => 'kur', # 'Kurdish', + 'kv' => 'kom', # 'Komi', + 'kw' => 'cor', # 'Cornish', + 'ky' => 'kir', # 'Kirghiz, Kyrgyz', + 'la' => 'lat', # 'Latin', + 'lb' => 'ltz', # 'Lëtzebuergesch', + 'lg' => 'lug', # 'Luganda', + 'li' => 'lim', # 'Limburgish, Limburgan, Limburger', + 'ln' => 'lin', # 'Lingala', + 'lo' => 'lao', # 'Lao', + 'lt' => 'lit', # 'lietuvių kalba', + 'lu' => 'lub', # 'Luba-Katanga', + 'lv' => 'lav', # 'Latvian', + 'mg' => 'mlg', # 'Malagasy', + 'mh' => 'mah', # 'Marshallese', + 'mi' => 'mao', # 'Maori', + 'mk' => 'mac', # 'Macedonian', + 'ml' => 'mal', # 'Malayalam', + 'mn' => 'mon', # 'Mongolian', + 'mr' => 'mar', # 'Marathi (Mara?hi)', + 'ms' => 'may', # 'Malay', + 'mt' => 'mlt', # 'Maltese', + 'my' => 'bur', # 'Burmese', + 'na' => 'nau', # 'Nauru', + 'nb' => 'nob', # 'Bokmål', + 'nd' => 'nde', # 'North Ndebele', + 'ne' => 'nep', # 'Nepali', + 'ng' => 'ndo', # 'Ndonga', + 'nl' => 'dut', # 'Nederlands', + 'nn' => 'nno', # 'Nynorsk', + 'no' => 'nor', # 'Norsk', + 'nr' => 'nbl', # 'South Ndebele', + 'nv' => 'nav', # 'Navajo, Navaho', + 'ny' => 'nya', # 'Chichewa; Chewa; Nyanja', + 'oc' => 'oci', # 'Occitan', + 'oj' => 'oji', # 'Ojibwe, Ojibwa', + 'om' => 'orm', # 'Oromo', + 'or' => 'ori', # 'Oriya', + 'os' => 'oss', # 'Ossetian, Ossetic', + 'pa' => 'pan', # 'Panjabi, Punjabi', + 'pi' => 'pli', # 'Pali', + 'pl' => 'pol', # 'Polish', + 'ps' => 'pus', # 'Pashto, Pushto', + 'pt' => 'por', # 'Português', + 'qu' => 'que', # 'Quechua', + 'rm' => 'roh', # 'Romansh', + 'rn' => 'run', # 'Kirundi', + 'ro' => 'rum', # 'Română', + 'ru' => 'rus', # 'Russian', + 'rw' => 'kin', # 'Kinyarwanda', + 'sa' => 'san', # 'Sanskrit (संस्कृत)', + 'sc' => 'srd', # 'Sardinian', + 'sd' => 'snd', # 'Sindhi', + 'se' => 'sme', # 'Northern Sami', + 'sg' => 'sag', # 'Sango', + 'si' => 'sin', # 'Sinhala, Sinhalese', + 'sk' => 'slo', # 'Slovenčina', + 'sl' => 'slv', # 'Slovenščina', + 'sm' => 'smo', # 'Samoan', + 'sn' => 'sna', # 'Shona', + 'so' => 'som', # 'Somali', + 'sq' => 'alb', # 'Albanian', + 'sr' => 'srp', # 'Serbian', + 'ss' => 'ssw', # 'Swati', + 'st' => 'sot', # 'Southern Sotho', + 'su' => 'sun', # 'Sundanese', + 'sv' => 'swe', # 'Swedish', + 'sw' => 'swa', # 'Swahili', + 'ta' => 'tam', # 'Tamil', + 'te' => 'tel', # 'Telugu', + 'tg' => 'tgk', # 'Tajik', + 'th' => 'tha', # 'ภาษาไทย', + 'ti' => 'tir', # 'Tigrinya', + 'tk' => 'tuk', # 'Turkmen', + 'tl' => 'tgl', # 'Tagalog', + 'tn' => 'tsn', # 'Tswana', + 'to' => 'ton', # 'Tonga (Tonga Islands)', + 'tr' => 'tur', # 'Türkçe', + 'ts' => 'tso', # 'Tsonga', + 'tt' => 'tat', # 'Tatar', + 'tw' => 'twi', # 'Twi', + 'ty' => 'tah', # 'Tahitian', + 'ug' => 'uig', # 'Uighur, Uyghur', + 'uk' => 'ukr', # 'Ukrainian', + 'ur' => 'urd', # 'اردو', + 'uz' => 'uzb', # 'Uzbek', + 've' => 'ven', # 'Venda', + 'vi' => 'vie', # 'Vietnamese', + 'vo' => 'vol', # 'Volapük', + 'wa' => 'wln', # 'Walloon', + 'wen' => 'wen', # 'Sorbisch', + 'wo' => 'wol', # 'Wolof', + 'xh' => 'xho', # 'Xhosa', + 'yi' => 'yid', # 'Yiddish', + 'yo' => 'yor', # 'Yoruba', + 'za' => 'zha', # 'Zhuang, Chuang', + 'zh' => 'chi', # 'Chinese', + 'zu' => 'zul', # 'Zulu', ]; } diff --git a/tests/MDLanguagesSetTest.php b/tests/MDLanguagesSetTest.php new file mode 100644 index 0000000..b61f980 --- /dev/null +++ b/tests/MDLanguagesSetTest.php @@ -0,0 +1,38 @@ + + */ +declare(strict_types = 1); +use PHPUnit\Framework\TestCase; + +require __DIR__ . '/../src/MDLanguagesSet.php'; + +/** + * Tests for home page. + */ +final class MDLanguagesSetTest extends TestCase { + /** + * Test to check whether the HTML page is correctly generated. + * + * @author Joshua Ramon Enslin + * @group ValidOutput + * + * @return void + */ + public function testIso639ListIsCorrect():void { + + foreach (MDLanguagesSet::AVAILABLE_LANGUAGES as $language_code => $language_name) { + + self::assertArrayHasKey($language_code, MDLanguagesSet::LANGUAGES_ISO639_2B, 'Language ' . $language_code . ' (' . $language_name . ') has no entry in ISO639-2b language code list'); + self::assertEquals(3, strlen(MDLanguagesSet::LANGUAGES_ISO639_2B[$language_code]), 'ISO639-2b entry for language ' . $language_code . ' (' . $language_name . ') is not = 3'); + + } + + foreach (MDLanguagesSet::LANGUAGES_ISO639_2B as $language_code => $language_name) { + self::assertArrayHasKey($language_code, MDLanguagesSet::AVAILABLE_LANGUAGES, 'Language ' . $language_code . ' (' . $language_name . ') has an entry in ISO639-2b language code list, but not in the main list.'); + } + + } +} diff --git a/tests/config.xml b/tests/config.xml new file mode 100644 index 0000000..d3638e2 --- /dev/null +++ b/tests/config.xml @@ -0,0 +1,40 @@ + + + +