BlackBerry - поддержка языков для китайского - PullRequest
1 голос
/ 17 января 2012

Я локализовал свое приложение, добавив правильные файлы ресурсов для различных европейских языков / диалектов.

В моем проекте есть необходимая папка: ./res/com/demo/localization

Содержит необходимые файлы, например, Demo.rrh, Demo.rrc, Demo_de.rrc и т. Д.

Я хочу добавить поддержку двух китайских диалектов, и у меня есть переводы в файле Excel. На iPhone они называются кодами zh_TW & zh_CM . Следуя шаблону с немецким языком, я создал 2 дополнительных файла с именем Demo_zh_TW.rrc & Demo_zh_CN.rrc.

Я открыл файл Demo_zh_CN.rrc с помощью текстового редактора Eclipse и вставил строку китайского перевода с использованием обычного формата файла ресурсов:

  • START_LOCATION#0="开始位置";

Когда я попытался сохранить файл, я получил сообщение об ошибке Eclipse относительно кодировки символов Cp1252:

Сохранить не удалось.

Причина: Некоторые символы не могут быть сопоставлены с использованием кодировки символов «Cp1252». Измените кодировку или удалите символы, которые не являются поддерживается кодировкой символов "Cp1252".

Кажется, редактор Eclipse будет принимать китайские символы, но инструмент ресурсов ожидает, что эти символы должны быть сохранены в файле ресурсов как кодировка Java Unicode / u.


Как добавить языковую поддержку для этих 2 регионов, не копируя вручную n вставки в каждую строку?

Может быть, есть инструмент, который я могу использовать для кодирования строк из Excel в Java Unicode / u, чтобы они могли быть сохранены только в кодовой странице 1252 только латинскими буквами?

Ответы [ 3 ]

1 голос
/ 18 января 2012

Мне неизвестны какие-либо доступные инструменты для работы со специфическим стилем локализации BlackBerry.

Вот фрагмент кода Java-SE, который я использую для преобразования строк UTF-8, которые я получаю для использования с BlackBerry:

private static String unicodeEscape(String value, CharsetEncoder encoder) {
    StringBuilder sb = new StringBuilder();
    for(char c : value.toCharArray()) {
        if(encoder.canEncode(c)) {
            sb.append(c);
        } else {
            sb.append("\\u");
            sb.append(hex4(c));
        }
    }
    return sb.toString();
}

private static String hex4(char c) {
    String ret = Integer.toHexString(c);
    while(ret.length() < 4) {
        ret = "0" + ret;
    }
    return ret;
}

Вызовите unicodeEscape с кодировщиком 8859-1 с Charset.forName("ISO-8859-1").newEncoder()

0 голосов
/ 17 января 2012

Это проблема с кодировкой вашего файла ресурсов. 1252 Кодовая страница содержит только латинские символы.

Я никогда не работал с Eclipse, но должно быть где-то, где вы указываете кодировку файла, вы должны установить кодировку по умолчанию для файлов в UTF-8 если возможно.Это будет обрабатывать ваши китайские иероглифы.

Вы также можете использовать хороший редактор, такой как Notepad ++ или EMEditor , чтобы установить кодировку вашего файла.

См. здесь о том, как вы можете настроить Eclipse для использования UTF-8 по умолчанию.

0 голосов
/ 17 января 2012

Я предлагаю вам взглянуть на текстовый дисплей Blackberry хинди и гуджарати

Вам нужно использовать редактор ресурсов, чтобы сделать эти файлы с правильной кодировкой. Eclipse автоматически уберет персонажей.

...