Чем больше поддерживаемых языков в вашем приложении, тем больше целевая аудитория. Не каждый у нас знает английский, точно так же обстоят дела и во многих других странах, поэтому наличие локализированной версии будет выгодно отличать ваше приложение от приложений конкурентов.
В 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});
А насколько сложно будет русифицировать саму WebOS? Чтобы можно было не только читать, но и писать по русски, используя, например, раскладку ЯВЕРТЫ. Судя по всему, некоторые буквы придется вешать по две-три на одну клавишу, как в Palm Treo.
Я думаю, что пока наверное никак. В эмуляторе по крайней мере нет поддержки русского. Теоретически, должны быть кастомные сборки вебоси, мне один гражданин на Хабре говорил что есть, может если сделать кстомную сборку, то можно туда вставить и поддержку русского.
С другой же стороны, можно по SSH соединиться с эмулятором и поковыряться на предмет файлов локализации, они там скорее всего должны быть. Выковырять оттуда файл с английской локалью и подправить, потом зарегистрировать русский язык на устройстве ну и положить туда файл с локалью. В общем, надо пробовать.