macOS localisation
Read references/localization-checklist.md when adding user-visible text, dates, numbers, units, names, search, layout direction, screenshots, or release-facing copy.
The starter currently has no String Catalog and uses inline English strings. Introduce a catalog deliberately when the derived product adopts localisation; do not claim generated string symbols are enabled unless package/resource configuration proves it.
Workflow
- Inventory user-facing strings, including errors, accessibility labels, menus, commands, tooltips, empty states, and permission explanations.
- Add stable catalog keys and translator context if the product has adopted a String Catalog.
- Keep interpolation and plural variants in one localisable unit; do not concatenate translated fragments.
- Use
FormatStyle for dates, numbers, currency, measurements, and person names.
- Test long translations, right-to-left layout, non-Latin input, locale-specific calendars/numbers, and macOS text scaling.
- Keep logs, identifiers, protocol payloads, file formats, and developer diagnostics separate from localised UI.
Guardrails
- Do not assemble user-facing text with
+.
- Do not hand-code singular/plural branches when catalog variation applies.
- Do not use
String(format:) for display formatting.
- Do not impose fixed widths because the English text fits.
- Use
localizedStandardContains for ordinary local user search unless domain semantics require exact matching.
- Do not localise stable data keys, URLs, notification names, or analytics identifiers.
Output
List catalog keys and locales affected, formatting APIs, windows/states reviewed, and strings deliberately left unlocalised with reasons. State whether a catalog and generated accessors actually exist.
1---2name: apple-localization3description: Add or review macOS user-facing strings, String Catalogs, plurals, formatting, bidirectional layout, locale-sensitive search, and localisation tests.4license: MIT5---67# macOS localisation89Read `references/localization-checklist.md` when adding user-visible text, dates, numbers, units, names, search, layout direction, screenshots, or release-facing copy.1011The starter currently has no String Catalog and uses inline English strings. Introduce a catalog deliberately when the derived product adopts localisation; do not claim generated string symbols are enabled unless package/resource configuration proves it.1213## Workflow14151. Inventory user-facing strings, including errors, accessibility labels, menus, commands, tooltips, empty states, and permission explanations.162. Add stable catalog keys and translator context if the product has adopted a String Catalog.173. Keep interpolation and plural variants in one localisable unit; do not concatenate translated fragments.184. Use `FormatStyle` for dates, numbers, currency, measurements, and person names.195. Test long translations, right-to-left layout, non-Latin input, locale-specific calendars/numbers, and macOS text scaling.206. Keep logs, identifiers, protocol payloads, file formats, and developer diagnostics separate from localised UI.2122## Guardrails2324- Do not assemble user-facing text with `+`.25- Do not hand-code singular/plural branches when catalog variation applies.26- Do not use `String(format:)` for display formatting.27- Do not impose fixed widths because the English text fits.28- Use `localizedStandardContains` for ordinary local user search unless domain semantics require exact matching.29- Do not localise stable data keys, URLs, notification names, or analytics identifiers.3031## Output3233List catalog keys and locales affected, formatting APIs, windows/states reviewed, and strings deliberately left unlocalised with reasons. State whether a catalog and generated accessors actually exist.