必要になるたびに検索して試して表示されない。と悩むのでメモとして。
実現したいこと
- Shopifyで言語や国を判定する
- 言語はサブディレクトリ型で設定(サブドメイン型でも同じはず)
- マーケットで国と言語を設定
サンプルコード2
言語を判定する
{%- liquid
case request.locale.iso_code
when 'en'
echo '英語'
when 'ja'
echo '日本語'
else
echo 'その他'
endcase
-%}
国を判定する
{%- liquid
case localization.country.iso_code
when 'US'
echo 'US(アメリカ合衆国)'
when 'JP'
echo '日本'
else
echo 'その他'
endcase
-%}
ストアデフォルト言語
{{ shop.published_locales | where: 'primary', true | map: 'iso_code' | first }}
多少強引ですが上記でストアのデフォルト言語のisoコードを取得可能でした。
もっと簡単に取得できるのではと思いますが、調べた範囲では取得方法が分かりませんでした。
上記を利用して以下のようにデフォルト言語の時のみ出力する内容を変更することが可能です。
{% liquid
assign resuest_lang = request.locale.iso_code
assign shop_locale_lang = shop.published_locales | where: 'primary', true | map: 'iso_code' | first
if resuest_lang == shop_locale_lang
echo 'デフォルト言語'
else
echo '追加言語'
endif
%}
参考URL
- Liquid objects: request
- Liquid objects: shop_locale
- Liquid objects: localization
- Liquid objects: country
- 国名コード一覧 – 国立国会図書館サーチ
マーケットによる判定
- Determine the `market` from a liquid template – Shopify Community
- Liquid objects: localization
- Liquid objects: market
{{ localization.market.handle }}
上記でハンドルが取得できるようです。
結び
国も言語も最終的にはiso_codeを用いますが、それぞれ別のオブジェクトからアクセスする必要があるようです。
1人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。