Intereting Posts
Искать – Искать только мета-поля для сообщений Как использовать WP_Query для запуска этого запроса базы данных в качестве результата поиска? Как разместить WordPress в скрытом домене через обратный прокси? Пользовательский тип сообщения, постоянные ссылки, таксономии и сообщения в блоге Многопользовательские сеансы пользователей Избранное изображение не будет отображаться на странице «Объявления» Многоразовые серверные базы и внешние интерфейсы Многостраничная, различная приборная панель Редактировать автора настраиваемого типа сообщения Добавить различные действия в другую страницу wp_footer Как я могу скрыть изображения медиа-библиотеки от обычных пользователей? Нечеткие изображения в WordPress 4.4 иерархическая справка wp_list_pages Постоянная ссылка на страницы таксономии Как настроить таргетинг с помощью css, элементов управления в соответствии с уровнем роли пользователя?

Тема текстового домена и язык.PO не работает

Я не могу заставить свои переводы работать в моей теме. Вот что я имею

В functions.php у меня есть:

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

у меня есть

… / тема / языки / прозрачно-en_US.po,

который содержит:

 # 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." 

В header.php из строки 58 я имею:

 <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> 

В моем стиле.css у меня есть следующее

 /* 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 */ 

Однако, на переднем конце , я вижу:

благодарность за посещение канала RSS для обновлений

Вы видите, почему этот перевод не работает?

Solutions Collecting From Web of "Тема текстового домена и язык.PO не работает"

После проверки вашей темы, это то, что я придумал. Я взял на себя смелость включить решение Рубена, чтобы сделать этот ответ максимально полным.

Здесь есть несколько проблем:

Номер 1. load_theme_textdomain( 'transparent', get_template_directory_uri() .'/languages' );

должно быть:

  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' ); 

Языковые файлы всегда должны вызываться в after_setup_theme .

Также get_template_directory_uri()

должно быть

get_template_directory() .

Номер 2. <?php echo __("thanks-for-visiting", 'transparent'); ?> <?php echo __("thanks-for-visiting", 'transparent'); ?> .

совершенно неверно. Во-первых, никогда не используйте " в строке перевода». Переводчик не распознает и не пропускает эту строку. Всегда используйте ' .» Во-вторых, не echo строку с echo . _e следует использовать в этом случае. должен выглядеть следующим образом: <?php _e('thanks-for-visiting', 'transparent'); ?> .

Номер 3. В заголовке таблицы стилей нет текстового домена. Добавить Text Domain: transparent чуть выше закрытия */ в заголовке. Итак, ваш заголовок должен выглядеть так:

 /* 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 */ 

Номер 4. Именование для вашего файла po неверно, поэтому должен быть ваш mo-файл. somename-en_US.po и somename-en_US.mo используются только плагинами. Темы используют только имена файлов en_US.po и en_US.mo

Номер 5. Ваш файл po создается неправильно. Чтобы создать po-файл с poedit , выполните следующие действия. Обратите внимание, что мой poedit находится на африкаанс.

Откройте poedit и выберите вариант создания каталога. Появится следующий экран

image1 ,

Заполните необходимые поля, как показано.

Теперь перейдите на вкладку «Источники пути» и заполните, как показано. Используйте . в поле «Пути», если ваш языковой файл находится в основном каталоге и используется .. если языковой файл находится в папке, такой как язык

image2

Теперь перейдите на вкладку «Источники ключевых слов» и заполните, как показано.

image3

Теперь сохраните файл poedit как en_US.po в файле ваших языков. Важно, чтобы вы сохранили файл po прямо в том месте, где оно должно быть, иначе это не сработает. Poedit теперь будет искать и добавлять все строки для перевода в ваш po-файл. Файл mo автоматически создается, когда файл po сохраняется.

В конце ваш заголовок po должен выглядеть так:

  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" 

Для дальнейшего чтения, проверьте этот учебник. Это действительно помогло мне, когда я начал переводить. Надеюсь это поможет.

Не используйте get_template_directory_uri () . Вместо этого используйте get_template_directory () . Ваш код должен выглядеть так:

  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 ); } 

При использовании load_theme_textdomain имя вашего языка должно быть названо в соответствии с load_theme_textdomain точно. Назовите его en_US.mo вместо transparent-en_US.mo

Внимательно прочитайте инструкции: https://codex.wordpress.org/Function_Reference/load_theme_textdomain