Перевод интерфейса ТЦУ3 на другие языки.
Еще на этапе предварительной проработки проекта «Товары, Цены, Учет…»
(ТЦУ) версии 3 закладывалась система многоязычного интерфейса. Требования
предъявлялись следующие:
1. Переводчик не обязательно должен быть
программистом.
2. Перевод должен осуществляться путем заполнения
минимального количества таблиц.
3. Количество записей в таблицах также должно быть
минимальным.
4. Работа переводчика должна быть простой и
комфортной.
5. Количество вопросов к фирме разработчику должно быть
минимальным.
6. Результат перевода переводчик должен наблюдать
непосредственно в процессе своей работы.
7. Головному разработчику результат перевода должен
высылаться в виде файлов по окончании перевода.
Из этого списка особенный интерес представляют пункты 2 и 3. Рассмотрим,
как добиться наименьшего количества таблиц и наименьшего количества
записей в таблицах. Для этого нужно вспомнить, что собой представляет
программный интерфейс. Это слова и словосочетания на кнопках и пунктах
меню, фразы во всплывающих подсказках, а также фразы в сообщениях.
Самый простой способ перевода - создать одну таблицу и перевести
требуемые фрагменты текста с одного языка на другой. Но при более
глубоком анализе оказывается, что не все так просто. Опишем некоторые
проблемы.
1. Слова и словосочетания одинаковые в разных формах
английского интерфейса могут иметь различный перевод на другой язык.
Простой пример. Статус расходной накладной и акта переоценки, если
документы проведены по-английски звучит одинаково - «Approved». Но из-за
того что слово «накладная» женского рода, перевод статуса в форме
накладной предпочтительнее сделать как «Проведена», а для акта переоценки
статус лучше перевести как «Проведен».
2. Сообщения программы – это не всегда статичный текст.
В сообщения должны передаваться параметры. Например, сообщение
«Недостаточное количество товара ‘Спички’ для отгрузки». Очевидно,
что название товара для данного сообщения может изменяться, в зависимости
от того, какого товара не хватает для отгрузки. Следовательно, такой
параметр, как название товара нужно каким-то образом передать в
сообщение.
Исходя из этого, формируем две таблицы.
1. Таблица перевода слов, словосочетаний и фраз.
В ее основу положен принцип правил и исключений из правил. Например, во
всех случаях «Approved» переводится как «Утвержден» (это правило), но в
случае, если донное слово используется в форме расходной накладной, то
перевод должен быть осуществлен как «Утверждена» (это исключение из
правила). Нужно сказать, что исключения из правил встречаются очень редко
(не более двух-трех десятков на всю таблицу).
2. Таблица сообщений. Для сообщений самой главное – их
номера. Если при переводе слов и словосочетаний программа сама ищет
перевод и подставляет найденные слова и словосочетания в интерфейс, то
для сообщений ТЦУ находит нужный текст по номерам этих сообщений.
Сообщение с номером 25 в таблице содержит следующий текст «Недостаточное
количество товара <param1> для отгрузки.» При выводе
сообщения программа сама подставит вместо тэга <param1> название
товара (в нашем случае ‘Спички’).
Ну вот, с принципами построения определились. Теперь посмотрим, как эта
система реализована вживую, что называется «в металле».
Запустим ТЦУ. Перейдем на вкладку «Справочники» - значок «Настройки».
Откроется окно настроек ТЦУ. Выберем раздел «Интерфейс». Рядом с
параметром «Язык интерфейса» нажмем на кнопку «…».
Откроется большая форма «Translator Designer».
Первое, что нам необходимо сделать – добавить новый язык интерфейса.
Нажмем на кнопку «Add New Language». Система предложит вам ввести
название для нового языка.
Введем литовский язык и нажмем ОК. Новый язык интерфейса добавлен и
автоматически выбран. Форма с таблицами пока пустая.
Чтобы ее заполнить, нажмем на кнопку «Refresh Tables». Таблицы
заполнены.
Задача переводчика – заполнить столбец с переводом на литовский язык.
Перевод осуществляется в столбце «Translated Word» (заголовок выделен
красным цветом). В колонке «Base Word» находится текст, прописанный
в интерфейсе программы, который и требует перевода. Это не всегда
литературный английский, поэтому в помощь переводчику в колонке «Russian
Word (Info)» дана информация о переводе данного слова или
словосочетания на русский язык, чтобы переводчик мог ориентироваться при
переводе на свой язык. В дальнейшем, планируется «Russian Word (Info)»
заменить на «English Word (Info)», чтобы нормально могли работать не
владеющие русским языком переводчики. Рассмотрим пример, когда нам нужно
перевести правило и исключение из правила.
Как мы можем видеть, сначала переводится правило «Approved» ->
«Проведена», в следующей строке для формы akt_per (акт переоценки)
и поля «utver» (имя поля, в котором делаем перевод) перевод будет таким
«Approved» -> «Проведен». Исключение – штука редкая, делать исключение
из правила или нет – решает переводчик. Чтобы создать исключение из
правила, нужно перейти в конец таблицы и добавить новый перевод с
указанием имени формы и имени поля, где применяется данной
исключение.
Заполнением таблицы перевода слов и словосочетаний (Words and Phrases
Translator) завершается первый этап перевода. Чтобы отправить результат
перевода головному разработчику достаточно нажать на кнопку «Export
Table». Результат перевода сохраняется в файле TTWord.xml, который
пересылается разработчику, например, по e-mail.
Перейдем теперь на вкладку «Massage Translator».
Message Number содержит уникальный номер сообщения, Russian Massage
содержит пример данного сообщения на русском языке, перевод сообщения
заносится в «Language Message». Обратите внимание на то, что в сообщения
из программы передаются параметры, которые заключены в тэги <>, и
которые имеют названия <param1>, <param2> и т.д. Всего в
сообщение может быть передано до восьми параметров.
После заполнения таблицы сообщений данные могут быть выгружены в виде
файла по нажатию на кнопку «Export Table». Файл TTMsg.xml высылается
разработчику.