11using System ;
22using System . Collections . Generic ;
33using System . IO ;
4+ using System . Linq ;
45using System . Windows ;
56using System . Xml ;
67using SPCode . Utils ;
8+ using static SPCode . Utils . DefaultTranslations ;
79
810namespace SPCode . Interop ;
911
@@ -14,8 +16,7 @@ public class TranslationProvider
1416
1517 public bool IsDefault = true ;
1618
17-
18- private readonly Dictionary < string , string > language = new ( StringComparer . OrdinalIgnoreCase ) ;
19+ private readonly Dictionary < string , string > LangDict = new ( StringComparer . OrdinalIgnoreCase ) ;
1920
2021 /// <summary>
2122 /// Gets the translation of the specified phrase.
@@ -24,7 +25,7 @@ public class TranslationProvider
2425 /// <returns></returns>
2526 public string Get ( string phrase )
2627 {
27- return language . ContainsKey ( phrase ) ? language [ phrase ] : string . Empty ;
28+ return LangDict . ContainsKey ( phrase ) ? LangDict [ phrase ] : "<empty>" ;
2829 }
2930
3031 /// <summary>
@@ -34,7 +35,7 @@ public string Get(string phrase)
3435 /// <param name="Initial"></param>
3536 public void LoadLanguage ( string lang , bool Initial = false )
3637 {
37- FillToEnglishDefaults ( ) ;
38+ DefaultLangDict . Keys . ToList ( ) . ForEach ( x => LangDict [ x ] = DefaultLangDict [ x ] ) ;
3839 var languageList = new List < string > ( ) ;
3940 var languageIDList = new List < string > ( ) ;
4041 languageList . Add ( "English" ) ;
@@ -46,7 +47,7 @@ public void LoadLanguage(string lang, bool Initial = false)
4647 try
4748 {
4849 var document = new XmlDocument ( ) ;
49- document . Load ( "lang_0_spcode.xml" ) ;
50+ document . Load ( Constants . LanguagesFile ) ;
5051 if ( document . ChildNodes . Count < 1 )
5152 {
5253 throw new Exception ( "No Root-Node: \" translations\" found" ) ;
@@ -78,7 +79,7 @@ public void LoadLanguage(string lang, bool Initial = false)
7879 }
7980 var nn = node . Name . ToLowerInvariant ( ) ;
8081 var nv = node . InnerText ;
81- language [ nn ] = nv ;
82+ LangDict [ nn ] = nv ;
8283 }
8384 }
8485 }
@@ -92,284 +93,5 @@ public void LoadLanguage(string lang, bool Initial = false)
9293 }
9394 AvailableLanguages = languageList . ToArray ( ) ;
9495 AvailableLanguageIDs = languageIDList . ToArray ( ) ;
95- }
96-
97- /// <summary>
98- /// Fills to default English phrases.
99- /// </summary>
100- private void FillToEnglishDefaults ( )
101- {
102- language . Clear ( ) ;
103- language . Add ( "File" , "File" ) ;
104- language . Add ( "Language" , "English" ) ;
105- language . Add ( "ServerRunning" , "Server running" ) ;
106- language . Add ( "Saving" , "Saving" ) ;
107- language . Add ( "SavingUFiles" , "Save all unsaved files?" ) ;
108- language . Add ( "CompileAll" , "Compile all" ) ;
109- language . Add ( "CompileCurrent" , "Compile current" ) ;
110- language . Add ( "Copy" , "Copy" ) ;
111- language . Add ( "UploadFTP" , "FTP Upload" ) ;
112- language . Add ( "StartServer" , "Start server" ) ;
113- language . Add ( "Replace" , "Replace" ) ;
114- language . Add ( "ReplaceAll" , "Replace all" ) ;
115- language . Add ( "OpenNewFile" , "Open new file" ) ;
116- language . Add ( "NoFileOpened" , "No files opened" ) ;
117- language . Add ( "NoFileOpenedCap" , "None of the selected files could be opened." ) ;
118- language . Add ( "SaveFileAs" , "Save file as" ) ;
119- language . Add ( "SaveFollow" , "Save following files" ) ;
120- language . Add ( "ChDecomp" , "Select plugin to decompile" ) ;
121- language . Add ( "Decompiling" , "Decompiling" ) ;
122- language . Add ( "EditConfig" , "Edit Configurations" ) ;
123- language . Add ( "FoundInOff" , "Found in offset {0} with length {1}" ) ;
124- language . Add ( "FoundNothing" , "Found nothing" ) ;
125- language . Add ( "ReplacedOff" , "Replaced in offset {0}" ) ;
126- language . Add ( "ReplacedOcc" , "Replaced {0} occurrences in {1} documents" ) ;
127- language . Add ( "OccFound" , "occurrences found" ) ;
128- language . Add ( "EmptyPatt" , "Empty search pattern" ) ;
129- language . Add ( "NoValidRegex" , "No valid regex pattern" ) ;
130- language . Add ( "FailedCheck" , "Failed to check" ) ;
131- language . Add ( "ErrorUpdate" , "Error while checking for updates." ) ;
132- language . Add ( "VersUpToDate" , "Version up to date" ) ;
133- language . Add ( "VersionYour" , "Your program version {0} is up to date." ) ;
134- language . Add ( "Details" , "Details" ) ;
135- language . Add ( "Compiling" , "Compiling" ) ;
136- language . Add ( "Error" , "Error" ) ;
137- language . Add ( "SPCompNotStarted" , "The spcomp.exe compiler did not start correctly." ) ;
138- language . Add ( "SPCompNotFound" , "The spcomp.exe compiler could not be found." ) ;
139- language . Add ( "Copied" , "Copied" ) ;
140- language . Add ( "Deleted" , "Deleted" ) ;
141- language . Add ( "FailCopy" , "Failed to copy" ) ;
142- language . Add ( "NoFilesCopy" , "No files copied" ) ;
143- language . Add ( "Uploaded" , "Uploaded" ) ;
144- language . Add ( "ErrorUploadFile" , "Error while uploading file: {0} to {1}" ) ;
145- language . Add ( "ErrorUpload" , "Error while uploading files" ) ;
146- language . Add ( "Done" , "Done" ) ;
147- language . Add ( "FileStr" , "File" ) ;
148- language . Add ( "New" , "New" ) ;
149- language . Add ( "NewTemplate" , "New from Template" ) ;
150- language . Add ( "Open" , "Open" ) ;
151- language . Add ( "Save" , "Save" ) ;
152- language . Add ( "SaveAll" , "Save all" ) ;
153- language . Add ( "SaveAs" , "Save as" ) ;
154- language . Add ( "Close" , "Close" ) ;
155- language . Add ( "CloseAll" , "Close all" ) ;
156- language . Add ( "Build" , "Build" ) ;
157- language . Add ( "CopyPlugins" , "Copy Plugins" ) ;
158- language . Add ( "SendRCON" , "Send RCON Commands" ) ;
159- language . Add ( "Config" , "Configuration" ) ;
160- language . Add ( "Edit" , "Edit" ) ;
161- language . Add ( "Undo" , "Undo" ) ;
162- language . Add ( "Redo" , "Redo" ) ;
163- language . Add ( "Cut" , "Cut" ) ;
164- language . Add ( "Paste" , "Paste" ) ;
165- language . Add ( "Folding" , "Foldings" ) ;
166- language . Add ( "FoldingsExpand" , "Expand all" ) ;
167- language . Add ( "FoldingsCollapse" , "Collapse all" ) ;
168- language . Add ( "CommentLine" , "Comment selection" ) ;
169- language . Add ( "UncommentLine" , "Uncomment selection" ) ;
170- language . Add ( "SelectAll" , "Select all" ) ;
171- language . Add ( "SearchReplace" , "Find & Replace" ) ;
172- language . Add ( "Tools" , "Tools" ) ;
173- language . Add ( "Options" , "Options" ) ;
174- language . Add ( "SearchDefinition" , "Parsed from include directory" ) ;
175- language . Add ( "NewAPIWeb" , "API Reference" ) ;
176- language . Add ( "BetaAPIWeb" , "(BETA) API Reference" ) ;
177- language . Add ( "Reformatter" , "Syntax reformatter" ) ;
178- language . Add ( "ReformatCurrent" , "Reformat current" ) ;
179- language . Add ( "ReformatAll" , "Reformat all" ) ;
180- language . Add ( "Decompile" , "Decompile" ) ;
181- language . Add ( "ReportBugGit" , "Report bug on GitHub" ) ;
182- language . Add ( "CheckUpdates" , "Check for updates" ) ;
183- language . Add ( "About" , "About" ) ;
184- language . Add ( "FileName" , "File Name" ) ;
185- language . Add ( "Line" , "Line" ) ;
186- language . Add ( "TypeStr" , "Type" ) ;
187- language . Add ( "NormalSearch" , "Normal search" ) ;
188- language . Add ( "MatchWholeWords" , "Match whole words" ) ;
189- language . Add ( "AdvancSearch" , "Advanced search" ) ;
190- language . Add ( "RegexSearch" , "Regex search" ) ;
191- language . Add ( "CurrDoc" , "Current document" ) ;
192- language . Add ( "AllDoc" , "All open documents" ) ;
193- language . Add ( "Find" , "Find" ) ;
194- language . Add ( "Count" , "Count" ) ;
195- language . Add ( "CaseSen" , "Case sensitive" ) ;
196- language . Add ( "MultilineRegex" , "Multiline Regex" ) ;
197- language . Add ( "ErrorFileLoadProc" , "Error while loading and processing the file." ) ;
198- language . Add ( "NotDissMethod" , "Could not disassemble method {0}: {1}" ) ;
199- language . Add ( "DFileChanged" , "{0} has changed." ) ;
200- language . Add ( "FileChanged" , "File changed" ) ;
201- language . Add ( "FileTryReload" , "Try reloading file?" ) ;
202- language . Add ( "DSaveError" , "An error occured while saving." ) ;
203- language . Add ( "SaveError" , "Save error" ) ;
204- language . Add ( "SavingFile" , "Saving file" ) ;
205- language . Add ( "PtAbb" , "pt" ) ;
206- language . Add ( "ColAbb" , "Col" ) ;
207- language . Add ( "LnAbb" , "Ln" ) ;
208- language . Add ( "LenAbb" , "Len" ) ;
209- language . Add ( "SPEditCap" , "a lightweight SourcePawn editor" ) ;
210- language . Add ( "WrittenBy" , "written by: {0}" ) ;
211- language . Add ( "License" , "License" ) ;
212- language . Add ( "PeopleInv" , "People involved" ) ;
213- language . Add ( "Preview" , "Preview" ) ;
214- language . Add ( "ConfigWrongPars" , "The config was not able to parse a sourcepawn definition." ) ;
215- language . Add ( "NoName" , "no name" ) ;
216- language . Add ( "PosLen" , "(pos: {0} - len: {1})" ) ;
217- language . Add ( "InheritedFrom" , "inherited from" ) ;
218- language . Add ( "MethodFrom" , "Method from" ) ;
219- language . Add ( "PropertyFrom" , "Property from" ) ;
220- language . Add ( "Search" , "Search" ) ;
221- language . Add ( "Delete" , "Delete" ) ;
222- language . Add ( "Name" , "Name" ) ;
223- language . Add ( "ScriptDir" , "Scripting directories" ) ;
224- language . Add ( "DelimiedWi" , "delimit with" ) ;
225- language . Add ( "CopyDir" , "Copy directory" ) ;
226- language . Add ( "ServerExe" , "Server executable" ) ;
227- language . Add ( "serverStartArgs" , "Server-start arguments" ) ;
228- language . Add ( "PreBuildCom" , "Pre-Build commandline" ) ;
229- language . Add ( "PostBuildCom" , "Post-Build commandline" ) ;
230- language . Add ( "OptimizeLvl" , "Optimization level" ) ;
231- language . Add ( "VerboseLvl" , "Verbose level" ) ;
232- language . Add ( "AutoCopy" , "Auto copy after compile" ) ;
233- language . Add ( "AutoUpload" , "Auto upload .smx after Compile" ) ;
234- language . Add ( "AutoRCON" , "Send RCON Commands after Compile" ) ;
235- language . Add ( "DeleteOldSMX" , "Delete old .smx after copy" ) ;
236- language . Add ( "FTPHost" , "FTP host" ) ;
237- language . Add ( "FTPUser" , "FTP user" ) ;
238- language . Add ( "FTPPw" , "FTP password" ) ;
239- language . Add ( "FTPDir" , "FTP directory" ) ;
240- language . Add ( "ComEditorDir" , "Directory of the SPEdit binary" ) ;
241- language . Add ( "ComScriptDir" , "Directory of the Compiling script" ) ;
242- language . Add ( "ComCopyDir" , "Directory where the smx should be copied" ) ;
243- language . Add ( "ComScriptFile" , "Full Directory and Name of the script" ) ;
244- language . Add ( "ComScriptName" , "File Name of the script" ) ;
245- language . Add ( "ComPluginFile" , "Full Directory and Name of the compiled script" ) ;
246- language . Add ( "ComPluginName" , "File Name of the compiled script" ) ;
247- language . Add ( "RConEngine" , "RCon server engine" ) ;
248- language . Add ( "RConIP" , "RCon server IP" ) ;
249- language . Add ( "RconPort" , "RCon server port" ) ;
250- language . Add ( "RconPw" , "RCon server password" ) ;
251- language . Add ( "RconCom" , "RCon Server commands" ) ;
252- language . Add ( "ComPluginsReload" , "Reloads all compiled plugins" ) ;
253- language . Add ( "ComPluginsLoad" , "Loads all compiled plugins" ) ;
254- language . Add ( "ComPluginsUnload" , "Unloads all compiled plugins" ) ;
255- language . Add ( "NewConfig" , "New config" ) ;
256- language . Add ( "CannotDelConf" , "Cannot delete config" ) ;
257- language . Add ( "YCannotDelConf" , "You cannot delete the default config." ) ;
258- language . Add ( "SelectExe" , "Select executable" ) ;
259- language . Add ( "CMDLineCom" , "Commandline variables" ) ;
260- language . Add ( "RConCMDLineCom" , "Rcon commandline variables" ) ;
261- language . Add ( "ResetOptions" , "Reset options" ) ;
262- language . Add ( "ResetOptQues" , "Are you sure, you want to reset the options?" ) ;
263- language . Add ( "RestartEditor" , "Restart Editor" ) ;
264- language . Add ( "YRestartEditor" , "You have to restart the editor for the changes to have effect." ) ;
265- language . Add ( "RestartEdiFullEff" , "Restart editor to take full effect..." ) ;
266- language . Add ( "RestartEdiEff" , "Restart editor to take effect..." ) ;
267- language . Add ( "Program" , "Program" ) ;
268- language . Add ( "HardwareAcc" , "Use hardware acceleration (if available)" ) ;
269- language . Add ( "UIAnim" , "UI animations" ) ;
270- language . Add ( "OpenInc" , "Auto open includes" ) ;
271- language . Add ( "OpenIncRec" , "Open Includes Recursively" ) ;
272- language . Add ( "AutoUpdate" , "Search automatically for updates" ) ;
273- language . Add ( "ShowToolbar" , "Show toolbar" ) ;
274- language . Add ( "DynamicISAC" , "Dynamic Autocomplete/Intellisense" ) ;
275- language . Add ( "DarkTheme" , "Dark theme" ) ;
276- language . Add ( "ThemeColor" , "Theme Color" ) ;
277- language . Add ( "LanguageStr" , "Language" ) ;
278- language . Add ( "Editor" , "Editor" ) ;
279- language . Add ( "FontSize" , "Font size" ) ;
280- language . Add ( "ScrollSpeed" , "Scroll speed" ) ;
281- language . Add ( "WordWrap" , "Word wrap" ) ;
282- language . Add ( "AggIndentation" , "Aggressive Indentation" ) ;
283- language . Add ( "ReformatAfterSem" , "Reformatting line after semicolon" ) ;
284- language . Add ( "TabsToSpace" , "Replace tabs with spaces" ) ;
285- language . Add ( "AutoCloseBrack" , "Auto close brackets" ) ;
286- language . Add ( "AutoCloseStrChr" , "Auto close Strings, Chars" ) ;
287- language . Add ( "ShowSpaces" , "Show spaces" ) ;
288- language . Add ( "ShowTabs" , "Show tabs" ) ;
289- language . Add ( "IndentationSize" , "Indentation size" ) ;
290- language . Add ( "FontFamily" , "Font" ) ;
291- language . Add ( "SyntaxHigh" , "Syntax Highlighting" ) ;
292- language . Add ( "HighDeprecat" , "Highlight deprecated (<1.7) syntax - NOT SUPPORTED" ) ;
293- language . Add ( "Compile" , "Compile" ) ;
294- language . Add ( "AutoSaveMin" , "Auto save (min)" ) ;
295- language . Add ( "OBTextFile" , "File Directory" ) ;
296- language . Add ( "OBTextConfig" , "Config Directory" ) ;
297- language . Add ( "CopyingFiles" , "Copying files" ) ;
298- language . Add ( "FTPUploading" , "Uploading files" ) ;
299- language . Add ( "RCONCommand" , "Sending RCON Commands" ) ;
300- language . Add ( "JavaInstallCheck" , "Checking for Java installation" ) ;
301- language . Add ( "JavaNotFoundTitle" , "Java was not found" ) ;
302- language . Add ( "JavaNotFoundMessage" ,
303- "SPCode needs Java to decompile plugins, but it couldn't get it to work properly - " +
304- "perhaps due to an absent or incorrect Java installation. " +
305- "Do you wish to download and install it now?" ) ;
306- language . Add ( "JavaOutdatedTitle" , "Java version found is outdated" ) ;
307- language . Add ( "JavaOutdatedMessage" ,
308- "SPCode requires Java 11 SDK or later to decompile plugins. " +
309- "We found an outdated version in your system. " +
310- "Do you wish to download and upgrade it now?" ) ;
311- language . Add ( "FailedToDecompile" , "failed to decompile" ) ;
312- language . Add ( "DownloadingJava" , "Downloading Java" ) ;
313- language . Add ( "FetchingJava" , "Fetching installation file from https://adoptopenjdk.net..." ) ;
314- language . Add ( "AmountCompleted" , "completed" ) ;
315- language . Add ( "AmountDownloaded" , "downloaded" ) ;
316- language . Add ( "JavaOpened" , "Java installation file opened" ) ;
317- language . Add ( "JavaSuggestRestart" , "After installing Java, it is highly recommended to restart SPCode." ) ;
318- language . Add ( "JavaDownErrorTitle" , "Java download error" ) ;
319- language . Add ( "JavaDownErrorMessage" , "SPCode could not download Java by itself. Would you like to download it manually?" ) ;
320- language . Add ( "JavaOpenedBrowser" , "Java download link opened in browser" ) ;
321- language . Add ( "ErrorSavingConfigs" , "Could not save the current configs state" ) ;
322- language . Add ( "DuplicateConfigNames" , "You cannot have 2 configs or more with the same name." ) ;
323- language . Add ( "EmptyConfigNames" , "You cannot have configs with an empty name." ) ;
324- language . Add ( "DefaultValues" , "Default values" ) ;
325- language . Add ( "WantToUpdate" , "Do you want to update?" ) ;
326- language . Add ( "VersionAvailable" , "Version {0} is available for download!" ) ;
327- language . Add ( "Yes" , "Yes" ) ;
328- language . Add ( "No" , "No" ) ;
329- language . Add ( "ViewGithub" , "View on GitHub" ) ;
330- language . Add ( "UpdatingTo" , "Updating to {0}" ) ;
331- language . Add ( "DownloadingUpdater" , "Downloading updater..." ) ;
332- language . Add ( "StartingUpdater" , "Starting updater..." ) ;
333- language . Add ( "Add" , "Add" ) ;
334- language . Add ( "Remove" , "Remove" ) ;
335- language . Add ( "HardwareEncryption" , "Hardware encryption" ) ;
336- language . Add ( "CheckingUpdates" , "Checking for updates" ) ;
337- language . Add ( "GoToLine" , "Go to line" ) ;
338- language . Add ( "GoToOffset" , "Go to offset" ) ;
339- language . Add ( "Go" , "Go" ) ;
340- language . Add ( "Hotkey" , "Hotkey" ) ;
341- language . Add ( "Command" , "Command" ) ;
342- language . Add ( "DeleteLine" , "Delete line" ) ;
343- language . Add ( "MoveLineDown" , "Move line down" ) ;
344- language . Add ( "MoveLineUp" , "Move line up" ) ;
345- language . Add ( "DupeLineDown" , "Duplicate line down" ) ;
346- language . Add ( "DupeLineUp" , "Duplicate line up" ) ;
347- language . Add ( "InUse" , "In use!" ) ;
348- language . Add ( "Reserved" , "Reserved!" ) ;
349- language . Add ( "TransformUppercase" , "Transform to uppercase" ) ;
350- language . Add ( "TransformLowercase" , "Transform to lowercase" ) ;
351- language . Add ( "OpenFileLocation" , "Open file location" ) ;
352- language . Add ( "OpenDirLocation" , "Open directory location" ) ;
353- language . Add ( "Rename" , "Rename" ) ;
354- language . Add ( "Accept" , "Accept" ) ;
355- language . Add ( "Cancel" , "Cancel" ) ;
356- language . Add ( "EmptyName" , "Empty name!" ) ;
357- language . Add ( "NameAlreadyExists" , "File name taken!" ) ;
358- language . Add ( "Empty" , "Empty" ) ;
359- language . Add ( "SearchFiles" , "Search files" ) ;
360- language . Add ( "SearchResults" , "Search results" ) ;
361- language . Add ( "NoResultsThisDir" , "No results on this directory!" ) ;
362- language . Add ( "FileNotSupported" , "File not supported!" ) ;
363- language . Add ( "FileWillBeExcluded" , "The file will be excluded from the file browser once renamed." ) ;
364- language . Add ( "ExpandAllDirs" , "Expand all directories" ) ;
365- language . Add ( "CollapseAllDirs" , "Collapse all directories" ) ;
366- language . Add ( "RefreshOB" , "Reload current directory" ) ;
367- language . Add ( "EnableRPC" , "Enable Discord Rich Presence" ) ;
368- language . Add ( "EnableRPCTime" , "Show elapsed time" ) ;
369- language . Add ( "EnableRPCFile" , "Show current file" ) ;
370- language . Add ( "TemplateExists" , "Template name already exists" ) ;
371- language . Add ( "IllegalCharacters" , "Illegal characters" ) ;
372- language . Add ( "ReopenLastClosedTab" , "Reopen the last closed tab" ) ;
373- language . Add ( "DefaultTaken" , "Default taken!" ) ;
374- }
96+ }
37597}
0 commit comments