Easy-to-use, safe and cross-platform library for localizing Swift code https://localized.aparoksha.dev/documentation/localized/
Go to file
david-swift be50761963
All checks were successful
Deploy Docs / publish (push) Successful in 17s
SwiftLint / SwiftLint (push) Successful in 4s
Remove yml variable
2024-11-16 22:37:07 +01:00
.gitea Migrate to the Aparoksha Gitea instance 2024-10-07 14:58:15 +02:00
Icons Initial commit 2024-02-29 18:01:03 +01:00
Plugins/GenerateLocalized Migrate to the Aparoksha Gitea instance 2024-10-07 14:58:15 +02:00
Sources Remove yml variable 2024-11-16 22:37:07 +01:00
Tests/PluginTests Fix Italian translation 2024-04-17 20:40:08 +02:00
.gitignore Initial commit 2024-02-29 18:01:03 +01:00
.swiftlint.yml Migrate to the Aparoksha Gitea instance 2024-10-07 14:58:15 +02:00
LICENSE.md Initial commit 2024-02-29 18:01:03 +01:00
Package.swift Migrate to the Aparoksha Gitea instance 2024-10-07 14:58:15 +02:00
README.md Migrate to the Aparoksha Gitea instance 2024-10-07 14:58:15 +02:00

Localized Icon

Localized

Docs · Code

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

  1. Open your Swift package in GNOME Builder, Xcode, or any other IDE.
  2. Open the Package.swift file.
  3. Into the Package initializer, under dependencies, paste:
.package(url: "https://git.aparoksha.dev/aparoksha/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

Other Thanks

  • DocC used for the documentation
  • SwiftLint for checking whether code style conventions are violated
  • The programming language Swift