From 080368a07b7936c0e3505db252158d06968ee209 Mon Sep 17 00:00:00 2001
From: Pasi Kallinen <pasi.kallinen@joensuu.fi>
Date: Fri, 9 Mar 2018 11:05:52 +0200
Subject: [PATCH] Bug 20364: Show languages from MARC21 field 041 in intranet

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>
---
 .../intranet-tmpl/prog/en/xslt/MARC21Languages.xsl | 498 +++++++++++++++++++++
 .../prog/en/xslt/MARC21slim2intranetDetail.xsl     |   1 +
 .../prog/en/xslt/MARC21slim2intranetResults.xsl    |   2 +
 .../intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl |  52 +++
 misc/maintenance/generate_MARC21Languages.pl       | 117 +++++
 5 files changed, 670 insertions(+)
 create mode 100644 koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21Languages.xsl
 create mode 100755 misc/maintenance/generate_MARC21Languages.pl

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
index 0000000..a0889a4
--- /dev/null
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21Languages.xsl
@@ -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>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
index cf39ec4..b945a7d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
@@ -172,6 +172,7 @@
         </span>
     </xsl:if>
 
+    <xsl:call-template name="show-lang-041"/>
 
         <!--Series: Alternate Graphic Representation (MARC 880) -->
         <xsl:if test="$display880">
diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
index 3e508c0..5f75af0 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
@@ -824,6 +824,8 @@
 	</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">
diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
index 192107b..c550957 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
@@ -1,6 +1,7 @@
 <?xml version='1.0'?>
 <!DOCTYPE stylesheet [<!ENTITY nbsp "&#160;" >]>
 <xsl:stylesheet version="1.0" xmlns:marc="http://www.loc.gov/MARC21/slim" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 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>
@@ -298,6 +299,57 @@
         </span>
     </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="translate(., ' .-;|#', '_')"/></xsl:attribute>
+	      <xsl:call-template name="languageCodeText">
+		<xsl:with-param name="code" select="."/>
+	      </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>
 
 <!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.
diff --git a/misc/maintenance/generate_MARC21Languages.pl b/misc/maintenance/generate_MARC21Languages.pl
new file mode 100755
index 0000000..f9198d1
--- /dev/null
+++ b/misc/maintenance/generate_MARC21Languages.pl
@@ -0,0 +1,117 @@
+#!/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 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;
+
+# output log or STDOUT
+if (defined $outfile) {
+   open (OUT, ">$outfile") || die ("Cannot open output file");
+} else {
+   open(OUT, ">&STDOUT") || die ("Couldn't duplicate STDOUT: $!");
+}
+
+system( qq{/usr/bin/wget $sourceurl -O $tempfile } ) == 0 or die "Can't wget $sourceurl ($?)";
+
+my $ref = XMLin($tempfile);
+my $languages = $ref->{'languages'}->{'language'};
+
+print OUT <<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
+
+foreach my $l (@{$languages}) {
+    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 OUT "            <xsl:when test=\"\$code='".$code."'\">";
+    print OUT "<xsl:text>$name</xsl:text>";
+    print OUT "</xsl:when>";
+    print OUT "\n";
+}
+
+print OUT <<FOOTER;
+            <xsl:otherwise>
+                <xsl:text>Unknown language code</xsl:text>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+</xsl:stylesheet>
+FOOTER
+
+=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
-- 
2.1.4