Fixed Localisation functions

This commit is contained in:
timerix 2023-04-07 21:08:28 +06:00
parent e781df8562
commit e59dfec8b5

View File

@ -2,81 +2,108 @@
static class Localisation static class Localisation
{ {
static ConsoleLogger logger = new($"logs", "autoloc"); static ConsoleLogger logger = new("logs", "autoloc");
static void Log(params string[] msg) => logger.Log(msg); static void Log(params string[] msg) => logger.Log(msg);
public static void GenerateRussian(IOPath engDir, IOPath rusDir) public static void GenerateRussian(IOPath _engDir, IOPath _rusDir)
{ {
int counter = 0; int counter = 0;
foreach (var fileName in Directory.GetAllFiles(engDir)) ProcessDir(_engDir, _rusDir);
{
if (!fileName.EndsWith("l_english.yml"))
continue;
IOPath rusFileName = fileName
.ReplaceBase(engDir, rusDir)
.Replace("l_english", "l_russian");
if (!File.Exists(rusFileName))
{
Log("gray", $"skipped file {rusFileName.RemoveBase(rusDir)}");
continue;
}
string text = File.ReadAllText(fileName)
.Replace("l_english:", "l_russian: ");
byte[] bytes = StringConverter.UTF8BOM.GetBytes(text);
File.WriteAllBytes(rusFileName, bytes);
Log("g", $"file {rusFileName} created");
counter++;
}
Log("g",$"created {counter} localisation files"); Log("g",$"created {counter} localisation files");
void ProcessDir(IOPath engDir, IOPath rusDir)
{
foreach (var fileName in Directory.GetFiles(engDir))
{
if (!fileName.EndsWith("l_english.yml"))
continue;
IOPath rusFileName = fileName
.ReplaceBase(engDir, rusDir)
.Replace("l_english", "l_russian");
if (File.Exists(rusFileName))
{
// Log("w", $"skipped {rusFileName.RemoveBase(rusDir)}");
continue;
}
string text = File.ReadAllText(fileName)
.Replace("l_english:", "l_russian: ");
byte[] bytes = StringConverter.UTF8BOM.GetBytes(text);
File.WriteAllBytes(rusFileName, bytes);
Log("g", $"created {rusFileName}");
counter++;
}
void ProcessSubdir(string subdirEngName, string subdirRusName)
{
var subdirEng = Path.Concat(engDir,subdirEngName);
var subdirRus = Path.Concat(rusDir,subdirRusName);
if (Directory.Exists(subdirEng))
ProcessDir(subdirEng, subdirRus);
}
ProcessSubdir("english", "russian");
ProcessSubdir("replace", "replace");
ProcessSubdir("name_lists", "name_lists");
ProcessSubdir("random_names", "random_names");
}
} }
// deletes all localisations except l_russian and l_english // deletes all localisations except l_russian and l_english
public static void Clean(IOPath _loc_dir) public static void Clean(IOPath _loc_dir)
{ {
Log("g", $"deleted {RemoveUnneededDirs(_loc_dir)} dirs"); int deleted_files_count=0, deleted_dirs_count=0;
Log("g", $"deleted {RemoveUnneededFiles(_loc_dir)} files"); DeleteUnneededDirs(_loc_dir);
DeleteUnneededFiles(_loc_dir);
Log("g", $"deleted {deleted_files_count} files");
Log("g", $"deleted {deleted_dirs_count} dirs");
void DeleteUnneededDirs(IOPath loc_dir)
int RemoveUnneededDirs(IOPath loc_dir)
{ {
int count = 0;
foreach (var subdir in Directory.GetDirectories(loc_dir)) foreach (var subdir in Directory.GetDirectories(loc_dir))
{ {
string dir_basename = subdir.LastName().Str; string dir_basename = subdir.LastName().Str;
if (dir_basename == "russian" || dir_basename == "english") if (dir_basename is "russian" or "english")
continue;
if (dir_basename == "replace")
{ {
RemoveUnneededDirs(subdir); // Log("w",$"skipped {subdir}");
RemoveUnneededFiles(subdir);
continue; continue;
} }
if (dir_basename.Contains("rus")) if (dir_basename is "replace" or "name_lists" or "random_names")
Log("y", $"unexpected dir: {subdir}"); {
Directory.Delete(subdir); DeleteUnneededDirs(subdir);
count++; DeleteUnneededFiles(subdir);
} continue;
}
return count; // incorrect dirs, for example l_russian/
if (dir_basename.ToLower().Contains("russian") || dir_basename.ToLower().Contains("english"))
Log("y", $"unexpected dir: {subdir}");
Directory.Delete(subdir);
Log("m", $"deleted {subdir}");
deleted_dirs_count++;
}
} }
int RemoveUnneededFiles(IOPath loc_dir) void DeleteUnneededFiles(IOPath loc_dir)
{ {
int count = 0;
foreach (var file in Directory.GetFiles(loc_dir)) foreach (var file in Directory.GetFiles(loc_dir))
{ {
if(file.EndsWith("l_russian") || file.EndsWith("l_enghish")) if(file.EndsWith("l_russian.yml") || file.EndsWith("l_enghish.yml"))
{
// Log("w",$"skipped {file}");
continue; continue;
}
if (!file.Contains("_l_") || !file.EndsWith(".yml")) if (!file.Contains("_l_") || !file.EndsWith(".yml"))
Log("y",$"unexpected file: {file}"); Log("y",$"unexpected file: {file}");
File.Delete(file); File.Delete(file);
count++; Log("m",$"deleted {file}");
deleted_files_count++;
} }
return count;
} }
} }
} }