Passed
Push — master ( 43bdc2...ca2e56 )
by Evgeny
01:47
created

maps.js (1 issue)

1
// Regex for syllable - [^aeiouy]*[aeiouy]+
2
3
maps = {
4
	trans: {
5
		// https://en.wikipedia.org/wiki/Help:IPA
6
		he: {
7
			'ˌ': '',
8
			'\\.': '"',
9
			'ˈ': '',
10
			'ʔ': '',
11
			'˜': '',
12
13
			'ʎ': 'יה',
14
			'ɦ': 'ה',
15
			'je': 'י',
16
			'oʊ': 'ו',
17
			'juː?': 'יו',
18
			'aɪ': 'י',
19
			'ɔɪ': 'ו',
20
			'eɪ': 'י',
21
22
			'œ': 'וי',
23
			'y': 'ו',
24
			'ə': '',
25
			'о': 'ו',
26
			'а': '',
27
			'^ə': 'א',
28
			'e': '',
29
			'ɛ': '',
30
			'æ': '',
31
			'ɔː?': 'ו',
32
			'iː?': 'י',
33
			'ɪː?': 'י',
34
			'uː': 'ו',
35
			'ɑː?$': 'ה',
36
			'ɑː': 'א',
37
			'ɑ': '',
38
			'ᵿ': 'ו',
39
			'ᵻ': 'י',
40
			'ʌ': 'א',
41
			'ɜː?': '',
42
			'u': 'יו',
43
			'ʊ': 'ו',
44
			'ɪ': 'א',
45
			'a': 'א',
46
			'ɒ': 'ו',
47
			'ʏ': 'ו',
48
49
			'g': 'ג',
50
			'c': 'ק',
51
			'o': 'או',
52
53
			'ɲ': 'ני',
54
			'ɾ': 'ר',
55
			'b': 'ב',
56
			'β': 'ב',
57
			'd': 'ד',
58
			'ð': 'ד\'',
59
			'dʒ': 'ז\'',
60
			'f$': 'ף',
61
			'f': 'פ',
62
			'ɡ': 'ג',
63
			'ɣ': 'ג',
64
			'hw': 'וו',
65
			'^h': 'ח',
66
			'h$': 'ך',
67
			'h': 'ח',
68
			'ç$': 'ך',
69
			'ç': 'כ',
70
			'j': 'י',
71
			'k': 'ק',
72
			'l': 'ל',
73
			'm$': 'ם',
74
			'm': 'מ',
75
			'n$': 'ן',
76
			'n': 'נ',
77
			'ŋ': 'נג',
78
			'θ': 'ת\'',
79
			'p': 'פ',
80
			'r': 'ר',
81
			'ɹ': 'ר',
82
			'ʁ': 'ר',
83
			's': 'ס',
84
			'dz$': 'ץ',
85
			'dz': 'צ',
86
			'ts$': 'ץ',
87
			'ts': 'צ',
88
			'tʃ$': 'ץ\'',
89
			'tʃ': 'צ\'',
90
			'ʃ': 'ש',
91
			't': 'ט',
92
			'v': 'ו',
93
			'w': 'וו',
94
			'z': 'ז',
95
			'ʒ': 'ש',
96
			'ʂ': 'ש',
97
			'ɕː': 'ש',
98
			'ʐ': 'ג\'',
99
			'x': 'ח',
100
101
			'ː': '',
102
			'([^אהיו])\1+': '$1',
103
			'([אהיו])\1+': '$1$1'
104
		},
105
		ru: {
106
			'ˌ': 'ь',
107
			'ˈ': 'ъ',
108
			'ʔ': '',
109
			'˜': '',
110
111
			'œ': 'ой',
112
			'y': 'у',
113
			'je': 'e',
114
			'ja': 'я',
115
			'aʊ': 'oу',
116
			'oʊ': 'oу',
117
			'ju': 'ю',
118
			'aɪ': 'я',
119
			'ɔɪ': 'ё',
120
			'eɪ': 'е',
121
122
			// 'о': 'о',
123
			// 'а': 'а',
124
			'^ə': 'a',
125
			'e': 'е',
126
			'ə': 'е',
127
			'ɛ': 'э',
128
			'æ': 'е',
129
			'ɔː': 'о',
130
			'ɔ': 'оу',
131
			'i': 'и',
132
			'ɪ': 'и',
133
			'u': 'у',
134
			'ɑː?': 'а',
135
			'ᵿ': 'ю',
136
			'ᵻ': 'ы',
137
			'ʌ': 'а',
138
			'ɜː?': 'е',
139
			'ʊ': 'у',
140
			'ɒː?': 'о',
141
			'ʏ': 'у',
142
143
			'ɲ': 'нь',
144
			'ɾ': 'рь',
145
			'ʎ': 'я',
146
			'ɦ': 'г',
147
			'b': 'б',
148
			'β': 'в',
149
			'd': 'д',
150
			'dʒ': 'дж',
151
			'ð': 'д',
152
			'f': 'ф',
153
			'ɡ': 'г',
154
			'ɣ': 'Г',
155
			'hw': 'ю',
156
			'h': 'х',
157
			'ç': 'х',
158
			'j': 'и',
159
			'k': 'к',
160
			'l': 'л',
161
			'm': 'м',
162
			'n': 'н',
163
			'ŋ': 'нг',
164
			'θ': 'ф',
165
			'p': 'п',
166
			'r': 'р',
167
			'ɹ': 'р',
168
			'ʁ': 'р',
169
			'ts': 'ц',
170
			'dz': 'ц',
171
			's': 'с',
172
			'tʃ': 'ч',
173
			'ʃ': 'ш',
174
			't': 'т',
175
			'v': 'в',
176
			'w': 'в',
177
			'z': 'з',
178
			'ʒ': 'ш',
179
			'ʂ': 'ш',
180
			'ɕː': 'щ',
181
			'ʐ': 'ж',
182
			'x': 'х',
183
184
			'([чщ])я': '$1а',
185
			'([чщ])ё': '$1о',
186
			'([чщ])ю': '$1у',
187
			'([жш])ы': '$1и',
188
			'([ао])([рл])([ао])': 'о$2о',
189
			'ː': ''
190
		},
191
		es: {
192
			'ʔ': '',
193
			'˜': '',
194
			'ˌ': '',
195
			'ˈ': '',
196
197
			'y': 'u',
198
			'je': 'e',
199
			'ja': 'ia',
200
			'aʊ': 'o',
201
			'oʊ': 'o',
202
			'ju': 'iu',
203
			'aɪ': 'i',
204
			'ɔɪ': 'o',
205
			'eɪ': 'e',
206
207
			'œ': 'oi',
208
			'ɔː': 'o',
209
			// 'о': 'о',
210
			// 'а': 'а',
211
			'^ə': 'a',
212
			'e': 'е',
213
			'ə': 'е',
214
			'ɛ': 'е',
215
			'æ': 'е',
216
			'ɔ': 'ou',
217
			'iː': 'иe',
218
			// 'i': 'i',
219
			'ɪ': 'i',
220
			// 'u': 'u',
221
			'ɑː?': 'a',
222
			'ᵿ': 'u',
223
			'ᵻ': 'i',
224
			'ʌ': 'a',
225
			'ɜː?': 'e',
226
			'ʊ': 'u',
227
			'ɒː?': 'o',
228
			'ʏ': 'y',
229
230
			'ɲ': 'ñ',
231
			'ɾ': 'r',
232
			'ʎ': 'll',
233
			'ɦ': 'gh',
234
			'b': 'v',
235
			'β': 'b',
236
			'dʒ': 'd',
237
			// 'd': 'd',
238
			'ð': 'd',
239
			// 'f': 'f',
240
			'ɣ': 'g',
241
			'hw': 'u',
242
			'h': 'j',
243
			'ç': 'j',
244
			'ks': 'x',
245
			// 'k': 'k',
246
			// 'l': 'l',
247
			// 'm': 'm',
248
			// 'n': 'n',
249
			'θ': 's',
250
			// 'p': 'p',
251
			'r': 'rr',
252
			'ɹ': 'r',
253
			// 'ts': 'ts',
254
			'dz': 'ts',
255
			's': 'z',
256
			'tʃ': 'ch',
257
			'ʃ': 'sh',
258
			// 't': 't',
259
			'v': 'v',
260
			'z': 's',
261
			'ʒ': 'z',
262
			'ʂ': 'sh',
263
			'ɕː': 'sh',
264
			'ʐ': 'g',
265
			'x': 'j',
266
267
			'j([aeoiuy])': 'hi$1',
268
			'j': 'i',
269
			'w([aeiouy])': 'hu$1',
270
			'ŋ([^aeoiuy])': 'n$1',
271
			'ŋ': 'ng',
272
			'(^|n)ɡw?([ao])': '$1gu$2',
273
			'(^|n)ɡw([ei])': '$1gü$2',
274
			'ɡ': 'g',
275
			'w': '',
276
			'ʁ': 'r',
277
			's([ei])': 'c$1',
278
279
			'ː': ''
280
		},
281
		de: {
282
			'ʔ': '',
283
			'˜': '',
284
			'ˌ': '',
285
			'ˈ': '',
286
287
			'œ': 'oi',
288
			'iː': 'ie',
289
			'yː': 'üh',
290
			'ye': 'ü',
291
			'y': 'ü',
292
			'je': 'e',
293
			// 'ja': 'ja',
294
			'ia': 'ja',
295
			'aʊ': 'au',
296
			'oʊ': 'ou',
297
			'ju': 'u',
298
			'aɪ': 'ei',
299
			'ɔɪ': 'eu',
300
			'ɔʏ': 'eu',
301
			'eɪ': 'eh',
302
			'jɪ': 'gi',
303
304
			'ɔː': 'o',
305
			'оː': 'оh',
306
			// 'о': 'о',
307
			'аː': 'аh',
308
			// 'а': 'а',
309
			'eː': 'ä',
310
			// 'e': 'е',
311
			'^ə': 'a',
312
			'ə': 'е',
313
			'ɛ': 'ä',
314
			'æ': 'ö',
315
			'ɔ': 'o',
316
			'ɪ': 'i',
317
			'u:': 'uh',
318
			// 'u': 'u',
319
			'ɑː?': 'a',
320
			'ᵿ': 'u',
321
			'ᵻ': 'i',
322
			'ʌ': 'a',
323
			'ɜː?': 'e',
324
			'ʊ': 'u',
325
			'ɒ:?': 'o',
326
			'ʏ': 'u',
327
328
			'ɲk': 'nk',
329
			'ɲ': 'ng',
330
			'ɾ': 'r',
331
			'ʎ': 'l',
332
			'ɦ': 'gh',
333
			// 'b': 'b',
334
			'ss': 'ß',
335
			'sz': 'β',
336
			'β': 'b',
337
			'dʒ': 'dsch',
338
			// 'd': 'd',
339
			'ð': 'd',
340
			// 'f': 'f',
341
			'ɡ': 'g',
342
			'ɣ': 'g',
343
			'([aou])h': '$1ch',
344
			'iç$': 'ig',
345
			'ç(..?n)$': 'chen',
346
			'k(äei)': 'c$1',
347
			'^k': 'k',
348
			// 'k': 'k',
349
			// 'l': 'l',
350
			// 'm': 'm',
351
			// 'n': 'n',
352
			// 'j': 'j',
353
			'θ': 't',
354
			// 'p': 'p',
355
			// 'r': 'r',
356
			'ɹ': 'r',
357
			'ts(äei)': 'c$1',
358
			// 'ts': 'ts',
359
			// 'dz': 'dz',
360
			's': 's',
361
			// 'tʃ': 'tsch',
362
			'ʃ': 'sch',
363
			// 't$': 'd',
364
			// 't': 't',
365
			'v': 'w',
366
			'ʒ': 'dz',
367
			'ʂ': 'sch',
368
			'ɕː': 'sch',
369
			'ʐ': 'g',
370
			'x': 'h',
371
372
			'([aäeioöuüy])p': '$1b',
373
			'([aäeioöuüy])z($|[aäeioöuüy])': '$1s$2',
374
			'z': 'ts',
375
			'ʁ': 'r',
376
			'h([aäeioöuüy])': 'h$1',
377
			// 'h': 'h',
378
379
			'ː': ''
380
		}
381
	},
382
	en: {
383
		// https://en.wikipedia.org/wiki/English_orthography
384
		trans: {
385
			'xc([ei])': 'ks$1', // before e or i ==> /ks/
386
			'xh': 'ɡz', // ==> /ɡz/
387
			'[ts]ion': 'ʃən', // ==> /ɡz/
388
389
			'wr': 'r', // ==> /ɹ/
390
			'rh([^aeiouy])': '$2', // before consonant ==>  Ø
391
			'([^aeiouy])rr?h([^aeiouy])': '$1$2', // before consonant ==>  Ø
392
			'rr?h?e?$': '', // finally or before final e ==> Ø
393
			'rr?h?': 'r', // usually ==> /ɹ/
394
395
			'sh': 'ʃ', // ==> /ʃ/
396
			'sch': 'sk', // ==> /sk/
397
			'sc([eiy])': 's$1', // ==> /s/
398
			'tch': 'tʃ', // ==> /tʃ/
399
			'th': 'θ',
400
401
			'who': 'h', // ==> /h/
402
			'wh': 'w', // usually ==> /w/
403
404
			'^ya': 'ia', // usually ==> /w/
405
406
			'g([eiy]|(ae)|(or)|(oe))': 'dʒ$1', // before e, i, y, ae, or oe => /dʒ/
407
			'c([eiy]|(ae)|(or)|(oe))': 's$1', // before e, i, y, ae, or oe ==> /s/
408
			'cc([eiy])': 'ks$1', // before e, i or y ==> /ks/
409
410
			'oar': 'ɔːr', // before r ==> /ɔː/
0 ignored issues
show
Unused Code Bug introduced by
The key oar is used more than once in this object expression.
Loading history...
411
			'oar': 'ɔːr', // before r ==> /ɔː/
412
			'oa': 'oʊ', // usually ==> /oʊ/
413
			'oe': 'iː', // usually ==> /iː/
414
			'oeu': 'uː', // ==> /uː/
415
			'oir': 'wɑːr', // before r ==> /wɑː/
416
			'oi': 'ɔɪ', // usually ==> /ɔɪ/
417
			'oo([dk])': 'ʊ$1', // before k, d ==> /ʊ/
418
			'oor': 'ɔər', // before r ==> /ɔə/
419
			'oo': 'uː', // usually ==> /uː/
420
			'our': 'ɔːr', // stressed before r ==> /ɔː/
421
			// 'ou': 'ə', // unstressed ==> /ə/
422
			'ou': 'aʊ', // stressed ==> /aʊ/
423
			'owr': 'aʊər', // stressed before r ==> /aʊə/
424
			// 'ow': 'aʊə', // unstressed ==> /aʊə/
425
			'ow': 'aʊ', // stressed ==> /aʊ/
426
			'oy': 'ɔɪ', // ==> /ɔɪ/
427
428
			'wa(r($|[^aeiouy]))': 'wɔː$1', // after /w/ before final r or r + cons. /*(and in derived terms)*/ ==> /ɔː/
429
			'wa([^xkg(ng\w)(nn?k)(nn?g)])': 'wɑː$1', // after /w/ except before /k/, /ɡ/, /ŋ/ ==> /ɒ/ (/ɑː/)*
430
			'st((en)|(le))': 's$1', // in -sten and -stle ==> Ø
431
			'y([^aeiouy]((le)|(r[aeiouy])))': 'aɪ$1', // before cons + (-le or r+vowel) ==> /aɪ/
432
			'u([^aeiouy]((le)|(r[aeiouy])))': 'juː$1', // before cons + (-le or r+vowel) ==> /juː/
433
			'o([^aeiouy]((le)|(r[aeiouy])))': 'oʊ$1', // before cons + (-le or r+vowel) ==> /oʊ/
434
			'i([^aeiouy]((le)|(r[aeiouy])))': 'aɪ$1', // before cons + (-le or r+vowel)
435
			'i([^aeiouy][ei][aeiouy])': 'ɪ$1', // before cons. + e/i + vowel ==> /ɪ/
436
			'ier': 'ɪə', // before r ==> /ɪə/
437
			'^(.+)ie(.+)$': '$1iː$2', // medially ==> /iː/
438
439
			'^a': 'ə', // unstressed ==> /ə/
440
			'a$': 'ɑː', // word-final (stressed) ==> /ɑː/
441
			'a(r($|[^aeiouy]))': 'ɑː$1', // before final r or r + cons. /*(and in derived terms)*/ ==> /ɑː/
442
			'a(r[aeiouy])': 'ɛ', // before r + vowel ==> /ɛ(ə)/ †
443
			'a([^aeiouy]{2,})': 'æ$1', // before multiple consonants ==> /æ/
444
			'a([^aeiouy]+)$': 'æ$1', // final vowel in word ==> /æ/
445
			'a([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'æ$1', // followed by 2 or more unstressed syllables ==> /æ/
446
			'a((nge)|(ste))$': 'eɪ$1', // before final -nge, -ste ==> /eɪ/
447
			'a([^aeiouy][aeiouy])': 'eɪ$1', // before single consonant ==> /eɪ/
448
			'a([^aeiouy]((le)|(r[aeiouy])))': 'eɪ$1', // before cons + (-le or r+vowel) ==> /eɪ/
449
			// 'a([eiouy])': 'eɪ$1', // before heterosyllabic vowel ==> /eɪ/
450
			'a(ge)': '', // unstressed, in -age ==> /ɪ, ə/
451
			'a[ah]': 'ɑː', // ==> /ɑː/
452
			'aer': 'ɛər', // before r ==> /ɛə/
453
			'ae': 'ɑːə', // usually ==> /iː/ ||| but my fix !!!
454
			'air': 'ɛər', // == >/ɛə/
455
			'a[iy]': 'eɪ', // ay or stressed a with i or  ==> /eɪ/
456
			// 'ai': 'ɪ, ə', // /*unstressed*/ ==> /ɪ, ə/
457
			'ao': 'aʊ', // ==> /aʊ/
458
			'a[uw]': 'ɔː', // ==> /ɔː/
459
460
			'uu' : 'juə', // ==> /juə/
461
			'uy' : 'aɪ', // ==> /aɪ/
462
			'gue': 'ɡ', // after g ==> Ø
463
			'ue': 'juː', // elsewhere (except after q) ==> /juː/
464
			'qu': 'kw', // after q ==> /w/
465
			'ie[uw]r': 'jʊər', // before r ==> /jʊə/
466
			'e(r($|[^aeiouy]))': 'ɜː$1', // before final r or r + other cons. /*(and in derived terms)*/ ==> /ɜː/
467
			'e([^aeiouy][aeiouy])': 'iː$1', // before single consonant ==> /iː/
468
			'e([^aeiouy]r[aeiouy])': 'iː$1', // before cons + r +vowel ==> /iː/
469
			'^([^aeiouy]+)e$': '$1iː', // final, only vowel in word ==> /iː/
470
			// 'e[aiouy]': 'iː$1', // before heterosyllabic vowel ==> /iː/
471
			'e([^aeiouy]{2,})': 'ɛ$1', // before multiple consonants ==> /ɛ/
472
			'e([^aeiouy]+)$': 'ɛ$1', // final vowel in word ==> /ɛ/
473
			'e([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɛ$1', // bef. 2+ unstressed syllables ==> /ɛ/
474
			'e(r[aeiouy])': 'ɪə$1', // before r + vowel ==> /ɪə/
475
			// 'e(.)': 'ə$1', // unstressed ==> /ə/
476
			'e$': '', // word-final and derivatives ==> Ø
477
			'ea': 'iː', // usually ==> /iː/
478
			'ea(r[^aeiouy])': 'ɜː$1', // before r + cons. ==> /ɜː/
479
			'ea(r($|[aeiouy]))': 'ɪə$1', // before final r or r + vowel /*(and in derived terms)*/ ==> /ɪə/
480
			'eau': 'oʊ', // ==> /oʊ/
481
			'eer': 'ɪər', // before r ==> /ɪə/
482
			'ee': 'iː', // usually ==> /iː/
483
			'ce[iy]': 'ciː', // after c ==> /iː/
484
			'e[iy]r': 'ɛər', // before r ==> /ɛə/
485
			'e[iy]$': 'i', // /*unstressed,*/ word-final ==> /i/
486
			'e[iy]': 'eɪ', // usually ==> /eɪ/
487
			'e[uw]e?r': 'jʊər', // before r ==> /jʊə/
488
			// 'e[uw]e?': '', // unstressed before r ==> /ju(ə)/
489
			// 'ie[uw]': '', // unstressed before r ==> /ju(ə)/
490
			'(e[uw]e?)|(ie[uw])': 'juː', // usually ==> /juː/
491
492
			'([jr]|([^aeiouy]l))ui': '$1uː', // after j, r, or cons. + l ==> /uː/
493
			'gui': 'ɡwɪ', // after g ==> /wɪ/
494
			'ui': 'ɪ', // elsewhere (except after q) ==> /juːɪ/ /ɪ/
495
			'i(r[aeiouy]($|[aeiouy]))': 'aɪə$1', // before r + vowel (except bef. 2+ unstressed syllables) ==> /aɪə/
496
			'i(r($|[^aeiouy]))': 'ɜː$1', // before final r or r + cons. (and in derived terms) ==> /ɜː/
497
			'i([^aeiouy][aeiouy])': 'aɪ$1', // before single consonant ==> /aɪ/
498
			'i((nd)|(ld)|(gh)|(gn))': 'aɪ$1', // before -nd, -ld, -gh, -gn ==> /aɪ/
499
			'i$': 'aɪ', // word-final ==> /aɪ/
500
			// 'i([aeouy])': 'aɪ$1', // before heterosyllabic vowel ==> /aɪ/
501
			'i([^aeiouy]{2,})': 'ɪ$1', // before multiple consonants ==> /ɪ/
502
			'i([^aeiouy]*)$': 'ɪ$1', // final vowel in word ==> /ɪ/
503
			'i([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɪ$1', // bef. 2+ unstressed syllables ==> /ɪ/
504
			'i([aeiouy])': 'i$1', // before heterosyllabic vowel ==> /i/ (radii)
505
506
			'wor': 'wɜːr', //after w and before r ==> /ɜː/
507
			'or': 'ɔːr', // before r ==> /ɔː/
508
			'o([^aeiouy]{2,})': 'ɑː$1', // before multiple consonants ==> /ɒ/ or /ɑː/
509
			'o([^aeiouy]+)$': 'ɑː$1', // final vowel in word ==> /ɒ/ or /ɑː/
510
			'o([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɑː$1', // followed by 2 or more unstressed syllables ==> /ɒ/ or /ɑː/
511
			'o([^aeiouy][aeiouy])': 'oʊ$1', // before single consonant ==> /oʊ/
512
			'o$': 'oʊ', // word-final ==> /oʊ/
513
			// 'o([aeiouy])': 'oʊ$1', // before heterosyllabic vowel (inc. unstressed) ==> /oʊ/
514
515
			// 'oe': 'ɪ$1', // unstressed ==> /ɪ/
516
			'oe([^aeiouy]*)$': 'oʊ$1', // final vowels ==> /oʊ/
517
			'^o': 'oʊ', // mine ...
518
			'o': 'ə', // unstressed ==> /ə/
519
520
			'^u': 'jʊ', // unstressed ==> /ə/
521
			'u(r($|[^aeiouy]))': 'ɜː$1', // before final r or r + cons. /*(and in derived terms)*/ ==> /ɜː/
522
			'u(r[aeiouy])': 'jʊ(ə)$1', // before r + vowel ==> /jʊ(ə)/
523
			'(r|([^aeiouy]l))ue': '$1uː', // after r or cons. + l ==> /uː/
524
			'u([^aeiouy]{2,})': 'ʌ$1', // before multiple consonants ==> /ʌ/
525
			'u([^aeiouy][aeiouy])': 'juː$1', // before single consonant ==> /juː/
526
			'u$': 'juː', // word-final ==> /juː/
527
			'gu([aiouy])': 'ɡ$1', // after g and before a vowel ==> Ø
528
			'u([aeoiy])': 'juː$1', // before heterosyllabic vowel ==> /juː/
529
			'u([^aeiouy]*)$': 'ʌ$1', // final vowel in word ==> /ʌ/
530
			'u': 'ə', // unstressed ==> /ə/
531
532
			'y([^aeiouy]{2,})': 'ɪ$1', // before multiple consonants ==> /ɪ/
533
			'y([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɪ$1', // followed by 2 or more unstressed syllables ==> /ɪ/
534
			'y([^aeiouy][aeiouy])': 'aɪ$1', // before single consonant ==> /aɪ/
535
			'y$': 'aɪ', // word-final, stressed ==> /aɪ/
536
			// 'y$': 'i', // unstressed, word-final ==> /i/
537
			'y(r($|[^aeiouy]))': 'aɪ$1', // before final r or r + cons. /*(and in derived terms)*/ ==> /aɪ/
538
			'y(r[aeiouy])': 'aɪə$1', // before r + vowel ==> /aɪə/
539
540
541
			'mb$': '', // finally after m /*(and in derived terms)*/ ==> Ø
542
			'bb?': 'b', // usually ==> /b/
543
544
			'^c([tn])': '$1', // initially before n, t ==> Ø
545
			'cc': 'k', // elsewhere ==> /k/
546
			'ch': 'tʃ', // usually ==> /tʃ/
547
			'ck': 'k', // ==> /k/
548
			'c': 'k', // elsewhere ==> /k/
549
550
			'dg': 'dʒ', // before e, i, or y ==> /dʒ/
551
			'd[dh]?': 'd', // ==> /d/
552
553
			'ff?': 'f', // ==> /f/
554
555
			'g([nm])': '$1', // in gm or gn => Ø
556
			'^gh': 'g', // initially ==> /ɡ/
557
			'gh': '', // elsewhere => Ø
558
			'g[gɡ]?': 'ɡ', // elsewhere ==> /ɡ/
559
560
			'h$': '', // final ==> Ø
561
			'([r(ex)])h': '$1', // after r or ex ==> Ø
562
563
			'j': 'dʒ', // ==> /dʒ/
564
565
			'k[kh]?': 'k', // usually ==> /k/
566
			'^kn': 'n', // initially before n ==> Ø
567
			'll?': 'l', // ==> /l/
568
569
			'mnn?$': 'm', // finally after m ==> Ø
570
			'^mm?n': 'n', // initially before n => Ø
571
			'mm?': 'm', // usually ==> /m/
572
573
			'n[gɡ](.)': 'ŋ$1', // before /k/ or /ɡ/ ==> /ŋ/
574
			'nn?[kgɡ]': 'ŋ', // before /k/ or /ɡ/ ==> /ŋ/
575
			'nn?': 'n', // usually ==>/n/
576
577
			'^p([nst])': '$1', // initially before n, s, t ==> Ø
578
			'pp?': 'p', // usually ==> /p/
579
580
			'q([^u])': 'k$1', // (not before u) ==> /k/
581
582
			'ss': 's', // ==> /s/
583
			'sw': 'sw', // ==> /sw/
584
			't[sz]': 'ts', // mine...
585
			's$': 's', // word-final -s morpheme after a voiceless sound ==> /s/
586
			// '[bdɟɡmnɲŋlrɽjw]s': 's', // word-final -s morpheme after a voiceless sound ==> /s/
587
			// '[]s': 'z', // word-final -s morpheme after a lenis sound ==> /z/
588
			'([aeiouy])s([aeiouy])': '$1z$2', // -s- between vowel sounds (see also 'se' below) ==> /z/
589
			's': 's', // usually ==> /s/
590
591
			'tt?': 't', // usually ==> /t/
592
593
			'vv?': 'v', // ==> /v/
594
595
			'w': 'w', // => /w/
596
597
			'^x': 'z', // initially ==> /z/
598
			'x': 'ks', // elsewhere ==> /ks/
599
600
			'zz?': 'z', // ==> /z/
601
602
			'h': 'h', // usually ==> /h/
603
604
			// 'y([^aeiouy]*ɪ)': 'ɪ$1', // next syllable contains /ɪ/ ==> /ɪ/
605
			'y': 'j', // unstressed ==> /ɪ/
606
			// 'i([^aeiouy]*ɪ)': 'ɪ$1', // next syllable contains /ɪ/ ==> /ɪ/
607
			'i': 'ɪ, ə', // unstressed /ɪ, ə/
608
			// 'e([^aeiouy]*ɪ)': 'ɛ$1', // next syllable contains /ɪ/ ==> /ɛ/
609
			// 'a([^aeiouy]*ɪ, ə)': 'æ$1', // next syllable contains /ɪ, ə/ ==> /æ/
610
			// 'o([^aeiouy]*ɪ)': 'ɑː$1', // next syllable contains /ɪ/ ==> /ɒ/ or /ɑː/
611
			// '([rʃʒj]|([^aeiouy]l))ie[uw]': '$1uː', // after /r/, /ʃ/, /ʒ/, /j/, cons. + /l/ ==> /uː/
612
			// '([rʃʒj]|([^aeiouy]l))e[uw]e?': '$1uː', // after /r/, /ʃ/, /ʒ/, /j/, cons. + /l/ ==> /uː/
613
			// '([rʃʒj]|([^aeiouy]l))u': '$1uː', // above after /r/,/ʃ/,/ʒ/,/j/, cons.+/l/ ==> /uː/
614
			// 'wa([^kɡŋ])': 'wɑː$1', // after /w/ except before /k/, /ɡ/, /ŋ/ ==> /ɒ/ (/ɑː/)*
615
616
			'r': 'ɹ', // fix
617
618
            'ß': 'ss', // German
619
            'β': 'sz', // German
620
            'ä': 'ɛ', // German
621
            'ö': 'œ', // German
622
            'ü': 'ʏ' // German
623
		}
624
	},
625
	ru: {
626
		// https://en.wikipedia.org/wiki/Russian_alphabet
627
		trans: {
628
			// 'a': 'a',
629
			'б': 'b',
630
			'в': 'v',
631
			'г': 'ɡ',
632
			'д': 'd',
633
			'е': 'je',
634
			'ё': 'jo',
635
			'ж': 'ʐ',
636
			'з': 'z',
637
			'и': 'i',
638
			'й': 'j',
639
			'к': 'k',
640
			'л': 'l',
641
			'м': 'm',
642
			'н': 'n',
643
			'о': 'o',
644
			'п': 'p',
645
			'р': 'r',
646
			'с': 's',
647
			'т': 't',
648
			'у': 'u',
649
			'ф': 'f',
650
			'х': 'x',
651
			'ц': 'tʃ',
652
			'ч': 'tɕː',
653
			'ш': 'ʃ',
654
			'щ': 'ɕː',
655
			'ь': 'ˈ',
656
			'ъ': ' ',
657
			'ы': 'ɨ',
658
			'э': 'e',
659
			'ю': 'ju',
660
			'я': 'ja'
661
		},
662
		el: {
663
			'а': 'α',
664
			'б': 'μπ',
665
			'в': 'β',
666
			'г': 'γκ',
667
			'д': 'δ',
668
			'ж': 'ζ',
669
			'е': 'γιε',
670
			'ё': 'γιο',
671
			'з': 'ζ',
672
			'и': 'ι',
673
			'й': 'γη',
674
			'к': 'κ',
675
			'л': 'λ',
676
			'м': 'μ',
677
			'н': 'ν',
678
			'о': 'ο',
679
			'п': 'π',
680
			'р': 'ρ',
681
			'с': 'σ',
682
			'т': 'τ',
683
			'у': 'ου',
684
			'Ф': 'φ',
685
			'х': 'χ',
686
			'ц': 'τσ',
687
			'ч': 'τσ',
688
			'ш': 'σ',
689
			'щ': 'σ',
690
			'ь': 'ˌ',
691
			'ъ': 'ˈ',
692
			'ы': 'ι',
693
			'э': 'ε',
694
			'ю': 'γι',
695
			'я': 'για'
696
		},
697
		sr: {
698
			'дь': 'đ',
699
			'ль': 'љ',
700
			'нь': 'њ',
701
			'ть': 'ћ',
702
			'дж': 'џ',
703
			'ь': '',
704
			'ъ': ' ',
705
			'ы': 'i',
706
			'э': 'е',
707
			'ю': 'ju',
708
			'я': 'ja',
709
			'й': 'j',
710
			'рр': 'р'
711
		},
712
713
		ru: {
714
			'йе': 'є',
715
			'йи': 'ї',
716
			'й': 'і',
717
			'г': 'ґ',
718
			'ъ': '',
719
			'рр': 'р'
720
		}
721
	},
722
	sr: {
723
		// https://en.wikipedia.org/wiki/Serbian_Cyrillic_alphabet
724
		trans: {
725
			// 'a': 'a',
726
			'б': 'b',
727
			'в': 'v',
728
			'г': 'ɡ',
729
			'д': 'd',
730
			'đ': 'dj',
731
			// 'e': 'e',
732
			'ж': 'ʒ',
733
			'з': 'z',
734
			'и': 'i',
735
			// 'j': 'j',
736
			'к': 'k',
737
			'л': 'l',
738
			'љ': 'ʎ',
739
			'м': 'm',
740
			'н': 'n',
741
			'њ': 'ɲ',
742
			'о': 'o',
743
			'п': 'p',
744
			'р': 'r',
745
			'с': 's',
746
			'т': 't',
747
			'ћ': 'tɕ',
748
			'у': 'u',
749
			'ф': 'f',
750
			'х': 'x',
751
			'ц': 'ts',
752
			'ч': 'tʃ',
753
			'џ': 'dʒ',
754
			'ш': 'ʃ'
755
		},
756
		ru: {
757
			'đ': 'дь',
758
			'љ': 'ль',
759
			'њ': 'нь',
760
			'ћ': 'ть',
761
			'џ': 'дж',
762
			'j': 'й',
763
			'рр': 'р'
764
765
		}
766
	},
767
	de: {
768
		// https://en.wikipedia.org/wiki/German_orthography
769
		trans: {
770
			'([aäeioöuüy])b': '$1p',
771
			// 'b': 'b',
772
			'([aou])ch': '$1x',
773
			'ch(en)$': 'ç$1',
774
			'c([äei])': 'ts$1',
775
			'c[hk]?': 'k',
776
			'd$': 't',
777
			'dsch': 'dʒ',
778
			'dt?': 'd',
779
			// 'f': 'f',
780
			'([aäeioöuüy]i)g$': '$1k',
781
			'ig$': 'iç',
782
			// 'g': 'g',
783
			'h([aäeioöuüy])': 'h$1',
784
			'([aäeioöuüy])h': '$1',
785
			// 'j': 'j',
786
			// 'k': 'k',
787
			// 'l': 'l',
788
			// 'm': 'm',
789
			'ng': 'ŋ',
790
			'nk': 'ŋk',
791
			// 'n': 'n',
792
			'^pf': 'f',
793
			'ph': 'f',
794
			// 'p': 'p',
795
			'qu': 'kv',
796
			'([aäeioöuüy])s($|[aäeioöuüy])': '$1z$2',
797
			's$': 's',
798
			's([^aäeioöuüy])': 's$1',
799
			'^s([pt])': 'ʃ$1',
800
			's([^aäeioöuüy]*($|[aäeioöuüy]))': 'ʃ$1',
801
			'sch': 'ʃ',
802
			'ss?': 's',
803
			'ß': 'ss',
804
			'β': 'sz',
805
			'ti((on)|(är)|(al)|(ell))': 'tsɪ̯$1',
806
			'((tsch)|(zsch))': 'tʃ',
807
			'tz': 'ts',
808
			'th?': 't',
809
			'v': 'f',
810
			'w': 'v',
811
			'x': 'ks',
812
			'z': 'ts',
813
			'[ae][iy]': 'aɪ',
814
			'au': 'aʊ',
815
			'a[ah]?': 'a:',
816
			// 'a': 'a',
817
			'(eu)|(äu)': 'ɔʏ',
818
			'äh?': 'e:',
819
			'ä': 'ɛ',
820
			'e[eh]': 'e:',
821
			'e': 'ɛ',
822
			'ie?h?': 'i:',
823
			'i': 'ɪ',
824
			'o[oh]': 'o:',
825
			'o': 'ɔ',
826
			'öh': '',
827
			'ö': 'œ',
828
			'uh': 'u:',
829
			'u': 'ʊ',
830
			'üh': 'y:',
831
			'ü': 'ʏ',
832
			'y': 'ʏ',
833
			// 'r': 'r'
834
		}
835
	},
836
	fr: {
837
		// https://en.wikipedia.org/wiki/French_orthography
838
839
		// /** Tautology is useful to not goto next !!! */
840
		trans: {
841
			'x$': '', // to solve potential conflict with the rule "next to a voiceless consonant"
842
			'[bcgpt]s$': '',
843
			'(œu)[df]s$': '$1',
844
			'bb?': 'b',
845
			'ç': 's',
846
			'sc': 'sk',
847
			'xc([eiy])': 'ks',
848
			'xc': 'ksk',
849
			'([ãɛõœ])ct': '', // Nasal vowels ==> ∅
850
			'ct': 'kt',
851
			'ch': 'ʃ',
852
			'cc([eiy])': 'ks$1',
853
			'c([eiy])': 's$1',
854
			'cc?': 'k',
855
			'dd?$': '',
856
			'dd?': 'd',
857
			'ff?': 'f',
858
			'gn': 'ɲ',
859
			'gg([eiy])': 'ɡʒ',
860
			'g$': '',
861
			'g([eiy])': 'ʒ',
862
			'gg?': 'ɡ',
863
			'h': '', // lol
864
			'j': 'ʒ',
865
			'k': 'k',
866
			'll?': 'l',
867
			'mm?': 'm',
868
			'ng': 'ŋ',
869
			'nn?': 'n',
870
			'pt': 'pt',
871
			'ph': 'f',
872
			'pp?$': '',
873
			'pp?': 'p',
874
			'ss': '',
875
			'sc([eiy])': 's$1',
876
			'([^s])s$': '$1',
877
			'^s([^s])': 's$1',
878
			'([^aàâeéêëiîïoôœuûy])s([^aàâeéêëiîïoôœuûy])': '$1s$2',
879
			'([ãɛõœ])s': '$1s',
880
			'th': 't',
881
			'tt?$': '',
882
			'tt?': 't',
883
			'v': 'v',
884
			'w': 'w',
885
			'^x': 'ks',
886
			'([aàâeéêëiîïoôœuûy])x([aàâeéêëiîïoôœuûy])': '$1ɡz$2',
887
			'z$': '',
888
			'z': 'z',
889
			'oue': 'u',
890
			'eau': 'o',
891
			'aie': 'ɛ',
892
			'([cg])ue': '$1œ',
893
			'ue$': 'y',
894
			'ue': 'ɥɛ',
895
			'œu': 'œ',
896
			'oie?': 'wa',
897
			'oe': 'oe',
898
			'ou([aàâeéêëiîïoôœuûy])': 'w$1',
899
			'o[uû]': 'u',
900
			'oï': 'oi',
901
			'oê': 'wa',
902
			'oë': 'ɔɛ',
903
			'oy': 'waj',
904
			'oz': 'oz',
905
			'ao[uû]': 'au',
906
			'aï': 'ai',
907
			'aî': 'ɛ',
908
			'ay$': 'ɛ',
909
			'ay': 'ɛj',
910
			'au': 'o',
911
			'ai': 'e',
912
			'e([^aàâeéêëiîïoôœuûy]+)': 'ɛ$1', // ???
913
			'e[iî]': 'ɛ',
914
			'eû': '',
915
			'eu(z?)$': '$1',
916
			'eu': 'œ',
917
			'i([aàâeéêëiîïoôœuûy])': 'j$1',
918
			'^ï': 'j',
919
			'([aàâeéêëiîïoôœuûy])ï([aàâeéêëiîïoôœuûy])': '$1j$2',
920
			'u([aàâeéêëiîïoôœuûy]+)': 'ɥ',
921
			'^y([aàâeéêëiîïoôœuûy])': 'j$1',
922
			'â': 'ɑ',
923
			'a|à': 'a',
924
			'ie?': 'i',
925
			'e$': '',
926
			'e': 'ə',
927
			'ée?': 'e',
928
			'ê|è': 'ɛ',
929
			'[îï]': 'i',
930
			'o': 'ɔ',
931
			'ô': 'o',
932
			'œ': 'o',
933
			'y': 'i',
934
			'[uû]': 'y',
935
			'rr?': 'ʁ'
936
		}
937
	},
938
	es: {
939
		// https://en.wikipedia.org/wiki/Spanish_orthography
940
		trans: {
941
			'([mn])[bv]': '$1b',
942
			'^[bv]': 'b',
943
			'[bv]': 'β',
944
			'c([ei])': 's$1',
945
			'ch': 'tʃ',
946
			'c': 'k',
947
			'^d': 'd',
948
			'd([ln])': 'd',
949
			'd': 'ð',
950
			// 'f': 'f',
951
			'(^|n)gu([ao])': '$1ɡw$2',
952
			'gu([ao])': 'ɣw$2',
953
			'(^|n)gu([ei])?': '$1ɡ$2',
954
			'gu([ei])': 'ɣ$1',
955
			'(^|n)gü([ei])?': '$1ɡw$2',
956
			'gü([ei])': 'ɣw$1',
957
			'g([ei])': 'x$1',
958
			'(^|n)g([^ei])?': '$1ɡ$2',
959
			'g([^ei])?': 'ɣ$1',
960
			'sh': 'ʃ',
961
			'hu([aeoiuy])': 'w$1',
962
			'hi([aeoiuy])': 'j$1',
963
			'h': '',
964
			'j': 'x',
965
			// 'k': 'k',
966
			'll': 'ʎ',
967
			// 'l': 'l',
968
			'm$': 'n',
969
			// 'm': 'm',
970
			'n([^aeoiuy])': 'ŋ$1',
971
			// 'n': 'n',
972
			'ñ': 'ɲ',
973
			// 'p': 'p',
974
			'qu([ei])': 'k$1',
975
			'([aeoiuy])rr([aeoiuy])': '$1r$2',
976
			'^r': 'r',
977
			'r([lns])': 'r$1',
978
			'rr': 'r',
979
			'r': 'ɾ',
980
			's([^aeoiuy])': 'z',
981
			// 's': 's',
982
			't[xz]': 'tʃ',
983
			// 't': 't',
984
			// 'w': 'w',
985
			'([aeoiuy])x([aeoiuy])': '$1ks$2',
986
			'([^aeoiuy])x([^aeoiuy])': '$1s$2',
987
			'x': 'ks',
988
			'y': 'i',
989
			'z': 's',
990
			// 'a': 'a',
991
			// 'e': 'e',
992
			// 'i': 'i',
993
			// 'o': 'o',
994
			// 'u': 'u'
995
		}
996
	},
997
	el: {
998
		en: {
999
			'αυ': 'av',
1000
			'ει': 'i',
1001
			'οι': 'i',
1002
			'ου': 'u',
1003
			'αι': 'e',
1004
			'ντ': 'd',
1005
			'μπ': 'b',
1006
			'γγ': 'g',
1007
			'γκ': 'g',
1008
			'τσ': 'ts',
1009
			'τζ': 'j',
1010
			'αϊ': 'y',
1011
			'ευ': 'ev',
1012
			'α': 'a',
1013
			'β': 'v',
1014
			'γ': 'g',
1015
			'δ': 'd',
1016
			'ε': 'e',
1017
			'ζ': 'z',
1018
			'η': 'i',
1019
			'θ': 'th',
1020
			'ι': 'i',
1021
			'κ': 'k',
1022
			'λ': 'l',
1023
			'μ': 'm',
1024
			'ν': 'n',
1025
			'ξ': 'x',
1026
			'ο': 'o',
1027
			'π': 'p',
1028
			'ρ': 'r',
1029
			'σ': 's',
1030
			'τ': 't',
1031
			'υ': 'i',
1032
			'φ': 'f',
1033
			'χ': 'h',
1034
			'ψ': 'ps',
1035
			'ω': 'o',
1036
			'ς': 's' // only last and lowercase
1037
		},
1038
		ru: {
1039
			'αυ': 'ав',
1040
			'ει': 'и',
1041
			'οι': 'и',
1042
			'ου': 'у',
1043
			'αι': 'е',
1044
			'ντ': 'д',
1045
			'μπ': 'б',
1046
			'γγ': 'г',
1047
			'γκ': 'г',
1048
			'τσ': 'ц',
1049
			'τζ': 'ж',
1050
			'αϊ': 'ай',
1051
			'ευ': 'ев',
1052
			'α': 'а',
1053
			'β': 'в',
1054
			'γ': 'г',
1055
			'δ': 'д',
1056
			'ε': 'е',
1057
			'ζ': 'з',
1058
			'η': 'и',
1059
			'θ': 'ф',
1060
			'ι': 'и',
1061
			'κ': 'к',
1062
			'λ': 'л',
1063
			'μ': 'м',
1064
			'ν': 'н',
1065
			'ξ': 'кс',
1066
			'ο': 'о',
1067
			'π': 'п',
1068
			'ρ': 'р',
1069
			'σ': 'с',
1070
			'τ': 'т',
1071
			'υ': 'и',
1072
			'φ': 'ф',
1073
			'χ': 'х',
1074
			'ψ': 'пс',
1075
			'ω': 'о',
1076
			'ς': 'с' // only last and lowercase
1077
		}
1078
	},
1079
	ua: {
1080
		trans: {
1081
			'а': 'a',
1082
			'б': 'b',
1083
			'в': 'v',
1084
			'г': 'ɦ',
1085
			'ґ': 'ɡ',
1086
			'д': 'd',
1087
			'е': 'ɛ',
1088
			'є': 'jɛ',
1089
			'ж': 'ʐ',
1090
			'з': 'z',
1091
			'и': 'ɪ',
1092
			'і': 'i',
1093
			'ї': 'ji',
1094
			'к': 'k',
1095
			'л': 'l',
1096
			'м': 'm',
1097
			'н': 'n',
1098
			'о': 'ɔ',
1099
			'п': 'p',
1100
			'р': 'r',
1101
			'с': 's',
1102
			'т': 't',
1103
			'у': 'u',
1104
			'ф': 'f',
1105
			'х': 'x',
1106
			'ц': 'ts',
1107
			'ч': 'tʃ',
1108
			'ш': 'ʃ',
1109
			'щ': 'ɕː',
1110
			'ь': 'ˌ',
1111
			'ю': 'ju',
1112
			'я': 'ja'
1113
		},
1114
		ru: {
1115
			'ґ': 'г',
1116
			'є': 'йе',
1117
			'і': 'й',
1118
			'ї': 'йи'
1119
		}
1120
	}
1121
};
1122
1123
1124
module.exports = {
1125
	languages: Object.keys(maps),
1126
	map: maps
1127
}