Domeniul de text al temei și fișierul language.PO nu funcționează
Nu reușesc să fac traducerile să funcționeze în tema mea. Iată ce am făcut
În functions.php, am:
load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );
Am
.../theme/languages/transparent-en_US.po,
care conține:
# Traduceri în engleză pentru pachetul Transparent.
# Copyright (C) 2014 Steven Doig
# Acest fișier este distribuit sub aceeași licență ca pachetul Transparent.
# Generat automat, 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 "Bună! Mulțumim pentru vizită. Aruncă o privire și abonează-te la "
#: header.php:60
msgid "subscribe-by-email"
msgstr "abonare prin email"
#: header.php:62
msid "for-updates"
msgstr "pentru actualizări."
În header.php, de la linia 58 am:
<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');?>&loc=en_US" target="_blank"><?php echo __("subscribe-by-email", 'transparent'); ?></a>
<?php } ?>
<?php echo __("for-updates", 'transparent'); ?></p>
În style.css am următoarele
/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Temă responsivă Transparent cu două coloane.
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
*/
Totuși, în frontend, văd:
thanks-for-visitingRSS feed for-updates
Puteți vedea de ce această traducere nu funcționează?

După ce am inspectat tema dumneavoastră, iată ce am descoperit. Am luat libertatea de a include și soluția lui Ruben pentru a face acest răspuns cât mai complet posibil.
Există mai multe probleme aici:
Numărul 1. load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );
ar trebui să fie:
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' );
Fișierele de limbă trebuie întotdeauna apelate în hook-ul after_setup_theme
.
De asemenea, get_template_directory_uri()
ar trebui să fie
get_template_directory()
.
Numărul 2. <?php echo __("thanks-for-visiting", 'transparent'); ?>
.
este complet greșit. În primul rând, nu folosiți niciodată "
într-un șir de traducere. Translatorul nu îl recunoaște și va sări peste acel șir. Utilizați întotdeauna '
. În al doilea rând, nu afișați un șir cu echo
. În acest caz, ar trebui folosit _e
. Deci, șirul dumneavoastră ar trebui să arate astfel:
<?php _e('thanks-for-visiting', 'transparent'); ?>
.
Numărul 3. Nu există niciun domeniu de text setat în antetul fișierului de stiluri. Adăugați Text Domain: transparent
chiar deasupra închiderii */
din antet. Deci, antetul dumneavoastră ar trebui să arate astfel:
/*
Theme Name: Transparent
Theme URI: http://websitetechnology.com.au/category/themes/transparent/
Description: Tema transparentă responsive cu două coloane.
Tags: verde, două-coloane, bara-laterală-dreaptă
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
*/
Numărul 4. Denumirea fișierului dumneavoastră po este greșită, la fel ar trebui să fie și fișierul mo. nume_oarecare-en_US.po
și nume_oarecare-en_US.mo
sunt folosite doar de plugin-uri. Temele folosesc doar numele de fișiere en_US.po
și en_US.mo
Numărul 5. Fișierul dumneavoastră po este creat greșit. Pentru a crea un fișier po cu poedit, urmați pașii următori. Rețineți că poedit-ul meu este în afrikaans.
Deschideți poedit și selectați opțiunea de a crea un catalog. Va apărea următorul ecran
.
Completați câmpurile necesare așa cum este arătat.
Acum faceți clic pe fila "Sources paths" și completați așa cum este arătat. Folosiți .
în câmpul "Paths" dacă fișierul dumneavoastră de limbă este în directorul principal, și folosiți ..
dacă fișierul de limbă este într-un folder precum languages
Acum faceți clic pe fila "Sources keywords" și completați așa cum este arătat.
Acum salvați fișierul poedit ca en_US.po
în fișierul dumneavoastră languages. Este important să salvați fișierul po direct în locația unde trebuie să fie, altfel nu va funcționa. Poedit va căuta acum și va adăuga toate șirurile pentru traducere în fișierul dumneavoastră po. Un fișier mo este creat automat când fișierul po este salvat.
La final, antetul dumneavoastră po ar trebui să arate astfel
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"
Pentru lecturi suplimentare, consultați acest tutorial. Chiar m-a ajutat când am început cu traducerile. Sper că acest lucru vă ajută.

Nu folosiți get_template_directory_uri(). Utilizați get_template_directory() în schimb. Codul vostru ar trebui să arate astfel:
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 );
}

-
Asigură-te că ai adăugat acel cod în interiorul unui filtru after_setup_theme.
-
Încearcă să folosești acest plugin, poate arăta dacă există o eroare cu fișierele tale .po/.mo: http://wordpress.org/plugins/codestyling-localization/

- Am adăugat codul de mai sus într-o funcție numită
transparent_theme_setup()
, apoi am apelatadd_action( 'after_setup_theme', 'transparent_theme_setup' );
. Asta ai vrut să spui? 2. Pluginul Codestyling arată că nu există erori cu fișierele .po/.mo.

Când utilizați load_theme_textdomain
, numele fișierului de limbă trebuie să fie denumit exact după localizare.
Denumiți-l en_US.mo în loc de transparent-en_US.mo.
Citiți cu atenție instrucțiunile de la: https://codex.wordpress.org/Function_Reference/load_theme_textdomain
