localization

goodevibes's avatarfrom goodevibes

Use when implementing internationalization (i18n), String Catalogs, pluralization, or right-to-left layout support. Covers modern localization workflows with Xcode String Catalogs and LocalizedStringKey patterns.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 9, 2026⬇️1downloads

When & Why to Use This Skill

This Claude skill provides a comprehensive framework for modern iOS localization using Xcode String Catalogs (.xcstrings). It streamlines internationalization (i18n) workflows, handles complex pluralization, and ensures seamless Right-to-Left (RTL) support, enabling developers to create globally-optimized SwiftUI and UIKit applications with best-in-class localization practices.

Use Cases

  • Implementing centralized translation management using Xcode 15+ String Catalogs to replace legacy .strings files.
  • Handling sophisticated pluralization rules and migrating existing .stringsdict files to the modern .xcstrings format.
  • Optimizing app layouts for Right-to-Left (RTL) languages like Arabic and Hebrew to ensure semantic UI integrity.
  • Applying locale-aware formatting for dates, currencies, and numbers to meet regional standards and user expectations.
  • Automating string extraction and using pseudo-localization to identify UI overflow issues and eliminate hardcoded text.
namelocalization
descriptionUse when implementing internationalization (i18n), String Catalogs, pluralization, or right-to-left layout support. Covers modern localization workflows with Xcode String Catalogs and LocalizedStringKey patterns.

Localization

Modern iOS localization using String Catalogs (.xcstrings) for managing translations, plural forms, and locale-aware content. Supports SwiftUI's LocalizedStringKey and String(localized:) APIs.

Quick Reference

Reference Load When
String Catalogs Setting up or using Xcode 15+ String Catalogs
Pluralization Handling plural forms, stringsdict migration
Formatting Date, number, currency locale-aware formatting
RTL Support Right-to-left layouts, semantic directions

Core Workflow

  1. Create String Catalog in Xcode (File > New > String Catalog)
  2. Mark strings with String(localized:comment:) or use SwiftUI's automatic extraction
  3. Add plural variants in String Catalog editor where needed
  4. Test with pseudo-localization (Scheme > Run > Options > App Language)
  5. Export for translation (File > Export Localizations)

Key Patterns

// SwiftUI - automatic localization
Text("Welcome")
Button("Continue") { }

// Explicit localization with context
let title = String(localized: "Settings", comment: "Navigation title")

// Deferred localization for custom views
struct CardView: View {
    let title: LocalizedStringResource
    var body: some View { Text(title) }
}

Build Settings

  • Use Compiler to Extract Swift Strings: Yes
  • Localization Prefers String Catalogs: Yes

Common Mistakes

  1. Forgetting String Catalog in Build Phases — Adding String Catalog but forgetting to check "Localize" in File Inspector means it's not embedded. Always verify in Build Phases > Copy Bundle Resources.

  2. Pseudo-localization not tested — Not running your app with pseudo-localization (German/Chinese pseudo-locale) means you miss text overflow and RTL issues. Always test with pseudo-localization before translation.

  3. Hardcoded strings anywhere — Even one hardcoded string outside the String Catalog breaks extraction and automation. Use String(localized:) everywhere or use LocalizedStringResource for deferred localization.

  4. Context loss in translations — Providing no comment for translators means they guess context and get it wrong. Add comments explaining where the string appears and what it means.

  5. RTL layouts not tested — Assuming LTR layout works for RTL languages (Arabic, Hebrew) fails miserably. Test with system language set to Arabic and verify semantic directions are used.