Files
i18n_formatter/ResxHelper.cs
2023-11-02 17:01:09 +08:00

61 lines
2.2 KiB
C#

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();
}
}
}
}