deepskylog/multilingual-language-list

查找语言名称和代码的对象

1.15.2 2020-09-17 11:18 UTC

This package is not auto-updated.

Last update: 2024-09-14 06:24:35 UTC


README

SensioLabsInsight Scrutinizer Code Quality Code Coverage Build Status License

介绍

多年来,我参与了很多项目,这些项目都导致了多语言网站的诞生。在这个过程中,通常支持的语言数量有所增加,对方言差异重要性的敏感性也有所提高,这些都是好事。

此包的目的是通过一个简单的API,使管理语言列表(如用于语言下拉列表或表单选择字段的列表)变得更加容易,该API提供了对行业维护的列表的访问。

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

安装

在命令行运行

composer require deepskylog/multilingual-language-list

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

如果你使用的是Laravel的旧版本,那么请将服务提供者添加到config/app.php文件中的providers条目

    'providers' => [
        // ...
        DeepskyLog\Languages\LanguagesServiceProvider::class,
        // ...
    ],

还有一个可选的facade可用,可以通过将以下内容添加到config/app.php的aliases数组中启用:

'Languages' => DeepskyLog\Languages\LanguagesFacade::class,

使用方法

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

查找

lookup方法接受三个可选参数,并返回一个集合。

  • $filter确定要在响应中包含哪些语言。默认为"major",这将导致只返回具有两个字母代码的语言列表(例如,fr - 法语)。其他选项是"minor",它将添加具有三个字母代码的语言(例如,arw - Arawak)和"all",不建议使用,它将返回每个可能的条目,包括一些方言(例如,es_MX - 墨西哥西班牙语)和结构(例如,es_419 - 拉丁美洲西班牙语)。
  • $locale确定响应将返回的语言和方言。区域可以是语言(例如,fr - 法语)、方言(例如,fr_CA - 加拿大法语)和特殊语言(例如,bs_Cryl_BA - 波斯尼亚和黑塞哥维那的Bosnian方言的西里尔字母或zh_Hans_HK - 香港方言的简体中文)。它们看起来很像语言,但更细致,即有更多这样的语言。
  • $flip用于切换响应数组的键和值,使语言名称成为键,语言代码成为值。

如果作为响应返回,结果集合将被Laravel转换为json对象,如果需要,也可以使用toArray()方法转换为数组。

示例:默认设置

Languages::lookup();

// returns

{
  "ab": "Abkhazian",
  ...
  "zu": "Zulu"
}

示例:限制显示的语言

Languages::lookup(['en', 'fr', 'de']);

// returns

{
  "en": "English",
  "fr": "French",
  "de": "German"
}

示例:更改显示语言

Languages::lookup(['en', 'fr', 'de'], 'fr');

// returns

{
  "de": "allemand",
  "en": "anglais",
  "fr": "français"
}

示例:反向查找

Languages::lookup(['en', 'fr', 'de'], 'fr', true);

// returns

{
  "allemand": "de",
  "anglais": "en",
  "français": "fr"
}

示例:支持非拉丁字符集

Languages::lookup(['en', 'fr', 'de', 'bs'], 'bs_Cyrl');

// returns

{
  "bs": "босански",
  "en": "енглески",
  "de": "немачки",
  "fr": "француски"
}

keyValue

keyValue方法接受四个可选参数

  • $filter - 默认 "major"。请参阅查找部分以获取完整说明
  • $locale - 默认 "en"。请参阅查找部分以获取完整说明
  • $key - 默认 "key"
  • $value - 默认 "value"

示例:默认设置

Languages::keyValue();

// returns

[
  {"key": "ab", "value": "Abkhazian"},
  {"key": "aa", "value": "Afar"},
  ...
  {"key": "za", "value": "Zhuang"},
  {"key": "zu", "value": "Zulu"}
]

示例:包含 "minor" 语言

Languages::keyValue('minor');

// returns

[
  {"key": "ab", "value": "Abkhazian"},
  {"key": "ace", "value": "Achinese"},
  {"key": "ach", "value": "Acoli"},
  ...
  {"key": "gbz", "value": "Zoroastrian Dari"},
  {"key": "zu", "value": "Zulu"},
  {"key": "zun", "value": "Zuni"}
]

示例:厨房水槽 - 自定义列表,在非拉丁语中带有自定义索引

Languages::keyValue(['en', 'ja', 'zh'], 'zh', 'label', 'text');

// returns

[
  {"label": "ja", "text": "日文"},
  {"label": "en", "text": "英文"},
  {"label": "zh", "text": "中文"}
]

混合区域

有时你可能需要显示一个语言列表,其中每种语言都使用自己的语言和书写系统表达,例如一个包含法语为français、日语为日本語和俄语为русский的列表。如果是这样,我们为您提供了解决方案。

通过将特殊的“混合”区域设置作为第二个参数,并将自定义数组作为第一个参数,该自定义数组中的每种语言都将按照第一个参数中给出的顺序以本地化形式呈现。

示例:查找

Languages::lookup(['en', 'fr', 'de', 'ja', 'ru', 'zh'], 'mixed');

// returns

{
  "en": "English",
  "fr": "français",
  "de": "Deutsch",
  "ja": "日本語",
  "ru": "русский",
  "zh": "中文",
}

示例:键值对

Languages::keyValue(['en', 'fr', 'de', 'ja', 'ru', 'zh'], 'mixed');

// returns

[
  {"key" => "en", "value" => "English"},
  {"key" => "fr", "value" => "français"},
  {"key" => "de", "value" => "Deutsch"},
  {"key" => "ja", "value" => "日本語"},
  {"key" => "ru", "value" => "русский"},
  {"key" => "zh", "value" => "中文"}
]

如上图所示,混合区域设置参数可用于生成查找或键值对象。$flip、$key和$value参数在相关列表类型中继续以与之前章节中所示相同的方式工作。

问题

本包是为了满足特定需求而开发的,然后被推广用于更广泛的应用。如果您有目前尚未满足的使用案例,或者发现某些功能似乎不正常,请在此GitHub 仓库中提出问题。

许可证

本包根据MIT 许可证授权。