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

maps.js (1 issue)

Labels
Severity
1
// Regex for syllable - [^aeiouy]*[aeiouy]+
2
3
maps = {
0 ignored issues
show
The variable maps seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.maps.
Loading history...
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 ==> /ɔː/
411
			'oa': 'oʊ', // usually ==> /oʊ/
412
			'oe': 'iː', // usually ==> /iː/
413
			'oeu': 'uː', // ==> /uː/
414
			'oir': 'wɑːr', // before r ==> /wɑː/
415
			'oi': 'ɔɪ', // usually ==> /ɔɪ/
416
			'oo([dk])': 'ʊ$1', // before k, d ==> /ʊ/
417
			'oor': 'ɔər', // before r ==> /ɔə/
418
			'oo': 'uː', // usually ==> /uː/
419
			'our': 'ɔːr', // stressed before r ==> /ɔː/
420
			// 'ou': 'ə', // unstressed ==> /ə/
421
			'ou': 'aʊ', // stressed ==> /aʊ/
422
			'owr': 'aʊər', // stressed before r ==> /aʊə/
423
			// 'ow': 'aʊə', // unstressed ==> /aʊə/
424
			'ow': 'aʊ', // stressed ==> /aʊ/
425
			'oy': 'ɔɪ', // ==> /ɔɪ/
426
427
			'wa(r($|[^aeiouy]))': 'wɔː$1', // after /w/ before final r or r + cons. /*(and in derived terms)*/ ==> /ɔː/
428
			'wa([^xkg(ng\w)(nn?k)(nn?g)])': 'wɑː$1', // after /w/ except before /k/, /ɡ/, /ŋ/ ==> /ɒ/ (/ɑː/)*
429
			'st((en)|(le))': 's$1', // in -sten and -stle ==> Ø
430
			'y([^aeiouy]((le)|(r[aeiouy])))': 'aɪ$1', // before cons + (-le or r+vowel) ==> /aɪ/
431
			'u([^aeiouy]((le)|(r[aeiouy])))': 'juː$1', // before cons + (-le or r+vowel) ==> /juː/
432
			'o([^aeiouy]((le)|(r[aeiouy])))': 'oʊ$1', // before cons + (-le or r+vowel) ==> /oʊ/
433
			'i([^aeiouy]((le)|(r[aeiouy])))': 'aɪ$1', // before cons + (-le or r+vowel)
434
			'i([^aeiouy][ei][aeiouy])': 'ɪ$1', // before cons. + e/i + vowel ==> /ɪ/
435
			'ier': 'ɪə', // before r ==> /ɪə/
436
			'^(.+)ie(.+)$': '$1iː$2', // medially ==> /iː/
437
438
			'^a': 'ə', // unstressed ==> /ə/
439
			'a$': 'ɑː', // word-final (stressed) ==> /ɑː/
440
			'a(r($|[^aeiouy]))': 'ɑː$1', // before final r or r + cons. /*(and in derived terms)*/ ==> /ɑː/
441
			'a(r[aeiouy])': 'ɛ', // before r + vowel ==> /ɛ(ə)/ †
442
			'a([^aeiouy]{2,})': 'æ$1', // before multiple consonants ==> /æ/
443
			'a([^aeiouy]+)$': 'æ$1', // final vowel in word ==> /æ/
444
			'a([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'æ$1', // followed by 2 or more unstressed syllables ==> /æ/
445
			'a((nge)|(ste))$': 'eɪ$1', // before final -nge, -ste ==> /eɪ/
446
			'a([^aeiouy][aeiouy])': 'eɪ$1', // before single consonant ==> /eɪ/
447
			'a([^aeiouy]((le)|(r[aeiouy])))': 'eɪ$1', // before cons + (-le or r+vowel) ==> /eɪ/
448
			// 'a([eiouy])': 'eɪ$1', // before heterosyllabic vowel ==> /eɪ/
449
			'a(ge)': '', // unstressed, in -age ==> /ɪ, ə/
450
			'a[ah]': 'ɑː', // ==> /ɑː/
451
			'aer': 'ɛər', // before r ==> /ɛə/
452
			'ae': 'ɑːə', // usually ==> /iː/ ||| but my fix !!!
453
			'air': 'ɛər', // == >/ɛə/
454
			'a[iy]': 'eɪ', // ay or stressed a with i or  ==> /eɪ/
455
			// 'ai': 'ɪ, ə', // /*unstressed*/ ==> /ɪ, ə/
456
			'ao': 'aʊ', // ==> /aʊ/
457
			'a[uw]': 'ɔː', // ==> /ɔː/
458
459
			'uu' : 'juə', // ==> /juə/
460
			'uy' : 'aɪ', // ==> /aɪ/
461
			'gue': 'ɡ', // after g ==> Ø
462
			'ue': 'juː', // elsewhere (except after q) ==> /juː/
463
			'qu': 'kw', // after q ==> /w/
464
			'ie[uw]r': 'jʊər', // before r ==> /jʊə/
465
			'e(r($|[^aeiouy]))': 'ɜː$1', // before final r or r + other cons. /*(and in derived terms)*/ ==> /ɜː/
466
			'e([^aeiouy][aeiouy])': 'iː$1', // before single consonant ==> /iː/
467
			'e([^aeiouy]r[aeiouy])': 'iː$1', // before cons + r +vowel ==> /iː/
468
			'^([^aeiouy]+)e$': '$1iː', // final, only vowel in word ==> /iː/
469
			// 'e[aiouy]': 'iː$1', // before heterosyllabic vowel ==> /iː/
470
			'e([^aeiouy]{2,})': 'ɛ$1', // before multiple consonants ==> /ɛ/
471
			'e([^aeiouy]+)$': 'ɛ$1', // final vowel in word ==> /ɛ/
472
			'e([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɛ$1', // bef. 2+ unstressed syllables ==> /ɛ/
473
			'e(r[aeiouy])': 'ɪə$1', // before r + vowel ==> /ɪə/
474
			// 'e(.)': 'ə$1', // unstressed ==> /ə/
475
			'e$': '', // word-final and derivatives ==> Ø
476
			'ea': 'iː', // usually ==> /iː/
477
			'ea(r[^aeiouy])': 'ɜː$1', // before r + cons. ==> /ɜː/
478
			'ea(r($|[aeiouy]))': 'ɪə$1', // before final r or r + vowel /*(and in derived terms)*/ ==> /ɪə/
479
			'eau': 'oʊ', // ==> /oʊ/
480
			'eer': 'ɪər', // before r ==> /ɪə/
481
			'ee': 'iː', // usually ==> /iː/
482
			'ce[iy]': 'ciː', // after c ==> /iː/
483
			'e[iy]r': 'ɛər', // before r ==> /ɛə/
484
			'e[iy]$': 'i', // /*unstressed,*/ word-final ==> /i/
485
			'e[iy]': 'eɪ', // usually ==> /eɪ/
486
			'e[uw]e?r': 'jʊər', // before r ==> /jʊə/
487
			// 'e[uw]e?': '', // unstressed before r ==> /ju(ə)/
488
			// 'ie[uw]': '', // unstressed before r ==> /ju(ə)/
489
			'(e[uw]e?)|(ie[uw])': 'juː', // usually ==> /juː/
490
491
			'([jr]|([^aeiouy]l))ui': '$1uː', // after j, r, or cons. + l ==> /uː/
492
			'gui': 'ɡwɪ', // after g ==> /wɪ/
493
			'ui': 'ɪ', // elsewhere (except after q) ==> /juːɪ/ /ɪ/
494
			'i(r[aeiouy]($|[aeiouy]))': 'aɪə$1', // before r + vowel (except bef. 2+ unstressed syllables) ==> /aɪə/
495
			'i(r($|[^aeiouy]))': 'ɜː$1', // before final r or r + cons. (and in derived terms) ==> /ɜː/
496
			'i([^aeiouy][aeiouy])': 'aɪ$1', // before single consonant ==> /aɪ/
497
			'i((nd)|(ld)|(gh)|(gn))': 'aɪ$1', // before -nd, -ld, -gh, -gn ==> /aɪ/
498
			'i$': 'aɪ', // word-final ==> /aɪ/
499
			// 'i([aeouy])': 'aɪ$1', // before heterosyllabic vowel ==> /aɪ/
500
			'i([^aeiouy]{2,})': 'ɪ$1', // before multiple consonants ==> /ɪ/
501
			'i([^aeiouy]*)$': 'ɪ$1', // final vowel in word ==> /ɪ/
502
			'i([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɪ$1', // bef. 2+ unstressed syllables ==> /ɪ/
503
			'i([aeiouy])': 'i$1', // before heterosyllabic vowel ==> /i/ (radii)
504
505
			'wor': 'wɜːr', //after w and before r ==> /ɜː/
506
			'or': 'ɔːr', // before r ==> /ɔː/
507
			'o([^aeiouy]{2,})': 'ɑː$1', // before multiple consonants ==> /ɒ/ or /ɑː/
508
			'o([^aeiouy]+)$': 'ɑː$1', // final vowel in word ==> /ɒ/ or /ɑː/
509
			'o([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɑː$1', // followed by 2 or more unstressed syllables ==> /ɒ/ or /ɑː/
510
			'o([^aeiouy][aeiouy])': 'oʊ$1', // before single consonant ==> /oʊ/
511
			'o$': 'oʊ', // word-final ==> /oʊ/
512
			// 'o([aeiouy])': 'oʊ$1', // before heterosyllabic vowel (inc. unstressed) ==> /oʊ/
513
514
			// 'oe': 'ɪ$1', // unstressed ==> /ɪ/
515
			'oe([^aeiouy]*)$': 'oʊ$1', // final vowels ==> /oʊ/
516
			'^o': 'oʊ', // mine ...
517
			'o': 'ə', // unstressed ==> /ə/
518
519
			'^u': 'jʊ', // unstressed ==> /ə/
520
			'u(r($|[^aeiouy]))': 'ɜː$1', // before final r or r + cons. /*(and in derived terms)*/ ==> /ɜː/
521
			'u(r[aeiouy])': 'jʊ(ə)$1', // before r + vowel ==> /jʊ(ə)/
522
			'(r|([^aeiouy]l))ue': '$1uː', // after r or cons. + l ==> /uː/
523
			'u([^aeiouy]{2,})': 'ʌ$1', // before multiple consonants ==> /ʌ/
524
			'u([^aeiouy][aeiouy])': 'juː$1', // before single consonant ==> /juː/
525
			'u$': 'juː', // word-final ==> /juː/
526
			'gu([aiouy])': 'ɡ$1', // after g and before a vowel ==> Ø
527
			'u([aeoiy])': 'juː$1', // before heterosyllabic vowel ==> /juː/
528
			'u([^aeiouy]*)$': 'ʌ$1', // final vowel in word ==> /ʌ/
529
			'u': 'ə', // unstressed ==> /ə/
530
531
			'y([^aeiouy]{2,})': 'ɪ$1', // before multiple consonants ==> /ɪ/
532
			'y([^aeiouy][aeiouy][^aeiouy]?[aeiouy])': 'ɪ$1', // followed by 2 or more unstressed syllables ==> /ɪ/
533
			'y([^aeiouy][aeiouy])': 'aɪ$1', // before single consonant ==> /aɪ/
534
			'y$': 'aɪ', // word-final, stressed ==> /aɪ/
535
			// 'y$': 'i', // unstressed, word-final ==> /i/
536
			'y(r($|[^aeiouy]))': 'aɪ$1', // before final r or r + cons. /*(and in derived terms)*/ ==> /aɪ/
537
			'y(r[aeiouy])': 'aɪə$1', // before r + vowel ==> /aɪə/
538
539
540
			'mb$': '', // finally after m /*(and in derived terms)*/ ==> Ø
541
			'bb?': 'b', // usually ==> /b/
542
543
			'^c([tn])': '$1', // initially before n, t ==> Ø
544
			'cc': 'k', // elsewhere ==> /k/
545
			'ch': 'tʃ', // usually ==> /tʃ/
546
			'ck': 'k', // ==> /k/
547
			'c': 'k', // elsewhere ==> /k/
548
549
			'dg': 'dʒ', // before e, i, or y ==> /dʒ/
550
			'd[dh]?': 'd', // ==> /d/
551
552
			'ff?': 'f', // ==> /f/
553
554
			'g([nm])': '$1', // in gm or gn => Ø
555
			'^gh': 'g', // initially ==> /ɡ/
556
			'gh': '', // elsewhere => Ø
557
			'g[gɡ]?': 'ɡ', // elsewhere ==> /ɡ/
558
559
			'h$': '', // final ==> Ø
560
			'([r(ex)])h': '$1', // after r or ex ==> Ø
561
562
			'j': 'dʒ', // ==> /dʒ/
563
564
			'k[kh]?': 'k', // usually ==> /k/
565
			'^kn': 'n', // initially before n ==> Ø
566
			'll?': 'l', // ==> /l/
567
568
			'mnn?$': 'm', // finally after m ==> Ø
569
			'^mm?n': 'n', // initially before n => Ø
570
			'mm?': 'm', // usually ==> /m/
571
572
			'n[gɡ](.)': 'ŋ$1', // before /k/ or /ɡ/ ==> /ŋ/
573
			'nn?[kgɡ]': 'ŋ', // before /k/ or /ɡ/ ==> /ŋ/
574
			'nn?': 'n', // usually ==>/n/
575
576
			'^p([nst])': '$1', // initially before n, s, t ==> Ø
577
			'pp?': 'p', // usually ==> /p/
578
579
			'q([^u])': 'k$1', // (not before u) ==> /k/
580
581
			'ss': 's', // ==> /s/
582
			'sw': 'sw', // ==> /sw/
583
			't[sz]': 'ts', // mine...
584
			's$': 's', // word-final -s morpheme after a voiceless sound ==> /s/
585
			// '[bdɟɡmnɲŋlrɽjw]s': 's', // word-final -s morpheme after a voiceless sound ==> /s/
586
			// '[]s': 'z', // word-final -s morpheme after a lenis sound ==> /z/
587
			'([aeiouy])s([aeiouy])': '$1z$2', // -s- between vowel sounds (see also 'se' below) ==> /z/
588
			's': 's', // usually ==> /s/
589
590
			'tt?': 't', // usually ==> /t/
591
592
			'vv?': 'v', // ==> /v/
593
594
			'w': 'w', // => /w/
595
596
			'^x': 'z', // initially ==> /z/
597
			'x': 'ks', // elsewhere ==> /ks/
598
599
			'zz?': 'z', // ==> /z/
600
601
			'h': 'h', // usually ==> /h/
602
603
			// 'y([^aeiouy]*ɪ)': 'ɪ$1', // next syllable contains /ɪ/ ==> /ɪ/
604
			'y': 'j', // unstressed ==> /ɪ/
605
			// 'i([^aeiouy]*ɪ)': 'ɪ$1', // next syllable contains /ɪ/ ==> /ɪ/
606
			'i': 'ɪ, ə', // unstressed /ɪ, ə/
607
			// 'e([^aeiouy]*ɪ)': 'ɛ$1', // next syllable contains /ɪ/ ==> /ɛ/
608
			// 'a([^aeiouy]*ɪ, ə)': 'æ$1', // next syllable contains /ɪ, ə/ ==> /æ/
609
			// 'o([^aeiouy]*ɪ)': 'ɑː$1', // next syllable contains /ɪ/ ==> /ɒ/ or /ɑː/
610
			// '([rʃʒj]|([^aeiouy]l))ie[uw]': '$1uː', // after /r/, /ʃ/, /ʒ/, /j/, cons. + /l/ ==> /uː/
611
			// '([rʃʒj]|([^aeiouy]l))e[uw]e?': '$1uː', // after /r/, /ʃ/, /ʒ/, /j/, cons. + /l/ ==> /uː/
612
			// '([rʃʒj]|([^aeiouy]l))u': '$1uː', // above after /r/,/ʃ/,/ʒ/,/j/, cons.+/l/ ==> /uː/
613
			// 'wa([^kɡŋ])': 'wɑː$1', // after /w/ except before /k/, /ɡ/, /ŋ/ ==> /ɒ/ (/ɑː/)*
614
615
			'r': 'ɹ', // fix
616
617
            'ß': 'ss', // German
618
            'β': 'sz', // German
619
            'ä': 'ɛ', // German
620
            'ö': 'œ', // German
621
            'ü': 'ʏ' // German
622
		}
623
	},
624
	ru: {
625
		// https://en.wikipedia.org/wiki/Russian_alphabet
626
		trans: {
627
			// 'a': 'a',
628
			'б': 'b',
629
			'в': 'v',
630
			'г': 'ɡ',
631
			'д': 'd',
632
			'е': 'je',
633
			'ё': 'jo',
634
			'ж': 'ʐ',
635
			'з': 'z',
636
			'и': 'i',
637
			'й': 'j',
638
			'к': 'k',
639
			'л': 'l',
640
			'м': 'm',
641
			'н': 'n',
642
			'о': 'o',
643
			'п': 'p',
644
			'р': 'r',
645
			'с': 's',
646
			'т': 't',
647
			'у': 'u',
648
			'ф': 'f',
649
			'х': 'x',
650
			'ц': 'tʃ',
651
			'ч': 'tɕː',
652
			'ш': 'ʃ',
653
			'щ': 'ɕː',
654
			'ь': 'ˈ',
655
			'ъ': ' ',
656
			'ы': 'ɨ',
657
			'э': 'e',
658
			'ю': 'ju',
659
			'я': 'ja'
660
		},
661
		el: {
662
			'а': 'α',
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
		sr: {
697
			'дь': 'đ',
698
			'ль': 'љ',
699
			'нь': 'њ',
700
			'ть': 'ћ',
701
			'дж': 'џ',
702
			'ь': '',
703
			'ъ': ' ',
704
			'ы': 'i',
705
			'э': 'е',
706
			'ю': 'ju',
707
			'я': 'ja',
708
			'й': 'j',
709
			'рр': 'р'
710
		},
711
712
		ru: {
713
			'йе': 'є',
714
			'йи': 'ї',
715
			'й': 'і',
716
			'г': 'ґ',
717
			'ъ': '',
718
			'рр': 'р'
719
		}
720
	},
721
	sr: {
722
		// https://en.wikipedia.org/wiki/Serbian_Cyrillic_alphabet
723
		trans: {
724
			// 'a': 'a',
725
			'б': 'b',
726
			'в': 'v',
727
			'г': 'ɡ',
728
			'д': 'd',
729
			'đ': 'dj',
730
			// 'e': 'e',
731
			'ж': 'ʒ',
732
			'з': 'z',
733
			'и': 'i',
734
			// 'j': 'j',
735
			'к': 'k',
736
			'л': 'l',
737
			'љ': 'ʎ',
738
			'м': 'm',
739
			'н': 'n',
740
			'њ': 'ɲ',
741
			'о': 'o',
742
			'п': 'p',
743
			'р': 'r',
744
			'с': 's',
745
			'т': 't',
746
			'ћ': 'tɕ',
747
			'у': 'u',
748
			'ф': 'f',
749
			'х': 'x',
750
			'ц': 'ts',
751
			'ч': 'tʃ',
752
			'џ': 'dʒ',
753
			'ш': 'ʃ'
754
		},
755
		ru: {
756
			'đ': 'дь',
757
			'љ': 'ль',
758
			'њ': 'нь',
759
			'ћ': 'ть',
760
			'џ': 'дж',
761
			'j': 'й',
762
			'рр': 'р'
763
764
		}
765
	},
766
	de: {
767
		// https://en.wikipedia.org/wiki/German_orthography
768
		trans: {
769
			'([aäeioöuüy])b': '$1p',
770
			// 'b': 'b',
771
			'([aou])ch': '$1x',
772
			'ch(en)$': 'ç$1',
773
			'c([äei])': 'ts$1',
774
			'c[hk]?': 'k',
775
			'd$': 't',
776
			'dsch': 'dʒ',
777
			'dt?': 'd',
778
			// 'f': 'f',
779
			'([aäeioöuüy]i)g$': '$1k',
780
			'ig$': 'iç',
781
			// 'g': 'g',
782
			'h([aäeioöuüy])': 'h$1',
783
			'([aäeioöuüy])h': '$1',
784
			// 'j': 'j',
785
			// 'k': 'k',
786
			// 'l': 'l',
787
			// 'm': 'm',
788
			'ng': 'ŋ',
789
			'nk': 'ŋk',
790
			// 'n': 'n',
791
			'^pf': 'f',
792
			'ph': 'f',
793
			// 'p': 'p',
794
			'qu': 'kv',
795
			'([aäeioöuüy])s($|[aäeioöuüy])': '$1z$2',
796
			's$': 's',
797
			's([^aäeioöuüy])': 's$1',
798
			'^s([pt])': 'ʃ$1',
799
			's([^aäeioöuüy]*($|[aäeioöuüy]))': 'ʃ$1',
800
			'sch': 'ʃ',
801
			'ss?': 's',
802
			'ß': 'ss',
803
			'β': 'sz',
804
			'ti((on)|(är)|(al)|(ell))': 'tsɪ̯$1',
805
			'((tsch)|(zsch))': 'tʃ',
806
			'tz': 'ts',
807
			'th?': 't',
808
			'v': 'f',
809
			'w': 'v',
810
			'x': 'ks',
811
			'z': 'ts',
812
			'[ae][iy]': 'aɪ',
813
			'au': 'aʊ',
814
			'a[ah]?': 'a:',
815
			// 'a': 'a',
816
			'(eu)|(äu)': 'ɔʏ',
817
			'äh?': 'e:',
818
			'ä': 'ɛ',
819
			'e[eh]': 'e:',
820
			'e': 'ɛ',
821
			'ie?h?': 'i:',
822
			'i': 'ɪ',
823
			'o[oh]': 'o:',
824
			'o': 'ɔ',
825
			'öh': '',
826
			'ö': 'œ',
827
			'uh': 'u:',
828
			'u': 'ʊ',
829
			'üh': 'y:',
830
			'ü': 'ʏ',
831
			'y': 'ʏ',
832
			// 'r': 'r'
833
		}
834
	},
835
	fr: {
836
		// https://en.wikipedia.org/wiki/French_orthography
837
838
		// /** Tautology is useful to not goto next !!! */
839
		trans: {
840
			'x$': '', // to solve potential conflict with the rule "next to a voiceless consonant"
841
			'[bcgpt]s$': '',
842
			'(œu)[df]s$': '$1',
843
			'bb?': 'b',
844
			'ç': 's',
845
			'sc': 'sk',
846
			'xc([eiy])': 'ks',
847
			'xc': 'ksk',
848
			'([ãɛõœ])ct': '', // Nasal vowels ==> ∅
849
			'ct': 'kt',
850
			'ch': 'ʃ',
851
			'cc([eiy])': 'ks$1',
852
			'c([eiy])': 's$1',
853
			'cc?': 'k',
854
			'dd?$': '',
855
			'dd?': 'd',
856
			'ff?': 'f',
857
			'gn': 'ɲ',
858
			'gg([eiy])': 'ɡʒ',
859
			'g$': '',
860
			'g([eiy])': 'ʒ',
861
			'gg?': 'ɡ',
862
			'h': '', // lol
863
			'j': 'ʒ',
864
			'k': 'k',
865
			'll?': 'l',
866
			'mm?': 'm',
867
			'ng': 'ŋ',
868
			'nn?': 'n',
869
			'pt': 'pt',
870
			'ph': 'f',
871
			'pp?$': '',
872
			'pp?': 'p',
873
			'ss': '',
874
			'sc([eiy])': 's$1',
875
			'([^s])s$': '$1',
876
			'^s([^s])': 's$1',
877
			'([^aàâeéêëiîïoôœuûy])s([^aàâeéêëiîïoôœuûy])': '$1s$2',
878
			'([ãɛõœ])s': '$1s',
879
			'th': 't',
880
			'tt?$': '',
881
			'tt?': 't',
882
			'v': 'v',
883
			'w': 'w',
884
			'^x': 'ks',
885
			'([aàâeéêëiîïoôœuûy])x([aàâeéêëiîïoôœuûy])': '$1ɡz$2',
886
			'z$': '',
887
			'z': 'z',
888
			'oue': 'u',
889
			'eau': 'o',
890
			'aie': 'ɛ',
891
			'([cg])ue': '$1œ',
892
			'ue$': 'y',
893
			'ue': 'ɥɛ',
894
			'œu': 'œ',
895
			'oie?': 'wa',
896
			'oe': 'oe',
897
			'ou([aàâeéêëiîïoôœuûy])': 'w$1',
898
			'o[uû]': 'u',
899
			'oï': 'oi',
900
			'oê': 'wa',
901
			'oë': 'ɔɛ',
902
			'oy': 'waj',
903
			'oz': 'oz',
904
			'ao[uû]': 'au',
905
			'aï': 'ai',
906
			'aî': 'ɛ',
907
			'ay$': 'ɛ',
908
			'ay': 'ɛj',
909
			'au': 'o',
910
			'ai': 'e',
911
			'e([^aàâeéêëiîïoôœuûy]+)': 'ɛ$1', // ???
912
			'e[iî]': 'ɛ',
913
			'eû': '',
914
			'eu(z?)$': '$1',
915
			'eu': 'œ',
916
			'i([aàâeéêëiîïoôœuûy])': 'j$1',
917
			'^ï': 'j',
918
			'([aàâeéêëiîïoôœuûy])ï([aàâeéêëiîïoôœuûy])': '$1j$2',
919
			'u([aàâeéêëiîïoôœuûy]+)': 'ɥ',
920
			'^y([aàâeéêëiîïoôœuûy])': 'j$1',
921
			'â': 'ɑ',
922
			'a|à': 'a',
923
			'ie?': 'i',
924
			'e$': '',
925
			'e': 'ə',
926
			'ée?': 'e',
927
			'ê|è': 'ɛ',
928
			'[îï]': 'i',
929
			'o': 'ɔ',
930
			'ô': 'o',
931
			'œ': 'o',
932
			'y': 'i',
933
			'[uû]': 'y',
934
			'rr?': 'ʁ'
935
		}
936
	},
937
	es: {
938
		// https://en.wikipedia.org/wiki/Spanish_orthography
939
		trans: {
940
			'([mn])[bv]': '$1b',
941
			'^[bv]': 'b',
942
			'[bv]': 'β',
943
			'c([ei])': 's$1',
944
			'ch': 'tʃ',
945
			'c': 'k',
946
			'^d': 'd',
947
			'd([ln])': 'd',
948
			'd': 'ð',
949
			// 'f': 'f',
950
			'(^|n)gu([ao])': '$1ɡw$2',
951
			'gu([ao])': 'ɣw$2',
952
			'(^|n)gu([ei])?': '$1ɡ$2',
953
			'gu([ei])': 'ɣ$1',
954
			'(^|n)gü([ei])?': '$1ɡw$2',
955
			'gü([ei])': 'ɣw$1',
956
			'g([ei])': 'x$1',
957
			'(^|n)g([^ei])?': '$1ɡ$2',
958
			'g([^ei])?': 'ɣ$1',
959
			'sh': 'ʃ',
960
			'hu([aeoiuy])': 'w$1',
961
			'hi([aeoiuy])': 'j$1',
962
			'h': '',
963
			'j': 'x',
964
			// 'k': 'k',
965
			'll': 'ʎ',
966
			// 'l': 'l',
967
			'm$': 'n',
968
			// 'm': 'm',
969
			'n([^aeoiuy])': 'ŋ$1',
970
			// 'n': 'n',
971
			'ñ': 'ɲ',
972
			// 'p': 'p',
973
			'qu([ei])': 'k$1',
974
			'([aeoiuy])rr([aeoiuy])': '$1r$2',
975
			'^r': 'r',
976
			'r([lns])': 'r$1',
977
			'rr': 'r',
978
			'r': 'ɾ',
979
			's([^aeoiuy])': 'z',
980
			// 's': 's',
981
			't[xz]': 'tʃ',
982
			// 't': 't',
983
			// 'w': 'w',
984
			'([aeoiuy])x([aeoiuy])': '$1ks$2',
985
			'([^aeoiuy])x([^aeoiuy])': '$1s$2',
986
			'x': 'ks',
987
			'y': 'i',
988
			'z': 's',
989
			// 'a': 'a',
990
			// 'e': 'e',
991
			// 'i': 'i',
992
			// 'o': 'o',
993
			// 'u': 'u'
994
		}
995
	},
996
	el: {
997
		en: {
998
			'αυ': 'av',
999
			'ει': 'i',
1000
			'οι': 'i',
1001
			'ου': 'u',
1002
			'αι': 'e',
1003
			'ντ': 'd',
1004
			'μπ': 'b',
1005
			'γγ': 'g',
1006
			'γκ': 'g',
1007
			'τσ': 'ts',
1008
			'τζ': 'j',
1009
			'αϊ': 'y',
1010
			'ευ': 'ev',
1011
			'α': 'a',
1012
			'β': 'v',
1013
			'γ': 'g',
1014
			'δ': 'd',
1015
			'ε': 'e',
1016
			'ζ': 'z',
1017
			'η': 'i',
1018
			'θ': 'th',
1019
			'ι': 'i',
1020
			'κ': 'k',
1021
			'λ': 'l',
1022
			'μ': 'm',
1023
			'ν': 'n',
1024
			'ξ': 'x',
1025
			'ο': 'o',
1026
			'π': 'p',
1027
			'ρ': 'r',
1028
			'σ': 's',
1029
			'τ': 't',
1030
			'υ': 'i',
1031
			'φ': 'f',
1032
			'χ': 'h',
1033
			'ψ': 'ps',
1034
			'ω': 'o',
1035
			'ς': 's' // only last and lowercase
1036
		},
1037
		ru: {
1038
			'αυ': 'ав',
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
			'ς': 'с' // only last and lowercase
1076
		}
1077
	},
1078
	ua: {
1079
		trans: {
1080
			'а': 'a',
1081
			'б': 'b',
1082
			'в': 'v',
1083
			'г': 'ɦ',
1084
			'ґ': 'ɡ',
1085
			'д': 'd',
1086
			'е': 'ɛ',
1087
			'є': 'jɛ',
1088
			'ж': 'ʐ',
1089
			'з': 'z',
1090
			'и': 'ɪ',
1091
			'і': 'i',
1092
			'ї': 'ji',
1093
			'к': 'k',
1094
			'л': 'l',
1095
			'м': 'm',
1096
			'н': 'n',
1097
			'о': 'ɔ',
1098
			'п': 'p',
1099
			'р': 'r',
1100
			'с': 's',
1101
			'т': 't',
1102
			'у': 'u',
1103
			'ф': 'f',
1104
			'х': 'x',
1105
			'ц': 'ts',
1106
			'ч': 'tʃ',
1107
			'ш': 'ʃ',
1108
			'щ': 'ɕː',
1109
			'ь': 'ˌ',
1110
			'ю': 'ju',
1111
			'я': 'ja'
1112
		},
1113
		ru: {
1114
			'ґ': 'г',
1115
			'є': 'йе',
1116
			'і': 'й',
1117
			'ї': 'йи'
1118
		}
1119
	}
1120
};
1121
1122
1123
module.exports = {
1124
	languages: Object.keys(maps),
1125
	map: maps
1126
}