WPML lưu trữ dữ liệu ngôn ngữ, bản dịch và chuỗi văn bản trong các bảng cơ sở dữ liệu tùy chỉnh. Hãy tìm hiểu cách các bảng này kết nối với các bảng và nội dung của WordPress.
Mô hình cơ sở dữ liệu của WPML
Sơ đồ sau đây cho thấy mô hình của các bảng mà WPML sử dụng:

Bảng ngôn ngữ và bản dịch
Bảng chứa thông tin ngôn ngữ và bản dịch được gọi là icl_translations.
- Mỗi phần tử nội dung trang web được cấu hình là có thể dịch (bài viết, trang, thẻ, chuyên mục, loại nội dung tùy chỉnh và phân loại tùy chỉnh) đều có một mục nhập trong bảng này. Lưu ý: Bình luận không thể dịch được nhưng chúng có một bản ghi trong icl_translations vì chúng được gán thông tin ngôn ngữ.
- Mục nhập chỉ định ngôn ngữ của mục và nhóm bản dịch (loại phần tử) mà nó thuộc về.
- Các mục nhập của cùng một cụm bản dịch chia sẻ cùng một giá trị trong các cột element_type và trid.
- Mục nhập không có ngôn ngữ nguồn (NULL) trong cùng một cụm là mục nhập gốc.
Bảng này có các cột sau:
- translation_id – số sê-ri
- element_type – loại của phần tử. Giá trị này được giải thích và truy xuất trong hook wpml_element_type.
- element_id – ID của mục (post_id cho các loại bài viết, term_taxonomy_id cho các thuật ngữ phân loại)
- trid – ID của nhóm bản dịch
- language_code – mã ngôn ngữ của mục
- source_language_code – nếu được dịch, đây là ngôn ngữ của mục gốc
Ví dụ: nếu chúng ta có một bài viết tiếng Anh với ID=3, được dịch sang tiếng Tây Ban Nha và bản dịch tiếng Tây Ban Nha có ID=7, bảng icl_translations sẽ trông như thế này:
| 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 |
| * Vì hai mục nhập có cùng giá trị trid cho trid, nên chúng là bản dịch của nhau. Bản thân giá trị này không quan trọng. | |||||

Trên các trang web cũ hơn (được tạo trước WPML 4.8), bạn có thể chạy quy trình một lần để tối ưu hóa các bảng bản dịch.
Bảng cờ quốc gia
WPML đi kèm với một bộ sưu tập lớn các lá cờ quốc gia. Hãy lưu ý rằng việc liên kết ngôn ngữ với quốc gia có thể gây ra vấn đề. Nhiều ngôn ngữ được sử dụng (đôi khi theo những cách khác nhau) ở các quốc gia khác nhau. Tuy nhiên, cờ quốc gia vẫn là một dấu hiệu trực quan hữu ích và giúp khách truy cập dễ dàng nhận ra ngôn ngữ của họ.
Cờ quốc gia của WPML được lưu trữ trong thư mục res/flags và bảng icl_flags cho biết cờ nào sẽ được trả về cho từng quốc gia. Các cột của bảng icl_flags là:
- id – số sê-ri
- lang_code – mã ngôn ngữ
- flag – tên của tệp cờ
- from_template – “0”: lấy cờ từ thư mục res/flags của WPML, “1”: lấy cờ từ thư mục giao diện
Nếu bạn muốn sử dụng một lá cờ khác, bạn có thể tải lên tệp cờ tùy chỉnh bằng cách truy cập WPML → Ngôn ngữ và nhấp vào Chỉnh sửa ngôn ngữ.

Bạn có thể sử dụng chính trang Chỉnh sửa ngôn ngữ này để thêm một ngôn ngữ tùy chỉnh.
Bảng dịch chuỗi
Hầu hết các trang web WordPress đều bao gồm một số chuỗi không thuộc về bất kỳ mục nào (bài viết, trang, thẻ, chuyên mục) nhưng vẫn cần được dịch – ví dụ: khẩu hiệu của blog.
WPML bao gồm một cơ chế gọi là Dịch chuỗi, để xử lý các chuỗi này.
Các chuỗi được lưu giữ trong bảng icl_strings với các cột sau:
- id – số sê-ri
- language – ngôn ngữ
- context – ngữ cảnh của chuỗi (chỉ ra chuỗi thuộc về cái gì)
- name – tên của chuỗi
- value – giá trị của chuỗi (nội dung của nó)
- string_package_id - ID của gói mà chuỗi thuộc về
- type – loại trình soạn thảo được sử dụng khi chỉnh sửa chuỗi thông qua trình biên tập dịch thuật ( LINE, AREA hoặc VISUAL )
- title – tiêu đề của chuỗi để hiển thị trong trình biên tập dịch thuật
- status – trạng thái bản dịch cho biết chuỗi đã được dịch đầy đủ sang tất cả các ngôn ngữ hay chưa
- gettext_context – ngữ cảnh được đặt trong hàm gettext, ví dụ _x
- domain_name_context_md5 – khóa duy nhất để cải thiện hiệu suất tra cứu
Các bản dịch của một chuỗi được lưu giữ trong bảng icl_string_translations:
- id – số sê-ri
- string_id – ID (số sê-ri) của chuỗi đang được dịch
- language – ngôn ngữ của bản dịch
- status – trạng thái của bản dịch (hoàn thành / chưa hoàn thành)
- value – bản thân bản dịch
- translator_id – id của người dịch
- translation_service – dịch vụ dịch thuật được sử dụng để dịch chuỗi. Có thể để trống, là dịch vụ cục bộ hoặc dịch vụ từ xa
- batch_id – ID của lô khi một chuỗi được dịch bởi một dịch vụ dịch thuật
- translation_date – ngày dịch

Tất cả các bảng của WPML
Dưới đây là danh sách đầy đủ của tất cả các bảng mà WPML sử dụng:
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