Mar*_*own 7 .net language-features internationalization
我在Microsoft Connect上提出了关于日期格式的请求(" DateTime格式化应该为当天的正确后缀计算 ").基本上我想要一个格式化字符串代码,用于将后缀添加到日期编号.所以"1月1日"将被格式化为"1月1日"和"2月1日"格式化为"1月1日"等.
对于英国案例来说这很容易做到,但微软已经拒绝了这个想法,理由是它太难以国际化.
我只是想知道人们是否同意微软为英语程序员专门为英语市场写作更加艰难,仅仅是因为他们无法满足非英语市场的需求?
编辑:好的,我接受这样的论点,即它有框架来做他们想要的东西.我更多地是出于意识形态的考虑.还要记住,非英语文化有一个简单的后退,即不添加任何东西,这使得人们不会比现在更糟糕.
编辑2:对我来说,这是一个多小时的工作.我需要支持看起来像这样的代码:
DateTime minDate = new DateTime(2003, 12, 10);
string errorMessage = ValidationMessageResource.DateTooEarly;
Console.WriteLine(String.Format(errorMessage, minDate));
Run Code Online (Sandbox Code Playgroud)
我无法控制资源文件的内容,资源字符串通常是这样的"日期不应该在{0:D}之前".为此,我需要实现我自己的IFormatProvider类,它必须支持Microsoft格式化程序接受的所有不同的格式化字符串.微软似乎没有给出一种通过继承扩展格式化程序的简单方法.
jal*_*alf 18
1:这是他们的框架,他们选择做的任何事情都是合理的.他们没有义务提供他们不喜欢的任何东西.
2:无法国际化的功能基本上没用.如果他们只把它添加到英语中,那么他们所能达到的只是世界其他地方会要求它变得国际化,突然之间,他们看起来不好让世界其他地方受到劣质待遇.
3:这是很难国际化.您不能假设每种语言都只添加后缀.它可能是一个前缀,或者它可能会改变句子的完全不同部分.(或者,正如另一张海报指出的那样,它可能是"第一"而不是第一,所以即使在英语中,也没有严格的规则.为什么他们应该执行你的任意规则,而不是其他同样有效的英语规则? )
3b:虽然你显然不关心这一点,但微软正在推广.NET作为一个国际化意识框架.这意味着他们不能只忽视世界上90%的需求.
4:它会带给你什么,一小时为自己编写英文版本的代码,不是吗?;)
5:它与DateTime无关.这是一个数字的字符串格式化的一般性质一般.
6:你的假设是"如果他们为英语添加了这个功能,没有人会比现在更糟糕"是不正确的.开发人员通常依赖.NET来正确运行.如果加入您的格式的建议,开发商自然希望它为所有的语言和地区工作,所以,当开发商没有预期到问题的存在会为所有非英语语言无效或不可预测的输出.