翻訳への貢献
WCPOSは現在10のロケールの翻訳を同梱しており、さらに多くの言語に対応する余地があります。翻訳の貢献を歓迎します。すべてを翻訳する必要はなく、開発者である必要もありません。このページでは、翻訳対象と翻訳方法について説明します。
翻訳が格納される4つの場所
WCPOSの翻訳可能な文字列は4つのリポジトリに分散しており、それぞれ独自の貢献フローがあります。どれか1つだけに貢献することも可能です。
WordPressプラグイン(PHP文字列)
管理者通知、設定ページのラベル、エラーメッセージ、WP管理画面のUI。**translate.wordpress.org**でGlotPressを使用して翻訳します(WordPress標準の翻訳フローです)。コーディングは不要です。
POSアプリ(React/i18next)
レジでスタッフが目にするすべての要素 — ボタン、ダイアログ、エラーメッセージ、カートや会計画面のUI。翻訳ファイルはwcpos/monorepoリポジトリにあり、プルリクエストで貢献できます。GitHubの基本的な操作に慣れていると便利です。
WP管理画面のReact画面
新しいReactベースの設定画面、店舗エディタ、テンプレート、拡張機能、ログページ。翻訳はJSONファイルとしてwcpos/woocommerce-pos(Pro画面はwoocommerce-pos-pro)に格納されています。GitHubの基本的な操作に慣れていると便利です。
このドキュメント(Docusaurus)
現在ご覧になっているこのドキュメントサイトです。翻訳済みの MDX ファイルは wcpos/docs リポジトリの i18n/<locale>/に配置されています。プルリクエストで貢献できます。Markdown の知識があると役立ちます。
WordPress プラグインの文字列(最も手軽に始められる方法)
WordPress プラグインの翻訳が初めての方には、最もスムーズに始められる方法です:
- translate.wordpress.org/projects/wp-plugins/woocommerce-pos/ でお使いの言語を探してください — WordPress がサポートするすべてのロケールにサブプロジェクトがあります。
- WordPress.org アカウント(サポートフォーラムへのコメントに使用するものと同じ)でサインインしてください。アカウントをお持ちでない場合は無料で作成できます。
- サブプロジェクトを選択してください — 通常、以下が表示されます:
- Stable(最新リリース) — 現在の公開バージョンに含まれる文字列です。ここでの翻訳は、プラグインを更新したすべてのサイトに反映されます。
- Development(trunk) — 次のリリースに含まれる文字列です。次バージョンのリリース前に翻訳を済ませておくことができます。
- Stable Readme / Development Readme — WordPress.org に表示されるプラグインの説明文です。
- GlotPress の UI から文字列を1つずつ翻訳を送信してください。送信された翻訳はプロジェクト翻訳エディター(PTE)が承認するまで提案ステータスとなります。
- PTEになる — いくつかの翻訳が承認された後、WordPress polyglots Slackで申請してください。PTEはレビューを待たずに翻訳を直接承認できます。
翻訳が承認されると、そのロケールのすべてのWCPOSユーザーに自動的に配信されます。コード変更もPRも不要です。
POSアプリの翻訳(React UI)
レジ担当者向けUIは、翻訳にi18nextを使用するReactアプリで、v1.8.8で刷新されました。翻訳ファイルはwcpos/monorepoリポジトリ(クロスプラットフォームPOSコア)にJSONとして格納されています。
このセットアップには2つの便利な機能があります:
- オンデマンド読み込み — アクティブなロケールのみが実行時に(jsDelivrのCDNから)取得されるため、言語を追加しても他のユーザーのダウンロードサイズが増加することはありません。
- 地域フォールバック — i18nextのJSONファイル名にはアンダースコアが使用されます:
pt_BRはptに、es_MXはesにフォールバックします。ドキュメントやWebの言語タグにはハイフンが使用され、pt-BRやes-MXのようになります。翻訳JSONファイルにはアンダースコア形式を、言語タグが必要な箇所にはハイフン形式を使用してください。
貢献するには:
- enソースファイルを見つける:
wcpos/monorepoの翻訳パッケージディレクトリ内にあります(正確なパスは異なります。新しい翻訳を始めるには、リポジトリでIssueを作成し、コピーすべきファイルを確認するのが最も簡単です)。 - コピー
en.jsonを<your-locale>.json:i18nextのJSONロケール規則に従います(fr.json、de.json、pt_BR.jsonなど、地域別ファイル名にはアンダースコアを使用します)。 - 値を翻訳してください。キーおよび
{{interpolation}}プレースホルダーはそのまま残してください。 - モノレポに対してプルリクエストを送信してください。CIがJSON構造を検証します。
既存の翻訳を軽微に修正する場合は、GitHub上で鉛筆アイコンからJSONファイルを直接編集できます — GitHubが自動的にPRを作成します。
WP Admin React画面
WordPress管理設定、店舗エディター、テンプレートページ、拡張機能カタログ、およびログは、すべてPOSアプリと同じ翻訳パターンを使用しますが、2つの別々のリポジトリに格納されています:
- 無料版管理画面 —
wcpos/woocommerce-posリポジトリ、packages/settings/src/translations/locales/<locale>/wp-admin-settings.json(他の管理パッケージにも同様のパスがあります。地域別JSONロケールには、pt_BRのようなアンダースコアのロケールフォルダーを使用してください)。 - Pro管理画面 —
wcpos/woocommerce-pos-proリポジトリにあり、同じパターンです(例:packages/store-edit/src/translations/locales/<locale>/wp-admin-store-edit.json、アンダースコア区切りのロケールフォルダはpt_BR)。
貢献の流れはPOSアプリと同じです: en.json を <your-locale>.jsonにコピーし、翻訳してPRを作成します。
ドキュメント(このページ)
ドキュメントサイトではDocusaurusの標準i18nセットアップを使用しています。翻訳済みのMDXファイルはwcpos/docsリポジトリの i18n/<locale>/docusaurus-plugin-content-docs/current/以下に配置されています。 versioned_docs/version-1.x/ 内の各英語ページには、有効な翻訳ロケールごとに対応するページがあります。
サイトにはすでに自動翻訳ツールが用意されています。pnpm translateスクリプトがOpenAI / Anthropic APIを使用して英語から翻訳の下書きを作成し、人間のレビュアーが仕上げを行います。一般的な貢献の流れは以下のとおりです:
- 翻訳や改善が必要なページを選択してください。サイトフッターの言語セレクターで、有効な言語を確認できます。
- 以下のディレクトリにある対応する MDX ファイルを編集してください。
i18n/<locale>/...各ページ下部のEdit this pageリンクから GitHub 上で直接編集できます。 - プルリクエストを送信してください。 レビュー担当者が翻訳の正確性を確認し、マージします。
大規模な貢献(セクション全体の翻訳や新しいロケールの追加など)の場合は、チームと調整するために先に Issue を作成してください。
WCPOS で使用されるロケールコード
WCPOS は現在、以下の 10 ロケールに対応しています。ドキュメントの表では地域ロケールにハイフン付きの言語タグを使用していますが、i18next の JSON ファイルでは同等のアンダースコア形式を使用してください(例:pt_BR は pt-BR、zh_CN は zh-CN)。
| コード | 言語 |
|---|---|
ar | アラビア語 (右から左) |
de | ドイツ語 |
es | スペイン語 |
fr | フランス語 |
hi-IN | ヒンディー語(インド) |
it | イタリア語 |
ja | 日本語 |
ko | 韓国語 |
pt-BR | ポルトガル語(ブラジル) |
zh-CN | 中国語(簡体字) |
お使いの言語がリストにない場合は、翻訳を始めたいリポジトリで Issue を作成してください。ロケールの設定を行います。
翻訳者向けのヒント
- プレースホルダーはそのまま維持してください。 文字列には多くの場合
{{variable}}、%s、%d、または<strong>タグ — 周囲のテキストは翻訳しますが、プレースホルダーはそのまま残してください。WCPOSは実行時にこれらのプレースホルダーに実際の値を挿入します。 - 既存のトーンに合わせてください。 WCPOSのドキュメントとUIは、意図的に実用的で簡潔なスタイルです。英語で*「Add Coupon」*と表記されている場合、翻訳はそのロケールで同様のボタンに使用される動詞形にしてください — 名詞形ではありません。
- 可能であれば実際の画面で確認してください。 WordPressサイトを対象のロケールに設定し、プラグインをインストールして、実際のUIで文字列が正しく表示されるか確認してください。コンテキストが重要です — ある画面では収まる文字列でも、別の画面では不自然に折り返されることがあります。
- コード、URL、技術的なIDは翻訳しないでください。 クーポンコード、ゲートウェイID、ロケールコード、ファイルパス、ショートコードは英語のままにしてください。判断に迷う場合は、翻訳せずにそのまま残してください — システムが依存するものを壊すよりも安全です。
- 右から左(RTL)の言語 — アラビア語、ヘブライ語、ペルシア語、ウルドゥー語 — では、レシートテンプレートもRTL対応に設定する必要があります。WCPOSにはRTLレシートテンプレートがバンドルされています。ギャラリーについてはレシートのカスタマイズを参照してください。
ヘルプの問い合わせ先
- WordPress.org polyglots Slack — GlotPress関連の質問向け
- WCPOS Discord — WCPOS固有の翻訳に関する議論向け(招待リンク)
- GitHubイシュー — リポジトリ固有の質問は、該当するリポジトリ(
woocommerce-pos、woocommerce-pos-pro、monorepo、またはdocs)に提出してください