2024-02-29 18:01:03 +01:00
2024-03-02 15:11:13 +01:00
2024-02-29 18:01:03 +01:00
2024-03-02 15:11:13 +01:00
2024-03-02 15:11:13 +01:00
2024-02-29 18:01:03 +01:00
2024-02-29 18:01:03 +01:00
2024-02-29 18:01:03 +01:00
2024-02-29 18:01:03 +01:00
2024-02-29 18:01:03 +01:00
2024-03-02 15:11:13 +01:00
2024-03-02 15:11:13 +01:00
2024-03-02 15:11:13 +01:00

Localized Icon

Localized

GitHub · Contributor Docs

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

Then, access the localized strings safely in your code:

// Use the system language
print(Loc.hello(name: "Peter"))
print(Loc.house)

// 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://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: Send (message) to (name).
    de: Sende (message) to (name).

As you can see, you can add parameters using brackets after the key.

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"]
)
Use the Swift macro alternatively

If you don't want to have a separate Localized.yml resource, you can use the YML syntax directly in your Swift code using a Swift macro. Leave out the resources and plugins lines in the target definition, and instead of creating a Localized.yml file, use the following macro in a Swift file.

#localized(default: "en", yml: """
export:
    en: Export Document
    de: Exportiere das Dokument

send(message, name):
    en: Send (message) to (name).
    de: Sende (message) to (name).
""")

You cannot have a defaultLanguage set in the YML, instead, use the macro parameter.

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

Description
Easy-to-use, safe and cross-platform library for localizing Swift code
https://localized.aparoksha.dev/documentation/localized/
Readme 299 KiB
2024-10-17 19:53:23 +02:00
Languages
Cython 89.2%
Swift 10.8%