Bug 20364: Show languages from MARC21 field 041 in intranet
authorPasi Kallinen <pasi.kallinen@joensuu.fi>
Fri, 9 Mar 2018 09:05:52 +0000 (11:05 +0200)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 15 Jul 2019 10:28:07 +0000 (11:28 +0100)
Show the language names coded in field 041, in intranet search
results and in detail view.

Test plan:
1) Apply patch
2) Do a search, and check the results look correct
3) Check some biblio detail pages that they look correct
4) Add some 041 subfields (a, b, d, h, j) in any combinations
5) Repeat 2 and 3

Signed-off-by: Pasi Kallinen <pasi.kallinen@joensuu.fi>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21Languages.xsl [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
misc/maintenance/generate_MARC21Languages.pl [new file with mode: 0755]

diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21Languages.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21Languages.xsl
new file mode 100644 (file)
index 0000000..a0889a4
--- /dev/null
@@ -0,0 +1,498 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<!-- This file generated by generate_MARC21Languages.pl -->
+    <xsl:template name="languageCodeText">
+        <xsl:param name="code"/>
+        <xsl:choose>
+            <xsl:when test="$code='abk'"><xsl:text>Abkhaz</xsl:text></xsl:when>
+            <xsl:when test="$code='ace'"><xsl:text>Achinese</xsl:text></xsl:when>
+            <xsl:when test="$code='ach'"><xsl:text>Acoli</xsl:text></xsl:when>
+            <xsl:when test="$code='ada'"><xsl:text>Adangme</xsl:text></xsl:when>
+            <xsl:when test="$code='ady'"><xsl:text>Adygei</xsl:text></xsl:when>
+            <xsl:when test="$code='aar'"><xsl:text>Afar</xsl:text></xsl:when>
+            <xsl:when test="$code='afh'"><xsl:text>Afrihili (Artificial language)</xsl:text></xsl:when>
+            <xsl:when test="$code='afr'"><xsl:text>Afrikaans</xsl:text></xsl:when>
+            <xsl:when test="$code='afa'"><xsl:text>Afroasiatic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ain'"><xsl:text>Ainu</xsl:text></xsl:when>
+            <xsl:when test="$code='aka'"><xsl:text>Akan</xsl:text></xsl:when>
+            <xsl:when test="$code='akk'"><xsl:text>Akkadian</xsl:text></xsl:when>
+            <xsl:when test="$code='alb'"><xsl:text>Albanian</xsl:text></xsl:when>
+            <xsl:when test="$code='ale'"><xsl:text>Aleut</xsl:text></xsl:when>
+            <xsl:when test="$code='alg'"><xsl:text>Algonquian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='alt'"><xsl:text>Altai</xsl:text></xsl:when>
+            <xsl:when test="$code='tut'"><xsl:text>Altaic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='amh'"><xsl:text>Amharic</xsl:text></xsl:when>
+            <xsl:when test="$code='anp'"><xsl:text>Angika</xsl:text></xsl:when>
+            <xsl:when test="$code='apa'"><xsl:text>Apache languages</xsl:text></xsl:when>
+            <xsl:when test="$code='ara'"><xsl:text>Arabic</xsl:text></xsl:when>
+            <xsl:when test="$code='arg'"><xsl:text>Aragonese</xsl:text></xsl:when>
+            <xsl:when test="$code='arc'"><xsl:text>Aramaic</xsl:text></xsl:when>
+            <xsl:when test="$code='arp'"><xsl:text>Arapaho</xsl:text></xsl:when>
+            <xsl:when test="$code='arw'"><xsl:text>Arawak</xsl:text></xsl:when>
+            <xsl:when test="$code='arm'"><xsl:text>Armenian</xsl:text></xsl:when>
+            <xsl:when test="$code='rup'"><xsl:text>Aromanian</xsl:text></xsl:when>
+            <xsl:when test="$code='art'"><xsl:text>Artificial (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='asm'"><xsl:text>Assamese</xsl:text></xsl:when>
+            <xsl:when test="$code='ath'"><xsl:text>Athapascan (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='aus'"><xsl:text>Australian languages</xsl:text></xsl:when>
+            <xsl:when test="$code='map'"><xsl:text>Austronesian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ava'"><xsl:text>Avaric</xsl:text></xsl:when>
+            <xsl:when test="$code='ave'"><xsl:text>Avestan</xsl:text></xsl:when>
+            <xsl:when test="$code='awa'"><xsl:text>Awadhi</xsl:text></xsl:when>
+            <xsl:when test="$code='aym'"><xsl:text>Aymara</xsl:text></xsl:when>
+            <xsl:when test="$code='aze'"><xsl:text>Azerbaijani</xsl:text></xsl:when>
+            <xsl:when test="$code='ast'"><xsl:text>Bable</xsl:text></xsl:when>
+            <xsl:when test="$code='ban'"><xsl:text>Balinese</xsl:text></xsl:when>
+            <xsl:when test="$code='bat'"><xsl:text>Baltic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='bal'"><xsl:text>Baluchi</xsl:text></xsl:when>
+            <xsl:when test="$code='bam'"><xsl:text>Bambara</xsl:text></xsl:when>
+            <xsl:when test="$code='bai'"><xsl:text>Bamileke languages</xsl:text></xsl:when>
+            <xsl:when test="$code='bad'"><xsl:text>Banda languages</xsl:text></xsl:when>
+            <xsl:when test="$code='bnt'"><xsl:text>Bantu (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='bas'"><xsl:text>Basa</xsl:text></xsl:when>
+            <xsl:when test="$code='bak'"><xsl:text>Bashkir</xsl:text></xsl:when>
+            <xsl:when test="$code='baq'"><xsl:text>Basque</xsl:text></xsl:when>
+            <xsl:when test="$code='btk'"><xsl:text>Batak</xsl:text></xsl:when>
+            <xsl:when test="$code='bej'"><xsl:text>Beja</xsl:text></xsl:when>
+            <xsl:when test="$code='bel'"><xsl:text>Belarusian</xsl:text></xsl:when>
+            <xsl:when test="$code='bem'"><xsl:text>Bemba</xsl:text></xsl:when>
+            <xsl:when test="$code='ben'"><xsl:text>Bengali</xsl:text></xsl:when>
+            <xsl:when test="$code='ber'"><xsl:text>Berber (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='bho'"><xsl:text>Bhojpuri</xsl:text></xsl:when>
+            <xsl:when test="$code='bih'"><xsl:text>Bihari (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='bik'"><xsl:text>Bikol</xsl:text></xsl:when>
+            <xsl:when test="$code='byn'"><xsl:text>Bilin</xsl:text></xsl:when>
+            <xsl:when test="$code='bis'"><xsl:text>Bislama</xsl:text></xsl:when>
+            <xsl:when test="$code='zbl'"><xsl:text>Blissymbolics</xsl:text></xsl:when>
+            <xsl:when test="$code='bos'"><xsl:text>Bosnian</xsl:text></xsl:when>
+            <xsl:when test="$code='bra'"><xsl:text>Braj</xsl:text></xsl:when>
+            <xsl:when test="$code='bre'"><xsl:text>Breton</xsl:text></xsl:when>
+            <xsl:when test="$code='bug'"><xsl:text>Bugis</xsl:text></xsl:when>
+            <xsl:when test="$code='bul'"><xsl:text>Bulgarian</xsl:text></xsl:when>
+            <xsl:when test="$code='bua'"><xsl:text>Buriat</xsl:text></xsl:when>
+            <xsl:when test="$code='bur'"><xsl:text>Burmese</xsl:text></xsl:when>
+            <xsl:when test="$code='cad'"><xsl:text>Caddo</xsl:text></xsl:when>
+            <xsl:when test="$code='car'"><xsl:text>Carib</xsl:text></xsl:when>
+            <xsl:when test="$code='cat'"><xsl:text>Catalan</xsl:text></xsl:when>
+            <xsl:when test="$code='cau'"><xsl:text>Caucasian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ceb'"><xsl:text>Cebuano</xsl:text></xsl:when>
+            <xsl:when test="$code='cel'"><xsl:text>Celtic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='cai'"><xsl:text>Central American Indian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='chg'"><xsl:text>Chagatai</xsl:text></xsl:when>
+            <xsl:when test="$code='cmc'"><xsl:text>Chamic languages</xsl:text></xsl:when>
+            <xsl:when test="$code='cha'"><xsl:text>Chamorro</xsl:text></xsl:when>
+            <xsl:when test="$code='che'"><xsl:text>Chechen</xsl:text></xsl:when>
+            <xsl:when test="$code='chr'"><xsl:text>Cherokee</xsl:text></xsl:when>
+            <xsl:when test="$code='chy'"><xsl:text>Cheyenne</xsl:text></xsl:when>
+            <xsl:when test="$code='chb'"><xsl:text>Chibcha</xsl:text></xsl:when>
+            <xsl:when test="$code='chi'"><xsl:text>Chinese</xsl:text></xsl:when>
+            <xsl:when test="$code='chn'"><xsl:text>Chinook jargon</xsl:text></xsl:when>
+            <xsl:when test="$code='chp'"><xsl:text>Chipewyan</xsl:text></xsl:when>
+            <xsl:when test="$code='cho'"><xsl:text>Choctaw</xsl:text></xsl:when>
+            <xsl:when test="$code='chu'"><xsl:text>Church Slavic</xsl:text></xsl:when>
+            <xsl:when test="$code='chk'"><xsl:text>Chuukese</xsl:text></xsl:when>
+            <xsl:when test="$code='chv'"><xsl:text>Chuvash</xsl:text></xsl:when>
+            <xsl:when test="$code='cop'"><xsl:text>Coptic</xsl:text></xsl:when>
+            <xsl:when test="$code='cor'"><xsl:text>Cornish</xsl:text></xsl:when>
+            <xsl:when test="$code='cos'"><xsl:text>Corsican</xsl:text></xsl:when>
+            <xsl:when test="$code='cre'"><xsl:text>Cree</xsl:text></xsl:when>
+            <xsl:when test="$code='mus'"><xsl:text>Creek</xsl:text></xsl:when>
+            <xsl:when test="$code='crp'"><xsl:text>Creoles and Pidgins (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='cpe'"><xsl:text>Creoles and Pidgins, English-based (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='cpf'"><xsl:text>Creoles and Pidgins, French-based (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='cpp'"><xsl:text>Creoles and Pidgins, Portuguese-based (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='crh'"><xsl:text>Crimean Tatar</xsl:text></xsl:when>
+            <xsl:when test="$code='hrv'"><xsl:text>Croatian</xsl:text></xsl:when>
+            <xsl:when test="$code='cus'"><xsl:text>Cushitic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='cze'"><xsl:text>Czech</xsl:text></xsl:when>
+            <xsl:when test="$code='dak'"><xsl:text>Dakota</xsl:text></xsl:when>
+            <xsl:when test="$code='dan'"><xsl:text>Danish</xsl:text></xsl:when>
+            <xsl:when test="$code='dar'"><xsl:text>Dargwa</xsl:text></xsl:when>
+            <xsl:when test="$code='day'"><xsl:text>Dayak</xsl:text></xsl:when>
+            <xsl:when test="$code='del'"><xsl:text>Delaware</xsl:text></xsl:when>
+            <xsl:when test="$code='din'"><xsl:text>Dinka</xsl:text></xsl:when>
+            <xsl:when test="$code='div'"><xsl:text>Divehi</xsl:text></xsl:when>
+            <xsl:when test="$code='doi'"><xsl:text>Dogri</xsl:text></xsl:when>
+            <xsl:when test="$code='dgr'"><xsl:text>Dogrib</xsl:text></xsl:when>
+            <xsl:when test="$code='dra'"><xsl:text>Dravidian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='dua'"><xsl:text>Duala</xsl:text></xsl:when>
+            <xsl:when test="$code='dut'"><xsl:text>Dutch</xsl:text></xsl:when>
+            <xsl:when test="$code='dum'"><xsl:text>Dutch, Middle (ca. 1050-1350)</xsl:text></xsl:when>
+            <xsl:when test="$code='dyu'"><xsl:text>Dyula</xsl:text></xsl:when>
+            <xsl:when test="$code='dzo'"><xsl:text>Dzongkha</xsl:text></xsl:when>
+            <xsl:when test="$code='frs'"><xsl:text>East Frisian</xsl:text></xsl:when>
+            <xsl:when test="$code='bin'"><xsl:text>Edo</xsl:text></xsl:when>
+            <xsl:when test="$code='efi'"><xsl:text>Efik</xsl:text></xsl:when>
+            <xsl:when test="$code='egy'"><xsl:text>Egyptian</xsl:text></xsl:when>
+            <xsl:when test="$code='eka'"><xsl:text>Ekajuk</xsl:text></xsl:when>
+            <xsl:when test="$code='elx'"><xsl:text>Elamite</xsl:text></xsl:when>
+            <xsl:when test="$code='eng'"><xsl:text>English</xsl:text></xsl:when>
+            <xsl:when test="$code='enm'"><xsl:text>English, Middle (1100-1500)</xsl:text></xsl:when>
+            <xsl:when test="$code='ang'"><xsl:text>English, Old (ca. 450-1100)</xsl:text></xsl:when>
+            <xsl:when test="$code='myv'"><xsl:text>Erzya</xsl:text></xsl:when>
+            <xsl:when test="$code='epo'"><xsl:text>Esperanto</xsl:text></xsl:when>
+            <xsl:when test="$code='est'"><xsl:text>Estonian</xsl:text></xsl:when>
+            <xsl:when test="$code='gez'"><xsl:text>Ethiopic</xsl:text></xsl:when>
+            <xsl:when test="$code='ewe'"><xsl:text>Ewe</xsl:text></xsl:when>
+            <xsl:when test="$code='ewo'"><xsl:text>Ewondo</xsl:text></xsl:when>
+            <xsl:when test="$code='fan'"><xsl:text>Fang</xsl:text></xsl:when>
+            <xsl:when test="$code='fat'"><xsl:text>Fanti</xsl:text></xsl:when>
+            <xsl:when test="$code='fao'"><xsl:text>Faroese</xsl:text></xsl:when>
+            <xsl:when test="$code='fij'"><xsl:text>Fijian</xsl:text></xsl:when>
+            <xsl:when test="$code='fil'"><xsl:text>Filipino</xsl:text></xsl:when>
+            <xsl:when test="$code='fin'"><xsl:text>Finnish</xsl:text></xsl:when>
+            <xsl:when test="$code='fiu'"><xsl:text>Finno-Ugrian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='fon'"><xsl:text>Fon</xsl:text></xsl:when>
+            <xsl:when test="$code='fre'"><xsl:text>French</xsl:text></xsl:when>
+            <xsl:when test="$code='frm'"><xsl:text>French, Middle (ca. 1300-1600)</xsl:text></xsl:when>
+            <xsl:when test="$code='fro'"><xsl:text>French, Old (ca. 842-1300)</xsl:text></xsl:when>
+            <xsl:when test="$code='fry'"><xsl:text>Frisian</xsl:text></xsl:when>
+            <xsl:when test="$code='fur'"><xsl:text>Friulian</xsl:text></xsl:when>
+            <xsl:when test="$code='ful'"><xsl:text>Fula</xsl:text></xsl:when>
+            <xsl:when test="$code='gaa'"><xsl:text>Gã</xsl:text></xsl:when>
+            <xsl:when test="$code='glg'"><xsl:text>Galician</xsl:text></xsl:when>
+            <xsl:when test="$code='lug'"><xsl:text>Ganda</xsl:text></xsl:when>
+            <xsl:when test="$code='gay'"><xsl:text>Gayo</xsl:text></xsl:when>
+            <xsl:when test="$code='gba'"><xsl:text>Gbaya</xsl:text></xsl:when>
+            <xsl:when test="$code='geo'"><xsl:text>Georgian</xsl:text></xsl:when>
+            <xsl:when test="$code='ger'"><xsl:text>German</xsl:text></xsl:when>
+            <xsl:when test="$code='gmh'"><xsl:text>German, Middle High (ca. 1050-1500)</xsl:text></xsl:when>
+            <xsl:when test="$code='goh'"><xsl:text>German, Old High (ca. 750-1050)</xsl:text></xsl:when>
+            <xsl:when test="$code='gem'"><xsl:text>Germanic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='gil'"><xsl:text>Gilbertese</xsl:text></xsl:when>
+            <xsl:when test="$code='gon'"><xsl:text>Gondi</xsl:text></xsl:when>
+            <xsl:when test="$code='gor'"><xsl:text>Gorontalo</xsl:text></xsl:when>
+            <xsl:when test="$code='got'"><xsl:text>Gothic</xsl:text></xsl:when>
+            <xsl:when test="$code='grb'"><xsl:text>Grebo</xsl:text></xsl:when>
+            <xsl:when test="$code='grc'"><xsl:text>Greek, Ancient (to 1453)</xsl:text></xsl:when>
+            <xsl:when test="$code='gre'"><xsl:text>Greek, Modern (1453- )</xsl:text></xsl:when>
+            <xsl:when test="$code='grn'"><xsl:text>Guarani</xsl:text></xsl:when>
+            <xsl:when test="$code='guj'"><xsl:text>Gujarati</xsl:text></xsl:when>
+            <xsl:when test="$code='gwi'"><xsl:text>Gwich'in</xsl:text></xsl:when>
+            <xsl:when test="$code='hai'"><xsl:text>Haida</xsl:text></xsl:when>
+            <xsl:when test="$code='hat'"><xsl:text>Haitian French Creole</xsl:text></xsl:when>
+            <xsl:when test="$code='hau'"><xsl:text>Hausa</xsl:text></xsl:when>
+            <xsl:when test="$code='haw'"><xsl:text>Hawaiian</xsl:text></xsl:when>
+            <xsl:when test="$code='heb'"><xsl:text>Hebrew</xsl:text></xsl:when>
+            <xsl:when test="$code='her'"><xsl:text>Herero</xsl:text></xsl:when>
+            <xsl:when test="$code='hil'"><xsl:text>Hiligaynon</xsl:text></xsl:when>
+            <xsl:when test="$code='hin'"><xsl:text>Hindi</xsl:text></xsl:when>
+            <xsl:when test="$code='hmo'"><xsl:text>Hiri Motu</xsl:text></xsl:when>
+            <xsl:when test="$code='hit'"><xsl:text>Hittite</xsl:text></xsl:when>
+            <xsl:when test="$code='hmn'"><xsl:text>Hmong</xsl:text></xsl:when>
+            <xsl:when test="$code='hun'"><xsl:text>Hungarian</xsl:text></xsl:when>
+            <xsl:when test="$code='hup'"><xsl:text>Hupa</xsl:text></xsl:when>
+            <xsl:when test="$code='iba'"><xsl:text>Iban</xsl:text></xsl:when>
+            <xsl:when test="$code='ice'"><xsl:text>Icelandic</xsl:text></xsl:when>
+            <xsl:when test="$code='ido'"><xsl:text>Ido</xsl:text></xsl:when>
+            <xsl:when test="$code='ibo'"><xsl:text>Igbo</xsl:text></xsl:when>
+            <xsl:when test="$code='ijo'"><xsl:text>Ijo</xsl:text></xsl:when>
+            <xsl:when test="$code='ilo'"><xsl:text>Iloko</xsl:text></xsl:when>
+            <xsl:when test="$code='smn'"><xsl:text>Inari Sami</xsl:text></xsl:when>
+            <xsl:when test="$code='inc'"><xsl:text>Indic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ine'"><xsl:text>Indo-European (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ind'"><xsl:text>Indonesian</xsl:text></xsl:when>
+            <xsl:when test="$code='inh'"><xsl:text>Ingush</xsl:text></xsl:when>
+            <xsl:when test="$code='ina'"><xsl:text>Interlingua (International Auxiliary Language Association)</xsl:text></xsl:when>
+            <xsl:when test="$code='ile'"><xsl:text>Interlingue</xsl:text></xsl:when>
+            <xsl:when test="$code='iku'"><xsl:text>Inuktitut</xsl:text></xsl:when>
+            <xsl:when test="$code='ipk'"><xsl:text>Inupiaq</xsl:text></xsl:when>
+            <xsl:when test="$code='ira'"><xsl:text>Iranian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='gle'"><xsl:text>Irish</xsl:text></xsl:when>
+            <xsl:when test="$code='mga'"><xsl:text>Irish, Middle (ca. 1100-1550)</xsl:text></xsl:when>
+            <xsl:when test="$code='sga'"><xsl:text>Irish, Old (to 1100)</xsl:text></xsl:when>
+            <xsl:when test="$code='iro'"><xsl:text>Iroquoian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ita'"><xsl:text>Italian</xsl:text></xsl:when>
+            <xsl:when test="$code='jpn'"><xsl:text>Japanese</xsl:text></xsl:when>
+            <xsl:when test="$code='jav'"><xsl:text>Javanese</xsl:text></xsl:when>
+            <xsl:when test="$code='jrb'"><xsl:text>Judeo-Arabic</xsl:text></xsl:when>
+            <xsl:when test="$code='jpr'"><xsl:text>Judeo-Persian</xsl:text></xsl:when>
+            <xsl:when test="$code='kbd'"><xsl:text>Kabardian</xsl:text></xsl:when>
+            <xsl:when test="$code='kab'"><xsl:text>Kabyle</xsl:text></xsl:when>
+            <xsl:when test="$code='kac'"><xsl:text>Kachin</xsl:text></xsl:when>
+            <xsl:when test="$code='kal'"><xsl:text>Kalâtdlisut</xsl:text></xsl:when>
+            <xsl:when test="$code='kam'"><xsl:text>Kamba</xsl:text></xsl:when>
+            <xsl:when test="$code='kan'"><xsl:text>Kannada</xsl:text></xsl:when>
+            <xsl:when test="$code='kau'"><xsl:text>Kanuri</xsl:text></xsl:when>
+            <xsl:when test="$code='krc'"><xsl:text>Karachay-Balkar</xsl:text></xsl:when>
+            <xsl:when test="$code='kaa'"><xsl:text>Kara-Kalpak</xsl:text></xsl:when>
+            <xsl:when test="$code='krl'"><xsl:text>Karelian</xsl:text></xsl:when>
+            <xsl:when test="$code='kar'"><xsl:text>Karen languages</xsl:text></xsl:when>
+            <xsl:when test="$code='kas'"><xsl:text>Kashmiri</xsl:text></xsl:when>
+            <xsl:when test="$code='csb'"><xsl:text>Kashubian</xsl:text></xsl:when>
+            <xsl:when test="$code='kaw'"><xsl:text>Kawi</xsl:text></xsl:when>
+            <xsl:when test="$code='kaz'"><xsl:text>Kazakh</xsl:text></xsl:when>
+            <xsl:when test="$code='kha'"><xsl:text>Khasi</xsl:text></xsl:when>
+            <xsl:when test="$code='khm'"><xsl:text>Khmer</xsl:text></xsl:when>
+            <xsl:when test="$code='khi'"><xsl:text>Khoisan (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='kho'"><xsl:text>Khotanese</xsl:text></xsl:when>
+            <xsl:when test="$code='kik'"><xsl:text>Kikuyu</xsl:text></xsl:when>
+            <xsl:when test="$code='kmb'"><xsl:text>Kimbundu</xsl:text></xsl:when>
+            <xsl:when test="$code='kin'"><xsl:text>Kinyarwanda</xsl:text></xsl:when>
+            <xsl:when test="$code='tlh'"><xsl:text>Klingon (Artificial language)</xsl:text></xsl:when>
+            <xsl:when test="$code='kom'"><xsl:text>Komi</xsl:text></xsl:when>
+            <xsl:when test="$code='kon'"><xsl:text>Kongo</xsl:text></xsl:when>
+            <xsl:when test="$code='kok'"><xsl:text>Konkani</xsl:text></xsl:when>
+            <xsl:when test="$code='kut'"><xsl:text>Kootenai</xsl:text></xsl:when>
+            <xsl:when test="$code='kor'"><xsl:text>Korean</xsl:text></xsl:when>
+            <xsl:when test="$code='kos'"><xsl:text>Kosraean</xsl:text></xsl:when>
+            <xsl:when test="$code='kpe'"><xsl:text>Kpelle</xsl:text></xsl:when>
+            <xsl:when test="$code='kro'"><xsl:text>Kru (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='kua'"><xsl:text>Kuanyama</xsl:text></xsl:when>
+            <xsl:when test="$code='kum'"><xsl:text>Kumyk</xsl:text></xsl:when>
+            <xsl:when test="$code='kur'"><xsl:text>Kurdish</xsl:text></xsl:when>
+            <xsl:when test="$code='kru'"><xsl:text>Kurukh</xsl:text></xsl:when>
+            <xsl:when test="$code='kir'"><xsl:text>Kyrgyz</xsl:text></xsl:when>
+            <xsl:when test="$code='lad'"><xsl:text>Ladino</xsl:text></xsl:when>
+            <xsl:when test="$code='lah'"><xsl:text>Lahndā</xsl:text></xsl:when>
+            <xsl:when test="$code='lam'"><xsl:text>Lamba (Zambia and Congo)</xsl:text></xsl:when>
+            <xsl:when test="$code='lao'"><xsl:text>Lao</xsl:text></xsl:when>
+            <xsl:when test="$code='lat'"><xsl:text>Latin</xsl:text></xsl:when>
+            <xsl:when test="$code='lav'"><xsl:text>Latvian</xsl:text></xsl:when>
+            <xsl:when test="$code='lez'"><xsl:text>Lezgian</xsl:text></xsl:when>
+            <xsl:when test="$code='lim'"><xsl:text>Limburgish</xsl:text></xsl:when>
+            <xsl:when test="$code='lin'"><xsl:text>Lingala</xsl:text></xsl:when>
+            <xsl:when test="$code='lit'"><xsl:text>Lithuanian</xsl:text></xsl:when>
+            <xsl:when test="$code='jbo'"><xsl:text>Lojban (Artificial language)</xsl:text></xsl:when>
+            <xsl:when test="$code='nds'"><xsl:text>Low German</xsl:text></xsl:when>
+            <xsl:when test="$code='dsb'"><xsl:text>Lower Sorbian</xsl:text></xsl:when>
+            <xsl:when test="$code='loz'"><xsl:text>Lozi</xsl:text></xsl:when>
+            <xsl:when test="$code='lub'"><xsl:text>Luba-Katanga</xsl:text></xsl:when>
+            <xsl:when test="$code='lua'"><xsl:text>Luba-Lulua</xsl:text></xsl:when>
+            <xsl:when test="$code='lui'"><xsl:text>Luiseño</xsl:text></xsl:when>
+            <xsl:when test="$code='smj'"><xsl:text>Lule Sami</xsl:text></xsl:when>
+            <xsl:when test="$code='lun'"><xsl:text>Lunda</xsl:text></xsl:when>
+            <xsl:when test="$code='luo'"><xsl:text>Luo (Kenya and Tanzania)</xsl:text></xsl:when>
+            <xsl:when test="$code='lus'"><xsl:text>Lushai</xsl:text></xsl:when>
+            <xsl:when test="$code='ltz'"><xsl:text>Luxembourgish</xsl:text></xsl:when>
+            <xsl:when test="$code='mac'"><xsl:text>Macedonian</xsl:text></xsl:when>
+            <xsl:when test="$code='mad'"><xsl:text>Madurese</xsl:text></xsl:when>
+            <xsl:when test="$code='mag'"><xsl:text>Magahi</xsl:text></xsl:when>
+            <xsl:when test="$code='mai'"><xsl:text>Maithili</xsl:text></xsl:when>
+            <xsl:when test="$code='mak'"><xsl:text>Makasar</xsl:text></xsl:when>
+            <xsl:when test="$code='mlg'"><xsl:text>Malagasy</xsl:text></xsl:when>
+            <xsl:when test="$code='may'"><xsl:text>Malay</xsl:text></xsl:when>
+            <xsl:when test="$code='mal'"><xsl:text>Malayalam</xsl:text></xsl:when>
+            <xsl:when test="$code='mlt'"><xsl:text>Maltese</xsl:text></xsl:when>
+            <xsl:when test="$code='mnc'"><xsl:text>Manchu</xsl:text></xsl:when>
+            <xsl:when test="$code='mdr'"><xsl:text>Mandar</xsl:text></xsl:when>
+            <xsl:when test="$code='man'"><xsl:text>Mandingo</xsl:text></xsl:when>
+            <xsl:when test="$code='mni'"><xsl:text>Manipuri</xsl:text></xsl:when>
+            <xsl:when test="$code='mno'"><xsl:text>Manobo languages</xsl:text></xsl:when>
+            <xsl:when test="$code='glv'"><xsl:text>Manx</xsl:text></xsl:when>
+            <xsl:when test="$code='mao'"><xsl:text>Maori</xsl:text></xsl:when>
+            <xsl:when test="$code='arn'"><xsl:text>Mapuche</xsl:text></xsl:when>
+            <xsl:when test="$code='mar'"><xsl:text>Marathi</xsl:text></xsl:when>
+            <xsl:when test="$code='chm'"><xsl:text>Mari</xsl:text></xsl:when>
+            <xsl:when test="$code='mah'"><xsl:text>Marshallese</xsl:text></xsl:when>
+            <xsl:when test="$code='mwr'"><xsl:text>Marwari</xsl:text></xsl:when>
+            <xsl:when test="$code='mas'"><xsl:text>Maasai</xsl:text></xsl:when>
+            <xsl:when test="$code='myn'"><xsl:text>Mayan languages</xsl:text></xsl:when>
+            <xsl:when test="$code='men'"><xsl:text>Mende</xsl:text></xsl:when>
+            <xsl:when test="$code='mic'"><xsl:text>Micmac</xsl:text></xsl:when>
+            <xsl:when test="$code='min'"><xsl:text>Minangkabau</xsl:text></xsl:when>
+            <xsl:when test="$code='mwl'"><xsl:text>Mirandese</xsl:text></xsl:when>
+            <xsl:when test="$code='mis'"><xsl:text>Miscellaneous languages</xsl:text></xsl:when>
+            <xsl:when test="$code='moh'"><xsl:text>Mohawk</xsl:text></xsl:when>
+            <xsl:when test="$code='mdf'"><xsl:text>Moksha</xsl:text></xsl:when>
+            <xsl:when test="$code='mkh'"><xsl:text>Mon-Khmer (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='lol'"><xsl:text>Mongo-Nkundu</xsl:text></xsl:when>
+            <xsl:when test="$code='mon'"><xsl:text>Mongolian</xsl:text></xsl:when>
+            <xsl:when test="$code='cnr'"><xsl:text>Montenegrin</xsl:text></xsl:when>
+            <xsl:when test="$code='mos'"><xsl:text>Mooré</xsl:text></xsl:when>
+            <xsl:when test="$code='mul'"><xsl:text>Multiple languages</xsl:text></xsl:when>
+            <xsl:when test="$code='mun'"><xsl:text>Munda (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='nah'"><xsl:text>Nahuatl</xsl:text></xsl:when>
+            <xsl:when test="$code='nau'"><xsl:text>Nauru</xsl:text></xsl:when>
+            <xsl:when test="$code='nav'"><xsl:text>Navajo</xsl:text></xsl:when>
+            <xsl:when test="$code='nbl'"><xsl:text>Ndebele (South Africa)</xsl:text></xsl:when>
+            <xsl:when test="$code='nde'"><xsl:text>Ndebele (Zimbabwe)</xsl:text></xsl:when>
+            <xsl:when test="$code='ndo'"><xsl:text>Ndonga</xsl:text></xsl:when>
+            <xsl:when test="$code='nap'"><xsl:text>Neapolitan Italian</xsl:text></xsl:when>
+            <xsl:when test="$code='nep'"><xsl:text>Nepali</xsl:text></xsl:when>
+            <xsl:when test="$code='new'"><xsl:text>Newari</xsl:text></xsl:when>
+            <xsl:when test="$code='nwc'"><xsl:text>Newari, Old</xsl:text></xsl:when>
+            <xsl:when test="$code='nia'"><xsl:text>Nias</xsl:text></xsl:when>
+            <xsl:when test="$code='nic'"><xsl:text>Niger-Kordofanian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='ssa'"><xsl:text>Nilo-Saharan (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='niu'"><xsl:text>Niuean</xsl:text></xsl:when>
+            <xsl:when test="$code='nqo'"><xsl:text>N'Ko</xsl:text></xsl:when>
+            <xsl:when test="$code='nog'"><xsl:text>Nogai</xsl:text></xsl:when>
+            <xsl:when test="$code='zxx'"><xsl:text>No linguistic content</xsl:text></xsl:when>
+            <xsl:when test="$code='nai'"><xsl:text>North American Indian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='frr'"><xsl:text>North Frisian</xsl:text></xsl:when>
+            <xsl:when test="$code='sme'"><xsl:text>Northern Sami</xsl:text></xsl:when>
+            <xsl:when test="$code='nso'"><xsl:text>Northern Sotho</xsl:text></xsl:when>
+            <xsl:when test="$code='nor'"><xsl:text>Norwegian</xsl:text></xsl:when>
+            <xsl:when test="$code='nob'"><xsl:text>Norwegian (Bokmål)</xsl:text></xsl:when>
+            <xsl:when test="$code='nno'"><xsl:text>Norwegian (Nynorsk)</xsl:text></xsl:when>
+            <xsl:when test="$code='nub'"><xsl:text>Nubian languages</xsl:text></xsl:when>
+            <xsl:when test="$code='nym'"><xsl:text>Nyamwezi</xsl:text></xsl:when>
+            <xsl:when test="$code='nya'"><xsl:text>Nyanja</xsl:text></xsl:when>
+            <xsl:when test="$code='nyn'"><xsl:text>Nyankole</xsl:text></xsl:when>
+            <xsl:when test="$code='nyo'"><xsl:text>Nyoro</xsl:text></xsl:when>
+            <xsl:when test="$code='nzi'"><xsl:text>Nzima</xsl:text></xsl:when>
+            <xsl:when test="$code='oci'"><xsl:text>Occitan (post-1500)</xsl:text></xsl:when>
+            <xsl:when test="$code='xal'"><xsl:text>Oirat</xsl:text></xsl:when>
+            <xsl:when test="$code='oji'"><xsl:text>Ojibwa</xsl:text></xsl:when>
+            <xsl:when test="$code='non'"><xsl:text>Old Norse</xsl:text></xsl:when>
+            <xsl:when test="$code='peo'"><xsl:text>Old Persian (ca. 600-400 B.C.)</xsl:text></xsl:when>
+            <xsl:when test="$code='ori'"><xsl:text>Oriya</xsl:text></xsl:when>
+            <xsl:when test="$code='orm'"><xsl:text>Oromo</xsl:text></xsl:when>
+            <xsl:when test="$code='osa'"><xsl:text>Osage</xsl:text></xsl:when>
+            <xsl:when test="$code='oss'"><xsl:text>Ossetic</xsl:text></xsl:when>
+            <xsl:when test="$code='oto'"><xsl:text>Otomian languages</xsl:text></xsl:when>
+            <xsl:when test="$code='pal'"><xsl:text>Pahlavi</xsl:text></xsl:when>
+            <xsl:when test="$code='pau'"><xsl:text>Palauan</xsl:text></xsl:when>
+            <xsl:when test="$code='pli'"><xsl:text>Pali</xsl:text></xsl:when>
+            <xsl:when test="$code='pam'"><xsl:text>Pampanga</xsl:text></xsl:when>
+            <xsl:when test="$code='pag'"><xsl:text>Pangasinan</xsl:text></xsl:when>
+            <xsl:when test="$code='pan'"><xsl:text>Panjabi</xsl:text></xsl:when>
+            <xsl:when test="$code='pap'"><xsl:text>Papiamento</xsl:text></xsl:when>
+            <xsl:when test="$code='paa'"><xsl:text>Papuan (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='per'"><xsl:text>Persian</xsl:text></xsl:when>
+            <xsl:when test="$code='phi'"><xsl:text>Philippine (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='phn'"><xsl:text>Phoenician</xsl:text></xsl:when>
+            <xsl:when test="$code='pon'"><xsl:text>Pohnpeian</xsl:text></xsl:when>
+            <xsl:when test="$code='pol'"><xsl:text>Polish</xsl:text></xsl:when>
+            <xsl:when test="$code='por'"><xsl:text>Portuguese</xsl:text></xsl:when>
+            <xsl:when test="$code='pra'"><xsl:text>Prakrit languages</xsl:text></xsl:when>
+            <xsl:when test="$code='pro'"><xsl:text>Provençal (to 1500)</xsl:text></xsl:when>
+            <xsl:when test="$code='pus'"><xsl:text>Pushto</xsl:text></xsl:when>
+            <xsl:when test="$code='que'"><xsl:text>Quechua</xsl:text></xsl:when>
+            <xsl:when test="$code='roh'"><xsl:text>Raeto-Romance</xsl:text></xsl:when>
+            <xsl:when test="$code='raj'"><xsl:text>Rajasthani</xsl:text></xsl:when>
+            <xsl:when test="$code='rap'"><xsl:text>Rapanui</xsl:text></xsl:when>
+            <xsl:when test="$code='rar'"><xsl:text>Rarotongan</xsl:text></xsl:when>
+            <xsl:when test="$code='roa'"><xsl:text>Romance (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='rom'"><xsl:text>Romani</xsl:text></xsl:when>
+            <xsl:when test="$code='rum'"><xsl:text>Romanian</xsl:text></xsl:when>
+            <xsl:when test="$code='run'"><xsl:text>Rundi</xsl:text></xsl:when>
+            <xsl:when test="$code='rus'"><xsl:text>Russian</xsl:text></xsl:when>
+            <xsl:when test="$code='sal'"><xsl:text>Salishan languages</xsl:text></xsl:when>
+            <xsl:when test="$code='sam'"><xsl:text>Samaritan Aramaic</xsl:text></xsl:when>
+            <xsl:when test="$code='smi'"><xsl:text>Sami</xsl:text></xsl:when>
+            <xsl:when test="$code='smo'"><xsl:text>Samoan</xsl:text></xsl:when>
+            <xsl:when test="$code='sad'"><xsl:text>Sandawe</xsl:text></xsl:when>
+            <xsl:when test="$code='sag'"><xsl:text>Sango (Ubangi Creole)</xsl:text></xsl:when>
+            <xsl:when test="$code='san'"><xsl:text>Sanskrit</xsl:text></xsl:when>
+            <xsl:when test="$code='sat'"><xsl:text>Santali</xsl:text></xsl:when>
+            <xsl:when test="$code='srd'"><xsl:text>Sardinian</xsl:text></xsl:when>
+            <xsl:when test="$code='sas'"><xsl:text>Sasak</xsl:text></xsl:when>
+            <xsl:when test="$code='sco'"><xsl:text>Scots</xsl:text></xsl:when>
+            <xsl:when test="$code='gla'"><xsl:text>Scottish Gaelic</xsl:text></xsl:when>
+            <xsl:when test="$code='sel'"><xsl:text>Selkup</xsl:text></xsl:when>
+            <xsl:when test="$code='sem'"><xsl:text>Semitic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='srp'"><xsl:text>Serbian</xsl:text></xsl:when>
+            <xsl:when test="$code='srr'"><xsl:text>Serer</xsl:text></xsl:when>
+            <xsl:when test="$code='shn'"><xsl:text>Shan</xsl:text></xsl:when>
+            <xsl:when test="$code='sna'"><xsl:text>Shona</xsl:text></xsl:when>
+            <xsl:when test="$code='iii'"><xsl:text>Sichuan Yi</xsl:text></xsl:when>
+            <xsl:when test="$code='scn'"><xsl:text>Sicilian Italian</xsl:text></xsl:when>
+            <xsl:when test="$code='sid'"><xsl:text>Sidamo</xsl:text></xsl:when>
+            <xsl:when test="$code='sgn'"><xsl:text>Sign languages</xsl:text></xsl:when>
+            <xsl:when test="$code='bla'"><xsl:text>Siksika</xsl:text></xsl:when>
+            <xsl:when test="$code='snd'"><xsl:text>Sindhi</xsl:text></xsl:when>
+            <xsl:when test="$code='sin'"><xsl:text>Sinhalese</xsl:text></xsl:when>
+            <xsl:when test="$code='sit'"><xsl:text>Sino-Tibetan (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='sio'"><xsl:text>Siouan (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='sms'"><xsl:text>Skolt Sami</xsl:text></xsl:when>
+            <xsl:when test="$code='den'"><xsl:text>Slavey</xsl:text></xsl:when>
+            <xsl:when test="$code='sla'"><xsl:text>Slavic (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='slo'"><xsl:text>Slovak</xsl:text></xsl:when>
+            <xsl:when test="$code='slv'"><xsl:text>Slovenian</xsl:text></xsl:when>
+            <xsl:when test="$code='sog'"><xsl:text>Sogdian</xsl:text></xsl:when>
+            <xsl:when test="$code='som'"><xsl:text>Somali</xsl:text></xsl:when>
+            <xsl:when test="$code='son'"><xsl:text>Songhai</xsl:text></xsl:when>
+            <xsl:when test="$code='snk'"><xsl:text>Soninke</xsl:text></xsl:when>
+            <xsl:when test="$code='wen'"><xsl:text>Sorbian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='sot'"><xsl:text>Sotho</xsl:text></xsl:when>
+            <xsl:when test="$code='sai'"><xsl:text>South American Indian (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='sma'"><xsl:text>Southern Sami</xsl:text></xsl:when>
+            <xsl:when test="$code='spa'"><xsl:text>Spanish</xsl:text></xsl:when>
+            <xsl:when test="$code='srn'"><xsl:text>Sranan</xsl:text></xsl:when>
+            <xsl:when test="$code='suk'"><xsl:text>Sukuma</xsl:text></xsl:when>
+            <xsl:when test="$code='sux'"><xsl:text>Sumerian</xsl:text></xsl:when>
+            <xsl:when test="$code='sun'"><xsl:text>Sundanese</xsl:text></xsl:when>
+            <xsl:when test="$code='sus'"><xsl:text>Susu</xsl:text></xsl:when>
+            <xsl:when test="$code='swa'"><xsl:text>Swahili</xsl:text></xsl:when>
+            <xsl:when test="$code='ssw'"><xsl:text>Swazi</xsl:text></xsl:when>
+            <xsl:when test="$code='swe'"><xsl:text>Swedish</xsl:text></xsl:when>
+            <xsl:when test="$code='gsw'"><xsl:text>Swiss German</xsl:text></xsl:when>
+            <xsl:when test="$code='syc'"><xsl:text>Syriac</xsl:text></xsl:when>
+            <xsl:when test="$code='syr'"><xsl:text>Syriac, Modern</xsl:text></xsl:when>
+            <xsl:when test="$code='tgl'"><xsl:text>Tagalog</xsl:text></xsl:when>
+            <xsl:when test="$code='tah'"><xsl:text>Tahitian</xsl:text></xsl:when>
+            <xsl:when test="$code='tai'"><xsl:text>Tai (Other)</xsl:text></xsl:when>
+            <xsl:when test="$code='tgk'"><xsl:text>Tajik</xsl:text></xsl:when>
+            <xsl:when test="$code='tmh'"><xsl:text>Tamashek</xsl:text></xsl:when>
+            <xsl:when test="$code='tam'"><xsl:text>Tamil</xsl:text></xsl:when>
+            <xsl:when test="$code='tat'"><xsl:text>Tatar</xsl:text></xsl:when>
+            <xsl:when test="$code='tel'"><xsl:text>Telugu</xsl:text></xsl:when>
+            <xsl:when test="$code='tem'"><xsl:text>Temne</xsl:text></xsl:when>
+            <xsl:when test="$code='ter'"><xsl:text>Terena</xsl:text></xsl:when>
+            <xsl:when test="$code='tet'"><xsl:text>Tetum</xsl:text></xsl:when>
+            <xsl:when test="$code='tha'"><xsl:text>Thai</xsl:text></xsl:when>
+            <xsl:when test="$code='tib'"><xsl:text>Tibetan</xsl:text></xsl:when>
+            <xsl:when test="$code='tig'"><xsl:text>Tigré</xsl:text></xsl:when>
+            <xsl:when test="$code='tir'"><xsl:text>Tigrinya</xsl:text></xsl:when>
+            <xsl:when test="$code='tiv'"><xsl:text>Tiv</xsl:text></xsl:when>
+            <xsl:when test="$code='tli'"><xsl:text>Tlingit</xsl:text></xsl:when>
+            <xsl:when test="$code='tpi'"><xsl:text>Tok Pisin</xsl:text></xsl:when>
+            <xsl:when test="$code='tkl'"><xsl:text>Tokelauan</xsl:text></xsl:when>
+            <xsl:when test="$code='tog'"><xsl:text>Tonga (Nyasa)</xsl:text></xsl:when>
+            <xsl:when test="$code='ton'"><xsl:text>Tongan</xsl:text></xsl:when>
+            <xsl:when test="$code='tsi'"><xsl:text>Tsimshian</xsl:text></xsl:when>
+            <xsl:when test="$code='tso'"><xsl:text>Tsonga</xsl:text></xsl:when>
+            <xsl:when test="$code='tsn'"><xsl:text>Tswana</xsl:text></xsl:when>
+            <xsl:when test="$code='tum'"><xsl:text>Tumbuka</xsl:text></xsl:when>
+            <xsl:when test="$code='tup'"><xsl:text>Tupi languages</xsl:text></xsl:when>
+            <xsl:when test="$code='tur'"><xsl:text>Turkish</xsl:text></xsl:when>
+            <xsl:when test="$code='ota'"><xsl:text>Turkish, Ottoman</xsl:text></xsl:when>
+            <xsl:when test="$code='tuk'"><xsl:text>Turkmen</xsl:text></xsl:when>
+            <xsl:when test="$code='tvl'"><xsl:text>Tuvaluan</xsl:text></xsl:when>
+            <xsl:when test="$code='tyv'"><xsl:text>Tuvinian</xsl:text></xsl:when>
+            <xsl:when test="$code='twi'"><xsl:text>Twi</xsl:text></xsl:when>
+            <xsl:when test="$code='udm'"><xsl:text>Udmurt</xsl:text></xsl:when>
+            <xsl:when test="$code='uga'"><xsl:text>Ugaritic</xsl:text></xsl:when>
+            <xsl:when test="$code='uig'"><xsl:text>Uighur</xsl:text></xsl:when>
+            <xsl:when test="$code='ukr'"><xsl:text>Ukrainian</xsl:text></xsl:when>
+            <xsl:when test="$code='umb'"><xsl:text>Umbundu</xsl:text></xsl:when>
+            <xsl:when test="$code='und'"><xsl:text>Undetermined</xsl:text></xsl:when>
+            <xsl:when test="$code='hsb'"><xsl:text>Upper Sorbian</xsl:text></xsl:when>
+            <xsl:when test="$code='urd'"><xsl:text>Urdu</xsl:text></xsl:when>
+            <xsl:when test="$code='uzb'"><xsl:text>Uzbek</xsl:text></xsl:when>
+            <xsl:when test="$code='vai'"><xsl:text>Vai</xsl:text></xsl:when>
+            <xsl:when test="$code='ven'"><xsl:text>Venda</xsl:text></xsl:when>
+            <xsl:when test="$code='vie'"><xsl:text>Vietnamese</xsl:text></xsl:when>
+            <xsl:when test="$code='vol'"><xsl:text>Volapük</xsl:text></xsl:when>
+            <xsl:when test="$code='vot'"><xsl:text>Votic</xsl:text></xsl:when>
+            <xsl:when test="$code='wak'"><xsl:text>Wakashan languages</xsl:text></xsl:when>
+            <xsl:when test="$code='wln'"><xsl:text>Walloon</xsl:text></xsl:when>
+            <xsl:when test="$code='war'"><xsl:text>Waray</xsl:text></xsl:when>
+            <xsl:when test="$code='was'"><xsl:text>Washoe</xsl:text></xsl:when>
+            <xsl:when test="$code='wel'"><xsl:text>Welsh</xsl:text></xsl:when>
+            <xsl:when test="$code='him'"><xsl:text>Western Pahari languages</xsl:text></xsl:when>
+            <xsl:when test="$code='wal'"><xsl:text>Wolayta</xsl:text></xsl:when>
+            <xsl:when test="$code='wol'"><xsl:text>Wolof</xsl:text></xsl:when>
+            <xsl:when test="$code='xho'"><xsl:text>Xhosa</xsl:text></xsl:when>
+            <xsl:when test="$code='sah'"><xsl:text>Yakut</xsl:text></xsl:when>
+            <xsl:when test="$code='yao'"><xsl:text>Yao (Africa)</xsl:text></xsl:when>
+            <xsl:when test="$code='yap'"><xsl:text>Yapese</xsl:text></xsl:when>
+            <xsl:when test="$code='yid'"><xsl:text>Yiddish</xsl:text></xsl:when>
+            <xsl:when test="$code='yor'"><xsl:text>Yoruba</xsl:text></xsl:when>
+            <xsl:when test="$code='ypk'"><xsl:text>Yupik languages</xsl:text></xsl:when>
+            <xsl:when test="$code='znd'"><xsl:text>Zande languages</xsl:text></xsl:when>
+            <xsl:when test="$code='zap'"><xsl:text>Zapotec</xsl:text></xsl:when>
+            <xsl:when test="$code='zza'"><xsl:text>Zaza</xsl:text></xsl:when>
+            <xsl:when test="$code='zen'"><xsl:text>Zenaga</xsl:text></xsl:when>
+            <xsl:when test="$code='zha'"><xsl:text>Zhuang</xsl:text></xsl:when>
+            <xsl:when test="$code='zul'"><xsl:text>Zulu</xsl:text></xsl:when>
+            <xsl:when test="$code='zun'"><xsl:text>Zuni</xsl:text></xsl:when>
+            <xsl:otherwise>
+                <xsl:text>Unknown language code</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+</xsl:stylesheet>
index da88114..a9b1812 100644 (file)
         </span>
     </xsl:if>
 
+    <xsl:call-template name="show-lang-041"/>
 
         <!--Series: Alternate Graphic Representation (MARC 880) -->
         <xsl:if test="$display880">
index d4c33f1..18dfb83 100644 (file)
        </span>
 </xsl:if> <!-- DisplayIconsXSLT -->
 
+    <xsl:call-template name="show-lang-041"/>
+
     <!-- Publisher Statement: Alternate Graphic Representation (MARC 880) -->
     <xsl:if test="$display880">
       <xsl:call-template name="m880Select">
index bb5a254..7374056 100644 (file)
@@ -5,6 +5,7 @@
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:str="http://exslt.org/strings"
   exclude-result-prefixes="marc">
+  <xsl:include href="MARC21Languages.xsl"/>
        <xsl:template name="datafield">
                <xsl:param name="tag"/>
                <xsl:param name="ind1"><xsl:text> </xsl:text></xsl:param>
               </span>
             </xsl:for-each>
           </span>
-        </xsl:if>
+      </xsl:if>
+    </xsl:template>
+
+    <xsl:template name="show-lang-041">
+      <xsl:if test="marc:datafield[@tag=041]">
+       <xsl:for-each select="marc:datafield[@tag=041]">
+         <span class="results_summary languages">
+           <xsl:call-template name="show-lang-node">
+             <xsl:with-param name="langNode" select="marc:subfield[@code='a']"/>
+             <xsl:with-param name="langLabel">Language: </xsl:with-param>
+           </xsl:call-template>
+           <xsl:call-template name="show-lang-node">
+             <xsl:with-param name="langNode" select="marc:subfield[@code='b']"/>
+             <xsl:with-param name="langLabel">Summary language: </xsl:with-param>
+           </xsl:call-template>
+           <xsl:call-template name="show-lang-node">
+             <xsl:with-param name="langNode" select="marc:subfield[@code='d']"/>
+             <xsl:with-param name="langLabel">Spoken language: </xsl:with-param>
+           </xsl:call-template>
+           <xsl:call-template name="show-lang-node">
+             <xsl:with-param name="langNode" select="marc:subfield[@code='h']"/>
+             <xsl:with-param name="langLabel">Original language: </xsl:with-param>
+           </xsl:call-template>
+           <xsl:call-template name="show-lang-node">
+             <xsl:with-param name="langNode" select="marc:subfield[@code='j']"/>
+             <xsl:with-param name="langLabel">Subtitle language: </xsl:with-param>
+           </xsl:call-template>
+         </span>
+       </xsl:for-each>
+      </xsl:if>
+    </xsl:template>
+
+    <xsl:template name="show-lang-node">
+      <xsl:param name="langNode"/>
+      <xsl:param name="langLabel"/>
+      <xsl:if test="$langNode">
+       <span class="language">
+         <span class="label"><xsl:value-of select="$langLabel"/></span>
+         <xsl:for-each select="$langNode">
+           <span>
+             <xsl:attribute name="class">lang_code-<xsl:value-of select="substring(translate(., ' .-;|#', '_'),1,3)"/></xsl:attribute>
+             <xsl:call-template name="languageCodeText">
+               <xsl:with-param name="code" select="substring(.,1,3)"/>
+             </xsl:call-template>
+             <xsl:if test="position() != last()">
+               <span class="sep"><xsl:text>, </xsl:text></span>
+             </xsl:if>
+           </span>
+         </xsl:for-each>
+         <span class="sep"><xsl:text>. </xsl:text></span>
+       </span>
+      </xsl:if>
     </xsl:template>
 
 </xsl:stylesheet>
diff --git a/misc/maintenance/generate_MARC21Languages.pl b/misc/maintenance/generate_MARC21Languages.pl
new file mode 100755 (executable)
index 0000000..2394ada
--- /dev/null
@@ -0,0 +1,142 @@
+#!/usr/bin/perl
+#
+# Copyright (C) 2018 Koha-Suomi Oy
+#
+# This file is part of Koha
+#
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
+#
+
+use Modern::Perl;
+use XML::Simple;
+use Pod::Usage;
+use Getopt::Long;
+use Carp;
+
+use open ':std', ':encoding(UTF-8)';
+
+sub usage {
+    pod2usage( -verbose => 2 );
+    exit;
+}
+
+# Options
+my $sourceurl = 'http://www.loc.gov/standards/codelists/languages.xml';
+my $help;
+my $outfile;
+my $tempfile = '/tmp/languages.xml';
+
+GetOptions(
+    'o|output:s' => \$outfile,
+    'url:s' => \$sourceurl,
+    'help|h'   => \$help,
+);
+
+usage() if $help;
+
+system( qq{/usr/bin/wget $sourceurl -O $tempfile } ) == 0
+    or croak "Can't wget $sourceurl ($?)";
+
+my $ref       = XMLin($tempfile);
+my $languages = $ref->{'languages'}->{'language'};
+
+# output log or STDOUT
+my $out_handle;
+if (defined $outfile) {
+    open( $out_handle, ">", $outfile ) || croak("Cannot open output file");
+} else {
+    open( $out_handle, ">&STDOUT" ) || croak("Couldn't duplicate STDOUT: $!");
+}
+generate_header($out_handle);
+generate_body($out_handle, $languages);
+generate_footer($out_handle);
+close $out_handle;
+
+
+sub generate_body {
+    my ( $file_handle, $language_list ) = @_;
+
+    foreach my $l ( @{$language_list} ) {
+        my $code = $l->{'code'};
+        my $name = (
+            ref( $l->{'name'} ) eq 'HASH'
+            ? $l->{'name'}{'content'}
+            : $l->{'name'}
+        );
+        next if ( ref($code) eq 'HASH' && $code->{'status'} eq 'obsolete' );
+        print {$file_handle} "            <xsl:when test=\"\$code='$code'\">";
+        print {$file_handle} "<xsl:text>$name</xsl:text>";
+        print {$file_handle} "</xsl:when>";
+        print {$file_handle} "\n";
+    }
+    return;
+}
+
+sub generate_header {
+    my ($file_handle) = @_;
+    print {$file_handle} <<"HEADER";
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<!-- This file generated by generate_MARC21Languages.pl -->
+    <xsl:template name="languageCodeText">
+        <xsl:param name="code"/>
+        <xsl:choose>
+HEADER
+    return;
+}
+
+sub generate_footer {
+    my ($file_handle) = @_;
+    print {$file_handle} <<"FOOTER";
+            <xsl:otherwise>
+                <xsl:text>Unknown language code</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+</xsl:stylesheet>
+FOOTER
+    return;
+}
+
+=head1 NAME
+
+generate_MARC21Languages.pl
+
+=head1 SYNOPSIS
+
+    generate_MARC21Languages.pl
+    generate_MARC21Languages.pl --url='http://www.loc.gov/standards/codelists/languages.xml'
+
+=head1 DESCRIPTION
+
+Create MARC21Languages.xsl from the loc.gov MARC21 Code List for Languages
+
+=over 8
+
+=item B<--help>
+
+Prints this help
+
+=item B<--url>
+
+Fetch the languages XML from this url. Defaults to http://www.loc.gov/standards/codelists/languages.xml
+
+=item B<--output>
+
+Writes the output XML into this file. Defaults to STDOUT.
+
+=back
+
+=cut