写BepInEx模组时添加本地化教程-C#语言论坛-编程语言区-资源工坊-游戏模组资源分享

写BepInEx模组时添加本地化教程

在项目中创建translations.json本地化文件

格式如下:

{
  "ValheimLegends_activatedisplay_shaman": "本地化字符串内容",
  "ValheimLegends_activatedisplay_ranger": "crafting material"
}

代码中添加文件读取

public static void InitializeConfig()
        {
            string jsonFilePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "translations.json");

            if (File.Exists(jsonFilePath))
            {
                string json = File.ReadAllText(jsonFilePath);

                IDictionary<string, object> translations = JsonConvert.DeserializeObject<IDictionary<string, object>>(json);

                LoadTranslations(translations);
            }
            else
            {
                Debug.LogError("未找到translations.json文件!");
            }
        }

代码中添加解析json文件本地化

private static void LoadTranslations(IDictionary<string, object> translations)
        {
            const string translationPrefix = "ValheimLegends_";//这里是本地化文件中的前缀,可以随意更改请与文件中同步

            if (translations == null)
            {
                Debug.LogError("无法解析translations.json!");
                return;
            }

            var oldEntries = Localization.instance.m_translations
                .Where(entry => entry.Key.StartsWith(translationPrefix))
                .ToList();

            foreach (var entry in oldEntries)
            {
                Localization.instance.m_translations.Remove(entry.Key);
            }

            foreach (var translation in translations)
            {
                Localization.instance.AddWord(translation.Key, translation.Value.ToString());
            }
        }

项目需要引用中添加Newtonsoft.Json.dll或者在NuGat包中搜索Newtonsoft.Json安装

写BepInEx模组时添加本地化教程-资源工坊-游戏模组资源分享

在到Awake()方法中初始化 添加:

private void Awake()
        {
            InitializeConfig();//这个
        }

写BepInEx模组时添加本地化教程-资源工坊-游戏模组资源分享

需要本地化字符串写法

写BepInEx模组时添加本地化教程-资源工坊-游戏模组资源分享

在需要本地化字符串的位置添加$符号本地化文件中的前缀名称,后缀自行定义可重复使用,文件中请保证不重复

 

 

请登录后发表评论

    没有回复内容