✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Alterando o idioma do seu site WordPress (localidade) dinamicamente

19

Existem alguns plugins multilíngues fantásticos para WordPress, no entanto, para um projeto de cliente, eu precisava de algo muito mais flexível, pois esse cliente em particular precisava atender vários países que falavam vários idiomas.

Resumindo, o cliente precisava poder ter uma instância multisite que tivesse um país e idioma definidos como padrão e a capacidade de substituir o país e o idioma em cada página/post.

Construindo um Plugin Multilíngue

Se um número suficiente de pessoas me incomodar para fazer isso, posso considerar lançar a coisa toda como um plug-in autônomo, no entanto, o coração do plug-in multilíngue que construo depende do localefiltro do WordPress, e o coração do plug-in reside no seguinte trecho de código:


function wholesomecode_example_redefine_locale( $locale) {

    $country = get_post_meta( get_the_id(), '_wholesomecode_example_global_country_override', true );
    $lang    = get_post_meta( get_the_id(), '_wholesomecode_example_global_language_override', true );

    if (( empty( $lang) ||! (is_page() || is_single() || is_singular()) )) {
        $country = get_theme_mod( 'wholesomecode_example_multilingual_country', 'gb' );
        $lang    = get_theme_mod( 'wholesomecode_example_multilingual_language', 'en' );
    }

    if ('default' !== $country) {
        $locale = $lang. '_'. strtoupper( $country );
    } else {
        $locale = $lang. '-'. $country;
    }

    return $locale;

}
add_filter( 'locale', 'wholesomecode_example_redefine_locale', 10 );

Tada! Sua localidade agora está definida e seu site multilíngue agora deve estar alternando os idiomas com base na meta da sua página/site.

Espere! Minhas traduções padrão do WordPress Core não estão funcionando!

Este é um problema que me deparei, e não 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ções padrão do núcleo do WordPress (como a mensagem ‘Deixe uma resposta’ no modelo de comentários) não estavam traduzindo.

Acontece que a solução foi bem simples! Embora eu tenha atendido traduções de domínios personalizados, esqueci de colocar um simples código no meu tema: load_default_textdomain().


load_default_textdomain();

Se eu economizei algumas horas da sua depuração com essa ‘uma dica estranha’, você é bem-vindo!

Fonte de gravação: wholesomecode.ltd

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação