PHP 中不同语言的序号指示符

Ordinal indicators in different languages in PHP

我正在 PHP Laravel 开发一个多语言网站,我需要在屏幕上打印一些句子,这些句子显示数字后跟一个序号指示符。

该网站支持英语、西班牙语、德语、法语、意大利语、葡萄牙语、俄语、波兰语。

我想知道 php 中是否存在一种方法可以支持我生成不同语言的序号。或者关于如何解决这个问题的一些建议。

我花了很多时间谷歌搜索,但我还没有找到任何解决方案。

例如

PHP 有一个 NumberFormatter class that you can use to format number for different locales.

您可以像这样创建格式化程序:

$formatter = new \NumberFormatter("en-US", \NumberFormatter::ORDINAL);

并将其与 $formatter->format(3); 一起使用。

以下是我尝试过的一些语言环境:

>>> $a = new \NumberFormatter("it-IT", \NumberFormatter::ORDINAL);
=> NumberFormatter {#3199
     locale: "it",
     pattern: """
       %%dord-mascabbrev:\n
       0: º;\n
       %digits-ordinal-masculine:\n
       0: =#,##0==%%dord-mascabbrev=;\n
       -x: −>%digits-ordinal-masculine>;\n
       %%dord-femabbrev:\n
       0: ª;\n
       %digits-ordinal-feminine:\n
       0: =#,##0==%%dord-femabbrev=;\n
       -x: −>%digits-ordinal-feminine>;\n
       %digits-ordinal:\n
       0: =%digits-ordinal-masculine=;\n
       """,
      …3
   }
>>> $a->format(12)
=> "12º"
>>> $a = new \NumberFormatter("en-US", \NumberFormatter::ORDINAL);
=> NumberFormatter {#3197
     locale: "en",
     pattern: """
       %digits-ordinal:\n
       0: =#,##0=$(ordinal,one{st}two{nd}few{rd}other{th})$;\n
       -x: −>%digits-ordinal>;\n
       """,
      …3
   }
>>> $a->format(12)
=> "12th"
>>> $a = new \NumberFormatter("fr-FR", \NumberFormatter::ORDINAL);
=> NumberFormatter {#3188
     locale: "fr",
     pattern: """
       %digits-ordinal-masculine:\n
       0: =#,##0=$(ordinal,one{er}other{e})$;\n
       -x: −>%digits-ordinal-masculine>;\n
       %digits-ordinal-feminine:\n
       0: =#,##0=$(ordinal,one{re}other{e})$;\n
       -x: −>%digits-ordinal-feminine>;\n
       %digits-ordinal-masculine-plural:\n
       0: =#,##0=$(ordinal,one{ers}other{es})$;\n
       -x: −>%digits-ordinal-masculine-plural>;\n
       %digits-ordinal-feminine-plural:\n
       0: =#,##0=$(ordinal,one{res}other{es})$;\n
       -x: −>%digits-ordinal-feminine-plural>;\n
       %digits-ordinal:\n
       0: =%digits-ordinal-masculine=;\n
       """,
      …3
   }
>>> $a->format(12)
=> "12e"