Skip to content

Latest commit

 

History

History
124 lines (72 loc) · 9.29 KB

README-ru.md

File metadata and controls

124 lines (72 loc) · 9.29 KB

Введение

Это официальный репозиторий Sooslandia games, в котором хранятся переводы игр и вспомогательных компонентов.

Структура

В репозитории находятся директории проектов, такие как BallBouncer или Agsharp, эти директории содержат все файлы переводов, относящиеся к этому проекту.

Директория scripts содержит вспомогательные скрипты, которые выполняют валидацию новых переводов.

Файл projects.txt в корне репозитория содержит список всех проектов, он используется вспомогательными скриптами.

Виды файлов

resx

В некоторых наших компонентах используются resx файлы.

Это xml файлы ресурсов, в которых хранятся строки для конкретного языка.

resx файлы имеют название, соответствующее названию внутренних компонентов, например AudioForms.resx

Если код языка отсутствует в названии файла, значит он содержит строки для английского языка.

Файл с русскими строками, например, называется AudioForms.ru.resx

lng

lng - это наш собственный простой формат, используемый в тех случаях, когда применение resx не требуется.

lng-файл представляет собой json-файл, содержащий один объект.

Внутри объекта содержатся пары ключ-значение. Ключ - идентификатор строки, значение - строка текста на конкретном языке.

Пример: "ModeSelectionMenuNormalMode": "Normal game."

Внутри объекта обязательно должен присутствовать ключ Culture, с двухбуквенным кодом языка (ISO 639-1).

Пример: "Culture": "en"

Также необходимо наличие ключа Language, содержащее название языка с маленькой буквы.

Пример: "Language": "english"

Название файла - это название языка маленькими буквами, например english.lng

pot

Стандартный файл шаблона перевода, генерируемый программой xgettext.

В качестве имени файла мы используем название проекта, например Agsharp.pot

po

Файл перевода, совместимый с gettext.

В качестве имени файла мы используем двухбуквенный код языка, например ru.po

docs

В проектах, имеющих документацию, например BallBouncer, имеется каталог docs.

Данный каталог содержит подкаталоги, названиями которых являются двухбуквенные коды языка, например en.

Каждый такой подкаталог содержит файлы документации проекта.

md

md-файлы это файлы документации в формате markdown, например readme.md.

pot

Стандартный файл шаблона перевода, генерируемый программой xgettext, такой файл генерируется для каждого md файла в docs/en, например readme.pot.

po

Файл перевода, совместимый с gettext.

Последовательность добавления перевода

С нашей стороны

В случае использования resx файлов, мы преобразовываем их все в lng файл с английским переводом, english.lng

Далее из english.lng генерируется .pot файл.

Markdown файлы английской документации обрабатываются программой mdpo, она извлекает блоки текста и формирует из них pot файлы.

Со стороны переводчика

Вам нужно сделать форк этого репозитория и создать ветку для нового перевода.

Затем Вы должны выбрать предпочтительный способ перевода.

po

Вы можете загрузить .pot-файл в программу для перевода, например Poedit, и выполнять перевод в ней.

Далее готовый po-файл, например fr.po, нужно поместить в директорию проекта.

Чтобы перевести документацию, нужно использовать в качестве шаблона pot-файлы из каталога docs/en.

В каталоге docs следует создать подкаталог для переведённых файлов, названием должен являться двухбуквенный код языка.

Готовые po файлы, например readme.po, нужно поместить в созданный каталог.

lng

Это нерекомендованный способ, т.к. на данный момент мы не можем предложить удобного способа актуализации и валидации переводов.

Используйте его только в том случае, если нет никакой возможности использовать poedit или аналогичное ПО.

Вы можете переводить lng файл напрямую, в качестве шаблона можно использовать любой существующий в этом репозитории файл, но мы рекомендуем переводить english.lng.

В случае, если вы будете использовать не english.lng, и решите отправить незавершённый перевод, обязательно удалите все непереведённые строки, чтобы файл содержал только строки на целевом языке перевода.

Например, если вы решили переводить russian.lng на французский, перевели половину, и захотели отправить этот промежуточный результат, удалите все оставшиеся русские строки, оставив только французские.

Это нужно для того, чтобы для непереведённых строк использовался английский вариант.

При использовании в качестве шаблона english.lng удалять непереведённые строки не обязательно.

В lng файле нужно задать правильные значения для ключей Culture и Language, смотрите раздел выше про формат lng.

Далее готовый lng-файл, например french.lng, нужно добавить в директорию проекта.

resx и md

Пожалуйста, не переводите resx и md файлы, мы не валидируем их, и не принимаем переводы в таком формате.

Дальнейшие шаги

Когда перевод закончен и все файлы находятся на своих местах, отправляйте pull request в данный репозиторий, мы проверим его, при необходимости попросим внести изменения, и в случае корректности перевода вольём его в master.

После чего переводы будут добавлены в соответствующие продукты и доставлены пользователям системой обновления.

Перевод новых / изменённых строк

Когда мы внесём изменения в наши проекты, исходные языковые файлы будут актуализированы в этом репозитории.

Вам нужно будет смерджить ветку master в вашу ветку, а затем обновить ваш перевод из обновлённых pot файлов и перевести новые строки.

Для lng файлов, как указано выше, мы не можем предложить удобного способа актуализирования перевода, но в будущем постараемся решить эту проблему.