国家代码与地区差异

发布: (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

这行代码即可消除在应用需要处理依赖用户分配国家代码的地区时所必须的自定义解决方案。

0 浏览
Back to Blog

相关文章

阅读更多 »