Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aparokshaui/localized
Easy-to-use, safe and cross-platform library for localizing Swift code
https://github.com/aparokshaui/localized
linux localization macos swift windows yaml yml
Last synced: about 1 month ago
JSON representation
Easy-to-use, safe and cross-platform library for localizing Swift code
- Host: GitHub
- URL: https://github.com/aparokshaui/localized
- Owner: AparokshaUI
- License: mit
- Created: 2024-02-29T16:57:04.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2024-05-18T15:10:57.000Z (6 months ago)
- Last Synced: 2024-10-13T22:41:15.470Z (about 1 month ago)
- Topics: linux, localization, macos, swift, windows, yaml, yml
- Language: Swift
- Homepage:
- Size: 255 KB
- Stars: 13
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
Localized
_Localized_ provides a Swift package plugin for localizing cross-platform Swift code.
Use YML syntax for defining available phrases:
```yml
hello(name):
en: Hello, (name)!
de: Hallo, (name)!
fr: Salut, (name)!house:
en: House
de: Haus
fr: Maisonhouses(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:
```swift
// 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][4]
- [Usage][5]
- [Thanks][6]## 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:
```swift
.package(url: "https://github.com/AparokshaUI/Localized", from: "0.1.0")
```## Usage
### Definition
Define the available phrases in a file called `Localized.yml`.
```yml
default: enexport:
en: Export Document
de: Exportiere das Dokumentsend(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.```swift
.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.```swift
let export = Loc.export
let send = Loc.send(message: "Hello", name: "Peter")
```You can access a specific language as well.
```swift
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.```swift
let export = Localized.export.string(for: "de-CH")
```## Thanks
### Dependencies
- [Yams](https://github.com/jpsim/Yams) licensed under the [MIT license](https://github.com/jpsim/Yams/blob/main/LICENSE)### Other Thanks
- The [contributors][7]
- [SwiftLint][8] for checking whether code style conventions are violated
- The programming language [Swift][9]
- [SourceDocs][10] used for generating the [docs][11][1]: Tests/
[2]: #goals
[3]: #widgets
[4]: #installation
[5]: #usage
[6]: #thanks
[7]: Contributors.md
[8]: https://github.com/realm/SwiftLint
[9]: https://github.com/apple/swift
[10]: https://github.com/SourceDocs/SourceDocs
[11]: Documentation/README.md