{"id":228266,"date":"2022-10-15T19:26:00","date_gmt":"2022-10-15T16:26:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228266"},"modified":"2022-11-09T01:34:54","modified_gmt":"2022-11-08T22:34:54","slug":"cambiar-el-idioma-de-su-sitio-de-wordpress-locale-dinamicamente","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/cambiar-el-idioma-de-su-sitio-de-wordpress-locale-dinamicamente\/","title":{"rendered":"Cambiar el idioma de su sitio de WordPress (locale) din\u00e1micamente"},"content":{"rendered":"\n<p><a href=\"https:\/\/hashnode.com\/@wholesomecode\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<p>Hay algunos complementos multiling\u00fces fant\u00e1sticos para WordPress, sin embargo, para un proyecto de cliente, necesitaba algo mucho m\u00e1s flexible, ya que este cliente en particular necesitaba atender a varios pa\u00edses que hablaban varios idiomas.<\/p>\n<p>En resumen, el cliente necesitaba poder tener una instancia multisitio que tuviera un pa\u00eds y un idioma configurados como predeterminados, y la capacidad de anular el pa\u00eds y el idioma en cada p\u00e1gina\/publicaci\u00f3n.<\/p>\n<h2>Creaci\u00f3n de un complemento multiling\u00fce<\/h2>\n<p>Si suficientes personas <a href=\"https:\/\/wholesomecode.ltd\/contact\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">me molestan para hacerlo<\/a>, puedo considerar lanzar todo como un complemento independiente, sin embargo, el coraz\u00f3n del complemento multiling\u00fce que construyo se basa en el <code>locale<\/code>filtro de WordPress, y el coraz\u00f3n del complemento reside en el siguiente fragmento de c\u00f3digo:<\/p>\n<pre><code>\nfunction wholesomecode_example_redefine_locale( $locale) {\n\n    $country = get_post_meta( get_the_id(), '_wholesomecode_example_global_country_override', true );\n    $lang    = get_post_meta( get_the_id(), '_wholesomecode_example_global_language_override', true );\n\n    if (( empty( $lang) ||! (is_page() || is_single() || is_singular()) )) {\n        $country = get_theme_mod( 'wholesomecode_example_multilingual_country', 'gb' );\n        $lang    = get_theme_mod( 'wholesomecode_example_multilingual_language', 'en' );\n    }\n\n    if ('default' !== $country) {\n        $locale = $lang. '_'. strtoupper( $country );\n    } else {\n        $locale = $lang. '-'. $country;\n    }\n\n    return $locale;\n\n}\nadd_filter( 'locale', 'wholesomecode_example_redefine_locale', 10 );\n<\/code><\/pre>\n<p>\u00a1Tada! Su configuraci\u00f3n regional ahora est\u00e1 configurada, y su sitio multiling\u00fce ahora deber\u00eda cambiar de idioma seg\u00fan la meta de su p\u00e1gina\/sitio.<\/p>\n<h2>\u00a1Esperar! \u00a1Mis traducciones predeterminadas de WordPress Core no funcionan!<\/h2>\n<p>Este es un problema con el que me encontr\u00e9, y no pude por mi vida resolverlo. Mi tema se tradujo perfectamente despu\u00e9s de haber agregado los archivos .mo y .po relevantes, sin embargo, las traducciones predeterminadas del n\u00facleo de WordPress (como el mensaje &#8216;Dejar una respuesta&#8217; en la plantilla de comentarios) no se estaban traduciendo.<\/p>\n<p>\u00a1Resulta que la soluci\u00f3n fue bastante simple! Aunque me hab\u00eda encargado de las traducciones de dominio personalizadas, me hab\u00eda olvidado de poner un c\u00f3digo simple en mi tema: <code>load_default_textdomain()<\/code>.<\/p>\n<pre><code>\nload_default_textdomain();\n<\/code><\/pre>\n<p>Si he reducido un par de horas de su depuraci\u00f3n con ese &#8216;un consejo extra\u00f1o&#8217;, \u00a1de nada!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hay algunos complementos multiling\u00fces fant\u00e1sticos para WordPress, sin embargo, para un proyecto de cliente necesitaba algo mucho m\u00e1s flexible, ya que este cliente en particular necesitaba atender a siete&#8230;<\/p>\n","protected":false},"author":1,"featured_media":224116,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,914,840,861],"tags":[1172],"class_list":["post-228266","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228266"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228266\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224116"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}