diff --git a/.gitignore b/.gitignore index 16f9ad8e3..c287f8f94 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ TestResults Tests/temp +StaticData/Translations/L10N/ + ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. diff --git a/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs b/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs index 4e90539fa..a018d9241 100644 --- a/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs +++ b/ConfigurationPage/ApplicationSettings/ApplicationSettingsView.cs @@ -28,6 +28,7 @@ either expressed or implied, of the FreeBSD Project. */ using MatterHackers.Agg; +using MatterHackers.Agg.PlatformAbstract; using MatterHackers.Agg.UI; using MatterHackers.Localizations; using MatterHackers.MatterControl.CustomWidgets; @@ -36,7 +37,9 @@ using MatterHackers.MatterControl.PrintHistory; using MatterHackers.MatterControl.SlicerConfiguration; using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; +using System.Linq; namespace MatterHackers.MatterControl.ConfigurationPage { @@ -561,6 +564,49 @@ namespace MatterHackers.MatterControl.ConfigurationPage { UserSettings.Instance.set("Language", languageCode); languageRestartButton.Visible = true; + + if(languageCode == "L10N") + { + GenerateLocalizationValidationFile(); + } + } + } + + [Conditional("DEBUG")] + private void GenerateLocalizationValidationFile() + { + char currentChar = 'A'; + + string outputPath = StaticData.Instance.MapPath(Path.Combine("Translations", "L10N", "Translation.txt")); + + // Ensure the output directory exists + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + + using (var outstream = new StreamWriter(outputPath)) + { + foreach (var line in File.ReadAllLines(StaticData.Instance.MapPath(Path.Combine("Translations", "en", "Translation.txt")))) + { + if (line.StartsWith("Translated:")) + { + var pos = line.IndexOf(':'); + var segments = new string[] + { + line.Substring(0, pos), + line.Substring(pos + 1), + }; + + outstream.WriteLine("{0}:{1}", segments[0], new string(segments[1].ToCharArray().Select(c => c == ' ' ? ' ' : currentChar).ToArray())); + + if (currentChar++ == 'Z') + { + currentChar = 'A'; + } + } + else + { + outstream.WriteLine(line); + } + } } } } diff --git a/ConfigurationPage/LanguageSelector.cs b/ConfigurationPage/LanguageSelector.cs index fdfb3b78e..559ecdd39 100644 --- a/ConfigurationPage/LanguageSelector.cs +++ b/ConfigurationPage/LanguageSelector.cs @@ -41,6 +41,9 @@ namespace MatterHackers.MatterControl languageDict["Deutsch"] = "DE"; languageDict["Polski"] = "PL"; languageDict["Türkçe"] = "TR"; +#if DEBUG + languageDict["L10N"] = "L10N"; +#endif } } } \ No newline at end of file