? millennium-608338-2.patch
Index: millennium.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/millennium/Attic/millennium.admin.inc,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 millennium.admin.inc
--- millennium.admin.inc	30 Oct 2009 21:47:16 -0000	1.1.2.5
+++ millennium.admin.inc	1 Dec 2009 16:07:31 -0000
@@ -240,6 +240,15 @@ function millennium_admin_settings() {
     '#description' => t('If you want to browse your imported records via taxonomy, you must assign a mapping here.') .'<p>'.t('NOTE: CHANGING these values after import does not change already-imported records! You must go back and re-import records.'),
   );
 
+  $form['vids']['millennium_taxonomy_language'] = array(
+    '#type' => 'radios',
+    '#title' => t('Language used to create taxonomy terms'),
+    '#options' => array('english' => t("English (recommended)"), 'site_default' => t("Site default language, currently ").language_default('name') ),
+    '#default_value' => variable_get('millennium_taxonomy_language', 'english'),
+    '#description' => t('Choose a language other than English only if your site is in a single
+language. To use multiple languages with i18n taxonomy translation
+enabled, choose English here.'));
+
   $vocs = array(
     'subject_kw' => t('Subject:main and general subdivision'),
     'subject_time' => t('Subject:chronological'),
Index: millennium.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/millennium/millennium.module,v
retrieving revision 1.13.2.33.2.2.2.40
diff -u -p -r1.13.2.33.2.2.2.40 millennium.module
--- millennium.module	1 Dec 2009 00:14:10 -0000	1.13.2.33.2.2.2.40
+++ millennium.module	1 Dec 2009 16:07:31 -0000
@@ -60,6 +60,8 @@ define('MILLENNIUM_PREG_CLASS_SEARCH_EXC
  */
 function millennium_init() {
   global $_millennium_field_labels;
+  global $_key_to_name;
+
   $_millennium_field_labels = array(
     'title' => t('Title'),
     'type' => t('Item type'),
@@ -85,8 +87,537 @@ function millennium_init() {
     'series' => t('Series'),
     'other_number' => t('Other number'),
   );
+
+  $_key_to_name = array(
+    'lang' => array(
+      'aar' => t('Afar', null, 'en'),
+      'abk' => t('Abkhaz', null, 'en'),
+      'ace' => t('Achinese', null, 'en'),
+      'ach' => t('Acoli', null, 'en'),
+      'ada' => t('Adangme', null, 'en'),
+      'ady' => t('Adygei', null, 'en'),
+      'afa' => t('Afroasiatic', null, 'en'),
+      'afh' => t('Afrihili', null, 'en'),
+      'afr' => t('Afrikaans', null, 'en'),
+      'ain' => t('Ainu', null, 'en'),
+      'aka' => t('Akan', null, 'en'),
+      'akk' => t('Akkadian', null, 'en'),
+      'alb' => t('Albanian', null, 'en'),
+      'ale' => t('Aleut', null, 'en'),
+      'alg' => t('Algonquian', null, 'en'),
+      'alt' => t('Altai', null, 'en'),
+      'amh' => t('Amharic', null, 'en'),
+      'ang' => t('English, Old', null, 'en'),
+      'anp' => t('Angika', null, 'en'),
+      'apa' => t('Apache languages', null, 'en'),
+      'ara' => t('Arabic', null, 'en'),
+      'arc' => t('Aramaic', null, 'en'),
+      'arg' => t('Aragonese Spanish', null, 'en'),
+      'arm' => t('Armenian', null, 'en'),
+      'arn' => t('Mapuche', null, 'en'),
+      'arp' => t('Arapaho', null, 'en'),
+      'art' => t('Artificial', null, 'en'),
+      'arw' => t('Arawak', null, 'en'),
+      'asm' => t('Assamese', null, 'en'),
+      'ast' => t('Bable', null, 'en'),
+      'ath' => t('Athapascan', null, 'en'),
+      'aus' => t('Australian languages', null, 'en'),
+      'ava' => t('Avaric', null, 'en'),
+      'ave' => t('Avestan', null, 'en'),
+      'awa' => t('Awadhi', null, 'en'),
+      'aym' => t('Aymara', null, 'en'),
+      'aze' => t('Azerbaijani', null, 'en'),
+      'bad' => t('Banda languages', null, 'en'),
+      'bai' => t('Bamileke languages', null, 'en'),
+      'bak' => t('Bashkir', null, 'en'),
+      'bal' => t('Baluchi', null, 'en'),
+      'bam' => t('Bambara', null, 'en'),
+      'ban' => t('Balinese', null, 'en'),
+      'baq' => t('Basque', null, 'en'),
+      'bas' => t('Basa', null, 'en'),
+      'bat' => t('Baltic', null, 'en'),
+      'bej' => t('Beja', null, 'en'),
+      'bel' => t('Belarusian', null, 'en'),
+      'bem' => t('Bemba', null, 'en'),
+      'ben' => t('Bengali', null, 'en'),
+      'ber' => t('Berber', null, 'en'),
+      'bho' => t('Bhojpuri', null, 'en'),
+      'bih' => t('Bihari', null, 'en'),
+      'bik' => t('Bikol', null, 'en'),
+      'bin' => t('Edo', null, 'en'),
+      'bis' => t('Bislama', null, 'en'),
+      'bla' => t('Siksika', null, 'en'),
+      'bnt' => t('Bantu', null, 'en'),
+      'bos' => t('Bosnian', null, 'en'),
+      'bra' => t('Braj', null, 'en'),
+      'bre' => t('Breton', null, 'en'),
+      'btk' => t('Batak', null, 'en'),
+      'bua' => t('Buriat', null, 'en'),
+      'bug' => t('Bugis', null, 'en'),
+      'bul' => t('Bulgarian', null, 'en'),
+      'bur' => t('Burmese', null, 'en'),
+      'byn' => t('Bilin', null, 'en'),
+      'cad' => t('Caddo', null, 'en'),
+      'cai' => t('Central American Indian', null, 'en'),
+      'car' => t('Carib', null, 'en'),
+      'cat' => t('Catalan', null, 'en'),
+      'cau' => t('Caucasian', null, 'en'),
+      'ceb' => t('Cebuano', null, 'en'),
+      'cel' => t('Celtic', null, 'en'),
+      'cha' => t('Chamorro', null, 'en'),
+      'chb' => t('Chibcha', null, 'en'),
+      'che' => t('Chechen', null, 'en'),
+      'chg' => t('Chagatai', null, 'en'),
+      'chi' => t('Chinese', null, 'en'),
+      'chk' => t('Chuukese', null, 'en'),
+      'chm' => t('Mari', null, 'en'),
+      'chn' => t('Chinook jargon', null, 'en'),
+      'cho' => t('Choctaw', null, 'en'),
+      'chp' => t('Chipewyan', null, 'en'),
+      'chr' => t('Cherokee', null, 'en'),
+      'chu' => t('Church Slavic', null, 'en'),
+      'chv' => t('Chuvash', null, 'en'),
+      'chy' => t('Cheyenne', null, 'en'),
+      'cmc' => t('Chamic languages', null, 'en'),
+      'cop' => t('Coptic', null, 'en'),
+      'cor' => t('Cornish', null, 'en'),
+      'cos' => t('Corsican', null, 'en'),
+      'cpe' => t('Creoles and Pidgins, English-based', null, 'en'),
+      'cpf' => t('Creoles and Pidgins, French-based', null, 'en'),
+      'cpp' => t('Creoles and Pidgins, Portuguese-based', null, 'en'),
+      'cre' => t('Cree', null, 'en'),
+      'crh' => t('Crimean Tatar', null, 'en'),
+      'crp' => t('Creoles and Pidgins', null, 'en'),
+      'csb' => t('Kashubian', null, 'en'),
+      'cus' => t('Cushitic', null, 'en'),
+      'cze' => t('Czech', null, 'en'),
+      'dak' => t('Dakota', null, 'en'),
+      'dan' => t('Danish', null, 'en'),
+      'dar' => t('Dargwa', null, 'en'),
+      'day' => t('Dayak', null, 'en'),
+      'del' => t('Delaware', null, 'en'),
+      'den' => t('Slave', null, 'en'),
+      'dgr' => t('Dogrib', null, 'en'),
+      'din' => t('Dinka', null, 'en'),
+      'div' => t('Divehi', null, 'en'),
+      'doi' => t('Dogri', null, 'en'),
+      'dra' => t('Dravidian', null, 'en'),
+      'dsb' => t('Lower Sorbian', null, 'en'),
+      'dua' => t('Duala', null, 'en'),
+      'dum' => t('Dutch, Middle', null, 'en'),
+      'dut' => t('Dutch', null, 'en'),
+      'dyu' => t('Dyula', null, 'en'),
+      'dzo' => t('Dzongkha', null, 'en'),
+      'efi' => t('Efik', null, 'en'),
+      'egy' => t('Egyptian', null, 'en'),
+      'eka' => t('Ekajuk', null, 'en'),
+      'elx' => t('Elamite', null, 'en'),
+      'eng' => t('English', null, 'en'),
+      'enm' => t('English, Middle', null, 'en'),
+      'epo' => t('Esperanto', null, 'en'),
+      'est' => t('Estonian', null, 'en'),
+      'ewe' => t('Ewe', null, 'en'),
+      'ewo' => t('Ewondo', null, 'en'),
+      'fan' => t('Fang', null, 'en'),
+      'fao' => t('Faroese', null, 'en'),
+      'fat' => t('Fanti', null, 'en'),
+      'fij' => t('Fijian', null, 'en'),
+      'fil' => t('Filipino', null, 'en'),
+      'fin' => t('Finnish', null, 'en'),
+      'fiu' => t('Finno-Ugrian', null, 'en'),
+      'fon' => t('Fon', null, 'en'),
+      'fre' => t('French', null, 'en'),
+      'frm' => t('French, Middle', null, 'en'),
+      'fro' => t('French, Old', null, 'en'),
+      'frr' => t('North Frisian', null, 'en'),
+      'frs' => t('East Frisian', null, 'en'),
+      'fry' => t('Frisian', null, 'en'),
+      'ful' => t('Fula', null, 'en'),
+      'fur' => t('Friulian', null, 'en'),
+      'gaa' => t('GÃ£', null, 'en'),
+      'gay' => t('Gayo', null, 'en'),
+      'gba' => t('Gbaya', null, 'en'),
+      'gem' => t('Germanic', null, 'en'),
+      'geo' => t('Georgian', null, 'en'),
+      'ger' => t('German', null, 'en'),
+      'gez' => t('Ethiopic', null, 'en'),
+      'gil' => t('Gilbertese', null, 'en'),
+      'gla' => t('Scottish Gaelic', null, 'en'),
+      'gle' => t('Irish', null, 'en'),
+      'glg' => t('Galician', null, 'en'),
+      'glv' => t('Manx', null, 'en'),
+      'gmh' => t('German, Middle High', null, 'en'),
+      'goh' => t('German, Old High', null, 'en'),
+      'gon' => t('Gondi', null, 'en'),
+      'gor' => t('Gorontalo', null, 'en'),
+      'got' => t('Gothic', null, 'en'),
+      'grb' => t('Grebo', null, 'en'),
+      'grc' => t('Greek, Ancient', null, 'en'),
+      'gre' => t('Greek, Modern', null, 'en'),
+      'grn' => t('Guarani', null, 'en'),
+      'gsw' => t('Swiss German', null, 'en'),
+      'guj' => t('Gujarati', null, 'en'),
+      'gwi' => t('Gwich\'in', null, 'en'),
+      'hai' => t('Haida', null, 'en'),
+      'hat' => t('Haitian French Creole', null, 'en'),
+      'hau' => t('Hausa', null, 'en'),
+      'haw' => t('Hawaiian', null, 'en'),
+      'heb' => t('Hebrew', null, 'en'),
+      'her' => t('Herero', null, 'en'),
+      'hil' => t('Hiligaynon', null, 'en'),
+      'him' => t('Himachali', null, 'en'),
+      'hin' => t('Hindi', null, 'en'),
+      'hit' => t('Hittite', null, 'en'),
+      'hmn' => t('Hmong', null, 'en'),
+      'hmo' => t('Hiri Motu', null, 'en'),
+      'hsb' => t('Upper Sorbian', null, 'en'),
+      'hun' => t('Hungarian', null, 'en'),
+      'hup' => t('Hupa', null, 'en'),
+      'iba' => t('Iban', null, 'en'),
+      'ibo' => t('Igbo', null, 'en'),
+      'ice' => t('Icelandic', null, 'en'),
+      'ido' => t('Ido', null, 'en'),
+      'iii' => t('Sichuan Yi', null, 'en'),
+      'ijo' => t('Ijo', null, 'en'),
+      'iku' => t('Inuktitut', null, 'en'),
+      'ile' => t('Interlingue', null, 'en'),
+      'ilo' => t('Iloko', null, 'en'),
+      'ina' => t('Interlingua', null, 'en'),
+      'inc' => t('Indic', null, 'en'),
+      'ind' => t('Indonesian', null, 'en'),
+      'ine' => t('Indo-European', null, 'en'),
+      'inh' => t('Ingush', null, 'en'),
+      'ipk' => t('Inupiaq', null, 'en'),
+      'ira' => t('Iranian', null, 'en'),
+      'iro' => t('Iroquoian', null, 'en'),
+      'ita' => t('Italian', null, 'en'),
+      'jav' => t('Javanese', null, 'en'),
+      'jbo' => t('Lojban', null, 'en'),
+      'jpn' => t('Japanese', null, 'en'),
+      'jpr' => t('Judeo-Persian', null, 'en'),
+      'jrb' => t('Judeo-Arabic', null, 'en'),
+      'kaa' => t('Kara-Kalpak', null, 'en'),
+      'kab' => t('Kabyle', null, 'en'),
+      'kac' => t('Kachin', null, 'en'),
+      'kal' => t('KalÃ¢tdlisut', null, 'en'),
+      'kam' => t('Kamba', null, 'en'),
+      'kan' => t('Kannada', null, 'en'),
+      'kar' => t('Karen languages', null, 'en'),
+      'kas' => t('Kashmiri', null, 'en'),
+      'kau' => t('Kanuri', null, 'en'),
+      'kaw' => t('Kawi', null, 'en'),
+      'kaz' => t('Kazakh', null, 'en'),
+      'kbd' => t('Kabardian', null, 'en'),
+      'kha' => t('Khasi', null, 'en'),
+      'khi' => t('Khoisan', null, 'en'),
+      'khm' => t('Khmer', null, 'en'),
+      'kho' => t('Khotanese', null, 'en'),
+      'kik' => t('Kikuyu', null, 'en'),
+      'kin' => t('Kinyarwanda', null, 'en'),
+      'kir' => t('Kyrgyz', null, 'en'),
+      'kmb' => t('Kimbundu', null, 'en'),
+      'kok' => t('Konkani', null, 'en'),
+      'kom' => t('Komi', null, 'en'),
+      'kon' => t('Kongo', null, 'en'),
+      'kor' => t('Korean', null, 'en'),
+      'kos' => t('Kusaie', null, 'en'),
+      'kpe' => t('Kpelle', null, 'en'),
+      'krc' => t('Karachay-Balkar', null, 'en'),
+      'krl' => t('Karelian', null, 'en'),
+      'kro' => t('Kru', null, 'en'),
+      'kru' => t('Kurukh', null, 'en'),
+      'kua' => t('Kuanyama', null, 'en'),
+      'kum' => t('Kumyk', null, 'en'),
+      'kur' => t('Kurdish', null, 'en'),
+      'kut' => t('Kootenai', null, 'en'),
+      'lad' => t('Ladino', null, 'en'),
+      'lah' => t('Lahnd?', null, 'en'),
+      'lam' => t('Lamba', null, 'en'),
+      'lao' => t('Lao', null, 'en'),
+      'lat' => t('Latin', null, 'en'),
+      'lav' => t('Latvian', null, 'en'),
+      'lez' => t('Lezgian', null, 'en'),
+      'lim' => t('Limburgish', null, 'en'),
+      'lin' => t('Lingala', null, 'en'),
+      'lit' => t('Lithuanian', null, 'en'),
+      'lol' => t('Mongo-Nkundu', null, 'en'),
+      'loz' => t('Lozi', null, 'en'),
+      'ltz' => t('Luxembourgish', null, 'en'),
+      'lua' => t('Luba-Lulua', null, 'en'),
+      'lub' => t('Luba-Katanga', null, 'en'),
+      'lug' => t('Ganda', null, 'en'),
+      'lui' => t('LuiseÃ±o', null, 'en'),
+      'lun' => t('Lunda', null, 'en'),
+      'luo' => t('Luo', null, 'en'),
+      'lus' => t('Lushai', null, 'en'),
+      'mac' => t('Macedonian', null, 'en'),
+      'mad' => t('Madurese', null, 'en'),
+      'mag' => t('Magahi', null, 'en'),
+      'mah' => t('Marshallese', null, 'en'),
+      'mai' => t('Maithili', null, 'en'),
+      'mak' => t('Makasar', null, 'en'),
+      'mal' => t('Malayalam', null, 'en'),
+      'man' => t('Mandingo', null, 'en'),
+      'mao' => t('Maori', null, 'en'),
+      'map' => t('Austronesian', null, 'en'),
+      'mar' => t('Marathi', null, 'en'),
+      'mas' => t('Masai', null, 'en'),
+      'may' => t('Malay', null, 'en'),
+      'mdf' => t('Moksha', null, 'en'),
+      'mdr' => t('Mandar', null, 'en'),
+      'men' => t('Mende', null, 'en'),
+      'mga' => t('Irish, Middle', null, 'en'),
+      'mic' => t('Micmac', null, 'en'),
+      'min' => t('Minangkabau', null, 'en'),
+      'mis' => t('Miscellaneous languages', null, 'en'),
+      'mkh' => t('Mon-Khmer', null, 'en'),
+      'mlg' => t('Malagasy', null, 'en'),
+      'mlt' => t('Maltese', null, 'en'),
+      'mnc' => t('Manchu', null, 'en'),
+      'mni' => t('Manipuri', null, 'en'),
+      'mno' => t('Manobo languages', null, 'en'),
+      'moh' => t('Mohawk', null, 'en'),
+      // 'mol' => t('Moldavian', null, 'en'),  #Removed as per http://catalogablog.blogspot.com/2009/01/changes-to-marc-code-list-for-languages.html (see 'rum', null, 'en')
+      'mon' => t('Mongolian', null, 'en'),
+      'mos' => t('MoorÃ©', null, 'en'),
+      'mul' => t('Multiple languages', null, 'en'),
+      'mun' => t('Munda', null, 'en'),
+      'mus' => t('Creek', null, 'en'),
+      'mwl' => t('Mirandese', null, 'en'),
+      'mwr' => t('Marwari', null, 'en'),
+      'myn' => t('Mayan languages', null, 'en'),
+      'myv' => t('Erzya', null, 'en'),
+      'nah' => t('Nahuatl', null, 'en'),
+      'nai' => t('North American Indian', null, 'en'),
+      'nap' => t('Neapolitan Italian', null, 'en'),
+      'nau' => t('Nauru', null, 'en'),
+      'nav' => t('Navajo', null, 'en'),
+      'nbl' => t('Ndebele', null, 'en'),
+      'nde' => t('Ndebele', null, 'en'),
+      'ndo' => t('Ndonga', null, 'en'),
+      'nds' => t('Low German', null, 'en'),
+      'nep' => t('Nepali', null, 'en'),
+      'new' => t('Newari', null, 'en'),
+      'nia' => t('Nias', null, 'en'),
+      'nic' => t('Niger-Kordofanian', null, 'en'),
+      'niu' => t('Niuean', null, 'en'),
+      'nno' => t('Norwegian', null, 'en'),
+      'nob' => t('Norwegian', null, 'en'),
+      'nog' => t('Nogai', null, 'en'),
+      'non' => t('Old Norse', null, 'en'),
+      'nor' => t('Norwegian', null, 'en'),
+      'nqo' => t('N\'Ko', null, 'en'),
+      'nso' => t('Northern Sotho', null, 'en'),
+      'nub' => t('Nubian languages', null, 'en'),
+      'nwc' => t('Newari, Old', null, 'en'),
+      'nya' => t('Nyanja', null, 'en'),
+      'nym' => t('Nyamwezi', null, 'en'),
+      'nyn' => t('Nyankole', null, 'en'),
+      'nyo' => t('Nyoro', null, 'en'),
+      'nzi' => t('Nzima', null, 'en'),
+      'oci' => t('Occitan', null, 'en'),
+      'oji' => t('Ojibwa', null, 'en'),
+      'ori' => t('Oriya', null, 'en'),
+      'orm' => t('Oromo', null, 'en'),
+      'osa' => t('Osage', null, 'en'),
+      'oss' => t('Ossetic', null, 'en'),
+      'ota' => t('Turkish, Ottoman', null, 'en'),
+      'oto' => t('Otomian languages', null, 'en'),
+      'paa' => t('Papuan', null, 'en'),
+      'pag' => t('Pangasinan', null, 'en'),
+      'pal' => t('Pahlavi', null, 'en'),
+      'pam' => t('Pampanga', null, 'en'),
+      'pan' => t('Panjabi', null, 'en'),
+      'pap' => t('Papiamento', null, 'en'),
+      'pau' => t('Palauan', null, 'en'),
+      'peo' => t('Old Persian', null, 'en'),
+      'per' => t('Persian', null, 'en'),
+      'phi' => t('Philippine', null, 'en'),
+      'phn' => t('Phoenician', null, 'en'),
+      'pli' => t('Pali', null, 'en'),
+      'pol' => t('Polish', null, 'en'),
+      'pon' => t('Ponape', null, 'en'),
+      'por' => t('Portuguese', null, 'en'),
+      'pra' => t('Prakrit languages', null, 'en'),
+      'pro' => t('ProvenÃ§al', null, 'en'),
+      'pus' => t('Pushto', null, 'en'),
+      'que' => t('Quechua', null, 'en'),
+      'raj' => t('Rajasthani', null, 'en'),
+      'rap' => t('Rapanui', null, 'en'),
+      'rar' => t('Rarotongan', null, 'en'),
+      'roa' => t('Romance', null, 'en'),
+      'roh' => t('Raeto-Romance', null, 'en'),
+      'rom' => t('Romani', null, 'en'),
+      'rum' => t('Romanian', null, 'en'),
+      'run' => t('Rundi', null, 'en'),
+      'rup' => t('Aromanian', null, 'en'),
+      'rus' => t('Russian', null, 'en'),
+      'sad' => t('Sandawe', null, 'en'),
+      'sag' => t('Sango', null, 'en'),
+      'sah' => t('Yakut', null, 'en'),
+      'sai' => t('South American Indian', null, 'en'),
+      'sal' => t('Salishan languages', null, 'en'),
+      'sam' => t('Samaritan Aramaic', null, 'en'),
+      'san' => t('Sanskrit', null, 'en'),
+      'sas' => t('Sasak', null, 'en'),
+      'sat' => t('Santali', null, 'en'),
+      'scc' => t('Serbian', null, 'en'),
+      'scn' => t('Sicilian Italian', null, 'en'),
+      'sco' => t('Scots', null, 'en'),
+      'scr' => t('Croatian', null, 'en'),
+      'sel' => t('Selkup', null, 'en'),
+      'sem' => t('Semitic', null, 'en'),
+      'sga' => t('Irish, Old', null, 'en'),
+      'sgn' => t('Sign languages', null, 'en'),
+      'shn' => t('Shan', null, 'en'),
+      'sid' => t('Sidamo', null, 'en'),
+      'sin' => t('Sinhalese', null, 'en'),
+      'sio' => t('Siouan', null, 'en'),
+      'sit' => t('Sino-Tibetan', null, 'en'),
+      'sla' => t('Slavic', null, 'en'),
+      'slo' => t('Slovak', null, 'en'),
+      'slv' => t('Slovenian', null, 'en'),
+      'sma' => t('Southern Sami', null, 'en'),
+      'sme' => t('Northern Sami', null, 'en'),
+      'smi' => t('Sami', null, 'en'),
+      'smj' => t('Lule Sami', null, 'en'),
+      'smn' => t('Inari Sami', null, 'en'),
+      'smo' => t('Samoan', null, 'en'),
+      'sms' => t('Skolt Sami', null, 'en'),
+      'sna' => t('Shona', null, 'en'),
+      'snd' => t('Sindhi', null, 'en'),
+      'snk' => t('Soninke', null, 'en'),
+      'sog' => t('Sogdian', null, 'en'),
+      'som' => t('Somali', null, 'en'),
+      'son' => t('Songhai', null, 'en'),
+      'sot' => t('Sotho', null, 'en'),
+      'spa' => t('Spanish', null, 'en'),
+      'srd' => t('Sardinian', null, 'en'),
+      'srn' => t('Sranan', null, 'en'),
+      'srr' => t('Serer', null, 'en'),
+      'ssa' => t('Nilo-Saharan', null, 'en'),
+      'ssw' => t('Swazi', null, 'en'),
+      'suk' => t('Sukuma', null, 'en'),
+      'sun' => t('Sundanese', null, 'en'),
+      'sus' => t('Susu', null, 'en'),
+      'sux' => t('Sumerian', null, 'en'),
+      'swa' => t('Swahili', null, 'en'),
+      'swe' => t('Swedish', null, 'en'),
+      'syc' => t('Syriac', null, 'en'),
+      'syr' => t('Syriac, Modern', null, 'en'),
+      'tah' => t('Tahitian', null, 'en'),
+      'tai' => t('Tai', null, 'en'),
+      'tam' => t('Tamil', null, 'en'),
+      'tat' => t('Tatar', null, 'en'),
+      'tel' => t('Telugu', null, 'en'),
+      'tem' => t('Temne', null, 'en'),
+      'ter' => t('Terena', null, 'en'),
+      'tet' => t('Tetum', null, 'en'),
+      'tgk' => t('Tajik', null, 'en'),
+      'tgl' => t('Tagalog', null, 'en'),
+      'tha' => t('Thai', null, 'en'),
+      'tib' => t('Tibetan', null, 'en'),
+      'tig' => t('TigrÃ©', null, 'en'),
+      'tir' => t('Tigrinya', null, 'en'),
+      'tiv' => t('Tiv', null, 'en'),
+      'tkl' => t('Tokelauan', null, 'en'),
+      'tlh' => t('Klingon', null, 'en'),
+      'tli' => t('Tlingit', null, 'en'),
+      'tmh' => t('Tamashek', null, 'en'),
+      'tog' => t('Tonga', null, 'en'),
+      'ton' => t('Tongan', null, 'en'),
+      'tpi' => t('Tok Pisin', null, 'en'),
+      'tsi' => t('Tsimshian', null, 'en'),
+      'tsn' => t('Tswana', null, 'en'),
+      'tso' => t('Tsonga', null, 'en'),
+      'tuk' => t('Turkmen', null, 'en'),
+      'tum' => t('Tumbuka', null, 'en'),
+      'tup' => t('Tupi languages', null, 'en'),
+      'tur' => t('Turkish', null, 'en'),
+      'tut' => t('Altaic', null, 'en'),
+      'tvl' => t('Tuvaluan', null, 'en'),
+      'twi' => t('Twi', null, 'en'),
+      'tyv' => t('Tuvinian', null, 'en'),
+      'udm' => t('Udmurt', null, 'en'),
+      'uga' => t('Ugaritic', null, 'en'),
+      'uig' => t('Uighur', null, 'en'),
+      'ukr' => t('Ukrainian', null, 'en'),
+      'umb' => t('Umbundu', null, 'en'),
+      'und' => t('Undetermined', null, 'en'),
+      'urd' => t('Urdu', null, 'en'),
+      'uzb' => t('Uzbek', null, 'en'),
+      'vai' => t('Vai', null, 'en'),
+      'ven' => t('Venda', null, 'en'),
+      'vie' => t('Vietnamese', null, 'en'),
+      'vol' => t('VolapÃ¼k', null, 'en'),
+      'vot' => t('Votic', null, 'en'),
+      'wak' => t('Wakashan languages', null, 'en'),
+      'wal' => t('Wolayta', null, 'en'),
+      'war' => t('Waray', null, 'en'),
+      'was' => t('Washo', null, 'en'),
+      'wel' => t('Welsh', null, 'en'),
+      'wen' => t('Sorbian', null, 'en'),
+      'wln' => t('Walloon', null, 'en'),
+      'wol' => t('Wolof', null, 'en'),
+      'xal' => t('Oirat', null, 'en'),
+      'xho' => t('Xhosa', null, 'en'),
+      'yao' => t('Yao', null, 'en'),
+      'yap' => t('Yapese', null, 'en'),
+      'yid' => t('Yiddish', null, 'en'),
+      'yor' => t('Yoruba', null, 'en'),
+      'ypk' => t('Yupik languages', null, 'en'),
+      'zap' => t('Zapotec', null, 'en'),
+      'zbl' => t('Blissymbolics', null, 'en'),
+      'zen' => t('Zenaga', null, 'en'),
+      'zha' => t('Zhuang', null, 'en'),
+      'znd' => t('Zande languages', null, 'en'),
+      'zul' => t('Zulu', null, 'en'),
+      'zun' => t('Zuni', null, 'en'),
+      'zxx' => t('No linguistic content', null, 'en'),
+      'zza' => t('Zaza', null, 'en')
+
+    ), 'type' => array(
+
+      'object' => t('Object', null, 'en'),
+      'photo' => t('Photo', null, 'en'),
+      'projected' => t('Projected medium', null, 'en'),
+      'kit' => t('Kit', null, 'en'),
+      'map' => t('Map', null, 'en'),
+      'file' => t('Computer file', null, 'en'),
+      'sheet' => t('Sheet music', null, 'en'),
+      'periodical' => t('Periodical', null, 'en'),
+      'book' => t('Book', null, 'en'),
+      'dvd' => t('DVD', null, 'en'),
+      'vhs' => t('VHS', null, 'en'),
+      'cassette' => t('Cassette', null, 'en'),
+      'cd' => t('CD', null, 'en')
+    ));
+}
+
+function _millennium_human_string($biblio_data, $fieldkey, $translate = true, $lang = null) {
+  global $_key_to_name;
+  $string = $_key_to_name[$fieldkey][$biblio_data[$fieldkey]];
+
+  // Note: passing a variable to t is permitted here because the strings are guaranteed
+  // to be found as string literals in the array initialization code of $_key_to_name
+
+  if ($string) {
+    if ($translate) {
+      if (!$lang) {
+        // Return string translated to current site language
+        return t($string); 
+      }
+      // Return string translated to a predefined language
+      // (usually site default language)
+      return t($string, array(), $lang);
+    }
+    // Return untranslated English string
+    return $string; 
+  }
+  return $biblio_data[$fieldkey];
 }
 
+
 /**
  * Implementation of hook_perm().
  */
@@ -1028,7 +1559,7 @@ function millennium_marc_to_nodeobject($
 
   // Item type
   #$biblio["type_num"] = millennium_marcleader_to_bibtype($marc);
-  $biblio["type"] = millennium_marcleader_to_mattypename($marc);
+  $biblio["type"] = millennium_marcleader_to_mattype($marc);
 
   // Title
   $data = millennium_getFields($marc, "245..");
@@ -1132,7 +1663,7 @@ function millennium_marc_to_nodeobject($
   $tmpfields = millennium_getFields($marc, "008..");  #get all 008s
   if (is_array($tmpfields)) {
     $lang_code = drupal_substr($tmpfields[0]["rawdata"], 35, 3);
-    $biblio['lang'] = _millennium_langcode_to_human($lang_code);
+    $biblio['lang'] = $lang_code;
   }
 
   if ($biblio["title"] == "") {
@@ -1256,15 +1787,18 @@ function theme_millennium_biblio_data($b
     );
 
   $translateable_fields = array('type', 'lang');
+
   $content = "";
   foreach (explode(",", $map[$mode]) as $fieldname) {
     $fieldvalue = trim($biblio_data[$fieldname]);
     if ($fieldvalue == "") {
       continue;
     }
+
     if (in_array($fieldname, $translateable_fields)) {
-      $fieldvalue = t($fieldvalue);
+      $fieldvalue = _millennium_human_string($biblio_data, $fieldname);
     }
+
     $rows[] = array(
       'data' => array(
         array('data' => $_millennium_field_labels[$fieldname], 'class' => 'fieldname'),
@@ -1318,8 +1852,20 @@ function millennium_add_taxonomy_to_node
     "k" => 'subject_form', // Form subheading
   );
 
+  $taxonomy_language = variable_get('millennium_taxonomy_language', 'english');
+
+  if ($taxonomy_language == 'site_default') {
+    $translate = true;
+    $language = language_default('language');
+  }
+  else {
+    $translate = false;
+    $language = 'en';
+  }
+  
   // Material type
-  $term_mat_type = millennium_marcleader_to_mattypename($record);
+  $term_mat_type = _millennium_human_string($nodeobject->millennium_biblio_data, 'type', $translate, $language);
+
   if ($term_mat_type) {
     millennium_add_node_taxonomy_terms($nodeobject, variable_get('millennium_marc_vid_leader_item_type', -1) , array($term_mat_type));
   }
@@ -1334,8 +1880,7 @@ function millennium_add_taxonomy_to_node
   if (is_array($tmpfields)) {
 
     // Language
-    $lang_code = drupal_substr($tmpfields[0]["rawdata"], 35, 3);
-    $lang_term = _millennium_langcode_to_human($lang_code);
+    $lang_term = _millennium_human_string($nodeobject->millennium_biblio_data, 'lang', $translate, $language);
     if ($lang_term!= "") {
       millennium_add_node_taxonomy_terms($nodeobject, variable_get('millennium_marc_vid_language', -1), array($lang_term));
     }
@@ -1413,7 +1958,7 @@ function millennium_add_taxonomy_to_node
   }
 
   // Other subjects: 600s, 61xs, 63xs
-  $tmpfields = millennium_getFields($record, "6[013]...");  #get'em
+  $tmpfields = millennium_getFields($record, "6[013]...");  //get'em
 
   if (is_array($tmpfields)) {
     foreach ($tmpfields as $field) {
@@ -1739,7 +2284,7 @@ function millennium_nodeapi(&$node, $op,
       $year = intval($node->millennium_biblio_data["imprint_date"]);
       $year = ($year > 1400) ? " / {$year}" : "";
       $node->content['millennium_extra'] = array(
-        '#value' => "<div class='millennium extra'>". t($node->millennium_biblio_data["type"]) . $year ."</div>\n",
+        '#value' => "<div class='millennium extra'>". _millennium_human_string($node->millennium_biblio_data, "type") . $year ."</div>\n",
         '#weight' => -90,
       );
 
@@ -2402,506 +2947,11 @@ function millennium_help($path, $arg) {
   }
 }
 
-
-function _millennium_langcode_to_human($code) {
-  // TODO: extract PO
-  // http://www.loc.gov/marc/languages/
-  static $millennium_langcodes_to_human = array(
-    'aar' => 'Afar',
-    'abk' => 'Abkhaz',
-    'ace' => 'Achinese',
-    'ach' => 'Acoli',
-    'ada' => 'Adangme',
-    'ady' => 'Adygei',
-    'afa' => 'Afroasiatic',
-    'afh' => 'Afrihili',
-    'afr' => 'Afrikaans',
-    'ain' => 'Ainu',
-    'aka' => 'Akan',
-    'akk' => 'Akkadian',
-    'alb' => 'Albanian',
-    'ale' => 'Aleut',
-    'alg' => 'Algonquian',
-    'alt' => 'Altai',
-    'amh' => 'Amharic',
-    'ang' => 'English, Old',
-    'anp' => 'Angika',
-    'apa' => 'Apache languages',
-    'ara' => 'Arabic',
-    'arc' => 'Aramaic',
-    'arg' => 'Aragonese Spanish',
-    'arm' => 'Armenian',
-    'arn' => 'Mapuche',
-    'arp' => 'Arapaho',
-    'art' => 'Artificial',
-    'arw' => 'Arawak',
-    'asm' => 'Assamese',
-    'ast' => 'Bable',
-    'ath' => 'Athapascan',
-    'aus' => 'Australian languages',
-    'ava' => 'Avaric',
-    'ave' => 'Avestan',
-    'awa' => 'Awadhi',
-    'aym' => 'Aymara',
-    'aze' => 'Azerbaijani',
-    'bad' => 'Banda languages',
-    'bai' => 'Bamileke languages',
-    'bak' => 'Bashkir',
-    'bal' => 'Baluchi',
-    'bam' => 'Bambara',
-    'ban' => 'Balinese',
-    'baq' => 'Basque',
-    'bas' => 'Basa',
-    'bat' => 'Baltic',
-    'bej' => 'Beja',
-    'bel' => 'Belarusian',
-    'bem' => 'Bemba',
-    'ben' => 'Bengali',
-    'ber' => 'Berber',
-    'bho' => 'Bhojpuri',
-    'bih' => 'Bihari',
-    'bik' => 'Bikol',
-    'bin' => 'Edo',
-    'bis' => 'Bislama',
-    'bla' => 'Siksika',
-    'bnt' => 'Bantu',
-    'bos' => 'Bosnian',
-    'bra' => 'Braj',
-    'bre' => 'Breton',
-    'btk' => 'Batak',
-    'bua' => 'Buriat',
-    'bug' => 'Bugis',
-    'bul' => 'Bulgarian',
-    'bur' => 'Burmese',
-    'byn' => 'Bilin',
-    'cad' => 'Caddo',
-    'cai' => 'Central American Indian',
-    'car' => 'Carib',
-    'cat' => 'Catalan',
-    'cau' => 'Caucasian',
-    'ceb' => 'Cebuano',
-    'cel' => 'Celtic',
-    'cha' => 'Chamorro',
-    'chb' => 'Chibcha',
-    'che' => 'Chechen',
-    'chg' => 'Chagatai',
-    'chi' => 'Chinese',
-    'chk' => 'Chuukese',
-    'chm' => 'Mari',
-    'chn' => 'Chinook jargon',
-    'cho' => 'Choctaw',
-    'chp' => 'Chipewyan',
-    'chr' => 'Cherokee',
-    'chu' => 'Church Slavic',
-    'chv' => 'Chuvash',
-    'chy' => 'Cheyenne',
-    'cmc' => 'Chamic languages',
-    'cop' => 'Coptic',
-    'cor' => 'Cornish',
-    'cos' => 'Corsican',
-    'cpe' => 'Creoles and Pidgins, English-based',
-    'cpf' => 'Creoles and Pidgins, French-based',
-    'cpp' => 'Creoles and Pidgins, Portuguese-based',
-    'cre' => 'Cree',
-    'crh' => 'Crimean Tatar',
-    'crp' => 'Creoles and Pidgins',
-    'csb' => 'Kashubian',
-    'cus' => 'Cushitic',
-    'cze' => 'Czech',
-    'dak' => 'Dakota',
-    'dan' => 'Danish',
-    'dar' => 'Dargwa',
-    'day' => 'Dayak',
-    'del' => 'Delaware',
-    'den' => 'Slave',
-    'dgr' => 'Dogrib',
-    'din' => 'Dinka',
-    'div' => 'Divehi',
-    'doi' => 'Dogri',
-    'dra' => 'Dravidian',
-    'dsb' => 'Lower Sorbian',
-    'dua' => 'Duala',
-    'dum' => 'Dutch, Middle',
-    'dut' => 'Dutch',
-    'dyu' => 'Dyula',
-    'dzo' => 'Dzongkha',
-    'efi' => 'Efik',
-    'egy' => 'Egyptian',
-    'eka' => 'Ekajuk',
-    'elx' => 'Elamite',
-    'eng' => 'English',
-    'enm' => 'English, Middle',
-    'epo' => 'Esperanto',
-    'est' => 'Estonian',
-    'ewe' => 'Ewe',
-    'ewo' => 'Ewondo',
-    'fan' => 'Fang',
-    'fao' => 'Faroese',
-    'fat' => 'Fanti',
-    'fij' => 'Fijian',
-    'fil' => 'Filipino',
-    'fin' => 'Finnish',
-    'fiu' => 'Finno-Ugrian',
-    'fon' => 'Fon',
-    'fre' => 'French',
-    'frm' => 'French, Middle',
-    'fro' => 'French, Old',
-    'frr' => 'North Frisian',
-    'frs' => 'East Frisian',
-    'fry' => 'Frisian',
-    'ful' => 'Fula',
-    'fur' => 'Friulian',
-    'gaa' => 'Gã',
-    'gay' => 'Gayo',
-    'gba' => 'Gbaya',
-    'gem' => 'Germanic',
-    'geo' => 'Georgian',
-    'ger' => 'German',
-    'gez' => 'Ethiopic',
-    'gil' => 'Gilbertese',
-    'gla' => 'Scottish Gaelic',
-    'gle' => 'Irish',
-    'glg' => 'Galician',
-    'glv' => 'Manx',
-    'gmh' => 'German, Middle High',
-    'goh' => 'German, Old High',
-    'gon' => 'Gondi',
-    'gor' => 'Gorontalo',
-    'got' => 'Gothic',
-    'grb' => 'Grebo',
-    'grc' => 'Greek, Ancient',
-    'gre' => 'Greek, Modern',
-    'grn' => 'Guarani',
-    'gsw' => 'Swiss German',
-    'guj' => 'Gujarati',
-    'gwi' => 'Gwich\'in',
-    'hai' => 'Haida',
-    'hat' => 'Haitian French Creole',
-    'hau' => 'Hausa',
-    'haw' => 'Hawaiian',
-    'heb' => 'Hebrew',
-    'her' => 'Herero',
-    'hil' => 'Hiligaynon',
-    'him' => 'Himachali',
-    'hin' => 'Hindi',
-    'hit' => 'Hittite',
-    'hmn' => 'Hmong',
-    'hmo' => 'Hiri Motu',
-    'hsb' => 'Upper Sorbian',
-    'hun' => 'Hungarian',
-    'hup' => 'Hupa',
-    'iba' => 'Iban',
-    'ibo' => 'Igbo',
-    'ice' => 'Icelandic',
-    'ido' => 'Ido',
-    'iii' => 'Sichuan Yi',
-    'ijo' => 'Ijo',
-    'iku' => 'Inuktitut',
-    'ile' => 'Interlingue',
-    'ilo' => 'Iloko',
-    'ina' => 'Interlingua',
-    'inc' => 'Indic',
-    'ind' => 'Indonesian',
-    'ine' => 'Indo-European',
-    'inh' => 'Ingush',
-    'ipk' => 'Inupiaq',
-    'ira' => 'Iranian',
-    'iro' => 'Iroquoian',
-    'ita' => 'Italian',
-    'jav' => 'Javanese',
-    'jbo' => 'Lojban',
-    'jpn' => 'Japanese',
-    'jpr' => 'Judeo-Persian',
-    'jrb' => 'Judeo-Arabic',
-    'kaa' => 'Kara-Kalpak',
-    'kab' => 'Kabyle',
-    'kac' => 'Kachin',
-    'kal' => 'Kalâtdlisut',
-    'kam' => 'Kamba',
-    'kan' => 'Kannada',
-    'kar' => 'Karen languages',
-    'kas' => 'Kashmiri',
-    'kau' => 'Kanuri',
-    'kaw' => 'Kawi',
-    'kaz' => 'Kazakh',
-    'kbd' => 'Kabardian',
-    'kha' => 'Khasi',
-    'khi' => 'Khoisan',
-    'khm' => 'Khmer',
-    'kho' => 'Khotanese',
-    'kik' => 'Kikuyu',
-    'kin' => 'Kinyarwanda',
-    'kir' => 'Kyrgyz',
-    'kmb' => 'Kimbundu',
-    'kok' => 'Konkani',
-    'kom' => 'Komi',
-    'kon' => 'Kongo',
-    'kor' => 'Korean',
-    'kos' => 'Kusaie',
-    'kpe' => 'Kpelle',
-    'krc' => 'Karachay-Balkar',
-    'krl' => 'Karelian',
-    'kro' => 'Kru',
-    'kru' => 'Kurukh',
-    'kua' => 'Kuanyama',
-    'kum' => 'Kumyk',
-    'kur' => 'Kurdish',
-    'kut' => 'Kootenai',
-    'lad' => 'Ladino',
-    'lah' => 'Lahnd?',
-    'lam' => 'Lamba',
-    'lao' => 'Lao',
-    'lat' => 'Latin',
-    'lav' => 'Latvian',
-    'lez' => 'Lezgian',
-    'lim' => 'Limburgish',
-    'lin' => 'Lingala',
-    'lit' => 'Lithuanian',
-    'lol' => 'Mongo-Nkundu',
-    'loz' => 'Lozi',
-    'ltz' => 'Luxembourgish',
-    'lua' => 'Luba-Lulua',
-    'lub' => 'Luba-Katanga',
-    'lug' => 'Ganda',
-    'lui' => 'Luiseño',
-    'lun' => 'Lunda',
-    'luo' => 'Luo',
-    'lus' => 'Lushai',
-    'mac' => 'Macedonian',
-    'mad' => 'Madurese',
-    'mag' => 'Magahi',
-    'mah' => 'Marshallese',
-    'mai' => 'Maithili',
-    'mak' => 'Makasar',
-    'mal' => 'Malayalam',
-    'man' => 'Mandingo',
-    'mao' => 'Maori',
-    'map' => 'Austronesian',
-    'mar' => 'Marathi',
-    'mas' => 'Masai',
-    'may' => 'Malay',
-    'mdf' => 'Moksha',
-    'mdr' => 'Mandar',
-    'men' => 'Mende',
-    'mga' => 'Irish, Middle',
-    'mic' => 'Micmac',
-    'min' => 'Minangkabau',
-    'mis' => 'Miscellaneous languages',
-    'mkh' => 'Mon-Khmer',
-    'mlg' => 'Malagasy',
-    'mlt' => 'Maltese',
-    'mnc' => 'Manchu',
-    'mni' => 'Manipuri',
-    'mno' => 'Manobo languages',
-    'moh' => 'Mohawk',
-    // 'mol' => 'Moldavian',  #Changed as per http://catalogablog.blogspot.com/2009/01/changes-to-marc-code-list-for-languages.html
-    'rum' => 'Moldovan',
-    'mon' => 'Mongolian',
-    'mos' => 'Mooré',
-    'mul' => 'Multiple languages',
-    'mun' => 'Munda',
-    'mus' => 'Creek',
-    'mwl' => 'Mirandese',
-    'mwr' => 'Marwari',
-    'myn' => 'Mayan languages',
-    'myv' => 'Erzya',
-    'nah' => 'Nahuatl',
-    'nai' => 'North American Indian',
-    'nap' => 'Neapolitan Italian',
-    'nau' => 'Nauru',
-    'nav' => 'Navajo',
-    'nbl' => 'Ndebele',
-    'nde' => 'Ndebele',
-    'ndo' => 'Ndonga',
-    'nds' => 'Low German',
-    'nep' => 'Nepali',
-    'new' => 'Newari',
-    'nia' => 'Nias',
-    'nic' => 'Niger-Kordofanian',
-    'niu' => 'Niuean',
-    'nno' => 'Norwegian',
-    'nob' => 'Norwegian',
-    'nog' => 'Nogai',
-    'non' => 'Old Norse',
-    'nor' => 'Norwegian',
-    'nqo' => 'N\'Ko',
-    'nso' => 'Northern Sotho',
-    'nub' => 'Nubian languages',
-    'nwc' => 'Newari, Old',
-    'nya' => 'Nyanja',
-    'nym' => 'Nyamwezi',
-    'nyn' => 'Nyankole',
-    'nyo' => 'Nyoro',
-    'nzi' => 'Nzima',
-    'oci' => 'Occitan',
-    'oji' => 'Ojibwa',
-    'ori' => 'Oriya',
-    'orm' => 'Oromo',
-    'osa' => 'Osage',
-    'oss' => 'Ossetic',
-    'ota' => 'Turkish, Ottoman',
-    'oto' => 'Otomian languages',
-    'paa' => 'Papuan',
-    'pag' => 'Pangasinan',
-    'pal' => 'Pahlavi',
-    'pam' => 'Pampanga',
-    'pan' => 'Panjabi',
-    'pap' => 'Papiamento',
-    'pau' => 'Palauan',
-    'peo' => 'Old Persian',
-    'per' => 'Persian',
-    'phi' => 'Philippine',
-    'phn' => 'Phoenician',
-    'pli' => 'Pali',
-    'pol' => 'Polish',
-    'pon' => 'Ponape',
-    'por' => 'Portuguese',
-    'pra' => 'Prakrit languages',
-    'pro' => 'Provençal',
-    'pus' => 'Pushto',
-    'que' => 'Quechua',
-    'raj' => 'Rajasthani',
-    'rap' => 'Rapanui',
-    'rar' => 'Rarotongan',
-    'roa' => 'Romance',
-    'roh' => 'Raeto-Romance',
-    'rom' => 'Romani',
-    'rum' => 'Romanian',
-    'run' => 'Rundi',
-    'rup' => 'Aromanian',
-    'rus' => 'Russian',
-    'sad' => 'Sandawe',
-    'sag' => 'Sango',
-    'sah' => 'Yakut',
-    'sai' => 'South American Indian',
-    'sal' => 'Salishan languages',
-    'sam' => 'Samaritan Aramaic',
-    'san' => 'Sanskrit',
-    'sas' => 'Sasak',
-    'sat' => 'Santali',
-    'scc' => 'Serbian',
-    'scn' => 'Sicilian Italian',
-    'sco' => 'Scots',
-    'scr' => 'Croatian',
-    'sel' => 'Selkup',
-    'sem' => 'Semitic',
-    'sga' => 'Irish, Old',
-    'sgn' => 'Sign languages',
-    'shn' => 'Shan',
-    'sid' => 'Sidamo',
-    'sin' => 'Sinhalese',
-    'sio' => 'Siouan',
-    'sit' => 'Sino-Tibetan',
-    'sla' => 'Slavic',
-    'slo' => 'Slovak',
-    'slv' => 'Slovenian',
-    'sma' => 'Southern Sami',
-    'sme' => 'Northern Sami',
-    'smi' => 'Sami',
-    'smj' => 'Lule Sami',
-    'smn' => 'Inari Sami',
-    'smo' => 'Samoan',
-    'sms' => 'Skolt Sami',
-    'sna' => 'Shona',
-    'snd' => 'Sindhi',
-    'snk' => 'Soninke',
-    'sog' => 'Sogdian',
-    'som' => 'Somali',
-    'son' => 'Songhai',
-    'sot' => 'Sotho',
-    'spa' => 'Spanish',
-    'srd' => 'Sardinian',
-    'srn' => 'Sranan',
-    'srr' => 'Serer',
-    'ssa' => 'Nilo-Saharan',
-    'ssw' => 'Swazi',
-    'suk' => 'Sukuma',
-    'sun' => 'Sundanese',
-    'sus' => 'Susu',
-    'sux' => 'Sumerian',
-    'swa' => 'Swahili',
-    'swe' => 'Swedish',
-    'syc' => 'Syriac',
-    'syr' => 'Syriac, Modern',
-    'tah' => 'Tahitian',
-    'tai' => 'Tai',
-    'tam' => 'Tamil',
-    'tat' => 'Tatar',
-    'tel' => 'Telugu',
-    'tem' => 'Temne',
-    'ter' => 'Terena',
-    'tet' => 'Tetum',
-    'tgk' => 'Tajik',
-    'tgl' => 'Tagalog',
-    'tha' => 'Thai',
-    'tib' => 'Tibetan',
-    'tig' => 'Tigré',
-    'tir' => 'Tigrinya',
-    'tiv' => 'Tiv',
-    'tkl' => 'Tokelauan',
-    'tlh' => 'Klingon',
-    'tli' => 'Tlingit',
-    'tmh' => 'Tamashek',
-    'tog' => 'Tonga',
-    'ton' => 'Tongan',
-    'tpi' => 'Tok Pisin',
-    'tsi' => 'Tsimshian',
-    'tsn' => 'Tswana',
-    'tso' => 'Tsonga',
-    'tuk' => 'Turkmen',
-    'tum' => 'Tumbuka',
-    'tup' => 'Tupi languages',
-    'tur' => 'Turkish',
-    'tut' => 'Altaic',
-    'tvl' => 'Tuvaluan',
-    'twi' => 'Twi',
-    'tyv' => 'Tuvinian',
-    'udm' => 'Udmurt',
-    'uga' => 'Ugaritic',
-    'uig' => 'Uighur',
-    'ukr' => 'Ukrainian',
-    'umb' => 'Umbundu',
-    'und' => 'Undetermined',
-    'urd' => 'Urdu',
-    'uzb' => 'Uzbek',
-    'vai' => 'Vai',
-    'ven' => 'Venda',
-    'vie' => 'Vietnamese',
-    'vol' => 'Volapük',
-    'vot' => 'Votic',
-    'wak' => 'Wakashan languages',
-    'wal' => 'Wolayta',
-    'war' => 'Waray',
-    'was' => 'Washo',
-    'wel' => 'Welsh',
-    'wen' => 'Sorbian',
-    'wln' => 'Walloon',
-    'wol' => 'Wolof',
-    'xal' => 'Oirat',
-    'xho' => 'Xhosa',
-    'yao' => 'Yao',
-    'yap' => 'Yapese',
-    'yid' => 'Yiddish',
-    'yor' => 'Yoruba',
-    'ypk' => 'Yupik languages',
-    'zap' => 'Zapotec',
-    'zbl' => 'Blissymbolics',
-    'zen' => 'Zenaga',
-    'zha' => 'Zhuang',
-    'znd' => 'Zande languages',
-    'zul' => 'Zulu',
-    'zun' => 'Zuni',
-    'zxx' => 'No linguistic content',
-    'zza' => 'Zaza'
-  );
-  return (isset($millennium_langcodes_to_human[$code]) ? $millennium_langcodes_to_human[$code] : $code);
-}
-
 /**
  * Returns the material type name from the MARC leader
  * @param array $marc A parsed marc record
  */
-function millennium_marcleader_to_mattypename($marc) {
+function millennium_marcleader_to_mattype($marc) {
   $marc007 = millennium_getFields($marc, "007..");
   $record_type = substr($marc['LEADER'], 6, 1);
   $bibliographic_level = substr($marc['LEADER'], 7, 1);
@@ -2910,51 +2960,52 @@ function millennium_marcleader_to_mattyp
   $video_format = substr($marc007[0], 4, 1);
   switch ($record_type) {
     case 'r':
-      $format = 'Object';
+      $format = 'object';
       break;
     case 'k':
-      $format = 'Photo';
+      $format = 'photo';
       break;
     case 'g':
-      $format = 'Projected medium';
+      $format = 'projected';
       break;
     case 'o':
     case 'p':
-      $format = 'Kit';
+      $format = 'kit';
       break;
     case 'e':
     case 'f':
-      $format = 'Map';
+      $format = 'map';
       break;
     case 'm':
-      $format = 'Computer file';
+      $format = 'file';
       break;
     case 'c':
     case 'd':
-      $format = 'Sheet music';
+      $format = 'sheet';
       break;
     case 'a':
+
     default:
       if ($bibliographic_level == 's'){
-        $format = 'Periodical';
+        $format = 'periodical';
       }
       else {
-        $format = 'Book';
+        $format = 'book';
       }
   }
   if ($material_category == 'v'){
     if ($video_format == 'v'){
-      $format = 'DVD';
+      $format = 'dvd';
     }
   else {
-    $format = 'VHS';
+    $format = 'vhs';
   }
   if ($material_category == 's'){
       if ($material_designation == 's'){
         $format = 'cassette';
       }
       elseif ($material_designation == 's'){
-         $format = 'CD';
+         $format = 'cd';
       }
     }
   }
