Перевод интерфейса ТЦУ3 на другие языки.

Автор:   Кравченко Андрей, mail@andriy.co
Перевод интерфейса ТЦУ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 высылается разработчику.

Статья включена в следующие темы:

Вверх