如何获得PHP中所有语言的列表

如何获得PHP中所有语言的列表,php,locale,intl,Php,Locale,Intl,我使用的代码处理来自第三方API的响应,该响应包含一些语言代码。我看到有人在为语言定义官方代码,我想知道是否有办法在PHP中访问这些代码 我也知道有些人只是使用硬编码的代码,但我更愿意将维护列表的工作留给其他人,并不是每天都会添加新的语言,而是 我的问题是如何在PHP中获得区域设置和语言列表?我发现PHP扩展intl包含一些用于处理区域设置的类,但要获得我想要的内容,需要花一些时间 intl扩展的文档如下所示。对我来说,安装它就像运行一样简单 sudo apt安装php8.0-intl 然后,为

我使用的代码处理来自第三方API的响应,该响应包含一些语言代码。我看到有人在为语言定义官方代码,我想知道是否有办法在PHP中访问这些代码

我也知道有些人只是使用硬编码的代码,但我更愿意将维护列表的工作留给其他人,并不是每天都会添加新的语言,而是


我的问题是如何在PHP中获得区域设置和语言列表?

我发现PHP扩展
intl
包含一些用于处理区域设置的类,但要获得我想要的内容,需要花一些时间

intl扩展的文档如下所示。对我来说,安装它就像运行一样简单

sudo apt安装php8.0-intl

然后,为了说明如何获得不同的地区、代码和语言,我使用了以下代码:

$locales = ResourceBundle::getLocales('');
printf('Found %d locales like %s', count($locales), implode(',', array_slice($locales, 0, 5)));
echo PHP_EOL;

$languageCodes = array_unique(array_map(fn ($locale) => Locale::getPrimaryLanguage($locale), $locales));
printf('Found %d language codes like %s', count($languageCodes), implode(',', array_slice($languageCodes, 0, 5)));
echo PHP_EOL;

$languages = array_unique(array_map(fn ($code) => Locale::getDisplayName($code), $languageCodes));
printf('Found %d languages like %s', count($languages), implode(',', array_slice($languages, 0, 5)));
echo PHP_EOL;
在运行时,会产生:

Found 751 locales like af,af_NA,af_ZA,agq,agq_CM
Found 204 language codes like af,agq,ak,am,ar
Found 204 languages like Afrikaans,Aghem,Akan,Amharic,Arabic