- Added a fallback for accented characters to use unaccented ones.

- Updated Portuguese strings with the version here: http://forum.zdoom.org/viewtopic.php?p=672839#p672839

SVN r4271 (trunk)
This commit is contained in:
Randy Heit 2013-05-17 02:35:35 +00:00
parent 71f42122bc
commit 6ada6158ef
2 changed files with 229 additions and 178 deletions

View file

@ -244,32 +244,69 @@ int NumTextColors;
// PRIVATE DATA DEFINITIONS ------------------------------------------------ // PRIVATE DATA DEFINITIONS ------------------------------------------------
static const BYTE myislower[256] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0
};
static TArray<TranslationParm> TranslationParms[2]; static TArray<TranslationParm> TranslationParms[2];
static TArray<TranslationMap> TranslationLookup; static TArray<TranslationMap> TranslationLookup;
static TArray<PalEntry> TranslationColors; static TArray<PalEntry> TranslationColors;
// CODE -------------------------------------------------------------------- // CODE --------------------------------------------------------------------
static bool myislower(int code)
{
if (code >= 'a' && code <= 'z')
return true;
if (code != 0xF7 && code != 0xFF && (code & 0xE0) == 0xE0)
return true;
return false;
}
// Returns a character without an accent mark.
// FIXME: Only valid for CP-1252; we should go Unicode at some point.
static int stripaccent(int code)
{
if (code < 0x8a)
return code;
if (code == 0x8a) // Latin capital letter S with caron
return 'S';
if (code == 0x8e) // Latin capital letter Z with caron
return 'Z';
if (code == 0x9a) // Latin small letter S with caron
return 's';
if (code == 0x9e) // Latin small letter Z with caron
return 'z';
if (code == 0x9f) // Latin capital letter Y with diaeresis
return 'Y';
if (code == 0xff) // Latin small letter Y with diaeresis
return 'y';
// Every other accented character has the high two bits set.
if ((code & 0xC0) == 0)
return code;
// Make lowercase characters uppercase so there are half as many tests.
int acode = code & 0xDF;
if (acode >= 0xC0 && acode <= 0xC5) // A with accents
return 'A' + (code & 0x20);
if (acode == 0xC7) // Cedilla
return 'C' + (acode & 0x20);
if (acode >= 0xC8 && acode <= 0xCB) // E with accents
return 'E' + (code & 0x20);
if (acode >= 0xCC && acode <= 0xCF) // I with accents
return 'I' + (code & 0x20);
if (acode == 0xD0) // Eth
return 'D' + (code & 0x20);
if (acode == 0xD1) // N with tilde
return 'N' + (code & 0x20);
if (acode >= 0xD2 && acode <= 0xD6 || // O with accents
acode == 0xD8) // O with stroke
return 'O' + (code & 0x20);
if (acode >= 0xD9 && acode <= 0xDC) // U with accents
return 'U' + (code & 0x20);
if (acode == 0xDD) // Y with accute
return 'Y' + (code & 0x20);
if (acode == 0xDE) // Thorn
return 'P' + (code & 0x20); // well, it sort of looks like a 'P'
return code;
}
FFont *V_GetFont(const char *name) FFont *V_GetFont(const char *name)
{ {
FFont *font = FFont::FindFont (name); FFont *font = FFont::FindFont (name);
@ -760,7 +797,8 @@ int FFont::GetCharCode(int code, bool needpic) const
{ {
return code; return code;
} }
if (myislower[code]) // Try converting lowercase characters to uppercase.
if (myislower(code))
{ {
code -= 32; code -= 32;
if (code >= FirstChar && code <= LastChar && (!needpic || Chars[code - FirstChar].Pic != NULL)) if (code >= FirstChar && code <= LastChar && (!needpic || Chars[code - FirstChar].Pic != NULL))
@ -768,6 +806,16 @@ int FFont::GetCharCode(int code, bool needpic) const
return code; return code;
} }
} }
// Try stripping accents from accented characters.
int newcode = stripaccent(code);
if (newcode != code)
{
code = newcode;
if (code >= FirstChar && code <= LastChar && (!needpic || Chars[code - FirstChar].Pic != NULL))
{
return code;
}
}
return -1; return -1;
} }
@ -2015,8 +2063,8 @@ void FSpecialFont::LoadTranslations()
// FFont :: FixXMoves // FFont :: FixXMoves
// //
// If a font has gaps in its characters, set the missing characters' // If a font has gaps in its characters, set the missing characters'
// XMoves to either SpaceWidth or the uppercase variant's XMove. Missing // XMoves to either SpaceWidth or the unaccented or uppercase variant's
// XMoves must be initialized with INT_MIN beforehand. // XMove. Missing XMoves must be initialized with INT_MIN beforehand.
// //
//========================================================================== //==========================================================================
@ -2026,7 +2074,8 @@ void FFont::FixXMoves()
{ {
if (Chars[i].XMove == INT_MIN) if (Chars[i].XMove == INT_MIN)
{ {
if (myislower[i + FirstChar]) // Try an uppercase character.
if (myislower(i + FirstChar))
{ {
int upper = i - 32; int upper = i - 32;
if (upper >= 0) if (upper >= 0)
@ -2035,6 +2084,17 @@ void FFont::FixXMoves()
continue; continue;
} }
} }
// Try an unnaccented character.
int noaccent = stripaccent(i + FirstChar);
if (noaccent != i + FirstChar)
{
noaccent -= FirstChar;
if (noaccent >= 0)
{
Chars[i].XMove = Chars[noaccent].XMove;
continue;
}
}
Chars[i].XMove = SpaceWidth; Chars[i].XMove = SpaceWidth;
} }
} }

View file

@ -11,34 +11,34 @@
/* Versão 0.97 - 07/12/2012 */ /* Versão 0.97 - 07/12/2012 */
/* No final das traduções, tentarei adicionar os outros jogos suportados pelo ZDoom */ /* No final das traduções, tentarei adicionar os outros jogos suportados pelo ZDoom */
[ptb] [ptb pt br]
D_DEVSTR = "Modo de desenvolvimento ATIVADO.\n"; D_DEVSTR = "Modo de desenvolvimento ATIVADO.\n";
D_CDROM = "Rodando do CD/DVD-ROM: zdoom.ini em c:\\zdoomdat\n"; D_CDROM = "Rodando do CD/DVD-ROM: zdoom.ini em c:\\zdoomdat\n";
PRESSKEY = "aperte qualquer tecla."; PRESSKEY = "aperte qualquer tecla.";
PRESSYN = "escolha Sim ou Nao"; PRESSYN = "escolha Sim ou Não";
QUITMSG = "deseja mesmo sair?"; QUITMSG = "deseja mesmo sair?";
TXT_YES = "Sim"; TXT_YES = "Sim";
TXT_NO = "Nao"; TXT_NO = "Não";
// Mensagens de saída DooM 1 // Mensagens de saída DooM 1
QUITMSG1 = "por favor, nao saia, \nprecisamos mata-los..."; QUITMSG1 = "por favor, não saia, \nprecisamos matá-los...";
QUITMSG2 = "vamo nessa, isso ja esta\nficando insuportavel!"; QUITMSG2 = "vamo nessa, isso já está\nficando insuportável!";
QUITMSG3 = "eu nao sairia se fosse voce.\nWindows e muito mais chato."; QUITMSG3 = "eu não sairia se fosse você.\nWindows é muito mais chato.";
QUITMSG4 = "entao voce gosta mais do windows\ndo que de mim, certo?"; QUITMSG4 = "então você gosta mais do windows\ndo que de mim, certo?";
QUITMSG5 = "nao va, eu acho que vi algo\nse mexendo naquele canto!"; QUITMSG5 = "nao vá, eu acho que vi algo\nse mexendo naquele canto!";
QUITMSG6 = "sabe, na proxima vez,\nvoce ja era."; QUITMSG6 = "sabe, na próxima vez,\nvocê já era.";
QUITMSG7 = "va em frente, saia.\nveja se me preocupo."; QUITMSG7 = "vá em frente, saia.\nveja se me preocupo.";
// Mensagens de saída DooM II // Mensagens de saída DooM II
QUITMSG8 = " >sair \n >pedindo permissao para sair\n(tem certeza??)"; QUITMSG8 = " >sair \n >pedindo permissão para sair\n(tem certeza??)";
QUITMSG9 = "nao va agora, um \num buraco negro lhe espera\n na saida!"; QUITMSG9 = "nao vá agora, um \nburaco negro lhe espera\n na saida!";
QUITMSG10 = "saia daqui e volte\npara seus programas chatos."; QUITMSG10 = "saia daqui e volte\npara seus programas chatos.";
QUITMSG11 = "se fosse seu chefe, \nvoce estaria demitido!"; QUITMSG11 = "se fosse seu chefe, \nvocê estaria demitido!";
QUITMSG12 = "OK, pode ir.\nmas pode esquecer sua pontuacao!"; QUITMSG12 = "OK, pode ir.\nmas pode esquecer sua pontuação!";
QUITMSG13 = "va. \nquando voltar, estarei lhe esperando\ncom meu BFG."; QUITMSG13 = "vá. \nquando voltar, estarei lhe esperando\ncom meu BFG.";
QUITMSG14 = "tens sorte por nao\nlhe dar um premio por pensar\n em sair."; QUITMSG14 = "você tem sorte por não\nlhe dar um prêmio por pensar\n em sair.";
// Mensagens de saída Strife // Mensagens de saída Strife
QUITMSG15 = "aonde pensa que vai?!\n e quanto a nos?"; QUITMSG15 = "aonde pensa que vai?!\n e quanto a nos?";
@ -59,55 +59,55 @@ QUITMSG27 = "Nao va.\nPrecisamos de sua ajuda!";
QUITMSG28 = "Nao nos abandone!!!"; QUITMSG28 = "Nao nos abandone!!!";
QUITMSG29 = "O verdadeiro Chex(R) Warrior\n nunca desistiria!"; QUITMSG29 = "O verdadeiro Chex(R) Warrior\n nunca desistiria!";
LOADNET = "impossivel carregar, porque \n esta em partida online!\naperte uma tecla."; LOADNET = "impossível carregar, porque \n está em partida online!\naperte uma tecla.";
QLOADNET = "impossivel carregar, porque esta online!\n\naperte uma tecla."; QLOADNET = "impossível carregar, porque está online!\n\naperte uma tecla.";
QSAVESPOT = "escolha um slot antes de fazer isso de novo.\n\naperte uma tecla."; QSAVESPOT = "escolha um slot antes de fazer isso de novo.\n\naperte uma tecla.";
SAVEDEAD = "precisa estar jogando para faze-lo.\n\naperte uma tecla."; SAVEDEAD = "precisa estar jogando para fazê-lo.\n\naperte uma tecla.";
QSPROMPT = "deseja mesmo salvar aqui?\n\n'%s'\n"; QSPROMPT = "deseja mesmo salvar aqui?\n\n'%s'\n";
QLPROMPT = "deseja carregar esse jogo?\n\n'%s'\n"; QLPROMPT = "deseja carregar esse jogo?\n\n'%s'\n";
NEWGAME = "impossivel iniciar um novo jogo\nenquanto se esta online.\n\naperte uma tecla."; NEWGAME = "impossivel iniciar um novo jogo\nenquanto se está online.\n\naperte uma tecla.";
NIGHTMARE = "tem certeza? nem eu mesmo me\nsujeito a jogar nesse modo.\n"; NIGHTMARE = "tem certeza? nem eu mesmo me\nsujeito a jogar nesse modo.\n";
SWSTRING = "essa e a versao shareware de doom.\nque contem somente o primeiro episodio.\npara continuar, compre a trilogia.\n\naperte uma tecla."; SWSTRING = "essa e a versao shareware de doom.\nque contem somente o primeiro episódio.\npara continuar, compre a trilogia.\n\naperte uma tecla.";
MSGOFF = "Messagens DESATIVADO"; MSGOFF = "Mensagens DESATIVADO";
MSGON = "Messagens ATIVADO"; MSGON = "Mensagens ATIVADO";
NETEND = "nao pode desligar esse jogo!\n\naperte uma tecla."; NETEND = "nâo pode desligar esse jogo!\n\naperte uma tecla.";
ENDGAME = "tem certeza que deseja fechar esse jogo?\n"; ENDGAME = "tem certeza que deseja fechar esse jogo?\n";
DOSY = "tem certeza disso?"; DOSY = "tem certeza disso?";
EMPTYSTRING = "V A Z I O"; EMPTYSTRING = "V A Z I O";
GOTARMOR = "Colete equipado."; GOTARMOR = "Colete equipado.";
GOTMEGA = "Armadura equipada."; GOTMEGA = "Armadura equipada.";
GOTHTHBONUS = "Pegou bonus de vida"; GOTHTHBONUS = "Pegou bônus de vida";
GOTARMBONUS = "Pegou bonus de protecao (colete)"; GOTARMBONUS = "Pegou bônus de proteção (colete)";
GOTSTIM = "Pegou um kit de primeiros socorros\npequeno."; GOTSTIM = "Pegou um kit de primeiros socorros\npequeno.";
GOTMEDINEED = "Pegou um kit de primeiros socorros\n na HORA CERTA!!"; GOTMEDINEED = "Pegou um kit de primeiros socorros\n na HORA CERTA!!";
GOTMEDIKIT = "Pegou um kit de primeiros socorros\ngrande."; GOTMEDIKIT = "Pegou um kit de primeiros socorros\ngrande.";
GOTSUPER = "Supercarga!"; GOTSUPER = "Supercarga!";
GOTBLUECARD = "Achou a credencial azul."; GOTBLUECARD = "Achou a credencial azul.";
GOTYELWCARD = "Achou a credencial amarela."; GOTYELWCARD = "Achou a credencial amarela.";
GOTREDCARD = "Achou a credencial vermelha equipada."; GOTREDCARD = "Achou a credencial vermelha.";
GOTBLUESKUL = "Achou o cranio azul."; GOTBLUESKUL = "Achou o crânio azul.";
GOTYELWSKUL = "Achou o cranio amarelo."; GOTYELWSKUL = "Achou o crânio amarelo.";
GOTREDSKUL = "Achou o cranio vermelho."; GOTREDSKUL = "Achou o crânio vermelho.";
GOTINVUL = "Sou invencivel (30 sec)!"; GOTINVUL = "Invencibilidade (30 sec)!";
GOTBERSERK = "Pilulas de força (30 sec)!"; GOTBERSERK = "Pílulas de força (30 sec)!";
GOTINVIS = "Invisibilidade (30 sec)"; GOTINVIS = "Invisibilidade (30 sec)";
GOTSUIT = "Roupa anti-radiacao (1 min)"; GOTSUIT = "Roupa anti-radiação (1 min)";
GOTMAP = "Mapa do nivel"; GOTMAP = "Mapa do nível";
GOTVISOR = "Oculos de visao noturna (1 min)"; GOTVISOR = "Óculos de visão noturna (1 min)";
GOTMSPHERE = "Megaesfera!"; GOTMSPHERE = "Megaesfera!";
GOTCLIP = "Pegou um clipe."; GOTCLIP = "Pegou um clipe.";
GOTCLIPBOX = "Caixa de municao equipada."; GOTCLIPBOX = "Caixa de munição equipada.";
GOTROCKET = "Foguete equipado."; GOTROCKET = "Foguete equipado.";
GOTROCKBOX = "Caixa de foguetes equipada."; GOTROCKBOX = "Caixa de foguetes equipada.";
GOTCELL = "Pack de energia(pequeno) equipada."; GOTCELL = "Pack de energia(pequeno) equipada.";
GOTCELLBOX = "Pack de energia(grande) equipada."; GOTCELLBOX = "Pack de energia(grande) equipada.";
GOTSHELLS = "Cartuchos de espingarda coletada."; GOTSHELLS = "Cartuchos de espingarda coletada.";
GOTSHELLBOX = "Caixa de cartuchos de espingarda coletada."; GOTSHELLBOX = "Caixa de cartuchos de espingarda coletada.";
GOTBACKPACK = "Mochila CHEIA de municao coletada!"; GOTBACKPACK = "Mochila CHEIA de munição coletada!";
GOTBFG9000 = "BFG9000 equipado. Uau!"; GOTBFG9000 = "BFG9000 equipado. Uau!";
GOTCHAINGUN = "Metralhadora equipada!"; GOTCHAINGUN = "Metralhadora equipada!";
GOTCHAINSAW = "A motoserra, enfim!"; GOTCHAINSAW = "A motoserra, enfim!";
GOTLAUNCHER = "Lanca-foguetes equipada!"; GOTLAUNCHER = "Lança-foguetes equipada!";
GOTPLASMA = "Metralhadora de plasma equipada!"; GOTPLASMA = "Metralhadora de plasma equipada!";
GOTSHOTGUN = "Espingarda equipada!"; GOTSHOTGUN = "Espingarda equipada!";
GOTSHOTGUN2 = "Espingarda de cano duplo equipada!"; GOTSHOTGUN2 = "Espingarda de cano duplo equipada!";
@ -120,11 +120,11 @@ PD_YELLOWK = "Precisa de credencial amarela para ativar esta porta";
PD_BLUECO = "Precisa de credencial azul para ativar este objeto"; PD_BLUECO = "Precisa de credencial azul para ativar este objeto";
PD_REDCO = "Precisa de credencial vermelha para ativar este objeto"; PD_REDCO = "Precisa de credencial vermelha para ativar este objeto";
PD_YELLOWCO = "Precisa de credencial amarela para ativar este objeto"; PD_YELLOWCO = "Precisa de credencial amarela para ativar este objeto";
PD_BLUESO = "Precisa de cranio azul para ativar este objeto"; PD_BLUESO = "Precisa de crânio azul para ativar este objeto";
PD_REDSO = "Precisa de cranio vermelho para ativar este objeto"; PD_REDSO = "Precisa de crânio vermelho para ativar este objeto";
PD_YELLOWSO = "Precisa de cranio amarelo para ativar este objeto"; PD_YELLOWSO = "Precisa de crânio amarelo para ativar este objeto";
GGSAVED = "Jogo salvo."; GGSAVED = "Jogo salvo.";
HUSTR_MSGU = "[Mensagem nao enviada]"; HUSTR_MSGU = "[Mensagem não enviada]";
PICKUP_PISTOL_DROPPED = "Pistola equipada."; PICKUP_PISTOL_DROPPED = "Pistola equipada.";
BETA_BONUS1 = "Voce pegou uma adaga demoniaca."; BETA_BONUS1 = "Voce pegou uma adaga demoniaca.";
BETA_BONUS2 = "Voce pegou um skullchest."; BETA_BONUS2 = "Voce pegou um skullchest.";
@ -268,11 +268,11 @@ THUSTR_30 = "nivel 30: last call";
THUSTR_31 = "nivel 31: pharaoh"; THUSTR_31 = "nivel 31: pharaoh";
THUSTR_32 = "nivel 32: caribbean"; THUSTR_32 = "nivel 32: caribbean";
HUSTR_TALKTOSELF1 = "Voce pensa..."; HUSTR_TALKTOSELF1 = "Você pensa...";
HUSTR_TALKTOSELF2 = "Tem alguem ai?"; HUSTR_TALKTOSELF2 = "Tem alguém aí?";
HUSTR_TALKTOSELF3 = "Nao tem ninguem que possa responder"; HUSTR_TALKTOSELF3 = "Não tem ninguém que possa responder";
HUSTR_TALKTOSELF4 = "Voce esta ficando louco..."; HUSTR_TALKTOSELF4 = "Você está ficando louco...";
HUSTR_TALKTOSELF5 = "Eu juro que vi alguem..."; HUSTR_TALKTOSELF5 = "Eu juro que vi alguém...";
HUSTR_MESSAGESENT = "[Mensagem enviada]"; HUSTR_MESSAGESENT = "[Mensagem enviada]";
AMSTR_FOLLOWON = "Siga-me ATIVADO"; AMSTR_FOLLOWON = "Siga-me ATIVADO";
@ -291,152 +291,152 @@ STSTR_KFAADDED = "O Pacote completo... Trapaceiro!";
STSTR_FAADDED = "Precisa de mais municao?"; STSTR_FAADDED = "Precisa de mais municao?";
STSTR_NCON = "No Clip ATIVADO"; STSTR_NCON = "No Clip ATIVADO";
STSTR_NCOFF = "No Clip DESATIVADO"; STSTR_NCOFF = "No Clip DESATIVADO";
STSTR_BEHOLD = "Escolha um poder:\nForca-s; invulnerabilidade-v; invisibilidade-i\nantiradiacao-r; mapa-a; oculos-l"; STSTR_BEHOLD = "Escolha um poder:\nForça-s; invulnerabilidade-v; invisibilidade-i\nanti-radiação-r; mapa-a; óculos-l";
STSTR_BEHOLDX = "Power-up ATIVADO"; STSTR_BEHOLDX = "Power-up ATIVADO";
STSTR_CHOPPERS = "... nao enche."; STSTR_CHOPPERS = "... nao enche.";
STSTR_CLEV = "Pulando para...\n"; STSTR_CLEV = "Pulando para...\n";
TXT_BUDDHAON = "Modo Buddha ATIVADO"; TXT_BUDDHAON = "Modo Buddha ATIVADO";
TXT_BUDDHAOFF = "Modo Buddha DESATIVADO"; TXT_BUDDHAOFF = "Modo Buddha DESATIVADO";
TXT_DEFAULTPICKUPMSG = "Voce pegou um objeto"; TXT_DEFAULTPICKUPMSG = "Você pegou um objeto";
E1TEXT = E1TEXT =
"Apos todo o esforco limpando \n" "Apos todo o esforço limpando \n"
"a base da lua, voce deveria ganhar um premio, \n" "a base da lua, voce deveria ganhar um prêmio, \n"
"nao deveria? Hein? Cade o maravilhoso \n" "não deveria? Hein? Cadê o maravilhoso \n"
"presente: voltar para casa? \n" "presente: voltar para casa? \n"
"Parece que este pesadelo so esta comecando. \n" "Parece que este pesadelo só está começando. \n"
"\n" "\n"
"Cheira como carne podre, mas e a base Deimos, \n" "Cheira como carne podre, mas é a base Deimos, \n"
"eu acho. Parece que estou preso no meio do \n" "eu acho. Parece que estou preso no meio do \n"
"Inferno... \n" "Inferno... \n"
"\n" "\n"
"O unico jeito de sair e passando dentro. \n" "O único jeito de sair é passando dentro. \n"
"\n" "\n"
"Para continuar, escolha o prox. episodio, \n" "Para continuar, escolha o prox. episódio, \n"
"The Shores of Hell e, na sequencia, \n" "The Shores of Hell e, na sequência, \n"
"Inferno!\n"; "Inferno!\n";
E2TEXT = E2TEXT =
"Voce conseguiu! O gigante cyber-\n" "Você conseguiu! O gigante cyber-\n"
"demon que comandava a base lunar\n" "demon que comandava a base lunar\n"
"Deimos foi morto, e voce foi o\n" "Deimos foi morto, e voce foi o\n"
"triunfante nessa batalha... E agora?\n" "triunfante nessa batalha... E agora?\n"
"Voce olha pelo parapeito da base e\n" "Você olha pelo parapeito da base e\n"
"entao ve a assustadora verdade.\n" "entao vê a assustadora verdade.\n"
"\n" "\n"
"A base esta flutuando em cima do\n" "A base está flutuando em cima do\n"
"que parece um portal para o inferno!\n" "que parece um portal para o inferno!\n"
"Voce nunca ouviu falar de alguem que\n" "Você nunca ouviu falar de alguém que\n"
"escapou de la, mas aqueles que voce\n" "escapou de lá, mas aqueles que você\n"
"matou se arrependem de ter lhe conhe-\n" "matou se arrependem de ter lhe conhe-\n"
"cido. Voce toma folego e comeca sua jor-\n" "cido. Você toma fôlego e comeca sua jor-\n"
"nada no ultimo episodio de DooM! \n" "nada no ultimo episódio de DooM! \n"
" Inferno\n" " Inferno\n"
"\n" "\n"
" "; " ";
E3TEXT = E3TEXT =
"O inigualavel spiderdemon que esque-\n" "O inigualável spiderdemon que esque-\n"
"matizou a invasao na lua causou tanta\n" "matizou a invasão na lua causou tanta\n"
"destruicao e morte que foi enfim derro-\n" "destruição e morte que foi enfim derro-\n"
"tado.\n" "tado.\n"
"\n" "\n"
"Uma passagem secreta abre e voce entra.\n" "Uma passagem secreta abre e você entra.\n"
"Voce mostrou que inferno nenhum pode\n" "Você mostrou que inferno nenhum pode\n"
"conte-lo, pelo menos agora acabou.\n" "contê-lo, pelo menos agora acabou.\n"
"Agora esta na hora de voltar para a Terra,\n" "Agora está na hora de voltar para a Terra,\n"
"para enfim descansar.\n" "para enfim descansar.\n"
"Lar doce lar.\n" "Lar doce lar.\n"
"\n" "\n"
"Voce imagina o que aconteceu nesse\n" "Você imagina o que aconteceu nesse\n"
"meio tempo enquanto voce batalhava\n" "meio tempo enquanto voce batalhava\n"
"contra o mal. Espero que nenhum daque-\n" "contra o mal. Espero que nenhum daque-\n"
"les monstros nao tenham vindo junto com\n" "les monstros tenham vindo junto com\n"
"voce naquela passagem ..."; "você naquela passagem ...";
E4TEXT = E4TEXT =
"O spider mastermind deve ter sido \n" "O spider mastermind deve ter sido \n"
"mandado junto com sua legiao de monstros\n" "mandado junto com sua legião de monstros\n"
"para os confins do inferno depois dessa\n" "para os confins do inferno depois dessa\n"
"batalha. sorte sua que voce se manteve\n" "batalha. sorte sua que você se manteve\n"
"vivo para fazer de tudo para limpar\n" "vivo para fazer de tudo para limpar\n"
"esse mundo de sofrimento de uma forma que\n" "esse mundo de sofrimento de uma forma que\n"
"so um heroi poderia fazer diante de tanto mal.\n" "só um herói poderia fazer diante de tanto mal.\n"
"\n" "\n"
"alias, alguem teria que pagar pelo que\n" "aliás, alguem teria que pagar pelo que\n"
"aconteceu com daisy, seu coelho de estimacao.\n" "aconteceu com daisy, seu coelho de estimação.\n"
"\n" "\n"
"Mas agora, voce ve o que aconteceu no\n" "Mas agora, voce vê o que aconteceu no\n"
"planeta enquanto estava fora: dor e sangue\n" "planeta enquanto estava fora: dor e sangue\n"
"trazido pelos demonios que estao a solta nas\n" "trazido pelos demônios que estão a solta nas\n"
"cidades. agora e hora de acabar com isso!\n" "cidades. agora é hora de acabar com isso!\n"
"voce recarrega sua pistola e continua seu arduo\n" "você recarrega sua pistola e continua seu árduo\n"
"trabalho: acabar com esses monstros!"; "trabalho: acabar com esses monstros!";
C1TEXT = C1TEXT =
"VOCE FOI FUNDO DENTRO DO PORTO\n" "VOCÊ FOI FUNDO DENTRO DO PORTO\n"
"ESTELAR, MAS ALGO ESTA ERRADO. OS\n" "ESTELAR, MAS ALGO ESTÁ ERRADO. OS\n"
"MONSTROS TROUXERAM SUA REALIDADE\n" "MONSTROS TROUXERAM SUA REALIDADE\n"
"COM ELES, E A TECNOLOGIA AQUI CONTIDA\n" "COM ELES, E A TECNOLOGIA AQUI CONTIDA\n"
"ESTA SENDO MODIFICADA COM SUA PRESENCA.\n" "ESTÁ SENDO MODIFICADA COM SUA PRESENÇA.\n"
"\n" "\n"
"ADIANTE, VOCE VE UM POSTO DE GUARDA,\n" "ADIANTE, VOCÊ VÊ UM POSTO DE GUARDA,\n"
"UMA ZONA FORTIFICADA. SE VOCE PASSAR ALI,\n" "UMA ZONA FORTIFICADA. SE VOCÊ PASSAR ALI,\n"
"PODERA ENTRAR DENTRO DO CORACAO DA\n" "PODERÁ ENTRAR DENTRO DO CORAÇÃO DA\n"
"BASE ESTELAR E DESATIVAR O DISPOSITIVO\n" "BASE ESTELAR E DESATIVAR O DISPOSITIVO\n"
"QUE MANTEM O QUE SOBROU DA POPULACAO\n" "QUE MANTÊM O QUE SOBROU DA POPULAÇÃO\n"
"DA TERRA REFEM."; "DA TERRA REFÉM.";
C2TEXT = C2TEXT =
"VOCE CONSEGUIU! APOS ESSA VITORIA VOCE SALVA\n" "VOCÊ CONSEGUIU! APÓS ESSA VITÓRIA VOCÊ SALVA\n"
"A RACA HUMANA DA DIZIMACAO, FAZENDO COM QUE\n" "A RAÇA HUMANA DA DIZIMACAO, FAZENDO COM QUE\n"
"ELES EVACUASSEM A TERRA DE VEZ. AGORA VOCE\n" "ELES EVACUASSEM A TERRA DE VEZ. AGORA VOCÊ\n"
"E O UNICO HUMANO NA FACE DA TERRA.\n" "É O ÚNICO HUMANO NA FACE DA TERRA.\n"
"MUTACOES CANIBAIS, ALIENS CARNIVOROS\n" "MUTAÇÕES CANIBAIS, ALIENS CARNÍVOROS\n"
"E MAUS ESPIRITOS SAO SEUS VIZINHOS.\n" "E MAUS ESPÍRITOS SÃO SEUS VIZINHOS.\n"
"VOCE SENTA E ESPERA PELA MORTE, FELIZ\n" "VOCÊ SENTA E ESPERA PELA MORTE, FELIZ\n"
"POR TER SALVADO A POPULACAO.\n" "POR TER SALVADO A POPULAÇÃO.\n"
"\n" "\n"
"MAS ELES MANDAM UMA MENSAGEM DO ESPACO:\n" "MAS ELES MANDAM UMA MENSAGEM DO ESPAÇO:\n"
"\"SENSORES LOCALIZARAM O FOCO DA INVASAO\n" "\"SENSORES LOCALIZARAM O FOCO DA INVASÃO\n"
"SE VOCE FOR LA, PODERA BLOQUEAR SUA ENTRADA.\n" "SE VOCÊ FOR LÁ, PODERÁ BLOQUEAR SUA ENTRADA.\n"
"A BASE ALIEN FICA NO CORACAO DE SUA CIDADE\n" "A BASE ALIEN FICA NO CORAÇÃO DE SUA CIDADE\n"
"NATAL, NAO MUITO LONGE DO PORTO ESTELAR.\" \n" "NATAL, NÃO MUITO LONGE DO PORTO ESTELAR.\" \n"
"LENTAMENTE E SENTINDO MUITA DOR, VOCE SE\n" "LENTAMENTE E SENTINDO MUITA DOR, VOCÊ SE\n"
"LEVANTA E DECIDE CONTINUAR A LIMPEZA.\n"; "LEVANTA E DECIDE CONTINUAR A LIMPEZA.\n";
C3TEXT = C3TEXT =
"VOCE CONSEGUE CHEGAR NO CORACAO DA CIDADE,\n" "VOCÊ CONSEGUE CHEGAR NO CORAÇÃO DA CIDADE,\n"
"CERCADA PELOS CADAVERES DE SEUS INIMIGOS.\n" "CERCADA PELOS CADÁVERES DE SEUS INIMIGOS.\n"
"VOCE NAO VE NENHUM JEITO DE DESTRUIR A ENTRADA\n" "VOCÊ NAO VÊ NENHUM JEITO DE DESTRUIR A ENTRADA\n"
"POR ESTE LADO, ENTAO VOCE CERRA OS DENTES\n" "POR ESTE LADO, ENTAO VOCE CERRA OS DENTES\n"
"E MERGULHA ATRAVES DELA.\n" "E MERGULHA ATRAVÉS DA PASSAGEM.\n"
"\n" "\n"
"DEVE HAVER UM JEITO DE FECHA-LA DO OUTRO LADO.\n" "DEVE HAVER UM JEITO DE FECHÁ-LA DO OUTRO LADO.\n"
"PRA QUE SE PREOCUPAR SE TEREI QUE ATRAVESSAR O\n" "PRA QUÊ SE PREOCUPAR SE TEREI QUE ATRAVESSAR O\n"
"INFERNO PARA FECHA-LA?"; "INFERNO PARA FECHÁ-LA?";
C4TEXT = C4TEXT =
"A HORRENDA VISTA DO MAIOR DEMONIO QUE\n" "A HORRENDA VISTA DO MAIOR DEMÔNIO QUE\n"
"VOCE JA VIU DESMORONA NA SUA FRENTE\n" "VOCÊ JÁ VIU DESMORONA NA SUA FRENTE\n"
"DEPOIS DE VOCE LANCAR ALGUNS FOGUETES\n" "DEPOIS DE VOCE LANCAR ALGUNS FOGUETES\n"
"DENTRO DE SEU CEREBRO EXPOSTO. ELE\n" "DENTRO DE SEU CÉREBRO EXPOSTO. ELE\n"
"MURCHA E MORRE, SEUS MEMBROS ESTAO\n" "MURCHA E MORRE, SEUS MEMBROS ESTAO\n"
"DEVASTANDO MILHAS E MILHAS DA\n" "DEVASTANDO MILHAS E MILHAS DA\n"
"SUPERFICIE DO INFERNO.\n" "SUPERFÍCIE DO INFERNO.\n"
"\n" "\n"
"VOCE CONSEGUIU. A INVASAO ACABOU.\n" "VOCÊ CONSEGUIU. A INVASÃO ACABOU.\n"
"A TERRA ESTA SALVA. O INFERNO DESTRUIDO.\n" "A TERRA ESTÁ SALVA. O INFERNO DESTRUIDO.\n"
"VOCE IMAGINA PARA ONDE OS MAUS IRAO\n" "VOCÊ IMAGINA PARA ONDE OS MAUS IRÃO\n"
"QUANDO MORREREM AGORA. VOCE SECA O\n" "QUANDO MORREREM AGORA. VOCÊ SECA O\n"
"SUOR DE SUA TESTA E COMECA A LONGA\n" "SUOR DE SUA TESTA E COMEÇA A LONGA\n"
"JORNADA DE VOLTA PRA CASA. E PENSA EM\n" "JORNADA DE VOLTA PRA CASA. E PENSA EM\n"
"RECONSTRUIR A TERRA PARA SER MAIS\n" "RECONSTRUIR A TERRA PARA SER MAIS\n"
"DIVERTIDA DO QUE ANTES.\n"; "DIVERTIDA DO QUE ANTES.\n";
C5TEXT = C5TEXT =
"MEUS PARABENS, VOCE ACHOU O NIVEL SECRETO!\n" "MEUS PARABÉNS, VOCÊ ACHOU O NÍVEL SECRETO!\n"
"PARECE TER SIDO CONSTRUIDO POR HUNANOS,\n" "PARECE TER SIDO CONSTRUÍDO POR HUNANOS,\n"
"EM VEZ DE DEMONIOS. VOCE IMAGINA O QUE\n" "EM VEZ DE DEMÔNIOS. VOCÊ IMAGINA O QUE\n"
"DEVE HABITAR OS CORREDORES DESTE LUGAR.\n"; "DEVE HABITAR OS CORREDORES DESTE LUGAR.\n";
C6TEXT = C6TEXT =
"MEUS PARABENS, DE NOVO! VOCE ACHOU\n" "MEUS PARABÉNS, DE NOVO! VOCÊ ACHOU\n"
"OUTRO NIVEL SECRETO. QUERO VER PASSAR\n" "OUTRO NÍVEL SECRETO. QUERO VER PASSAR\n"
"ESSE AGORA!\n"; "ESSE AGORA!\n";
// Plutonia and TNT intermission screens (ainda não traduzido) // Plutonia and TNT intermission screens (50% ainda não traduzido)
P1TEXT = P1TEXT =
"Voce vangloria sua vitoria em cima da carcaca\n" "Voce vangloria sua vitoria em cima da carcaca\n"
"do Guardiao. Apos mata-lo, voce arranca o \n" "do Guardiao. Apos mata-lo, voce arranca o \n"
@ -571,9 +571,9 @@ CC_HERO = "OUR HERO";
PD_BLUEC = "Precisa de uma credencial azul para abrir a porta"; PD_BLUEC = "Precisa de uma credencial azul para abrir a porta";
PD_REDC = "Precisa de uma credencial vermelha para abrir a porta"; PD_REDC = "Precisa de uma credencial vermelha para abrir a porta";
PD_YELLOWC = "Precisa de uma credencial amarela para abrir a porta"; PD_YELLOWC = "Precisa de uma credencial amarela para abrir a porta";
PD_BLUES = "Precisa de um cranio azul para abrir a porta"; PD_BLUES = "Precisa de um crânio azul para abrir a porta";
PD_REDS = "Precisa de um cranio vermelho para abrir a porta"; PD_REDS = "Precisa de um crânio vermelho para abrir a porta";
PD_YELLOWS = "Precisa de um cranio amarelo para abrir a porta"; PD_YELLOWS = "Precisa de um crânio amarelo para abrir a porta";
PD_ANY = "Qualquer chave abre a porta"; PD_ANY = "Qualquer chave abre a porta";
PD_ANYOBJ = "Qualquer chave ativa este objeto"; PD_ANYOBJ = "Qualquer chave ativa este objeto";
PD_ALL3 = "Precisa das 3 chaves para abrir a porta"; PD_ALL3 = "Precisa das 3 chaves para abrir a porta";
@ -596,23 +596,23 @@ bgflat31 = "RROCK19";
bgcastcall = "BOSSBACK"; bgcastcall = "BOSSBACK";
// Mensagens de fim de partida online // Mensagens de fim de partida online
TXT_FRAGLIMIT = "Pontuacao atingida."; TXT_FRAGLIMIT = "Pontuação atingida.";
TXT_TIMELIMIT = "Tempo atingido."; TXT_TIMELIMIT = "Tempo atingido.";
// Mensagens de pontos cumulativos // Mensagens de pontos cumulativos
SPREEKILLSELF = "%o estava indo bem ate se matar!"; SPREEKILLSELF = "%o estava indo bem até se matar!";
SPREEOVER = "A matanca de %o foi interrompida por %k"; SPREEOVER = "A matança de %o foi interrompida por %k";
SPREE5 = "%k esta indo bem!"; SPREE5 = "%k está indo bem!";
SPREE10 = "%k continua indo bem!"; SPREE10 = "%k continua indo bem!";
SPREE15 = "%k esta dominando!"; SPREE15 = "%k está dominando!";
SPREE20 = "%k nao se cansa por nada!"; SPREE20 = "%k não se cansa por nada!";
SPREE25 = "%k parece profissional!"; SPREE25 = "%k parece profissional!";
// Mensagens de COMBO // Mensagens de COMBO
MULTI2 = "COMBO 2X!"; MULTI2 = "COMBO 2X!";
MULTI3 = "COMBO 3X!"; MULTI3 = "COMBO 3X!";
MULTI4 = "COMBO 4X!"; MULTI4 = "COMBO 4X!";
MULTI5 = "Santa Mae do Ceu!!!"; MULTI5 = "Santa Mãe do Céu!!!";
// Obituario // Obituario
// Primeiro suicidios, depois as mortes // Primeiro suicidios, depois as mortes
@ -620,7 +620,7 @@ OB_SUICIDE = "%o suicidou-se.";
OB_FALLING = "%o caiu."; OB_FALLING = "%o caiu.";
OB_CRUSH = "%o foi esmagado."; OB_CRUSH = "%o foi esmagado.";
OB_EXIT = "%o tentou sair."; OB_EXIT = "%o tentou sair.";
OB_WATER = "%o nao sabe nadar."; OB_WATER = "%o não sabe nadar.";
OB_SLIME = "%o se entoxicou."; OB_SLIME = "%o se entoxicou.";
OB_LAVA = "%o derreteu."; OB_LAVA = "%o derreteu.";
OB_BARREL = "%o explodiu."; OB_BARREL = "%o explodiu.";
@ -635,7 +635,7 @@ OB_STEALTHVILE = "%o achou que viu um archvile.";
OB_STEALTHBARON = "%o achou que viu um Baron of Hell."; OB_STEALTHBARON = "%o achou que viu um Baron of Hell.";
OB_STEALTHCACO = "%o achou que viu um cacodemon."; OB_STEALTHCACO = "%o achou que viu um cacodemon.";
OB_STEALTHCHAINGUY = "%o achou que viu um chaingunner."; OB_STEALTHCHAINGUY = "%o achou que viu um chaingunner.";
OB_STEALTHDEMON = "%o achou que viu um a demon."; OB_STEALTHDEMON = "%o achou que viu um demon.";
OB_STEALTHKNIGHT = "%o achou que viu um Hell Knight."; OB_STEALTHKNIGHT = "%o achou que viu um Hell Knight.";
OB_STEALTHIMP = "%o achou que viu um imp."; OB_STEALTHIMP = "%o achou que viu um imp.";
OB_STEALTHFATSO = "%o achou que viu um mancubus."; OB_STEALTHFATSO = "%o achou que viu um mancubus.";
@ -739,17 +739,16 @@ OB_LARVA = "%o foi eslameado por uma larva.";
OB_QUADRUMPUS = "%o foi eslameado por um quadrumpus."; OB_QUADRUMPUS = "%o foi eslameado por um quadrumpus.";
OB_MAXIMUS = "%o foi derrotado por um Maximus."; OB_MAXIMUS = "%o foi derrotado por um Maximus.";
// Existe um "You defeated a maximus" que eu não pude traduzir, se alguém souber qual a linha que traduz me diga no fórum onde você o baixou // Existe um "You defeated a maximus" que eu não pude traduzir, se alguém souber qual a linha que traduz me diga no fórum onde você o baixou
_MAXIMUS = "00";
OB_FLEMMINE = "%o foi eslameado por um Flem mine."; OB_FLEMMINE = "%o foi eslameado por um Flem mine.";
OB_SNOTFOLUS = "%o foi derrotado pelo Lord Snotfolus."; OB_SNOTFOLUS = "%o foi derrotado pelo Lord Snotfolus.";
OB_MPFIST = "%k fez justica com as proprias maos, na cara de %o."; OB_MPFIST = "%k fez justiça com as próprias mãos, na cara de %o.";
OB_MPCHAINSAW = "%k usou o poder da motoserra para abrir %o."; OB_MPCHAINSAW = "%k usou o poder da motoserra para abrir %o.";
OB_MPPISTOL = "%o foi morto pela pistola de %k."; OB_MPPISTOL = "%o foi morto pela pistola de %k.";
OB_MPSHOTGUN = "%o foi morto pela espingarda de %k."; OB_MPSHOTGUN = "%o foi morto pela espingarda de %k.";
OB_MPSSHOTGUN = "%o foi morto pela espingarda de cano duplo de %k."; OB_MPSSHOTGUN = "%o foi morto pela espingarda de cano duplo de %k.";
OB_MPCHAINGUN = "%o foi massacrado pela metralhadora de %k."; OB_MPCHAINGUN = "%o foi massacrado pela metralhadora de %k.";
OB_MPROCKET = "%o nao viu o foguete de %k."; OB_MPROCKET = "%o não viu o foguete de %k.";
OB_MPR_SPLASH = "%o quase escapou do foguete de %k. Quase..."; OB_MPR_SPLASH = "%o quase escapou do foguete de %k. Quase...";
OB_MPPLASMARIFLE = "%o foi torrado pelo rifle de plasma de %k."; OB_MPPLASMARIFLE = "%o foi torrado pelo rifle de plasma de %k.";
OB_MPBFG_BOOM = "%o foi pego pelo BFG de %k."; OB_MPBFG_BOOM = "%o foi pego pelo BFG de %k.";
@ -807,27 +806,19 @@ OB_MONTELEFRAG = "%o foi "telefragged" por um monstro.";
OB_DEFAULT = "%o morreu."; OB_DEFAULT = "%o morreu.";
OB_MPDEFAULT = "%o foi morto por %k."; OB_MPDEFAULT = "%o foi morto por %k.";
OB_FRIENDLY1 = "%k e cego."; OB_FRIENDLY1 = "%k é cego.";
OB_FRIENDLY2 = "%k pensa que sabe o que faz."; OB_FRIENDLY2 = "%k pensa que sabe o que faz.";
OB_FRIENDLY3 = "%k errou o tiro."; OB_FRIENDLY3 = "%k errou o tiro.";
OB_FRIENDLY4 = "%k perde outro ponto."; OB_FRIENDLY4 = "%k perde outro ponto.";
SAVEGAMENAME = "zdoomsv";
STARTUP1 = "";
STARTUP2 = "";
STARTUP3 = "";
STARTUP4 = "";
STARTUP5 = "";
// Item tags: Doom weapons // Item tags: Doom weapons
FIST ="Soco Ingles"; TAG_FIST ="Soco Ingles";
TAG_CHAINSAW = "Motoserra"; TAG_CHAINSAW = "Motoserra";
TAG_PISTOL = "Pistola"; TAG_PISTOL = "Pistola";
TAG_SHOTGUN = "Espingarda"; TAG_SHOTGUN = "Espingarda";
TAG_SUPERSHOTGUN = "Espingarda de cano duplo"; TAG_SUPERSHOTGUN = "Espingarda de cano duplo";
TAG_CHAINGUN = "Metralhadora"; TAG_CHAINGUN = "Metralhadora";
TAG_ROCKETLAUNCHER = "Lanca-foguetes"; TAG_ROCKETLAUNCHER = "Lança-foguetes";
TAG_PLASMARIFLE = "Rifle de Plasma"; TAG_PLASMARIFLE = "Rifle de Plasma";
TAG_BFG9000 = "O BFG 9000"; TAG_BFG9000 = "O BFG 9000";