diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java
index 07f7c6044ff..7191e7b66d4 100644
--- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java
+++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java
@@ -810,10 +810,10 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
final int fetchNum = Math.min(player.getCardsIn(ZoneType.Library).size(), 4);
CardCollectionView shown = !decider.hasKeyword("LimitSearchLibrary") ? player.getCardsIn(ZoneType.Library) : player.getCardsIn(ZoneType.Library, fetchNum);
// Look at whole library before moving onto choosing a card
- delayedReveal = new DelayedReveal(shown, ZoneType.Library, PlayerView.get(player), source.getName() + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
+ delayedReveal = new DelayedReveal(shown, ZoneType.Library, PlayerView.get(player), CardTranslation.getTranslatedName(source.getName()) + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
}
else if (origin.contains(ZoneType.Hand) && player.isOpponentOf(decider)) {
- delayedReveal = new DelayedReveal(player.getCardsIn(ZoneType.Hand), ZoneType.Hand, PlayerView.get(player), source.getName() + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
+ delayedReveal = new DelayedReveal(player.getCardsIn(ZoneType.Hand), ZoneType.Hand, PlayerView.get(player), CardTranslation.getTranslatedName(source.getName()) + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
}
}
diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java
index e4317c6a486..350c919e3bc 100644
--- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java
+++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java
@@ -24,6 +24,7 @@ import forge.util.Lang;
import forge.util.TextUtil;
import forge.util.collect.FCollectionView;
import forge.util.Localizer;
+import forge.util.CardTranslation;
import java.util.*;
@@ -146,7 +147,7 @@ public class DigEffect extends SpellAbilityEffect {
}
else if (!sa.hasParam("NoLooking")) {
// show the user the revealed cards
- delayedReveal = new DelayedReveal(top, srcZone, PlayerView.get(p), host.getName() + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
+ delayedReveal = new DelayedReveal(top, srcZone, PlayerView.get(p), CardTranslation.getTranslatedName(host.getName()) + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
if (noMove) {
// Let the activating player see the cards even if they're not moved
@@ -198,7 +199,7 @@ public class DigEffect extends SpellAbilityEffect {
// Optional abilities that use a dialog box to prompt the user to skip the ability (e.g. Explorer's Scope, Quest for Ula's Temple)
if (optional && mayBeSkipped && !valid.isEmpty()) {
String prompt = !optionalAbilityPrompt.isEmpty() ? optionalAbilityPrompt : Localizer.getInstance().getMessage("lblWouldYouLikeProceedWithOptionalAbility") + " " + sa.getHostCard() + "?\n\n(" + sa.getDescription() + ")";
- if (!p.getController().confirmAction(sa, null, TextUtil.fastReplace(prompt, "CARDNAME", sa.getHostCard().getName()))) {
+ if (!p.getController().confirmAction(sa, null, TextUtil.fastReplace(prompt, "CARDNAME", CardTranslation.getTranslatedName(sa.getHostCard().getName())))) {
return;
}
}
diff --git a/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java b/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java
index 8a9a98c6530..795afe64f69 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java
@@ -24,6 +24,7 @@ import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;
import java.util.Collections;
import java.util.List;
+import forge.util.Localizer;
import javax.swing.AbstractListModel;
import javax.swing.Icon;
@@ -113,7 +114,7 @@ public class CardListViewer extends FDialog {
this.addWindowFocusListener(new CardListFocuser());
- final FButton btnOK = new FButton("OK");
+ final FButton btnOK = new FButton(Localizer.getInstance().getMessage("lblOK"));
btnOK.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
diff --git a/forge-gui-desktop/src/main/java/forge/gui/ListChooser.java b/forge-gui-desktop/src/main/java/forge/gui/ListChooser.java
index 123e612e206..b7cf5954534 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/ListChooser.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/ListChooser.java
@@ -46,6 +46,8 @@ import forge.toolbox.FMouseAdapter;
import forge.toolbox.FOptionPane;
import forge.toolbox.FScrollPane;
+import forge.util.Localizer;
+
/**
* A simple class that shows a list of choices in a dialog. Two properties
* influence the behavior of a list chooser: minSelection and maxSelection.
@@ -60,7 +62,7 @@ import forge.toolbox.FScrollPane;
* disabled.
*
The dialog was "committed" if "OK" was clicked or a choice was double
* clicked.
- * The dialog was "canceled" if "Cancel" or "X" was clicked.
+ * The dialog was "canceled" if Localizer.getInstance().getMessage("lblCancel") or "X" was clicked.
* If the dialog was canceled, the selection will be empty.
*
*
@@ -91,9 +93,9 @@ public class ListChooser {
final ImmutableList options;
if (minChoices == 0) {
- options = ImmutableList.of("OK","Cancel");
+ options = ImmutableList.of(Localizer.getInstance().getMessage("lblOK"),Localizer.getInstance().getMessage("lblCancel"));
} else {
- options = ImmutableList.of("OK");
+ options = ImmutableList.of(Localizer.getInstance().getMessage("lblOK"));
}
if (maxChoices == 1 || minChoices == -1) {
diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java
index 2c6ff484f2a..6884c9889dc 100644
--- a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java
+++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java
@@ -21,6 +21,7 @@ import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinnedPanel;
import forge.toolbox.FTextField;
import forge.toolbox.LayoutHelper;
+import forge.util.Localizer;
import javax.swing.*;
@@ -89,7 +90,7 @@ public class AdvancedSearchFilter extends ItemFilter
GuiUtils.addSeparator(menu);
}
- GuiUtils.addMenuItem(menu, "Edit Expression", null, new Runnable() {
+ GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblEditExpression"), null, new Runnable() {
@Override
public void run() {
edit();
@@ -97,7 +98,7 @@ public class AdvancedSearchFilter extends ItemFilter
});
if (hasFilters) {
- GuiUtils.addMenuItem(menu, "Clear Filter", null, new Runnable() {
+ GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblClearFilter"), null, new Runnable() {
@Override
public void run() {
reset();
@@ -173,7 +174,7 @@ public class AdvancedSearchFilter extends ItemFilter
}
private boolean show() {
- optionPane = new FOptionPane(null, "Advanced Search", null, scroller, ImmutableList.of("OK", "Cancel"), 0);
+ optionPane = new FOptionPane(null, Localizer.getInstance().getMessage("lblAdvancedSearch"), null, scroller, ImmutableList.of(Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel")), 0);
optionPane.addComponentListener(new ComponentAdapter() {
@Override
public void componentShown(ComponentEvent e) {
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java
index 7d6a346030d..e6bad94d6ae 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java
@@ -7,6 +7,7 @@ import forge.gui.SOverlayUtils;
import forge.model.FModel;
import forge.toolbox.*;
import forge.util.TextUtil;
+import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
@@ -24,7 +25,7 @@ public class DialogChooseSets {
private Runnable okCallback;
private final List choices = new ArrayList<>();
- private final FCheckBox cbWantReprints = new FCheckBox("Display compatible reprints from more recent sets");
+ private final FCheckBox cbWantReprints = new FCheckBox(Localizer.getInstance().getMessage("lblDisplayRecentSetRepints"));
// lists are of set codes (e.g. "2ED")
public DialogChooseSets(Collection preselectedSets, Collection unselectableSets, boolean showWantReprintsCheckbox) {
@@ -76,21 +77,21 @@ public class DialogChooseSets {
optionsPanel.setVisible(false);
optionsPanel.setOpaque(false);
optionsPanel.add(new JSeparator(SwingConstants.HORIZONTAL), "w 100%, span 2, growx");
- optionsPanel.add(new FLabel.Builder().text("Select Random Sets").fontSize(17).fontStyle(Font.BOLD).build(), "h 40!, span 2");
+ optionsPanel.add(new FLabel.Builder().text(Localizer.getInstance().getMessage("lblSelectRandomSets")).fontSize(17).fontStyle(Font.BOLD).build(), "h 40!, span 2");
JPanel leftOptionsPanel = new JPanel(new MigLayout("insets 10, gap 5, center, wrap 2"));
leftOptionsPanel.setOpaque(false);
- leftOptionsPanel.add(new FLabel.Builder().text("Number to Select:").fontSize(14).fontStyle(Font.BOLD).build(), " span 2");
- leftOptionsPanel.add(new FLabel.Builder().text("Core:").build());
+ leftOptionsPanel.add(new FLabel.Builder().text(Localizer.getInstance().getMessage("lblSelectNumber") + ":").fontSize(14).fontStyle(Font.BOLD).build(), " span 2");
+ leftOptionsPanel.add(new FLabel.Builder().text(Localizer.getInstance().getMessage("lblCore") + ":").build());
leftOptionsPanel.add(coreField, "w 40!");
- leftOptionsPanel.add(new FLabel.Builder().text("Expansion:").build());
+ leftOptionsPanel.add(new FLabel.Builder().text(Localizer.getInstance().getMessage("lblExpansion") + ":").build());
leftOptionsPanel.add(expansionField, "w 40!");
leftOptionsPanel.add(new FLabel.Builder().text("Other:").build());
leftOptionsPanel.add(otherField, "w 40!");
JPanel rightOptionsPanel = new JPanel(new MigLayout("insets 10, gap 25 5, center, wrap 2"));
rightOptionsPanel.setOpaque(false);
- rightOptionsPanel.add(new FLabel.Builder().text("Format Restrictions:").fontSize(14).fontStyle(Font.BOLD).build(), "span 2");
+ rightOptionsPanel.add(new FLabel.Builder().text(Localizer.getInstance().getMessage("lblFormatRestrictions") +":").fontSize(14).fontStyle(Font.BOLD).build(), "span 2");
ButtonGroup formatButtonGroup = new ButtonGroup();
List gameFormats = new ArrayList<>();
@@ -98,7 +99,7 @@ public class DialogChooseSets {
gameFormats.forEach(item -> {
if (item.getName().equals("Legacy")) {
- FRadioButton button = new FRadioButton("Legacy/Vintage");
+ FRadioButton button = new FRadioButton(Localizer.getInstance().getMessage("lblLegacyOrVintage"));
button.setActionCommand(item.getName());
formatButtonGroup.add(button);
rightOptionsPanel.add(button);
@@ -110,12 +111,12 @@ public class DialogChooseSets {
}
});
- FRadioButton button = new FRadioButton("Modern Card Frame");
+ FRadioButton button = new FRadioButton(Localizer.getInstance().getMessage("lblModernCardFrame"));
button.setActionCommand("Modern Card Frame");
formatButtonGroup.add(button);
rightOptionsPanel.add(button);
- FRadioButton noFormatSelectionButton = new FRadioButton("No Format Restriction");
+ FRadioButton noFormatSelectionButton = new FRadioButton(Localizer.getInstance().getMessage("lblNoFormatRestriction"));
noFormatSelectionButton.setActionCommand("No Format Restriction");
formatButtonGroup.add(noFormatSelectionButton);
rightOptionsPanel.add(noFormatSelectionButton);
@@ -124,7 +125,7 @@ public class DialogChooseSets {
optionsPanel.add(leftOptionsPanel, "w 33%:40%:78%");
optionsPanel.add(rightOptionsPanel, "w 33%:60%:78%");
- FButton randomSelectionButton = new FButton("Randomize Sets");
+ FButton randomSelectionButton = new FButton(Localizer.getInstance().getMessage("lblRandomizeSets"));
randomSelectionButton.addActionListener(actionEvent -> {
int numberOfCoreSets = Integer.parseInt(coreField.getText());
@@ -214,7 +215,7 @@ public class DialogChooseSets {
});
- FButton clearSelectionButton = new FButton("Clear Selection");
+ FButton clearSelectionButton = new FButton(Localizer.getInstance().getMessage("lblClearSelection"));
clearSelectionButton.addActionListener(actionEvent -> {
for (FCheckBox coreSet : coreSets) {
coreSet.setSelected(false);
@@ -228,13 +229,13 @@ public class DialogChooseSets {
panel.repaintSelf();
});
- FButton showOptionsButton = new FButton("Show Options");
+ FButton showOptionsButton = new FButton(Localizer.getInstance().getMessage("lblShowOptions"));
showOptionsButton.addActionListener(actionEvent -> {
optionsPanel.setVisible(true);
showOptionsButton.setVisible(false);
});
- FButton hideOptionsButton = new FButton("Hide Options");
+ FButton hideOptionsButton = new FButton(Localizer.getInstance().getMessage("lblHideOptions"));
hideOptionsButton.addActionListener(actionEvent -> {
optionsPanel.setVisible(false);
showOptionsButton.setVisible(true);
@@ -254,12 +255,12 @@ public class DialogChooseSets {
optionsPanel.add(new JSeparator(SwingConstants.HORIZONTAL), "w 100%, span 2, growx");
- panel.add(new FLabel.Builder().text("Choose sets").fontSize(20).build(), "center, span, wrap, gaptop 10");
+ panel.add(new FLabel.Builder().text(Localizer.getInstance().getMessage("lblChooseSets")).fontSize(20).build(), "center, span, wrap, gaptop 10");
String constraints = "aligny top";
- panel.add(makeCheckBoxList(coreSets, "Core sets", true), constraints);
- panel.add(makeCheckBoxList(expansionSets, "Expansions", false), constraints);
- panel.add(makeCheckBoxList(otherSets, "Other sets", false), constraints);
+ panel.add(makeCheckBoxList(coreSets, Localizer.getInstance().getMessage("lblCoreSets"), true), constraints);
+ panel.add(makeCheckBoxList(expansionSets, Localizer.getInstance().getMessage("lblExpansions"), false), constraints);
+ panel.add(makeCheckBoxList(otherSets, Localizer.getInstance().getMessage("lblOtherSets"), false), constraints);
panel.add(showOptionsButton, "center, w 230!, h 30!, gap 10 0 20 0, span 3, hidemode 3");
panel.add(optionsPanel, "center, w 100, span 3, growx, hidemode 3");
@@ -273,7 +274,7 @@ public class DialogChooseSets {
}
};
- FButton btnOk = new FButton("OK");
+ FButton btnOk = new FButton(Localizer.getInstance().getMessage("lblOK"));
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
@@ -282,7 +283,7 @@ public class DialogChooseSets {
}
});
- FButton btnCancel = new FButton("Cancel");
+ FButton btnCancel = new FButton(Localizer.getInstance().getMessage("lblCancel"));
btnCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuSealed.java b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuSealed.java
index dee2a078700..81a0f124a76 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuSealed.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/sanctioned/VSubmenuSealed.java
@@ -77,7 +77,7 @@ public enum VSubmenuSealed implements IVSubmenu {
private final FLabel btnDirections = new FLabel.Builder()
.fontSize(16).opaque(true).hoverable(true)
- .text("How To Play").fontAlign(SwingConstants.CENTER).build();
+ .text(localizer.getMessage("lblHowtoPlay")).fontAlign(SwingConstants.CENTER).build();
/**
* Constructor.
@@ -181,15 +181,7 @@ public enum VSubmenuSealed implements IVSubmenu {
final JPanel overlay = SOverlayUtils.genericOverlay();
final int w = overlay.getWidth();
- final String instructions = "SEALED DECK MODE INSTRUCTIONS"
- + "\r\n\r\n"
- + "In Sealed Deck tournaments, each player receives six booster packs"
- + "from which to build their deck."
- + "\r\n\r\n"
- + "Depending on which sets are to be used in a sealed deck event, "
- + "the distribution of packs can vary greatly."
- + "\r\n\r\n"
- + "Credit: Wikipedia";
+ final String instructions = localizer.getMessage("lblSealedModeInstruction");
// Init directions text pane
final SkinnedTextPane tpnDirections = new SkinnedTextPane();
@@ -207,7 +199,7 @@ public enum VSubmenuSealed implements IVSubmenu {
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, doc.getLength(), center, false);
- final JButton btnCloseBig = new FButton("OK");
+ final JButton btnCloseBig = new FButton(localizer.getMessage("lblOK"));
btnCloseBig.setBounds(new Rectangle((w / 2 - 100), 510, 200, 30));
btnCloseBig.addActionListener(new ActionListener() { @Override
public void actionPerformed(final ActionEvent arg0) { SOverlayUtils.hideOverlay(); } });
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java
index bd4bde30705..6e1354a6727 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuDownloaders.java
@@ -186,7 +186,7 @@ public enum VSubmenuDownloaders implements IVSubmenu {
p.setOpaque(false);
p.setBackgroundTexture(FSkin.getIcon(FSkinProp.BG_TEXTURE));
- final FButton btnClose = new FButton("OK");
+ final FButton btnClose = new FButton(localizer.getMessage("lblOK"));
btnClose.addActionListener(new ActionListener() { @Override
public void actionPerformed(final ActionEvent arg0) { SOverlayUtils.hideOverlay(); } });
diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
index 5619e695d94..20900adcb56 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java
@@ -126,6 +126,7 @@ import forge.util.ITriggerEvent;
import forge.util.collect.FCollection;
import forge.util.collect.FCollectionView;
import forge.util.gui.SOptionPane;
+import forge.util.Localizer;
import forge.view.FView;
import forge.view.arcane.CardPanel;
import forge.view.arcane.FloatingZone;
@@ -460,53 +461,53 @@ public final class CMatchUI
public Iterable tempShowZones(final PlayerView controller, final Iterable zonesToUpdate) {
for (final PlayerZoneUpdate update : zonesToUpdate) {
final PlayerView player = update.getPlayer();
- for (final ZoneType zone : update.getZones()) {
- switch (zone) {
- case Battlefield: // always shown
- break;
- case Hand: // controller hand always shown
- if (controller != player) {
- FloatingZone.show(this,player,zone);
- }
- break;
- case Library:
- case Graveyard:
- case Exile:
- case Flashback:
- case Command:
- FloatingZone.show(this,player,zone);
- break;
- default:
- break;
- }
- }
- }
- return zonesToUpdate; //pfps should return only the newly shown zones
+ for (final ZoneType zone : update.getZones()) {
+ switch (zone) {
+ case Battlefield: // always shown
+ break;
+ case Hand: // controller hand always shown
+ if (controller != player) {
+ FloatingZone.show(this,player,zone);
+ }
+ break;
+ case Library:
+ case Graveyard:
+ case Exile:
+ case Flashback:
+ case Command:
+ FloatingZone.show(this,player,zone);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ return zonesToUpdate; //pfps should return only the newly shown zones
}
@Override
public void hideZones(final PlayerView controller, final Iterable zonesToUpdate) {
- if ( zonesToUpdate != null ) {
- for (final PlayerZoneUpdate update : zonesToUpdate) {
- final PlayerView player = update.getPlayer();
- for (final ZoneType zone : update.getZones()) {
- switch (zone) {
- case Battlefield: // always shown
- break;
- case Hand: // the controller's hand should never be temporarily shown, but ...
- case Library:
- case Graveyard:
- case Exile:
- case Flashback:
- case Command:
- FloatingZone.hide(this,player,zone);
- break;
- default:
- break;
- }
- }
- }
- }
+ if ( zonesToUpdate != null ) {
+ for (final PlayerZoneUpdate update : zonesToUpdate) {
+ final PlayerView player = update.getPlayer();
+ for (final ZoneType zone : update.getZones()) {
+ switch (zone) {
+ case Battlefield: // always shown
+ break;
+ case Hand: // the controller's hand should never be temporarily shown, but ...
+ case Library:
+ case Graveyard:
+ case Exile:
+ case Flashback:
+ case Command:
+ FloatingZone.hide(this,player,zone);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
}
// Player's mana pool changes
@@ -550,7 +551,7 @@ public final class CMatchUI
}
break;
default:
- FloatingZone.refresh(c.getController(),zone); // in case the card is visible in the zone
+ FloatingZone.refresh(c.getController(),zone); // in case the card is visible in the zone
break;
}
}
@@ -561,18 +562,18 @@ public final class CMatchUI
super.setSelectables(cards);
// update zones on tabletop and floating zones - non-selectable cards may be rendered differently
FThreads.invokeInEdtNowOrLater(new Runnable() {
- @Override public final void run() {
- for (final PlayerView p : getGameView().getPlayers()) {
- if ( p.getCards(ZoneType.Battlefield) != null ) {
- updateCards(p.getCards(ZoneType.Battlefield));
- }
- if ( p.getCards(ZoneType.Hand) != null ) {
- updateCards(p.getCards(ZoneType.Hand));
- }
- }
- FloatingZone.refreshAll();
- }
- });
+ @Override public final void run() {
+ for (final PlayerView p : getGameView().getPlayers()) {
+ if ( p.getCards(ZoneType.Battlefield) != null ) {
+ updateCards(p.getCards(ZoneType.Battlefield));
+ }
+ if ( p.getCards(ZoneType.Hand) != null ) {
+ updateCards(p.getCards(ZoneType.Hand));
+ }
+ }
+ FloatingZone.refreshAll();
+ }
+ });
}
@Override
@@ -580,18 +581,18 @@ public final class CMatchUI
super.clearSelectables();
// update zones on tabletop and floating zones - non-selectable cards may be rendered differently
FThreads.invokeInEdtNowOrLater(new Runnable() {
- @Override public final void run() {
- for (final PlayerView p : getGameView().getPlayers()) {
- if ( p.getCards(ZoneType.Battlefield) != null ) {
- updateCards(p.getCards(ZoneType.Battlefield));
- }
- if ( p.getCards(ZoneType.Hand) != null ) {
- updateCards(p.getCards(ZoneType.Hand));
- }
- }
- FloatingZone.refreshAll();
- }
- });
+ @Override public final void run() {
+ for (final PlayerView p : getGameView().getPlayers()) {
+ if ( p.getCards(ZoneType.Battlefield) != null ) {
+ updateCards(p.getCards(ZoneType.Battlefield));
+ }
+ if ( p.getCards(ZoneType.Hand) != null ) {
+ updateCards(p.getCards(ZoneType.Hand));
+ }
+ }
+ FloatingZone.refreshAll();
+ }
+ });
}
@@ -857,7 +858,7 @@ public final class CMatchUI
if (abilities.size() == 1) {
return abilities.get(0);
}
- return GuiChoose.oneOrNone("Choose ability to play", abilities);
+ return GuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblChooseAbilityToPlay"), abilities);
}
if (abilities.isEmpty()) {
@@ -871,7 +872,7 @@ public final class CMatchUI
}
//show menu if mouse was trigger for ability
- final JPopupMenu menu = new JPopupMenu("Abilities");
+ final JPopupMenu menu = new JPopupMenu(Localizer.getInstance().getMessage("lblAbilities"));
boolean enabled;
int firstEnabled = -1;
@@ -1071,7 +1072,7 @@ public final class CMatchUI
if (delayedReveal != null) {
reveal(delayedReveal.getMessagePrefix(), delayedReveal.getCards()); //TODO: Merge this into search dialog
}
- return (List) order(title,"Selected", optionList.size() - max, optionList.size() - min, optionList, null, null, false);
+ return (List) order(title,Localizer.getInstance().getMessage("lblSelected"), optionList.size() - max, optionList.size() - min, optionList, null, null, false);
}
@Override
@@ -1228,7 +1229,7 @@ public final class CMatchUI
Dimension maxSize = new Dimension(1400, parentSize.height - 100);
mainPanel.setMaximumSize(maxSize);
mainPanel.setOpaque(false);
-
+
// Big Image
addBigImageToStackModalPanel(mainPanel, si);
@@ -1256,7 +1257,7 @@ public final class CMatchUI
numSmallImages++;
}
}
- }
+ }
// If current effect is a triggered ability, I want to show the triggering card if present
SpellAbility sourceSA = (SpellAbility) si.getTriggeringObject(AbilityKey.SourceSA);
@@ -1265,7 +1266,7 @@ public final class CMatchUI
sourceCardView = sourceSA.getHostCard().getView();
numSmallImages++;
}
-
+
// I also want to show each type of targets (both cards and players)
List targets = getTargets(si,new ArrayList());
numSmallImages = numSmallImages + targets.size();
@@ -1281,7 +1282,7 @@ public final class CMatchUI
addSmallImageToStackModalPanel(gev, mainPanel, numSmallImages);
}
- FOptionPane.showOptionDialog(null, "Forge", null, mainPanel, ImmutableList.of("OK"));
+ FOptionPane.showOptionDialog(null, "Forge", null, mainPanel, ImmutableList.of(Localizer.getInstance().getMessage("lblOK")));
// here the user closed the modal - time to update the next notifiable stack index
}
diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java b/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java
index ff70964091f..8f5d98ec1d0 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java
@@ -16,6 +16,7 @@ import forge.toolbox.FList;
import forge.toolbox.FOptionPane;
import forge.toolbox.FScrollPane;
import forge.view.FDialog;
+import forge.util.Localizer;
@SuppressWarnings("serial")
public class VAutoYields extends FDialog {
@@ -32,7 +33,7 @@ public class VAutoYields extends FDialog {
public VAutoYields(final CMatchUI matchUI) {
super();
- setTitle("Auto-Yields");
+ setTitle(Localizer.getInstance().getMessage("lblAutoYields"));
autoYields = new ArrayList<>();
for (final String autoYield : matchUI.getAutoYields()) {
@@ -47,7 +48,7 @@ public class VAutoYields extends FDialog {
listScroller = new FScrollPane(lstAutoYields, true);
- chkDisableAll = new FCheckBox("Disable All Auto Yields", matchUI.getDisableAutoYields());
+ chkDisableAll = new FCheckBox(Localizer.getInstance().getMessage("lblDisableAllAutoYields"), matchUI.getDisableAutoYields());
chkDisableAll.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
@@ -55,14 +56,14 @@ public class VAutoYields extends FDialog {
}
});
- btnOk = new FButton("OK");
+ btnOk = new FButton(Localizer.getInstance().getMessage("lblOK"));
btnOk.setCommand(new UiCommand() {
@Override
public void run() {
setVisible(false);
}
});
- btnRemove = new FButton("Remove Yield");
+ btnRemove = new FButton(Localizer.getInstance().getMessage("lblRemoveYield"));
btnRemove.setCommand(new UiCommand() {
@Override
public void run() {
@@ -115,7 +116,7 @@ public class VAutoYields extends FDialog {
setVisible(true);
dispose();
} else {
- FOptionPane.showMessageDialog("There are no active auto-yields.", "No Auto-Yields", FOptionPane.INFORMATION_ICON);
+ FOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblNoActiveAutoYield"), Localizer.getInstance().getMessage("lblNoAutoYield"), FOptionPane.INFORMATION_ICON);
}
}
}
diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/FOptionPane.java b/forge-gui-desktop/src/main/java/forge/toolbox/FOptionPane.java
index bc6cf09a612..e29838b80af 100644
--- a/forge-gui-desktop/src/main/java/forge/toolbox/FOptionPane.java
+++ b/forge-gui-desktop/src/main/java/forge/toolbox/FOptionPane.java
@@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList;
import forge.assets.FSkinProp;
import forge.toolbox.FSkin.SkinImage;
import forge.view.FDialog;
+import forge.util.Localizer;
/**
* Class to replace JOptionPane using skinned dialogs
@@ -49,7 +50,7 @@ public class FOptionPane extends FDialog {
}
public static void showMessageDialog(final String message, final String title, final SkinImage icon) {
- showOptionDialog(message, title, icon, ImmutableList.of("OK"), 0);
+ showOptionDialog(message, title, icon, ImmutableList.of(Localizer.getInstance().getMessage("lblOK")), 0);
}
public static boolean showConfirmDialog(final String message) {
@@ -57,11 +58,11 @@ public class FOptionPane extends FDialog {
}
public static boolean showConfirmDialog(final String message, final String title) {
- return showConfirmDialog(message, title, "Yes", "No", true);
+ return showConfirmDialog(message, title, Localizer.getInstance().getMessage("lblYes"), Localizer.getInstance().getMessage("lblNo"), true);
}
public static boolean showConfirmDialog(final String message, final String title, final boolean defaultYes) {
- return showConfirmDialog(message, title, "Yes", "No", defaultYes);
+ return showConfirmDialog(message, title, Localizer.getInstance().getMessage("lblYes"), Localizer.getInstance().getMessage("lblNo"), defaultYes);
}
public static boolean showConfirmDialog(final String message, final String title, final String yesButtonText, final String noButtonText) {
@@ -124,7 +125,7 @@ public class FOptionPane extends FDialog {
inputField = cbInput;
}
- final FOptionPane optionPane = new FOptionPane(message, title, icon, inputField, ImmutableList.of("OK", "Cancel"), -1);
+ final FOptionPane optionPane = new FOptionPane(message, title, icon, inputField, ImmutableList.of(Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel")), -1);
optionPane.setDefaultFocus(inputField);
inputField.addKeyListener(new KeyAdapter() { //hook so pressing Enter on field accepts dialog
@Override
diff --git a/forge-gui-mobile/src/forge/card/GameEntityPicker.java b/forge-gui-mobile/src/forge/card/GameEntityPicker.java
index d327202aac1..78ed6f2dc10 100644
--- a/forge-gui-mobile/src/forge/card/GameEntityPicker.java
+++ b/forge-gui-mobile/src/forge/card/GameEntityPicker.java
@@ -27,14 +27,14 @@ public class GameEntityPicker extends TabPageScreen {
public GameEntityPicker(String title, Collection extends GameEntityView> choiceList, Collection revealList, String revealListCaption, FImage revealListImage, boolean isOptional, final Callback callback) {
super(new PickerTab[] {
- new PickerTab(choiceList, "Choices", FSkinImage.DECKLIST, 1),
+ new PickerTab(choiceList, Localizer.getInstance().getMessage("Choices"), FSkinImage.DECKLIST, 1),
new PickerTab(revealList, revealListCaption, revealListImage, 0)
}, false);
setHeight(FOptionPane.getMaxDisplayObjHeight());
optionPane = new FOptionPane(null, null, title, null, this,
- isOptional ? ImmutableList.of("OK", "Cancel") : ImmutableList.of("OK"), 0, new Callback() {
+ isOptional ? ImmutableList.of(Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel")) : ImmutableList.of(Localizer.getInstance().getMessage("lblOK")), 0, new Callback() {
@Override
public void run(Integer result) {
if (result == 0) {
diff --git a/forge-gui-mobile/src/forge/screens/match/views/VAutoYields.java b/forge-gui-mobile/src/forge/screens/match/views/VAutoYields.java
index 5ce1d4adddf..1f9ace34c45 100644
--- a/forge-gui-mobile/src/forge/screens/match/views/VAutoYields.java
+++ b/forge-gui-mobile/src/forge/screens/match/views/VAutoYields.java
@@ -11,13 +11,14 @@ import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FOptionPane;
import forge.util.TextBounds;
+import forge.util.Localizer;
public class VAutoYields extends FDialog {
private final FChoiceList lstAutoYields;
private final FCheckBox chkDisableAll;
public VAutoYields() {
- super("Auto-Yields", 2);
+ super(Localizer.getInstance().getMessage("lblAutoYields"), 2);
List autoYields = new ArrayList<>();
for (String autoYield : MatchController.instance.getAutoYields()) {
autoYields.add(autoYield);
@@ -33,20 +34,20 @@ public class VAutoYields extends FDialog {
return true;
}
});
- chkDisableAll = add(new FCheckBox("Disable All Auto Yields", MatchController.instance.getDisableAutoYields()));
+ chkDisableAll = add(new FCheckBox(Localizer.getInstance().getMessage("lblDisableAllAutoYields"), MatchController.instance.getDisableAutoYields()));
chkDisableAll.setCommand(new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
MatchController.instance.setDisableAutoYields(chkDisableAll.isSelected());
}
});
- initButton(0, "OK", new FEventHandler() {
+ initButton(0, Localizer.getInstance().getMessage("lblOK"), new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
hide();
}
});
- initButton(1, "Remove Yield", new FEventHandler() {
+ initButton(1, Localizer.getInstance().getMessage("lblRemoveYield"), new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
String selected = lstAutoYields.getSelectedItem();
@@ -68,7 +69,7 @@ public class VAutoYields extends FDialog {
super.show();
}
else {
- FOptionPane.showMessageDialog("There are no active auto-yields.", "No Auto-Yields", FOptionPane.INFORMATION_ICON);
+ FOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblNoActiveAutoYield"), Localizer.getInstance().getMessage("lblNoAutoYield"), FOptionPane.INFORMATION_ICON);
}
}
diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java
index 892c37c9131..e5086c2138c 100644
--- a/forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java
+++ b/forge-gui-mobile/src/forge/screens/planarconquest/ConquestRewardDialog.java
@@ -24,6 +24,7 @@ import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane;
import forge.util.Utils;
+import forge.util.Localizer;
public class ConquestRewardDialog extends FScrollPane {
private static final float PADDING = Utils.scale(5);
@@ -177,7 +178,7 @@ public class ConquestRewardDialog extends FScrollPane {
add(ConquestRewardDialog.this);
- initButton(0, "OK", new FEventHandler() {
+ initButton(0, Localizer.getInstance().getMessage("lblOK"), new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
hide();
@@ -186,7 +187,7 @@ public class ConquestRewardDialog extends FScrollPane {
}
}
});
- initButton(1, "Skip", new FEventHandler() {
+ initButton(1, Localizer.getInstance().getMessage("lblSkip"), new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
animation.skip();
diff --git a/forge-gui-mobile/src/forge/toolbox/FOptionPane.java b/forge-gui-mobile/src/forge/toolbox/FOptionPane.java
index f5c3eaf0843..cce5b77445e 100644
--- a/forge-gui-mobile/src/forge/toolbox/FOptionPane.java
+++ b/forge-gui-mobile/src/forge/toolbox/FOptionPane.java
@@ -191,7 +191,7 @@ public class FOptionPane extends FDialog {
container.add(inputField);
container.setHeight(inputField.getHeight() + padTop + PADDING);
- final FOptionPane optionPane = new FOptionPane(message, null, title, null, container, ImmutableList.of("OK", "Cancel"), 0, new Callback() {
+ final FOptionPane optionPane = new FOptionPane(message, null, title, null, container, ImmutableList.of(Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel")), 0, new Callback() {
@SuppressWarnings("unchecked")
@Override
public void run(final Integer result) {
diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties
index 4339089a731..2700b48d9e1 100644
--- a/forge-gui/res/languages/de-DE.properties
+++ b/forge-gui/res/languages/de-DE.properties
@@ -372,6 +372,7 @@ lblSealedText2=Im Sealed Modus erstellst du ein Deck aus max. 10 Boostern.
lblSealedText3=Erstelle ein Deck aus den erhaltenen Karten. Die KI macht dasselbe.
lblSealedText4=Dann spiele gegen einen oder alle KI-Gegner.
btnBuildNewSealedDeck=Erstelle neues Sealed Deck
+lblSealedModeInstruction=SEALED DECK MODE INSTRUCTIONS\r\n\r\nIn Sealed Deck tournaments, each player receives six booster packs from which to build their deck.\r\n\r\nDepending on which sets are to be used in a sealed deck event, the distribution of packs can vary greatly.\r\n\r\nCredit: Wikipedia
#FDeckChooser.java
lblViewDeck=Zeige Deck
lblRandomDeck=Zufälliges Deck
@@ -1044,6 +1045,7 @@ lblResetFilters=Filter zurücksetzen
#AdvancedSearchFilter.java
lblEditExpression=Bearbeite Ausdruck
lblRemoveFilter=Entferne Filter
+lblClearFilter=Clear Filter
#CardZoom.java
lblSwipeUpTo=Wische hoch für %s
lblSwipeDownDetailView=Wische runter für Detailansicht
@@ -1870,4 +1872,67 @@ lblChooseAnEdition=Choose an edition
lblChoosePackNumberToPlay=Choose packs to play with
lblNotFoundCustomSealedFiles=No custom sealed files found.
lblChooseCustomSealedPool=Choose Custom Sealed Pool
-lblHowManyBoosterPacks=How many booster packs?
\ No newline at end of file
+lblHowManyBoosterPacks=How many booster packs?
+#DialogChooseSets.java
+lblDisplayRecentSetRepints=Display compatible reprints from more recent sets
+lblSelectRandomSets=Select Random Sets
+lblSelectNumber=Number to Select
+lblCore=Core
+lblExpansion=Expansion
+lblFormatRestrictions=Format Restrictions
+lblLegacyOrVintage=Legacy/Vintage
+lblModernCardFrame=Modern Card Frame
+lblNoFormatRestriction=No Format Restriction
+lblRandomizeSets=Randomize Sets
+lblClearSelection=Clear Selection
+lblShowOptions=Show Options
+lblHideOptions=Hide Options
+lblCoreSets=Core sets
+lblExpansions=Expansions
+lblOtherSets=Other sets
+#CMatchUI.java
+lblAbilities=Abilities
+#VAutoYields.java
+lblDisableAllAutoYields=Disable All Auto Yields
+lblRemoveYield=Remove Yield
+lblNoActiveAutoYield=There are no active auto-yields.
+lblNoAutoYield=No Auto-Yields
+#GameEntityPicker.java
+lblChoices=Choices
+#ConquestRewardDialog.java
+lblSkip=Skip
+#ConquestChaosBattle.java
+lblGreat=Great
+#ConquestData.java
+lblExileCard=Exile Card
+lblExileNCard=Exile {0} Cards
+lblExileFollowCardsToReceiveNAE=Exile the following {0} to receive {1} {2}?\n
+lblCurrentPlaneswalkerCannotBeExiled=Current planeswalker cannot be exiled.
+lblCannotCommanderWithDefinedDeck=Cannot exile a commander with a defined deck.
+lblCardCannotBeExiledCommandersCard={0} is in use by the following commanders and cannot be exiled:\n{1}
+lblRetrieveCard=Retrieve Card
+lblRetrieveNCard=Retrieve {0} Cards
+lblNotEnoughShardsToRetrieveCards=Not enough shards to retrieve {0}.
+lblSpendAECostToRetrieveCardsFromExile=Spend {0} {1} to retrieve the following {2} from exile?\n
+lblAetherShards=Aether Shards
+lblPlaneswalkEmblems=Planeswalk Emblems
+lblTotalWins=Total Wins
+lblTotalLosses=Total Losses
+lblConqueredEvents=Conquered Events
+lblUnlockedCards=Unlocked Cards
+#QuestWinLoseController.java
+lblQuitByPayCredits=Quit (-15 Credits)
+lblSpoilsWonAnteCard=Spoils! Cards won from ante
+lblLootedLostAnteCard=Looted! Cards lost to ante
+lblAchieving25WinStreakAwarded =For achieving a 25 win streak, you have been awarded a draft token!\nUse these tokens to generate new tournaments.
+lblBonusDraftTokenReward=Bonus Draft Token Reward
+lblAchievedNWinStreakWinMTypeCards=You have achieved a {0} win streak and won {1} {2} card(s)!
+lblJustWonTenRandomRares=You just won 10 random rares!
+lblChooseBonusBoosterFormat=Choose bonus booster format
+lblBonusFormatBoosterPack=Bonus booster pack from the "{0}" format!
+lblChooseBonusBoosterSet=Choose bonus booster set
+lblBonusSetBoosterPack=Bonus {0} Booster Pack!
+lblChallengeCompletedBountyIS=Challenge completed.\n\nChallenge bounty: {0} credits.
+lblChallengeRewardsForEvent=Challenge Rewards for "{0}"
+lblYouHaveLostNCredits=You lose! You have lost {0} credits.
+lblGameplayResults=Gameplay Results
\ No newline at end of file
diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties
index 3ae11f0f69a..1d54b1e11fa 100644
--- a/forge-gui/res/languages/en-US.properties
+++ b/forge-gui/res/languages/en-US.properties
@@ -372,6 +372,7 @@ lblSealedText2=In Sealed mode, you build a deck from booster packs (maximum 10).
lblSealedText3=Build a deck from the cards you receive. A number of AI opponents will do the same.
lblSealedText4=Then, you may play against each of the AI opponents, or one of the opponents.
btnBuildNewSealedDeck=Build New Sealed Deck
+lblSealedModeInstruction=SEALED DECK MODE INSTRUCTIONS\r\n\r\nIn Sealed Deck tournaments, each player receives six booster packs from which to build their deck.\r\n\r\nDepending on which sets are to be used in a sealed deck event, the distribution of packs can vary greatly.\r\n\r\nCredit: Wikipedia
#FDeckChooser.java
lblViewDeck=View Deck
lblRandomDeck=Random Deck
@@ -1044,6 +1045,7 @@ lblResetFilters=Reset Filters
#AdvancedSearchFilter.java
lblEditExpression=Edit Expression
lblRemoveFilter=Remove Filter
+lblClearFilter=Clear Filter
#CardZoom.java
lblSwipeUpTo=Swipe up to %s
lblSwipeDownDetailView=Swipe down to switch to detail view
@@ -1323,8 +1325,8 @@ lblPlayerHasMulliganedDownToNCards=%s has mulliganed down to %d cards.
lblPlayerDidntAttackThisTurn=%s didn't attack this turn.
#FormatFilter.java
lblAllSetsFormats=All Sets/Formats
-lblOtherFormats=Other Formats...
-lblChooseSets=Choose Sets...
+lblOtherFormats=Other Formats
+lblChooseSets=Choose Sets
#HistoricFormatSelect.java
lblChooseFormat=Choose Format
#TriggerAdapt.java
@@ -1870,4 +1872,67 @@ lblChooseAnEdition=Choose an edition
lblChoosePackNumberToPlay=Choose packs to play with
lblNotFoundCustomSealedFiles=No custom sealed files found.
lblChooseCustomSealedPool=Choose Custom Sealed Pool
-lblHowManyBoosterPacks=How many booster packs?
\ No newline at end of file
+lblHowManyBoosterPacks=How many booster packs?
+#DialogChooseSets.java
+lblDisplayRecentSetRepints=Display compatible reprints from more recent sets
+lblSelectRandomSets=Select Random Sets
+lblSelectNumber=Number to Select
+lblCore=Core
+lblExpansion=Expansion
+lblFormatRestrictions=Format Restrictions
+lblLegacyOrVintage=Legacy/Vintage
+lblModernCardFrame=Modern Card Frame
+lblNoFormatRestriction=No Format Restriction
+lblRandomizeSets=Randomize Sets
+lblClearSelection=Clear Selection
+lblShowOptions=Show Options
+lblHideOptions=Hide Options
+lblCoreSets=Core sets
+lblExpansions=Expansions
+lblOtherSets=Other sets
+#CMatchUI.java
+lblAbilities=Abilities
+#VAutoYields.java
+lblDisableAllAutoYields=Disable All Auto Yields
+lblRemoveYield=Remove Yield
+lblNoActiveAutoYield=There are no active auto-yields.
+lblNoAutoYield=No Auto-Yields
+#GameEntityPicker.java
+lblChoices=Choices
+#ConquestRewardDialog.java
+lblSkip=Skip
+#ConquestChaosBattle.java
+lblGreat=Great
+#ConquestData.java
+lblExileCard=Exile Card
+lblExileNCard=Exile {0} Cards
+lblExileFollowCardsToReceiveNAE=Exile the following {0} to receive {1} {2}?\n
+lblCurrentPlaneswalkerCannotBeExiled=Current planeswalker cannot be exiled.
+lblCannotCommanderWithDefinedDeck=Cannot exile a commander with a defined deck.
+lblCardCannotBeExiledCommandersCard={0} is in use by the following commanders and cannot be exiled:\n{1}
+lblRetrieveCard=Retrieve Card
+lblRetrieveNCard=Retrieve {0} Cards
+lblNotEnoughShardsToRetrieveCards=Not enough shards to retrieve {0}.
+lblSpendAECostToRetrieveCardsFromExile=Spend {0} {1} to retrieve the following {2} from exile?\n
+lblAetherShards=Aether Shards
+lblPlaneswalkEmblems=Planeswalk Emblems
+lblTotalWins=Total Wins
+lblTotalLosses=Total Losses
+lblConqueredEvents=Conquered Events
+lblUnlockedCards=Unlocked Cards
+#QuestWinLoseController.java
+lblQuitByPayCredits=Quit (-15 Credits)
+lblSpoilsWonAnteCard=Spoils! Cards won from ante
+lblLootedLostAnteCard=Looted! Cards lost to ante
+lblAchieving25WinStreakAwarded =For achieving a 25 win streak, you have been awarded a draft token!\nUse these tokens to generate new tournaments.
+lblBonusDraftTokenReward=Bonus Draft Token Reward
+lblAchievedNWinStreakWinMTypeCards=You have achieved a {0} win streak and won {1} {2} card(s)!
+lblJustWonTenRandomRares=You just won 10 random rares!
+lblChooseBonusBoosterFormat=Choose bonus booster format
+lblBonusFormatBoosterPack=Bonus booster pack from the "{0}" format!
+lblChooseBonusBoosterSet=Choose bonus booster set
+lblBonusSetBoosterPack=Bonus {0} Booster Pack!
+lblChallengeCompletedBountyIS=Challenge completed.\n\nChallenge bounty: {0} credits.
+lblChallengeRewardsForEvent=Challenge Rewards for "{0}"
+lblYouHaveLostNCredits=You lose! You have lost {0} credits.
+lblGameplayResults=Gameplay Results
\ 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 74900b824cc..102aac165fe 100644
--- a/forge-gui/res/languages/es-ES.properties
+++ b/forge-gui/res/languages/es-ES.properties
@@ -372,6 +372,7 @@ lblSealedText2=En modo sellado, construyes un mazo con sobres (máximo 10).
lblSealedText3=Construye un mazo con las cartas que recibas. Un número de oponentes de la IA hará lo mismo.
lblSealedText4=Luego, juega contra uno o todos los oponentes de la IA.
btnBuildNewSealedDeck=Nuevo Mazo Sellado
+lblSealedModeInstruction=SEALED DECK MODE INSTRUCTIONS\r\n\r\nIn Sealed Deck tournaments, each player receives six booster packs from which to build their deck.\r\n\r\nDepending on which sets are to be used in a sealed deck event, the distribution of packs can vary greatly.\r\n\r\nCredit: Wikipedia
#FDeckChooser.java
lblViewDeck=Ver Mazo
lblRandomDeck=Mazo Aleatorio
@@ -1044,6 +1045,7 @@ lblResetFilters=Reiniciar Filtros
#AdvancedSearchFilter.java
lblEditExpression=Editar Expresión
lblRemoveFilter=Eliminar Filtro
+lblClearFilter=Clear Filter
#CardZoom.java
lblSwipeUpTo=Desliza hacia arriba para %s
lblSwipeDownDetailView=Desliza hacia abajo para cambiar a la vista de detalle
@@ -1870,4 +1872,67 @@ lblChooseAnEdition=Selecciona una edición
lblChoosePackNumberToPlay=Escoge los packs con los que jugar
lblNotFoundCustomSealedFiles=No se encontraron archivos de sellado personalizados.
lblChooseCustomSealedPool=Elige Conjunto de Sellado Personalizado
-lblHowManyBoosterPacks=¿Cuántos paquetes de refuerzo?
\ No newline at end of file
+lblHowManyBoosterPacks=¿Cuántos paquetes de refuerzo?
+#DialogChooseSets.java
+lblDisplayRecentSetRepints=Display compatible reprints from more recent sets
+lblSelectRandomSets=Select Random Sets
+lblSelectNumber=Number to Select
+lblCore=Core
+lblExpansion=Expansion
+lblFormatRestrictions=Format Restrictions
+lblLegacyOrVintage=Legacy/Vintage
+lblModernCardFrame=Modern Card Frame
+lblNoFormatRestriction=No Format Restriction
+lblRandomizeSets=Randomize Sets
+lblClearSelection=Clear Selection
+lblShowOptions=Show Options
+lblHideOptions=Hide Options
+lblCoreSets=Core sets
+lblExpansions=Expansions
+lblOtherSets=Other sets
+#CMatchUI.java
+lblAbilities=Abilities
+#VAutoYields.java
+lblDisableAllAutoYields=Disable All Auto Yields
+lblRemoveYield=Remove Yield
+lblNoActiveAutoYield=There are no active auto-yields.
+lblNoAutoYield=No Auto-Yields
+#GameEntityPicker.java
+lblChoices=Choices
+#ConquestRewardDialog.java
+lblSkip=Skip
+#ConquestChaosBattle.java
+lblGreat=Great
+#ConquestData.java
+lblExileCard=Exile Card
+lblExileNCard=Exile {0} Cards
+lblExileFollowCardsToReceiveNAE=Exile the following {0} to receive {1} {2}?\n
+lblCurrentPlaneswalkerCannotBeExiled=Current planeswalker cannot be exiled.
+lblCannotCommanderWithDefinedDeck=Cannot exile a commander with a defined deck.
+lblCardCannotBeExiledCommandersCard={0} is in use by the following commanders and cannot be exiled:\n{1}
+lblRetrieveCard=Retrieve Card
+lblRetrieveNCard=Retrieve {0} Cards
+lblNotEnoughShardsToRetrieveCards=Not enough shards to retrieve {0}.
+lblSpendAECostToRetrieveCardsFromExile=Spend {0} {1} to retrieve the following {2} from exile?\n
+lblAetherShards=Aether Shards
+lblPlaneswalkEmblems=Planeswalk Emblems
+lblTotalWins=Total Wins
+lblTotalLosses=Total Losses
+lblConqueredEvents=Conquered Events
+lblUnlockedCards=Unlocked Cards
+#QuestWinLoseController.java
+lblQuitByPayCredits=Quit (-15 Credits)
+lblSpoilsWonAnteCard=Spoils! Cards won from ante
+lblLootedLostAnteCard=Looted! Cards lost to ante
+lblAchieving25WinStreakAwarded =For achieving a 25 win streak, you have been awarded a draft token!\nUse these tokens to generate new tournaments.
+lblBonusDraftTokenReward=Bonus Draft Token Reward
+lblAchievedNWinStreakWinMTypeCards=You have achieved a {0} win streak and won {1} {2} card(s)!
+lblJustWonTenRandomRares=You just won 10 random rares!
+lblChooseBonusBoosterFormat=Choose bonus booster format
+lblBonusFormatBoosterPack=Bonus booster pack from the "{0}" format!
+lblChooseBonusBoosterSet=Choose bonus booster set
+lblBonusSetBoosterPack=Bonus {0} Booster Pack!
+lblChallengeCompletedBountyIS=Challenge completed.\n\nChallenge bounty: {0} credits.
+lblChallengeRewardsForEvent=Challenge Rewards for "{0}"
+lblYouHaveLostNCredits=You lose! You have lost {0} credits.
+lblGameplayResults=Gameplay Results
\ No newline at end of file
diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties
index 95dd8ca581f..de285ec00e1 100644
--- a/forge-gui/res/languages/it-IT.properties
+++ b/forge-gui/res/languages/it-IT.properties
@@ -372,6 +372,7 @@ lblSealedText2=In modalità Sealed, costruisci un mazzo da buste potenziate (mas
lblSealedText3=Costruisci un mazzo dalle carte che ricevi. Un certo numero di avversari AI farà lo stesso.
lblSealedText4=Quindi, puoi giocare contro ciascuno degli avversari AI o uno degli avversari.
btnBuildNewSealedDeck=Costruisci un nuovo mazzo sigillato
+lblSealedModeInstruction=SEALED DECK MODE INSTRUCTIONS\r\n\r\nIn Sealed Deck tournaments, each player receives six booster packs from which to build their deck.\r\n\r\nDepending on which sets are to be used in a sealed deck event, the distribution of packs can vary greatly.\r\n\r\nCredit: Wikipedia
#FDeckChooser.java
lblViewDeck=Visualizza mazzo
lblRandomDeck=Mazzo casuale
@@ -1044,6 +1045,7 @@ lblResetFilters=Ripristina filtri
#AdvancedSearchFilter.java
lblEditExpression=Modifica espressione
lblRemoveFilter=Rimuovi filtro
+lblClearFilter=Clear Filter
#CardZoom.java
lblSwipeUpTo=Scorri fino a %s
lblSwipeDownDetailView=Scorri verso il basso per passare alla visualizzazione dettagli
@@ -1870,4 +1872,67 @@ lblChooseAnEdition=Choose an edition
lblChoosePackNumberToPlay=Choose packs to play with
lblNotFoundCustomSealedFiles=No custom sealed files found.
lblChooseCustomSealedPool=Choose Custom Sealed Pool
-lblHowManyBoosterPacks=How many booster packs?
\ No newline at end of file
+lblHowManyBoosterPacks=How many booster packs?
+#DialogChooseSets.java
+lblDisplayRecentSetRepints=Display compatible reprints from more recent sets
+lblSelectRandomSets=Select Random Sets
+lblSelectNumber=Number to Select
+lblCore=Core
+lblExpansion=Expansion
+lblFormatRestrictions=Format Restrictions
+lblLegacyOrVintage=Legacy/Vintage
+lblModernCardFrame=Modern Card Frame
+lblNoFormatRestriction=No Format Restriction
+lblRandomizeSets=Randomize Sets
+lblClearSelection=Clear Selection
+lblShowOptions=Show Options
+lblHideOptions=Hide Options
+lblCoreSets=Core sets
+lblExpansions=Expansions
+lblOtherSets=Other sets
+#CMatchUI.java
+lblAbilities=Abilities
+#VAutoYields.java
+lblDisableAllAutoYields=Disable All Auto Yields
+lblRemoveYield=Remove Yield
+lblNoActiveAutoYield=There are no active auto-yields.
+lblNoAutoYield=No Auto-Yields
+#GameEntityPicker.java
+lblChoices=Choices
+#ConquestRewardDialog.java
+lblSkip=Skip
+#ConquestChaosBattle.java
+lblGreat=Great
+#ConquestData.java
+lblExileCard=Exile Card
+lblExileNCard=Exile {0} Cards
+lblExileFollowCardsToReceiveNAE=Exile the following {0} to receive {1} {2}?\n
+lblCurrentPlaneswalkerCannotBeExiled=Current planeswalker cannot be exiled.
+lblCannotCommanderWithDefinedDeck=Cannot exile a commander with a defined deck.
+lblCardCannotBeExiledCommandersCard={0} is in use by the following commanders and cannot be exiled:\n{1}
+lblRetrieveCard=Retrieve Card
+lblRetrieveNCard=Retrieve {0} Cards
+lblNotEnoughShardsToRetrieveCards=Not enough shards to retrieve {0}.
+lblSpendAECostToRetrieveCardsFromExile=Spend {0} {1} to retrieve the following {2} from exile?\n
+lblAetherShards=Aether Shards
+lblPlaneswalkEmblems=Planeswalk Emblems
+lblTotalWins=Total Wins
+lblTotalLosses=Total Losses
+lblConqueredEvents=Conquered Events
+lblUnlockedCards=Unlocked Cards
+#QuestWinLoseController.java
+lblQuitByPayCredits=Quit (-15 Credits)
+lblSpoilsWonAnteCard=Spoils! Cards won from ante
+lblLootedLostAnteCard=Looted! Cards lost to ante
+lblAchieving25WinStreakAwarded =For achieving a 25 win streak, you have been awarded a draft token!\nUse these tokens to generate new tournaments.
+lblBonusDraftTokenReward=Bonus Draft Token Reward
+lblAchievedNWinStreakWinMTypeCards=You have achieved a {0} win streak and won {1} {2} card(s)!
+lblJustWonTenRandomRares=You just won 10 random rares!
+lblChooseBonusBoosterFormat=Choose bonus booster format
+lblBonusFormatBoosterPack=Bonus booster pack from the "{0}" format!
+lblChooseBonusBoosterSet=Choose bonus booster set
+lblBonusSetBoosterPack=Bonus {0} Booster Pack!
+lblChallengeCompletedBountyIS=Challenge completed.\n\nChallenge bounty: {0} credits.
+lblChallengeRewardsForEvent=Challenge Rewards for "{0}"
+lblYouHaveLostNCredits=You lose! You have lost {0} credits.
+lblGameplayResults=Gameplay Results
\ No newline at end of file
diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties
index d3fbfbaecee..97b54543540 100644
--- a/forge-gui/res/languages/zh-CN.properties
+++ b/forge-gui/res/languages/zh-CN.properties
@@ -372,6 +372,7 @@ lblSealedText2=在现开模式中,你可以从补充包里(最多10个)构
lblSealedText3=从你得到的牌中组一套牌。人工智能也会这样做
lblSealedText4=然后对抗一个或多个人工智能对手
btnBuildNewSealedDeck=构建新的现开套牌
+lblSealedModeInstruction=现开模式说明\r\n\r\n在现开比赛中,每位玩家都会收到六个补充包用于构建自己的套牌。\r\n\r\n由于使用的补充包系列的不同,补充包的内容会有很大的差异。\r\n\r\n来源:维基百科
#FDeckChooser.java
lblViewDeck=查看套牌
lblRandomDeck=随机套牌
@@ -1044,6 +1045,7 @@ lblResetFilters=重置筛选器
#AdvancedSearchFilter.java
lblEditExpression=编辑表达式
lblRemoveFilter=移除筛选器
+lblClearFilter=清除筛选器
#CardZoom.java
lblSwipeUpTo=向上滑动%s
lblSwipeDownDetailView=向下滑动即可切换到详细信息视图
@@ -1870,4 +1872,67 @@ lblChooseAnEdition=选择一个版本
lblChoosePackNumberToPlay=选择想要玩多少包
lblNotFoundCustomSealedFiles=找不到自定义现开文件。
lblChooseCustomSealedPool=选择自定义现开池
-lblHowManyBoosterPacks=多少个补充包?
\ No newline at end of file
+lblHowManyBoosterPacks=多少个补充包?
+#DialogChooseSets.java
+lblDisplayRecentSetRepints=显示来自最新系列的重印版本
+lblSelectRandomSets=选择随机系列
+lblSelectNumber=选择数量
+lblCore=核心
+lblExpansion=扩充
+lblFormatRestrictions=赛制限制
+lblLegacyOrVintage=薪传/特选
+lblModernCardFrame=摩登牌框
+lblNoFormatRestriction=没有赛制限制
+lblRandomizeSets=随机系列
+lblClearSelection=清空选择
+lblShowOptions=显示选项
+lblHideOptions=隐藏选项
+lblCoreSets=核心系列
+lblExpansions=扩充
+lblOtherSets=其他系列
+#CMatchUI.java
+lblAbilities=异能
+#VAutoYields.java
+lblDisableAllAutoYields=禁用所有自动让过
+lblRemoveYield=移除让过
+lblNoActiveAutoYield=没有有效的自动让过
+lblNoAutoYield=没有自动让过
+#GameEntityPicker.java
+lblChoices=选择项
+#ConquestRewardDialog.java
+lblSkip=保留
+#ConquestChaosBattle.java
+lblGreat=大
+#ConquestData.java
+lblExileCard=放逐牌
+lblExileNCard=放逐{0}张牌
+lblExileFollowCardsToReceiveNAE=放逐以下{0}获得{2}个{1}?\n
+lblCurrentPlaneswalkerCannotBeExiled=当前鹏洛克不能被放逐。
+lblCannotCommanderWithDefinedDeck=不能放逐被定义为套牌指挥官的牌。
+lblCardCannotBeExiledCommandersCard={0}无法放逐以下已被使用为指挥官的牌:\n{1}
+lblRetrieveCard=恢复牌
+lblRetrieveNCard=恢复{0}张牌
+lblNotEnoughShardsToRetrieveCards=没有足够的以太碎片可用于恢复{0}。
+lblSpendAECostToRetrieveCardsFromExile=花费{1}个{0}从放逐区恢复{2}?\n
+lblAetherShards=以太碎片
+lblPlaneswalkEmblems=鹏洛克徽记
+lblTotalWins=总胜场
+lblTotalLosses=总败场
+lblConqueredEvents=征服事件
+lblUnlockedCards=已解锁牌张
+#QuestWinLoseController.java
+lblQuitByPayCredits=退出(-15积分)
+lblSpoilsWonAnteCard=战利品!胜利获得的赌注牌
+lblLootedLostAnteCard=抢劫!失去的赌注牌
+lblAchieving25WinStreakAwarded=二十五连胜,你获得了轮抓门票奖励!\n请使用门票生成新的锦标赛。
+lblBonusDraftTokenReward=奖励轮抓门票
+lblAchievedNWinStreakWinMTypeCards=你达成了{0}连胜并赢得了{1}张{2}牌!
+lblJustWonTenRandomRares=你刚赢得了十个随机金
+lblChooseBonusBoosterFormat=选择奖励补充包的赛制
+lblBonusFormatBoosterPack=奖励"{0}"赛制的补充包!
+lblChooseBonusBoosterSet=选择奖励补充包的系列
+lblBonusSetBoosterPack=奖励{0}补充包!
+lblChallengeCompletedBountyIS=挑战已完成。\n\n挑战赏金:{0}积分。
+lblChallengeRewardsForEvent="{0}"的挑战奖励
+lblYouHaveLostNCredits=你输了!你失去了{0}积分。
+lblGameplayResults=游戏结果
\ No newline at end of file
diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestChaosBattle.java b/forge-gui/src/main/java/forge/planarconquest/ConquestChaosBattle.java
index 8cac9046f74..a3797dda638 100644
--- a/forge-gui/src/main/java/forge/planarconquest/ConquestChaosBattle.java
+++ b/forge-gui/src/main/java/forge/planarconquest/ConquestChaosBattle.java
@@ -20,6 +20,7 @@ import forge.quest.QuestEventDuel;
import forge.quest.QuestEventDuelManager;
import forge.quest.QuestWorld;
import forge.util.Aggregates;
+import forge.util.Localizer;
public class ConquestChaosBattle extends ConquestBattle {
private final QuestWorld world;
@@ -122,20 +123,20 @@ public class ConquestChaosBattle extends ConquestBattle {
if (game.isMatchOver()) {
view.getBtnContinue().setVisible(false);
if (game.isMatchWonBy(humanPlayer)) {
- view.getBtnQuit().setText("Great!");
+ view.getBtnQuit().setText(Localizer.getInstance().getMessage("lblGreat") + "!");
model.getChaosBattleRecord().addWin();
setConquered(true);
}
else {
- view.getBtnQuit().setText("OK");
+ view.getBtnQuit().setText(Localizer.getInstance().getMessage("lblOK"));
model.getChaosBattleRecord().addLoss();
}
model.saveData();
}
else {
view.getBtnContinue().setVisible(true);
- view.getBtnContinue().setText("Continue");
- view.getBtnQuit().setText("Quit");
+ view.getBtnContinue().setText(Localizer.getInstance().getMessage("btnContinue"));
+ view.getBtnQuit().setText(Localizer.getInstance().getMessage("btnQuit"));
}
}
diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java
index f1fd227ecc9..01de8f2a783 100644
--- a/forge-gui/src/main/java/forge/planarconquest/ConquestData.java
+++ b/forge-gui/src/main/java/forge/planarconquest/ConquestData.java
@@ -33,6 +33,8 @@ import forge.util.FileUtil;
import forge.util.XmlReader;
import forge.util.XmlWriter;
import forge.util.gui.SOptionPane;
+import forge.util.Localizer;
+import forge.util.CardTranslation;
import java.io.File;
import java.util.*;
@@ -265,15 +267,15 @@ public final class ConquestData {
int count = cards.size();
if (count == 0) { return false; }
- String title = count == 1 ? "Exile Card" : "Exile " + count + " Cards";
- String cardStr = (count == 1 ? "card" : "cards");
+ String title = count == 1 ? Localizer.getInstance().getMessage("lblExileCard") : Localizer.getInstance().getMessage("lblExileNCard", String.valueOf(count));
+ String cardStr = (count == 1 ? Localizer.getInstance().getMessage("lblCard") : Localizer.getInstance().getMessage("lblCards"));
List commandersBeingExiled = null;
- StringBuilder message = new StringBuilder("Exile the following " + cardStr + " to receive {AE}" + value + "?\n");
+ StringBuilder message = new StringBuilder(Localizer.getInstance().getMessage("lblExileFollowCardsToReceiveNAE", cardStr, "{AE}", String.valueOf(value)));
for (PaperCard card : cards) {
if (planeswalker == card) {
- SOptionPane.showMessageDialog("Current planeswalker cannot be exiled.", title, SOptionPane.INFORMATION_ICON);
+ SOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblCurrentPlaneswalkerCannotBeExiled"), title, SOptionPane.INFORMATION_ICON);
return false;
}
@@ -281,7 +283,7 @@ public final class ConquestData {
for (ConquestCommander commander : commanders) {
if (commander.getCard() == card) {
if (!commander.getDeck().getMain().isEmpty()) {
- SOptionPane.showMessageDialog("Cannot exile a commander with a defined deck.", title, SOptionPane.INFORMATION_ICON);
+ SOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblCannotCommanderWithDefinedDeck"), title, SOptionPane.INFORMATION_ICON);
return false;
}
if (commandersBeingExiled == null) {
@@ -290,19 +292,19 @@ public final class ConquestData {
commandersBeingExiled.add(commander); //cache commander to make it easier to remove later
}
if (commander.getDeck().getMain().contains(card)) {
- commandersUsingCard.append("\n").append(commander.getName());
+ commandersUsingCard.append("\n").append(CardTranslation.getTranslatedName(commander.getName()));
}
}
if (commandersUsingCard.length() > 0) {
- SOptionPane.showMessageDialog(card.getName() + " is in use by the following commanders and cannot be exiled:\n" + commandersUsingCard, title, SOptionPane.INFORMATION_ICON);
+ SOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblCommandersCardCannotBeExiledByCard", CardTranslation.getTranslatedName(card.getName()), commandersUsingCard), title, SOptionPane.INFORMATION_ICON);
return false;
}
- message.append("\n").append(card.getName());
+ message.append("\n").append(CardTranslation.getTranslatedName(card.getName()));
}
- if (SOptionPane.showConfirmDialog(message.toString(), title, "OK", "Cancel")) {
+ if (SOptionPane.showConfirmDialog(message.toString(), title, Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel"))) {
if (exiledCards.addAll(cards)) {
if (commandersBeingExiled != null) {
commanders.removeAll(commandersBeingExiled);
@@ -319,18 +321,18 @@ public final class ConquestData {
int count = cards.size();
if (count == 0) { return false; }
- String title = count == 1 ? "Retrieve Card" : "Retrieve " + count + " Cards";
- String cardStr = (count == 1 ? "card" : "cards");
+ String title = count == 1 ? Localizer.getInstance().getMessage("lblRetrieveCard") : Localizer.getInstance().getMessage("lblRetrieveNCard", String.valueOf(count));
+ String cardStr = (count == 1 ? Localizer.getInstance().getMessage("lblCard") : Localizer.getInstance().getMessage("lblCards"));
if (aetherShards < cost) {
- SOptionPane.showMessageDialog("Not enough shards to retrieve " + cardStr + ".", title, SOptionPane.INFORMATION_ICON);
+ SOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblNotEnoughShardsToRetrieveCards", cardStr), title, SOptionPane.INFORMATION_ICON);
return false;
}
- StringBuilder message = new StringBuilder("Spend {AE}" + cost + " to retrieve the following " + cardStr + " from exile?\n");
+ StringBuilder message = new StringBuilder(Localizer.getInstance().getMessage("lblSpendAECostToRetrieveCardsFromExile", "{AE}", String.valueOf(cost), cardStr));
for (PaperCard card : cards) {
message.append("\n").append(card.getName());
}
- if (SOptionPane.showConfirmDialog(message.toString(), title, "OK", "Cancel")) {
+ if (SOptionPane.showConfirmDialog(message.toString(), title, Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel"))) {
if (exiledCards.removeAll(cards)) {
for (PaperCard card : cards) {
if (card.getRules().canBeCommander()) { //add back commander for card if needed
@@ -492,14 +494,14 @@ public final class ConquestData {
commanderCount = commanders.size();
}
- view.getLblAEtherShards().setText("Aether Shards: " + aetherShards);
- view.getLblPlaneswalkEmblems().setText("Planeswalk Emblems: " + planeswalkEmblems);
- view.getLblTotalWins().setText("Total Wins: " + wins);
- view.getLblTotalLosses().setText("Total Losses: " + losses);
- view.getLblConqueredEvents().setText("Conquered Events: " + formatRatio(conqueredCount, totalEventCount));
- view.getLblUnlockedCards().setText("Unlocked Cards: " + formatRatio(unlockedCardCount, totalCardCount));
- view.getLblCommanders().setText("Commanders: " + formatRatio(commanderCount, totalCommanderCount));
- view.getLblPlaneswalkers().setText("Planeswalkers: " + formatRatio(planeswalkerCount, totalPlaneswalkerCount));
+ view.getLblAEtherShards().setText(Localizer.getInstance().getMessage("lblAetherShards") + ": " + aetherShards);
+ view.getLblPlaneswalkEmblems().setText(Localizer.getInstance().getMessage("lblPlaneswalkEmblems") + ": " + planeswalkEmblems);
+ view.getLblTotalWins().setText(Localizer.getInstance().getMessage("lblTotalWins") + ": " + wins);
+ view.getLblTotalLosses().setText(Localizer.getInstance().getMessage("lblTotalLosses") + ": " + losses);
+ view.getLblConqueredEvents().setText(Localizer.getInstance().getMessage("lblConqueredEvents") + ": " + formatRatio(conqueredCount, totalEventCount));
+ view.getLblUnlockedCards().setText(Localizer.getInstance().getMessage("lblUnlockedCards") + ": " + formatRatio(unlockedCardCount, totalCardCount));
+ view.getLblCommanders().setText(Localizer.getInstance().getMessage("lblCommanders") + ": " + formatRatio(commanderCount, totalCommanderCount));
+ view.getLblPlaneswalkers().setText(Localizer.getInstance().getMessage("lblPlaneswalkers") + ": " + formatRatio(planeswalkerCount, totalPlaneswalkerCount));
}
private String formatRatio(int numerator, int denominator) {
diff --git a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java
index bcf80b0526d..486a4aa2da6 100644
--- a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java
+++ b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java
@@ -25,6 +25,7 @@ import forge.quest.data.QuestPreferences.DifficultyPrefs;
import forge.quest.data.QuestPreferences.QPref;
import forge.util.MyRandom;
import forge.util.TextUtil;
+import forge.util.Localizer;
import forge.util.gui.SGuiChoose;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
@@ -72,15 +73,15 @@ public class QuestWinLoseController {
final boolean matchIsNotOver = !lastGame.isMatchOver();
if (matchIsNotOver) {
- view.getBtnQuit().setText("Quit (-15 Credits)");
+ view.getBtnQuit().setText(Localizer.getInstance().getMessage("lblQuitByPayCredits"));
}
else {
view.getBtnContinue().setVisible(false);
if (wonMatch) {
- view.getBtnQuit().setText("Great!");
+ view.getBtnQuit().setText(Localizer.getInstance().getMessage("lblGreat") + "!");
}
else {
- view.getBtnQuit().setText("OK");
+ view.getBtnQuit().setText(Localizer.getInstance().getMessage("lblOK"));
}
}
@@ -160,10 +161,10 @@ public class QuestWinLoseController {
private void anteReport(final List cardsWon, final List cardsLost) {
// Generate Swing components and attach.
if (cardsWon != null && !cardsWon.isEmpty()) {
- view.showCards("Spoils! Cards won from ante", cardsWon);
+ view.showCards(Localizer.getInstance().getMessage("lblSpoilsWonAnteCard"), cardsWon);
}
if (cardsLost != null && !cardsLost.isEmpty()) {
- view.showCards("Looted! Cards lost to ante", cardsLost);
+ view.showCards(Localizer.getInstance().getMessage("lblLootedLostAnteCard"), cardsLost);
}
}
@@ -385,7 +386,7 @@ public class QuestWinLoseController {
sb.append(TextUtil.concatWithSpace(String.valueOf(credTotal), "credits in total."));
qData.getAssets().addCredits(credTotal);
- view.showMessage(sb.toString(), "Gameplay Results", FSkinProp.ICO_QUEST_GOLD);
+ view.showMessage(sb.toString(), Localizer.getInstance().getMessage("lblGameplayResults"), FSkinProp.ICO_QUEST_GOLD);
}
/**
@@ -468,12 +469,12 @@ public class QuestWinLoseController {
}
if (addDraftToken) {
- view.showMessage("For achieving a 25 win streak, you have been awarded a draft token!\nUse these tokens to generate new tournaments.", "Bonus Draft Token Reward", FSkinProp.ICO_QUEST_COIN);
+ view.showMessage(Localizer.getInstance().getMessage("lblAchieving25WinStreakAwarded"), Localizer.getInstance().getMessage("lblBonusDraftTokenReward"), FSkinProp.ICO_QUEST_COIN);
qData.getAchievements().addDraftToken();
}
if (!cardsWon.isEmpty()) {
- view.showCards("You have achieved a " + (currentStreak == 0 ? "50" : currentStreak) + " win streak and won " + cardsWon.size() + " " + typeWon + " card" + ((cardsWon.size() != 1) ? "s" : "") + "!", cardsWon);
+ view.showCards(Localizer.getInstance().getMessage("lblAchievedNWinStreakWinMCards", (currentStreak == 0 ? "50" : String.valueOf(currentStreak)), String.valueOf(cardsWon.size()), typeWon), cardsWon);
}
}
@@ -486,7 +487,7 @@ public class QuestWinLoseController {
*/
private void awardJackpot() {
final List cardsWon = qData.getCards().addRandomRare(10);
- view.showCards("You just won 10 random rares!", cardsWon);
+ view.showCards(Localizer.getInstance().getMessage("lblJustWonTenRandomRares"), cardsWon);
}
/**
@@ -515,13 +516,13 @@ public class QuestWinLoseController {
Collections.sort(formats);
- final GameFormat selected = SGuiChoose.getChoices("Choose bonus booster format", 1, 1, formats, pref, null).get(0);
+ final GameFormat selected = SGuiChoose.getChoices(Localizer.getInstance().getMessage("lblChooseBonusBoosterFormat"), 1, 1, formats, pref, null).get(0);
FModel.getQuestPreferences().setPref(QPref.BOOSTER_FORMAT, selected.toString());
cardsWon = qData.getCards().generateQuestBooster(selected.getFilterPrinted());
qData.getCards().addAllCards(cardsWon);
- title = "Bonus booster pack from the \"" + selected.getName() + "\" format!";
+ title = Localizer.getInstance().getMessage("lblBonusFormatBoosterPack", selected.getName());
} else {
@@ -566,7 +567,7 @@ public class QuestWinLoseController {
maxChoices--;
}
- final CardEdition chooseEd = SGuiChoose.one("Choose bonus booster set", options);
+ final CardEdition chooseEd = SGuiChoose.one(Localizer.getInstance().getMessage("lblChooseBonusBoosterSet"), options);
if (customBooster) {
List cards = FModel.getMagicDb().getCommonCards().getAllCards(Predicates.printedInSet(chooseEd.getCode()));
@@ -578,7 +579,7 @@ public class QuestWinLoseController {
}
qData.getCards().addAllCards(cardsWon);
- title = "Bonus " + chooseEd.getName() + " Booster Pack!";
+ title = Localizer.getInstance().getMessage("lblBonusSetBoosterPack", chooseEd.getName());
}
@@ -606,18 +607,14 @@ public class QuestWinLoseController {
private void awardChallengeWin() {
final long questRewardCredits = ((QuestEventChallenge) qEvent).getCreditsReward();
- final StringBuilder sb = new StringBuilder();
- sb.append("Challenge completed.\n\n");
- sb.append("Challenge bounty: ").append(questRewardCredits).append(" credits.");
-
String winMessage = ((QuestEventChallenge)qEvent).getWinMessage();
if (!winMessage.isEmpty()) {
- view.showMessage(winMessage.replace("\\n", "\n"), "Congratulations", FSkinProp.ICO_QUEST_NOTES);
+ view.showMessage(winMessage.replace("\\n", "\n"), Localizer.getInstance().getMessage("lblCongratulations"), FSkinProp.ICO_QUEST_NOTES);
}
qData.getAssets().addCredits(questRewardCredits);
- view.showMessage(sb.toString(), "Challenge Rewards for \"" + qEvent.getTitle() + "\"", FSkinProp.ICO_QUEST_BOX);
+ view.showMessage(Localizer.getInstance().getMessage("lblChallengeCompletedBountyIS", String.valueOf(questRewardCredits)), Localizer.getInstance().getMessage("lblChallengeRewardsForEvent", qEvent.getTitle()), FSkinProp.ICO_QUEST_BOX);
awardSpecialReward(null);
}
@@ -676,7 +673,7 @@ public class QuestWinLoseController {
private void penalizeLoss() {
final int x = FModel.getQuestPreferences().getPrefInt(QPref.PENALTY_LOSS);
- view.showMessage("You lose! You have lost " + x + " credits.", "Gameplay Results", FSkinProp.ICO_QUEST_HEART);
+ view.showMessage(Localizer.getInstance().getMessage("lblYouHaveLostNCredits", String.valueOf(x)), Localizer.getInstance().getMessage("lblGameplayResults"), FSkinProp.ICO_QUEST_HEART);
}
/**
diff --git a/forge-gui/src/main/java/forge/util/gui/SOptionPane.java b/forge-gui/src/main/java/forge/util/gui/SOptionPane.java
index 72c2e8e96a6..173666cad57 100644
--- a/forge-gui/src/main/java/forge/util/gui/SOptionPane.java
+++ b/forge-gui/src/main/java/forge/util/gui/SOptionPane.java
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList;
import forge.GuiBase;
import forge.assets.FSkinProp;
+import forge.util.Localizer;
public class SOptionPane {
public static final FSkinProp QUESTION_ICON = FSkinProp.ICO_QUESTION;
@@ -30,7 +31,7 @@ public class SOptionPane {
}
public static void showMessageDialog(final String message, final String title, final FSkinProp icon) {
- showOptionDialog(message, title, icon, ImmutableList.of("OK"), 0);
+ showOptionDialog(message, title, icon, ImmutableList.of(Localizer.getInstance().getMessage("lblOK")), 0);
}
public static boolean showConfirmDialog(final String message) {
@@ -38,11 +39,11 @@ public class SOptionPane {
}
public static boolean showConfirmDialog(final String message, final String title) {
- return showConfirmDialog(message, title, "Yes", "No", true);
+ return showConfirmDialog(message, title, Localizer.getInstance().getMessage("lblYes"), Localizer.getInstance().getMessage("lblNo"), true);
}
public static boolean showConfirmDialog(final String message, final String title, final boolean defaultYes) {
- return showConfirmDialog(message, title, "Yes", "No", defaultYes);
+ return showConfirmDialog(message, title, Localizer.getInstance().getMessage("lblYes"), Localizer.getInstance().getMessage("lblNo"), defaultYes);
}
public static boolean showConfirmDialog(final String message, final String title, final String yesButtonText, final String noButtonText) {