multilang 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in multilang.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Takahiro Kondo
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,93 @@
1
+ # What is multilang
2
+
3
+ Support multilingualization.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'multilang'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install multilang
18
+
19
+ ## Usage
20
+
21
+ You will support multilingualization to following:
22
+
23
+ require 'multilang'
24
+
25
+ module Tokenizer
26
+ class English
27
+
28
+ # register Tokenizer::English to Tokenizer as English
29
+ Multilang.register self
30
+
31
+ end
32
+
33
+ class Japanese
34
+
35
+ # Class.#include is okay
36
+ include Multilang
37
+
38
+ end
39
+ end
40
+
41
+ You can use the multilingualized module to following:
42
+
43
+ english_tokenizer = Tokenizer[:en].new
44
+ japanese_tokenizer = Tokenizer['Japanese'].new
45
+
46
+ ### Register regardless name of class
47
+
48
+ By specifying `:as` option, you can register regardless name of class:
49
+
50
+ module Tokenizer
51
+ class E
52
+ Multilang.register self, :as => 'English'
53
+ end
54
+
55
+ class J
56
+
57
+ # ISO639-2 or ISO639-1 is okay
58
+ # (http://www.loc.gov/standards/iso639-2/php/code_list.php)
59
+ Multilang.register self, :as => :ja
60
+
61
+ end
62
+ end
63
+
64
+ ### Process at getting the class (or module) first
65
+
66
+ By giving a block to the `Multilang.#register`, you can execute code arbitrarily
67
+ at getting an object first from a multilingualized module:
68
+
69
+ module Tokenizer
70
+ class English
71
+ Multilang.register self do
72
+ # execute once at getting first
73
+ end
74
+ end
75
+ end
76
+
77
+ By specifying `:with` option, you can call `Kernel.#require`:
78
+
79
+ module Tokenizer
80
+ class English
81
+ Multilang.register self, :with => 'tokenizer/en'
82
+ end
83
+ end
84
+
85
+ Of course you can specify both a block and `:with` option.
86
+
87
+ ## Contributing
88
+
89
+ 1. Fork it
90
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
91
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
92
+ 4. Push to the branch (`git push origin my-new-feature`)
93
+ 5. Create new Pull Request
@@ -0,0 +1,26 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+ require 'yaml'
5
+
6
+ desc 'Update language_names.yaml that refer from http://www.loc.gov/standards/iso639-2/php/code_list.php'
7
+ task :update do
8
+ document = Nokogiri::HTML(open('http://www.loc.gov/standards/iso639-2/php/code_list.php').read)
9
+ table = document.xpath('//h1/following-sibling::table')
10
+
11
+ language_names = table.xpath('tr/td[@scope="row"]/parent::tr').map do |row|
12
+ iso_639_2, iso_639_1, name = row.children.map(&:text).map(&:strip).reject(&:empty?)
13
+
14
+ if match = /([a-z]{3})\s*\(B\)/.match(iso_639_2)
15
+ iso_639_2 = match.captures[0]
16
+ end
17
+
18
+ aliases = [iso_639_2]
19
+ aliases << iso_639_1 unless iso_639_1 == "\u00a0"
20
+ [name, aliases]
21
+ end
22
+
23
+ File.open(File.join(File.dirname(__FILE__), %w(lib multilang language_names.yaml)), 'w') do |file|
24
+ YAML.dump(Hash[language_names], file)
25
+ end
26
+ end
@@ -0,0 +1,53 @@
1
+ require 'multilang/version'
2
+ require 'multilang/slot'
3
+
4
+ module Multilang
5
+ SLOT_KEY = :@__multilang_slot__
6
+
7
+ # Support the class or the module to multilingualization.
8
+ #
9
+ # @param [Class, Module] mod the class (or the module) to register
10
+ # @param [Hash] options
11
+ # @option options [String] :as the language name
12
+ # @option options [Symbol] :as the language code (ISO639-2 or ISO639-1)
13
+ # @option options [String] :with the path of the file to dependent
14
+ # @yield call once at getting the class (or the module) first
15
+ #
16
+ # @see Multilang::Slot#[]
17
+ def self.register(mod, options = {}, &first)
18
+ type = mod.class.name.downcase
19
+ raise TypeError, "can't convert #{mod.class} into #{Module}" unless mod.is_a?(Module)
20
+ raise ArgumentError, "anonymous #{type} can't register" if mod.name.nil?
21
+
22
+ namespace = mod.name.split('::')
23
+ class_name = namespace.pop
24
+ language_spec = options[:as] || class_name
25
+
26
+ if options[:with]
27
+ path = options[:with]
28
+
29
+ first = if block_given?
30
+ f = first
31
+ lambda { require path; f.call }
32
+ else
33
+ lambda { require path }
34
+ end
35
+ end
36
+
37
+ raise ArgumentError, "can't permit top-level #{type}" if namespace.empty?
38
+ parent = namespace.inject(Object) { |parent, name| parent.const_get(name) }
39
+
40
+ slot = if parent.instance_variable_defined?(SLOT_KEY)
41
+ parent.instance_variable_get(SLOT_KEY)
42
+ else
43
+ parent.extend(Slot::Access)
44
+ parent.instance_variable_set(SLOT_KEY, Slot.new)
45
+ end
46
+
47
+ slot.register(language_spec, mod, &first)
48
+ end
49
+
50
+ def self.included(klass)
51
+ register klass
52
+ end
53
+ end
@@ -0,0 +1,41 @@
1
+ require 'yaml'
2
+
3
+ module Multilang
4
+ module LanguageNames
5
+ NAME_MAP, CODE_MAP = begin
6
+ name_map = {}
7
+ code_map = {}
8
+
9
+ store = lambda do |map, key, value|
10
+ key = key.downcase
11
+ raise ArgumentError, "already defined #{key.inspect} => #{map[key].inspect} in map" if map[key]
12
+ map[key] = value
13
+ end
14
+
15
+ path = File.join(File.dirname(__FILE__), 'language_names.yaml')
16
+
17
+ YAML.load_file(path).each do |name, codes|
18
+ store[name_map, name, name]
19
+ codes.each { |code| store[code_map, code, name] }
20
+ end
21
+
22
+ [name_map, code_map]
23
+ end
24
+
25
+ # Convert from the language specifier to the language name.
26
+ #
27
+ # @param [String] spec the language name
28
+ # @param [Symbol] spec the language code (ISO639-2 or ISO639-1)
29
+ # @return [String] normalized language name
30
+ def self.[](spec)
31
+ map, key = case spec
32
+ when String then [NAME_MAP, spec]
33
+ when Symbol then [CODE_MAP, spec.to_s]
34
+ else raise TypeError, "can't convert #{spec.class} into #{String} or #{Symbol}"
35
+ end
36
+
37
+ map[key.downcase] or raise ArgumentError, "#{spec.inspect} language specifier does not defined"
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,1155 @@
1
+ ---
2
+ Afar:
3
+ - aar
4
+ - aa
5
+ Abkhazian:
6
+ - abk
7
+ - ab
8
+ Achinese:
9
+ - ace
10
+ Acoli:
11
+ - ach
12
+ Adangme:
13
+ - ada
14
+ Adyghe; Adygei:
15
+ - ady
16
+ Afro-Asiatic languages:
17
+ - afa
18
+ Afrihili:
19
+ - afh
20
+ Afrikaans:
21
+ - afr
22
+ - af
23
+ Ainu:
24
+ - ain
25
+ Akan:
26
+ - aka
27
+ - ak
28
+ Akkadian:
29
+ - akk
30
+ Albanian:
31
+ - alb
32
+ - sq
33
+ Aleut:
34
+ - ale
35
+ Algonquian languages:
36
+ - alg
37
+ Southern Altai:
38
+ - alt
39
+ Amharic:
40
+ - amh
41
+ - am
42
+ English, Old (ca.450-1100):
43
+ - ang
44
+ Angika:
45
+ - anp
46
+ Apache languages:
47
+ - apa
48
+ Arabic:
49
+ - ara
50
+ - ar
51
+ Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE):
52
+ - arc
53
+ Aragonese:
54
+ - arg
55
+ - an
56
+ Armenian:
57
+ - arm
58
+ - hy
59
+ Mapudungun; Mapuche:
60
+ - arn
61
+ Arapaho:
62
+ - arp
63
+ Artificial languages:
64
+ - art
65
+ Arawak:
66
+ - arw
67
+ Assamese:
68
+ - asm
69
+ - as
70
+ Asturian; Bable; Leonese; Asturleonese:
71
+ - ast
72
+ Athapascan languages:
73
+ - ath
74
+ Australian languages:
75
+ - aus
76
+ Avaric:
77
+ - ava
78
+ - av
79
+ Avestan:
80
+ - ave
81
+ - ae
82
+ Awadhi:
83
+ - awa
84
+ Aymara:
85
+ - aym
86
+ - ay
87
+ Azerbaijani:
88
+ - aze
89
+ - az
90
+ Banda languages:
91
+ - bad
92
+ Bamileke languages:
93
+ - bai
94
+ Bashkir:
95
+ - bak
96
+ - ba
97
+ Baluchi:
98
+ - bal
99
+ Bambara:
100
+ - bam
101
+ - bm
102
+ Balinese:
103
+ - ban
104
+ Basque:
105
+ - baq
106
+ - eu
107
+ Basa:
108
+ - bas
109
+ Baltic languages:
110
+ - bat
111
+ Beja; Bedawiyet:
112
+ - bej
113
+ Belarusian:
114
+ - bel
115
+ - be
116
+ Bemba:
117
+ - bem
118
+ Bengali:
119
+ - ben
120
+ - bn
121
+ Berber languages:
122
+ - ber
123
+ Bhojpuri:
124
+ - bho
125
+ Bihari languages:
126
+ - bih
127
+ - bh
128
+ Bikol:
129
+ - bik
130
+ Bini; Edo:
131
+ - bin
132
+ Bislama:
133
+ - bis
134
+ - bi
135
+ Siksika:
136
+ - bla
137
+ Bantu languages:
138
+ - bnt
139
+ Tibetan:
140
+ - tib
141
+ - bo
142
+ Bosnian:
143
+ - bos
144
+ - bs
145
+ Braj:
146
+ - bra
147
+ Breton:
148
+ - bre
149
+ - br
150
+ Batak languages:
151
+ - btk
152
+ Buriat:
153
+ - bua
154
+ Buginese:
155
+ - bug
156
+ Bulgarian:
157
+ - bul
158
+ - bg
159
+ Burmese:
160
+ - bur
161
+ - my
162
+ Blin; Bilin:
163
+ - byn
164
+ Caddo:
165
+ - cad
166
+ Central American Indian languages:
167
+ - cai
168
+ Galibi Carib:
169
+ - car
170
+ Catalan; Valencian:
171
+ - cat
172
+ - ca
173
+ Caucasian languages:
174
+ - cau
175
+ Cebuano:
176
+ - ceb
177
+ Celtic languages:
178
+ - cel
179
+ Czech:
180
+ - cze
181
+ - cs
182
+ Chamorro:
183
+ - cha
184
+ - ch
185
+ Chibcha:
186
+ - chb
187
+ Chechen:
188
+ - che
189
+ - ce
190
+ Chagatai:
191
+ - chg
192
+ Chinese:
193
+ - chi
194
+ - zh
195
+ Chuukese:
196
+ - chk
197
+ Mari:
198
+ - chm
199
+ Chinook jargon:
200
+ - chn
201
+ Choctaw:
202
+ - cho
203
+ Chipewyan; Dene Suline:
204
+ - chp
205
+ Cherokee:
206
+ - chr
207
+ Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic:
208
+ - chu
209
+ - cu
210
+ Chuvash:
211
+ - chv
212
+ - cv
213
+ Cheyenne:
214
+ - chy
215
+ Chamic languages:
216
+ - cmc
217
+ Coptic:
218
+ - cop
219
+ Cornish:
220
+ - cor
221
+ - kw
222
+ Corsican:
223
+ - cos
224
+ - co
225
+ Creoles and pidgins, English based:
226
+ - cpe
227
+ Creoles and pidgins, French-based:
228
+ - cpf
229
+ Creoles and pidgins, Portuguese-based:
230
+ - cpp
231
+ Cree:
232
+ - cre
233
+ - cr
234
+ Crimean Tatar; Crimean Turkish:
235
+ - crh
236
+ Creoles and pidgins:
237
+ - crp
238
+ Kashubian:
239
+ - csb
240
+ Cushitic languages:
241
+ - cus
242
+ Welsh:
243
+ - wel
244
+ - cy
245
+ Dakota:
246
+ - dak
247
+ Danish:
248
+ - dan
249
+ - da
250
+ Dargwa:
251
+ - dar
252
+ Land Dayak languages:
253
+ - day
254
+ Delaware:
255
+ - del
256
+ Slave (Athapascan):
257
+ - den
258
+ German:
259
+ - ger
260
+ - de
261
+ Dogrib:
262
+ - dgr
263
+ Dinka:
264
+ - din
265
+ Divehi; Dhivehi; Maldivian:
266
+ - div
267
+ - dv
268
+ Dogri:
269
+ - doi
270
+ Dravidian languages:
271
+ - dra
272
+ Lower Sorbian:
273
+ - dsb
274
+ Duala:
275
+ - dua
276
+ Dutch, Middle (ca.1050-1350):
277
+ - dum
278
+ Dutch; Flemish:
279
+ - dut
280
+ - nl
281
+ Dyula:
282
+ - dyu
283
+ Dzongkha:
284
+ - dzo
285
+ - dz
286
+ Efik:
287
+ - efi
288
+ Egyptian (Ancient):
289
+ - egy
290
+ Ekajuk:
291
+ - eka
292
+ Greek, Modern (1453-):
293
+ - gre
294
+ - el
295
+ Elamite:
296
+ - elx
297
+ English:
298
+ - eng
299
+ - en
300
+ English, Middle (1100-1500):
301
+ - enm
302
+ Esperanto:
303
+ - epo
304
+ - eo
305
+ Estonian:
306
+ - est
307
+ - et
308
+ Ewe:
309
+ - ewe
310
+ - ee
311
+ Ewondo:
312
+ - ewo
313
+ Fang:
314
+ - fan
315
+ Faroese:
316
+ - fao
317
+ - fo
318
+ Persian:
319
+ - per
320
+ - fa
321
+ Fanti:
322
+ - fat
323
+ Fijian:
324
+ - fij
325
+ - fj
326
+ Filipino; Pilipino:
327
+ - fil
328
+ Finnish:
329
+ - fin
330
+ - fi
331
+ Finno-Ugrian languages:
332
+ - fiu
333
+ Fon:
334
+ - fon
335
+ French:
336
+ - fre
337
+ - fr
338
+ French, Middle (ca.1400-1600):
339
+ - frm
340
+ French, Old (842-ca.1400):
341
+ - fro
342
+ Northern Frisian:
343
+ - frr
344
+ Eastern Frisian:
345
+ - frs
346
+ Western Frisian:
347
+ - fry
348
+ - fy
349
+ Fulah:
350
+ - ful
351
+ - ff
352
+ Friulian:
353
+ - fur
354
+ Ga:
355
+ - gaa
356
+ Gayo:
357
+ - gay
358
+ Gbaya:
359
+ - gba
360
+ Germanic languages:
361
+ - gem
362
+ Georgian:
363
+ - geo
364
+ - ka
365
+ Geez:
366
+ - gez
367
+ Gilbertese:
368
+ - gil
369
+ Gaelic; Scottish Gaelic:
370
+ - gla
371
+ - gd
372
+ Irish:
373
+ - gle
374
+ - ga
375
+ Galician:
376
+ - glg
377
+ - gl
378
+ Manx:
379
+ - glv
380
+ - gv
381
+ German, Middle High (ca.1050-1500):
382
+ - gmh
383
+ German, Old High (ca.750-1050):
384
+ - goh
385
+ Gondi:
386
+ - gon
387
+ Gorontalo:
388
+ - gor
389
+ Gothic:
390
+ - got
391
+ Grebo:
392
+ - grb
393
+ Greek, Ancient (to 1453):
394
+ - grc
395
+ Guarani:
396
+ - grn
397
+ - gn
398
+ Swiss German; Alemannic; Alsatian:
399
+ - gsw
400
+ Gujarati:
401
+ - guj
402
+ - gu
403
+ Gwich'in:
404
+ - gwi
405
+ Haida:
406
+ - hai
407
+ Haitian; Haitian Creole:
408
+ - hat
409
+ - ht
410
+ Hausa:
411
+ - hau
412
+ - ha
413
+ Hawaiian:
414
+ - haw
415
+ Hebrew:
416
+ - heb
417
+ - he
418
+ Herero:
419
+ - her
420
+ - hz
421
+ Hiligaynon:
422
+ - hil
423
+ Himachali languages; Western Pahari languages:
424
+ - him
425
+ Hindi:
426
+ - hin
427
+ - hi
428
+ Hittite:
429
+ - hit
430
+ Hmong; Mong:
431
+ - hmn
432
+ Hiri Motu:
433
+ - hmo
434
+ - ho
435
+ Croatian:
436
+ - hrv
437
+ - hr
438
+ Upper Sorbian:
439
+ - hsb
440
+ Hungarian:
441
+ - hun
442
+ - hu
443
+ Hupa:
444
+ - hup
445
+ Iban:
446
+ - iba
447
+ Igbo:
448
+ - ibo
449
+ - ig
450
+ Icelandic:
451
+ - ice
452
+ - is
453
+ Ido:
454
+ - ido
455
+ - io
456
+ Sichuan Yi; Nuosu:
457
+ - iii
458
+ - ii
459
+ Ijo languages:
460
+ - ijo
461
+ Inuktitut:
462
+ - iku
463
+ - iu
464
+ Interlingue; Occidental:
465
+ - ile
466
+ - ie
467
+ Iloko:
468
+ - ilo
469
+ Interlingua (International Auxiliary Language Association):
470
+ - ina
471
+ - ia
472
+ Indic languages:
473
+ - inc
474
+ Indonesian:
475
+ - ind
476
+ - id
477
+ Indo-European languages:
478
+ - ine
479
+ Ingush:
480
+ - inh
481
+ Inupiaq:
482
+ - ipk
483
+ - ik
484
+ Iranian languages:
485
+ - ira
486
+ Iroquoian languages:
487
+ - iro
488
+ Italian:
489
+ - ita
490
+ - it
491
+ Javanese:
492
+ - jav
493
+ - jv
494
+ Lojban:
495
+ - jbo
496
+ Japanese:
497
+ - jpn
498
+ - ja
499
+ Judeo-Persian:
500
+ - jpr
501
+ Judeo-Arabic:
502
+ - jrb
503
+ Kara-Kalpak:
504
+ - kaa
505
+ Kabyle:
506
+ - kab
507
+ Kachin; Jingpho:
508
+ - kac
509
+ Kalaallisut; Greenlandic:
510
+ - kal
511
+ - kl
512
+ Kamba:
513
+ - kam
514
+ Kannada:
515
+ - kan
516
+ - kn
517
+ Karen languages:
518
+ - kar
519
+ Kashmiri:
520
+ - kas
521
+ - ks
522
+ Kanuri:
523
+ - kau
524
+ - kr
525
+ Kawi:
526
+ - kaw
527
+ Kazakh:
528
+ - kaz
529
+ - kk
530
+ Kabardian:
531
+ - kbd
532
+ Khasi:
533
+ - kha
534
+ Khoisan languages:
535
+ - khi
536
+ Central Khmer:
537
+ - khm
538
+ - km
539
+ Khotanese; Sakan:
540
+ - kho
541
+ Kikuyu; Gikuyu:
542
+ - kik
543
+ - ki
544
+ Kinyarwanda:
545
+ - kin
546
+ - rw
547
+ Kirghiz; Kyrgyz:
548
+ - kir
549
+ - ky
550
+ Kimbundu:
551
+ - kmb
552
+ Konkani:
553
+ - kok
554
+ Komi:
555
+ - kom
556
+ - kv
557
+ Kongo:
558
+ - kon
559
+ - kg
560
+ Korean:
561
+ - kor
562
+ - ko
563
+ Kosraean:
564
+ - kos
565
+ Kpelle:
566
+ - kpe
567
+ Karachay-Balkar:
568
+ - krc
569
+ Karelian:
570
+ - krl
571
+ Kru languages:
572
+ - kro
573
+ Kurukh:
574
+ - kru
575
+ Kuanyama; Kwanyama:
576
+ - kua
577
+ - kj
578
+ Kumyk:
579
+ - kum
580
+ Kurdish:
581
+ - kur
582
+ - ku
583
+ Kutenai:
584
+ - kut
585
+ Ladino:
586
+ - lad
587
+ Lahnda:
588
+ - lah
589
+ Lamba:
590
+ - lam
591
+ Lao:
592
+ - lao
593
+ - lo
594
+ Latin:
595
+ - lat
596
+ - la
597
+ Latvian:
598
+ - lav
599
+ - lv
600
+ Lezghian:
601
+ - lez
602
+ Limburgan; Limburger; Limburgish:
603
+ - lim
604
+ - li
605
+ Lingala:
606
+ - lin
607
+ - ln
608
+ Lithuanian:
609
+ - lit
610
+ - lt
611
+ Mongo:
612
+ - lol
613
+ Lozi:
614
+ - loz
615
+ Luxembourgish; Letzeburgesch:
616
+ - ltz
617
+ - lb
618
+ Luba-Lulua:
619
+ - lua
620
+ Luba-Katanga:
621
+ - lub
622
+ - lu
623
+ Ganda:
624
+ - lug
625
+ - lg
626
+ Luiseno:
627
+ - lui
628
+ Lunda:
629
+ - lun
630
+ Luo (Kenya and Tanzania):
631
+ - luo
632
+ Lushai:
633
+ - lus
634
+ Macedonian:
635
+ - mac
636
+ - mk
637
+ Madurese:
638
+ - mad
639
+ Magahi:
640
+ - mag
641
+ Marshallese:
642
+ - mah
643
+ - mh
644
+ Maithili:
645
+ - mai
646
+ Makasar:
647
+ - mak
648
+ Malayalam:
649
+ - mal
650
+ - ml
651
+ Mandingo:
652
+ - man
653
+ Maori:
654
+ - mao
655
+ - mi
656
+ Austronesian languages:
657
+ - map
658
+ Marathi:
659
+ - mar
660
+ - mr
661
+ Masai:
662
+ - mas
663
+ Malay:
664
+ - may
665
+ - ms
666
+ Moksha:
667
+ - mdf
668
+ Mandar:
669
+ - mdr
670
+ Mende:
671
+ - men
672
+ Irish, Middle (900-1200):
673
+ - mga
674
+ Mi'kmaq; Micmac:
675
+ - mic
676
+ Minangkabau:
677
+ - min
678
+ Uncoded languages:
679
+ - mis
680
+ Mon-Khmer languages:
681
+ - mkh
682
+ Malagasy:
683
+ - mlg
684
+ - mg
685
+ Maltese:
686
+ - mlt
687
+ - mt
688
+ Manchu:
689
+ - mnc
690
+ Manipuri:
691
+ - mni
692
+ Manobo languages:
693
+ - mno
694
+ Mohawk:
695
+ - moh
696
+ Mongolian:
697
+ - mon
698
+ - mn
699
+ Mossi:
700
+ - mos
701
+ Multiple languages:
702
+ - mul
703
+ Munda languages:
704
+ - mun
705
+ Creek:
706
+ - mus
707
+ Mirandese:
708
+ - mwl
709
+ Marwari:
710
+ - mwr
711
+ Mayan languages:
712
+ - myn
713
+ Erzya:
714
+ - myv
715
+ Nahuatl languages:
716
+ - nah
717
+ North American Indian languages:
718
+ - nai
719
+ Neapolitan:
720
+ - nap
721
+ Nauru:
722
+ - nau
723
+ - na
724
+ Navajo; Navaho:
725
+ - nav
726
+ - nv
727
+ Ndebele, South; South Ndebele:
728
+ - nbl
729
+ - nr
730
+ Ndebele, North; North Ndebele:
731
+ - nde
732
+ - nd
733
+ Ndonga:
734
+ - ndo
735
+ - ng
736
+ Low German; Low Saxon; German, Low; Saxon, Low:
737
+ - nds
738
+ Nepali:
739
+ - nep
740
+ - ne
741
+ Nepal Bhasa; Newari:
742
+ - new
743
+ Nias:
744
+ - nia
745
+ Niger-Kordofanian languages:
746
+ - nic
747
+ Niuean:
748
+ - niu
749
+ Norwegian Nynorsk; Nynorsk, Norwegian:
750
+ - nno
751
+ - nn
752
+ Bokmål, Norwegian; Norwegian Bokmål:
753
+ - nob
754
+ - nb
755
+ Nogai:
756
+ - nog
757
+ Norse, Old:
758
+ - non
759
+ Norwegian:
760
+ - nor
761
+ - 'no'
762
+ N'Ko:
763
+ - nqo
764
+ Pedi; Sepedi; Northern Sotho:
765
+ - nso
766
+ Nubian languages:
767
+ - nub
768
+ Classical Newari; Old Newari; Classical Nepal Bhasa:
769
+ - nwc
770
+ Chichewa; Chewa; Nyanja:
771
+ - nya
772
+ - ny
773
+ Nyamwezi:
774
+ - nym
775
+ Nyankole:
776
+ - nyn
777
+ Nyoro:
778
+ - nyo
779
+ Nzima:
780
+ - nzi
781
+ Occitan (post 1500):
782
+ - oci
783
+ - oc
784
+ Ojibwa:
785
+ - oji
786
+ - oj
787
+ Oriya:
788
+ - ori
789
+ - or
790
+ Oromo:
791
+ - orm
792
+ - om
793
+ Osage:
794
+ - osa
795
+ Ossetian; Ossetic:
796
+ - oss
797
+ - os
798
+ Turkish, Ottoman (1500-1928):
799
+ - ota
800
+ Otomian languages:
801
+ - oto
802
+ Papuan languages:
803
+ - paa
804
+ Pangasinan:
805
+ - pag
806
+ Pahlavi:
807
+ - pal
808
+ Pampanga; Kapampangan:
809
+ - pam
810
+ Panjabi; Punjabi:
811
+ - pan
812
+ - pa
813
+ Papiamento:
814
+ - pap
815
+ Palauan:
816
+ - pau
817
+ Persian, Old (ca.600-400 B.C.):
818
+ - peo
819
+ Philippine languages:
820
+ - phi
821
+ Phoenician:
822
+ - phn
823
+ Pali:
824
+ - pli
825
+ - pi
826
+ Polish:
827
+ - pol
828
+ - pl
829
+ Pohnpeian:
830
+ - pon
831
+ Portuguese:
832
+ - por
833
+ - pt
834
+ Prakrit languages:
835
+ - pra
836
+ Provençal, Old (to 1500);Occitan, Old (to 1500):
837
+ - pro
838
+ Pushto; Pashto:
839
+ - pus
840
+ - ps
841
+ Reserved for local use:
842
+ - qaa-qtz
843
+ Quechua:
844
+ - que
845
+ - qu
846
+ Rajasthani:
847
+ - raj
848
+ Rapanui:
849
+ - rap
850
+ Rarotongan; Cook Islands Maori:
851
+ - rar
852
+ Romance languages:
853
+ - roa
854
+ Romansh:
855
+ - roh
856
+ - rm
857
+ Romany:
858
+ - rom
859
+ Romanian; Moldavian; Moldovan:
860
+ - rum
861
+ - ro
862
+ Rundi:
863
+ - run
864
+ - rn
865
+ Aromanian; Arumanian; Macedo-Romanian:
866
+ - rup
867
+ Russian:
868
+ - rus
869
+ - ru
870
+ Sandawe:
871
+ - sad
872
+ Sango:
873
+ - sag
874
+ - sg
875
+ Yakut:
876
+ - sah
877
+ South American Indian languages:
878
+ - sai
879
+ Salishan languages:
880
+ - sal
881
+ Samaritan Aramaic:
882
+ - sam
883
+ Sanskrit:
884
+ - san
885
+ - sa
886
+ Sasak:
887
+ - sas
888
+ Santali:
889
+ - sat
890
+ Sicilian:
891
+ - scn
892
+ Scots:
893
+ - sco
894
+ Selkup:
895
+ - sel
896
+ Semitic languages:
897
+ - sem
898
+ Irish, Old (to 900):
899
+ - sga
900
+ Sign Languages:
901
+ - sgn
902
+ Shan:
903
+ - shn
904
+ Sidamo:
905
+ - sid
906
+ Sinhala; Sinhalese:
907
+ - sin
908
+ - si
909
+ Siouan languages:
910
+ - sio
911
+ Sino-Tibetan languages:
912
+ - sit
913
+ Slavic languages:
914
+ - sla
915
+ Slovak:
916
+ - slo
917
+ - sk
918
+ Slovenian:
919
+ - slv
920
+ - sl
921
+ Southern Sami:
922
+ - sma
923
+ Northern Sami:
924
+ - sme
925
+ - se
926
+ Sami languages:
927
+ - smi
928
+ Lule Sami:
929
+ - smj
930
+ Inari Sami:
931
+ - smn
932
+ Samoan:
933
+ - smo
934
+ - sm
935
+ Skolt Sami:
936
+ - sms
937
+ Shona:
938
+ - sna
939
+ - sn
940
+ Sindhi:
941
+ - snd
942
+ - sd
943
+ Soninke:
944
+ - snk
945
+ Sogdian:
946
+ - sog
947
+ Somali:
948
+ - som
949
+ - so
950
+ Songhai languages:
951
+ - son
952
+ Sotho, Southern:
953
+ - sot
954
+ - st
955
+ Spanish; Castilian:
956
+ - spa
957
+ - es
958
+ Sardinian:
959
+ - srd
960
+ - sc
961
+ Sranan Tongo:
962
+ - srn
963
+ Serbian:
964
+ - srp
965
+ - sr
966
+ Serer:
967
+ - srr
968
+ Nilo-Saharan languages:
969
+ - ssa
970
+ Swati:
971
+ - ssw
972
+ - ss
973
+ Sukuma:
974
+ - suk
975
+ Sundanese:
976
+ - sun
977
+ - su
978
+ Susu:
979
+ - sus
980
+ Sumerian:
981
+ - sux
982
+ Swahili:
983
+ - swa
984
+ - sw
985
+ Swedish:
986
+ - swe
987
+ - sv
988
+ Classical Syriac:
989
+ - syc
990
+ Syriac:
991
+ - syr
992
+ Tahitian:
993
+ - tah
994
+ - ty
995
+ Tai languages:
996
+ - tai
997
+ Tamil:
998
+ - tam
999
+ - ta
1000
+ Tatar:
1001
+ - tat
1002
+ - tt
1003
+ Telugu:
1004
+ - tel
1005
+ - te
1006
+ Timne:
1007
+ - tem
1008
+ Tereno:
1009
+ - ter
1010
+ Tetum:
1011
+ - tet
1012
+ Tajik:
1013
+ - tgk
1014
+ - tg
1015
+ Tagalog:
1016
+ - tgl
1017
+ - tl
1018
+ Thai:
1019
+ - tha
1020
+ - th
1021
+ Tigre:
1022
+ - tig
1023
+ Tigrinya:
1024
+ - tir
1025
+ - ti
1026
+ Tiv:
1027
+ - tiv
1028
+ Tokelau:
1029
+ - tkl
1030
+ Klingon; tlhIngan-Hol:
1031
+ - tlh
1032
+ Tlingit:
1033
+ - tli
1034
+ Tamashek:
1035
+ - tmh
1036
+ Tonga (Nyasa):
1037
+ - tog
1038
+ Tonga (Tonga Islands):
1039
+ - ton
1040
+ - to
1041
+ Tok Pisin:
1042
+ - tpi
1043
+ Tsimshian:
1044
+ - tsi
1045
+ Tswana:
1046
+ - tsn
1047
+ - tn
1048
+ Tsonga:
1049
+ - tso
1050
+ - ts
1051
+ Turkmen:
1052
+ - tuk
1053
+ - tk
1054
+ Tumbuka:
1055
+ - tum
1056
+ Tupi languages:
1057
+ - tup
1058
+ Turkish:
1059
+ - tur
1060
+ - tr
1061
+ Altaic languages:
1062
+ - tut
1063
+ Tuvalu:
1064
+ - tvl
1065
+ Twi:
1066
+ - twi
1067
+ - tw
1068
+ Tuvinian:
1069
+ - tyv
1070
+ Udmurt:
1071
+ - udm
1072
+ Ugaritic:
1073
+ - uga
1074
+ Uighur; Uyghur:
1075
+ - uig
1076
+ - ug
1077
+ Ukrainian:
1078
+ - ukr
1079
+ - uk
1080
+ Umbundu:
1081
+ - umb
1082
+ Undetermined:
1083
+ - und
1084
+ Urdu:
1085
+ - urd
1086
+ - ur
1087
+ Uzbek:
1088
+ - uzb
1089
+ - uz
1090
+ Vai:
1091
+ - vai
1092
+ Venda:
1093
+ - ven
1094
+ - ve
1095
+ Vietnamese:
1096
+ - vie
1097
+ - vi
1098
+ Volapük:
1099
+ - vol
1100
+ - vo
1101
+ Votic:
1102
+ - vot
1103
+ Wakashan languages:
1104
+ - wak
1105
+ Wolaitta; Wolaytta:
1106
+ - wal
1107
+ Waray:
1108
+ - war
1109
+ Washo:
1110
+ - was
1111
+ Sorbian languages:
1112
+ - wen
1113
+ Walloon:
1114
+ - wln
1115
+ - wa
1116
+ Wolof:
1117
+ - wol
1118
+ - wo
1119
+ Kalmyk; Oirat:
1120
+ - xal
1121
+ Xhosa:
1122
+ - xho
1123
+ - xh
1124
+ Yao:
1125
+ - yao
1126
+ Yapese:
1127
+ - yap
1128
+ Yiddish:
1129
+ - yid
1130
+ - yi
1131
+ Yoruba:
1132
+ - yor
1133
+ - yo
1134
+ Yupik languages:
1135
+ - ypk
1136
+ Zapotec:
1137
+ - zap
1138
+ Blissymbols; Blissymbolics; Bliss:
1139
+ - zbl
1140
+ Zenaga:
1141
+ - zen
1142
+ Zhuang; Chuang:
1143
+ - zha
1144
+ - za
1145
+ Zande languages:
1146
+ - znd
1147
+ Zulu:
1148
+ - zul
1149
+ - zu
1150
+ Zuni:
1151
+ - zun
1152
+ No linguistic content; Not applicable:
1153
+ - zxx
1154
+ Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki:
1155
+ - zza