# IOS Localization

> Standards for String Catalogs, L10n, and Asset Management. Use when adding multi-language support using iOS String Catalogs or L10n workflows. (triggers: **/*.stringcatalog, **/*.xcassets, **/*.strings, LocalizedStringResource, NSLocalizedString, String(localized:))

- Skill: `comeonoliver/ios-localization` (Agent Skill)
- Install (CLI): `npx skillmds@latest add comeonoliver/ios-localization`
- Raw SKILL.md: https://api.skillmd.com/api/skills/comeonoliver/ios-localization/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ComeOnOliver (https://skillmd.com/u/comeonoliver)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/comeonoliver/ios-localization

---


# iOS Localization & Assets Standards

## **Priority: P1**

## Implementation Guidelines

### Localization (L10n)

- **String Catalogs (.stringcatalog)**: Use for primary localization in Xcode 15+. It provides a visual editor and compile-time checks for missing translations.
- **Native Implementation**: Use `String(localized: "key")` or `LocalizedStringResource`. Avoid manual `NSLocalizedString` where possible.
- **Pluralization**: Use String Catalogs' built-in pluralization support instead of complex code logic.
- **Formatting**: Use `Formatted` API for dates, numbers, and currencies to respect the user's locale.

### Asset Management

- **Asset Catalogs (.xcassets)**: Keep assets organized. Use folders with "Provides Namespace" enabled for large projects.
- **SF Symbols**: Use for standard icons to ensure consistency and accessibility.
- **Vector Assets**: Use PDF or SVG and enable "Preserve Vector Data" for resolution independence.

### Best Practices

- **Hardcoded Strings**: Never use hardcoded strings in UI. Every user-facing string must be localized.
- **Base Bundle**: Ensure `Base` localization is complete before adding other languages.

## Anti-Patterns

- **No manual currency symbol concat**: Use NumberFormatter or .formatted(.currency).
- **No loose png/jpg files in repo**: Always use Asset Catalogs.
- **No placeholder strings**: Ensure 100% coverage in String Catalogs.

## References

- [L10n & Asset Organization](references/implementation.md)


