Domínio de texto do tema & idioma.PO arquivo não funciona

2

Não consigo fazer minhas traduções funcionarem no meu tema. Aqui está o que eu tenho

Em functions.php, eu tenho:

load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );

Eu tenho

  

... / theme / languages / transparent-en_US.po,

que contém:

# English translations for Transparent package.
# Copyright (C) 2014 Steven Doig
# This file is distributed under the same license as the Transparent package.
# Automatically generated, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: my-pluginname 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-06 13:46-0400\n"
"PO-Revision-Date: 2013-03-21 11:20+0400\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"X-Poedit-SourceCharset: iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"


#: header.php:58
msgid "thanks-for-visiting"
msgstr "Hello!  Thank you for visiting.  Take a look around and subscribe to the "

#: header.php:60
msgid "subscribe-by-email"
msgstr "subscribe by email"

#: header.php:62
msid "for-updates"
msgstr "for updates."

No header.php, da linha 58 eu tenho:

<p><?php echo __("thanks-for-visiting", 'transparent'); ?><a href="<?php bloginfo('rss2_url'); ?>" title="<?php bloginfo('name'); ?> RSS feed">RSS feed</a> 
    <?php if (of_get_option('feedburner', '') !== '') {?>
        or <a href="http://feedburner.google.com/fb/a/mailverify?uri=<?php echo of_get_option('feedburner', 'no entry');?>&amp;loc=en_US" target="_blank"><?php echo __("subscribe-by-email", 'transparent'); ?></a> 
    <?php } ?>
    <?php echo __("for-updates", 'transparent'); ?></p>

No meu style.css eu tenho o seguinte

/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Transparent responsive two-column theme.
Tags: green, two-columns, right-sidebar
Author:Steven Doig
Author URI:http://tech.doig.com.au
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Version:1.2
*/

No entanto, no front end , vejo:

  

obrigado por visitar feed RSS para atualizações

Você pode ver porque esta tradução não está funcionando?

    
por Steve 10.03.2014 / 07:14

3 respostas

10

Depois de inspecionar seu tema, foi isso que eu criei. Tomei a liberdade de incluir também a solução de Ruben para tornar essa resposta o mais completa possível.

Existem vários problemas aqui:

Número 1. load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );

deve ser:

    function transparent_theme_setup() {
    load_theme_textdomain( 'transparent', get_template_directory() . '/languages' );

    $locale = get_locale();
    $locale_file = get_template_directory() . "/languages/$locale.php";

    if ( is_readable( $locale_file ) ) {
        require_once( $locale_file );
    }
}
add_action( 'after_setup_theme', 'transparent_theme_setup' );

Os arquivos de idioma sempre devem ser chamados no gancho after_setup_theme .

Também get_template_directory_uri()

deve ser

get_template_directory() .

Número 2. <?php echo __("thanks-for-visiting", 'transparent'); ?> .

está totalmente errado. Em primeiro lugar, nunca use " em uma string de tradução. O tradutor não reconhece e pula essa string. Sempre use ' . Em segundo lugar, não echo uma string com echo . _e deve ser usado neste caso. Então sua string deve ficar assim: <?php _e('thanks-for-visiting', 'transparent'); ?> .

Número 3. Não há domínio de texto definido no cabeçalho da sua folha de estilo. Adicione Text Domain: transparent logo acima do */ de fechamento no seu cabeçalho. Então seu cabeçalho deve ficar assim:

/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Transparent responsive two-column theme.
Tags: green, two-columns, right-sidebar
Author:Steven Doig
Author URI:http://tech.doig.com.au
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Version:1.2
Text Domain: transparent
*/

Número 4. A nomeação do seu arquivo po está errada, então o seu arquivo mo deve estar. somename-en_US.po e somename-en_US.mo é usado apenas por plug-ins. Os temas usam apenas os nomes dos arquivos en_US.po e en_US.mo

Número 5. Seu arquivo po foi criado erroneamente. Para criar um arquivo po com poedit , siga os seguintes passos. Por favor, note que meu poedit é em africâner.

Abra o poedit e selecione a opção para criar um catálogo. A tela a seguir aparecerá

.

Preenchaoscamposobrigatórios,conformemostrado.

Cliqueagoranoseparador"Origens de origens" e conclua como mostrado. Use . no campo "Caminhos" se seu arquivo de idioma estiver no diretório principal e use .. se o arquivo de idioma estiver em uma pasta como o idioma

Agora,cliquenaguia"Palavras-chave de fontes" e preencha como mostrado.

Agorasalveoarquivopoeditcomoen_US.ponoseuarquivodeidiomas.Éimportantequevocêsalveoarquivopodiretamentenolocalondeeledeveestar,casocontrário,elenãofuncionará.OPoeditagorairáprocurareadicionartodasasstringsparatraduçãoaoseuarquivopo.Umarquivomoécriadoautomaticamentequandooarquivopoésalvo.

Nofinal,oseucabeçalhopodeveterestaaparência

msgid""
msgstr ""
"Project-Id-Version: Transparent v1.2\n"
"POT-Creation-Date: 2014-03-12 16:25+0200\n"
"PO-Revision-Date: 2014-03-12 16:28+0200\n"
"Last-Translator: Pieter Goosen <goosen_p@yahoo.com>\n"
"Language-Team: Transparent <sample@example.com>\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.5\n"
"X-Poedit-KeywordsList: gettext;gettext_noop;__;_e;_n:1,2;_x:1,2c;_ex:1,2c\n"
"X-Poedit-Basepath: .\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: ..\n"

Para ler mais, confira este tutorial. Isso realmente me ajudou quando comecei as traduções. Espero que isso ajude.

    
por Pieter Goosen 12.03.2014 / 16:24
3

Não use get_template_directory_uri () . Use get_template_directory () em seu lugar. Seu código deve ficar assim:

    load_theme_textdomain( 'transparent', get_template_directory() . '/languages' );

    $locale = get_locale();
    $locale_file = get_template_directory() . "/languages/$locale.php";

    if ( is_readable( $locale_file ) ) {
        require_once( $locale_file );
    }
    
por Ruben Bristian 10.03.2014 / 16:25
1

Ao usar load_theme_textdomain , seu nome de arquivo deve ser nomeado com base na localidade exata. Nomeie-o en_US.mo em vez de transparent-en_US.mo

Leia atentamente as instruções em: enlace

    
por MegaWork 03.09.2015 / 17:43

Tags