{"id":228978,"date":"2022-10-15T19:23:00","date_gmt":"2022-10-15T16:23:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228978"},"modified":"2022-11-09T05:02:16","modified_gmt":"2022-11-09T02:02:16","slug":"modifica-dinamica-della-lingua-locale-del-tuo-sito-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/modifica-dinamica-della-lingua-locale-del-tuo-sito-wordpress\/","title":{"rendered":"Modifica dinamica della lingua (locale) del tuo sito WordPress"},"content":{"rendered":"<p><a href=\"https:\/\/hashnode.com\/@wholesomecode\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<p>Esistono alcuni fantastici plugin multilingue per WordPress, tuttavia per un progetto client avevo bisogno di qualcosa di molto pi\u00f9 flessibile, poich\u00e9 questo particolare client doveva soddisfare diversi paesi in cui ciascuno parlava diverse lingue.<\/p>\n<p>In breve, il client doveva poter disporre di un&#8217;istanza multisito che avesse un paese e una lingua impostati come predefiniti e la possibilit\u00e0 di sovrascrivere il paese e la lingua su ogni pagina\/post.<\/p>\n<h2>Creazione di un plug-in multilingue<\/h2>\n<p>Se un numero sufficiente di persone <a href=\"https:\/\/wholesomecode.ltd\/contact\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mi infastidisce per farlo<\/a>, potrei considerare di rilasciare il tutto come plug-in autonomo, tuttavia il cuore del plug-in multilingue che costruisco si basa sul <code>locale<\/code>filtro WordPress e il cuore del plug-in risiede nel seguente frammento di codice:<\/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! La tua lingua \u00e8 ora impostata e il tuo sito multilingue dovrebbe ora cambiare lingua in base al meta della tua pagina\/sito.<\/p>\n<h2>Attesa! Le mie traduzioni predefinite di base di WordPress non funzionano!<\/h2>\n<p>Questo \u00e8 un problema in cui mi sono imbattuto e non sono riuscito a risolverlo per tutta la vita. Il mio tema \u00e8 stato tradotto perfettamente dopo aver aggiunto i file .mo e .po pertinenti, tuttavia le traduzioni predefinite di base di WordPress (come il messaggio &quot;Lascia una risposta&quot; nel modello dei commenti) non stavano traducendo.<\/p>\n<p>Si scopre che la soluzione era piuttosto semplice! Sebbene avessi curato traduzioni di domini personalizzate, avevo dimenticato di inserire un semplice bit di codice nel mio tema: <code>load_default_textdomain()<\/code>.<\/p>\n<pre><code>\nload_default_textdomain();\n<\/code><\/pre>\n<p>Se ho risparmiato un paio d&#8217;ore dal tuo debug con quel &quot;suggerimento strano&quot;, sei il benvenuto!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esistono alcuni fantastici plugin multilingue per WordPress, tuttavia per un progetto client avevo bisogno di qualcosa di molto pi\u00f9 flessibile, poich\u00e9 questo particolare client doveva soddisfare sette &#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":[918,896,720,844,865],"tags":[1168],"class_list":["post-228978","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/228978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=228978"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/228978\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224116"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=228978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=228978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=228978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}