Mobile: Translated more strings and Views

Fixed duplicated Catalog label
Fixed Stack label not found
This commit is contained in:
Peter
2019-09-22 20:49:55 +02:00
parent d850a6685a
commit 4bf837701f
19 changed files with 412 additions and 121 deletions

View File

@@ -27,6 +27,7 @@ import forge.screens.match.MatchController;
import forge.toolbox.FCardPanel; import forge.toolbox.FCardPanel;
import forge.toolbox.FDialog; import forge.toolbox.FDialog;
import forge.toolbox.FOverlay; import forge.toolbox.FOverlay;
import forge.util.Localizer;
import forge.util.collect.FCollectionView; import forge.util.collect.FCollectionView;
import forge.util.Utils; import forge.util.Utils;
@@ -281,10 +282,10 @@ public class CardZoom extends FOverlay {
if (currentActivateAction != null) { if (currentActivateAction != null) {
g.fillRect(FDialog.MSG_BACK_COLOR, 0, 0, w, messageHeight); 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.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 @Override

View File

@@ -73,6 +73,7 @@ public class FDeckChooser extends FScreen {
private boolean isAi; private boolean isAi;
private final ForgePreferences prefs = FModel.getPreferences(); private final ForgePreferences prefs = FModel.getPreferences();
private final Localizer localizer = Localizer.getInstance();
private FPref stateSetting = null; private FPref stateSetting = null;
private FOptionPane optionPane; private FOptionPane optionPane;
@@ -98,7 +99,7 @@ public class FDeckChooser extends FScreen {
container.add(deckChooser.lstDecks); container.add(deckChooser.lstDecks);
container.setHeight(FOptionPane.getMaxDisplayObjHeight()); container.setHeight(FOptionPane.getMaxDisplayObjHeight());
deckChooser.optionPane = new FOptionPane(null, null, title, null, container, ImmutableList.of("OK", "Cancel"), 0, new Callback<Integer>() { deckChooser.optionPane = new FOptionPane(null, null, title, null, container, ImmutableList.of(Localizer.getInstance().getMessage("lblOK"), Localizer.getInstance().getMessage("lblCancel")), 0, new Callback<Integer>() {
@Override @Override
public void run(Integer result) { public void run(Integer result) {
if (result == 0) { if (result == 0) {
@@ -309,7 +310,7 @@ public class FDeckChooser extends FScreen {
editor = new FDeckEditor(getEditorType(), generatedDeck, true); editor = new FDeckEditor(getEditorType(), generatedDeck, true);
} }
else { else {
FOptionPane.showErrorDialog("You must select something before you can generate a new deck."); FOptionPane.showErrorDialog(localizer.getMessage("lblMustSelectGenerateNewDeck"));
return; return;
} }
break; break;
@@ -377,9 +378,10 @@ public class FDeckChooser extends FScreen {
return; return;
} }
//prompt to duplicate deck if deck doesn't exist already //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?", FOptionPane.showConfirmDialog(selectedDeckType + " " + localizer.getMessage("lblCannotEditDuplicateCustomDeck").replace("%s", deck.getName()),
"Duplicate Deck?", "Duplicate", "Cancel", new Callback<Boolean>() { localizer.getMessage("lblDuplicateDeck"), localizer.getMessage("lblDuplicate"), localizer.getMessage("lblCancel"), new Callback<Boolean>() {
@Override @Override
public void run(Boolean result) { public void run(Boolean result) {
if (result) { if (result) {
@@ -770,16 +772,16 @@ public class FDeckChooser extends FScreen {
btnViewDeck.setVisible(false); btnViewDeck.setVisible(false);
btnRandom.setWidth(btnNewDeck.getWidth()); btnRandom.setWidth(btnNewDeck.getWidth());
btnNewDeck.setText("Generate New Deck"); btnNewDeck.setText(localizer.getMessage("lblGenerateNewDeck"));
switch (deckType) { switch (deckType) {
case COLOR_DECK: case COLOR_DECK:
btnRandom.setText("Random Colors"); btnRandom.setText(localizer.getMessage("lblRandomColors"));
break; break;
case THEME_DECK: case THEME_DECK:
btnRandom.setText("Random Theme"); btnRandom.setText(localizer.getMessage("lblRandomTheme"));
break; break;
default: default:
btnRandom.setText("Random Deck"); btnRandom.setText(localizer.getMessage("lblRandomDeck"));
break; break;
} }
} }
@@ -789,11 +791,11 @@ public class FDeckChooser extends FScreen {
btnViewDeck.setVisible(true); btnViewDeck.setVisible(true);
btnRandom.setWidth(btnNewDeck.getWidth()); btnRandom.setWidth(btnNewDeck.getWidth());
btnNewDeck.setText("New Deck"); btnNewDeck.setText(localizer.getMessage("lblNewDeck"));
if (lstDecks.getGameType() == GameType.DeckManager) { if (lstDecks.getGameType() == GameType.DeckManager) {
//handle special case of Deck Editor screen where this button will start a game with the deck //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) { switch (selectedDeckType) {
case SCHEME_DECK: case SCHEME_DECK:
@@ -806,7 +808,7 @@ public class FDeckChooser extends FScreen {
} }
} }
else { else {
btnRandom.setText("Random Deck"); btnRandom.setText(localizer.getMessage("lblRandomDeck"));
} }
} }
@@ -1063,7 +1065,7 @@ public class FDeckChooser extends FScreen {
return; return;
} }
GuiChoose.getInteger("How many opponents are you willing to face?", 1, 50, new Callback<Integer>() { GuiChoose.getInteger(localizer.getMessage("lblHowManyOpponents"), 1, 50, new Callback<Integer>() {
@Override @Override
public void run(final Integer numOpponents) { public void run(final Integer numOpponents) {
if (numOpponents == null) { return; } if (numOpponents == null) { return; }
@@ -1089,7 +1091,7 @@ public class FDeckChooser extends FScreen {
} }
ListChooser<DeckType> chooser = new ListChooser<>( ListChooser<DeckType> chooser = new ListChooser<>(
"Choose allowed deck types for opponents", 0, deckTypes.size(), deckTypes, null, new Callback<List<DeckType>>() { localizer.getMessage("lblChooseAllowedDeckTypeOpponents"), 0, deckTypes.size(), deckTypes, null, new Callback<List<DeckType>>() {
@Override @Override
public void run(final List<DeckType> allowedDeckTypes) { public void run(final List<DeckType> allowedDeckTypes) {
if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) { if (allowedDeckTypes == null || allowedDeckTypes.isEmpty()) {
@@ -1109,7 +1111,7 @@ public class FDeckChooser extends FScreen {
FThreads.invokeInEdtLater(new Runnable() { FThreads.invokeInEdtLater(new Runnable() {
@Override @Override
public void run() { public void run() {
LoadingOverlay.show("Loading new game...", new Runnable() { LoadingOverlay.show(localizer.getMessage("lblLoadingNewGame"), new Runnable() {
@Override @Override
public void run() { public void run() {
GauntletData gauntlet = GauntletUtil.createQuickGauntlet(userDeck, numOpponents, allowedDeckTypes, netCat); 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) { private void testVariantDeck(final Deck userDeck, final GameType variant) {
promptForDeck("Select Opponent's Deck", variant, true, new Callback<Deck>() { promptForDeck(localizer.getMessage("lblSelectOpponentDeck"), variant, true, new Callback<Deck>() {
@Override @Override
public void run(final Deck aiDeck) { public void run(final Deck aiDeck) {
if (aiDeck == null) { return; } if (aiDeck == null) { return; }
LoadingOverlay.show("Loading new game...", new Runnable() { LoadingOverlay.show(localizer.getMessage("lblLoadingNewGame"), new Runnable() {
@Override @Override
public void run() { public void run() {
Set<GameType> appliedVariants = new HashSet<>(); Set<GameType> appliedVariants = new HashSet<>();

View File

@@ -18,6 +18,7 @@ import forge.itemmanager.filters.DeckFormatFilter;
import forge.itemmanager.filters.TextSearchFilter; import forge.itemmanager.filters.TextSearchFilter;
import forge.toolbox.FList; import forge.toolbox.FList;
import forge.toolbox.FList.CompactModeHandler; import forge.toolbox.FList.CompactModeHandler;
import forge.util.Localizer;
import forge.util.Utils; import forge.util.Utils;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
@@ -39,7 +40,7 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
public DeckManager(final GameType gt) { public DeckManager(final GameType gt) {
super(DeckProxy.class, true); super(DeckProxy.class, true);
gameType = gt; gameType = gt;
setCaption("Decks"); setCaption(Localizer.getInstance().getMessage("lblDecks"));
} }
public GameType getGameType() { public GameType getGameType() {

View File

@@ -53,6 +53,7 @@ import forge.toolbox.FList;
import forge.toolbox.FList.CompactModeHandler; import forge.toolbox.FList.CompactModeHandler;
import forge.util.ItemPool; import forge.util.ItemPool;
import forge.util.LayoutHelper; import forge.util.LayoutHelper;
import forge.util.Localizer;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
@@ -125,7 +126,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
add(btnAdvancedSearchOptions); add(btnAdvancedSearchOptions);
btnAdvancedSearchOptions.setSelected(!hideFilters); btnAdvancedSearchOptions.setSelected(!hideFilters);
if (allowSortChange()) { if (allowSortChange()) {
cbxSortOptions = add(new FComboBox<>("Sort: ")); cbxSortOptions = add(new FComboBox<>(Localizer.getInstance().getMessage("lblSort") + ": "));
cbxSortOptions.setFont(FSkinFont.get(12)); cbxSortOptions.setFont(FSkinFont.get(12));
} }
else { else {
@@ -140,7 +141,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
FPopupMenu menu = new FPopupMenu() { FPopupMenu menu = new FPopupMenu() {
@Override @Override
protected void buildMenu() { protected void buildMenu() {
addItem(new FMenuItem("Advanced Search", FSkinImage.SEARCH, new FEventHandler() { addItem(new FMenuItem(Localizer.getInstance().getMessage("lblAdvancedSearch"), FSkinImage.SEARCH, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if (advancedSearchFilter == null) { if (advancedSearchFilter == null) {
@@ -150,7 +151,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
advancedSearchFilter.edit(); advancedSearchFilter.edit();
} }
})); }));
addItem(new FMenuItem("Reset Filters", FSkinImage.DELETE, new FEventHandler() { addItem(new FMenuItem(Localizer.getInstance().getMessage("lblResetFilters"), FSkinImage.DELETE, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
resetFilters(); resetFilters();
@@ -261,7 +262,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
} }
if (cbxSortOptions != null) { if (cbxSortOptions != null) {
cbxSortOptions.setText("(none)"); cbxSortOptions.setText("(" + Localizer.getInstance().getMessage("lblNone") + ")");
} }
model.getCascadeManager().reset(); model.getCascadeManager().reset();

View File

@@ -19,6 +19,7 @@ import forge.itemmanager.filters.TextSearchFilter;
import forge.quest.QuestSpellShop; import forge.quest.QuestSpellShop;
import forge.toolbox.FList; import forge.toolbox.FList;
import forge.toolbox.FList.CompactModeHandler; import forge.toolbox.FList.CompactModeHandler;
import forge.util.Localizer;
public class SpellShopManager extends ItemManager<InventoryItem> { public class SpellShopManager extends ItemManager<InventoryItem> {
@@ -29,7 +30,7 @@ public class SpellShopManager extends ItemManager<InventoryItem> {
fnGetPrice = isShop0 ? QuestSpellShop.fnPriceGet : QuestSpellShop.fnPriceSellGet; fnGetPrice = isShop0 ? QuestSpellShop.fnPriceGet : QuestSpellShop.fnPriceSellGet;
if (!isShop0) { if (!isShop0) {
setCaption("Cards"); setCaption(Localizer.getInstance().getMessage("lblCards"));
} }
} }

View File

@@ -25,6 +25,7 @@ import forge.toolbox.FTextField;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FLabel; import forge.toolbox.FLabel;
import forge.util.Callback; import forge.util.Callback;
import forge.util.Localizer;
public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T> { public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
@@ -126,13 +127,13 @@ public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T>
item.setTextRenderer(new TextRenderer()); //ensure symbols are displayed item.setTextRenderer(new TextRenderer()); //ensure symbols are displayed
addItem(item); addItem(item);
} }
addItem(new FMenuItem("Edit Expression", FSkinImage.EDIT, new FEventHandler() { addItem(new FMenuItem(Localizer.getInstance().getMessage("lblEditExpression"), FSkinImage.EDIT, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
edit(); edit();
} }
})); }));
addItem(new FMenuItem("Remove Filter", FSkinImage.DELETE, new FEventHandler() { addItem(new FMenuItem(Localizer.getInstance().getMessage("lblRemoveFilter"), FSkinImage.DELETE, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
reset(); reset();
@@ -176,7 +177,7 @@ public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T>
}); });
private EditScreen() { private EditScreen() {
super("Advanced Search"); super(Localizer.getInstance().getMessage("lblAdvancedSearch"));
Filter filter = new Filter(); Filter filter = new Filter();
model.addFilterControl(filter); model.addFilterControl(filter);
scroller.add(filter); scroller.add(filter);

View File

@@ -30,6 +30,7 @@ import forge.toolbox.FTextField;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FLabel; import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane; import forge.toolbox.FScrollPane;
import forge.util.Localizer;
import forge.util.Utils; import forge.util.Utils;
import java.util.*; import java.util.*;
@@ -358,7 +359,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
otherItems = groups.get(groups.size() - 1); otherItems = groups.get(groups.size() - 1);
} }
else { else {
otherItems = new Group("Other"); otherItems = new Group(Localizer.getInstance().getMessage("lblOther"));
otherItems.isCollapsed = btnExpandCollapseAll.isAllCollapsed; otherItems.isCollapsed = btnExpandCollapseAll.isAllCollapsed;
groups.add(otherItems); groups.add(otherItems);
} }

View File

@@ -12,6 +12,7 @@ import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FLabel; import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane; import forge.toolbox.FScrollPane;
import forge.util.Callback; import forge.util.Callback;
import forge.util.Localizer;
import forge.util.MyRandom; import forge.util.MyRandom;
import forge.util.Utils; import forge.util.Utils;
@@ -63,7 +64,7 @@ public class AvatarSelector extends FScreen {
}; };
private AvatarSelector(final String playerName, final int currentIndex0, final List<Integer> usedAvatars0, final Callback<Integer> callback0) { private AvatarSelector(final String playerName, final int currentIndex0, final List<Integer> usedAvatars0, final Callback<Integer> callback0) {
super("Select Avatar for " + playerName); super(Localizer.getInstance().getMessage("lblSelectAvatarFor").replace("%s",playerName));
currentIndex = currentIndex0; currentIndex = currentIndex0;
usedAvatars = usedAvatars0; usedAvatars = usedAvatars0;

View File

@@ -3,6 +3,7 @@ package forge.screens.constructed;
import java.util.*; import java.util.*;
import forge.deck.*; import forge.deck.*;
import forge.util.Localizer;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
@@ -49,12 +50,13 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
// General variables // General variables
private GameLobby lobby; private GameLobby lobby;
private IPlayerChangeListener playerChangeListener = null; 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<Integer> cbPlayerCount; private final FComboBox<Integer> cbPlayerCount;
private final Deck[] decks = new Deck[MAX_PLAYERS]; private final Deck[] decks = new Deck[MAX_PLAYERS];
// Variants frame and variables // 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<Object> cbVariants = new FComboBox<>(); private final FComboBox<Object> cbVariants = new FComboBox<>();
private final List<PlayerPanel> playerPanels = new ArrayList<>(MAX_PLAYERS); private final List<PlayerPanel> playerPanels = new ArrayList<>(MAX_PLAYERS);
@@ -117,7 +119,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
add(lblVariants); add(lblVariants);
add(cbVariants); add(cbVariants);
cbVariants.setFont(VARIANTS_FONT); cbVariants.setFont(VARIANTS_FONT);
cbVariants.addItem("(None)"); cbVariants.addItem("(" + localizer.getMessage("lblNone") + ")");
cbVariants.addItem(GameType.Vanguard); cbVariants.addItem(GameType.Vanguard);
cbVariants.addItem(GameType.MomirBasic); cbVariants.addItem(GameType.MomirBasic);
cbVariants.addItem(GameType.MoJhoSto); cbVariants.addItem(GameType.MoJhoSto);
@@ -128,7 +130,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
cbVariants.addItem(GameType.Planechase); cbVariants.addItem(GameType.Planechase);
cbVariants.addItem(GameType.Archenemy); cbVariants.addItem(GameType.Archenemy);
cbVariants.addItem(GameType.ArchenemyRumble); cbVariants.addItem(GameType.ArchenemyRumble);
cbVariants.addItem("More...."); cbVariants.addItem(localizer.getMessage("lblMore"));
cbVariants.setChangedHandler(new FEventHandler() { cbVariants.setChangedHandler(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
@@ -282,7 +284,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
FThreads.invokeInEdtLater(new Runnable() { FThreads.invokeInEdtLater(new Runnable() {
@Override @Override
public void run() { 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 // Name
String prefName = prefs.getPref(FPref.PLAYER_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<Integer> getUsedAvatars() { List<Integer> getUsedAvatars() {
@@ -347,7 +349,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
private final FList<Variant> lstVariants = add(new FList<>()); private final FList<Variant> lstVariants = add(new FList<>());
private MultiVariantSelect() { private MultiVariantSelect() {
super("Select Variants"); super(Localizer.getInstance().getMessage("lblSelectVariants"));
lstVariants.setListItemRenderer(new VariantRenderer()); lstVariants.setListItemRenderer(new VariantRenderer());
lstVariants.addItem(new Variant(GameType.Vanguard)); lstVariants.addItem(new Variant(GameType.Vanguard));
@@ -625,7 +627,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView {
if (ready) { if (ready) {
updateDeck(index); updateDeck(index);
if (decks[index] == null) { if (decks[index] == null) {
FOptionPane.showErrorDialog("Select a deck before readying!"); FOptionPane.showErrorDialog(localizer.getMessage("msgSelectAdeckBeforeReadying"));
update(false); update(false);
return; return;
} }

View File

@@ -4,6 +4,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import forge.util.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
@@ -39,10 +40,6 @@ import forge.toolbox.FOptionPane;
import forge.toolbox.FTextField; import forge.toolbox.FTextField;
import forge.toolbox.FToggleSwitch; import forge.toolbox.FToggleSwitch;
import forge.toolbox.FEvent.FEventHandler; 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 { public class PlayerPanel extends FContainer {
private static final ForgePreferences prefs = FModel.getPreferences(); 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 final FLabel avatarLabel = new FLabel.Builder().opaque(true).iconScaleFactor(0.99f).alphaComposite(1).iconInBackground(true).build();
private int avatarIndex; 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 humanAiSwitch;
private final FToggleSwitch devModeSwitch; private final FToggleSwitch devModeSwitch;
private FComboBox<Object> cbTeam = new FComboBox<>(); private FComboBox<Object> cbTeam = new FComboBox<>();
private FComboBox<Object> cbArchenemyTeam = new FComboBox<>(); private FComboBox<Object> cbArchenemyTeam = new FComboBox<>();
private final FLabel btnDeck = new FLabel.ButtonBuilder().text("Loading Deck...").build(); private final FLabel btnDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblLoadingDeck")).build();
private final FLabel btnSchemeDeck = new FLabel.ButtonBuilder().text("Scheme Deck: Random Generated Deck").build(); private final FLabel btnSchemeDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblSchemeDeckRandomGenerated")).build();
private final FLabel btnCommanderDeck = new FLabel.ButtonBuilder().text("Commander Deck: Random Generated Deck").build(); private final FLabel btnCommanderDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblCommanderDeckRandomGenerated")).build();
private final FLabel btnOathbreakDeck = new FLabel.ButtonBuilder().text("Oathbreaker Deck: Random Generated Deck").build(); private final FLabel btnOathbreakDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblOathbreakerDeckRandomGenerated")).build();
private final FLabel btnTinyLeadersDeck = new FLabel.ButtonBuilder().text("Tiny Leaders Deck: Random Generated Deck").build(); private final FLabel btnTinyLeadersDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblTinyLeadersDeckRandomGenerated")).build();
private final FLabel btnBrawlDeck = new FLabel.ButtonBuilder().text("Brawl Deck: Random Generated Deck").build(); private final FLabel btnBrawlDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblBrawlDeckRandomGenerated")).build();
private final FLabel btnPlanarDeck = new FLabel.ButtonBuilder().text("Planar Deck: Random Generated Deck").build(); private final FLabel btnPlanarDeck = new FLabel.ButtonBuilder().text(localizer.getMessage("lblPlanarDeckRandomGenerated")).build();
private final FLabel btnVanguardAvatar = new FLabel.ButtonBuilder().text("Vanguard Avatar: Random").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 FDeckChooser deckChooser, lstSchemeDecks, lstCommanderDecks, lstOathbreakerDecks, lstTinyLeadersDecks, lstBrawlDecks, lstPlanarDecks;
private final FVanguardChooser lstVanguardAvatars; private final FVanguardChooser lstVanguardAvatars;
@@ -84,10 +82,10 @@ public class PlayerPanel extends FContainer {
screen = screen0; screen = screen0;
allowNetworking = allowNetworking0; allowNetworking = allowNetworking0;
if (allowNetworking) { if (allowNetworking) {
humanAiSwitch = new FToggleSwitch("Not Ready", "Ready"); humanAiSwitch = new FToggleSwitch(localizer.getMessage("lblNotReady"), localizer.getMessage("lblReady"));
} }
else { else {
humanAiSwitch = new FToggleSwitch("Human", "AI"); humanAiSwitch = new FToggleSwitch(localizer.getMessage("lblHuman"), localizer.getMessage("lblAI"));
} }
index = index0; index = index0;
populateTeamsComboBoxes(); populateTeamsComboBoxes();
@@ -97,7 +95,7 @@ public class PlayerPanel extends FContainer {
setPlayerName(slot.getName()); setPlayerName(slot.getName());
setAvatarIndex(slot.getAvatarIndex()); setAvatarIndex(slot.getAvatarIndex());
devModeSwitch = new FToggleSwitch("Normal", "Dev Mode"); devModeSwitch = new FToggleSwitch(localizer.getMessage("lblNormal"), localizer.getMessage("lblDevMode"));
devModeSwitch.setVisible(isNetworkHost()); devModeSwitch.setVisible(isNetworkHost());
cbTeam.setEnabled(true); cbTeam.setEnabled(true);
@@ -117,10 +115,10 @@ public class PlayerPanel extends FContainer {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if( ((DeckManager)e.getSource()).getSelectedItem() != null) { 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(); lstCommanderDecks.saveState();
}else{ }else{
btnCommanderDeck.setText("Commander Deck"); btnCommanderDeck.setText(localizer.getMessage("lblCommanderDeck"));
} }
} }
}); });
@@ -128,10 +126,10 @@ public class PlayerPanel extends FContainer {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if( ((DeckManager)e.getSource()).getSelectedItem() != null) { 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(); lstOathbreakerDecks.saveState();
}else{ }else{
btnOathbreakDeck.setText("Oathbreaker Deck"); btnOathbreakDeck.setText(localizer.getMessage("lblOathbreakerDeck"));
} }
} }
}); });
@@ -139,10 +137,10 @@ public class PlayerPanel extends FContainer {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if( ((DeckManager)e.getSource()).getSelectedItem() != null) { 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(); lstTinyLeadersDecks.saveState();
}else{ }else{
btnTinyLeadersDeck.setText("Tiny Leaders Deck"); btnTinyLeadersDeck.setText(localizer.getMessage("lblTinyLeadersDeck"));
} }
} }
}); });
@@ -150,10 +148,10 @@ public class PlayerPanel extends FContainer {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if( ((DeckManager)e.getSource()).getSelectedItem() != null) { 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(); lstBrawlDecks.saveState();
}else{ }else{
btnBrawlDeck.setText("Brawl Deck"); btnBrawlDeck.setText(localizer.getMessage("lblBrawlDeck"));
} }
} }
}); });
@@ -161,9 +159,9 @@ public class PlayerPanel extends FContainer {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if( ((DeckManager)e.getSource()).getSelectedItem() != null){ 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{ }else{
btnSchemeDeck.setText("Scheme Deck"); btnSchemeDeck.setText(localizer.getMessage("lblSchemeDeck"));
} }
} }
}); });
@@ -171,16 +169,16 @@ public class PlayerPanel extends FContainer {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
if( ((DeckManager)e.getSource()).getSelectedItem() != null){ 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{ }else{
btnPlanarDeck.setText("Planar Deck"); btnPlanarDeck.setText(localizer.getMessage("lblPlanarDeck"));
} }
} }
}); });
lstVanguardAvatars = new FVanguardChooser(isAi, new FEventHandler() { lstVanguardAvatars = new FVanguardChooser(isAi, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); add(avatarLabel);
createNameEditor(); createNameEditor();
add(newLabel("Name:")); add(newLabel(localizer.getMessage("lblName") + ":"));
add(txtPlayerName); add(txtPlayerName);
nameRandomiser = createNameRandomizer(); nameRandomiser = createNameRandomizer();
@@ -197,7 +195,7 @@ public class PlayerPanel extends FContainer {
humanAiSwitch.setChangedHandler(humanAiSwitched); humanAiSwitch.setChangedHandler(humanAiSwitched);
add(humanAiSwitch); add(humanAiSwitch);
add(newLabel("Team:")); add(newLabel(localizer.getMessage("lblTeam") + ":"));
cbTeam.setChangedHandler(teamChangedHandler); cbTeam.setChangedHandler(teamChangedHandler);
cbArchenemyTeam.setChangedHandler(teamChangedHandler); cbArchenemyTeam.setChangedHandler(teamChangedHandler);
add(cbTeam); add(cbTeam);
@@ -211,7 +209,7 @@ public class PlayerPanel extends FContainer {
btnDeck.setCommand(new FEventHandler() { btnDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
deckChooser.setHeaderCaption("Select Deck for " + txtPlayerName.getText()); deckChooser.setHeaderCaption(localizer.getMessage("lblSelectDeckFor").replace("%s", txtPlayerName.getText()));
Forge.openScreen(deckChooser); Forge.openScreen(deckChooser);
} }
}); });
@@ -219,7 +217,7 @@ public class PlayerPanel extends FContainer {
btnCommanderDeck.setCommand(new FEventHandler() { btnCommanderDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); Forge.openScreen(lstCommanderDecks);
} }
}); });
@@ -227,7 +225,7 @@ public class PlayerPanel extends FContainer {
btnOathbreakDeck.setCommand(new FEventHandler() { btnOathbreakDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); Forge.openScreen(lstOathbreakerDecks);
} }
}); });
@@ -235,7 +233,7 @@ public class PlayerPanel extends FContainer {
btnTinyLeadersDeck.setCommand(new FEventHandler() { btnTinyLeadersDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); Forge.openScreen(lstTinyLeadersDecks);
} }
}); });
@@ -243,7 +241,7 @@ public class PlayerPanel extends FContainer {
btnBrawlDeck.setCommand(new FEventHandler() { btnBrawlDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); Forge.openScreen(lstBrawlDecks);
} }
}); });
@@ -251,7 +249,7 @@ public class PlayerPanel extends FContainer {
btnSchemeDeck.setCommand(new FEventHandler() { btnSchemeDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); Forge.openScreen(lstSchemeDecks);
} }
}); });
@@ -259,7 +257,7 @@ public class PlayerPanel extends FContainer {
btnPlanarDeck.setCommand(new FEventHandler() { btnPlanarDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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); Forge.openScreen(lstPlanarDecks);
} }
}); });
@@ -267,7 +265,7 @@ public class PlayerPanel extends FContainer {
btnVanguardAvatar.setCommand(new FEventHandler() { btnVanguardAvatar.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
lstVanguardAvatars.setHeaderCaption("Select Vanguard for " + txtPlayerName.getText()); lstVanguardAvatars.setHeaderCaption(localizer.getMessage("lblSelectVanguardFor").replace("%s", txtPlayerName.getText()));
Forge.openScreen(lstVanguardAvatars); Forge.openScreen(lstVanguardAvatars);
} }
}); });
@@ -565,11 +563,11 @@ public class PlayerPanel extends FContainer {
} }
private void populateTeamsComboBoxes() { private void populateTeamsComboBoxes() {
cbArchenemyTeam.addItem("Archenemy"); cbArchenemyTeam.addItem(localizer.getMessage("lblArchenemy"));
cbArchenemyTeam.addItem("Heroes"); cbArchenemyTeam.addItem(localizer.getMessage("lblHeroes"));
for (int i = 1; i <= LobbyScreen.MAX_PLAYERS; i++) { for (int i = 1; i <= LobbyScreen.MAX_PLAYERS; i++) {
cbTeam.addItem("Team " + i); cbTeam.addItem(localizer.getMessage("lblTeam") + " " + i);
} }
cbTeam.setEnabled(mayEdit); cbTeam.setEnabled(mayEdit);
} }
@@ -639,7 +637,7 @@ public class PlayerPanel extends FContainer {
if (index == 0) { if (index == 0) {
name = FModel.getPreferences().getPref(FPref.PLAYER_NAME); name = FModel.getPreferences().getPref(FPref.PLAYER_NAME);
if (name.isEmpty()) { if (name.isEmpty()) {
name = "Human"; name = localizer.getMessage("lblHuman");
} }
} }
else { else {
@@ -837,11 +835,11 @@ public class PlayerPanel extends FContainer {
return new FLabel.Builder().text(title).font(LABEL_FONT).align(Align.right).build(); return new FLabel.Builder().text(title).font(LABEL_FONT).align(Align.right).build();
} }
private static final ImmutableList<String> genderOptions = ImmutableList.of("Male", "Female", "Any"); private static final ImmutableList<String> genderOptions = ImmutableList.of(Localizer.getInstance().getMessage("lblMale"), Localizer.getInstance().getMessage("lblFemale"), Localizer.getInstance().getMessage("lblAny"));
private static final ImmutableList<String> typeOptions = ImmutableList.of("Fantasy", "Generic", "Any"); private static final ImmutableList<String> typeOptions = ImmutableList.of(Localizer.getInstance().getMessage("lblFantasy"), Localizer.getInstance().getMessage("lblGeneric"), Localizer.getInstance().getMessage("lblAny"));
private final void getNewName(final Callback<String> callback) { private final void getNewName(final Callback<String> callback) {
final String title = "Get new random name"; final String title = localizer.getMessage("lblGetNewRandomName");
final String message = "What type of name do you want to generate?"; final String message = localizer.getMessage("lbltypeofName");
final FSkinImage icon = FOptionPane.QUESTION_ICON; final FSkinImage icon = FOptionPane.QUESTION_ICON;
FOptionPane.showOptionDialog(message, title, icon, genderOptions, 2, new Callback<Integer>() { FOptionPane.showOptionDialog(message, title, icon, genderOptions, 2, new Callback<Integer>() {
@@ -869,8 +867,8 @@ public class PlayerPanel extends FContainer {
private void generateRandomName(final String gender, final String type, final List<String> usedNames, final String title, final Callback<String> callback) { private void generateRandomName(final String gender, final String type, final List<String> usedNames, final String title, final Callback<String> callback) {
final String newName = NameGenerator.getRandomName(gender, type, usedNames); final String newName = NameGenerator.getRandomName(gender, type, usedNames);
String confirmMsg = "Would you like to use the name \"" + newName + "\", or try again?"; String confirmMsg = localizer.getMessage("lblconfirmName").replace("%s", newName);
FOptionPane.showConfirmDialog(confirmMsg, title, "Use this name", "Try again", true, new Callback<Boolean>() { FOptionPane.showConfirmDialog(confirmMsg, title, localizer.getMessage("lblUseThisName"), localizer.getMessage("lblTryAgain"), true, new Callback<Boolean>() {
@Override @Override
public void run(Boolean result) { public void run(Boolean result) {
if (result) { if (result) {

View File

@@ -7,6 +7,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import forge.util.Localizer;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.google.common.base.Function; import com.google.common.base.Function;
@@ -244,7 +245,7 @@ public class MatchController extends AbstractGuiGame {
if (abilities.size() == 1) { if (abilities.size() == 1) {
return abilities.get(0); return abilities.get(0);
} }
return SGuiChoose.oneOrNone("Choose ability to play", abilities); return SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblChooseAbilityToPlay"), abilities);
} }
@Override @Override
@@ -519,7 +520,7 @@ public class MatchController extends AbstractGuiGame {
public List<GameEntityView> chooseEntitiesForEffect(String title, List<? extends GameEntityView> optionList, int min, int max, DelayedReveal delayedReveal) { public List<GameEntityView> chooseEntitiesForEffect(String title, List<? extends GameEntityView> optionList, int min, int max, DelayedReveal delayedReveal) {
final int m1 = max >= 0 ? optionList.size() - max : -1; final int m1 = max >= 0 ? optionList.size() - max : -1;
final int m2 = min >= 0 ? optionList.size() - min : -1; final int m2 = min >= 0 ? optionList.size() - min : -1;
return SGuiChoose.order(title, "Selected", m1, m2, (List<GameEntityView>) optionList, null); return SGuiChoose.order(title, Localizer.getInstance().getMessage("lblSelected"), m1, m2, (List<GameEntityView>) optionList, null);
} }
@Override @Override

View File

@@ -152,7 +152,7 @@ public class MatchScreen extends FScreen {
else { else {
menuBar.addTab("\u2022 \u2022 \u2022", new PlayerSpecificMenu(true)); menuBar.addTab("\u2022 \u2022 \u2022", new PlayerSpecificMenu(true));
stack.setRotate90(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)); menuBar.addTab("\u2022 \u2022 \u2022", new PlayerSpecificMenu(false));
//create fake menu tabs for other drop downs so they can be positioned as needed //create fake menu tabs for other drop downs so they can be positioned as needed

View File

@@ -11,6 +11,7 @@ import forge.screens.settings.SettingsScreen;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FOptionPane; import forge.toolbox.FOptionPane;
import forge.util.Localizer;
import forge.util.ThreadUtil; import forge.util.ThreadUtil;
public class VGameMenu extends FDropDownMenu { public class VGameMenu extends FDropDownMenu {
@@ -19,6 +20,8 @@ public class VGameMenu extends FDropDownMenu {
@Override @Override
protected void buildMenu() { protected void buildMenu() {
final Localizer localizer = Localizer.getInstance();
addItem(new FMenuItem(MatchController.instance.getConcedeCaption(), FSkinImage.CONCEDE, new FEventHandler() { addItem(new FMenuItem(MatchController.instance.getConcedeCaption(), FSkinImage.CONCEDE, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
@@ -43,7 +46,7 @@ public class VGameMenu extends FDropDownMenu {
GameStateDeserializer.loadGameState(MatchUtil.getGame(), ForgeConstants.USER_GAMES_DIR + "GameSave.txt"); 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 @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
final Player player = MatchController.getHostedMatch().getGame().getPhaseHandler().getPlayerTurn(); final Player player = MatchController.getHostedMatch().getGame().getPhaseHandler().getPlayerTurn();
@@ -54,10 +57,10 @@ public class VGameMenu extends FDropDownMenu {
return; 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 @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
final boolean autoYieldsDisabled = MatchController.instance.getDisableAutoYields(); final boolean autoYieldsDisabled = MatchController.instance.getDisableAutoYields();
@@ -82,7 +85,7 @@ public class VGameMenu extends FDropDownMenu {
autoYields.show(); autoYields.show();
} }
})); }));
addItem(new FMenuItem("Settings", FSkinImage.SETTINGS, new FEventHandler() { addItem(new FMenuItem(localizer.getMessage("lblSettings"), FSkinImage.SETTINGS, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
SettingsScreen.show(false); SettingsScreen.show(false);

View File

@@ -1,6 +1,7 @@
package forge.screens.settings; package forge.screens.settings;
import forge.download.*; import forge.download.*;
import forge.util.Localizer;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
@@ -20,47 +21,48 @@ import forge.util.Callback;
public class FilesPage extends TabPage<SettingsScreen> { public class FilesPage extends TabPage<SettingsScreen> {
private final FGroupList<FilesItem> lstItems = add(new FGroupList<>()); private final FGroupList<FilesItem> lstItems = add(new FGroupList<>());
private final Localizer localizer = Localizer.getInstance();
protected FilesPage() { protected FilesPage() {
super("Files", FSkinImage.OPEN); super(Localizer.getInstance().getMessage("lblFiles"), FSkinImage.OPEN);
lstItems.setListItemRenderer(new FilesItemRenderer()); lstItems.setListItemRenderer(new FilesItemRenderer());
lstItems.addGroup("Content Downloaders"); lstItems.addGroup(localizer.getMessage("ContentDownloaders"));
lstItems.addGroup("Storage Locations"); lstItems.addGroup(localizer.getMessage("lblStorageLocations"));
//lstItems.addGroup("Data Import"); //lstItems.addGroup("Data Import");
//content downloaders //content downloaders
lstItems.addItem(new ContentDownloader("Download LQ Card Pictures", lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadPics"),
"Download default card picture for each card.") { localizer.getMessage("lblDownloadPics")) {
@Override @Override
protected GuiDownloadService createService() { protected GuiDownloadService createService() {
return new GuiDownloadPicturesLQ(); return new GuiDownloadPicturesLQ();
} }
}, 0); }, 0);
lstItems.addItem(new ContentDownloader("Download LQ Set Pictures", lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadSetPics"),
"Download all pictures of each card (one for each set the card appeared in)") { localizer.getMessage("lblDownloadSetPics")) {
@Override @Override
protected GuiDownloadService createService() { protected GuiDownloadService createService() {
return new GuiDownloadSetPicturesLQ(); return new GuiDownloadSetPicturesLQ();
} }
}, 0); }, 0);
lstItems.addItem(new ContentDownloader("Download Quest Images", lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadQuestImages"),
"Download tokens and icons used in Quest mode.") { localizer.getMessage("lblDownloadQuestImages")) {
@Override @Override
protected GuiDownloadService createService() { protected GuiDownloadService createService() {
return new GuiDownloadQuestImages(); return new GuiDownloadQuestImages();
} }
}, 0); }, 0);
lstItems.addItem(new ContentDownloader("Download Achievement Images", lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadAchievementImages"),
"Download achievement images to really make your trophies stand out.") { localizer.getMessage("lblDownloadAchievementImages")) {
@Override @Override
protected GuiDownloadService createService() { protected GuiDownloadService createService() {
return new GuiDownloadAchievementImages(); return new GuiDownloadAchievementImages();
} }
}, 0); }, 0);
lstItems.addItem(new ContentDownloader("Download Card Prices", lstItems.addItem(new ContentDownloader(localizer.getMessage("btnDownloadPrices"),
"Download up-to-date price list for in-game card shops.") { localizer.getMessage("lblDownloadPrices")) {
@Override @Override
protected GuiDownloadService createService() { protected GuiDownloadService createService() {
return new GuiDownloadPrices(); return new GuiDownloadPrices();
@@ -68,19 +70,19 @@ public class FilesPage extends TabPage<SettingsScreen> {
}, 0); }, 0);
//storage locations //storage locations
final StorageOption cardPicsOption = new StorageOption("Card Pics Location", ForgeProfileProperties.getCardPicsDir()) { final StorageOption cardPicsOption = new StorageOption(localizer.getMessage("lblCardPicsLocation"), ForgeProfileProperties.getCardPicsDir()) {
@Override @Override
protected void onDirectoryChanged(String newDir) { protected void onDirectoryChanged(String newDir) {
ForgeProfileProperties.setCardPicsDir(newDir); ForgeProfileProperties.setCardPicsDir(newDir);
} }
}; };
final StorageOption decksOption = new StorageOption("Decks Location", ForgeProfileProperties.getDecksDir()) { final StorageOption decksOption = new StorageOption(localizer.getMessage("lblDecksLocation"), ForgeProfileProperties.getDecksDir()) {
@Override @Override
protected void onDirectoryChanged(String newDir) { protected void onDirectoryChanged(String newDir) {
ForgeProfileProperties.setDecksDir(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 @Override
protected void onDirectoryChanged(String newDir) { protected void onDirectoryChanged(String newDir) {
ForgeProfileProperties.setUserDir(newDir); ForgeProfileProperties.setUserDir(newDir);
@@ -89,7 +91,7 @@ public class FilesPage extends TabPage<SettingsScreen> {
decksOption.updateDir(ForgeProfileProperties.getDecksDir()); decksOption.updateDir(ForgeProfileProperties.getDecksDir());
} }
}, 1); }, 1);
lstItems.addItem(new StorageOption("Image Cache Location", ForgeProfileProperties.getCacheDir()) { lstItems.addItem(new StorageOption(localizer.getMessage("lblImageCacheLocation"), ForgeProfileProperties.getCacheDir()) {
@Override @Override
protected void onDirectoryChanged(String newDir) { protected void onDirectoryChanged(String newDir) {
ForgeProfileProperties.setCacheDir(newDir); ForgeProfileProperties.setCacheDir(newDir);
@@ -171,13 +173,13 @@ public class FilesPage extends TabPage<SettingsScreen> {
@Override @Override
public void select() { public void select() {
FFileChooser.show("Select " + label, ChoiceType.GetDirectory, description, new Callback<String>() { FFileChooser.show(localizer.getMessage("lblSelect").replace("%s", label), ChoiceType.GetDirectory, description, new Callback<String>() {
@Override @Override
public void run(String result) { public void run(String result) {
if (StringUtils.isEmpty(result) || description.equals(result)) { return; } if (StringUtils.isEmpty(result) || description.equals(result)) { return; }
updateDir(result); updateDir(result);
onDirectoryChanged(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);
} }
}); });
} }

View File

@@ -37,7 +37,7 @@ public class SettingsPage extends TabPage<SettingsScreen> {
private final FGroupList<Setting> lstSettings = add(new FGroupList<>()); private final FGroupList<Setting> lstSettings = add(new FGroupList<>());
public SettingsPage() { public SettingsPage() {
super("Settings", FSkinImage.SETTINGS); super(Localizer.getInstance().getMessage("lblSettings"), FSkinImage.SETTINGS);
final Localizer localizer = Localizer.getInstance(); final Localizer localizer = Localizer.getInstance();

View File

@@ -373,6 +373,17 @@ btnBuildNewSealedDeck=Erstelle neues Sealed Deck
lblViewDeck=Zeige Deck lblViewDeck=Zeige Deck
lblRandomDeck=Zufälliges Deck lblRandomDeck=Zufälliges Deck
lblRandomColors=Zufällige Farben 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 #GameType.java
lblSealed=Sealed lblSealed=Sealed
lblDraft=Draft lblDraft=Draft
@@ -967,10 +978,68 @@ lblToMainDeck=zum Haupt-Deck
lblHowMany=wie viel? lblHowMany=wie viel?
lblInventory=Inhaltsverzeichnis lblInventory=Inhaltsverzeichnis
lblCollection=Sammlung lblCollection=Sammlung
lblCatalog=Katalog
lblCommanders=Komandeure lblCommanders=Komandeure
lblOathbreakers=Eidbrecher lblOathbreakers=Eidbrecher
#Forge.java #Forge.java
lblLoadingFonts=Lade Schriften... lblLoadingFonts=Lade Schriften...
lblLoadingCardTranslations=Lade Kartenübersetzungen... lblLoadingCardTranslations=Lade Kartenübersetzungen...
lblFinishingStartup=Abschliessen... 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

View File

@@ -373,6 +373,17 @@ btnBuildNewSealedDeck=Build New Sealed Deck
lblViewDeck=View Deck lblViewDeck=View Deck
lblRandomDeck=Random Deck lblRandomDeck=Random Deck
lblRandomColors=Random Colors 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 #GameType.java
lblSealed=Sealed lblSealed=Sealed
lblDraft=Draft lblDraft=Draft
@@ -967,10 +978,68 @@ lblToMainDeck=to Main Deck
lblHowMany=how many? lblHowMany=how many?
lblInventory=Inventory lblInventory=Inventory
lblCollection=Collection lblCollection=Collection
lblCatalog=Catalog
lblCommanders=Commanders lblCommanders=Commanders
lblOathbreakers=Oathbreakers lblOathbreakers=Oathbreakers
#Forge.java #Forge.java
lblLoadingFonts=Loading fonts... lblLoadingFonts=Loading fonts...
lblLoadingCardTranslations=Loading card translations... lblLoadingCardTranslations=Loading card translations...
lblFinishingStartup=Finishing startup... 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

View File

@@ -231,7 +231,7 @@ lblGameSettings=Configuración
lblHeaderConstructedMode=Formato Oficial: Construido lblHeaderConstructedMode=Formato Oficial: Construido
lblGetNewRandomName=Obtener nuevo nombre aleatorio lblGetNewRandomName=Obtener nuevo nombre aleatorio
lbltypeofName=¿Qué tipo de nombre quieres generar? 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 lblUseThisName=Usar este nombre
lblTryAgain=Probar de nuevo lblTryAgain=Probar de nuevo
lblAddAPlayer=Añadir Jugador lblAddAPlayer=Añadir Jugador
@@ -373,6 +373,17 @@ btnBuildNewSealedDeck=Nuevo Mazo Sellado
lblViewDeck=Ver Mazo lblViewDeck=Ver Mazo
lblRandomDeck=Mazo Aleatorio lblRandomDeck=Mazo Aleatorio
lblRandomColors=Colores Aleatorios 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 #GameType.java
lblSealed=Sellado lblSealed=Sellado
lblDraft=Draft lblDraft=Draft
@@ -967,10 +978,68 @@ lblToMainDeck=al Mazo Principal
lblHowMany=¿cuántos? lblHowMany=¿cuántos?
lblInventory=Inventario lblInventory=Inventario
lblCollection=Colección lblCollection=Colección
lblCatalog=Catálogo
lblCommanders=Commanders lblCommanders=Commanders
lblOathbreakers=Oathbreakers lblOathbreakers=Oathbreakers
#Forge.java #Forge.java
lblLoadingFonts=Loading fonts... lblLoadingFonts=Loading fonts...
lblLoadingCardTranslations=Loading card translations... lblLoadingCardTranslations=Loading card translations...
lblFinishingStartup=Finishing startup... 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

View File

@@ -373,6 +373,17 @@ btnBuildNewSealedDeck=构建新的现开套牌
lblViewDeck=查看套牌 lblViewDeck=查看套牌
lblRandomDeck=随机套牌 lblRandomDeck=随机套牌
lblRandomColors=随机颜色 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 #GameType.java
lblSealed=现开 lblSealed=现开
lblDraft=轮抓 lblDraft=轮抓
@@ -967,10 +978,68 @@ lblToMainDeck=到主牌
lblHowMany=多少? lblHowMany=多少?
lblInventory=库存 lblInventory=库存
lblCollection=珍藏 lblCollection=珍藏
lblCatalog=目录
lblCommanders=指挥官 lblCommanders=指挥官
lblOathbreakers=破誓者 lblOathbreakers=破誓者
#Forge.java #Forge.java
lblLoadingFonts=加载字体中 lblLoadingFonts=加载字体中
lblLoadingCardTranslations=加载卡牌翻译中 lblLoadingCardTranslations=加载卡牌翻译中
lblFinishingStartup=完成启动 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