AsciiConverter::convert()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 4
nop 3
dl 0
loc 17
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
namespace BenTools\Violin;
4
5
final class AsciiConverter
6
{
7
    /**
8
     * @param string $string
9
     * @return string
10
     */
11
    public static function convert(string $string, string $locale = null, ?string $replaceUnsupportedBy = ''): string
12
    {
13
        $map = self::DEFAULT_MAP;
14
15
        if (null !== $locale) {
16
            $locale = \strtolower($locale);
17
            $lang = \explode('_', \strtr($locale, ['-' => '_']))[0];
18
            $map = \array_replace($map, (self::SPECIFIC_MAPS[$lang] ?? []));
19
        }
20
21
        $asciized = \strtr($string, $map);
22
23
        if (null !== $replaceUnsupportedBy) {
24
            $asciized = \preg_replace('/[^\x20-\x7E]/u', $replaceUnsupportedBy, $asciized);
25
        }
26
27
        return $asciized;
28
    }
29
30
    const DEFAULT_MAP = [
31
        '°'  => 0,
32
        '₀'  => 0,
33
        '۰'  => 0,
34
        '0'  => 0,
35
        '¹'  => 1,
36
        '₁'  => 1,
37
        '۱'  => 1,
38
        '1'  => 1,
39
        '²'  => 2,
40
        '₂'  => 2,
41
        '۲'  => 2,
42
        '2'  => 2,
43
        '³'  => 3,
44
        '₃'  => 3,
45
        '۳'  => 3,
46
        '3'  => 3,
47
        '⁴'  => 4,
48
        '₄'  => 4,
49
        '۴'  => 4,
50
        '٤'  => 4,
51
        '4'  => 4,
52
        '⁵'  => 5,
53
        '₅'  => 5,
54
        '۵'  => 5,
55
        '٥'  => 5,
56
        '5'  => 5,
57
        '⁶'  => 6,
58
        '₆'  => 6,
59
        '۶'  => 6,
60
        '٦'  => 6,
61
        '6'  => 6,
62
        '⁷'  => 7,
63
        '₇'  => 7,
64
        '۷'  => 7,
65
        '7'  => 7,
66
        '⁸'  => 8,
67
        '₈'  => 8,
68
        '۸'  => 8,
69
        '8'  => 8,
70
        '⁹'  => 9,
71
        '₉'  => 9,
72
        '۹'  => 9,
73
        '9'  => 9,
74
        'à'  => 'a',
75
        'á'  => 'a',
76
        'ả'  => 'a',
77
        'ã'  => 'a',
78
        'ạ'  => 'a',
79
        'ă'  => 'a',
80
        'ắ'  => 'a',
81
        'ằ'  => 'a',
82
        'ẳ'  => 'a',
83
        'ẵ'  => 'a',
84
        'ặ'  => 'a',
85
        'â'  => 'a',
86
        'ấ'  => 'a',
87
        'ầ'  => 'a',
88
        'ẩ'  => 'a',
89
        'ẫ'  => 'a',
90
        'ậ'  => 'a',
91
        'ā'  => 'a',
92
        'ą'  => 'a',
93
        'å'  => 'a',
94
        'α'  => 'a',
95
        'ά'  => 'a',
96
        'ἀ'  => 'a',
97
        'ἁ'  => 'a',
98
        'ἂ'  => 'a',
99
        'ἃ'  => 'a',
100
        'ἄ'  => 'a',
101
        'ἅ'  => 'a',
102
        'ἆ'  => 'a',
103
        'ἇ'  => 'a',
104
        'ᾀ'  => 'a',
105
        'ᾁ'  => 'a',
106
        'ᾂ'  => 'a',
107
        'ᾃ'  => 'a',
108
        'ᾄ'  => 'a',
109
        'ᾅ'  => 'a',
110
        'ᾆ'  => 'a',
111
        'ᾇ'  => 'a',
112
        'ὰ'  => 'a',
113
        'ᾰ'  => 'a',
114
        'ᾱ'  => 'a',
115
        'ᾲ'  => 'a',
116
        'ᾳ'  => 'a',
117
        'ᾴ'  => 'a',
118
        'ᾶ'  => 'a',
119
        'ᾷ'  => 'a',
120
        'а'  => 'a',
121
        'أ'  => 'a',
122
        'အ'  => 'a',
123
        'ာ'  => 'a',
124
        'ါ'  => 'a',
125
        'ǻ'  => 'a',
126
        'ǎ'  => 'a',
127
        'ª'  => 'a',
128
        'ა'  => 'a',
129
        'अ'  => 'a',
130
        'ا'  => 'a',
131
        'a'  => 'a',
132
        'ä'  => 'a',
133
        'б'  => 'b',
134
        'β'  => 'b',
135
        'ب'  => 'b',
136
        'ဗ'  => 'b',
137
        'ბ'  => 'b',
138
        'b'  => 'b',
139
        'ç'  => 'c',
140
        'ć'  => 'c',
141
        'č'  => 'c',
142
        'ĉ'  => 'c',
143
        'ċ'  => 'c',
144
        'c'  => 'c',
145
        'ď'  => 'd',
146
        'ð'  => 'd',
147
        'đ'  => 'dj',
148
        'ƌ'  => 'd',
149
        'ȡ'  => 'd',
150
        'ɖ'  => 'd',
151
        'ɗ'  => 'd',
152
        'ᵭ'  => 'd',
153
        'ᶁ'  => 'd',
154
        'ᶑ'  => 'd',
155
        'д'  => 'd',
156
        'δ'  => 'd',
157
        'د'  => 'd',
158
        'ض'  => 'd',
159
        'ဍ'  => 'd',
160
        'ဒ'  => 'd',
161
        'დ'  => 'd',
162
        'd'  => 'd',
163
        'é'  => 'e',
164
        'è'  => 'e',
165
        'ẻ'  => 'e',
166
        'ẽ'  => 'e',
167
        'ẹ'  => 'e',
168
        'ê'  => 'e',
169
        'ế'  => 'e',
170
        'ề'  => 'e',
171
        'ể'  => 'e',
172
        'ễ'  => 'e',
173
        'ệ'  => 'e',
174
        'ë'  => 'e',
175
        'ē'  => 'e',
176
        'ę'  => 'e',
177
        'ě'  => 'e',
178
        'ĕ'  => 'e',
179
        'ė'  => 'e',
180
        'ε'  => 'e',
181
        'έ'  => 'e',
182
        'ἐ'  => 'e',
183
        'ἑ'  => 'e',
184
        'ἒ'  => 'e',
185
        'ἓ'  => 'e',
186
        'ἔ'  => 'e',
187
        'ἕ'  => 'e',
188
        'ὲ'  => 'e',
189
        'е'  => 'e',
190
        'ё'  => 'e',
191
        'э'  => 'e',
192
        'є'  => 'e',
193
        'ə'  => 'e',
194
        'ဧ'  => 'e',
195
        'ေ'  => 'e',
196
        'ဲ'  => 'e',
197
        'ე'  => 'e',
198
        'ए'  => 'e',
199
        'إ'  => 'e',
200
        'ئ'  => 'e',
201
        'e'  => 'e',
202
        'ф'  => 'f',
203
        'φ'  => 'f',
204
        'ف'  => 'f',
205
        'ƒ'  => 'f',
206
        'ფ'  => 'f',
207
        'f'  => 'f',
208
        'ĝ'  => 'g',
209
        'ğ'  => 'g',
210
        'ġ'  => 'g',
211
        'ģ'  => 'g',
212
        'г'  => 'g',
213
        'ґ'  => 'g',
214
        'γ'  => 'g',
215
        'ဂ'  => 'g',
216
        'გ'  => 'g',
217
        'گ'  => 'g',
218
        'g'  => 'g',
219
        'ĥ'  => 'h',
220
        'ħ'  => 'h',
221
        'η'  => 'h',
222
        'ή'  => 'h',
223
        'ح'  => 'h',
224
        'ه'  => 'h',
225
        'ဟ'  => 'h',
226
        'ှ'  => 'h',
227
        'ჰ'  => 'h',
228
        'h'  => 'h',
229
        'í'  => 'i',
230
        'ì'  => 'i',
231
        'ỉ'  => 'i',
232
        'ĩ'  => 'i',
233
        'ị'  => 'i',
234
        'î'  => 'i',
235
        'ï'  => 'i',
236
        'ī'  => 'i',
237
        'ĭ'  => 'i',
238
        'į'  => 'i',
239
        'ı'  => 'i',
240
        'ι'  => 'i',
241
        'ί'  => 'i',
242
        'ϊ'  => 'i',
243
        'ΐ'  => 'i',
244
        'ἰ'  => 'i',
245
        'ἱ'  => 'i',
246
        'ἲ'  => 'i',
247
        'ἳ'  => 'i',
248
        'ἴ'  => 'i',
249
        'ἵ'  => 'i',
250
        'ἶ'  => 'i',
251
        'ἷ'  => 'i',
252
        'ὶ'  => 'i',
253
        'ῐ'  => 'i',
254
        'ῑ'  => 'i',
255
        'ῒ'  => 'i',
256
        'ῖ'  => 'i',
257
        'ῗ'  => 'i',
258
        'і'  => 'i',
259
        'ї'  => 'i',
260
        'и'  => 'i',
261
        'ဣ'  => 'i',
262
        'ိ'  => 'i',
263
        'ီ'  => 'i',
264
        'ည်' => 'i',
265
        'ǐ'  => 'i',
266
        'ი'  => 'i',
267
        'इ'  => 'i',
268
        'ی'  => 'i',
269
        'i'  => 'i',
270
        'ĵ'  => 'j',
271
        'ј'  => 'j',
272
        'Ј'  => 'j',
273
        'ჯ'  => 'j',
274
        'ج'  => 'j',
275
        'j'  => 'j',
276
        'ķ'  => 'k',
277
        'ĸ'  => 'k',
278
        'к'  => 'k',
279
        'κ'  => 'k',
280
        'Ķ'  => 'k',
281
        'ق'  => 'k',
282
        'ك'  => 'k',
283
        'က'  => 'k',
284
        'კ'  => 'k',
285
        'ქ'  => 'k',
286
        'ک'  => 'k',
287
        'k'  => 'k',
288
        'ł'  => 'l',
289
        'ľ'  => 'l',
290
        'ĺ'  => 'l',
291
        'ļ'  => 'l',
292
        'ŀ'  => 'l',
293
        'л'  => 'l',
294
        'λ'  => 'l',
295
        'ل'  => 'l',
296
        'လ'  => 'l',
297
        'ლ'  => 'l',
298
        'l'  => 'l',
299
        'м'  => 'm',
300
        'μ'  => 'm',
301
        'م'  => 'm',
302
        'မ'  => 'm',
303
        'მ'  => 'm',
304
        'm'  => 'm',
305
        'ñ'  => 'n',
306
        'ń'  => 'n',
307
        'ň'  => 'n',
308
        'ņ'  => 'n',
309
        'ʼn'  => 'n',
310
        'ŋ'  => 'n',
311
        'ν'  => 'n',
312
        'н'  => 'n',
313
        'ن'  => 'n',
314
        'န'  => 'n',
315
        'ნ'  => 'n',
316
        'n'  => 'n',
317
        'ó'  => 'o',
318
        'ò'  => 'o',
319
        'ỏ'  => 'o',
320
        'õ'  => 'o',
321
        'ọ'  => 'o',
322
        'ô'  => 'o',
323
        'ố'  => 'o',
324
        'ồ'  => 'o',
325
        'ổ'  => 'o',
326
        'ỗ'  => 'o',
327
        'ộ'  => 'o',
328
        'ơ'  => 'o',
329
        'ớ'  => 'o',
330
        'ờ'  => 'o',
331
        'ở'  => 'o',
332
        'ỡ'  => 'o',
333
        'ợ'  => 'o',
334
        'ø'  => 'o',
335
        'ō'  => 'o',
336
        'ő'  => 'o',
337
        'ŏ'  => 'o',
338
        'ο'  => 'o',
339
        'ὀ'  => 'o',
340
        'ὁ'  => 'o',
341
        'ὂ'  => 'o',
342
        'ὃ'  => 'o',
343
        'ὄ'  => 'o',
344
        'ὅ'  => 'o',
345
        'ὸ'  => 'o',
346
        'ό'  => 'o',
347
        'о'  => 'o',
348
        'و'  => 'o',
349
        'θ'  => 'o',
350
        'ို' => 'o',
351
        'ǒ'  => 'o',
352
        'ǿ'  => 'o',
353
        'º'  => 'o',
354
        'ო'  => 'o',
355
        'ओ'  => 'o',
356
        'o'  => 'o',
357
        'ö'  => 'o',
358
        'п'  => 'p',
359
        'π'  => 'p',
360
        'ပ'  => 'p',
361
        'პ'  => 'p',
362
        'پ'  => 'p',
363
        'p'  => 'p',
364
        'ყ'  => 'q',
365
        'q'  => 'q',
366
        'ŕ'  => 'r',
367
        'ř'  => 'r',
368
        'ŗ'  => 'r',
369
        'р'  => 'r',
370
        'ρ'  => 'r',
371
        'ر'  => 'r',
372
        'რ'  => 'r',
373
        'r'  => 'r',
374
        'ś'  => 's',
375
        'š'  => 's',
376
        'ş'  => 's',
377
        'с'  => 's',
378
        'σ'  => 's',
379
        'ș'  => 's',
380
        'ς'  => 's',
381
        'س'  => 's',
382
        'ص'  => 's',
383
        'စ'  => 's',
384
        'ſ'  => 's',
385
        'ს'  => 's',
386
        's'  => 's',
387
        'ť'  => 't',
388
        'ţ'  => 't',
389
        'т'  => 't',
390
        'τ'  => 't',
391
        'ț'  => 't',
392
        'ت'  => 't',
393
        'ط'  => 't',
394
        'ဋ'  => 't',
395
        'တ'  => 't',
396
        'ŧ'  => 't',
397
        'თ'  => 't',
398
        'ტ'  => 't',
399
        't'  => 't',
400
        'ú'  => 'u',
401
        'ù'  => 'u',
402
        'ủ'  => 'u',
403
        'ũ'  => 'u',
404
        'ụ'  => 'u',
405
        'ư'  => 'u',
406
        'ứ'  => 'u',
407
        'ừ'  => 'u',
408
        'ử'  => 'u',
409
        'ữ'  => 'u',
410
        'ự'  => 'u',
411
        'û'  => 'u',
412
        'ū'  => 'u',
413
        'ů'  => 'u',
414
        'ű'  => 'u',
415
        'ŭ'  => 'u',
416
        'ų'  => 'u',
417
        'µ'  => 'u',
418
        'у'  => 'u',
419
        'ဉ'  => 'u',
420
        'ု'  => 'u',
421
        'ူ'  => 'u',
422
        'ǔ'  => 'u',
423
        'ǖ'  => 'u',
424
        'ǘ'  => 'u',
425
        'ǚ'  => 'u',
426
        'ǜ'  => 'u',
427
        'უ'  => 'u',
428
        'उ'  => 'u',
429
        'u'  => 'u',
430
        'ў'  => 'u',
431
        'ü'  => 'u',
432
        'в'  => 'v',
433
        'ვ'  => 'v',
434
        'ϐ'  => 'v',
435
        'v'  => 'v',
436
        'ŵ'  => 'w',
437
        'ω'  => 'w',
438
        'ώ'  => 'w',
439
        'ဝ'  => 'w',
440
        'ွ'  => 'w',
441
        'w'  => 'w',
442
        'χ'  => 'x',
443
        'ξ'  => 'x',
444
        'x'  => 'x',
445
        'ý'  => 'y',
446
        'ỳ'  => 'y',
447
        'ỷ'  => 'y',
448
        'ỹ'  => 'y',
449
        'ỵ'  => 'y',
450
        'ÿ'  => 'y',
451
        'ŷ'  => 'y',
452
        'й'  => 'y',
453
        'ы'  => 'y',
454
        'υ'  => 'y',
455
        'ϋ'  => 'y',
456
        'ύ'  => 'y',
457
        'ΰ'  => 'y',
458
        'ي'  => 'y',
459
        'ယ'  => 'y',
460
        'y'  => 'y',
461
        'ź'  => 'z',
462
        'ž'  => 'z',
463
        'ż'  => 'z',
464
        'з'  => 'z',
465
        'ζ'  => 'z',
466
        'ز'  => 'z',
467
        'ဇ'  => 'z',
468
        'ზ'  => 'z',
469
        'z'  => 'z',
470
        'ع'  => 'aa',
471
        'आ'  => 'aa',
472
        'آ'  => 'aa',
473
        'æ'  => 'ae',
474
        'ǽ'  => 'ae',
475
        'ऐ'  => 'ai',
476
        'ч'  => 'ch',
477
        'ჩ'  => 'ch',
478
        'ჭ'  => 'ch',
479
        'چ'  => 'ch',
480
        'ђ'  => 'dj',
481
        'џ'  => 'dz',
482
        'ძ'  => 'dz',
483
        'ऍ'  => 'ei',
484
        'غ'  => 'gh',
485
        'ღ'  => 'gh',
486
        'ई'  => 'ii',
487
        'ij'  => 'ij',
488
        'х'  => 'kh',
489
        'خ'  => 'kh',
490
        'ხ'  => 'kh',
491
        'љ'  => 'lj',
492
        'њ'  => 'nj',
493
        'œ'  => 'oe',
494
        'ؤ'  => 'oe',
495
        'ऑ'  => 'oi',
496
        'ऒ'  => 'oii',
497
        'ψ'  => 'ps',
498
        'ш'  => 'sh',
499
        'შ'  => 'sh',
500
        'ش'  => 'sh',
501
        'щ'  => 'shch',
502
        'ß'  => 'ss',
503
        'ŝ'  => 'sx',
504
        'þ'  => 'th',
505
        'ϑ'  => 'th',
506
        'ث'  => 'th',
507
        'ذ'  => 'th',
508
        'ظ'  => 'th',
509
        'ц'  => 'ts',
510
        'ც'  => 'ts',
511
        'წ'  => 'ts',
512
        'ऊ'  => 'uu',
513
        'я'  => 'ya',
514
        'ю'  => 'yu',
515
        'ж'  => 'zh',
516
        'ჟ'  => 'zh',
517
        'ژ'  => 'zh',
518
        '©'  => '(c)',
519
        'Á'  => 'A',
520
        'À'  => 'A',
521
        'Ả'  => 'A',
522
        'Ã'  => 'A',
523
        'Ạ'  => 'A',
524
        'Ă'  => 'A',
525
        'Ắ'  => 'A',
526
        'Ằ'  => 'A',
527
        'Ẳ'  => 'A',
528
        'Ẵ'  => 'A',
529
        'Ặ'  => 'A',
530
        'Â'  => 'A',
531
        'Ấ'  => 'A',
532
        'Ầ'  => 'A',
533
        'Ẩ'  => 'A',
534
        'Ẫ'  => 'A',
535
        'Ậ'  => 'A',
536
        'Å'  => 'A',
537
        'Ā'  => 'A',
538
        'Ą'  => 'A',
539
        'Α'  => 'A',
540
        'Ά'  => 'A',
541
        'Ἀ'  => 'A',
542
        'Ἁ'  => 'A',
543
        'Ἂ'  => 'A',
544
        'Ἃ'  => 'A',
545
        'Ἄ'  => 'A',
546
        'Ἅ'  => 'A',
547
        'Ἆ'  => 'A',
548
        'Ἇ'  => 'A',
549
        'ᾈ'  => 'A',
550
        'ᾉ'  => 'A',
551
        'ᾊ'  => 'A',
552
        'ᾋ'  => 'A',
553
        'ᾌ'  => 'A',
554
        'ᾍ'  => 'A',
555
        'ᾎ'  => 'A',
556
        'ᾏ'  => 'A',
557
        'Ᾰ'  => 'A',
558
        'Ᾱ'  => 'A',
559
        'Ὰ'  => 'A',
560
        'ᾼ'  => 'A',
561
        'А'  => 'A',
562
        'Ǻ'  => 'A',
563
        'Ǎ'  => 'A',
564
        'A'  => 'A',
565
        'Ä'  => 'A',
566
        'Б'  => 'B',
567
        'Β'  => 'B',
568
        'ब'  => 'B',
569
        'B'  => 'B',
570
        'Ç'  => 'C',
571
        'Ć'  => 'C',
572
        'Č'  => 'C',
573
        'Ĉ'  => 'C',
574
        'Ċ'  => 'C',
575
        'C'  => 'C',
576
        'Ď'  => 'D',
577
        'Ð'  => 'D',
578
        'Đ'  => 'D',
579
        'Ɖ'  => 'D',
580
        'Ɗ'  => 'D',
581
        'Ƌ'  => 'D',
582
        'ᴅ'  => 'D',
583
        'ᴆ'  => 'D',
584
        'Д'  => 'D',
585
        'Δ'  => 'D',
586
        'D'  => 'D',
587
        'É'  => 'E',
588
        'È'  => 'E',
589
        'Ẻ'  => 'E',
590
        'Ẽ'  => 'E',
591
        'Ẹ'  => 'E',
592
        'Ê'  => 'E',
593
        'Ế'  => 'E',
594
        'Ề'  => 'E',
595
        'Ể'  => 'E',
596
        'Ễ'  => 'E',
597
        'Ệ'  => 'E',
598
        'Ë'  => 'E',
599
        'Ē'  => 'E',
600
        'Ę'  => 'E',
601
        'Ě'  => 'E',
602
        'Ĕ'  => 'E',
603
        'Ė'  => 'E',
604
        'Ε'  => 'E',
605
        'Έ'  => 'E',
606
        'Ἐ'  => 'E',
607
        'Ἑ'  => 'E',
608
        'Ἒ'  => 'E',
609
        'Ἓ'  => 'E',
610
        'Ἔ'  => 'E',
611
        'Ἕ'  => 'E',
612
        'Ὲ'  => 'E',
613
        'Е'  => 'E',
614
        'Ё'  => 'E',
615
        'Э'  => 'E',
616
        'Є'  => 'E',
617
        'Ə'  => 'E',
618
        'E'  => 'E',
619
        'Ф'  => 'F',
620
        'Φ'  => 'F',
621
        'F'  => 'F',
622
        'Ğ'  => 'G',
623
        'Ġ'  => 'G',
624
        'Ģ'  => 'G',
625
        'Г'  => 'G',
626
        'Ґ'  => 'G',
627
        'Γ'  => 'G',
628
        'G'  => 'G',
629
        'Η'  => 'H',
630
        'Ή'  => 'H',
631
        'Ħ'  => 'H',
632
        'H'  => 'H',
633
        'Í'  => 'I',
634
        'Ì'  => 'I',
635
        'Ỉ'  => 'I',
636
        'Ĩ'  => 'I',
637
        'Ị'  => 'I',
638
        'Î'  => 'I',
639
        'Ï'  => 'I',
640
        'Ī'  => 'I',
641
        'Ĭ'  => 'I',
642
        'Į'  => 'I',
643
        'İ'  => 'I',
644
        'Ι'  => 'I',
645
        'Ί'  => 'I',
646
        'Ϊ'  => 'I',
647
        'Ἰ'  => 'I',
648
        'Ἱ'  => 'I',
649
        'Ἳ'  => 'I',
650
        'Ἴ'  => 'I',
651
        'Ἵ'  => 'I',
652
        'Ἶ'  => 'I',
653
        'Ἷ'  => 'I',
654
        'Ῐ'  => 'I',
655
        'Ῑ'  => 'I',
656
        'Ὶ'  => 'I',
657
        'И'  => 'I',
658
        'І'  => 'I',
659
        'Ї'  => 'I',
660
        'Ǐ'  => 'I',
661
        'ϒ'  => 'I',
662
        'I'  => 'I',
663
        'J'  => 'J',
664
        'К'  => 'K',
665
        'Κ'  => 'K',
666
        'K'  => 'K',
667
        'Ĺ'  => 'L',
668
        'Ł'  => 'L',
669
        'Л'  => 'L',
670
        'Λ'  => 'L',
671
        'Ļ'  => 'L',
672
        'Ľ'  => 'L',
673
        'Ŀ'  => 'L',
674
        'ल'  => 'L',
675
        'L'  => 'L',
676
        'М'  => 'M',
677
        'Μ'  => 'M',
678
        'M'  => 'M',
679
        'Ń'  => 'N',
680
        'Ñ'  => 'N',
681
        'Ň'  => 'N',
682
        'Ņ'  => 'N',
683
        'Ŋ'  => 'N',
684
        'Н'  => 'N',
685
        'Ν'  => 'N',
686
        'N'  => 'N',
687
        'Ó'  => 'O',
688
        'Ò'  => 'O',
689
        'Ỏ'  => 'O',
690
        'Õ'  => 'O',
691
        'Ọ'  => 'O',
692
        'Ô'  => 'O',
693
        'Ố'  => 'O',
694
        'Ồ'  => 'O',
695
        'Ổ'  => 'O',
696
        'Ỗ'  => 'O',
697
        'Ộ'  => 'O',
698
        'Ơ'  => 'O',
699
        'Ớ'  => 'O',
700
        'Ờ'  => 'O',
701
        'Ở'  => 'O',
702
        'Ỡ'  => 'O',
703
        'Ợ'  => 'O',
704
        'Ø'  => 'O',
705
        'Ō'  => 'O',
706
        'Ő'  => 'O',
707
        'Ŏ'  => 'O',
708
        'Ο'  => 'O',
709
        'Ό'  => 'O',
710
        'Ὀ'  => 'O',
711
        'Ὁ'  => 'O',
712
        'Ὂ'  => 'O',
713
        'Ὃ'  => 'O',
714
        'Ὄ'  => 'O',
715
        'Ὅ'  => 'O',
716
        'Ὸ'  => 'O',
717
        'О'  => 'O',
718
        'Θ'  => 'O',
719
        'Ө'  => 'O',
720
        'Ǒ'  => 'O',
721
        'Ǿ'  => 'O',
722
        'O'  => 'O',
723
        'Ö'  => 'O',
724
        'П'  => 'P',
725
        'Π'  => 'P',
726
        'P'  => 'P',
727
        'Q'  => 'Q',
728
        'Ř'  => 'R',
729
        'Ŕ'  => 'R',
730
        'Р'  => 'R',
731
        'Ρ'  => 'R',
732
        'Ŗ'  => 'R',
733
        'R'  => 'R',
734
        'Ş'  => 'S',
735
        'Ŝ'  => 'S',
736
        'Ș'  => 'S',
737
        'Š'  => 'S',
738
        'Ś'  => 'S',
739
        'С'  => 'S',
740
        'Σ'  => 'S',
741
        'S'  => 'S',
742
        'Ť'  => 'T',
743
        'Ţ'  => 'T',
744
        'Ŧ'  => 'T',
745
        'Ț'  => 'T',
746
        'Т'  => 'T',
747
        'Τ'  => 'T',
748
        'T'  => 'T',
749
        'Ú'  => 'U',
750
        'Ù'  => 'U',
751
        'Ủ'  => 'U',
752
        'Ũ'  => 'U',
753
        'Ụ'  => 'U',
754
        'Ư'  => 'U',
755
        'Ứ'  => 'U',
756
        'Ừ'  => 'U',
757
        'Ử'  => 'U',
758
        'Ữ'  => 'U',
759
        'Ự'  => 'U',
760
        'Û'  => 'U',
761
        'Ū'  => 'U',
762
        'Ů'  => 'U',
763
        'Ű'  => 'U',
764
        'Ŭ'  => 'U',
765
        'Ų'  => 'U',
766
        'У'  => 'U',
767
        'Ǔ'  => 'U',
768
        'Ǖ'  => 'U',
769
        'Ǘ'  => 'U',
770
        'Ǚ'  => 'U',
771
        'Ǜ'  => 'U',
772
        'U'  => 'U',
773
        'Ў'  => 'U',
774
        'Ü'  => 'U',
775
        'В'  => 'V',
776
        'V'  => 'V',
777
        'Ω'  => 'W',
778
        'Ώ'  => 'W',
779
        'Ŵ'  => 'W',
780
        'W'  => 'W',
781
        'Χ'  => 'X',
782
        'Ξ'  => 'X',
783
        'X'  => 'X',
784
        'Ý'  => 'Y',
785
        'Ỳ'  => 'Y',
786
        'Ỷ'  => 'Y',
787
        'Ỹ'  => 'Y',
788
        'Ỵ'  => 'Y',
789
        'Ÿ'  => 'Y',
790
        'Ῠ'  => 'Y',
791
        'Ῡ'  => 'Y',
792
        'Ὺ'  => 'Y',
793
        'Ύ'  => 'Y',
794
        'Ы'  => 'Y',
795
        'Й'  => 'Y',
796
        'Υ'  => 'Y',
797
        'Ϋ'  => 'Y',
798
        'Ŷ'  => 'Y',
799
        'Y'  => 'Y',
800
        'Ź'  => 'Z',
801
        'Ž'  => 'Z',
802
        'Ż'  => 'Z',
803
        'З'  => 'Z',
804
        'Ζ'  => 'Z',
805
        'Z'  => 'Z',
806
        'Æ'  => 'AE',
807
        'Ǽ'  => 'AE',
808
        'Ч'  => 'Ch',
809
        'Ђ'  => 'Dj',
810
        'Џ'  => 'Dz',
811
        'Ĝ'  => 'Gx',
812
        'Ĥ'  => 'Hx',
813
        'IJ'  => 'Ij',
814
        'Ĵ'  => 'Jx',
815
        'Х'  => 'Kh',
816
        'Љ'  => 'Lj',
817
        'Њ'  => 'Nj',
818
        'Œ'  => 'Oe',
819
        'Ψ'  => 'Ps',
820
        'Ш'  => 'Sh',
821
        'Щ'  => 'Shch',
822
        'ẞ'  => 'Ss',
823
        'Þ'  => 'Th',
824
        'Ц'  => 'Ts',
825
        'Я'  => 'Ya',
826
        'Ю'  => 'Yu',
827
        'Ж'  => 'Zh',
828
        "\xC2\xA0" => ' ',
829
        "\xE2\x80\x80" => ' ',
830
        "\xE2\x80\x81" => ' ',
831
        "\xE2\x80\x82" => ' ',
832
        "\xE2\x80\x83" => ' ',
833
        "\xE2\x80\x84" => ' ',
834
        "\xE2\x80\x85" => ' ',
835
        "\xE2\x80\x86" => ' ',
836
        "\xE2\x80\x87" => ' ',
837
        "\xE2\x80\x88" => ' ',
838
        "\xE2\x80\x89" => ' ',
839
        "\xE2\x80\x8A" => ' ',
840
        "\xE2\x80\xAF" => ' ',
841
        "\xE2\x81\x9F" => ' ',
842
        "\xE3\x80\x80" => ' ',
843
        "\xEF\xBE\xA0" => ' ',
844
    ];
845
    const SPECIFIC_MAPS = [
846
        'de' => [
847
            'ä' => 'ae',
848
            'ö' => 'oe',
849
            'ü' => 'ue',
850
            'Ä' => 'AE',
851
            'Ö' => 'OE',
852
            'Ü' => 'UE',
853
        ],
854
        'bg' => [
855
            'х' => 'h',
856
            'Х' => 'H',
857
            'щ' => 'sht',
858
            'Щ' => 'SHT',
859
            'ъ' => 'a',
860
            'Ъ' => 'А',
861
            'ь' => 'y',
862
            'Ь' => 'Y',
863
        ],
864
    ];
865
}
866