Loco is an extremly fast CLI linter for Localization.strings and swift files.
-
Semicolons
-
Untranslated strings in your swift files
-
Empty values
-
Duplicate keys
-
Unused keys
-
Missing keys in one or more languages
-
Missing a translation file for a whole language
-
Works with swiftgen generated localizations.
- Doesnt lint empty strings inside normally checked objects.
- It doesnt check commented out strings that normally would be checked (Single line comments.)
- Loco will output its result in a compiler error log format so it can easily be integrated in third party apps (like Xcode, Emacs, Vim)
- Loco builds two separate sets of data for each source file, one is for known localization pattern, such as NSLocalizedString, etc. The other one is for all the strings. Loco will then check if any of those are in a .strings file for silent warnings about unused translation keys. But it wont discover if a such key is untranslated.
- Does not lint Localization.dict
- Does not lint Storyboards
- Will have false positive / true negatives
- Needs a bit code clean up. (imperative coding mixed with tons of functional. Sorry purists)
- Only some unit tests (more will come)
Compile the project using terminal (or Xcode)
swift build -c release
swift build
Copy the loco binary from either .build/release or .build/debug to
/usr/local/bin
In build phases. Add run script (+)
if which loco > /dev/null; then
loco
else
echo "warning: Loco is not installed. Compile from https://github.com/konrad1977/loco"
fi
Make sure you run loco before compile sources to get info where you are missing a semicolon
Just run loco from your project root.
$ loco
Lint individual swift files (check for missing translations only)
$ loco -f "/myProject/Sources/Subfolder/somefile.swift"
Enable colored output
$ loco --color