LWUIT: проблема локализации - PullRequest
       8

LWUIT: проблема локализации

0 голосов
/ 02 августа 2011

Я сделал простую форму с одним textFeild и командой, я хочу иметь два языка: фарси и английский, чтобы я мог использовать их в соответствии со своими потребностями во время выполнения.

Я сделал несколько переводов с помощью ResourceEditor и сохранил их под именами English.res и Farsi.res, а затем добавил их в мои ресурсы.

Теперь у меня проблема с вызовом метода локализации, так как я понятия не имею, как это сделать ... Я опубликую свой код здесь, пожалуйста, исправьте меня.

Это мой код:

public class Midlet extends javax.microedition.midlet.MIDlet {

    private Hashtable locale;

    public void startApp() {
        Display.init(this);

        try {
            Resources res = Resources.open("/Lang.res");    
            //Lang.res is resource file where these languages are stored
            // using resoureEditor.
            locale = res.getL10N("English.res", "en");

           /* See text below. */
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        Form main = new Form((String) locale.get("FORM"));
        main.setLayout(new BoxLayout(BoxLayout.Y_AXIS));

        Label label = new Label((String) locale.get("NAME"));
        TextField tf1 = new TextField("");
        Button button = new Button((String) locale.get("OK"));

        main.addComponent(label);
        main.addComponent(tf1);
        main.addComponent(button);

        main.addCommand(new Command((String) locale.get("BACK")) {
            public void actionPerformed(ActionEvent evt) {}
        });
        main.show();
    }
    public void pauseApp() {}
    public void destroyApp(boolean unconditional) {}
}

А это мой англ.res:

#Export locale from the Theme Creator
#Tue Aug 02 19:35:55 IRDT 2011
FORM=form
OK=ok
BACK=back
NAME=name

Верны ли эти две строки в блоке try?

       Resources res = Resources.open("/Lang.res");    
       locale = res.getL10N("English.res", "en");

Lang.res - это файл ресурсов, в котором эти языки хранятся с помощью resoureEditor.

Что еще мне нужно сделать?

Я получаю исключение в первой строке. en - имя требуемой языковой локали, соответствующее столбцу значения в файле res.

Я все еще не уверен, правильно это или нет, но каков этот первый аргумент? Locale

1 Ответ

0 голосов
/ 22 февраля 2012

Я предлагаю использовать «Resource Editor» для создания ресурса L10N, он может быть синхронизирован с графическим интерфейсом, что облегчает выполнение этой задачи и ее легче получить в коде.

try {
        Constants.res = Resources.open("/Lang.res");
    } catch (Exception e){
        System.err.println("can't load resource file:" + e);
    }
Hashtable h = Constants.res.getL10N("English.res","en");
...