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”:从 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