Merge branch 'master' into 'master'

Moving hard-coded text to en-US.properties file

See merge request core-developers/forge!1537
This commit is contained in:
swordshine
2019-04-22 04:32:33 +00:00
14 changed files with 300 additions and 135 deletions

View File

@@ -894,7 +894,7 @@ public class VLobby implements ILobbyView {
final List<String> usedNames = getPlayerNames();
do {
newName = NameGenerator.getRandomName(gender, type, usedNames);
confirmMsg = localizer.getMessage("lblconfirmName").replace("%n","\"" +newName + "\"");
confirmMsg = localizer.getMessage("lblconfirmName").replace("%s","\"" +newName + "\"");
} while (!FOptionPane.showConfirmDialog(confirmMsg, title, localizer.getMessage("lblUseThisName"), localizer.getMessage("lblTryAgain"), true));
return newName;

View File

@@ -26,6 +26,7 @@ import forge.quest.bazaar.QuestItemType;
import forge.quest.bazaar.QuestPetController;
import forge.toolbox.FLabel;
import forge.toolbox.JXButtonPanel;
import forge.util.Localizer;
/**
* Controls the quest challenges submenu in the home UI.
@@ -73,7 +74,8 @@ public enum CSubmenuChallenges implements ICDoc {
new UiCommand() {
@Override
public void run() {
if (!QuestUtil.checkActiveQuest("Launch a Zeppelin.")) {
final Localizer localizer = Localizer.getInstance();
if (!QuestUtil.checkActiveQuest(localizer.getMessage("lblLaunchaZeppelin"))) {
return;
}
FModel.getQuest().getAchievements().setCurrentChallenges(null);
@@ -86,7 +88,8 @@ public enum CSubmenuChallenges implements ICDoc {
view.getCbPlant().addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent arg0) {
quest.selectPet(0, view.getCbPlant().isSelected() ? "Plant" : null);
final Localizer localizer = Localizer.getInstance();
quest.selectPet(0, view.getCbPlant().isSelected() ? localizer.getMessage("lblPlant") : null);
quest.save();
}
});
@@ -145,8 +148,8 @@ public enum CSubmenuChallenges implements ICDoc {
if (qCtrl.getAchievements() == null) {
return;
}
view.getLblTitle().setText("Challenges: " + qCtrl.getRank());
final Localizer localizer = Localizer.getInstance();
view.getLblTitle().setText(localizer.getMessage("lblChallenges") +": " + qCtrl.getRank());
view.getPnlChallenges().removeAll();
qCtrl.regenerateChallenges();
@@ -158,7 +161,7 @@ public enum CSubmenuChallenges implements ICDoc {
final JXButtonPanel grpPanel = new JXButtonPanel();
StringBuilder sb = new StringBuilder();
sb.append("Match - Best of ").append(FModel.getQuest().getMatchLength());
sb.append(localizer.getMessage("lblMatchBestof") + " ").append(FModel.getQuest().getMatchLength());
view.getCbxMatchLength().setSelectedItem(sb.toString());
boolean haveAnyChallenges = true;

View File

@@ -8,6 +8,7 @@ import forge.quest.QuestEventDuel;
import forge.quest.QuestUtil;
import forge.quest.bazaar.QuestPetController;
import forge.toolbox.JXButtonPanel;
import forge.util.Localizer;
import javax.swing.*;
import java.awt.event.*;
@@ -168,8 +169,8 @@ public enum CSubmenuDuels implements ICDoc {
final VSubmenuDuels view = VSubmenuDuels.SINGLETON_INSTANCE;
if (FModel.getQuest().getAchievements() != null) {
view.getLblTitle().setText("Duels: " + FModel.getQuest().getRank());
final Localizer localizer = Localizer.getInstance();
view.getLblTitle().setText(localizer.getMessage("lblDuels") + ": " + FModel.getQuest().getRank());
view.getPnlDuels().removeAll();
final List<QuestEventDuel> duels = FModel.getQuest().getDuelsManager().generateDuels();
@@ -196,7 +197,7 @@ public enum CSubmenuDuels implements ICDoc {
view.getPnlDuels().add(grpPanel, "w 100%!");
StringBuilder sb = new StringBuilder();
sb.append("Match - Best of ").append(FModel.getQuest().getMatchLength());
sb.append(localizer.getMessage("lblMatchBestof") + " ").append(FModel.getQuest().getMatchLength());
view.getCbxMatchLength().setSelectedItem(sb.toString());
}
}

View File

@@ -17,6 +17,7 @@ import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.QuestDataIO;
import forge.screens.bazaar.CBazaarUI;
import forge.toolbox.FOptionPane;
import forge.util.Localizer;
import javax.swing.*;
import java.io.File;
@@ -230,6 +231,7 @@ public enum CSubmenuQuestData implements ICDoc {
* The actuator for new quests.
*/
private void newQuest() {
final Localizer localizer = Localizer.getInstance();
final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
final int difficulty = view.getSelectedDifficulty();
@@ -250,7 +252,7 @@ public enum CSubmenuQuestData implements ICDoc {
case Casual:
case CustomFormat:
if (customFormatCodes.isEmpty()) {
if (!FOptionPane.showConfirmDialog("You have defined a custom format that doesn't contain any sets.\nThis will start a game without restriction.\n\nContinue?")) {
if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
return;
}
}
@@ -262,7 +264,7 @@ public enum CSubmenuQuestData implements ICDoc {
case Cube:
dckStartPool = view.getSelectedDeck();
if (null == dckStartPool) {
FOptionPane.showMessageDialog("You have not selected a deck to start.", "Cannot start a quest", FOptionPane.ERROR_ICON);
FOptionPane.showMessageDialog(localizer.getMessage("lbldckStartPool"), localizer.getMessage("lblCannotStartaQuest"), FOptionPane.ERROR_ICON);
return;
}
break;
@@ -296,7 +298,7 @@ public enum CSubmenuQuestData implements ICDoc {
sets.add(c.getKey().getEdition());
}
}
fmtPrizes = new GameFormat("From deck", sets, null);
fmtPrizes = new GameFormat(localizer.getMessage("lblFromDeck"), sets, null);
}
}
else {
@@ -307,7 +309,7 @@ public enum CSubmenuQuestData implements ICDoc {
case Casual:
case CustomFormat:
if (customPrizeFormatCodes.isEmpty()) {
if (!FOptionPane.showConfirmDialog("You have defined custom format as containing no sets.\nThis will choose all editions without restriction as prizes.\n\nContinue?")) {
if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
return;
}
}
@@ -325,17 +327,17 @@ public enum CSubmenuQuestData implements ICDoc {
String questName;
while (true) {
questName = FOptionPane.showInputDialog("Poets will remember your quest as:", "Quest Name");
questName = FOptionPane.showInputDialog(localizer.getMessage("MsgQuestNewName") + ":", localizer.getMessage("TitQuestNewName"));
if (questName == null) { return; }
questName = QuestUtil.cleanString(questName);
if (questName.isEmpty()) {
FOptionPane.showMessageDialog("Please specify a quest name.");
FOptionPane.showMessageDialog(localizer.getMessage("lblQuestNameEmpty"));
continue;
}
if (getAllQuests().get(questName + ".dat") != null) {
FOptionPane.showMessageDialog("A quest already exists with that name. Please pick another quest name.");
FOptionPane.showMessageDialog(localizer.getMessage("lblQuestExists"));
continue;
}
break;

View File

@@ -14,6 +14,7 @@ import forge.quest.QuestUtil;
import forge.quest.data.QuestPreferences.QPref;
import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.deckeditor.controllers.CEditorQuest;
import forge.util.Localizer;
/**
* Controls the quest decks submenu in the home UI.
@@ -55,10 +56,12 @@ public enum CSubmenuQuestDecks implements ICDoc {
*/
@Override
public void initialize() {
final Localizer localizer = Localizer.getInstance();
VSubmenuQuestDecks.SINGLETON_INSTANCE.getBtnNewDeck().setCommand(new UiCommand() {
@Override
public void run() {
if (!QuestUtil.checkActiveQuest("Create a Deck.")) {
if (!QuestUtil.checkActiveQuest(localizer.getMessage("lblCreateaDeck"))) {
return;
}
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_QUEST);

View File

@@ -8,6 +8,7 @@ import forge.gui.framework.ICDoc;
import forge.model.FModel;
import forge.quest.data.QuestPreferences;
import forge.screens.home.quest.VSubmenuQuestPrefs.PrefInput;
import forge.util.Localizer;
/**
* Controls the quest preferences submenu in the home UI.
@@ -52,8 +53,8 @@ public enum CSubmenuQuestPrefs implements ICDoc {
final Integer val = Ints.tryParse(i0.getText());
resetErrors();
final String validationError = val == null ? "Enter a number" : prefs.validatePreference(i0.getQPref(), val.intValue());
final Localizer localizer = Localizer.getInstance();
final String validationError = val == null ? localizer.getMessage("lblEnteraNumber") : prefs.validatePreference(i0.getQPref(), val.intValue());
if (validationError != null) {
showError(i0, validationError);
return;
@@ -66,7 +67,8 @@ public enum CSubmenuQuestPrefs implements ICDoc {
private static void showError(final PrefInput i0, final String s0) {
final VSubmenuQuestPrefs view = VSubmenuQuestPrefs.SINGLETON_INSTANCE;
final String s = "Save failed: " + s0;
final Localizer localizer = Localizer.getInstance();
final String s = localizer.getMessage("lblSavefailed") +":" + s0;
switch(i0.getErrType()) {
case BOOSTER:
view.getLblErrBooster().setVisible(true);

View File

@@ -5,6 +5,7 @@ import forge.game.GameFormat;
import forge.gui.SOverlayUtils;
import forge.model.FModel;
import forge.toolbox.*;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
@@ -19,7 +20,8 @@ public class DialogChooseFormats {
private Runnable okCallback;
private final List<FCheckBox> choices = new ArrayList<>();
private final FCheckBox cbWantReprints = new FCheckBox("Allow compatible reprints from other sets");
final Localizer localizer = Localizer.getInstance();
private final FCheckBox cbWantReprints = new FCheckBox(localizer.getMessage("cbWantReprints"));
public DialogChooseFormats(){
this(null);
@@ -56,12 +58,12 @@ public class DialogChooseFormats {
panel.setOpaque(false);
panel.setBackgroundTexture(FSkin.getIcon(FSkinProp.BG_TEXTURE));
panel.add(new FLabel.Builder().text("Choose formats").fontSize(18).build(), "center, span, wrap, gaptop 10");
panel.add(new FLabel.Builder().text(localizer.getMessage("lblChooseFormats")).fontSize(18).build(), "center, span, wrap, gaptop 10");
String constraints = "aligny top";
panel.add(makeCheckBoxList(sanctioned, "Sanctioned", true), constraints);
panel.add(makeCheckBoxList(casual, "Other", false), constraints);
panel.add(makeCheckBoxList(historic, "Historic", false), constraints);
panel.add(makeCheckBoxList(sanctioned, localizer.getMessage("lblSanctioned"), true), constraints);
panel.add(makeCheckBoxList(casual, localizer.getMessage("lblOther"), false), constraints);
panel.add(makeCheckBoxList(historic, localizer.getMessage("lblHistoric"), false), constraints);
final JPanel overlay = FOverlay.SINGLETON_INSTANCE.getPanel();
overlay.setLayout(new MigLayout("insets 0, gap 0, wrap, ax center, ay center"));
@@ -73,7 +75,7 @@ public class DialogChooseFormats {
}
};
FButton btnOk = new FButton("OK");
FButton btnOk = new FButton(localizer.getMessage("lblOk"));
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
@@ -82,7 +84,7 @@ public class DialogChooseFormats {
}
});
FButton btnCancel = new FButton("Cancel");
FButton btnCancel = new FButton(localizer.getMessage("lblCancel"));
btnCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

View File

@@ -6,6 +6,7 @@ import forge.card.MagicColor;
import forge.gui.SOverlayUtils;
import forge.quest.StartingPoolPreferences.PoolType;
import forge.toolbox.*;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
@@ -17,27 +18,27 @@ import java.util.List;
@SuppressWarnings("WeakerAccess")
public class DialogChoosePoolDistribution {
final Localizer localizer = Localizer.getInstance();
private final FPanel mainPanel = new FPanel(new MigLayout("insets 20, gap 25, center, wrap 2"));
private final FCheckBox cbxBlack = new FCheckBox("Black");
private final FCheckBox cbxBlue = new FCheckBox("Blue");
private final FCheckBox cbxGreen = new FCheckBox("Green");
private final FCheckBox cbxRed = new FCheckBox("Red");
private final FCheckBox cbxWhite = new FCheckBox("White");
private final FCheckBox cbxColorless = new FCheckBox("Colorless");
private final FCheckBox cbxArtifacts = new FCheckBox("Include Artifacts");
private final FCheckBox cbxBlack = new FCheckBox(localizer.getMessage("lblBlack"));
private final FCheckBox cbxBlue = new FCheckBox(localizer.getMessage("lblBlue"));
private final FCheckBox cbxGreen = new FCheckBox(localizer.getMessage("lblGreen"));
private final FCheckBox cbxRed = new FCheckBox(localizer.getMessage("lblRed"));
private final FCheckBox cbxWhite = new FCheckBox(localizer.getMessage("lblWhite"));
private final FCheckBox cbxColorless = new FCheckBox(localizer.getMessage("lblColorless"));
private final FCheckBox cbxArtifacts = new FCheckBox(localizer.getMessage("lblIncludeArtifacts"));
private final FRadioButton radBalanced = new FRadioButton("Balanced");
private final FRadioButton radRandom = new FRadioButton("True Random");
private final FRadioButton radSurpriseMe = new FRadioButton("Surprise Me");
private final FRadioButton radBoosters = new FRadioButton("Boosters");
private final FRadioButton radBalanced = new FRadioButton(localizer.getMessage("lblBalanced"));
private final FRadioButton radRandom = new FRadioButton(localizer.getMessage("lblTrueRandom"));
private final FRadioButton radSurpriseMe = new FRadioButton(localizer.getMessage("lblSurpriseMe"));
private final FRadioButton radBoosters = new FRadioButton(localizer.getMessage("lblBoosters"));
private final ButtonGroup poolTypeButtonGroup = new ButtonGroup();
private final FTextField numberOfBoostersField = new FTextField.Builder().text("0").maxLength(10).build();
private final FButton btnOk = new FButton("OK");
private final FButton btnOk = new FButton(localizer.getMessage("lblOk"));
private Runnable callback;
@@ -100,7 +101,7 @@ public class DialogChoosePoolDistribution {
final FPanel right = new FPanel(new MigLayout(contentPanelConstraints));
right.setOpaque(false);
final FLabel clearColors = new FLabel.Builder().text("Clear All").fontSize(12).opaque(true).hoverable(true).build();
final FLabel clearColors = new FLabel.Builder().text(localizer.getMessage("lblClearAll")).fontSize(12).opaque(true).hoverable(true).build();
clearColors.setCommand(new UiCommand() {
@Override
public void run() {
@@ -113,9 +114,9 @@ public class DialogChoosePoolDistribution {
}
});
final FLabel boosterPackLabel = new FLabel.Builder().text("Number of Boosters:").fontSize(14).build();
final FLabel colorsLabel = new FLabel.Builder().text("Colors").fontSize(18).build();
final FTextPane noSettingsText = new FTextPane("No settings are available for this selection.");
final FLabel boosterPackLabel = new FLabel.Builder().text(localizer.getMessage("lblNumberofBoosters") + ":").fontSize(14).build();
final FLabel colorsLabel = new FLabel.Builder().text(localizer.getMessage("lblColors")).fontSize(18).build();
final FTextPane noSettingsText = new FTextPane(localizer.getMessage("lblnoSettings"));
if (radBoosters.isSelected()) {
right.add(boosterPackLabel, "gaptop 10");
@@ -139,7 +140,7 @@ public class DialogChoosePoolDistribution {
//Left Side
final FPanel left = new FPanel(new MigLayout(contentPanelConstraints));
left.setOpaque(false);
left.add(new FLabel.Builder().text("Distribution").fontSize(18).build(), "gaptop 10");
left.add(new FLabel.Builder().text(localizer.getMessage("lblDistribution")).fontSize(18).build(), "gaptop 10");
final JXButtonPanel poolTypePanel = new JXButtonPanel();
final String radioConstraints = "h 25px!, gaptop 5";
@@ -149,7 +150,7 @@ public class DialogChoosePoolDistribution {
poolTypePanel.add(radBoosters, radioConstraints);
left.add(poolTypePanel, "gaptop 15");
left.add(new FTextPane("Hover over each item for a more detailed description."), "gaptop 20");
left.add(new FTextPane(localizer.getMessage("lblHoverforDescription")), "gaptop 20");
ActionListener radioButtonListener = new ActionListener() {
@Override
@@ -202,11 +203,11 @@ public class DialogChoosePoolDistribution {
cbxArtifacts.setVisible(!radSurpriseMe.isSelected() && !radBoosters.isSelected());
numberOfBoostersField.setVisible(radBoosters.isSelected());
radBalanced.setToolTipText("A \"Balanced\" distribution will provide a roughly equal number of cards in each selected color.");
radRandom.setToolTipText("A \"True Random\" distribution will be almost entirely randomly selected. This ignores any color selections.");
radSurpriseMe.setToolTipText("This is the same as a \"Balanced\" distribution, except the colors picked will be random and you will not be told what they are.");
radBoosters.setToolTipText("This ignores all color settings and instead generates a card pool out of a specified number of booster packs.");
cbxArtifacts.setToolTipText("When selected, artifacts will be included in your pool regardless of color selections. This mimics the old card pool behavior.");
radBalanced.setToolTipText(localizer.getMessage("lblradBalanced"));
radRandom.setToolTipText(localizer.getMessage("lblradRandom"));
radSurpriseMe.setToolTipText(localizer.getMessage("lblradSurpriseMe"));
radBoosters.setToolTipText(localizer.getMessage("lblradBoosters"));
cbxArtifacts.setToolTipText(localizer.getMessage("lblcbxArtifacts"));
radBalanced.addActionListener(radioButtonListener);
radRandom.addActionListener(radioButtonListener);
@@ -225,7 +226,7 @@ public class DialogChoosePoolDistribution {
}
});
FButton btnCancel = new FButton("Cancel");
FButton btnCancel = new FButton(localizer.getMessage("lblCancel"));
btnCancel.setCommand(new UiCommand() {
@Override
public void run() {

View File

@@ -7,6 +7,7 @@ import forge.gui.framework.EDocID;
import forge.quest.IVQuestStats;
import forge.screens.home.*;
import forge.toolbox.*;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
@@ -20,6 +21,7 @@ import java.awt.*;
public enum VSubmenuChallenges implements IVSubmenu<CSubmenuChallenges>, IVQuestStats {
/** */
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
// Fields used with interface IVDoc
private DragCell parentCell;

View File

@@ -8,9 +8,8 @@ import forge.interfaces.IButton;
import forge.quest.IVQuestStats;
import forge.screens.home.*;
import forge.toolbox.*;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import forge.util.Localizer;
import javax.swing.*;
import java.awt.*;

View File

@@ -17,8 +17,8 @@ import forge.screens.home.EMenuGroup;
import forge.screens.home.IVSubmenu;
import forge.screens.home.VHomeUI;
import forge.toolbox.*;
import forge.util.Localizer;
import forge.util.storage.IStorage;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import org.apache.commons.lang3.text.WordUtils;
@@ -50,7 +50,7 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
private final FLabel lblTitleNew = new FLabel.Builder().text(localizer.getMessage("lblStartanewQuest")).opaque(true).fontSize(16).build();
String str=new String( ForgeConstants.QUEST_SAVE_DIR.replace('\\', '/'));
private final FLabel lblOldQuests = new FLabel.Builder().text(localizer.getMessage("lblOldQuestData").replace("%n",str)).fontAlign(SwingConstants.CENTER).fontSize(12).build();
private final FLabel lblOldQuests = new FLabel.Builder().text(localizer.getMessage("lblOldQuestData").replace("%s",str)).fontAlign(SwingConstants.CENTER).fontSize(12).build();
private final QuestFileLister lstQuests = new QuestFileLister();
private final FScrollPane scrQuests = new FScrollPane(lstQuests, false);
private final JPanel pnlOptions = new JPanel();
@@ -72,10 +72,10 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
private final FLabel lblUnrestricted = new FLabel.Builder().text(localizer.getMessage("lblAllCardsAvailable")).build();
private final FLabel lblPreconDeck = new FLabel.Builder().text(localizer.getMessage("lblStarterEventdeck")).build();
private final FLabel lblPreconDeck = new FLabel.Builder().text(localizer.getMessage("lblStarterEventdeck") +":").build();
private final FComboBoxWrapper<String> cbxPreconDeck = new FComboBoxWrapper<>();
private final FLabel lblFormat = new FLabel.Builder().text(localizer.getMessage("lblSanctionedformat")).build();
private final FLabel lblFormat = new FLabel.Builder().text(localizer.getMessage("lblSanctionedformat") + "").build();
private final FComboBoxWrapper<GameFormat> cbxFormat = new FComboBoxWrapper<>();
private final FLabel lblCustomDeck = new FLabel.Builder().text(localizer.getMessage("lblCustomdeck")).build();