sort-lan.lua /size: 43 Kb    last modification: 2020-07-01 14:35
1if not modules then modules = { } end modules ['sort-lan'] = {
2    version   = 1.001,
3    comment   = "companion to sort-lan.mkiv",
4    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
5    copyright = "PRAGMA ADE / ConTeXt Development Team",
6    license   = "see context related readme files",
7    dataonly  = true,
8}
9
10-- todo: look into uts#10 (2012) ... some experiments ... something
11-- to finish in winter.
12-- todo: U+1E9E (german SS)
13
14-- Many vectors were supplied by Wolfgang Schuster and Philipp Gesang. However this is
15-- a quite adapted and reformatted variant so it needs some checking. Other users
16-- provides tables and corrections as well.
17
18local utfchar, utfbyte  = utf.char, utf.byte
19local sorters           = sorters
20local definitions       = sorters.definitions
21local replacementoffset = sorters.constants.replacementoffset
22local variables         = interfaces.variables
23
24definitions["default"] = {
25    method  = variables.before,
26    replacements = {
27        -- no replacements
28    },
29    entries = {
30        ["a"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d", ["e"] = "e",
31        ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i", ["j"] = "j",
32        ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o",
33        ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["t"] = "t",
34        ["u"] = "u", ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y",
35        ["z"] = "z",
36    },
37    orders = {
38        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
39        "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
40        "u", "v", "w", "x", "y", "z",
41    },
42    lower = {
43        -- no replacements
44    },
45    upper = {
46        -- no replacements
47    }
48}
49
50sorters.setlanguage("default")
51
52-- english
53
54definitions["en"] = { parent = "default" }
55
56-- dutch
57
58definitions['nl'] = {
59    parent = 'default',
60    replacements = {
61     -- { "ij", 'y' }, { "IJ", 'Y' }, -- no longer, or will be option
62    },
63}
64
65-- French
66
67definitions['fr'] = { parent = 'default' }
68
69-- German (by Wolfgang Schuster)
70
71-- DIN 5007-1
72
73definitions['DIN 5007-1'] = {
74    parent       = 'default',
75    replacements = {
76        { "ß", "ss" },
77    },
78}
79
80-- DIN 5007-2
81
82definitions['DIN 5007-2'] = {
83    parent       = 'default',
84    replacements = {
85        { "ä", "ae" }, { "Ä", "Ae" },
86        { "ö", "oe" }, { "Ö", "Oe" },
87        { "ü", "ue" }, { "Ü", "Ue" },
88        { "ß", "ss" },
89    },
90}
91
92-- Duden
93
94definitions['Duden'] = {
95    parent       = 'default',
96    replacements = {
97        { "ß", "s" },
98    },
99}
100
101-- definitions['de'] = { parent = 'default' } -- new german
102
103definitions['de']    = {
104    parent = 'default',
105    replacements = {
106        { "ä", 'ae' }, { "Ä", 'Ae' },
107        { "ö", 'oe' }, { "Ö", 'Oe' },
108        { "ü", 'ue' }, { "Ü", 'Ue' },
109        { "ß", 's'  },
110    },
111}
112
113definitions['deo']   = { parent = 'de' } -- old german
114
115definitions['de-DE'] = { parent = 'de' } -- german - Germany
116definitions['de-CH'] = { parent = 'de' } -- german - Swiss
117
118-- german - Austria
119
120definitions['de-AT'] = {
121    entries = {
122        ["a"] = "a", ["ä"] = "ä", ["b"] = "b", ["c"] = "c", ["d"] = "d",
123        ["e"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i",
124        ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n",
125        ["o"] = "o", ["ö"] = "ö", ["p"] = "p", ["q"] = "q", ["r"] = "r",
126        ["s"] = "s", ["t"] = "t", ["u"] = "u", ["ü"] = "ü", ["v"] = "v",
127        ["w"] = "w", ["x"] = "x", ["y"] = "y", ["z"] = "z",
128    },
129    orders = {
130        "a", "ä", "b", "c", "d", "e", "f", "g", "h", "i",
131        "j", "k", "l", "m", "n", "o", "ö", "p", "q", "r",
132        "s", "t", "u", "ü", "v", "w", "x", "y", "z",
133    },
134}
135
136-- finnish (by Wolfgang Schuster)
137
138definitions['fi'] = {
139    entries = {
140        ["a"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d", ["e"] = "e",
141        ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i", ["j"] = "j",
142        ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o",
143        ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["t"] = "t",
144        ["u"] = "u", ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y",
145        ["z"] = "z", ["å"] = "å", ["ä"] = "ä", ["ö"] = "ö",
146    },
147    orders = {
148        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
149        "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
150        "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
151    }
152}
153
154-- slovenian by MM: this will change since we need to add accented vowels
155
156definitions['sl'] = {
157    entries = {
158        ["a"] = "a", ["b"] = "b", ["c"] = "c", ["č"] = "č", ["ć"] = "ć", ["d"] = "d",
159        ["đ"] = "đ", ["e"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i",
160        ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o",
161        ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["š"] = "š", ["t"] = "t",
162        ["u"] = "u", ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y", ["z"] = "z",
163        ["ž"] = "ž",
164    },
165    orders = {
166        "a", "b", "c", "č", "ć", "d", "đ", "e", "f", "g", "h", "i",
167        "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "š", "t",
168        "u", "v", "w", "x", "y", "z", "ž",
169    }
170}
171
172-- The following data was provided by Philipp Gesang.
173
174definitions["ru"] = {
175    entries = {
176        ["а"] = "а", ["б"] = "б", ["в"] = "в", ["г"] = "г", ["д"] = "д",
177        ["е"] = "е", ["ё"] = "е", ["ж"] = "ж", ["з"] = "з", ["и"] = "и",
178        ["і"] = "и", ["й"] = "й", ["к"] = "к", ["л"] = "л", ["м"] = "м",
179        ["н"] = "н", ["о"] = "о", ["п"] = "п", ["р"] = "р", ["с"] = "с",
180        ["т"] = "т", ["у"] = "у", ["ф"] = "ф", ["х"] = "х", ["ц"] = "ц",
181        ["ч"] = "ч", ["ш"] = "ш", ["щ"] = "щ", ["ъ"] = "ъ", ["ы"] = "ы",
182        ["ь"] = "ь", ["ѣ"] = "ѣ", ["э"] = "э", ["ю"] = "ю", ["я"] = "я",
183        ["ѳ"] = "ѳ", ["ѵ"] = "ѵ",
184    },
185    orders = {
186        "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и",
187        "і", "й", "к", "л", "м", "н", "о", "п", "р", "с",
188        "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
189        "ь", "ѣ", "э", "ю", "я", "ѳ", "ѵ",
190    }
191}
192
193--- Basic Ukrainian
194
195definitions["uk"] = {
196    entries = {
197        ["а"] = "а", ["б"] = "б", ["в"] = "в", ["г"] = "г", ["ґ"] = "ґ",
198        ["д"] = "д", ["е"] = "е", ["є"] = "є", ["ж"] = "ж", ["з"] = "з",
199        ["и"] = "и", ["і"] = "і", ["ї"] = "ї", ["й"] = "й", ["к"] = "к",
200        ["л"] = "л", ["м"] = "м", ["н"] = "н", ["о"] = "о", ["п"] = "п",
201        ["р"] = "р", ["с"] = "с", ["т"] = "т", ["у"] = "у", ["ф"] = "ф",
202        ["х"] = "х", ["ц"] = "ц", ["ч"] = "ч", ["ш"] = "ш", ["щ"] = "щ",
203        ["ь"] = "ь", ["ю"] = "ю", ["я"] = "я",
204    },
205    orders = {
206        "а", "б", "в", "г", "ґ", "д", "е", "є", "ж", "з", "и", "і",
207        "ї", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у",
208        "ф", "х", "ц", "ч", "ш", "щ", "ь", "ю", "я",
209    }
210}
211
212--- Belarusian
213
214definitions["be"] = {
215    entries = {
216        ["а"] = "а", ["б"] = "б", ["в"] = "в", ["г"] = "г", ["д"] = "д",
217        ["е"] = "е", ["ё"] = "е", ["ж"] = "ж", ["з"] = "з", ["і"] = "і",
218        ["й"] = "й", ["к"] = "к", ["л"] = "л", ["м"] = "м", ["н"] = "н",
219        ["о"] = "о", ["п"] = "п", ["р"] = "р", ["с"] = "с", ["т"] = "т",
220        ["у"] = "у", ["ў"] = "ў", ["ф"] = "ф", ["х"] = "х", ["ц"] = "ц",
221        ["ч"] = "ч", ["ш"] = "ш", ["ы"] = "ы", ["ь"] = "ь", ["э"] = "э",
222        ["ю"] = "ю", ["я"] = "я",
223    },
224    orders = {
225        "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "і",
226        "й", "к", "л", "м", "н", "о", "п", "р", "с", "т",
227        "у", "ў", "ф", "х", "ц", "ч", "ш", "ы", "ь", "э",
228        "ю", "я",
229    }
230}
231
232--- Bulgarian
233
234definitions["bg"] = {
235    entries = {
236        ["а"] = "а", ["б"] = "б", ["в"] = "в", ["г"] = "г", ["д"] = "д",
237        ["е"] = "е", ["ж"] = "ж", ["з"] = "з", ["и"] = "и", ["й"] = "й",
238        ["к"] = "к", ["a"] = "a", ["л"] = "л", ["a"] = "a", ["м"] = "м",
239        ["н"] = "н", ["о"] = "о", ["п"] = "п", ["р"] = "р", ["с"] = "с",
240        ["т"] = "т", ["у"] = "у", ["ф"] = "ф", ["х"] = "х", ["ц"] = "ц",
241        ["ч"] = "ч", ["ш"] = "ш", ["щ"] = "щ", ["ъ"] = "ъ", ["ь"] = "ь",
242        ["ю"] = "ю", ["я"] = "я",
243    },
244    orders = {
245        "а", "б", "в", "г", "д", "е", "ж", "з","и", "й",
246        "к", "a", "л", "a", "м", "н", "о", "п", "р", "с",
247        "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ь",
248        "ю", "я",
249    }
250}
251
252--- Old Church Slavonic
253
254-- The language symbol “cu” is taken from the Wikipedia subdomain
255-- cu.wikipedia.org.
256
257local uk, UK  = utfchar(replacementoffset + 1), utfchar(replacementoffset + 11)
258
259definitions["cu"] = {
260    replacements = {
261        { "оу", uk }, { "ОУ", UK },
262    },
263    entries = {
264        ["а"] = "а", ["б"] = "б", ["в"] = "в", ["г"] = "г", ["д"] = "д",
265        ["є"] = "є", ["ж"] = "ж", ["ѕ"] = "ѕ", [""] = "ѕ", ["з"] = "з",
266        [""] = "з", ["и"] = "и", ["і"] = "и", ["ї"] = "и", ["ћ"] = "ћ",
267        ["к"] = "к", ["л"] = "л", ["м"] = "м", ["н"] = "н", ["о"] = "о",
268        ["п"] = "п", ["р"] = "р", ["с"] = "с", ["т"] = "т", ["у"] = "у",
269        ["ѹ"] = "у", [""] = "у", [uk]  = "у", ["ф"] = "ф", ["х"] = "х",
270        ["ѡ"] = "ѡ", ["ѿ"] = "ѡ", ["ѽ"] = "ѡ", [""] = "ѡ", ["ц"] = "ц",
271        ["ч"] = "ч", ["ш"] = "ш", ["щ"] = "щ", ["ъ"] = "ъ", ["ы"] = "ы",
272        [""] = "ы", ["ь"] = "ь", ["ѣ"] = "ѣ", ["ю"] = "ю", [""] = "",
273        ["ѥ"] = "ѥ", ["ѧ"] = "ѧ", ["ѩ"] = "ѩ", ["ѫ"] = "ѫ", ["ѭ"] = "ѭ",
274        ["ѯ"] = "ѯ", ["ѱ"] = "ѱ", ["ѳ"] = "ѳ", ["ѵ"] = "ѵ", ["ѷ"] = "ѵ",
275    },
276    orders = {
277        "а", "б", "в", "г", "д", "є", "ж", "ѕ", "", "з", -- Dzělo, U+0292, alternative: dz U+01f3
278        "", "и", "і", "ї", "ћ", "к", "л", "м", "н", "о", -- Zemlja
279        "п", "р", "с", "т", "у", "ѹ", "", uk,  "ф", "х", -- U+0478 uk, horizontal ligature, U+0479 uk, vertical ligature
280        "ѡ", "ѿ", "ѽ", "", "ц", "ч", "ш", "щ", "ъ", "ы", -- "ō", U+047f \, U+047d  > Omega variants,  U+064D  /
281        "", "ь", "ѣ", "ю", "", "ѥ", "ѧ", "ѩ", "ѫ", "ѭ", -- Old jery (U+a651) as used e.g. by the OCS Wikipedia. IOTIFIED A
282        "ѯ", "ѱ", "ѳ", "ѵ", "ѷ",
283    },
284    upper = {
285        uk = UK,
286    },
287    lower = {
288        UK = uk,
289    }
290}
291
292--- Polish (including the letters q, v, x) Cf. ftp://ftp.gust.org.pl/pub/GUST/bulletin/03/02-bl.pdf.
293
294definitions["pl"] = {
295    entries = {
296        ["a"] = "a", ["ą"] = "ą", ["b"] = "b", ["c"] = "c", ["ć"] = "ć",
297        ["d"] = "d", ["e"] = "e", ["ę"] = "ę", ["f"] = "f", ["g"] = "g",
298        ["h"] = "h", ["i"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l",
299        ["ł"] = "ł", ["m"] = "m", ["n"] = "n", ["ń"] = "ń", ["o"] = "o",
300        ["ó"] = "ó", ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s",
301        ["ś"] = "ś", ["t"] = "t", ["u"] = "u", ["v"] = "v", ["w"] = "w",
302        ["x"] = "x", ["y"] = "y", ["z"] = "z", ["ź"] = "ź", ["ż"] = "ż",
303    },
304    orders = {
305        "a", "ą", "b", "c", "ć", "d", "e", "ę", "f", "g",
306        "h", "i", "j", "k", "l", "ł", "m", "n", "ń", "o",
307        "ó", "p", "q", "r", "s", "ś", "t", "u", "v", "w",
308        "x", "y", "z", "ź", "ż",
309    },
310}
311
312-- Czech, modified to treat quantities and other secondary characteristics indifferently. Cf.
313-- http://racek.vlada.cz/usneseni/usneseni_webtest.nsf/WebGovRes/0AD8FEF4CC04B7A4C12571B6006D69D0?OpenDocument
314-- (2.4.3; via <http://cs.wikipedia.org/wiki/Abecední_řazení#.C4.8Ce.C5.A1tina>)
315
316local ch, CH = utfchar(replacementoffset + 1), utfchar(replacementoffset + 11)
317
318definitions["cz"] = {
319    replacements = {
320        { "ch", ch }, { "Ch", ch }, { "CH", ch }
321    },
322    entries = {
323        ["a"] = "a", ["á"] = "a", ["b"] = "b", ["c"] = "c",  ["č"] = "č",
324        ["d"] = "d", ["ď"] = "d", ["e"] = "e", ["é"] = "e",  ["ě"] = "e",
325        ["f"] = "f", ["g"] = "g", ["h"] = "h", [ch]  = "ch", ["i"] = "i",
326        ["í"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l",  ["m"] = "m",
327        ["n"] = "n", ["ň"] = "n", ["o"] = "o", ["ó"] = "o",  ["p"] = "p",
328        ["q"] = "q", ["r"] = "r", ["ř"] = "ř", ["s"] = "s",  ["š"] = "š",
329        ["t"] = "t", ["ť"] = "t", ["u"] = "u", ["ú"] = "u",  ["ů"] = "u",
330        ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y",  ["ý"] = "y",
331        ["z"] = "z", ["ž"] = "ž",
332    },
333    orders = {
334        "a", "á", "b", "c", "č", "d", "ď", "e", "é", "ě",
335        "f", "g", "h", ch,  "i", "í", "j", "k", "l", "m",
336        "n", "ň", "o", "ó", "p", "q", "r", "ř", "s", "š",
337        "t", "ť", "u", "ú",  "ů", "v", "w", "x",  "y", "ý",
338        "z", "ž",
339    },
340    upper = {
341        ch = CH,
342    },
343    lower = {
344        CH = ch,
345    }
346}
347
348definitions["cs"] = { parent = "cz" }
349
350--- Slovak.
351
352-- Vowel and consonant quantities, "ď", "ľ", "ň", "ť", "ô", and "ä" are treated
353-- indifferently as their base character, as in my dictionary. If you prefer them
354-- to affect collation order, then use the values given in the comments. We could
355-- define an additional vector for that.
356
357local dz,  DZ  = utfchar(replacementoffset + 1), utfchar(replacementoffset + 11)
358local dzh, DZH = utfchar(replacementoffset + 2), utfchar(replacementoffset + 12)
359local ch,  CH  = utfchar(replacementoffset + 3), utfchar(replacementoffset + 13)
360
361definitions["sk"] = {
362    replacements = {
363        { "dz", dz  }, { "dz", DZ  },
364        { "", dzh }, { "", DZH },
365        { "ch", ch  }, { "ch", CH  },
366    },
367    entries = {
368        ["a"] = "a",  ["á"] = "a", ["ä"] = "a", ["b"] = "b",  ["c"] = "c",
369        ["č"] = "č",  ["d"] = "d", ["ď"] = "d", [dz]  = "dz", [dzh] = "",
370        ["e"] = "e",  ["é"] = "e", ["f"] = "f", ["g"] = "g",  ["h"] = "h",
371        [ch]  = "ch", ["i"] = "i", ["í"] = "i", ["j"] = "j",  ["k"] = "k",
372        ["l"] = "l",  ["ĺ"] = "l", ["ľ"] = "l", ["m"] = "m",  ["n"] = "n",
373        ["ň"] = "n",  ["o"] = "o", ["ó"] = "o", ["ô"] = "o",  ["p"] = "p",
374        ["q"] = "q",  ["r"] = "r", ["ŕ"] = "r", ["s"] = "s",  ["š"] = "š",
375        ["t"] = "t",  ["ť"] = "t", ["u"] = "u", ["ú"] = "u",  ["v"] = "v",
376        ["w"] = "w",  ["x"] = "x", ["y"] = "y", ["ý"] = "y",  ["z"] = "z",
377        ["ž"] = "ž",
378    },
379    orders = {
380        "a", "á", "ä", "b", "c", "č", "d", "ď", dz,  dzh,
381        "e", "é", "f", "g", "h", ch,  "i", "í", "j", "k",
382        "l", "ĺ", "ľ", "m", "n", "ň", "o", "ó", "ô", "p",
383        "q", "r", "ŕ", "s", "š", "t", "ť", "u", "ú", "v",
384        "w", "x", "y", "ý", "z", "ž",
385    },
386    upper = {
387        dz  = DZ, dzh = DZH, ch  = CH,
388    },
389    lower = {
390        DZ  = dz, DZH = dzh, CH  = ch,
391    }
392}
393
394--- Croatian
395
396local dzh, DZH = utfchar(replacementoffset + 1), utfchar(replacementoffset + 11)
397local lj,  LJ  = utfchar(replacementoffset + 2), utfchar(replacementoffset + 12)
398local nj,  NJ  = utfchar(replacementoffset + 3), utfchar(replacementoffset + 13)
399
400definitions["hr"] = {
401    replacements = {
402        { "", dzh }, { "", DZH },
403        { "lj", lj  }, { "LJ", LJ  },
404        { "nj", nj  }, { "NJ", NJ  },
405    },
406    entries = {
407        ["a"] = "a", ["b"] =  "b", ["c"] = "c", ["č"] = "č", ["ć"] =  "ć",
408        ["d"] = "d", [dzh] = "", ["đ"] = "đ", ["e"] = "e", ["f"] =  "f",
409        ["g"] = "g", ["h"] =  "h", ["i"] = "i", ["j"] = "j", ["k"] =  "k",
410        ["l"] = "l", [lj]  = "lj", ["m"] = "m", ["n"] = "n", [nj]  = "nj",
411        ["o"] = "o", ["p"] =  "p", ["r"] = "r", ["s"] = "s", ["š"] =  "š",
412        ["t"] = "t", ["u"] =  "u", ["v"] = "v", ["z"] = "z", ["ž"] =  "ž",
413    },
414    orders = {
415        "a", "b", "c", "č", "ć", "d", dzh, "đ", "e", "f",
416        "g", "h", "i", "j", "k", "l", lj,  "m", "n", nj,
417        "o", "p", "r", "s", "š", "t", "u", "v", "z", "ž",
418    },
419    upper = {
420        dzh = DZH, lj  = LJ, nj  = NJ,
421    },
422    lower = {
423        DZH = dzh, LJ  = lj, NJ  = nj,
424    }
425}
426
427
428--- Serbian
429
430definitions["sr"] = {
431    entries = {
432        ["а"]   = "а", ["б"]   = "б", ["в"]   = "в", ["г"]   = "г", ["д"]   = "д",
433        ["ђ"]   = "ђ", ["е"]   = "е", ["ж"]   = "ж", ["з"]   = "з", ["и"]   = "и",
434        ["ј"]   = "ј", ["к"]   = "к", ["л"]   = "л", ["љ"]   = "љ", ["м"]   = "м",
435        ["н"]   = "н", ["њ"]   = "њ", ["о"]   = "о", ["п"]   = "п", ["р"]   = "р",
436        ["с"]   = "с", ["т"]   = "т", ["ћ"]   = "ћ", ["у"]   = "у", ["ф"]   = "ф",
437        ["х"]   = "х", ["ц"]   = "ц", ["ч"]   = "ч", ["џ"]   = "џ",
438        ["ш"]   = "ш",
439    },
440    orders = {
441        "а", "б", "в", "г", "д", "ђ", "е", "ж", "з", "и",
442        "ј", "к", "л", "љ", "м", "н", "њ", "о", "п", "р",
443        "с", "т", "ћ", "у", "ф", "х", "ц", "ч", "џ", "ш",
444    }
445}
446
447--- Transliteration: Russian|ISO9-1995
448
449-- Keeping the same collation order as Russian (v.s.).
450-- Matches the tables from:
451-- http://bitbucket.org/phg/transliterator/src/tip/tex/context/third/transliterator/trans_tables_iso9.lua
452
453local yer = utfchar(replacementoffset + 1)
454
455definitions["ru-iso9"] = {
456    replacements = {
457        { "''", yer  },
458    },
459    entries = {
460        ["a"] = "a", ["b"] = "b", ["v"] = "v", ["g"] = "g", ["d"] = "d",
461        ["e"] = "e", ["ë"] = "ë", ["ž"] = "ž", ["z"] = "z", ["i"] = "i",
462        ["ì"] = "ì", ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m",
463        ["n"] = "n", ["o"] = "o", ["p"] = "p", ["r"] = "r", ["s"] = "s",
464        ["t"] = "t", ["u"] = "u", ["f"] = "f", ["h"] = "h", ["c"] = "c",
465        ["č"] = "č", ["š"] = "š", ["ŝ"] = "ŝ", ["ʺ"] = "ʺ",  [yer] = "ʺ",
466        ["y"] = "y", ["ʹ"] = "ʹ", ["'"] = "ʹ", ["ě"] = "ě", ["è"] = "è",
467        ["û"] = "û", ["â"] = "â", ["û"] = "û", ["â"] = "â",
468    },
469    orders = {
470        "a", "b", "v", "g", "d", "e", "ë", "ž", "z", "i",
471        "ì", "j", "k", "l", "m", "n", "o", "p", "r", "s",
472        "t", "u", "f", "h", "c", "č", "š", "ŝ", "ʺ", yer,
473        "y", "ʹ", "'", "ě", "è", "û", "â", "û", "â",
474    }
475}
476
477--- Transliteration: Old Slavonic|scientific
478
479-- Matches the tables from:
480-- http://bitbucket.org/phg/transliterator/src/tip/tex/context/third/transliterator/trans_tables_scntfc.lua
481
482local uk,      UK      = utfchar(replacementoffset +  1), utfchar(replacementoffset + 21)
483local tshe,    TSHE    = utfchar(replacementoffset +  2), utfchar(replacementoffset + 22)
484local sht,     SHT     = utfchar(replacementoffset +  3), utfchar(replacementoffset + 23)
485local ju,      JU      = utfchar(replacementoffset +  4), utfchar(replacementoffset + 24)
486local ja,      JA      = utfchar(replacementoffset +  5), utfchar(replacementoffset + 25)
487local je,      JE      = utfchar(replacementoffset +  6), utfchar(replacementoffset + 26)
488local ijus,    IJUS    = utfchar(replacementoffset +  7), utfchar(replacementoffset + 27)
489local ibigjus, IBIGJUS = utfchar(replacementoffset +  8), utfchar(replacementoffset + 28)
490local xi,      XI      = utfchar(replacementoffset +  9), utfchar(replacementoffset + 29)
491local psi,     PSI     = utfchar(replacementoffset + 10), utfchar(replacementoffset + 30)
492local theta,   THETA   = utfchar(replacementoffset + 11), utfchar(replacementoffset + 31)
493local shch,    SHCH    = utfchar(replacementoffset + 12), utfchar(replacementoffset + 32)
494
495definitions["ocs-scn"] = {
496    replacements = {
497        { "ou", uk      }, { "OU", UK      },
498        { "g’", tshe    }, { "G’", TSHE    },
499        { "št", sht     }, { "ŠT", SHT     },
500        { "ju", ju      }, { "JU", JU      },
501        { "ja", ja      }, { "JA", JA      },
502        { "je", je      }, { "JE", JE      },
503        { "", ijus    }, { "", IJUS    },
504        { "", ibigjus }, { "", IBIGJUS },
505        { "ks", xi      }, { "KS", XI      },
506        { "ps", psi     }, { "PS", PSI     },
507        { "th", theta   }, { "TH", THETA   },
508        { "šč", shch    }, { "ŠČ", SHCH    },
509    },
510    entries = {
511        ["a"]  =  "a", ["b"]     =  "b", ["v"]  =  "v", ["g"]  =  "g", ["d"]   =  "d",
512        ["e"]  =  "e", ["ž"]     =  "ž", ["ʒ"]  =  "ʒ", ["z"]  =  "z", ["i"]   =  "i",
513        ["ï"]  =  "ï", [tshe]    = "g’", ["k"]  =  "k", ["l"]  =  "l", ["m"]   =  "m",
514        ["n"]  =  "n", ["o"]     =  "o", ["p"]  =  "p", ["r"]  =  "r", ["s"]   =  "s",
515        ["t"]  =  "t", ["u"]     =  "u", ["f"]  =  "f", ["x"]  =  "x", ["o"]   =  "o",
516        ["c"]  =  "c", ["č"]     =  "č", ["š"]  =  "š", [sht]  = "št", [shch]  = "šč",
517        ["ъ"]  =  "ъ", ["y"]     =  "y", [uk]   =  "y", ["ь"]  =  "ь", ["ě"]   =  "ě",
518        [ju]   = "ju", [ja]      = "ja", [je]   = "je", ["ę"]  =  "ę", [ijus]  = "",
519        ["ǫ"]  =  "ǫ", [ibigjus] = "", [xi]   = "ks", [psi]  = "ps", [theta] = "th",
520        ["ü"]  =  "ü",
521    },
522    orders = {
523        "a",   "b", "v", "g", "d", "e", "ž",  "ʒ",  "z",     "i", "ï",
524        tshe,  "k", "l", "m", "n", "o", "p",  "r",  "s",     "t", "u",
525        "f",   "x", "o", "c", "č", "š", sht,  shch, "ъ",     "y", uk,
526        "ь",   "ě", ju,  ja,  je,  "ę", ijus, "ǫ",  ibigjus, xi,  psi,
527        theta, "ü",
528    },
529    upper = {
530        uk = UK, tshe = TSHE, sht = SHT, ju = JU, ja = JA, je = JE, ijus = IJUS, ibigjus = IBIGJUS, xi = XI, psi = PSI, theta = THETA, shch = SHCH,
531    },
532    lower = {
533        UK = uk, TSHE = tshe, SHT = sht, JU = ju, JA = ja, JE = je, IJUS = ijus, IBIGJUS = ibigjus, XI = xi, PSI = psi, THETA = theta, SHCH = shch,
534    },
535}
536
537
538--- Norwegian (bokmål).
539
540definitions["no"] = {
541    entries = {
542        ["a"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d", ["e"] = "e",
543        ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i", ["j"] = "j",
544        ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o",
545        ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["t"] = "t",
546        ["u"] = "u", ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y",
547        ["z"] = "z", ["æ"] = "æ", ["ø"] = "ø", ["å"] = "å",
548    },
549    orders = {
550        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
551        "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
552        "u", "v", "w", "x", "y", "z", "æ", "ø", "å",
553    }
554}
555
556--- Danish (-> Norwegian).
557
558definitions["da"] = { parent = "no" }
559
560--- Swedish
561
562definitions["sv"] = {
563    entries = {
564        ["a"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d", ["e"] = "e",
565        ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i", ["j"] = "j",
566        ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o",
567        ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["t"] = "t",
568        ["u"] = "u", ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y",
569        ["z"] = "z", ["å"] = "å", ["ä"] = "ä", ["ö"] = "ö",
570    },
571    orders = {
572        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
573        "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
574        "u", "v", "w", "x", "y", "z", "å", "ä", "ö",
575    }
576}
577
578--- Icelandic
579
580-- Treating quantities as allographs.
581
582definitions["is"] = {
583    entries = {
584        ["a"] = "a", ["á"] = "a", ["b"] = "b", ["d"] = "d", ["ð"] = "ð",
585        ["e"] = "e", ["é"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h",
586        ["i"] = "i", ["í"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l",
587        ["m"] = "m", ["n"] = "n", ["o"] = "o", ["ó"] = "o", ["p"] = "p",
588        ["r"] = "r", ["s"] = "s", ["t"] = "t", ["u"] = "u", ["ú"] = "u",
589        ["v"] = "v", ["x"] = "x", ["y"] = "y", ["ý"] = "y", ["þ"] = "þ",
590        ["æ"] = "æ", ["ö"] = "ö",
591    },
592    orders = {
593        "a", "á", "b", "d", "ð", "e", "é", "f", "g", "h",
594        "i", "í", "j", "k", "l", "m", "n", "o", "ó", "p",
595        "r", "s", "t", "u", "ú", "v", "x", "y", "ý", "þ",
596        "æ", "ö",
597    },
598}
599
600--- Greek
601
602definitions["gr"] = {
603    replacements = {
604        { "α", "αa" }, { "ά", "αb" }, { "", "αc" }, { "", "αd" }, { "", "αe" },
605        { "", "αf" }, { "", "αg" }, { "", "αh" }, { "", "αi" }, { "", "αj" },
606        { "", "αk" }, { "", "αl" }, { "", "αm" }, { "", "αn" }, { "", "αo" },
607        { "", "αp" }, { "", "αq" }, { "", "αr" }, { "", "αs" }, { "", "αt" },
608        { "", "αu" }, { "", "αv" }, { "", "αw" }, { "", "αx" },
609        { "ε", "εa" }, { "έ", "εb" }, { "", "εc" }, { "", "εd" }, { "", "εe" },
610        { "", "εf" }, { "", "εg" }, { "", "εh" }, { "", "εi" },
611        { "η", "ηa" }, { "η", "ηb" }, { "ή", "ηc" }, { "", "ηd" }, { "", "ηe" },
612        { "", "ηf" }, { "", "ηg" }, { "", "ηh" }, { "", "ηi" }, { "", "ηj" },
613        { "", "ηk" }, { "", "ηl" }, { "", "ηm" }, { "", "ηn" }, { "", "ηo" },
614        { "", "ηp" }, { "", "ηq" }, { "", "ηr" }, { "", "ηs" }, { "", "ηt" },
615        { "", "ηu" }, { "", "ηv" }, { "", "ηw" }, { "", "ηx" }, { "", "ηy" },
616        { "ι", "ιa" }, { "ί", "ιb" }, { "", "ιc" }, { "", "ιd" }, { "", "ιe" },
617        { "", "ιf" }, { "", "ιg" }, { "", "ιh" }, { "", "ιi" }, { "", "ιj" },
618        { "", "ιk" }, { "", "ιl" }, { "ϊ", "ιm" }, { "ΐ", "ιn" }, { "", "ιo" },
619        { "", "ιp" },
620        { "ο", "οa" }, { "ό", "οb" }, { "", "οc" }, { "", "οd" }, { "", "οe" },
621        { "", "οf" }, { "", "οg" }, { "", "οh" }, { "", "οi" },
622        { "ρ", "ρa" }, { "", "ῤb" }, { "", "ῥc" },
623        { "υ", "υa" }, { "ύ", "υb" }, { "", "υc" }, { "", "υd" }, { "", "υe" },
624        { "", "υf" }, { "", "υg" }, { "", "υh" }, { "", "υi" }, { "", "υj" },
625        { "", "υk" }, { "", "υl" }, { "ϋ", "υm" }, { "ΰ", "υn" }, { "", "υo" },
626        { "ω", "ωa" }, { "ώ", "ωb" }, { "", "ωc" }, { "", "ωd" }, { "", "ωe" },
627        { "", "ωf" }, { "", "ωg" }, { "", "ωh" }, { "", "ωi" }, { "", "ωj" },
628        { "", "ωk" }, { "", "ωl" }, { "", "ωm" }, { "", "ωn" }, { "", "ωo" },
629        { "", "ωp" }, { "", "ωq" }, { "", "ωr" }, { "", "ωs" }, { "", "ωt" },
630        { "", "ωu" }, { "", "ωv" }, { "", "ωw" }, { "", "ωx" },
631    },
632    entries = {
633        ["α"] = "α", ["ά"] = "α", [""] = "α", [""] = "α", [""] = "α",
634        [""] = "α", [""] = "α", [""] = "α", [""] = "α", [""] = "α",
635        [""] = "α", [""] = "α", [""] = "α", [""] = "α", [""] = "α",
636        [""] = "α", [""] = "α", [""] = "α", [""] = "α", [""] = "α",
637        [""] = "α", [""] = "α", [""] = "α", [""] = "α", ["β"] = "β",
638        ["γ"] = "γ", ["δ"] = "δ", ["ε"] = "ε", ["έ"] = "ε", [""] = "ε",
639        [""] = "ε", [""] = "ε", [""] = "ε", [""] = "ε", [""] = "ε",
640        [""] = "ε", ["ζ"] = "ζ", ["η"] = "η", ["η"] = "η", ["ή"] = "η",
641        [""] = "η", [""] = "η", [""] = "η", [""] = "η", [""] = "η",
642        [""] = "η", [""] = "η", [""] = "η", [""] = "η", [""] = "η",
643        [""] = "η", [""] = "η", [""] = "η", [""] = "η", [""] = "η",
644        [""] = "η", [""] = "η", [""] = "η", [""] = "η", [""] = "η",
645        [""] = "η", [""] = "η", ["θ"] = "θ", ["ι"] = "ι", ["ί"] = "ι",
646        [""] = "ι", [""] = "ι", [""] = "ι", [""] = "ι", [""] = "ι",
647        [""] = "ι", [""] = "ι", [""] = "ι", [""] = "ι", [""] = "ι",
648        ["ϊ"] = "ι", ["ΐ"] = "ι", [""] = "ι", [""] = "ι", ["κ"] = "κ",
649        ["λ"] = "λ", ["μ"] = "μ", ["ν"] = "ν", ["ξ"] = "ξ", ["ο"] = "ο",
650        ["ό"] = "ο", [""] = "ο", [""] = "ο", [""] = "ο", [""] = "ο",
651        [""] = "ο", [""] = "ο", [""] = "ο", ["π"] = "π", ["ρ"] = "ρ",
652        [""] = "", [""] = "", ["σ"] = "σ", ["ς"] = "ς", ["τ"] = "τ",
653        ["υ"] = "υ", ["ύ"] = "υ", [""] = "υ", [""] = "υ", [""] = "υ",
654        [""] = "υ", [""] = "υ", [""] = "υ", [""] = "υ", [""] = "υ",
655        [""] = "υ", [""] = "υ", ["ϋ"] = "υ", ["ΰ"] = "υ", [""] = "υ",
656        [""] = "υ", ["φ"] = "φ", ["χ"] = "χ", ["ψ"] = "ψ", ["ω"] = "ω",
657        ["ώ"] = "ω", [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω",
658        [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω",
659        [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω",
660        [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω", [""] = "ω",
661        [""] = "ω", [""] = "ω", [""] = "ω",
662    },
663 -- orders = {
664 --     "α", "ά", "ὰ", "ᾶ", "ᾳ", "ἀ", "ἁ", "ἄ", "ἂ", "ἆ",
665 --     "ἁ", "ἅ", "ἃ", "ἇ", "ᾁ", "ᾴ", "ᾲ", "ᾷ", "ᾄ", "ᾂ",
666 --     "ᾅ", "ᾃ", "ᾆ", "ᾇ", "β", "γ", "δ", "ε", "έ", "ὲ",
667 --     "ἐ", "ἔ", "ἒ", "ἑ", "ἕ", "ἓ", "ζ", "η", "η", "ή",
668 --     "ὴ", "ῆ", "ῃ", "ἠ", "ἤ", "ἢ", "ἦ", "ᾐ", "ἡ", "ἥ",
669 --     "ἣ", "ἧ", "ᾑ", "ῄ", "ῂ", "ῇ", "ᾔ", "ᾒ", "ᾕ", "ᾓ",
670 --     "ᾖ", "ᾗ", "θ", "ι", "ί", "ὶ", "ῖ", "ἰ", "ἴ", "ἲ",
671 --     "ἶ", "ἱ", "ἵ", "ἳ", "ἷ", "ϊ", "ΐ", "ῒ", "ῗ", "κ",
672 --     "λ", "μ", "ν", "ξ", "ο", "ό", "ὸ", "ὀ", "ὄ", "ὂ",
673 --     "ὁ", "ὅ", "ὃ", "π", "ρ", "ῤ", "ῥ", "σ", "ς", "τ",
674 --     "υ", "ύ", "ὺ", "ῦ", "ὐ", "ὔ", "ὒ", "ὖ", "ὑ", "ὕ",
675 --     "ὓ", "ὗ", "ϋ", "ΰ", "ῢ", "ῧ", "φ", "χ", "ψ", "ω",
676 --     "ώ", "ὼ", "ῶ", "ῳ", "ὠ", "ὤ", "ὢ", "ὦ", "ᾠ", "ὡ",
677 --     "ὥ", "ὣ", "ὧ", "ᾡ", "ῴ", "ῲ", "ῷ", "ᾤ", "ᾢ", "ᾥ",
678 --     "ᾣ", "ᾦ", "ᾧ",
679 -- },
680    orders = {
681        "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ",
682        "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "σ", "ς", "τ",
683        "υ", "φ", "χ", "ψ", "ω",
684    },
685}
686
687--- Latin
688
689-- Treating the post-classical fricatives “j” and “v” as “i” and “u”
690-- respectively.
691
692definitions["la"] = {
693    replacements = {
694        { "æ", "ae" }, { "Æ", "AE" },
695    },
696    entries = {
697        ["a"] = "a", ["ā"] = "a", ["ă"] = "a", ["b"] = "b", ["c"] = "c",
698        ["d"] = "d", ["e"] = "e", ["ē"] = "e", ["ĕ"] = "e", ["f"] = "f",
699        ["g"] = "g", ["h"] = "h", ["i"] = "i", ["ī"] = "i", ["ĭ"] = "i",
700        ["j"] = "i", ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n",
701        ["o"] = "o", ["ō"] = "o", ["ŏ"] = "o", ["p"] = "p", ["q"] = "q",
702        ["r"] = "r", ["s"] = "s", ["t"] = "t", ["u"] = "u", ["ū"] = "u",
703        ["ŭ"] = "u", ["v"] = "u", ["w"] = "w", ["x"] = "x", ["y"] = "y",
704        ["ȳ"] = "y", [""] = "y", ["z"] = "z",
705    },
706    orders = {
707        "a", "ā", "ă", "b", "c", "d", "e", "ē", "ĕ", "f",
708        "g", "h", "i", "ī", "ĭ", "j", "k", "l", "m", "n",
709        "o", "ō", "ŏ", "p", "q", "r", "s", "t", "u", "ū",
710        "ŭ", "v", "w", "x", "y", "ȳ", "", "z",
711    }
712}
713
714--- Italian
715
716definitions["it"] = {
717    entries = {
718        ["a"] = "a", ["á"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d",
719        ["e"] = "e", ["é"] = "e", ["è"] = "e", ["f"] = "f", ["g"] = "g",
720        ["h"] = "h", ["i"] = "i", ["í"] = "i", ["ì"] = "i", ["j"] = "j",
721        ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["o"] = "o",
722        ["ó"] = "o", ["ò"] = "o", ["p"] = "p", ["q"] = "q", ["r"] = "r",
723        ["s"] = "s", ["t"] = "t", ["u"] = "u", ["ú"] = "u", ["ù"] = "u",
724        ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y", ["z"] = "z",
725    },
726    orders = {
727        "a", "á", "b", "c", "d", "e", "é", "è", "f", "g",
728        "h", "i", "í", "ì", "j", "k", "l", "m", "n", "o",
729        "ó", "ò", "p", "q", "r", "s", "t", "u", "ú", "ù",
730        "v", "w", "x", "y", "z",
731    }
732}
733
734--- Romanian
735
736definitions["ro"] = {
737    entries = {
738        ["a"] = "a", ["ă"] = "ă", ["â"] = "â", ["b"] = "b", ["c"] = "c",
739        ["d"] = "d", ["e"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h",
740        ["i"] = "i", ["î"] = "î", ["j"] = "j", ["k"] = "k", ["l"] = "l",
741        ["m"] = "m", ["n"] = "n", ["o"] = "o", ["p"] = "p", ["q"] = "q",
742        ["r"] = "r", ["s"] = "s", ["ș"] = "ș", ["t"] = "t", ["ț"] = "ț",
743        ["u"] = "u", ["v"] = "v", ["w"] = "w", ["x"] = "x", ["y"] = "y",
744        ["z"] = "z",
745    },
746    orders = {
747        "a", "ă", "â", "b", "c", "d", "e", "f", "g", "h",
748        "i", "î", "j", "k", "l", "m", "n", "o", "p", "q",
749        "r", "s", "ș", "t", "ț", "u", "v", "w", "x", "y",
750        "z",
751    }
752}
753
754--- Spanish
755
756definitions["es"] = {
757    entries = {
758        ["a"] = "a", ["á"] = "a", ["b"] = "b", ["c"] = "c", ["d"] = "d",
759        ["e"] = "e", ["é"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h",
760        ["i"] = "i", ["í"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l",
761        ["m"] = "m", ["n"] = "n", ["ñ"] = "ñ", ["o"] = "o", ["ó"] = "o",
762        ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s", ["t"] = "t",
763        ["u"] = "u", ["ú"] = "u", ["ü"] = "u", ["v"] = "v", ["w"] = "w",
764        ["x"] = "x", ["y"] = "y", ["z"] = "z",
765    },
766 -- orders = {
767 --     "a", "á", "b", "c", "d", "e", "é", "f", "g", "h",
768 --     "i", "í", "j", "k", "l", "m", "n", "ñ", "o", "ó",
769 --     "p", "q", "r", "s", "t", "u", "ú", "ü", "v", "w",
770 --     "x", "y", "z",
771 -- },
772    orders = {
773        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
774        "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s",
775        "t", "u", "v", "w", "x", "y", "z",
776    },
777}
778
779--- Portuguese
780
781definitions["pt"] = {
782    entries = {
783        ["a"] = "a", ["á"] = "a", ["â"] = "a", ["ã"] = "a", ["à"] = "a",
784        ["b"] = "b", ["c"] = "c", ["ç"] = "c", ["d"] = "d", ["e"] = "e",
785        ["é"] = "e", ["ê"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h",
786        ["i"] = "i", ["í"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l",
787        ["m"] = "m", ["n"] = "n", ["o"] = "o", ["ó"] = "o", ["ô"] = "o",
788        ["õ"] = "o", ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s",
789        ["t"] = "t", ["u"] = "u", ["ú"] = "u", ["ü"] = "u", ["v"] = "v",
790        ["w"] = "w", ["x"] = "x", ["y"] = "y", ["z"] = "z",
791    },
792    orders = {
793        "a", "á", "â", "ã", "à", "b", "c", "ç", "d", "e",
794        "é", "ê", "f", "g", "h", "i", "í", "j", "k", "l",
795        "m", "n", "o", "ó", "ô", "õ", "p", "q", "r", "s",
796        "t", "u", "ú", "ü", "v", "w", "x", "y", "z",
797    }
798}
799
800--- Lithuanian
801
802local ch, CH = utfchar(replacementoffset + 1), utfchar(replacementoffset + 11)
803
804definitions["lt"] = {
805    replacements = {
806        { "ch", ch }, { "CH", CH}
807    },
808    entries = {
809        ["a"] = "a", ["ą"] = "a", ["b"] = "b", ["c"] = "c", [ch ] = "c",
810        ["č"] = "č", ["d"] = "d", ["e"] = "e", ["ę"] = "e", ["ė"] = "e",
811        ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i", ["į"] = "i",
812        ["y"] = "i", ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m",
813        ["n"] = "n", ["o"] = "o", ["p"] = "p", ["r"] = "r", ["s"] = "s",
814        ["š"] = "š", ["t"] = "t", ["u"] = "u", ["ų"] = "u", ["ū"] = "u",
815        ["v"] = "v", ["z"] = "z", ["ž"] = "ž",
816    },
817    orders = {
818        "a", "ą", "b", "c", ch,  "č", "d", "e", "ę", "ė",
819        "f", "g", "h", "i", "į", "y", "j", "k", "l", "m",
820        "n", "o", "p", "r", "s", "š", "t", "u", "ų", "ū",
821        "v", "z", "ž",
822    },
823    lower = {
824        ch = CH,
825    },
826    upper = {
827        CH = ch,
828    },
829}
830
831--- Latvian
832
833definitions["lv"] = {
834    entries = {
835        ["a"] = "a", ["ā"] = "a", ["b"] = "b", ["c"] = "c", ["č"] = "č",
836        ["d"] = "d", ["e"] = "e", ["ē"] = "e", ["f"] = "f", ["g"] = "g",
837        ["ģ"] = "ģ", ["h"] = "h", ["i"] = "i", ["ī"] = "i", ["j"] = "j",
838        ["k"] = "k", ["ķ"] = "ķ", ["l"] = "l", ["ļ"] = "ļ", ["m"] = "m",
839        ["n"] = "n", ["ņ"] = "ņ", ["o"] = "o", ["ō"] = "o", ["p"] = "p",
840        ["r"] = "r", ["ŗ"] = "ŗ", ["s"] = "s", ["š"] = "š", ["t"] = "t",
841        ["u"] = "u", ["ū"] = "u", ["v"] = "v", ["z"] = "z", ["ž"] = "ž",
842    },
843    orders = {
844        "a", "ā", "b", "c", "č", "d", "e", "ē", "f", "g",
845        "ģ", "h", "i", "ī", "j", "k", "ķ", "l", "ļ", "m",
846        "n", "ņ", "o", "ō", "p", "r", "ŗ", "s", "š", "t",
847        "u", "ū", "v", "z", "ž",
848    }
849}
850
851--- Hungarian
852
853-- Helpful but disturbing:
854-- http://en.wikipedia.org/wiki/Hungarian_alphabet#Alphabetical_ordering_.28collation.29
855-- (In short: you'd have to analyse word-compounds to realize a correct order
856-- for sequences like “nny”, “ssz”, and “zsz”. This is left as an exercise to
857-- the reader…)
858
859local cs,  CS  = utfchar(replacementoffset + 1), utfchar(replacementoffset + 11)
860local dz,  DZ  = utfchar(replacementoffset + 2), utfchar(replacementoffset + 12)
861local dzs, DZS = utfchar(replacementoffset + 3), utfchar(replacementoffset + 13)
862local gy,  GY  = utfchar(replacementoffset + 4), utfchar(replacementoffset + 14)
863local ly,  LY  = utfchar(replacementoffset + 5), utfchar(replacementoffset + 15)
864local ny,  NY  = utfchar(replacementoffset + 6), utfchar(replacementoffset + 16)
865local sz,  SZ  = utfchar(replacementoffset + 7), utfchar(replacementoffset + 17)
866local ty,  TY  = utfchar(replacementoffset + 8), utfchar(replacementoffset + 18)
867local zs,  ZS  = utfchar(replacementoffset + 9), utfchar(replacementoffset + 19)
868
869definitions["hu"] = {
870    replacements = {
871        { "cs",  cs  }, { "CS",  CS  },
872        { "dz",  dz  }, { "DZ",  DZ  },
873        { "dzs", dzs }, { "DZS", DZS },
874        { "gy",  gy  }, { "GY",  GY  },
875        { "ly",  ly  }, { "LY",  LY  },
876        { "ny",  ny  }, { "NY",  NY  },
877        { "sz",  sz  }, { "SZ",  SZ  },
878        { "ty",  ty  }, { "TY",  TY  },
879        { "zs",  zs  }, { "ZS",  ZS  },
880    },
881    entries = {
882        ["a"] = "a", ["á"] = "a",  ["b"] = "b",   ["c"] = "c",  [cs ] = "cs",
883        ["d"] = "d", [dz ] = "dz", [dzs] = "dzs", ["e"] = "e",  ["é"] = "e",
884        ["f"] = "f", ["g"] = "g",  [gy ] = "gy",  ["h"] = "h",  ["i"] = "i",
885        ["í"] = "i", ["j"] = "j",  ["k"] = "k",   ["l"] = "l",  [ly ] = "ly",
886        ["m"] = "m", ["n"] = "n",  [ny ] = "ny",  ["o"] = "o",  ["ó"] = "o",
887        ["ö"] = "ö", ["ő"] = "ö",  ["p"] = "p",   ["q"] = "q",  ["r"] = "r",
888        ["s"] = "s", [sz ] = "sz", ["t"] = "t",   [ty ] = "ty", ["u"] = "u",
889        ["ú"] = "u", ["ü"] = "ü",  ["ű"] = "ü",   ["v"] = "v",  ["w"] = "w",
890        ["x"] = "x", ["y"] = "y",  ["z"] = "z",   [zs ] = "zs",
891    },
892    orders = {
893        "a", "á", "b", "c", cs,  "d", dz,  dzs, "e", "é",
894        "f", "g", gy,  "h", "i", "í", "j", "k", "l", ly,
895        "m", "n", ny,  "o", "ó", "ö", "ő", "p", "q", "r",
896        "s", sz,  "t", ty, "u", "ú", "ü", "ű", "v", "w",
897        "x", "y", "z", zs,
898    },
899    lower = {
900        CS = cs, DZ = dz, DZS = dzs, GY = gy, LY = ly, NY = ny, SZ = sz, TY = ty, ZS = zs,
901    },
902    upper = {
903        cs = CS, dz = DZ, dzs = DZS, gy = GY, ly = LY, ny = NY, sz = SZ, ty = TY, zs = ZS,
904    },
905}
906
907-- Estonian
908
909definitions["et"] = {
910    entries = { -- f š z ž are used in estonian words of foreign origin, c č q w x y are used for foreign words only
911        ["a"] = "a", ["b"] = "b", ["c"] = "c", ["č"] = "č", ["d"] = "d",
912        ["e"] = "e", ["f"] = "f", ["g"] = "g", ["h"] = "h", ["i"] = "i",
913        ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n",
914        ["o"] = "o", ["p"] = "p", ["q"] = "q", ["r"] = "r", ["s"] = "s",
915        ["š"] = "š", ["z"] = "z", ["ž"] = "ž", ["t"] = "t", ["u"] = "u",
916        ["v"] = "v", ["w"] = "w", ["õ"] = "õ", ["ä"] = "ä", ["ö"] = "ö",
917        ["ü"] = "ü", ["x"] = "x", ["y"] = "y",
918    },
919    orders = {
920        "a", "b", "c", "č", "d", "e", "f", "g", "h", "i",
921        "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
922        "š", "z", "ž", "t", "u", "v", "w", "õ", "ä", "ö",
923        "ü", "x", "y",
924    },
925}
926
927--- Korean
928
929local fschars = characters.fschars
930
931local function firstofsplit(first)
932    local fs = fschars[first] or first -- leadconsonant
933    return fs, fs -- entry, tag
934end
935
936definitions["kr"] = {
937    firstofsplit = firstofsplit,
938    orders       = {
939        "", "", "", "", "", "", "", "", "", "", "", "", "", "",
940        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
941        "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
942    }
943}
944
945-- Japanese
946
947definitions["jp"] = {
948    replacements = {
949        { "", "" }, { "", "" },
950        { "", "" }, { "", "" },
951        { "", "" }, { "", "" },
952        { "", "" }, { "", "" },
953        { "", "" },
954    },
955    entries = {
956        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
957        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
958        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
959        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
960        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
961        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
962        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
963        [""] = "", [""] = "", [""] = "",
964        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
965        [""] = "", [""] = "", [""] = "", [""] = "", [""] = "",
966    },
967    orders = {
968        "", "", "", "", "", "", "", "", "", "",
969        "", "", "", "", "", "", "", "", "", "",
970        "", "", "", "", "", "", "", "", "", "",
971        "", "", "", "", "", "", "", "",
972        "", "", "", "", "", "", "", "", "", "",
973    }
974}
975
976-- Hebrew and Jiddish (Marc Trius)
977
978definitions['he'] = {
979    entries = {
980        ['א'] = 'א', ['ב'] = 'ב', ['ג'] = 'ג', ['ד'] = 'ד', ['ה'] = 'ה',
981        ['ו'] = 'ו', ['ז'] = 'ז', ['ח'] = 'ח', ['ט'] = 'ט', ['י'] = 'י',
982        ['כ'] = 'כ', ['ל'] = 'ל', ['מ'] = 'מ', ['נ'] = 'נ', ['ס'] = 'ס',
983        ['ע'] = 'ע', ['פ'] = 'פ', ['צ'] = 'צ', ['ק'] = 'ק', ['ר'] = 'ר',
984        ['ש'] = 'ש', ['ת'] = 'ת',
985    },
986    orders = {
987        "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "כ",
988        "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ר", "ש", "ת",
989    }
990}
991
992definitions["yi"] = {
993    parent = "he",
994    entries = {
995        ['א'] = 'א', ['ב'] = 'ב', [''] = '', ['ג'] = 'ג', ['ד'] = 'ד',
996        ['ה'] = 'ה', ['ו'] = 'ו', ['ז'] = 'ז', ['ח'] = 'ח', ['ט'] = 'ט',
997        ['י'] = 'י', [''] = '', ['כ'] = 'כ', ['ל'] = 'ל', ['מ'] = 'מ',
998        ['נ'] = 'נ', ['ס'] = 'ס', ['ע'] = 'ע', ['פ'] = 'פ', [''] = '',
999        ['צ'] = 'צ', ['ק'] = 'ק', ['ר'] = 'ר', ['ש'] = 'ש', [''] = '',
1000        [''] = '', ['ת'] = 'ת',
1001    },
1002    orders = {
1003        "א", "ב", "", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "", "כ", "ל",
1004        "מ", "נ", "ס", "ע", "", "", "צ", "ק", "ר", "ש", "", "", "ת",
1005    },
1006    replacements = {
1007        { "אַ", "א" }, { "אָ", "א" }, { "בּ", "ב" }, { "בֿ", "" }, { "וּ", "ו" },
1008        { "װ", "וו" }, { "ױ", "וי" }, { "", "י" }, { "ײ", "יי" }, { "", "יי" },
1009        { "כּ", "" }, { "ך", "כ" }, { "ם", "מ" }, { "ן", "נ" }, { "פּ", "" },
1010        { "פ", "" }, { "פֿ", "" }, { "ף", "" }, { "ץ", "צ" }, { "", "ש" },
1011        { "שׂ", "" }, { "תּ", "" },
1012    },
1013}
1014