Поддерживаемые форматы файлов

Weblate поддерживает большинство форматов перевода, понимаемых translate-toolkit, однако понимание любого из них чем-нибудь да отличаются, поэтому могут возникнуть некоторые проблемы с форматами, которые были протестированы недостаточно тщательно.

Примечание

При выборе формата файла для вашего приложения лучше придерживаться какого-нибудь устоявшегося формата для используемого вами инструментария/платформы. Таким образом, ваши переводчики в дополнение смогут использовать любые инструменты, к которым они привыкли, и вероятность внесения ими своего вклада в ваш проект будет выше.

Двуязычные и одноязычные форматы

Поддерживаются как одноязычные, так и двуязычные форматы. Двуязычные форматы хранят в одном файле два языка — исходный язык и перевод (типичными примерами являются GNU gettext, XLIFF или Строки Apple iOS). С другой стороны, одноязычные форматы идентифицируют строку по идентификатору, и каждый языковой файл содержит только сопоставление этих форматов с любым заданным языком (обычно это Строковые ресурсы Android). Некоторые форматы файлов могут использоваться и так, и эдак, подробнее смотрите ниже.

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

Кроме того, этот рабочий процесс может быть расширен с помощью файла промежуточного языка, позволяющего включить в перевод строки, предоставленные разработчиками, но не использованными «как есть» в окончательных строках.

Автоматическое обнаружение

Weblate умеет автоматически обнаруживать некоторые широко распространённые форматы файлов, но это обнаружение может навредить вашей производительности и ограничено возможностями, специфичными для данного формата файла (к примеру, автоматическим добавлением новых переводов).

Возможности типов переводов

Возможности всех поддерживаемых форматов:

Формат

Языковость 1

Множественные формы 2

Комментарии 3

Контекст 4

Расположение 5

Флаги 8

Дополнительные состояния 6

GNU gettext

двуязычный

да

да

да

да

да 9

требуется правка

Одноязычный gettext

одноязычный

да

да

да

да

да 9

требуется правка

XLIFF

оба

да

да

да

да

да 10

требуется правка, одобрено

Файлы свойств Java

оба

нет

да

нет

нет

нет

Файлы свойств GWT

одноязычный

да

да

нет

нет

нет

Переводы Joomla

одноязычный

нет

да

нет

да

нет

Файлы .ts Qt Linguist

оба

да

да

нет

да

да 10

требуется правка

Строковые ресурсы Android

одноязычный

да

да 7

нет

нет

да 10

Строки Apple iOS

двуязычный

нет

да

нет

нет

нет

Строки PHP

одноязычный

нет 11

да

нет

нет

нет

JSON-файлы

одноязычный

нет

нет

нет

нет

нет

JSON -файлы i18next

одноязычный

да

нет

нет

нет

нет

JSON -файлы go-i18n

одноязычный

да

нет

нет

нет

нет

Файл ARB

одноязычный

да

да

нет

нет

нет

JSON-файлы WebExtension

одноязычный

да

да

нет

нет

нет

.XML-файлы ресурсов

одноязычный

нет

да

нет

нет

да 10

Файлы CSV

одноязычный

нет

да

да

да

нет

требуется правка

Файлы YAML

одноязычный

нет

да

нет

нет

нет

Файлы Ruby YAML

одноязычный

да

да

нет

нет

нет

Файлы DTD

одноязычный

нет

нет

нет

нет

нет

Flat XML

одноязычный

нет

нет

нет

нет

да 10

Файлы ресурсов Windows

одноязычный

нет

да

нет

нет

нет

Excel Open XML

одноязычный

нет

да

да

да

нет

требуется правка

Файлы метаданных магазина приложений

одноязычный

нет

нет

нет

нет

нет

Файлы субтитров

одноязычный

нет

нет

нет

да

нет

Файлы HTML

одноязычный

нет

нет

нет

нет

нет

Формат OpenDocument

одноязычный

нет

нет

нет

нет

нет

Формат IDML

одноязычный

нет

нет

нет

нет

нет

Переводы в INI-файлах

одноязычный

нет

нет

нет

нет

нет

Переводы в INI-файлах Inno Setup

одноязычный

нет

нет

нет

нет

нет

1

Смотрите раздел Двуязычные и одноязычные форматы

2

Множественные формы необходимы для правильной локализации строк, содержащих переменную количества.

3

Комментарии могут быть использованы для указания дополнительной информации о строке для перевода.

4

Контекст используется для различения одинаковых строк, используемых в разных областях (например, Sun может означать как сокращённое название дня «воскресенье» — «Sunday» — так и название нашей ближайшей звезды).

5

Расположение строки в исходном коде может помочь опытным переводчикам понять предназначение этой строки.

6

Дополнительные состояния, поддерживаемые форматом файла в дополнение к состояниям «Не переведено» и «Переведено».

7

Комментарий XML, размещённый перед элементом <string>, трактуется как комментарий разработчика.

8

Смотрите раздел Настройка поведения

9(1,2)

В качестве флагов используются комментарии типа gettext.

10(1,2,3,4,5)

Для всех форматов на основе XML флаги извлекаются из нестандартного атрибута weblate-flags. Кроме того, флаг max-length:N поддерживается через атрибут maxwidth, как определено в стандарте XLIFF, смотрите раздел Указание флагов перевода.

11

Множественные формы поддерживаются только для Laravel, который использует для их определения внутристрочный синтаксис, смотрите документ Локализация в Laravel.

GNU gettext

Наиболее широко используемый формат для перевода свободного программного обеспечения. Этот формат Weblate поддержал самым первым, и он до сих пор имеет самую лучшую поддержку.

Контекстная информация, хранящаяся в файле, поддерживается настройкой его заголовков или его привязкой к соответствующим исходным файлам.

Двуязычный PO-файл gettext обычно выглядит следующим образом:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"

Типичная настройка компонента в Weblate

Маска файла

po/*.po

Одноязычный базовый файл

Пусто

Шаблон для новых переводов

po/messages.pot

Формат файла

PO-файл gettext

Одноязычный gettext

Некоторые проекты решают использовать gettext в качестве одноязычного формата — в их исходном коде присутствуют только идентификаторы и строка должна быть переведена на все языки, в том числе и на английский. Такая конфигурация поддерживается, хотя для этого и надо явно выбирать этот формат файлов при импорте компонентов в Weblate.

Одноязычный PO-файл gettext обычно выглядит следующим образом:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"

А базовый языковой файл — вот таким образом:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"

Типичная настройка компонента в Weblate

Маска файла

po/*.po

Одноязычный базовый файл

po/en.po

Шаблон для новых переводов

po/messages.pot

Формат файла

PO-файл gettext (одноязычный)

XLIFF

Формат на основе XML, созданный для стандартизации файлов перевода, но в конечном итоге ставший просто ещё одним из многочисленных стандартов в этой области.

Формат файла XML для обмена локализациями (XLIFF) обычно используется как двуязычный, но Weblate поддерживает его использование и в качестве одноязычного.

См.также

Спецификация формата файла XML для обмена локализациями (XLIFF)

Состояния перевода

Изменено в версии 3.3: До выпуска 3.3 Weblate игнорировал атрибут состояния.

Атрибут состояния state в файле частично обрабатывается и отображается в Weblate в состояние «На правку» (следующие состояния используются для пометки строки на правку, если присутствует цель: new, needs-translation, needs-adaptation, needs-l10n). Если атрибут state отсутствует, то строка считается переведённой, если существует элемент <target>.

Если строка перевода имеет атрибут approved="yes", она также будет импортирована в Weblate в состоянии «Одобрено», все остальные строки будут импортированы в состоянии «Ожидает рецензирования» (что соответствует спецификации XLIFF).

При сохранении Weblate добавляет эти атрибуты только если они действительно необходимы:

  • Атрибут state добавляется только в том случае, если строка помечена на правку.

  • Атрибут approved добавляется только в том случае, если строка была отрецензирована.

  • В остальных случаях эти атрибуты не добавляются, но если они присутствуют, они обновляются.

Это означает, что при использовании формата XLIFF настоятельно рекомендуется включить в Weblate процесс рецензирования, чтобы видеть и изменять состояние одобрения строк.

Смотрите раздел Выделенные рецензенты.

Аналогично, при импорте таких файлов (в форме загрузки) в выпадающем списке Обработка строк, отмеченных «На правку» необходимо выбрать пункт Импортировать как переведённое.

Пробелы и переводы строк в файлах XLIFF

Как правило, тип или количество пробельных символов в XML-форматах не различаются. Если вы хотите их сохранить, вы должны добавить к строке флаг xml:space="preserve".

Например:

    <trans-unit id="10" approved="yes">
        <source xml:space="preserve">hello</source>
        <target xml:space="preserve">Hello, world!
</target>
    </trans-unit>

Указание флагов перевода

С помощью атрибута weblate-flags вы можете указать дополнительные флаги перевода (смотрите раздел Настройка поведения). Также Weblate понимает атрибуты maxwidth и font из спецификации XLIFF:

<trans-unit id="10" maxwidth="100" size-unit="pixel" font="ubuntu;22;bold">
   <source>Hello %s</source>
</trans-unit>
<trans-unit id="20" maxwidth="100" size-unit="char" weblate-flags="c-format">
   <source>Hello %s</source>
</trans-unit>

Атрибут font разбирается в семейство шрифтов, размер и вес шрифта. Приведённый выше пример показывает использование всех трёх параметров, хотя к указанию обязательно только семейство шрифтов. Любые пробельные символы в наименовании семейства шрифтов преобразуются в подчёркивания, так что семейство Source Sans Pro становится семейством Source_Sans_Pro, поэтому при именовании группы шрифтов (смотрите раздел Управление шрифтами) имейте это в виду.

Типичная настройка компонента в Weblate для двуязычного XLIFF

Маска файла

localizations/*.xliff

Одноязычный базовый файл

Пусто

Шаблон для новых переводов

localizations/en-US.xliff

Формат файла

Файл перевода XLIFF

Типичная настройка компонента в Weblate для одноязычного XLIFF

Маска файла

localizations/*.xliff

Одноязычный базовый файл

localizations/en-US.xliff

Шаблон для новых переводов

localizations/en-US.xliff

Формат файла

Файл перевода XLIFF

Файлы свойств Java

Родной формат Java для переводов.

Файлы свойств Java обычно используются в качестве одноязычных переводов.

Weblate поддерживает варианты этого формата в кодировках ISO-8859-1, UTF-8 и UTF-16. Все они поддерживают сохранение всех символов юникода, просто в разных кодировках. В формате ISO-8859-1 используются юникодные экранирующие последовательности (например, zkou\u0161ka), остальные кодируют символы непосредственно в UTF-8 или UTF-16.

Примечание

Загрузка экранирующих последовательностей также работает в режиме UTF-8, поэтому, пожалуйста, будьте внимательны при выборе правильного набора кодировок в соответствии с потребностями вашего приложения.

Типичная настройка компонента в Weblate

Маска файла

src/app/Bundle_*.properties

Одноязычный базовый файл

src/app/Bundle.properties

Шаблон для новых переводов

Пусто

Формат файла

Свойства Java (ISO 8859-1)

Файлы свойств GWT

Родной формат GWT для переводов.

Файлы свойств GWT обычно используются в качестве одноязычных переводов.

Типичная настройка компонента в Weblate

Маска файла

src/app/Bundle_*.properties

Одноязычный базовый файл

src/app/Bundle.properties

Шаблон для новых переводов

Пусто

Формат файла

Свойства GWT

Переводы в INI-файлах

Добавлено в версии 4.1.

Формат INI-файла для переводов.

Переводы в INI-файлах обычно используются в качестве одноязычных переводов.

Типичная настройка компонента в Weblate

Маска файла

language/*.ini

Одноязычный базовый файл

language/en.ini

Шаблон для новых переводов

Пусто

Формат файла

INI-файл

Переводы в INI-файлах Inno Setup

Добавлено в версии 4.1.

Формат INI-файлов Inno Setup для переводов.

Переводы в INI-файлах Inno Setup обычно используются в качестве одноязычных переводов.

Примечание

Единственным заметным отличием от обычных переводов в INI-файлах является поддержка заполнителей %n и %t для символов переноса строки и табуляции.

Типичная настройка компонента в Weblate

Маска файла

language/*.islu

Одноязычный базовый файл

language/en.islu

Шаблон для новых переводов

Пусто

Формат файла

INI-файл Inno Setup

Примечание

На текущий момент поддерживаются только юникодные файлы (.islu), файлы в кодировке ANSI (.isl) в настоящее время не поддерживаются.

Переводы Joomla

Добавлено в версии 2.12.

Родной формат Joomla для переводов.

Переводы Joomla обычно используются в качестве одноязычных переводов.

Типичная настройка компонента в Weblate

Маска файла

language/*/com_foobar.ini

Одноязычный базовый файл

language/en-GB/com_foobar.ini

Шаблон для новых переводов

Пусто

Формат файла

Языковой файл Joomla

Файлы .ts Qt Linguist

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

Файлы Qt Linguist используются и как двуязычные, так и одноязычные переводы.

Типичная настройка компонента в Weblate при использовании формата как двуязычного

Маска файла

i18n/app.*.ts

Одноязычный базовый файл

Пусто

Шаблон для новых переводов

i18n/app.ru.ts

Формат файла

Файл перевода Qt Linguist

Типичная настройка компонента в Weblate при использовании формата как одноязычного

Маска файла

i18n/app.*.ts

Одноязычный базовый файл

i18n/app.en.ts

Шаблон для новых переводов

i18n/app.en.ts

Формат файла

Файл перевода Qt Linguist

Строковые ресурсы Android

Специфичный для Android формат файла для перевода приложений.

Строковые ресурсы Android являются одноязычными, Одноязычный базовый файл хранится в другом месте, нежели остальные строки — в файле res/values/strings.xml.

Типичная настройка компонента в Weblate

Маска файла

res/values-*/strings.xml

Одноязычный базовый файл

res/values/strings.xml

Шаблон для новых переводов

Пусто

Формат файла

Строковый ресурс Android

Примечание

Структуры строкового массива Android, string-array, в настоящее время не поддерживаются. Чтобы это обойти, вы можете разбить свои строковые массивы на части:

<string-array name="several_strings">
    <item>First string</item>
    <item>Second string</item>
</string-array>

станет:

<string-array name="several_strings">
    <item>@string/several_strings_0</item>
    <item>@string/several_strings_1</item>
</string-array>
<string name="several_strings_0">First string</string>
<string name="several_strings_1">Second string</string>

Элемент string-array, указывающий на элементы string, должен храниться в другом файле и не должен быть доступен для перевода.

Помочь в подготовке существующих файлов strings.xml и переводов вам может вот этот скрипт: https://gist.github.com/paour/11291062

Строки Apple iOS

Специфичный для Apple формат файла для перевода приложений, используемый для переводов приложений как для iOS, так и для iPhone’а/iPad’а.

Строки Apple iOS обычно используются в качестве двуязычных переводов.

Типичная настройка компонента в Weblate

Маска файла

Resources/*.lproj/Localizable.strings

Одноязычный базовый файл

Resources/en.lproj/Localizable.strings

Шаблон для новых переводов

Пусто

Формат файла

Строки iOS (UTF-8)

Строки PHP

Переводы PHP обычно одноязычные, поэтому рекомендуется указывать базовый файл со строками на (как это чаще всего бывает) английском языке.

Пример файла:

<?php
$LANG['foo'] = 'bar';
$LANG['foo1'] = 'foo bar';
$LANG['foo2'] = 'foo bar baz';
$LANG['foo3'] = 'foo bar baz bag';

Типичная настройка компонента в Weblate

Маска файла

lang/*/texts.php

Одноязычный базовый файл

lang/en/texts.php

Шаблон для новых переводов

lang/en/texts.php

Формат файла

Строки PHP

Строки Laravel PHP

Изменено в версии 4.1.

Файлы локализации Laravel PHP также поддерживают множественные формы:

<?php
return [
    'apples' => 'There is one apple|There are many apples',
];

JSON-файлы

Добавлено в версии 2.0.

Изменено в версии 2.16: Начиная с Weblate версии 2.16 и translate-toolkit версии не ниже 2.2.4 также поддерживаются JSON-файлы с вложенной структурой.

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

В настоящее время Weblate поддерживает несколько вариантов переводов в JSON:

Переводы JSON обычно одноязычные, поэтому рекомендуется указывать базовый файл со строками на (как это чаще всего бывает) английском языке.

Пример файла:

{
  "Hello, world!\n": "Ahoj světe!\n",
  "Orangutan has %d banana.\n": "",
  "Try Weblate at https://demo.weblate.org/!\n": "",
  "Thank you for using Weblate.": ""
}

Также поддерживается вложенная структура файлов (условия поддержки смотрите выше), такой файл может выглядеть следующим образом:

{
  "weblate": {
    "hello": "Ahoj světe!\n",
    "orangutan": "",
    "try": "",
    "thanks": ""
  }
}

Предупреждение

В настоящее время Weblate обрабатывает вложенные JSON-файлы, уплощая их ключи. Это приводит к проблемам сериализации, когда в реальных ключах используются такие символы как . или [], потому что Weblate думает, что это признак вложенного ключа.

Смотрите <https://github.com/WeblateOrg/weblate/issues/2149>

Типичная настройка компонента в Weblate

Маска файла

langs/translation-*.json

Одноязычный базовый файл

langs/translation-en.json

Шаблон для новых переводов

Пусто

Формат файла

Файл вложенной структуры JSON

JSON -файлы i18next

Изменено в версии 2.17: Начиная с Weblate версии 2.17 и translate-toolkit версии не ниже 2.2.5 также поддерживаются JSON-файлы i18next с множественными формами.

i18next — это фреймворк интернационализации, написанный на и для JavaScript. Weblate поддерживает его файлы локализации с такими возможностями, как формы множественного числа.

Переводы i18next обычно одноязычные, поэтому рекомендуется указывать базовый файл со строками на (как это чаще всего бывает) английском языке.

Примечание

Weblate поддерживает формат JSON-файла i18next версии v3. Версии v2 и v1 в основном совместимы, за исключением того, как они работают с формами множественного числа.

Пример файла:

{
  "hello": "Hello",
  "apple": "I have an apple",
  "apple_plural": "I have {{count}} apples",
  "apple_negative": "I have no apples"
}

Типичная настройка компонента в Weblate

Маска файла

langs/*.json

Одноязычный базовый файл

langs/en.json

Шаблон для новых переводов

Пусто

Формат файла

JSON-файл i18next

JSON -файлы go-i18n

Добавлено в версии 4.1.

Переводы go-i18n обычно одноязычные, поэтому рекомендуется указывать базовый файл со строками на (как это чаще всего бывает) английском языке.

Примечание

Weblate поддерживает формат JSON-файла go-i18n версии v2, который не поддерживает плоские JSON-файлы, поддерживаемые версией v1.

Типичная настройка компонента в Weblate

Маска файла

langs/*.json

Одноязычный базовый файл

langs/en.json

Шаблон для новых переводов

Пусто

Формат файла

JSON -файл go-i18n

Файл ARB

Добавлено в версии 4.1.

Переводы ARB обычно одноязычные, поэтому рекомендуется указывать базовый файл со строками на (как это чаще всего бывает) английском языке.

Типичная настройка компонента в Weblate

Маска файла

lib/l10n/intl_*.arb

Одноязычный базовый файл

lib/l10n/intl_en.arb

Шаблон для новых переводов

Пусто

Формат файла

Файл ARB

JSON-файлы WebExtension

Добавлено в версии 2.16: Поддерживаются с версии Weblate 2.16 и translate-toolkit версии не ниже 2.2.4.

Формат файла, используемый при переводе расширений для Mozilla Firefox или Google Chromium.

Примечание

Хотя этот формат называется JSON, его спецификация позволяет включать комментарии, которые не являются частью спецификации JSON. В настоящее время Weblate не поддерживает файл с комментариями.

Пример файла:

{
  "hello": {
    "message": "Ahoj světe!\n",
    "description": "Description",
    "placeholders": {
      "url": {
        "content": "$1",
        "example": "https://developer.mozilla.org"
      }
    }
  },
  "orangutan": {
    "message": "",
    "description": "Description"
  },
  "try": {
    "message": "",
    "description": "Description"
  },
  "thanks": {
    "message": "",
    "description": "Description"
  }
}

Типичная настройка компонента в Weblate

Маска файла

_locales/*/messages.json

Одноязычный базовый файл

_locales/en/messages.json

Шаблон для новых переводов

Пусто

Формат файла

JSON-файл WebExtension

.XML-файлы ресурсов

Добавлено в версии 2.3.

В .XML-файле ресурса (.resx) применяется формат одноязычного XML-файла, используемый в приложениях Microsoft .NET. Он взаимозаменяем с форматом .resw, который использует синтаксис, идентичный синтаксису .resx.

Типичная настройка компонента в Weblate

Маска файла

Resources/Language.*.resx

Одноязычный базовый файл

Resources/Language.resx

Шаблон для новых переводов

Пусто

Формат файла

Файл ресурсов .NET

Файлы CSV

Добавлено в версии 2.4.

Файлы CSV могут содержать простой список исходных строк и переводов. Weblate поддерживает следующие файлы:

  • Файлы с заголовком, определяющим поля (источник, перевод, местоположение, …). Это рекомендуемый подход, так как он наименее подвержен ошибкам.

  • Файлы с двумя полями — источником и переводом (в этом порядке), для этого в качестве формата файла выберите Простой CSV файл

  • Файлы с полями, определёнными translate-toolkit: location, source, target, ID, fuzzy, context, translator_comments, developer_comments

Предупреждение

Формат CSV в настоящее время автоматически определяет диалект файла CSV. В некоторых случаях автоматическое определение может не сработать, и вы получите смешанные результаты. Особенно это касается файлов CSV с символами новых строк внутри значений. В качестве обходного пути рекомендуется не использовать кавычки.

Пример файла:

Thank you for using Weblate.,Děkujeme za použití Weblate.

Типичная настройка компонента в Weblate

Маска файла

locale/*.csv

Одноязычный базовый файл

Пусто

Шаблон для новых переводов

locale/en.csv

Формат файла

Файл CSV

См.также

CSV

Файлы YAML

Добавлено в версии 2.9.

Простые файлы YAML со строковыми ключами и значениями. Также Weblate извлекает строки из списков и словарей.

Пример файла YAML:

weblate:
  hello: ""
  orangutan": ""
  try": ""
  thanks": ""

Типичная настройка компонента в Weblate

Маска файла

translations/messages.*.yml

Одноязычный базовый файл

translations/messages.en.yml

Шаблон для новых переводов

Пусто

Формат файла

Файл YAML

См.также

YAML, Файлы Ruby YAML

Файлы Ruby YAML

Добавлено в версии 2.9.

Файлы YAML локализации Ruby с языком в качестве корневого узла.

Пример файла YAML локализации Ruby:

cs:
  weblate:
    hello: ""
    orangutan: ""
    try: ""
    thanks: ""

Типичная настройка компонента в Weblate

Маска файла

translations/messages.*.yml

Одноязычный базовый файл

translations/messages.en.yml

Шаблон для новых переводов

Пусто

Формат файла

Файл Ruby YAML

См.также

YAML, Файлы YAML

Файлы DTD

Добавлено в версии 2.18.

Пример DTD-файла:

<!ENTITY hello "">
<!ENTITY orangutan "">
<!ENTITY try "">
<!ENTITY thanks "">

Типичная настройка компонента в Weblate

Маска файла

locale/*.dtd

Одноязычный базовый файл

locale/en.dtd

Шаблон для новых переводов

Пусто

Формат файла

Файл DTD

См.также

Формат DTD Mozilla

Плоские XML-файлы

Добавлено в версии 3.9.

Пример плоского XML-файла:

<?xml version='1.0' encoding='UTF-8'?>
<root>
  <str key="hello_world">Hello World!</str>
  <str key="resource_key">Translated value.</str>
</root>

Типичная настройка компонента в Weblate

Маска файла

locale/*.xml

Одноязычный базовый файл

locale/en.xml

Шаблон для новых переводов

Пусто

Формат файла

Плоский XML-файл

Файлы ресурсов Windows

Изменено в версии 4.1: Поддержка файлов ресурсов Windows была переписана.

Примечание

Поддержка этого формата в настоящее время находится в бета-режиме, приветствуются обратная связь от тестирования.

Пример файла ресурсов Windows:

LANGUAGE LANG_CZECH, SUBLANG_DEFAULT

STRINGTABLE
BEGIN
    IDS_MSG1                "Hello, world!\n"
    IDS_MSG2                "Orangutan has %d banana.\n"
    IDS_MSG3                "Try Weblate at http://demo.weblate.org/!\n"
    IDS_MSG4                "Thank you for using Weblate."
END

Типичная настройка компонента в Weblate

Маска файла

lang/*.rc

Одноязычный базовый файл

lang/en-US.rc

Шаблон для новых переводов

lang/en-US.rc

Формат файла

Файл RC

Файлы метаданных магазина приложений

Добавлено в версии 3.5.

Метаданные, используемые для публикации приложений в различных магазинах приложений, могут быть переведены. В настоящее время совместимы следующие инструменты:

Метаданные состоят из нескольких текстовых файлов, которые Weblate представляет для перевода в виде отдельных строк.

Типичная настройка компонента в Weblate

Маска файла

fastlane/android/metadata/*

Одноязычный базовый файл

fastlane/android/metadata/en-US

Шаблон для новых переводов

fastlane/android/metadata/en-US

Формат файла

Файлы метаданных магазина приложений

Файлы субтитров

Добавлено в версии 3.7.

Weblate может переводить различные файлы субтитров:

  • Файл субтитров SubRip (*.srt)

  • Файл субтитров MicroDVD (*.sub)

  • Файл субтитров Advanced SubStation Alpha (*.ass)

  • Файл субтитров SubStation Alpha (*.ssa)

Типичная настройка компонента в Weblate

Маска файла

path/*.srt

Одноязычный базовый файл

path/en.srt

Шаблон для новых переводов

path/en.srt

Формат файла

Файл субтитров SubRip

См.также

Субтитры

Excel Open XML

Добавлено в версии 3.2.

Можно импортировать и экспортировать файлы Excel Open XML (.xlsx).

Загружая для перевода файлы XLSX, имейте в виду, что учитывается только активный рабочий лист, и должны быть хотя бы колонки с названием source (содержащая исходную строку) и target (содержащая перевод). Дополнительно может быть колонка с названием context (содержащая путь к контексту строки перевода). Если вы используете скачанный XLSX для экспорта переводов в рабочую книгу Excel, вы уже получите файл в правильном формате.

Файлы HTML

Добавлено в версии 4.1.

Примечание

Поддержка этого формата в настоящее время находится в бета-режиме, приветствуются обратная связь от тестирования.

Переводимое содержимое извлекается из HTML-файлов и предлагается для перевода.

См.также

HTML

Формат OpenDocument

Добавлено в версии 4.1.

Примечание

Поддержка этого формата в настоящее время находится в бета-режиме, приветствуются обратная связь от тестирования.

Переводимое содержимое извлекается из файлов OpenDocument и предлагается для перевода.

См.также

Формат OpenDocument

Формат IDML

Добавлено в версии 4.1.

Примечание

Поддержка этого формата в настоящее время находится в бета-режиме, приветствуются обратная связь от тестирования.

Переводимое содержимое извлекается из файлов языка разметки Adobe InDesign и предлагается для перевода.

Другие

Большинство форматов, которые поддерживают сериализацию и которые поддерживает translate-toolkit, могут быть легко поддержаны, но они (пока) не прошли никакого тестирования. В большинстве случаев, чтобы скрыть различия в поведении различных хранилищ translate-toolkit, для Weblate требуется тонкая прослойка.

Добавление новых переводов

Изменено в версии 2.18: В версиях до 2.18 поведение добавления новых переводов зависело от формата файла.

Weblate может автоматически начинать новый перевод для всех форматов файлов.

Некоторые форматы ожидают, что они будут начинаться с пустого файла и в него будут включены только переведённые строки (например, Строковые ресурсы Android), в то время как другие ожидают, что в файле будут присутствовать все ключи (например, GNU gettext). В некоторых ситуациях это на самом деле зависит не от формата, а от фреймворка, который вы используете для работы с файлами перевода (например, с файлами JSON).

При указании в конфигурации компонента файла шаблона нового перевода Weblate будет использовать его для начинания новых переводов. Все существующие переводы при этом будут из файла удалены.

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

Параметр Стиль кода языка позволяет вам настраивать код языка, используемый в именах сгенерированных файлов:

Умолчание, основанное на формате файла

Зависит от формата файла, для большинства форматов используется стиль POSIX.

Стиль POSIX, использующий подчёркивание как разделитель

Обычно используется gettext’ом и связанными с ним инструментами, выдаёт коды языков вида ru_RU.

Стиль POSIX, использующий подчёркивание как разделитель и включающий код страны

Код языка в стиле POSIX, включающий код страны, даже если в этом нет необходимости (например, cs_CZ).

Стиль BCP, использующий в качестве разделителя дефис

Обычно используется на веб-платформах, выдаёт коды языков вида ru-RU.

Стиль BCP, использующий в качестве разделителя дефис и включающий код страны

Код языка в стиле BCP, включающий код страны, даже если в этом нет необходимости (например, cs-CZ).

Стиль Android

Используется только в приложениях для Android, выдаёт коды языков вида ru-rRU.

Стиль Java

Используется Java — в основном BCP с устаревшими кодами для китайского языка.

Примечание

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

Строки только для чтения

Добавлено в версии 3.10.

Строки из файлов перевода, доступные только для чтения, будут включены, но не могут быть отредактированы в Weblate. Поддержка этой возможности уже встроена в некоторые форматы (XLIFF и Строковые ресурсы Android), а в других может быть сэмулирована добавлением к строке флага read-only — смотрите раздел Настройка поведения.