赵克雷斯/多语言国家列表

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

1.2.12 2024-03-13 16:50 UTC

This package is auto-updated.

Last update: 2024-08-29 16:49:59 UTC


README

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,
        // ...
    ],

还有一个可选的外观可以通过将以下内容添加到 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 参数便于反向查找,例如对于识别值但不支持键的typahead组件,需要稍后获取键。

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": "中国香港特别行政区"}
]

国家名称

如果你只想获取特定区域的国家的名称,则将 $isoCode 和 $locale(默认 'en')传递给 countryName 方法将返回所需文本。

国家名称示例

Countries::countryName('BE', 'fr')

// returns

'Belgique'

调整

所以,你有一个国家列表,但它并不完全符合你的需求。由于查找和 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许可证授权。