PHP 中不同语言的序号指示符
Ordinal indicators in different languages in PHP
我正在 PHP Laravel 开发一个多语言网站,我需要在屏幕上打印一些句子,这些句子显示数字后跟一个序号指示符。
该网站支持英语、西班牙语、德语、法语、意大利语、葡萄牙语、俄语、波兰语。
我想知道 php 中是否存在一种方法可以支持我生成不同语言的序号。或者关于如何解决这个问题的一些建议。
我花了很多时间谷歌搜索,但我还没有找到任何解决方案。
例如
- 英语:第一、第二、第三、..
- 意大利语:1°、2°、3°、..
- 法语:1er、2e、3e、..
- 西班牙语:1°、2°、3°、..
- 葡萄牙语:1°、2°、3°、..
- 德语:1., 2., 3., ..
- 俄语:1-й, 2-й, 3-й, ...
- 波兰语:1、2、3、..
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"
我正在 PHP Laravel 开发一个多语言网站,我需要在屏幕上打印一些句子,这些句子显示数字后跟一个序号指示符。
该网站支持英语、西班牙语、德语、法语、意大利语、葡萄牙语、俄语、波兰语。
我想知道 php 中是否存在一种方法可以支持我生成不同语言的序号。或者关于如何解决这个问题的一些建议。
我花了很多时间谷歌搜索,但我还没有找到任何解决方案。
例如
- 英语:第一、第二、第三、..
- 意大利语:1°、2°、3°、..
- 法语:1er、2e、3e、..
- 西班牙语:1°、2°、3°、..
- 葡萄牙语:1°、2°、3°、..
- 德语:1., 2., 3., ..
- 俄语:1-й, 2-й, 3-й, ...
- 波兰语:1、2、3、..
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"