Как да локализираме приложение за Android

Процесът на локализация често означава повече от просто намиране на вашето приложение за различни региони. Това включва и правилното за различните региони време, дата, формат на тяхното показване. Ако очаквате, че вашето приложение има шанс да достигне до широка международна аудитория, трябва незабавно да помислите за компетентна локализация на приложението, така че по-късно да не ровите в кода на цялата програма и да отделите много време за настройването му за различни региони на планетата.

Използвайки Android SDK, езикът на използваните локализирани низови ресурси и форматът/стойността на времето, както и датата автоматично ще се адаптират към региона и езиковата среда, в която устройството работи. Езикът е определен от ISO 639-1, страната е ISO 3166-1. Тоест, можем спокойно да кажем, че Android е съвместим с повечето страни по света (е, може би някои африкански племена не се броят:)) и езици.

Локализация на езика

Заслужава да се отбележи, че единственият език, който ще бъде представен на 100% на всяко устройство с Android, е американски английски, посочен с кода en_US. За да направите езиковото локализиране на вашето приложение, трябва да отидете в неговата папка res / инвестирайте допълнителни ресурси, които смятате за подходящи да добавите.

За да добавите алтернативни езици към приложението си, трябва да създадете папки в основната res/папка, като им дадете имена като: res/стойности- или res/values- -r . Струва си да се отбележи, че ако сте определили езикови настройки за определен регион, тогава когато се използват в приложения в този регион, те ще бъдат с приоритет, тоест по подразбиране те ще бъдат по-"важни" за приложението и ще бъдат приложени първо. Над техния приоритет могат да бъдат само т.нар мобилен код на страната MCC. Кодът на мобилната държава (определен с помощта на мобилния код на MNC мрежата от SIM картата) определя преференциалните ресурси за дадена държава.

Така че нека се научим как да създадем локализация на езика. Създайте ново приложение или отворете приложение, което не е твърде сложно за вас. Поставихме задачата да локализираме нашето приложение за рускоезични региони и англоговорящи. За настройки Руски език, ние просто използваме съществуващата папка res/values ​​/ strings.xml и създайте низовите ресурси, от които се нуждаем толкова много. За Английски същия език, създайте подпапка / values-en в папката res / ресурси и създайте следния файл с адрес: res/values-en/strings.xml. В този файл, който създадохме, ще добавим английски низови ресурси. Как трябва да изглежда кодът:

За файл с руски езикови ресурси res/values ​​/ strings.xml:

За английски файл за локализация res/values-en/strings.xml ресурсите ще бъдат както следва:

Всичко е готово, сега, когато стартира в англоговоряща държава, програмата автоматично ще използва ресурси от папката res/values-en/strings.xml и покажете английски текст.

Заслужава да се отбележи, че за да може този механизъм за локализация на езика да работи правилно във вашите приложения, са ви необходими програмни елементи, които използват текст, например при конфигуриране android: text = " за обектите присвояването на текст към тях не е просто писане на дума, като android: text = "Здравей, свят!", и връзка към генерирания съответния низ ресурс: android: text = "@ string/hellow_world".

Ако искате да извършите локализация на низове в самия програмен код, ако това не е направено във файла layout.xml или други подобни файлове за маркиране на интерфейса, след което, за да локализирате такива низове, трябва да извикате обекта в кода android.content.res.Resourses, който съдържа всички ресурси в пакета на приложението и от тук използвайте метода за достъп до необходимия ресурс get.String. Ето как да локализираме нашия „Хело свят!“ по този начин:

Има и друг начин да локализирате низовите ресурси на вашето приложение. Това е съвсем просто, най-простото от всичко, което е било и ще бъде казано тук, но работи по същия начин. Така че, когато работите върху приложението си в маркиращи файлове като Activity_main.xml, тогава можете да настроите локализация на езика точно тук, без да редактирате ресурсни файлове. Няма значение в какъв режим сте, Текст или Дизайн, намираме следния бутон на панела:

Натискаме го, избираме първия елемент - Добавяне на превод, и пред нас се появява прозорец, където се предлага да изберете езика, който ви е необходим за локализация. Намерете желания език от списъка, щракнете върху него и ще видите нов прозорец:

Както можете да видите, в таблицата има 3 колони: Ключ, Defuolt, Руски (ru) (защото избрах руски за локализация). Първият показва низовите ресурси, които имаме във файла res/values ​​/ strings.xml, във втория - стойността им в същия файл res/values ​​/ strings.xml, Е, третият прозорец ще ни позволи да въведем превода на всички съществуващи низови ресурси тук. Въведете желания превод, щракнете върху OK. Виждаме, че файлът се е отворил ru \ string.xml, което означава, че самата програма е създала необходимата папка за локализация на руски език. Всичко е готово!

Локализация на час и дата

Много приложения трябва да работят с текущия час и дата. Представете си огорчението на вашите потребители, които първоначално бяха толкова зарадвани от наличието на езикова локализация, че вече бяха готови да закупят пълната версия на програмата, а ето ви - вашата програма поздравява жител на Камчатка за Нова година ден по-късно, отколкото беше необходимо. Това е всичко, сбогом потребителю! Следователно локализацията на часа и датата, както можете да видите, също е важен въпрос и Android SDK има инструменти за настройка на съответствието на датата и часа с местоположението на устройството.

Локализация на датата

Настройката за локализация на датата може да се направи с класа Формат на датата в пространство от имена android.text.format. Следният кодов фрагмент показва как да получите низ със стойност на датата, форматирана за локализацията на устройството:

Ако текущото местоположение на устройството е например САЩ, местният формат за дата ще бъде показан като 29.11.2014. Клас Формат на датата други формати за дати могат да бъдат персонализирани. Ако вместо командата getDateFormat изпълни например, getLongDateFormat, тогава получаваме датата по следния начин: Понеделник, 29 декември 2014 г..

Локализация на времето

Тъй като времето е представено в Android SDK като Дата обекти, той също може да се конфигурира от класа Формат на датата в пространство от имена android.text.format. Тук всичко се прави приблизително по същия начин, както при определяне на датата, като се използва същия метод. Вижте кода:

Това е всичко, научихме как да локализираме напълно нашето приложение, остава само да напишем приложение, което ще завладее жителите на всички континенти:).