【问题标题】:Xml serialization and different languages (internationalization)xml序列化和不同语言(国际化)
【发布时间】:2015-01-12 15:46:29
【问题描述】:

有什么好的解决方案可以用不同的语言进行XML序列化(国际化),以便将标签和属性序列化为不同语言的同一个对象?

我将配置保存在 xml 中,并希望 xml 支持德语和英语。

我真的不知道如何解决这个问题。

最好的解决方案是但不存在:

[XmlRoot("MyEnglishConfig,MeineDeuscheKonfiguration")]
public class Test
{
    [XmlElement(ElementName="Setting1,Einstellung1")]
    public String value1;
}

以便两个 xml 版本都被正确解析:

<MyEnglishConfig>
    <Setting1>English value</Setting1>
<MyEnglishConfig>

<MeineDeuscheKonfiguration>
    <Einstellung1>deutscher Wert</Einstellung1>
</MeineDeuscheKonfiguration>

【问题讨论】:

  • XML 序列化程序是文化不变的。您是否尝试过解析德语并查看会发生什么?
  • 你是说你希望标签和属性可能是两种语言之一,即 可以是 说(忽略我的德语语法在这里!)?您是否计划/需要允许混合语言,即在其他英文文档中使用德语部分?
  • 我想你不明白我的问题 Yuval。我更新了问题。 Tolanj 确实明白。
  • 一个选项是您将(比如说)英语视为大师,并通过 Xsl / LinqToXml / 任何事后 / 前(反序列化)完成翻译。即您允许.Net 设置使用单一语言并在您保存/加载该配置的位置放置一个包装器。这对你来说是一个可行的方法吗?如果是这样,它有什么困难? Arhh 任何“字段”复杂,即您依赖嵌入式复杂类型?

标签: c# xml serialization internationalization


【解决方案1】:

有什么好的解决方案可以用不同的语言进行XML序列化(国际化),以便将标签和属性序列化为不同语言的同一个对象?

不要!这根本不是一件好事,而且几乎没有库可以帮助您做到这一点。务必将维护 UI 本地化和国际化;但将 xml 留在单一文化中。这只是要求极度痛苦。手动编辑 xml 文件的人可能不会介意,如果他们需要阅读不同语言的标签。

如果您需要这样做,XmlAttributeOverrides 可用于制作每种语言的序列化程序,但是...哎呀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2011-03-13
    • 2021-03-28
    相关资源
    最近更新 更多