README.md
October 17, 2024 · View on GitHub
Important
This project has moved. You can find it here.
The decision is based on this article.
Thanks to No GitHub for the badge used below.
Localized
Localized provides a Swift package plugin for localizing cross-platform Swift code.
Use YML syntax for defining available phrases:
hello(name):
en: Hello, (name)!
de: Hallo, (name)!
fr: Salut, (name)!
house:
en: House
de: Haus
fr: Maison
houses(count):
en(count == "1"): There is one house.
en: There are (count) houses.
de(count == "1"): Es gibt ein Haus.
de: Es gibt (count) Häuser.
Then, access the localized strings safely in your code:
// Use the system language
print(Loc.hello(name: "Peter"))
print(Loc.house)
print(Loc.houses(count: 1))
// Access the translation for a specific language
print(Localized.hello(name: "Peter").en)
print(Localized.house.fr)
Table of Contents
Installation
- Open your Swift package in GNOME Builder, Xcode, or any other IDE.
- Open the
Package.swiftfile. - Into the
Packageinitializer, underdependencies, paste:
.package(url: "https://github.com/AparokshaUI/Localized", from: "0.1.0")
Usage
Definition
Define the available phrases in a file called Localized.yml.
default: en
export:
en: Export Document
de: Exportiere das Dokument
send(message, name):
en(name == ""): Send (message).
en: Send (message) to (name).
de: Sende (message) to (name).
As you can see, you can add parameters using brackets after the key, and conditions using brackets after the language (e.g. for pluralization).
The line default: en sets English as the fallback language.
Then, add the Localized dependency, the plugin and the Localized.yml resource
to the target in the Package.swift file.
.executableTarget(
name: "PluginTests",
dependencies: ["Localized"],
resources: [.process("Localized.yml")],
plugins: ["GenerateLocalized"]
)
Usage
In most cases, you want to get the translated string in the system language. This can be accomplished using the following syntax.
let export = Loc.export
let send = Loc.send(message: "Hello", name: "Peter")
You can access a specific language as well.
let export = Localized.export.en
let send = Localized.send(message: "Hallo", name: "Peter").de
If you want to get the translation for a specific language code, use the following syntax. This function will return the translation for the default language if there's no translation for the prefix of that code available.
let export = Localized.export.string(for: "de-CH")
Thanks
Dependencies
- Yams licensed under the MIT license
Other Thanks
- The contributors
- SwiftLint for checking whether code style conventions are violated
- The programming language Swift
- SourceDocs used for generating the docs