Понедельник, 23 Декабря 2024, 01:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Мультиязычность
xMoonGuarDxДата: Пятница, 06 Марта 2015, 09:44 | Сообщение # 1
участник
Сейчас нет на сайте
Собственно интересует вопрос и советы создателей игр, как реализуется мультиязычность обычно?
Мне пришло в голову только два самых простых варианта.
Первый - это где-то в одном месте в коде инициализируются все текстовые переменные. В зависимости от выбранного языка, им присваиваются нужные значения, потом уже все элементы к ним обращаются.
Плюсы - относительная простота реализации.
Минусы - вшивание переводов непосредственно в код.
Второй вариант, это каждая переменная, которая содержит текст, читает его с файла в определенном формате и месте. В зависимости от языка, определяется нужный файл.
Плюсы - легко поддерживать множество языков, даже для неофициального перевода. Т.е. переводчик просто взял и перевел обычный текстовый файл или несколько, и может играть. Перекомпиляция не нужна.
Минусы - во-первых, могут возникнуть проблемы с размерами. Во-вторых, если переводчик что-то сделает не так, что-то пропустит, то игра выдаст ошибку в конкретном месте и скорее всего не сразу. В-третьих, думаю, что могут возникнуть проблемы с тем, что слишком много элементов обратятся к одному файлу.
Мне кажется, что такие решения приходили в голову людям ещё в 90-е, и сейчас возможно существуют более хитрые механизмы. Может кто-то что-то сказать на эту тему?


Сообщение отредактировал xMoonGuarDx - Пятница, 06 Марта 2015, 09:46
OrdanДата: Пятница, 06 Марта 2015, 09:57 | Сообщение # 2
Главный зомби
Сейчас нет на сайте
xMoonGuarDx, второй вариант используется в большей части игр.

Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)

Мои проекты ТЫК
Мои видяхи на ютубэ ТЫК

Если ты споришь с идиотом, вероятно тоже самое делает и он.
MrFiringДата: Пятница, 06 Марта 2015, 22:18 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата xMoonGuarDx ()
В-третьих, думаю, что могут возникнуть проблемы с тем, что слишком много элементов обратятся к одному файлу.

А как насчет при запуске игры считать весь файл локализации и раскидать всё это дело по переменным.
xMoonGuarDxДата: Пятница, 06 Марта 2015, 22:31 | Сообщение # 4
участник
Сейчас нет на сайте
MrFiring, по моим прикидкам не имеет смысла. Получается, я добавляю ещё один уровень обмена данными, а никаких преимуществ видимых мне это не дает, даже наоборот лишнее неудобство из-за лишних действий.
Так, например, мой код на шарпе будет выглядеть как-то так:
Код
linkLabelMenuLoad.Text = FileHelp.GetText("MenuLoad");
, и все, вся логика переключения и получения инфы скрыта в классе FileHelp. В случае же смешанном, мне придеться все равно делать этот класс, который сможет правильно считать данные, но так же и породить кучу текстовых переменных. Но я не избавляюсь от проблемы некорректного заполнения текстового файла.
Очередной вопрос, который я не знаю, как решить, это переключения языка в игре. У меня в движке все основано на контроллах, они отображают ту или иную информацию. Первое, что приходит в голову, это некий метод, который вызывает при переключении языка в игре. Он как-то переопределяет текстовое значение, считывая его заново и перерисовывает элемент.


Сообщение отредактировал xMoonGuarDx - Суббота, 07 Марта 2015, 08:06
goldsphereДата: Вторник, 10 Марта 2015, 17:32 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Я делал это так. Были файлы содержащие переменные c присвоенными им фразами и словами на разных языках, каждый файл - отдельный язык, и в коде я вставлял не текст, а брал значение нужных переменных

FinderX - Android Аркада
AevienДата: Вторник, 10 Марта 2015, 18:02 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
xMoonGuarDx, например в Cryengine это простой XML файл, который можно открыть в экселе и редактировать. smile
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг