3

我将从一个 xml 中检索这些数据,以便为数千个对象初始化它。

所以如果MyObject有一个CountryLanguage属性,它们应该是什么,以及它们应该如何在代码和xml中表示。

我正在考虑使用Enumin 代码。

我只是在寻找其他人的意见,以找到最好的方法。是否所有语言和国家都在 BCL 中,所以我可以使用 min 而不是写一个?

也不应该合并CountryLanguageLanguage不代表指定的语言Country

如何最好地在代码和 XML 中实现这一点。

我应该这样做吗?:

<Language>English</Language>
4

4 回答 4

8

考虑查看以字符串为示例的 CultureInfo 的构造函数(例如“en-us”)

提供有关特定文化的信息(称为非托管代码开发的“区域设置”)。这些信息包括文化名称、书写系统、使用的日历以及日期和排序字符串的格式。

它与现实世界中实际使用的内容相当具体(例如,国家/语言对是有意义的)。您还可以创建自己的文化

您指定该语言可能不是该国家/地区使用的语言。你能澄清一下你将使用它吗?如果没有更多信息,您似乎正在尝试定义类似于CultureInfo的内容。

或者,您还可以定义一个简单的对象,它只有两个属性(国家和语言),其中国家是ISO 3166-2字符串,语言是ISO 639-1 字符串,如下Edward Loper 建议的那样

您可以将 ISO 代码列表存储在 XML 文件中,并使用传统技术对其进行解析。我建议 CultureInfo,因为您指定您正在寻找 BCL 中已有的内容。

一般来说,开放集的框架设计指南不鼓励使用枚举:

不要将枚举用于开放集(例如操作系统版本、朋友的姓名等)。

您可以采用混合方法,在其中定义两个具有一堆静态只读字符串的静态类,如

// ISO-3166-2 codes
public static Countries
{
   public static readonly string France = "FR";
   ...
}

// CultureInfo style codes
public static Languages
{
   public static readonly string BritishEnglish = "en-GB";
}

更新:根据您的评论,这是专门针对电影的,您仍然可以将 CultureInfo 用于制作它的文化和内容的文化。除此之外的任何事情都可能对微软来说过于政治化,以至于无法参与使其成为操作系统的一部分(参见this)。因此,您必须定义自己的。

于 2009-12-28T18:11:54.120 回答
2

ISO 639-2(语言名称表示代码)提供了相当完整的人类语言列表,以及可用于这些语言的标准代码:

http://www.loc.gov/standards/iso639-2/php/code_list.php

同样,ISO 3166-1 给出了所有国家的标准代码:

http://en.wikipedia.org/wiki/ISO_3166-1

于 2009-12-28T18:24:42.487 回答
1

我将使用预构建的序列化库(例如本教程)从 xml 中保存和检索。另外,我会避免使用枚举,而只是使用字符串或类似 CultureInfo 的东西。

于 2009-12-28T18:15:31.943 回答
0

这可能是您可以使用元素的 xml:lang 属性的情况,如下所述:http: //docs.oasis-open.org/dita/v1.1/OS/archspec/xmllang.html

正如它所建议的那样,您可以使用“country-LANGUAGE”标识符作为语言环境。这可用于在反序列化时创建 CultureInfo 对象,即我将在我的代码中使用 CultureInfo 对象。

于 2009-12-28T18:16:38.863 回答