Поддержка нескольких языков в рогалике

Темы, связанные с проектированием и программированием roguelike-игр

Модераторы: Sanja, Максим Кич

Ответить
vapekreng
Сообщения: 63
Зарегистрирован: 22 фев 2016, 22:33

Поддержка нескольких языков в рогалике

Сообщение vapekreng » 15 мар 2017, 19:29

Всем доброго времени суток. Возник вопрос по сабжу - как лучше реализовать? Пока что даже не знаю, с какой стороны подойти, а текст уже пошел по-тихоньку и хочется сразу сделать поддержку нескольких языков, чтобы потом не выковыривать тексты изо всех щелей. Что посоветуете? Базу данных, бинарники, эксель, просто текстовые файлы? Или вообще не заморачиваться и кидать везде словари с ключами 'ru', 'en' и т. д.? пишу на пайтоне. Подробностей не нужно, просто указать направление, дальше гуголь поможет. Заранее спасибо за помощь

Аватара пользователя
kipar
Сообщения: 2120
Зарегистрирован: 10 мар 2010, 13:16
Откуда: Москва

Re: Поддержка нескольких языков в рогалике

Сообщение kipar » 15 мар 2017, 19:38

python i18n.
хотя что-то пример у них странно выглядит, в рубёвом можно было

Код: Выделить всё

t.device.fail(sys.genitive)
, но как в питоне принято я не знаю.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Apromix » 15 мар 2017, 20:36

vapekreng писал(а):
15 мар 2017, 19:29
Или вообще не заморачиваться и кидать везде словари с ключами 'ru', 'en' и т. д.?
Как это реализовано на пайтоне?

vapekreng
Сообщения: 63
Зарегистрирован: 22 фев 2016, 22:33

Re: Поддержка нескольких языков в рогалике

Сообщение vapekreng » 16 мар 2017, 06:08

python i18n.
Спасибо, заценим
Или вообще не заморачиваться и кидать везде словари с ключами 'ru', 'en' и т. д.?
Как это реализовано на пайтоне?
Например:

Код: Выделить всё

text = {'ru': 'Инвентарь', 'en': 'inventory'}
print(text[language])
language - строка, выбирается в менюшке, например, потом её знчение хранится в текстовике
text - словарь, доступ идет по ключу
text['language'] выдаст 'inventory', если text = 'en' и 'инвентарь, если' = 'ru'
Подробнее https://pythonworld.ru/tipy-dannyx-v-py ... varej.html

altmax
Сообщения: 173
Зарегистрирован: 15 сен 2012, 11:59

Re: Поддержка нескольких языков в рогалике

Сообщение altmax » 16 мар 2017, 06:46

Мое мнение - текст должен подгружаться из внешних файлов, например при инициализации игры. Соответственно можно просто загружать текст из разных файлов, из русского, английского, немецкого или какой там еще понадобится.
И это будет удобно при разработке игры - чтобы изменить какие-то фразы и описания, их не придётся искать во всем проекте, а для C++ потом еще и перекомпиляция понадобилась бы.

Аватара пользователя
karagy
Сообщения: 1271
Зарегистрирован: 10 янв 2007, 14:13

Re: Поддержка нескольких языков в рогалике

Сообщение karagy » 16 мар 2017, 07:03

vapekreng писал(а):
15 мар 2017, 19:29
Подробностей не нужно, просто указать направление, дальше гуголь поможет.
google: python gettext

И для C++ тоже.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Apromix » 16 мар 2017, 08:05

Ничего нового не скажу, но все же :D При старте программы (и если в меню есть смена языка, то и там тоже) загружать из файла вида "russian.*" в массив. А дальше исп. в коде как хеши, по фразе на английском языке. Достаточно удобно. Если не исп. свой велосипед, тогда однозначно gettext.

Текстовый файл удобно переводить на др. языки, если в нем идут ключи вида "Pickup all items=Поднять все предметы". В коде не нужно ничего комментить, он и так остается читабельным, так как строка на английском. Если языка нет (нет перевода), то исп. дефолтные фразы на английском. Вот как у меня :)

Аватара пользователя
Jesus05
Сообщения: 1840
Зарегистрирован: 02 дек 2009, 07:50
Откуда: Норильск, сейчас Санкт-петербург.
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Jesus05 » 16 мар 2017, 08:16

Если в твой файл вначале добавить "Language=Русский" и во время запуска проверять папку, загружать все текстовые файлы которые содержат подобную строку :) и добавлять в менюшку с выбором языка.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Apromix » 16 мар 2017, 08:19

Спасибо :D Это еще лучше.

vapekreng
Сообщения: 63
Зарегистрирован: 22 фев 2016, 22:33

Re: Поддержка нескольких языков в рогалике

Сообщение vapekreng » 16 мар 2017, 09:11

Почитал про gettext, кажется, то, что надо! Спасибо за помощь, пойду курить мануалы))

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Apromix » 16 мар 2017, 15:53

Я уже запихнул в свой проект gettext. За пример взял вот этот проект на дельфи. Спасибо, karagy, за наводку :D

altmax
Сообщения: 173
Зарегистрирован: 15 сен 2012, 11:59

Re: Поддержка нескольких языков в рогалике

Сообщение altmax » 16 мар 2017, 16:37

Вот так и убеждаешься, что всё нужное уже написано и не стоит изобретать велосипед. Тоже не знал про Gettext.

Аватара пользователя
Apromix
Мастер
Сообщения: 1236
Зарегистрирован: 04 июл 2011, 10:44
Откуда: Украина, Черновцы
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Apromix » 16 мар 2017, 18:39

Я давно знал его, просто меня нужно было хорошенько пнуть :D А вот тут хороший онлайновый редактор для gettext :)

Аватара пользователя
Uvadzucumi
Сообщения: 365
Зарегистрирован: 29 ноя 2011, 07:13
Откуда: Дубай, ОАЭ (Минск, Беларусь)
Контактная информация:

Re: Поддержка нескольких языков в рогалике

Сообщение Uvadzucumi » 19 мар 2017, 21:15

Писал, когдато, статью по gettext о локализации приложений, на примере cataclysm. еcли кому интересно: http://uvadzucumi.blogspot.ae/2012/03/gcc-gettext.html

зы. оказывается 5 лет назад писал. а кажется что совсем недавно :(
Меня окружали милые, добрые люди... медленно сжимая кольцо

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость