61 lines
2.2 KiB
C#
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();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|