СПОСОБЫ ЛОКАЛИЗАЦИИ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ ДЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ ANDROID НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ KOTLIN, НА ПРИМЕРЕ QIZ-APPLICATION

Научная статья
DOI:
https://doi.org/10.23670/IRJ.2023.132.92
Выпуск: № 6 (132), 2023
Предложена:
02.05.2023
Принята:
01.06.2023
Опубликована:
16.06.2023
683
3
XML
PDF

Аннотация

Благодаря быстрому развитию ИТ-сервисов и не менее быстрому развитию мобильных приложений, все чаще разработчики сталкиваются с ситуацией, когда мобильное приложение должно работать на территории сразу нескольких стран. Часто с этим возникают трудности. Как правило, разные страны имеют разные языковые и культурные особенности, правила правописания, часовой пояс. В этой статье представлен разработанный способ локализации мобильного приложения для операционной системой Android, с использованием классов, интерфейсов и объектов, написанных на языке программирования Kotlin и приведен способ локализации с применением строковых ресурсов. Оба способа продемонстрированы на примере разработанного QIZ-application. Описанные способы позволят локализировать мобильное приложение, чтобы сделать его многонациональным и многоязычным.

1. Введение

На сегодняшний день все больше разработчиков нацелены на интегрирование своих приложений по всему миру, в связи с чем, необходимость локализации только растет. Выбранная тема является актуальной еще и по причине того, что строковые ресурсы не используются повсеместно (во всех языках программирования), а реализация при помощи объектов – открывает широкие возможности на любом из них.

Цель данной работы заключается в разработке и применении нестандартного, уникального и более понятного для чтения метода локализации приложения в среде разработки Android Studio на языке программирования Kotlin.

Достижение цели было осуществлено путем решения следующих задач:

1. Анализа стандартного метода локализации с использованием Open Translations Editor;

2. Описания локализации с применением классов и интерфейсов;

3. Сравнения и выявления наиболее удобного и корректного метода локализации приложения.

Язык программирования Kotlin, который использовался для локализации Qiz-application является языком среднего уровня

. Ему присущи ограничения на прямой доступ к памяти, сильная статическая типизация, абстракция и наличие промежуточной среды выполнения
. Философия языка Kotlin твердо опирается на потребности промышленного программирования – быстрая разработка, надежность
,
.

В данной работе использовалась среда разработки Android Studio

и установленный в нее эмулятор мобильного устройства, для проверки работы приложения в режиме реального времени. Примененная среда поддерживает несколько языков программирования.

Как было описано ранее, локализация приложения важна и необходима для его использования в нескольких странах. Для увеличения числа пользователей мобильного приложения и масштабирования его на мировом рынке важно программно прописать его локализацию

.

2. Основные результаты

В результате была реализована программная локализации мобильного приложения, с применением классов, интерфейсов и объектов, разработанных по основным принципам языка программирования Kotlin

. Перечисленные компоненты написанные на Kotlin были разработаны и созданы следующие объекты:

1. interface Quiz, у которого в качестве параметров был объявлен список вопросов:

interface Quiz {

val questions: List<Question>

}

2. class Question, в качестве параметров прописали список вопросов, список ответов и сам вопрос в строковом представлении:

class Question(

val question:String,

val answers:List<String>,

val feedback:List<String>,

)

3. enum class Locale, создан для перечисления всех языков, которые поддерживаются в разработанном мобильном приложении:

enum class Locale {

En, Ru

}

4. object QuizStorage, в котором была объявлена функция получения вопросов, ответов и фидбэка:

private val quizEn = object : Quiz {

override val questions: List<Question> = listOf(

Question(

question = "How are you feeling?",

answers = listOf(

"Bad",

"Normal",

"Good",

"Wonderful",

),

feedback = listOf(

"You are like a squeezed lemon today.",

"You are not much, but it is been worse.",

"You are in a good mood today.",

"You are in a great mood.",

),

) ....

)

}

исходя из выбранного пользователем языка для приложения:

fun getQuiz(locale: Locale): Quiz = when (locale) {

Locale.En -> quizEn

Locale.Ru -> quizRu

}

Самому объекту был прописан контент на русском и на английском языке, который демонстрировался пользователю, в зависимости от его выбора.

5. После выбора нужного языка происходило его получение:

Locale.getDefault().country.toString().

6. Далее был прописан код таким образом, чтобы по результату полученного ответа вызывалась соответствующая версия компонентов в приложении:

private val questionsList = if

(Locale.getDefault().country.toString() == "RU"){

QuizStorage.getQuiz(QuizStorage.Locale.Ru)

} else{

QuizStorage.getQuiz(QuizStorage.Locale.En)

}

Весь код структурирован и отвечает всем требованиям наследования и реализации

.

Так же в результате разработки мобильного приложения был программно применен существующий способ локализации приложения. Его суть заключается в создании файлов со строковыми ресурсами под нужный язык с использованием Open Translations Editor

,
. В данном варианте есть некоторая особенность – это обязательное создание файла, который будет использован по умолчанию (в разработанном приложении это файл на английском языке), на случай если программа не найдет в своих файлах нужного языка для пользователя. В таком случае программой будет использован файл по умолчанию.

Частичный листинг строкового ресурса для английской локализации приложения, выбранной по умолчанию:

<resources xmlns:tools="http://schemas.android.com/tools">

<string name="app_name">HAU</string>

<string name="action_settings">Settings</string>

<!-- Strings used for fragments for navigation -->

<string name="first_fragment_label">First Fragment</string>

<string name="second_fragment_label">Second Fragment</string>

<string name="next">Next</string>

<string name="share_thoughts">Share thoughts</string>

<string name="back">back</string>

<string name="forth">forth</string>

<string name="share">share</string> ....

Программно в коде на экранах приложения было прописано обращение к строковым ресурсам с использованием, заранее подключенного в файле сборки проекта, расширения на использование binding. Строковые значения были присвоены view-компонентам внутри функции override fun onCreateView(), передав в качестве параметров несколько значений:

inflater: LayoutInflater,

container: ViewGroup?,

savedInstanceState: Bundle?

Значения view-компонентам, демонстрирующим список вопросов, были присвоены следующим образом:

binding.question1.text = resources.getString(R.string.question_1)

binding.question2.text = resources.getString(R.string.question_2)

binding.question3.text = resources.getString(R.string.question_3)

Значения строковых ресурсов автоматически используются из файлов, в соответствии с указанным пользователем языком.

Аналогичным образом были присвоены значения для view-компонентов, разработанных для списков вариантов ответов и списка с feedback.

Разработанное приложение использует в своей конфигурации несколько экранов, наследуемых от класса Fragment(). В результате чего, для сохранения данных между экранами использовалась переменная bundle:

val bundle = Bundle().apply {

putString("param1", answer1)

putString("param2", answer2)

putString("param3", answer3)

putInt("param4", picture!!)

}

На практике был проведен анализ разработанного и существующего метода локализации для мобильных приложений. В результате к преимуществам разработанного метода можно отнести его простоту в понимании, даже для человека, который впервые видит данную структуру, не составит труда понять принцип действия и логику. Ко второму преимуществу можно отнести быстроту отклика при использовании разработки. Опытным путем было определено, что данный метод на основе классов, интерфейсов и объектов при локализации производил более быстрый отклик, что позволяет смартфону осуществлять перевод на язык пользователя бесшовно, то есть без видимых переходов.

К минусам разработанной технологии относится трудозатраты по написанию кода с использованием классов, интерфейсов и объектов. Для локализации с использованием Open Translations Editor достаточно единоразово использовать его в программном коде в то время как для написания вышеописанной методики необходимо около 70 строк кода. В сравнении с выявленными преимуществами разработанного метода, недостатки можно считать незначительными.

3. Заключение

В процессе разработки мобильного приложения для операционной системы Android, была проведена локализация Qiz-application, с целью применения разработанного ПО на международном рынке. Она производилась при помощи возможностей среды разработки Android studio, с использованием строковых ресурсов и программно, с применением классов, интерфейсов и объектов, написанных на языке программирования Kotlin. После выполнения описанных в статье действий и доработки мобильного приложения под конкретный случай и нужды пользователя, можно запускать мобильное приложения на устройствах в разных странах мира. Оно будет подстраиваться под выбранный пользователем язык и осуществлять плавный переход с одного языка на другой. Стоит упомянуть, что язык программирования, использованный в данной работе считается молодым и существует довольно мало обучающей информации на русском языке для программистов. Следовательно, данная работа помимо практического применения для разработанного Qiz-application, может служить обучающим пособием для русскоговорящих Android-разработчиков, что впоследствии поможет воспитать Android-разработчиков на языке программирования Kotlin и способствовать развитию сферы мобильной разработки в России.

Метрика статьи

Просмотров:683
Скачиваний:3
Просмотры
Всего:
Просмотров:683