Locale Guide — различия между версиями

Материал из Руководство по OpenKore
Перейти к: навигация, поиск
м
м
Строка 1: Строка 1:
 +
== Предыстория ==
 
Обычно у OpenKore английский интерфейс. Однако предусмотрена возможность локализации, то есть перевода интерфейса на любой язык. Например - русский. В файле [[:Category:Sys.txt|sys.txt]] есть параметр [[locale]], который как раз и отвечает за то, какой интерфейс OpenKore будет использовать.
 
Обычно у OpenKore английский интерфейс. Однако предусмотрена возможность локализации, то есть перевода интерфейса на любой язык. Например - русский. В файле [[:Category:Sys.txt|sys.txt]] есть параметр [[locale]], который как раз и отвечает за то, какой интерфейс OpenKore будет использовать.
 
В случае с русским языком интерфейса в файле [[:Category:Sys.txt|sys.txt]] следует прописать
 
В случае с русским языком интерфейса в файле [[:Category:Sys.txt|sys.txt]] следует прописать
Строка 23: Строка 24:
  
  
=== Poedit ===
+
== Poedit ==
 
Создать локализацию интерфейса можно самостоятельно с помощью программы [http://poedit.net Poedit], которую следует скачать и установить. Также следует иметь самую свежую svn-версию исходников OpenKore, которую лучше всего скачать в отдельную папку с этого адреса
 
Создать локализацию интерфейса можно самостоятельно с помощью программы [http://poedit.net Poedit], которую следует скачать и установить. Также следует иметь самую свежую svn-версию исходников OpenKore, которую лучше всего скачать в отдельную папку с этого адреса
 
<br>https://openkore.svn.sourceforge.net/svnroot/openkore/openkore/trunk
 
<br>https://openkore.svn.sourceforge.net/svnroot/openkore/openkore/trunk
Строка 84: Строка 85:
  
  
===update.sh===
+
==update.sh==
 
В OpenKore предусмотрен специальный скрипт openkore\src\po\'''update.sh''', отвечающий за обновление файлов с локализацией. Порядок его действий следующий:
 
В OpenKore предусмотрен специальный скрипт openkore\src\po\'''update.sh''', отвечающий за обновление файлов с локализацией. Порядок его действий следующий:
  
Строка 91: Строка 92:
 
#Слияние '''.pot'''-файла с существующими уже файлами локализации - '''.po'''. Если для указанного языка ещё нет '''.po'''-файла, то он создаётся с нуля.
 
#Слияние '''.pot'''-файла с существующими уже файлами локализации - '''.po'''. Если для указанного языка ещё нет '''.po'''-файла, то он создаётся с нуля.
 
#Компиляция '''.po'''-файла в понятный OpenKore файл с расширением '''.mo'''. Именно '''.mo'''-файл используется при локализации интерфейса.
 
#Компиляция '''.po'''-файла в понятный OpenKore файл с расширением '''.mo'''. Именно '''.mo'''-файл используется при локализации интерфейса.
 +
 +
Таким образом обновляются файлы локализации сразу для всех поддерживаемых OpenKore языков. После этого остаётся только открыть обновлённый '''.po'''-файл, перевести пару появившихся в последних ревизиях сообщений, и сохранить изменения - Poedit автоматически скомпилирует свежий '''.mo'''-файл.
  
 
:[[Файл:Locale_Guide_14.png]]
 
:[[Файл:Locale_Guide_14.png]]
  
Таким образом обновляются файлы локализации сразу для всех поддерживаемых OpenKore языков. После этого остаётся только открыть обновлённый '''.po'''-файл, перевести пару появившихся в последних ревизиях сообщений, и сохранить изменения - Poedit автоматически скомпилирует свежий '''.mo'''-файл.
+
== Локализация ==
 +
Как видно из следующего рисунка, переведено 97% сообщений интерфейса OpenKore. Локализации подверглись также не затронутые ранее исходные файлы, например был переведён Wx-интерфейс.
 +
 
 +
[[Файл:Locale_Guide_15.png]]
 +
 
 +
[[Файл:Locale_Guide_16.png]]
 +
 
 +
Как говорил '''barmagloth''', в коде OpenKore есть сообщения, которые нельзя вот так сразу локализовать. То есть не все сообщения пропускаются через специальные функции '''T''' и '''TF'''. Поэтому иногда могут проскочить английские фразы. Кроме того, нужно будет исправлять орфографические ошибки и неверный перевод. На данный момент (09.04.2010) имеем следующий архив, со всеми файлами из папки openkore\src\po\ - '''src_ro-7.zip'''.

Версия 23:55, 9 апреля 2010

Предыстория

Обычно у OpenKore английский интерфейс. Однако предусмотрена возможность локализации, то есть перевода интерфейса на любой язык. Например - русский. В файле sys.txt есть параметр locale, который как раз и отвечает за то, какой интерфейс OpenKore будет использовать. В случае с русским языком интерфейса в файле sys.txt следует прописать

locale ru

Темой русификации интерфеса уже занимались. Например DeniZka в июле 2007 создал тему Первая РусЕфикация бота.

DeniZka: "OpenKore предусматривает возможность локализации бота на любой язык. Для этого в папке src\po\ распологаются файлы *.po и *.mo, которые являются стандартом для локализации Perl - приложений."

Таким образом, для локализации OpenKore нужно:

  1. В файле sys.txt прописать параметр locale ru.
  2. Иметь два файла с собственно переводом интерфейса: src\po\ru.po и src\po\ru.mo.

В ноябре 2007 года DeniZka из-за нехватки времени прекратил переводить интерфейс. В процессе перевода возник ряд интересных вопросов. Так, например, было высказано предположение, что должно быть два перевода - от первого и от третьего лица. При создании файлов с переводом, DeniZka пользовался сайтом poedit.net. В наследие остался файл ru.zip [93.8 Кб], содержащий файлы ru.po и ru.mo.

О том, как делается локализация всяческих программ, можно прочитать в следующей статье: Русификация Wordpress или зачем нужны файлы .mo и po.

В ноябре 2007 года barmagloth решил создать свой вариант перевода интерфейса OpenKore на русский язык: Русификатор OpenKore. В наследство остался файл: OpenKoreRUS-005-alpha.rar [116.37 Кб]. Как выяснилось, OpenKore не везде была подготовлена к локализации.

barmagloth: "Потихоньку, полегоньку, правлю недоделки разработчиков, которые заключаются в том, что им лениво написать TF("<сакраментальная фраза>") и они пишут просто "<сакраментальная фраза>"."

Ни один из этих вариантов перевода так и не вошел в официальную SVN-версию OpenKore. Первого апреля 2010 года, то есть спустя аж три года, проект OpenKore так и остаётся без русского варианта интерфейса.


Poedit

Создать локализацию интерфейса можно самостоятельно с помощью программы Poedit, которую следует скачать и установить. Также следует иметь самую свежую svn-версию исходников OpenKore, которую лучше всего скачать в отдельную папку с этого адреса
https://openkore.svn.sourceforge.net/svnroot/openkore/openkore/trunk

Чтобы не начинать локализацию OpenKore с нуля, стоит скачать оставшийся от DeniZka файл ru.zip [93.8 Кб], распаковать и положить файлы ru.po и ru.mo в папку openkore\src\po\.


1. Открываем существующий файл openkore\src\po\ru.po.

Locale Guide 8.png

2. Проверяем основные настройки:

Файл => Установки... => Парсеры
Удаляем всё, кроме Perl.
Locale Guide 1.png
Locale Guide 2.png
Выделяем Perl и жмём кнопку Править
В список расширений пишем: *.pm;*.pl
Locale Guide 3.png
Каталог => Настройки...=> Информация о проекте
язык Russian
страна Russian Federation
кодировка utf-8
кодировка исходного кода utf-8
Locale Guide 4.png
Каталог => Настройки... => Пути
путь к базе: .
пути: .. и ../..
Locale Guide 5.png
Каталог => Настройки... => Ключевые слова
Ключевые слова: T и TF.
Locale Guide 6.png

3. Теперь, когда нажимаем кнопку "Обновить каталог" Locale Guide 7.png - мы получаем актуальный .po-файл. К старым, уже переведённым фразам добавились теперь все новые фразы, появившиеся со времени последнего перевода интерфейса. При сохранении файла .po программа POedit автоматически генерирует двоичный файл .mo, который и будет использоваться OpenKore для локализации интерфейса.

Обновление каталога
Locale Guide 9.png
Сводка об обновлении
Locale Guide 10.png
Locale Guide 11.png
Таким образом, добавилось 550 новых строк, и 196 строк устарели со времени последнего перевода.
Обновлённый каталог
Locale Guide 12.png
Как видно из скриншота, после обновления каталога
1457 - общее количество строк
220 - строки с неточностями в переводе
330 - абсолютно новые строки, ни разу не переведённые


update.sh

В OpenKore предусмотрен специальный скрипт openkore\src\po\update.sh, отвечающий за обновление файлов с локализацией. Порядок его действий следующий:

  1. Извлечение подлежащих локализации сообщений из исходного кода. Для этого используется утилита xgettext. В конце её работы создаётся файл-шаблон - openkore.pot.
  2. Настройка заголовочной информации в файле openkore.pot, например - кодировка utf-8.
  3. Слияние .pot-файла с существующими уже файлами локализации - .po. Если для указанного языка ещё нет .po-файла, то он создаётся с нуля.
  4. Компиляция .po-файла в понятный OpenKore файл с расширением .mo. Именно .mo-файл используется при локализации интерфейса.

Таким образом обновляются файлы локализации сразу для всех поддерживаемых OpenKore языков. После этого остаётся только открыть обновлённый .po-файл, перевести пару появившихся в последних ревизиях сообщений, и сохранить изменения - Poedit автоматически скомпилирует свежий .mo-файл.

Файл:Locale Guide 14.png

Локализация

Как видно из следующего рисунка, переведено 97% сообщений интерфейса OpenKore. Локализации подверглись также не затронутые ранее исходные файлы, например был переведён Wx-интерфейс.

Locale Guide 15.png

Locale Guide 16.png

Как говорил barmagloth, в коде OpenKore есть сообщения, которые нельзя вот так сразу локализовать. То есть не все сообщения пропускаются через специальные функции T и TF. Поэтому иногда могут проскочить английские фразы. Кроме того, нужно будет исправлять орфографические ошибки и неверный перевод. На данный момент (09.04.2010) имеем следующий архив, со всеми файлами из папки openkore\src\po\ - src_ro-7.zip.