1

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

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

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

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

例如。

  • 英语:第一,第二,第三,..
  • 意大利语:1°、2°、3°、..
  • 法语:1er、2e、3e、..
  • 西班牙语:1°、2°、3°、..
  • 葡萄牙语:1°、2°、3°、..
  • 德语:1., 2., 3., ..
  • 俄语:1-й, 2-й, 3-й, ...
  • 波兰语:1、2、3、..
4

1 回答 1

2

PHP 有一个NumberFormatter类,您可以使用它来为不同的语言环境设置数字格式。

您可以创建一个格式化程序,如:

$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"
于 2020-01-14T09:17:10.813 回答