From cb18a369dd7e88908c5ae234916f0b70853668e4 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 30 Jul 2019 13:56:41 +0200 Subject: [PATCH] Changed oracle translation using the original getText function (before we lost the getText additional hints when translating). Needs more translation fixes. Splitted cards (e.g. Grizzled Outcasts) don't update the translated oracle text. --- .../main/java/forge/game/card/CardView.java | 39 ++++++++++++++----- .../main/java/forge/card/CardDetailUtil.java | 12 +++++- .../main/java/forge/card/CardTranslation.java | 8 ++-- 3 files changed, 44 insertions(+), 15 deletions(-) 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() {