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

时间:2017-06-08 16:17:31

标签: codenameone

关于本地化,我研究了开发者指南,“本地化和国际化(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 个答案:

答案 0 :(得分:1)

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

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

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