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.
This commit is contained in:
Peter
2019-07-30 13:56:41 +02:00
parent c7b1e764c6
commit cb18a369dd
3 changed files with 44 additions and 15 deletions

View File

@@ -518,27 +518,45 @@ public class CardView extends GameEntityView {
} }
public String getText() { 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 StringBuilder sb = new StringBuilder();
//final boolean isSplitCard = (state.getState() == CardStateName.LeftSplit); //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 (getId() < 0) {
if (isSplitCard()) { if (isSplitCard()) {
sb.append("(").append(state.getName()).append(") "); sb.append("(").append(tname).append(") ");
sb.append(state.getOracleText()); sb.append(toracle);
sb.append("\r\n\r\n"); sb.append("\r\n\r\n");
sb.append("(").append(getAlternateState().getName()).append(") "); sb.append("(").append(taltname).append(") ");
sb.append(getAlternateState().getOracleText()); sb.append(taltoracle);
return sb.toString().trim(); return sb.toString().trim();
} else { } else {
return state.getOracleText(); return toracle;
} }
} }
final String rulesText = state.getRulesText(); 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"); sb.append(rulesText).append("\r\n\r\n");
} }
if (isCommander()) { if (isCommander()) {
@@ -547,6 +565,7 @@ public class CardView extends GameEntityView {
} }
if (isSplitCard() && !isFaceDown()) { if (isSplitCard() && !isFaceDown()) {
// TODO: Translation?
CardStateView view = state.getState() == CardStateName.LeftSplit ? state : getAlternateState(); CardStateView view = state.getState() == CardStateName.LeftSplit ? state : getAlternateState();
if (getZone() != ZoneType.Stack) { if (getZone() != ZoneType.Stack) {
sb.append("("); sb.append("(");
@@ -555,12 +574,12 @@ public class CardView extends GameEntityView {
} }
sb.append(view.getAbilityText()); sb.append(view.getAbilityText());
} else { } else {
sb.append(state.getAbilityText()); if (toracle.isEmpty()) sb.append(state.getAbilityText());
} }
if (isSplitCard() && !isFaceDown() && getZone() != ZoneType.Stack) { if (isSplitCard() && !isFaceDown() && getZone() != ZoneType.Stack) {
//ensure ability text for right half of split card is included unless spell is on 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); String nonAbilityText = get(TrackableProperty.NonAbilityText);

View File

@@ -278,7 +278,17 @@ public class CardDetailUtil {
if (area.length() != 0) { if (area.length() != 0) {
area.append("\n"); 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]+-[0-9]+
// LEVEL [0-9]+\+ // LEVEL [0-9]+\+

View File

@@ -34,7 +34,7 @@ public class CardTranslation {
} }
} }
} catch (IOException e) { } 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; return originaltype;
} }
public static String getTranslatedOracle(String name, String originaloracle) { public static String getTranslatedOracle(String name) {
if (needsTranslation()) { if (needsTranslation()) {
String toracle = translatedoracles.get(name); String toracle = translatedoracles.get(name);
return toracle == null ? originaloracle : toracle; return toracle == null ? "" : toracle;
} }
return originaloracle; return "";
} }
private static boolean needsTranslation() { private static boolean needsTranslation() {