Автор Тема: Русификация Dwarf Fortress  (Прочитано 627720 раз)

0 Пользователей и 5 Гостей просматривают эту тему.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2160 : 11 Октября 2015, 19:36:02 »
Залез в код текущего скрипта. Там сделано не в виде словаря, а виде списка замен для концовок слов у каждого падежа. Хотя не везде понятно, например, почему у родительного падежа идёт замена 'чка': 'чка'. По идее, должно быть 'чка': 'чки' (нет овечки, речки, тачки..).
Это legacy-код. В текущей версии к этому словарю скрипт обращается, только если встречено слово-исключение (на котором Pymorphy выдает не то что нам требуется, таких слов сейчас всего 5), либо если Pymorphy не выдала вообще никаких вариантов.

И всё ещё непонятно, как быть, если нужно будет, скажем, получить прилагательное в определённом падеже в зависимости от пола (то есть одновременно set-form и падеж).
По мере необходимости это можно будет дорабатывать. Пока очень много замен сделано в самом коде скрипта, но с использованием Pymorphy. Исходный и целевой падежи как правило жестко задаются, в зависимости от типа словосочетания.

Оффлайн Arex

  • Старожил
  • ****
  • Сообщений: 407
  • Ленивый дварфовод
    • Просмотр профиля
    • На викидварфии
Re: Русификация Dwarf Fortress
« Ответ #2161 : 11 Октября 2015, 19:54:11 »
Это legacy-код. В текущей версии к этому словарю скрипт обращается, только если встречено слово-исключение (на котором Pymorphy выдает не то что нам требуется, таких слов сейчас всего 5), либо если Pymorphy не выдала вообще никаких вариантов.
А нельзя эти 5 слов просто добавить в словарь Pymorphy, а слова без вариантов выводить в лог, чтобы позже тоже добавить?

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2162 : 11 Октября 2015, 20:19:37 »
Это legacy-код. В текущей версии к этому словарю скрипт обращается, только если встречено слово-исключение (на котором Pymorphy выдает не то что нам требуется, таких слов сейчас всего 5), либо если Pymorphy не выдала вообще никаких вариантов.
А нельзя эти 5 слов просто добавить в словарь Pymorphy, а слова без вариантов выводить в лог, чтобы позже тоже добавить?
Эти слова там уже есть, но проблема в том, что в скрипте выбирается неправильный вариант разбора. К примеру, слово "лиса" определяет как существительное мужского рода в родительном падеже (здесь для правильного выбора нужно будет добавить жесткое указание падежа) или "споры" (мн. ч. от "спора") определяет как мн.ч. от "спор". Над этим, в принципе, еще можно поработать.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2163 : 12 Октября 2015, 04:14:14 »
Залез в код текущего скрипта. Там сделано не в виде словаря, а виде списка замен для концовок слов у каждого падежа. Хотя не везде понятно, например, почему у родительного падежа идёт замена 'чка': 'чка'. По идее, должно быть 'чка': 'чки' (нет овечки, речки, тачки..).
Это legacy-код. В текущей версии к этому словарю скрипт обращается, только если встречено слово-исключение (на котором Pymorphy выдает не то что нам требуется, таких слов сейчас всего 5), либо если Pymorphy не выдала вообще никаких вариантов.
Подчистил legacy-код. И все равно осталась четверка исключений: шпинель (в словаре прописана как м.р.), стена (определяется как форма существительного м.р. "стен" - х.з. что это), лиса (определяется как форма слова "лис") и споры (распознается как "ругань" вместо "семян" грибов). На самом деле, Pymorphy2 дает для этих слов и "правильный" вариант (кроме шпинели), но, например, при определении рода/числа средствами только Pymorphy для этих случаев неоднозначность не разрешить.

Оффлайн Arex

  • Старожил
  • ****
  • Сообщений: 407
  • Ленивый дварфовод
    • Просмотр профиля
    • На викидварфии
Re: Русификация Dwarf Fortress
« Ответ #2164 : 12 Октября 2015, 07:04:54 »
Подчистил legacy-код. И все равно осталась четверка исключений: шпинель (в словаре прописана как м.р.), стена (определяется как форма существительного м.р. "стен" - х.з. что это), лиса (определяется как форма слова "лис") и споры (распознается как "ругань" вместо "семян" грибов). На самом деле, Pymorphy2 дает для этих слов и "правильный" вариант (кроме шпинели), но, например, при определении рода/числа средствами только Pymorphy для этих случаев неоднозначность не разрешить.
Видимо, ошибка в словаре, шпинель всегда используется женского рода (если это не фамилия). "Стен" - одна из единиц измерения в физике.

Собственно, какая сейчас помощь проекту может быть от сообщества? Просто я пока не вижу, чем мог бы помочь на практике.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2165 : 12 Октября 2015, 17:19:09 »
Подчистил legacy-код. И все равно осталась четверка исключений: шпинель (в словаре прописана как м.р.), стена (определяется как форма существительного м.р. "стен" - х.з. что это), лиса (определяется как форма слова "лис") и споры (распознается как "ругань" вместо "семян" грибов). На самом деле, Pymorphy2 дает для этих слов и "правильный" вариант (кроме шпинели), но, например, при определении рода/числа средствами только Pymorphy для этих случаев неоднозначность не разрешить.
Видимо, ошибка в словаре, шпинель всегда используется женского рода (если это не фамилия). "Стен" - одна из единиц измерения в физике.

Собственно, какая сейчас помощь проекту может быть от сообщества? Просто я пока не вижу, чем мог бы помочь на практике.

Есть пара вещей, которые нужно исправить в патчере, но думаю пока их можно отложить и наверное уже выложить обновленную сборку. Думаю, она будет не на основе Starter Pack, т.к. там есть глюки при запуске ДФ с новым changetext из оболочки PyLNP. Еще нужно поэкспериментировать с дополнительными кастомными тегами, чтобы их можно было включать прямо в переводимые строки и получать согласование слов без необходимости изменений в changetext. Вот такие у меня мысли.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2166 : 17 Октября 2015, 15:21:14 »
В общем, патч приближается к состоянию "артефактный". Добавлена функциональность, позволяющая точно знать, исправлена ли длина строки или нет. В результате длина строки фиксится еще у порядка 500 строк (фактически, перед вызовом функций, требующих указание длины, вставляется код функции strlen), длина которых ранее не фиксилась, что могло приводить к обрезанию этих строк.

Осталось, правда еще 6 строк (мелочи по сравнению с 500 исправленными) с альтернативным способом инициализации (копирование несолькими командами mov или через rep movsd), которые не фиксятся из-за мешающих этому оптимизаций кода. На часть из них можно забить, например на окончания числительных st/nd/rd/th, которые можно не переводить патчем, а переводить с помощью скрипта changetext.py. Над остальными можно еще поработать.

вывод патча
[свернуть]

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2167 : 02 Декабря 2015, 02:17:34 »
Исходные строки обновлены до версии 0.42.01, через несколько часов они обновятся на transifex.com и можно будет начинать переводить:
https://www.transifex.com/dwarf-fortress-translation/dwarf-fortress/

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2168 : 05 Декабря 2015, 23:15:49 »
На данный момент равки допереведены, нужно еще перевести текст из экзешника - осталось около 4600 строк.
Когда закончим с этим, нужно будет снова научить DF правильно выводить текст в мыслях и предпочтениях и принимать кириллицу в поиске.
Потом можно будет выкатить сборку.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2169 : 08 Декабря 2015, 06:28:43 »
Осталось перевести порядка 3000 строк из экзешника. Дело движется довольно медленно.
Пока что отложу на время перевод, займусь исправлением вывода в мыслях и предпочтениях (уже раскопал нужные функции в экзешнике) и вводом кириллицы в поиск при заказе в производство.

Оффлайн UncleXaM

  • Новичок
  • *
  • Сообщений: 29
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2170 : 09 Декабря 2015, 18:50:59 »
От всего сердца выражаю Огромную благодарность. >>(

Оффлайн Echo-Six

  • Ветеран
  • *****
  • Сообщений: 771
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2171 : 28 Декабря 2015, 10:56:13 »
От всего сердца выражаю Огромную благодарность. >>(
Присоединяюсь >>(

Оффлайн wartugg

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2172 : 29 Января 2016, 06:42:45 »
я извиняюсь, хотя бы частично русифицированной сборки новой версии нет?
так поюзать хочется уже... :'(

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2173 : 29 Января 2016, 11:54:57 »
я извиняюсь, хотя бы частично русифицированной сборки новой версии нет?
так поюзать хочется уже... :'(
Пока все в процессе доработки и тестирования. Если все будет ок, то на следующей неделе возможно выложу сборку.

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Русификация Dwarf Fortress
« Ответ #2174 : 02 Февраля 2016, 04:36:59 »
Демонстрация улучшенного перевода в историях и Некромант-спортсмен :D