Branch8

Shopify Plus 香港多語言 SEO 設定教學:繁中、簡中與英文

Matt Li
September 1, 2026
13 mins read
Shopify Plus 香港多語言 SEO 設定教學:繁中、簡中與英文

Key Takeaways

  • 用 Shopify Markets 分層規劃地區與語言,子資料夾 URL 最省成本
  • hreflang 必須雙向、自我參照、絕對路徑,並包含 x-default
  • 香港繁中要校正港式用語,不只做簡轉繁字形轉換
  • 每個語言的 SEO title 與 meta description 需獨立翻譯
  • 避免 IP 強制跳轉,否則 Googlebot 只會索引單一語言版本

Shopify Plus 香港多語言 SEO 的核心是三件事:用 Markets 建立正確的地區與語言結構、讓每個語言版本有獨立可索引的 URL、再以 hreflang 標記串連 zh-Hant-HK、zh-Hans、en-HK 等版本。設定正確後,Google 才會把對的語言版本派給對的市場。

香港零售商幾乎沒有「單一語言」這回事。門市講廣東話、產品頁需要繁體中文、內地客戶搜尋簡體詞彙、海外採購與旅客用英文。再加上台灣、新加坡、馬來西亞的跨境訂單,一個 Shopify Plus 店面往往要同時服務四到五種語言/地區組合。這篇教學會走完整套設定流程:從 Shopify Markets 的地區規劃、Translate & Adapt 的內容翻譯、theme 層的 hreflang 與 canonical、到 Search Console 驗證與常見故障排除。

開始前需要準備什麼?

在動手改 theme 之前,先確認以下條件到位。缺其中任何一項,後面的步驟都會產生難以除錯的結果。

  1. Shopify Plus 或至少 Advanced 方案:Shopify Markets 在所有方案都可用,但 Plus 提供最多 50 個市場,其他方案上限為 3 個市場(依 Shopify 官方 Markets 文件)。香港商家若同時做港、台、中、星、澳,Plus 的市場上限差異很實際。
  2. Online Store 2.0 主題:Dawn、Craft、Impulse 等 OS 2.0 主題支援 localization Liquid 物件與 {% render %} snippet 結構。舊版 vintage theme 需要先升級,否則 hreflang 輸出會缺漏。
  3. theme 檔案編輯權限:需要能改 theme.liquidsnippets/layout/。建議先在複製的 theme 上操作。
  4. Shopify CLI 3.x:本地開發與版本控制用。npm install -g @shopify/cli @shopify/theme
  5. Google Search Console 已驗證的網域資源(Domain property):因為多語言版本可能分佈在子路徑或子網域,Domain property 比 URL prefix property 覆蓋更完整。
  6. 決定語言代碼策略:這是最容易做錯的一步,下一節會詳談。

香港店該用哪些語言與地區代碼?

很多團隊直接用 zh-CNzh-TW 就上線,然後在 Search Console 看到 hreflang 錯誤。Google Search Central 的多地區文件明確說明,hreflang 值必須是 ISO 639-1 語言碼,可選加上 ISO 3166-1 Alpha 2 地區碼——地區碼指的是使用者所在地,不是語言的變體來源。

對香港市場,建議這樣配置:

繁體中文(香港)— zh-Hant-HK

主要市場語言。使用 Script subtag Hant 明確標示繁體字形,避免與台灣繁中混淆用詞(例如「滑鼠/鼠標」、「網絡/網路」)。Shopify Markets 內設為 Hong Kong SAR 市場的預設語言。

繁體中文(台灣)— zh-Hant-TW

如果你要做台灣市場,這是獨立的語言版本,不是「香港繁中的複製」。用詞、價格幣別(TWD)、物流說明都不同。若暫時沒有在地化資源,寧可先不開,也不要用同一份繁中內容套兩個 hreflang。

簡體中文 — zh-Hans

面向內地訪客與東南亞簡體用戶。注意 Shopify 的 Chinese (Simplified) 語言代碼輸出為 zh-CN,若你需要 zh-Hans 這種不綁地區的寫法,得在 theme 層自行 map。

英文(香港/新加坡)— en-HKen-SG

香港英文內容通常也適用新加坡、馬來西亞的 B2B 詢價。可以先用單一 en 作為 x-default 的搭配,再逐步分拆。

x-default

必備。指向你希望「無法匹配任何 hreflang 的使用者」落地的版本,通常是英文版或主網域首頁。

一個實務原則:每多開一個語言版本,就多一份要維護的內容債。Shopify 官方 Markets 文件建議按實際流量與轉換數據擴張市場,而不是一次全開。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

步驟一:在 Shopify Markets 建立市場結構

進入 Settings → Markets。Shopify 的 Markets 把「地區」與「語言」分成兩層:一個市場可以包含多個國家,每個市場可以有多個語言。

建議的香港基礎結構:

  1. Hong Kong SAR(主要市場):國家 = Hong Kong SAR,貨幣 = HKD,語言 = Traditional Chinese(預設)+ English + Simplified Chinese。
  2. Taiwan:貨幣 TWD,語言 Traditional Chinese。
  3. Southeast Asia:包含 Singapore、Malaysia,貨幣可設 USD 或分開,語言 English + Simplified Chinese。
  4. International(catch-all):其餘國家,語言 English。

選擇 URL 結構

在每個市場的 Domains and languages 設定中,Shopify 提供三種網域策略:

  • 子資料夾(Subfolder)example.com/zh-hk/example.com/en/。SEO 權重集中在同一網域,維護成本最低。多數香港商家的最佳選擇。
  • 子網域(Subdomain)hk.example.com。適合有獨立團隊營運不同市場的集團。
  • 獨立國家頂級網域(ccTLD)example.com.hkexample.tw。在地信任度最高,但每個網域要獨立累積權重,成本最高。

Google Search Central 的地區定位文件指出,ccTLD 是最強的地理定位訊號,但子目錄配合正確的 hreflang 同樣能被正確理解。除非你有集團級的多網域資源,否則子資料夾是投報率最好的起點。

設定完成後,語言版本的 URL 會長這樣:

1https://example.com/ → zh-Hant-HK(主要語言,無前綴)
2https://example.com/en/ → en-HK
3https://example.com/zh-cn/ → zh-Hans
4https://example.com/zh-tw/ → zh-Hant-TW(Taiwan 市場)

注意:主要語言預設沒有 URL 前綴。若你希望所有語言都有前綴(對某些分析工具較友善),需要把預設語言也設為非主要,或用 Shopify Function/redirect 處理——但這會犧牲首頁的簡潔度,一般不建議。

步驟二:用 Translate & Adapt 翻譯內容

安裝 Shopify 官方免費 App Translate & Adapt(Shopify App Store 提供,由 Shopify 自行維護)。它支援自動機器翻譯與手動覆寫,並直接寫入 Shopify 的 translation API,不需要第三方資料庫。

翻譯優先順序

不要一次翻全站。按 SEO 價值排序:

  1. 產品標題與描述product.titleproduct.body_html
  2. 產品 SEO title 與 meta descriptionproduct.metafields.global.title_tag / description_tag
  3. Collection 標題、描述與 SEO 欄位
  4. 導覽選單與 theme 文字locales/*.json
  5. 政策頁、FAQ、部落格

香港繁中的關鍵細節

機器翻譯把簡中轉繁中時,最常出錯的是詞彙而非字形。「質量」在香港應為「質素」、「軟件」而非「軟體」、「登陸」而非「登錄」。Translate & Adapt 的自動翻譯只做字形轉換時,這些都會漏。

實務做法:先用機器翻譯打底,再用 LLM 做一輪港式用語校正,最後由本地編輯抽查高流量頁面。Branch8 在一個香港多品牌餐飲集團的 Shopify Plus 專案中,就是用這種三段式流程處理繁中/簡中/英文三語內容——LLM 負責術語一致性與品牌詞表比對,人類編輯只審核前 100 個流量頁面與所有法務文案。機制上的重點是:術語表(glossary)要先固定,否則每次批次翻譯都會產生新的用詞漂移。

用 GraphQL 批次寫入翻譯

若你有大量 SKU,手動在 App 內編輯不切實際。用 Admin GraphQL API 的 translationsRegister mutation:

1mutation {
2 translationsRegister(
3 resourceId: "gid://shopify/Product/1234567890"
4 translations: [
5 {
6 locale: "zh-TW"
7 key: "title"
8 value: "純棉圓領短袖上衣"
9 translatableContentDigest: "<digest_from_query>"
10 }
11 {
12 locale: "zh-TW"
13 key: "meta_description"
14 value: "香港設計純棉上衣,門市自取或順豐到付,滿 HK$500 免運。"
15 translatableContentDigest: "<digest_from_query>"
16 }
17 ]
18 ) {
19 userErrors { field message }
20 translations { locale key value }
21 }
22}

translatableContentDigest 必須先透過 translatableResource query 取得,且來源內容一改動 digest 就會失效——這是 Shopify 防止覆寫過期翻譯的機制。建議把翻譯同步做成排程任務,每次執行前重新抓 digest。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

步驟三:檢查與修正 hreflang 輸出

Shopify OS 2.0 主題預設會在 theme.liquid 輸出 hreflang,但輸出的代碼未必符合你的規劃。先檢查現有程式碼。

開啟 layout/theme.liquid,尋找類似片段:

1{%- for locale in localization.available_languages -%}
2 <link rel="alternate" hreflang="{{ locale.iso_code }}" href="{{ canonical_url | localized_url: locale.iso_code }}">
3{%- endfor -%}

這段會輸出 Shopify 內建的 iso_code(如 zh-TWzh-CNen),但不會輸出地區組合(zh-Hant-HK)或 x-default

建議的完整 hreflang snippet

建立 snippets/hreflang-tags.liquid

1{%- comment -%} 語言代碼對應表:Shopify iso_code → 目標 hreflang {%- endcomment -%}
2{%- assign locale_map = 'zh-TW:zh-Hant-HK,zh-CN:zh-Hans,en:en-HK' -%}
3
4{%- for lang in localization.available_languages -%}
5 {%- assign mapped = lang.iso_code -%}
6 {%- for pair in locale_map | split: ',' -%}
7 {%- assign kv = pair | split: ':' -%}
8 {%- if kv[0] == lang.iso_code -%}
9 {%- assign mapped = kv[1] -%}
10 {%- endif -%}
11 {%- endfor -%}
12 <link rel="alternate"
13 hreflang="{{ mapped }}"
14 href="{{ request.origin }}{{ request.path | localized_url: lang.iso_code }}">
15{%- endfor -%}
16
17<link rel="alternate" hreflang="x-default"
18 href="{{ request.origin }}{{ request.path | localized_url: 'en' }}">

然後在 theme.liquid<head> 內呼叫:

1{% render 'hreflang-tags' %}

驗證輸出

用 curl 檢查實際 HTML:

1curl -s https://example.com/products/cotton-tee \
2 | grep -i 'hreflang'

預期輸出:

1<link rel="alternate" hreflang="zh-Hant-HK" href="https://example.com/products/cotton-tee">
2<link rel="alternate" hreflang="en-HK" href="https://example.com/en/products/cotton-tee">
3<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh-cn/products/cotton-tee">
4<link rel="alternate" hreflang="x-default" href="https://example.com/en/products/cotton-tee">

三個硬性規則(來自 Google Search Central 的 hreflang 文件):

  • 必須雙向:A 頁指向 B,B 也要指向 A。缺一邊,Google 會忽略整組標記。
  • 必須自我參照:每個版本的 hreflang 清單要包含自己。
  • 必須是絕對 URL:不能用相對路徑。

步驟四:處理 canonical 與 Markets 的重複內容

Shopify Markets 在同語言、不同市場的情況下(例如 /en/ 給香港、/en-sg/ 給新加坡)會產生近乎相同的頁面。Shopify 官方文件說明,Markets 會自動為 secondary market 的頁面加上指向 primary market 的 canonical——這通常是對的,但如果你希望新加坡英文頁獨立排名,就需要覆寫。

檢查目前輸出:

1curl -s https://example.com/en/products/cotton-tee | grep -i 'canonical'

若要讓每個語言版本自我 canonical,在 theme.liquid 中確認:

1<link rel="canonical" href="{{ canonical_url }}">

並確保 canonical_url 已包含語言前綴。若沒有,改用:

1<link rel="canonical" href="{{ request.origin }}{{ request.path }}">

取捨要講清楚:讓每個語言版本自我 canonical,能讓各語言獨立累積排名訊號;但若兩個版本內容 95% 相同(例如 en-HK 與 en-SG 只差運費說明),你可能是在稀釋權重而非累積。判斷標準是內容差異度與商業價值,不是「越多頁越好」。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

步驟五:讓 sitemap 與 robots 正確運作

Shopify 自動在 /sitemap.xml 產生 sitemap,且會為每個已發佈的語言版本產生對應條目。驗證:

1curl -s https://example.com/sitemap.xml
2curl -s https://example.com/en/sitemap.xml

若語言版本的 sitemap 回傳 404,代表該語言尚未在 Markets 中「發佈(Published)」,只是「草稿」狀態。回到 Settings → Markets → 該市場 → Languages,確認狀態為 Published。

自訂 robots.txt

Shopify 允許透過 templates/robots.txt.liquid 覆寫。常見需求是排除搜尋結果頁與過濾參數頁:

1{% for group in robots.default_groups %}
2 {{- group.user_agent }}
3 {% for rule in group.rules %}{{ rule }}
4 {% endfor %}
5 {%- if group.user_agent.value == '*' %}
6{{ 'Disallow: /*?filter*' }}
7{{ 'Disallow: /*?sort_by*' }}
8 {%- endif %}
9 {%- if group.sitemap %}{{ group.sitemap }}{% endif %}
10{% endfor %}

注意 Disallow 會阻止爬取但不會移除已索引的頁面。若要移除,用 noindex meta tag 而非 robots.txt。

步驟六:在 Google Search Console 驗證

  1. 新增 Domain propertyexample.com),用 DNS TXT 記錄驗證。這樣所有語言子資料夾都涵蓋在內。
  2. 提交 sitemap:https://example.com/sitemap.xml
  3. URL Inspection 逐一測試三個語言版本的同一產品頁,確認「Page indexing」顯示的 canonical 與你的預期一致。
  4. 檢查 Performance → Search results,用 Country 與 Query 維度分開看香港、台灣、新加坡的表現。

也要處理百度

若簡體版本是為內地客戶而設,Google Search Console 幫不了你。百度站長平台需要獨立提交 sitemap,且對 ICP 備案有要求——沒有內地主機與備案的境外網站,百度收錄速度與排名都會受限。這是很多香港商家忽略的落差:做了簡體翻譯,但流量來源假設錯了。實務上,針對內地客戶的簡體內容,經由微信生態或小紅書導流的投報率,往往高於期待百度自然搜尋。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

常見故障排除

hreflang 標記出現但 Search Console 報「no return tags」

最常見原因是 localized_url filter 在某些 template(尤其是 404、search、customer account 頁)回傳的 URL 不一致。解法:在 snippet 外層加條件,只在 product、collection、page、blog、index template 輸出 hreflang。

1{%- assign hreflang_templates = 'index,product,collection,page,blog,article' | split: ',' -%}
2{%- assign current = template.name -%}
3{%- if hreflang_templates contains current -%}
4 {% render 'hreflang-tags' %}
5{%- endif -%}

翻譯後的 meta description 沒有生效

Shopify 的 SEO 欄位存在 metafield(global.description_tag),而非 body_html。Translate & Adapt 需要你在「Search engine listing」分頁單獨翻譯。若用 API,key 是 meta_descriptionmeta_title,不是 description_tag

切換語言後跳回首頁

通常是 language selector form 缺少 return_to 參數。正確寫法:

1{% form 'localization', id: 'LanguageForm' %}
2 <input type="hidden" name="return_to" value="{{ request.path | escape }}">
3 {% for language in localization.available_languages %}
4 <button name="locale_code" value="{{ language.iso_code }}">
5 {{ language.endonym_name | capitalize }}
6 </button>
7 {% endfor %}
8{% endform %}

自動語言偏好彈窗影響索引

Shopify 的 geolocation 推薦彈窗(Geolocation app)本身不會阻擋爬蟲,但若你用第三方 App 做強制跳轉(based on IP),Googlebot 從美國 IP 爬取時會被導向英文版,導致繁中版本永遠不被索引。Google Search Central 明確建議不要對搜尋引擎做 IP 強制重新導向,改用可關閉的橫幅提示。

簡繁版本被判為重複內容

這通常不是真問題。Google 能區分不同字形的中文內容。若確實看到合併,檢查兩點:canonical 是否互相指錯、以及簡繁內容是否只做了字形轉換而沒有用詞在地化。

跨境團隊如何維護多語言 SEO?

多語言 SEO 的難處不在初次設定,而在持續維護。每上一批新品、每改一次 collection 描述,翻譯就會落後。

幾個可執行的做法:

  • 把翻譯納入 CI 流程:用 Shopify CLI 搭配 GitHub Actions,在 theme 部署時檢查 locales/*.json 是否有缺漏的 key。
  • 用 LLM 做一致性檢查而非產出:讓模型比對新譯文與既有術語表,標出偏離項給人審,比讓它從頭翻譯更可靠。
  • 按時區分工:香港與台灣團隊處理繁中,新加坡與馬來西亞團隊覆蓋英文與簡體東南亞用語,澳洲團隊接手 APAC 以外的英文市場。這是把 Asia-Pacific 的多語言人才密度轉成營運優勢的實際方式,而不只是成本考量。
  • 每季跑一次 hreflang 稽核:用 Screaming Frog 的 hreflang 報告,或 Ahrefs Site Audit 的 localization 檢查。

對美國、英國、歐盟的品牌來說,這也是把亞洲當成營運中樞的具體理由:一個位於香港或新加坡的團隊,能在同一個工作日內覆蓋日韓早盤、東南亞午盤與歐洲開市,而且對繁中、簡中、英文與東南亞市場的語言差異有第一手判斷力——這種判斷力很難靠遠端外包的翻譯供應商複製。

Ready to Transform Your Ecommerce Operations?

Branch8 specializes in ecommerce platform implementation and AI-powered automation solutions. Contact us today to discuss your ecommerce automation strategy.

上線前檢查清單

  1. Markets 中每個市場的語言狀態都是 Published,不是 Draft。
  2. 每個語言版本的 URL 前綴符合規劃,且可直接存取(非 302 跳轉)。
  3. curl | grep hreflang 在 product、collection、page 三種 template 都輸出完整且雙向的標記。
  4. x-default 存在且指向合理版本。
  5. 每個語言版本的 canonical 指向自己(或有意識地指向他處)。
  6. 產品 SEO title/meta description 已逐語言翻譯,非空白。
  7. /sitemap.xml 與各語言 sitemap 皆回傳 200。
  8. Search Console Domain property 已驗證並提交 sitemap。
  9. 語言切換器帶 return_to,切換後停留在同一頁。
  10. 沒有基於 IP 的強制跳轉。

Branch8 在香港、新加坡、台灣、澳洲等地的團隊,長期為區域品牌與進入亞洲市場的歐美品牌處理 Shopify Plus 多市場架構、翻譯流程自動化與跨境 SEO 稽核。若你的店面正要從單一語言擴展到多市場,或現有的 hreflang 設定始終無法通過 Search Console 檢查,歡迎與我們談談你的架構規劃。

Sources

FAQ

若你的目標客群在香港,應輸出 zh-Hant-HK:語言碼為中文、Script 標示繁體、地區碼指向香港。Shopify 內建的 iso_code 只會給出 zh-TW,因此需要在 theme 的 hreflang snippet 中做一次代碼對應。若同時經營台灣市場,則另開 zh-Hant-TW 並提供在地化用詞與 TWD 價格。

About the Author

Matt Li

Co-Founder & CEO, Branch8 & Second Talent

Matt Li is Co-Founder and CEO of Branch8, a Y Combinator-backed (S15) Adobe Solution Partner and e-commerce consultancy headquartered in Hong Kong, and Co-Founder of Second Talent, a global tech hiring platform ranked #1 in Global Hiring on G2. With 12 years of experience in e-commerce strategy, platform implementation, and digital operations, he has led delivery of Adobe Commerce Cloud projects for enterprise clients including Chow Sang Sang, HomePlus (HKBN), Maxim's, Hong Kong International Airport, Hotai/Toyota, and Evisu. Prior to founding Branch8, Matt served as Vice President of Mid-Market Enterprises at HSBC. He serves as Vice Chairman of the Hong Kong E-Commerce Business Association (HKEBA). A self-taught software engineer, Matt graduated from the University of Toronto with a Bachelor of Commerce in Finance and Economics.