php - 如何获取 PHP 中所有语言的列表
问题描述
我使用处理来自 3rd 方 API 的响应的代码,并且该响应包含一些语言代码。我看到似乎有定义语言官方代码的标准,并且想知道是否有任何方法可以在 PHP 中访问这些代码。
我也知道有些人只是使用硬编码的代码列表,但我更愿意将维护列表留给其他人,不是每天都会添加新语言,但确实会发生
我的问题是如何获取 PHP 中的语言环境和语言列表?
解决方案
我发现 PHP 扩展intl
包含一些处理语言环境的类,但需要一些时间才能得到我想要的。
intl 扩展的文档在这里。对我来说安装它就像运行一样简单
sudo apt install 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
推荐阅读
- azure-devops - 如何在 azureDevOps 应用服务中部署 Angular 通用应用
- php - debug_backtrace() 缺少类名的后期绑定
- centos7 - 你如何在 centos 6/7 服务器上运行 puppeteer chromium/chrome `headless:false`
- c# - 使用 EF Core 和 OData,应用程序如何按相关实体中的属性进行排序?
- python - Python Web Scraping - 导航到下一页链接并获取数据
- redux - 如何获得 graphql refetchQueries 的结果?
- vue.js - 在这种情况下,有没有办法让转义字符在 Vue.js 中工作?
- python - 如何在python中查找数据框中文本的大小
- android - 如何使用 AsyncTask 中的用户 ID 获取当前登录的用户
- java - 从 xml 文件 www.bnr.ro java 中获取值