Форум » Методички » Перевод xml-текстов: strings.xml, localization.xml и др. » Ответить

Перевод xml-текстов: strings.xml, localization.xml и др.

Knivy: Собираю здесь в одном месте те советы, что были раньше разбросаны по форуму. Здесь собирается информация, которая может оказаться полезной при переводе игровых текстов в формате xml. Сведения о том, где брать русские шрифты для игр и проч. нужно искать где-то ещё, например, можно попросить здесь, на форуме "Нашей версии" http://perevodiki.forum24.ru, чтобы их вам сделали. Тексты xml можно редактировать в следующих программах: а) в Excel — самый популярный метод. Достоинство: доступность программы, наглядное отображение файла, теги формата спрятаны, поэтому мало возможностей их повредить, есть проверка орфографии, в т.ч. в отдельных ячейках или столбцах. Недостаток: не все игровые xml могут быть открыты в этой программе (выдаётся ошибка), а кроме того иногда (редко, но крайне неприятно) Excel повреждает файлы (точнее, несколько меняет формат xml, что для игровых текстов критично), в результате чего в игре появляются баги. Причём они могут быть скрыты, коварны и выглядеть не имеющими ничего общего с Excel: игра запускается и работает отлично, но в какой-то момент зависает, либо пункт меню не отображается и т.п. Также в Excel нельзя копировать ячейки, только текст в них, иначе тоже могут возникать баги. Всё-таки Excel — это не специализированный игровой редактор. Лечение таких багов: первый способ, надёжный — восстановить предыдущую версию, без багов. Поэтому рекомендуется почаще сохранять в разных файлах промежуточные версии перевода; второй способ, тоже надёжный, но муторный — если нет сохранённой работоспособной версии перевода, то можно вылечить поломанный файл с переводом, сделав сравнение оригинального текста и багованного перевода с помощью специальных утилит сравнения текстов, например WinMerge. И исправить все изменения в формате (например, могут быть переименованы названия стилей и проч.). Подробней описание этого метода читайте ниже в комментариях 6. б) в блокноте — самый универсальный метод. Рекомендуется Akelpad, позволяющий автоматически сохранять файлы в нужной кодировке (UTF-8 без BOM). В разных приложениях эта кодировка может также называться просто UTF-8 или Юникод. Если сохранить в неправильной кодировке, то скорее всего игра не запустится, а пересохранение в другой кодировке может иногда быть проблематичным, поэтому важно следить за тем, в какой кодировке сохраняете файл. Также популярны и другие виды блокнотов: PS Pad (имеет проверку орфографии и кучу наворотов), Notepad++ (показывает файл в двух окошках) и проч. Все перечисленные бесплатны. Не рекомендуется использовать MS Word, т.к. он может менять формат файла, как и другие офисные программы (хотя, по правде, его так редко кто использует, что статистики по этому вопросу нет; здесь есть заманчивая возможность использования макросов для ускорения перевода файлов, не открываемых корректно в Excel, — подробности, как это делать, спрашивайте у участника Северга). Достоинство: программа не меняет формат самовольно, как Excel: если что-то повредилось, то это сделали вы. К тому же правильно открываются все и любые xml. Недостатки: не так удобно и наглядно, как в Excel, есть возможность нечаянно повредить формат, стерев нужный тег, желательно (а может, и обязательно) писать спецсимволы их кодами (см. ниже). Здесь нужно помнить о том, что это очень хрупкий формат. Достаточно нечаянно удалить нужную кавычку — и игра не запустится. Впрочем, появление скрытых багов, не сразу проявляющихся, как в случае с Excel, маловероятно. Лечение: открыть xml в браузере, например Internet Explorer. Если в нём есть ошибки формата, то вам сразу покажут номер строки с ошибкой. Иногда ошибка не в указанной строке, а чуть выше. Затем снова открываем свой блокнот, находим строку и исправляем. Также в Акельпаде замечены такие баги: а) Наблюдение от Angelok: Если у вас xml в Akelpad отображается с кракозябрами вроде этих: Eww…Tony isn’t very tidy! Let’s help him organize the place. то надо заново скачать и установить Акельпад, которого, видимо, «покушал» антивирус. б) Один раз был замечен серьёзный баг, когда файл вообще не сохранился. Т.е. переведённый текст при открытии в следующий раз оказался опять на английском, и пришлось всё переводить по-новой. Программа при закрытии предупреждала, но это было проигнорировано, т.к. перед этим была несколько раз использована команда «Сохранить», которая, очевидно, не сработала. Лечили опять-таки скачиванием новой версии и переустановкой. Это бесплатный редактор, который постоянно находится в процессе улучшения, случаются накладки. Замечу, что про баги Excel и Akelpad написано больше, чем про другие программы, потому что они активно и уже давно (больше года) используются любителями-переводчиками, а потому про них больше известно, чем про другие программы. в) в редакторе xml, например, XML Editor — самый «правильный» метод. Бесплатные: Syntext Serna, Microsoft XML Notepad. Достоинство: минимум ошибок, связанных с форматом. Недостаток: эти редакторы обычно в виде дерева (tree-list), что неудобно для больших текстов. Спец. символы языка xml: Ряд символов в языке XML зарезервирован и должен представляться специальным образом. Это важно помнить при переводе в блокноте; Excel такие замены автоматически делает, т.е. в Excel можно писать эти символы обычным текстом. Список некоторых таких спец. символов: (пробел после & нужно убрать — он поставлен, потому что движок форума автоматически делает замену спец. символов в сообщении) левая угловая скобка (<) & lt; правая угловая скобка (>) & gt; амперсант (&) & amp; двойная кавычка (") в значениях атрибутов & quot; одинарная кавычка (') в значениях атрибутов & apos; При желании можно пользоваться числовой кодировкой символов в стандарте Unicode. При этом символ может быть задан своим десятичным кодом (& #код;) или шестнадцатеричным кодом (& #xкод;). Например & #169 представляет символ авторского права ©, а & #x410 — русскую букву А. Знак ударения имеет код 0301. Могут пригодиться ещё такие символы: — 0151, « 0171, » 0187. В Excel их можно набирать, зажав Alt и набрав код на цифровой клавиатуре. Почитать подробней об xml: http://wdh.suncloud.ru/xml01.htm - введение. http://www.w3.org/ - полная спецификация языка (на английском). Особенности strings.xml (движок Playground): Движок Playground автоматически осуществляет перенос слов, изменение размера шрифта, но не всегда результат удовлетворителен. Тогда можно править формат текста в strings.xml вручную: Переход на новую строку: <br/> Например, надпись «Текст1<br/>Текст2» на кнопке будет располагаться в две строки. В других движках этот тег может выглядеть иначе, например [br]. Задать размер шрифта: <font size="16">Текст</font> В других движках, особенно со шрифтами-картинками, этот тег может вообще не работать. Эти теги надо вписывать в каждой ячейке текста, размер которого хотим изменить. Если такого текста очень много, то, возможно, стоит просто сам mvec-шрифт взять крупней или мельче. Размер шрифта надо подбирать при тестировании. Движок Playground автоматически меняет размер текстов, чтобы их уместить, поэтому переведённые вами тексты могут иметь разные размеры шрифта в игре, если явно не указан фиксированный размер с помощью тега font size. Одна надпись из файла strings.xml может в игре отображаться в нескольких разных местах шрифтами разных размеров, что также надо учитывать, если собираетесь этот размер задавать вручную. Все пробелы учитываются, так что можно двигать надпись вправо-влево, добавляя-убирая пробелы в тексте. Вместо различных %1%, [2], x[3] игра подставит цифры и текст — значения каких-то переменных, что надо учитывать в падежах и структуре предложения. Например, «Welcome, %1%» = «Добро пожаловать, %1%» — это приветствие, в которое будет подставлено имя профиля игрока. Автор Knivy, 2010-2011. Впервые опубликовано на perevodiki.forum24.ru.

Ответов - 32, стр: 1 2 3 All

Knivy: Почитать об xml: http://wdh.suncloud.ru/xml01.htm - введение http://www.w3.org/ - полная спецификация языка (на английском) То, что видно в Akelpad, но не видно в Excel: Файл всегда начинается со строки <?xml version="1.0"?> или <?xml version="1.0" encoding="UTF-8" standalone="yes"?> Она просто обозначает, что этот файл написан в формате xml. UTF-8 - кодировка по умолчанию. Это единственный тег, который не должен закрываться с помощью /. Дальше идут разные теги, например: <Row> <Cell><Data ss:Type="String">easy</Data></Cell> <Cell><Data ss:Type="String">Легкий</Data></Cell> </Row> Кстати, формат языка позволяет эти теги писать на русском (иногда разработчики ухитряются именно туда положить отображаемый в игре текст), но не факт, что игра поймёт.

Tefnut: Я для редактирования xml использую Notepad++ Не знаю, может в других редакторах это тоже есть, но в этом мне нравится, что там можно открыть два файла в разных окошках, чтобы сразу видеть и один и второй. Когда в Excel перевожу, то вписываю перевод в специально созданную колонку, чтобы видеть и оригинал тоже, поэтому такая особенность Notepad++ удобна в этом отношении. Выглядит эта функция таким вот образом:

Knivy: Спасибо. Что-то столько всего хорошего говорят про этот Notepad++, наверное, надо опробовать. :) Похожее с двумя окошками я видела в WinMerge - утилита сравнения файлов. В ней можно открыть два файла и увидеть все выделенные цветом различия. Но это не для перевода, а для правки, например, битых xml.


Knivy: Наблюдение от Angelok: Если у вас xml в Akelpad отображается с кракозябрами вроде этих: Eww…Tony isn’t very tidy! Let’s help him organize the place. то надо заново скачать и установить Акельпад, которого, видимо, "покушал" антивирус.

Knivy: PSPad Удобная программа для редактирования xml и других текстов, которую предпочитает Prov1zoR: http://www.pspad.com/ru/ Судя по тому, что написано на сайте, очень клёвая и со множеством возможностей - русскоязычная проверка орфографии, портативность (работает с флешки и не требует установки), поиск и замена с использованием регулярных выражений, групповая обработка текста в файлах, автоподстановка тегов и операторов, настройка подсветки синтаксиса и проч. Заточена, в т.ч., под программистов, которые пишут на множестве разных языков. Весит мало, а составляющих в ней 3: PSPad, PSPad HEX и PSPad TextDiff. Правда последними двумя мне не приходилось пользоваться, точней не доводилось ещё. К тому же она бесплатная.

Knivy: Ещё раз поподробней про баги в игровых xml, связанные с Excel. Записываю, пока всё свежо в памяти, чтобы переводчики при желании могли сами лечить сбойные переведённые файлы. Откуда и почему эти баги берутся. Как уже говорилось, Excel - это не специализированный игровой редактор. И бывает, что отредактированный в нём xml-текст вызывает в игре глюки с зависаниями, причём иногда проявляющиеся не сразу, а только при прохождении игры. Эти ошибки не вылавливаются веб-браузерами вроде IE. Судя по всему, связано это с тем, что Excel при сохранении использует все богатые возможности языка xml, в то время как игра рассчитана разработчиком на чтение не любых существующих xml, а только именно на тот конкретный один текстовый файл, что в ней есть. Поэтому любые, даже мелкие, изменения формата, пусть даже и допустимые с точки зрения стандартов языка xml, могут приводить к тому, что игра не сможет прочесть какую-то строку текста, а потом из-за этого игроку не удастся продвигаться дальше в игре (-> зависание и баги). Типичные изменения, которые Excel может вносить в формат, ни о чём не спрашивая пользователя (есть свидетельство, что иногда даже это происходит при открытии-закрытии документа, без сохранения): а) добавление/удаление некоторых строк. Иногда переводчик и сам может нечаянно удалить строку, например пустую ячейку (а это отдельная строка в файле xml). Но чаще так склонен хозяйничать Excel, например, дописывая (запоминая в файле) какие-то параметры, нужные для открытия файла в Excel и бесполезные для игры - новые стили и проч. б) автозамена, изменение значений параметров Самое обычное и безобидное - изменение имени автора и даты последнего сохранения, но могут также меняться значения, которые влияют (багоопасно) на игру - чаще всего номера стилей. Что касается автозамены, то часто она бывает полезной - например, автоматическая замена спец. символов xml на соответствующий им код (см. шапку), но иногда нежелательна - например, автозамена трёх точек на символ многоточия, который может отсутствовать в шрифте игры (тогда игра его проигнорирует, а предложение получится с неправильной пунктуацией) - это можно исправить заменой многоточий на точки в Блокноте (помним про то, что сохранять xml надо в кодировке UTF-8 без BOM). Можно и отключить автозамену точек в настройках Экселя. На рисунке примеры допустимых (судя по всему) отличий, но их, на всякий случай, тоже можно исправить и сделать, как было в оригинале (Alt+влево). Первое отличие: в переводе (слева) есть какой-то текст в ячейке, хотя в оригинале (справа) это пустая ячейка. Второе: какой-то лишний абзац с параметрами, дописанный Excel после таблицы переведённых текстов, ближе к концу файла. Третье: поменялся номер TopRowVisible (на игру не влияет, но можно при желании вернуть прежний). В следующем сообщении про правку багоопасных отличий.

Knivy: Метод правки путём сравнения с оригиналом Данная инструкция по лечению багов написана, в основном, по опыту The Fifth Gate, где этот метод помог вылечить зависание в одном месте игры, но скриншоты здесь будут из другой игры. Метод найден тыком. Довольно быстрый и лёгкий (в сравнении с повторным переводом, скажем), но на внимательность. А вообще рекомендуется просто почаще сохранять перевод в разных файлах, и если возникли баги, то взять предыдущую версию без багов. К слову, такие баги появляются довольно часто - встречались уже, как минимум, в полудюжине игр - но чаще их не лечат, т.к. занудно, а откатываются к предыдущей версии перевода. Однако, иногда бывает, что изменений после предыдущей версии много, тогда проще лечить описываемым здесь способом. Итак, имеем: а) оригинальный текст игры - на английском, багов нет. Можно брать предыдущую работоспособную версию перевода. б) переведённый текст - на русском, где-то в игре есть баги - зависает или ещё что-то. Причём мы уже проверили шрифты и дело не в них. Делаем запасные копии обоих текстов, на всякий случай. Открываем их в WinMerge - бесплатной программе сравнения файлов. Оригинал можно сразу поставить в режим только для чтения (меню Файл). Жмём Alt+вниз, чтобы найти отличие. В идеале файлы должны различаться только в одном: тексты, отображаемые в игре, в оригинале на английском, а в переводе на русском. Весь остальной текст в файлах xml должен быть одинаков. Собственно, если переводить в Блокноте, то так и будет. В принципе, могут какие-то отличия, привнесённые программой Excel, быть несущественными, но если нам уже известно, что в игре баги, то значит, есть существенные отличия. На рисунке слева русский текст, справа оригинальный английский. Видим, что Excel дописал в наш перевод (без нашего ведома) целый абзац, которого в оригинале не было. Абзац начинается тегом <Style...>, поэтому такие случаи и именуются здесь новыми стилями (в них, как видим, записаны какие-то шрифты, но они не имеют отношения к игре, а, видимо, к отображению файла в Excel). Приглядываемся повнимательней: <Style ss:ID="s29">. Запоминаем (записываем на листочке) s29 - это номер (ID) этого стиля. Справа видим, что до этого абзаца номера были одинаковые слева и справа (s28), а после абзаца нумерация поменялась (слева s30, которому справа соответствует s29). Часто нумерация вообще вся меняется, с номеров в диапазоне 20-40 на диапазон 60-80. Вообще говоря, неизвестно, влияет ли на игру само по себе изменение нумерации, но вот новые стили влияют - в Fifth gate зависание было именно на строке, в которой использовался новый стиль. После описываемой процедуры всё вылечилось. Итак, запомнили изменения в нумерации: какие стили появились новые, каким новым соответствуют какие старые, после чего удаляем новый абзац (достаточно нажать Alt+влево, чтобы скопировать выделенную строку справа налево). Просматриваем остальную шапку файла и также удаляем новые стили, восстанавливаем старые, запоминаем номера. Можно также глянуть в конце файла - там иногда тоже какие-то новые строки дописываются. Теперь у нас в файле опять та же нумерация стилей, что в оригинале, но пока только в шапке файла, а надо чтобы и в тексте. Вот тут нам и пригодится листочек с записанными номерами. С помощью Редактировать-Найти находим все новые (лишние, добавленные) стили в тексте и восстанавливаем текст, как было в оригинале. Находим все удаленные стили в оригинале и восстанавливаем их обратно в переведённом файле. Потом, разобравшись с добавленными и удалёнными стилями, разбираемся с теми, которые были просто перенумерованы: Редактировать-Заменить, начиная с самых маленьких номеров. Например, в случае, изображённом выше, заменяем во всём переведённом файле s29 на s28, s30 на s29. Цвета подсветки можно настроить по своему удобству. На рисунке показаны различия переведённого текста (слева "Банка", справа "Jar"), которые и должны быть. А также багоопасное отличие: слева <Cell ss:StyleID="s25">, а справа просто <Cell> - это надо исправить, удалив это ненужное ss:StyleID="s25". Такие отличия иногда обнаруживаются при поиске по номерам новых, добавленных лишних стилей. Если известна строка, на которой игра виснет, можно делать поиск именно по тексту этой строки, и смотреть, чем она отличается от оригинальной. После всех правок сохраняем результат и проверяем в игре - глюки должны исчезнуть.

Knivy: Что делать, если предыдущий метод (правка нумерации стилей) не помог и глюки остались (по опыту Dream Chronicles 4): Метод правки путём тестирования в игре разных участков перевода Причина может быть в том, что в xml где-то находится технический текст (например, названия переменных), который переводить нельзя. Такие тексты часто начинаются с маленькой буквы (air), имеют какие-то номера (Test44) или вообще непереводимый набор букв. Если просто наугад менять выглядящие подозрительно строки обратно на английские, то можем нечаянно убрать нужный перевод, что потом придётся править при тестировании. К тому же иногда этот технический текст выглядит обычным (Skip Puzzle), и найти его весьма нелегко. Этот метод применён в Dream chronicles 4 для поиска той самой строки, из-за перевода которой игра зависала в самом начале. В целом, это более универсальный способ, чем предыдущий. Что делаем: -2) Проверяем, на всякий случай, на ошибки, открыв в браузере, например, Internet Explorer - так можно быстро выловить все синтаксические ошибки xml. -1) Рекомендуется всё же применить сперва первый метод - ну или хотя бы поудалять лишние добавленные строки, чтобы в оригинале и переводе было одинаковое количество строк, и переведённые строки имели те же номера, что и соответствующие оригинальные строки. Имеется в виду нумерация строк в Akelpad, отображаемая внизу окна. К тому же нумерация стилей должна быть одинаковой. Если дело не в формате xml (который проверили в браузере и исправили по первому методу), то можно и в Excel это делать. 0) И, конечно, надо сделать запасные копии. 1) Тестированием убеждаемся, что игра с оригинальным текстом работает, а с переведённым виснет. Сохраняем игру перед глюком с зависанием. Называем оригинальный текст strings.xml. 2) Заменяем в оригинальном файле, например, половину текста на соответствующий текст из файла с переводом, запоминая (записывая на листочке) номера строк, нами скопированных. Запускаем игру. Если виснет - сбойная строка среди нами скопированных. Если работает - сбой в другой половине строк. Отмечаем результат на своём листочке, чтобы помнить, какие участки перевода мы уже проверили. 3) Если работает, делаем запасную копию. Если нет, то восстанавливаем strings.xml из предыдущей работоспособной копии. 4) Затем, аналогично, копируем в strings.xml половину строк из числа тех, где есть сбой. И также смотрим - зависает игра или нет. 5) Повторяем до тех пор, пока не выясним номера всех сбойных строк, т.е. таких, что достаточно их исправить по образцу оригинала, и игра начинает отлично работать с переведённым текстом. Способ подходит для случаев, когда сбойных строк мало. Если их больше, то может быть удобней не делить файлы пополам, а, например, копировать по определённому числу строк за раз, скажем, по тысяче. Этот метод можно сочетать с первым способом - если известен небольшой диапазон номеров строк, где точно есть сбой, то смотрим в WinMerge, какие там вообще есть отличия между переводом и оригиналом. В этом случае можно довольно быстро вычислить нужные строки и с минимальным количеством запусков игры, с полдюжины (зависит от общего числа строк). Изредка встречаются игры со взаимосвязями между переводимыми словами, например, при переводе слова надо также одновременно его перевести ещё в нескольких других файлах. В таких случаях этот метод не подойдёт. Также как и для случаев, когда воспроизвести баг трудно, например из-за особенностей сохранения игры. Но для обычных игр Playfirst должно подходить.

Haunted: Я в Excel

Letty: Но, увы, в нем куча недостатков. Уже не раз сталкивалась с тем, что он портил текст полностью. Самый идеальный вариант - PSPad - это факт.

Angelok: Haunted пишет: Я в Excel Letty пишет: Но, увы, в нем куча недостатков. Уже не раз сталкивалась с тем, что он портил текст полностью. Самый идеальный вариант - PSPad - это факт. Excel добавляет лишник теги и знаки...и при сохранении делает свое шифрование что в итоге выявляется глюком в игре а PSPad это действительно наилучший вариант...ничего не перекодирует...не меняет....и открывает большинство форматов.... не даром я его всем советую

Letty: Angelok пишет: не даром я его всем советую Вот-вот, именно по твоему совету я теперь только ним пользуюсь. И тоже всем советую!

Haunted: спасибо!я понял что пспад удобнее

Северга: Нашел тут еще парочку бесплатных редакторов для XML: Syntext Serna (большой размер, и показался сложным для восприятия); Microsoft XML Notepad 2007 (очень маленький - на диске 2 мега всего, но мне кажется, для xml все есть: подсветка; два режима - с деревом слева, к которому пристыкованы справа значения, и просто расцвеченный текст; сравнивает два файла; простой)

Knivy: Обновила текст в шапке с учётом новой информации в комментариях.



полная версия страницы