Описание пользователя
Глава 2. Интерфейс пользователя
§2.22. Перевод текстов в схемах
§2.22.2. Формат файла перевода схемы
Описыввается формат файла, в котором добавляются и редактируются переводы текстов схемы.
Файл перевода схемы представляет собой текстовый файл в кодировке UTF8 в формате CSV с заданным пользователем разделителем полей. С файлом может быть связан дополнительный файл, хранящий только служебную информацию. Переводчику этот служебный файл, если он используется, передавать не нужно.
Данные в файле перевода записываются следующим образом:
| RDSTRANSLATESERV | Служебная_A | Язык 1 | Язык 2 | … |
| Признак_строк | Служебная_B | Текст на языке 1 | Текст на языке 2 | … |
| Признак_строк | Служебная_B | Текст на языке 1 | Текст на языке 2 | … |
| … | ||||
Первая строка файла – заголовок. В первом столбце первой строки всегда находится текст «RDSTRANSLATESERV», по нему RDS при загрузке файла опознает его формат. Он же служит для выяснения, какой символ разделителя использовала программа, сохранившая файл: символом разделителя обязательно будет первый символ, следующий за этим текстом или за его закрывающей кавычкой, если кавычки в файле используются.
Во втором столбце первой строки записана служебная информация, относящаяся ко всему файлу. Там во внутреннем формате указывается расширение связанного служебного файла, если он используется, а также записывается специальная строка для проверки правильности кодировки файла.
Начиная с третьего столбца первой строки перечисляются названия всех языков в файле.
Вторая и последующие строки файла описывают тексты на разных языках: каждая строка соответствует одному тексту из схемы на всех языках, перечисленных в заголовке (полностью одинаковые тексты в разных объектах объединяются, и им будет соответствовать одна и та же строка файла). Два первых столбца в этих строках – служебные. В первом столбце содержится «0», если в тексте не может быть разрывов строк (например, у заголовка поля ввода их быть не может), и «1», если такие разрывы могут быть (например, в тексте на прямоугольнике блока). Эта информация может быть полезна переводчику. Если он ее проигнорирует, ничего страшного не случится: если при чтении файла разрывы строк будут обнаружены там, где они запрещены, они будут удалены автоматически.
Во втором столбце содержится служебная информация о том, к какому именно параметру схемы относится данный текст. Эта информация не нужна переводчику, и он не должен ее изменять. Если файл перевода – один, без дополнительного служебного файла, в этом столбце записываются длинные кодированные строки описания параметров. Если с файлом перевода связан служебный файл, в этом столбце записываются только целые числа-идентификаторы, а описания параметров выносятся в служебный файл и привязываются к этим идентификаторам (примеры файлов приведены ниже).
При сохранении файла перевода все тексты берутся в двойные кавычки. По спецификации формата это не обязательно, но это уменьшает вероятность проблем с интерпретацией формата другими программами. При загрузке файла RDS следует спецификациям RFC 4180: в кавычках должны быть тексты, содержащие двойные кавычки, символ разделителя и разрывы строк. В качестве разрыва строки используется комбинация CRLF (0x0D, 0x0A).
Формат связанного служебного файла здесь не описывается, ни переводчик, ни пользователь с ним не работают.
Рассмотрим простую схему из трех блоков и двух связей, одна из которых – с пояснительным текстом «метки» (рис. 308).
Рис. 308. Пример схемы с текстами, которые необходимо перевести
В этой схеме, на первый взгляд, перевода требуют следующие тексты:
- заголовок графика «График»;
- подписи осей графика «Ось X» и «Ось Y »;
- пояснительный текст «Метки» на верхней связи;
- текст «Вычисление табличной функции» на блоке, присоединенном к графику.
Текст «dbl» на блоке ввода матрицы не будет переведен, поскольку в картинке этого стандартного блока не установлено разрешение перевода.
Файл перевода без связанного служебного файла для языков «Русский» и «English» с уже введенными переводами будет выглядеть следующим образом:
"RDSTRANSLATESERV","CODING\АБВГД","Русский","English" "0","0101qj4q1w","Слой 1","Layer 1" "0","0101qj5q2w","Основная","Main" "0","0102q3e8qw0104q3e8qw","График","Plot" "0","0102q3e9qw0104q3e9qw","Ось X","X axis" "0","0102q3eaqw0104q3eaqw","Ось Y","Y axis" "1","0106qj2qw","Вычисление табличной функции","Table computation" "0","0104qjaqw","Открыть","Open" "1","0105qj7qw","Метки","Marks" "0","4C696E655374796C6573q1qw","Стандартная связь","Default connection" "0","4C696E655374796C6573q2qw","Стандартная шина","Default bus"
Ниже для большей ясности приведен этот же файл в виде таблицы:
| № | 1 | 2 | 3 | 4 |
| 1 | RDSTRANSLATESERV | CODING\АБВГД | Русский | English |
| 2 | 0 | 0101qj4q1w | Слой 1 | Layer 1 |
| 3 | 0 | 0101qj5q2w | Основная | Main |
| 4 | 0 | 0102q3e8qw0104q3e8qw | График | Plot |
| 5 | 0 | 0102q3e9qw0104q3e9qw | Ось X | X axis |
| 6 | 0 | 0102q3eaqw0104q3eaqw | Ось Y | Y axis |
| 7 | 1 | 0106qj2qw | Вычисление табличной функции |
Table computation |
| 8 | 0 | 0104qjaqw | Открыть | Open |
| 9 | 1 | 0105qj7qw | Метки | Marks |
| 10 | 0 | 4C696E655374796C6573q1qw | Стандартная связь | Default connection |
| 11 | 0 | 4C696E655374796C6573q2qw | Стандартная шина | Default bus |
Можно заметить, что в файл, кроме указанных выше текстов, попали также имя слоя и конфигурации подсистемы (строки 1 и 2), имя пункта меню открытия редактора матрицы (строка 8), а также имена стандартных стилей связи и шины (строки 10 и 11). Это тоже тексты, хранящиеся в схеме, и, поэтому, они тоже были выгружены в файл перевода. В первом столбце для всех текстов записан ноль, кроме текста на блоке (строка 7) и пояснительного текста связи (строка 9), для которых записана единица – только эти два текста могут иметь внутри разрывы строк. Второй столбец файла содержит кодированную служебную информацию.
Результат загрузки этого файла в схему для языка «English» выглядит следующим образом (рис. 309):
Рис. 309. Внешний вид схемы после загрузки файла перевода
Этот же файл перевода при сохранении служебной информации в отдельный файл будет выглядеть так:
"RDSTRANSLATESERV","CODING\АБВГД\EXT\csvd","Русский","English" "0","1","Слой 1","Layer 1" "0","2","Основная","Main" "0","3","График","Plot" "0","4","Ось X","X axis" "0","5","Ось Y","Y axis" "1","6","Вычисление табличной функции","Table computation" "0","7","Открыть","Open" "1","8","Метки","Marks" "0","9","Стандартная связь","Default connection" "0","10","Стандартная шина","Default bus"
В табличной форме:
| № | 1 | 2 | 3 | 4 |
| 1 | RDSTRANSLATESERV | CODING\АБВГД\EXT\csvd | Русский | English |
| 2 | 0 | 1 | Слой 1 | Layer 1 |
| 3 | 0 | 2 | Основная | Main |
| 4 | 0 | 3 | График | Plot |
| 5 | 0 | 4 | Ось X | X axis |
| 6 | 0 | 5 | Ось Y | Y axis |
| 7 | 1 | 6 | Вычисление табличной функции |
Table computation |
| 8 | 0 | 7 | Открыть | Open |
| 9 | 1 | 8 | Метки | Marks |
| 10 | 0 | 9 | Стандартная связь | Default connection |
| 11 | 0 | 10 | Стандартная шина | Default bus |
Здесь вместо кодированной служебной информации записаны целые числа. При такой записи файл сложнее случайно испортить.