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 |
| * Поскольку две записи имеют одинаковое значение trid, они являются переводами друг друга. Само по себе значение неважно. | |||||

На старых сайтах (созданных до WPML 4.8) Вы можете запустить однократный процесс, чтобы оптимизировать таблицы переводов.
Таблица флагов стран
В комплект WPML входит большая коллекция флагов стран. Имейте в виду, что связывание языков со странами может быть проблематичным. На многих языках говорят (иногда по-разному) в разных странах. Тем не менее, флаги стран по-прежнему являются полезным визуальным ориентиром и помогают посетителям легко находить свой язык.
Флаги стран WPML хранятся в каталоге res/flags, а таблица icl_flags указывает, какой флаг возвращать для каждой страны. Столбцы таблицы icl_flags:
- id — порядковый номер
- lang_code — код языка
- flag — имя файла флага
- from_template — «0»: взять флаг из папки res/flags WPML, «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