ВВЕДЕНИЕ 2
1. ЛОКАЛИЗАЦИЯ В ANDROID-ПРИЛОЖЕНИЯХ 5
2. КОНЦЕПЦИЯ РЕШЕНИЯ 8
2.1. Принцип работы библиотеки 8
2.2. План реализации 9
3. ТЕХНИЧЕСКАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ 11
3.1. Выбор инструмента для генерации кода 11
3.2. Аннотации 12
3.3. Annotation processor 15
3.4. Переключение между режимами 22
3.5. Создание режима “Переводчик” 24
3.6. Генерация xml-кода 26
4. ИСПОЛЬЗОВАНИЕ БИБЛИОТЕКИ 28
4.1. Разработчик 28
4.2. Переводчик 29
ЗАКЛЮЧЕНИЕ 32
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Приложение
С ростом популярности мобильных приложений разработчикам приходится решать проблемы внедрения своего продукта в другие страны.
При внедрении в новые страны создатели должны учитывать различные факторы для того, чтобы продукт пришелся по душе конечным потребителям, в частности:
• маркетинговые особенности - необходимо сориентироваться в том, какие бренды представлены в привлекательном регионе, какая стратегия их вывода на рынок применяется конкурентами, каковы имидж и репутация компаний потенциальных конкурентов;
• условия адаптации иностранной компании - сколько и какие формальные вопросы необходимо решить при регистрации компании;
• предпочтения пользователей - необходимо определить, чему отдают предпочтение пользователи. Требуется найти в продукте что-то привлекательное для данной потребительской аудитории. К примеру, конкурентным преимуществом продукта может стать его самобытность.
Внедряя продукт в новую среду, разработчики должны позаботиться о том, чтобы этим продуктом было бы удобно пользоваться. Одним из условий адаптации является перевод языка приложения на язык страны, в которую внедряется продукт. Но сделать это несколько труднее, чем кажется на первый взгляд. Обычно для того, чтобы перевести приложение, разработчики отправляют все строковые значения одним файлом переводчикам, что вызывает некоторые трудности: переводчикам приходится переводить без контекста, вне приложения, и поэтому перевод может получиться неточным. Кроме того, форматирование полученного от
переводчика файла локализации требует от разработчика дополнительных временных затрат.
Для решения данной проблемы необходимо реализовать инструмент, который бы позволял переводчикам переводить интерфейсы приложения во время его работы и автоматически генерировал файл с переведёнными строками. Для достижения поставленной цели необходимо решить несколько задач:
• Реализовать программные модули, отвечающие за сохранение переведенных текстовых значений view-элементов в процессе выполнения программы;
• Реализовать класс для настройки работы библиотеки разработчиком;
• Разработать модуль автоматической генерации файлов локализации;
• Разработать пользовательский интерфейс программной библиотеки.
В результате выполнения данной дипломной работы была разработана библиотека для операционной системы Android, которая позволяет переводить приложение во время его работы и генерирует xml-файл с переведенными значениями. Для достижения поставленной цели были выполнены следующие задачи:
• Реализованы программные модули, отвечающие за сохранение переведенных текстовых значений view-элементов в процессе выполнения программы;
• Реализован класс для настройки работы библиотеки разработчиком;
• Разработан модуль автоматической генерации файлов локализации;
• Разработан пользовательский интерфейс программной библиотеки.
В дальнейшем планируется обрабатывать не только view-элементы, а также коллекции данных, диалоги, который создаются не с помощью файлов разметки, а с помощью программного кода.
1) Исходный код библиотеки ButterKnife [Электронный ресурс]. - https://github.com/JakeWharton/butterknife
2) Статья “Внедрение Aspect в Android-приложение” [Электронный ресурс]. - https://habrahabr.ru/post/269371/
3) Статья “Метапрограммирование” на Википедии [Электронный ресурс]. -
https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1 %82%D0%B0%D0% BF%D 1 %80%D0%BE%D0%B3 %D 1 %80%D0%B0%D0%BC%D0%BC%D0%B 8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
4) Статья “Обработка аннотаций во время компиляции” [Электронный ресурс]. - https://habrahabr.ru/company/e-Legion/blog/206208/
5) Статья с сайта Xa6paXa6p.ru “Аннотации в Java: обзор синтаксиса и
создание собственных” [Электронный ресурс].
https://habrahabr.ru/post/139736/
6) Официальный сайт компании Oracle [Электронный ресурс]. - http: //docs. oracle. com/j avase/tutorial/j ava/ annotations/index.html
7) Статья с сайта Xa6paXa6p.ru “Custom Annotation Processor - создание на базе Android-приложения и конфигурация в Intelij IDEA” [Электронный ресурс]. - https://habrahabr.ru/post/200354/
8) Статья “Annotation Processing 101” из личного блога “Му life with android” Hannes Dorfmane [Электронный ресурс]. http://hannesdorfimann.com/annotation-processing/annotationprocessingl01
зз
9) Статья “THE 10-STEP GUIDE TO ANNOTATION PROCESSING IN ANDROID STUDIO” из блога “Stable|Kemel” [Электронный ресурс]. - http://blog.stablekemel.com/the-10-step-guide-to-annotation-processing-in-android -studio
10) Статья “Введение в Java Reflection API” [Электронный ресурс]. - http://www.quizful.net/post/java-reflection-api