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

В 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 *

P.

Palm поворачивается лицом к разработчикам и отменяет оплату в $50 за сабмит приложений!

Вот так оно бывает, нет худа без бобра. Сегодня получил чудесное письмо от Palm с таким вот текстом:

And we have one more program change that will benefit all developers. When we launched the developer program, we introduced a $50 per app fee to submit apps into our catalog. Effective immediately, we’re waiving this fee and refunding to all developers any $50 fees collected in the past. If you’re one such developer, you will see a credit in your PayPal account in the near future.

Из письма следует, что теперь для того чтобы запостить приложение в App Catalog не надо будет каждый раз платить $50 за проверку приложения! И еще ко всему они обещают вернуть деньги, которые разработчики уже потратили на сабмиты! Ну это прям праздник какой-то!

Теперь разработка для WebOS стала еще более реальна. Во-первых, инструментарий бесплатный, во-вторых, процесс попадания приложений в каталог очень-таки предсказуем, в отличии от App Store яблочной компании. Ну и в-третьих вот, меньше вложений требуется для того чтобы начать.

Ура, товарищи!

P.

Plug-In Development Kit (PDK) для Palm WebOS доступно для скачивания

Инструментарий для разработки native-приложений для Palm WebOS – Plug-In Development Kit (PDK) доступен для загрузки. PDK позволяет писать приложения для WebOS, используя C++ и OpenGL ES, а также разрабатывать компоненты WebOS-приложений на С++.
С выходом этого инструментария для разработчиков открывается ну просто немерянное поле для творчества. Ведь на C++ можно сделать кучу всего полезного, чего [еще] нельзя сделать средствами JavaScript. 3D-игры, например. И вобще игры с хорошей графикой. Я уже думаю над чем-то подобным.

В общем, Качаем PDK для Palm WebOS и знакомимся с официальной документацией.