Попытки перевода Inform'а привели к ряду интересных наблюдений.
I. Русские буквы многие интерпретаторы отображают.
II. Есть возможность добавлять русские буквы в таблицу символов.
III и самое главное: Winfrotz тображает вводимые русские буквы как "?". Что интересно, если вставить русский текст из буфера, то он будет виден, и программа примет и поймёт его. Т.е. ввод русских букв попросту заблокирован!
Зачем, можно только догадываться. Быть может дело в том, что при вставлении буквы "я", она занимает две буквенных позиции и автор, не удосужившись решить эту проблему, забросил это дело. Сайт Winfrotz не обновлялся с 1998 года...
В общем, нужно либо писать свой интерпретатор
z-machin'ы, либо доставать американских товарищей до победного конца...
Неактивен
Насколько я помню свои эксперименты с Inform добавление русских букв в словарик работает как-то странно, совсем не по документации. По моему, там были проблемы в словарных словах на русском - они попросту не работали. Так что даже если вставлять текст из буфера - результата никакого не будет - все равно программно его обработать у меня не получалось.
А с написанием интерпретатора Z машины особых проблем нет - было бы желание. Открытых исходников этого дела - хоть отбавляй.
Неактивен
Некоторые ошибки наблюдаются, но они не глобальны и имеют некоторую закономерность.
Тут можно скачать кусочек игры http://rtads.narod.ru/inf.zip.
Там сказанно какие команды можно вводить.
Направления он понимает. Вероятно, дело в механизме создания абревиатур или сходного.
Неактивен
Собственно, в целях русификации inform как-то придумал несложный механизм (транслит+переключатели), и почти дофиксил интерпретатор jzip под это дело (русский он выводил, но с ц я не очень дружу, поэтому не нашёл, как в bc сделать русский ввод :x ). Могу выслать наработки, если надо...
Исходники интерпретаторов действительно валяются на каждом шагу ;D
Неактивен
Да нет, я этим заниматься не хочу...
У меня сейчас идеи как ТАДС настроить для русской грамматики, тобишь чтобы он понимал исключительно "взять верёвкУ", а не "взять верёвкА".
Просто я говорю о том что всё возможно...
Неактивен
Хорошо, если у вас получится. Да что там хорошо - будет просто замечательно! Только зачем так мучиться? Мне кажется, что проще (ну, может, не совсем "проще") написать свою платформу. Чувствую, сразу подумали: "Опять он про платформы заводит разговор". Конечно, тема эта жёвана-пережёвана, но это не значит, что её нужно бросать. Думаю, что дело должно быть завершено, и русская платформа всё же должна выйти. Может, это будет и не скоро...
Я не видел TADS, в смысле не знаю принципов его работы и языка, но мне кажется что тот же Inform может послужить базой для создания платформы. Я взял его за основу и начал работать. Всё это дело достаточно сложное, но я не спешу - лучше сделать качественее, чем быстрее. Кстати, я думаю над созданием полу-визуального редактора как временный этап (для компилятора нужно продвинуть другой проект, а продвигать его - дело муторное и большое, тем более, что редактор всё равно нужен, как я читал в других мессагах).
Неактивен
мне почему-то кажется, что TADS от Inform'а отличается примерно как Pascal от C. Наверное, потому что я с Inform и C++ знаком, а с TADS и Pascal - не очень. Но мне кажется, что возможности практически одинаковые, только каждый привык к своей системе, и считает ее быстрее, выше, сильнее... Пардон-с...
Неактивен
Информ, конечно, хорош, но парсер на русский язык перестроить будет очень проблематично. Это мне сказали даже опытные Информеры. ТАДС в этом отношении очень гибок и я знаю, что любую проблему рано или поздно я в нём решу.
Неактивен
Ух... Ох... Впервые посмотрел на TADS - вылитый C++, как, в общем, и Inform. К чему бы это?
Объясните мне, почему парсер TADS проще перевести, он же зашит в коды? А вот исходник парсера Inform'а на C++ перевести можно. И тогда уже от него плясать, как угодно. Кто возьмётся?
Неактивен
Он зашит в коды, но из кода торчат хвосты, и ты всегда можешь ПЕРЕПИСАТЬ ту, или иную функцию, а то и весь парсер. Так, у меня, переписаны сообщения об ошибках.
Ещё ТАДС позволяет вызывать внешние функции Си. Надо попробовать вызывать Генератор для создания склонений на ходу
Насчёт информа - тестил я свежий winfrotz2002, так в нём русский выводится и разрешено его вводить, но его вообще не узнаёт. Ни буквы. Раньше хоть направления света работали...
Неактивен
Люди, кто-нибудь, кто переводил Информ, читал этот мануал?
http://www.inform-fiction.org/manual/Chapter5.pdf
Здесь сказанно, что существует Zcharacter table. Все буквы занесённые в неё, будут занимать одну или две ячейки в памяти, а все незанесённые - четыре. Всего под каждое слово отводится максимум девять ячеек. Таким образом любое русское слово укорачивается до двух букв. Именно поэтому стороны света работают, а вещи и команды путаются.
У меня настроить её так и не получилось. Если записываю:
Zcharacter "абвгдеёжзийклмнопрстуфхчцш"
"щьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРС"
"0123456789!$&*():;.,<>Я";
(ещё и не все буквы умещаются!)
то компилятор жалуется что буквы не были заранее объявлены. Ключ -C5 не помогает.
Возможно здесь происходит путаница с ISO, Unicode.
Кто этим интересуется, то лучше всего спросить здесь:
http://groups.google.com/groups?group=r … nt-fiction
Неактивен
Ну вот, пришёл тот дикий день, в который никто не верил.
Inform понимает русский. Проблему решил WinFrotz2002 и
перекодировка всех файлов в unicode.
Windows Frotz 2002 можно взять здесь:
http://www.ifarchive.org/indexes/if-arc … frotz.html
Пример игры с компилятором, перекодировщиком и исходными файлами здесь:
http://rtads.h-type.com/inform.zip
Теперь WildWizrd может закончить LitlleLife. Только сначала нужно настроить парсер и отшлифовать все сообщения.
Надеюсь острота платформенного безумия теперь спадёт.
Успехов.
P.S. Не забудьте поблагодарить David'а Kinder'а.
Неактивен
Ну, это уже отчасти сделано. Осталось потратить недельку на перевод и несколько месяцев до приведения в кондицию. В любом случае, это будет быстрее, чем создать подобное самому.
А на меня не смотрите... Моя хата с краю
А поиграть в перевод curses хочется... :'(
Неактивен
to RealSonic
Увы, как я обнаружил, за всё это время только один человек скачал мои результаты (не ты ли?). Так что, если ты этого не сделаешь - никто не сделает.
Впрочем, я догадывался, что так получится. Иначе бы я побоялся помогать "конкуренту".
Неактивен
А вот интересно. Сложно ли будет написать интерпретатор для переведенного Информа (в будущем) для "Палма"? Вопрос непраздный. Потому, что, по моим ощущениям, информовский фротс для "Палм" - единственно стабильно работающий ИФ-интерпрататор на КПК с этой операционкой.
Неактивен
Проверь, по-моему Информовская игра написанная на русском, будет прекрасно идти на пальме. У меня работал Litlle Life(отображался русский текст). Кстати, я из-за этого я и затеял все эти изыскания. Увы, не хочет ТАДС на пальме идти :'(
Неактивен
По-моему, многоуважаемый GrAndrey буквально на наших глазах вписывает себя в историю русской IF. Сначала он перевел TADS и показал всему миру, что перевести одну из лучших платформ на русский вполне возможно. Теперь он открыл дорогу переводу Inform. А это еще более значительное событие. Потому что, други, я думаю, вы согласитесь, что Inform - это просто фантастика. Не столько по самому языку, сколько по его истории, популярности, универсальности. И когда он появится на русском, это будет Вторая ИФ-революция в России. После которой и начнется малиновая ИФ-жизнь.
Гегель нас учил, что количество рано или поздно переходит в качество.
То бишь игры будут, поверьте мне.
Еще какие.
Неактивен
GrAndrey написал:
Проверь, по-моему Информовская игра написанная на русском, будет прекрасно идти на пальме. У меня работал Litlle Life(отображался русский текст). :'(
А вот у меня загруженный на палм твой пример рисуется абракадаброй. Может быть, не тот софт? Я пользовался PalmPilotFrotz V1.0R6.
Неактивен
Я юзаю Frobnitz V1.01.
http://member.newsguy.com/~hangard/frobnitz/
По-моему, он вообще лучше.
Неактивен
Да, извиняюсь. Frobnitz показывает лишь ??? вместо русских букв в моём примере, хотя в играх написанных ранее, Litlle Life by WildWizard, например, нормально отображаются.
Новый подход работает лишь для нового интерпретатора.
Т.е. действительно, нужно писать новый. Для этого придётся либо доделать существующий, приладив механизм обработки текста, использованный Дэвидом Киндером в WinFrotz 2002, либо переписать для палма сам WinFrotz 2002. Кстати, Дэвид сам охотно рассказывал как ему удалось и что для этого нужно сделать. Похоже, это не слишком трудно, но я этим заниматься не буду.
Неактивен
Для справок: текст выяснений. Вдруг поможет.
http://groups.google.com/groups?dq=& … tart%3D125
Неактивен
А насколько универсален такой способ перевода? То есть возможно ли будет создавать интерпретаторы под другие платформы (скажем, под ДОС, ради эксперимента), которые все грамотно бы отражали? И - главное - насколько это будет трудно?
Неактивен
Это ещё стоит изучить. Главное - в текущей версии компиляторов Inform не учтена Виндовс кодировка кирилицы, отчего надо мучится с преобразованием. Обещают исправить в след. версии. Все интерперетаторы до Winfrotz 2002 вообще не желали работать с non-Latin кодировками. Нужно либо писать их самим, либо катить бочку на тамошних разработчиков интерпретаторов. Повторяю, это не сложно и убедить их можно.
Неактивен
У меня вопрос: а может ли сам язык Inform выводить символы с заменой кодировки? Если просто написать маленькую утилитку (в виде процедуры в Inform), которая бы как-нибудь выводила русский текст через только-русский шрифт, а?
Неактивен
Старые интерпретаторы игнорируют русские буквы, заменяя их на "?", и эта процедура нужна внутри интепретатора, а не внутри игры. А вставить процедуру в интерпретатор ~= написать новый.
Неактивен
Уважаемый GrAndrey! Скачал выложенный вами архив с исходниками Информа. Посмотрел пока очень бегло, но уже видно, что часть работы по руссификации выполнена, хотелось бы продолжить и довести до логического конца. Нет возражений?
Неактивен
dennis написал:
Посмотрел пока очень бегло, но уже видно, что часть работы по руссификации выполнена, хотелось бы продолжить и довести до логического конца.
Сообщи, если что-то будет. Желательно, уже с ссылкой.
Неактивен