【问题标题】:What is .NET assembly culture?什么是 .NET 汇编文化?
【发布时间】:2012-08-27 16:24:27
【问题描述】:

在网站上搜索后,我发布了这个问题。我知道默认情况下程序集是“文化中立的”这一事实,并且可以创建具有文化特定信息的只有资源(没有代码)的附属程序集,并将它们放在与文化名称相同的文件夹中(即 en-us) .但问题是,什么是文化?一些具体的现实例子会有所帮助。

【问题讨论】:

    标签: .net-assembly culture satellite


    【解决方案1】:

    根据 MSDN,这包括诸如 the names for the culture, the writing system, the calendar used, and formatting for dates and sort strings 之类的内容。

    对于翻译来说,最重要的方面是语言和方言的结合。这是一个很好的list of examples

    例如,考虑英国英语 (en-GB) 与美国英语 (en-US) 与加拿大英语 (en-CA) 与澳大利亚英语 (en-AU) 与至少十种其他英语方言存在(我不骗你/请参阅我链接的列表)。然后,比较和对比他们说俄语(ru-RU)。除了语言上的差异外,基数指示符、数字分组、日期(MDY vs DMY)等也有不同的符号......

    【讨论】:

    • 好的,但是如果卫星程序集内部不应该有代码,那么它会进入什么信息呢?根据我的理解,Microsoft 建议附属程序集应该使用一些文化中立的程序集。
    • 嗯,当然,您可以将文化语言中的短语放入每个文化的卫星集合中。
    • 它们用于更大的问题,例如翻译。因此,在向德国市场销售时,在您的计费软件中,您可以显示英国市场发票 rehnungsstellung,尽管事实上“您”是法国人并称为 Facture 类
    【解决方案2】:

    很多东西 dd/mm/yyyy 而不是 mm/dd/yyy

    1.500,00 欧元而不是 1,500.00 美元

    这是从左到右或从右到左的排序顺序。

    基本上,文化是抽象所有这些真正令人恼火的问题的方式,所以你只剩下我们必须处理的两个主要问题

    使用已安装的文化,而不必知道它是什么 例如DateTime.Now.ToString("d");

    无论如何都要使用这种特定的文化。

    DateTime.Now.ToString("d",_currentUser.Culture);
    

    .net 最有价值的部分之一。曾经是一场彻头彻尾的噩梦。

    【讨论】:

    • 谢谢托尼。这有帮助。那么,我在哪里可以指定文化信息?在 AssemblyInfo.cs 文件中?一旦我这样做,它就违反了文化特定程序集不应包含任何代码的规则(只允许使用资源)。我确定我在这里遗漏了一些东西:)
    • 好吧,Toni 已经有了一只主要的狐狸爪子了??阅读本文以获取 MS 建议 msdn.microsoft.com/en-us/library/w7x1y988.aspx
    猜你喜欢
    • 2011-03-12
    • 2012-03-04
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2014-09-03
    相关资源
    最近更新 更多