🙀

InZOIでローカライズの改造方法

2025/04/07に公開

注意ですか、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