🙀
InZOIでローカライズの改造方法
注意ですか、ue4ssのlogicmodsから必ず読み込んでください。
FModelから、
BlueClient/Content/Localization
をjsonでエクスポートします。
BlueClient/Content/Data/String
も同様に、jsonでエクスポートします。
InZOI用に設定したUnrealEngineのプロジェクトを作成してください。
using System;
using System.Text;
using System.Text.Json;
using System.Text.Json.Nodes;
namespace MyApp
{
internal class Program
{
static void Main(string[] args)
{
string csv = "Key,SourceString";
Console.WriteLine("Enter a json(EXAMPLE:D:/InZOI/Output/Exports/BlueClient/Content/Data/String/UI)");
var jsonFolder = Console.ReadLine();
Console.WriteLine("Enter a second json(EXAMPLE:D:/InZOI/Output/Exports/BlueClient/Content/Localization/Blue_UI/ja-JP/Blue_UI.json)");
var jsonFile = Console.ReadLine();
foreach (var file in Directory.GetFiles(jsonFolder))
{
if (Path.GetExtension(file) == ".json")
{
try
{
var json = File.ReadAllText(file, Encoding.UTF8);
var json2 = File.ReadAllText(jsonFile, Encoding.UTF8);
json = json.Remove(0, 1);
json = json.Remove(json.Length - 1, 1);
JsonNode document = JsonNode.Parse(json);
JsonNode document2 = JsonNode.Parse(json2);
foreach (var x in document["StringTable"]["KeysToEntries"].AsObject())
{
csv += "\n" + x.Key + "," + document2[document["Name"].ToString()][x.Key];
}
//Console.WriteLine(Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file) + ".csv"));
File.WriteAllText(Path.Combine(Path.GetDirectoryName(file), Path.GetFileNameWithoutExtension(file) + ".csv"), csv);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
}
}
C#でこのスクリプトを実行します。
今回は、UIの方を変更します。Dataの場合は、UIのパスをDataにしてください。
一回目の入力に、
BlueClient\Content\Data\String\UI
を、
次の入力に基準としたい言語、今回は英語にします。
BlueClient\Content\Localization\Blue_UI\en\Blue_UI.json
を指定します。
そしたらすぐに実行が完了します。
BlueClient\Content\Data\String\UIの中に、csvファイルができたと思うのでunreal engineで読み込みます。
変更したい先のファイルの名前のstringtableを変更したいファイルのパスに作ります。
そしたら、csvをインポートします。
そのまま読み込まれるので、好きなように変更後、保存します。
アセットラベルに先ほど作ったファイルを追加したらパッケージ化して終了です。
Discussion