2012-09-18 33 views
0

寻找符合我的标准的推荐。基于CultureInfo命名文件的标准方式是什么?

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

我正在使用.net 4.5。因此,我需要创建一个带有俄罗斯数据的文件,如果它被命名为

rus_myfile.txt [ThreeLetterISOLanguageName] 

ru_myfile.txt [TwoLetterISOLanguageName] 

或另一个?

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

+0

你想达到什么目的?为什么不使用资源文件(.resx)? –

+0

有没有*标准*的方式来做到这一点... –

回答

3

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

<file basename>.<culture>.txt 

你的榜样应该是这样的:

myfile.ru-RU.txt 
+0

在这种情况下,你会使用'CultureInfo.Name'作为你的字符串,对吗? –

+0

感谢您的建议。然而,对于多语种的国家(例如加拿大),文件名可能不正确(可能是fr-CA或en-CA)。该文件的内容全部是加拿大数据。那么我应该命名文件myfile.CA.txt?另外,如果我将它应用于数据库名称,mydatabase.CA或CA_mydatabase是否正确? – amateur

0

有关 “的.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”。这可能会或可能不会影响您的特定应用程序,但它是需要注意的事情(例如,它会影响我的应用程序)。