ALanguageParser 1.0.0

ALanguageParser 1.0.0

Mattia Campolese 维护。



ALanguageParser

CircleCI codecov Codacy Badge Cocoapods platforms Size FOSSA Status License

轻量级 HTTP RFC-2616 Accept-Language 解析器,用 Swift 编写。

ALanguageParser 是从 OpenTable 的 npm 包 accept-language-parser 转移过来并由 Swift 编写的。它解析来自 HTTP 请求的 accept-language 报头,并按质量排序产出语言对象数组。

它被设计成与 Swift 服务器端一同使用(例如:Vapor、Kitura、Perfect),但它也可以在任何客户端项目中使用。

如何使用

解析

返回接受的按顺序排列的语言列表

import ALanguageParser

let languages = ALanguageParser.parse("it-IT,zh-Hant-HK;q=0.5")

结果将是

[
    AcceptedLanguage(code: "it",
                     quality: 1.0,
                     region: "IT",
                     script: nil),

    AcceptedLanguage(code: "zh",
                     quality: 0.5,
                     region: "HK",
                     script: "Hant")
]

输出始终按质量顺序从高到低排序。根据HTTP规范,省略质量值表示1.0

选择

从给定的接受语言字符串中提取第一个选定的语言,或者如果不存在,则返回 nil

let language = ALanguageParser.pick(["fr-CA", "fr-FR", "fr"],
                                    acceptLanguage: "en-GB,en-US;q=0.9,fr-CA;q=0.7,en;q=0.8")

输出将是

"fr-CA"

可以通过带有允许部分匹配语言的 loose 参数来调用此函数。例如

let language = ALanguageParser.pick(["fr-CA", "fr-FR", "fr"],
                                    acceptLanguage: "en-GB,en-US;q=0.9,fr-CA;q=0.7,en;q=0.8",
                                    loose: true)

输出将是

"fr"

在宽松模式下,supportedLanguages 的顺序很重要,因为返回的是第一个部分匹配的语言。这意味着如果你想首先选择更特定的语言,你应该将其列在列表的第一位,例如:["fr-CA", "fr"]

安装

Swift包管理器

该库正在使用Swift 5.2开发中,可以通过在Package.swift文件中的依赖数组中添加以下条目进行集成

.package(url: "https://github.com/matsoftware/accept-language-parser.git", from: "1.0.0")

然后在您的目标中,请添加ALanguageParser依赖项

.product(name: "ALanguageParser", package: "ALanguageParser")

注意:目前存在一个关于Swift工具版本至5.2的问题。请暂时在您的Package.json中使用5.1版本。

CocoaPods

将Pod ALanguageParser 添加到您的Podfile中

pod 'ALanguageParser'

运行 pod install,然后打开您的 workspace 来启动 Xcode。

贡献

请在GitHub上提出问题或fork仓库以进行更改。

在提出任何PR之前,请确保在Linux平台上的测试通过。

在Linux上使用Docker运行测试

您可以使用Docker下载Swift镜像,并在您的MacOS/Windows机器上执行测试。

一旦Docker及其CLI安装完毕,您可以通过运行以下命令从Docker Hub获取镜像:

docker pull swift

镜像下载完毕后,从您分支仓库的根目录中,您可以通过开启特权模式启动容器并使用绑定挂载,以便Docker访问您的文件夹。

docker run -it --privileged --mount type=bind,source=$(pwd),target=/app swift /bin/bash

最后,您可以运行测试

root@c4706264baa1:/app$ swift test

许可

FOSSA Status

作者

Mattia Campolese 创建。

Twitter Follow

请也查看 Swift 代码指标,Swift 项目的代码指标分析器。