Открыть файл po. Переводы в WordPress (локализация)

Большинство тем для WordPress написаны на английском языке, и хотя некоторые из них имеют перевод на русский и другие языки, большинство всё же остаются исключительно на английском. В этой статье мы расскажем вам о том, как переводить темы для WordPress на русский язык с помощью программы Poedit.

Не переводите исходный код темы

Первым делом стоит отметить, что перевод английских строк на русский язык внутри исходных.php файлов темы — является неправильным подходом к переводу тем. Эту ошибку совершают большинство начинающих разработчиков и пользователей WordPress.

Для локализации WordPress использует технологию GNU gettext, которая говорит о том, что исходный код программы должен быть написан на английском языке. Это позволяет переводить продукт с английского языка на любой другой язык, а сам перевод распространять в специальном формате, отдельным от исходного кода.

Такой подход позволяет переводить темы для WordPress, не изменяя исходный код самих тем. При этом, после выхода обновления к той или иной теме, ваш перевод не потеряется.

Готова ли тема к переводу

К сожалению не все существующие темы для WordPress можно перевести «правильным» путём. Это зависит от того, подготовил ли разработчик свою тему к переводу. Вопрос подготовки темы к переводу заслуживает отдельной стати.

Найти тему, готовую к переводу, достаточно легко. В официальной директории тем на WordPress.org есть для этого специальная метка translation-ready , которая означает, что разработчик подготовил тему к переводу, и вы можете перевести её на русский язык, не заходя в исходный код программы. Просмотреть все темы в директории с меткой translation-ready можно , на сегодняшний день их порядка 500.

Если вы работаете с темой не из официальной директории, то информацию о том, готова ли тема к переводу, ищите на сайте разработчика. Напоминаем вам, что темы для WordPress стоит скачивать только из официальных ресурсов. Пользоваться темами со сторонних сайтов (особенно с тех, которые предлагают бесплатные темы для WordPress) крайне опасно. Подробнее вы можете почитать .

Файлы.po и.mo

После того как вы скачали тему для перевода, найдите в ней директорию languages. В ней содержатся файлы перевода темы на различные языки, а так же шаблон для перевода на любой другой язык. Название файла соответствует названию локали конкретного языка. Для русского языка, это ru_RU.

Файлы перевода имеют расширение.po и.mo. Файлы.po содержат переведённые строки в текстовом формате. С этими файлами работает переводчик темы. Файлы.mo это те же строки, но в скомпилированом варианте. С этими файлами работает ядро WordPress для отображения перевода.

После редактирования перевода в файле.po, его нужно скомпилировать в файл.mo, чтобы изменения вступили в силу. Программа Poedit делает это автоматически.

Перевод темы с помощью Poedit

После запуска программы для создания нового перевода следует Создать каталог из POT-файла через пункт меню Файл. Выберите файл.pot (или.po) из директории languages в вашей теме. Poedit попросит вас заполнить небольшую форму о переводе, после чего предложит вам сохранить ваш новый каталог. Сохраняйте его в той же директории languages с названием локали, например ru_RU.po.

Для редактирования существующего перевода, достаточно открыть соответствующий файл.po.

Работать с программой Poedit достаточно легко — исходный текст слева, перевод справа. Для редактирования перевода щёлкните на соответствующую строку и введите новый перевод. При сохранении, Poedit автоматически скомпилирует ваш перевод и создаст соответсвующий файл.mo.

Установить перевод

После того как вы будете довольны вашим переводом, не забудьте его сохранить. Затем вы можете загрузить вашу тему с переводом на ваш сайт и активировать её, как любую другую тему WordPress. Если тема уже установлена на вашем сайте, то достаточно загрузить в её директорию languages новые файлы переода ru_RU.po и ru_RU.mo, например через FTP.

Если WordPress установлен на русском языке, то вы сразу же увидите изменения. Если же WordPress настроен на английский язык, то следует изменить локаль в файле wp-config.php. Найдите в этом файле строку определяющая константу WPLANG и измените её:

Define("WPLANG", "ru_RU");

После этого, тема на вашем сайте будет отображаться на русском языке. Но не останавливайтесь на этом!

Внесите свой вклад

Если вы перевели тему для WordPress на русский язык, вы можете связаться с автором этой темы и отправить ему ваши файлы перевода.po и.mo. Автор может включить новый перевод при выпуске следующего обновления к своей теме, и другие пользователи WordPress смогут наслаждаться темой на русском языке.

Перевод тем, плагинов и самого ядра — является одним из многочисленных способов внести свой вклад в развитие проекта WordPress.

Если у вас есть вопросы по переводу тем для WordPress, задавайте их в комментариях. Мы с радостью ответим. По любым другим вопросам вы можете .

При наличии на компьютере установленной антивирусной программы можносканировать все файлы на компьютере, а также каждый файл в отдельности . Можно выполнить сканирование любого файла, щелкнув правой кнопкой мыши на файл и выбрав соответствующую опцию для выполнения проверки файла на наличие вирусов.

Например, на данном рисунке выделен файл my-file.po , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл PO с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

Иногда простая переустановка Apache OpenOffice может решить вашу проблему, правильно связав PO с Apache OpenOffice. В других случаях проблемы с файловыми ассоциациями могут возникнуть в результате плохого программирования программного обеспечения разработчиком, и вам может потребоваться связаться с разработчиком для получения дополнительной помощи.


Совет: Попробуйте обновить Apache OpenOffice до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


Это может показаться слишком очевидным, но зачастую непосредственно сам файл PO может являться причиной проблемы . Если вы получили файл через вложение электронной почты или загрузили его с веб-сайта, и процесс загрузки был прерван (например, отключение питания или по другой причине), файл может повредиться . Если возможно, попробуйте получить новую копию файла PO и попытайтесь открыть его снова.


Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.


Если ваш файл PO связан с аппаратным обеспечением на вашем компьютере , чтобы открыть файл вам может потребоваться обновить драйверы устройств , связанных с этим оборудованием.

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


Совет: Если при попытке открыть файл PO вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов PO, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов PO могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла PO . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать Portable Object. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл PO.


Если вы выполнили все описанные выше шаги , а ваш файл PO по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

Все тексты что должны быть переведены (диалоги, меню и т.д...), сохраняется в PO файл. PO файл - это файл перевода для приложения, с расширением.po и со специальной структурой содержащей: информацию о языке, переводчике, оригинальные диалоги и их переводы. Оригинальные диалоги начинаются с msgid, за ними следуют строки msgstr "текст перевода". Информацию о языке и переводчике находится в начале PO файла. Если для диалога нет перевода, оставьте msgstr пустым. Строки начинающиеся с символа # являются комментариями.

Пример пустого перевода:

#: src/PackageCommands.cs:57 src/PackageCommands.cs:3181 msgid "Search for a match to any of the search strings" msgstr ""

Пример чешского перевода:

#: src/PackageCommands.cs:57 src/PackageCommands.cs:3181 msgid "Search for a match to any of the search strings" msgstr "Vyhledat výsledek odpovídající alespoň některému z řetězců"

Что такое POT файлы

Файл POT - это шаблон для перевода. Его структура похожа на структуру PO файла, но содержит только оригинальный английский текст, и нет информации о переводчике и языке. Из файлов POT создаются PO-файлы.

If your created PO file manually in a text editor, you need add information about your language and save the file with suffix .po. If you create the beginning of the PO file incorrectly, the PO file will not pass the syntax check and in the statistics will have violet color and zero translated and fuzzy strings.

Начало файла rug.pot:

# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE"S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-05-02 20:04-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n"

Начало файла rug.hu.po:

# translation of hu.po to # Peter Breuer , 2003. # Marcel Hilzinger , 2003. # Marcel Hilzinger , 2004. # Szabolcs Varga , 2004, 2005. # Kalman Kemenczy , 2006. msgid "" msgstr "" "Project-Id-Version: hu\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-06-08 12:58+0200\n" "PO-Revision-Date: 2006-06-08 17:26+0200\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.2\n" "Plural-Forms: nplurals=1; plural=0;\n"

HOWTO по созданию PO файлов

Все что вам надо чтобы начать локализацию, это текстовый редактор, с помощью которого вы будете заполнять переводом пустые msgstr строки. Возможно, вам покожется более удобным использовать для этого специальные утилиты. Оригинальный английский текст в PO файлах начинающийся с msgid изменять нельзя.

Форматирование строк

Практически в каждом PO файле можно найти строки с форматированием. Большинство из которых содержит HTML -теги, иногда XML-теги, или другой язык форматирования. Все эти строки обязательно должны присутствовать в переводе, если вы их пропустите, то ваш перевод не пройдет проверку синтаксиса.

\n новая строка some_text жирный текст some_text курсивный текст

Употребление форм множественного числа

Строка POT файла, которая содержит слова употребляемые как в единственном, так и во множественном числе(мн.ч.), в зависимости от значения переменной:

Msgid "%1 second" msgid_plural "%1 seconds" msgstr "" msgstr "" Пример, где мн.ч. идентично ед.ч. (локаль zh_CN(китай)): msgid "%1 second" msgid_plural "%1 seconds" msgstr "%1 秒" Пример с одной формой мн.ч. (греческая локаль): msgid "%1 second" msgid_plural "%1 seconds" msgstr "%1 δευτερόλεπτο" msgstr "%1 δευτερόλεπτα" Пример с двумя формами мн.ч. (чешская локаль): msgid "%1 second" msgid_plural "%1 seconds" msgstr "%1 sekunda" msgstr "%1 sekundy" msgstr "%1 sekund"

В KBabel вы должны в первую очередь определить формы мн.ч., в свойствах проекта.

Некоторая информация о том как это работает здесь, привила преобразования для русского языка здесь.

Проверка синтаксиса

Перед направлением PO файлов в SVN, проверьте их синтаксис. Для этого используйте msgfmt с опцией -c и/или проверьте функциональность переведеного приложения.

1 расширения(ы) и 0 псевдоним(ы) в нашей базе данных

Ниже вы можете найти ответы на следующие вопросы:

  • Что такое .po файл?
  • Какая программа может создать .po файл?
  • Где можно найти описание .po формат?
  • Что может конвертировать .po файлы в другой формат?
  • Какие MIME-тип связан с .po расширение?

GNU Gettext Portable Object

PO file is a GNU Gettext Portable Object. GNU gettext is the GNU internationalization and localization (i18n) library. It is commonly used for writing multilingual programs.

Название программы: -

MIME-тип: application/octet-stream

Магия байт (HEX): -

Магия строки (ASCII): -

Расширения, связанные с:

Другие типы файлов могут также использовать .po расширение файла. Если у вас есть полезная информация о .po расширение, !

Возможно ли, что расширение файла с ошибками?

Мы нашли следующие похожие расширения в нашей базе:

.po Расширение файла часто дается неправильно!

Согласно поисках на нашем сайте, эти опечатки были наиболее распространенными в прошлом году:

op (14) , lo (1) , pp (1) , pk (1) , p0 (1) , oo (1) , pl (1) , pi (1)

Не удается открыть.po файл?

Если вы хотите открыть .po файл на вашем компьютере, вам просто необходимо иметь соответствующие программы установлены. Если po Ассоциации установлены неправильно, вы можете получить следующее сообщение об ошибке:

Не удалось открыть этот файл:

файла: Например.po

Чтобы открыть этот файл, Windows необходимо знать, какую программу вы хотите использовать, чтобы открыть его. Окна могут выходить в интернет, чтобы искать его автоматически, или вы можете вручную выбрать из списка программ, установленных на вашем компьютере.

Чтобы изменить ассоциации файлов:

  • Щелкните правой кнопкой мыши файл с расширением чье сотрудничество вы хотите изменить, а затем нажмите Открыть с .
  • В Открыть с помощью диалоговое окно, выберите программу ти котором вы хотите, чтобы открыть файл, или нажмите Обзор , чтобы найти программу, которую вы хотите.
  • Выберите Всегда использовать выбранную программу , чтобы открыть такой файл флажок.

Поддерживаемые операционные системы

Windows Server 2003/2008/2012/2016, Windows 7, Windows 8 , Windows 10 , Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X , iOS, Android

Несмотря на то, что мировая культура в лице Википедии и Пола Маккартни уверяет нас, что Mary had a little lamb , на территории одной восьмой части суши продолжают считать, что на самом деле «У Мэри был ягнёнок». Кто же на самом деле был у Мэри, и как записать это на разных языках мира? Попробуем выяснить это (а также понять, что думают по этому поводу японцы) вместе с нашим любимым Python-ом и встроенным в него модулем поддержки многоязычных переводов gettext.

Скомпилированный файл перевода: .mo

Итак, строки в нашей программе мы перевели. Зря, кстати. gettext направлен исключительно на перевод законченных готовых предложений, и перевод отдельных слов и шаблонов предложений в нём делать опасно… (например, gettext совершенно не поддерживает падежи и рода и кое-как поддерживает разве что различение единственного и множественного числа; так что, чтобы подставить вместо Мэри «Таню» или «Свету», придётся учитывать падеж для каждого возможного употребления исходного имени.) Ну да ладно - в нашем случае это не принципиально. Сейчас у нас задача в другом: подготовить файл перевода к использованию.

Использовать исходный текстовый файл было бы неудобно по соображениям производительности (для программ, в которых много переводимого текста), поэтому система gettext использует скомпилированные в специальный формат файлы. Для компиляции мы можем воспользоваться либо тулой msgfmt из комплекта gettext, либо msgfmt.py из комплекта Python (в дебианоподобных дистрибутивах она входит в состав пакета python2.5-examples). Воспользуемся второй:

Msgfmt.py mary.po

Ага, видим файл mary.mo. В отличие от mary.po он уже явно не предназначен для ручного редактирования.

Структура каталогов и запуск программы

Если бы мы подготавливали программу к инсталляции в служебные директории, то мы бы создали примерно такую иерархию (в случае Debian linux): системный каталог /usr/share/locale, в нём подкаталоги для разных языков - ru, en и т.п.; в них - по каталогу LC_MESSAGES, а там уже - файл наподобие mary.mo (с максимально уникальным именем, чтобы не пересечься с другими программами). Но в нашем учебном случае мы просто сделаем подкаталог locale в нашем каталоге, создадим в нём подкаталоги ru/LC_MESSAGES, а в последний уже положим mary.mo.

Теперь наконец добавим в нашу программу поддержку gettext:

#!/usr/bin/python
import gettext

Gettext.install("mary", "./locale", unicode=True)

Name = _("Mary")
animal = _("lamb")

Print _("%s had a little %s") % (name, animal)

Что изменилось? Мы проимпортировали модуль gettext (ну, это очевидно). А ещё мы проинсталлировали в глобальное пространство программы функцию _(), которая для перевода строк в подкаталоге./locale (второй аргумент) найдёт каталог с нашей текущей локалью (тот самый подкаталог ru), а в его подкаталоге LC_MESSAGES будет искать юникодный (третий аргумент) файл mary.mo перевода программы mary (первый аргумент).

Что имеется в виду под словом «проинсталлировали»? А то, что, после этого действия, мы можем импортировать другие модули нашей программы, и функция _() в них будет уже определена.

Запускаем нашу программу…

1:/tmp/mary> ./mary.py
У Мэри был маленький ягнёнок

Ага. Как-то так.

Бонус

Согласно Google Translate, .po-файл для японского языка будет выглядеть примерно так:
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"

Msgid "Mary"
msgstr "メアリー"

Msgid "lamb"
msgstr "子羊"

Msgid "%s had a little %s"
msgstr "%sの%sいた"

И для нормальной поддержки японского языка (помимо русского) нам придётся поменять последнюю строку кода на
print (_("%s had a little %s") % (name, animal)).encode("UTF-8")

Похожие статьи