Справочный центр

Правила разбора файлов
*. yml

Правила синтаксического разбора файлов *. yml для проекта локализации приложений
Исходные файлы
Назначение файлов:
.yml файл — это файл, содержащий описание структур данных и самих данных в текстовом виде и основанный на одноименном формате хранения указанной информации. YAML (акроним англ. «Yet Another Markup Language» — «Ещё один язык разметки», позже — рекурсивный акроним англ. «YAML Ain't Markup Language» — «YAML — не язык разметки») — «дружественный» формат сериализации данных, концептуально близкий к языкам разметки, но ориентированный на удобство ввода-вывода типичных структур данных многих языков программирования. В трактовке названия отражена история развития: на ранних этапах YAML расшифровывался как Yet Another Markup Language («Ещё один язык разметки») и даже позиционировался как конкурент XML, но позже был переименован с целью акцентировать внимание на данных, а не на разметке документов.
  1. Анализ
Синтаксис YAML минималистичен, особенно по сравнению с XML-синтаксисом. В спецификации указывают, что большое влияние оказал стандарт RFC 822.

Небольшой список основных элементов YAML:

  • потоки YAML используют печатаемые Unicode-символы, как UTF-8, так и UTF-16;

  • отступы из пробелов (символы табуляции не допускаются) используются для обозначения структуры (при переводе не учитываются);

  • комментарии начинаются с символа "решётки" ( # ), могут начинаться в любом месте строки и продолжаются до конца строки (при переводе не учитываются);

  • списки обозначаются начальным дефисом ( - ) с одним членом списка на строку, либо члены списка заключаются в квадратные скобки ( [ ] ) и разделяются запятой и пробелом ( , );

  • ассоциативные массивы представлены двоеточием с пробелом ( : ) в виде ключ: значение, по одной паре ключ-значение на строку, либо в виде пар, заключённых в фигурные скобки и разделенных запятой и пробелом ( , );

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

  • строки записываются без кавычек, однако могут быть заключены в одиночные или двойные кавычки;

  • внутри двойных кавычек могут быть использованы экранированные символы в C-стиле, начинающиеся с обратного слэша ( \ );

  • YAML позволяет задавать подстановки с помощью якорей & и алиасов (*).

Основные конструкции и ключи рассмотрим на примерах ниже.

Последовательности:
--- # Список фильмов: последовательность в блочном формате
- Casablanca
- Spellbound
- Notorious
--- # Список покупок: последовательность в однострочном формате
[milk, bread, eggs, juice]
Сопоставления имени и значения:
--- # Блочный формат
name: John Smith
age: 33
--- # Однострочный формат
{name: John Smith, age: 33}
Блочные литералы(символы перевода строк сохраняются):
--- |
  There was a young fellow of Warwick
  Who had reason for feeling euphoric
      For he could, by election
      Have triune erection
  Ionic, Corinthian, and Doric
Блочные литералы(символы перевода строк игнорируются):
--- >
  Wrapped text
  will be folded
  into a single
  paragraph
  
  Blank lines denote
  paragraph breaks
Последовательности из сопоставлений:
- {name: John Smith, age: 33}
- name: Mary Smith
  age: 27
Сопоставления из последовательностей:
men: [John Smith, Bill Jones]
women:
  - Mary Smith
  - Susan Williams
Описание ключей:

  1. левая часть строки, содержащей символ :
a.Назначение: контекст.
b.Пример: men.
c.Пояснение: контекст формируется согласно иерархии ключей. В случаях блочных литералов и последовательностей контекст может отсутствовать.


2. правая часть строки, содержащей символ :
a.Назначение: исходная строка | строка перевода.
b.Пример: John Smith.
c.Пояснение: в случаях блочных литералов и последовательностей опорный символ «:» в строке отсутствует. В случае составного объекта (например, строка anothernode: somearray: { a: for b, c: for d }) исходная строка | строка перевода это { a: for b, c: for d }.

Процесс перевода:

Мы предлагаем воспользоваться для перевода нашим онлайн-сервисом alingvo. Сервис:
  • загружает исходные файлы
  • преобразует их в строки для перевода
  • предоставляет удобный для переводчика интерфейс
  • формирует целевые файлы локализации