Объединить PO-файлы переводов в Линуксе одной строкой!

Главные вкладки

Аватар пользователя VladSavitsky VladSavitsky 30 октября 2007 в 0:43

Я просто ненарадуюсь простоте и мощи Линукса.

По привычке загрузил KBabel и стал искать в нём возможность объединить существующий старый перевод и POT-файл из новой версии модуля...

Ну, думаю, это же не винда - для себя писалось. Всё должно быть чётко!

Не нашёл. Просмотрел ещё 2 раза, всё перепробовал - ничего.

Вспомнилось старое правило: "Если ничего не помагает - прочти инструкцию..."

Прочёл - оказывается нужно сделать Базу переводов.

Настроил, импортировал старый перевод в эту базу.

Загрузил новый POT-файл и стал пробовать.

Для каждой строки я могу найти в этой базе варианты перевода! Супер! Работает!

Но... только для одной строки - а их 213 штук!

Что-то не так. Не стыкуется это со стилем Линукса. Винда - может быть, но не Линукс!

Стал искать в инете и нашёл решение одной строкой:

'''msgmerge --no-fuzzy-matching -o new_ru.po ru.po source_strings.po'''

где
*''new_ru.po'' - в этот файл будет записан объединённый перевод
*''ru.po'' - существующий перевод
*''source_strings.po'' - файл с новыми строками (бывший POT-файл)

Элегантно и надёжно.

P.S.

Попробуйте `msgmerge --help' для получения более подробного описания.

Комментарии

Аватар пользователя VladSavitsky VladSavitsky 30 октября 2007 в 4:15

В этом решении строки из многих маленьких файлов объединяются в один большой, но это даже очень интересно...
А мне нужно было объединить новый (не переведённый) файл и старый (не полный) перевод, чтобы не делать двойную работу.

Аватар пользователя inc inc 30 октября 2007 в 10:49

Кстати poEdit (http://www.poedit.net/download.php) под Windows такое объединение тоже легко делает:

  • Запускаете poEdit
  • Открываете существующий файл с переводами: Файл->Открыть
  • Добавляете файл без переводов или с частичными переводами: Каталог->Обновить из POT-файла...
Аватар пользователя VladSavitsky VladSavitsky 30 октября 2007 в 23:52

Про poEdit:

Я работаю в Линуксе и переходить на что-либо другое не собираюсь. А Линуксе есть Kbabel для работы с PO и POT-файлами. Довольно мощная вещь и скорее всего я не разобался до конца как эта прога работает...

Меня аскетичная командная строка очень даже устраивает - быстро и точно. Но это дело вкуса.

Вот сделал перевод для potx (извлекает строки из кода): http://drupal.ru/node/8959

Аватар пользователя axel axel 31 октября 2007 в 15:54

Poedit он и под линуксом есть, но не так уж давно он не умел корректно работать с множественными числами. Сейчас умеет, но каких-то особых фич, чтобы переходить на него не вижу. В общем-то, и kbabel, и poedit, и gtranslator - средства одного уровня.

Аватар пользователя axel axel 31 октября 2007 в 15:52

Дык, cli утилиты из набора gettext для таких задач и предназначены. Команды начинаются с msg* - ищите в своём дистрибутиве Smile

Мне в линуксе из трёх популярных редакторов - kbabel, poedit, gtranslator по интерфейсу больше приглянулся последний. Ещё неплохо выглядит po-mode в emacs, но вещь совсем на любителя, сам давно уже не работал с этой системой.

Аватар пользователя VladSavitsky VladSavitsky 2 ноября 2007 в 13:35

В Мандриве 2007 поискал эти программы:
*gtranslator 1.1.6 - Translation (.po) file editor with many features​ 
*poedit 1.3.4 - Gettext translation file editor​ 
*kdesdk-kbabel 3.5.4 - KBabel is a set of tools for editing and managing gettext PO files.​ 

Дистрибутив старый, но все эти проги уже есть!!! Супер.

Будем смотреть. Вы мне подсказывайте, а то я быстро велосипеды изобретаю...

''Прикольный глюк выше обнаружился в ВИКИ-фильтре - цифры с точками считает адресом в инете....''

Аватар пользователя VladSavitsky VladSavitsky 2 ноября 2007 в 14:15

===PoEdit===
*Выглядит очень простым по сравнению с KBabel.
*Возможностей мало.
*При вызове справки слетает.
*Я бы так сказал - самое нужное, аскетичная прога в стиле Gnome.
*Не нашёл возможности как в KBabel пометить строку как "черновой перевод" и "ошибочный перевод"... и перехода между строками помеченными разным образом. Например, перейти на последнюю непереведённую строку или перейти на следующий черновой перевод...

===gtranslator===
*Лучше, чем Poedit.
*Удобнее и красивше.
*Есть разные фишечки и даже база перевдов, но не понял как туда что-то добавить.
*Есть автоперевод и компиляция. Что это не знаю, но они есть. Автоперевод - это скорее всего черновой перевод из базы переводов....

===Kbabel===
*Просто монстр по сравнению с остальными.
*Намного больше настроек и функций.
*Может быть я просто привык к нему, но он уже давно развивается и всяких ляпов в нём должно быть меньше всего.

'''Axel''', а что есть по Gettext почитать? Я совершенно ничего в этом не понимаю...