@@ -10,7 +10,7 @@ namespace PowerAccent.Core
10
10
{
11
11
public enum Language
12
12
{
13
- ALL ,
13
+ SPECIAL ,
14
14
BG ,
15
15
CA ,
16
16
CRH ,
@@ -54,52 +54,63 @@ public enum Language
54
54
55
55
internal sealed class Languages
56
56
{
57
- public static string [ ] GetDefaultLetterKey ( LetterKey letter , Language lang )
58
- {
59
- return lang switch
60
- {
61
- Language . ALL => GetDefaultLetterKeyALL ( letter ) , // All
62
- Language . BG => GetDefaultLetterKeyBG ( letter ) , // Bulgarian
63
- Language . CA => GetDefaultLetterKeyCA ( letter ) , // Catalan
64
- Language . CRH => GetDefaultLetterKeyCRH ( letter ) , // Crimean Tatar
65
- Language . CUR => GetDefaultLetterKeyCUR ( letter ) , // Currency
66
- Language . CY => GetDefaultLetterKeyCY ( letter ) , // Welsh
67
- Language . CZ => GetDefaultLetterKeyCZ ( letter ) , // Czech
68
- Language . DK => GetDefaultLetterKeyDK ( letter ) , // Danish
69
- Language . GA => GetDefaultLetterKeyGA ( letter ) , // Gaeilge (Irish)
70
- Language . GD => GetDefaultLetterKeyGD ( letter ) , // Gàidhlig (Scottish Gaelic)
71
- Language . DE => GetDefaultLetterKeyDE ( letter ) , // German
72
- Language . EL => GetDefaultLetterKeyEL ( letter ) , // Greek
73
- Language . EST => GetDefaultLetterKeyEST ( letter ) , // Estonian
74
- Language . EPO => GetDefaultLetterKeyEPO ( letter ) , // Esperanto
75
- Language . FI => GetDefaultLetterKeyFI ( letter ) , // Finnish
76
- Language . FR => GetDefaultLetterKeyFR ( letter ) , // French
77
- Language . HR => GetDefaultLetterKeyHR ( letter ) , // Croatian
78
- Language . HE => GetDefaultLetterKeyHE ( letter ) , // Hebrew
79
- Language . HU => GetDefaultLetterKeyHU ( letter ) , // Hungarian
80
- Language . IS => GetDefaultLetterKeyIS ( letter ) , // Iceland
81
- Language . IPA => GetDefaultLetterKeyIPA ( letter ) , // IPA (International phonetic alphabet)
82
- Language . IT => GetDefaultLetterKeyIT ( letter ) , // Italian
83
- Language . KU => GetDefaultLetterKeyKU ( letter ) , // Kurdish
84
- Language . LT => GetDefaultLetterKeyLT ( letter ) , // Lithuanian
85
- Language . MK => GetDefaultLetterKeyMK ( letter ) , // Macedonian
86
- Language . MI => GetDefaultLetterKeyMI ( letter ) , // Maori
87
- Language . NL => GetDefaultLetterKeyNL ( letter ) , // Dutch
88
- Language . NO => GetDefaultLetterKeyNO ( letter ) , // Norwegian
89
- Language . PI => GetDefaultLetterKeyPI ( letter ) , // Pinyin
90
- Language . PL => GetDefaultLetterKeyPL ( letter ) , // Polish
91
- Language . PT => GetDefaultLetterKeyPT ( letter ) , // Portuguese
92
- Language . RO => GetDefaultLetterKeyRO ( letter ) , // Romanian
93
- Language . ROM => GetDefaultLetterKeyROM ( letter ) , // Middle Eastern Romanization
94
- Language . SK => GetDefaultLetterKeySK ( letter ) , // Slovak
95
- Language . SL => GetDefaultLetterKeySL ( letter ) , // Slovenian
96
- Language . SP => GetDefaultLetterKeySP ( letter ) , // Spain
97
- Language . SR => GetDefaultLetterKeySR ( letter ) , // Serbian
98
- Language . SR_CYRL => GetDefaultLetterKeySRCyrillic ( letter ) , // Serbian Cyrillic
99
- Language . SV => GetDefaultLetterKeySV ( letter ) , // Swedish
100
- Language . TK => GetDefaultLetterKeyTK ( letter ) , // Turkish
101
- _ => throw new ArgumentException ( "The language {0} is not known in this context" , lang . ToString ( ) ) ,
102
- } ;
57
+ public static string [ ] GetDefaultLetterKey ( LetterKey letter , Language [ ] langs )
58
+ {
59
+ if ( langs . Length == Enum . GetValues ( typeof ( Language ) ) . Length )
60
+ {
61
+ return GetDefaultLetterKeyALL ( letter ) ;
62
+ }
63
+
64
+ var characters = new List < string > ( ) ;
65
+ foreach ( var lang in langs )
66
+ {
67
+ characters . AddRange ( lang switch
68
+ {
69
+ Language . SPECIAL => GetDefaultLetterKeySPECIAL ( letter ) , // Special Characters
70
+ Language . BG => GetDefaultLetterKeyBG ( letter ) , // Bulgarian
71
+ Language . CA => GetDefaultLetterKeyCA ( letter ) , // Catalan
72
+ Language . CRH => GetDefaultLetterKeyCRH ( letter ) , // Crimean Tatar
73
+ Language . CUR => GetDefaultLetterKeyCUR ( letter ) , // Currency
74
+ Language . CY => GetDefaultLetterKeyCY ( letter ) , // Welsh
75
+ Language . CZ => GetDefaultLetterKeyCZ ( letter ) , // Czech
76
+ Language . DK => GetDefaultLetterKeyDK ( letter ) , // Danish
77
+ Language . GA => GetDefaultLetterKeyGA ( letter ) , // Gaeilge (Irish)
78
+ Language . GD => GetDefaultLetterKeyGD ( letter ) , // Gàidhlig (Scottish Gaelic)
79
+ Language . DE => GetDefaultLetterKeyDE ( letter ) , // German
80
+ Language . EL => GetDefaultLetterKeyEL ( letter ) , // Greek
81
+ Language . EST => GetDefaultLetterKeyEST ( letter ) , // Estonian
82
+ Language . EPO => GetDefaultLetterKeyEPO ( letter ) , // Esperanto
83
+ Language . FI => GetDefaultLetterKeyFI ( letter ) , // Finnish
84
+ Language . FR => GetDefaultLetterKeyFR ( letter ) , // French
85
+ Language . HR => GetDefaultLetterKeyHR ( letter ) , // Croatian
86
+ Language . HE => GetDefaultLetterKeyHE ( letter ) , // Hebrew
87
+ Language . HU => GetDefaultLetterKeyHU ( letter ) , // Hungarian
88
+ Language . IS => GetDefaultLetterKeyIS ( letter ) , // Iceland
89
+ Language . IPA => GetDefaultLetterKeyIPA ( letter ) , // IPA (International phonetic alphabet)
90
+ Language . IT => GetDefaultLetterKeyIT ( letter ) , // Italian
91
+ Language . KU => GetDefaultLetterKeyKU ( letter ) , // Kurdish
92
+ Language . LT => GetDefaultLetterKeyLT ( letter ) , // Lithuanian
93
+ Language . MK => GetDefaultLetterKeyMK ( letter ) , // Macedonian
94
+ Language . MI => GetDefaultLetterKeyMI ( letter ) , // Maori
95
+ Language . NL => GetDefaultLetterKeyNL ( letter ) , // Dutch
96
+ Language . NO => GetDefaultLetterKeyNO ( letter ) , // Norwegian
97
+ Language . PI => GetDefaultLetterKeyPI ( letter ) , // Pinyin
98
+ Language . PL => GetDefaultLetterKeyPL ( letter ) , // Polish
99
+ Language . PT => GetDefaultLetterKeyPT ( letter ) , // Portuguese
100
+ Language . RO => GetDefaultLetterKeyRO ( letter ) , // Romanian
101
+ Language . ROM => GetDefaultLetterKeyROM ( letter ) , // Middle Eastern Romanization
102
+ Language . SK => GetDefaultLetterKeySK ( letter ) , // Slovak
103
+ Language . SL => GetDefaultLetterKeySL ( letter ) , // Slovenian
104
+ Language . SP => GetDefaultLetterKeySP ( letter ) , // Spain
105
+ Language . SR => GetDefaultLetterKeySR ( letter ) , // Serbian
106
+ Language . SR_CYRL => GetDefaultLetterKeySRCyrillic ( letter ) , // Serbian Cyrillic
107
+ Language . SV => GetDefaultLetterKeySV ( letter ) , // Swedish
108
+ Language . TK => GetDefaultLetterKeyTK ( letter ) , // Turkish
109
+ _ => throw new ArgumentException ( "The language {0} is not known in this context" , lang . ToString ( ) ) ,
110
+ } ) ;
111
+ }
112
+
113
+ return characters . Distinct ( ) . ToArray ( ) ;
103
114
}
104
115
105
116
// Store the computed letters for each key, so that subsequent calls don't take as long.
@@ -149,7 +160,7 @@ private static string[] GetDefaultLetterKeyALL(LetterKey letter)
149
160
. Union ( GetDefaultLetterKeySRCyrillic ( letter ) )
150
161
. Union ( GetDefaultLetterKeySV ( letter ) )
151
162
. Union ( GetDefaultLetterKeyTK ( letter ) )
152
- . Union ( GetDefaultLetterKeyAllLanguagesOnly ( letter ) )
163
+ . Union ( GetDefaultLetterKeySPECIAL ( letter ) )
153
164
. ToArray ( ) ;
154
165
155
166
_allLanguagesCache [ letter ] = cachedValue ;
@@ -160,7 +171,7 @@ private static string[] GetDefaultLetterKeyALL(LetterKey letter)
160
171
161
172
// Contains all characters that should be shown in all languages but currently don't belong to any of the single languages available for that letter.
162
173
// These characters can be removed from this list after they've been added to one of the other languages for that specific letter.
163
- private static string [ ] GetDefaultLetterKeyAllLanguagesOnly ( LetterKey letter )
174
+ private static string [ ] GetDefaultLetterKeySPECIAL ( LetterKey letter )
164
175
{
165
176
return letter switch
166
177
{
0 commit comments