Contents
In briefThe short answerLocale codes and pathsHreflang and canonicalsApps and separate storesThe order of workWhat to review by handLinks and measurementRelated service
SEO Hong Kong →The short answer
Both Chinese scripts run on one Shopify store. In Settings, then Languages, add Chinese (Traditional) and Chinese (Simplified). Shopify’s locale list gives them the codes zh-TW and zh-CN. Publishing each language creates a URL for it, and Translate & Adapt, which installs with the language, is where the wording is translated and then checked.
For a Hong Kong shop the three languages are English, Traditional Chinese and Simplified Chinese, on one catalogue. The city reads Traditional Chinese, a large part of its customer base also searches in Simplified Chinese, and English remains the language of a significant share of premium buyers.
Shopify introduced Translate & Adapt in 2022. The App Store listing records a launch on 16 August 2022, and the changelog post is dated 14 September 2022. Both scripts were already on the platform: on 19 June 2019 Shopify added Traditional Chinese and Simplified Chinese to the admin, and opened the Translations API for buyer-facing content such as products, collections and blog posts.
Locale codes and URL paths
The codes you select are zh-TW and zh-CN. zh-Hant and zh-Hans are not entries in Shopify’s availableLocales list, so they are not languages you add in the admin.
Publishing a language adds that language’s code as a path on the domain. Shopify’s documented example is a French locale on shop.com, which becomes shop.com/fr. The URL examples are lowercase, so confirm /zh-tw and /zh-cn on the primary domain before you build links or Search Console filters around them.
| What you publish | Locale code | Path |
|---|---|---|
| Chinese (Traditional) on the primary domain | zh-TW | A lowercase language path, on the same pattern as /fr |
| Chinese (Simplified) on the primary domain | zh-CN | A lowercase language path, on the same pattern as /fr |
| Either language on a market subfolder | The language, plus the suffix you set | On the same pattern as /fr-ca |
Language-only paths such as /fr exist only on the primary market. A secondary market on subfolders combines the language with a country suffix, and Shopify’s examples are /fr-ca and /en-eu. The Chinese codes already contain a region, TW in zh-TW and CN in zh-CN, so use the path Shopify created after you assign the language, and do not invent a further code.
Hreflang and canonicals
Shopify adds hreflang tags through the theme’s content_for_header, from the market and language setup. A country-specific market produces a region-qualified tag, such as fr-ca, and a broader market produces a language-only tag, such as de. Tags are written only when the language has its own URL. If every market shares one URL, there is no alternate, and no hreflang is written. Each localised page canonicals to itself.
If a theme or an app also prints hreflang tags, turn Shopify’s automatic set off, or remove the other set. Shopify warns that the two conflict and can hurt the store’s search ranking. Do not paste zh-Hant or zh-Hans tags into the theme in place of the codes you published. The tag to trust is the one in the page source, on the URL Shopify created.
Third-party apps and separate stores
Publish both languages on this store, translate them in Translate & Adapt, and let Shopify write the URLs, the hreflang and the canonicals. A second store for the other script does not get that. Shopify’s developer docs treat hreflang across separate stores as a case you wire yourself, with the automatic tags turned off so the two sets do not conflict. Those tags then live outside the catalogue, and they go stale as products change.
An app that does not write through the Translations API has the same failure. The translated pages are not the language URLs Shopify publishes, so Shopify is not generating the tags. Selling in multiple languages supports only compatible translation apps. An app that does use the Translations API stores the strings in Shopify, and Translate & Adapt can display that content alongside its own. The platform still owns the URLs and the tags. The language still has to be published, and the review is still done by hand.
The order of work
Translation comes last. Catalogue structure, collections and copy need to be finished in the primary language first. Translating a moving target means every correction is made once per language, three times when the store runs English, Traditional and Simplified.
With the English store stable, add the languages, publish them, run the automatic translation, then review. On a Hong Kong store that automatic pass covers two languages besides the default, and Auto-sync is not available, unless the app shows Translate now. It does not change wording you have edited by hand, and it does not translate your own legal policies. Product names, brand terms and anything with commercial search value need a person. The automatic text is the draft.
What to review by hand, in order
- Brand vocabulary: product line names, materials and any term the brand deliberately does not translate, checked against a banned-and-preferred terms list agreed before the review starts.
- Commercial page titles and meta descriptions. Machine translation optimises for meaning, and search uses the words buyers type. The two diverge constantly in Chinese, and Traditional and Simplified carry different vocabulary.
- Collection and product names, where a literal rendering can read as a different product category to a native reader.
- Sizing, measurements and policy wording. Your own legal policies are excluded from automatic translation, and a mistranslated returns clause is a customer service incident in a locale nobody on the team reads daily.
- The checkout and transactional strings, read end to end in each script by someone who shops in it.
Traditional and Simplified are separate languages, with their own vocabulary, phrasing and search behaviour. The two reviews are two pieces of work, ideally by two readers, and a Traditional reader cannot sign off the Simplified text.
Links and measurement
In the theme, build links with the routes object, for example routes.cart_url, and in JavaScript prefix requests with window.Shopify.routes.root, which always ends in a slash. A hardcoded /cart, or an absolute URL on the primary domain, sends a visitor who is reading Chinese back to the default language and currency.
Measure each locale on the path in its hreflang href, not on a code you assumed. Impressions and rankings for those URLs build separately in Search Console.
Sources & references
- Shopify developer documentation, availableLocales(shopify.dev)
- Shopify developer documentation, Support multiple currencies and languages(shopify.dev)
- Shopify developer documentation, Use hreflang tags in your theme(shopify.dev)
- Shopify Help Center, Localization and translation(help.shopify.com)
- Shopify Help Center, International domains(help.shopify.com)
- Shopify Help Center, International SEO for markets(help.shopify.com)
- Shopify Help Center, Translating content automatically with Translate & Adapt(help.shopify.com)
- Shopify Help Center, Add language translations using the Translate & Adapt app(help.shopify.com)
- Shopify App Store, Translate & Adapt(apps.shopify.com)
- Shopify changelog, Introducing the new Shopify Translate & Adapt app(changelog.shopify.com)
- Shopify news, Going global, 19 June 2019(shopify.com)



