ページビルダー
ページビルダーGutenberg

Gutenberg

Gutenberg のサポートは組み込み済みで、Gutenbergコンテンツ内のすべてのブロックを翻訳できます。

Gato AI Translations for Polylang は、Gutenbergコンテンツのブロックから文字列を抽出し、その文字列のみを翻訳するため、コンテンツが壊れることはありません。

デフォルトで、以下のブロックタイプが自動的にサポートされています:

  • WordPress コアブロック
  • PHP専用ブロック
  • Advanced Custom Fields (ACF) ブロック
  • wpml-config.xml を同梱するすべてのブロック
  • サードパーティブロック:
    • Kadence Blocks
    • Greenshift blocks
    • GenerateBlocks blocks
    • Yoast SEO blocks

サポートされている WordPress コアブロック

以下の WordPress コアブロックがデフォルトでサポートされています:

  • core/audio
  • core/block(同期パターン)
  • core/button
  • core/cover
  • core/embed
  • core/heading
  • core/html
  • core/image
  • core/list
  • core/list-item
  • core/media-text
  • core/paragraph
  • core/preformatted
  • core/pullquote
  • core/quote
  • core/table
  • core/verse
  • core/video

PHP専用ブロック

WordPress 7.0 以降、ブロックは PHP専用(JavaScriptバンドルなし)として登録できます。Gato AI Translations for Polylang はこれらを他のブロックと同様に扱い、追加設定なしでデフォルトからサポートされます。

すべての文字列属性(列挙型やその他のスカラー型を除く)は、翻訳対象として自動的に登録されます。

特定のフィールドを翻訳しない場合は、gatompl:gutenberg_block_type_translatable_attribute_regexes フックで false に設定する(または 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;
    }
);

Advanced Custom Fields (ACF) ブロック

Advanced Custom Fields で登録されたブロックもデフォルトでサポートされています。ACFフィールドを翻訳に登録する方法は3つあります:

1. すべてのフィールドを自動的に(設定ページから)

設定ページの Plugin Integration Configuration > Advanced Custom Fields に移動し、Translate ACF blocks automatically? オプションを有効にします:

ACFブロックの自動翻訳を有効にする
ACFブロックの自動翻訳を有効にする

有効にすると、すべてのACFブロックのすべての翻訳可能な文字列フィールドが翻訳に送信されます。特定のフィールドを翻訳しない場合は、標準ACFフックの acf/load_fieldgatompl'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. フィールドごと(ACFフィールドグループ設定から)

acf_add_local_field_group() でフィールドグループを定義する際、翻訳したい各フィールドに 'gatompl' => 'translate' を直接追加します:

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',
            ],
        ],
    ],
]);

これは post_objectrelationshiptaxonomyimagegalleryrepeater フィールドでも機能します。プラグインはネストされたリピーターパスを任意の深さまでたどり、エンティティ参照(投稿、タクソノミー、メディア)を対象言語の対応するものに再マッピングします。

3. フィールドごと(acf/load_field フックから)

フィールドグループの登録を編集できない場合は、除外に使用するのと同じACFフックでフィールドを含めることができます:

add_filter(
    'acf/load_field/key=testimonial_text',
    static function (array|false $field): array|false {
        if (is_array($field)) {
            $field['gatompl'] = 'translate';
        }
        return $field;
    }
);

ACFブロックの登録

参考として、上記のフィールドグループと組み合わせるための最小限のブロック登録を示します(ACF PRO の acf_register_block_type を使用):

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 は、任意のプラグインに同梱されている wpml-config.xml を自動的に読み込み、どのブロック属性が翻訳可能かを判断するために使用します。

Attempt Recovery 通知

翻訳後、一部のブロックがエディターで Attempt Recovery 通知を表示することがあります:

翻訳後にAttempt Recovery通知を表示しているKadenceタブブロック
翻訳後にAttempt Recovery通知を表示しているKadenceタブブロック

詳細については、翻訳後に一部のブロックが「Attempt Recovery」を必要とする理由 をご覧ください。

特定のプロパティの翻訳を無効にする

wpml-config.xml で定義された特定のプロパティ(またはブロックのすべてのプロパティ)の翻訳を無効にするには、gatompl:use_wpml_config_for_block_type フィルターから false を返します:

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

Kadence Blocks プラグインのすべてのブロックは(wpml-config.xml 経由で)自動的にサポートされています。

以下のブロックは翻訳後にフロントエンドでは正しくレンダリングされますが、エディターで開くと Attempt Recovery 通知が表示されることがあります:

  • kadence/single-icon
  • kadence/tabs
  • kadence/form

Attempt Recovery をクリックするとブロックのHTMLが再構築されますが、任意です — フロントエンドの出力はすでに正しい状態です(詳細を読む)。

Greenshift Blocks

Greenshift のすべてのブロックは(wpml-config.xml 経由で)自動的にサポートされています。

Greenshiftの翻訳済みブロックは通常、HTMLを再生成するためにエディター上の各ブロックで Attempt Recovery をクリックする必要があります(詳細を読む)。

GenerateBlocks

GenerateBlocks および GenerateBlocks PRO のブロック:

  • Container
  • Grid
  • Text
  • Button
  • Headline
  • Image
  • Query
  • Shape
  • Site Header
  • Accordion
  • Tabs
  • Navigation

Yoast SEO

これらのブロックは単純な文字列のみサポートされています。HTMLタグ(リンク、画像、strongやitalicなどのHTMLスタイル、改行など)を含む文字列はサポートされていません。

詳細については、ガイド すべてのGutenbergブロックを翻訳できますか? をご覧ください。

Yoast SEO のブロック:

  • Yoast How-to
  • Yoast FAQ

追加ブロックのサポート

アプリケーションのカスタムブロックやサードパーティプラグインのブロックを翻訳できます。

詳細については、追加Gutenbergブロックの翻訳 ガイドをご確認ください。

同期パターンの翻訳

WordPressのデフォルトの 外観 > パターン ページは、同期パターン(再利用可能ブロックとも呼ばれる)の翻訳をサポートしていません。理由は以下の通りです:

  • Polylang は言語を選択するウィジェットを追加しない(Polylang PRO のみ対応)
  • Bulk Actions を提供していないため、既存のパターンを翻訳できない

そのため、Gato AI Translations for Polylang は、メニュー項目 Patterns (Gutenberg) の下に標準の Patterns CPT ページを提供し、これらの機能を有効にします。

カスタムパターンページ
カスタムパターンページ

この画面からパターンを翻訳できます(他のCPTと同様の方法で):

  • 公開時に新しいパターンを自動翻訳する(Add Pattern 画面から)
  • Bulk Actions を使用して既存のパターンを手動翻訳する
Bulk Actionsによるパターンの翻訳
Bulk Actionsによるパターンの翻訳

この画面には翻訳済みのパターンも表示されます:

カスタムパターンページ
カスタムパターンページ

カスタムパターンページを無効にする

メニューの Patterns (Gutenberg) ページの表示を無効にできます。

無効にするには、設定の Plugin Integration Configuration > Gutenberg に移動し、Enable the Custom Patterns page チェックボックスのチェックを外します。

設定でカスタムパターンページを有効にする
設定でカスタムパターンページを有効にする