Cross Localization for App Store: Optimize Metadata
For each App Store territory, Apple defines a “Primary” language. However, each territory also has several “Additional” languages.
Here’s what you need to know about Primary and Additional languages in the context of ASO and keywords metadata optimization:
- Keyword Matching: Apple Search matches keywords from the metadata of your app’s product page to user search queries. If a user searches using a term from an “additional” language, and that term is in your metadata, your ad might be displayed to that user.
- Optimizing Metadata for Additional Languages: Including keywords from both the “primary” and “additional” languages for a specific App Store territory can expand your app’s discoverability. It allows your app to cater to a wider demographic within that territory.
- Understanding the Audience: Before integrating keywords from additional languages, it’s essential to grasp the demographics of the specific App Store territory. Recognize the predominant languages spoken and tailor your keywords accordingly.
- Keyword Selection: When configuring an ASO, integrate keywords from both the primary and additional languages. This strategy can capture a broader audience segment. Continually assess the performance of each keyword to determine which ones yield the most conversions.
- Localizing Ad Creative: If targeting keywords from an additional language, ensure your ad creatives are harmonious with speakers of that language. Aligning your ad content with the language can uplift the user experience and the possibility of them engaging with your ad.
- Monitoring and Optimization: Regularly overseeing the performance of your ASO is pivotal. Identify keywords from additional languages that have high engagement and conversions. Modify bids and refine your keyword selection grounded on performance metrics.
- Beware of Over-Optimization: Although targeting additional languages can be advantageous, it’s crucial not to dilute your app’s primary messaging. It’s vital to maintain the optimization and relevance of the primary language’s metadata.
Editor Input
Each input field contains several buttons:
- Metadata Editor: Quick access to the metadata editor.
- Bulk Metadata Editor: Quick access to the bulk metadata editor.
- Translate: Translates text from the primary localization to the current language.
- Reverse Translate: Translates the current text in the input field back to the base language set in your profile settings.
- Show Differences: If the value differs from the last saved version, this button will show the difference.
- Copy from Previous Version: Copies content from the last modified version.
For fields that affect search results in the App Store, such as Title, Subtitle, and Keywords, additional keyword analysis features are available:
- Keyword Breakdown: The entered text is automatically split into individual keywords.
- Display Metrics: Relevant metrics for each keyword are shown, including:
- Current App Rating: The current rating of your app for this keyword.
- Search Ads Popularity (SAP): The popularity of the keyword in Apple Search Ads—hovering over it shows the date of the last update.
- Difficulty: The competitiveness of the keyword.
- Total Number of Apps: The number of apps using this keyword.
- Suggestions: The number of suggestions for this keyword in the App Store.
- Keyword Management: Buttons to add or remove keywords from your keyword list.
- Edit Field: Options to remove or add this keyword directly in the current input field.
For the Keywords field, Keyword Recommendations are also available, based on:
- Current App Keywords: Keywords for which your app already has search queries.
- User’s Keyword List: Keywords from your personalized keyword list.
- Competitor Apps: Keywords used by competitor apps.
Each input field has a dynamic border that reflects the current state, unless disabled in the page Settings:
- Blue: Indicates that the field has been changed.
- Red: Displays when there is no data in the field.
- Gray: Shows when the field has no changes and is filled.
Additionally, each input field displays the character count and maximum field length, helping to ensure compliance with App Store requirements.
Settings
Changes indicator
Before each input field, a vertical colored stripe is displayed as a status indicator.
By default, the indicators are visible, but they can be turned off using the “Hide change indicators” setting.
Color scheme:
- Red: field is not filled
- Blue: field has been changed
- Gray: field has not been changed
Keywords Settings
Settings allow you to hide or show certain features such as keyword suggestions, keyword parameters (SAP, difficulty, total apps, current app rank), and validation messages.
Localization Providers
You can configure the translation provider of your choice (Google Translate, DeepL, Chat GPT, Claude AI) in the ASO.dev settings and also set stop words for translations.
Google Translate
Google Translate is available by default as a free translation provider in ASO.dev.
If you don’t have API keys for other providers, Google Translate will be used automatically.
DeepL, Chat GPT, Claude AI
DeepL, Chat GPT, and Claude AI are paid translation providers that offer more accurate and high-quality translations compared to Google Translate.
These providers use advanced technologies and AI models to ensure a high level of translation accuracy.
To use these providers, you need to obtain an API key, enter it in the settings, and, if necessary, select a model or specify additional parameters.
How to Set the Priority of Translation Providers
You can change the priority of translation providers by dragging their cards in the list.
The order determines which provider will be used first when translating content.
Disabling a Translation Provider
To disable a specific translation provider, simply toggle the switch to the “Off” position.
This provider will no longer be used for content translation.
You can also change the order of providers to adjust their priority.
Excluding Specific Keywords or Phrases from Translation
If you need to exclude certain words or phrases from translation, such as brand names, follow these steps:
- Enter the keyword or phrase you want to exclude from translation.
- Click the “Exclude” button.
Excluded words or phrases will remain in their original language and will not be altered during translation.
This is especially useful for maintaining consistency with brand names, technical terms, and other important phrases.
Leveraging both primary and additional languages in ASO and keyword metadata optimization can amplify an app’s visibility in the App Store.
Cross Localization feature provides an interactive table that displays metrics for different localizations, validating their performance and helping you optimize your app for various regions and languages.
Complete list of all variations:
ISO code | ISO code | Country or region | Default Language | Additional Supported Language(s) |
---|---|---|---|---|
AF | AFG | Afghanistan | English (U.K.): EN_GB | |
AL | ALB | Albania | English (U.K.): EN_GB | |
DZ | DZA | Algeria | English (U.K.): EN_GB | Arabic: AR French: FR |
AO | AGO | Angola | English (U.K.): EN_GB | |
AI | AIA | Anguilla | English (U.K.): EN_GB | |
AG | ATG | Antigua and Barbuda | English (U.K.): EN_GB | |
AG | ARG | Argentina | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
AM | ARM | Armenia | English (U.K.): EN_GB | |
AU | AUS | Australia | English (Australia): EN_AU | English (U.K.): EN_GB |
AT | AUT | Austria | German: DE_DE | English (U.K.): EN_GB |
AZ | AZE | Azerbaijan | English (U.K.): EN_GB | |
BS | BHS | Bahamas | English (U.K.): EN_GB | |
BH | BHR | Bahrain | English (U.K.): EN_GB | Arabic: AR |
BB | BRB | Barbados | English (U.K.): EN_GB | |
BY | BLR | Belarus | English (U.K.): EN_GB | |
BE | BEL | Belgium | English (U.K.): EN_GB | Dutch: NL_NL French: FR |
BZ | BLZ | Belize | English (U.K.): EN_GB | Spanish (Mexico): ES_MX |
BJ | BEN | Benin | English (U.K.): EN_GB | French: FR |
BM | BMU | Bermuda | English (U.K.): EN_GB | |
BT | BTN | Bhutan | English (U.K.): EN_GB | |
BO | BOL | Bolivia | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
BA | BIH | Bosnia and Herzegovina | English (U.K.): EN_GB | Croatian: HR |
BW | BWA | Botswana | English (U.K.): EN_GB | |
BR | BRA | Brazil | Portuguese (Brazil): PT_BR | English (U.K.): EN_GB |
VG | VGB | British Virgin Islands | English (U.K.): EN_GB | |
BN | BRN | Brunei | English (U.K.): EN_GB | |
BG | BGR | Bulgaria | English (U.K.): EN_GB | |
BF | BFA | Burkina Faso | English (U.K.): EN_GB | French: FR |
KH | KHM | Cambodia | English (U.K.): EN_GB | French: FR |
CM | CMR | Cameroon | English (U.K.): EN_GB | French: FR |
CA | CAN | Canada | English (Canada): EN_CA | French (Canada): FR_CA |
CV | CPV | Cape Verde | English (U.K.): EN_GB | |
KY | CYM | Cayman Islands | English (U.K.): EN_GB | |
TD | TCD | Chad | English (U.K.): EN_GB | French: FR |
CL | CHL | Chile | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
CN | CHN | China mainland | Simplified Chinese: ZH_HANS | English (U.K.): EN_GB |
CO | COL | Colombia | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
CD | COD | Congo Democratic Republic | English (U.K.): EN_GB | French: FR |
CG | COG | Congo Republic | English (U.K.): EN_GB | French: FR |
CR | CRI | Costa Rica | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
CI | CIV | Cote d’Ivoire | French: FR | English (U.K.): EN_GB |
HR | HRV | Croatia | English (U.K.): EN_GB | Croatian: HR |
CY | CYP | Cyprus | English (U.K.): EN_GB | Greek: EL Turkish: TR |
CZ | CZE | Czech Republic | English (U.K.): EN_GB | Czech: CS |
DK | DNK | Denmark | English (U.K.): EN_GB | Danish: DA |
DM | DMA | Dominica | English (U.K.): EN_GB | |
DO | DOM | Dominican Republic | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
EC | ECU | Ecuador | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
EG | EGY | Egypt | English (U.K.): EN_GB | Arabic: AR French: FR |
SV | SLV | El Salvador | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
EE | EST | Estonia | English (U.K.): EN_GB | |
SZ | SWZ | Eswatini | English (U.K.): EN_GB | |
FJ | FJI | Fiji | English (U.K.): EN_GB | |
FI | FIN | Finland | English (U.K.): EN_GB | Finnish: FI |
FR | FRA | France | French: FR | English (U.K.): EN_GB |
GA | GAB | Gabon | English (U.K.): EN_GB | French: FR |
GM | GMB | Gambia | English (U.K.): EN_GB | |
GE | GEO | Georgia | English (U.K.): EN_GB | |
DE | DEU | Germany | German: DE_DE | English (U.K.): EN_GB |
GH | GHA | Ghana | English (U.K.): EN_GB | |
GR | GRC | Greece | Greek: EL | English (U.K.): EN_GB |
GD | GRD | Grenada | English (U.K.): EN_GB | |
GT | GTM | Guatemala | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
GW | GNB | Guinea-Bissau | English (U.K.): EN_GB | French: FR |
GY | GUY | Guyana | English (U.K.): EN_GB | French: FR |
HN | HND | Honduras | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
HK | HKG | Hong Kong | Chinese (Traditional): ZH_HANT | English (U.K.): EN_GB |
HU | HUN | Hungary | English (U.K.): EN_GB | Hungarian: HU |
IS | ISL | Iceland | English (U.K.): EN_GB | |
IN | IND | India | English (U.K.): EN_GB | Hindi: HI |
ID | IDN | Indonesia | English (U.K.): EN_GB | Indonesian: ID |
IQ | IRQ | Iraq | English (U.K.): EN_GB | Arabic: AR |
IE | IRL | Ireland | English (U.K.): EN_GB | |
IL | ISR | Israel | English (U.K.): EN_GB | Hebrew: HE |
IT | ITA | Italy | Italian: IT | English (U.K.): EN_GB |
JM | JAM | Jamaica | English (U.K.): EN_GB | |
JP | JPN | Japan | Japanese: JA | English (U.S.): EN_US |
JO | JOR | Jordan | English (U.K.): EN_GB | Arabic: AR |
KZ | KAZ | Kazakhstan | English (U.K.): EN_GB | English (U.S.): EN_US |
KE | KEN | Kenya | English (U.K.): EN_GB | |
XK | XKS | Kosovo | English (U.K.): EN_GB | |
KW | KWT | Kuwait | English (U.K.): EN_GB | Arabic: AR |
KG | KGZ | Kyrgyzstan | English (U.K.): EN_GB | |
LA | LAO | Laos | English (U.K.): EN_GB | French: FR |
LV | LVA | Latvia | English (U.K.): EN_GB | |
LB | LBN | Lebanon | English (U.K.): EN_GB | Arabic: AR French: FR |
LR | LBR | Liberia | English (U.K.): EN_GB | |
LY | LBY | Libya | English (U.K.): EN_GB | Arabic: AR |
LT | LTU | Lithuania | English (U.K.): EN_GB | |
LU | LUX | Luxembourg | English (U.K.): EN_GB | French: FR German: DE_DE |
MO | MAC | Macau | Chinese (Traditional): ZH_HANT | English (U.K.): EN_GB |
MG | MDG | Madagascar | English (U.K.): EN_GB | French: FR |
MW | MWI | Malawi | English (U.K.): EN_GB | |
MY | MYS | Malaysia | English (U.K.): EN_GB | Malay: MS |
MV | MDV | Maldives | English (U.K.): EN_GB | |
ML | MLI | Mali | English (U.K.): EN_GB | French: FR |
MT | MLT | Malta | English (U.K.): EN_GB | |
MR | MRT | Mauritania | English (U.K.): EN_GB | Arabic: AR French: FR |
MU | MUS | Mauritius | English (U.K.): EN_GB | French: FR |
MX | MEX | Mexico | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
FM | FSM | Micronesia | English (U.K.): EN_GB | |
MD | MDA | Moldova | English (U.K.): EN_GB | |
MN | MNG | Mongolia | English (U.K.): EN_GB | |
ME | MNE | Montenegro | English (U.K.): EN_GB | Croatian: HR |
MS | MSR | Montserrat | English (U.K.): EN_GB | |
MA | MAR | Morocco | English (U.K.): EN_GB | Arabic: AR French: FR |
MZ | MOZ | Mozambique | English (U.K.): EN_GB | |
MM | MMR | Myanmar | English (U.K.): EN_GB | |
NA | NAM | Namibia | English (U.K.): EN_GB | |
NR | NRU | Nauru | English (U.K.): EN_GB | |
NP | NPL | Nepal | English (U.K.): EN_GB | |
NL | NLD | Netherlands | Dutch: NL_NL | English (U.K.): EN_GB |
NZ | NLZ | New Zealand | English (U.K.): EN_GB | English (Australia): EN_AU |
NI | NIC | Nicaragua | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
NE | NER | Niger | English (U.K.): EN_GB | French: FR |
NG | NGA | Nigeria | English (U.K.): EN_GB | |
MK | MKD | North Macedonia | English (U.K.): EN_GB | |
KP | PRK | North Korea | Korean: KO | English (U.K.): EN_GB |
NO | NOR | Norway | English (U.K.): EN_GB | Norwegian: NO |
OM | OMN | Oman | English (U.K.): EN_GB | Arabic: AR |
PK | PAK | Pakistan | English (U.K.): EN_GB | |
PW | PLW | Palau | English (U.K.): EN_GB | |
PA | PAN | Panama | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
PG | PNG | Papua New Guinea | English (U.K.): EN_GB | |
PY | PRY | Paraguay | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
PE | PER | Peru | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
PH | PHL | Philippines | English (U.K.): EN_GB | |
PL | POL | Poland | English (U.K.): EN_GB | Polish: PL |
PT | PRT | Portugal | Portuguese (Portugal): PT_PT | English (U.K.): EN_GB |
QA | QAT | Qatar | English (U.K.): EN_GB | Arabic: AR |
KR | KOR | Republic of Korea | Korean: KO | English (U.K.): EN_GB |
RO | ROU | Romania | English (U.K.): EN_GB | Romanian: RO |
RU | RUS | Russia | Russian: RU | English (U.K.): EN_GB Ukrainian: UK |
RW | RWA | Rwanda | English (U.K.): EN_GB | French: FR |
ST | STP | Sao Tome and Principe | English (U.K.): EN_GB | |
SA | SAU | Saudi Arabia | English (U.K.): EN_GB | Arabic: AR |
SN | SEN | Senegal | English (U.K.): EN_GB | French: FR |
RS | SRB | Serbia | English (U.K.): EN_GB | Croatian: HR |
SC | SYC | Seychelles | English (U.K.): EN_GB | French: FR |
SL | SLE | Sierra Leone | English (U.K.): EN_GB | |
SG | SGP | Singapore | English (U.K.): EN_GB | Chinese (Simplified): ZH_HANS |
SK | SVK | Slovakia | English (U.K.): EN_GB | Slovak: SK |
SI | SVN | Slovenia | English (U.K.): EN_GB | |
SB | SLB | Solomon Islands | English (U.K.): EN_GB | |
ZA | ZAF | South Africa | English (U.K.): EN_GB | |
ES | ESP | Spain | Spanish (Spain): ES_ES | Catalan: CA English (U.K.): EN_GB |
LK | LKA | Sri Lanka | English (U.K.): EN_GB | |
KN | KNA | St. Kitts and Nevis | English (U.K.): EN_GB | |
LC | LCA | St. Lucia | English (U.K.): EN_GB | |
VC | VCT | St. Vincent and the Grenadines | English (U.K.): EN_GB | |
SR | SUR | Suriname | English (U.K.): EN_GB | Dutch: NL_NL |
SE | SWE | Sweden | Swedish: SV | English (U.K.): EN_GB |
CH | CHE | Switzerland | German: DE_DE | English (U.K.): EN_GB French: FR Italian: IT |
TW | TWN | Taiwan | Chinese (Traditional): ZH_HANT | English (U.K.): EN_GB |
TJ | TJK | Tajikistan | English (U.K.): EN_GB | |
TZ | TZA | Tanzania | English (U.K.): EN_GB | |
TH | THA | Thailand | English (U.K.): EN_GB | Thai: TH |
TO | TON | Tonga | English (U.K.): EN_GB | |
TT | TTO | Trinidad and Tobago | English (U.K.): EN_GB | French: FR |
TN | TUN | Tunisia | English (U.K.): EN_GB | Arabic: AR French: FR |
TR | TUR | Turkey | English (U.K.): EN_GB | Turkish: TR |
TM | TKM | Turkmenistan | English (U.K.): EN_GB | |
TC | TCA | Turks and Caicos Islands | English (U.K.): EN_GB | |
UG | UGA | Uganda | English (U.K.): EN_GB | |
UA | UKR | Ukraine | Russian: RU | English (U.K.): EN_GB Ukrainian: UK |
AE | ARE | United Arab Emirates | English (U.K.): EN_GB | Arabic: AR |
GB | GBR | United Kingdom | English (U.K.): EN_GB | |
US | USA | United States | English (U.S.): EN_US | Arabic: AR Chinese (Simplified): ZH_HANS Chinese (Traditional): ZH_HANT French: FR Korean: KO Portuguese (Brazil): PT_BR Russian: RU Spanish (Mexico): ES_MX Vietnamese: VI |
UY | URY | Uruguay | English (U.K.): EN_GB | Spanish (Mexico): ES_MX |
UZ | UZB | Uzbekistan | English (U.K.): EN_GB | |
VU | VUT | Vanuatu | English (U.K.): EN_GB | French: FR |
VE | VEN | Venezuela | Spanish (Mexico): ES_MX | English (U.K.): EN_GB |
VN | VNM | Vietnam | English (U.K.): EN_GB | Vietnamese: VI |
YE | YEM | Yemen | English (U.K.): EN_GB | Arabic: AR |
ZM | ZMB | Zambia | English (U.K.): EN_GB | |
ZW | ZWE | Zimbabwe | English (U.K.): EN_GB |