国家代码与地区差异
发布: (2026年2月28日 GMT+8 17:38)
1 分钟阅读
原文: Dev.to
Source: Dev.to
使用 Symfony Intl 支持科索沃
Symfony 的 Intl 组件不包含科索沃,因为它的 ISO 3166‑1 代码 XK 是一个 用户分配(user‑assigned)代码,而非官方代码。因此,诸如 Countries::getNames() 之类的调用不会列出科索沃。
use Symfony\Component\Intl\Countries;
$countries = Countries::getNames();
isset($countries['XK']); // false
Countries::getName('XK'); // Throws MissingResourceException
解决方案:启用用户分配的代码
在你的 .env 文件中添加以下行:
# .env
SYMFONY_INTL_WITH_USER_ASSIGNED=true
启用此标志后,Symfony 将识别科索沃及其相关代码:
use Symfony\Component\Intl\Countries;
Countries::getName('XK'); // 'Kosovo'
Countries::getAlpha2Code('XKK'); // 'XK'
Countries::getAlpha3Code('XK'); // 'XKK'
Countries::getNumericCode('XK'); // 983
这行代码即可消除在应用需要处理依赖用户分配国家代码的地区时所必须的自定义解决方案。