微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET本地化与单数和复数

我可以使用ASP.NET资源/本地化翻译字符串以一个简单的方式依赖于一个或另一个(英语语法),就像我在翻译中通过了第1个号码,它返回“你有一辆车”或0,2和更高,“你有%n车”?

或者我被迫在我看来有逻辑看看是单数还是复数?

解决方法

JasonTrue写道:
To the best of my kNowledge,there isn't a language 
that requires something more complicated than singular/plural

这样的语言确实存在。例如,在我的母语波兰语中,有三种形式:1,2-4,零和数字大于4.然后在达到20后,21,22-24和25的形式再次不同(相同数学形式如数字0-9)。是的,“你有0件事情”听起来很尴尬,因为你不太可能看到现实生活中使用的东西。

作为本地化专家,这里是我建议的:

如果可能的话,使用最后的数字表格:

a: Number of cars: %d

这意味着名词“car”的形式不取决于数字,0与其他数字一样自然。

如果上述是不可接受的,至少总是使一个完整的句子是一个可翻译的资源。也就是说,使用

b: You have 1 car.    
c: You have %d cars.

但是从来没有将这样的单元分割成较小的片段,例如

d: You have
e: car(s)

(然后在别的地方你有一个不可本地化的资源作为“%s%d%s”)

不同的是,虽然我不能直接翻译(c),因为名词的形式会改变,我可以看到问题,我可以在句子中改变形式(a)。

另一方面,当我面对(d)和(e)碎片时,没有办法确保所得到的句子将是语法的。再次:使用片段保证在某些语言中,翻译将是从语法尴尬到完全破坏的任何东西。

这完全适用于数字,而不仅仅是数字。例如,诸如“%s被删除”的片段也是不可译的,因为动词的形式将取决于名词的性别,这在这里是不可用的。对波兰语来说,最好的是相当于“删除:%s”,但只要%s占位符包含在可翻译资源中,我只能做到这一点。如果我所有的都被删除了,没有线索的指称名词,我只能通过大声诅咒我的狗,最后我还要生产垃圾语法。

原文地址:https://www.jb51.cc/aspnet/252157.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐