using System; using System.IO; using System.Resources; namespace i18n_formatter { class ResxHelper { static string rawFilePath = "raw.text"; static string translationFileContains = "translation"; // call this second public static void GenerateResxFileForTranslationsInCurrentDirectory() { WalkDirectory(new DirectoryInfo(Directory.GetCurrentDirectory())); } static void WalkDirectory(DirectoryInfo directory) { // Process files in the current directory foreach (FileInfo file in directory.GetFiles("*.txt")) { if (!file.Name.ToLower().Contains(translationFileContains)) continue; CreateTranslationResx(file.FullName); } } static void CreateTranslationResx(string filePath) { string fileContent = File.ReadAllText(filePath); string rawContent = File.ReadAllText(rawFilePath); string resxFileName = filePath.Replace(".txt", ".resx"); //GenerateStringResxFile(rawContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.None), fileContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.None), resxFileName); GenerateStringResxFile(rawContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.None), rawContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.None), "D:/DevWorkspace/i18n_formatter/bin/Debug/Resources.zh.resx"); } static void GenerateStringResxFile(string[] key, string[] value, string filePath) { int d = key.Length; int z = value.Length; if (d != z) { Console.WriteLine("key length != value length"); return; } using (ResXResourceWriter resxWriter = new ResXResourceWriter(filePath)) { for (int i = 0; i < d; i++) { resxWriter.AddResource(key[i], value[i]); } resxWriter.Generate(); } } } }