neu-mods 0.6.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.version +1 -1
- data/README.md +11 -5
- data/lib/neu/mods/data/iso639-2.txt +487 -0
- data/lib/neu/mods/language_codes.rb +53 -0
- data/lib/neu/mods/projection.rb +19 -16
- data/lib/neu-mods.rb +1 -0
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d7e678073c1e18b2626473e1e8fcec32052a2a33075d34cea6fe96dca40e8315
|
|
4
|
+
data.tar.gz: 5d3d44f6bf9ee5600dfdaded3a9d2119472e86c1aa6621fbcd92ea8358619738
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ce304892f19636ecc57c487810a2ef2932f253d9702dcce6974a16c8e047b56ceeffb3ae25750bf2e5937345523567dd9d598ef59c32e671dcc80d62541748c8
|
|
7
|
+
data.tar.gz: a31247bacadff8b81b4789c2dc69647b2036b98e246af02492d1ecdfb14e1a625e1deb2f7c7ad7afff5298d531a6b6bcacfa803ab3ea7629ecea623e45e06667
|
data/.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.7.1
|
data/README.md
CHANGED
|
@@ -31,6 +31,7 @@ doc.plain_title # => "What's New - How We Respond to Disaster, Episode 1"
|
|
|
31
31
|
doc.title_parts # => { non_sort:, subtitle:, title:, part_name:, part_number: }
|
|
32
32
|
# byte-faithful -- the edit forms pre-fill from these
|
|
33
33
|
doc.abstract # => normalized, paragraph-joined String
|
|
34
|
+
doc.languages # => ["English"] a code-only <languageTerm>eng</> included
|
|
34
35
|
doc.topical_subjects # => ["Civil society", ...] (every <topic>, for the access copy)
|
|
35
36
|
doc.keywords # => [...] (only the editable attribute-free keyword subjects)
|
|
36
37
|
doc.date_created_with_precision
|
|
@@ -112,11 +113,16 @@ intentional notes:
|
|
|
112
113
|
its quirks* (e.g. multiple `given` nameParts concatenate with no separator),
|
|
113
114
|
to preserve existing Solr/display output. Cleanups are a deliberate future
|
|
114
115
|
contract change, not a silent one.
|
|
115
|
-
- **
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
116
|
+
- **Languages are translated; roles are not.** Both read the `type="text"` term
|
|
117
|
+
first. A code-only `languageTerm` is then translated through the vendored ISO
|
|
118
|
+
639 registry (`lib/neu/mods/data/iso639-2.txt`, from the Library of Congress),
|
|
119
|
+
so `eng` projects `English`. That happens here rather than in a consumer's
|
|
120
|
+
display layer because otherwise Solr indexes `eng` while the page shows
|
|
121
|
+
`English`, and the language facet reads in codes.
|
|
122
|
+
A code-only `roleTerm` stays raw. A MARC relator is a display *label*, and the
|
|
123
|
+
label vocabulary belongs to the consumer — Cerberus's edit form and Atlas's
|
|
124
|
+
display word the same role differently. An unrecognised language code also
|
|
125
|
+
stays raw, since the record still said something.
|
|
120
126
|
- **`description` is not projected.** MODS has no element of that name, and the
|
|
121
127
|
two candidates — an `abstract` variant and `physicalDescription/note` —
|
|
122
128
|
describe different things. Projecting a guess would put wrong data in the
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
aar||aa|Afar|afar
|
|
2
|
+
abk||ab|Abkhazian|abkhaze
|
|
3
|
+
ace|||Achinese|aceh
|
|
4
|
+
ach|||Acoli|acoli
|
|
5
|
+
ada|||Adangme|adangme
|
|
6
|
+
ady|||Adyghe; Adygei|adyghé
|
|
7
|
+
afa|||Afro-Asiatic languages|afro-asiatiques, langues
|
|
8
|
+
afh|||Afrihili|afrihili
|
|
9
|
+
afr||af|Afrikaans|afrikaans
|
|
10
|
+
ain|||Ainu|aïnou
|
|
11
|
+
aka||ak|Akan|akan
|
|
12
|
+
akk|||Akkadian|akkadien
|
|
13
|
+
alb|sqi|sq|Albanian|albanais
|
|
14
|
+
ale|||Aleut|aléoute
|
|
15
|
+
alg|||Algonquian languages|algonquines, langues
|
|
16
|
+
alt|||Southern Altai|altai du Sud
|
|
17
|
+
amh||am|Amharic|amharique
|
|
18
|
+
ang|||English, Old (ca.450-1100)|anglo-saxon (ca.450-1100)
|
|
19
|
+
anp|||Angika|angika
|
|
20
|
+
apa|||Apache languages|apaches, langues
|
|
21
|
+
ara||ar|Arabic|arabe
|
|
22
|
+
arc|||Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)|araméen d'empire (700-300 BCE)
|
|
23
|
+
arg||an|Aragonese|aragonais
|
|
24
|
+
arm|hye|hy|Armenian|arménien
|
|
25
|
+
arn|||Mapudungun; Mapuche|mapudungun; mapuche; mapuce
|
|
26
|
+
arp|||Arapaho|arapaho
|
|
27
|
+
art|||Artificial languages|artificielles, langues
|
|
28
|
+
arw|||Arawak|arawak
|
|
29
|
+
asm||as|Assamese|assamais
|
|
30
|
+
ast|||Asturian; Bable; Leonese; Asturleonese|asturien; bable; léonais; asturoléonais
|
|
31
|
+
ath|||Athapascan languages|athapascanes, langues
|
|
32
|
+
aus|||Australian languages|australiennes, langues
|
|
33
|
+
ava||av|Avaric|avar
|
|
34
|
+
ave||ae|Avestan|avestique
|
|
35
|
+
awa|||Awadhi|awadhi
|
|
36
|
+
aym||ay|Aymara|aymara
|
|
37
|
+
aze||az|Azerbaijani|azéri
|
|
38
|
+
bad|||Banda languages|banda, langues
|
|
39
|
+
bai|||Bamileke languages|bamiléké, langues
|
|
40
|
+
bak||ba|Bashkir|bachkir
|
|
41
|
+
bal|||Baluchi|baloutchi
|
|
42
|
+
bam||bm|Bambara|bambara
|
|
43
|
+
ban|||Balinese|balinais
|
|
44
|
+
baq|eus|eu|Basque|basque
|
|
45
|
+
bas|||Basa|basa
|
|
46
|
+
bat|||Baltic languages|baltes, langues
|
|
47
|
+
bej|||Beja; Bedawiyet|bedja
|
|
48
|
+
bel||be|Belarusian|biélorusse
|
|
49
|
+
bem|||Bemba|bemba
|
|
50
|
+
ben||bn|Bengali|bengali
|
|
51
|
+
ber|||Berber languages|berbères, langues
|
|
52
|
+
bho|||Bhojpuri|bhojpuri
|
|
53
|
+
bih|||Bihari languages|langues biharis
|
|
54
|
+
bik|||Bikol|bikol
|
|
55
|
+
bin|||Bini; Edo|bini; edo
|
|
56
|
+
bis||bi|Bislama|bichlamar
|
|
57
|
+
bla|||Siksika|blackfoot
|
|
58
|
+
bnt|||Bantu languages|bantou, langues
|
|
59
|
+
bos||bs|Bosnian|bosniaque
|
|
60
|
+
bra|||Braj|braj
|
|
61
|
+
bre||br|Breton|breton
|
|
62
|
+
btk|||Batak languages|batak, langues
|
|
63
|
+
bua|||Buriat|bouriate
|
|
64
|
+
bug|||Buginese|bugi
|
|
65
|
+
bul||bg|Bulgarian|bulgare
|
|
66
|
+
bur|mya|my|Burmese|birman
|
|
67
|
+
byn|||Blin; Bilin|blin; bilen
|
|
68
|
+
cad|||Caddo|caddo
|
|
69
|
+
cai|||Central American Indian languages|amérindiennes de L'Amérique centrale, langues
|
|
70
|
+
car|||Galibi Carib|karib; galibi; carib
|
|
71
|
+
cat||ca|Catalan; Valencian|catalan; valencien
|
|
72
|
+
cau|||Caucasian languages|caucasiennes, langues
|
|
73
|
+
ceb|||Cebuano|cebuano
|
|
74
|
+
cel|||Celtic languages|celtiques, langues; celtes, langues
|
|
75
|
+
cha||ch|Chamorro|chamorro
|
|
76
|
+
chb|||Chibcha|chibcha
|
|
77
|
+
che||ce|Chechen|tchétchène
|
|
78
|
+
chg|||Chagatai|djaghataï
|
|
79
|
+
chi|zho|zh|Chinese|chinois
|
|
80
|
+
chk|||Chuukese|chuuk
|
|
81
|
+
chm|||Mari|mari
|
|
82
|
+
chn|||Chinook jargon|chinook, jargon
|
|
83
|
+
cho|||Choctaw|choctaw
|
|
84
|
+
chp|||Chipewyan; Dene Suline|chipewyan
|
|
85
|
+
chr|||Cherokee|cherokee
|
|
86
|
+
chu||cu|Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic|slavon d'église; vieux slave; slavon liturgique; vieux bulgare
|
|
87
|
+
chv||cv|Chuvash|tchouvache
|
|
88
|
+
chy|||Cheyenne|cheyenne
|
|
89
|
+
cmc|||Chamic languages|chames, langues
|
|
90
|
+
cnr|||Montenegrin|monténégrin
|
|
91
|
+
cop|||Coptic|copte
|
|
92
|
+
cor||kw|Cornish|cornique
|
|
93
|
+
cos||co|Corsican|corse
|
|
94
|
+
cpe|||Creoles and pidgins, English based|créoles et pidgins basés sur l'anglais
|
|
95
|
+
cpf|||Creoles and pidgins, French-based|créoles et pidgins basés sur le français
|
|
96
|
+
cpp|||Creoles and pidgins, Portuguese-based|créoles et pidgins basés sur le portugais
|
|
97
|
+
cre||cr|Cree|cree
|
|
98
|
+
crh|||Crimean Tatar; Crimean Turkish|tatar de Crimé
|
|
99
|
+
crp|||Creoles and pidgins|créoles et pidgins
|
|
100
|
+
csb|||Kashubian|kachoube
|
|
101
|
+
cus|||Cushitic languages|couchitiques, langues
|
|
102
|
+
cze|ces|cs|Czech|tchèque
|
|
103
|
+
dak|||Dakota|dakota
|
|
104
|
+
dan||da|Danish|danois
|
|
105
|
+
dar|||Dargwa|dargwa
|
|
106
|
+
day|||Land Dayak languages|dayak, langues
|
|
107
|
+
del|||Delaware|delaware
|
|
108
|
+
den|||Slave (Athapascan)|esclave (athapascan)
|
|
109
|
+
dgr|||Tlicho; Dogrib|tlicho; dogrib
|
|
110
|
+
din|||Dinka|dinka
|
|
111
|
+
div||dv|Divehi; Dhivehi; Maldivian|maldivien
|
|
112
|
+
doi|||Dogri|dogri
|
|
113
|
+
dra|||Dravidian languages|dravidiennes, langues
|
|
114
|
+
dsb|||Lower Sorbian|bas-sorabe
|
|
115
|
+
dua|||Duala|douala
|
|
116
|
+
dum|||Dutch, Middle (ca.1050-1350)|néerlandais moyen (ca. 1050-1350)
|
|
117
|
+
dut|nld|nl|Dutch; Flemish|néerlandais; flamand
|
|
118
|
+
dyu|||Dyula|dioula
|
|
119
|
+
dzo||dz|Dzongkha|dzongkha
|
|
120
|
+
efi|||Efik|efik
|
|
121
|
+
egy|||Egyptian (Ancient)|égyptien
|
|
122
|
+
eka|||Ekajuk|ekajuk
|
|
123
|
+
elx|||Elamite|élamite
|
|
124
|
+
eng||en|English|anglais
|
|
125
|
+
enm|||English, Middle (1100-1500)|anglais moyen (1100-1500)
|
|
126
|
+
epo||eo|Esperanto|espéranto
|
|
127
|
+
est||et|Estonian|estonien
|
|
128
|
+
ewe||ee|Ewe|éwé
|
|
129
|
+
ewo|||Ewondo|éwondo
|
|
130
|
+
fan|||Fang|fang
|
|
131
|
+
fao||fo|Faroese|féroïen
|
|
132
|
+
fat|||Fanti|fanti
|
|
133
|
+
fij||fj|Fijian|fidjien
|
|
134
|
+
fil|||Filipino; Pilipino|filipino; pilipino
|
|
135
|
+
fin||fi|Finnish|finnois
|
|
136
|
+
fiu|||Finno-Ugrian languages|finno-ougriennes, langues
|
|
137
|
+
fon|||Fon|fon
|
|
138
|
+
fre|fra|fr|French|français
|
|
139
|
+
frm|||French, Middle (ca.1400-1600)|français moyen (1400-1600)
|
|
140
|
+
fro|||French, Old (842-ca.1400)|français ancien (842-ca.1400)
|
|
141
|
+
frr|||Northern Frisian|frison septentrional
|
|
142
|
+
frs|||Eastern Frisian|frison oriental
|
|
143
|
+
fry||fy|Western Frisian|frison occidental
|
|
144
|
+
ful||ff|Fulah|peul
|
|
145
|
+
fur|||Friulian|frioulan
|
|
146
|
+
gaa|||Ga|ga
|
|
147
|
+
gay|||Gayo|gayo
|
|
148
|
+
gba|||Gbaya|gbaya
|
|
149
|
+
gem|||Germanic languages|germaniques, langues
|
|
150
|
+
geo|kat|ka|Georgian|géorgien
|
|
151
|
+
ger|deu|de|German|allemand
|
|
152
|
+
gez|||Geez|guèze
|
|
153
|
+
gil|||Gilbertese|kiribati
|
|
154
|
+
gla||gd|Gaelic; Scottish Gaelic|gaélique; gaélique écossais
|
|
155
|
+
gle||ga|Irish|irlandais
|
|
156
|
+
glg||gl|Galician|galicien
|
|
157
|
+
glv||gv|Manx|manx; mannois
|
|
158
|
+
gmh|||German, Middle High (ca.1050-1500)|allemand, moyen haut (ca. 1050-1500)
|
|
159
|
+
goh|||German, Old High (ca.750-1050)|allemand, vieux haut (ca. 750-1050)
|
|
160
|
+
gon|||Gondi|gond
|
|
161
|
+
gor|||Gorontalo|gorontalo
|
|
162
|
+
got|||Gothic|gothique
|
|
163
|
+
grb|||Grebo|grebo
|
|
164
|
+
grc|||Greek, Ancient (to 1453)|grec ancien (jusqu'à 1453)
|
|
165
|
+
gre|ell|el|Modern Greek (1453-)|grec moderne (1453-)
|
|
166
|
+
grn||gn|Guarani|guarani
|
|
167
|
+
gsw|||Swiss German; Alemannic; Alsatian|suisse alémanique; alémanique; alsacien
|
|
168
|
+
guj||gu|Gujarati|goudjrati
|
|
169
|
+
gwi|||Gwich'in|gwich'in
|
|
170
|
+
hai|||Haida|haida
|
|
171
|
+
hat||ht|Haitian; Haitian Creole|haïtien; créole haïtien
|
|
172
|
+
hau||ha|Hausa|haoussa
|
|
173
|
+
haw|||Hawaiian|hawaïen
|
|
174
|
+
heb||he|Hebrew|hébreu
|
|
175
|
+
her||hz|Herero|herero
|
|
176
|
+
hil|||Hiligaynon|hiligaynon
|
|
177
|
+
him|||Himachali languages; Western Pahari languages|langues himachalis; langues paharis occidentales
|
|
178
|
+
hin||hi|Hindi|hindi
|
|
179
|
+
hit|||Hittite|hittite
|
|
180
|
+
hmn|||Hmong; Mong|hmong
|
|
181
|
+
hmo||ho|Hiri Motu|hiri motu
|
|
182
|
+
hrv||hr|Croatian|croate
|
|
183
|
+
hsb|||Upper Sorbian|haut-sorabe
|
|
184
|
+
hun||hu|Hungarian|hongrois
|
|
185
|
+
hup|||Hupa|hupa
|
|
186
|
+
iba|||Iban|iban
|
|
187
|
+
ibo||ig|Igbo|igbo
|
|
188
|
+
ice|isl|is|Icelandic|islandais
|
|
189
|
+
ido||io|Ido|ido
|
|
190
|
+
iii||ii|Sichuan Yi; Nuosu|yi de Sichuan
|
|
191
|
+
ijo|||Ijo languages|ijo, langues
|
|
192
|
+
iku||iu|Inuktitut|inuktitut
|
|
193
|
+
ile||ie|Interlingue; Occidental|interlingue
|
|
194
|
+
ilo|||Iloko|ilocano
|
|
195
|
+
ina||ia|Interlingua (International Auxiliary Language Association)|interlingua (langue auxiliaire internationale)
|
|
196
|
+
inc|||Indic languages|indo-aryennes, langues
|
|
197
|
+
ind||id|Indonesian|indonésien
|
|
198
|
+
ine|||Indo-European languages|indo-européennes, langues
|
|
199
|
+
inh|||Ingush|ingouche
|
|
200
|
+
ipk||ik|Inupiaq|inupiaq
|
|
201
|
+
ira|||Iranian languages|iraniennes, langues
|
|
202
|
+
iro|||Iroquoian languages|iroquoises, langues
|
|
203
|
+
ita||it|Italian|italien
|
|
204
|
+
jav||jv|Javanese|javanais
|
|
205
|
+
jbo|||Lojban|lojban
|
|
206
|
+
jpn||ja|Japanese|japonais
|
|
207
|
+
jpr|||Judeo-Persian|judéo-persan
|
|
208
|
+
jrb|||Judeo-Arabic|judéo-arabe
|
|
209
|
+
kaa|||Kara-Kalpak|karakalpak
|
|
210
|
+
kab|||Kabyle|kabyle
|
|
211
|
+
kac|||Kachin; Jingpho|kachin; jingpho
|
|
212
|
+
kal||kl|Kalaallisut; Greenlandic|groenlandais
|
|
213
|
+
kam|||Kamba|kamba
|
|
214
|
+
kan||kn|Kannada|kannada
|
|
215
|
+
kar|||Karen languages|karen, langues
|
|
216
|
+
kas||ks|Kashmiri|kashmiri
|
|
217
|
+
kau||kr|Kanuri|kanouri
|
|
218
|
+
kaw|||Kawi|kawi
|
|
219
|
+
kaz||kk|Kazakh|kazakh
|
|
220
|
+
kbd|||Kabardian|kabardien
|
|
221
|
+
kha|||Khasi|khasi
|
|
222
|
+
khi|||Khoisan languages|khoïsan, langues
|
|
223
|
+
khm||km|Central Khmer|khmer central
|
|
224
|
+
kho|||Khotanese; Sakan|khotanais; sakan
|
|
225
|
+
kik||ki|Kikuyu; Gikuyu|kikuyu
|
|
226
|
+
kin||rw|Kinyarwanda|rwanda
|
|
227
|
+
kir||ky|Kirghiz; Kyrgyz|kirghiz
|
|
228
|
+
kmb|||Kimbundu|kimbundu
|
|
229
|
+
kok|||Konkani|konkani
|
|
230
|
+
kom||kv|Komi|kom
|
|
231
|
+
kon||kg|Kongo|kongo
|
|
232
|
+
kor||ko|Korean|coréen
|
|
233
|
+
kos|||Kosraean|kosrae
|
|
234
|
+
kpe|||Kpelle|kpellé
|
|
235
|
+
krc|||Karachay-Balkar|karatchai balkar
|
|
236
|
+
krl|||Karelian|carélien
|
|
237
|
+
kro|||Kru languages|krou, langues
|
|
238
|
+
kru|||Kurukh|kurukh
|
|
239
|
+
kua||kj|Kuanyama; Kwanyama|kuanyama; kwanyama
|
|
240
|
+
kum|||Kumyk|koumyk
|
|
241
|
+
kur||ku|Kurdish|kurde
|
|
242
|
+
kut|||Kutenai|kutenai
|
|
243
|
+
lad|||Ladino|judéo-espagnol
|
|
244
|
+
lah|||Lahnda|lahnda
|
|
245
|
+
lam|||Lamba|lamba
|
|
246
|
+
lao||lo|Lao|lao
|
|
247
|
+
lat||la|Latin|latin
|
|
248
|
+
lav||lv|Latvian|letton
|
|
249
|
+
lez|||Lezghian|lezghien
|
|
250
|
+
lim||li|Limburgan; Limburger; Limburgish|limbourgeois
|
|
251
|
+
lin||ln|Lingala|lingala
|
|
252
|
+
lit||lt|Lithuanian|lituanien
|
|
253
|
+
lol|||Mongo|mongo
|
|
254
|
+
loz|||Lozi|lozi
|
|
255
|
+
ltz||lb|Luxembourgish; Letzeburgesch|luxembourgeois
|
|
256
|
+
lua|||Luba-Lulua|luba-lulua
|
|
257
|
+
lub||lu|Luba-Katanga|luba-katanga
|
|
258
|
+
lug||lg|Ganda|ganda
|
|
259
|
+
lui|||Luiseno|luiseno
|
|
260
|
+
lun|||Lunda|lunda
|
|
261
|
+
luo|||Luo (Kenya and Tanzania)|luo (Kenya et Tanzanie)
|
|
262
|
+
lus|||Lushai|lushai
|
|
263
|
+
mac|mkd|mk|Macedonian|macédonien
|
|
264
|
+
mad|||Madurese|madourais
|
|
265
|
+
mag|||Magahi|magahi
|
|
266
|
+
mah||mh|Marshallese|marshall
|
|
267
|
+
mai|||Maithili|maithili
|
|
268
|
+
mak|||Makasar|makassar
|
|
269
|
+
mal||ml|Malayalam|malayalam
|
|
270
|
+
man|||Mandingo|mandingue
|
|
271
|
+
mao|mri|mi|Maori|maori
|
|
272
|
+
map|||Austronesian languages|austronésiennes, langues
|
|
273
|
+
mar||mr|Marathi|marathe
|
|
274
|
+
mas|||Masai|massaï
|
|
275
|
+
may|msa|ms|Malay|malais
|
|
276
|
+
mdf|||Moksha|moksa
|
|
277
|
+
mdr|||Mandar|mandar
|
|
278
|
+
men|||Mende|mendé
|
|
279
|
+
mga|||Irish, Middle (900-1200)|irlandais moyen (900-1200)
|
|
280
|
+
mic|||Mi'kmaq; Micmac|mi'kmaq; micmac
|
|
281
|
+
min|||Minangkabau|minangkabau
|
|
282
|
+
mis|||Uncoded languages|langues non codées
|
|
283
|
+
mkh|||Mon-Khmer languages|môn-khmer, langues
|
|
284
|
+
mlg||mg|Malagasy|malgache
|
|
285
|
+
mlt||mt|Maltese|maltais
|
|
286
|
+
mnc|||Manchu|mandchou
|
|
287
|
+
mni|||Manipuri|manipuri
|
|
288
|
+
mno|||Manobo languages|manobo, langues
|
|
289
|
+
moh|||Mohawk|mohawk
|
|
290
|
+
mon||mn|Mongolian|mongol
|
|
291
|
+
mos|||Mossi|moré
|
|
292
|
+
mul|||Multiple languages|multilingue
|
|
293
|
+
mun|||Munda languages|mounda, langues
|
|
294
|
+
mus|||Creek|muskogee
|
|
295
|
+
mwl|||Mirandese|mirandais
|
|
296
|
+
mwr|||Marwari|marvari
|
|
297
|
+
myn|||Mayan languages|maya, langues
|
|
298
|
+
myv|||Erzya|erza
|
|
299
|
+
nah|||Nahuatl languages|nahuatl, langues
|
|
300
|
+
nai|||North American Indian languages|nord-amérindiennes, langues
|
|
301
|
+
nap|||Neapolitan|napolitain
|
|
302
|
+
nau||na|Nauru|nauruan
|
|
303
|
+
nav||nv|Navajo; Navaho|navaho
|
|
304
|
+
nbl||nr|South Ndebele|ndébélé du Sud
|
|
305
|
+
nde||nd|North Ndebele|ndébélé du Nord
|
|
306
|
+
ndo||ng|Ndonga|ndonga
|
|
307
|
+
nds|||Low German; Low Saxon; German, Low; Saxon, Low|bas allemand; bas saxon; allemand, bas; saxon, bas
|
|
308
|
+
nep||ne|Nepali|népalais
|
|
309
|
+
new|||Nepal Bhasa; Newar; Newari|nepal bhasa; néwar; newari
|
|
310
|
+
nia|||Nias|nias
|
|
311
|
+
nic|||Niger-Kordofanian languages|nigéro-kordofaniennes, langues
|
|
312
|
+
niu|||Niuean|niué
|
|
313
|
+
nno||nn|Norwegian Nynorsk|norvégien nynorsk
|
|
314
|
+
nob||nb|Norwegian Bokmål|norvégien bokmål
|
|
315
|
+
nog|||Nogai|nogaï; nogay
|
|
316
|
+
non|||Norse, Old|norrois, vieux
|
|
317
|
+
nor||no|Norwegian|norvégien
|
|
318
|
+
nqo|||N'Ko|n'ko
|
|
319
|
+
nso|||Pedi; Sepedi; Northern Sotho|pedi; sepedi; sotho du Nord
|
|
320
|
+
nub|||Nubian languages|nubiennes, langues
|
|
321
|
+
nwc|||Classical Newari; Old Newari; Classical Nepal Bhasa|newari classique
|
|
322
|
+
nya||ny|Chichewa; Chewa; Nyanja|chichewa; chewa; nyanja
|
|
323
|
+
nym|||Nyamwezi|nyamwezi
|
|
324
|
+
nyn|||Nyankole|nyankolé
|
|
325
|
+
nyo|||Nyoro|nyoro
|
|
326
|
+
nzi|||Nzima|nzema
|
|
327
|
+
oci||oc|Occitan (post 1500)|occitan (après 1500)
|
|
328
|
+
oji||oj|Ojibwa|ojibwa
|
|
329
|
+
ori||or|Oriya|oriya
|
|
330
|
+
orm||om|Oromo|galla
|
|
331
|
+
osa|||Osage|osage
|
|
332
|
+
oss||os|Ossetian; Ossetic|ossète
|
|
333
|
+
ota|||Turkish, Ottoman (1500-1928)|turc ottoman (1500-1928)
|
|
334
|
+
oto|||Otomian languages|otomi, langues
|
|
335
|
+
paa|||Papuan languages|papoues, langues
|
|
336
|
+
pag|||Pangasinan|pangasinan
|
|
337
|
+
pal|||Pahlavi|pahlavi
|
|
338
|
+
pam|||Pampanga; Kapampangan|pampangan
|
|
339
|
+
pan||pa|Panjabi; Punjabi|pendjabi
|
|
340
|
+
pap|||Papiamento|papiamento
|
|
341
|
+
pau|||Palauan|palau
|
|
342
|
+
peo|||Persian, Old (ca.600-400 B.C.)|perse, vieux (ca. 600-400 av. J.-C.)
|
|
343
|
+
per|fas|fa|Persian|persan
|
|
344
|
+
phi|||Philippine languages|philippines, langues
|
|
345
|
+
phn|||Phoenician|phénicien
|
|
346
|
+
pli||pi|Pali|pali
|
|
347
|
+
pol||pl|Polish|polonais
|
|
348
|
+
pon|||Pohnpeian|pohnpei
|
|
349
|
+
por||pt|Portuguese|portugais
|
|
350
|
+
pra|||Prakrit languages|prâkrit, langues
|
|
351
|
+
pro|||Provençal, Old (to 1500); Occitan, Old (to 1500)|provençal ancien (jusqu'à 1500); occitan ancien (jusqu'à 1500)
|
|
352
|
+
pus||ps|Pushto; Pashto|pachto
|
|
353
|
+
qaa-qtz|||Reserved for local use|réservée à l'usage local
|
|
354
|
+
que||qu|Quechua|quechua
|
|
355
|
+
raj|||Rajasthani|rajasthani
|
|
356
|
+
rap|||Rapanui|rapanui
|
|
357
|
+
rar|||Rarotongan; Cook Islands Maori|rarotonga; maori des îles Cook
|
|
358
|
+
roa|||Romance languages|romanes, langues
|
|
359
|
+
roh||rm|Romansh|romanche
|
|
360
|
+
rom|||Romany|tsigane
|
|
361
|
+
rum|ron|ro|Romanian; Moldavian; Moldovan|roumain; moldave
|
|
362
|
+
run||rn|Rundi|rundi
|
|
363
|
+
rup|||Aromanian; Arumanian; Macedo-Romanian|aroumain; macédo-roumain
|
|
364
|
+
rus||ru|Russian|russe
|
|
365
|
+
sad|||Sandawe|sandawe
|
|
366
|
+
sag||sg|Sango|sango
|
|
367
|
+
sah|||Yakut|iakoute
|
|
368
|
+
sai|||South American Indian languages|sud-amérindiennes, langues
|
|
369
|
+
sal|||Salishan languages|salishennes, langues
|
|
370
|
+
sam|||Samaritan Aramaic|samaritain
|
|
371
|
+
san||sa|Sanskrit|sanskrit
|
|
372
|
+
sas|||Sasak|sasak
|
|
373
|
+
sat|||Santali|santal
|
|
374
|
+
scn|||Sicilian|sicilien
|
|
375
|
+
sco|||Scots|écossais
|
|
376
|
+
sel|||Selkup|selkoupe
|
|
377
|
+
sem|||Semitic languages|sémitiques, langues
|
|
378
|
+
sga|||Irish, Old (to 900)|irlandais ancien (jusqu'à 900)
|
|
379
|
+
sgn|||Sign Languages|langues des signes
|
|
380
|
+
shn|||Shan|chan
|
|
381
|
+
sid|||Sidamo|sidamo
|
|
382
|
+
sin||si|Sinhala; Sinhalese|singhalais
|
|
383
|
+
sio|||Siouan languages|sioux, langues
|
|
384
|
+
sit|||Sino-Tibetan languages|sino-tibétaines, langues
|
|
385
|
+
sla|||Slavic languages|slaves, langues
|
|
386
|
+
slo|slk|sk|Slovak|slovaque
|
|
387
|
+
slv||sl|Slovenian|slovène
|
|
388
|
+
sma|||Southern Sami|sami du Sud
|
|
389
|
+
sme||se|Northern Sami|sami du Nord
|
|
390
|
+
smi|||Sami languages|sames, langues
|
|
391
|
+
smj|||Lule Sami|sami de Lule
|
|
392
|
+
smn|||Inari Sami|sami d'Inari
|
|
393
|
+
smo||sm|Samoan|samoan
|
|
394
|
+
sms|||Skolt Sami|sami skolt
|
|
395
|
+
sna||sn|Shona|shona
|
|
396
|
+
snd||sd|Sindhi|sindhi
|
|
397
|
+
snk|||Soninke|soninké
|
|
398
|
+
sog|||Sogdian|sogdien
|
|
399
|
+
som||so|Somali|somali
|
|
400
|
+
son|||Songhai languages|songhai, langues
|
|
401
|
+
sot||st|Sotho, Southern|sotho du Sud
|
|
402
|
+
spa||es|Spanish; Castilian|espagnol; castillan
|
|
403
|
+
srd||sc|Sardinian|sarde
|
|
404
|
+
srn|||Sranan Tongo|sranan tongo
|
|
405
|
+
srp||sr|Serbian|serbe
|
|
406
|
+
srr|||Serer|sérère
|
|
407
|
+
ssa|||Nilo-Saharan languages|nilo-sahariennes, langues
|
|
408
|
+
ssw||ss|Swati|swati
|
|
409
|
+
suk|||Sukuma|sukuma
|
|
410
|
+
sun||su|Sundanese|soundanais
|
|
411
|
+
sus|||Susu|soussou
|
|
412
|
+
sux|||Sumerian|sumérien
|
|
413
|
+
swa||sw|Swahili|swahili
|
|
414
|
+
swe||sv|Swedish|suédois
|
|
415
|
+
syc|||Classical Syriac|syriaque classique
|
|
416
|
+
syr|||Syriac|syriaque
|
|
417
|
+
tah||ty|Tahitian|tahitien
|
|
418
|
+
tai|||Tai languages|tai, langues
|
|
419
|
+
tam||ta|Tamil|tamoul
|
|
420
|
+
tat||tt|Tatar|tatar
|
|
421
|
+
tel||te|Telugu|télougou
|
|
422
|
+
tem|||Timne|temne
|
|
423
|
+
ter|||Tereno|tereno
|
|
424
|
+
tet|||Tetum|tetum
|
|
425
|
+
tgk||tg|Tajik|tadjik
|
|
426
|
+
tgl||tl|Tagalog|tagalog
|
|
427
|
+
tha||th|Thai|thaï
|
|
428
|
+
tib|bod|bo|Tibetan|tibétain
|
|
429
|
+
tig|||Tigre|tigré
|
|
430
|
+
tir||ti|Tigrinya|tigrigna
|
|
431
|
+
tiv|||Tiv|tiv
|
|
432
|
+
tkl|||Tokelau|tokelau
|
|
433
|
+
tlh|||Klingon; tlhIngan-Hol|klingon
|
|
434
|
+
tli|||Tlingit|tlingit
|
|
435
|
+
tmh|||Tamashek|tamacheq
|
|
436
|
+
tog|||Tonga (Nyasa)|tonga (Nyasa)
|
|
437
|
+
ton||to|Tonga (Tonga Islands)|tongan (Îles Tonga)
|
|
438
|
+
tpi|||Tok Pisin|tok pisin
|
|
439
|
+
tsi|||Tsimshian|tsimshian
|
|
440
|
+
tsn||tn|Tswana|tswana
|
|
441
|
+
tso||ts|Tsonga|tsonga
|
|
442
|
+
tuk||tk|Turkmen|turkmène
|
|
443
|
+
tum|||Tumbuka|tumbuka
|
|
444
|
+
tup|||Tupi languages|tupi, langues
|
|
445
|
+
tur||tr|Turkish|turc
|
|
446
|
+
tut|||Altaic languages|altaïques, langues
|
|
447
|
+
tvl|||Tuvalu|tuvalu
|
|
448
|
+
twi||tw|Twi|twi
|
|
449
|
+
tyv|||Tuvinian|touva
|
|
450
|
+
udm|||Udmurt|oudmourte
|
|
451
|
+
uga|||Ugaritic|ougaritique
|
|
452
|
+
uig||ug|Uighur; Uyghur|ouïgour
|
|
453
|
+
ukr||uk|Ukrainian|ukrainien
|
|
454
|
+
umb|||Umbundu|umbundu
|
|
455
|
+
und|||Undetermined|indéterminée
|
|
456
|
+
urd||ur|Urdu|ourdou
|
|
457
|
+
uzb||uz|Uzbek|ouszbek
|
|
458
|
+
vai|||Vai|vaï
|
|
459
|
+
ven||ve|Venda|venda
|
|
460
|
+
vie||vi|Vietnamese|vietnamien
|
|
461
|
+
vol||vo|Volapük|volapük
|
|
462
|
+
vot|||Votic|vote
|
|
463
|
+
wak|||Wakashan languages|wakashanes, langues
|
|
464
|
+
wal|||Wolaitta; Wolaytta|wolaitta; wolaytta
|
|
465
|
+
war|||Waray|waray
|
|
466
|
+
was|||Washo|washo
|
|
467
|
+
wel|cym|cy|Welsh|gallois
|
|
468
|
+
wen|||Sorbian languages|sorabes, langues
|
|
469
|
+
wln||wa|Walloon|wallon
|
|
470
|
+
wol||wo|Wolof|wolof
|
|
471
|
+
xal|||Kalmyk; Oirat|kalmouk; oïrat
|
|
472
|
+
xho||xh|Xhosa|xhosa
|
|
473
|
+
yao|||Yao|yao
|
|
474
|
+
yap|||Yapese|yapois
|
|
475
|
+
yid||yi|Yiddish|yiddish
|
|
476
|
+
yor||yo|Yoruba|yoruba
|
|
477
|
+
ypk|||Yupik languages|yupik, langues
|
|
478
|
+
zap|||Zapotec|zapotèque
|
|
479
|
+
zbl|||Blissymbols; Blissymbolics; Bliss|symboles Bliss; Bliss
|
|
480
|
+
zen|||Zenaga|zenaga
|
|
481
|
+
zgh|||Standard Moroccan Tamazight|amazighe standard marocain
|
|
482
|
+
zha||za|Zhuang; Chuang|zhuang; chuang
|
|
483
|
+
znd|||Zande languages|zandé, langues
|
|
484
|
+
zul||zu|Zulu|zoulou
|
|
485
|
+
zun|||Zuni|zuni
|
|
486
|
+
zxx|||No linguistic content; Not applicable|pas de contenu linguistique; non applicable
|
|
487
|
+
zza|||Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki|zaza; dimili; dimli; kirdki; kirmanjki; zazaki
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NEU
|
|
4
|
+
module MODS
|
|
5
|
+
# ISO 639 code -> English language name, for projecting a code-only
|
|
6
|
+
# languageTerm as something a reader (and a Solr facet) can use.
|
|
7
|
+
#
|
|
8
|
+
# This is the one place a code is translated, on purpose. The alternative --
|
|
9
|
+
# mapping in each consumer's display layer -- leaves Solr indexing "eng"
|
|
10
|
+
# while the page shows "English", so the language facet reads in codes. One
|
|
11
|
+
# table, read once, keeps the projection, the display and the index agreed.
|
|
12
|
+
#
|
|
13
|
+
# Roles are deliberately NOT translated here; a MARC relator is a display
|
|
14
|
+
# label, and the label vocabulary belongs to the consumer (see README).
|
|
15
|
+
module LanguageCodes
|
|
16
|
+
# The Library of Congress ISO 639-2 registry, vendored byte-for-byte from
|
|
17
|
+
# https://www.loc.gov/standards/iso639-2/ISO-639-2_utf-8.txt so its
|
|
18
|
+
# provenance is a diff rather than a claim. Pipe-delimited:
|
|
19
|
+
# alpha3-bibliographic | alpha3-terminologic | alpha2 | English | French.
|
|
20
|
+
# It lives outside lib/*.rb because the English names carry non-ASCII and
|
|
21
|
+
# the source-purity spec holds the Ruby files to ASCII.
|
|
22
|
+
REGISTRY_PATH = File.expand_path("data/iso639-2.txt", __dir__)
|
|
23
|
+
|
|
24
|
+
# Every alpha-3 bibliographic, alpha-3 terminologic and alpha-2 code that
|
|
25
|
+
# the registry defines, each pointing at its English name. MODS records
|
|
26
|
+
# declare authority="iso639-2b" most often, but iso639-1 and the
|
|
27
|
+
# terminologic codes are equally valid, and a lookup table costs the same
|
|
28
|
+
# whether it holds one form or all three.
|
|
29
|
+
TERMS = File.readlines(REGISTRY_PATH, encoding: "bom|utf-8").each_with_object({}) do |line, terms|
|
|
30
|
+
bibliographic, terminologic, alpha2, english = line.chomp.split("|")
|
|
31
|
+
next if english.to_s.empty?
|
|
32
|
+
|
|
33
|
+
# The registry lists synonyms in preference order, so "Spanish;
|
|
34
|
+
# Castilian" becomes "Spanish". Rendering every synonym would make a
|
|
35
|
+
# facet value nobody would click.
|
|
36
|
+
name = english.split(";").first.strip
|
|
37
|
+
[bibliographic, terminologic, alpha2].each do |code|
|
|
38
|
+
terms[code] = name unless code.to_s.empty?
|
|
39
|
+
end
|
|
40
|
+
end.freeze
|
|
41
|
+
|
|
42
|
+
# The English name for a code, or the code itself when the registry does
|
|
43
|
+
# not define it. Never returns nil for a present value: an unrecognised
|
|
44
|
+
# code is still what the record says, and dropping it would lose data.
|
|
45
|
+
def self.term(code)
|
|
46
|
+
key = code.to_s.strip
|
|
47
|
+
return key if key.empty?
|
|
48
|
+
|
|
49
|
+
TERMS.fetch(key.downcase, key)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
data/lib/neu/mods/projection.rb
CHANGED
|
@@ -116,9 +116,7 @@ module NEU
|
|
|
116
116
|
|
|
117
117
|
# Every <topic> under any top-level <subject> (the access-copy projection,
|
|
118
118
|
# equivalent to Atlas's extract_topical_subjects).
|
|
119
|
-
def topical_subjects
|
|
120
|
-
doc.xpath("/mods:mods/mods:subject/mods:topic", NAMESPACE).map { |t| clean(t.text) }
|
|
121
|
-
end
|
|
119
|
+
def topical_subjects = texts_at("/mods:mods/mods:subject/mods:topic")
|
|
122
120
|
|
|
123
121
|
# The other subject axes. Cerberus's IPTC ingest writes subject/geographic
|
|
124
122
|
# from the IPTC City and State fields, so this one was also being written
|
|
@@ -168,12 +166,18 @@ module NEU
|
|
|
168
166
|
|
|
169
167
|
# --- Scalars / simple arrays --------------------------------------------
|
|
170
168
|
|
|
169
|
+
# Prefer the type="text" term, and translate a code-only one through the
|
|
170
|
+
# ISO 639 registry. A record saying `eng` projects "English", so the
|
|
171
|
+
# display and the Solr language facet read the same value rather than the
|
|
172
|
+
# facet showing codes. An unrecognised code survives as itself.
|
|
171
173
|
def languages
|
|
172
|
-
doc.xpath("/mods:mods/mods:language", NAMESPACE).
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
174
|
+
doc.xpath("/mods:mods/mods:language", NAMESPACE).filter_map do |lang|
|
|
175
|
+
text = lang.at_xpath("mods:languageTerm[@type='text']", NAMESPACE)
|
|
176
|
+
next clean(text.text) if text
|
|
177
|
+
|
|
178
|
+
code = clean(lang.at_xpath("mods:languageTerm", NAMESPACE)&.text)
|
|
179
|
+
code && LanguageCodes.term(code)
|
|
180
|
+
end
|
|
177
181
|
end
|
|
178
182
|
|
|
179
183
|
# MODS repeats typeOfResource, and repeats physicalDescription (and form and
|
|
@@ -184,9 +188,7 @@ module NEU
|
|
|
184
188
|
def extent = texts_at("/mods:mods/mods:physicalDescription/mods:extent")
|
|
185
189
|
def digital_origin = texts_at("/mods:mods/mods:physicalDescription/mods:digitalOrigin")
|
|
186
190
|
|
|
187
|
-
def genres
|
|
188
|
-
doc.xpath("/mods:mods/mods:genre", NAMESPACE).map { |g| clean(g.text) }
|
|
189
|
-
end
|
|
191
|
+
def genres = texts_at("/mods:mods/mods:genre")
|
|
190
192
|
|
|
191
193
|
# originInfo repeats, and so do publisher and edition within one. Cerberus's
|
|
192
194
|
# IPTC ingest writes the publisher from the IPTC Source field on every batch,
|
|
@@ -257,9 +259,7 @@ module NEU
|
|
|
257
259
|
end
|
|
258
260
|
end
|
|
259
261
|
|
|
260
|
-
def identifiers
|
|
261
|
-
doc.xpath("/mods:mods/mods:identifier", NAMESPACE).map { |i| clean(i.text) }
|
|
262
|
-
end
|
|
262
|
+
def identifiers = texts_at("/mods:mods/mods:identifier")
|
|
263
263
|
|
|
264
264
|
def permanent_url
|
|
265
265
|
node = doc.at_xpath("/mods:mods/mods:identifier[@type='hdl']", NAMESPACE)
|
|
@@ -461,8 +461,11 @@ module NEU
|
|
|
461
461
|
node ? NEU::MODS.canonical_ws(node.text) : ""
|
|
462
462
|
end
|
|
463
463
|
|
|
464
|
-
# The :many counterpart of #text_at
|
|
465
|
-
#
|
|
464
|
+
# The :many counterpart of #text_at, and the one way this file builds a
|
|
465
|
+
# string array. Blank members drop out rather than arriving as nil: a
|
|
466
|
+
# record template that seeds an empty <topic> for an edit form to fill --
|
|
467
|
+
# which is exactly what Atlas's MODSBuilder writes -- otherwise projects
|
|
468
|
+
# [nil], and every consumer of that array has to guard for it.
|
|
466
469
|
def texts_at(xpath)
|
|
467
470
|
doc.xpath(xpath, NAMESPACE).filter_map { |node| clean(node.text) }
|
|
468
471
|
end
|
data/lib/neu-mods.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: neu-mods
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Cliff
|
|
@@ -68,7 +68,9 @@ files:
|
|
|
68
68
|
- Rakefile
|
|
69
69
|
- lib/neu-mods.rb
|
|
70
70
|
- lib/neu/mods/canonicalize.rb
|
|
71
|
+
- lib/neu/mods/data/iso639-2.txt
|
|
71
72
|
- lib/neu/mods/document.rb
|
|
73
|
+
- lib/neu/mods/language_codes.rb
|
|
72
74
|
- lib/neu/mods/projection.rb
|
|
73
75
|
- lib/neu/mods/selectors.rb
|
|
74
76
|
- lib/neu/mods/version.rb
|