mjahn/multilingual-country-list

查找 ISO 3166 国家名称和代码的对象

1.2.5 2019-09-13 04:47 UTC

This package is auto-updated.

Last update: 2024-09-13 15:50:20 UTC


README

SensioLabsInsight Scrutinizer Code Quality Code Coverage Build Status License

简介

我已经数不清有多少次,为了创建一个表单选择字段所需的数据,我小心翼翼地编辑了250多个国家的名单——而这只是对一个语言的。这个Laravel包装器围绕着一个在许多许多语言中维护的国家名称列表,将这项乏味的任务以及这些列表的持续维护抛到了历史的垃圾箱。

该软件包通过简单的API提供了对大量语言和区域设置中国家名称的轻松访问,以及它们的ISO-3166 alpha-2两位字母国家代码。

数据可以返回为查找数组或键值对数组,其中键和值标签可以根据使用这些数据的软件的需求进行设置。

安装

在命令行中运行

composer require petercoles/multilingual-country-list

如果你使用的是Laravel 5.5或更高版本(并且没有禁用软件包发现),你就可以完成了。继续阅读下面的使用部分。

如果你使用的是Laravel的较旧版本,则将服务提供程序添加到你的config/app.php文件中的providers条目

    'providers' => [
        // ...
        PeterColes\Countries\CountriesServiceProvider::class,
        // ...
    ],

还有一个可选的facade可用,可以通过在config/app.php文件中的aliases数组中添加以下内容来启用。

'Countries' => PeterColes\Countries\CountriesFacade::class,

使用方法

一旦安装,该软件包就会公开两个API方法:lookup()和keyValue(),每个方法都返回一个按使用语言中国家名称排序的国家列表。

查找

lookup方法接受两个可选参数:$locale(默认值为'en')和$flip(默认值为false),并返回一个集合。如果作为响应返回,则此集合将被Laravel转换为JSON对象,或者如果需要,可以使用toArray()方法将其转换为数组。

区域设置可以表示为语言代码,例如'fr',或完整的区域代码,例如zh_CN。

示例

默认情况下为英语。

Countries::lookup();

// returns

{
  "AF": "Afghanistan",
  ...
  "ZW": "Zimbabwe"
}

flip参数简化了反向查找,例如对于识别值但不支持键的类型提示组件,需要稍后获取键。

Countries::lookup('es', true);

// returns

{  
  "Afganistán": "AF",
  ...
  "Zimbabue": "ZW"
}

支持包括区域设置在内的非拉丁字符集

Countries::lookup('zh_CN');

// returns

{
  "AL": "阿尔巴尼亚",
  ...
  "HK": "中国香港特别行政区"
}

keyValue

keyValue方法接受三个可选参数:$locale(默认值为'en')、$key(默认值为'key')和$value(默认值为'value')。

示例

默认情况下仍然是英语。

Countries::keyValue();

// returns

[
  {"key": "AF", "value": "Afghanistan"},
  ...
  {"key": "ZW", "value": "Zimbabwe"}
]

如果你需要一个具有自定义索引的键值列表,则可以使用$key和$value参数来重新定义它们。例如,如果你使用一个javascript组件来生成选择字段,并且该组件对它接收到的数据中使用的索引有期望。

Countries::keyValue('zh', 'label', 'text');

// returns

[
  {"label": "AL", "text": "阿尔巴尼亚"},
  ...
  {"label": "HK", "text": "中国香港特别行政区"}
]

调整

因此,你有一份国家名单,但它并不完全符合你的需求。由于查找和keyValue方法返回Laravel集合,因此调整结果非常容易。

过滤

这些列表中的数据包括“欧元区”,尽管一些政治家的愿望,但这并不是一个真正的国家。让我们将其删除。

Countries::lookup()->reject(function($country, $key) {
    return $key == 'EZ';
});

还有一些条目可能被认为是其他国家的一部分。不涉及政治,让我们也删除加那利群岛(西班牙)和瓜德罗普(法国)。

Countries::lookup()->reject(function($country, $key) {
    return in_array($key, [ 'EZ', 'IC', 'GP' ]);
});

修改

例如,我们知道英国的国际代码是“GB”,但我们的支付网关期望的是“UK”。让我们将其更改。

Countries::lookup()->mapWithKeys(function($country, $key) {
    return $key == 'GB' ? [ 'UK' => $country ] : [ $key => $country ];
});

添加

被认可的国家数量正在增长,但并不总是像地面变化那样快,因此,不对政治的是非进行评论,让我们添加一个新国家。

Countries::lookup()->put('CT', 'Catalonia')->sort();

一些注意事项

  • 请确保代码尚未被使用。
  • 请记住,在添加后对列表进行排序。
  • 别忘了定期检查列表,以便在成为官方文件后删除您的添加项。

问题

本软件包是为了满足特定需求而开发的,然后推广到更广泛的使用。如果您有当前未满足的使用案例,或看到某些似乎没有正常工作的情况,请在 GitHub 仓库 中提出问题。

许可证

本软件包遵循 MIT 许可证