有没有办法在PHP中获取可用的语言环境列表?

Ben*_*min 16 php locale internationalization

在Java中,您可以调用Locale.getAvailableLocales()以获取可用语言环境的列表.

我期待PHP Locale类的等价物,但找不到.

有没有办法获得所有有效Locales的数组?

Joh*_*ess 17

这里令人困惑的部分原因是PHP有两个名为"locale"的概念,几乎完全是分开的.

第一个是较旧的,它基本上只使用C语言环境功能.这就是setlocalePHP的一些功能(money_format例如)中的背后和语言环境支持.这就是提到locale -a在命令行和使用setlocale上运行的其他答案正在谈论的内容.

PHP的Locale类和扩展中其他相关功能intl是较新的,并且工作方式不同.它不使用libc语言环境,而是使用一个名为ICU的库,它提供自己的语言环境数据.PHP 确实提供了一种方法来确定系统支持哪些语言环境:ResourceBundle :: getLocales.这里的文档有点毛茸茸,但您可以将其称为静态方法并传递空字符串以使用ICU的默认资源,从而获得支持的语言环境列表intl:

ResourceBundle::getLocales('');
Run Code Online (Sandbox Code Playgroud)

  • 这确实回答了如何获取_locales_的问题,但如果想获取_语言_列表,那么这将不起作用。该列表将是不完整的。有关_语言_列表,请参阅 /sf/answers/4429349431/。 (2认同)

小智 13

我认为没有内置的功能.您需要询问操作系统安装了哪些语言环境.

例如,如果在unix系统上运行,则需要执行以下命令:

$ locale -a
Run Code Online (Sandbox Code Playgroud)