asc-subscription-localization
rudrankriyam/app-store-connect-cli-skills
Bulk-localize subscription and IAP display names across all App Store Connect locales via CLI.
What is asc-subscription-localization?
Automate the creation and update of subscription, subscription group, and in-app purchase display names across all 37 App Store locales. Use this when you need to set the same display name in every language without manually clicking through App Store Connect.
- Create subscription localizations for all missing App Store locales in bulk
- Create and update subscription group display names across all locales
- Create and update in-app purchase (IAP) display names and descriptions across all locales
- List existing localizations to identify which locales need coverage
- Update existing localization entries with new display names
How to install asc-subscription-localization
npx skills add https://github.com/rudrankriyam/app-store-connect-cli-skills --skill asc-subscription-localization- App Store Connect CLI (asc) installed and authenticated via `asc auth login` or `ASC_*` environment variables
- App ID known (via `ASC_APP_ID` env var or `--app` flag)
- Subscription groups, subscriptions, or IAPs already created in App Store Connect
How to use asc-subscription-localization
- 1.List subscription groups or IAPs to identify the resource ID you want to localize
- 2.Check existing localizations using `asc subscriptions localizations list` or `asc iap localizations list` to see which locales are already covered
- 3.Run `asc subscriptions localizations create` (or equivalent for groups/IAPs) for each missing locale with your display name
- 4.Optionally add descriptions for IAPs using the `--description` flag
- 5.Verify coverage by listing localizations again to confirm all locales are populated
Use cases
- Launch a new subscription tier and need to set its display name in all 37 App Store locales at once
- Add missing localizations to an existing subscription that only has English names
- Rename an in-app purchase across all languages after user feedback
- Set up a subscription group with localized names for every supported market
- Bulk-update IAP descriptions to match a new marketing message globally
- iOS/macOS app developers managing subscriptions and in-app purchases
- App Store Connect administrators handling multi-language monetization
- Teams launching apps in multiple markets simultaneously
asc-subscription-localization FAQ
37 locales are supported: 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.
Yes. The skill supports setting identical display names across all locales; you simply repeat the same `--name` value in each locale command.
Check existing localizations first with `list` commands. Only create localizations for locales that are missing; skip those already populated to avoid errors.
Yes. Use `asc subscriptions localizations update --id LOC_ID --name "New Name"` (or equivalent for groups/IAPs) to change an existing localization.
No. Descriptions are optional for IAPs but not supported for subscriptions via this skill. Focus on display names for subscriptions.
Full instructions (SKILL.md)
Source of truth, from rudrankriyam/app-store-connect-cli-skills.
name: asc-subscription-localization description: 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.
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 loginorASC_*env vars). - Know your app ID (
ASC_APP_IDor--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
# 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
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:
asc subscriptions localizations create \
--subscription-id "SUB_ID" \
--locale "LOCALE" \
--name "Display Name"
For example, to set "Monthly Pro" across all locales:
# 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
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
asc subscriptions groups localizations list --group-id "GROUP_ID" --paginate --output table
2. Create for missing locales
asc subscriptions groups localizations create \
--group-id "GROUP_ID" \
--locale "LOCALE" \
--name "Group Display Name"
Optional: set a custom app name for the group:
asc subscriptions groups localizations create \
--group-id "GROUP_ID" \
--locale "LOCALE" \
--name "Group Display Name" \
--custom-app-name "My App"
3. Verify
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
asc iap list --app "APP_ID" --output table
2. Check existing localizations
asc iap localizations list --iap-id "IAP_ID" --paginate --output table
3. Create for missing locales
asc iap localizations create \
--iap-id "IAP_ID" \
--locale "LOCALE" \
--name "Display Name"
Optional description:
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
asc iap localizations list --iap-id "IAP_ID" --paginate --output table
Updating Existing Localizations
To change the display name for existing localizations:
Subscriptions
asc subscriptions localizations update --id "LOC_ID" --name "New Name"
Subscription Groups
asc subscriptions groups localizations update --id "LOC_ID" --name "New Group Name"
In-App Purchases
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:
# 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
--descriptionon create. Otherwise omit it. - Use
--output tablefor 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
--paginateon list commands to ensure all existing localizations are returned. - Use the
asc-id-resolverskill if you only have app names instead of IDs.
Related skills
More from rudrankriyam/app-store-connect-cli-skills and the wider catalog.

asc-testflight-orchestration
Orchestrate TestFlight distribution, groups, testers, and release notes via App Store Connect CLI.

asc-wall-submit
Submit or update Wall of Apps entries in App-Store-Connect-CLI repository

asc-whats-new-writer
Generate engaging, localized App Store release notes (What's New) from git log, bullet points, or free text using canonical metadata under `./metadata`. Optionally pairs with promotional text updates.

asc-workflow
Define and run multi-step App Store Connect automations with lane-style workflows and step outputs.

asc-xcode-build
Build, archive, and export Xcode projects for App Store Connect upload with version/build number management.

liteparse
Fast, local document extraction via `lit` CLI—parse once, search cheaply with disciplined patterns.