It's nice that the Wikipedia article on ISO639 language codes offers a comma-delimited list of the 2-letter codes, but that's not really useful for much more than validation. What a programmer really needs is a way to get the language code from the name and vice-versa. A quick XSLT on the Wikipedia table...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="no" method="text" omit-xml-declaration="yes"/>
<xsl:template match="/table">
<xsl:for-each select="tr">
<xsl:text>INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES (</xsl:text>
<xsl:text>'</xsl:text>
<xsl:value-of select="substring(td[1],1,2)"/>
<xsl:text>', </xsl:text>
<xsl:text>'</xsl:text>
<xsl:value-of select="substring(td[2],1,3)"/>
<xsl:text>', </xsl:text>
<xsl:text>'</xsl:text>
<xsl:value-of select="normalize-space(td[4])"/>
<xsl:text>'</xsl:text>
<xsl:text>);
</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Now we're in business:
CREATE TABLE `ISO639` (
`639-1` char(2) NOT NULL,
`639-2` char(3) NOT NULL,
`name` varchar(64) NOT NULL
);
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('aa', 'aar', 'Afar');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ab', 'abk', 'Abkhazian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ae', 'ave', 'Avestan');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('af', 'afr', 'Afrikaans');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ak', 'aka', 'Akan');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('am', 'amh', 'Amharic');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('an', 'arg', 'Aragonese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ar', 'ara', 'Arabic');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('as', 'asm', 'Assamese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('av', 'ava', 'Avaric');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ay', 'aym', 'Aymara');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('az', 'aze', 'Azerbaijani');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ba', 'bak', 'Bashkir');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('be', 'bel', 'Belarusian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bg', 'bul', 'Bulgarian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bh', 'bih', 'Bihari');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bi', 'bis', 'Bislama');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bm', 'bam', 'Bambara');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bn', 'ben', 'Bengali');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bo', 'tib', 'Tibetan');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('br', 'bre', 'Breton');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('bs', 'bos', 'Bosnian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ca', 'cat', 'Catalan');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ce', 'che', 'Chechen');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ch', 'cha', 'Chamorro');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('co', 'cos', 'Corsican');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('cr', 'cre', 'Cree');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('cs', 'cze', 'Czech');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('cu', 'chu', 'Church Slavic');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('cv', 'chv', 'Chuvash');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('cy', 'wel', 'Welsh');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('da', 'dan', 'Danish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('de', 'ger', 'German');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('dv', 'div', 'Divehi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('dz', 'dzo', 'Dzongkha');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ee', 'ewe', 'Ewe');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('el', 'gre', 'Greek');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('en', 'eng', 'English');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('eo', 'epo', 'Esperanto');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('es', 'spa', 'Spanish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('et', 'est', 'Estonian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('eu', 'baq', 'Basque');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('fa', 'per', 'Persian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ff', 'ful', 'Fulah');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('fi', 'fin', 'Finnish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('fj', 'fij', 'Fijian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('fo', 'fao', 'Faroese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('fr', 'fre', 'French');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('fy', 'fry', 'Western Frisian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ga', 'gle', 'Irish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('gd', 'gla', 'Scottish Gaelic');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('gl', 'glg', 'Galician');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('gn', 'grn', 'Guaraní');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('gu', 'guj', 'Gujarati');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('gv', 'glv', 'Manx');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ha', 'hau', 'Hausa');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('he', 'heb', 'Hebrew');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('hi', 'hin', 'Hindi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ho', 'hmo', 'Hiri Motu');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('hr', 'scr', 'Croatian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ht', 'hat', 'Haitian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('hu', 'hun', 'Hungarian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('hy', 'arm', 'Armenian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('hz', 'her', 'Herero');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ia', 'ina', 'Interlingua (International Auxiliary Language Association)');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('id', 'ind', 'Indonesian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ie', 'ile', 'Interlingue');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ig', 'ibo', 'Igbo');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ii', 'iii', 'Sichuan Yi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ik', 'ipk', 'Inupiaq');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('io', 'ido', 'Ido');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('is', 'ice', 'Icelandic');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('it', 'ita', 'Italian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('iu', 'iku', 'Inuktitut');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ja', 'jpn', 'Japanese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('jv', 'jav', 'Javanese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ka', 'geo', 'Georgian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kg', 'kon', 'Kongo');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ki', 'kik', 'Kikuyu');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kj', 'kua', 'Kwanyama');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kk', 'kaz', 'Kazakh');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kl', 'kal', 'Kalaallisut');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('km', 'khm', 'Khmer');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kn', 'kan', 'Kannada');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ko', 'kor', 'Korean');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kr', 'kau', 'Kanuri');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ks', 'kas', 'Kashmiri');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ku', 'kur', 'Kurdish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kv', 'kom', 'Komi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('kw', 'cor', 'Cornish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ky', 'kir', 'Kirghiz');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('la', 'lat', 'Latin');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('lb', 'ltz', 'Luxembourgish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('lg', 'lug', 'Ganda');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('li', 'lim', 'Limburgish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ln', 'lin', 'Lingala');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('lo', 'lao', 'Lao');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('lt', 'lit', 'Lithuanian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('lu', 'lub', 'Luba-Katanga');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('lv', 'lav', 'Latvian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mg', 'mlg', 'Malagasy');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mh', 'mah', 'Marshallese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mi', 'mao', 'Māori');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mk', 'mac', 'Macedonian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ml', 'mal', 'Malayalam');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mn', 'mon', 'Mongolian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mo', 'mol', 'Moldavian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mr', 'mar', 'Marathi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ms', 'may', 'Malay');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('mt', 'mlt', 'Maltese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('my', 'bur', 'Burmese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('na', 'nau', 'Nauru');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('nb', 'nob', 'Norwegian Bokmål');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('nd', 'nde', 'North Ndebele');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ne', 'nep', 'Nepali');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ng', 'ndo', 'Ndonga');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('nl', 'dut', 'Dutch');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('nn', 'nno', 'Norwegian Nynorsk');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('no', 'nor', 'Norwegian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('nr', 'nbl', 'South Ndebele');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('nv', 'nav', 'Navajo');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ny', 'nya', 'Chichewa');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('oc', 'oci', 'Occitan');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('oj', 'oji', 'Ojibwa');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('om', 'orm', 'Oromo');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('or', 'ori', 'Oriya');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('os', 'oss', 'Ossetian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('pa', 'pan', 'Panjabi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('pi', 'pli', 'Pāli');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('pl', 'pol', 'Polish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ps', 'pus', 'Pashto');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('pt', 'por', 'Portuguese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('qu', 'que', 'Quechua');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('rm', 'roh', 'Raeto-Romance');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('rn', 'run', 'Kirundi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ro', 'rum', 'Romanian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ru', 'rus', 'Russian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('rw', 'kin', 'Kinyarwanda');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ry', 'sla', 'Rusyn');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sa', 'san', 'Sanskrit');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sc', 'srd', 'Sardinian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sd', 'snd', 'Sindhi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('se', 'sme', 'Northern Sami');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sg', 'sag', 'Sango');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sh', '--', 'Serbo-Croatian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('si', 'sin', 'Sinhalese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sk', 'slo', 'Slovak');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sl', 'slv', 'Slovenian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sm', 'smo', 'Samoan');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sn', 'sna', 'Shona');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('so', 'som', 'Somali');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sq', 'alb', 'Albanian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sr', 'scc', 'Serbian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ss', 'ssw', 'Swati');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('st', 'sot', 'Sotho');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('su', 'sun', 'Sundanese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sv', 'swe', 'Swedish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('sw', 'swa', 'Swahili');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ta', 'tam', 'Tamil');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('te', 'tel', 'Telugu');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tg', 'tgk', 'Tajik');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('th', 'tha', 'Thai');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ti', 'tir', 'Tigrinya');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tk', 'tuk', 'Turkmen');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tl', 'tgl', 'Tagalog');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tn', 'tsn', 'Tswana');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('to', 'ton', 'Tonga');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tr', 'tur', 'Turkish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ts', 'tso', 'Tsonga');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tt', 'tat', 'Tatar');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('tw', 'twi', 'Twi');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ty', 'tah', 'Tahitian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ug', 'uig', 'Uighur');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('uk', 'ukr', 'Ukrainian');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ur', 'urd', 'Urdu');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('uz', 'uzb', 'Uzbek');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('ve', 'ven', 'Venda');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('vi', 'vie', 'Vietnamese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('vo', 'vol', 'Volapük');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('wa', 'wln', 'Walloon');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('wo', 'wol', 'Wolof');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('xh', 'xho', 'Xhosa');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('yi', 'yid', 'Yiddish');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('yo', 'yor', 'Yoruba');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('za', 'zha', 'Zhuang');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('zh', 'chi', 'Chinese');
INSERT INTO ISO639 (`639-1`, `639-2`, `name`) VALUES ('zu', 'zul', 'Zulu');[ home - archives - quoteboard - blogger decoder - wishlist ]
This work is licensed under a
Creative Commons License.