每种语言使用多个resx文件进行本地化

我正在尝试对我的C#.NET 3.5项目(游戏模块)实施本地化。我可以使用每种语言的一个resx文件,但是由于字符串的数量很长,我想将每种语言的字符串拆分成多个文件。

现在,我有A.resx,还有A.fr.resx和A.de.resx。使用using Project.Localization,我可以呼叫A.MyString,它可以在游戏中正确翻译。

但是,我已经在B.fr.resx和B.de.resx中添加了B.resx,虽然我可以在代码中调用B.myotherString,但是在构建和运行项目时,仅显示A中的字符串已翻译-无论游戏的语言如何,B字符串均使用默认的英语。

快速查看生成的fr/Project.resources.dll,表明文件A和B的转换后的字符串都在文件中。我不知道我在看什么,但是字符串在那里。

我尝试向A文件和B文件添加不同的名称空间属性,但这似乎只影响代码-如在其中,我不得不将调用更改为NamespaceA.A.MyStringNamespaceB.B.myotherString,但是同样的翻译失败发生在游戏中。

iCMS 回答:每种语言使用多个resx文件进行本地化

您可以通过System.Windows.Forms.ResXResourceWriter制作自定义.resx生成器。

static void WriteResX(Dictionary<string,object> dictionary,string resxPath)
{
    using ResXResourceWriter writer = new ResXResourceWriter(resxPath);
    foreach (var item in dictionary)
    {
        writer.AddResource(item.Key,item.Value);
    }
}

现在,您可以通过.txt,.csv,.xml,.json等格式管理文本。甚至多个文件。

本文链接:https://www.f2er.com/1780287.html

大家都在问