Use when localizing apps, using String Catalogs, generating type-safe symbols (Xcode 26+), handling plurals, RTL layouts, locale-aware formatting, or migrating from .strings files - comprehensive i18n patterns for Xcode 15-26
View on GitHubSelect agents to install to:
npx add-skill https://github.com/CharlesWiltgen/Axiom/blob/main/.claude-plugin/plugins/axiom/skills/axiom-localization/SKILL.md -a claude-code --skill axiom-localizationInstallation paths:
.claude/skills/axiom-localization/# Localization & Internationalization Comprehensive guide to app localization using String Catalogs. Apple Design Award Inclusivity winners always support multiple languages with excellent RTL (Right-to-Left) support. ## Overview String Catalogs (`.xcstrings`) are Xcode 15's unified format for managing app localization. They replace legacy `.strings` and `.stringsdict` files with a single JSON-based format that's easier to maintain, diff, and integrate with translation workflows. This skill covers String Catalogs, SwiftUI/UIKit localization APIs, plural handling, RTL support, locale-aware formatting, and migration strategies from legacy formats. ## When to Use This Skill - Setting up String Catalogs in Xcode 15+ - Localizing SwiftUI and UIKit apps - Handling plural forms correctly (critical for many languages) - Supporting RTL languages (Arabic, Hebrew) - Formatting dates, numbers, and currencies by locale - Migrating from legacy `.strings`/`.stringsdict` files - Preparing App Shortcuts and App Intents for localization - Debugging missing translations or incorrect plural forms ## System Requirements - **Xcode 15+** for String Catalogs (`.xcstrings`) - **Xcode 26+** for automatic symbol generation, `#bundle` macro, and AI-powered comment generation - **iOS 15+** for `LocalizedStringResource` - **iOS 16+** for App Shortcuts localization - Earlier iOS versions use legacy `.strings` files --- ## Part 1: String Catalogs (WWDC 2023/10155) ### Creating a String Catalog **Method 1: Xcode Navigator** 1. File → New → File 2. Choose "String Catalog" 3. Name it (e.g., `Localizable.xcstrings`) 4. Add to target **Method 2: Automatic Extraction** Xcode 15 can automatically extract strings from: - SwiftUI views (string literals in `Text`, `Label`, `Button`) - Swift code (`String(localized:)`) - Objective-C (`NSLocalizedString`) - C (`CFCopyLocalizedString`) - Interface Builder files (`.storyboard`, `.xib`) - Info.plist values - App Shortcuts phrases **Build Settings