Форматы файлов локализации

Weblate поддерживает широкий спектр форматов перевода. Каждый формат немного отличается и предоставляет различный набор возможностей.

Подсказка

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

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

Weblate tries to detect file format during Добавление проектов и компонентов перевода. The detection might be wrong for different variants of the same serialization format (JSON, YAML, properties) or file encoding, so please verify that Формат файла is correct before creating the component.

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

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

Формат

Язычность [1]

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

Описании [3]

Контекст [4]

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

Флаги [8]

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

GNU gettext PO (Portable Object)

двуязычный

да

да

да

да

да [9]

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

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

одноязычный

да

да

да

да

да [9]

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

XLIFF 1.1 and 1.2

оба

да

да

да

да

да

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

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

оба

нет

да

нет

нет

нет

языковые файлы draggable/i18n

одноязычный

нет

да

нет

нет

нет

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

одноязычный

да

да

нет

нет

нет

Переводы Joomla

одноязычный

нет

да

нет

да

нет

Файлы .ts Qt Linguist

оба

да

да

нет

да

да

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

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

одноязычный

да

да [7]

нет

нет

да

Строки Apple iOS

оба

нет

да

нет

нет

нет

Строки PHP

одноязычный

нет [10]

да

нет

нет

нет

JSON-файлы

одноязычный

нет

нет

нет

нет

нет

Файлы JSON i18next

одноязычный

да

нет

нет

нет

нет

JSON-файлы go-i18n

одноязычный

да

да

нет

нет

нет

Файл JSON gotext

одноязычный

да

да

нет

да

нет

Файл ARB

одноязычный

да

да

нет

нет

нет

JSON-файлы WebExtension

одноязычный

да

да

нет

нет

нет

ресурсные файлы .NET (RESX, RESW)

одноязычный

нет

да

нет

нет

да

Файлы ResourceDictionary

одноязычный

нет

нет

нет

нет

да

Файлы CSV

оба

нет

да

да

да

нет

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

Файлы YAML

одноязычный

нет

нет

нет

нет

нет

Файлы Ruby YAML

одноязычный

да

нет

нет

нет

нет

Файлы DTD

одноязычный

нет

нет

нет

нет

нет

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

одноязычный

нет

нет

нет

нет

да

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

одноязычный

нет

да

нет

нет

нет

Excel Open XML

одноязычный

нет

да

да

да

нет

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

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

одноязычный

нет

нет

нет

нет

нет

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

одноязычный

нет

нет

нет

да

нет

Файлы HTML

одноязычный

нет

нет

нет

нет

нет

Файлы Markdown

одноязычный

нет

нет

нет

нет

нет

Формат OpenDocument

одноязычный

нет

нет

нет

нет

нет

Формат IDML

одноязычный

нет

нет

нет

нет

нет

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

одноязычный

нет

нет

нет

нет

нет

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

одноязычный

нет

нет

нет

нет

нет

Формат TermBase eXchange

двуязычный

нет

да

да

нет

да

Текстовые файлы

одноязычный

нет

нет

нет

нет

нет

Формат Stringsdict

одноязычный

да

нет

нет

нет

нет

Формат Fluent

одноязычный

нет [11]

да

нет

нет

нет

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

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

For correct use of monolingual files, Weblate requires access to a file containing complete list of strings to translate with their source—this file is called Одноязычный базовый файл within Weblate, though the naming might vary in your paradigm.

Additionally this workflow can be extended by utilizing Файл промежуточного языка to include strings provided by developers, but not to be used as is in the final strings.

Строковые состояния

Многие форматы файлов различают только строки Untranslated («Без перевода») и Translated («Переведённые»). В некоторых форматах можно хранить более подробную информацию о состоянии, например Needs editing («На правку») или Approved («Одобрено»).

Описание исходной строки

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

Некоторые форматы имеют встроенную поддержку предоставления дополнительной информации переводчикам (например, XLIFF 1.1 and 1.2, GNU gettext PO (Portable Object), JSON-файлы WebExtension, Файлы CSV, Excel Open XML, Файлы .ts Qt Linguist, JSON-файлы go-i18n, Файл JSON gotext, Файл ARB, ресурсные файлы .NET (RESX, RESW)). Многие другие форматы извлекают ближайший комментарий в качестве описания исходной строки.

Пояснение

Пояснение для строк можно хранить и анализировать из нескольких форматов файлов.

В настоящее время поддерживается только в Формат TermBase eXchange.

Расположение исходной строки

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

Эта информация обычно доступна в двуязычных форматах, где строки извлекаются из исходного кода с помощью инструментов. Например, GNU gettext PO (Portable Object) и Файлы .ts Qt Linguist.

Флаги перевода

Флаги перевода позволяют настраивать поведение Weblate. Некоторые форматы поддерживают их определение в файле перевода (вы всегда можете определить их в интерфейсе Weblate, см. Настройка поведения с помощью флагов).

Эта функция смоделирована на флагах в GNU gettext PO (Portable Object).

Additionally, for all XML based format, the flags are extracted from the non-standard attribute weblate-flags. Additionally max-length:N is supported through the maxwidth attribute as defined in the XLIFF standard, see Указание флагов перевода.

Контекст

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

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

Строки с множественным числом

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

Подсказка

Множество строк также требует надлежащей поддержки со стороны платформы приложения. Выберите собственный формат вашей платформы, например GNU gettext PO (Portable Object), ресурсы строк Android или Формат Stringsdict.

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

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

Поддержка других форматов

Most formats supported by translate-toolkit which support serializing can be easily supported, but they did not (yet) received any testing. In most cases, an additional thin layer is needed in Weblate to hide differences in behavior of different storages.

Чтобы добавить поддержку нового формата, предпочтительный подход состоит в том, чтобы сначала реализовать его поддержку в translate-toolkit.

Параметры формата файла

File format parameters provide a way to configure settings related to the file format. They are configured at component level and allow you to customize how file parsing and serialization are handled.

List of file format parameters

Parameter name

Форматы файлов

Метка

Текст справки

csv_encoding

  • csv

  • csv-multi

Кодировка файла

Кодировка, используемая для файлов CSV

Доступные варианты:

auto

Автоопределение

utf-8

UTF-8

csv_simple_encoding

  • csv-simple

Кодировка файла

Кодировка, используемая для простых файлов CSV

Доступные варианты:

auto

Автоопределение

utf-8

UTF-8

iso-8859-1

ISO-8859-1

flatxml_key_name

  • flatxml

Имя ключа FlatXML

flatxml_root_name

  • flatxml

Имя корневого элемента FlatXML

flatxml_value_name

  • flatxml

Имя значения элемента FlatXML

gwt_encoding

  • gwt

Кодировка файла

Кодировка, используемая для файлов свойств GWT

Доступные варианты:

utf-8

UTF-8

iso-8859-1

ISO-8859-1

json_indent

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

Отступы JSON

json_indent_style

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

Стиль отступов JSON

Доступные варианты:

spaces

Пробелы

tabs

Вкладки

json_sort_keys

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

Сортировка JSON-ключей

json_use_compact_separators

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

Избегайте пробелов после разделителей

merge_duplicates

  • markdown

  • html

  • txt

  • dokuwiki

  • mediawiki

  • asciidoc

Удаление дубликатов идентичных строк

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

po_fuzzy_matching

  • po

Использовать неточное соответствие

po_keep_previous

  • po

Сохранять предыдущие msgid переведённых строк

po_line_wrap

  • po

  • po-mono

Перенос длинных строк

By default, gettext wraps lines at 77 characters and at newlines. With the --no-wrap parameter, wrapping is only done at newlines.

Доступные варианты:

77

Переносить строки на 77-м символе и на символе перевода строки (по умолчанию в xgettext)

65535

Only wrap lines at newlines (like xgettext --no-wrap)

-1

Не переносить строки

po_no_location

  • po

Не включайте в файл информацию о местоположении

properties_encoding

  • properties

  • xwiki-page-properties

Кодировка файла

Кодировка, используемая для файлов свойств Java

Доступные варианты:

iso-8859-1

ISO-8859-1

utf-8

UTF-8

utf-16

UTF-16

strings_encoding

  • strings

Кодировка файла

Кодировка, используемая для файлов строк iOS

Доступные варианты:

utf-16

UTF-16

utf-8

UTF-8

xml_closing_tags

  • ts

  • plainxliff

  • xliff

  • xliff2

  • xliff2-placeables

  • poxliff

  • apple-xliff

  • resx

  • aresource

  • moko-resource

  • cmp-resource

  • tbx

Включать закрывающую метку для пустых XML меток

yaml_indent

  • yaml

  • ruby-yaml

Отступы YAML

yaml_line_break

  • yaml

  • ruby-yaml

Символ перевода строки

Доступные варианты:

dos

DOS (\r\n)

unix

UNIX (\n)

mac

MAC (\r)

yaml_line_wrap

  • yaml

  • ruby-yaml

Перенос длинных строк

Доступные варианты:

80

Переносить строку после 80 символов

100

Переносить строку после 100 символов

120

Переносить строку после 120 символов

180

Переносить строку после 180 символов

65535

Не переносить строки