diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index e884a316500..27fb5650ec7 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -518,27 +518,45 @@ public class CardView extends GameEntityView { } public String getText() { - return getText(getCurrentState()); + return getText(getCurrentState(), null); } - public String getText(CardStateView state) { + public String getText(CardStateView state, String[] translationsText) { final StringBuilder sb = new StringBuilder(); //final boolean isSplitCard = (state.getState() == CardStateName.LeftSplit); + String tname = "", toracle = "", taltname = "", taltoracle = ""; + + if (translationsText == null) { + tname = state.getName(); + toracle = state.getOracleText(); + if (isSplitCard()) { + taltname = getAlternateState().getName(); + taltoracle = getAlternateState().getOracleText(); + } + } else { + if (!translationsText[0].isEmpty()) tname = translationsText[0]; + if (!translationsText[1].isEmpty()) toracle = translationsText[1]; + if (!translationsText[2].isEmpty()) taltname = translationsText[2]; + if (!translationsText[3].isEmpty()) taltoracle = translationsText[3]; + } + if (getId() < 0) { if (isSplitCard()) { - sb.append("(").append(state.getName()).append(") "); - sb.append(state.getOracleText()); + sb.append("(").append(tname).append(") "); + sb.append(toracle); sb.append("\r\n\r\n"); - sb.append("(").append(getAlternateState().getName()).append(") "); - sb.append(getAlternateState().getOracleText()); + sb.append("(").append(taltname).append(") "); + sb.append(taltoracle); return sb.toString().trim(); } else { - return state.getOracleText(); + return toracle; } } final String rulesText = state.getRulesText(); - if (!rulesText.isEmpty()) { + if (!toracle.isEmpty()) { + sb.append(toracle).append("\r\n\r\n"); + } else if (!rulesText.isEmpty()) { sb.append(rulesText).append("\r\n\r\n"); } if (isCommander()) { @@ -547,6 +565,7 @@ public class CardView extends GameEntityView { } if (isSplitCard() && !isFaceDown()) { + // TODO: Translation? CardStateView view = state.getState() == CardStateName.LeftSplit ? state : getAlternateState(); if (getZone() != ZoneType.Stack) { sb.append("("); @@ -555,12 +574,12 @@ public class CardView extends GameEntityView { } sb.append(view.getAbilityText()); } else { - sb.append(state.getAbilityText()); + if (toracle.isEmpty()) sb.append(state.getAbilityText()); } if (isSplitCard() && !isFaceDown() && getZone() != ZoneType.Stack) { //ensure ability text for right half of split card is included unless spell is on stack - sb.append("\r\n\r\n").append("(").append(getAlternateState().getName()).append(") ").append(getAlternateState().getOracleText()); + sb.append("\r\n\r\n").append("(").append(taltname).append(") ").append(taltoracle); } String nonAbilityText = get(TrackableProperty.NonAbilityText); diff --git a/forge-gui/src/main/java/forge/card/CardDetailUtil.java b/forge-gui/src/main/java/forge/card/CardDetailUtil.java index c18f2b8486c..af879156934 100644 --- a/forge-gui/src/main/java/forge/card/CardDetailUtil.java +++ b/forge-gui/src/main/java/forge/card/CardDetailUtil.java @@ -278,7 +278,17 @@ public class CardDetailUtil { if (area.length() != 0) { area.append("\n"); } - String text = CardTranslation.getTranslatedOracle(card.getName(), card.getText(state)); + + + String[] translationTexts = { + card.getName(), + CardTranslation.getTranslatedOracle(card.getName()), + card.isSplitCard() ? card.getAlternateState().getName() : "", + card.isSplitCard() ? CardTranslation.getTranslatedOracle(card.getAlternateState().getName()) : "", + }; + + String text = card.getText(state, translationTexts); + // LEVEL [0-9]+-[0-9]+ // LEVEL [0-9]+\+ diff --git a/forge-gui/src/main/java/forge/card/CardTranslation.java b/forge-gui/src/main/java/forge/card/CardTranslation.java index c5c90816283..359ce230093 100644 --- a/forge-gui/src/main/java/forge/card/CardTranslation.java +++ b/forge-gui/src/main/java/forge/card/CardTranslation.java @@ -34,7 +34,7 @@ public class CardTranslation { } } } catch (IOException e) { - Log.error("Error reading translated file. Language: " + language); + Log.error("Error reading translation file: cardnames-" + language + ".txt"); } } @@ -56,13 +56,13 @@ public class CardTranslation { return originaltype; } - public static String getTranslatedOracle(String name, String originaloracle) { + public static String getTranslatedOracle(String name) { if (needsTranslation()) { String toracle = translatedoracles.get(name); - return toracle == null ? originaloracle : toracle; + return toracle == null ? "" : toracle; } - return originaloracle; + return ""; } private static boolean needsTranslation() {