LINUX.ORG.RU

сборка со своим .po файлом


0

1

Есть проект, по умолчанию он собирается с английским .po файлом и соответственно все строки в нем английские. Я нашел русский .po файл к данному проекту но не знаю как теперь пересобрать проект с ним. Проект для сборки использует cmake. Адрес проекта https://github.com/Tametomo/Aethyra. Как собрать проект?

Подсунуть, переименовать и собрать?

unfo ★★★★★
()

Обычно для сборки надо создать папку build, перейти в нее и выполнить

cmake .. && make

unfo ★★★★★
()

Из po-файла при помощи msgfmt формируется бинарный mo-файл для каждой локали, который помещается в какую-нибудь директорию, путь до которой известен программе. Чаще всего - в /usr/share/locale/<lang>/LC_MESSAGES/. Посмотрите, как называется английский mo-файл, назовите так же русский и подсуньте в эту директорию.

Можно и автоматизировать (для этого надо будет немного подправить файл сборки - Makefile, CMakeLists и т.п.).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от unfo

да, так то оно так, но там куча разных .po файлов и подменять онглийский файл русским не слишком хорошее решение на мой взгляд, где мне поменять чтобы при сборке выбирался ru.po а не en_GB.po????

greshink
() автор топика
Ответ на: комментарий от greshink

Судя по po/CMakeLists.txt, ничего менять не надо: достаточно поместить файл ru.po в директорию po.

Кстати, там уже есть ведь русский файл! Все должно отлично работать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Если с локалью нет проблем, попробуйте удалить файл CMakeChache, а потом:

cmake -DLOCALEDIR=/usr/share/locale

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от greshink

Тут написано, обрабатываются все po файлы, которые он найдет в папке po.

Русский там тоже есть.

И все копируются в share/locale/${_lang}/LC_MESSAGES при установке программы.

Быть может она умеет на лету язык переключать, и пересборка не нужна?

unfo ★★★★★
()
Ответ на: комментарий от unfo

нету там нужного мне файла =(

 greshnik@CQ60:/usr/share/locale/ru/LC_MESSAGES$ ls apt.mo	 gnome-system-tools.mo iso_639_3.mo	 pavucontrol.mo debconf.mo gst-plugins-ugly-0.10.mo iso_639.mo	 pidgin-otr.mo dpkg.mo iso_15924.mo	 language-selector.mo ubuntu-tweak.mo geany.mo iso_3166.mo	 mana.mo	 vlc.mo gitg.mo iso_4217.mo	 module-assistant.mo xdg-user-dirs.mo 
greshink
() автор топика
Ответ на: комментарий от greshink

Соберите версию, в которой есть все po (скачайте с github, например).

unfo ★★★★★
()
Ответ на: комментарий от greshink

Настроить локаль, вестимо. Например, у меня команда locale выдает:

locale
LANG=ru_RU.KOI8-R
LC_CTYPE=ru_RU.KOI8-R
LC_NUMERIC=C
LC_TIME=ru_RU.KOI8-R
LC_COLLATE=ru_RU.KOI8-R
LC_MONETARY=ru_RU.KOI8-R
LC_MESSAGES=ru_RU.KOI8-R
LC_PAPER=ru_RU.KOI8-R
LC_NAME=ru_RU.KOI8-R
LC_ADDRESS=ru_RU.KOI8-R
LC_TELEPHONE=ru_RU.KOI8-R
LC_MEASUREMENT=ru_RU.KOI8-R
LC_IDENTIFICATION=ru_RU.KOI8-R
LC_ALL=

Eddy_Em ☆☆☆☆☆
()

Для начала надо бы понять, что такое .po и как его готовить.

.po - это текстовый файл для переводчиков. Когда его перевели на определенный язык, его нужно сконвертировать в .mo и положить в соответсвующую языку папочку.

Запущенная программа в папочке, соответсвующей вашей локали, ищет .mo файл, и если находит - использует его, если не находит - то перевода строк не происходит и используются оригиналы - строки на английском (как правило) языке.

azure ★★
()

Я так понимаю файлы переводов вообще не компилируются...

greshink
() автор топика

Проблема решена. В системе не стоял gettext, cmake не проверял его наличие и не генерировал файлы для сборки файлов перевода. Плюс к остальному игра ищет переводы только в системных папках поэтому пришлось файлы переводов установить в систему.

greshink
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.