Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 5. Если голосов меньше 5 оценка не показывается.
  • 1
  • 2
  • 3
  • 4
  • 5
Создание перевода средствами RenPy
#31
Народ, подскажите, как обратно запаковать игру в archive.rpa?

 
Ответить
#32
Второй вопрос. Нужно перевести строку:
Код:
   show text "{color=#FFFFFF}Bla-bla-bla{/color}"

Делаю замену:
Код:
   show text _("{color=#FFFFFF}Bla-bla-bla{/color}")

В файле перевода меняю текст:
Код:
old "{color=#FFFFFF}Bla-bla-bla{/color}"
new "{color=#FFFFFF}Бла-бла-бла{/color}"

А при запуске проекта выскакивает сообщение:
Цитата:'text' takes a single string parameter

Что я делаю не так?

P.S. Догадываюсь, что во всём виноват "{color=#FFFFFF}", но как исправить не знаю.


Разбил строку на 3 части(хз, можно так делать или нет):
Код:
   show text "{color=#FFFFFF}" + _("Bla-bla-bla") + "{/color}"

Ошибка пропала, в файл перевода текст добавляется, но перевод не цепляется.

 
Ответить
#33
Такой вопрос.. А где в RenPy прописывается шрифт? Иногда нужно заменить, а где это находится - не знаю

 
Ответить
#34
@86bf37bf, https://www.renpy.org/doc/html/text.html#fonts
Конкретнее сказать можно только глянув на игру.

 
Ответить
#35
Добрый день.
Пытаюсь сделать билингвистический перевод по схеме указанной в шапке.
Я слегка далёк от любого кода, поэтому попробую объяснить как могу.
Запускаю SDK. Создаю новый проект, под него лаунчером создаётся папка, в этой папке всё кошу и бросаю туда игру(всю полностью), которую надо перевести. Нажимаю создать перевод, и получаю ошибку.
"Ошибка. Запуск проекта провален.Пожалуйста убедитесь, что ваш проект запускается перед использованием этой команды".
При этом сама игра работает.
Внимание, вопрос. Что я делаю не так?

 
Хочется завернуться в тёплый плед, пить горячий шоколад и смотреть "Justified".
Но приходится вкалывать по 14 часов в сутки 7 дней в неделю и ненавидеть весь мир.
Блог
Ответить
#36
Есть предположение что он все таки не работает.
Точнее он собранный работает, но не собирается.

поэтому предлагаю вычистить из проекта *.rpyc файлы и попробовать снова

 
Открыт к предложениям проектов по python\renpy
Ответить
#37
@90748021, глупый наверное вопрос.
Вычистить .rpyc из папки "game" или всего проекта?
Может вообще только папку "game" в проект закидывать?
Потому как проект запускается и через .exe и через SDK, но перевод достать не могу.
Пробовал удалить .rpyc из папки "game", но результат тот же, и файлы .rpyc волшебным образом восстанавливаются.
Пробовал также вычистить содержимое папки "cache" в игре.
Тоже восстановилось. И всё та же ошибка.cray

 
Хочется завернуться в тёплый плед, пить горячий шоколад и смотреть "Justified".
Но приходится вкалывать по 14 часов в сутки 7 дней в неделю и ненавидеть весь мир.
Блог
Ответить
#38
(02.08.2017, 08:19)4a62919c писал(а): Народ, подскажите, как обратно запаковать игру в archive.rpa?

Не знаю как делают многие, я все разбирал/собирал через python и этот дешифровщик https://github.com/Shizmob/rpatool

 
Ответить
#39
(24.02.2018, 05:38)5a031b3c писал(а): @90748021, глупый наверное вопрос.
Вычистить .rpyc из папки "game" или всего проекта?
Может вообще только папку "game" в проект закидывать?
Потому как проект запускается и через .exe и через SDK, но перевод достать не могу.
Пробовал удалить .rpyc из папки "game", но результат тот же, и файлы .rpyc волшебным образом восстанавливаются.
Пробовал также вычистить содержимое папки "cache" в игре.
Тоже восстановилось. И всё та же ошибка.cray

Проект игры - это только папка game (насколько я помню). Остальное движек и питон.
Файлы .rpyc восстанавливаются не "Магически". В момент запуска игры все исходные коды собираться в перпроцессорные байт коды python. Они и будут восстанавливаться в момент запуска, потому что SDK выдирает (пытается) по семантике вызовов определенных функцию renpy. Ты давно обновлял SDK?

 
Открыт к предложениям проектов по python\renpy
Ответить
#40
Обновляю прямо сейчас.
То есть в проект надо закидывать только папку "game" без файлов .rpyc?
Кстати они восстанавливаются и от попытки достать текст.

 
Хочется завернуться в тёплый плед, пить горячий шоколад и смотреть "Justified".
Но приходится вкалывать по 14 часов в сутки 7 дней в неделю и ненавидеть весь мир.
Блог
Ответить
#41
(24.02.2018, 13:23)5a031b3c писал(а): Обновляю прямо сейчас.
То есть в проект надо закидывать только папку "game" без файлов .rpyc?
Кстати они восстанавливаются и от попытки достать текст.

Система питона (языка на котором написан renpy) такова, что он будет использовать *.pyc если они есть и они соотв исходнику.
соотв само собой что они обновляются - тк по сути именно они и есть код, который запускается внутри. Отсутствие rpyc файлов в начале процесса гарантирует, что созданные rpyc файлы текущим интерпетатором будут той же версии и с той же линковкой (если она там есть) что и текущая версия движка..

 
Открыт к предложениям проектов по python\renpy
Ответить
#42
Господа, словил такой баг. Есть у меня файл "translations", куда запилена всю эта лабуда
Код:
   config.translations[u'Developer Menu'] = u'Меню Разработчика'
   config.translations[u'Return to the developer menu'] = u'Вернуться к меню разработчика'

   config.translations[u'Skip Mode'] = u'Режим Пропуска'
   config.translations[u'Fast Skip Mode'] = u'Быстрый Пропуск'
   config.translations[u"While Ren'Py games may be playable without the renpy module, some features may be disabled. For more information, read the module/README.txt file or go to http://www.bishoujo.us/renpy/."] = u"Игры Ren'Py могут запускаться и без модуля renpy, но некоторые функции возможно будут отключены. Более подробную информацию можно прочесть в файле module/README.txt или по адресу http://www.bishoujo.us/renpy/."
   config.translations[u'renpy module not found.'] = u'не найден модуль renpy.'
   config.translations[u'The renpy module could not be loaded on your system.'] = u'Не получается загрузить модуль renpy под вашей системой.'
   config.translations[u'Old renpy module found.'] = u'Обнаружен устаревший модуль renpy.'
   config.translations[u"An old version (%d) of the Ren'Py module was found on your system, while this game requires version %d."] = u"Обнаружена устаревшая версия (%d) модуля Ren'Py. Игра требует версии старше %d."
   config.translations[u'Please click to continue.'] = u'Для продолжения нажмите левую кнопку мыши.'

и т.д.

Так вот этот файл напрочь отказывается переводиться обратно на инглишь. В старой игре все отлично работало. Пробовал добавлять _(""), но движок просто отказывается создавать файл перевода. В чем может быть косяк?

 
Ответить
#43
(18.03.2018, 20:32)13aea73a писал(а): Господа, словил такой баг. Есть у меня файл "translations", куда запилена всю эта лабуда
Код:
   config.translations[u'Developer Menu'] = u'Меню Разработчика'
   config.translations[u'Return to the developer menu'] = u'Вернуться к меню разработчика'

   config.translations[u'Skip Mode'] = u'Режим Пропуска'
   config.translations[u'Fast Skip Mode'] = u'Быстрый Пропуск'
   config.translations[u"While Ren'Py games may be playable without the renpy module, some features may be disabled. For more information, read the module/README.txt file or go to http://www.bishoujo.us/renpy/."] = u"Игры Ren'Py могут запускаться и без модуля renpy, но некоторые функции возможно будут отключены. Более подробную информацию можно прочесть в файле module/README.txt или по адресу http://www.bishoujo.us/renpy/."
   config.translations[u'renpy module not found.'] = u'не найден модуль renpy.'
   config.translations[u'The renpy module could not be loaded on your system.'] = u'Не получается загрузить модуль renpy под вашей системой.'
   config.translations[u'Old renpy module found.'] = u'Обнаружен устаревший модуль renpy.'
   config.translations[u"An old version (%d) of the Ren'Py module was found on your system, while this game requires version %d."] = u"Обнаружена устаревшая версия (%d) модуля Ren'Py. Игра требует версии старше %d."
   config.translations[u'Please click to continue.'] = u'Для продолжения нажмите левую кнопку мыши.'

и т.д.

Так вот этот файл напрочь отказывается переводиться обратно на инглишь. В старой игре все отлично работало. Пробовал добавлять _(""), но движок просто отказывается создавать файл перевода. В чем может быть косяк?
а ну дай сам файлик?
(ну и попробуй в __(двойное подчеркивание) обернуть)

 
Открыт к предложениям проектов по python\renpy
Ответить
#44
(19.03.2018, 11:22)e44a1cb9 писал(а): (ну и попробуй в __(двойное подчеркивание) обернуть)
Попробовал, не помогает cray
Вот ссыль

 
Ответить
#45
(19.03.2018, 22:25)13aea73a писал(а):
(19.03.2018, 11:22)e44a1cb9 писал(а): (ну и попробуй в __(двойное подчеркивание) обернуть)
Попробовал, не помогает  cray
Вот ссыль

"Пааанятна"... Он не "не генерирует" файл. Просто ты не там их ищешь. Проверяй файлы перевода common.rpy(rpym). Есть не нулевая вероятность что там все твои строки

На удивление у меня "эта фиговина" с легкостью генерирует файл перевода по твоему rpy.
Так что скорее всего я прав - и все эти строки у тебя уже входят в какой -то из файлов перевода. Попробуй "сделать пару ошибок" в той же новой игре и посмотреть, сгенерит ли после этого он перевод

 
Открыт к предложениям проектов по python\renpy
Ответить
#46
@90748021, Проверил все переведенные файлы, нигде ничего лишнего нет. Если делаю ошибки в этом файле, то перевод проваливается. Но в переведенном файле common лежат некоторые оригинальные английские реплики, как бы ожидающие перевода на русский. Но их игра как бы игнорирует.


Кажется, я понял свой косяк. Я подставил _() к строчке "Новая игра". Но эта строчка есть в другом файле, и видимо движок проигнорил ее. Попробовал подставить к другим строчкам, и файл создался, все заработало вроде.

 
Ответить
#47
(20.03.2018, 12:33)13aea73a писал(а): @90748021, Проверил все переведенные файлы, нигде ничего лишнего нет. Если делаю ошибки в этом файле, то перевод проваливается. Но в переведенном файле common лежат некоторые оригинальные английские реплики, как бы ожидающие перевода на русский. Но их игра как бы игнорирует.


Кажется, я понял свой косяк. Я подставил _() к строчке "Новая игра". Но эта строчка есть в другом файле, и видимо движок проигнорил ее. Попробовал подставить к другим строчкам, и файл создался, все заработало вроде.

Угу, он "строки" генерит один раз для перевода.

 
Открыт к предложениям проектов по python\renpy
Ответить
#48
(20.03.2018, 13:24)e44a1cb9 писал(а): Угу, он "строки" генерит один раз для перевода.
Вообще это когда как. Иногда идентичную строчку по миллиард раз переводит, только успевай отыскивать. Теперь все починилось, спасибо drinks

 
Ответить
#49
всем прив
поможите с переводом плиз.
не пойму какие файлы переводить в ренпай чтобы не поломать игру
сама игра take over

заранее спасибо


я прямо код переводить пробую ,мне так понятнее , я так все игры переводил . для себя , даж на qsp и твин как то оно мн проще когда видишь код .

вот как тут перевести ,чтобы не поломать , наверное тут тот же порядок как и у qsp ?

 
Ответить
#50
(19.01.2019, 18:19)3c8be94a писал(а): всем прив
поможите с переводом плиз.
не пойму какие файлы переводить в ренпай чтобы не поломать игру
сама игра take over

заранее спасибо


я прямо код переводить пробую  ,мне так понятнее  , я так все игры переводил . для себя , даж на qsp и твин  как то оно мн  проще когда видишь код .

вот как тут перевести ,чтобы не поломать , наверное тут тот же порядок как и у qsp ?

Практически полный гайд про перевод игр на движке RenPy
Изначально подразумевается, что у тебя уже файлы распакованы.

Переводить на renpy можно двумя способами:
  • Первым - менять в главном коде игры фразы (подходит для законченных игр, т.к. каждый патч заипешься копипастом заниматься, а если игра еще и большая...) Но кому-то такой вариант заходит;
  • Второй способ используя встроенную возможность RenPy SDK, о ней есть информация в первом посте, головняка по началу кажется больше, зато если игра постоянно обновляется, избавляет от проблемы переводить ВСЮ игру заного, а не только добавленную/измененную часть.

Первый способ при твоем тестировании будет выдавать ошибки с завидной регулярностью, что поможет начать в нем шарить, если хватит терпения. Кроме того, при переводе первым вариантом и при загрузке старых сохранений, игра так-же будет с завидной регулярностью выкидывать ошибки, поэтому каждый раз при тестировании - "новая игра".



Чтобы ничего ненароком не поломать - перечитай первое сообщение в этой теме, там все относительно верно, за исключением вероятно, прописать выбор языка (оно стало менее актуально в том виде).

Выбор языка можно сделать в игре несколькими способами:
1.Сделать выбор через настройки игры;
2.Сделать при запуске игры, до главного меню;
3.Сделать выбор на главном меню, в самом меню или отдельной кнопкой на экране.


Разные методы потребуют написания разного кода, так к примеру для первого метода (через настройки игры), надо в файл screens.rpy
В раздел Preferences с новым GUI прописать это:

Код:
   vbox:
       style_prefix "radio"
       label _("Language")
       textbutton _("Russian") action Language("russian")
       textbutton _("English") action Language(None)
Если ты при выборе языка перевода назвал его "russian", если назвал его "rus", то и вписывай "rus", тут надеюсь понятно.
А вот так это выглядит в игре
то же самое, но на русском

на старом GUI:
Код:
frame:
   style_prefix "pref"
   has vbox

   label _("Language")
   textbutton _("English") action Language(None)
   textbutton _("Русский") action Language("russian")
Если ты при выборе языка перевода назвал его "russian", если назвал его "rus", то и вписывай "rus", тут надеюсь понятно.
скриншот, где примерно этот код нужно вписывать
В этом месте кода я прописал этот выбор

А вот так это выглядит в игре


Для второго метода:
Можно прописать хоть в отдельный файл, хоть в какой-то из имеющихся, принципиально нет никакой разницы. Просто если будет отдельный файл, то ты его вероятно не потеряешь, если тебе придется вносить изминения... Назовем его к примеру change_language.rpy (ну или kaktopodrygomy, главное чтобы файл был обозван английскими буквами и расширение на конце имел .rpy) Кодировка файла должна быть utf-8, чтобы избежать проблем. Убедись что нигде в коде нету больше label splashscreen, если есть, то прописывай прямо в этот блок в конец того, что там есть, перед return следующие строки, только надеюсь догадаешься дважды label splashscreen: в label splashscreen: не писать.

Пишем:
Код:
label splashscreen:
       label language_chooser:
           scene title_screen
       
           menu:
               "Choose language / Выбор Языка"
               "English":
                   $ persistent.lang = "english"
                   $ renpy.change_language("english")
               "Русский":
                   $ persistent.lang = "russian"
                   $ renpy.change_language("russian")
           #$ renpy.utter_restart()
       return
В игре это будет выглядеть примерно так:
При запуске игры, но до основного/главного игрового меню


Для третьего варианта, чтобы выбор языка появился в самом меню игры, надо проделать в файле screens.rpy кое-какие манипуляции, добавить строчки:
Код:
textbutton _("Russian") action Language ("russian")
textbutton _("English") action Language (None)
Если ты при выборе языка перевода назвал его "russian", если назвал его "rus", то и вписывай "rus", тут надеюсь понятно.

В игре это будет выглядеть примерно так:
Так это выглядит на русском
и
Так это выглядит на английском


Как внедрять вместо текста выбор языка картинкой.
Что же касается внедрение переключения языка какой-нибудь красивой кнопкой на главном меню, тут все дело вкуса, и простых решений возьми это и скопируй туда - не существует.
Главное тут надо опредилить, в каких координатах тебе надо эту конпку установить

Например в Witch Trainer - Russian Edition (SadCrab)
код устроен так:

Код:
   imagebutton:
       xpos 110
       ypos 406

       focus_mask True
       xanchor "center"
       yanchor "center"
       idle "03_hp/23_title/ru_dis.png"
       hover "03_hp/23_title/ru_en.png"

       action [ Language(None)]

   imagebutton:
       xpos 110
       ypos 453

       focus_mask True
       xanchor "center"
       yanchor "center"
       idle "03_hp/23_title/en_dis.png"
       hover "03_hp/23_title/en_en.png"

       action [ Language("english")]

screen lang_menu:
   window:
       style "gm_root"
   frame:
       style_group "gm_nav"
       xalign .98
       yalign .98


       has vbox

       label _("Выбор языка")
       textbutton "Русский" action Language(None)
       textbutton "English" action Language("english")
       textbutton _("Отмена") action Start("assmenu")
Так это выглядит в игре

А так например в Pleasuremancer
Код:
imagebutton idle "gui/bouton_menu/fr.png" hover "gui/bouton_menu/fr_hover.png" action SetVariable("lang", "francais"), Language(None) xpos 50 ypos 450
imagebutton idle "gui/bouton_menu/eng.png" hover "gui/bouton_menu/eng_hover.png"  action SetVariable("lang","english"), Language("english") xpos 160 ypos 450
imagebutton idle "gui/bouton_menu/rus.png" hover "gui/bouton_menu/rus_hover.png" action SetVariable("lang","russian"), Language("russian") xpos 270 ypos 450
Где указывается сразу и картинка и координаты...

Так это выглядит в игре на французком
Так это выглядит в игре на русском

Теперь о плюсах и минусах каждого из трех методов.
Первый метод хорош практически всем, кто запустив игру догадается или докумекает в забугорском языке, как войти в настройки и переключить язык там. Ну мало ли там Арабская вязь или Японские иероглифы... Плюс: в любой момент можно переключать язык, даже на середине игры и для этого необязательно выходить в главное меню = удобно. Минус: какой-нибудь чайник может все таки, не найти (но я в этом сомневаюсь, но раз в год и палка стреляет).

Второй вариант лично я не использовал, но плюс у него в том, что при запуске игры игрок сразу выберет, на каком ему языке изображать текст. Минус: При прохождении игры и даже в главном меню переключить язык неполучится, если только дополнительно не прописывать возможность.

Третий вариант. Плюс, такой-же как у второго варианта, возможность при запуске выбрать язык. Минусы: надо, найти/нарисовать кнопку, а потом еще искать и прописывать координаты, где эта кнопка должна быть на экране.

Какой вариант выберешь дело твое. И немного еще зависит от самой игры, стиля меню.


Что белать с квадратиками и другими тексто-графическими непотребствами

Еще, мы же хотим чтобы вместо кракозябр и квадратиков нам выдавало русские буквы, а что делать если шрифт выбранный разработчиком не поддерживает Кириллицу? Тут есть два варианта нубский и продвинутый, но обо всем по порядку.

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

Вариант второй - продвинутый.
Заходим в файл gui.rpy или если используется старый интерфейс ищем по всем файлам упоминания "font", нашли поздравляем себя.
В данном случае файл gui.rpy, смотрим на буквы после define
Код:
## Шрифт, используемый внутриигровым текстом.
## The font used for in-game text.
define gui.text_font = "DejaVuSans.ttf"

## Шрифт, используемый именами персонажей.
## The font used for character names.
define gui.name_text_font = "DejaVuSans.ttf"

## Шрифт, используемый текстом вне игры.
## The font used for out-of-game text.
define gui.interface_text_font = "DejaVuSans.ttf"
Это как раз стили, которые мы можем изменить, чтобы квадратики превратились в буковки. Можно поменять прямо тут же, а можно пойти другим путем и в последующем при изменении разработчиком стилей или выход новой версии игры, нам не надо будет каждый раз залезать и править ручками код.


Создаем новый какой-нибудь файл, чтобы не путаться... что-то типа translation_style.rpy, я закидываю его в папку tl примерно так:
Сам код выглядит как-то так:
Код:
   translate russian style kakoytostlyle:
       size 12
       font "CooperBlack.ttf"

т.е. для перевода "russian" и для стиля kakoytostlyle, игра, отображай этот стиль размером 12 пикселей и шрифтом "CooperBlack.ttf"

параметр size - отвечает за размер, можно как сделать шрифт крупнее , так и мельче. Шрифт должен находится в папке game, если его положить в папку с переводом, то и путь должен принять вид
Код:
translate russian style kakoytostlyle:
   size 12
   font "/tl/[tvoy_perevod_language]/CooperBlack.ttf"

   например я использую при переводе язык перевода "russian", поэтому использую путь
font "/tl/russian/CooperBlack.ttf"    
потому, что у меня, язык на который я перевожу, называется "russian" тот что под цифрой 1 в скриншоте ниже, а не как там используется "Ru", иначе я бы писал "Ru".
Таким образом можно до неузнаваемости изменить шрифт используемый в разных версиях перевода. Думаю суть понятна.

После слова size идет название шрифта, допустим мы хотим поменять шрифт, на другой и размер текста выставить на 10, чтобы помещался в нужную нам область, которым отображаются имена персонажей... смотрим в файл gui.rpy или см.выше по тексту было:
Код:
## Шрифт, используемый именами персонажей.
## The font used for character names.
define gui.name_text_font = "DejaVuSans.ttf"
Вот его и вписываем
Код:
translate russian style gui.name_text_font:
    size 10
    font "Arial.ttf"
В итоге при переключении игры на русский язык, шрифт которым будут написаны имена говорящих персонажей будет Arial.ttf и размером этот шрифт будет 10 пикселей. То что менять не надо, можно и не писать, допустим если нам не надо изменять размер шрифта, то size можно и не прописывать, или закомментировать строчку
Код:
translate russian style gui.name_text_font:
    #size 10
    font "Arial.ttf"
или
Код:
translate russian style gui.name_text_font:
    font "Arial.ttf"


Как примерно этот файл может выглядеть, тут не принципиально, просто вписываем, как хотим чтобы игра изменила стили:
Код:
translate russian style gui.name_text_font:
    size 10
    font "Arial.ttf"

translate russian style gui.name_text_font:
    font "Tahoma.ttf"

translate russian style gui.interface_text_font:
    size 25
    font "segoepr.ttf"

Разработчик может, кроме стандартных трех стилей, добавить еще вагон и маленькую тележку в свою игру. Ищем во всех файлах игры ключевые слова font и style прописываем для стилей новые параметры в наш файл, если это требуется.

Вообще в файле gui.rpy с русскими комментариями все намного понятнее, чем брать оригинальные, забугорские.
Надеюсь эта статья кому-то пригодится... Эх, мне бы эти знания, год назад...

 


Прикрепления
.txt   gui.txt (Размер: 15,87 КБ / Загрузок: 1)
1
Ответить


Переход:


Просматривают эту тему: 1 Гость(ей)