Shopify Markets helps merchants expand their business to a global audience by creating shopping experiences in local languages and currencies.
Hydrogen provides patterns on top of Remix to setup internationalization (i18n) that leverages a merchant’s market configuration. It also makes locales available throughout the app and in Storefront API queries.
Create a JSON file with a list of available countries that will be rendered at every page. You can use the /app/data/countries.ts
file in the Hydrogen demo store as a point of reference.
For performance and SEO reasons, Shopify recommends using a static JSON variable for the countries. Optionally, you can create a build script that generates this file on build.
Copy // ciseco-hydrogen-vite/app/data/countries.ts
import type {Localizations} from '~/lib/type' ;
export const countries : Localizations = {
default : {
label : 'United States (USD $)' ,
language : 'EN' ,
country : 'US' ,
currency : 'USD' ,
} ,
'/en-ad' : {
label : 'Andorra (EUR €)' ,
language : 'EN' ,
country : 'AD' ,
currency : 'EUR' ,
} ,
'/en-at' : {
label : 'Austria (EUR €)' ,
language : 'EN' ,
country : 'AT' ,
currency : 'EUR' ,
} ,
'/en-au' : {
label : 'Australia (AUD $)' ,
language : 'EN' ,
country : 'AU' ,
currency : 'AUD' ,
} ,
'/en-be' : {
label : 'Belgium (EUR €)' ,
language : 'EN' ,
country : 'BE' ,
currency : 'EUR' ,
} ,
'/en-ca' : {
label : 'Canada (CAD $)' ,
language : 'EN' ,
country : 'CA' ,
currency : 'CAD' ,
} ,
'/en-cn' : {
label : 'China (CNY ¥)' ,
language : 'EN' ,
country : 'CN' ,
currency : 'CNY' ,
} ,
'/en-cy' : {
label : 'Cyprus (EUR €)' ,
language : 'EN' ,
country : 'CY' ,
currency : 'EUR' ,
} ,
'/en-de' : {
label : 'Germany (EUR €)' ,
language : 'EN' ,
country : 'DE' ,
currency : 'EUR' ,
} ,
'/en-ee' : {
label : 'Estonia (EUR €)' ,
language : 'EN' ,
country : 'EE' ,
currency : 'EUR' ,
} ,
'/en-es' : {
label : 'Spain (EUR €)' ,
language : 'EN' ,
country : 'ES' ,
currency : 'EUR' ,
} ,
'/en-fi' : {
label : 'Finland (EUR €)' ,
language : 'EN' ,
country : 'FI' ,
currency : 'EUR' ,
} ,
'/en-fr' : {
label : 'France (EUR €)' ,
language : 'EN' ,
country : 'FR' ,
currency : 'EUR' ,
} ,
'/en-gb' : {
label : 'United Kingdom (GBP £)' ,
language : 'EN' ,
country : 'GB' ,
currency : 'GBP' ,
} ,
'/en-gr' : {
label : 'Greece (EUR €)' ,
language : 'EN' ,
country : 'GR' ,
currency : 'EUR' ,
} ,
'/en-id' : {
label : 'Indonesia (IDR Rp)' ,
language : 'EN' ,
country : 'ID' ,
currency : 'IDR' ,
} ,
'/en-ie' : {
label : 'Ireland (EUR €)' ,
language : 'EN' ,
country : 'IE' ,
currency : 'EUR' ,
} ,
'/en-in' : {
label : 'India (INR ₹)' ,
language : 'EN' ,
country : 'IN' ,
currency : 'INR' ,
} ,
'/en-it' : {
label : 'Italy (EUR €)' ,
language : 'EN' ,
country : 'IT' ,
currency : 'EUR' ,
} ,
'/en-jp' : {
label : 'Japan (JPY ¥)' ,
language : 'EN' ,
country : 'JP' ,
currency : 'JPY' ,
} ,
'/en-kr' : {
label : 'South Korea (KRW ₩)' ,
language : 'EN' ,
country : 'KR' ,
currency : 'KRW' ,
} ,
'/en-lt' : {
label : 'Lithuania (EUR €)' ,
language : 'EN' ,
country : 'LT' ,
currency : 'EUR' ,
} ,
'/en-lu' : {
label : 'Luxembourg (EUR €)' ,
language : 'EN' ,
country : 'LU' ,
currency : 'EUR' ,
} ,
'/en-lv' : {
label : 'Latvia (EUR €)' ,
language : 'EN' ,
country : 'LV' ,
currency : 'EUR' ,
} ,
'/en-mc' : {
label : 'Monaco (EUR €)' ,
language : 'EN' ,
country : 'MC' ,
currency : 'EUR' ,
} ,
'/en-me' : {
label : 'Montenegro (EUR €)' ,
language : 'EN' ,
country : 'ME' ,
currency : 'EUR' ,
} ,
'/en-mt' : {
label : 'Malta (EUR €)' ,
language : 'EN' ,
country : 'MT' ,
currency : 'EUR' ,
} ,
'/en-nl' : {
label : 'Netherlands (EUR €)' ,
language : 'EN' ,
country : 'NL' ,
currency : 'EUR' ,
} ,
'/en-nz' : {
label : 'New Zealand (NZD $)' ,
language : 'EN' ,
country : 'NZ' ,
currency : 'NZD' ,
} ,
'/en-pt' : {
label : 'Portugal (EUR €)' ,
language : 'EN' ,
country : 'PT' ,
currency : 'EUR' ,
} ,
'/en-sg' : {
label : 'Singapore (SGD $)' ,
language : 'EN' ,
country : 'SG' ,
currency : 'SGD' ,
} ,
'/en-si' : {
label : 'Slovenia (EUR €)' ,
language : 'EN' ,
country : 'SI' ,
currency : 'EUR' ,
} ,
'/en-sk' : {
label : 'Slovakia (EUR €)' ,
language : 'EN' ,
country : 'SK' ,
currency : 'EUR' ,
} ,
'/en-sm' : {
label : 'San Marino (EUR €)' ,
language : 'EN' ,
country : 'SM' ,
currency : 'EUR' ,
} ,
'/en-th' : {
label : 'Thailand (THB ฿)' ,
language : 'EN' ,
country : 'TH' ,
currency : 'THB' ,
} ,
'/en-va' : {
label : 'Vatican City (EUR €)' ,
language : 'EN' ,
country : 'VA' ,
currency : 'EUR' ,
} ,
'/en-vn' : {
label : 'Vietnam (VND ₫)' ,
language : 'EN' ,
country : 'VN' ,
currency : 'VND' ,
} ,
'/en-xk' : {
label : 'Kosovo (EUR €)' ,
language : 'EN' ,
country : 'XK' ,
currency : 'EUR' ,
} ,
};