Skip to Content
AI SearchMarkets and Languages

Markets and Languages

A prompt in Asky is one wording in one language, tracked in one or more locations. The two are independent: an English question can be tracked in Germany, and the same question can exist as separate German and Swedish versions tracked wherever you choose. This page lists what Asky supports today and how to write it.

Locations and languages

Locations are the countries an AI search engine is asked from. Each location on a prompt counts as one tracked prompt toward your plan. Locations are written as two-letter country codes such as US, GB or DE.

Languages describe the wording of the prompt itself. They are always regional locales such as en-GB, de-DE or de-CH, because spelling and terminology differ between regions, and Market Coverage uses them to tell versions of a prompt apart. A bare en or de is not a language here.

How a prompt gets its language

  • Adding a prompt. The Language field is pre-filled from your brand’s language and the first location you chose. Languages of the selected locations are listed first.
  • Uploading a CSV. An optional language column sets it per row. Rows without one get the upload language you choose in the preview, which is required before import.
  • Changing it later. A prompt keeps the language it was created with. To track it in another language, use Localize to add a version in that language.
  • Localizing. A localized version is written in the language of the market column it was generated for.

Managing markets

Open Prompts › Markets with the Markets button on the prompts page. Each row is a prompt, each column a market and language, and each cell shows whether that prompt has a version there.

  • Add a market with Add market: pick a country, then a language. The settings icon on a market adds more languages, each its own column. Changes save on their own. A language that already has versions in the market stays, and an empty market can be removed.
  • Select what to work on by ticking cells, rows, market or language columns, or a topic’s cells. Localize generates previews for the empty cells, Accept starts tracking the previews, and Delete removes the versions and previews you ticked. Each button counts only the cells it applies to.
  • Delete asks for confirmation and lists every prompt and preview first. A version tracked only in the markets you ticked is deleted with its results. One also tracked in other markets only stops being tracked in the ticked ones. Previews are discarded.
  • Source language, under the settings icon on the Prompts column, picks the language the rows are shown in. Each prompt shows its version in that language where it has one, and Localize translates from the version shown.

Previews never use tracking slots. Accepting them does, one per market, and is all or nothing when there are not enough slots left. Accepting more than 500 previews at once runs in the background, 500 at a time, and you can leave the page while it does.

Not enough tracking slots. When accepting needs more slots than are left, Accept says how many are missing. Delete prompts you no longer need, or track more prompts, then accept again. Previews stay when you delete the prompt they were made from, so to switch prompts to another language you can localize them, delete the old versions to make room, and then accept.

Writing them in a CSV

The upload accepts these columns, in any order, with the header names below or their aliases:

ColumnAliasesValue
locationlocations, country, countries, market, markets, geoOne or more country codes from the list below, separated by commas or semicolons. Common spellings such as UK are corrected and reported.
languagelang, locale, locale_code, language_codeA locale code from the list below in any case, or a language name or two-letter code, which resolves against the row’s first location.

A row with an unsupported location or language is reported by row number and skipped; nothing is guessed from the prompt text.

Your brand’s markets

Your Brand Profile lists the markets you sell in. It describes your business, so it can include any country, and it does not track anything on its own.

Asky uses it to get you started faster:

  • Market Coverage offers your Brand Profile markets first when you add a market. Nothing is added until you choose it, so your tracked prompts only change when you add a market.
  • Content workflows list your markets’ languages first when you pick an article language.
  • Writing styles can be the default for a language, such as German. An article in that language starts on that style, whichever German-speaking market it is for.

What we support today

Catalog version 2026-09-15.3. Run npm run docs:markets after changing lib/countries.ts or the locale catalog.

Locations

Every market a prompt can be tracked in, with the languages the catalog offers there. The default is what the Language field suggests for that location when the brand writes in that language.

LocationCodeLanguages offered
🇦🇺 AustraliaAUen-AU (default)
🇦🇹 AustriaATde-AT (default)
🇧🇪 BelgiumBEnl-BE, fr-BE, de-BE
🇧🇷 BrazilBRpt-BR (default)
🇧🇬 BulgariaBGbg-BG (default)
🇨🇦 CanadaCAen-CA, fr-CA
🇭🇷 CroatiaHRhr-HR (default)
🇨🇿 CzechiaCZcs-CZ (default)
🇩🇰 DenmarkDKda-DK (default)
🇪🇪 EstoniaEEet-EE (default)
🇫🇮 FinlandFIfi-FI (default), sv-FI
🇫🇷 FranceFRfr-FR (default)
🇩🇪 GermanyDEde-DE (default)
🇬🇷 GreeceGRel-GR (default)
🇭🇰 Hong KongHKzh-Hant-HK (default), en-HK
🇭🇺 HungaryHUhu-HU (default)
🇮🇳 IndiaINen-IN (default), hi-IN
🇮🇪 IrelandIEen-IE (default), ga-IE
🇮🇱 IsraelILhe-IL (default), ar-IL
🇮🇹 ItalyITit-IT (default)
🇯🇵 JapanJPja-JP (default)
🇱🇻 LatviaLVlv-LV (default)
🇱🇹 LithuaniaLTlt-LT (default)
🇱🇺 LuxembourgLUfr-LU, de-LU, lb-LU
🇲🇹 MaltaMTmt-MT (default), en-MT
🇲🇽 MexicoMXes-MX (default)
🇳🇱 NetherlandsNLnl-NL (default)
🇳🇿 New ZealandNZen-NZ (default), mi-NZ
🇲🇰 North MacedoniaMKmk-MK (default), sq-MK
🇳🇴 NorwayNOnb-NO (default), nn-NO
🇵🇱 PolandPLpl-PL (default)
🇵🇹 PortugalPTpt-PT (default)
🇷🇴 RomaniaROro-RO (default)
🇸🇦 Saudi ArabiaSAar-SA (default)
🇸🇬 SingaporeSGen-SG (default), zh-Hans-SG, ms-SG, ta-SG
🇸🇰 SlovakiaSKsk-SK (default)
🇸🇮 SloveniaSIsl-SI (default)
🇿🇦 South AfricaZAen-ZA (default), af-ZA, zu-ZA, xh-ZA
🇰🇷 South KoreaKRko-KR (default)
🇪🇸 SpainESes-ES (default), ca-ES, eu-ES, gl-ES
🇸🇪 SwedenSEsv-SE (default)
🇨🇭 SwitzerlandCHde-CH, fr-CH, it-CH
🇹🇷 TurkeyTRtr-TR (default)
🇦🇪 United Arab EmiratesAEar-AE (default), en-AE
🇬🇧 United KingdomGBen-GB (default)
🇺🇸 United StatesUSen-US (default), es-US

Languages

Every language a prompt can be written in. A language is always regional: en-GB and en-US are two languages here, and a bare en is never accepted.

CodeLanguageNative name
af-ZAAfrikaans (South Africa)Afrikaans (Suid-Afrika)
sq-MKAlbanian (North Macedonia)shqip (Maqedonia e Veriut)
ar-ILArabic (Israel)العربية (إسرائيل)
ar-SAArabic (Saudi Arabia)العربية (المملكة العربية السعودية)
ar-AEArabic (United Arab Emirates)العربية (الإمارات العربية المتحدة)
eu-ESBasque (Spain)euskara (Espainia)
bg-BGBulgarian (Bulgaria)български (България)
ca-ESCatalan (Spain)català (Espanya)
hr-HRCroatian (Croatia)hrvatski (Hrvatska)
cs-CZCzech (Czechia)čeština (Česko)
da-DKDanish (Denmark)dansk (Danmark)
nl-BEDutch (Belgium)Nederlands (België)
nl-NLDutch (Netherlands)Nederlands (Nederland)
en-AUEnglish (Australia)English (Australia)
en-CAEnglish (Canada)English (Canada)
en-HKEnglish (Hong Kong SAR China)English (Hong Kong SAR China)
en-INEnglish (India)English (India)
en-IEEnglish (Ireland)English (Ireland)
en-MTEnglish (Malta)English (Malta)
en-NZEnglish (New Zealand)English (New Zealand)
en-SGEnglish (Singapore)English (Singapore)
en-ZAEnglish (South Africa)English (South Africa)
en-GBEnglish (UK)English (UK)
en-AEEnglish (United Arab Emirates)English (United Arab Emirates)
en-USEnglish (US)English (US)
et-EEEstonian (Estonia)eesti (Eesti)
fi-FIFinnish (Finland)suomi (Suomi)
fr-BEFrench (Belgium)français (Belgique)
fr-CAFrench (Canada)Français (Canada)
fr-FRFrench (France)français (France)
fr-LUFrench (Luxembourg)français (Luxembourg)
fr-CHFrench (Switzerland)Français (Suisse)
gl-ESGalician (Spain)galego (España)
de-ATGerman (Austria)Deutsch (Österreich)
de-BEGerman (Belgium)Deutsch (Belgien)
de-DEGerman (Germany)Deutsch (Deutschland)
de-LUGerman (Luxembourg)Deutsch (Luxemburg)
de-CHGerman (Switzerland)Deutsch (Schweiz)
el-GRGreek (Greece)Ελληνικά (Ελλάδα)
he-ILHebrew (Israel)עברית (ישראל)
hi-INHindi (India)हिन्दी (भारत)
hu-HUHungarian (Hungary)magyar (Magyarország)
ga-IEIrish (Ireland)Gaeilge (Éire)
it-ITItalian (Italy)italiano (Italia)
it-CHItalian (Switzerland)Italiano (Svizzera)
ja-JPJapanese (Japan)日本語 (日本)
ko-KRKorean (South Korea)한국어 (대한민국)
lv-LVLatvian (Latvia)latviešu (Latvija)
lt-LTLithuanian (Lithuania)lietuvių (Lietuva)
lb-LULuxembourgish (Luxembourg)Lëtzebuergesch (Lëtzebuerg)
mk-MKMacedonian (North Macedonia)македонски (Северна Македонија)
ms-SGMalay (Singapore)Melayu (Singapura)
mt-MTMaltese (Malta)Malti (Malta)
mi-NZMāori (New Zealand)Māori (Aotearoa)
nb-NONorwegian Bokmål (Norway)norsk bokmål (Norge)
nn-NONorwegian Nynorsk (Norway)norsk nynorsk (Noreg)
pl-PLPolish (Poland)Polski (Polska)
pt-BRPortuguese (Brazil)português (Brasil)
pt-PTPortuguese (Portugal)português (Portugal)
ro-RORomanian (Romania)română (România)
zh-Hans-SGSimplified Chinese (Singapore)中文 (新加坡)
sk-SKSlovak (Slovakia)slovenčina (Slovensko)
sl-SISlovenian (Slovenia)slovenščina (Slovenija)
es-MXSpanish (Mexico)español (México)
es-ESSpanish (Spain)español (España)
es-USSpanish (United States)español (Estados Unidos)
sv-FISwedish (Finland)svenska (Finland)
sv-SESwedish (Sweden)Svenska (Sverige)
ta-SGTamil (Singapore)தமிழ் (சிங்கப்பூர்)
zh-Hant-HKTraditional Chinese (Hong Kong SAR China)中文 (中國香港特別行政區)
tr-TRTurkish (Türkiye)Türkçe (Türkiye)
xh-ZAXhosa (South Africa)IsiXhosa (EMzantsi Afrika)
zu-ZAZulu (South Africa)isiZulu (iNingizimu Afrika)

Language names

In a CSV or the API you may write a language name or a two-letter code instead of a locale. It resolves to the locale the row’s first location offers for that language, else to the fallback below. “German” in Switzerland is de-CH; “English” in Germany is en-US.

You writeCodeFallback locale
Chinesezhzh-Hans-SG
Danishdada-DK
Dutchnlnl-NL
Englishenen-US
Finnishfifi-FI
Frenchfrfr-FR
Germandede-DE
Italianitit-IT
Japanesejaja-JP
Koreankoko-KR
Norwegiannonb-NO
Polishplpl-PL
Portugueseptpt-PT
Spanisheses-ES
Swedishsvsv-SE
Last updated on