跳到正文
cccskills
免费在 GitHub 公开

localization-setup

Generate internationalization (i18n) infrastructure for multi-language support in iOS/macOS apps. Use when localizing for multiple languages, adopting String Catalogs (xcstrings), or supporting RTL languages.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(5)

  • SKILL.md5.6 KB
  • localization-patterns.md10.3 KB
  • templates/LocalizationManager.swift5.8 KB
  • templates/LocalizedPreview.swift5.7 KB
  • templates/LocalizedStrings.swift7.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Localization Setup Generator

Generate internationalization (i18n) infrastructure for multi-language support in iOS/macOS apps.

When This Skill Activates

  • User wants to localize their app for multiple languages
  • User mentions i18n, internationalization, or localization
  • User asks about String Catalogs or .strings files
  • User wants to support RTL (right-to-left) languages

Pre-Generation Checks

Before generating, verify:

  1. Existing Localization

    # Check for existing localization files
    find . -name "*.xcstrings" -o -name "Localizable.strings" 2>/dev/null | head -5
    find . -name "*.lproj" -type d 2>/dev/null | head -5
    
  2. Deployment Target

    # String Catalogs require iOS 16+ / macOS 13+
    grep -r "IPHONEOS_DEPLOYMENT_TARGET\|MACOSX_DEPLOYMENT_TARGET" *.xcodeproj 2>/dev/null
    
  3. Project Structure

    # Find project for adding localization
    find . -name "*.xcodeproj" | head -1
    

Configuration Questions

1. Localization Approach

  • String Catalogs (Recommended, iOS 16+) - Modern, visual editor in Xcode
  • Legacy .strings - Traditional approach, all iOS versions

2. Initial Languages

  • English (en) - default
  • Which additional languages? (e.g., es, de, fr, ja, zh-Hans)

3. Features

  • Pluralization - Handle "1 item" vs "2 items"
  • Device-specific - Different strings for iPhone/iPad/Mac
  • SwiftUI Preview - Preview in different locales

Generated Files

String Catalogs (Recommended)

Resources/
└── Localizable.xcstrings    # String catalog with all translations

Supporting Code

Sources/Localization/
├── LocalizedStrings.swift   # Type-safe string access
├── LocalizationManager.swift # Runtime language switching
└── LocalizedPreview.swift   # SwiftUI preview helpers

Key Features

Type-Safe String Access

// Generated enum for type-safe access
enum L10n {
    static let appName = String(localized: "app_name")
    static let welcomeMessage = String(localized: "welcome_message")

    enum Settings {
        static let title = String(localized: "settings_title")
        static let language = String(localized: "settings_language")
    }
}

// Usage
Text(L10n.appName)
Text(L10n.Settings.title)

Pluralization

// In String Catalog, define plural rules
// key: "items_count"
// variations:
//   - zero: "No items"
//   - one: "1 item"
//   - other: "%lld items"

Text(String(localized: "items_count \(count)",
            defaultValue: "\(count) items"))

String Interpolation

// In String Catalog:
// key: "greeting"
// value: "Hello, %@!"

let name = "Alice"
Text(String(localized: "greeting \(name)"))

Runtime Language Switching

// Preview in different locale
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .environment(\.locale, Locale(identifier: "es"))
    }
}

Integration Steps

1. Add String Catalog

  1. In Xcode: File > New > File
  2. Choose "String Catalog"
  3. Name it "Localizable.xcstrings"
  4. Add to your app target

2. Add Supported Languages

  1. Select project in navigator
  2. Info tab > Localizations
  3. Click + to add languages

3. Migrate Existing Strings

If migrating from .strings files:

  1. Right-click .strings file
  2. "Migrate to String Catalog..."

4. Use in SwiftUI

// Automatic localization
Text("Hello, World!")  // Uses String Catalog automatically

// Explicit localized string
Text(String(localized: "custom_key"))

// With type-safe enum (generated)
Text(L10n.welcomeMessage)

5. Use in UIKit

label.text = String(localized: "hello_world")
// or
label.text = NSLocalizedString("hello_world", comment: "Greeting")

Best Practices

Key Naming Conventions

// Good: Descriptive, hierarchical
"settings.appearance.theme"
"onboarding.step1.title"
"error.network.connection_failed"

// Avoid: Vague or hardcoded text as key
"button1"
"Hello, World!"

Comments for Translators

String(localized: "delete_confirmation",
       comment: "Alert message asking user to confirm deletion")

Formatting

// Numbers - Use FormatStyle
Text(price, format: .currency(code: "USD"))

// Dates - Use FormatStyle
Text(date, format: .dateTime.month().day())

// Lists - Use ListFormatStyle
Text(items, format: .list(type: .and))

RTL Support

// Automatic with SwiftUI
// For manual layout adjustments:
.environment(\.layoutDirection, .rightToLeft)

Testing Localization

In Xcode

  1. Edit Scheme > Run > Options
  2. Set "App Language" to test language
  3. Set "App Region" for number/date formatting

In SwiftUI Previews

#Preview {
    ContentView()
        .environment(\.locale, Locale(identifier: "ja"))
}

Export for Translation

  1. Product > Export Localizations...
  2. Share .xliff files with translators
  3. Import translated .xliff files

References

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Run a structured accessibility audit on an iOS/macOS app — automated XCUITest audits, Accessibility Inspector, manual VoiceOver/Dynamic Type passes, and App Store Accessibility Nutrition Label evaluation. Use before release, when preparing Nutrition Label declarations, or for EU Accessibility Act compliance.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8142026年7月24日 更新

Generate accessibility infrastructure for VoiceOver, Dynamic Type, and accessibility features. Use when improving app accessibility, adding accessibility labels and hints, or auditing compliance.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8142026年7月24日 更新

Generates an Apple-compliant account deletion flow with multi-step confirmation UI, optional data export, configurable grace period, Keychain cleanup, and server-side deletion request. Use when user needs account deletion, right-to-delete, or Apple App Review compliance for account removal.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8142026年7月24日 更新

Privacy-preserving ad measurement with AdAttributionKit (SKAdNetwork's successor) — install and re-engagement attribution, conversion-value strategy under crowd anonymity, and end-to-end postback testing. Use when running paid acquisition beyond Apple Ads, measuring re-engagement campaigns, designing conversion values, or migrating from SKAdNetwork.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8142026年7月24日 更新

alarmkit

免费

AlarmKit integration for scheduling alarms and timers with custom UI, Live Activities, and snooze support. Use when implementing alarm or timer features in iOS 26+ apps.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8142026年7月24日 更新

Interpret app metrics and make data-driven decisions. Covers DAU/MAU, retention, LTV, ARPU, App Store Connect analytics, AARRR funnel analysis, cohort analysis, and diagnostic decision trees. Use when user wants to understand their metrics, diagnose problems, or build a data-driven growth plan.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8142026年7月24日 更新

查看 rshankras 的全部技能

报告此技能的问题