{"id":72620,"date":"2025-08-25T03:32:39","date_gmt":"2025-08-25T06:32:39","guid":{"rendered":"https:\/\/kinsta.com\/pt\/?p=72620&#038;preview=true&#038;preview_id=72620"},"modified":"2025-10-10T10:11:10","modified_gmt":"2025-10-10T13:11:10","slug":"internacionalizacao-de-temas-de-bloco","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/","title":{"rendered":"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)"},"content":{"rendered":"<p>Os temas de bloco lidam com a tradu\u00e7\u00e3o no WordPress de forma diferente de uma abordagem t\u00edpica. Os arquivos de modelo PHP tradicionais com fun\u00e7\u00f5es de tradu\u00e7\u00e3o n\u00e3o funcionam com modelos <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-html\/\">HTML<\/a>, blocos baseados em JavaScript e o <a href=\"https:\/\/kinsta.com\/pt\/blog\/edicao-completa-sites-wordpress\/\">Editor de Sites<\/a>. Essa mudan\u00e7a exige que voc\u00ea entenda os sistemas de internacionaliza\u00e7\u00e3o de blocos do WordPress de forma diferente.<\/p>\n<p>Neste guia, voc\u00ea encontrar\u00e1 estrat\u00e9gias para tornar seus temas de bloco multil\u00edngues. Voc\u00ea aprender\u00e1 a navegar pelos desafios da tradu\u00e7\u00e3o de temas de bloco, implementar solu\u00e7\u00f5es e integrar com plugins de tradu\u00e7\u00e3o.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Por que os temas de bloco quebram os m\u00e9todos de tradu\u00e7\u00e3o tradicionais (e como corrigi-los)<\/h2>\n<p>Os <a href=\"https:\/\/kinsta.com\/pt\/blog\/desenvolvimento-de-tema-de-blocos-wordpress\/\">temas de bloco<\/a> substituem muitos dos arquivos PHP do WordPress por modelos HTML que cont\u00eam marca\u00e7\u00e3o de bloco. No entanto, essa troca cria desafios porque os modelos HTML n\u00e3o podem executar fun\u00e7\u00f5es de tradu\u00e7\u00e3o PHP, como <code>_()<\/code> ou <code>_e()<\/code>. Como resultado, as strings de tradu\u00e7\u00e3o que voc\u00ea j\u00e1 tem ficam inutilmente em arquivos est\u00e1ticos.<\/p>\n<p>O <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-6-8\/\">WordPress 6.8<\/a> traz algumas melhorias que tornam a internacionaliza\u00e7\u00e3o de temas de bloco mais simples.. Principalmente, os temas com <a href=\"https:\/\/docs.sevalla.com\/applications\/reference\/http-headers\">cabe\u00e7alhos<\/a> <strong>Text Domain<\/strong> e <strong>Domain Path<\/strong> configurados corretamente n\u00e3o precisam mais da chamada manual a chamadas <code>manual load_theme_textdomain()<\/code>.<\/p>\n<p>Em vez disso, o WordPress carrega automaticamente os arquivos de tradu\u00e7\u00e3o e prioriza <code>wp-content\/languages\/themes\/<\/code> em rela\u00e7\u00e3o aos diret\u00f3rios de temas para fins de desempenho.<\/p>\n<p>Para come\u00e7ar, configure seu tema usando uma abordagem cl\u00e1ssica, adicionando metadados ao arquivo <code>style.css<\/code>.<\/p>\n<pre><code class=\"language-css\">\/*\nTheme Name: My Block Theme\nText Domain: my-block-theme\nDomain Path: \/languages\n*\/\n<\/code><\/pre>\n<p>Observe que o cabe\u00e7alho <strong>Text Domain<\/strong> deve corresponder ao nome da pasta do seu tema (geralmente em <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/Kebab_case\" target=\"_blank\" rel=\"noopener noreferrer\">kebab-case<\/a>) para garantir que os arquivos de tradu\u00e7\u00e3o sejam carregados corretamente nas vers\u00f5es recentes do WordPress.<\/p>\n<p>Assim como no <code>style.css<\/code>, o arquivo <code>functions.php<\/code> requer uma configura\u00e7\u00e3o m\u00ednima:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/\/ Optional in WordPress 6.8+ but included for backward compatibility\nfunction my_block_theme_setup() {\n    load_theme_textdomain( 'my-block-theme', get_template_directory() . '\/languages' );\n}\n\nadd_action( 'after_setup_theme', 'my_block_theme_setup' );\n\n\/\/ Register block scripts with translation support\nfunction my_block_theme_scripts() {\n    wp_enqueue_script(\n        'my-block-theme-scripts',\n        get_template_directory_uri() . '\/assets\/js\/theme.js',\n        array( 'wp-i18n' ),\n        '1.0.0',\n        true\n    );\n\n    wp_set_script_translations( \n        'my-block-theme-scripts', \n        'my-block-theme', \n        get_template_directory() . '\/languages' \n    );\n}\n\nadd_action( 'wp_enqueue_scripts', 'my_block_theme_scripts' );\n<\/code><\/pre>\n<p>A principal diferen\u00e7a entre os temas cl\u00e1ssicos e os temas de bloco aqui \u00e9 que os \u00faltimos dividem a responsabilidade da tradu\u00e7\u00e3o entre o PHP do lado do servidor e o JavaScript do lado do cliente. Em contraste, os temas cl\u00e1ssicos dependem do PHP para lidar com a maioria das tradu\u00e7\u00f5es.<\/p>\n<h2>Como criar tradu\u00e7\u00f5es para o block.json<\/h2>\n<p>O arquivo <a href=\"https:\/\/kinsta.com\/courses\/gutenberg-block-development\/plugin-file-block-json-file\/\">block.json<\/a> \u00e9 o seu &#8220;centro de configura\u00e7\u00e3o&#8221; para o bloco que voc\u00ea deseja traduzir. Ao configurar a internacionaliza\u00e7\u00e3o adequada, voc\u00ea garante que seus blocos sejam traduzidos corretamente no editor e no frontend.<\/p>\n<p>A <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-metadata\/\" target=\"_blank\" rel=\"noopener noreferrer\">maneira can\u00f4nica de registrar um bloco<\/a> \u00e9 por meio do <code>block.json<\/code>. Se voc\u00ea come\u00e7ar com a configura\u00e7\u00e3o <code>textdomain<\/code>, o WordPress poder\u00e1 traduzir os campos de <strong>t\u00edtulo<\/strong>, <strong>descri\u00e7\u00e3o<\/strong> e <strong>palavras-chave<\/strong> quando a configura\u00e7\u00e3o <code>textdomain<\/code> estiver definida:<\/p>\n<pre><code class=\"language-json\">{\n\t\"$schema\": \"https:\/\/schemas.wp.org\/trunk\/block.json\",\n\t\"apiVersion\": 3,\n\t\"name\": \"my-theme\/testimonial\",\n\t\"title\": \"Testimonial\",\n\t\"category\": \"text\",\n\t\"description\": \"Display customer testimonials\",\n\t\"keywords\": [\"quote\", \"review\", \"testimonial\"],\n\t\"textdomain\": \"my-block-theme\",\n\t\"attributes\": {\n\t\t\"content\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"source\": \"html\",\n\t\t\t\"selector\": \"blockquote\"\n\t\t}\n\t}\n}\n<\/code><\/pre>\n<p>No entanto, os cen\u00e1rios que exigem &#8220;contexto&#8221; precisam de registro no lado do servidor. O contexto, nesse caso, \u00e9 importante porque a mesma palavra pode ser traduzida de forma diferente com base em seu uso. Por exemplo, &#8220;post&#8221; como substantivo ou como verbo requer tradu\u00e7\u00f5es diferentes em muitos idiomas:<\/p>\n<pre><code class=\"language-php\">function my_theme_register_testimonial_block() {\n\tregister_block_type_from_metadata(\n\t\tget_template_directory() . '\/blocks\/testimonial',\n\t\tarray(\n\t\t\t'title' =&gt; _x( 'Testimonial', 'block title', 'my-block-theme' ),\n\t\t\t'description' =&gt; _x(\n\t\t\t\t'Display customer testimonials', \n\t\t\t\t'block description', \n\t\t\t\t'my-block-theme'\n\t\t\t),\n\n\t\t\t'keywords' =&gt; array(\n\t\t\t\t_x( 'quote', 'block keyword', 'my-block-theme' ),\n\t\t\t\t_x( 'review', 'block keyword', 'my-block-theme' )\n\t\t\t)\n\t\t)\n\t);\n}\n\nadd_action( 'init', 'my_theme_register_testimonial_block' );\n<\/code><\/pre>\n<p>Todas as <a href=\"https:\/\/kinsta.com\/pt\/blog\/extendendo-blocos-nativos-do-wp\/#registering-block-variations\">varia\u00e7\u00f5es de bloco<\/a> que voc\u00ea incluir tamb\u00e9m precisam de nomes estruturados, pois o WordPress procura padr\u00f5es espec\u00edficos ao carregar suas tradu\u00e7\u00f5es. Cada nome de varia\u00e7\u00e3o se torna parte do c\u00f3digo de tradu\u00e7\u00e3o:<\/p>\n<pre><code class=\"language-json\">{\n\t\"name\": \"my-theme\/button\",\n\t\"title\": \"Button\",\n\t\"textdomain\": \"my-block-theme\",\n\t\"variations\": [{\n\t\t\t\"name\": \"primary\",\n\t\t\t\"title\": \"Primary Button\",\n\t\t\t\"attributes\": {\n\t\t\t\t\"className\": \"is-style-primary\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"name\": \"secondary\",\n\t\t\t\"title\": \"Secondary Button\",\n\t\t\t\"attributes\": {\n\t\t\t\t\"className\": \"is-style-secondary\"\n\t\t\t}\n\t\t}\n\t]\n}\n<\/code><\/pre>\n<p>A internacionaliza\u00e7\u00e3o do JavaScript exige que voc\u00ea importe as <a href=\"https:\/\/developer.wordpress.org\/apis\/internationalization\/internationalization-functions\/\" target=\"_blank\" rel=\"noopener noreferrer\">fun\u00e7\u00f5es i18n do WordPress<\/a> e configure as tradu\u00e7\u00f5es de script. Isso ocorre porque o <a href=\"https:\/\/kinsta.com\/pt\/blog\/edicao-completa-sites-wordpress\/\">Editor de Sites<\/a> \u00e9 executado no navegador e n\u00e3o no servidor. Como as fun\u00e7\u00f5es de tradu\u00e7\u00e3o do PHP n\u00e3o existem no JavaScript, o WordPress fornece fun\u00e7\u00f5es equivalentes por meio do pacote <code>@wordpress\/i18n<\/code>:<\/p>\n<pre><code class=\"language-js\">import {\n\tregisterBlockType\n} from '@wordpress\/blocks';\nimport {\n\t__\n} from '@wordpress\/i18n';\nimport {\n\tuseBlockProps,\n\tRichText\n} from '@wordpress\/block-editor';\n\nregisterBlockType('my-theme\/testimonial', {\n\tedit: ({\n\t\tattributes,\n\t\tsetAttributes\n\t}) =&gt; {\n\t\tconst blockProps = useBlockProps();\n\n\t\treturn ( &lt; div { ...blockProps } &gt;\n\t\t\t&lt; RichText tagName = \"blockquote\" value = { attributes.content } onChange = { (content) =&gt; setAttributes({\n\t\t\t\t\tcontent\n\t\t\t\t})\n\t\t\t}\n\t\t\tplaceholder = {\n\t\t\t\t__('Add testimonial text...', 'my-block-theme')\n\t\t\t}\n\t\t\t\/&gt; &lt; cite &gt;\n\t\t\t&lt; RichText tagName = \"span\" value = { attributes.author } onChange = { (author) =&gt; setAttributes({\n\t\t\t\t\tauthor\n\t\t\t\t})\n\t\t\t}\n\t\t\tplaceholder = {\n\t\t\t\t__('Author name', 'my-block-theme')\n\t\t\t}\n\t\t\t\/&gt; &lt; \/cite&gt; &lt; \/div&gt;\n\t\t);\n\t}\n});\n<\/code><\/pre>\n<p>Al\u00e9m disso, \u00e9 uma boa ideia gerar <a href=\"https:\/\/kinsta.com\/pt\/blog\/como-traduzir-um-site\/\">arquivos de JSON<\/a> de tradu\u00e7\u00e3o para JavaScript, porque o WordPress usa um formato diferente para tradu\u00e7\u00f5es no lado do cliente. O PHP usa arquivos <code>.mo<\/code>, mas o JavaScript precisa de arquivos <code>.json<\/code> com conven\u00e7\u00f5es de nomenclatura espec\u00edficas. Voc\u00ea pode automatizar isso usando comandos <a href=\"https:\/\/kinsta.com\/pt\/blog\/wp-cli-v2\/\">WP-CLI<\/a>:<\/p>\n<pre><code class=\"language-bash\"># Extract strings from JavaScript files into POT\nwp i18n make-pot . languages\/my-block-theme.pot\n\n# Convert PO files to JSON for JavaScript\nwp i18n make-json languages\/ --no-purge --pretty-print\n<\/code><\/pre>\n<p>Os arquivos JSON resultantes seguem um padr\u00e3o consistente: <code>{textdomain}-{locale}-{handle}.json<\/code>. O WordPress pode carreg\u00e1-los quando voc\u00ea chamar <code>wp_set_script_translations()<\/code>.<\/p>\n<h2>Convertendo seus modelos HTML est\u00e1ticos em componentes PHP prontos para tradu\u00e7\u00e3o<\/h2>\n<p>Dado que os modelos HTML s\u00e3o est\u00e1ticos, trabalhar com eles para a internacionaliza\u00e7\u00e3o de temas de Bloco \u00e9 um desafio, pois suas fun\u00e7\u00f5es e t\u00e9cnicas de tradu\u00e7\u00e3o existentes n\u00e3o funcionar\u00e3o.<\/p>\n<p>As partes de modelo baseadas em PHP podem resolver esse problema porque o WordPress as processa como arquivos PHP, apesar de serem referenciadas em modelos HTML. Essa abordagem h\u00edbrida mant\u00e9m a estrutura do tema de Bloco enquanto permite conte\u00fado din\u00e2mico:<\/p>\n<pre><code class=\"language-js\">&lt;!-- templates\/page.html --&gt;\n&lt;!-- wp:template-part {\"slug\":\"header\",\"tagName\":\"header\"} \/--&gt;\n&lt;!-- wp:group {\"tagName\":\"main\",\"layout\":{\"type\":\"constrained\"}} --&gt;\n\n&lt;main class=\"wp-block-group\"&gt;\n&lt;!-- wp:post-title {\"level\":1} \/--&gt;\n     &lt;!-- wp:post-content \/--&gt;\n     &lt;!-- wp:template-part {\"slug\":\"post-meta\"} \/--&gt;\n&lt;\/main&gt;\n&lt;!-- \/wp:group \u2192\n&lt;!-- wp:template-part {\"slug\":\"footer\",\"tagName\":\"footer\"} \/--&gt;\n<\/code><\/pre>\n<p>Observe que a parte do modelo pode conter PHP:<\/p>\n<pre><code class=\"language-js\">&lt;!-- parts\/post-meta.html --&gt;\n&lt;!-- wp:group {\"className\":\"post-meta\"} --&gt;\n&lt;div class=\"wp-block-group post-meta\"&gt;\n&lt;?php\n    echo sprintf(\n      \/* translators: 1: Post date, 2: Post author *\/\n      __( 'Published on %1$s by %2$s', 'my-block-theme' ),\n      get_the_date(),\n     get_the_author()\n     );\n     ?&gt;\n&lt;\/div&gt;\n&lt;!-- \/wp:group --&gt;\n<\/code><\/pre>\n<p>Os blocos complexos precisam do arquivo <code>render.php<\/code> porque certos conte\u00fados requerem processamento no lado do servidor que os atributos do bloco n\u00e3o conseguem lidar sozinhos. <a href=\"https:\/\/kinsta.com\/pt\/blog\/indexacao-no-mysql-mariadb\/\">Consultas a bancos de dados<\/a>, <a href=\"https:\/\/kinsta.com\/pt\/blog\/exibir-ou-ocultar-conteudo-de-blocos\/\">l\u00f3gica condicional<\/a> e gera\u00e7\u00e3o de conte\u00fado din\u00e2mico exigem a execu\u00e7\u00e3o de PHP:<\/p>\n<pre><code class=\"language-php\">\/\/ blocks\/recent-posts\/render.php\n&lt;?php\n$recent_posts = get_posts( array( \n'numberposts' =&gt; $attributes['count'] ?? 5 \n) );\n?&gt;\n&lt;div &lt;?php echo get_block_wrapper_attributes(); ?&gt;&gt;\n&lt;h3&gt;&lt;?php echo esc_html__( 'Recent Posts', 'my-block-theme' ); ?&gt;&lt;\/h3&gt;\n     &lt;?php if ( $recent_posts ) : ?&gt;\n      &lt;ul&gt;\n      &lt;?php foreach ( $recent_posts as $post ) : ?&gt;\n           &lt;li&gt;\n           &lt;a href=\"&lt;?php echo get_permalink( $post ); ?&gt;\"&gt;\n            &lt;?php echo get_the_title( $post ); ?&gt;\n           &lt;\/a&gt;\n\n           &lt;span class=\"post-date\"&gt;\n            &lt;?php echo get_the_date( '', $post ); ?&gt;\n           &lt;\/span&gt;\n           &lt;\/li&gt;\n         &lt;?php endforeach; ?&gt;\n         &lt;\/ul&gt;\n     &lt;?php else : ?&gt;\n         &lt;p&gt;&lt;?php esc_html_e( 'No posts found.', 'my-block-theme' ); ?&gt;&lt;\/p&gt;\n     &lt;?php endif; ?&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Isso significa configurar seu bloco para usar o arquivo de renderiza\u00e7\u00e3o em <code>block.json<\/code>:<\/p>\n<pre><code class=\"language-js\">{\n\t\"name\": \"my-theme\/recent-posts\",\n\t\"render\": \"file:.\/render.php\",\n\t\"attributes\": {\n\t\t\"count\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"default\": 5\n\t\t}\n\t}\n}\n<\/code><\/pre>\n<h2>Como implementar a tradu\u00e7\u00e3o de conte\u00fado din\u00e2mico para campos personalizados e entradas de usu\u00e1rio<\/h2>\n<p>Apesar de sua preval\u00eancia em sites do WordPress, o conte\u00fado din\u00e2mico pode causar problemas de tradu\u00e7\u00e3o porque existe no banco de dados e n\u00e3o nos arquivos do seu tema. Dessa forma, qualquer <a href=\"https:\/\/kinsta.com\/pt\/socios\/weglot\/\">plugin de tradu\u00e7\u00e3o de terceiros<\/a> que voc\u00ea usar precisa identificar e gerenciar esse conte\u00fado separadamente das strings est\u00e1ticas do tema.<\/p>\n<p>\u00c9 nesse ponto que o <a href=\"https:\/\/kinsta.com\/pt\/blog\/advanced-custom-fields\/\">registro de campos personalizados<\/a> com a configura\u00e7\u00e3o de metadados adequada se torna valioso, pois os plugins de tradu\u00e7\u00e3o se integram ao sistema de metadados do WordPress para detectar qualquer conte\u00fado traduz\u00edvel. O par\u00e2metro <code>show_in_rest<\/code> habilita a compatibilidade com o Editor de Sites:<\/p>\n<pre><code class=\"language-php\">function my_theme_register_meta_fields() {\n    register_post_meta( 'page', 'custom_subtitle', array(\n        'type' =&gt; 'string',\n        'description' =&gt; __( 'Page subtitle', 'my-block-theme' ),\n        'single' =&gt; true,\n        'show_in_rest' =&gt; true,\n        'auth_callback' =&gt; function() {\n            return current_user_can( 'edit_posts' );\n        }\n    ));\n}\n\nadd_action( 'init', 'my_theme_register_meta_fields' );\n\n\/\/ Display with plugin compatibility\nfunction my_theme_display_subtitle( $post_id ) {\n    $subtitle = get_post_meta( $post_id, 'custom_subtitle', true );\n\n    if ( ! $subtitle ) {\n        return;\n    }\n\n    \/\/ WPML compatibility\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n    if ( function_exists( 'icl_t' ) ) {\n        $subtitle = icl_t( \n            'my-block-theme', \n            'subtitle_' . $post_id, \n            $subtitle \n        );\n    }\n\n    \/\/ Polylang compatibility\n    \/\/ (documented at polylang.pro\/doc\/function-reference\/)\n    if ( function_exists( 'pll_translate_string' ) ) {\n        $subtitle = pll_translate_string( $subtitle, 'my-block-theme' );\n    }\n\n    echo '&lt;h2 class=\"page-subtitle\"&gt;' . esc_html( $subtitle ) . '&lt;\/h2&gt;';\n}\n<\/code><\/pre>\n<p>As consultas ao banco de dados tamb\u00e9m precisam de filtragem de idioma, porque o WordPress n\u00e3o filtra o conte\u00fado por idioma automaticamente. Os plugins de tradu\u00e7\u00e3o adicionam modifica\u00e7\u00f5es de consulta que voc\u00ea precisa acomodar:<\/p>\n<pre><code class=\"language-php\">function my_theme_get_localized_posts( $args = array() ) {\n    $defaults = array(\n        'post_type' =&gt; 'post',\n        'posts_per_page' =&gt; 10\n    );\n\n    $args = wp_parse_args( $args, $defaults );\n\n    \/\/ Polylang adds language taxonomy\n    \/\/ (documented at polylang.pro\/doc\/developpers-how-to\/)\n    if ( function_exists( 'pll_current_language' ) ) {\n        $args['lang'] = pll_current_language();\n    }\n\n    \/\/ WPML filters queries automatically when suppress_filters is false\n    \/\/ (wpml.org\/documentation\/getting-started-guide\/translating-custom-posts\/)\n\n    if ( defined( 'ICL_LANGUAGE_CODE' ) ) {\n        $args['suppress_filters'] = false;\n    }\n\n    return get_posts( $args );\n}\n<\/code><\/pre>\n<p>Seu <a href=\"https:\/\/kinsta.com\/pt\/blog\/formularios-de-registro-wordpress\/\">processamento de formul\u00e1rios<\/a> mistura conte\u00fado din\u00e2mico e est\u00e1tico, mas os r\u00f3tulos dos formul\u00e1rios, as mensagens de erro e notifica\u00e7\u00f5es do administrador precisam ser traduzidas com reconhecimento de idioma. Os destinat\u00e1rios dos e-mails tamb\u00e9m podem variar de acordo com o idioma:<\/p>\n<pre><code class=\"language-php\">function my_theme_process_contact_form() {\n\tif ( ! isset( $_POST['contact_nonce'] ) || \n\t! wp_verify_nonce( $_POST['contact_nonce'], 'contact_form' ) ) {\n\treturn;\n\t}\n\n\t$name = sanitize_text_field( $_POST['name'] );\n\t$email = sanitize_email( $_POST['email'] );\n\t$message = sanitize_textarea_field( $_POST['message'] );\n\n\t\/\/ Get admin email in current language\n\t$admin_email = get_option( 'admin_email' );\n\n\t\/\/ For language-specific admin emails, use WPML's string translation\n\t\/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n\n\tif ( function_exists( 'icl_t' ) ) {\n\t\t\/\/ First register the string if not already registered\n\t\tif ( function_exists( 'icl_register_string' ) ) {\n\t\t\ticl_register_string( 'my-block-theme', 'contact_email', $admin_email );\n\t\t}\n\n\t\t$admin_email = icl_t(\n\t\t\t'my-block-theme',\n\t\t\t'contact_email',\n\t\t\t$admin_email\n\t\t);\n\t}\n\n\t$subject = sprintf(\n\t\/* translators: %s: Sender name *\/\n\t__( 'Contact form submission from %s', 'my-block-theme' ),\n\t$name\n\t);\n\n\twp_mail( $admin_email, $subject, $message );\n}\n\nadd_action( 'init', 'my_theme_process_contact_form' );\n<\/code><\/pre>\n<p>Tamb\u00e9m \u00e9 importante avaliar a sensibilidade ao idioma da sua navega\u00e7\u00e3o, pois os itens de menu, os URLs e a estrutura podem ser diferentes entre os idiomas. Seu plugin de tradu\u00e7\u00e3o provavelmente tem uma API para construir seletores de idioma:<\/p>\n<pre><code class=\"language-php\">function my_theme_language_switcher_block() {\n    if ( ! function_exists( 'pll_the_languages' ) && \n         ! function_exists( 'icl_get_languages' ) ) {\n        return;\n    }\n\n    $output = '&lt;div class=\"language-switcher\"&gt;';\n\n    \/\/ Polylang language switcher \n    \/\/ (documented at polylang.pro\/doc\/function-reference\/)\n\n    if ( function_exists( 'pll_the_languages' ) ) {\n        $languages = pll_the_languages( array( 'raw' =&gt; 1 ) );\n        foreach ( $languages as $lang ) {\n            $output .= sprintf(\n                '&lt;a href=\"%s\" class=\"%s\"&gt;%s&lt;\/a&gt;',\n                esc_url( $lang['url'] ),\n                $lang['current_lang'] ? 'current-lang' : '',\n                esc_html( $lang['name'] )\n            );\n        }\n    }\n\n    \/\/ WPML language switcher\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/multi-language-api\/)\n    elseif ( function_exists( 'icl_get_languages' ) ) {\n        $languages = icl_get_languages();\n        foreach ( $languages as $lang ) {\n            $output .= sprintf(\n                '&lt;a href=\"%s\" class=\"%s\"&gt;%s&lt;\/a&gt;',\n                esc_url( $lang['url'] ),\n                $lang['active'] ? 'current-lang' : '',\n                esc_html( $lang['native_name'] )\n            );\n        }\n    }\n\n    $output .= '&lt;\/div&gt;';\n    return $output;\n}\n<\/code><\/pre>\n<p>Trabalhar com plugins de tradu\u00e7\u00e3o provavelmente ser\u00e1 uma grande parte do seu trabalho, portanto, vamos analisar esse aspecto a seguir.<\/p>\n<h2>Trabalhando com plugins de tradu\u00e7\u00e3o: compatibilidade e otimiza\u00e7\u00e3o<\/h2>\n<p>Cada plugin de tradu\u00e7\u00e3o do WordPress lida com temas de bloco de uma maneira \u00fanica. Entender as abordagens que as diferentes solu\u00e7\u00f5es adotam ajuda a construir compatibilidade e flexibilidade desde o in\u00edcio.<\/p>\n<p>A documenta\u00e7\u00e3o de <a href=\"https:\/\/kinsta.com\/pt\/blog\/edicao-completa-sites-wordpress\/\">Full Site Editing<\/a> do WPML descreve como voc\u00ea precisa de uma configura\u00e7\u00e3o espec\u00edfica para temas de blocos:<\/p>\n<pre><code class=\"language-php\">\/\/ WPML FSE compatibility based on official documentation\nadd_action( 'init', function() {\n    if ( ! defined( 'WPML_VERSION' ) ) {\n    return;\n    }\n\n    \/\/ FSE themes are automatically detected in WPML 4.5.3+ \/\/ Enable FSE support\n    add_filter( 'wpml_is_fse_theme', '__return_true' );\n\n    \/\/ Register custom strings per WPML String Translation documentation\n    \/\/ (documented at wpml.org\/documentation\/support\/wpml-coding-api\/wpml-hooks-reference\/)\n\n    if ( function_exists( 'icl_register_string' ) ) {\n        icl_register_string(\n        'my-block-theme',\n        'footer-copyright',\n        '\u00a9 My Company.'\n        );\n    }\n});\n<\/code><\/pre>\n<p>O Polylang Pro \u00e9 compat\u00edvel com o Site Editor desde a vers\u00e3o 3.2. O plugin lida com <a href=\"https:\/\/kinsta.com\/pt\/blog\/desenvolvimento-de-tema-de-blocos-wordpress\/\">temas de blocos<\/a> por meio de sua interface padr\u00e3o de tradu\u00e7\u00e3o de strings:<\/p>\n<pre><code class=\"language-php\">\/\/ Polylang string registration per official documentation\nif ( function_exists( 'pll_register_string' ) ) {\n\tpll_register_string( \n\t\t'Footer Copyright',\n\t\t'\u00a9 My Company.',\n\t\t'my-block-theme',\n\t\ttrue \/\/ Multiline support\n\t);\n}\n<\/code><\/pre>\n<p><a href=\"https:\/\/translatepress.com\/docs\/developers\/exclude-certain-text-or-element-from-being-translated\/\" target=\"_blank\" rel=\"noopener noreferrer\">A documenta\u00e7\u00e3o do TranslatePress<\/a> mostra que determinados elementos din\u00e2micos precisam ser exclu\u00eddos para que voc\u00ea tenha um desempenho ideal:<\/p>\n<pre><code class=\"language-php\">\/\/ TranslatePress optimization based on official recommendations\n\/\/ (documented at translatepress.com\/docs\/developers\/)\nadd_filter( 'trp_stop_translating_page', function( $stop, $url ) {\n\t\/\/ Skip admin and API requests per TranslatePress documentation\n\tif ( is_admin() || wp_is_json_request() ) {\n\treturn true;\n\t}\n\n\t\/\/ Skip pattern preview URLs that can cause rendering issues\n    if ( strpos( $url, 'pattern-preview' ) !== false ) {\n    \treturn true;\n\t}\n\n\treturn $stop;\n}, 10, 2 );\n<\/code><\/pre>\n<p>Voc\u00ea tamb\u00e9m pode considerar o <a href=\"https:\/\/multilingualpress.org\/\">MultilingualPress<\/a>, que funciona de forma diferente ao usar o WordPress Multisite. Cada idioma \u00e9 executado como um site pr\u00f3prio, com seu pr\u00f3prio tema em blocos, portanto, n\u00e3o h\u00e1 necessidade de uma camada extra de tradu\u00e7\u00e3o ou de configura\u00e7\u00f5es especiais. Essa abordagem mant\u00e9m tudo r\u00e1pido e evita o bloqueio por plugin, j\u00e1 que tudo depende da internacionaliza\u00e7\u00e3o nativa do WordPress.<\/p>\n<p>Finalmente, h\u00e1 algumas dicas de uso geral a serem transmitidas ao trabalhar com bases de c\u00f3digo de terceiros (como plugins). Primeiro, certifique-se de usar uma <a href=\"https:\/\/kinsta.com\/pt\/blog\/wordpress-debug\/\">abordagem sistem\u00e1tica para depurar problemas de tradu\u00e7\u00e3o<\/a>.<\/p>\n<pre><code class=\"language-php\">\/\/ Debug helper for translation issues\nfunction my_theme_debug_translations() {\n    if ( ! WP_DEBUG || ! current_user_can( 'manage_options' ) ) {\n    return;\n\t}\n\n\terror_log( 'Text domain loaded: ' . is_textdomain_loaded(\n    \t'my-block-theme' ) );\n         error_log( 'Current locale: ' . get_locale() );\n         error_log( 'Translation test: ' . __(\n\t\t\t'Hello World',\n            'my-block-theme'\n         )\n\t);\n\n\t\/\/ Check JSON translations for blocks\n    $json_file = WP_LANG_DIR . '\/themes\/my-block-theme-' . get_locale() . '-script-handle.json';\n\terror_log( 'JSON translation exists: ' . file_exists( $json_file ) );\n}\n\nadd_action( 'init', 'my_theme_debug_translations' );\n<\/code><\/pre>\n<p>O <a href=\"https:\/\/kinsta.com\/pt\/blog\/edge-caching\/\">cache do site<\/a> pode interferir nas atualiza\u00e7\u00f5es de tradu\u00e7\u00e3o, portanto, talvez voc\u00ea queira limpar os caches quando os arquivos de tradu\u00e7\u00e3o forem alterados:<\/p>\n<pre><code class=\"language-bash\"># Clear WordPress transients\nwp transient delete --all\n\n# Generate fresh translation files\nwp i18n make-pot . languages\/my-block-theme.pot\nwp i18n make-json languages\/ --no-purge\n<\/code><\/pre>\n<p>A otimiza\u00e7\u00e3o de desempenho se torna cr\u00edtica com plugins de tradu\u00e7\u00e3o. Cada plugin adiciona consultas ao banco de dados e sobrecarga de processamento, o que novamente se beneficia do cache de tradu\u00e7\u00f5es usadas com frequ\u00eancia:<\/p>\n<pre><code class=\"language-php\">function my_theme_cached_translation( $text, $domain = 'my-block-theme' ) {\n    $cache_key = 'translation_' . md5( $text . get_locale() );\n    $cached = wp_cache_get( $cache_key, 'my_theme_translations' );\n\n    if ( false === $cached ) {\n        $cached = __( $text, $domain );\n        wp_cache_set( $cache_key, $cached, 'my_theme_translations', HOUR_IN_SECONDS );\n    }\n\n    return $cached;\n}\n<\/code><\/pre>\n<p>Como alternativa, talvez seja aconselh\u00e1vel ignorar o armazenamento em cache at\u00e9 que voc\u00ea esteja pronto para implementar. O uso de um <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/ambiente-de-teste\/\">ambiente de teste<\/a> \u00e9 ideal para isso e, normalmente, voc\u00ea n\u00e3o precisar\u00e1 do aumento de desempenho proporcionado pelo armazenamento em cache.<\/p>\n<h2>Resumo<\/h2>\n<p>A internacionaliza\u00e7\u00e3o de temas de bloco exige que voc\u00ea trabalhe com os m\u00e9todos de tradu\u00e7\u00e3o do WordPress e utilize novas abordagens dentro do Editor de Sites.<\/p>\n<p>Ao configurar os metadados do seu tema, implementar estrat\u00e9gias de modelo e entender os requisitos dos plugins de tradu\u00e7\u00e3o, voc\u00ea pode criar temas de bloco multil\u00edngues que tenham um bom desempenho e forne\u00e7am uma experi\u00eancia de usu\u00e1rio de alta qualidade.<\/p>\n<p>Quando chegar a hora do lan\u00e7amento, a <a href=\"https:\/\/kinsta.com\/pt\/hospedagem-wordpress\/\">hospedagem gerenciada da Kinsta para WordPress<\/a> garante o desempenho e o alcance global de que seu site precisa \u2014 com cache integrado, um <a href=\"https:\/\/kinsta.com\/pt\/docs\/informacoes-de-servico\/localizacoes-de-centro-de-dados\/\">CDN em 37 localiza\u00e7\u00f5es<\/a> e ferramentas como integra\u00e7\u00e3o com Git e <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/ambiente-de-teste\/\">ambiente de teste<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Os temas de bloco lidam com a tradu\u00e7\u00e3o no WordPress de forma diferente de uma abordagem t\u00edpica. Os arquivos de modelo PHP tradicionais com fun\u00e7\u00f5es de &#8230;<\/p>\n","protected":false},"author":199,"featured_media":72621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1026],"class_list":["post-72620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-desenvolvimento-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)<\/title>\n<meta name=\"description\" content=\"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)\" \/>\n<meta property=\"og:description\" content=\"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-25T06:32:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-10T13:11:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)\",\"datePublished\":\"2025-08-25T06:32:39+00:00\",\"dateModified\":\"2025-10-10T13:11:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\"},\"wordCount\":1585,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\",\"name\":\"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"datePublished\":\"2025-08-25T06:32:39+00:00\",\"dateModified\":\"2025-10-10T13:11:10+00:00\",\"description\":\"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desenvolvimento WordPress\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/desenvolvimento-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/pt\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)","description":"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/","og_locale":"pt_PT","og_type":"article","og_title":"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)","og_description":"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!","og_url":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2025-08-25T06:32:39+00:00","article_modified_time":"2025-10-10T13:11:10+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","type":"image\/png"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Jeremy Holcombe","Tempo estimado de leitura":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)","datePublished":"2025-08-25T06:32:39+00:00","dateModified":"2025-10-10T13:11:10+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/"},"wordCount":1585,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","inLanguage":"pt-PT"},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/","url":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/","name":"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","datePublished":"2025-08-25T06:32:39+00:00","dateModified":"2025-10-10T13:11:10+00:00","description":"Os temas de bloco do WordPress precisam de uma abordagem diferente para a internacionaliza\u00e7\u00e3o. Este artigo compartilha estrat\u00e9gias para o sucesso multil\u00edngue!","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2025\/08\/developer-guide-making-wordpress-block-themes-multilingual.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/internacionalizacao-de-temas-de-bloco\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Desenvolvimento WordPress","item":"https:\/\/kinsta.com\/pt\/topicos\/desenvolvimento-wordpress\/"},{"@type":"ListItem","position":3,"name":"Tornando os Temas de Bloco do WordPress Multil\u00edngues (Guia do Desenvolvedor)"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/pt\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/72620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=72620"}],"version-history":[{"count":12,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/72620\/revisions"}],"predecessor-version":[{"id":73160,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/72620\/revisions\/73160"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/es"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/translations\/jp"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/72620\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/72621"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=72620"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=72620"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=72620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}