首页 文章

没有(旧的或新的)Gui Builder的本地化?

提问于
浏览
1

关于本地化,我研究了开发人员指南,部分"Localization & Internationalization (L10N & I18N)",位于:https://www.codenameone.com/manual/misc-features.html

和这个视频:http://www.codenameone.com/how-do-i---localizetranslate-my-application-apply-i18nl10n-internationalizationlocalization-to-my-app.html

他们两个似乎都指的是旧的gui建造者 . 我正在编写一个新的应用程序,而不使用(旧的或新的)gui构建器,所以我的问题是我是否可以使用Codename One Designer中的Localization工具本地化我的应用程序 .

例如,请参阅此屏幕截图:
Localization in Codename One Designer

我有两个按钮,标签为“LOGIN-Button”和“SIGNUP-Button”,但它们不会自动翻译 . 我无法使用开发人员指南中建议的以下代码行,因为我没有引用“res”:

UIManager.getInstance().setBundle(res.getL10N("l10n", local));

我能够使用以下手动代码翻译我的应用程序 . 有没有办法在没有手动编码的情况下使用Codename One Designer中的Localization工具?

// LOCALIZATION
    // Retrive the device language (as an ISO 639 two letter code)
    String local = L10NManager.getInstance().getLanguage();
    Log.p("The device language is: " + local);

    //Creates the bundle that maps strings in the local language
    HashMap EnglishBundle = new HashMap<String, String>();
    EnglishBundle.put("LOGIN-Button", "LOG IN");
    EnglishBundle.put("SIGNUP-Button", "SIGN UP");
    EnglishBundle.put("@rtl", "false");

    HashMap ItalianBudle = new HashMap<String, String>();
    ItalianBudle.put("LOGIN-Button", "ENTRA");
    ItalianBudle.put("SIGNUP-Button", "REGISTRATI");
    ItalianBudle.put("@rtl", "false");

    switch (local) {
        case "it":
            UIManager.getInstance().setBundle(ItalianBudle);
            break;
        default:
            UIManager.getInstance().setBundle(EnglishBundle);
    }

1 回答

  • 1

    本地化工具与GUI构建器无关 . 它是设计工具的一部分,它还可以处理主题,多图像和其他功能,所有这些功能对于手持式应用程序和视觉应用程序一样有用 .

    该视频中唯一的GUI构建器特定功能是从GUI表单自动生成密钥 .

    由于本地化只是一个查找映射,因此您可以使用属性文件,而不必将数据保留在应用程序源中 .

相关问题