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

В 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 Application in Launcher

Локализируем 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});

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

Previous ArticleNext Article
Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

This post has 2 Comments

2
  1. А насколько сложно будет русифицировать саму WebOS? Чтобы можно было не только читать, но и писать по русски, используя, например, раскладку ЯВЕРТЫ. Судя по всему, некоторые буквы придется вешать по две-три на одну клавишу, как в Palm Treo.

  2. Я думаю, что пока наверное никак. В эмуляторе по крайней мере нет поддержки русского. Теоретически, должны быть кастомные сборки вебоси, мне один гражданин на Хабре говорил что есть, может если сделать кстомную сборку, то можно туда вставить и поддержку русского.

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Н.

Новые инструменты в Palm Mojo SDK 1.2

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

Новые утилиты это:

  • palm-log – позволяет выполнять просмотр журнала событий приложения
  • webOS Resource Manager (WORM) – позволяет отследить потребляемые ресурсы

palm-log

Эта утилита позволяет выводить сообщения, которые приложение пишет в журнал с помощью Logging API. Использование утилиты намного удобнее чем попытки прочитать сообщения из /var/log/messages вручную.

Синтаксис вызова
palm-log [опции] [идентификатор-приложения]
Доступные опции
-d, –device=device Указывает используемое устройство:

  • –device=tcp — эмулятор
    Внимание: Эмулятор в этом случая должен быть уже запущен.
  • –device=usb — устройство, подсоединенное с помощью USB
-l, –list Выводит список установленных приложений. Очень удобно если вы не помните идентификатор нужного приложения.
-f, –follow Продолжать выводить сообщения. При указании этой опции palm-log будет выводить сообщения до тех пор, пока вы не нажмете Ctrl+C для остановки.
–version Выводит версию palm-log.
–help Выводит справочную информацию.
Примеры использования

Вывести журнал сообщений для приложения:

palm-log com.example.app

Вывести список приложений:

palm-log -l

Вывести список приложений на устройстве:

palm-log -d usb -l
Пример вывода, который можно получить при использовании palm-log
$ palm-log -f com.palm.app.maps

connecting to device emulator

(96C3BC9CC41E8A2A440C265DEDB8FB048F35B30E:tcp:64640)

following logs for application com.palm.app.maps

[20090813-07:51:06.138630] info: loadRealPage: 452
[20090813-07:51:06.144874] info: palm system: true
[20090813-07:51:06.145419] info: prepare transition
[20090813-07:51:06.270742] info: =========> looking for palmInitFramework191_15

WebOS Resource Manager (WORM)

Эта чудесная утилита позволяет отследить количество HTML-объектов (DOM nodes) в вашем приложении. Это может быть очень удобным при поиске утечек памяти. Если после закрытия сцены или приложения у вас остались неудаленные DOM объекты, значит в приложении имеет место утечка памяти. Очень часто, например, утечки памяти могу возникнуть если не отключать обработчики событий при закрытии сцены.

WebOS Resource Manager GUI

Пример использования
palm-worm [идентификатор-приложения]
  • При закрытии сцен или уведомлений в приложении, количество используемой памяти должно возвратиться на уровень, который оно имело до открытия сцены или уведомления.
  • При закрытии приложения, объем выделенной приложением памяти должен вернуться в ноль.
С.

Скринкаст – Пишем “Hello World” для Palm webOS

Что-то такой длительный перерыв получился со скринкастами.

В этот раз видео будет о разработке для Palm webOS.

Что из видео можно узнать

  • Как установить все необходимое ПО для разработки
  • Настроить Eclipse для разработки webOS приложений
  • Создать минимальное приложение
  • Добавить новую форму в приложение
  • Написать обработчик нажатия кнопки

Описание последовательности действий:

  • Устанавливаем Apple Safari
  • Устанавливаем VirtualBox
  • Устанавливаем Java Runtime Environment
  • Устанавливаем webOS SDK
  • Распаковываем Eclipse
  • Запускаем Eclipse
  • В Help -> Install New Software добавляем URL для загрузки плагина, необходимого для разработки webOS приложений ( https://cdn.downloads.palm.com/sdkdownloads/1.1/eclipse-plugin/eclipse-3.4/site.xml )
  • Устанавливаем плагин
  • Создаем минимальное приложение
  • Запускаем webOS эмулятор
  • С помощью меню Run As… запускаем приложение в эмуляторе
  • Командой “palm-generate -t new_scene -p "name:First" HelloWorld” создаем новый view в приложении
  • Меняем шаблон нового view’а
  • Делаем так, чтобы новый view запускался при старте приложения
  • Дописываем обработчик нажатия кнопки
  • Дописываем метод инициализации view’а и привязываем в нем обработчик кнопки

Загрузки:

Внимание!!! Видео в разрешении 1280×800 – Смотреть лучше в полноэкранном режиме.