{"id":146101,"date":"2018-07-13T14:28:23","date_gmt":"2018-07-13T14:28:23","guid":{"rendered":"https:\/\/www.bluehost.com\/blog\/traducciones-de-javascript-en-gutenberg\/"},"modified":"2018-07-13T14:28:23","modified_gmt":"2018-07-13T14:28:23","slug":"traducciones-de-javascript-en-gutenberg","status":"publish","type":"post","link":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/","title":{"rendered":"Traducciones de JavaScript en Gutenberg"},"content":{"rendered":"<p>Desde 2007, WordPress ha admitido la traducci\u00f3n de cadenas de texto en PHP. A partir de 2018, ahora tenemos un proceso similar para traducir cadenas en JavaScript.<br \/>\nTradicionalmente, los desarrolladores de WordPress han utilizado la <code>wp_localize_script()<\/code> funci\u00f3n para pasar cadenas traducidas de PHP a JavaScript. Desafortunadamente, este enfoque no se escala bien y hace que el c\u00f3digo sea desordenado. Afortunadamente, con los albores de Gutenberg, ahora tenemos la nueva biblioteca npm <a href=\"https:\/\/www.npmjs.com\/package\/@wordpress\/i18n\"> i18n de WordPress<\/a> .<br \/>\nEn el momento de escribir este art\u00edculo, es un poco dif\u00edcil encontrar ejemplos de c\u00f3mo traducir correctamente las cadenas de JavaScript en WordPress de principio a fin. La mayor\u00eda de los ejemplos te dar\u00e1n una pieza del rompecabezas, pero no la imagen completa. Nuestro objetivo hoy es documentar todo el proceso de principio a fin.     <\/p>\n<h2>Descripci\u00f3n general de la internacionalizaci\u00f3n y la localizaci\u00f3n<\/h2>\n<p>El proceso de traducci\u00f3n consta de dos etapas: <a href=\"https:\/\/developer.wordpress.org\/themes\/functionality\/internationalization\/\">la internacionalizaci\u00f3n<\/a> y la <a href=\"https:\/\/developer.wordpress.org\/themes\/functionality\/localization\/\">localizaci\u00f3n<\/a>.<br \/>\nEs habitual ver las abreviaturas i18n y l10n cuando se hace referencia a internacionalizaci\u00f3n y localizaci\u00f3n. La l\u00f3gica detr\u00e1s de esto es que tomas la primera y la \u00faltima letra de la palabra, cuentas las letras restantes y pones ese n\u00famero en el medio.<br \/>\nEn el nivel m\u00e1s b\u00e1sico, la internacionalizaci\u00f3n es el proceso de preparar un tema o plugin para su traducci\u00f3n. La localizaci\u00f3n es el proceso de aprovechar esa preparaci\u00f3n y realizar la traducci\u00f3n.<br \/>\n<strong>La internacionalizaci\u00f3n<\/strong> comienza utilizando las <a href=\"https:\/\/developer.wordpress.org\/themes\/functionality\/internationalization\/#basic-functions\">funciones de traducci\u00f3n<\/a> que proporciona WordPress. Esencialmente, todas estas funciones le permiten proporcionar una cadena de texto para traducir y lo que se denomina un dominio de texto. <\/p>\n<blockquote style=\"border-left:4px solid grey;padding-left:1.5em\"><p><strong>Dominio de texto<\/strong> : un espacio de nombres, o identificador \u00fanico, bajo el cual se administran todas las cadenas traducidas. WordPress utiliza el dominio de texto para diferenciar entre la traducci\u00f3n de tu tema o plugin y la de otro. <\/p><\/blockquote>\n<p>Por \u00faltimo, se utiliza una herramienta automatizada para localizar y compilar todas las cadenas de texto con su dominio de texto en un <code>.pot<\/code> archivo (plantilla de objeto port\u00e1til).<br \/>\n<strong>La localizaci\u00f3n<\/strong>, el siguiente paso del proceso, comienza cuando se proporciona el archivo a un traductor para que lo <code>.pot<\/code> traduzca al idioma o idiomas elegidos. El traductor tomar\u00e1 el archivo, traducir\u00e1 las cadenas y guardar\u00e1 las cadenas traducidas en un <code>.po<\/code>archivo (objeto port\u00e1til). Sin embargo, WordPress requiere un <code>.mo<\/code> archivo (objeto de m\u00e1quina) para traducir din\u00e1micamente el texto a trav\u00e9s de c\u00f3digo.<br \/>\nEl \u00faltimo paso es convertir el archivo .po en un <code>.mo<\/code> archivo. Hay varias formas de hacer esto, pero si usa una herramienta como <a href=\"https:\/\/poedit.net\/\">Poedit<\/a> , ambos archivos se pueden generar simult\u00e1neamente.<br \/>\nEn este punto, nos hemos preparado para la traducci\u00f3n y tenemos un archivo que permitir\u00e1 a WordPress traducir las cadenas a trav\u00e9s del c\u00f3digo. Sin embargo, nada se va a traducir a menos que WordPress sepa qu\u00e9 idioma est\u00e1 en uso y d\u00f3nde se encuentra el archivo de idioma:    <\/p>\n<ol>\n<li>\n<strong>Establezca el idioma<\/strong> : puede decirle a WordPress qu\u00e9 idioma desea usar yendo a <em>Configuraci\u00f3n &gt; General<\/em> en el administrador de WordPress y seleccionando el idioma deseado en el men\u00fa desplegable <em>Idioma del sitio<\/em> . Si bien sus usuarios normalmente ser\u00edan los que har\u00edan esto, debe hacer esto para probar a fondo que su traducci\u00f3n est\u00e1 funcionando. <\/li>\n<li>\n<strong>Registre su archivo de idioma<\/strong> &#8211; WordPress tiene algunas funciones que puede utilizar para registrar su archivo de idioma para que pueda ser encontrado. Si est\u00e1 traduciendo un tema, querr\u00e1 usar <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/load_theme_textdomain\">load_theme_textdomain()<\/a>. Si est\u00e1 traduciendo un complemento, querr\u00e1 usar <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/load_plugin_textdomain\">load_plugin_textdomain()<\/a>.  <\/li>\n<\/ol>\n<h2>Traducci\u00f3n de cadenas de JavaScript<\/h2>\n<p>Ahora que tenemos una comprensi\u00f3n clara de c\u00f3mo funcionan las traducciones en WordPress, echemos un vistazo exactamente a c\u00f3mo podemos traducir cadenas en JavaScript.<\/p>\n<h3>Uso del paquete i18n de WordPress<\/h3>\n<p>Comencemos echando un vistazo a una funci\u00f3n de traducci\u00f3n en JS:<\/p>\n<pre><code>__( 'Hello World!', 'text-domain' );<\/code><\/pre>\n<p>Parece familiar, \u00bfverdad? La <a href=\"https:\/\/github.com\/WordPress\/packages\/tree\/master\/packages\/i18n#api\">API i18n de JavaScript<\/a> refleja las funciones de traducci\u00f3n que normalmente se utilizan en PHP. La \u00fanica excepci\u00f3n es que primero debes cargar la biblioteca NPM i18n de WordPress en tu proyecto e importar las funciones necesarias para que est\u00e9n disponibles.<br \/>\nPara hacer esto, comience instalando el m\u00f3dulo npm:  <\/p>\n<pre><code>npm install --save @wordpress\/i18n<\/code><\/pre>\n<p>A continuaci\u00f3n, importe las funciones que utilizar\u00e1 desde el m\u00f3dulo:<\/p>\n<pre><code>import { __, _n, sprintf } from '@wordpress\/i18n';<\/code><\/pre>\n<p><em>Nota: Este enfoque utiliza JavaScript ES6. Ser\u00e1 necesario ejecutar un proceso de compilaci\u00f3n automatizado para convertir el c\u00f3digo en JavaScript seguro para el navegador. Recomendamos usar Babel y Webpack para lograr esto.  <\/em><\/p>\n<h3>Generaci\u00f3n de un archivo .pot<\/h3>\n<p>Tradicionalmente, la generaci\u00f3n de un archivo .pot para cadenas en un archivo PHP se ha realizado normalmente utilizando el ejecutor de tareas Grunt y el <a href=\"https:\/\/www.npmjs.com\/package\/grunt-wp-i18n\">paquete grunt-wp-i18n<\/a>. Sin embargo, esta herramienta no analiza los archivos JavaScript.<br \/>\nWordPress ha lanzado un paquete NPM llamado <a href=\"https:\/\/www.npmjs.com\/package\/@wordpress\/babel-plugin-makepot\">babel-plugin-makepot<\/a> con el prop\u00f3sito espec\u00edfico de generar (o actualizar) autom\u00e1ticamente un archivo .pot a medida que realiza cambios en sus archivos JavaScript.<br \/>\nEste plugin de Babel requiere el uso de <a href=\"https:\/\/babeljs.io\/\">Babel<\/a>. Normalmente, Babel est\u00e1 configurado para ejecutarse a trav\u00e9s de <a href=\"https:\/\/webpack.js.org\/\">Webpack<\/a>.<br \/>\nPara hacer esto, comience instalando el m\u00f3dulo npm:  <\/p>\n<pre><code>npm install --save-dev @wordpress\/babel-plugin-makepot<\/code><\/pre>\n<p>A continuaci\u00f3n, actualiza la configuraci\u00f3n de tu cargador de Babel para incluir el plugin makepot:<\/p>\n<pre><code>[ \"@wordpress\/babel-plugin-makepot\", {\n\t\"output\": \"languages\/myplugin.pot\"\n} ]<\/code><\/pre>\n<p>Si no est\u00e1 familiarizado con Babel o Webpack, todo esto puede ser confuso. Cuando se aprende algo por primera vez, a menudo es m\u00e1s f\u00e1cil mirar un ejemplo de trabajo. Tal vez revisar este archivo <a href=\"https:\/\/gist.github.com\/wpscholar\/261141cf7b2bf4efd45cb86ad0a43ff2#file-webpack-config-js\">de webpack.config.js<\/a> ayude.<br \/>\nUna vez que haya configurado este paquete, ejecutar\u00e1 Webpack, que luego observar\u00e1 sus archivos JavaScript en busca de cambios, detectar\u00e1 autom\u00e1ticamente cu\u00e1ndo est\u00e1 utilizando funciones de traducci\u00f3n y generar\u00e1 o mantendr\u00e1 autom\u00e1ticamente su archivo .pot actualizado en su directorio languages\/.  <\/p>\n<h3>Carga del archivo de traducci\u00f3n<\/h3>\n<p>Esencialmente, una vez que hayas pasado por el proceso de convertir tu archivo .pot en un archivo .mo, estar\u00e1s listo para registrar el archivo de traducci\u00f3n con WordPress de la manera tradicional.<br \/>\nEn un plugin:<\/p>\n<pre><code>&lt;?php\nadd_action( 'plugins_loaded', function () {\n\tload_plugin_textdomain( 'text-domain', plugin_basename( __DIR__ ) . '\/languages' );\n} );\n<\/code><\/pre>\n<p>o en un tema:<\/p>\n<pre><code>&lt;?php\nadd_action( 'after_setup_theme', function () {\n\tload_theme_textdomain( 'text-domain', get_template_directory() . '\/languages' );\n} );\n<\/code><\/pre>\n<h3>Pasar traducciones a JavaScript<\/h3>\n<p>WordPress cargar\u00e1 nuestros archivos .mo a trav\u00e9s de PHP, lo cual es suficiente para garantizar que se traduzcan todas las cadenas en PHP. Sin embargo, dado que estamos tratando de traducir cadenas en JavaScript, todav\u00eda tenemos un obst\u00e1culo m\u00e1s. Necesitamos tomar las traducciones que PHP conoce y pasarlas a nuestro JavaScript en el front-end.<br \/>\nAl igual que el antiguo m\u00e9todo de usar wp_localize_script() para pasar cadenas traducidas a nuestro JavaScript, debemos asegurarnos de cerrar la brecha entre el back-end y el front-end.<br \/>\n<em><strong>Nota<\/strong>: En el momento de escribir este art\u00edculo, el c\u00f3digo que sigue depende actualmente de que el plugin Gutenberg de WordPress est\u00e9 instalado y activo en un sitio. Una vez que la nueva experiencia de edici\u00f3n de WordPress de Gutenberg se integre en el n\u00facleo, no habr\u00e1 una dependencia del complemento, pero algunas de estas funciones pueden tener nombres ligeramente diferentes. Sin embargo, la mayor\u00eda de los casos de uso actuales de la traducci\u00f3n de JavaScript se encuentran en el contexto de la creaci\u00f3n de bloques de Gutenberg.  <\/em><br \/>\nLa biblioteca JavaScript WordPress i18n est\u00e1 actualmente cargada bajo la variable global wp en JavaScript. Esto significa que para acceder a la biblioteca i18n en WordPress, lo har\u00edas as\u00ed: wp.i18n.<br \/>\nLo que queremos hacer es aprovechar la llamada a la API setLocaleData() de la biblioteca i18n de WordPress para registrar nuestra(s) traducci\u00f3n(es): <\/p>\n<pre><code style=\"white-space: pre;\">&lt;?php\nadd_action( 'wp_enqueue_scripts', function () {\n\t$suffix = defined( 'SCRIPT_DEBUG' ) &amp;&amp; SCRIPT_DEBUG ? '' : '.min';\n\twp_enqueue_script(\n\t\t'my-script-js',\n\t\tplugins_url( \"\/assets\/js\/script{$suffix}.js\", __FILE__ ),\n\t\t[ 'wp-i18n' ],\n\t\tfilemtime( __DIR__ . \"\/assets\/js\/script{$suffix}.js\" )\n\t);\n\tif ( function_exists( 'gutenberg_get_jed_locale_data' ) ) {\n\t\t$locale  = gutenberg_get_jed_locale_data( 'text-domain' );\n\t\t$content = 'wp.i18n.setLocaleData( ' . json_encode( $locale ) . ', \"text-domain\" );';\n\t\twp_script_add_data( 'my-script-js', 'data', $content );\n\t}\n} );\n<\/code><\/pre>\n<p>En este ejemplo, estamos cargando nuestro script en el <code>wp_enqueue_scripts<\/code> gancho. Si est\u00e1 creando un bloque de Gutenberg, es posible que desee usar el <code>enqueue_block_assets<\/code> gancho o <code>enqueue_block_editor_assets<\/code> .<br \/>\nPara seguir las mejores pr\u00e1cticas, nos aseguramos de cargar el c\u00f3digo JavaScript minificado o no minificado en funci\u00f3n del estado de la <code>SCRIPT_DEBUG<\/code> constante.<br \/>\nRegistramos nuestro script personalizado y le damos un identificador (<code>my-script-js<\/code> en este caso). Solo despu\u00e9s de que hayamos registrado o puesto en cola nuestro script podemos llamar a <code>wp_script_add_data()<\/code>, lo que nos permite registrar datos personalizados con nuestro archivo JavaScript. Esencialmente, generar\u00e1 y ejecutar\u00e1 cualquier c\u00f3digo JavaScript que proporcionemos, pero solo cuando se cargue nuestro archivo.<br \/>\nEl c\u00f3digo JavaScript que queremos ejecutar es <code>wp.i18n.setLocaleData()<\/code>, al que se le pasar\u00e1n los datos de configuraci\u00f3n regional y nuestro dominio de texto personalizado. Estamos configurando el c\u00f3digo JavaScript en PHP para que podamos pasar f\u00e1cilmente nuestras traducciones del back-end al front-end.<br \/>\nComo puede ver, estamos usando la <code>gutenberg_get_jed_locale_data()<\/code> funci\u00f3n que acepta un dominio de texto y devuelve los datos de traducci\u00f3n en una estructura que el <code>setLocaleData()<\/code> m\u00e9todo JavaScript espera. Usamos <code>json_encode()<\/code> para asegurarnos de convertir las matrices PHP en JSON y \u00a1listo!<br \/>\n<em>Nota: Solo por si acaso, estamos envolviendo nuestra llamada a <code>gutenberg_get_jed_locale_data()<\/code> en una <code>function_exists()<\/code> verificaci\u00f3n en caso de que el complemento Gutenberg no est\u00e9 activo o WordPress cambie el nombre de la funci\u00f3n una vez que Gutenberg se incorpore al n\u00facleo. En cualquiera de esos casos, deshabilitar\u00eda las traducciones de JavaScript. <\/em><br \/>\n\u00bfTienes alguna pregunta? Deja un comentario a continuaci\u00f3n. <\/p>\n<hr>\n<p><a class=\"alignleft\" href=\"\/blog\/wp-content\/uploads\/2018\/07\/micah-headshot.jpg\"><img decoding=\"async\" class=\"alignnone size-thumbnail wp-image-9958\" src=\"http:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/micah-headshot-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\"><\/a><br \/>\nMicah Wood es un desarrollador de WordPress en <a href=\"https:\/\/www.bluehost.com\/\">Bluehost<\/a>. Desarrollador profesional de WordPress durante m\u00e1s de una d\u00e9cada, Micah ha trabajado en sitios para empresas de Fortune 100, ha lanzado m\u00e1s de una docena de <a href=\"https:\/\/profiles.wordpress.org\/woodent#content-plugins\">complementos de WordPress<\/a>, es un orador frecuente en WordCamps, coorganiza la reuni\u00f3n de <a href=\"https:\/\/www.meetup.com\/WordPress-Gwinnett\/\">WordPress Gwinnett<\/a> , es coanfitri\u00f3n en el podcast <a href=\"http:\/\/wpsquareone.com\/\">WP Square One<\/a> y comparte sus conocimientos blogueando sobre temas de <a href=\"https:\/\/wpscholar.com\/blog\/\">desarrollo de WordPress<\/a> .<br \/>\nCorreo electr\u00f3nico: <a href=\"mailto:micah.wood@endurance.com\">micah.wood@endurance.com<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Desde 2007, WordPress ha admitido la traducci\u00f3n de cadenas de texto en PHP. A partir de 2018, ahora tenemos un proceso similar para traducir cadenas en JavaScript. Tradicionalmente, los desarrolladores de WordPress han utilizado la wp_localize_script() funci\u00f3n para pasar cadenas traducidas de PHP a JavaScript. Desafortunadamente, este enfoque no se escala bien y hace que [&hellip;]<\/p>\n","protected":false},"author":56,"featured_media":146103,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_title":"Traducciones de JavaScript en Gutenberg | Anfitri\u00f3n azul","_yoast_wpseo_metadesc":"","inline_featured_image":false,"footnotes":""},"categories":[3073,1365],"tags":[3674,3659],"ppma_author":[636],"class_list":["post-146101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo","category-wordpress-en-ingles","tag-bajo-codigo-sin-codigo","tag-cms"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.1 (Yoast SEO v27.1.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Traducciones de JavaScript en Gutenberg | Anfitri\u00f3n azul<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/posts\/146101\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Traducciones de JavaScript en Gutenberg\" \/>\n<meta property=\"og:description\" content=\"Desde 2007, WordPress ha admitido la traducci\u00f3n de cadenas de texto en PHP. A partir de 2018, ahora tenemos un proceso similar para traducir cadenas en JavaScript. Tradicionalmente, los desarrolladores de WordPress han utilizado la wp_localize_script() funci\u00f3n para pasar cadenas traducidas de PHP a JavaScript. Desafortunadamente, este enfoque no se escala bien y hace que [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/\" \/>\n<meta property=\"og:site_name\" content=\"Bluehost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/bluehost\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-13T14:28:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"422\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Micah Wood\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bluehost\" \/>\n<meta name=\"twitter:site\" content=\"@bluehost\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Micah Wood\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/\"},\"author\":{\"name\":\"Micah Wood\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/person\/5d652fcd250a3e4eb123d3ca9d230b74\"},\"headline\":\"Traducciones de JavaScript en Gutenberg\",\"datePublished\":\"2018-07-13T14:28:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/\"},\"wordCount\":1614,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png\",\"keywords\":[\"Bajo c\u00f3digo \/ Sin c\u00f3digo\",\"CMS\"],\"articleSection\":[\"Desarrollo\",\"WordPress (en ingl\u00e9s)\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/\",\"url\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/\",\"name\":\"Traducciones de JavaScript en Gutenberg | Anfitri\u00f3n azul\",\"isPartOf\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png\",\"datePublished\":\"2018-07-13T14:28:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage\",\"url\":\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png\",\"contentUrl\":\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png\",\"width\":800,\"height\":422},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.bluehost.com\/es-es\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sitios web\",\"item\":\"https:\/\/www.bluehost.com\/blog\/es\/category\/sitios-web\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Traducciones de JavaScript en Gutenberg\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#website\",\"url\":\"https:\/\/www.bluehost.com\/blog\/es\/\",\"name\":\"Bluehost\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.bluehost.com\/blog\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#organization\",\"name\":\"Bluehost\",\"url\":\"https:\/\/www.bluehost.com\/blog\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2023\/08\/bluehost-logo.svg\",\"contentUrl\":\"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2023\/08\/bluehost-logo.svg\",\"width\":136,\"height\":24,\"caption\":\"Bluehost\"},\"image\":{\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/bluehost\/\",\"https:\/\/x.com\/bluehost\",\"https:\/\/www.linkedin.com\/company\/bluehost-com\/\",\"https:\/\/www.youtube.com\/user\/bluehost\",\"https:\/\/en.wikipedia.org\/wiki\/Bluehost\"],\"description\":\"Bluehost is a leading web hosting provider empowering millions of websites worldwide. \\u2028Discover how Bluehost's expertise, reliability, and innovation can help you achieve your online goals.\",\"telephone\":\"+1-888-401-4678\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/person\/5d652fcd250a3e4eb123d3ca9d230b74\",\"name\":\"Micah Wood\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/person\/image\/23494c9101089ad44ae88ce9d2f56aac\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"Micah Wood\"},\"url\":\"https:\/\/www.bluehost.com\/blog\/es\/author\/micah-wood\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Traducciones de JavaScript en Gutenberg | Anfitri\u00f3n azul","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:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/posts\/146101\/","og_locale":"es_ES","og_type":"article","og_title":"Traducciones de JavaScript en Gutenberg","og_description":"Desde 2007, WordPress ha admitido la traducci\u00f3n de cadenas de texto en PHP. A partir de 2018, ahora tenemos un proceso similar para traducir cadenas en JavaScript. Tradicionalmente, los desarrolladores de WordPress han utilizado la wp_localize_script() funci\u00f3n para pasar cadenas traducidas de PHP a JavaScript. Desafortunadamente, este enfoque no se escala bien y hace que [&hellip;]","og_url":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/","og_site_name":"Bluehost Blog","article_publisher":"https:\/\/www.facebook.com\/bluehost\/","article_published_time":"2018-07-13T14:28:23+00:00","og_image":[{"width":800,"height":422,"url":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png","type":"image\/png"}],"author":"Micah Wood","twitter_card":"summary_large_image","twitter_creator":"@bluehost","twitter_site":"@bluehost","twitter_misc":{"Escrito por":"Micah Wood","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#article","isPartOf":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/"},"author":{"name":"Micah Wood","@id":"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/person\/5d652fcd250a3e4eb123d3ca9d230b74"},"headline":"Traducciones de JavaScript en Gutenberg","datePublished":"2018-07-13T14:28:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/"},"wordCount":1614,"commentCount":0,"publisher":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/#organization"},"image":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png","keywords":["Bajo c\u00f3digo \/ Sin c\u00f3digo","CMS"],"articleSection":["Desarrollo","WordPress (en ingl\u00e9s)"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/","url":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/","name":"Traducciones de JavaScript en Gutenberg | Anfitri\u00f3n azul","isPartOf":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage"},"image":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage"},"thumbnailUrl":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png","datePublished":"2018-07-13T14:28:23+00:00","breadcrumb":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#primaryimage","url":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png","contentUrl":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2018\/07\/gutenberg-1.png","width":800,"height":422},{"@type":"BreadcrumbList","@id":"https:\/\/www.bluehost.com\/blog\/es\/traducciones-de-javascript-en-gutenberg\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.bluehost.com\/es-es\/blog\/"},{"@type":"ListItem","position":2,"name":"Sitios web","item":"https:\/\/www.bluehost.com\/blog\/es\/category\/sitios-web\/"},{"@type":"ListItem","position":3,"name":"Traducciones de JavaScript en Gutenberg"}]},{"@type":"WebSite","@id":"https:\/\/www.bluehost.com\/blog\/es\/#website","url":"https:\/\/www.bluehost.com\/blog\/es\/","name":"Bluehost","description":"","publisher":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.bluehost.com\/blog\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.bluehost.com\/blog\/es\/#organization","name":"Bluehost","url":"https:\/\/www.bluehost.com\/blog\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/logo\/image\/","url":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2023\/08\/bluehost-logo.svg","contentUrl":"https:\/\/www.bluehost.com\/blog\/wp-content\/uploads\/2023\/08\/bluehost-logo.svg","width":136,"height":24,"caption":"Bluehost"},"image":{"@id":"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/bluehost\/","https:\/\/x.com\/bluehost","https:\/\/www.linkedin.com\/company\/bluehost-com\/","https:\/\/www.youtube.com\/user\/bluehost","https:\/\/en.wikipedia.org\/wiki\/Bluehost"],"description":"Bluehost is a leading web hosting provider empowering millions of websites worldwide. \u2028Discover how Bluehost's expertise, reliability, and innovation can help you achieve your online goals.","telephone":"+1-888-401-4678"},{"@type":"Person","@id":"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/person\/5d652fcd250a3e4eb123d3ca9d230b74","name":"Micah Wood","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.bluehost.com\/blog\/es\/#\/schema\/person\/image\/23494c9101089ad44ae88ce9d2f56aac","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"Micah Wood"},"url":"https:\/\/www.bluehost.com\/blog\/es\/author\/micah-wood\/"}]}},"authors":[{"term_id":636,"user_id":56,"is_guest":0,"slug":"micah-wood","display_name":"Micah Wood","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":"","11":"","12":"","13":"","14":"","15":""}],"_links":{"self":[{"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/posts\/146101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/users\/56"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=146101"}],"version-history":[{"count":0,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/posts\/146101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/media\/146103"}],"wp:attachment":[{"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=146101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=146101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=146101"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.bluehost.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=146101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}