Это официальный репозиторий Sooslandia games, в котором хранятся переводы игр и вспомогательных компонентов.
В репозитории находятся директории проектов, такие как BallBouncer или Agsharp, эти директории содержат все файлы переводов, относящиеся к этому проекту.
Директория scripts содержит вспомогательные скрипты, которые выполняют валидацию новых переводов.
Файл projects.txt в корне репозитория содержит список всех проектов, он используется вспомогательными скриптами.
В некоторых наших компонентах используются resx файлы.
Это xml файлы ресурсов, в которых хранятся строки для конкретного языка.
resx файлы имеют название, соответствующее названию внутренних компонентов, например AudioForms.resx
Если код языка отсутствует в названии файла, значит он содержит строки для английского языка.
Файл с русскими строками, например, называется AudioForms.ru.resx
lng - это наш собственный простой формат, используемый в тех случаях, когда применение resx не требуется.
lng-файл представляет собой json-файл, содержащий один объект.
Внутри объекта содержатся пары ключ-значение. Ключ - идентификатор строки, значение - строка текста на конкретном языке.
Пример: "ModeSelectionMenuNormalMode": "Normal game."
Внутри объекта обязательно должен присутствовать ключ Culture, с двухбуквенным кодом языка (ISO 639-1).
Пример: "Culture": "en"
Также необходимо наличие ключа Language, содержащее название языка с маленькой буквы.
Пример: "Language": "english"
Название файла - это название языка маленькими буквами, например english.lng
Стандартный файл шаблона перевода, генерируемый программой xgettext.
В качестве имени файла мы используем название проекта, например Agsharp.pot
Файл перевода, совместимый с gettext.
В качестве имени файла мы используем двухбуквенный код языка, например ru.po
В проектах, имеющих документацию, например BallBouncer, имеется каталог docs.
Данный каталог содержит подкаталоги, названиями которых являются двухбуквенные коды языка, например en.
Каждый такой подкаталог содержит файлы документации проекта.
md-файлы это файлы документации в формате markdown, например readme.md.
Стандартный файл шаблона перевода, генерируемый программой xgettext, такой файл генерируется для каждого md файла в docs/en, например readme.pot.
Файл перевода, совместимый с gettext.
В случае использования resx файлов, мы преобразовываем их все в lng файл с английским переводом, english.lng
Далее из english.lng генерируется .pot файл.
Markdown файлы английской документации обрабатываются программой mdpo, она извлекает блоки текста и формирует из них pot файлы.
Вам нужно сделать форк этого репозитория и создать ветку для нового перевода.
Затем Вы должны выбрать предпочтительный способ перевода.
Вы можете загрузить .pot-файл в программу для перевода, например Poedit, и выполнять перевод в ней.
Далее готовый po-файл, например fr.po, нужно поместить в директорию проекта.
Чтобы перевести документацию, нужно использовать в качестве шаблона pot-файлы из каталога docs/en.
В каталоге docs следует создать подкаталог для переведённых файлов, названием должен являться двухбуквенный код языка.
Готовые po файлы, например readme.po, нужно поместить в созданный каталог.
Это нерекомендованный способ, т.к. на данный момент мы не можем предложить удобного способа актуализации и валидации переводов.
Используйте его только в том случае, если нет никакой возможности использовать poedit или аналогичное ПО.
Вы можете переводить lng файл напрямую, в качестве шаблона можно использовать любой существующий в этом репозитории файл, но мы рекомендуем переводить english.lng.
В случае, если вы будете использовать не english.lng, и решите отправить незавершённый перевод, обязательно удалите все непереведённые строки, чтобы файл содержал только строки на целевом языке перевода.
Например, если вы решили переводить russian.lng на французский, перевели половину, и захотели отправить этот промежуточный результат, удалите все оставшиеся русские строки, оставив только французские.
Это нужно для того, чтобы для непереведённых строк использовался английский вариант.
При использовании в качестве шаблона english.lng удалять непереведённые строки не обязательно.
В lng файле нужно задать правильные значения для ключей Culture и Language, смотрите раздел выше про формат lng.
Далее готовый lng-файл, например french.lng, нужно добавить в директорию проекта.
Пожалуйста, не переводите resx и md файлы, мы не валидируем их, и не принимаем переводы в таком формате.
Когда перевод закончен и все файлы находятся на своих местах, отправляйте pull request в данный репозиторий, мы проверим его, при необходимости попросим внести изменения, и в случае корректности перевода вольём его в master.
После чего переводы будут добавлены в соответствующие продукты и доставлены пользователям системой обновления.
Когда мы внесём изменения в наши проекты, исходные языковые файлы будут актуализированы в этом репозитории.
Вам нужно будет смерджить ветку master в вашу ветку, а затем обновить ваш перевод из обновлённых pot файлов и перевести новые строки.
Для lng файлов, как указано выше, мы не можем предложить удобного способа актуализирования перевода, но в будущем постараемся решить эту проблему.