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

У Weblate передбачено підтримку широкого діапазону форматів перекладів. Кожен формат має свої особливості і надає власний набір можливостей.

Підказка

При виборі формату файлів для вашого програми слід надавати перевагу типовим форматам на платформі або у наборі інструментів, яким ви користуєтеся. Якщо ви це зробите, перекладачі зможуть користуватися знайомими їм інструментами, що збільшить ймовірність того, що вони візьмуть участь у вашому проєкті.

Дивись також

Translation Related File Formats

Автоматичне виявлення

Weblate намагається визначити формат файлу під час Додавання проєктів і складників перекладу. Визначення може бути неправильним для різних варіантів одного й того ж формату серіалізації (JSON, YAML, властивості) або кодування файлу, тому, будь ласка, перевірте правильність Формат файлу перед створенням компонента.

Можливості типів перекладу

Можливості всіх підтримуваних форматів

Формат

Кількість мов [1]

Форми множини [2]

Описи [3]

Контекст [4]

Розташування [5]

Прапорці [8]

Додаткові стани [6]

GNU gettext PO (портативний об’єкт)

двомовний

так

так

так

так

так [9]

потребує редагування

Одномовний gettext

одномовний

так

так

так

так

так [9]

потребує редагування

XLIFF 1.1 і 1.2

обидва

так

так

так

так

так

потребує редагування, затверджено

Властивості Java

обидва

ні

так

ні

ні

ні

мовні файли draggable/i18n

одномовний

ні

так

ні

ні

ні

Властивості GWT

одномовний

так

так

ні

ні

ні

Переклади Joomla

одномовний

ні

так

ні

так

ні

Qt Linguist .ts

обидва

так

так

ні

так

так

потребує редагування

Рядкові ресурси Android

одномовний

так

так [7]

ні

ні

так

Рядки Apple iOS

обидва

ні

так

ні

ні

ні

Рядки PHP

одномовний

ні [10]

так

ні

ні

ні

файли JSON

одномовний

ні

ні

ні

ні

ні

Файли JSON i18next

одномовний

так

ні

ні

ні

ні

Файли JSON go-i18n

одномовний

так

так

ні

ні

ні

Файли JSON gotext

одномовний

так

так

ні

так

ні

Файл ARB

одномовний

так

так

ні

ні

ні

JSON WebExtension

одномовний

так

так

ні

ні

ні

Файли ресурсів .NET (RESX, RESW)

одномовний

ні

так

ні

ні

так

Файли ResourceDictionary

одномовний

ні

ні

ні

ні

так

Файли CSV

обидва

ні

так

так

так

ні

потребує редагування

Файли YAML

одномовний

ні

ні

ні

ні

ні

Файли YAML Ruby

одномовний

так

ні

ні

ні

ні

Файли DTD

одномовний

ні

ні

ні

ні

ні

Прості файли XML

одномовний

ні

ні

ні

ні

так

Файли RC Windows

одномовний

ні

так

ні

ні

ні

Excel Open XML

одномовний

ні

так

так

так

ні

потребує редагування

Файли метаданих крамниці програм

одномовний

ні

ні

ні

ні

ні

Файли субтитрів

одномовний

ні

ні

ні

так

ні

Файли HTML

одномовний

ні

ні

ні

ні

ні

Файли Markdown

одномовний

ні

ні

ні

ні

ні

Формат OpenDocument

одномовний

ні

ні

ні

ні

ні

Формат IDML

одномовний

ні

ні

ні

ні

ні

Переклади INI

одномовний

ні

ні

ні

ні

ні

Переклади INI Inno Setup

одномовний

ні

ні

ні

ні

ні

Формат TermBase eXchange

двомовний

ні

так

так

ні

так

Текстові файли

одномовний

ні

ні

ні

ні

ні

Формат Stringsdict

одномовний

так

ні

ні

ні

ні

Формат Fluent

одномовний

ні [11]

так

ні

ні

ні

Двомовні і одномовні формати

Передбачено підтримку як одномовних, так і двомовних форматів. У двомовних форматах зберігаються повідомлення двома мовами в одному файлі — початковий рядок і переклад (типовими прикладами є GNU gettext PO (портативний об’єкт), XLIFF 1.1 і 1.2 або Рядки Apple iOS). З іншого боку, в одномовних форматах передбачено ідентифікацію рядка за ідентифікатором, а кожен мовний файл містить лише прив’язку цих ідентифікаторів до перекладів кожного з мов (типовим прикладом є Рядкові ресурси Android). Деякі формати файлів використовуються у обох варіантах. Докладніший опис можна знайти нижче.

Для правильного використання одномовних файлів Weblate потрібен доступ до файла, у якому міститься повний список рядків, які слід перекласти із початковими даними — цей файл у Weblate має назву Основний файл для одномовного перекладу (назва може бути дещо іншої у вашій парадигмі).

Крім того, цей робочий процес можна розширити, використовуючи Проміжний мовний файл для включення рядків, наданих розробниками, але не для використання їх у кінцевому вигляді в рядках.

Стани рядків

У багатьох форматах файлів передбачено лише «неперекладені» і «перекладені» рядки. У деяких форматах можна зберігати ширший спектр стані даних, зокрема стани «потребує редагування» та «затверджено».

Опис початкового рядка

Описами початкових рядків можна скористатися для передавання додаткових відомостей щодо рядка, який слід перекласти.

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

Пояснення

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

У поточній версії підтримку передбачено лише у Формат TermBase eXchange.

Позиція джерельного рядка

Дані щодо розташування рядка у початковому коді можуть допомогти досвідченим перекладачам визначити, у який спосіб використовується рядок.

Ці дані, типово, доступні у двомовних форматах, де рядки видобувають з початкового коду за допомогою певних інструментів. Прикладом є GNU gettext PO (портативний об’єкт) і Qt Linguist .ts.

Прапорці перекладу

За допомогою прапорців перекладу можна налаштувати поведінку Weblate. У деяких форматах передбачено підтримку визначення таких прапорців у файлі перекладу (ви завжди можете визначити їх в інтерфейсі Weblate, див. Налаштовування поведінки за допомогою прапорців).

Цю можливість моделюють на прапорцях у GNU gettext PO (портативний об’єкт).

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

Контекст

Контекст використовується для розрізнення ідентичних рядків у двомовному форматі, які використовуються у різних парадигмах (наприклад, Sun може бути використано як скорочення дня тижня «Sunday» або як назва найближчої до нас зірки).

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

Рядки із формами множини

Форми множини потрібні для належної локалізації рядків із змінними-лічильниками. Правила залежать від мови перекладу. Багато форматів використовують для визначення правил специфікацію CLDR.

Підказка

Крім того, належну підтримку рядків із формами множини має бути реалізовано у бібліотеках програми. Виберіть рідний для вашої платформи формат, зокрема GNU gettext PO (портативний об’єкт), Рядкові ресурси Android або Формат Stringsdict.

Рядки лише для читання

До файла буде включено призначені лише для читання рядки з файлів перекладу, але ці рядки не можна бути редагувати у Weblate. Придатні лише до читання рядки передбачено у деяких форматах (XLIFF 1.1 і 1.2 і Рядкові ресурси Android), але її можна емулювати у інших форматах додаванням прапорця read-only, див. Налаштовування поведінки за допомогою прапорців.

Підтримка інших форматів

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

Рекомендованим способом додавання нових форматів є реалізація їхньої підтримки у translate-toolkit.

Дивись також

Translation Related File Formats

Параметри формату файлу

Параметри формату файлу надають спосіб налаштування параметрів, пов’язаних з форматом файлу. Вони налаштовуються на рівні компонента та дозволяють налаштувати спосіб обробки парсингу та серіалізації файлів.

Список параметрів формату файлу

Назва параметра

Формати файлів

Мітка

Довідковий текст

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

Deduplicate identical strings

Consolidates identical source strings into a single translation unit. Prevents translation loss during file restructuring or table reordering by removing position-dependent context.

po_fuzzy_matching

  • po

Використовувати нечіткий збіг

po_keep_previous

  • po

Зберігати попередні msgid перекладених рядків

po_line_wrap

  • po

  • po-mono

Обтікання довгих рядків

Типово, gettext переносить рядки на 77-у символі та на символах перенесення рядків, з параметром --no-wrap перенесення виконується лише на символах перенесення рядків.

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

77

Перенесення рядків на 77 символах на символах перенесення рядків (типово для xgettext)

65535

Переносити рядки лише на нові рядки (наприклад 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

  • 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

Без перенесення рядків