WPMLは、言語、翻訳、文字列のデータをカスタムデータベーステーブルに保存します。これらがWordPressのテーブルやコンテンツとどのように関連しているかについて説明します。
WPMLのデータベースモデル
次の図は、WPMLが使用するテーブルのモデルを示しています。

言語および翻訳テーブル
言語と翻訳の情報を保持するテーブルは、icl_translationsと呼ばれます。
- 翻訳可能として設定された各サイトコンテンツ要素(投稿、ページ、タグ、カテゴリー、カスタム投稿タイプ、カスタムタクソノミー)は、このテーブルにエントリを持ちます。注:コメントは翻訳不可ですが、言語情報が割り当てられているため、icl_translationsにレコードを持ちます。
- エントリは、アイテムの言語とそれが属する翻訳グループ(要素タイプ)を指定します。
- 同じ翻訳クラスターのエントリは、element_type列とtrid列で同じ値を共有します。
- 同じクラスター内で翻訳元言語がない(NULL)エントリが元のエントリです。
このテーブルには以下の列があります。
- translation_id – シリアル番号
- element_type – 要素のタイプ。この値はフックwpml_element_typeで説明および取得されます。
- element_id – アイテムのID(投稿タイプの場合はpost_id、タクソノミータームの場合はterm_taxonomy_id)
- trid – 翻訳グループのID
- language_code – アイテムの言語コード
- source_language_code – 翻訳されている場合、元のアイテムの言語
たとえば、ID=3の英語の投稿があり、それがスペイン語に翻訳され、スペイン語の翻訳のIDが7である場合、icl_translationsテーブルは次のようになります。
| translation_id | element_type | element_id | trid | language_code | source_language_code |
|---|---|---|---|---|---|
| 1 | post_post | 3 | 2 | en | NULL |
| 2 | post_post | 7 | 2 | es | en |
| * 2つのエントリはtridに同じtrid値を持つため、互いの翻訳となります。値自体は重要ではありません。 | |||||

古いサイト(WPML 4.8より前に作成されたサイト)では、1回限りのプロセスを実行して翻訳テーブルを最適化できます。
国旗テーブル
WPMLには国旗の大きなコレクションが付属しています。言語を国と関連付けることには問題がある場合があることに注意してください。多くの言語は、さまざまな国で(時には異なる形で)話されています。ただし、国旗は依然として役立つ視覚的な手がかりであり、訪問者が自分の言語を簡単に見つけるのに役立ちます。
WPMLの国旗はres/flagsディレクトリに保存されており、icl_flagsテーブルは各国に対してどの国旗を返すかを示します。icl_flagsテーブルの列は次のとおりです。
- id – シリアル番号
- lang_code – 言語コード
- flag – 国旗ファイルの名前
- from_template – 「0」:WPMLのres/flagsフォルダーから国旗を取得、「1」:テーマディレクトリから国旗を取得
別の国旗を使用したい場合は、WPML → 言語に移動し、言語を編集をクリックして、カスタム国旗ファイルをアップロードできます。

この同じ言語を編集ページを使用して、カスタム言語を追加することもできます。
文字列翻訳テーブル
ほとんどのWordPressサイトには、どのアイテム(投稿、ページ、タグ、カテゴリー)にも属さないものの、翻訳する必要がある文字列(ブログのキャッチフレーズなど)が含まれています。
WPMLには、これらの文字列を処理するための文字列翻訳と呼ばれるメカニズムが含まれています。
文字列は、以下の列を持つicl_stringsテーブルに保持されます。
- id – シリアル番号
- language – 言語
- context – 文字列のコンテキスト(文字列が何に属しているかを示す)
- name – 文字列の名前
- value – 文字列の値(そのコンテンツ)
- string_package_id - 文字列が属するパッケージのID
- type – 翻訳エディタを介して文字列を編集するときに使用するエディタのタイプ(LINE、AREA、またはVISUAL)
- title – 翻訳エディタに表示する文字列のタイトル
- status – 文字列がすべての言語に完全に翻訳されているかどうかを示す翻訳ステータス
- gettext_context – gettext関数で設定されたコンテキスト(例:_x)
- domain_name_context_md5 – 検索パフォーマンスを向上させるための一意のキー
文字列の翻訳は、icl_string_translationsテーブルに保持されます。
- id – シリアル番号
- string_id – 翻訳される文字列のID(シリアル番号)
- language – 翻訳の言語
- status – 翻訳のステータス(完了 / 未完了)
- value – 翻訳自体
- translator_id – 翻訳者のID
- translation_service – 文字列の翻訳に使用される翻訳サービス。空、ローカル、またはリモートサービスになります。
- batch_id – 文字列が翻訳サービスによって翻訳される際のバッチのID
- translation_date – 翻訳の日付

すべてのWPMLテーブル
WPMLが使用するすべてのテーブルの完全なリストは次のとおりです。
wp_icl_background_taskwp_icl_content_statuswp_icl_core_statuswp_icl_flagswp_icl_languageswp_icl_languages_translationswp_icl_locale_mapwp_icl_message_statuswp_icl_mo_files_domainswp_icl_nodewp_icl_reminderswp_icl_stringswp_icl_string_batcheswp_icl_string_packageswp_icl_string_positionswp_icl_string_statuswp_icl_string_translationswp_icl_translatewp_icl_translate_jobwp_icl_translationswp_icl_translation_batcheswp_icl_translation_downloadswp_icl_translation_status