Stringly generates type safe localization files from a source yaml,json, or toml file. At the moment only outputs for Apple platforms are supported, but a generator for Android’s R.strings is easy to add
✅ Multi-language support
✅ Named placeholders
✅ Plural support
✅ Compile safe Swift accessors
Usage
See help
stringly help
To generate all files in all languages
stringly generate Strings.yml
To generate a single file in a certain langage
stringly generate-file Strings.yml Strings.strings --language de
And then import wherever needed: import StringlyKit
Example
Given a source Strings.yml:
auth: # grouping of strings
loginButton: Log In # If you don't specify a language it defaults to a base language
emailTitle:
en: Email # specifying a language
passwordTitle:
en: Password
de: Passwort # multiple languages
error: # infinitely nested groups
wrongEmailPassword: Incorrect email/password combination
home:
title: Hello {name} # this is a placeholder. Without a type defaults to %@ on apple platforms
postCount: "Total posts: {postCount:d}" # the placeholder now has a type %d
day: "Day: {}" # an unnamed placeholder
escaped: Text with escaped \{braces} # escape braces in text by using \{
articles: # this is a pluralized string
en: You have {articleCount:d} # placeholder will be replaced with pluralization
en.articleCount: # supports pluralizing multiple placeholders in a single string
none: no articles
one: one article
other: {articleCount:d} articles
This generates .swift, .strings, and .stringsdict files for multiple languages.
Stringly
Stringly generates type safe localization files from a source
yaml
,json
, ortoml
file. At the moment only outputs for Apple platforms are supported, but a generator for Android’s R.strings is easy to addUsage
See help
To generate all files in all languages
To generate a single file in a certain langage
Installing
Make sure Xcode 13 is installed first.
Mint
Swift Package Manager
Use as CLI
Use as dependency
Add the following to your Package.swift file’s dependencies:
And then import wherever needed:
import StringlyKit
Example
Given a source
Strings.yml
:This generates
.swift
,.strings
, and.stringsdict
files for multiple languages.The Swift file then allows usage like this:
Future Directions
R.string
file or translation specific files