Интернационализация JavaME (i18n) - PullRequest
3 голосов
/ 30 января 2009

У кого-нибудь есть знания по интернационализации с JavaME? Я ищу как можно больше информации, такой как примеры, опыт и, возможно, некоторые лучшие практики. Спасибо

Ответы [ 4 ]

3 голосов
/ 30 января 2009

Несколько мыслей. J2ME не поддерживает i18n, так как его поддержка API отсутствует (нельзя использовать пакеты ресурсов). Но мы можем сделать это в ограниченной степени. Вот что я узнал.

  1. Трудно, если не невозможно, поддерживать английский и говорить на китайском (типографские символы) для данного приложения J2ME. Но легче поддерживать английский и говорить по-испански (я забыл правильную номенклатуру, чтобы говорить о поддержке i18n, но вы поняли).
  2. Мы можем иметь все строки в одном классе конфигурации, так что вы можете поменять эту строку на разные языки.
  3. Мы можем получить текст / строки, загруженные с сервера при первом запуске приложения, и, таким образом, иметь возможность поменять их с сервера.
  4. Из-за разного размера экрана лучше всего работать с пользовательскими шрифтами, чтобы можно было писать код для расчета длины текста при его отображении. Это упростит поддержку нескольких языков.
  5. Ресурсы изображений также могут быть загружены с сервера на разных языках. Но я не думаю, что мы можем изменить значок мидлета, поэтому он должен быть общим.

Имея это в виду, можно разработать поддержку нескольких языков.

1 голос
/ 03 февраля 2009

См. Актуальную спецификацию для JavaME: http://www.jcp.org/en/jsr/detail?id=238

Последние телефоны Symbian должны поддерживать это.

Один очевидный совет - на самом деле попробовать приложение на локализованном телефоне: получите телефон из Швейцарии (он должен поддерживать не менее 4 языков), а другой - из Гонконга (с 3 разными версиями «китайский»). Возможно, стоит взглянуть и на Восточную Европу / бывшего СССР.

Когда фактические символы не являются вашими обычными ascii, вам нужно использовать TextBox или TextField, чтобы иметь локализованный собственный элемент управления на экране.

1 голос
/ 31 января 2009

Ответ Омемухаммеда - превосходное покрытие локализации в мобильном пространстве.

Мне нужно было только поддерживать EFIGS (английский, французский, итальянский, немецкий и испанский). Мы сохранили все строки в XML, имели пакет XML для каждого языка. Затем мы скомпилировали бы эти пакеты XML в проприетарные двоичные данные и имели возможность встраивать все 5 языков в сборку, иметь только один язык для сборки в случаях, когда размер приложения был ограничен, или загружать двоичный файл с сервера. 1003 *

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

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

0 голосов
/ 13 февраля 2009

Имейте в виду, что когда вы используете RTL (справа налево) языки, например арабский, вы должны инвертировать позиции почти всего на экране, как список будет выглядеть так на латинских языках

  • Элемент списка 1
  • Элемент списка 2
  • Элемент списка 3

но пули будут на другой стороне экрана на арабском языке (попытался сделать это здесь, но я не смог сгенерировать инвертированный список: P)

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

Что я обычно делаю, так это класс I18nManager, который хранит язык в startApp, и через этот класс я получаю все нужные мне строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...