SIGN IN SIGN UP

feat(i18n): localize the interface in English and pt-BR (v1.4.0)

Every UI string moves to String(localized:) and lives in Localizable.xcstrings
(32 keys, English as the source), with InfoPlist.xcstrings covering the About
panel copyright. All keys are translated.

XcodeGen does not infer a build phase for .xcstrings, so project.yml excludes
them from the sources path and adds each catalog with buildPhase: resources.
Without that the catalog never becomes a .lproj in the bundle and the app ships
English-only without a build error. SWIFT_EMIT_LOC_STRINGS and
LOCALIZATION_PREFERS_STRING_CATALOGS are set so the compiler emits the strings
the catalog is checked against.

CLAUDE.md records the traps: the key is the English text including the format
specifiers interpolation generates, a key that does not match falls back to raw
English with no build error, plurals belong in the catalog rather than a ternary,
and en.lproj ships without Localizable.strings on purpose.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
J
junior-rj committed
2ef7e270aede2a699ffa4eec7ea4b6868ef14c53
Parent: deeea43