如何将基数词转换为序数词

发布于 2024-07-07 06:17:46 字数 176 浏览 7 评论 0原文

有没有一种简单的方法可以将数字 1, 2, 3, ... 转换为“1st”, “2nd”, “3rd”, ...,并且以这种方式我可以为该函数提供一种语言并具有它会返回我目标语言的正确形式吗? 标准 C++(stl 或 boost 都可以)、MFC 或 ATL、win32 api 或我可以从某处下载的小型、单一用途和免费库。 谢谢。

Is there an easy way to convert the number 1, 2, 3, ... to "1st", "2nd", "3rd", ..., and in such a way that I can give the function a language and have it return me the correct form for the language I'm targeting? Either standard C++ (stl or boost OK), MFC or ATL, win32 api or a small, single-purpose and free library that I can download from somewhere. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

铁轨上的流浪者 2024-07-14 06:17:46

我怀疑这是否可能,因为在许多语言中,这种形式取决于上下文,例如它所描述的名词的性别或大小写,并且不同的语言将需要不同类型的上下文信息来确定正确的形式。

编辑:例如,在波兰语中,它是“5-ta klasa”(第 5 类)与“5-ty miesiąc”(第 5 个月)与“w 5-tym miesiącu”(第 5 个月)。

I doubt whether it is possible at all, since in many languages this form will depend on the context, like gender or case of the noun it describes and different languages will require different kind of context information to allow to determine the correct form.

EDIT: E.g. in Polish it is "5-ta klasa" (5th class) vs. "5-ty miesiąc" (5th month) vs. "w 5-tym miesiącu" (in the 5th month).

雪若未夕 2024-07-14 06:17:46

我花了相当多的时间研究这个,因为这是一个太大的项目,我自己无法完成。 看起来 ICU 库是唯一一个以某种全面的方式提供此功能的库 (http://www.icu-project.org/apiref/icu4c/classRuleBasedNumberFormat.html)。 不过,我不太热衷于合并这样一个巨大的图书馆。 我会继续寻找,并且仍然愿意接受建议。

I've spend quite some time researching this, because it's too large a project to get right myself. It looks like the ICU library is the only one that provides this functionality in a somewhat comprehensive way (http://www.icu-project.org/apiref/icu4c/classRuleBasedNumberFormat.html). I'm not too keen on incorporating a huge library like that, though. I'll keep on looking and I'm still open to suggestions.

素罗衫 2024-07-14 06:17:46

您是否在 Unicode 站点上查找过 CLDR 存储库? 我不知道他们是否有这种东西,但由于它可能是最全面的语言环境数据存储库,因此可能值得一看。
http://www.unicode.org/cldr/

Did you look up the CLDR repository on the Unicode site? I don't know if they have this kind of thing but since it's probably the most comprehensive locale data repository out there, it's probably worth a look.
http://www.unicode.org/cldr/

老旧海报 2024-07-14 06:17:46

由于您使用 C++,我假设您可以使用 GNU gettext(也有一个 Windows 端口)来进行所有翻译,或者至少了解他们如何解决它。 这是复数形式的相关手册页,解释了问题(您已经找到了,但更详细)及其解决方案:

http://www.gnu.org/software/automake/manual/gettext/Plural-forms.html

Since you use C++, I assume you could use GNU gettext (there's a Windows port as well) for all the translations, or at least get the idea how they solved it. Here's the relevant manual page on plural forms that explains the problem (which you already found, but in more detail) and their solution:

http://www.gnu.org/software/automake/manual/gettext/Plural-forms.html

倦话 2024-07-14 06:17:46

这里是 CodeProject 上完成这项工作的代码段。 我自己还没试过。

Here is the piece of code on CodeProject that does the job. Haven't tried it on my own.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文