Работа с файлами локализации МО

Попадаются программы, в которых формат готовых файлов локализации *.mo , но реально часть надписей не
  1. Оффлайн

    78Sergey

    Звание: Эксперт

    Мастер

    Сообщений: 543

    Создано тем: 53

    Рейтинг: 6

    Репа: (269|269|0)

    Баллы: 2866

    Страна: не указана!

    Был: 2025-03-24 22:31

    Лайков: 271

    Цитата: greg
    Еще экспериментировал с редактором файлов РО - PoEdit


    Можете ещё поэкспериментировать с этой программой
    20 января 2023 - 20:01 / #21
  2. Оффлайн

    Автор темы

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 132

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 446

    Был: 2025-03-23 10:42

    Лайков: 11

    Цитата: 78Sergey
    поэкспериментировать с этой программой


    Попробовал бы, но не смогу. Там указано "eazypo_2022_05_07.zip 64-bit (3.9 MB)", у меня 32-bit.
    78Sergey нравится это сообщение.
    20 января 2023 - 20:04 / #22
  3. Оффлайн

    Автор темы

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 132

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 446

    Был: 2025-03-23 10:42

    Лайков: 11

    Цитата: 78Sergey
    Переводить нужно между тегами <name>Origil text</name>


    Точно так в том же месте повторил:
    вместо
    <name>Insert Date and Time</name>
    вставил
    <name>Вставить дату и время</name>
    Надпись исчезла.
    Сообщение отредактировал 21 января 2023 - 22:08
    20 января 2023 - 20:13 / #23
  4. Оффлайн

    78Sergey

    Звание: Эксперт

    Мастер

    Сообщений: 543

    Создано тем: 53

    Рейтинг: 6

    Репа: (269|269|0)

    Баллы: 2866

    Страна: не указана!

    Был: 2025-03-24 22:31

    Лайков: 271

    Цитата: greg
    Надпись исчезла.


    Скачал версию 1.2.0, проверил на ней, перевёл также, ничего не исчезло dontknow 
    greg нравится это сообщение.
    20 января 2023 - 20:30 / #24
  5. Оффлайн

    Автор темы

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 132

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 446

    Был: 2025-03-23 10:42

    Лайков: 11

    Остается предположить, что у меня в компьютере завелся вредный "Барабашка"surprised.
    20 января 2023 - 21:07 / #25
  6. Оффлайн

    Автор темы

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 132

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 446

    Был: 2025-03-23 10:42

    Лайков: 11

    Цитата: greg
    завелся вредный "Барабашка"surprised


    Ночью придумал метод охоты и прогнал "Барабашку". В результате Ваш способ сработал отлично, 78Sergey!
    Сообщение отредактировал greg 21 января 2023 - 11:56
    21 января 2023 - 11:48 / #26
  7. Оффлайн

    Автор темы

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 132

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 446

    Был: 2025-03-23 10:42

    Лайков: 11

    Подобное затрудняет при локализации KeepNote 0.7.9, скачанного с сайта http://keepnote.org/index.shtml. В имеющемся переводе есть файл МО для старой версии программы (Program Files\KeepNote\rc\locale\ru_RU.UTF8\LC_MESSAGES\keepnote.mo), и очень многое не переведено, а когда я письмом спросил, будет ли обновление перевода, автор просто ничего не ответил. В качестве пробы взял не переведенное New _File в меню File.
    Работа с файлами локализации МО

    Цитата: Смотрящий
    Открой прогу - найди непереведенный термин - запусти TC - забей в поиск непереведенный термин - открой найденный файл с непереведенным термином - переведи его - сохрани изменения - запусти прогу и т.д. с остальными терминами...

    Поиском в ТС нашел, что New _File есть в Program Files\KeepNote\extensions\new_file\__init__.py (похоже, аналог РО?) и Program Files\KeepNote\extensions\new_file\__init__.pyc (аналог МО?). Если добавить в РУ могу, то не понятно, как сконвертировать в РУС.

    Тогда сконвертировал МО в формат РО. Поскольку там такой команды нет, добавил по таким же правилам
    Цитата: 78Sergey
    msgid "_Original text"
    msgstr "_Ваш текст"

    в Notepad++:
    msgid "New _File"
    msgstr "Новый _файл"
    Обратно сконвертировал в МО (пробовал делать и с помощью сайта, и с помощью Poedit), но перевод не появился в обоих случаях.

    В том же меню есть подкоманды, и одну из них New Text File я не нашел ни в одном файле. Add New File Type нашлась в РУ и РУС.

    Итак, разбросы и непонятности. Есть ли идеи, как решать такие проблемы?
    Сообщение отредактировал greg 25 февраля 2025 - 22:08
    25 февраля 2025 - 22:07 / #27
  8. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 978

    Создано тем: 79

    Рейтинг: 8

    Репа: (132|132|0)

    Баллы: 1841

    Был: 2025-03-15 15:47

    Лайков: 202

    Цитата: greg
    Есть ли идеи, как решать такие проблемы?

    greg, на каком языке написана программа?

    В данном случае разработчик это указал на главной странице.

    Работа с файлами локализации МО

    Если этой информации нигде нет, то можно узнать при помощи программ по анализу PE-файлов.



    Далее самостоятельно погружаетесь в изучение этого языка, узнаёте какие форматы файлов для него используются, какой синтаксис и прочие особенности. Наконец, изучаете как организуется мультиязычная поддержка для приложений на этом языке, например, здесь и/или здесь.

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

    Например, вы нашли, что строка "New _File" есть в __init__.py



    Дополняете эту строку функцией трансляции (какую функцию трансляции использовал разработчик, смотрите в исходном коде программы):



    Делаете по аналогии для остальных строк. Потом дополняете языковой файл новыми строками.



    При помощи программ по работе с файлами PO создаёте файл MO.
    В итоге в приложении увидите эти строки на родном языке.



    Цитата: greg
    а когда я письмом спросил, будет ли обновление перевода, автор просто ничего не ответил

    Ну, если автор не отвечает, а программа вам нужна, да ещё и на родном языке, то делаете эту работу за автора, благо исходный код программы открыт.
    Смотрящий, greg, 78Sergey нравится это сообщение.

    Кто ищет, тот всегда найдет!

    27 февраля 2025 - 01:00 / #28
  9. Оффлайн

    Автор темы

    greg

    Звание: Сталкер

    Знаток

    Сообщений: 132

    Создано тем: 5

    Рейтинг: 3

    Репа: (10|10|0)

    Баллы: 446

    Был: 2025-03-23 10:42

    Лайков: 11

    Спасибо Вам, Leserg, за отличные профессиональные подсказки. К сожалению, в процессе разбирательства остались непонятности в других обстоятельствах, поэтому возникли еще вопросы.
    1.
    Если в файле __init__.py
    self.add_action(window, "New File", "New _File")
    добавляем так:
    self.add_action(window, "New File", _("New _File"))
    то как добавлять в том же файле - в не похожих на образец случаях
    item = gtk.MenuItem(u"New %s" % file_type.name)
    item = gtk.MenuItem(u"Add New File Type")
    ?
    И в диалогах имеется подобное. Например, в "Настройках" надпись "Editor Insert Date"
    находится в
    label=u"Editor Insert Date"
    На что влияет приставка "u" и как действовать с ее участием?

    2.
    Есть две папки с одним названием, но с разным содержимым:
    Program Files\KeepNote\rc\locale\ (в ней есть русскоязычная папка ru_RU.UTF8) и
    Program Files\KeepNote\share\locale\ (в ней есть четыре англоязычные папки типа "en_GB" с файлами МО). Не переведенная команда "_Undo" находится ТОЛЬКО там. Поможет ли, если только в них, англоязычных, делать перевод, и будет ли этого достаточно, в отличие от русскоязычного файла, требующего добавления и в файле РУ?

    3.
    Поиск команды "_Paste" привел к находках в файлах:
    Program Files\KeepNote\libatk-1.0-0.dll и
    Program Files\KeepNote\libgtk-win32-2.0-0.dll
    Делать в DLL локализацию таких с помощью Radialix?

    4.
    Команды из меню Навигация, например, _Previous Tab, или из Сервис - _Compact Notebook Index, находятся почему-то в архиве Program Files\KeepNote\library.zip, но внутри него вообще нет файлов MO, PY, DLL. Что делать в этом случае?

    5.
    Leserg, пожалуйста, порекомендуйте еще непрофессионалу сайт/страницу, на которой можно было бы разобраться, как выделять открытый или закрытый исходные коды, в которых Вы рекомендовали искать, о трансляции и как ее запускать.
    Сообщение отредактировал 78Sergey 28 февраля 2025 - 12:24
    27 февраля 2025 - 20:01 / #29
  10. Оффлайн

    78Sergey

    Звание: Эксперт

    Мастер

    Сообщений: 543

    Создано тем: 53

    Рейтинг: 6

    Репа: (269|269|0)

    Баллы: 2866

    Страна: не указана!

    Был: 2025-03-24 22:31

    Лайков: 271

    Цитата: Greg
    находится в
    label=u"Editor Insert Date"
    На что влияет приставка "u" и как действовать с ее участием?

    Префикс «u» перед кавычками используется для обозначения юникод-строки. В Python 2.x это было важно, поскольку стандартные строки были в кодировке ASCII, а не в Unicode.
    В Python 3.x все строки по умолчанию являются юникод-строками, поэтому использование префикса «u» больше не обязательно. Однако его все еще можно использовать для обратной совместимости.

    Думаю так
    label=_(u"Editor Insert Date"),

    Цитата: greg
    2.
    Следует ли понимать, что "New Text File", не имеющаяся целиком в файлах РУ, невозможно преобразить в "Новый текстовой файл"?


    Это в файле __init__.py
    FileType("Text File (txt)", "untitled.txt", "plain_text.txt"),
    FileType("Spreadsheet (xls)", "untitled.xls", "spreadsheet.xls"),
    FileType("Word Document (doc)", "untitled.doc", "document.doc")
    После добавления строк в файл keepnote.mo
    удалите файл config.xml по пути
    AppData\Roaming\keepnote\extensions_data\new_file\config.xml

    для их отображения в интерфейсе программы.
    Либо переведите прямо в окне программы

    Работа с файлами локализации МО

    Цитата: greg
    3.
    Есть две папки с одним названием, но с разным содержимым:
    Program Files\KeepNote\rc\locale\ (в ней есть русскоязычная папка ru_RU.UTF8) и
    Program Files\KeepNote\share\locale\ (в ней есть четыре англоязычные папки типа "en_GB" с файлами МО). Не переведенная команда "_Undo" находится ТОЛЬКО там. Поможет ли, если только в них, англоязычных, делать перевод, и будет ли этого достаточно, в отличие от русскоязычного файла, требующего добавления и в файле РУ?


    Скопируйте папку en_GB или en_CA
    переименуйте её в ru_RU,
    сделайте перевод строки _Undo в файле gtk20.mo

    Цитата: greg
    4.
    Поиск команды "_Paste" привел к находках в файлах:
    Program Files\KeepNote\libatk-1.0-0.dll и
    Program Files\KeepNote\libgtk-win32-2.0-0.dll
    Делать в DLL локализацию таких с помощью Radialix?


    Переводите строку _Paste в файле gtk20.mo

    Цитата: greg
    5.
    Команды из меню Навигация, например, _Previous Tab, или из Сервис - _Compact Notebook Index, находятся почему-то в архиве Program Files\KeepNote\library.zip, но внутри него вообще нет файлов MO, PY, DLL. Что делать в этом случае?


    Добавьте строки
    msgid "_Compact Notebook Index"
    msgstr "_Compact Notebook Index"

    и
    msgid "_Previous Tab"
    msgstr "_Previous Tab"

    в файл keepnote.po
    greg, Leserg нравится это сообщение.
    Сообщение отредактировал 78Sergey 28 февраля 2025 - 12:39
    28 февраля 2025 - 12:23 / #30

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1213
Всего сообщений
16131
Пользователей
18143
Новый участник
pinchapo