Gutenberg
Hỗ trợ Gutenberg được tích hợp sẵn, cho phép dịch tất cả các khối trong nội dung Gutenberg của bạn.
Gato AI Translations for Polylang trích xuất các chuỗi từ các khối trong nội dung Gutenberg và chỉ dịch những chuỗi đó, đảm bảo rằng nội dung không bị hỏng theo bất kỳ cách nào.
Mặc định, các loại khối sau được hỗ trợ tự động:
- Các khối core của WordPress
- Các khối chỉ dùng PHP
- Các khối Advanced Custom Fields (ACF)
- Tất cả các khối đi kèm
wpml-config.xml - Các khối của bên thứ ba:
- Kadence Blocks
- Greenshift blocks
- GenerateBlocks blocks
- Yoast SEO blocks
Các khối core WordPress được hỗ trợ
Các khối core WordPress sau được hỗ trợ mặc định:
core/audiocore/block(tức là các pattern đồng bộ)core/buttoncore/covercore/embedcore/headingcore/htmlcore/imagecore/listcore/list-itemcore/media-textcore/paragraphcore/preformattedcore/pullquotecore/quotecore/tablecore/versecore/video
Các khối chỉ dùng PHP
Từ WordPress 7.0, các khối có thể được đăng ký là chỉ PHP (không có bundle JavaScript). Gato AI Translations for Polylang xử lý chúng giống như bất kỳ khối nào khác: chúng được hỗ trợ mặc định, không cần cấu hình thêm.
Tất cả các thuộc tính kiểu string (khác với enum và các kiểu vô hướng khác) được tự động đăng ký để dịch.
Nếu một trường cụ thể không được dịch, bạn có thể loại trừ nó thông qua hook gatompl:gutenberg_block_type_translatable_attribute_regexes bằng cách đặt giá trị thành false (hoặc dùng unset):
add_filter(
'gatompl:gutenberg_block_type_translatable_attribute_regexes',
static function (array $regexes): array {
// Either of these works:
unset($regexes['my-plugin/alert']['header']);
$regexes['my-plugin/alert']['implications'] = false;
return $regexes;
}
);Các khối Advanced Custom Fields (ACF)
Các khối được đăng ký qua Advanced Custom Fields cũng được hỗ trợ mặc định. Có 3 cách để đăng ký một trường ACF cho việc dịch:
1. Tự động cho tất cả các trường (qua trang Settings)
Vào trang Settings, trong Plugin Integration Configuration > Advanced Custom Fields, và bật tùy chọn Translate ACF blocks automatically?:

Khi được bật, mọi trường chuỗi có thể dịch trong mọi khối ACF đều được gửi đi để dịch. Nếu một trường cụ thể không được dịch, hãy loại trừ nó qua hook ACF tiêu chuẩn acf/load_field, đặt gatompl thành 'skip':
// Disable translation for a single field by key
add_filter(
'acf/load_field/key=product_card_sku',
static function (array|false $field): array|false {
if (is_array($field)) {
$field['gatompl'] = 'skip';
}
return $field;
}
);
// Or disable several fields at once
add_filter(
'acf/load_field',
static function (array|false $field): array|false {
if (
is_array($field) && in_array($field['key'] ?? null, [
'product_card_feature_title',
'product_card_specs_dimensions',
'product_card_section_text_heading',
])
) {
$field['gatompl'] = 'skip';
}
return $field;
}
);2. Từng trường một (qua cấu hình nhóm trường ACF)
Khi định nghĩa nhóm trường với acf_add_local_field_group(), thêm 'gatompl' => 'translate' trực tiếp vào mỗi trường bạn muốn dịch:
acf_add_local_field_group([
'key' => 'group_testimonial',
'title' => 'Testimonial Block',
'fields' => [
[
'key' => 'testimonial_text',
'label' => 'Testimonial',
'name' => 'testimonial',
'type' => 'textarea',
'gatompl' => 'translate',
],
[
'key' => 'testimonial_role',
'label' => 'Role',
'name' => 'role',
'type' => 'text',
// Option-array form — equivalent to `'gatompl' => 'translate'`,
// but leaves room for future plugin-side options on the same field
'gatompl' => [
'translation_configuration' => 'translate',
],
],
[
'key' => 'testimonial_featured_post',
'label' => 'Featured post',
'name' => 'featured_post',
'type' => 'post_object',
'post_type' => ['post'],
'return_format' => 'object',
'gatompl' => 'translate', // The referenced post ID is remapped to the target-language post
],
],
'location' => [
[
[
'param' => 'block',
'operator' => '==',
'value' => 'acf/testimonial',
],
],
],
]);Điều này cũng áp dụng cho các trường post_object, relationship, taxonomy, image, gallery và repeater: plugin sẽ theo dõi các đường dẫn repeater lồng nhau đến bất kỳ độ sâu nào và ánh xạ lại các tham chiếu thực thể (bài viết, thuật ngữ, media) sang tương đương trong ngôn ngữ đích.
3. Từng trường một (qua hook acf/load_field)
Nếu bạn không thể chỉnh sửa đăng ký nhóm trường, hãy đưa các trường vào thông qua các hook ACF tương tự được dùng để loại trừ chúng:
add_filter(
'acf/load_field/key=testimonial_text',
static function (array|false $field): array|false {
if (is_array($field)) {
$field['gatompl'] = 'translate';
}
return $field;
}
);Đăng ký một khối ACF
Để tham khảo, đây là một đăng ký khối tối giản kết hợp với nhóm trường ở trên (sử dụng acf_register_block_type từ ACF PRO):
add_action('acf/init', function (): void {
if (!function_exists('acf_register_block_type')) {
return;
}
acf_register_block_type([
'name' => 'testimonial',
'title' => 'Testimonial',
'description' => 'A testimonial block.',
'render_template' => plugin_dir_path(__FILE__) . 'acf-blocks/testimonial/template.php',
'category' => 'widgets',
'icon' => 'format-quote',
'keywords' => ['testimonial', 'quote'],
'mode' => 'preview',
]);
});WPML Config
Gato AI Translations for Polylang tự động đọc wpml-config.xml đi kèm với bất kỳ plugin nào và sử dụng nó để xác định những thuộc tính khối nào có thể dịch.
Thông báo Attempt Recovery
Một số khối có thể hiển thị thông báo Attempt Recovery trong trình soạn thảo sau khi dịch:

Xem Tại sao một số khối cần "Attempt Recovery" sau khi dịch? để biết thêm chi tiết.
Tắt dịch cho một thuộc tính cụ thể
Để tắt dịch cho một thuộc tính cụ thể (hoặc tất cả các thuộc tính của một khối) được định nghĩa qua wpml-config.xml, trả về false từ filter gatompl:use_wpml_config_for_block_type:
add_filter(
'gatompl:use_wpml_config_for_block_type',
static function (bool $enabled, string $blockTypeName, string $ruleKind): bool {
// Stop reading wpml-config.xml rules for greenshift-blocks/button
if ($blockTypeName === 'greenshift-blocks/button') {
return false;
}
return $enabled;
},
10,
3
);Kadence Blocks
Tất cả các khối từ plugin Kadence Blocks đều được hỗ trợ tự động (qua wpml-config.xml của chúng).
Các khối sau có thể hiển thị đúng trên frontend sau khi dịch nhưng hiển thị thông báo Attempt Recovery khi mở trong trình soạn thảo:
kadence/single-iconkadence/tabskadence/form
Nhấp vào Attempt Recovery sẽ xây dựng lại HTML của khối, nhưng là tùy chọn — đầu ra frontend đã đúng (đọc chi tiết).
Greenshift Blocks
Tất cả các khối từ Greenshift đều được hỗ trợ tự động (qua wpml-config.xml của chúng).
Các khối đã dịch của Greenshift thường yêu cầu nhấp vào Attempt Recovery trong trình soạn thảo trên từng khối để tái tạo HTML của nó (đọc chi tiết).
GenerateBlocks
Các khối từ GenerateBlocks và GenerateBlocks PRO:
- Container
- Grid
- Text
- Button
- Headline
- Image
- Query
- Shape
- Site Header
- Accordion
- Tabs
- Navigation
Yoast SEO
Các khối này chỉ được hỗ trợ cho các chuỗi đơn giản. Các chuỗi chứa thẻ HTML (bao gồm liên kết, hình ảnh, kiểu HTML như strong hoặc italic, xuống dòng, v.v.) không được hỗ trợ.
Đọc hướng dẫn Tất cả các khối Gutenberg có thể được dịch không? để biết thêm thông tin.
Các khối từ Yoast SEO:
- Yoast How-to
- Yoast FAQ
Hỗ trợ các khối bổ sung
Bạn có thể dịch các khối tùy chỉnh từ ứng dụng của mình hoặc các khối từ plugin của bên thứ ba.
Xem hướng dẫn Dịch các khối Gutenberg bổ sung để biết thêm thông tin.
Dịch các pattern đồng bộ
Trang mặc định Appearance > Patterns của WordPress không hỗ trợ dịch các pattern đồng bộ (còn gọi là reusable blocks), vì:
- Polylang không thêm widget để chọn ngôn ngữ (chỉ Polylang PRO mới có)
- Nó không cung cấp Bulk Actions, do đó không thể dịch các pattern hiện có
Vì lý do này, Gato AI Translations for Polylang cung cấp trang Patterns CPT tiêu chuẩn, dưới mục menu Patterns (Gutenberg), cho phép các tính năng này.

Bạn có thể dịch các pattern từ màn hình này (tương tự như bất kỳ CPT nào khác):
- Tự động dịch các pattern mới khi xuất bản (từ màn hình Add Pattern)
- Dịch thủ công các pattern hiện có bằng Bulk Actions

Màn hình cũng sẽ hiển thị các pattern đã được dịch:

Tắt trang Patterns tùy chỉnh
Bạn có thể tắt hiển thị trang Patterns (Gutenberg) trong menu.
Để làm vậy, vào Settings dưới Plugin Integration Configuration > Gutenberg, và bỏ chọn hộp kiểm Enable the Custom Patterns page.
