.net - 微软是否应该避免在 .Net 中实现一个特性,因为它国际化太难了?

标签 .net internationalization language-features

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

8年前关闭。




Improve this question




我在 Microsoft Connect 上提出了一个关于日期格式的请求(“DateTime Formatting should caluclate the correct suffix for the day”)。基本上我想有一个格式化字符串代码来添加后缀到天数。所以“1 Jan”将被格式化为“1st Jan”,“2 Jan”将被格式化为“2nd Jan”等等。

对于英语案例,这很容易做到,但是微软拒绝了这个想法,理由是国际化太难了。

我只是想知道人们是否同意微软让只为英语市场编写的英语程序员的生活更加艰难是合理的,仅仅因为他们不能满足非英语市场的需求?

编辑:好的,我接受这样的论点,即存在可以做他们想做的事情的框架。我是出于意识形态的要求而提出更多要求。还请记住,非英语文化有一个简单的后备方案,即不添加任何内容,这使人们不会比现在更糟。

编辑 2:对我来说,这是一个多小时的工作。我需要支持看起来像这样的代码:

        DateTime minDate = new DateTime(2003, 12, 10);
        string errorMessage = ValidationMessageResource.DateTooEarly;            
        Console.WriteLine(String.Format(errorMessage, minDate));

我无法控制资源文件的内容,资源字符串通常类似于“日期不应早于 {0:D}”。为此,我需要实现我自己的 IFormatProvider 类,该类必须支持 Microsoft 的格式化程序接受的所有不同格式字符串。微软似乎没有提供一种简单的方法来通过继承来扩展他们的格式化程序。

最佳答案

1:这是他们的框架,他们选择做的任何事情在定义上都是合理的。他们没有任何义务提供任何他们不喜欢的东西。

2:不能国际化的功能基本没用。如果他们只为英语添加它,他们所得到的只是世界其他地方会要求它国际化,而突然间,他们会因为给世界其他地方劣等待遇而看起来很糟糕。

3:国际化难。您不能假设每种语言都只是添加一个后缀。它可能是一个前缀,或者它可能会改变句子的完全不同的部分。 (或者,正如另一位发帖人指出的那样,它可能是“第一”而不是第一,所以即使在英语中,也没有硬性规定。为什么他们应该实现你的任意规则,而不是其他对英语同样有效的规则? )

3b:虽然您显然不关心这一点,但微软正在将 .NET 作为一种国际化感知框架进行营销。这意味着他们不能忽略世界上 90% 的地方来满足您的需求。

4:你需要花一个小时为自己编写纯英文版本的代码,不是吗? ;)

5:与DateTime无关。它是一般数字字符串格式的一般属性。

6:你的假设“如果他们添加了英语功能,没有其他人会比现在更糟”是不正确的。开发人员通常依赖 .NET 来正确运行。如果添加了您的格式建议,开发人员自然会期望它适用于所有语言和区域设置,因此,当开发人员认为不存在问题时,会为所有非英语语言生成无效或意外的输出。

关于.net - 微软是否应该避免在 .Net 中实现一个特性,因为它国际化太难了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343717/

相关文章:

android - 如何从android将阿拉伯数据插入mysql数据库

html - 全面理解hreflang

scala - 为什么这个Option要转换成String? [斯卡拉]

c# - EF 6 加上几个数据库上下文

.Net Profiling API 方法

c# - 不要在选中的子项上关闭 ToolStripDropDownButton

c# - 访问程序集范围之外的内部属性

c# - 此 DDD 应用程序中有哪些聚合?

ruby-on-rails - 在 Rails I18n 中本地化日期时间

java - java中的interface和@interface有什么区别?