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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/aspnet/252157.html

猜你在找的asp.Net相关文章