Aiuto - Cerca - Utenti - Calendario
Versione completa: [ScummVM] Eye of the Beholder ITA
OldGamesItalia > Traduzioni > Traduzioni Completate > Eye Of The Beholder
Pagine: 1, 2
TheRuler
*********************************************************************

file sorgente tradotto condiviso su googledocs

Stato della richiesta di implementazione sul "feature request" di scummvm.

*********************************************************************



Uso questo spazio per l'avanzamento.

I ragazzi di scummvm hanno fatto passi da gigante con l'engine Kyra. Ora è COMPLETAMENTE Reverse Enginnered.

Dovrebbe bastare passare al team tramite una "feature request" su sourceforge (ci penso io) i nuovi md5 che ha già calcolato il buon mic ed il file sorgente tradotto.

Allego una versione di scummvm che ho compilato in modo che riconoscesse la versione italiana di Eob by OGI. Ovviamente tutto il testo presente originariamente nell'exe è in tedesco, ma questo lo risolveremo dopo.
Per ora concentriamoci sulle parti in italiano. Chi ha tempo di testare lo faccia.

CITAZIONE
FONT8.FNT 1f5b71c39368d929b1697ddd90389e82
EOBDATA1.PAK b4977798e840e1adb9f41e08bb5c7bb5
EOBDATA3.PAK 3ed915ab5b94d60dbfe1b55379889c51
EOBDATA4.PAK bb41a36a75bca6ec30aef742ef8cf39b
EOBDATA5.PAK db9e7ad804978eae5e5573b65508d95f
EOBDATA6.PAK 0398bebe986821cb0a01fcf7b3a46064
FONT6.FNT 0f0c5611d98718844e344cba98646b7f


Di seguito il sorgente da tradurre (allegato anche in basso):
CODICE
static const char *const kEoB1ChargenStrings1DOSEnglish[9] = {
    "Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
    "          ",
    "AC\rHP\rLVL",
    "%s\r%d\r%d\r%d\r%d\r%d",
    "%d\r%d",
    "%d",
    "%d/%d",
    "%d/%d/%d",
    "Select the box of\rthe character you\rwish to create or\rview."
};

static const StringListProvider kEoB1ChargenStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStrings1DOSEnglish), kEoB1ChargenStrings1DOSEnglish };

static const char *const kEoB1ChargenStrings2DOSEnglish[12] = {
    "%s",
    "%d",
    "%s",
    "%d",
    "%d",
    "%d",
    "%s",
    "%d",
    "SELECT RACE:",
    "SELECT CLASS:",
    "SELECT ALIGNMENT:",
    "Name:"
};

static const StringListProvider kEoB1ChargenStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStrings2DOSEnglish), kEoB1ChargenStrings2DOSEnglish };

static const char *const kEoB1ChargenStatStringsDOSEnglish[12] = {
    "STR",
    "INT",
    "WIS",
    "DEX",
    "CON",
    "CHA",
    "STRENGTH",
    "INTELLIGENCE",
    "WISDOM",
    "DEXTERITY",
    "CONSTITUTION",
    "CHARISMA"
};

static const StringListProvider kEoB1ChargenStatStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenStatStringsDOSEnglish), kEoB1ChargenStatStringsDOSEnglish };

static const char *const kEoB1ChargenRaceSexStringsDOSEnglish[12] = {
    "HUMAN MALE",
    "HUMAN FEMALE",
    "ELF MALE",
    "ELF FEMALE",
    "HALF-ELF MALE",
    "HALF-ELF FEMALE",
    "DWARF MALE",
    "DWARF FEMALE",
    "GNOME MALE",
    "GNOME FEMALE",
    "HALFLING MALE",
    "HALFLING FEMALE"
};

static const StringListProvider kEoB1ChargenRaceSexStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenRaceSexStringsDOSEnglish), kEoB1ChargenRaceSexStringsDOSEnglish };

static const char *const kEoB1ChargenClassStringsDOSEnglish[21] = {
    "FIGHTER",
    "RANGER",
    "PALADIN",
    "MAGE",
    "CLERIC",
    "THIEF",
    "FIGHTER/CLERIC",
    "FIGHTER/THIEF",
    "FIGHTER/MAGE",
    "FIGHTER/MAGE/THIEF",
    "THIEF/MAGE",
    "CLERIC/THIEF",
    "FIGHTER/CLERIC/MAGE",
    "RANGER/CLERIC",
    "CLERIC/MAGE",
    "FIGHTER",
    "MAGE",
    "CLERIC",
    "THIEF",
    "PALADIN",
    "RANGER"
};

static const StringListProvider kEoB1ChargenClassStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenClassStringsDOSEnglish), kEoB1ChargenClassStringsDOSEnglish };

static const char *const kEoB1ChargenAlignmentStringsDOSEnglish[9] = {
    "LAWFUL GOOD",
    "NEUTRAL GOOD",
    "CHAOTIC GOOD",
    "LAWFUL NEUTRAL",
    "TRUE NEUTRAL",
    "CHAOTIC NEUTRAL",
    "LAWFUL EVIL",
    "NEUTRAL EVIL",
    "CHAOTIC EVIL"
};

static const StringListProvider kEoB1ChargenAlignmentStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenAlignmentStringsDOSEnglish), kEoB1ChargenAlignmentStringsDOSEnglish };

static const char *const kEoB1ChargenEnterGameStringsDOSEnglish[1] = {
    "  Entering game.\r  Please wait."
};

static const StringListProvider kEoB1ChargenEnterGameStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ChargenEnterGameStringsDOSEnglish), kEoB1ChargenEnterGameStringsDOSEnglish };

static const char *const kEoB1MainMenuStringsDOSEnglish[3] = {
    "LOAD GAME IN PROGRESS\r",
    "START A NEW PARTY\r",
    "EXIT TO DOS\r"
};

static const StringListProvider kEoB1MainMenuStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MainMenuStringsDOSEnglish), kEoB1MainMenuStringsDOSEnglish };

static const char *const kEoB1BonusStringsDOSEnglish[3] = {
    "Congratulations on completing all 12 Beholder Bonuses.\r\rThe names of the character in your winning Beholder Bonus party are:\r\r",
    "\r",
    "\r\rPassword: %04x\r"
};

static const StringListProvider kEoB1BonusStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1BonusStringsDOSEnglish), kEoB1BonusStringsDOSEnglish };

static const char *const kEoB1TurnUndeadStringDOSEnglish[1] = {
    "\x06\x06""%s uses the power to turn undead!""\x06\x0F""\r"
};

static const StringListProvider kEoB1TurnUndeadStringDOSEnglishProvider = { ARRAYSIZE(kEoB1TurnUndeadStringDOSEnglish), kEoB1TurnUndeadStringDOSEnglish };

static const char *const kEoB1Npc0StringsDOSEnglish[2] = {
    "\r     I wish you luck in your travels.",
    "Which should be resurrected?"
};

static const StringListProvider kEoB1Npc0StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc0StringsDOSEnglish), kEoB1Npc0StringsDOSEnglish };

static const char *const kEoB1Npc11StringsDOSEnglish[3] = {
    "Tend his wounds",
    "Talk",
    "Leave"
};

static const StringListProvider kEoB1Npc11StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc11StringsDOSEnglish), kEoB1Npc11StringsDOSEnglish };

static const char *const kEoB1Npc12StringsDOSEnglish[2] = {
    "Tend his wounds",
    "Leave"
};

static const StringListProvider kEoB1Npc12StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc12StringsDOSEnglish), kEoB1Npc12StringsDOSEnglish };

static const char *const kEoB1Npc21StringsDOSEnglish[2] = {
    "Hear proposal",
    "Leave"
};

static const StringListProvider kEoB1Npc21StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc21StringsDOSEnglish), kEoB1Npc21StringsDOSEnglish };

static const char *const kEoB1Npc22StringsDOSEnglish[2] = {
    "Help him",
    "Leave"
};

static const StringListProvider kEoB1Npc22StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc22StringsDOSEnglish), kEoB1Npc22StringsDOSEnglish };

static const char *const kEoB1Npc31StringsDOSEnglish[2] = {
    "Heal Party",
    "Leave"
};

static const StringListProvider kEoB1Npc31StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc31StringsDOSEnglish), kEoB1Npc31StringsDOSEnglish };

static const char *const kEoB1Npc32StringsDOSEnglish[3] = {
    "Heal Party",
    "Resurrect Dead",
    "Leave"
};

static const StringListProvider kEoB1Npc32StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc32StringsDOSEnglish), kEoB1Npc32StringsDOSEnglish };

static const char *const kEoB1Npc4StringsDOSEnglish[2] = {
    "Attack",
    "Bribe"
};

static const StringListProvider kEoB1Npc4StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc4StringsDOSEnglish), kEoB1Npc4StringsDOSEnglish };

static const char *const kEoB1Npc5StringsDOSEnglish[3] = {
    "Kill her",
    "Hear her out",
    "Let her go"
};

static const StringListProvider kEoB1Npc5StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc5StringsDOSEnglish), kEoB1Npc5StringsDOSEnglish };

static const char *const kEoB1Npc6StringsDOSEnglish[2] = {
    "Surrender",
    "Attack"
};

static const StringListProvider kEoB1Npc6StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc6StringsDOSEnglish), kEoB1Npc6StringsDOSEnglish };

static const char *const kEoB1Npc7StringsDOSEnglish[3] = {
    "Free Him",
    "Kill Him",
    "Leave"
};

static const StringListProvider kEoB1Npc7StringsDOSEnglishProvider = { ARRAYSIZE(kEoB1Npc7StringsDOSEnglish), kEoB1Npc7StringsDOSEnglish };

static const char *const kEoB1PryDoorStringsDOSEnglish[7] = {
    "Nobody is able to force the door.\r",
    "The party forces the door.\r",
    "%s forces the door!\r",
    "The party tries to force the door and fails.\r",
    "You can't put that item there.\r",
    "The item is too large to fit.\r",
    "No one is able to pry this door open.\r"
};

static const StringListProvider kEoB1PryDoorStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PryDoorStringsDOSEnglish), kEoB1PryDoorStringsDOSEnglish };

static const char *const kEoB1WarningStringsDOSEnglish[3] = {
    "You can't go that way.\r",
    "%s isn't capable of eating food!\r",
    "You may only eat food!\r"
};

static const StringListProvider kEoB1WarningStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1WarningStringsDOSEnglish), kEoB1WarningStringsDOSEnglish };

static const char *const kEoB1ItemSuffixStringsRingsDOSEnglish[4] = {
    "Adornment",
    "Wizardry",
    "Sustenance",
    "Feather Fall"
};

static const StringListProvider kEoB1ItemSuffixStringsRingsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsRingsDOSEnglish), kEoB1ItemSuffixStringsRingsDOSEnglish };

static const char *const kEoB1ItemSuffixStringsPotionsDOSEnglish[8] = {
    "Giant Strength",
    "Healing",
    "Extra Healing",
    "Poison",
    "Vitality",
    "Speed",
    "Invisibility",
    "Cure Poison"
};

static const StringListProvider kEoB1ItemSuffixStringsPotionsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsPotionsDOSEnglish), kEoB1ItemSuffixStringsPotionsDOSEnglish };

static const char *const kEoB1ItemSuffixStringsWandsDOSEnglish[7] = {
    "Stick",
    "Lightning",
    "Frost",
    "Curing",
    "Fireball",
    "Silvias",
    "Magic Missile"
};

static const StringListProvider kEoB1ItemSuffixStringsWandsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemSuffixStringsWandsDOSEnglish), kEoB1ItemSuffixStringsWandsDOSEnglish };

static const char *const kEoB1RipItemStringsDOSEnglish[3] = {
    "%s has lost her ",
    "%s has lost his ",
    ".\r"
};

static const StringListProvider kEoB1RipItemStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1RipItemStringsDOSEnglish), kEoB1RipItemStringsDOSEnglish };

static const char *const kEoB1CursedStringDOSEnglish[1] = {
    "Cursed %s %d"
};

static const StringListProvider kEoB1CursedStringDOSEnglishProvider = { ARRAYSIZE(kEoB1CursedStringDOSEnglish), kEoB1CursedStringDOSEnglish };

static const char *const kEoB1MagicObjectStringsDOSEnglish[5] = {
    "Mage Scroll",
    "Cleric Scroll",
    "Ring",
    "Potion",
    "Wand"
};

static const StringListProvider kEoB1MagicObjectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MagicObjectStringsDOSEnglish), kEoB1MagicObjectStringsDOSEnglish };

static const char *const kEoB1MagicObjectString5DOSEnglish[1] = {
    "Stick"
};

static const StringListProvider kEoB1MagicObjectString5DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicObjectString5DOSEnglish), kEoB1MagicObjectString5DOSEnglish };

static const char *const kEoB1PatternSuffixDOSEnglish[1] = {
    "%s of %s"
};

static const StringListProvider kEoB1PatternSuffixDOSEnglishProvider = { ARRAYSIZE(kEoB1PatternSuffixDOSEnglish), kEoB1PatternSuffixDOSEnglish };

static const char *const kEoB1PatternGrFix1DOSEnglish[1] = {
    "%s of %s"
};

static const StringListProvider kEoB1PatternGrFix1DOSEnglishProvider = { ARRAYSIZE(kEoB1PatternGrFix1DOSEnglish), kEoB1PatternGrFix1DOSEnglish };

static const char *const kEoB1PatternGrFix2DOSEnglish[1] = {
    "%s of %s"
};

static const StringListProvider kEoB1PatternGrFix2DOSEnglishProvider = { ARRAYSIZE(kEoB1PatternGrFix2DOSEnglish), kEoB1PatternGrFix2DOSEnglish };

static const char *const kEoB1ValidateArmorStringDOSEnglish[1] = {
    "%s can't wear that type of armor.\r"
};

static const StringListProvider kEoB1ValidateArmorStringDOSEnglishProvider = { ARRAYSIZE(kEoB1ValidateArmorStringDOSEnglish), kEoB1ValidateArmorStringDOSEnglish };

static const char *const kEoB1ValidateNoDropStringDOSEnglish[1] = {
    "You cant put that item there.\r"
};

static const StringListProvider kEoB1ValidateNoDropStringDOSEnglishProvider = { ARRAYSIZE(kEoB1ValidateNoDropStringDOSEnglish), kEoB1ValidateNoDropStringDOSEnglish };

static const char *const kEoB1PotionStringsDOSEnglish[2] = {
    "poisoned",
    "%s feels %s!\r"
};

static const StringListProvider kEoB1PotionStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PotionStringsDOSEnglish), kEoB1PotionStringsDOSEnglish };

static const char *const kEoB1WandStringsDOSEnglish[2] = {
    "The wand has no apparent magical effect\r",
    "no effect.\r"
};

static const StringListProvider kEoB1WandStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1WandStringsDOSEnglish), kEoB1WandStringsDOSEnglish };

static const char *const kEoB1ItemMisuseStringsDOSEnglish[3] = {
    " can not use this item.\r",
    "This item automatically used when worn.\r",
    "This item is not used in this way.\r"
};

static const StringListProvider kEoB1ItemMisuseStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1ItemMisuseStringsDOSEnglish), kEoB1ItemMisuseStringsDOSEnglish };

static const char *const kEoB1TakenStringsDOSEnglish[1] = {
    " taken.\r"
};

static const StringListProvider kEoB1TakenStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1TakenStringsDOSEnglish), kEoB1TakenStringsDOSEnglish };

static const char *const kEoB1PotionEffectStringsDOSEnglish[8] = {
    "much stronger",
    "better",
    "much better",
    "ill for a moment",
    "no longer hungry",
    "fast and agile",
    "transparent",
    "better"
};

static const StringListProvider kEoB1PotionEffectStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1PotionEffectStringsDOSEnglish), kEoB1PotionEffectStringsDOSEnglish };

static const char *const kEoB1YesNoStringsDOSEnglish[2] = {
    "yes",
    "no"
};

static const StringListProvider kEoB1YesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1YesNoStringsDOSEnglish), kEoB1YesNoStringsDOSEnglish };

static const char *const kEoB1MoreStringsDOSEnglish[1] = {
    "MORE"
};

static const StringListProvider kEoB1MoreStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MoreStringsDOSEnglish), kEoB1MoreStringsDOSEnglish };

static const char *const kEoB1NpcMaxStringsDOSEnglish[1] = {
    "You may only have six characters in your party.  Select the one you wish to drop."
};

static const StringListProvider kEoB1NpcMaxStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1NpcMaxStringsDOSEnglish), kEoB1NpcMaxStringsDOSEnglish };

static const char *const kEoB1NpcJoinStringsDOSEnglish[1] = {
    "%s joins the party.\r"
};

static const StringListProvider kEoB1NpcJoinStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1NpcJoinStringsDOSEnglish), kEoB1NpcJoinStringsDOSEnglish };

static const char *const kEoB1CancelStringsDOSEnglish[1] = {
    "CANCEL"
};

static const StringListProvider kEoB1CancelStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1CancelStringsDOSEnglish), kEoB1CancelStringsDOSEnglish };

static const char *const kEoB1MenuStringsMainDOSEnglish[8] = {
    "Select Option:",
    "Rest Party",
    "Memorize Spells",
    "Pray for Spells",
    "Scribe Scrolls",
    "Preferences",
    "Game Options",
    "Exit"
};

static const StringListProvider kEoB1MenuStringsMainDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsMainDOSEnglish), kEoB1MenuStringsMainDOSEnglish };

static const char *const kEoB1MenuStringsSaveLoadDOSEnglish[8] = {
    "Load Game",
    "Save Game",
    "Drop Character",
    "Quit Game",
    "Game Options:",
    "\r   Game saved.",
    "\r Save game\r failure!",
    "\r Load game\r failure!"
};

static const StringListProvider kEoB1MenuStringsSaveLoadDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsSaveLoadDOSEnglish), kEoB1MenuStringsSaveLoadDOSEnglish };

static const char *const kEoB1MenuStringsOnOffDOSEnglish[2] = {
    "ON",
    "OFF"
};

static const StringListProvider kEoB1MenuStringsOnOffDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsOnOffDOSEnglish), kEoB1MenuStringsOnOffDOSEnglish };

static const char *const kEoB1MenuStringsSpellsDOSEnglish[17] = {
    "\r\r Select a character\r from your party who\r would like to learn\r spells.",
    "\r Your Paladin is \r too low a level\r for spells.",
    "\r\r The Mage has no\r Spell Book!",
    "\r\r\r Select a character\r from your party\r who would like to\r pray for spells.",
    "\r You don't have\r any Cleric able\r to pray in your\r party.",
    "\r You don't have\r any Mage able to\r learn spells.",
    " An unconscious\r or dead Mage\r cannot memorize\r spells.",
    " An unconscious\r or dead Cleric\r cannot pray for\r spells.",
    "1",
    "2",
    "3",
    "4",
    "5",
    "Clear",
    "Spells Available:",
    "Yes",
    "No"
};

static const StringListProvider kEoB1MenuStringsSpellsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsSpellsDOSEnglish), kEoB1MenuStringsSpellsDOSEnglish };

static const char *const kEoB1MenuStringsRestDOSEnglish[5] = {
    "\rWill your healers\rheal the party?",
    " Someone is still\r injured. Rest\r until healed?",
    "Resting party.",
    "\r All characters\r are fully\r rested.",
    " Your party needs\r to rest to gain\r spells."
};

static const StringListProvider kEoB1MenuStringsRestDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRestDOSEnglish), kEoB1MenuStringsRestDOSEnglish };

static const char *const kEoB1MenuStringsDropDOSEnglish[1] = {
    " You cannot have\r less than four\r characters."
};

static const StringListProvider kEoB1MenuStringsDropDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDropDOSEnglish), kEoB1MenuStringsDropDOSEnglish };

static const char *const kEoB1MenuStringsExitDOSEnglish[1] = {
    " Are you sure you\r wish to exit the\r game?"
};

static const StringListProvider kEoB1MenuStringsExitDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsExitDOSEnglish), kEoB1MenuStringsExitDOSEnglish };

static const char *const kEoB1MenuStringsStarveDOSEnglish[1] = {
    " Your party is\r starving. Do you\r wish to continue\r resting?"
};

static const StringListProvider kEoB1MenuStringsStarveDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsStarveDOSEnglish), kEoB1MenuStringsStarveDOSEnglish };

static const char *const kEoB1MenuStringsScribeDOSEnglish[5] = {
    "Select the scroll(s)\ryou wish to scribe.",
    "\r\r\r Select a Mage\r from your party\r who would like to\r scribe spells.",
    " You don't have\r any scolls to be\r scribed.",
    " You don't have\r any scrolls that\r this Mage needs.",
    "\r You don't have\r any Mage able to\r scribe scrolls."
};

static const StringListProvider kEoB1MenuStringsScribeDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsScribeDOSEnglish), kEoB1MenuStringsScribeDOSEnglish };

static const char *const kEoB1MenuStringsDrop2DOSEnglish[3] = {
    " Select the\r character you\r wish to drop.",
    " Are you sure you\r wish to SAVE the\r game?",
    " Are you sure you\r wish to LOAD a\r saved game?"
};

static const StringListProvider kEoB1MenuStringsDrop2DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDrop2DOSEnglish), kEoB1MenuStringsDrop2DOSEnglish };

static const char *const kEoB1MenuStringsHeadDOSEnglish[3] = {
    "Camp:",
    "Preferences:",
    "Game Options:"
};

static const StringListProvider kEoB1MenuStringsHeadDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsHeadDOSEnglish), kEoB1MenuStringsHeadDOSEnglish };

static const char *const kEoB1MenuStringsPoisonDOSEnglish[1] = {
    "Poisoned party\rmembers will die!\rRest anyway?"
};

static const StringListProvider kEoB1MenuStringsPoisonDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsPoisonDOSEnglish), kEoB1MenuStringsPoisonDOSEnglish };

static const char *const kEoB1MenuStringsMgcDOSEnglish[2] = {
    "%-18s %1d",
    "%d of %d Remaining.  "
};

static const StringListProvider kEoB1MenuStringsMgcDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsMgcDOSEnglish), kEoB1MenuStringsMgcDOSEnglish };

static const char *const kEoB1MenuStringsPrefsDOSEnglish[4] = {
    "Tunes are %-3s",
    "Sounds are %-3s",
    "Bar Graphs are %-3s",
    "Mouse is %-3s"
};

static const StringListProvider kEoB1MenuStringsPrefsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsPrefsDOSEnglish), kEoB1MenuStringsPrefsDOSEnglish };

static const char *const kEoB1MenuStringsRest2DOSEnglish[4] = {
    "%s gained %s.\r",
    "%s memorized %s.\r",
    "%s casts healing on %s.\r",
    "Hours rested: %-4d"
};

static const StringListProvider kEoB1MenuStringsRest2DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRest2DOSEnglish), kEoB1MenuStringsRest2DOSEnglish };

static const char *const kEoB1MenuStringsRest4DOSEnglish[1] = {
    "\rYou can't rest here, monsters are near."
};

static const StringListProvider kEoB1MenuStringsRest4DOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsRest4DOSEnglish), kEoB1MenuStringsRest4DOSEnglish };

static const char *const kEoB1MenuStringsDefeatDOSEnglish[1] = {
    "All of your party has been defeated.  The minions of evil will be able to carry out their plans unhindered!\r"
};

static const StringListProvider kEoB1MenuStringsDefeatDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuStringsDefeatDOSEnglish), kEoB1MenuStringsDefeatDOSEnglish };

static const char *const kEoB1MenuYesNoStringsDOSEnglish[2] = {
    "Yes",
    "No"
};

static const StringListProvider kEoB1MenuYesNoStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MenuYesNoStringsDOSEnglish), kEoB1MenuYesNoStringsDOSEnglish };

static const char *const kEoB1CharGuiStringsHpDOSEnglish[2] = {
    "HP",
    "%3d of %-3d"
};

static const StringListProvider kEoB1CharGuiStringsHpDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsHpDOSEnglish), kEoB1CharGuiStringsHpDOSEnglish };

static const char *const kEoB1CharGuiStringsWp1DOSEnglish[2] = {
    "MISS",
    "HACK"
};

static const StringListProvider kEoB1CharGuiStringsWp1DOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsWp1DOSEnglish), kEoB1CharGuiStringsWp1DOSEnglish };

static const char *const kEoB1CharGuiStringsWrDOSEnglish[4] = {
    "CAN'T",
    "REACH",
    "NO",
    "AMMO"
};

static const StringListProvider kEoB1CharGuiStringsWrDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsWrDOSEnglish), kEoB1CharGuiStringsWrDOSEnglish };

static const char *const kEoB1CharGuiStringsSt1DOSEnglish[6] = {
    "Swapping",
    "DEAD",
    "UNCONSCIOUS",
    "POISON (SLOW)",
    "POISONED",
    "PARALYZED"
};

static const StringListProvider kEoB1CharGuiStringsSt1DOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsSt1DOSEnglish), kEoB1CharGuiStringsSt1DOSEnglish };

static const char *const kEoB1CharGuiStringsInDOSEnglish[4] = {
    "CHARACTER INFO",
    "ARMOR CLASS",
    "EXP",
    "LVL"
};

static const StringListProvider kEoB1CharGuiStringsInDOSEnglishProvider = { ARRAYSIZE(kEoB1CharGuiStringsInDOSEnglish), kEoB1CharGuiStringsInDOSEnglish };

static const char *const kEoB1CharStatusStrings7DOSEnglish[1] = {
    "%s no longer has giant strength.\r"
};

static const StringListProvider kEoB1CharStatusStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings7DOSEnglish), kEoB1CharStatusStrings7DOSEnglish };

static const char *const kEoB1CharStatusStrings81DOSEnglish[1] = {
    "%s feels the effects of poison!\r"
};

static const StringListProvider kEoB1CharStatusStrings81DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings81DOSEnglish), kEoB1CharStatusStrings81DOSEnglish };

static const char *const kEoB1CharStatusStrings9DOSEnglish[1] = {
    "%s is no longer paralyzed!\r"
};

static const StringListProvider kEoB1CharStatusStrings9DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings9DOSEnglish), kEoB1CharStatusStrings9DOSEnglish };

static const char *const kEoB1CharStatusStrings131DOSEnglish[1] = {
    "%s is %s!\r"
};

static const StringListProvider kEoB1CharStatusStrings131DOSEnglishProvider = { ARRAYSIZE(kEoB1CharStatusStrings131DOSEnglish), kEoB1CharStatusStrings131DOSEnglish };

static const char *const kEoB1LevelGainStringsDOSEnglish[1] = {
    "\x06\x01""%s has gained a level of experience.""\x06\x0F""\r"
};

static const StringListProvider kEoB1LevelGainStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1LevelGainStringsDOSEnglish), kEoB1LevelGainStringsDOSEnglish };

static const char *const kEoB1BookNumbersDOSEnglish[5] = {
    "First",
    "Second",
    "Third",
    "Fourth",
    "Fifth"
};

static const StringListProvider kEoB1BookNumbersDOSEnglishProvider = { ARRAYSIZE(kEoB1BookNumbersDOSEnglish), kEoB1BookNumbersDOSEnglish };

static const char *const kEoB1MageSpellsListDOSEnglish[26] = {
    "",
    "Armor",
    "Burning Hands",
    "Detect Magic",
    "Magic Missile",
    "Read Magic",
    "Shield",
    "Shocking Grasp",
    "Invisibility",
    "Knock",
    "M's Acid Arrow",
    "Stinking Cloud",
    "Dispel Magic",
    "Fireball",
    "Flame Arrow",
    "Haste",
    "Hold Person",
    "Invisibility 10'",
    "Lightning Bolt",
    "Vampiric Touch",
    "Fear",
    "Ice Storm",
    "Stoneskin",
    "Cloudkill",
    "Cone of Cold",
    "Hold Monster"
};

static const StringListProvider kEoB1MageSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB1MageSpellsListDOSEnglish), kEoB1MageSpellsListDOSEnglish };

static const char *const kEoB1ClericSpellsListDOSEnglish[25] = {
    "",
    "Bless",
    "Cure Light Wnds",
    "Cause Light Wnds",
    "Detect Magic",
    "Protect-Evil",
    "Aid",
    "Flame Blade",
    "Hold Person",
    "Slow Poison",
    "Create Food",
    "Dispel Magic",
    "Magical Vestment",
    "Prayer",
    "Remove Paralysis",
    "Cure Serious",
    "Cause Serious",
    "Neutral-Poison",
    "Protect-Evil 10'",
    "Protect-Lightning",
    "Cure Critical",
    "Cause Critical",
    "Flame Strike",
    "Raise Dead",
    "Lay on Hands"
};

static const StringListProvider kEoB1ClericSpellsListDOSEnglishProvider = { ARRAYSIZE(kEoB1ClericSpellsListDOSEnglish), kEoB1ClericSpellsListDOSEnglish };

static const char *const kEoB1SpellNamesDOSEnglish[51] = {
    "",
    "armor",
    "burning hands",
    "detect magic",
    "magic missile",
    "shield",
    "shocking grasp",
    "invisibility",
    "melf's acid arrow",
    "stinking cloud",
    "dispel magic",
    "fireball",
    "flame arrow",
    "haste",
    "hold person",
    "invisibility 10' radius",
    "lightning bolt",
    "vampiric touch",
    "fear",
    "ice storm",
    "stoneskin",
    "cloudkill",
    "cone of cold",
    "hold monster",
    "bless",
    "cure light wounds",
    "cause light wounds",
    "detect magic",
    "protection from evil",
    "aid",
    "flame blade",
    "hold person",
    "slow poison",
    "create food",
    "dispel magic",
    "magical vestment",
    "prayer",
    "remove paralysis",
    "cure serious wounds",
    "cause serious wounds",
    "neutralize poison",
    "protection from evil 10' radius",
    "protection from lightning",
    "cure critical wounds",
    "cause critical wounds",
    "flame strike",
    "raise dead",
    "lay on hands",
    "",
    "",
    ""
};

static const StringListProvider kEoB1SpellNamesDOSEnglishProvider = { ARRAYSIZE(kEoB1SpellNamesDOSEnglish), kEoB1SpellNamesDOSEnglish };

static const char *const kEoB1MagicStrings1DOSEnglish[6] = {
    "ABORT SPELL",
    "ABORT SPELL",
    "You must have a free hand for this spell.\r",
    "You can't have two of this spell type active.\r",
    "%s casts %s.\r",
    "ok\r"
};

static const StringListProvider kEoB1MagicStrings1DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings1DOSEnglish), kEoB1MagicStrings1DOSEnglish };

static const char *const kEoB1MagicStrings2DOSEnglish[3] = {
    "no effect\r",
    "%s has been disintegrated!\r",
    "The party has been hit by a death spell!\r"
};

static const StringListProvider kEoB1MagicStrings2DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings2DOSEnglish), kEoB1MagicStrings2DOSEnglish };

static const char *const kEoB1MagicStrings3DOSEnglish[6] = {
    "Cast spell on which character? ",
    "\rok\r",
    "\rSpell aborted.\r",
    "%s's %s spell expires.\r",
    "%s missed the monster.\r",
    "%s must be in the front ranks to hit!\r"
};

static const StringListProvider kEoB1MagicStrings3DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings3DOSEnglish), kEoB1MagicStrings3DOSEnglish };

static const char *const kEoB1MagicStrings4DOSEnglish[1] = {
    "no effect.\r"
};

static const StringListProvider kEoB1MagicStrings4DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings4DOSEnglish), kEoB1MagicStrings4DOSEnglish };

static const char *const kEoB1MagicStrings6DOSEnglish[1] = {
    "%s already has a high base armor class.\r"
};

static const StringListProvider kEoB1MagicStrings6DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings6DOSEnglish), kEoB1MagicStrings6DOSEnglish };

static const char *const kEoB1MagicStrings7DOSEnglish[5] = {
    "1ST",
    "2ND",
    "3RD",
    "4TH",
    "5TH"
};

static const StringListProvider kEoB1MagicStrings7DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings7DOSEnglish), kEoB1MagicStrings7DOSEnglish };

static const char *const kEoB1MagicStrings8DOSEnglish[3] = {
    "All spells on %s are dispelled.\r",
    "The party is already blessed!\r",
    "The aid spell fails!\r"
};

static const StringListProvider kEoB1MagicStrings8DOSEnglishProvider = { ARRAYSIZE(kEoB1MagicStrings8DOSEnglish), kEoB1MagicStrings8DOSEnglish };

static const byte kEoB1ManDefDOSEnglish[120] = {
    0x09, 0x0A, 0x02, 0x00, 0x09, 0x04, 0x03, 0x00,
    0x09, 0x06, 0x06, 0x00, 0x09, 0x03, 0x03, 0x00,
    0x09, 0x04, 0x02, 0x00, 0x09, 0x01, 0x02, 0x00,
    0x09, 0x05, 0x01, 0x00, 0x09, 0x09, 0x02, 0x00,
    0x09, 0x06, 0x02, 0x00, 0x23, 0x01, 0x05, 0x00,
    0x23, 0x02, 0x02, 0x00, 0x23, 0x03, 0x06, 0x00,
    0x23, 0x05, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
    0x23, 0x07, 0x01, 0x00, 0x1A, 0x01, 0x01, 0x00,
    0x1A, 0x03, 0x02, 0x00, 0x1A, 0x06, 0x01, 0x00,
    0x24, 0x01, 0x03, 0x00, 0x24, 0x03, 0x04, 0x00,
    0x24, 0x03, 0x01, 0x00, 0x02, 0x04, 0x03, 0x00,
    0x02, 0x03, 0x03, 0x00, 0x02, 0x05, 0x03, 0x00,
    0x01, 0x01, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00,
    0x01, 0x04, 0x03, 0x00, 0x0C, 0x02, 0x01, 0x00,
    0x0C, 0x03, 0x03, 0x00, 0x0C, 0x04, 0x02, 0x00
};

static const ByteProvider kEoB1ManDefDOSEnglishProvider = { ARRAYSIZE(kEoB1ManDefDOSEnglish), kEoB1ManDefDOSEnglish };

static const char *const kEoB1ManWordDOSEnglish[31] = {
    "attacks",
    "short",
    "line",
    "weapons",
    "certain",
    "rank",
    "rear",
    "can",
    "away",
    "dungeon",
    "cursor",
    "feature",
    "information",
    "displayed",
    "below",
    "around",
    "carefree",
    "gnomes",
    "clerics",
    "mystic",
    "pummel",
    "fitness",
    "using",
    "toughness",
    "wealth",
    "wizard",
    "officials",
    "hound",
    "disturbing",
    "flaming",
    ""
};

static const StringListProvider kEoB1ManWordDOSEnglishProvider = { ARRAYSIZE(kEoB1ManWordDOSEnglish), kEoB1ManWordDOSEnglish };

static const char *const kEoB1ManPromptDOSEnglish[1] = {
    "\r\r\r\rOn the page with this symbol...\r\rFind line %d\rEnter word %d\r"
};

static const StringListProvider kEoB1ManPromptDOSEnglishProvider = { ARRAYSIZE(kEoB1ManPromptDOSEnglish), kEoB1ManPromptDOSEnglish };

static const char *const kEoB1MonsterDistAttStringsDOSEnglish[5] = {
    "%s is hit by a cause serious wounds spell!\r",
    "The party is hit with a psychic mind blast!\r",
    "paralyzed",
    "poisoned",
    "paralyzed"
};

static const StringListProvider kEoB1MonsterDistAttStringsDOSEnglishProvider = { ARRAYSIZE(kEoB1MonsterDistAttStringsDOSEnglish), kEoB1MonsterDistAttStringsDOSEnglish };



scummvm_eob.bak è da rinominare in .exe
TheRuler
Visto che una versione tedesca è già implementata in scummvm, qualcuno se lo stesse chiedendo, le accentate non dovrebbero rappresentare un problema.
Ho confrontato i due exe eng ed ita e ho visto che avete spostato testi in base alle esigenze. Purtroppo questo richiederà tempo in più. Sarebbe bene che facesse copia-incolla chi si è già occupato della traduzione.

da quello che ho letto sul thread dell'exe dovreste avere un bel dump pulito magari con le frasi inglesi. Così sarebbe molto facile.
The Ancient One
Che grande che sei Rullo!
Siamo una squadra fortisssimI! smilies3.gif
TheRuler
Grazie Antix, abbiamo un piccolo sforzo ancora da fare, DAI! DAI! DAI! LA LOCURA!


Ho condiviso il sorgente su google docs:
https://docs.google.com/file/d/0B-83wCtq_Ac...m95RXduQ0U/edit


C'è da verificare anche l'array
static const byte kEoB1ManDefDOSEnglish[120] = {
0x09, 0x0A, 0x02, 0x00, 0x09, 0x04, 0x03, 0x00,
0x09, 0x06, 0x06, 0x00, 0x09, 0x03, 0x03, 0x00,
0x09, 0x04, 0x02, 0x00, 0x09, 0x01, 0x02, 0x00,
0x09, 0x05, 0x01, 0x00, 0x09, 0x09, 0x02, 0x00,
0x09, 0x06, 0x02, 0x00, 0x23, 0x01, 0x05, 0x00,
0x23, 0x02, 0x02, 0x00, 0x23, 0x03, 0x06, 0x00,
0x23, 0x05, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
0x23, 0x07, 0x01, 0x00, 0x1A, 0x01, 0x01, 0x00,
0x1A, 0x03, 0x02, 0x00, 0x1A, 0x06, 0x01, 0x00,
0x24, 0x01, 0x03, 0x00, 0x24, 0x03, 0x04, 0x00,
0x24, 0x03, 0x01, 0x00, 0x02, 0x04, 0x03, 0x00,
0x02, 0x03, 0x03, 0x00, 0x02, 0x05, 0x03, 0x00,
0x01, 0x01, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00,
0x01, 0x04, 0x03, 0x00, 0x0C, 0x02, 0x01, 0x00,
0x0C, 0x03, 0x03, 0x00, 0x0C, 0x04, 0x02, 0x00
};

visto che è leggermente diverso da quello tedesco:

static const byte kEoB1ManDefDOSGerman[120] = {
0x09, 0x0A, 0x01, 0x00, 0x09, 0x04, 0x03, 0x00,
0x09, 0x06, 0x01, 0x00, 0x09, 0x03, 0x03, 0x00,
0x09, 0x04, 0x02, 0x00, 0x09, 0x01, 0x02, 0x00,
0x09, 0x05, 0x01, 0x00, 0x09, 0x09, 0x02, 0x00,
0x09, 0x01, 0x03, 0x00, 0x23, 0x01, 0x05, 0x00,
0x23, 0x02, 0x02, 0x00, 0x23, 0x03, 0x06, 0x00,
0x23, 0x05, 0x01, 0x00, 0x23, 0x06, 0x03, 0x00,
0x23, 0x07, 0x01, 0x00, 0x1A, 0x02, 0x01, 0x00,
0x1A, 0x03, 0x02, 0x00, 0x1A, 0x06, 0x01, 0x00,
0x24, 0x01, 0x03, 0x00, 0x24, 0x03, 0x03, 0x00,
0x24, 0x03, 0x01, 0x00, 0x02, 0x04, 0x03, 0x00,
0x02, 0x03, 0x03, 0x00, 0x02, 0x07, 0x02, 0x00,
0x01, 0x01, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00,
0x01, 0x04, 0x03, 0x00, 0x0C, 0x02, 0x01, 0x00,
0x0C, 0x03, 0x03, 0x00, 0x0C, 0x02, 0x04, 0x00
};
TheRuler
Trovato l'array nell'exe italiano. E' invariato, non lo avete toccato. Meglio così.


proprio sotto l'array (0002A149) ho trovato parti in inglese. E' normale che non siano state tradotte?

CODICE
attacks.short.line.weapons.certain.rank.rear.can.away.dungeon.cursor.feature.inf
ormation.displayed.below.around.carefree.gnomes.clerics.mystic.pummel.fitness.us
i
ng.toughness.wealth.wizard.officials.hound.disturbing.flaming..


nella versione tedesca sono tradotte.
selven
se mi dici solo i testi da tradeurre posso vedere di aiutare scipollare sul codice non mi ispira
redice
CITAZIONE (TheRuler @ 17 Jun 2014, 00:07) *
Trovato l'array nell'exe italiano. E' invariato, non lo avete toccato. Meglio così.
proprio sotto l'array (0002A149) ho trovato parti in inglese. E' normale che non siano state tradotte?
nella versione tedesca sono tradotte.


Traduciamole per sicurezza.
TheRuler
Nel sorgente sono presenti quindi direi anche io di tradurle.
Selven non dobbiamo tradurre da zero. Dobbiamo copiare le frasi già tradotte ed uniformate dall'exe italiano. Ad ogni modo le parti da modificare nel sorgente sono quelle tra virgolette. Lasciando inalterati i caratteri speciali come %d o \r:


"Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
" ",
"AC\rHP\rLVL",
"%s\r%d\r%d\r%d\r%d\r%d",
"%d\r%d",
"%d",
"%d/%d",
"%d/%d/%d",
"Select the box of\rthe character you\rwish to create or\rview."
jsbrigo
CITAZIONE (TheRuler @ 17 Jun 2014, 00:07) *
Trovato l'array nell'exe italiano. E' invariato, non lo avete toccato. Meglio così.


proprio sotto l'array (0002A149) ho trovato parti in inglese. E' normale che non siano state tradotte?

CODICE
attacks.short.line.weapons.certain.rank.rear.can.away.dungeon.cursor.feature.inf
ormation.displayed.below.around.carefree.gnomes.clerics.mystic.pummel.fitness.us
i
ng.toughness.wealth.wizard.officials.hound.disturbing.flaming..


nella versione tedesca sono tradotte.

queste sono le risposte per l'anticopia non traducetele nemmeno per sicurezza... ;)
Micartu
Quello che doveva essere tradotto lo è, la traduzione è finita e completa. se trovate frasi inglesi lasciatecele. O sono parti non completate ma neppure eliminate dal codice, o roba tipo l'anticopia, ecc.
Basta fare copia e incolla dal testo già tradotto nell'exe. L'unico dubbio è come implementare le accentate presenti nel nostro exe nel txt di scummvm.
TheRuler
AHHH! allora l'array precedente non è altro che lo schema per trovare le parole giuste sul manuale. E' per questo che inglese e tedesco differiscono.

difatti la prima riga:

0x09, 0x0A, 0x02, 0x00, 0x09, 0x04, 0x03, 0x00,
scudo, linea 10, parola 2, spazio separatore, scudo, linea 4, parola 3, spazio separatore

stando ad una tabella codici trovata in rete combacia tutto.

grazie jsbrigo!




TheRuler
Micartu, circa le parti non tradotte, non vorrei che in scummvm le avessere inserite. Certamente si tratta di una cosa che potremmo fare in un secondo momento, e non ho nessun problema a lasciare la trad esattamente come l'avete concepita, considerato anche il fatto che ci avete speso tantissimo tempo e risorse, ponderando tantissime cose. Quello che voglio dire e che anche se alcune frasi non vengono visualizzate dal gioco dos, potrebbe esserlo in scummvm.


mi hai messo la pulce sulle accentate ed ho verificato.
qui c'è il sorgente tedesco e pare non vi siano tracce delle loro umlaut ma siccome l'engine è il Kyra, e per Kyrandia abbiamo fatto carte false per riuscire ad inserire tutte le accentate, è facile supperre che anche eob condivida la stessa tabella caratteri.

QUINDI, stando al sorgente che feci a suo tempo per Kyrandia 1 (ora non ho sotto mano la tabella che usai al tempo) i caratteri dovrebbero essere questi:

ù - \x97
è - \x8A
é - \x82
ò - \x95
à - \x85
ì - ?

che andranno inserite in questa maniera:
"Dar""\x95"" un giusto avvertimento."
Micartu
Non so come si comporta lo scummvm con le accentate, ma noi abbiamo modificato i font di gioco proprio per avere supporto diretto. Infatti se spulci l'exe troverai il corrispettivo esadecimale del valore che abbiamo utilizzato qui e là. Intendevo dire che non so come si trasferisca questo valore in txt non che le accentate siano assenti al contrario sono ben presenti anche nell'exe italianizzato.

Per eventuale testo inglese non tradotto, non ci siamo capiti: non compare, sono frammenti mai completati e mai riattivati, e lo dico con certezza superiore al 300%
Sono incantesimi e cose abbozzate dai programmatori del gioco e mai implementate nel gioco finito, si trovano residui qui e là nell'exe e alle volte qualche abbozzo in grafica, incantesimi che volevano implementare e poi non l'hanno fatto per varie ragioni e cose così. Esistono progetti amatoriali di recupero e di modding di tale materiale, uno dei quali proprio del "nostro" Delmair.

Mi preoccupa invece il discorso della limitazione nell'exe inglese del buffer, noi abbiamo appunto tramite gufino ampliato il buffer, proprio perché siamo gli unici al mondo ad aver tradotto gli inf nella nostra lingua. Le altre traduzioni non hanno gli inf tradotti o se li hanno utilizzano meno testo di quelli inglesi. Credo bisognerà sentire Gufino e chiedergli come lo ha realizzato e poi implementare questo aumento di buffer nello scummvm.
Il principio è che l'inf decompresso viene memorizzato nel buffer, con un limite di 7500 byte in inglese, avendo tradotto gli inf, è aumentato anche il peso in byte e parti di livello venivano appunto troncate, quindi abbiamo dovuto espanderlo per la traduzione.
TheRuler
Avevo capito come elegantemente fosse stato risolto il problema accentate, ma purtroppo è una soluzione che rimarrà relegata all'exe. In scummvm bisogna usare altri codici.
La parola che nell'exe è "Velocit 0x0C" dovrà essere tradotta nel sorgente come "Velocit""\x85"
basterà copiaincollare le frasi come sono poi "sostituire" ogni accentata con notepad++

La questione del buffer va chiesta al team. Io credo che, riscrivendo l'engine, se ne fossero accorti ed abbiano tolto la limitazione o quantomeno aumentato il buffer visto che le frasi tedesche di norma sono più lunghe.
redice

Anche queste due frasi:
CITAZIONE (TheRuler @ 17 Jun 2014, 12:50) *
"Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
"Select the box of\rthe character you\rwish to create or\rview."

fanno parte dell'anticopia? Ok per il resto, ma queste due qui secondo me son da tradurre.
Micartu
Come ho già spiegato, quello che è testo è TUTTO tradotto. Quello che nel nostro exe è in inglese è scarto.

Capisco Rullo, allora dobbiamo sentire il team per il buffer. Stasera inizio il nostro allegro copia e incolla.
TheRuler
CITAZIONE (redice @ 17 Jun 2014, 20:44) *
Anche queste due frasi:
CITAZIONE (TheRuler @ 17 Jun 2014, 12:50) *
"Your party is\rcomplete. Select\rthe PLAY button\ror press 'P' to\rstart the game.",
"Select the box of\rthe character you\rwish to create or\rview."

fanno parte dell'anticopia? Ok per il resto, ma queste due qui secondo me son da tradurre.

nell'exe italiano quelle sono tradotte. Quindi si, vanno copiate tenendo presente la posizione del carattere "a capo" (/r)
redice
Ottimo.
TheRuler
Confermato da Micartu:
Clicca per vedere l'allegato
Micartu
Io non vedo nulla aprendo il link.
TheRuler
Copiaincolla al 25% circa.

Ho trovato una frase all'indirizzo 0x00027276 che FORSE è stata tradotta così per mancanza di spazio nell'exe :

You may only eat food!
Puoi solo []

Mancava spazio nell'exe o a video? Per ora l'ho tradotta:
Puoi solo mangiare cibo!


e questa?
Legno.Fulmini.Gelo.Cure.Fuoco.Silvias.Dardi

non sono proprio uguali in inglese:
"Stick",
"Lightning",
"Frost",
"Curing",
"Fireball",
"Silvias",
"Magic Missile"

li lascio così o metto Palla di fuoco, Dardo incantato ecc..



intanto, per chi si chiedesse della storia del buffer di 7500Bytes, LordHoto, programmatore tedesco del team di scummvm ha fugato ogni dubbio.
Micartu
CITAZIONE
You may only eat food!
Puoi solo []


Hai trovato un bug o una svista bravo XD
Bisogna dire a Jsbrigo di correggere.
Se ci sono problemi di spazio può diventare:

"Non è cibo!"
in quanto esce se usi un oggetto qualsiasi cercando di mangiarlo.

Edito:
"Non è cibo!"
confermo questa traduzione, che è poi quella che adotteremo noi. Ho già fatto le prove e non dà problemi.

CITAZIONE
Legno.Fulmini.Gelo.Cure.Fuoco.Silvias.Dardi


Non ho idea di cosa siano queste, nel senso che sono sicuro che sono degli attributi collegati a qualche altra parola, per esempio potrebbe essere "Bacchetta".
Quel "cure" potrebbe essere un typo, mentre Dardi sarà un abbreviazione sbagliata o un'abbreviazione forzata, devo sentire Jsbrigo. Il nome degli oggetti è contenuto in Item.dat. Se tu raccogli una bacchetta dei dardi incantanti, ti esce nell'inventario "Bacchetta dei dardi incantati", ma nel parser probabilmente esce "Preso bacchetta dardi" per motivi di spazio carente, non è una tragedia, ma vediamo che si può fare.
TheRuler
Ho finito l'adattamento e sottoposto la richiesta al tracker.

...attendere prego...
selven
Quindi da tradurre non c'era niente?
Mic più che "non è cibo!" ci starebbe meglio " Non si mangia!"
jsbrigo
Esatto, come da post di Mic
http://www.oldgamesitalia.net/forum/index....st&p=309353
redice
CITAZIONE (TheRuler @ 18 Jun 2014, 17:39) *
Confermato da Micartu:
Clicca per vedere l'allegato

Non starebbe meglio "una nuova partita"?


CITAZIONE (selven @ 24 Jun 2014, 13:02) *
Mic più che "non è cibo!" ci starebbe meglio " Non si mangia!"

Anche per me.

Ragfox
"Non (è) commestibile!"?
Se l'originale è "You may only eat food!" dovrebbe starci (19 lettere vs 22).
TheRuler
La lunghezza non è un problema a livello di codice. Potrebbe esserlo a schermo.
Non è commestibile non è male. Sentiamo mic e gli altri cosa ne pensano.


Al primo post l'adattamento completo
Micartu
Grazie Rullo, per tutto lo sbatti e il lavoro. Se decidessimo di cambiare qualcosa di questi testi dell'exe, come si fa una volta che la traduzione sarà supportata?
TheRuler
Lo si passa come nuova feature request e loro lo aggiungono al trunk.
Ci sarà sicuramente qualcosa da cambiare, vedrai. Magari anche da migliorare perchè con scummvm abbiamo sicuramente più margine di manovra.
Loro prendono i dati dall'exe per popolare il sorgente che ho adattato. Se l'exe è ufficiale prelevano i testi facilmente (perché lo conoscono ed hanno i tool che sanno a che indirizzi andare a pescare la roba) se invece gli arriva sotto mano un exe modificato, fanno fatica e non vogliono sbattersi a fare tutto a mano.
Inoltre non conoscendo la lingua sarebbero ancora più in difficoltà. Con Kyrandia 1 e 2 fecero alcune storie e dopo qualche scambio modificai l'exe come lo volevano loro: ricordo che non gli piacevano i caratteri esadecimali 00 che avevo usato per cancellare testo. Avrei dovuto usare 20 perchè per il loro tool 00 era il separatore di frasi. Il tool estrae un blocco da indirizzo xxxx ad indirizzo yyyy e dentro ci vuole trovare, per dire, 9 valori 00, cioè si aspetta 10 frasi o parole separate che deve incasellare nello script annotato come quello di eob. Nel mio exe si trovava molti più 00 e quindi si bloccava.
A proposito di questo ho notato che alcune parole, per recuperare spazio credo, non solo non le avete tradotte, ma proprio eliminate: Tipo un EXIT, OPZIONI ed altre 2 mi pare. POTREBBERO aver problemi col tool, è per questo che ho voluto passargli un sorgente praticamente pronto (sperando che vadano bene i codici delle accentate).
Aspettiamo con ansia.
Micartu
Capisco, bene. Ci sarà sicuramente una 1.1
Per dire una cosa dobbiamo correggere (già fatto in realtà) quella svista per il cibo. E sicuramente troveremo un paio di altre cosucce, lo do quasi per scontato.
Quando uscirà la versione scummvm mi ci farò un giro.

Edito: (parecchio in ritardo ma non avevo letto)
CITAZIONE
A proposito di questo ho notato che alcune parole, per recuperare spazio credo, non solo non le avete tradotte, ma proprio eliminate: Tipo un EXIT, OPZIONI ed altre 2 mi pare. POTREBBERO aver problemi col tool, è per questo che ho voluto passargli un sorgente praticamente pronto (sperando che vadano bene i codici delle accentate).


Non sono eliminate. Exit è stato sostituito da "<<" per ovvi motivi: il pulsante è troppo piccolo per contenere la parola "Uscire". Ci stanno esattamente 4 caratteri, e poi si sfora, "Usc." è inguardabile quindi siamo andati di "<<", mi sa che ti tocca aggiornare il file uppato su scummvm. XD



La traduzione è completa, ormai è una filastrocca XD

Però è bella la spulciatina che stai dando, io per esempio ho beccato una frase che voglio far correggere a Jsbrigo, ovviamente sto tenendo conto di tutto per poter poi portare le modifiche anche su scummvm.

Se riusciremo ad avere la versione scummvm me la giocherò tutta e poi rilasceremo la 1.1 sia scummvm che dosbox.
Mi piacerebbe con scummvm estendere i nomi degli incantesimi che nella dosbox abbiamo dovuto accorciare puntando, ma anche lì c'è cmq un limite di caratteri oltre i quali non sta fisicamente nella scheda degli incantesimi (intendo a livello grafico deborda).
TheRuler
in effetti exit cambiato con << l'avevo notato e l'ho lasciato così. non ho cambiato nulla della vostra traduzione, ho lasciato pure gli stessi spazi.
ESCI?
TheRuler
Ancora nulla dal team scummvm. Mic, avete poi fatto quelle modifiche all'exe?
Ci vorrà ancora tempo visto il fermo che normalmente applicano all'uscita di nuove versioni, quindi non c'è fretta.
Basta comunque che aggiornaite la patch sul sito: al team ho dato il link alla scheda di traduzione.
Micartu
Abbiamo corretto le due frasi errate che avevi trovato spulciando, ma non abbiamo ancora aggiornato la traduzione perché speravamo di avere qualche segnalazione in più prima di sfornare la 1.1.

Ad ogni modo, se non arriveranno presto nuove segnalazioni, provvederò ad aggiornare.
kaos
Scusate l'ignoranza, ma visto che nel menù i verbi sono tutti (mi sembra) imperativi 2a singolare (riposa, studia, prega), al posto di "<<" non potevate mettere "Esci" (che starebbe perfettamente nei 4 caratteri di "exit")??
Comunque grazie per la traduzione, grazie a voi e ai ragazzi di scummvm a breve finalmente giocherò questo titolo!
Micartu
no, in realtà abbiamo tradotto un rpg dall'inglese, ma non ci siamo ricordati che exit si traduce con esci.
smilies3.gif smilies3.gif smilies3.gif

sto scherzando, il motivo è che exit fa parte di un trittico di comandi, c'è pure successivo o precedente, e visto che prec.. e succ. puntati non ci stavano, perché si esce fisicamente dal pulsante, non avrebbe avuto senso tradurne uno su 3. meglio una scelta uniforme di questo tipo con << e >> in base all'occorrenza, scelta che permette di tradurne 3 su 3, con dei comandi comunque usati in tantissime situazioni nei videogiochi.


kaos, ci vorrà ancora un po' di tempo, ti conviene giocarlo con dosbox!
The Ancient One
Qui, Micartu, ci prendono per dei pivellini.....



smilies3.gif smilies3.gif




n5.gif


Vi lovvo!
Micartu
ma no, a me fa piacere ricevere segnalazioni, anche perché senza rullo non avremmo beccato ben due sviste e anche perché prima di rilasciare la 1.1 ne vorrei ricevere altre.
The Ancient One
CITAZIONE (Micartu @ 9 Jul 2014, 23:20) *
ma no, a me fa piacere ricevere segnalazioni, anche perché senza rullo non avremmo beccato ben due sviste e anche perché prima di rilasciare la 1.1 ne vorrei ricevere altre.

Concordo nella maniera più assoluta!
Volevo solo scherzare un po'!

Poi, quando volete, io per EoB2 sono pronto!
Micartu
prima vorrei chiuderemquesta definitivamente. vediamo la questione delle accentate su scummvm e diamogli il compilato.
TheRuler
CITAZIONE (Micartu @ 9 Jul 2014, 23:20) *
anche perché senza rullo ...


non ho letto altro.

Il Rullo dopo questa frase:


The Ancient One
smilies3.gif smilies3.gif smilies3.gif
TheRuler
CITAZIONE (TheRuler @ 24 Jun 2014, 20:26) *
La lunghezza non è un problema ... Potrebbe esserlo a schermo.
Non è commestibile non è male. Sentiamo mic e gli altri cosa ne pensano.

.. e il Rullo dopo aver riletto il suo precedente post:
kaos
CITAZIONE (Micartu @ 9 Jul 2014, 23:08) *
no, in realtà abbiamo tradotto un rpg dall'inglese, ma non ci siamo ricordati che exit si traduce con esci.
smilies3.gif smilies3.gif smilies3.gif

sto scherzando, il motivo è che exit fa parte di un trittico di comandi, c'è pure successivo o precedente, e visto che prec.. e succ. puntati non ci stavano, perché si esce fisicamente dal pulsante, non avrebbe avuto senso tradurne uno su 3. meglio una scelta uniforme di questo tipo con << e >> in base all'occorrenza, scelta che permette di tradurne 3 su 3, con dei comandi comunque usati in tantissime situazioni nei videogiochi.


kaos, ci vorrà ancora un po' di tempo, ti conviene giocarlo con dosbox!


Immaginavo ci fosse qualche motivo filologico dietro (infatti ho scritto "scusate l'ignoranza" come prima cosa biggrin2a.gif ), grazie per la spiegazione!
Comunque non preoccuparti, ho aspettato 20 anni... cosa vuoi che sia qualche mese o qualche anno in più. blush.gif
Grazie ancora per il lavoro che fate!! blush.gif
TheRuler
Qualcosa si muove.

Ho modificato il file, Micartu se vedi altre anomalie dimmelo che prima di madarlo le correggiamo.
TheRuler
Micartu, mi chiedono questo:

CITAZIONE
I'd also need translations for some extra strings contained in staticres_eob.cpp:

"Cancel", "Empty Slot", "Save Game", "Load Game"
"There is no game\rsaved in that slot!"

You could simply post the translations here and I will add them to the code.
Please keep in mind that the translations for "Cancel", "Save Game" and "Load Game" have
to fit the dialogue buttons, so you might have to use abbreviations again.


Immagino c'entri il trittico di cui parlavi tempo fa, quello che avete deciso di tradurre con i simboli >> e <<, dico bene?
Micartu
Domani sono a casa dal lavoro e ci do un occhio. Nel frattempo grazie Rullo per aver seguito la questione!
The Ancient One
Rullo, sei il meglio!
Micartu
Leggo che ci sono problemi con le accentate.
TheRuler
Troppo buono Antico!
CITAZIONE (Micartu @ 8 Oct 2014, 11:48) *
Leggo che ci sono problemi con le accentate.

Già messa la pezza. Ecco il file corretto.
Questa è la versione 'lo-fi' del forum. Per visualizzare la versione completa con molte più informazioni, formattazione ed immagini, per favore clicca qui.
Invision Power Board © 2001-2020 Invision Power Services, Inc.