Swift toolkit for managing app localization & internationalization.
Whether managing string translations as a sole developer on a single project, or as a team across multiple projects, TranslationCatalog has tools for you:
- Lightweight definitions for cataloging multiple languages translations
- Multiple storage options
- Command line utilities.
The TranslationCatalog target includes entity definitions as well as a catalog that can persist and retrieve translations. The primary types are:
Project: A grouping of expressions.Expression: Core type which identifies a collection of translations for a unique key.Translation: The translated value of an expression for a specific Locale.
TranslationCatalog has multiple default storage classes which all implement the Catalog protocol.
| Class | Medium | Notes |
|---|---|---|
CoreDataCatalog |
CoreData (In-Memory / SQLite) | Great for Apple platforms & when persistence is not needed |
FilesystemCatalog |
Directories & JSON Files | Optimized for a team who is using a Git Repository as a store |
SQLiteCatalog |
SQLite Database | Lightweight, Fast & Cross-Platform all in a single file |
A swift command line that can interact with a catalog along with importing, exporting, and documenting localizations.
localizer makes it easy to generate Localization files for different platforms. A great workflow option is to use the FilesystemCatalog with a
Github repo, and use Github Actions to generate updated localization files when changes are merged.
File types that are currently supported:
- Android
strings.xml - Apple
Localizable.strings - Web (Key/Value)
.json
Contributions to TranslationCatalog are welcomed and encouraged!