Переведите плагин, используя .po .mo файлы


34

Я хочу перевести этот плагин.

Плагин уже переведен на другие языки и в нем есть .potфайлы для добавления новых языков (насколько я понял из описания).

Как мне создать .poи .moфайлы для моего нового языка и сделать их доступными для использования плагином? Я попытался определить русский язык в моем wp-config.phpфайле, вставив определение ниже:

define ('WPLANG', 'ru_RU');

Ответы:


44

Редактор

Есть и другие, но это наиболее часто используется: Poedit , кросс-платформенный редактор каталогов gettext (.po файлы).

Форматы

  • .moрасшифровывается как Machine Object
    - скомпилированный экспорт .poфайла, который используется WordPress.
  • .poрасшифровывается как Portable Object
    - редактируемый текстовый файл со строками переводов
    - на основе мастер- .potфайла, используя функцию PoEdit « Обновить из POT-файла»
    - некоторые люди распространяют его как мастер-файл, но его следует использовать только для переводов
  • .potрасшифровывается как Portable Object Template
    - редактируемый текстовый файл, используемый для захвата всех переводимых строк из самого WordPress и тем и плагинов с использованием функции обновления из источников PoEdit.

Процедура

  • Дублируйте файл .pot и переименуйте его в plugin-basename-lang_COUNTRY.po
  • Пример для рассматриваемого варианта плагина: - pt_BR означает португальский Бразилия, но многие языки не имеют варианта страны ... - вам придется заполнить свой собственный языкsubscribe-reloaded-pt_BR.po

  • WPLANGв wp-config.phpфайле должен быть установлен ваш язык, например,pt_BR
  • Каждый раз, когда вы сохраняете .poфайл, PoEdit автоматически генерирует .moфайл, который используется WordPress и в основном единственный, который вам нужно загрузить.

наблюдения

  • Если вы делаете полный или приличный частичный перевод, отправьте его автору плагина, чтобы он мог включить его в репозиторий, и вы получите кредит за это
  • Не забудьте сделать резервную копию вашего перевода, потому что если вы обновите плагин, ваш файл будет потерян
  • @ user17078 предложение плагинов довольно приятно, но я никогда не использовал его много

1
Как долго должен действовать новый файл mo / po?
Немо

8

Вы можете попробовать это codestyling-локализации плагина: . Вы можете перевести свои плагины и темы, используя это.


1
Это лучший плагин перевода, который я когда-либо видел. Этот плагин может иметь poedit в любое время, и самое приятное, что он бесплатный и удобный для пользователя. Этот ответ должен быть проголосован по крайней мере.
Гоголь

1
Больше не существует.
Крис Кокс

1
Это похоже на хорошую альтернативу: wordpress.org/plugins/say-what
jetlej

@jetlej интересно, похоже, не работает для моего po файла, хотя: /
Nemo

8

(Вот пример перевода на DEUTSCH. ИЗМЕНИТЕ обычаи на ВАШИ.

в каждой главе плагинов есть уникальное имя. (например:

/*
Plugin Name: my-pluginname
.......
*/

затем в папке этого плагина создайте папку «languages»;

затем, в ваш плагин .php файл (где-то сверху), вставьте код инициализации:

class load_language 
{
    public function __construct()
    {
    add_action('init', array($this, 'load_my_transl'));
    }

     public function load_my_transl()
    {
        load_plugin_textdomain('my-pluginname', FALSE, dirname(plugin_basename(__FILE__)).'/languages/');
    }
}

$zzzz = new load_language;

затем откройте любой текстовый редактор, затем вставьте, как этот код (ЗАМЕТЬТЕ, ЧТО мы добавляем только два примера сообщений, "привет" и "пока", поэтому вы можете ДОБАВИТЬ МНОГО сообщений, КАК ВЫ ХОТИТЕ с похожими строками).

# English translations for PACKAGE package.
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE 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"


#: mypluginindex.php:87 (it is just a line of a note, to remind where our code appears)
msgid "mymessage1"
msgstr "Hello"

#: mypluginindex.php:88
msgid "mymessage2"
msgstr "Bye"

затем сохраните этот файл как «my-pluginname-en_US.po» (обратите внимание, что .po является расширением файла, поэтому убедитесь, что ваша программа текстового редактора не сохранила в «my-pluginname-en_US.po.TXT»).

затем загрузите программное обеспечение POEDIT и откройте этот файл. затем отредактируйте поле «translation», а затем сохраните как «my-pluginname-de_DE», будут сгенерированы два файла (если poEdit не генерирует второй .mo файл автоматически, просто зайдите в File -> Preferences -> Editor и проверьте поле с надписью «Автоматически компилировать .mo файл при сохранении»),

затем поместите эти два файла в папку «languages».

после этого откройте wp-config.php и найдите этот код:

define ('WPLANG, '');

и изменить на

define ('WPLANG, 'de_DE');

Вот и все. Когда WordPress загружен, он будет читать ваш языковой файл плагинов с префиксом -de_DE.

Итак, в файле плагина .php вместо:

echo "Something string";

вы должны использовать:

echo __("mymessage1", 'my-pluginname');



Законченный. Теперь вы должны проверить свой плагин.

пс использованные ссылки:


Я попробовал это с моей темой. В header.php у меня есть echo __("thanks-for-visiting", 'transparent');. В теме \ languages ​​\ transparent-en_US.po у меня есть msgid "thanks-for-visiting" msgstr "Hello! Thank you for visiting. Take a look around and subscribe to the ". Это выводит "спасибо за посещение" на переднем конце.
Стив

5

Вы хотите использовать POEdit . Это бесплатное приложение для создания файлов .po / .mo.

Я написал довольно подробное руководство по всей теме здесь . Вы можете перейти к шагу 3 - создать файл перевода для текстового домена.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.