ios-localization

$npx mdskill add HoangNguyen0403/agent-skills-standard/ios-localization

1. **Use String Catalogs** — Adopt `.stringcatalog` files in Xcode 15+ for visual editing and compile-time missing translation checks. 2. **Prefer modern APIs** — Use `String(localized: "key")` or `LocalizedStringResource` instead of `NSLocalizedString`. 3. **Handle pluralization** — Use String Catalogs' built-in pluralization instead of custom code logic. 4. **Format with locale** — Use `Formatted` API for dates, numbers, and currencies to respect user locale. 5. **Organize assets** — Use `.xcassets` with "Provides Namespace" enabled. Prefer SF Symbols for standard icons. 6. **Complete Base localization** — Ensure `Base` complete before adding other languages.

SKILL.md

.github/skills/ios-localizationView on GitHub ↗
---
name: ios-localization
description: Implement String Catalogs, L10n workflows, and asset management for iOS. Use when adding multi-language support using iOS String Catalogs or L10n workflows.
metadata:
  triggers:
    files:
    - '**/*.stringcatalog'
    - '**/*.xcassets'
    - '**/*.strings'
    keywords:
    - LocalizedStringResource
    - NSLocalizedString
    - String(localized:)
---
# iOS Localization & Assets

## **Priority: P1**

## Implementation Workflow

1. **Use String Catalogs** — Adopt `.stringcatalog` files in Xcode 15+ for visual editing and compile-time missing translation checks.
2. **Prefer modern APIs** — Use `String(localized: "key")` or `LocalizedStringResource` instead of `NSLocalizedString`.
3. **Handle pluralization** — Use String Catalogs' built-in pluralization instead of custom code logic.
4. **Format with locale** — Use `Formatted` API for dates, numbers, and currencies to respect user locale.
5. **Organize assets** — Use `.xcassets` with "Provides Namespace" enabled. Prefer SF Symbols for standard icons.
6. **Complete Base localization** — Ensure `Base` complete before adding other languages.

See [localization and asset catalog examples](references/implementation.md)

## Anti-Patterns

- **No Manual Currency Formatting**: Use `NumberFormatter` or `.formatted(.currency)`
- **No Loose Asset Files**: Always use Asset Catalogs (`.xcassets`)
- **No Placeholder Strings**: Ensure 100% translation coverage before commit

## References

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

More from HoangNguyen0403/agent-skills-standard

SkillDescription
android-agp-upgradeUpgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.
android-architectureApply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns.
android-background-workImplement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers.
android-composeBuild high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects.
android-compose-migrationMigrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.
android-concurrencyWrite correct coroutine scopes, Flow collection, and dispatcher injection in Android. Use when writing suspend functions, choosing between StateFlow and SharedFlow, or injecting Dispatchers for testability.
android-deploymentConfigure release signing, R8 obfuscation, and App Bundle publishing for Android. Use when setting up signing configs, enabling minification, adding ProGuard keep rules, or preparing for Play Store submission.
android-design-systemEnforce Material Design 3 theming and design token usage in Jetpack Compose. Use when implementing M3 components, color schemes, typography, or design tokens.
android-diConfigure Hilt dependency injection with proper scoping, modules, and constructor injection in Android. Use when setting up Hilt DI, defining modules, or configuring component scoping.
android-edge-to-edgeMigrate a Jetpack Compose app to edge-to-edge display and fix system bar inset issues. Use when UI components are obscured by navigation/status bars, fixing IME insets, or enabling edge-to-edge for SDK 35+.