{"id":228603,"date":"2022-10-15T20:10:00","date_gmt":"2022-10-15T17:10:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228603"},"modified":"2022-11-09T03:13:17","modified_gmt":"2022-11-09T00:13:17","slug":"alterando-o-idioma-do-seu-site-wordpress-localidade-dinamicamente","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/alterando-o-idioma-do-seu-site-wordpress-localidade-dinamicamente\/","title":{"rendered":"Alterando o idioma do seu site WordPress (localidade) dinamicamente"},"content":{"rendered":"<p><a href=\"https:\/\/hashnode.com\/@wholesomecode\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<p>Existem alguns plugins multil\u00edngues fant\u00e1sticos para WordPress, no entanto, para um projeto de cliente, eu precisava de algo muito mais flex\u00edvel, pois esse cliente em particular precisava atender v\u00e1rios pa\u00edses que falavam v\u00e1rios idiomas.<\/p>\n<p>Resumindo, o cliente precisava poder ter uma inst\u00e2ncia multisite que tivesse um pa\u00eds e idioma definidos como padr\u00e3o e a capacidade de substituir o pa\u00eds e o idioma em cada p\u00e1gina\/post.<\/p>\n<h2>Construindo um Plugin Multil\u00edngue<\/h2>\n<p>Se um n\u00famero suficiente de pessoas <a href=\"https:\/\/wholesomecode.ltd\/contact\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">me incomodar para fazer isso<\/a>, posso considerar lan\u00e7ar a coisa toda como um plug-in aut\u00f4nomo, no entanto, o cora\u00e7\u00e3o do plug-in multil\u00edngue que construo depende do <code>locale<\/code>filtro do WordPress, e o cora\u00e7\u00e3o do plug-in reside no seguinte trecho 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>Tada! Sua localidade agora est\u00e1 definida e seu site multil\u00edngue agora deve estar alternando os idiomas com base na meta da sua p\u00e1gina\/site.<\/p>\n<h2>Espere! Minhas tradu\u00e7\u00f5es padr\u00e3o do WordPress Core n\u00e3o est\u00e3o funcionando!<\/h2>\n<p>Este \u00e9 um problema que me deparei, e n\u00e3o poderia para a vida de mim descobrir isso. Meu tema foi traduzido perfeitamente depois que eu adicionei os arquivos .mo e .po relevantes, no entanto, as tradu\u00e7\u00f5es padr\u00e3o do n\u00facleo do WordPress (como a mensagem &#8216;Deixe uma resposta&#8217; no modelo de coment\u00e1rios) n\u00e3o estavam traduzindo.<\/p>\n<p>Acontece que a solu\u00e7\u00e3o foi bem simples! Embora eu tenha atendido tradu\u00e7\u00f5es de dom\u00ednios personalizados, esqueci de colocar um simples c\u00f3digo no meu tema: <code>load_default_textdomain()<\/code>.<\/p>\n<pre><code>\nload_default_textdomain();\n<\/code><\/pre>\n<p>Se eu economizei algumas horas da sua depura\u00e7\u00e3o com essa &#8216;uma dica estranha&#8217;, voc\u00ea \u00e9 bem-vindo!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Existem alguns plugins multil\u00edngues fant\u00e1sticos para WordPress, no entanto, para um projeto de cliente, eu precisava de algo muito mais flex\u00edvel, pois esse cliente em particular precisava atender a v\u00e1rios &#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":[898,722,920,846,867],"tags":[1170],"class_list":["post-228603","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-outro","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/228603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=228603"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/228603\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224116"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=228603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=228603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=228603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}