有没有一种简单的方法可以将数字1,2,3,...转换为“第一”,“第二”,“第三”,......,并且这样我可以给函数一个语言,并让它返回我正在定位的语言的正确形式?标准C ++(stl或boost OK),MFC或ATL,win32 api或者我可以从某个地方下载的小型,单用且免费的库。感谢。
答案 0 :(得分:5)
我怀疑它是否有可能,因为在许多语言中,这种形式将取决于上下文,如性别或它描述的名词的情况,不同的语言将需要不同类型的上下文信息,以允许确定正确的形式
编辑:例如在波兰语中它是“5-ta klasa”(第5课)与“5-tymiesiąc”(第5个月)与“w 5-tymmiesiącu”(第5个月)相比。
答案 1 :(得分:0)
我花了很多时间研究这个问题,因为这个项目太大了,无法自己解决问题。看起来ICU库是唯一以相当全面的方式提供此功能的库(http://www.icu-project.org/apiref/icu4c/classRuleBasedNumberFormat.html)。不过,我并不太热衷于整合这样一个庞大的图书馆。我会继续寻找,我仍然愿意接受建议。
答案 2 :(得分:0)
您是否在Unicode站点上查找CLDR存储库?我不知道他们是否有这种东西,但由于它可能是最全面的语言环境数据存储库,所以值得一看。 http://www.unicode.org/cldr/
答案 3 :(得分:0)
由于您使用C ++,我假设您可以使用GNU gettext(还有一个Windows端口)进行所有翻译,或至少了解他们如何解决它。以下是复数表格的相关手册页,解释了问题(您已经找到,但更详细)及其解决方案:
http://www.gnu.org/software/automake/manual/gettext/Plural-forms.html
答案 4 :(得分:-2)
Here是CodeProject上完成这项工作的代码。没有自己尝试过。