В 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’е:
Локализация 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/