Поддерживаемые форматы файлов#
Weblate поддерживает широкий спектр форматов перевода. Каждый формат немного отличается и предоставляет различный набор возможностей.
Подсказка
При выборе формата файла для вашего приложения лучше придерживаться какого-нибудь устоявшегося формата для используемого вами инструментария/платформы. Таким образом, ваши переводчики в дополнение смогут использовать любые инструменты, к которым они привыкли, и вероятность внесения ими своего вклада в ваш проект будет выше.
- Строковые ресурсы Android
- Строки Apple iOS
- Файлы метаданных магазина приложений
- Файл ARB
- Файлы CSV
- Файлы DTD
- Excel Open XML
- Плоские XML-файлы
- Формат Fluent
- GNU gettext
- JSON-файлы go-i18n
- Файл JSON gotext
- Файлы свойств GWT
- Файлы HTML
- Файлы JSON i18next
- Формат IDML
- Переводы в INI-файлах
- Переводы в INI-файлах Inno Setup
- Файлы свойств Java
- Переводы Joomla
- JSON-файлы
- Строки Laravel PHP
- Файлы уценки
- файлы mi18n lang
- Формат OpenDocument
- Строки PHP
- Файлы .ts Qt Linguist
- Файлы ResourceDictionary
- Файлы ресурсов RESX .NET
- Файлы Ruby YAML
- Формат Stringsdict
- Файлы субтитров
- Формат TermBase eXchange
- Текстовые файлы
- JSON-файлы WebExtension
- Файлы ресурсов Windows
- XLIFF
- Файлы YAML
Автоматическое обнаружение#
Weblate пытается определить формат файла во время добавления проектов. Обнаружение может быть неверным для разных вариантов одного и того же формата сериализации (JSON, YAML, свойства) или кодировки файла, поэтому перед созданием компонента убедитесь, что comComponent-file_format правильный.
Возможности типов переводов#
Формат |
Язычность [1] |
Множественные формы [2] |
Описании [3] |
Контекст [4] |
Расположение [5] |
Флаги [8] |
Дополнительные состояния [6] |
---|---|---|---|---|---|---|---|
двуязычный |
да |
да |
да |
да |
да [9] |
требуется правка |
|
одноязычный |
да |
да |
да |
да |
да [9] |
требуется правка |
|
оба |
да |
да |
да |
да |
да |
требуется правка, одобрено |
|
оба |
нет |
да |
нет |
нет |
нет |
||
одноязычный |
нет |
да |
нет |
нет |
нет |
||
одноязычный |
да |
да |
нет |
нет |
нет |
||
одноязычный |
нет |
да |
нет |
да |
нет |
||
оба |
да |
да |
нет |
да |
да |
требуется правка |
|
одноязычный |
да |
да [7] |
нет |
нет |
да |
||
оба |
нет |
да |
нет |
нет |
нет |
||
одноязычный |
нет [10] |
да |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
да |
нет |
нет |
нет |
нет |
||
одноязычный |
да |
да |
нет |
нет |
нет |
||
одноязычный |
да |
да |
нет |
да |
нет |
||
одноязычный |
да |
да |
нет |
нет |
нет |
||
одноязычный |
да |
да |
нет |
нет |
нет |
||
одноязычный |
нет |
да |
нет |
нет |
да |
||
одноязычный |
нет |
нет |
нет |
нет |
да |
||
оба |
нет |
да |
да |
да |
нет |
требуется правка |
|
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
да |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
да |
||
одноязычный |
нет |
да |
нет |
нет |
нет |
||
одноязычный |
нет |
да |
да |
да |
нет |
требуется правка |
|
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
да |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
двуязычный |
нет |
да |
нет |
нет |
да |
||
одноязычный |
нет |
нет |
нет |
нет |
нет |
||
одноязычный |
да |
нет |
нет |
нет |
нет |
||
одноязычный |
нет [11] |
да |
нет |
нет |
нет |
Двуязычные и одноязычные форматы#
Поддерживаются как одноязычные, так и двуязычные форматы. Двуязычные форматы хранят в одном файле два языка — исходный язык и перевод (типовые примеры: GNU gettext, XLIFF или Строки Apple iOS). Одноязычные же форматы, напротив, идентифицируют строку по ID, и каждый файл перевода содержит только сопоставление этих ID с одним конкретным языком (например, Строковые ресурсы Android). Некоторые форматы файлов могут использоваться и так, и так; подробности смотрите ниже.
Для правильного использования одноязычных файлов Weblate требует доступа к файлу, содержащему полный список строк для перевода и их «перевод» на исходный язык — этот файл внутри Weblate называется одноязычным базовым файлом, хотя в вашей парадигме наименование этой сущности может отличаться.
Кроме того, этот рабочий процесс может быть расширен с помощью файла промежуточного языка, позволяющего включить в перевод строки, предоставленные разработчиками, но не использованными «как есть» в окончательных строках.
Строковые состояния#
Многие форматы файлов различают только строки «Непереведенные» и «Переведенные». В некоторых форматах можно хранить более подробную информацию о состоянии, например «Требуется редактирование» или «Утверждено».
Описание исходной строки#
Описания исходной строки можно использовать для передачи дополнительной информации о строке, которую нужно перевести.
Некоторые форматы имеют встроенную поддержку предоставления дополнительной информации переводчикам (например, XLIFF, GNU gettext, JSON-файлы WebExtension, Файлы CSV, Excel Open XML, : ref:qtling, JSON-файлы go-i18n, Файл JSON gotext, Файл ARB, Файлы ресурсов RESX .NET). Многие другие форматы извлекают ближайший комментарий в качестве описания исходной строки.
Пояснение#
Пояснение для строк можно хранить и анализировать из нескольких форматов файлов.
В настоящее время поддерживается только в Формат TermBase eXchange.
Расположение исходной строки#
Расположение строки в исходном коде может помочь опытным переводчикам понять предназначение этой строки.
Эта информация обычно доступна в двуязычных форматах, где строки извлекаются из исходного кода с помощью инструментов. Например, GNU gettext и Файлы .ts Qt Linguist.
Флаги перевода#
Флаги перевода позволяют настраивать поведение Weblate. Некоторые форматы поддерживают их определение в файле перевода (вы всегда можете определить их в интерфейсе Weblate, см. Настройка поведения с помощью флагов).
Эта функция смоделирована на флагах в GNU gettext.
Кроме того, для всех форматов на основе XML флаги извлекаются из нестандартного атрибута weblate-flags. Кроме того, max-length:N поддерживается через атрибут maxwidth <http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#maxwidth> _ как определено в стандарте XLIFF, см. :ref:`xliff-flags.
Контекст#
Контекст используется для различения одинаковых строк в двуязычном формате, используемом в разных областях (например, «Солнце» может использоваться как сокращенное название дня «Воскресенье» или как название нашей ближайшей звезды).
Для одноязычных форматов строковый идентификатор (часто называемый ключом) может служить той же цели, и дополнительный контекст не требуется.
Строки с множественным числом#
Множественные числа необходимы для правильной локализации строк с количеством переменных. Правила зависят от целевого языка, и многие форматы соответствуют спецификации CLDR.
Подсказка
Множество строк также требует надлежащей поддержки со стороны платформы приложения. Выберите собственный формат вашей платформы, например GNU gettext, Строковые ресурсы Android или Формат Stringsdict.
Строки только для чтения#
Строки из файлов перевода, доступные только для чтения, будут включены, но не могут быть отредактированы в Weblate. Поддержка этой возможности уже встроена в некоторые форматы (XLIFF и Строковые ресурсы Android), а в других может быть сэмулирована добавлением к строке флага read-only
— смотрите раздел Настройка поведения с помощью флагов.
Поддержка других форматов#
Большинство форматов, которые поддерживают сериализацию и которые поддерживает translate-toolkit, могут поддерживаться с лёгкостью, но они (пока) ни как не тестировались. В большинстве случаев, чтобы скрыть различия в поведении различных хранилищ translate-toolkit, в Weblate приходится добавлять тонкую прослойку.
Чтобы добавить поддержку нового формата, предпочтительный подход состоит в том, чтобы сначала реализовать его поддержку в translate-toolkit.