Описание пользователя
Глава 4. Перевод интерфейса пользователя RDS
§4.6. Файл перевода в формате CSV
Описывается структура файла перевода, экспортированного в формате CSV (значения, разделенные запятой).
CSV-файл перевода похож на файлы переводов схем, но, в отличие от них, он всегда имеет только два столбца: служебный столбец и столбец текста. Пользователь может менять тексты только во втором столбце. Первая строка файла – служебная, пользователь не должен менять тексты в обоих ее столбцах.
Данные в файле перевода записываются следующим образом:
| RDSINTERFACEDESCRIPTION | CODING\АБВГД\TYPE\Language\MOD\имя_языка… |
| группа.объект.параметр | значение |
| группа.объект.параметр | значение |
| … | |
В первом столбце первой строки записан текст «RDSINTERFACEDESCRIPTION» – это служебная метка, по которой формат файла опознается при импорте. Во втором столбце закодированы параметры, для которых был экспортирован файл: тип модификации «язык» (после «TYPE\») и имя языка (после «MOD\»). После «CODING\» в этом столбце записаны русские буквы «АБВГД» для проверки кодировки файла. Если файл перевода экспортируется для DAT-файла описания интерфейса пользователя, а не для автокомпилируемых моделей, то во втором столбце после «DAT\» будет содержаться имя исходного DAT-файла, в котором обратная косая черта «\» заменена на звездочку «*». Сохраненное имя DAT-файла используется при импорте файла перевода только для того, чтобы предупредить пользователя, если он позже попытается импортировать этот файл для какого-то другого описания.
Далее во всех строках в первом столбце записаны имена группы объектов (окна или раздела интерфейса), конкретного объекта (поля ввода, пункта меню) и параметра этого объекта (заголовок, подсказка и т.п.), разделенные точками. Во втором столбце записан текст значения параметра, который пользователь может менять при переводе.
При экспорте файла все тексты берутся в двойные кавычки. По спецификации формата это не обязательно, но так надежнее. При загрузке файла RDS следует спецификациям RFC 4180⇗: в кавычках должны быть тексты, содержащие двойные кавычки, символы разделителя и разрывы строк. В качестве разрыва строки используется комбинация CRLF (0x0D, 0x0A).
Для приведенного в §4.2 фрагмента файла описания интерфейса пользователя «Rds.dat» часть CSV-файла после перевода может выглядеть так (порядок строк может быть другим):
"RDSINTERFACEDESCRIPTION","CODING\АБВГД\TYPE\Language\MOD\English\DAT\Rds.dat" "TMainForm.M_File1.Caption","File" "TMainForm.M_NewSystem.Caption","New" "TMainForm.M_Templates.Caption","New by template" "TMainForm.M_LoadSystem.Caption","Open..." "TMainForm.M_LoadInCopy.Caption","Open separate..." "TMainForm.M_SaveSystem.Caption","Save" …
В данном случае «…MOD\English» во втором столбце первой строки указывает на то, что файл экспортирован для языка «English», а «…DAT\Rds.dat» – на то, что файл экспортирован для описания интерфейса «Rds.dat».
Текст «TMainForm.M_File1.Caption» в первом столбце второй строки говорит о том, что эта строка описывает параметр «Caption» (заголовок) объекта «M_File1» (в данном случае это пункт главного меню «Файл») главного окна RDS («TMainForm»). Во втором столбце этой строки записан заголовок этого пункта меню в английском варианте – «File».
Списки вариантов выпадающих списков в CSV-файлах описываются многострочными текстами, состоящими из строк вида «индекс=значение», где индекс – начинающийся с нуля номер варианта в списке, а значение – текст этого варианта, видимый пользователю. Точно так же эти списки описываются в DAT- и INI-файлах, но в CSV-файлах вместо символа перевода строки «\n» используется настоящий перевод строки. Например, описание выпадающего списка из DAT-файла вида
[TTextProperties] … CB_Alignment.List=0=Влево\n1=По центру\n2=Вправо
после экспорта в CSV-файл будет выглядеть следующим образом:
"TTextProperties_Frame.CB_Alignment.List","0=Влево 1=По центру 2=Вправо"
Следует учитывать, что любые строки с индексами, отличными от заложенных в программу разработчиками и указанных в файле описания интерфейса, будут игнорироваться – в выпадающем списке всегда будет столько пунктов, сколько предусмотрено разработчиками, и добавить в список новые пункты через импорт файла перевода невозможно.
Если при экспорте был установлен флажок «» (см.рис. 506), то в первом столбце экспортированного файла может быть указано несколько описаний объектов с одинаковым значением параметра – по одному описанию на строке. Например, запись:
"Messages.AuxModuleAbout.Text Messages.ToolModuleAbout.Text","О модуле"
указывает на то, что одно и то же значение «О модуле» имеют параметры «Text» объектов «AuxModuleAbout» и «ToolModuleAbout» секции «Messages». Если в этом файле перевести текст «О модуле», при импорте файла он будет присвоен этим двум объектам одновременно. Переводчик может, при желании, вручную разделить эту запись на две, соблюдая правила формата CSV, и дать параметрам разные значения:
"Messages.AuxModuleAbout.Text","About auxiliary module" "Messages.ToolModuleAbout.Text","About tool module"
После редактирования CSV-файл должен быть импортирован обратно для слияния с уже имеющимися переводами.