設定の翻訳(schema locales)と文言のtフィルタ
schemaのラベルとストアフロントの文言を翻訳ファイルに切り出し、多言語対応と運用者向けの日本語UIを両立できる
最終確認: 2026-09
解説
受託の現場でなぜ必要か: この回では、schemaのラベルとストアフロントの文言を、翻訳ファイルに切り出せるようになります。
受託では「カートに入れる」を直書きすると運用者が文言を変えられないので、日本語だけのストアでも翻訳ファイルに切り出します。
翻訳ファイルは2種類ある
locales/ja.jsonはストアフロントの文言で、運用者が言語エディタで編集できます。locales/ja.schema.jsonはテーマエディタの設定ラベルです。*.default.jsonと*.default.schema.jsonが、それぞれ1つ必須です。
schemaのラベルはt:で引く
"label": "t:sections.hero.settings.heading.label"のようにt:で始めると、schema用のファイルから引かれます。name / label / info / placeholder / unit、optionsのlabel、presetsのnameとcategory、テキスト系のdefaultが対応します。
ストアフロントの文言はtフィルタで引く
{{ 'products.product.add_to_cart' | t }}で、locales/ja.jsonから引きます。
変数はt: name: customer.first_nameのように渡します。
HTMLを含む文言は、キーを_htmlで終えます(escapeされません)。
発展:複数形と、翻訳が無いときの表示
複数形は{{ 'cart.count' | t: count: cart.item_count }}でone / otherを切り替え、{{ count }}を埋め込みます(CLDRのzero / two / few / manyも使えます)。
日本語はotherだけでよいのですが、英語化を見越してoneも書きます。
翻訳が無いキーは、ストアフロントにTranslation missing: ja.〜という文字列がそのまま出ます。
目立つのですぐ気づきますが、公開前に必ず確認します。
※ ShopifyはShopify Inc.の商標です。本サイトは個人が制作した非公式の学習教材であり、同社の承認・提携・後援を受けていません。記載内容は2026-09時点のものです。料金・上限値・管理画面のラベルは変わるため、作業の前に公式ドキュメントで確認してください。