asc subscription localization
Bulk-localize subscription and in-app purchase display names across all App Store locales using asc. Use when you want to fill in subscription/IAP names for every language without clicking through App Store Connect manually.
MCP get_skill({ skillId: "asc-subscription-localization-05e13e99" })Use this skill with your agent
Create a free account and connect via MCP
# asc subscription localization Use this skill to bulk-create or bulk-update display names (and descriptions) for subscriptions, subscription groups, and in-app purchases across all App Store Connect locales. This eliminates the tedious manual process of clicking through each language in App Store Connect to set the same display name. ## Preconditions - Auth configured (`asc auth login` or `ASC_*` env vars). - Know your app ID (`ASC_APP_ID` or `--app`). - Subscription groups and subscriptions already exist. ## Supported App Store Locales These are the locales supported by App Store Connect for subscription and IAP localizations: ``` ar-SA, ca, cs, da, de-DE, el, en-AU, en-CA, en-GB, en-US, es-ES, es-MX, fi, fr-CA, fr-FR, he, hi, hr, hu, id, it, ja, ko, ms, nl-NL, no, pl, pt-BR, pt-PT, ro, ru, sk, sv, th, tr, uk, vi, zh-Hans, zh-Hant ``` ## Workflow: Bulk-Localize a Subscription ### 1. Resolve IDs ```bash # Find subscription groups asc subscriptions groups list --app "APP_ID" --output table # Find subscriptions within a group asc subscriptions list --group-id "GROUP_ID" --output table ``` ### 2. Check existing localizations ```bash asc subscriptions localizations list --subscription-id "SUB_ID" --paginate --output table ``` This shows which locales already have a name set. Only create localizations for missing locales. ### 3. Create localizations for all missing locales For each locale that does not already have a localization, run: ```bash asc subscriptions localizations create \ --subscription-id "SUB_ID" \ --locale "LOCALE" \ --name "Display Name" ``` For example, to set "Monthly Pro" across all locales: ```bash # One command per locale (skip any that already exist) asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ar-SA" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ca" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "cs" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "da" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "de-DE" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "el" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "en-AU" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "en-CA" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "en-GB" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "es-ES" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "es-MX" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "fi" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "fr-CA" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "fr-FR" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "he" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "hi" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "hr" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "hu" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "id" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "it" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ja" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ko" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ms" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "nl-NL" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "no" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "pl" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "pt-BR" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "pt-PT" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ro" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "ru" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "sk" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "sv" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "th" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "tr" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "uk" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "vi" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "zh-Hans" --name "Monthly Pro" asc subscriptions localizations create --subscription-id "SUB_ID" --locale "zh-Hant" --name "Monthly Pro" ``` ### 4. Verify ```bash asc subscriptions localizations list --subscription-id "SUB_ID" --paginate --output table ``` ## Workflow: Bulk-Localize a Subscription Group Subscription groups also have their own display name per locale (this is the "group name" shown to users in the subscription management sheet). ### 1. Check existing group localizations ```bash asc subscriptions groups localizations list --group-id "GROUP_ID" --paginate --output table ``` ### 2. Create for missing locales ```bash asc subscriptions groups localizations create \ --group-id "GROUP_ID" \ --locale "LOCALE" \ --name "Group Display Name" ``` Optional: set a custom app name for the group: ```bash asc subscriptions groups localizations create \ --group-id "GROUP_ID" \ --locale "LOCALE" \ --name "Group Display Name" \ --custom-app-name "My App" ``` ### 3. Verify ```bash asc subscriptions groups localizations list --group-id "GROUP_ID" --paginate --output table ``` ## Workflow: Bulk-Localize an In-App Purchase IAPs have their own localization commands with the same pattern. ### 1. Resolve IAP ID ```bash asc iap list --app "APP_ID" --output table ``` ### 2. Check existing localizations ```bash asc iap localizations list --iap-id "IAP_ID" --paginate --output table ``` ### 3. Create for missing locales ```bash asc iap localizations create \ --iap-id "IAP_ID" \ --locale "LOCALE" \ --name "Display Name" ``` Optional description: ```bash asc iap localizations create \ --iap-id "IAP_ID" \ --locale "LOCALE" \ --name "Unlock All Features" \ --description "One-time purchase to unlock all premium features" ``` ### 4. Verify ```bash asc iap localizations list --iap-id "IAP_ID" --paginate --output table ``` ## Updating Existing Localizations To change the display name for existing localizations: ### Subscriptions ```bash asc subscriptions localizations update --id "LOC_ID" --name "New Name" ``` ### Subscription Groups ```bash asc subscriptions groups localizations update --id "LOC_ID" --name "New Group Name" ``` ### In-App Purchases ```bash asc iap localizations update --localization-id "LOC_ID" --name "New Name" ``` To bulk-update, list existing localizations first, extract the IDs, then update each one. ## Bulk-Localize All Subscriptions in an App For a full app with multiple subscription groups and subscriptions: ```bash # 1. List all groups asc subscriptions groups list --app "APP_ID" --paginate # 2. For each group, localize the group itself # (repeat group localization workflow above) # 3. For each group, list subscriptions asc subscriptions list --group-id "GROUP_ID" --paginate # 4. For each subscription, localize it # (repeat subscription localization workflow above) ``` ## Agent Behavior - Always list existing localizations first to avoid duplicate creation errors. - Skip locales that already have a localization; only create missing ones. - When the user provides a single display name, use it for all locales (same name everywhere). - When the user provides translated names per locale, use the locale-specific name for each. - If a description is provided, pass `--description` on create. Otherwise omit it. - Use `--output table` for verification steps so the user can visually confirm. - Use default JSON output for intermediate automation steps. - After bulk creation, always run the list command to verify completeness. - For apps with many subscriptions, process them sequentially per group to keep output readable. - If a create call fails for a locale, log the locale and error, then continue with the remaining locales. After the batch completes, report all failures together so the user can address them. ## Notes - Subscription display names are what users see on the subscription management sheet and in purchase dialogs. - Creating a localization for a locale that already exists will fail; always check first. - There is no bulk API; each locale requires a separate create call. - Use `--paginate` on list commands to ensure all existing localizations are returned. - Use the `asc-id-resolver` skill if you only have app names instead of IDs.
Related Skills
More skills in Mobile App Development
Android Design Guidelines
Material Design 3 and Android platform guidelines. Use when building Android apps with Jetpack Compose or XML layouts, implementing Material You, navigation, or accessibility. Triggers on tasks involving Android UI, Compose components, dynamic color, or Material Design compliance.
Android Java Skill
Android Java development with MVVM, ViewBinding, and Espresso testing
Android Kotlin
Android Kotlin development with Coroutines, Jetpack Compose, Hilt, and MockK testing
Appium Skill
Generates production-grade Appium mobile automation scripts for Android and iOS in Java, Python, or JavaScript. Supports real device and emulator testing locally and on TestMu AI cloud with 100+ real devices. Use when the user asks to automate mobile apps, test on Android/iOS, write Appium tests, or mentions "Appium", "mobile testing", "real device", "app automation". Triggers on: "Appium", "mobile test", "Android test", "iOS test", "real device", "app automation", "UiAutomator", "XCUITest driver", "TestMu", "LambdaTest".
Apple Appstore Reviewer
Serves as a reviewer of the codebase with instructions on looking for Apple App Store optimizations or rejection reasons.
App Rejection Recovery
When the user's app or update was rejected by Apple App Review or Google Play Review and they need to diagnose why, fix it, and resubmit fast. Use when the user mentions "app rejected", "App Review rejection", "guideline violation", "Apple rejected my app", "Google Play rejected", "Play policy violation", "Resolution Center", "metadata rejection", "binary rejection", "guideline 2.1", "guideline 4.3", "guideline 5.1.1", "Sign in with Apple required", "Apple ID rejection", "Play Store suspension", "appeal", "I need to respond to App Review", or "expedited review". For pre-submission listing health, see aso-audit. For metadata-only fixes, see metadata-optimization.
Explore Other Categories
Skills from other categories with shared topics
GitHub CLI
GitHub CLI linked from github/awesome-copilot, with the upstream skill instructions available on GitHub.
ordercli
Foodora-only CLI for checking past orders and active order status (Deliveroo WIP).
Using Cloud CLI Skill
Using Cloud CLI Skill linked from Juliano Barbosa Claude Code Skills, with the upstream skill instructions available on GitHub.