如何使用接口更改Java应用程序的语言?

时间:2014-03-10 18:35:31

标签: java interface localization

目前我在我的应用程序中使用了一个接口来处理所有需要的字符串。我从应用程序的任何地方访问接口(称为StringConstants)。界面以荷兰语设置所有字符串,但知道我还想添加语言切换选项(英语)。改变我正在使用的界面的诀窍是什么,或者我应该为我想使用的每种语言创建一个界面?

这是我目前使用的界面代码:

package constants;

public interface StringConstants {
    //LabyrintUI//
    public String APP_TITLE = "Labyrint";
    public String APP_VERSION = "Versie 1.0";
    public String MENU_TITLE = "Labyrint - Menu";
    public String MOEILIJKHEID1 = "Gemakkelijk";
    public String MOEILIJKHEID2 = "Normaal";
    public String MOEILIJKHEID3 = "Moeilijk";
    public String BTN_SPEEL_TITLE = "Speel";
    public String BTN_OPTIES_TITLE = "Opties";
    public String BTN_STOP_TITLE = "Stop";
    public String BTN_RESET_SCORES_TITLE = "Verwijder de highscores";
    public String BTN_SPELREGELS_TITLE = "Spelregels";
    public String BTN_OVER_TITLE = "Over";
    public String BTN_DEFAULT_SETTINGS_TERUG_ZETTEN_TITLE = "Standaardinstellingen terugzetten";
    public String BTN_OPSLAAN_TITLE = "Opslaan";
    public String LBL_MOEILIJKHEIDSGRAAD_TITLE = "Moeilijkheidsgraad";
    public String LBL_GELUID_TITLE = "Geluid";
    public String LBL_SCORES_TITLE = "Highscores";
    public String LBL_LAST_SCORE_TITLE = "Laatste score";
    public String MI_NIEUWSPEL_TITLE = "Nieuw spel";
    public String MI_NIEUWSPEL_TOOLTIP_TEXT = "Nieuw spel starten";
    public String MI_SPEEL_OF_PAUZE_TITLE_PAUSE = "Pauzeer";
    public String MI_SPEEL_OF_PAUZE_TOOLTIP_TEXT_PAUSE = "Pauzeer het huidig spel";
    public String MI_SPEEL_OF_PAUZE_TITLE_PLAY = "Speel";
    public String MI_SPEEL_OF_PAUZE_TOOLTIP_TEXT_PLAY = "Hervat het huidig spel";
    public String MI_STOPSPEL_TITLE = "Stop";
    public String MI_STOPSPEL_TOOLTIP_TEXT = "Stop het huidig spel";
    public String MI_GELUID_TITLE_OFF = "Geluid uit";
    public String MI_GELUID_TOOLTIP_TEXT_OFF = "Zet geluid uit";
    public String MI_GELUID_TITLE_ON = "Geluid aan";
    public String MI_GELUID_TOOLTIP_TEXT_ON = "Zet geluid aan";

    //BORD//
    public String VAK_BEGIN_VALUE = "BEGIN";
    public String VAK_LEEG_VALUE = "LEEG";
    public String VAK_MUUR_VALUE = "MUUR";
    public String VAK_LAVA_VALUE = "LAVA";
    public String VAK_DOORGANG_VALUE = "DOORGANG";
    public String VAK_EINDE_VALUE = "EINDE";

    //LINKERPANEEL//
    public String HIGHSCORE_NOT_FOUND_TEXT = "Nog geen highscore gevonden...";

    //DIALOGS//
    public String ABOUT_DIALOG_CONTENT = APP_TITLE + " is een app gemaakt door Vincent Devaux en Thibault Helsmoortel.";
    public String NIEUW_SPEL_DIALOG_TITLE = APP_TITLE + " - Nieuw spel";
    public String NIEUW_SPEL_DIALOG_CONTENT = "Weet u zeker dat u uw huidig spel wilt stoppen om een nieuw spel te beginnen?";
    public String STOP_SPEL_DIALOG_TITLE = APP_TITLE + " - Spel stoppen";
    public String STOP_DPEL_DIALOG_CONTENT = "Weet u zeker dat u uw huidig spel wilt stoppen?";
    public String SLUIT_APP_DIALOG_TITLE = APP_TITLE + " - Labyrint sluiten";
    public String SLUIT_APP_DIALOG_CONTENT = "Weet u zeker dat u het spel wilt verlaten?";
    public String SPELREGELS_DIALOG_TITLE = APP_TITLE + " - Spelregels";
    public String SPELREGELS_DIALOG_CONTENT = "Spelregels:" + "\n";
    public String SPELREGELS = "Doel van het spel: geraak met je speler zo snel mogelijk aan het einde." +
            "\n-Gebruik de doorgangen om je sneller door het labyrint te verplaatsen." +
            "\n-Zorg ervoor dat het spook je niet vangt." +
            "\n-Daag een vriend uit en verbeter zijn tijd.";
    public String BTN_JA_TITLE = "Ja";
    public String BTN_ANNULEREN_TITLE = "Annuleren";
    public String BTN_OK_TITLE = "Ok";
    public String VRAAG_SPELERNAAM_TITLE = APP_TITLE + " - Naam invoeren";
    public String VRAAG_SPELERNAAM_TIJD = "Je eindigde in ";
    public String VRAAG_SPELERNAAM_NAAM = "\nVul je naam in:";
    public String FOUTMELDING_LEZEN_SCORES = "Er is een fout opgetreden bij het lezen van de scores. ";
    public String FOUTMELDING_SCHRIJVEN_SCORES = "Er is een fout opgetreden bij het schrijven van de scores. ";
    public String GAME_OVER_DIALOG = "Game over!";
    public String SCORES_VERWIJDEREN_DIALOG_TITLE = APP_TITLE + " - Scores verwijderen";
    public String SCORES_VERWIJDEREN_DIALOG_CONTENT = "Weet je zeker dat je alle scores wilt verwijderen?\nAlle scores zullen verwijdert worden!";

    //PROPERTIES//
    public String INITIAL_USER_NAME = System.getProperty("user.name");
    public String FILE_SEPARATOR = System.getProperty("file.separator");
    public String LINE_SEPARATOR = System.getProperty("line.separator");
    public String KEYBOARD_FORMAT = System.getProperty("user.country.format");
    public String CUSTOM_PROPS_HEADLINE = "Customsettings";
    public String PROP_MOEILIJKHEIDSGRAAD = "moeilijkheidsgraad";
    public String PROP_GELUID = "geluid";
    public String SCORES_MAKKELIJK_HEADLINE = "Scores Makkelijk";
    public String SCORES_NORMAAL_HEADLINE = "Scores Normaal";
    public String SCORES_MOEILIJK_HEADLINE = "Scores Moeilijk";

    //ANDERE//
    public String FILE_DEFAULT_SETTINGS_PATH = "src" + FILE_SEPARATOR + "bestanden" + FILE_SEPARATOR + "settings" + FILE_SEPARATOR + "default.ini";
    public String FILE_CUSTOM_SETTINGS_PATH = "src" + FILE_SEPARATOR + "bestanden" + FILE_SEPARATOR + "settings" + FILE_SEPARATOR + "custom.ini";
}

2 个答案:

答案 0 :(得分:3)

为每种语言使用ResourceBundle和* .properties文件。

答案 1 :(得分:0)

请查看以下帖子,这可能对您有用。

Convert String to another locale in java

但使用i18n的更好方法是使用ResourseBoundle类的属性文件。

由于 萨蒂亚