1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//! Per-language rule aggregators for Slavic languages.
//!
//! Covers: Russian, Polish, Czech, Slovak, Croatian, Serbian (Cyrillic),
//! Serbian (Latin), Bulgarian, Belarusian, Ukrainian.
use crateRewriteRuleChar;
/// Get Standard Russian rule set.
///
/// Returns the complete phonetic normalization rules for Russian:
/// - Cyrillic to Latin transliteration
/// - Complex consonants (ж→zh, ш→sh, щ→shch, ч→ch, ц→ts, х→kh)
/// - Iotated vowels (е→ye, ё→yo, ю→yu, я→ya)
/// - Soft/hard sign removal
/// - Final devoicing
pub
/// Get Polish rule set.
///
/// Returns the complete phonetic normalization rules for Polish:
/// - Special Polish letters (ą, ę, ć, ś, ź, ż, ł, ó, ń)
/// - Nasal vowels (ą→on, ę→en)
/// - Digraphs (sz→sh, cz→ch, rz→zh, dz, dź→dj, dż→dzh, ch→kh)
/// - Ł→w, ó→u equivalence
/// - Polish consonant and vowel mappings
pub
/// Get Czech rule set.
///
/// Returns the complete phonetic normalization rules for Czech (Čeština):
/// - Háčky (caron): č→CH, š→SH, ž→ZH, ř→RZH
/// - Soft consonants: ď→DJ, ť→TJ, ň→NJ
/// - Long vowels (čárka): á, é, í, ó, ú, ý → short equivalents
/// - Kroužek: ů→u
/// - Y/I merger: y→i
pub
/// Get Slovak rule set.
///
/// Returns the complete phonetic normalization rules for Slovak (Slovenčina):
/// - Similar to Czech but NO ř
/// - Soft consonants: ď→DJ, ť→TJ, ň→NJ, ľ→LJ
/// - Diphthong: ô→UO
/// - Digraphs: dž→DZH, dz→DZ
/// - Long vowels (čárka): á, é, í, ó, ú, ý → short equivalents
pub
/// Get Croatian rule set.
///
/// Returns the complete phonetic normalization rules for Croatian (Hrvatski):
/// - Digraphs as letters: lj→LJ, nj→NJ, dž→DZH
/// - Diacritics: č→CH, ć→TJ, š→SH, ž→ZH, đ→DJ
/// - Perfect phonemic spelling
pub
/// Get Serbian Cyrillic rule set.
///
/// Returns the complete phonetic normalization rules for Serbian Cyrillic (Српски језик):
/// - Perfect phonemic orthography: one letter = one sound
/// - Unique letters: Љ(lj), Њ(nj), Џ(dž), Ћ(ć), Ђ(đ)
/// - Standard Cyrillic consonant/vowel mappings
pub
/// Get Serbian Latin rule set.
///
/// Returns the complete phonetic normalization rules for Serbian Latin (Srpski jezik):
/// - Perfect phonemic orthography: one letter = one sound
/// - Digraphs: lj, nj, dž (single phonemes)
/// - Diacritics: č, ć, š, ž, đ
pub
/// Get Bulgarian rule set.
///
/// Returns the complete phonetic normalization rules for Bulgarian (Български език):
/// - Щ = sht (unlike Russian shch!)
/// - Ъ = schwa vowel (very common, NOT a hard sign like Russian)
/// - No Ы, Ё, Э (unlike Russian)
/// - Standard Cyrillic consonant/vowel mappings
pub
/// Get Belarusian rule set.
///
/// Returns the complete phonetic normalization rules for Belarusian (Беларуская мова):
/// - Unique Ў (short u/w) - only Belarusian has this!
/// - Г = h sound (not g like Russian)
/// - І instead of И (like Ukrainian)
/// - No Щ (uses ШЧ instead)
/// - Ё commonly used
pub
/// Get Ukrainian rule set.
///
/// Returns the complete phonetic normalization rules for Ukrainian (Cyrillic):
/// - Unique Ukrainian letters (ї→yi, є→ye, і→i, ґ→g)
/// - Ukrainian г→h (voiced glottal, NOT plosive g)
/// - Ukrainian и→y (sounds like Russian ы)
/// - Complex consonants (щ→shch, ж→zh, ш→sh, х→kh, ц→ts, ч→ch)
/// - Iotated vowels (ю→yu, я→ya)
/// - Soft sign removal
/// - Final devoicing
pub