diff --git a/forge-gui-mobile/src/forge/card/CardZoom.java b/forge-gui-mobile/src/forge/card/CardZoom.java index b3cdd3a599a..c0f8130e634 100644 --- a/forge-gui-mobile/src/forge/card/CardZoom.java +++ b/forge-gui-mobile/src/forge/card/CardZoom.java @@ -27,6 +27,7 @@ import forge.screens.match.MatchController; import forge.toolbox.FCardPanel; import forge.toolbox.FDialog; import forge.toolbox.FOverlay; +import forge.util.Localizer; import forge.util.collect.FCollectionView; import forge.util.Utils; @@ -281,10 +282,10 @@ public class CardZoom extends FOverlay { if (currentActivateAction != null) { g.fillRect(FDialog.MSG_BACK_COLOR, 0, 0, w, messageHeight); - g.drawText("Swipe up to " + currentActivateAction, FDialog.MSG_FONT, FDialog.MSG_FORE_COLOR, 0, 0, w, messageHeight, false, Align.center, true); + g.drawText(Localizer.getInstance().getMessage("lblSwipeUpTo").replace("%s", currentActivateAction), FDialog.MSG_FONT, FDialog.MSG_FORE_COLOR, 0, 0, w, messageHeight, false, Align.center, true); } g.fillRect(FDialog.MSG_BACK_COLOR, 0, h - messageHeight, w, messageHeight); - g.drawText("Swipe down to switch to " + (zoomMode ? "detail" : "picture") + " view", FDialog.MSG_FONT, FDialog.MSG_FORE_COLOR, 0, h - messageHeight, w, messageHeight, false, Align.center, true); + g.drawText(zoomMode ? Localizer.getInstance().getMessage("lblSwipeDownDetailView") : Localizer.getInstance().getMessage("lblSwipeDownPictureView"), FDialog.MSG_FONT, FDialog.MSG_FORE_COLOR, 0, h - messageHeight, w, messageHeight, false, Align.center, true); } @Override diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 742c79d40fe..b62ea91d363 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -73,6 +73,7 @@ public class FDeckChooser extends FScreen { private boolean isAi; private final ForgePreferences prefs = FModel.getPreferences(); + private final Localizer localizer = Localizer.getInstance(); private FPref stateSetting = null; private FOptionPane optionPane; @@ -98,7 +99,7 @@ public class FDeckChooser extends FScreen { container.add(deckChooser.lstDecks); container.setHeight(FOptionPane.getMaxDisplayObjHeight()); - deckChooser.optionPane = new FOptionPane(null, null, title, null, container, ImmutableList.of("OK", "Cancel"), 0, new Callback() { + deckChooser.optionPane = new FOptionPane(null, null, title, null, container, ImmutableList.of(Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel")), 0, new Callback() { @Override public void run(Integer result) { if (result == 0) { @@ -309,7 +310,7 @@ public class FDeckChooser extends FScreen { editor = new FDeckEditor(getEditorType(), generatedDeck, true); } else { - FOptionPane.showErrorDialog("You must select something before you can generate a new deck."); + FOptionPane.showErrorDialog(localizer.getMessage("lblMustSelectGenerateNewDeck")); return; } break; @@ -377,9 +378,10 @@ public class FDeckChooser extends FScreen { return; } + //prompt to duplicate deck if deck doesn't exist already - FOptionPane.showConfirmDialog(selectedDeckType + " cannot be edited directly. Would you like to duplicate " + deck.getName() + " for editing as a custom user deck?", - "Duplicate Deck?", "Duplicate", "Cancel", new Callback() { + FOptionPane.showConfirmDialog(selectedDeckType + " " + localizer.getMessage("lblCannotEditDuplicateCustomDeck").replace("%s", deck.getName()), + localizer.getMessage("lblDuplicateDeck"), localizer.getMessage("lblDuplicate"), localizer.getMessage("lblCancel"), new Callback() { @Override public void run(Boolean result) { if (result) { @@ -770,16 +772,16 @@ public class FDeckChooser extends FScreen { btnViewDeck.setVisible(false); btnRandom.setWidth(btnNewDeck.getWidth()); - btnNewDeck.setText("Generate New Deck"); + btnNewDeck.setText(localizer.getMessage("lblGenerateNewDeck")); switch (deckType) { case COLOR_DECK: - btnRandom.setText("Random Colors"); + btnRandom.setText(localizer.getMessage("lblRandomColors")); break; case THEME_DECK: - btnRandom.setText("Random Theme"); + btnRandom.setText(localizer.getMessage("lblRandomTheme")); break; default: - btnRandom.setText("Random Deck"); + btnRandom.setText(localizer.getMessage("lblRandomDeck")); break; } } @@ -789,11 +791,11 @@ public class FDeckChooser extends FScreen { btnViewDeck.setVisible(true); btnRandom.setWidth(btnNewDeck.getWidth()); - btnNewDeck.setText("New Deck"); + btnNewDeck.setText(localizer.getMessage("lblNewDeck")); if (lstDecks.getGameType() == GameType.DeckManager) { //handle special case of Deck Editor screen where this button will start a game with the deck - btnRandom.setText("Test Deck"); + btnRandom.setText(localizer.getMessage("lblTestDeck")); switch (selectedDeckType) { case SCHEME_DECK: @@ -806,7 +808,7 @@ public class FDeckChooser extends FScreen { } } else { - btnRandom.setText("Random Deck"); + btnRandom.setText(localizer.getMessage("lblRandomDeck")); } } @@ -1063,7 +1065,7 @@ public class FDeckChooser extends FScreen { return; } - GuiChoose.getInteger("How many opponents are you willing to face?", 1, 50, new Callback() { + GuiChoose.getInteger(localizer.getMessage("lblHowManyOpponents"), 1, 50, new Callback() { @Override public void run(final Integer numOpponents) { if (numOpponents == null) { return; } @@ -1089,7 +1091,7 @@ public class FDeckChooser extends FScreen { } ListChooser chooser = new ListChooser<>( - "Choose allowed deck types for opponents", 0, deckTypes.size(), deckTypes, null, new Callback>() { + localizer.getMessage("lblChooseAllowedDeckTypeOpponents"), 0, deckTypes.size(), deckTypes, null, new Callback>() { @Override public void run(final List allowedDeckTypes) { if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) { @@ -1109,7 +1111,7 @@ public class FDeckChooser extends FScreen { FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { - LoadingOverlay.show("Loading new game...", new Runnable() { + LoadingOverlay.show(localizer.getMessage("lblLoadingNewGame"), new Runnable() { @Override public void run() { GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, netCat); @@ -1135,12 +1137,12 @@ public class FDeckChooser extends FScreen { } private void testVariantDeck(final Deck userDeck, final GameType variant) { - promptForDeck("Select Opponent's Deck", variant, true, new Callback() { + promptForDeck(localizer.getMessage("lblSelectOpponentDeck"), variant, true, new Callback() { @Override public void run(final Deck aiDeck) { if (aiDeck == null) { return; } - LoadingOverlay.show("Loading new game...", new Runnable() { + LoadingOverlay.show(localizer.getMessage("lblLoadingNewGame"), new Runnable() { @Override public void run() { Set appliedVariants = new HashSet<>(); diff --git a/forge-gui-mobile/src/forge/itemmanager/DeckManager.java b/forge-gui-mobile/src/forge/itemmanager/DeckManager.java index d48e2a6e067..363a70bf27a 100644 --- a/forge-gui-mobile/src/forge/itemmanager/DeckManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/DeckManager.java @@ -18,6 +18,7 @@ import forge.itemmanager.filters.DeckFormatFilter; import forge.itemmanager.filters.TextSearchFilter; import forge.toolbox.FList; import forge.toolbox.FList.CompactModeHandler; +import forge.util.Localizer; import forge.util.Utils; import com.badlogic.gdx.utils.Align; @@ -39,7 +40,7 @@ public final class DeckManager extends ItemManager implements IHasGam public DeckManager(final GameType gt) { super(DeckProxy.class, true); gameType = gt; - setCaption("Decks"); + setCaption(Localizer.getInstance().getMessage("lblDecks")); } public GameType getGameType() { diff --git a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java index 96c381e1d5b..ecd6f10b0e9 100644 --- a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java @@ -53,6 +53,7 @@ import forge.toolbox.FList; import forge.toolbox.FList.CompactModeHandler; import forge.util.ItemPool; import forge.util.LayoutHelper; +import forge.util.Localizer; import java.util.*; import java.util.Map.Entry; @@ -125,7 +126,7 @@ public abstract class ItemManager extends FContainer im add(btnAdvancedSearchOptions); btnAdvancedSearchOptions.setSelected(!hideFilters); if (allowSortChange()) { - cbxSortOptions = add(new FComboBox<>("Sort: ")); + cbxSortOptions = add(new FComboBox<>(Localizer.getInstance().getMessage("lblSort") + ": ")); cbxSortOptions.setFont(FSkinFont.get(12)); } else { @@ -140,7 +141,7 @@ public abstract class ItemManager extends FContainer im FPopupMenu menu = new FPopupMenu() { @Override protected void buildMenu() { - addItem(new FMenuItem("Advanced Search", FSkinImage.SEARCH, new FEventHandler() { + addItem(new FMenuItem(Localizer.getInstance().getMessage("lblAdvancedSearch"), FSkinImage.SEARCH, new FEventHandler() { @Override public void handleEvent(FEvent e) { if (advancedSearchFilter == null) { @@ -150,7 +151,7 @@ public abstract class ItemManager extends FContainer im advancedSearchFilter.edit(); } })); - addItem(new FMenuItem("Reset Filters", FSkinImage.DELETE, new FEventHandler() { + addItem(new FMenuItem(Localizer.getInstance().getMessage("lblResetFilters"), FSkinImage.DELETE, new FEventHandler() { @Override public void handleEvent(FEvent e) { resetFilters(); @@ -261,7 +262,7 @@ public abstract class ItemManager extends FContainer im } if (cbxSortOptions != null) { - cbxSortOptions.setText("(none)"); + cbxSortOptions.setText("(" + Localizer.getInstance().getMessage("lblNone") + ")"); } model.getCascadeManager().reset(); diff --git a/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java b/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java index 66d9bc0c8e8..444db64407e 100644 --- a/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java @@ -19,6 +19,7 @@ import forge.itemmanager.filters.TextSearchFilter; import forge.quest.QuestSpellShop; import forge.toolbox.FList; import forge.toolbox.FList.CompactModeHandler; +import forge.util.Localizer; public class SpellShopManager extends ItemManager { @@ -29,7 +30,7 @@ public class SpellShopManager extends ItemManager { fnGetPrice = isShop0 ? QuestSpellShop.fnPriceGet : QuestSpellShop.fnPriceSellGet; if (!isShop0) { - setCaption("Cards"); + setCaption(Localizer.getInstance().getMessage("lblCards")); } } diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java index 58327e7245c..d028f3812be 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java @@ -25,6 +25,7 @@ import forge.toolbox.FTextField; import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FLabel; import forge.util.Callback; +import forge.util.Localizer; public class AdvancedSearchFilter extends ItemFilter { @@ -126,13 +127,13 @@ public class AdvancedSearchFilter extends ItemFilter item.setTextRenderer(new TextRenderer()); //ensure symbols are displayed addItem(item); } - addItem(new FMenuItem("Edit Expression", FSkinImage.EDIT, new FEventHandler() { + addItem(new FMenuItem(Localizer.getInstance().getMessage("lblEditExpression"), FSkinImage.EDIT, new FEventHandler() { @Override public void handleEvent(FEvent e) { edit(); } })); - addItem(new FMenuItem("Remove Filter", FSkinImage.DELETE, new FEventHandler() { + addItem(new FMenuItem(Localizer.getInstance().getMessage("lblRemoveFilter"), FSkinImage.DELETE, new FEventHandler() { @Override public void handleEvent(FEvent e) { reset(); @@ -176,7 +177,7 @@ public class AdvancedSearchFilter extends ItemFilter }); private EditScreen() { - super("Advanced Search"); + super(Localizer.getInstance().getMessage("lblAdvancedSearch")); Filter filter = new Filter(); model.addFilterControl(filter); scroller.add(filter); diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 8261e525f40..1833745ddfc 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -30,6 +30,7 @@ import forge.toolbox.FTextField; import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FLabel; import forge.toolbox.FScrollPane; +import forge.util.Localizer; import forge.util.Utils; import java.util.*; @@ -358,7 +359,7 @@ public class ImageView extends ItemView { otherItems = groups.get(groups.size() - 1); } else { - otherItems = new Group("Other"); + otherItems = new Group(Localizer.getInstance().getMessage("lblOther")); otherItems.isCollapsed = btnExpandCollapseAll.isAllCollapsed; groups.add(otherItems); } diff --git a/forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java b/forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java index 562d9ea1454..5fa5dfac739 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java +++ b/forge-gui-mobile/src/forge/screens/constructed/AvatarSelector.java @@ -12,6 +12,7 @@ import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FLabel; import forge.toolbox.FScrollPane; import forge.util.Callback; +import forge.util.Localizer; import forge.util.MyRandom; import forge.util.Utils; @@ -63,7 +64,7 @@ public class AvatarSelector extends FScreen { }; private AvatarSelector(final String playerName, final int currentIndex0, final List usedAvatars0, final Callback callback0) { - super("Select Avatar for " + playerName); + super(Localizer.getInstance().getMessage("lblSelectAvatarFor").replace("%s",playerName)); currentIndex = currentIndex0; usedAvatars = usedAvatars0; diff --git a/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java b/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java index b111fa139f4..70e8fafed64 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java +++ b/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java @@ -3,6 +3,7 @@ package forge.screens.constructed; import java.util.*; import forge.deck.*; +import forge.util.Localizer; import org.apache.commons.lang3.StringUtils; import com.badlogic.gdx.Gdx; @@ -49,12 +50,13 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { // General variables private GameLobby lobby; private IPlayerChangeListener playerChangeListener = null; - private final FLabel lblPlayers = new FLabel.Builder().text("Players:").font(VARIANTS_FONT).build(); + final Localizer localizer = Localizer.getInstance(); + private final FLabel lblPlayers = new FLabel.Builder().text(localizer.getMessage("lblPlayers") + ":").font(VARIANTS_FONT).build(); private final FComboBox cbPlayerCount; private final Deck[] decks = new Deck[MAX_PLAYERS]; // Variants frame and variables - private final FLabel lblVariants = new FLabel.Builder().text("Variants:").font(VARIANTS_FONT).build(); + private final FLabel lblVariants = new FLabel.Builder().text(localizer.getMessage("lblVariants") + ":").font(VARIANTS_FONT).build(); private final FComboBox cbVariants = new FComboBox<>(); private final List playerPanels = new ArrayList<>(MAX_PLAYERS); @@ -117,7 +119,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { add(lblVariants); add(cbVariants); cbVariants.setFont(VARIANTS_FONT); - cbVariants.addItem("(None)"); + cbVariants.addItem("(" + localizer.getMessage("lblNone") + ")"); cbVariants.addItem(GameType.Vanguard); cbVariants.addItem(GameType.MomirBasic); cbVariants.addItem(GameType.MoJhoSto); @@ -128,7 +130,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { cbVariants.addItem(GameType.Planechase); cbVariants.addItem(GameType.Archenemy); cbVariants.addItem(GameType.ArchenemyRumble); - cbVariants.addItem("More...."); + cbVariants.addItem(localizer.getMessage("lblMore")); cbVariants.setChangedHandler(new FEventHandler() { @Override public void handleEvent(FEvent e) { @@ -282,7 +284,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { - LoadingOverlay.show("Loading new game...", startGame); + LoadingOverlay.show(localizer.getMessage("lblLoadingNewGame"), startGame); } }); } @@ -312,7 +314,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { // Name String prefName = prefs.getPref(FPref.PLAYER_NAME); - playerPanels.get(0).setPlayerName(StringUtils.isBlank(prefName) ? "Human" : prefName); + playerPanels.get(0).setPlayerName(StringUtils.isBlank(prefName) ? Localizer.getInstance().getMessage("lblHuman") : prefName); } List getUsedAvatars() { @@ -347,7 +349,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { private final FList lstVariants = add(new FList<>()); private MultiVariantSelect() { - super("Select Variants"); + super(Localizer.getInstance().getMessage("lblSelectVariants")); lstVariants.setListItemRenderer(new VariantRenderer()); lstVariants.addItem(new Variant(GameType.Vanguard)); @@ -625,7 +627,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { if (ready) { updateDeck(index); if (decks[index] == null) { - FOptionPane.showErrorDialog("Select a deck before readying!"); + FOptionPane.showErrorDialog(localizer.getMessage("msgSelectAdeckBeforeReadying")); update(false); return; } diff --git a/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java b/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java index 22a48093b2e..1f2e28ff3ad 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java +++ b/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java @@ -4,6 +4,7 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import forge.util.*; import org.apache.commons.lang3.StringUtils; import com.badlogic.gdx.utils.Align; import com.google.common.collect.ImmutableList; @@ -39,10 +40,6 @@ import forge.toolbox.FOptionPane; import forge.toolbox.FTextField; import forge.toolbox.FToggleSwitch; import forge.toolbox.FEvent.FEventHandler; -import forge.util.Callback; -import forge.util.Lang; -import forge.util.NameGenerator; -import forge.util.Utils; public class PlayerPanel extends FContainer { private static final ForgePreferences prefs = FModel.getPreferences(); @@ -60,21 +57,22 @@ public class PlayerPanel extends FContainer { private final FLabel avatarLabel = new FLabel.Builder().opaque(true).iconScaleFactor(0.99f).alphaComposite(1).iconInBackground(true).build(); private int avatarIndex; - private final FTextField txtPlayerName = new FTextField("Player name"); + final Localizer localizer = Localizer.getInstance(); + private final FTextField txtPlayerName = new FTextField(localizer.getMessage("lblPlayerName")); private final FToggleSwitch humanAiSwitch; private final FToggleSwitch devModeSwitch; private FComboBox cbTeam = new FComboBox<>(); private FComboBox cbArchenemyTeam = new FComboBox<>(); - private final FLabel btnDeck = new FLabel.ButtonBuilder().text("Loading Deck...").build(); - private final FLabel btnSchemeDeck = new FLabel.ButtonBuilder().text("Scheme Deck: Random Generated Deck").build(); - private final FLabel btnCommanderDeck = new FLabel.ButtonBuilder().text("Commander Deck: Random Generated Deck").build(); - private final FLabel btnOathbreakDeck = new FLabel.ButtonBuilder().text("Oathbreaker Deck: Random Generated Deck").build(); - private final FLabel btnTinyLeadersDeck = new FLabel.ButtonBuilder().text("Tiny Leaders Deck: Random Generated Deck").build(); - private final FLabel btnBrawlDeck = new FLabel.ButtonBuilder().text("Brawl Deck: Random Generated Deck").build(); - private final FLabel btnPlanarDeck = new FLabel.ButtonBuilder().text("Planar Deck: Random Generated Deck").build(); - private final FLabel btnVanguardAvatar = new FLabel.ButtonBuilder().text("Vanguard Avatar: Random").build(); + private final FLabel btnDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblLoadingDeck")).build(); + private final FLabel btnSchemeDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblSchemeDeckRandomGenerated")).build(); + private final FLabel btnCommanderDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblCommanderDeckRandomGenerated")).build(); + private final FLabel btnOathbreakDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblOathbreakerDeckRandomGenerated")).build(); + private final FLabel btnTinyLeadersDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblTinyLeadersDeckRandomGenerated")).build(); + private final FLabel btnBrawlDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblBrawlDeckRandomGenerated")).build(); + private final FLabel btnPlanarDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblPlanarDeckRandomGenerated")).build(); + private final FLabel btnVanguardAvatar = new FLabel.ButtonBuilder().text(localizer.getMessage("lblVanguardAvatarRandom")).build(); private final FDeckChooser deckChooser, lstSchemeDecks, lstCommanderDecks, lstOathbreakerDecks, lstTinyLeadersDecks, lstBrawlDecks, lstPlanarDecks; private final FVanguardChooser lstVanguardAvatars; @@ -84,10 +82,10 @@ public class PlayerPanel extends FContainer { screen = screen0; allowNetworking = allowNetworking0; if (allowNetworking) { - humanAiSwitch = new FToggleSwitch("Not Ready", "Ready"); + humanAiSwitch = new FToggleSwitch(localizer.getMessage("lblNotReady"), localizer.getMessage("lblReady")); } else { - humanAiSwitch = new FToggleSwitch("Human", "AI"); + humanAiSwitch = new FToggleSwitch(localizer.getMessage("lblHuman"), localizer.getMessage("lblAI")); } index = index0; populateTeamsComboBoxes(); @@ -97,7 +95,7 @@ public class PlayerPanel extends FContainer { setPlayerName(slot.getName()); setAvatarIndex(slot.getAvatarIndex()); - devModeSwitch = new FToggleSwitch("Normal", "Dev Mode"); + devModeSwitch = new FToggleSwitch(localizer.getMessage("lblNormal"), localizer.getMessage("lblDevMode")); devModeSwitch.setVisible(isNetworkHost()); cbTeam.setEnabled(true); @@ -117,10 +115,10 @@ public class PlayerPanel extends FContainer { @Override public void handleEvent(FEvent e) { if( ((DeckManager)e.getSource()).getSelectedItem() != null) { - btnCommanderDeck.setText("Commander Deck: " + ((DeckManager) e.getSource()).getSelectedItem().getName()); + btnCommanderDeck.setText(localizer.getMessage("lblCommanderDeck") + ": " + ((DeckManager) e.getSource()).getSelectedItem().getName()); lstCommanderDecks.saveState(); }else{ - btnCommanderDeck.setText("Commander Deck"); + btnCommanderDeck.setText(localizer.getMessage("lblCommanderDeck")); } } }); @@ -128,10 +126,10 @@ public class PlayerPanel extends FContainer { @Override public void handleEvent(FEvent e) { if( ((DeckManager)e.getSource()).getSelectedItem() != null) { - btnOathbreakDeck.setText("Oathbreaker Deck: " + ((DeckManager) e.getSource()).getSelectedItem().getName()); + btnOathbreakDeck.setText(localizer.getMessage("lblOathbreakerDeck") + ": " + ((DeckManager) e.getSource()).getSelectedItem().getName()); lstOathbreakerDecks.saveState(); }else{ - btnOathbreakDeck.setText("Oathbreaker Deck"); + btnOathbreakDeck.setText(localizer.getMessage("lblOathbreakerDeck")); } } }); @@ -139,10 +137,10 @@ public class PlayerPanel extends FContainer { @Override public void handleEvent(FEvent e) { if( ((DeckManager)e.getSource()).getSelectedItem() != null) { - btnTinyLeadersDeck.setText("Tiny Leaders Deck: " + ((DeckManager) e.getSource()).getSelectedItem().getName()); + btnTinyLeadersDeck.setText(localizer.getMessage("lblTinyLeadersDeck") + ": " + ((DeckManager) e.getSource()).getSelectedItem().getName()); lstTinyLeadersDecks.saveState(); }else{ - btnTinyLeadersDeck.setText("Tiny Leaders Deck"); + btnTinyLeadersDeck.setText(localizer.getMessage("lblTinyLeadersDeck")); } } }); @@ -150,10 +148,10 @@ public class PlayerPanel extends FContainer { @Override public void handleEvent(FEvent e) { if( ((DeckManager)e.getSource()).getSelectedItem() != null) { - btnBrawlDeck.setText("Brawl Deck: " + ((DeckManager) e.getSource()).getSelectedItem().getName()); + btnBrawlDeck.setText(localizer.getMessage("lblBrawlDeck") + ": " + ((DeckManager) e.getSource()).getSelectedItem().getName()); lstBrawlDecks.saveState(); }else{ - btnBrawlDeck.setText("Brawl Deck"); + btnBrawlDeck.setText(localizer.getMessage("lblBrawlDeck")); } } }); @@ -161,9 +159,9 @@ public class PlayerPanel extends FContainer { @Override public void handleEvent(FEvent e) { if( ((DeckManager)e.getSource()).getSelectedItem() != null){ - btnSchemeDeck.setText("Scheme Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName()); + btnSchemeDeck.setText(localizer.getMessage("lblSchemeDeck") + ": " + ((DeckManager)e.getSource()).getSelectedItem().getName()); }else{ - btnSchemeDeck.setText("Scheme Deck"); + btnSchemeDeck.setText(localizer.getMessage("lblSchemeDeck")); } } }); @@ -171,16 +169,16 @@ public class PlayerPanel extends FContainer { @Override public void handleEvent(FEvent e) { if( ((DeckManager)e.getSource()).getSelectedItem() != null){ - btnPlanarDeck.setText("Planar Deck: " + ((DeckManager)e.getSource()).getSelectedItem().getName()); + btnPlanarDeck.setText(localizer.getMessage("lblPlanarDeck") + ": " + ((DeckManager)e.getSource()).getSelectedItem().getName()); }else{ - btnPlanarDeck.setText("Planar Deck"); + btnPlanarDeck.setText(localizer.getMessage("lblPlanarDeck")); } } }); lstVanguardAvatars = new FVanguardChooser(isAi, new FEventHandler() { @Override public void handleEvent(FEvent e) { - btnVanguardAvatar.setText("Vanguard: " + ((CardManager)e.getSource()).getSelectedItem().getName()); + btnVanguardAvatar.setText(localizer.getMessage("lblVanguard") + ": " + ((CardManager)e.getSource()).getSelectedItem().getName()); } }); @@ -188,7 +186,7 @@ public class PlayerPanel extends FContainer { add(avatarLabel); createNameEditor(); - add(newLabel("Name:")); + add(newLabel(localizer.getMessage("lblName") + ":")); add(txtPlayerName); nameRandomiser = createNameRandomizer(); @@ -197,7 +195,7 @@ public class PlayerPanel extends FContainer { humanAiSwitch.setChangedHandler(humanAiSwitched); add(humanAiSwitch); - add(newLabel("Team:")); + add(newLabel(localizer.getMessage("lblTeam") + ":")); cbTeam.setChangedHandler(teamChangedHandler); cbArchenemyTeam.setChangedHandler(teamChangedHandler); add(cbTeam); @@ -211,7 +209,7 @@ public class PlayerPanel extends FContainer { btnDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - deckChooser.setHeaderCaption("Select Deck for " + txtPlayerName.getText()); + deckChooser.setHeaderCaption(localizer.getMessage("lblSelectDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(deckChooser); } }); @@ -219,7 +217,7 @@ public class PlayerPanel extends FContainer { btnCommanderDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstCommanderDecks.setHeaderCaption("Select Commander Deck for " + txtPlayerName.getText()); + lstCommanderDecks.setHeaderCaption(localizer.getMessage("lblSelectCommanderDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstCommanderDecks); } }); @@ -227,7 +225,7 @@ public class PlayerPanel extends FContainer { btnOathbreakDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstOathbreakerDecks.setHeaderCaption("Select Oathbreaker Deck for " + txtPlayerName.getText()); + lstOathbreakerDecks.setHeaderCaption(localizer.getMessage("lblSelectOathbreakerDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstOathbreakerDecks); } }); @@ -235,7 +233,7 @@ public class PlayerPanel extends FContainer { btnTinyLeadersDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstTinyLeadersDecks.setHeaderCaption("Select Tiny Leaders Deck for " + txtPlayerName.getText()); + lstTinyLeadersDecks.setHeaderCaption(localizer.getMessage("lblSelectTinyLeadersDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstTinyLeadersDecks); } }); @@ -243,7 +241,7 @@ public class PlayerPanel extends FContainer { btnBrawlDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstBrawlDecks.setHeaderCaption("Select Brawl Deck for " + txtPlayerName.getText()); + lstBrawlDecks.setHeaderCaption(localizer.getMessage("lblSelectBrawlDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstBrawlDecks); } }); @@ -251,7 +249,7 @@ public class PlayerPanel extends FContainer { btnSchemeDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstSchemeDecks.setHeaderCaption("Select Scheme Deck for " + txtPlayerName.getText()); + lstSchemeDecks.setHeaderCaption(localizer.getMessage("lblSelectSchemeDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstSchemeDecks); } }); @@ -259,7 +257,7 @@ public class PlayerPanel extends FContainer { btnPlanarDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstPlanarDecks.setHeaderCaption("Select Planar Deck for " + txtPlayerName.getText()); + lstPlanarDecks.setHeaderCaption(localizer.getMessage("lblSelectPlanarDeckFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstPlanarDecks); } }); @@ -267,7 +265,7 @@ public class PlayerPanel extends FContainer { btnVanguardAvatar.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - lstVanguardAvatars.setHeaderCaption("Select Vanguard for " + txtPlayerName.getText()); + lstVanguardAvatars.setHeaderCaption(localizer.getMessage("lblSelectVanguardFor").replace("%s", txtPlayerName.getText())); Forge.openScreen(lstVanguardAvatars); } }); @@ -565,11 +563,11 @@ public class PlayerPanel extends FContainer { } private void populateTeamsComboBoxes() { - cbArchenemyTeam.addItem("Archenemy"); - cbArchenemyTeam.addItem("Heroes"); + cbArchenemyTeam.addItem(localizer.getMessage("lblArchenemy")); + cbArchenemyTeam.addItem(localizer.getMessage("lblHeroes")); for (int i = 1; i <= LobbyScreen.MAX_PLAYERS; i++) { - cbTeam.addItem("Team " + i); + cbTeam.addItem(localizer.getMessage("lblTeam") + " " + i); } cbTeam.setEnabled(mayEdit); } @@ -639,7 +637,7 @@ public class PlayerPanel extends FContainer { if (index == 0) { name = FModel.getPreferences().getPref(FPref.PLAYER_NAME); if (name.isEmpty()) { - name = "Human"; + name = localizer.getMessage("lblHuman"); } } else { @@ -837,11 +835,11 @@ public class PlayerPanel extends FContainer { return new FLabel.Builder().text(title).font(LABEL_FONT).align(Align.right).build(); } - private static final ImmutableList genderOptions = ImmutableList.of("Male", "Female", "Any"); - private static final ImmutableList typeOptions = ImmutableList.of("Fantasy", "Generic", "Any"); + private static final ImmutableList genderOptions = ImmutableList.of(Localizer.getInstance().getMessage("lblMale"), Localizer.getInstance().getMessage("lblFemale"), Localizer.getInstance().getMessage("lblAny")); + private static final ImmutableList typeOptions = ImmutableList.of(Localizer.getInstance().getMessage("lblFantasy"), Localizer.getInstance().getMessage("lblGeneric"), Localizer.getInstance().getMessage("lblAny")); private final void getNewName(final Callback callback) { - final String title = "Get new random name"; - final String message = "What type of name do you want to generate?"; + final String title = localizer.getMessage("lblGetNewRandomName"); + final String message = localizer.getMessage("lbltypeofName"); final FSkinImage icon = FOptionPane.QUESTION_ICON; FOptionPane.showOptionDialog(message, title, icon, genderOptions, 2, new Callback() { @@ -869,8 +867,8 @@ public class PlayerPanel extends FContainer { private void generateRandomName(final String gender, final String type, final List usedNames, final String title, final Callback callback) { final String newName = NameGenerator.getRandomName(gender, type, usedNames); - String confirmMsg = "Would you like to use the name \"" + newName + "\", or try again?"; - FOptionPane.showConfirmDialog(confirmMsg, title, "Use this name", "Try again", true, new Callback() { + String confirmMsg = localizer.getMessage("lblconfirmName").replace("%s", newName); + FOptionPane.showConfirmDialog(confirmMsg, title, localizer.getMessage("lblUseThisName"), localizer.getMessage("lblTryAgain"), true, new Callback() { @Override public void run(Boolean result) { if (result) { diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 8e3727a03e4..444968e230e 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import forge.util.Localizer; import org.apache.commons.lang3.StringUtils; import com.google.common.base.Function; @@ -244,7 +245,7 @@ public class MatchController extends AbstractGuiGame { if (abilities.size() == 1) { return abilities.get(0); } - return SGuiChoose.oneOrNone("Choose ability to play", abilities); + return SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblChooseAbilityToPlay"), abilities); } @Override @@ -519,7 +520,7 @@ public class MatchController extends AbstractGuiGame { public List chooseEntitiesForEffect(String title, List optionList, int min, int max, DelayedReveal delayedReveal) { final int m1 = max >= 0 ? optionList.size() - max : -1; final int m2 = min >= 0 ? optionList.size() - min : -1; - return SGuiChoose.order(title, "Selected", m1, m2, (List) optionList, null); + return SGuiChoose.order(title, Localizer.getInstance().getMessage("lblSelected"), m1, m2, (List) optionList, null); } @Override diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index 9a49fbe6873..c516f137e54 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -152,7 +152,7 @@ public class MatchScreen extends FScreen { else { menuBar.addTab("\u2022 \u2022 \u2022", new PlayerSpecificMenu(true)); stack.setRotate90(true); - menuBar.addTab(localizer.getMessage("Stack") + " (0)", stack); + menuBar.addTab(localizer.getMessage("lblStack") + " (0)", stack); menuBar.addTab("\u2022 \u2022 \u2022", new PlayerSpecificMenu(false)); //create fake menu tabs for other drop downs so they can be positioned as needed diff --git a/forge-gui-mobile/src/forge/screens/match/views/VGameMenu.java b/forge-gui-mobile/src/forge/screens/match/views/VGameMenu.java index fa78bdb428e..cf900c6c192 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VGameMenu.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VGameMenu.java @@ -11,6 +11,7 @@ import forge.screens.settings.SettingsScreen; import forge.toolbox.FEvent; import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FOptionPane; +import forge.util.Localizer; import forge.util.ThreadUtil; public class VGameMenu extends FDropDownMenu { @@ -19,6 +20,8 @@ public class VGameMenu extends FDropDownMenu { @Override protected void buildMenu() { + final Localizer localizer = Localizer.getInstance(); + addItem(new FMenuItem(MatchController.instance.getConcedeCaption(), FSkinImage.CONCEDE, new FEventHandler() { @Override public void handleEvent(FEvent e) { @@ -43,7 +46,7 @@ public class VGameMenu extends FDropDownMenu { GameStateDeserializer.loadGameState(MatchUtil.getGame(), ForgeConstants.USER_GAMES_DIR + "GameSave.txt"); } }));*/ - addItem(new FMenuItem("Deck List", FSkinImage.DECKLIST, new FEventHandler() { + addItem(new FMenuItem(localizer.getMessage("lblDeckList"), FSkinImage.DECKLIST, new FEventHandler() { @Override public void handleEvent(FEvent e) { final Player player = MatchController.getHostedMatch().getGame().getPhaseHandler().getPlayerTurn(); @@ -54,10 +57,10 @@ public class VGameMenu extends FDropDownMenu { return; } } - FOptionPane.showMessageDialog("No player has priority at the moment, so deck list can't be viewed."); + FOptionPane.showMessageDialog(localizer.getMessage("lblNoPlayerPriorityNoDeckListViewed")); } })); - addItem(new FMenuItem("Auto-Yields", FSkinImage.WARNING, new FEventHandler() { + addItem(new FMenuItem(localizer.getMessage("lblAutoYields"), FSkinImage.WARNING, new FEventHandler() { @Override public void handleEvent(FEvent e) { final boolean autoYieldsDisabled = MatchController.instance.getDisableAutoYields(); @@ -82,7 +85,7 @@ public class VGameMenu extends FDropDownMenu { autoYields.show(); } })); - addItem(new FMenuItem("Settings", FSkinImage.SETTINGS, new FEventHandler() { + addItem(new FMenuItem(localizer.getMessage("lblSettings"), FSkinImage.SETTINGS, new FEventHandler() { @Override public void handleEvent(FEvent e) { SettingsScreen.show(false); diff --git a/forge-gui-mobile/src/forge/screens/settings/FilesPage.java b/forge-gui-mobile/src/forge/screens/settings/FilesPage.java index 4f4367b646f..940f9c44ef6 100644 --- a/forge-gui-mobile/src/forge/screens/settings/FilesPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/FilesPage.java @@ -1,6 +1,7 @@ package forge.screens.settings; import forge.download.*; +import forge.util.Localizer; import org.apache.commons.lang3.StringUtils; import com.badlogic.gdx.utils.Align; @@ -20,47 +21,48 @@ import forge.util.Callback; public class FilesPage extends TabPage { private final FGroupList lstItems = add(new FGroupList<>()); + private final Localizer localizer = Localizer.getInstance(); protected FilesPage() { - super("Files", FSkinImage.OPEN); + super(Localizer.getInstance().getMessage("lblFiles"), FSkinImage.OPEN); lstItems.setListItemRenderer(new FilesItemRenderer()); - lstItems.addGroup("Content Downloaders"); - lstItems.addGroup("Storage Locations"); + lstItems.addGroup(localizer.getMessage("ContentDownloaders")); + lstItems.addGroup(localizer.getMessage("lblStorageLocations")); //lstItems.addGroup("Data Import"); //content downloaders - lstItems.addItem(new ContentDownloader("Download LQ Card Pictures", - "Download default card picture for each card.") { + lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadPics"), + localizer.getMessage("lblDownloadPics")) { @Override protected GuiDownloadService createService() { return new GuiDownloadPicturesLQ(); } }, 0); - lstItems.addItem(new ContentDownloader("Download LQ Set Pictures", - "Download all pictures of each card (one for each set the card appeared in)") { + lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadSetPics"), + localizer.getMessage("lblDownloadSetPics")) { @Override protected GuiDownloadService createService() { return new GuiDownloadSetPicturesLQ(); } }, 0); - lstItems.addItem(new ContentDownloader("Download Quest Images", - "Download tokens and icons used in Quest mode.") { + lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadQuestImages"), + localizer.getMessage("lblDownloadQuestImages")) { @Override protected GuiDownloadService createService() { return new GuiDownloadQuestImages(); } }, 0); - lstItems.addItem(new ContentDownloader("Download Achievement Images", - "Download achievement images to really make your trophies stand out.") { + lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadAchievementImages"), + localizer.getMessage("lblDownloadAchievementImages")) { @Override protected GuiDownloadService createService() { return new GuiDownloadAchievementImages(); } }, 0); - lstItems.addItem(new ContentDownloader("Download Card Prices", - "Download up-to-date price list for in-game card shops.") { + lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadPrices"), + localizer.getMessage("lblDownloadPrices")) { @Override protected GuiDownloadService createService() { return new GuiDownloadPrices(); @@ -68,19 +70,19 @@ public class FilesPage extends TabPage { }, 0); //storage locations - final StorageOption cardPicsOption = new StorageOption("Card Pics Location", ForgeProfileProperties.getCardPicsDir()) { + final StorageOption cardPicsOption = new StorageOption(localizer.getMessage("lblCardPicsLocation"), ForgeProfileProperties.getCardPicsDir()) { @Override protected void onDirectoryChanged(String newDir) { ForgeProfileProperties.setCardPicsDir(newDir); } }; - final StorageOption decksOption = new StorageOption("Decks Location", ForgeProfileProperties.getDecksDir()) { + final StorageOption decksOption = new StorageOption(localizer.getMessage("lblDecksLocation"), ForgeProfileProperties.getDecksDir()) { @Override protected void onDirectoryChanged(String newDir) { ForgeProfileProperties.setDecksDir(newDir); } }; - lstItems.addItem(new StorageOption("Data Location (e.g. Settings and Quests)", ForgeProfileProperties.getUserDir()) { + lstItems.addItem(new StorageOption(localizer.getMessage("lblDataLocation"), ForgeProfileProperties.getUserDir()) { @Override protected void onDirectoryChanged(String newDir) { ForgeProfileProperties.setUserDir(newDir); @@ -89,7 +91,7 @@ public class FilesPage extends TabPage { decksOption.updateDir(ForgeProfileProperties.getDecksDir()); } }, 1); - lstItems.addItem(new StorageOption("Image Cache Location", ForgeProfileProperties.getCacheDir()) { + lstItems.addItem(new StorageOption(localizer.getMessage("lblImageCacheLocation"), ForgeProfileProperties.getCacheDir()) { @Override protected void onDirectoryChanged(String newDir) { ForgeProfileProperties.setCacheDir(newDir); @@ -171,13 +173,13 @@ public class FilesPage extends TabPage { @Override public void select() { - FFileChooser.show("Select " + label, ChoiceType.GetDirectory, description, new Callback() { + FFileChooser.show(localizer.getMessage("lblSelect").replace("%s", label), ChoiceType.GetDirectory, description, new Callback() { @Override public void run(String result) { if (StringUtils.isEmpty(result) || description.equals(result)) { return; } updateDir(result); onDirectoryChanged(result); - FOptionPane.showMessageDialog("You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do.", "Restart Required", FOptionPane.INFORMATION_ICON); + FOptionPane.showMessageDialog(localizer.getMessage("lblRestartForgeMoveFilesNewLocation"), localizer.getMessage("lblRestartRequired"), FOptionPane.INFORMATION_ICON); } }); } diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index 62bdd7a3844..2c6ae253c5c 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -37,7 +37,7 @@ public class SettingsPage extends TabPage { private final FGroupList lstSettings = add(new FGroupList<>()); public SettingsPage() { - super("Settings", FSkinImage.SETTINGS); + super(Localizer.getInstance().getMessage("lblSettings"), FSkinImage.SETTINGS); final Localizer localizer = Localizer.getInstance(); diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index 4a84d50e47a..3aba248ee9a 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -373,6 +373,17 @@ btnBuildNewSealedDeck=Erstelle neues Sealed Deck lblViewDeck=Zeige Deck lblRandomDeck=Zufälliges Deck lblRandomColors=Zufällige Farben +lblMustSelectGenerateNewDeck=You must select something before you can generate a new deck. +lblOK=OK +lblCannotEditDuplicateCustomDeck=cannot be edited directly. Would you like to duplicate %s for editing as a custom user deck? +lblDuplicateDeck=Duplicate Deck? +lblDuplicate=Duplicate +lblHowManyOpponents=How many opponents are you willing to face? +lblChooseAllowedDeckTypeOpponents=Choose allowed deck types for opponents +lblSelectOpponentDeck=Select Opponent's Deck +lblGenerateNewDeck=Generate New Deck +lblRandomTheme=Random Theme +lblTestDeck=Test Deck #GameType.java lblSealed=Sealed lblDraft=Draft @@ -967,10 +978,68 @@ lblToMainDeck=zum Haupt-Deck lblHowMany=wie viel? lblInventory=Inhaltsverzeichnis lblCollection=Sammlung -lblCatalog=Katalog lblCommanders=Komandeure lblOathbreakers=Eidbrecher #Forge.java lblLoadingFonts=Lade Schriften... lblLoadingCardTranslations=Lade Kartenübersetzungen... lblFinishingStartup=Abschliessen... +#LobbyScreen.java +lblMore=More... +lblLoadingNewGame=Loading new game... +lblSelectVariants=Select Variants +msgSelectAdeckBeforeReadying=Select a deck before readying! +#PlayerPanel +lblLoadingDeck=Loading Deck... +lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck +lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck +lblOathbreakerDeckRandomGenerated=Oathbreaker Deck: Random Generated Deck +lblTinyLeadersDeckRandomGenerated=Tiny Leaders Deck: Random Generated Deck +lblBrawlDeckRandomGenerated=Brawl Deck: Random Generated Deck +lblPlanarDeckRandomGenerated=Planar Deck: Random Generated Deck +lblVanguardAvatarRandom=Vanguard Avatar: Random +lblNotReady=Not Ready +lblNormal=Normal +lblDevMode=Dev Mode +lblOathbreakerDeck=Oathbreaker Deck +lblTinyLeadersDeck=Tiny Leaders Deck +lblBrawlDeck=Brawl Deck +lblSelectDeckFor=Select Deck for %s +lblSelectCommanderDeckFor=Select Commander Deck for %s +lblSelectOathbreakerDeckFor=Select Oathbreaker Deck for %s +lblSelectTinyLeadersDeckFor=Select Tiny Leaders Deck for %s +lblSelectBrawlDeckFor=Select Brawl Deck for %s +lblSelectSchemeDeckFor=Select Scheme Deck for %s +lblSelectPlanarDeckFor=Select Planar Deck for %s +lblSelectVanguardFor=Select Vanguard for %s +lblMale=Male +lblFemale=Female +lblAny=Any +lblFantasy=Fantasy +lblGeneric=Generic +#MatchController +lblChooseAbilityToPlay=Choose ability to play +lblSelected=Selected +#ItemManager +lblAdvancedSearch=Advanced Search +lblSort=Sort +lblResetFilters=Reset Filters +#AdvancedSearchFilter +lblEditExpression=Edit Expression +lblRemoveFilter=Remove Filter +#CardZoom +lblSwipeUpTo=Swipe up to %s +lblSwipeDownDetailView=Swipe down to switch to detail view +lblSwipeDownPictureView=Swipe down to switch to picture view +#VGameMenu +lblNoPlayerPriorityNoDeckListViewed=No player has priority at the moment, so deck list can't be viewed. +#FilesPage +lblFiles=Files +lblStorageLocations=Storage Locations +lblCardPicsLocation=Card Pics Location +lblDecksLocation=Decks Location +lblDataLocation=Data Location (e.g. Settings and Quests) +lblImageCacheLocation=Image Cache Location +lblRestartForgeMoveFilesNewLocation=You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do. +lblRestartRequired=Restart Required +lblSelect=Select %s \ 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 86f39905691..48a902c7dee 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -373,6 +373,17 @@ btnBuildNewSealedDeck=Build New Sealed Deck lblViewDeck=View Deck lblRandomDeck=Random Deck lblRandomColors=Random Colors +lblMustSelectGenerateNewDeck=You must select something before you can generate a new deck. +lblOK=OK +lblCannotEditDuplicateCustomDeck=cannot be edited directly. Would you like to duplicate %s for editing as a custom user deck? +lblDuplicateDeck=Duplicate Deck? +lblDuplicate=Duplicate +lblHowManyOpponents=How many opponents are you willing to face? +lblChooseAllowedDeckTypeOpponents=Choose allowed deck types for opponents +lblSelectOpponentDeck=Select Opponent's Deck +lblGenerateNewDeck=Generate New Deck +lblRandomTheme=Random Theme +lblTestDeck=Test Deck #GameType.java lblSealed=Sealed lblDraft=Draft @@ -967,10 +978,68 @@ lblToMainDeck=to Main Deck lblHowMany=how many? lblInventory=Inventory lblCollection=Collection -lblCatalog=Catalog lblCommanders=Commanders lblOathbreakers=Oathbreakers #Forge.java lblLoadingFonts=Loading fonts... lblLoadingCardTranslations=Loading card translations... -lblFinishingStartup=Finishing startup... \ No newline at end of file +lblFinishingStartup=Finishing startup... +#LobbyScreen.java +lblMore=More... +lblLoadingNewGame=Loading new game... +lblSelectVariants=Select Variants +msgSelectAdeckBeforeReadying=Select a deck before readying! +#PlayerPanel +lblLoadingDeck=Loading Deck... +lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck +lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck +lblOathbreakerDeckRandomGenerated=Oathbreaker Deck: Random Generated Deck +lblTinyLeadersDeckRandomGenerated=Tiny Leaders Deck: Random Generated Deck +lblBrawlDeckRandomGenerated=Brawl Deck: Random Generated Deck +lblPlanarDeckRandomGenerated=Planar Deck: Random Generated Deck +lblVanguardAvatarRandom=Vanguard Avatar: Random +lblNotReady=Not Ready +lblNormal=Normal +lblDevMode=Dev Mode +lblOathbreakerDeck=Oathbreaker Deck +lblTinyLeadersDeck=Tiny Leaders Deck +lblBrawlDeck=Brawl Deck +lblSelectDeckFor=Select Deck for %s +lblSelectCommanderDeckFor=Select Commander Deck for %s +lblSelectOathbreakerDeckFor=Select Oathbreaker Deck for %s +lblSelectTinyLeadersDeckFor=Select Tiny Leaders Deck for %s +lblSelectBrawlDeckFor=Select Brawl Deck for %s +lblSelectSchemeDeckFor=Select Scheme Deck for %s +lblSelectPlanarDeckFor=Select Planar Deck for %s +lblSelectVanguardFor=Select Vanguard for %s +lblMale=Male +lblFemale=Female +lblAny=Any +lblFantasy=Fantasy +lblGeneric=Generic +#MatchController +lblChooseAbilityToPlay=Choose ability to play +lblSelected=Selected +#ItemManager +lblAdvancedSearch=Advanced Search +lblSort=Sort +lblResetFilters=Reset Filters +#AdvancedSearchFilter +lblEditExpression=Edit Expression +lblRemoveFilter=Remove Filter +#CardZoom +lblSwipeUpTo=Swipe up to %s +lblSwipeDownDetailView=Swipe down to switch to detail view +lblSwipeDownPictureView=Swipe down to switch to picture view +#VGameMenu +lblNoPlayerPriorityNoDeckListViewed=No player has priority at the moment, so deck list can't be viewed. +#FilesPage +lblFiles=Files +lblStorageLocations=Storage Locations +lblCardPicsLocation=Card Pics Location +lblDecksLocation=Decks Location +lblDataLocation=Data Location (e.g. Settings and Quests) +lblImageCacheLocation=Image Cache Location +lblRestartForgeMoveFilesNewLocation=You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do. +lblRestartRequired=Restart Required +lblSelect=Select %s \ 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 968fbf9fc48..bb9b5b01f6f 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -231,7 +231,7 @@ lblGameSettings=Configuración lblHeaderConstructedMode=Formato Oficial: Construido lblGetNewRandomName=Obtener nuevo nombre aleatorio lbltypeofName=¿Qué tipo de nombre quieres generar? -lblconfirmName=¿Quieres usar el nombre de %n, o probar de nuevo? +lblconfirmName=¿Quieres usar el nombre de %s, o probar de nuevo? lblUseThisName=Usar este nombre lblTryAgain=Probar de nuevo lblAddAPlayer=Añadir Jugador @@ -373,6 +373,17 @@ btnBuildNewSealedDeck=Nuevo Mazo Sellado lblViewDeck=Ver Mazo lblRandomDeck=Mazo Aleatorio lblRandomColors=Colores Aleatorios +lblMustSelectGenerateNewDeck=Debes seleccionar algo antes de generar un nuevo mazo. +lblOK=OK +lblCannotEditDuplicateCustomDeck= no se puede editar directamente. ¿Quieres duplicar %s para editarlo como un mazo de usuario personalizado? +lblDuplicateDeck=¿Duplicar Mazo? +lblDuplicate=Duplicar +lblHowManyOpponents=¿A cuántos oponentes está dispuesto a enfrentarse? +lblChooseAllowedDeckTypeOpponents=Elige los tipos de mazo permitidos para los oponentes +lblSelectOpponentDeck=Seleccionar Mazo del Oponente +lblGenerateNewDeck=Generar un Nuevo Mazo +lblRandomTheme=Tema Aleatorio +lblTestDeck=Probar Mazo #GameType.java lblSealed=Sellado lblDraft=Draft @@ -967,10 +978,68 @@ lblToMainDeck=al Mazo Principal lblHowMany=¿cuántos? lblInventory=Inventario lblCollection=Colección -lblCatalog=Catálogo lblCommanders=Commanders lblOathbreakers=Oathbreakers #Forge.java lblLoadingFonts=Loading fonts... lblLoadingCardTranslations=Loading card translations... -lblFinishingStartup=Finishing startup... \ No newline at end of file +lblFinishingStartup=Finishing startup... +#LobbyScreen.java +lblMore=Más... +lblLoadingNewGame=Cargando nueva partida... +lblSelectVariants=Selecciona Variants +msgSelectAdeckBeforeReadying=¡Selecciona un mazo antes de estar listo! +#PlayerPanel +lblLoadingDeck=Cargando mazo... +lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck +lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck +lblOathbreakerDeckRandomGenerated=Oathbreaker Deck: Random Generated Deck +lblTinyLeadersDeckRandomGenerated=Tiny Leaders Deck: Random Generated Deck +lblBrawlDeckRandomGenerated=Brawl Deck: Random Generated Deck +lblPlanarDeckRandomGenerated=Planar Deck: Random Generated Deck +lblVanguardAvatarRandom=Vanguard Avatar: Random +lblNotReady=No Listo +lblNormal=Normal +lblDevMode=Dev Mode +lblOathbreakerDeck=Mazo Oathbreaker +lblTinyLeadersDeck=Mazo Tiny Leaders +lblBrawlDeck=Mazo Brawl +lblSelectDeckFor=Selecciona Mazo para %s +lblSelectCommanderDeckFor=Selecciona Mazo Commander para %s +lblSelectOathbreakerDeckFor=Selecciona Mazo Oathbreaker para %s +lblSelectTinyLeadersDeckFor=Selecciona Mazo Tiny Leaders para %s +lblSelectBrawlDeckFor=Selecciona Mazo Brawl para %s +lblSelectSchemeDeckFor=Selecciona Mazo Scheme para %s +lblSelectPlanarDeckFor=Seleccionar Mazo Planar para %s +lblSelectVanguardFor=Selecciona Vanguard para %s +lblMale=Hombre +lblFemale=Mujer +lblAny=Cualquiera +lblFantasy=Fantasía +lblGeneric=Genérico +#MatchController +lblChooseAbilityToPlay=Elige la habilidad para jugar +lblSelected=Seleccionado +#ItemManager +lblAdvancedSearch=Búsqueda Avanzada +lblSort=Ordenar +lblResetFilters=Reiniciar Filtros +#AdvancedSearchFilter +lblEditExpression=Editar Expresión +lblRemoveFilter=Eliminar Filtro +#CardZoom +lblSwipeUpTo=Desliza hacia arriba para %s +lblSwipeDownDetailView=Desliza hacia abajo para cambiar a la vista de detalle +lblSwipeDownPictureView=Desliza hacia abajo para cambiar a la vista de imagen +#VGameMenu +lblNoPlayerPriorityNoDeckListViewed=Ningún jugador tiene prioridad en este momento, por lo que la lista de mazos no se puede ver. +#FilesPage +lblFiles=Archivos +lblStorageLocations=Ubicación del almacenamiento +lblCardPicsLocation=Ubicación de las Imágenes de las Cartas +lblDecksLocation=Ubicación de los Mazos +lblDataLocation=Ubicación de los Datos (por ejemplo, Configuración y Aventuras) +lblImageCacheLocation=Ubicación de la Caché de imágenes +lblRestartForgeMoveFilesNewLocation=Necesitarás reiniciar Forge para que este cambio tenga efecto. Asegúrate de mover todos los archivos necesarios a la nueva ubicación antes de hacerlo. +lblRestartRequired=Reinicio Requerido +lblSelect=Seleccionar %s \ 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 a588789c5db..daa4f85a646 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -373,6 +373,17 @@ btnBuildNewSealedDeck=构建新的现开套牌 lblViewDeck=查看套牌 lblRandomDeck=随机套牌 lblRandomColors=随机颜色 +lblMustSelectGenerateNewDeck=You must select something before you can generate a new deck. +lblOK=OK +lblCannotEditDuplicateCustomDeck=cannot be edited directly. Would you like to duplicate %s for editing as a custom user deck? +lblDuplicateDeck=Duplicate Deck? +lblDuplicate=Duplicate +lblHowManyOpponents=How many opponents are you willing to face? +lblChooseAllowedDeckTypeOpponents=Choose allowed deck types for opponents +lblSelectOpponentDeck=Select Opponent's Deck +lblGenerateNewDeck=Generate New Deck +lblRandomTheme=Random Theme +lblTestDeck=Test Deck #GameType.java lblSealed=现开 lblDraft=轮抓 @@ -967,10 +978,68 @@ lblToMainDeck=到主牌 lblHowMany=多少? lblInventory=库存 lblCollection=珍藏 -lblCatalog=目录 lblCommanders=指挥官 lblOathbreakers=破誓者 #Forge.java lblLoadingFonts=加载字体中 lblLoadingCardTranslations=加载卡牌翻译中 -lblFinishingStartup=完成启动 \ No newline at end of file +lblFinishingStartup=完成启动 +#LobbyScreen.java +lblMore=More... +lblLoadingNewGame=Loading new game... +lblSelectVariants=Select Variants +msgSelectAdeckBeforeReadying=Select a deck before readying! +#PlayerPanel +lblLoadingDeck=Loading Deck... +lblSchemeDeckRandomGenerated=Scheme Deck: Random Generated Deck +lblCommanderDeckRandomGenerated=Commander Deck: Random Generated Deck +lblOathbreakerDeckRandomGenerated=Oathbreaker Deck: Random Generated Deck +lblTinyLeadersDeckRandomGenerated=Tiny Leaders Deck: Random Generated Deck +lblBrawlDeckRandomGenerated=Brawl Deck: Random Generated Deck +lblPlanarDeckRandomGenerated=Planar Deck: Random Generated Deck +lblVanguardAvatarRandom=Vanguard Avatar: Random +lblNotReady=Not Ready +lblNormal=Normal +lblDevMode=Dev Mode +lblOathbreakerDeck=Oathbreaker Deck +lblTinyLeadersDeck=Tiny Leaders Deck +lblBrawlDeck=Brawl Deck +lblSelectDeckFor=Select Deck for %s +lblSelectCommanderDeckFor=Select Commander Deck for %s +lblSelectOathbreakerDeckFor=Select Oathbreaker Deck for %s +lblSelectTinyLeadersDeckFor=Select Tiny Leaders Deck for %s +lblSelectBrawlDeckFor=Select Brawl Deck for %s +lblSelectSchemeDeckFor=Select Scheme Deck for %s +lblSelectPlanarDeckFor=Select Planar Deck for %s +lblSelectVanguardFor=Select Vanguard for %s +lblMale=Male +lblFemale=Female +lblAny=Any +lblFantasy=Fantasy +lblGeneric=Generic +#MatchController +lblChooseAbilityToPlay=Choose ability to play +lblSelected=Selected +#ItemManager +lblAdvancedSearch=Advanced Search +lblSort=Sort +lblResetFilters=Reset Filters +#AdvancedSearchFilter +lblEditExpression=Edit Expression +lblRemoveFilter=Remove Filter +#CardZoom +lblSwipeUpTo=Swipe up to %s +lblSwipeDownDetailView=Swipe down to switch to detail view +lblSwipeDownPictureView=Swipe down to switch to picture view +#VGameMenu +lblNoPlayerPriorityNoDeckListViewed=No player has priority at the moment, so deck list can't be viewed. +#FilesPage +lblFiles=Files +lblStorageLocations=Storage Locations +lblCardPicsLocation=Card Pics Location +lblDecksLocation=Decks Location +lblDataLocation=Data Location (e.g. Settings and Quests) +lblImageCacheLocation=Image Cache Location +lblRestartForgeMoveFilesNewLocation=You'll need to restart Forge for this change to take effect. Be sure to move any necessary files to the new location before you do. +lblRestartRequired=Restart Required +lblSelect=Select %s \ No newline at end of file