SwiftLocalize
描述
用于您项目原生Swift本地化的库。
示例
import Foundation
import SwiftLocalize
public enum Strings {
public static let ok = Word("Ok", [.ru: "Да"]).localized
public static let never = Word("Never", [.ru: "Никогда"]).localized
public static let later = Word("Later", [.ru: "Позже"]).localized
public static let error = Word("Error", [.ru: "Ошибка"]).localized
public static let coins = Word(
"coins", [
.ru: [
.cases(NumberCase.accusative): "монеты",
.cases(NumberCase.singular): "монета",
.cases(NumberCase.genitive): "монет"
]
])
//Strings.coins.string(.cases(NumberCase(for: someInt)))
public static let errors: Word.Dictionary = [
"unknown": [.ru: "Неизвестная ошибка", .en: "Unknown error"],
"server": [.ru: "Ошибка сервера", .en: "Server error"]
]
}
用法
要获取本地化字符串,创建一个Word
对象
let word = Word(string, formsDictionary)
其中string: String
- 默认值,formsDictionary: [Language: Word.Forms]
- 形式的字典
要获取当前语言的字符串,使用word.localized
,要获取自定义语言或形式的字符串,则调用
word.string(language, form)
其中language: Language
- 语言,默认值为Language.current,form: FormType
- 单词形式 (OptionSet
)
支持的形式:无,单数,复数,阳性,阴性,中性,通性和它们的任何组合。
您可以通过LanguageCaseProtocol
创建自己的形式类型(例如,用于语言环境),然后使用它
let formType = Word.FormType.cases(customFormEnum)
该仓库包含一个自定义的LanguageCaseProtocol
类型 NumberCase
,作为俄罗斯语言使用的示例。
具有多个形式的单词示例
let manWord = Word("man", [
.ru: [.singular: "человек", .plural: "люди"],
.en: [
[.singular, .masculine]: "man",
[.plural, .masculine]: "men",
[.singular, .feminine]: "woman",
[.plural, .feminine]: "women"
],
.ja: "人"
])
您可以将单词组合起来以获得短语
let tree = Word("tree", [
.ru: [
[.neuter, .singular]: "дерево",
.plural: "деревья"
]
])
let beautiful = Word("beautiful", [
.ru: [
.plural: "красивые",
.singular: [.masculine: "красивый", .feminine: "красивая", .neuter: "красивое"]
]
])
let phrase = beautiful + " " + tree
print(phrase.string(language: .ru, .plural))
//prints "красивые деревья"
print(phrase.string(language: .ru, .singular))
//prints "красивое дерево"
安装
将以下行添加到您的Podfile中
pod 'SwiftLocalize'
然后首先从Podfile目录运行pod update
。
创建一个Package.swift
文件。
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "SomeProject",
dependencies: [
.package(url: "https://github.com/dankinsoid/SwiftLocalize.git", from: "1.9.0")
],
targets: [
.target(name: "SomeProject", dependencies: ["SwiftLocalize"])
]
)
$ swift build
作者
Voidilov, [email protected]
许可协议
SwiftLocalize 根据 MIT 许可协议提供。有关更多信息,请参阅 LICENSE 文件。