Локализация приложений

Здесь выкладываются готовые статьи и рабочие исходники, решения каких-либо задач или советы

Локализация приложений

Сообщение Архивариус » 01 авг 2010, 13:46

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

В Palm webOS локализация происходит достаточно прозрачно. Никаких сверхъестественных знаний не требуется.

Локализация имени приложения, отображаемого в Launcher

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

Путь для размещения локализированных ресурсов определяется следующим образом:

  • В каталоге с проектом создается папка resources
  • В папке resources для каждого языка создается отдельная папка, в которой размещаются файлы локализации с соблюдением структуры каталогов.

К примеру, мы создали приложение следующим образом:

Код: Выделить всё
palm-generate -p "id=com.mobiledeveloper.localizableapp" -p "title=Localizable Application" LocalizableApplication
palm-generate -t new_scene -p "name=Main" LocalizaleApplication

Получаем appinfo.json такого вида:

Код: Выделить всё
{
 "id": "com.mobiledeveloper.localizableapplication",
 "version": "1.0.0",
 "vendor": "Mobile-Developer.ru",
 "type": "web",
 "main": "index.html",
 "title": "LocalizableApplication",
 "icon": "icon.png"
}

Теперь нам необходимо сделать локализацию. Для этого скопируем файл appinfo.json в /resources/es_us/appinfo.json и заменим текст файла на следующий:

Код: Выделить всё
{
 "id": "com.mobiledeveloper.localizableapplication",
 "version": "1.0.0",
 "vendor": "Mobile-Developer.ru",
 "type": "web",
 "main": "../../index.html",
 "title": "Translated Application",
 "icon": "../../icon.png"
}

В результате, при смене языка на испанский, получим такое в Launcher’е:

webos-localized-app-launcher.jpg
webos-localized-app-launcher.jpg (23.93 КБ) Просмотров: 1176


Локализация HTML-текста сцен

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

Допустим, у нас был файл /views/main/main-scene.html

Код: Выделить всё
<div class="row" style="padding-left: 5px;">
My<br />text <b>here</b>!
</div>

Для создания испанской локализации нам надо скопировать его в /resources/es_us/views/main/main-scene.html и заменить текст:

Код: Выделить всё
<div class="row" style="padding-left: 5px;">
Your<br />image <b>there</b>!
</div>

После смены языковых настроек в системе, мы увидим измененный текст.

Локализация строк в JavaScript

Все строки, для которых необходима локализация, должны быть размещены в функции $L():

Код: Выделить всё
$L("My text here");


Если по каким-то причинам не возможности использовать исходную строку в качестве ключа, значение ключа в словаре с переводом можно указать вручную.

Код: Выделить всё
$L("value":"Done", "key": "done_key");

Файл со словарем должен находиться непосредственно в каталоге с локализированными ресурсами и называться strings.json

Код: Выделить всё
{"My text here": "Mi texto aquí","done_key": "Listo",}

Файл со словарем должен иметь кодировку UTF-8 (без BOM). Если вы работаете в Eclipse, то, если не указать кодировку для файла и попытаться ввести неанглийские символы и сохранить файл, должно появиться сообщение об ошибке.

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

Например, английская версия строки может выглядеть так:

Код: Выделить всё
"Not enough memory to #{action} the file #{fname}."

…а финская так:
Код: Выделить всё
"Liian vähän muistia tiedoston #{fname} #{action}."

Чтобы правильно сделать локализацию подобных строк, нужно использовать метод interpolate():

Код: Выделить всё
var data={num:10};var localizedText = $L("You have #{num} messages").interpolate(data);

или класс Template

Код: Выделить всё
var template = new Template($L("You have #{num} messages"));var localizedText = template.evaluate({num: 10});

Скачать исходный код к статье.

Источник: http://mobile-developer.ru/webos/lokali ... alm-webos/
Если наш форум помог вам выбрать телевизор - напишите отзыв о покупке.
Архивариус

 
Сообщения: 3042
Зарегистрирован: 29 июл 2010, 20:22
Благодарил (а): 273 раз.
Поблагодарили: 352 раз.
Телевизор: LG 55UB950 24MT57S

Вернуться в Статьи, исходники и примеры



 


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1