QlikView — опыт разработки мультиязычного приложения
В международных компаниях, как правило, работают люди, которые разговаривают и читают на разных языках.
В таком случае, вместо того чтобы разрабатывать на каждую языковую группу отдельное приложение, лучше разработать одно — мультиязычное.
Мультиязычный подход к разработке приложений QlikView, включает в себя несколько рекомендаций по архитектуре:
- В модели данных должны быть поля с русскими и английскими версиями наименований, причем русские поля в них должны называться по-русски, а английские — по-английски
- Перевод должен осуществляться на основе централизованного файла — так и разрабатывать удобнее и поддерживать менее трудозатратно
- Пользовательский интерфейс начинайте заранее проектировать с учетом того, что во всех полях, текстовых объектах, всплывающих подсказках и т.д. должны быть переменные.
Пара слов перед началом
По своему опыту я очень часто встречался с практикой создания мультиязычных приложений на основе островков данных (data-island).
Попробовав такую практику лично, я столкнулся с тем, что приложение начинает очень сильно тормозить, и забивать память сервера. Более того, состояние продолжает ухудшается с увеличением количества объектов в интерфейсе и данных в модели. В итоге, уже на 20 миллионах записей в таблице фактов, работа приложения оставляет желать лучшего, даже на мощном сервере.
Такой результат навел меня на вывод о том, что несвязанные с моделью данных таблицы могут сильно негативно сказываться на производительности приложения.
Проведя небольшое исследование (спасибо, гугл!) я даже нашел своему наблюдению подтверждение:
- Олег Троянский о дата-айлендах
- Влияние островков данных на кэш (QlikView cookbook)
Подробнее этот феномен я рассмотрел в своей статье: «Data-Islands» — зло, личный опыт использования и последующая оптимизация
Особенности модели данных мультиязычного приложения
Определение языковых переменных
Перевод приложения строится на основе двух ключевых вещей:
- Измерения в диаграммах и списках
- Текстовые описания
Техники разработки интерфейса мультиязычного приложения
- техника сохранения выборки при переключении языка (аггр по коду, текстового значения)
- техника разделения языков на состояния для того чтобы окно выборок подстраивалось под язык