introduced more general grammatical cases

This commit is contained in:
Max-Wilhelm Bruker 2012-04-22 17:23:10 +02:00
parent 8f6de6637f
commit b26444435c
5 changed files with 1893 additions and 1810 deletions

View file

@ -49,34 +49,100 @@ QString CardZone::getTranslatedName(bool hisOwn, GrammaticalCase gc) const
QString ownerName = player->getName(); QString ownerName = player->getName();
bool female = player->getUserInfo()->gender() == ServerInfo_User::Female; bool female = player->getUserInfo()->gender() == ServerInfo_User::Female;
if (name == "hand") if (name == "hand")
switch (gc) { return female
case CaseNominative: return female ? (hisOwn ? tr("her hand", "nominative, female owner") : tr("%1's hand", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his hand", "nominative, male owner") : tr("%1's hand", "nominative, male owner").arg(ownerName)); ? (hisOwn
case CaseGenitive: return female ? (hisOwn ? tr("of her hand", "genitive, female owner") : tr("of %1's hand", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his hand", "genitive, male owner") : tr("of %1's hand", "genitive, male owner").arg(ownerName)); ? tr("her hand", "nominative, female owner")
case CaseAccusative: return female ? (hisOwn ? tr("her hand", "accusative, female owner") : tr("%1's hand", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his hand", "accusative, male owner") : tr("%1's hand", "accusative, male owner").arg(ownerName)); : tr("%1's hand", "nominative, female owner").arg(ownerName)
} ) : (hisOwn
? tr("his hand", "nominative, male owner")
: tr("%1's hand", "nominative, male owner").arg(ownerName)
);
else if (name == "deck") else if (name == "deck")
switch (gc) { switch (gc) {
case CaseNominative: return female ? (hisOwn ? tr("her library", "nominative, female owner") : tr("%1's library", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his library", "nominative, male owner") : tr("%1's library", "nominative, male owner").arg(ownerName)); case CaseLookAtZone:
case CaseGenitive: return female ? (hisOwn ? tr("of her library", "genitive, female owner") : tr("of %1's library", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his library", "genitive, male owner") : tr("of %1's library", "genitive, male owner").arg(ownerName)); return female
case CaseAccusative: return female ? (hisOwn ? tr("her library", "accusative, female owner") : tr("%1's library", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his library", "accusative, male owner") : tr("%1's library", "accusative, male owner").arg(ownerName)); ? (hisOwn
? tr("her library", "look at zone, female owner")
: tr("%1's library", "look at zone, female owner").arg(ownerName)
) : (hisOwn
? tr("his library", "look at zone, male owner")
: tr("%1's library", "look at zone, male owner").arg(ownerName)
);
case CaseTopCardsOfZone:
return female
? (hisOwn
? tr("of her library", "top cards of zone, female owner")
: tr("of %1's library", "top cards of zone, female owner").arg(ownerName)
) : (hisOwn
? tr("of his library", "top cards of zone, male owner")
: tr("of %1's library", "top cards of zone, male owner").arg(ownerName)
);
case CaseRevealZone:
return female
? (hisOwn
? tr("her library", "reveal zone, female owner")
: tr("%1's library", "reveal zone, female owner").arg(ownerName)
) : (hisOwn
? tr("his library", "reveal zone, male owner")
: tr("%1's library", "reveal zone, male owner").arg(ownerName)
);
case CaseShuffleZone:
return female
? (hisOwn
? tr("her library", "shuffle, female owner")
: tr("%1's library", "shuffle, female owner").arg(ownerName)
) : (hisOwn
? tr("his library", "shuffle, male owner")
: tr("%1's library", "shuffle, male owner").arg(ownerName)
);
default:
return female
? (hisOwn
? tr("her library", "nominative, female owner")
: tr("%1's library", "nominative, female owner").arg(ownerName)
) : (hisOwn
? tr("his library", "nominative, male owner")
: tr("%1's library", "nominative, male owner").arg(ownerName)
);
} }
else if (name == "grave") else if (name == "grave")
switch (gc) { return female
case CaseNominative: return female ? (hisOwn ? tr("her graveyard", "nominative, female owner") : tr("%1's graveyard", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his graveyard", "nominative, male owner") : tr("%1's graveyard", "nominative, male owner").arg(ownerName)); ? (hisOwn
case CaseGenitive: return female ? (hisOwn ? tr("of her graveyard", "genitive, female owner") : tr("of %1's graveyard", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his graveyard", "genitive, male owner") : tr("of %1's graveyard", "genitive, male owner").arg(ownerName)); ? tr("her graveyard", "nominative, female owner")
case CaseAccusative: return female ? (hisOwn ? tr("her graveyard", "accusative, female owner") : tr("%1's graveyard", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his graveyard", "accusative, male owner") : tr("%1's graveyard", "accusative, male owner").arg(ownerName)); : tr("%1's graveyard", "nominative, female owner").arg(ownerName)
} ) : (hisOwn
? tr("his graveyard", "nominative, male owner")
: tr("%1's graveyard", "nominative, male owner").arg(ownerName)
);
else if (name == "rfg") else if (name == "rfg")
switch (gc) { return female
case CaseNominative: return female ? (hisOwn ? tr("her exile", "nominative, female owner") : tr("%1's exile", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his exile", "nominative, male owner") : tr("%1's exile", "nominative, male owner").arg(ownerName)); ? (hisOwn
case CaseGenitive: return female ? (hisOwn ? tr("of her exile", "genitive, female owner") : tr("of %1's exile", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his exile", "genitive, male owner") : tr("of %1's exile", "genitive, male owner").arg(ownerName)); ? tr("her exile", "nominative, female owner")
case CaseAccusative: return female ? (hisOwn ? tr("her exile", "accusative, female owner") : tr("%1's exile", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his exile", "accusative, male owner") : tr("%1's exile", "accusative, male owner").arg(ownerName)); : tr("%1's exile", "nominative, female owner").arg(ownerName)
} ) : (hisOwn
? tr("his exile", "nominative, male owner")
: tr("%1's exile", "nominative, male owner").arg(ownerName)
);
else if (name == "sb") else if (name == "sb")
switch (gc) { switch (gc) {
case CaseNominative: return female ? (hisOwn ? tr("her sideboard", "nominative, female owner") : tr("%1's sideboard", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his sideboard", "nominative, male owner") : tr("%1's sideboard", "nominative, male owner").arg(ownerName)); case CaseLookAtZone:
case CaseGenitive: return female ? (hisOwn ? tr("of her sideboard", "genitive, female owner") : tr("of %1's sideboard", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his sideboard", "genitive, male owner") : tr("of %1's sideboard", "genitive, male owner").arg(ownerName)); return female
case CaseAccusative: return female ? (hisOwn ? tr("her sideboard", "accusative, female owner") : tr("%1's sideboard", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his sideboard", "accusative, male owner") : tr("%1's sideboard", "accusative, male owner").arg(ownerName)); ? (hisOwn
? tr("her sideboard", "look at zone, female owner")
: tr("%1's sideboard", "look at zone, female owner").arg(ownerName)
) : (hisOwn
? tr("his sideboard", "look at zone, male owner")
: tr("%1's sideboard", "look at zone, male owner").arg(ownerName)
);
case CaseNominative:
return female
? (hisOwn
? tr("her sideboard", "nominative, female owner")
: tr("%1's sideboard", "nominative, female owner").arg(ownerName)
) : (hisOwn
? tr("his sideboard", "nominative, male owner")
: tr("%1's sideboard", "nominative, male owner").arg(ownerName)
);
} }
return QString(); return QString();
} }

View file

@ -161,10 +161,11 @@ void MessageLogWidget::logShuffle(Player *player, CardZone *zone)
{ {
soundEngine->shuffle(); soundEngine->shuffle();
if (currentContext != MessageContext_Mulligan) { if (currentContext != MessageContext_Mulligan) {
if (isFemale(player)) appendHtml((isFemale(player)
appendHtml(tr("%1 shuffles %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); ? tr("%1 shuffles %2.", "female")
else : tr("%1 shuffles %2.", "male")
appendHtml(tr("%1 shuffles %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); ).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(true, CaseShuffleZone)));
} }
} }
@ -648,26 +649,27 @@ void MessageLogWidget::logSetAnnotation(Player *player, CardItem *card, QString
void MessageLogWidget::logDumpZone(Player *player, CardZone *zone, int numberCards) void MessageLogWidget::logDumpZone(Player *player, CardZone *zone, int numberCards)
{ {
if (numberCards != -1) { if (numberCards == -1)
if (isFemale(player)) appendHtml((isFemale(player)
appendHtml(tr("%1 is looking at the top %2 cards %3.", "female").arg(sanitizeHtml(player->getName())).arg(numberCards).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseGenitive))); ? tr("%1 is looking at %2.", "female")
else : tr("%1 is looking at %2.", "male")
appendHtml(tr("%1 is looking at the top %2 cards %3.", "male").arg(sanitizeHtml(player->getName())).arg(numberCards).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseGenitive))); ).arg(sanitizeHtml(player->getName()))
} else { .arg(zone->getTranslatedName(zone->getPlayer() == player, CaseLookAtZone)));
if (isFemale(player)) else
appendHtml(tr("%1 is looking at %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative))); appendHtml((isFemale(player)
else ? tr("%1 is looking at the top %n card(s) %2.", "female", numberCards)
appendHtml(tr("%1 is looking at %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative))); : tr("%1 is looking at the top %n card(s) %2.", "male", numberCards)
} ).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(zone->getPlayer() == player, CaseTopCardsOfZone)));
} }
void MessageLogWidget::logStopDumpZone(Player *player, CardZone *zone) void MessageLogWidget::logStopDumpZone(Player *player, CardZone *zone)
{ {
QString zoneName = zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative); appendHtml((isFemale(player)
if (isFemale(player)) ? tr("%1 stops looking at %2.", "female")
appendHtml(tr("%1 stops looking at %2.", "female").arg(sanitizeHtml(player->getName())).arg(zoneName)); : tr("%1 stops looking at %2.", "male")
else ).arg(sanitizeHtml(player->getName()))
appendHtml(tr("%1 stops looking at %2.", "male").arg(sanitizeHtml(player->getName())).arg(zoneName)); .arg(zone->getTranslatedName(zone->getPlayer() == player, CaseLookAtZone)));
} }
void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer, bool faceDown) void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer, bool faceDown)
@ -702,12 +704,13 @@ void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId
else else
str = tr("%1 reveals %2 to %3.", "p1 male, p2 male"); str = tr("%1 reveals %2 to %3.", "p1 male, p2 male");
} }
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)).arg(sanitizeHtml(otherPlayer->getName()))); appendHtml(str.arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseRevealZone)).arg(sanitizeHtml(otherPlayer->getName())));
} else { } else {
if (isFemale(player)) appendHtml((isFemale(player)
appendHtml(tr("%1 reveals %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); ? tr("%1 reveals %2.", "female")
else : tr("%1 reveals %2.", "male")
appendHtml(tr("%1 reveals %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); ).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(true, CaseRevealZone)));
} }
} else if (cardId == -2) { } else if (cardId == -2) {
if (otherPlayer) { if (otherPlayer) {
@ -725,7 +728,7 @@ void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName()))); appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName())));
} else { } else {
if (isFemale(player)) if (isFemale(player))
appendHtml(tr("%1 randomly reveals %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); appendHtml(tr("%1 randomly reveals %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
else else
appendHtml(tr("%1 randomly reveals %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); appendHtml(tr("%1 randomly reveals %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
} }
@ -759,7 +762,7 @@ void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName()))); appendHtml(str.arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr).arg(sanitizeHtml(otherPlayer->getName())));
} else { } else {
if (isFemale(player)) if (isFemale(player))
appendHtml(tr("%1 reveals %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative))); appendHtml(tr("%1 reveals %2%3.", "female").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
else else
appendHtml(tr("%1 reveals %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr)); appendHtml(tr("%1 reveals %2%3.", "male").arg(sanitizeHtml(player->getName())).arg(cardStr).arg(fromStr));
} }
@ -768,13 +771,12 @@ void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId
void MessageLogWidget::logAlwaysRevealTopCard(Player *player, CardZone *zone, bool reveal) void MessageLogWidget::logAlwaysRevealTopCard(Player *player, CardZone *zone, bool reveal)
{ {
QString str; appendHtml((reveal
if (reveal) ? tr("%1 is now keeping the top card %2 revealed.")
str = tr("%1 is now keeping the top card %2 revealed."); : tr("%1 is not revealing the top card %2 any longer.")
else ).arg(sanitizeHtml(player->getName()))
str = tr("%1 is not revealing the top card %2 any longer."); .arg(zone->getTranslatedName(true, CaseTopCardsOfZone))
);
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseGenitive)));
} }
void MessageLogWidget::logSetActivePlayer(Player *player) void MessageLogWidget::logSetActivePlayer(Player *player)

View file

@ -1,6 +1,6 @@
#ifndef TRANSLATION_H #ifndef TRANSLATION_H
#define TRANSLATION_H #define TRANSLATION_H
enum GrammaticalCase { CaseNominative, CaseGenitive, CaseAccusative }; enum GrammaticalCase { CaseNominative, CaseLookAtZone, CaseTopCardsOfZone, CaseRevealZone, CaseShuffleZone };
#endif #endif

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff