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();
bool female = player->getUserInfo()->gender() == ServerInfo_User::Female;
if (name == "hand")
switch (gc) {
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));
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));
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));
}
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)
);
else if (name == "deck")
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 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));
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));
case CaseLookAtZone:
return female
? (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")
switch (gc) {
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));
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));
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));
}
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)
);
else if (name == "rfg")
switch (gc) {
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));
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));
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));
}
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)
);
else if (name == "sb")
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 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));
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));
case CaseLookAtZone:
return female
? (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();
}

View file

@ -161,10 +161,11 @@ void MessageLogWidget::logShuffle(Player *player, CardZone *zone)
{
soundEngine->shuffle();
if (currentContext != MessageContext_Mulligan) {
if (isFemale(player))
appendHtml(tr("%1 shuffles %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
else
appendHtml(tr("%1 shuffles %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
appendHtml((isFemale(player)
? tr("%1 shuffles %2.", "female")
: tr("%1 shuffles %2.", "male")
).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)
{
if (numberCards != -1) {
if (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)));
else
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)));
} else {
if (isFemale(player))
appendHtml(tr("%1 is looking at %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative)));
else
appendHtml(tr("%1 is looking at %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative)));
}
if (numberCards == -1)
appendHtml((isFemale(player)
? tr("%1 is looking at %2.", "female")
: tr("%1 is looking at %2.", "male")
).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(zone->getPlayer() == player, CaseLookAtZone)));
else
appendHtml((isFemale(player)
? tr("%1 is looking at the top %n card(s) %2.", "female", numberCards)
: 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)
{
QString zoneName = zone->getTranslatedName(zone->getPlayer() == player, CaseAccusative);
if (isFemale(player))
appendHtml(tr("%1 stops looking at %2.", "female").arg(sanitizeHtml(player->getName())).arg(zoneName));
else
appendHtml(tr("%1 stops looking at %2.", "male").arg(sanitizeHtml(player->getName())).arg(zoneName));
appendHtml((isFemale(player)
? tr("%1 stops looking at %2.", "female")
: tr("%1 stops looking at %2.", "male")
).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(zone->getPlayer() == player, CaseLookAtZone)));
}
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
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 {
if (isFemale(player))
appendHtml(tr("%1 reveals %2.", "female").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
else
appendHtml(tr("%1 reveals %2.", "male").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
appendHtml((isFemale(player)
? tr("%1 reveals %2.", "female")
: tr("%1 reveals %2.", "male")
).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(true, CaseRevealZone)));
}
} else if (cardId == -2) {
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())));
} else {
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
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())));
} else {
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
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)
{
QString str;
if (reveal)
str = tr("%1 is now keeping the top card %2 revealed.");
else
str = tr("%1 is not revealing the top card %2 any longer.");
appendHtml(str.arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseGenitive)));
appendHtml((reveal
? tr("%1 is now keeping the top card %2 revealed.")
: tr("%1 is not revealing the top card %2 any longer.")
).arg(sanitizeHtml(player->getName()))
.arg(zone->getTranslatedName(true, CaseTopCardsOfZone))
);
}
void MessageLogWidget::logSetActivePlayer(Player *player)

View file

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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff