Перевод программ
Переводы программ находятся в папке /usr/share/locale/ru/LC_MESSAGES в формате *.mo. Это сжатый архив, так как при попытке сжать его архиватором размер архива остаётся прежний. Для перевода используется программа Poedit или любой текстовый редактор, но предварительно нужно преобразовать файл в *.po. Сделать это можно командой:
msgunfmt path_to_file.mo > path_to_file.po
Например (в папку пользователя):
msgunfmt /usr/share/locale/ru/LC_MESSAGES/rox.mo > ~/rox.po
Правка
Программа Poedit открывает перевод в виде 2-х колонок, слева оригинал, справа перевод. Снизу выделенная строка готовая для редактирования. Вводим улучшение и сохраняем. Так как *.po является текстовым файлом, то править перевод можно открыв его в любом текстовом редакторе. Для переноса строк используется метасимвол \n, например для форматирования подсказок. Комментарий начинается с #
Описание PO-Files
Пример как выглядит перевод в текстовом редакторе
msgid "Name"
msgstr "Имя"
Здесь пример, если строка перевода содержит единственное или множественное число. Но это является внутренней поддержкой программы, нельзя просто добавить это в любом месте.
msgid "%'d hour"
msgid_plural "%'d hours"
msgstr[0] "%'d час"
msgstr[1] "%'d часа"
msgstr[2] "%'d часов"
Сохранение в *.mo
В Poedit выбрать пункт "Файл → Компилировать в формат MO..."
Зависимость от версии программы
Всвязи с обновлениями программы в ней могут появиться новые строки перевода. Программа делает запрос определённой строки, и если не находит его от оставляет непереведённый оригинал. Но это не сложно исправить, нужно всего лишь добавить непереведённую строку и её перевод и сохранить в *.mo.
Отсутствует перевод
Если программа не имеет перевода, т.е. файла *.mo в соответствующей папке, то ищем этот файл в других папках, например немецкий (de) или французский (fr), и соответственно перевести на русский и положить в папку с идентификатором "ru".
Сравнение переводов
Сравнить *.po можно программой сравнения, например Meld. Найти новые строки в переводе новой версии можно удалив переводы с помощью регулярного выражения msgstr(.+\n)+ и сравнить, в этом случае строки перевода не будут создавать ложные различия.