diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java index 7d3f4e85653..6c237306774 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java @@ -894,7 +894,7 @@ public class VLobby implements ILobbyView { final List 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; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java index d422d8db4a2..5b0a3ad6750 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuChallenges.java @@ -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; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java index 3110c35131a..448f521e7e7 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuDuels.java @@ -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 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()); } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java index 8aa76293b55..6294c372932 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java @@ -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; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDecks.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDecks.java index 0a82eb7ca0d..cfa4e792c4d 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDecks.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestDecks.java @@ -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); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestPrefs.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestPrefs.java index d18cf775883..508982abb77 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestPrefs.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestPrefs.java @@ -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); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java index 378715b3a07..18806949fdc 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java @@ -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 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) { diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChoosePoolDistribution.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChoosePoolDistribution.java index e46e0e37420..3e851a280ae 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChoosePoolDistribution.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChoosePoolDistribution.java @@ -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() { diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java index abb6b6fb5fd..7a0c580adc4 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuChallenges.java @@ -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, IVQuestStats { /** */ SINGLETON_INSTANCE; + final Localizer localizer = Localizer.getInstance(); // Fields used with interface IVDoc private DragCell parentCell; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java index 6c5f9e37025..980a5f31894 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuDuels.java @@ -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.*; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java index d369998731f..0d5d380d163 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java @@ -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 { 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 { 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 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 cbxFormat = new FComboBoxWrapper<>(); private final FLabel lblCustomDeck = new FLabel.Builder().text(localizer.getMessage("lblCustomdeck")).build(); diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 53e298f7a5e..16f2b0b5724 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -13,8 +13,8 @@ btnDeleteWorkshopUI=Workshop-Layout zurücksetzen btnUserProfileUI=Öffne Benutzer-Verzeichnis btnContentDirectoryUI=Öffne Daten-Verzeichnis btnResetJavaFutureCompatibilityWarnings=Java-Kompatibilitätswarnung zurücksetzen -btnClearImageCache= Clear Image Cache -btnTokenPreviewer= Token Previewer +btnClearImageCache=Clear Image Cache +btnTokenPreviewer=Token Previewer btnCopyToClipboard=In Zwischenablage kopieren cbpSelectLanguage=Language nlSelectLanguage=Select Language (Excluded Game part. Still a work in progress) (RESTART REQUIRED) @@ -190,7 +190,7 @@ lblGameSettings=Spieleinstellungen lblHeaderConstructedMode=Sanctioned Format: Constructed lblGetNewRandomName=Get new random name lbltypeofName=What type of name do you want to generate? -lblconfirmName= Would you like to use the name %n, or try again? +lblconfirmName=Would you like to use the name %n, or try again? lblUseThisName=Use this name lblTryAgain=Try Again lblAddAPlayer=Add a Player @@ -206,7 +206,7 @@ lblSelectaCommanderDeck=Wähle Commanderdeck lblSelectaPlanarDeck=Wähle Weltendeck lblPlanarDeckEditor=Weltendeck-Editor lblSelectaVanguardAvatar=Wähle Vanguard-Avatar -lblVanguardAvatar= Vanguard avatar +lblVanguardAvatar=Vanguard avatar lblDeck=Deck lblSchemeDeck=Komplottdeck lblCommanderDeck=Commanderdeck @@ -303,7 +303,7 @@ lblSHORTCUT_MACRO_RECORD=Duell: Aktion-Abfolge-Makro aufnehmen lblSHORTCUT_MACRO_NEXT_ACTION=Duel: führe nächste Aktion im gespeicherten Makro aus lblSHORTCUT_CARD_ZOOM=Duell: Zoome ausgewählte Karte #VSubmenuDraft.java -lblBoosterDraft= Booster Draft +lblBoosterDraft=Booster Draft lblHeaderBoosterDraft=Sanctioned Format: Booster Draft lblPlayAnOpponent=Play an opponent lblPlayAll7opponents=Play all 7 opponents @@ -394,7 +394,7 @@ lblAllowDuplicateCards=Allow duplicate cards lblStartingPoolDistribution=Starting pool distribution lblChooseDistribution=Choose Distribution lblPrizedCards=Prized cards -lblAllCardsAvailableWin =All cards will be available to win. +lblAllCardsAvailableWin=All cards will be available to win. lblOnlySetsInStarting="Only sets in starting pool will be available. lblAllowUnlockAdEd=Allow unlock of additional editions lblEmbark=Embark! @@ -402,3 +402,53 @@ lblboxCompleteSet=You will start the quest with 4 of each card in the sets you h lblboxAllowDuplicates=When your starting pool is generated, duplicates of cards may be included. lblSameAsStartingPool=Same as starting pool lblNewLoadQuest=New / Load Quest +#CSubmenuQChallenges.java +lblLaunchaZeppelin=Launch a Zeppelin. +lblPlant=Plant +lblChallenges=Challenges +lblMatchBestof=Match - Best of +lblDuels=Duels +#CSubmenuQuestData.java +lblNotFormatDefined=You have defined custom format as containing no sets.\nThis will choose all editions without restriction as prizes.\n\nContinue? +lbldckStartPool=You have not selected a deck to start. +lblCannotStartaQuest=Cannot start a quest +lblFromDeck=From deck +MsgQuestNewName=Poets will remember your quest as +TitQuestNewName=Quest Name +lblQuestNameEmpty=Please specify a quest name. +lblQuestExists=A quest already exists with that name. Please pick another quest name. +#CSubmenuQuestDecks.java +lblCreateaDeck=Create a Deck. +#CSubmenuQuestPrefs.java +lblEnteraNumber=Enter a number +lblSavefailed=Save failed +#DialogChooseFormats.java +cbWantReprints=Allow compatible reprints from other sets +lblChooseFormats=Choose formats +lblSanctioned=Sanctioned +lblOther=Other +lblHistoric=Historic +lblCancel=Cancel +#DialogChoosePoolDistribution.java +lblBlack=Black +lblBlue=Blue +lblGreen=Green +lblRed=Red +lblWhite=White +lblColorless=Colorless +lblIncludeArtifacts=Include Artifacts +lblBalanced=Balanced +lblTrueRandom=True Random +lblSurpriseMe=Surprise Me +lblBoosters=Boosters +lblClearAll=Clear All +lblNumberofBoosters=Number of Boosters +lblColors=Colors +lblnoSettings=No settings are available for this selection. +lblDistribution=Distribution +lblHoverforDescription=Hover over each item for a more detailed description. +lblradBalanced=A "Balanced" distribution will provide a roughly equal number of cards in each selected color. +lblradRandom=A "True Random" distribution will be almost entirely randomly selected. This ignores any color selections. +lblradSurpriseMe=This is the same as a "Balanced" distribution, except the colors picked will be random and you will not be told what they are. +lblradBoosters=This ignores all color settings and instead generates a card pool out of a specified number of booster packs. +lblcbxArtifacts=When selected, artifacts will be included in your pool regardless of color selections. This mimics the old card pool behavior. diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 3dfad30422a..53588825670 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -190,7 +190,7 @@ lblGameSettings = Game Settings lblHeaderConstructedMode=Sanctioned Format: Constructed lblGetNewRandomName=Get new random name lbltypeofName=What type of name do you want to generate? -lblconfirmName= Would you like to use the name %n, or try again? +lblconfirmName= Would you like to use the name %s, or try again? lblUseThisName=Use this name lblTryAgain=Try Again lblAddAPlayer=Add a Player @@ -374,7 +374,7 @@ cbLaunchZeppelin=Launch Zeppelin #VSubmenuQuest.java lblQuestData=Quest Data lblStartanewQuest=Start a new Quest -lblOldQuestData=Old quest data? Put into %n and restart Forge. +lblOldQuestData=Old quest data? Put into %s and restart Forge. rbEasy=Easy rbMedium=Medium rbHard=Hard @@ -401,4 +401,54 @@ lblEmbark=Embark! lblboxCompleteSet=You will start the quest with 4 of each card in the sets you have selected. lblboxAllowDuplicates=When your starting pool is generated, duplicates of cards may be included. lblSameAsStartingPool=Same as starting pool -lblNewLoadQuest=New / Load Quest \ No newline at end of file +lblNewLoadQuest=New / Load Quest +#CSubmenuQChallenges.java +lblLaunchaZeppelin=Launch a Zeppelin. +lblPlant=Plant +lblChallenges=Challenges +lblMatchBestof=Match - Best of +lblDuels=Duels +#CSubmenuQuestData.java +lblNotFormatDefined=You have defined custom format as containing no sets.\nThis will choose all editions without restriction as prizes.\n\nContinue? +lbldckStartPool=You have not selected a deck to start. +lblCannotStartaQuest=Cannot start a quest +lblFromDeck=From deck +MsgQuestNewName=Poets will remember your quest as +TitQuestNewName=Quest Name +lblQuestNameEmpty=Please specify a quest name. +lblQuestExists=A quest already exists with that name. Please pick another quest name. +#CSubmenuQuestDecks.java +lblCreateaDeck=Create a Deck. +#CSubmenuQuestPrefs.java +lblEnteraNumber=Enter a number +lblSavefailed=Save failed +#DialogChooseFormats.java +cbWantReprints=Allow compatible reprints from other sets +lblChooseFormats=Choose formats +lblSanctioned=Sanctioned +lblOther=Other +lblHistoric=Historic +lblCancel=Cancel +#DialogChoosePoolDistribution.java +lblBlack=Black +lblBlue=Blue +lblGreen=Green +lblRed=Red +lblWhite=White +lblColorless=Colorless +lblIncludeArtifacts=Include Artifacts +lblBalanced=Balanced +lblTrueRandom=True Random +lblSurpriseMe=Surprise Me +lblBoosters=Boosters +lblClearAll=Clear All +lblNumberofBoosters=Number of Boosters +lblColors=Colors +lblnoSettings=No settings are available for this selection. +lblDistribution=Distribution +lblHoverforDescription=Hover over each item for a more detailed description. +lblradBalanced=A "Balanced" distribution will provide a roughly equal number of cards in each selected color. +lblradRandom=A "True Random" distribution will be almost entirely randomly selected. This ignores any color selections. +lblradSurpriseMe=This is the same as a "Balanced" distribution, except the colors picked will be random and you will not be told what they are. +lblradBoosters=This ignores all color settings and instead generates a card pool out of a specified number of booster packs. +lblcbxArtifacts=When selected, artifacts will be included in your pool regardless of color selections. This mimics the old card pool behavior. \ No newline at end of file diff --git a/forge-gui/res/languages/es-es.properties b/forge-gui/res/languages/es-es.properties index 14cb904cf41..2e8a61ad78c 100644 --- a/forge-gui/res/languages/es-es.properties +++ b/forge-gui/res/languages/es-es.properties @@ -13,11 +13,11 @@ btnDeleteWorkshopUI=Restablecer diseño del Workshop btnUserProfileUI=Abrir directorio de usuario btnContentDirectoryUI=Abrir directorio del contenido btnResetJavaFutureCompatibilityWarnings=Restablecer las advertencias de compatibilidad de Java -btnClearImageCache= -btnTokenPreviewer= -btnCopyToClipboard=Copy to Clipboard -cbpSelectLanguage=Language -nlSelectLanguage=Select Language (Excluded math part. Still a work in progress) (RESTART REQUIRED) +btnClearImageCache=Limpiar Caché de Imágenes +btnTokenPreviewer=Previsualizador de Fichas (Token) +btnCopyToClipboard=Copiar al portapapeles +cbpSelectLanguage=Idioma +nlSelectLanguage=Seleccionar idioma (excepto partida). Todavía un trabajo en progreso) (Es necesario reiniciar Forge) cbRemoveSmall=Eliminar Pequeñas Criaturas cbCardBased=Incluye la generación de mazo basado en tarjeta cbSingletons=Mode Singleton @@ -144,8 +144,8 @@ btnDownloadPics=Descargar todas las Cartas btnDownloadQuestImages=Descargar Imágenes del modo Quest btnDownloadAchievementImages=Descagar Imágenes de los Logros btnReportBug=Reportar un error -btnListImageData=Audit Card and Image Data -lblListImageData=Audit cards not implemented by Forge and missing card images +btnListImageData=Auditar Cartas y Datos de Imagen +lblListImageData=Audita cartas no implementadas por Forge e imágenes de cartas faltantes btnImportPictures=Importar Datos btnHowToPlay=Cómo jugar (Inglés) btnDownloadPrices=Descargar los precios de las cartas @@ -157,7 +157,7 @@ lblDownloadAchievementImages=Descarga imágenes de logros para que tus trofeos r lblDownloadPrices=Descargue la lista de precios actualizada para las tiendas de cartas del juego. lblYourVersionOfJavaIsTooOld=Su versión de Java es demasiado antigua para usar los descargadores de contenido. lblPleaseUpdateToTheLatestVersionOfJava=Por favor, actualice a la última versión de Java -lblYoureRunning=Estas corriendo +lblYoureRunning=Estas corriendo lblYouNeedAtLeastJavaVersion=Necesitas al menos la versión 1.8.0_101. lblImportPictures=Importar datos desde un directorio local. lblReportBug=¿Algo roto? @@ -264,10 +264,10 @@ lblDeckList=Lista del Mazo lblClose=Cerrar lblExitForge=Salir de Forge #ConstructedGameMenu.java -lblSelectAvatarFor=Select avatar for %s -lblRemoveSmallCreatures=Remove 1/1 and 0/X creatures in generated decks. -lblRemoveArtifacts=Remove artifact cards in generated decks. -PreventNonLandDuplicates=Prevent non-land duplicates in generated decks. +lblSelectAvatarFor=Seleccionar avatar para %s +lblRemoveSmallCreatures=Elimina 1/1 y 0 /X criaturas en los mazos generados. +lblRemoveArtifacts=Retira las tarjetas de artefactos en los mazos generados. +PreventNonLandDuplicates=Evitar que no se dupliquen las tierras en los mazos generadas. #PlayerPanel.java lblName=Nombre lblTeam=Equipo @@ -289,19 +289,19 @@ lblTotalDamageText=Puntos de daño disponibles: Desconocido lblAssignRemainingText=Distribuye los puntos de daño restantes entre las entidades letalmente heridas. lblLethal=Letal #KeyboardShortcuts.java -lblSHORTCUT_SHOWSTACK=Match: show stack panel -lblSHORTCUT_SHOWCOMBAT=Match: show combat panel -lblSHORTCUT_SHOWCONSOLE=Match: show console panel -lblSHORTCUT_SHOWDEV=Match: show dev panel -lblSHORTCUT_CONCEDE=Match: concede game -lblSHORTCUT_ENDTURN=Match: pass priority until EOT or next stack event -lblSHORTCUT_ALPHASTRIKE=Match: Alpha Strike (attack with all available) -lblSHORTCUT_SHOWTARGETING=Match: toggle targeting visual overlay -lblSHORTCUT_AUTOYIELD_ALWAYS_YES=Match: auto-yield ability on stack (Always Yes) -lblSHORTCUT_AUTOYIELD_ALWAYS_NO=Match: auto-yield ability on stack (Always No) -lblSHORTCUT_MACRO_RECORD=Match: record a macro sequence of actions -lblSHORTCUT_MACRO_NEXT_ACTION=Match: execute next action in a recorded macro -lblSHORTCUT_CARD_ZOOM=Match: zoom the currently selected card +lblSHORTCUT_SHOWSTACK=Partida: mostrar panel de pila +lblSHORTCUT_SHOWCOMBAT=Partida: mostrar panel de combate +lblSHORTCUT_SHOWCONSOLE=Partida: mostrar el panel de la consola +lblSHORTCUT_SHOWDEV=Partida: mostrar panel de desarrollo +lblSHORTCUT_CONCEDE=Partida: conceder juego +lblSHORTCUT_ENDTURN=Partida: pasa la prioridad hasta fin del turno o siguiente evento de pila +lblSHORTCUT_ALPHASTRIKE=Partida: Alpha Strike (ataque con todos los disponibles) +lblSHORTCUT_SHOWTARGETING=Partida: alternar la orientación visual de superposición +lblSHORTCUT_AUTOYIELD_ALWAYS_YES=Partida:ceder automaticamente en cada habilidad de la pila (Siempre Si) +lblSHORTCUT_AUTOYIELD_ALWAYS_NO=Partida:ceder automaticamente en cada habilidad de la pila (Siempre No) +lblSHORTCUT_MACRO_RECORD=Partida: Grabar una macro de secuencia de acciones +lblSHORTCUT_MACRO_NEXT_ACTION=Partida: Ejecutar siguiente acción en una macro grabada +lblSHORTCUT_CARD_ZOOM=Partida: hacer zoom en la carta seleccionada #VSubmenuDraft.java lblBoosterDraft=Booster Draft lblHeaderBoosterDraft=Formato sancionado: Booster Draft @@ -314,9 +314,9 @@ lblDraftText3=Luego, juega contra uno o todos los oponentes de la IA. lblNewBoosterDraftGame=Nuevo Booster Draft lblDraftDecks=Mazos de Draft #CSubmenuDraft.java -lblNoDeckSelected=No deck selected for human.\n(You may need to build a new deck) -lblNoDeck=No Deck -lblChooseDraftFormat=Choose Draft Format +lblNoDeckSelected=Ningún mazo seleccionado para humano.\n(Es posible que necesites construir un nuevo mazo) +lblNoDeck=No hay Mazo +lblChooseDraftFormat=Elige el Formato del Draft #VSubmenuSealed.java lblSealedDeck=Mazo Sellado lblSealedDecks=Mazos de Sellado @@ -361,44 +361,94 @@ lblMoJhoSto=MoJhoSto lblMoJhoStoDesc=Cada jugador tiene un mazo que contiene 60 tierras básicas y los avatares Momir Vig, Jhoira of the Ghitu, y Stonehewer Giant. #VSubmenuDuels.java lblQuestDuels=Duelos de Aventura -lblQuestModeDuels=Modo Quest: Duelos -lblSelectNextDuel=Select your next duel. -lblNoDuelDeck=Current deck hasn't been set yet. -lblNextChallengeNotYet=Next challenge in wins hasn't been set yet. -btnUnlockSets=Unlock Sets -btnTravel=Travel -btnBazaar=Bazaar -btnSpellShop=Spell Shop -cbSummonPlant=Summon Plant -cbLaunchZeppelin=Launch Zeppelin +lblQuestModeDuels=Modo Aventura: Duelos +lblSelectNextDuel=Selecciona tu próximo duelo. +lblNoDuelDeck=No se ha establecido todavía el mazo actual. +lblNextChallengeNotYet=El próximo desafío en victorias aún no se ha establecido. +btnUnlockSets=Desbloquear Sets +btnTravel=Viajar +btnBazaar=Bazar +btnSpellShop=Tienda de Hechizos +cbSummonPlant=Invocar Planta +cbLaunchZeppelin=Lanzar Zeppelin #VSubmenuQuest.java -lblQuestData=Quest Data -lblStartanewQuest=Start a new Quest -lblOldQuestData=Old quest data? Put into %n and restart Forge. -rbEasy=Easy -rbMedium=Medium -rbHard=Hard -rbExpert=Expert -rbFantasyMode=Fantasy Mode -rbCommanderSubformat=Commander Subformat -lblStartingWorld=Starting World -lblStartingPool=Starting Pool -lblAllCardsAvailable=All cards will be available to play. -lblStarterEventdeck=Starter/Event deck: -lblSanctionedformat=Sanctioned format: -lblCustomdeck=Custom deck -lblDefineCustomFormat=Define custom format -lblSelectFormat=Select format -lblStartWithAllCards=Start with all cards in selected sets -lblAllowDuplicateCards=Allow duplicate cards -lblStartingPoolDistribution=Starting pool distribution -lblChooseDistribution=Choose Distribution -lblPrizedCards=Prized cards -lblAllCardsAvailableWin=All cards will be available to win. -lblOnlySetsInStarting="Only sets in starting pool will be available. -lblAllowUnlockAdEd=Allow unlock of additional editions -lblEmbark=Embark! -lblboxCompleteSet=You will start the quest with 4 of each card in the sets you have selected. -lblboxAllowDuplicates=When your starting pool is generated, duplicates of cards may be included. -lblSameAsStartingPool=Same as starting pool -lblNewLoadQuest=New / Load Quest +lblQuestData=Datos de Aventura +lblStartanewQuest=Comenzar una nueva Aventura +lblOldQuestData=Viejos datos de Aventura? Poner en %n y reiniciar Forge. +rbEasy=Fácil +rbMedium=Medio +rbHard=Difícil +rbExpert=Experto +rbFantasyMode=Modo Fantasía +rbCommanderSubformat=Subformato Commander +lblStartingWorld=Mundo de partida +lblStartingPool=Pool inicial +lblAllCardsAvailable=Todas las cartas estarán disponibles para jugar. +lblStarterEventdeck=Mazo de Inicio/Evento +lblSanctionedformat=Formato Sancionado +lblCustomdeck=Mazo Personalizado +lblDefineCustomFormat=Define mazo personalizado +lblSelectFormat=Selecciona formato +lblStartWithAllCards=Comienza con todas las cartas en set seleccionados +lblAllowDuplicateCards=Permitir cartas duplicadas +lblStartingPoolDistribution=Distribución inicial de la Pool +lblChooseDistribution=Elige Distribución +lblPrizedCards=Cartas Valiosas +lblAllCardsAvailableWin=Todas las cartas estarán disponibles para ganar. +lblOnlySetsInStarting=Solo los sets del pool inicial estarán disponibles. +lblAllowUnlockAdEd=Permite desbloquear ediciones adicionales. +lblEmbark=¡Embarcarse! +lblboxCompleteSet=Comenzarás la aventura con 4 copias de cada carta en los sets que hayas seleccionado. +lblboxAllowDuplicates=Cuando tu pool inicial se genera, se puede incluir duplicados de cartas. +lblSameAsStartingPool=Igual que el pool inicial +lblNewLoadQuest=Nueva/Cargar Aventura +#CSubmenuQChallenges.java +lblLaunchaZeppelin=Lanzar el Zeppelin. +lblPlant=Planta +lblChallenges=Desafíos +lblMatchBestof=Partida - Mejor de +lblDuels=Duelos +#CSubmenuQuestData.java +lblNotFormatDefined=Ha definido el formato personalizado sin sets\n Esto elegirá todas las ediciones sin restricción como premios. \n\n¿Continuar? +lbldckStartPool=No has seleccionado un mazo para empezar. +lblCannotStartaQuest=No se puede iniciar la aventura. +lblFromDeck=Desde el mazo +MsgQuestNewName=Los poetas recordarán tu aventura como +TitQuestNewName=Nombre Aventura +lblQuestNameEmpty=Por favor,especifica un nombre para la aventura. +lblQuestExists=Ya existe una aventura con ese nombre. Por favor, elija otro nombre de aventura. +#CSubmenuQuestDecks.java +lblCreateaDeck=Crear un Mazo. +#CSubmenuQuestPrefs.java +lblEnteraNumber=Ingrese un numero +lblSavefailed=Error al guardar +#DialogChooseFormats.java +cbWantReprints=Permitir reimpresiones compatibles de otros sets. +lblChooseFormats=Elije Formatos +lblSanctioned=Sancionado +lblOther=Otro +lblHistoric=Histórico +lblCancel=Cancelar +#DialogChoosePoolDistribution.java +lblBlack=Negro +lblBlue=Azul +lblGreen=Verde +lblRed=Rojo +lblWhite=Blanco +lblColorless=Incoloro +lblIncludeArtifacts=Incluir Artefactos +lblBalanced=Balanceado +lblTrueRandom=Aleatorio real +lblSurpriseMe=Sorpréndeme +lblBoosters=Sobres +lblClearAll=Limpiar todo +lblNumberofBoosters=Número de Sobres +lblColors=Colores +lblnoSettings=No hay configuraciones disponibles para esta selección. +lblDistribution=Distribución +lblHoverforDescription=Pase el cursor sobre cada elemento para obtener una descripción más detallada. +lblradBalanced=Una distribución "equilibrada" proporcionará una cantidad aproximadamente igual cartas tarjetas en cada color seleccionado. +lblradRandom=Una distribución "Aleatorio real" se seleccionará casi completamente al azar. Esto ignora cualquier selección de color. +lblradSurpriseMe=Esto es lo mismo que una distribución "equilibrada", excepto que los colores seleccionados serán aleatorios y no se le dirá qué son. +lblradBoosters=Esto ignora todas las configuraciones de color y en su lugar genera un conjunto de cartas de un número específico de sobres. +lblcbxArtifacts=Cuando se seleccione, los artefactos se incluirán en su grupo independientemente de las selecciones de color. Esto imita el antiguo comportamiento del conjunto de cartas.