調査検討結果をメモとして。
前提
- Shopifyの開発ストア使用
- 言語は日本語(デフォルト)と英語を設定
- 日本語はexample.comと想定
- 英語はexample.com/en/(サブディレクトリ型)と想定
- マーケットは日本(主要)と国際を想定
上記前提で以下の状態になることを目的とします。
- 日本マーケットに日本語のみ、国際マーケットに英語のみを追加し、「1マーケット1言語」の形で、マーケットと言語を連動させる
- 言語スイッチャーで「日本語」を選べば日本マーケットのexample.comを表示
- 言語スイッチャーで「英語」を選べば日本マーケットのexample.com/en/を表示
補足
上記は以下のような要望への対応のために考えた方法でした。
- 日本語の時のみ販売する商品や、英語の時のみ販売する商品を設定する
上記をShopifyサポートに相談するとマーケットの利用が適切だと勧められたので検討をはじました。
結論
サポートに確認して実際に試したところ以下の結論になりました。
- 実現困難、または不可能
言語とマーケットを連動させる形はShopifyの想定にはなく、実現は諦めた方がよいと思われます。
調査試作結果
以下に調べたことなどを記載します。
- マーケットにサブドメインを指定すると、国コードが必要になる
-
国際マーケットに言語コードのみの/en/は指定できません。
指定できるのは「言語コード+国コード」のみとなります。
具体的には、アメリカ合衆国の/en-us/や、国際の/en-intl/(Shopifyサポートが国際用国コードとして提示)などであり、/en/のみをマーケットに指定することはできません。「/fr」や「/en」といった言語のみのサブフォルダーは、主要マーケットでのみ使用できます。サブマーケットでは、サブフォルダで言語コードと国コードを組み合わせて、現地の言語と通貨でカスタマイズされたコンテンツを表示する必要があります。「/fr-ca」や「/en-eu」がその一例です。
引用冒頭では/frや/enが主要マーケットに設定できるように読めますが、後述するように実現不可に思えます。
そのためおそらく「オンラインストア自体のプライマリードメインがexampl.comではなく、example.com/frやexample.com/enで設定した場合」ではないかなと思われます。
ただし何らかの方法があるかもしれないため確証はありません。
- 主要マーケットを1言語にするには、言語+国コードのサブディレクトリを設定する必要がある
-
日本マーケットに日本語だけを設定したい場合、マーケットで「ドメイン/言語」を追加し、「/jp-ja/」のように国コードを設定する必要があります。
日本マーケットに「ドメイン/言語」を追加しない場合、ストアで使用できる全言語が使用できる状態にしかできません。主要マーケットを「/jp-ja/」で設定した場合、ベースドメイン(例:example.com)にアクセスすると、アクセス地の国に基づいて自動で日本マーケット(/jp-ja/)か国際マーケット(/en-intl/)にリダイレクトされるため、ベースドメインにアクセスできなくなります。
Shopifyサポートの説明としては、ベースドメインのexample.comと日本マーケットのexample.com/ja-jp/は重複コンテンツにならないそうです。
- Shopify製テーマの言語スイッチャーの不具合
-
- 日本マーケット/日本語のみ//jp-ja/
- 国際マーケット/英語のみ//en-intl/
上記の状態でオンライストアにて言語スイッチャーを操作すると以下のようになります。
- /jp-ja/で「英語」を選択すると/jp-ja/に移動
- /en-intl/で「日本語」を選択すると/jp-ja/に移動
つまり主要マーケットの日本語表示時には、言語スイッチャーで英語を選択しても正常に動作しないという結果になりました。
Shopifyサポートに対応策を質問すると、スイッチャーの独自開発かサードパーティ製のアプリで対応することを提示されました。
補足
言語による商品の出し分け
言語によって商品の表示を制限する方法としてマーケットが使用できない以上、別の方法を考える必要があります。
自信はありませんが以下が考えら得ると思います。
- テーマファイルを独自にカスタマイズ
- アプリ(例:Locksmithのキーのcustom Liquidの利用)
上記はいずれもliquidによる言語判定を利用しますが、それぞれ長所短所があり、個人的にはアプリを使う方が良いと考えます。
- テーマファイルを独自にカスタマイズするとアプリ利用料はかからないが、アップデート時に作業必須になったり、実装方法の検討が必要だったり(どこにどのタイミングでどのように制限をかけるかなど)、抜け漏れから購入できてしまう可能性が残る
- Locksmithなどのアプリを使うとおそらく抜け漏れは防げる上に簡易に実装できる可能性が高いが、アプリ利用料が必要になる
マーケットでの言語追加
特定のマーケットを選び「ドメイン/言語」を追加後、「カスタマイズ済み」セクションでグレー背景のドメインをクリックすると言語が追加できます。
この時に追加されるのはストアに対してであって、特定のマーケットにのみ言語を追加できるような仕様ではありません。
マーケットと「ドメイン/言語」
マーケット単位で「ドメイン/言語」にてサブディレクトを追加して言語を削除した場合、希望しないURLの状態になったり、言語スイッチャーの動作がおかしくなることを確認しました。
この点から、マーケット設定時に言語を削除することは避けた方が良いかもしれません。
正常に言語リストが表示され、正常に動作する可能性はありますが、今のところ怪しい印象です。
ただし、以下のようにマーケット単位でデフォルト言語を変更するには「ドメイン/言語」にてサブディレクトを追加する必要があり、状況次第ではあります。
マーケットの言語を管理する前に、サブフォルダまたはドメインとサブドメインを使用して国際ドメインを作成する必要があります。
マーケットのデフォルト言語を変更する
デフォルトでは、各マーケットはストアのデフォルトと同じデフォルト言語を使用します。各マーケットのデフォルト言語を別の言語に変更できます。手順:
- 管理画面から、[設定] > [マーケット] に移動します。
- 言語を管理するマーケットをクリックします。
- [言語とドメイン] をクリックします。
- マーケットの現在のデフォルト言語の横にある […] アイコンをクリックします。
- [デフォルトとして設定する] をクリックします。
引用内の国際ドメインとは以下を指すようです。
結び
Shopifyは便利ではありますが、当然ながら全てが実現できるというわけではなく、今回の目的は達成不能と判断せざるをえません。
ヘッドレスで構築して色々と細かく制御できるのであれば対応できるのかもしれませんが、少なくともオンラインストアチャネルではこのような結論となりそうです。
0人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。



