Skip to content

v0.8.7-alpha

Choose a tag to compare

@cremenescu cremenescu released this 10 Aug 14:25
· 17 commits to main since this release
8da6871

A release for translators, prompted by an offer to add Turkish in #9.

Adding a language is now one folder

It used to mean editing four places, three of them code: a case in an enum, a display name, an array the automatic setting reads, and a list in the project file. Someone willing to hand over words needed Xcode, xcodegen and Swift to do it.

The app now discovers its languages from the .lproj folders in its own bundle. Copy App/Resources/en.lproj/Localizable.strings to App/Resources/<code>.lproj/, translate the values, open a pull request — that is the whole procedure.

Languages are listed under their own names, taken from the system rather than written by hand: English, Français, Polski, Română.

A translation no longer has to be complete

A key the chosen language does not carry falls back to English. Before, it fell back to the key itself, so a partial translation showed raw identifiers like Settings.MasterPasswordNote in the middle of the interface — which meant all 224 strings had to be done before any of them could ship.

Forty translated strings are now forty translated strings, and the rest simply stays as it was.

Fixed: the automatic language setting only ever considered two

"System default" tested for Romanian and fell back to English. A Mac set to Polish got English, with the Polish translation sitting in the bundle next to it. It now follows the system language whenever the app carries it.

Also

CONTRIBUTING.md describes the translation procedure, including the two things that genuinely break a build: format specifiers (%@, %1$d) must survive translation intact, and the macro names in the external-tools strings (%Host%, %Username% and the rest) are tokens the app substitutes, not words.