Введение 2
1 Языки и виды локализации 6
1.1 Языки и их особенности 6
1.2 Виды локализации в проектах 11
1.3 Статический тип локализации и его реализация 11
1.4 Хранение статической локализационной информации 13
1.5 Динамический тип локализации 15
1.6 Интерфейс работы с локализациями для разработчиков 16
1.7 Ускорение полнотекстового поиска 17
2 Виды архитектур для динамической локализации 19
2.1 Создание полей для каждого языка 19
2.2 Создание таблицы локализации 20
2.3 Создание таблицы локализации для каждого поля 23
2.4 Использование структуры данных 27
2.5 Отдельная запись в таблице для каждого языка 30
2.6 Хранение локализованных значений по хешу 32
2.7 Отсутствие локализации на уровне БД 35
2.8 Создание полей для каждого языка со структурой данных для хранения
дополнительной информации 36
Заключение 41
Термины 42
Список использованных источников 45
В данный момент наш мир приходит к стадии глобализации и проблемой для людей во всем мире является то что один язык понимают далеко не все люди. Для того чтобы дать возможность разным народам общаться беспрепятственно люди начинают изучать общий язык. На данный момент таким языком является английский. Однако, изучить язык не имея носителей языка может привести к тому что появится какой-либо новый диалект, говор, манера общения и т.п. И таким образом мы меняем один язык на другой более общий язык, но все еще очень не имеем возможности говорить на нем свободно.
Главы государств, начальники, бизнесмены хоть и знают английский язык, они все-равно пользуются услугами переводчиков. Зачем они это делают? Дело в том что человеку легче воспринимать информацию на родном языке, чем на чужом. Большинство людей воспринимают иностранный говор не сразу. Для того чтобы обдумать и принять решение что ему ответить ему требуется:
1. Воспринять звук
2. Перевести звуки в слова
3. Построить из этих слов предложение
4. Перевести предложение
Целых 4 пункта и кучи знаний надо просто для того чтобы воспринять информацию.
Из этого следует что переводчики нужны для того чтобы людям не приходилось выполнять кучу операций перед обработкой информации. Это просто экономия сил и времени.
На данный момент многие программы переводятся на разные языки для того чтобы упростить пользование продуктом для людей из разных стран.
При переводе из одного языка в другой мы должны соблюсти кучу нюансов которые зависят от наших требований. Для примера мы можем взять два самых популярных языка в мире, а именно английский и китайский. Текст написанный на английском может занимать больше места чем на китайском, шрифты для китайского и английского могут сильно отличаться от требуемых, форматы даты, валют, чисел могут отличаться не только от языка, но и от страны.
На данный момент все чаще слова и предложения в информационных системах могут храниться не только в текстовом виде. Чаще всего мы можем заметить это в игровой индустрии. Игры играют все, независимо от пола, возраста и языка на котором говорит человек. Из этого следует что проблема локализации в играх, особенно в многопользовательских встает на высший уровень. В новейших играх есть мы очень часто можем заметить реплики персонажей, текст в текстурах, и т.д. Для игр это очень важно, ведь от разработчиков игр требуется погрузить человека в игру так чтобы ему не приходилось испытывать дискомфорт при прохождении игры.
На данный момент рынок IT не сдерживают границы стран и языков. Одной и той же системой могут пользоваться на разных частях света. И то как лучше построить архитектуру локализации нет точного ответа, так как все зависит от требуемых задач. В данной работе мы рассмотрим большинство вариантов реализации локализации информационных систем. Здесь мы увидим реальные способы локализации, как хорошие, так и плохие.
Сейчас большинство людей хотят от систем гибкости в работе. Пользователи хотят все больше разнообразия и функционала. Чтобы кнопочка сохранить была не зеленого, а синего цвета. Чтобы кнопочка была справа, а потом когда я захочу я мог ее перетащить налево. Чтобы обычное приветствие для некоторых пользователей писало не «Добро пожаловать», а «Добрый день ув. X X». Такая же проблема возникает с локализацией.
Заказщики и пользователи требует возможность настраивать любые текстовые поля и чтобы все работало «на лету», они все чаще и чаще требуют ее сделать не статическую, а динамическую локализацию.
Увеличение требований пользователей сильно сказывается на продукте. Продукт становится перегружен функционалом.
1. Увеличиваются количество алгоритмов
2. Алгоритмы становятся сложнее (увеличение количество операций)
3. ТЗ прибавляет несколько «килограммов» в весе
4. Увеличивается количество модулей
5. Код может превращается в глазах программистов в лазанью и/или спагетти (увеличивается количество слоев абстракции и/или код становится плохо структурированным и запутанным)
Для того чтобы продуктивно разрабатывать информационные системы требуется выбрать способ локализации систем так чтобы ему удовлетворяли все условия и не пришлось испытывать какие-либо трудности при разработки системы.
Чтобы избежать всех проблем с перегруженным функционалом мы пройдемся по всем вариантам и узнаем какой вариант и в каких случаях нам подойдет больше всего.
Именно это мы рассмотрим и пройдемся по всем подводным камням, на которые могут споткнуться специалисты.
Цель - получить оптимальную архитектуру локализации систем для разных задач
Данная тема будет актуальна для всех людей то тех пор пока люди не начнут говорить на одном языке свободно как на родном, а так как из-за политики некоторых стран мы можем гарантировать что люди на одном языке говорить еще будет совсем не скоро.
В данной работе мы рассмотрели и проанализировали все особенности языков и проблемы, с которыми мы можем столкнуться во время разработки архитектуры локализации систем. Так же мы рассмотрели самые популярные архитектурные решения для локализации систем и предложили самые лучшие варианты для разных типов задач. Выделили два типа локализации систем и выделили особенности каждой, что поможет сделать архитектуру и код программ четкими и лаконичными. Мы сделали анализ всех методов локализации и выделили как сильные, так и слабые стороны каждой архитектуры. Мы рассмотрели каким образом мы могли бы улучшить скорость работы с данными и на языке описания данных показали как создать ту или иную архитектуру. Данную работу можно использовать в качестве методички при построении архитектуры системы, избежав проблемы, с которыми разработчики могли столкнуться во время разработки информационных систем. Так же данная работа предлагает самый оптимальный вариант для большего количества задач аргументируя его преимущество среди остальных вариантов.
Мы выделили на языке Java как мог бы выглядеть код программы для работы с локализованными значениями и описали принцип работы, который можно реализовать для удобной и простой работы при написании кода программистами.
Данная работа имеет высокую актуальной нас сей день так как все больше и больше программных продуктов выходят на межнациональный уровень и им требуются лучшие архитектурные решения чтобы быть конкурентно способными на рынке ПО.
Термины
Локализация - адаптация продукта к особенностям группы населения, региона или определенной страны.
База данных - это организованная структура данных, целью которой является хранение, изменение и обработка взаимосвязанной информации, преимущественно больших объемов.
UI (User Interface, Интерфейс пользователя) - интерфейс, обеспечивающий передачу информации между человеком и программой.
Сущность - собирательное понятие, некоторая абстракция реально существующего объекта информацию о котором требуется хранить.
Атрибут — свойство некоторой сущности. Часто называется полем таблицы.
Домен атрибута — множество допустимых значений, которые может принимать атрибут.
Кортеж — конечное множество взаимосвязанных допустимых значений атрибутов, которые вместе описывают некоторую сущность (строка таблицы).
Отношение — конечное множество кортежей (таблица).
Схема отношения — конечное множество атрибутов, определяющих некоторую сущность. Иными словами, это структура таблицы, состоящей из конкретного набора полей.
Проекция — отношение, полученное из заданного путём удаления и (или) перестановки некоторых атрибутов.
Нормальная форма — требование, предъявляемое к структуре таблиц в теории реляционных баз данных для устранения из базы избыточных функциональных зависимостей между атрибутами (полями таблиц).
Метод нормальных форм (НФ) состоит в сборе информации о объектах решения задачи в рамках одного отношения и последующей декомпозиции этого отношения на несколько взаимосвязанных отношений на основе процедур нормализации отношений.
Цель нормализации: исключить избыточное дублирование данных, которое является причиной аномалий, возникших при добавлении, редактировании и удалении кортежей(строк таблицы).
Аномалией называется такая ситуация в таблице БД, которая приводит к противоречию в БД либо существенно усложняет обработку БД. Причиной является излишнее дублирование данных в таблице, которое вызывается наличием функциональных зависимостей от не ключевых атрибутов.
Аномалии-модификации проявляются в том, что изменение одних данных может повлечь просмотр всей таблицы и соответствующее изменение некоторых записей таблицы.
Аномалии-удаления — при удалении какого либо кортежа из таблицы может пропасть информация, которая не связана на прямую с удаляемой записью.
Аномалии-добавления возникают, когда информацию в таблицу нельзя поместить, пока она не полная, либо вставка записи требует дополнительного просмотра таблицы.
Индекс (англ. index) — объект базы данных, создаваемый с целью повышения производительности поиска данных.
ORM - технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».