【问题标题】:What is the standard way to name a file based on CultureInfo?根据 CultureInfo 命名文件的标准方法是什么?
【发布时间】:2012-09-18 22:18:00
【问题描述】:

寻找符合我标准的建议。

我需要为不同的国家/地区创建一个文件,并为此寻找最佳命名策略。

我正在使用 .net 4.5。例如,我需要创建一个包含俄罗斯数据的文件,是否应该命名

rus_myfile.txt [ThreeLetterISOLanguageName]

ru_myfile.txt [TwoLetterISOLanguageName]

还是其他?

是否有任何基于 .Net CultureInfo 对象的命名约定标准?这方面有什么陷阱吗?

【问题讨论】:

  • 你想达到什么目的?为什么不使用资源文件 (.resx)?
  • 没有标准方法可以做到这一点...

标签: c# .net naming-conventions cultureinfo culture


【解决方案1】:

您可以遵循资源文件 (.resx) 的命名约定:

<file basename>.<culture>.txt

您的示例如下所示:

myfile.ru-RU.txt

【讨论】:

  • 在这种情况下,您将使用CultureInfo.Name 作为字符串,对吗?
  • 感谢您的建议。但是对于多语言的国家,例如加拿大,文件名将不正确(可能是 fr-CA 或 en-CA)。该文件的内容是所有加拿大数据。那么我应该将文件命名为 myfile.CA.txt 吗?另外,如果我对数据库名称应用相同的名称,mydatabase.CA 或 CA_mydatabase 是否正确?
【解决方案2】:

有关“.resx”文件的官方命名约定规则(这确实是标准),请参阅http://msdn.microsoft.com/en-us/library/w24xty37(v=vs.100).aspx。如果您只想要“中性”文化,请参阅“CultureInfo.Parent”。您可能还想看看“CultureInfo.IsNeutralCulture”(您可能需要它)。如果需要,您甚至可以编写“CultureInfo”扩展方法(检索中性文化),但如果在不变文化的实例上调用它时要小心(在这种情况下可能返回 null 或空字符串)。此外,对于中文,请注意“zh-CHS”与“zh-Hans”(均为“简体中文”),以及“zh-CHT”与“zh-Hant”(均为“繁体中文”)。在每种情况下,后一个名称都是较新的版本,MSFT 从旧版本更改为支持称为 IETF 标准的东西(不要问)。然而,旧的和新的仍然受支持(MSFT 官方表示如果可以的话,使用新名称),所以当你调用“CultureInfo.DislayName”时,有时你可能会看到附加的“Legacy”一词(取决于版本.NET 你正在使用)。还要注意您通常使用的 .NET 版本。有时会添加新的文化,与早期版本相比,V4.0 中的内容要多得多,尽管不是真正的主流文化。 IOW,如果您尝试通过将区域性名称传递给其构造函数来实例化“CultureInfo”,它可能适用于 .NET 的一个版本,但会在另一个版本上引发“ArgumentException”。这可能会或可能不会影响您的特定应用,但需要注意(例如,它会影响我的应用)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 2013-02-08
    • 1970-01-01
    • 2010-09-15
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多