【发布时间】:2011-01-18 23:39:49
【问题描述】:
我正在为 ASP .NET Web 应用程序的本地化获取资源文件 (resx)。这些资源文件稍后将提供给翻译人员,以便将内容翻译成我们需要支持的所有语言。
据我了解,当您开始处理不同的语言时,处理多元化等问题可能会很困难。考虑希望向用户显示确认消息的示例,询问他们是否要删除当前屏幕上的一条或多条记录。作为该消息的一部分,我们希望包含要删除的记录数,因此我们可以将资源文本定义为:
您确定要删除这 {0} 条记录吗?
这回避了使用“记录”一词与记录的问题。这有点语法技巧,但我想它在英语中足够好用。也就是说,我不想假设同样的方法也适用于其他语言。在某些情况下(如中文),复数甚至不是问题,但在其他语言中肯定会出现问题,并且使用 (s) hack 可能不会解决问题。
我一直在阅读 MediaWiki wiki 上的 Localization Article(dogfooding!),发现他们实际上能够根据参数的值是否为复数,在消息中嵌入不同的文本以使用。所以上面的资源文本会变成(注意参数占位符使用$1而不是{0},但概念是一样的):
您确定要删除这些 $1 {{PLURAL:$1|record|records}} 吗?
我喜欢这种语法,并且想知道是否有任何 .NET 库可以解释这一点,我可以将其插入到我的 Web 应用程序的自定义资源管理器中以支持此类功能。
【问题讨论】:
标签: .net localization internationalization