wpdev-commits Mailing List for Wolfpack Emu (Page 31)
Brought to you by:
rip,
thiagocorrea
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(14) |
Aug
(121) |
Sep
(256) |
Oct
(59) |
Nov
(73) |
Dec
(120) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(259) |
Feb
(381) |
Mar
(501) |
Apr
(355) |
May
(427) |
Jun
(270) |
Jul
(394) |
Aug
(412) |
Sep
(724) |
Oct
(578) |
Nov
(65) |
Dec
|
From: spddmn <xxx...@us...> - 2004-09-26 17:53:16
|
Update of /cvsroot/wpdev/wolfpack/ai In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16563/ai Modified Files: ai_humans.cpp Log Message: renames "release" to "claim" (was OSI wrong and "release" didn't work anyways.) Index: ai_humans.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/ai/ai_humans.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** ai_humans.cpp 26 Sep 2004 00:21:54 -0000 1.21 --- ai_humans.cpp 26 Sep 2004 17:53:05 -0000 1.22 *************** *** 111,115 **** pTalker->socket()->attachTarget( new cStableTarget( m_npc ) ); } ! else if ( message.contains( " RELEASE" ) ) { P_ITEM pPack = m_npc->getBankbox(); --- 111,115 ---- pTalker->socket()->attachTarget( new cStableTarget( m_npc ) ); } ! else if ( message.contains( " CLAIM" ) ) { P_ITEM pPack = m_npc->getBankbox(); |
From: Sebastian H. <dar...@us...> - 2004-09-26 17:45:16
|
Update of /cvsroot/wpdev/xmlscripts/definitions/system In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14392/system Modified Files: access.xml Log Message: ACL update Index: access.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/system/access.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** access.xml 9 Sep 2004 03:32:51 -0000 1.6 --- access.xml 26 Sep 2004 17:45:03 -0000 1.7 *************** *** 56,60 **** <action name="any" permit="true" /> <action name="ACCOUNT" permit="false" /> - <action name="ALLMOVE" permit="false" /> <action name="ALLSHOW" permit="false" /> <action name="DECORATION" permit="false" /> --- 56,59 ---- *************** *** 68,73 **** <action name="INFO" permit="false" /> <action name="INVUL" permit="false" /> - <action name="NUKE" permit="false" /> - <action name="WIPE" permit="false" /> <action name="OPTIMIZEDB" permit="false" /> <action name="SAVE" permit="false" /> --- 67,70 ---- *************** *** 75,79 **** <action name="SET" permit="false" /> <action name="SHUTDOWN" permit="false" /> - <action name="TILE" permit="false" /> </group> <group name="multi"></group> --- 72,75 ---- |
From: Sebastian H. <dar...@us...> - 2004-09-26 16:21:59
|
Update of /cvsroot/wpdev/wolfpack/unix In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23983/unix Modified Files: console_unix.cpp Log Message: fix for the unix console Index: console_unix.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/unix/console_unix.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** console_unix.cpp 19 Sep 2004 23:41:00 -0000 1.15 --- console_unix.cpp 26 Sep 2004 16:21:46 -0000 1.16 *************** *** 246,250 **** QString temp = progress; progress = QString::null; ! rollbackChars(temp.length() + 4); progress = temp; } --- 246,250 ---- QString temp = progress; progress = QString::null; ! rollbackChars(temp.length()); progress = temp; } *************** *** 260,264 **** QString temp = progress; progress = QString::null; ! sendProgress( temp ); } } --- 260,265 ---- QString temp = progress; progress = QString::null; ! send( temp ); ! progress = temp; } } |
From: Sebastian H. <dar...@us...> - 2004-09-26 16:21:59
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23983 Modified Files: ChangeLog Log Message: fix for the unix console Index: ChangeLog =================================================================== RCS file: /cvsroot/wpdev/wolfpack/ChangeLog,v retrieving revision 1.80 retrieving revision 1.81 diff -C2 -d -r1.80 -r1.81 *** ChangeLog 26 Sep 2004 14:41:22 -0000 1.80 --- ChangeLog 26 Sep 2004 16:21:30 -0000 1.81 *************** *** 1,5 **** Wolfpack ChangeLog ! Wolfpack 12.9.11 Beta (CVS) - Fixed a crashbug related to NPC ai storing invalidated character pointers. This will slow AI down a little but crash prevention is well worth it. --- 1,7 ---- Wolfpack ChangeLog ! Wolfpack 12.9.12 Beta (CVS) ! ! Wolfpack 12.9.11 Beta (26. September 2004) - Fixed a crashbug related to NPC ai storing invalidated character pointers. This will slow AI down a little but crash prevention is well worth it. |
From: Sebastian H. <dar...@us...> - 2004-09-26 16:17:36
|
Update of /cvsroot/wpdev/xmlscripts/scripts/magic In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22647/magic Modified Files: runebook.py Log Message: runebook fix Index: runebook.py =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/scripts/magic/runebook.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** runebook.py 20 Jul 2004 20:55:13 -0000 1.7 --- runebook.py 26 Sep 2004 16:17:27 -0000 1.8 *************** *** 12,15 **** --- 12,16 ---- from magic.rune import isrune from magic.utilities import fizzle, MODE_BOOK + import magic.utilities import whrandom import wolfpack.utilities |
From: Sebastian H. <dar...@us...> - 2004-09-26 16:15:21
|
Update of /cvsroot/wpdev/xmlscripts/scripts/system In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22031/system Modified Files: skillgain.py Log Message: fix for statgain Index: skillgain.py =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/scripts/system/skillgain.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** skillgain.py 7 Jul 2004 03:14:32 -0000 1.7 --- skillgain.py 26 Sep 2004 16:15:06 -0000 1.8 *************** *** 30,99 **** # def gainstat(char, stat): ! realstr = char.strength - char.strength2 ! realdex = char.dexterity - char.dexterity2 ! realint = char.intelligence - char.intelligence2 ! totalstats = realstr + realdex + realint ! resendstats = 0 ! # Atrohpy ! # Like the skill atrophy we have a certain chance to ! # decrease another (lock: down) stat here. ! # Only active for players ! if char.player and totalstats / char.statcap >= random(): ! stats = [0, 1, 2] ! if char.strengthlock != 1 or stat == 0 or realstr <= 1: ! stats.remove(0) ! if char.dexteritylock != 1 or stat == 1 or realdex <= 1: ! stats.remove(1) ! if char.intelligencelock != 1 or stat == 2 or realint <= 1: ! stats.remove(2) ! # We found a stat to lower ! if len(stats) > 0: ! lower = choice(stats) ! if lower == 0: ! char.strength -= 1 ! # NPCs hitpoints are not related to strength at all ! if char.npc: ! char.maxhitpoints -= 1 ! char.updatehealth() ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost one point of strength [%u].\n' % (char.serial, char.strength)) ! elif lower == 1: ! char.dexterity -= 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost one point of dexterity [%u].\n' % (char.serial, char.dexterity)) ! elif lower == 2: ! char.intelligence -= 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost one point of intelligence [%u].\n' % (char.serial, char.intelligence)) ! totalstats -= 1 ! resendstats = 1 ! # Increase the stat if we didn't hit our total ! # statcap yet. ! if totalstats < char.statcap: ! if stat == 0: ! char.strength += 1 ! # For NPCs we manually increase the max hitpoints ! # Players are accounted for automatically ! if char.npc: ! char.maxhitpoints += 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained one point of strength [%u].\n' % (char.serial, char.strength)) ! elif stat == 1: ! char.dexterity += 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained one point of dexterity [%u].\n' % (char.serial, char.dexterity)) ! elif stat == 2: ! char.intelligence += 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained one point of intelligence [%u].\n' % (char.serial, char.intelligence)) ! resendstats = 1 ! if resendstats and char.socket: ! char.socket.resendstatus() # --- 30,99 ---- # def gainstat(char, stat): ! realstr = char.strength - char.strength2 ! realdex = char.dexterity - char.dexterity2 ! realint = char.intelligence - char.intelligence2 ! totalstats = realstr + realdex + realint ! resendstats = 0 ! # Atrohpy ! # Like the skill atrophy we have a certain chance to ! # decrease another (lock: down) stat here. ! # Only active for players ! if char.player and totalstats / char.statcap >= random(): ! stats = [0, 1, 2] ! if char.strengthlock != 1 or stat == 0 or realstr <= 1: ! stats.remove(0) ! if char.dexteritylock != 1 or stat == 1 or realdex <= 1: ! stats.remove(1) ! if char.intelligencelock != 1 or stat == 2 or realint <= 1: ! stats.remove(2) ! # We found a stat to lower ! if len(stats) > 0: ! lower = choice(stats) ! if lower == 0: ! char.strength -= 1 ! # NPCs hitpoints are not related to strength at all ! if char.npc: ! char.maxhitpoints -= 1 ! char.updatehealth() ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost one point of strength [%u].\n' % (char.serial, char.strength)) ! elif lower == 1: ! char.dexterity -= 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost one point of dexterity [%u].\n' % (char.serial, char.dexterity)) ! elif lower == 2: ! char.intelligence -= 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost one point of intelligence [%u].\n' % (char.serial, char.intelligence)) ! totalstats -= 1 ! resendstats = 1 ! # Increase the stat if we didn't hit our total ! # statcap yet. ! if totalstats < char.statcap: ! if stat == 0: ! char.strength += 1 ! # For NPCs we manually increase the max hitpoints ! # Players are accounted for automatically ! if char.npc: ! char.maxhitpoints += 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained one point of strength [%u].\n' % (char.serial, char.strength)) ! elif stat == 1: ! char.dexterity += 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained one point of dexterity [%u].\n' % (char.serial, char.dexterity)) ! elif stat == 2: ! char.intelligence += 1 ! if DEBUG_STATS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained one point of intelligence [%u].\n' % (char.serial, char.intelligence)) ! resendstats = 1 ! if resendstats and char.socket: ! char.socket.resendstatus() # *************** *** 103,177 **** # def gainskill(char, skill, totalskill, totalcap): ! value = char.skill[skill] / 10.0 ! lock = char.skilllock[skill] ! cap = char.skillcap[skill] / 10.0 ! info = SKILLS[skill] ! if lock == 0 and value < cap: ! # Skills lower than 10.0% will gain 0.1% - 0.5% at once ! if value < 10.0: ! points = randint(1, 5) / 10.0 ! else: ! points = 0.1 ! # This will always happen if we are above the skillcap ! # But if we have some skills set to lower, they ! # are lowered even if we are below the skillcap ! if totalskill / totalcap >= random(): ! for i in range(0, ALLSKILLS): ! if i != skill and char.skilllock[i] == 1 and char.skill[i] / 10.0 >= points: ! char.skill[i] -= int(points * 10) ! totalskill -= points ! if DEBUG_SKILLS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost %0.01f%% of %s [%02.01f%%].\n' % (char.serial, points, SKILLS[i][SKILL_NAME], char.skill[i] / 10.0)) ! if char.socket: ! char.socket.updateskill(i) ! break ! # We can only gain in this skill if we are still below ! # the total skill cap. Atrophy has been taken care of ! # in the if before this. ! if totalskill + points <= totalcap: ! char.skill[skill] += int(points * 10) ! totalskill += points ! if DEBUG_SKILLS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained %0.01f%% of %s [%02.01f%%].\n' % (char.serial, points, info[SKILL_NAME], char.skill[skill] / 10.0)) ! if char.socket: ! char.socket.updateskill(skill) ! # It's not important that we actually gained the skill ! # in order to gain stats by using it. ! if lock == 0: ! strchance = info[SKILL_STRCHANCE] ! dexchance = info[SKILL_DEXCHANCE] ! intchance = info[SKILL_INTCHANCE] ! realstr = char.strength - char.strength2 ! realdex = char.dexterity - char.dexterity2 ! realint = char.intelligence - char.intelligence2 ! if (char.npc or char.strengthlock == 0) and realstr >= char.strengthcap: ! strchance = 0.0 ! else: ! strchance /= 33.3 ! if (char.npc or char.dexteritylock == 0) and realdex >= char.dexteritycap: ! dexchance = 0.0 ! else: ! dexchance /= 33.3 ! if (char.npc or char.intelligencelock == 0) and realint >= char.intelligencecap: ! intchance = 0.0 ! else: ! intchance /= 33.3 ! if strchance > random(): ! gainstat(char, 0) ! elif dexchance > random(): ! gainstat(char, 1) ! elif intchance > random(): ! gainstat(char, 2) # --- 103,177 ---- # def gainskill(char, skill, totalskill, totalcap): ! value = char.skill[skill] / 10.0 ! lock = char.skilllock[skill] ! cap = char.skillcap[skill] / 10.0 ! info = SKILLS[skill] ! if lock == 0 and value < cap: ! # Skills lower than 10.0% will gain 0.1% - 0.5% at once ! if value < 10.0: ! points = randint(1, 5) / 10.0 ! else: ! points = 0.1 ! # This will always happen if we are above the skillcap ! # But if we have some skills set to lower, they ! # are lowered even if we are below the skillcap ! if totalskill / totalcap >= random(): ! for i in range(0, ALLSKILLS): ! if i != skill and char.skilllock[i] == 1 and char.skill[i] / 10.0 >= points: ! char.skill[i] -= int(points * 10) ! totalskill -= points ! if DEBUG_SKILLS == 1: ! char.log(LOG_TRACE, 'Character [%x] lost %0.01f%% of %s [%02.01f%%].\n' % (char.serial, points, SKILLS[i][SKILL_NAME], char.skill[i] / 10.0)) ! if char.socket: ! char.socket.updateskill(i) ! break ! # We can only gain in this skill if we are still below ! # the total skill cap. Atrophy has been taken care of ! # in the if before this. ! if totalskill + points <= totalcap: ! char.skill[skill] += int(points * 10) ! totalskill += points ! if DEBUG_SKILLS == 1: ! char.log(LOG_TRACE, 'Character [%x] gained %0.01f%% of %s [%02.01f%%].\n' % (char.serial, points, info[SKILL_NAME], char.skill[skill] / 10.0)) ! if char.socket: ! char.socket.updateskill(skill) ! # It's not important that we actually gained the skill ! # in order to gain stats by using it. ! if lock == 0: ! strchance = info[SKILL_STRCHANCE] ! dexchance = info[SKILL_DEXCHANCE] ! intchance = info[SKILL_INTCHANCE] ! realstr = char.strength - char.strength2 ! realdex = char.dexterity - char.dexterity2 ! realint = char.intelligence - char.intelligence2 ! if (char.npc or char.strengthlock == 0) or realstr >= char.strengthcap: ! strchance = 0.0 ! else: ! strchance /= 33.3 ! if (char.npc or char.dexteritylock == 0) or realdex >= char.dexteritycap: ! dexchance = 0.0 ! else: ! dexchance /= 33.3 ! if (char.npc or char.intelligencelock == 0) or realint >= char.intelligencecap: ! intchance = 0.0 ! else: ! intchance /= 33.3 ! if strchance > random(): ! gainstat(char, 0) ! elif dexchance > random(): ! gainstat(char, 1) ! elif intchance > random(): ! gainstat(char, 2) # *************** *** 179,243 **** # def onSkillGain(char, skill, lower, higher, success): ! # See if we can gain at all ! # GMs don't gain skills ! if char.dead or char.gm or char.polymorph: ! return ! if not SKILLS.has_key(skill): ! char.log(LOG_ERROR, "Is using an unidentified skill: %u\n" % skill) ! return ! info = SKILLS[skill] ! skills = char.skill ! value = skills[skill] / 10.0 # Convert into float ! lower /= 10.0 ! higher /= 10.0 ! # NPCs only learn by using skills ! # they already have ! if char.npc and value <= 0.0: ! return ! # No gain for effortless or futile attempts ! if value < lower or value >= higher: ! return ! chance = (value - lower) / (higher - lower) ! cap = char.skillcap[skill] / 10.0 ! # Skills capped at zero are disabled for this character ! if cap == 0: ! return ! totalskills = 0.0 ! for i in range(0, ALLSKILLS): ! totalskills += skills[i] / 10.0 ! # Calculate the GainChance ! # (RunUO has a nice approach. Doing it similar) ! totalcap = settings.getnumber("General", "SkillCap", 700) ! gainchance = (totalcap - totalskills) / totalcap # How near are we to our global skill cap ! gainchance += (cap - value) / cap # How near are we to our skill cap ! # Use the difficulty to influence the skill gain ! if success: ! gainchance += 0.5 - chance * 0.5 ! else: ! gainchance += 0.2 - chance * 0.2 ! gainchance /= 3.0 # The average of the three values ! # Introduce a new "Gain Factor" ! # There is also a 1% minimum chance for gain ! gainchance = max(0.01, gainchance * info[SKILL_GAINFACTOR]) ! # Tamed creatures get a * 2 bonus for their gain. ! if char.npc and char.tamed: ! gainchance *= 2 ! # Skills below 10% always gain, otherwise take the gainchance into ! # account. ! if gainchance >= random() or value < 10.0: ! gainskill(char, skill, totalskills, totalcap) # --- 179,243 ---- # def onSkillGain(char, skill, lower, higher, success): ! # See if we can gain at all ! # GMs don't gain skills ! if char.dead or char.gm or char.polymorph: ! return ! if not SKILLS.has_key(skill): ! char.log(LOG_ERROR, "Is using an unidentified skill: %u\n" % skill) ! return ! info = SKILLS[skill] ! skills = char.skill ! value = skills[skill] / 10.0 # Convert into float ! lower /= 10.0 ! higher /= 10.0 ! # NPCs only learn by using skills ! # they already have ! if char.npc and value <= 0.0: ! return ! # No gain for effortless or futile attempts ! if value < lower or value >= higher: ! return ! chance = (value - lower) / (higher - lower) ! cap = char.skillcap[skill] / 10.0 ! # Skills capped at zero are disabled for this character ! if cap == 0: ! return ! totalskills = 0.0 ! for i in range(0, ALLSKILLS): ! totalskills += skills[i] / 10.0 ! # Calculate the GainChance ! # (RunUO has a nice approach. Doing it similar) ! totalcap = settings.getnumber("General", "SkillCap", 700) ! gainchance = (totalcap - totalskills) / totalcap # How near are we to our global skill cap ! gainchance += (cap - value) / cap # How near are we to our skill cap ! # Use the difficulty to influence the skill gain ! if success: ! gainchance += 0.5 - chance * 0.5 ! else: ! gainchance += 0.2 - chance * 0.2 ! gainchance /= 3.0 # The average of the three values ! # Introduce a new "Gain Factor" ! # There is also a 1% minimum chance for gain ! gainchance = max(0.01, gainchance * info[SKILL_GAINFACTOR]) ! # Tamed creatures get a * 2 bonus for their gain. ! if char.npc and char.tamed: ! gainchance *= 2 ! # Skills below 10% always gain, otherwise take the gainchance into ! # account. ! if gainchance >= random() or value < 10.0: ! gainskill(char, skill, totalskills, totalcap) # *************** *** 245,277 **** # def onLoad(): ! wolfpack.registerglobal(EVENT_SKILLGAIN, "system.skillgain") ! # Load all the neccesary data from the definitions ! for i in range(0, ALLSKILLS): ! skilldef = wolfpack.getdefinition(WPDT_SKILL, str(i)) ! # Load the skill information ! if skilldef: ! SKILLS[i] = { ! SKILL_GAINFACTOR: 1.0, ! SKILL_STRCHANCE: 0.0, ! SKILL_DEXCHANCE: 0.0, ! SKILL_INTCHANCE: 0.0 ! } ! for j in range(0, skilldef.childcount): ! child = skilldef.getchild(j) ! if child.name == 'name': ! SKILLS[i][SKILL_NAME] = child.value ! elif child.name == 'title': ! SKILLS[i][SKILL_TITLE] = child.value ! elif child.name == 'defname': ! SKILLS[i][SKILL_DEFNAME] = child.value ! elif child.name == 'gainfactor': ! SKILLS[i][SKILL_GAINFACTOR] = float(child.value) ! elif child.name == 'strchance': ! SKILLS[i][SKILL_STRCHANCE] = float(child.value) ! elif child.name == 'dexchance': ! SKILLS[i][SKILL_DEXCHANCE] = float(child.value) ! elif child.name == 'intchance': ! SKILLS[i][SKILL_INTCHANCE] = float(child.value) --- 245,277 ---- # def onLoad(): ! wolfpack.registerglobal(EVENT_SKILLGAIN, "system.skillgain") ! # Load all the neccesary data from the definitions ! for i in range(0, ALLSKILLS): ! skilldef = wolfpack.getdefinition(WPDT_SKILL, str(i)) ! # Load the skill information ! if skilldef: ! SKILLS[i] = { ! SKILL_GAINFACTOR: 1.0, ! SKILL_STRCHANCE: 0.0, ! SKILL_DEXCHANCE: 0.0, ! SKILL_INTCHANCE: 0.0 ! } ! for j in range(0, skilldef.childcount): ! child = skilldef.getchild(j) ! if child.name == 'name': ! SKILLS[i][SKILL_NAME] = child.value ! elif child.name == 'title': ! SKILLS[i][SKILL_TITLE] = child.value ! elif child.name == 'defname': ! SKILLS[i][SKILL_DEFNAME] = child.value ! elif child.name == 'gainfactor': ! SKILLS[i][SKILL_GAINFACTOR] = float(child.value) ! elif child.name == 'strchance': ! SKILLS[i][SKILL_STRCHANCE] = float(child.value) ! elif child.name == 'dexchance': ! SKILLS[i][SKILL_DEXCHANCE] = float(child.value) ! elif child.name == 'intchance': ! SKILLS[i][SKILL_INTCHANCE] = float(child.value) |
From: Sebastian H. <dar...@us...> - 2004-09-26 14:42:52
|
Update of /cvsroot/wpdev/xmlscripts/documentation/webroot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32123/webroot Modified Files: ChangeLog.wolfpack Log Message: Update for onAttach Index: ChangeLog.wolfpack =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/documentation/webroot/ChangeLog.wolfpack,v retrieving revision 1.117 retrieving revision 1.118 diff -C2 -d -r1.117 -r1.118 *** ChangeLog.wolfpack 26 Sep 2004 12:11:11 -0000 1.117 --- ChangeLog.wolfpack 26 Sep 2004 14:42:41 -0000 1.118 *************** *** 61,65 **** - Fixed a bug with canceling a magery target not canceling the spell. - Fixed a bug where the send command didn't resend the world to the target. ! - Fix for the info command. - Exploit fix for ore smelting. Unlimited mining skill checks. * Misc. Changes: --- 61,65 ---- - Fixed a bug with canceling a magery target not canceling the spell. - Fixed a bug where the send command didn't resend the world to the target. ! - Fixed bug #0000314. (Fix for the info command) - Exploit fix for ore smelting. Unlimited mining skill checks. * Misc. Changes: |
From: Sebastian H. <dar...@us...> - 2004-09-26 14:41:46
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31688 Modified Files: ChangeLog uobject.cpp Log Message: Update for onAttach Index: uobject.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/uobject.cpp,v retrieving revision 1.186 retrieving revision 1.187 diff -C2 -d -r1.186 -r1.187 *** uobject.cpp 21 Sep 2004 07:44:25 -0000 1.186 --- uobject.cpp 26 Sep 2004 14:41:22 -0000 1.187 *************** *** 1079,1082 **** --- 1079,1088 ---- } } + + if (scriptChain && cPythonScript::canChainHandleEvent(EVENT_ATTACH, scriptChain)) { + PyObject* args = Py_BuildValue("(N)", getPyObject()); + cPythonScript::callChainedEventHandler(EVENT_ATTACH, scriptChain, args); + Py_DECREF(args); + } } Index: ChangeLog =================================================================== RCS file: /cvsroot/wpdev/wolfpack/ChangeLog,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** ChangeLog 25 Sep 2004 22:57:08 -0000 1.79 --- ChangeLog 26 Sep 2004 14:41:22 -0000 1.80 *************** *** 58,61 **** --- 58,62 ---- - Added translation support to Python scripts. - Fixed stablemaster speech handling ( Stablemasters are also vendors ) + - Fixed bug #0000326. (onAttach not being called on startup) Wolfpack 12.9.10 Beta (10. September 2004) |
From: Sebastian H. <dar...@us...> - 2004-09-26 13:18:24
|
Update of /cvsroot/wpdev/wolfpack/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12314/languages Modified Files: wolfpack_de.ts Log Message: Made NPC titles translatable for other languages with different articles for different genders. Index: wolfpack_de.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_de.ts,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** wolfpack_de.ts 26 Sep 2004 12:52:48 -0000 1.4 --- wolfpack_de.ts 26 Sep 2004 13:18:11 -0000 1.5 *************** *** 585,709 **** <message> <source>the Architect</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Armorer</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Artist</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Baker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Banker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Hairstylist</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Bard</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Blacksmith</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Bowyer</source> ! <translation type="unfinished"></translation> </message> <message> <source>the butcher</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Carpenter</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Cobbler</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Cook</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Fisherlady</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Healer</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Herbalist</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Innkeeper</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Jeweler</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Leatherworker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Mage</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Provisioner</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Shipwright</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Spinner</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Stablemaster</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tailor</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tanner</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tavernkeeper</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tinker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Veterinarian</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Weaponsmith</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Weaver</source> ! <translation type="unfinished"></translation> </message> </context> --- 585,709 ---- <message> <source>the Architect</source> ! <translation>die Architektin</translation> </message> <message> <source>the Armorer</source> ! <translation>die Waffenschmiedin</translation> </message> <message> <source>the Artist</source> ! <translation>die Künstlerin</translation> </message> <message> <source>the Baker</source> ! <translation>die Bäckerin</translation> </message> <message> <source>the Banker</source> ! <translation>die Bankierin</translation> </message> <message> <source>the Hairstylist</source> ! <translation>die Frieseuse</translation> </message> <message> <source>the Bard</source> ! <translation>die Bardin</translation> </message> <message> <source>the Blacksmith</source> ! <translation>die Schmiedin</translation> </message> <message> <source>the Bowyer</source> ! <translation>die Bogenmacherin</translation> </message> <message> <source>the butcher</source> ! <translation>die Metzgerin</translation> </message> <message> <source>the Carpenter</source> ! <translation>die Schreinerin</translation> </message> <message> <source>the Cobbler</source> ! <translation>die Schusterin</translation> </message> <message> <source>the Cook</source> ! <translation>die Köchin</translation> </message> <message> <source>the Fisherlady</source> ! <translation>die Fischerin</translation> </message> <message> <source>the Healer</source> ! <translation>die Heilerin</translation> </message> <message> <source>the Herbalist</source> ! <translation>die Kräuterfrau</translation> </message> <message> <source>the Innkeeper</source> ! <translation>die Gastwirtin</translation> </message> <message> <source>the Jeweler</source> ! <translation>die Juwelierin</translation> </message> <message> <source>the Leatherworker</source> ! <translation>die Lederarbeiterin</translation> </message> <message> <source>the Mage</source> ! <translation>die Magierin</translation> </message> <message> <source>the Provisioner</source> ! <translation>die Feinkosthänderlin</translation> </message> <message> <source>the Shipwright</source> ! <translation>die Schiffszimmerfrau</translation> </message> <message> <source>the Spinner</source> ! <translation>die Spinnerin</translation> </message> <message> <source>the Stablemaster</source> ! <translation>die Stallmeisterin</translation> </message> <message> <source>the Tailor</source> ! <translation>die Schneiderin</translation> </message> <message> <source>the Tanner</source> ! <translation>die Gerberin</translation> </message> <message> <source>the Tavernkeeper</source> ! <translation>die Wirtin</translation> </message> <message> <source>the Tinker</source> ! <translation>die Bastlerin</translation> </message> <message> <source>the Veterinarian</source> ! <translation>die Tierpflegerin</translation> </message> <message> <source>the Weaponsmith</source> ! <translation>die Waffenschmiedin</translation> </message> <message> <source>the Weaver</source> ! <translation>die Weberin</translation> </message> </context> *************** *** 716,840 **** <message> <source>the Architect</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Armorer</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Artist</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Baker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Banker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Hairstylist</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Bard</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Blacksmith</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Bowyer</source> ! <translation type="unfinished"></translation> </message> <message> <source>the butcher</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Carpenter</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Cobbler</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Cook</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Fisherman</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Healer</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Herbalist</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Innkeeper</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Jeweler</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Leatherworker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Mage</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Provisioner</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Shipwright</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Spinner</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Stablemaster</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tailor</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tanner</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tavernkeeper</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Tinker</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Veterinarian</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Weaponsmith</source> ! <translation type="unfinished"></translation> </message> <message> <source>the Weaver</source> ! <translation type="unfinished"></translation> </message> </context> --- 716,840 ---- <message> <source>the Architect</source> ! <translation>der Architekt</translation> </message> <message> <source>the Armorer</source> ! <translation>der Rüstungsschmied</translation> </message> <message> <source>the Artist</source> ! <translation>der Künstler</translation> </message> <message> <source>the Baker</source> ! <translation>der Bäcker</translation> </message> <message> <source>the Banker</source> ! <translation>der Bankier</translation> </message> <message> <source>the Hairstylist</source> ! <translation>der Friseur</translation> </message> <message> <source>the Bard</source> ! <translation>der Barde</translation> </message> <message> <source>the Blacksmith</source> ! <translation>der Schmied</translation> </message> <message> <source>the Bowyer</source> ! <translation>der Bogenmacher</translation> </message> <message> <source>the butcher</source> ! <translation>der Metzger</translation> </message> <message> <source>the Carpenter</source> ! <translation>der Schreiner</translation> </message> <message> <source>the Cobbler</source> ! <translation>der Schuster</translation> </message> <message> <source>the Cook</source> ! <translation>der Koch</translation> </message> <message> <source>the Fisherman</source> ! <translation>der Fischer</translation> </message> <message> <source>the Healer</source> ! <translation>der Heiler</translation> </message> <message> <source>the Herbalist</source> ! <translation>der Kräutermann</translation> </message> <message> <source>the Innkeeper</source> ! <translation>der Gastwirt</translation> </message> <message> <source>the Jeweler</source> ! <translation>der Juwelier</translation> </message> <message> <source>the Leatherworker</source> ! <translation>der Lederarbeiter</translation> </message> <message> <source>the Mage</source> ! <translation>der Magier</translation> </message> <message> <source>the Provisioner</source> ! <translation>der Feinkosthändler</translation> </message> <message> <source>the Shipwright</source> ! <translation>der Schiffszimmermann</translation> </message> <message> <source>the Spinner</source> ! <translation>der Spinner</translation> </message> <message> <source>the Stablemaster</source> ! <translation>der Stallmeister</translation> </message> <message> <source>the Tailor</source> ! <translation>der Schneider</translation> </message> <message> <source>the Tanner</source> ! <translation>der Gerber</translation> </message> <message> <source>the Tavernkeeper</source> ! <translation>der Wirt</translation> </message> <message> <source>the Tinker</source> ! <translation>der Bastler</translation> </message> <message> <source>the Veterinarian</source> ! <translation>der Tierpfleger</translation> </message> <message> <source>the Weaponsmith</source> ! <translation>der Waffenschmied</translation> </message> <message> <source>the Weaver</source> ! <translation>der Weber</translation> </message> </context> *************** *** 1216,1224 **** </message> <message> ! <source> <byte value="x9"/>Lady %1<byte value="x9"/>%2</source> <translation type="unfinished"></translation> </message> <message> ! <source> <byte value="x9"/>Lord %1<byte value="x9"/>%2</source> <translation type="unfinished"></translation> </message> --- 1216,1224 ---- </message> <message> ! <source><byte value="x9"/>Lady %1<byte value="x9"/>%2</source> <translation type="unfinished"></translation> </message> <message> ! <source><byte value="x9"/>Lord %1<byte value="x9"/>%2</source> <translation type="unfinished"></translation> </message> |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:52:57
|
Update of /cvsroot/wpdev/wolfpack/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6823/languages Modified Files: wolfpack_de.ts wolfpack_es.ts wolfpack_fr.ts wolfpack_ge.ts wolfpack_it.ts wolfpack_nl.ts Log Message: Made NPC titles translatable for other languages with different articles for different genders. Index: wolfpack_it.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_it.ts,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** wolfpack_it.ts 26 Sep 2004 12:45:53 -0000 1.8 --- wolfpack_it.ts 26 Sep 2004 12:52:48 -0000 1.9 *************** *** 250,381 **** </message> <message> - <source>the Architect</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Armorer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Artist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Baker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Banker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Hairstylist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bard</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Blacksmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bowyer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the butcher</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Carpenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cobbler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cook</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherman</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherlady</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Healer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Herbalist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Innkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Jeweler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Leatherworker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Mage</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Provisioner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Shipwright</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Spinner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Stablemaster</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tailor</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tanner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tavernkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tinker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Veterinarian</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaponsmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaver</source> - <translation type="unfinished"></translation> - </message> - <message> <source>the piper</source> <translation type="unfinished"></translation> --- 250,253 ---- *************** *** 551,557 **** </context> <context> - <name>@definitions</name> - </context> - <context> <name>AbstractAI</name> <message> --- 423,426 ---- *************** *** 713,716 **** --- 582,709 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 720,723 **** --- 713,840 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_es.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_es.ts,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** wolfpack_es.ts 26 Sep 2004 12:45:53 -0000 1.2 --- wolfpack_es.ts 26 Sep 2004 12:52:48 -0000 1.3 *************** *** 250,381 **** </message> <message> - <source>the Architect</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Armorer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Artist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Baker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Banker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Hairstylist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bard</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Blacksmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bowyer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the butcher</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Carpenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cobbler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cook</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherman</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherlady</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Healer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Herbalist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Innkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Jeweler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Leatherworker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Mage</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Provisioner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Shipwright</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Spinner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Stablemaster</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tailor</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tanner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tavernkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tinker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Veterinarian</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaponsmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaver</source> - <translation type="unfinished"></translation> - </message> - <message> <source>the piper</source> <translation type="unfinished"></translation> --- 250,253 ---- *************** *** 551,557 **** </context> <context> - <name>@definitions</name> - </context> - <context> <name>AbstractAI</name> <message> --- 423,426 ---- *************** *** 713,716 **** --- 582,709 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 720,723 **** --- 713,840 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_nl.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_nl.ts,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** wolfpack_nl.ts 26 Sep 2004 12:45:54 -0000 1.8 --- wolfpack_nl.ts 26 Sep 2004 12:52:48 -0000 1.9 *************** *** 250,381 **** </message> <message> - <source>the Architect</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Armorer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Artist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Baker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Banker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Hairstylist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bard</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Blacksmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bowyer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the butcher</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Carpenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cobbler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cook</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherman</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherlady</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Healer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Herbalist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Innkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Jeweler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Leatherworker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Mage</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Provisioner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Shipwright</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Spinner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Stablemaster</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tailor</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tanner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tavernkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tinker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Veterinarian</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaponsmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaver</source> - <translation type="unfinished"></translation> - </message> - <message> <source>the piper</source> <translation type="unfinished"></translation> --- 250,253 ---- *************** *** 551,557 **** </context> <context> - <name>@definitions</name> - </context> - <context> <name>AbstractAI</name> <message> --- 423,426 ---- *************** *** 713,716 **** --- 582,709 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 720,723 **** --- 713,840 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_ge.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_ge.ts,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** wolfpack_ge.ts 26 Sep 2004 12:45:53 -0000 1.2 --- wolfpack_ge.ts 26 Sep 2004 12:52:48 -0000 1.3 *************** *** 250,381 **** </message> <message> - <source>the Architect</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Armorer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Artist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Baker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Banker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Hairstylist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bard</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Blacksmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bowyer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the butcher</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Carpenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cobbler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cook</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherman</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherlady</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Healer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Herbalist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Innkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Jeweler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Leatherworker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Mage</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Provisioner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Shipwright</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Spinner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Stablemaster</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tailor</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tanner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tavernkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tinker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Veterinarian</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaponsmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaver</source> - <translation type="unfinished"></translation> - </message> - <message> <source>the piper</source> <translation type="unfinished"></translation> --- 250,253 ---- *************** *** 551,557 **** </context> <context> - <name>@definitions</name> - </context> - <context> <name>AbstractAI</name> <message> --- 423,426 ---- *************** *** 713,716 **** --- 582,709 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 720,723 **** --- 713,840 ---- <translation type="unfinished"></translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_de.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_de.ts,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** wolfpack_de.ts 26 Sep 2004 12:45:53 -0000 1.3 --- wolfpack_de.ts 26 Sep 2004 12:52:48 -0000 1.4 *************** *** 251,382 **** </message> <message> - <source>the Architect</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Armorer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Artist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Baker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Banker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Hairstylist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bard</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Blacksmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Bowyer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the butcher</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Carpenter</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cobbler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Cook</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherman</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Fisherlady</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Healer</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Herbalist</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Innkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Jeweler</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Leatherworker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Mage</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Provisioner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Shipwright</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Spinner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Stablemaster</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tailor</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tanner</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tavernkeeper</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Tinker</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Veterinarian</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaponsmith</source> - <translation type="unfinished"></translation> - </message> - <message> - <source>the Weaver</source> - <translation type="unfinished"></translation> - </message> - <message> <source>the piper</source> <translation type="unfinished"></translation> --- 251,254 ---- *************** *** 711,714 **** --- 583,710 ---- <translation>die Alchemistin</translation> </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> +... [truncated message content] |
Update of /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6705/npcs/humans/vendors Modified Files: alchemist.xml architect.xml armorer.xml artist.xml baker.xml banker.xml barber.xml bard.xml blacksmith.xml bowyer.xml butcher.xml carpenter.xml cobbler.xml cook.xml fishermen.xml healer.xml herbalist.xml innkeeper.xml jeweler.xml leatherworker.xml mage.xml provisioner.xml shipwright.xml spinner.xml stablemaster.xml tailor.xml tanner.xml tavernkeeper.xml tinker.xml veterinarian.xml weaponsmith.xml weaver.xml Log Message: Made NPC titles translatable for other languages with different articles for different genders. Index: tinker.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/tinker.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tinker.xml 10 Sep 2004 20:17:35 -0000 1.4 --- tinker.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 59,63 **** <npc id="tinker_male"> <inherit>vendor_male</inherit> ! <title>the Tinker</title> <lockpicking><random min="600" max="830"/></lockpicking> <removetraps><random min="750" max="980"/></removetraps> --- 59,63 ---- <npc id="tinker_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Tinker</title> <lockpicking><random min="600" max="830"/></lockpicking> <removetraps><random min="750" max="980"/></removetraps> *************** *** 70,74 **** <npc id="tinker_female"> <inherit>vendor_female</inherit> ! <title>the Tinker</title> <lockpicking><random min="600" max="830"/></lockpicking> <removetraps><random min="750" max="980"/></removetraps> --- 70,74 ---- <npc id="tinker_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Tinker</title> <lockpicking><random min="600" max="830"/></lockpicking> <removetraps><random min="750" max="980"/></removetraps> Index: weaver.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/weaver.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** weaver.xml 10 Sep 2004 17:08:26 -0000 1.4 --- weaver.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 25,29 **** <npc id="weaver_male"> <inherit>vendor_male</inherit> ! <title>the Weaver</title> <tailoring><random min="650" max="880" /></tailoring> <category>Vendors\Weaver (Male)</category> --- 25,29 ---- <npc id="weaver_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Weaver</title> <tailoring><random min="650" max="880" /></tailoring> <category>Vendors\Weaver (Male)</category> *************** *** 33,37 **** <npc id="weaver_female"> <inherit>vendor_female</inherit> ! <title>the Weaver</title> <tailoring><random min="650" max="880" /></tailoring> <category>Vendors\Weaver (Female)</category> --- 33,37 ---- <npc id="weaver_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Weaver</title> <tailoring><random min="650" max="880" /></tailoring> <category>Vendors\Weaver (Female)</category> Index: carpenter.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/carpenter.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** carpenter.xml 26 Feb 2004 02:33:46 -0000 1.5 --- carpenter.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 12,16 **** <npc id="carpenter_male"> <inherit>vendor_male</inherit> ! <title>the Carpenter</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 12,16 ---- <npc id="carpenter_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Carpenter</title> <equipped> <item id="153b" /> <!-- Half Apron --> *************** *** 83,87 **** <npc id="carpenter_female"> <inherit>vendor_female</inherit> ! <title>the Carpenter</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 83,87 ---- <npc id="carpenter_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Carpenter</title> <equipped> <item id="153b" /> <!-- Half Apron --> Index: veterinarian.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/veterinarian.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** veterinarian.xml 10 Sep 2004 17:08:26 -0000 1.4 --- veterinarian.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 23,27 **** <npc id="veterinarian_male"> <inherit>vendor_male</inherit> ! <title>the Veterinarian</title> <veterinary><random min="900" max="1000"/></veterinary> <animallore><random min="850" max="1000"/></animallore> --- 23,27 ---- <npc id="veterinarian_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Veterinarian</title> <veterinary><random min="900" max="1000"/></veterinary> <animallore><random min="850" max="1000"/></animallore> *************** *** 32,36 **** <npc id="veterinarian_female"> <inherit>vendor_female</inherit> ! <title>the Veterinarian</title> <veterinary><random min="900" max="1000"/></veterinary> <animallore><random min="850" max="1000"/></animallore> --- 32,36 ---- <npc id="veterinarian_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Veterinarian</title> <veterinary><random min="900" max="1000"/></veterinary> <animallore><random min="850" max="1000"/></animallore> Index: banker.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/banker.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** banker.xml 9 Sep 2004 03:19:38 -0000 1.9 --- banker.xml 26 Sep 2004 12:52:23 -0000 1.10 *************** *** 15,19 **** <bindmenu>banker_menu,vendor_menu</bindmenu> <invulnerable /> ! <title>the Banker</title> <basescript>speech.banker</basescript> <equipped> --- 15,19 ---- <bindmenu>banker_menu,vendor_menu</bindmenu> <invulnerable /> ! <title context="Vendor Male Titles">the Banker</title> <basescript>speech.banker</basescript> <equipped> *************** *** 36,40 **** <bindmenu>banker_menu,vendor_menu</bindmenu> <invulnerable /> ! <title>the Banker</title> <basescript>speech.banker</basescript> <equipped> --- 36,40 ---- <bindmenu>banker_menu,vendor_menu</bindmenu> <invulnerable /> ! <title context="Vendor Female Titles">the Banker</title> <basescript>speech.banker</basescript> <equipped> Index: stablemaster.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/stablemaster.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** stablemaster.xml 4 Sep 2004 18:59:20 -0000 1.4 --- stablemaster.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 41,45 **** <npc id="stablemaster_male"> <inherit>vendor_male</inherit> ! <title>the Stablemaster</title> <animallore><random min="640" max="1000"/></animallore> <animaltaming><random min="900" max="1000"/></animaltaming> --- 41,45 ---- <npc id="stablemaster_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Stablemaster</title> <animallore><random min="640" max="1000"/></animallore> <animaltaming><random min="900" max="1000"/></animaltaming> *************** *** 51,55 **** <npc id="stablemaster_female"> <inherit>vendor_female</inherit> ! <title>the Stablemaster</title> <animallore><random min="640" max="1000"/></animallore> <animaltaming><random min="900" max="1000"/></animaltaming> --- 51,55 ---- <npc id="stablemaster_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Stablemaster</title> <animallore><random min="640" max="1000"/></animallore> <animaltaming><random min="900" max="1000"/></animaltaming> Index: mage.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/mage.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** mage.xml 25 Sep 2004 15:36:50 -0000 1.7 --- mage.xml 26 Sep 2004 12:52:23 -0000 1.8 *************** *** 224,228 **** <npc id="mage_male"> <inherit>vendor_male</inherit> ! <title>the Mage</title> <!-- The Equipment --> <equipped> --- 224,228 ---- <npc id="mage_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Mage</title> <!-- The Equipment --> <equipped> *************** *** 243,247 **** <npc id="mage_female"> <inherit>vendor_female</inherit> ! <title>the Mage</title> <equipped> <item id="1f03" > <!-- Robe --> --- 243,247 ---- <npc id="mage_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Mage</title> <equipped> <item id="1f03" > <!-- Robe --> Index: healer.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/healer.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** healer.xml 12 Aug 2004 00:57:13 -0000 1.4 --- healer.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 13,17 **** <inherit>vendor_male</inherit> <bindmenu>vendor_menu,train_menu,healer_menu</bindmenu> ! <title>the Healer</title> <shopkeeper> <restockable> --- 13,17 ---- <inherit>vendor_male</inherit> <bindmenu>vendor_menu,train_menu,healer_menu</bindmenu> ! <title context="Vendor Male Titles">the Healer</title> <shopkeeper> <restockable> *************** *** 56,60 **** <npc id="healer_female"> <inherit>vendor_female</inherit> ! <title>the Healer</title> <bindmenu>vendor_menu,train_menu,healer_menu</bindmenu> <shopkeeper> --- 56,60 ---- <npc id="healer_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Healer</title> <bindmenu>vendor_menu,train_menu,healer_menu</bindmenu> <shopkeeper> Index: tailor.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/tailor.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** tailor.xml 22 Sep 2004 06:11:01 -0000 1.5 --- tailor.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 98,102 **** <npc id="tailor_male"> <inherit>vendor_male</inherit> ! <title>the Tailor</title> <inherit id="tailor_inventory" /> --- 98,102 ---- <npc id="tailor_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Tailor</title> <inherit id="tailor_inventory" /> *************** *** 107,111 **** <npc id="tailor_female"> <inherit>vendor_female</inherit> ! <title>the Tailor</title> <inherit id="tailor_inventory" /> --- 107,111 ---- <npc id="tailor_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Tailor</title> <inherit id="tailor_inventory" /> Index: provisioner.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/provisioner.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** provisioner.xml 10 Sep 2004 20:17:35 -0000 1.4 --- provisioner.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 52,56 **** <npc id="provisioner_male"> <inherit>vendor_male</inherit> ! <title>the Provisioner</title> <camping><random min="450" max="680" /></camping> <tactics><random min="450" max="680" /></tactics> --- 52,56 ---- <npc id="provisioner_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Provisioner</title> <camping><random min="450" max="680" /></camping> <tactics><random min="450" max="680" /></tactics> *************** *** 61,65 **** <npc id="provisioner_female"> <inherit>vendor_female</inherit> ! <title>the Provisioner</title> <camping><random min="450" max="680" /></camping> <tactics><random min="450" max="680" /></tactics> --- 61,65 ---- <npc id="provisioner_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Provisioner</title> <camping><random min="450" max="680" /></camping> <tactics><random min="450" max="680" /></tactics> Index: butcher.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/butcher.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** butcher.xml 26 Feb 2004 02:33:46 -0000 1.5 --- butcher.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 12,16 **** <npc id="butcher_male"> <inherit>vendor_male</inherit> ! <title>the butcher</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 12,16 ---- <npc id="butcher_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the butcher</title> <equipped> <item id="153b" /> <!-- Half Apron --> *************** *** 47,51 **** <npc id="butcher_female"> <inherit>vendor_female</inherit> ! <title>the butcher</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 47,51 ---- <npc id="butcher_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the butcher</title> <equipped> <item id="153b" /> <!-- Half Apron --> Index: tavernkeeper.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/tavernkeeper.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tavernkeeper.xml 10 Sep 2004 20:17:35 -0000 1.4 --- tavernkeeper.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 37,41 **** <npc id="tavernkeeper_male"> <inherit>vendor_male</inherit> ! <title>the Tavernkeeper</title> <equipped> <item id="153b" > <!-- Half Apron --> --- 37,41 ---- <npc id="tavernkeeper_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Tavernkeeper</title> <equipped> <item id="153b" > <!-- Half Apron --> *************** *** 49,53 **** <npc id="tavernkeeper_female"> <inherit>vendor_female</inherit> ! <title>the Tavernkeeper</title> <equipped> <item id="153b" > <!-- Half Apron --> --- 49,53 ---- <npc id="tavernkeeper_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Tavernkeeper</title> <equipped> <item id="153b" > <!-- Half Apron --> Index: shipwright.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/shipwright.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** shipwright.xml 26 Feb 2004 02:33:46 -0000 1.4 --- shipwright.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 12,16 **** <npc id="shipwright_male"> <inherit>vendor_male</inherit> ! <title>the Shipwright</title> <equipped> <item id="13e3" /> <!-- Smith's Hammer --> --- 12,16 ---- <npc id="shipwright_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Shipwright</title> <equipped> <item id="13e3" /> <!-- Smith's Hammer --> *************** *** 29,33 **** <npc id="shipwright_female"> <inherit>vendor_female</inherit> ! <title>the Shipwright</title> <equipped> <item id="13e3" /> <!-- Smith's Hammer --> --- 29,33 ---- <npc id="shipwright_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Shipwright</title> <equipped> <item id="13e3" /> <!-- Smith's Hammer --> Index: innkeeper.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/innkeeper.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** innkeeper.xml 4 Feb 2004 03:04:09 -0000 1.3 --- innkeeper.xml 26 Sep 2004 12:52:23 -0000 1.4 *************** *** 12,16 **** <npc id="innkeeper_male"> <inherit>vendor_male</inherit> ! <title>the Innkeeper</title> <shopkeeper> <restockable> --- 12,16 ---- <npc id="innkeeper_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Innkeeper</title> <shopkeeper> <restockable> *************** *** 82,86 **** <npc id="innkeeper_female"> <inherit>vendor_female</inherit> ! <title>the Innkeeper</title> <shopkeeper> <restockable> --- 82,86 ---- <npc id="innkeeper_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Innkeeper</title> <shopkeeper> <restockable> Index: spinner.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/spinner.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** spinner.xml 10 Sep 2004 20:17:35 -0000 1.3 --- spinner.xml 26 Sep 2004 12:52:23 -0000 1.4 *************** *** 12,16 **** <npc id="spinner_male"> <inherit>vendor_male</inherit> ! <title>the Spinner</title> <category>Vendors\Spinner (Male)</category> </npc> --- 12,16 ---- <npc id="spinner_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Spinner</title> <category>Vendors\Spinner (Male)</category> </npc> *************** *** 18,22 **** <npc id="spinner_female"> <inherit>vendor_female</inherit> ! <title>the Spinner</title> <category>Vendors\Spinner (Female)</category> </npc> --- 18,22 ---- <npc id="spinner_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Spinner</title> <category>Vendors\Spinner (Female)</category> </npc> Index: leatherworker.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/leatherworker.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** leatherworker.xml 10 Sep 2004 20:17:35 -0000 1.3 --- leatherworker.xml 26 Sep 2004 12:52:23 -0000 1.4 *************** *** 20,24 **** <npc id="leatherworker_male"> <inherit>vendor_male</inherit> ! <title>the Leatherworker</title> <category>Vendors\Leatherworker (Male)</category> <inherit id="leatherworker_inventory" /> --- 20,24 ---- <npc id="leatherworker_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Leatherworker</title> <category>Vendors\Leatherworker (Male)</category> <inherit id="leatherworker_inventory" /> *************** *** 27,31 **** <npc id="leatherworker_female"> <inherit>vendor_female</inherit> ! <title>the Leatherworker</title> <category>Vendors\Leatherworker (Female)</category> <inherit id="leatherworker_inventory" /> --- 27,31 ---- <npc id="leatherworker_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Leatherworker</title> <category>Vendors\Leatherworker (Female)</category> <inherit id="leatherworker_inventory" /> Index: tanner.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/tanner.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tanner.xml 10 Sep 2004 20:17:35 -0000 1.4 --- tanner.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 42,46 **** <npc id="tanner_male"> <inherit>vendor_male</inherit> ! <title>the Tanner</title> <tailoring><random min="360" max="680"/></tailoring> <category>Vendors\Tanner (Male)</category> --- 42,46 ---- <npc id="tanner_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Tanner</title> <tailoring><random min="360" max="680"/></tailoring> <category>Vendors\Tanner (Male)</category> *************** *** 50,54 **** <npc id="tanner_female"> <inherit>vendor_female</inherit> ! <title>the Tanner</title> <tailoring><random min="360" max="680"/></tailoring> <category>Vendors\Tanner (Female)</category> --- 50,54 ---- <npc id="tanner_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Tanner</title> <tailoring><random min="360" max="680"/></tailoring> <category>Vendors\Tanner (Female)</category> Index: weaponsmith.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/weaponsmith.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** weaponsmith.xml 10 Sep 2004 17:08:26 -0000 1.5 --- weaponsmith.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 54,58 **** <npc id="weaponsmith_male"> <inherit>vendor_male</inherit> ! <title>the Weaponsmith</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 54,58 ---- <npc id="weaponsmith_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Weaponsmith</title> <equipped> <item id="153b" /> <!-- Half Apron --> *************** *** 70,74 **** <npc id="weaponsmith_female"> <inherit>vendor_female</inherit> ! <title>the Weaponsmith</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 70,74 ---- <npc id="weaponsmith_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Weaponsmith</title> <equipped> <item id="153b" /> <!-- Half Apron --> Index: fishermen.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/fishermen.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** fishermen.xml 26 Feb 2004 02:33:46 -0000 1.5 --- fishermen.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 12,16 **** <npc id="fisherman_male"> <inherit>vendor_male</inherit> ! <title>the Fisherman</title> <equipped> <item id="dbf" /> <!-- Fishing Pole --> --- 12,16 ---- <npc id="fisherman_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Fisherman</title> <equipped> <item id="dbf" /> <!-- Fishing Pole --> *************** *** 35,39 **** <npc id="fisherlady_female"> <inherit>vendor_female</inherit> ! <title>the Fisherlady</title> <equipped> <item id="dbf" /> <!-- Fishing Pole --> --- 35,39 ---- <npc id="fisherlady_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Fisherlady</title> <equipped> <item id="dbf" /> <!-- Fishing Pole --> Index: barber.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/barber.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** barber.xml 19 Sep 2004 01:42:06 -0000 1.7 --- barber.xml 26 Sep 2004 12:52:23 -0000 1.8 *************** *** 11,15 **** <npc id="barber_male"> <inherit>base_male</inherit> ! <title>the Hairstylist</title> <basescript>speech.barber</basescript> <category>Vendors\Barber (Male)</category> --- 11,15 ---- <npc id="barber_male"> <inherit>base_male</inherit> ! <title context="Vendor Male Titles">the Hairstylist</title> <basescript>speech.barber</basescript> <category>Vendors\Barber (Male)</category> *************** *** 19,23 **** <npc id="barber_female"> <inherit>base_female</inherit> ! <title>the Hairstylist</title> <basescript>speech.barber</basescript> <category>Vendors\Barber (Female)</category> --- 19,23 ---- <npc id="barber_female"> <inherit>base_female</inherit> ! <title context="Vendor Female Titles">the Hairstylist</title> <basescript>speech.barber</basescript> <category>Vendors\Barber (Female)</category> Index: cook.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/cook.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** cook.xml 26 Feb 2004 02:33:46 -0000 1.5 --- cook.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 12,16 **** <npc id="cook_male"> <inherit>vendor_male</inherit> ! <title>the Cook</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 12,16 ---- <npc id="cook_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Cook</title> <equipped> <item id="153b" /> <!-- Half Apron --> *************** *** 53,57 **** <npc id="cook_female"> <inherit>vendor_female</inherit> ! <title>the Cook</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 53,57 ---- <npc id="cook_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Cook</title> <equipped> <item id="153b" /> <!-- Half Apron --> Index: armorer.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/armorer.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** armorer.xml 26 Feb 2004 02:33:46 -0000 1.4 --- armorer.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 12,16 **** <npc id="armorer_male"> <inherit>vendor_male</inherit> ! <title>the Armorer</title> <!-- The Equipment --> <equipped> --- 12,16 ---- <npc id="armorer_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Armorer</title> <!-- The Equipment --> <equipped> *************** *** 121,125 **** <npc id="armorer_female"> <inherit>vendor_female</inherit> ! <title>the Armorer</title> <equipped> <item id="153b" > <!-- Half Apron --> --- 121,125 ---- <npc id="armorer_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Armorer</title> <equipped> <item id="153b" > <!-- Half Apron --> Index: jeweler.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/jeweler.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** jeweler.xml 3 Feb 2004 18:19:12 -0000 1.3 --- jeweler.xml 26 Sep 2004 12:52:23 -0000 1.4 *************** *** 12,16 **** <npc id="jeweler_male"> <inherit>vendor_male</inherit> ! <title>the Jeweler</title> <shopkeeper> <restockable> --- 12,16 ---- <npc id="jeweler_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Jeweler</title> <shopkeeper> <restockable> *************** *** 185,189 **** <npc id="jeweler_female"> <inherit>vendor_female</inherit> ! <title>the Jeweler</title> <shopkeeper> <restockable> --- 185,189 ---- <npc id="jeweler_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Jeweler</title> <shopkeeper> <restockable> Index: alchemist.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/alchemist.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** alchemist.xml 24 Sep 2004 11:06:52 -0000 1.6 --- alchemist.xml 26 Sep 2004 12:52:23 -0000 1.7 *************** *** 66,70 **** <npc id="alchemist_male"> <inherit>vendor_male</inherit> ! <title>the Alchemist</title> <!-- The Equipment --> <equipped> --- 66,70 ---- <npc id="alchemist_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Alchemist</title> <!-- The Equipment --> <equipped> *************** *** 81,85 **** <npc id="alchemist_female"> <inherit>vendor_female</inherit> ! <title>the Alchemist</title> <!-- The Equipment --> <equipped> --- 81,85 ---- <npc id="alchemist_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Alchemist</title> <!-- The Equipment --> <equipped> Index: bard.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/bard.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** bard.xml 4 Feb 2004 03:04:09 -0000 1.4 --- bard.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 12,16 **** <npc id="bard_male"> <inherit>vendor_male</inherit> ! <title>the Bard</title> <shopkeeper> <restockable> --- 12,16 ---- <npc id="bard_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Bard</title> <shopkeeper> <restockable> *************** *** 40,44 **** <npc id="bard_female"> <inherit>vendor_female</inherit> ! <title>the Bard</title> <shopkeeper> <restockable> --- 40,44 ---- <npc id="bard_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Bard</title> <shopkeeper> <restockable> Index: blacksmith.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/blacksmith.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** blacksmith.xml 9 May 2004 19:36:44 -0000 1.5 --- blacksmith.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 12,16 **** <npc id="blacksmith_male"> <inherit>vendor_male</inherit> ! <title>the Blacksmith</title> <equipped> <item id="153d" /> <!-- Full Apron --> --- 12,16 ---- <npc id="blacksmith_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Blacksmith</title> <equipped> <item id="153d" /> <!-- Full Apron --> *************** *** 160,164 **** <npc id="blacksmith_female"> <inherit>vendor_female</inherit> ! <title>the Blacksmith</title> <equipped> <item id="153d" /> <!-- Full Apron --> --- 160,164 ---- <npc id="blacksmith_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Blacksmith</title> <equipped> <item id="153d" /> <!-- Full Apron --> Index: artist.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/artist.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** artist.xml 2 Feb 2004 19:20:25 -0000 1.2 --- artist.xml 26 Sep 2004 12:52:23 -0000 1.3 *************** *** 12,16 **** <npc id="artist_male"> <inherit>vendor_male</inherit> ! <title>the Artist</title> <category>Vendors\Artist (Male)</category> </npc> --- 12,16 ---- <npc id="artist_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Artist</title> <category>Vendors\Artist (Male)</category> </npc> *************** *** 18,22 **** <npc id="artist_female"> <inherit>vendor_female</inherit> ! <title>the Artist</title> <category>Vendors\Artist (Female)</category> </npc> --- 18,22 ---- <npc id="artist_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Artist</title> <category>Vendors\Artist (Female)</category> </npc> Index: cobbler.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/cobbler.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** cobbler.xml 4 Feb 2004 03:04:09 -0000 1.4 --- cobbler.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 12,16 **** <npc id="cobbler_male"> <inherit>vendor_male</inherit> ! <title>the Cobbler</title> <shopkeeper> <restockable> --- 12,16 ---- <npc id="cobbler_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Cobbler</title> <shopkeeper> <restockable> *************** *** 33,37 **** <npc id="cobbler_female"> <inherit>vendor_female</inherit> ! <title>the Cobbler</title> <shopkeeper> <restockable> --- 33,37 ---- <npc id="cobbler_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Cobbler</title> <shopkeeper> <restockable> Index: bowyer.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/bowyer.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** bowyer.xml 26 Feb 2004 02:33:46 -0000 1.5 --- bowyer.xml 26 Sep 2004 12:52:23 -0000 1.6 *************** *** 12,16 **** <npc id="bowyer_male"> <inherit>vendor_male</inherit> ! <title>the Bowyer</title> <equipped> <item id="13b1" /> <!-- Bow --> --- 12,16 ---- <npc id="bowyer_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Bowyer</title> <equipped> <item id="13b1" /> <!-- Bow --> *************** *** 32,36 **** <npc id="bowyer_female"> <inherit>vendor_female</inherit> ! <title>the Bowyer</title> <equipped> <item id="13b1" /> <!-- Bow --> --- 32,36 ---- <npc id="bowyer_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Bowyer</title> <equipped> <item id="13b1" /> <!-- Bow --> Index: architect.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/architect.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** architect.xml 2 Feb 2004 19:20:25 -0000 1.2 --- architect.xml 26 Sep 2004 12:52:23 -0000 1.3 *************** *** 12,16 **** <npc id="architect_male"> <inherit>vendor_male</inherit> ! <title>the Architect</title> <shopkeeper> <restockable/> --- 12,16 ---- <npc id="architect_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Architect</title> <shopkeeper> <restockable/> *************** *** 21,25 **** <npc id="architect_female"> <inherit>vendor_female</inherit> ! <title>the Architect</title> <shopkeeper> <restockable/> --- 21,25 ---- <npc id="architect_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Architect</title> <shopkeeper> <restockable/> Index: herbalist.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/herbalist.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** herbalist.xml 3 Feb 2004 18:19:12 -0000 1.3 --- herbalist.xml 26 Sep 2004 12:52:23 -0000 1.4 *************** *** 12,16 **** <npc id="herbalist_male"> <inherit>vendor_male</inherit> ! <title>the Herbalist</title> <shopkeeper> <restockable> --- 12,16 ---- <npc id="herbalist_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Herbalist</title> <shopkeeper> <restockable> *************** *** 59,63 **** <npc id="herbalist_female"> <inherit>vendor_female</inherit> ! <title>the Herbalist</title> <shopkeeper> <restockable> --- 59,63 ---- <npc id="herbalist_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Herbalist</title> <shopkeeper> <restockable> Index: baker.xml =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/definitions/npcs/humans/vendors/baker.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** baker.xml 26 Feb 2004 02:33:46 -0000 1.4 --- baker.xml 26 Sep 2004 12:52:23 -0000 1.5 *************** *** 12,16 **** <npc id="baker_male"> <inherit>vendor_male</inherit> ! <title>the Baker</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 12,16 ---- <npc id="baker_male"> <inherit>vendor_male</inherit> ! <title context="Vendor Male Titles">the Baker</title> <equipped> <item id="153b" /> <!-- Half Apron --> *************** *** 77,81 **** <npc id="baker_female"> <inherit>vendor_female</inherit> ! <title>the Baker</title> <equipped> <item id="153b" /> <!-- Half Apron --> --- 77,81 ---- <npc id="baker_female"> <inherit>vendor_female</inherit> ! <title context="Vendor Female Titles">the Baker</title> <equipped> <item id="153b" /> <!-- Half Apron --> |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:46:04
|
Update of /cvsroot/wpdev/wolfpack/languages In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5486/languages Modified Files: wolfpack_de.ts wolfpack_es.ts wolfpack_fr.ts wolfpack_ge.ts wolfpack_it.ts wolfpack_nl.ts Log Message: allowed translation of NPC titles Index: wolfpack_it.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_it.ts,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** wolfpack_it.ts 24 Sep 2004 15:33:37 -0000 1.7 --- wolfpack_it.ts 26 Sep 2004 12:45:53 -0000 1.8 *************** *** 236,239 **** --- 236,555 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Total Users Online: %1 + </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Pirate</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the guard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the piper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spider</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Necromancer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Dragon</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Succubus</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Sprite Queen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Alchemist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ranger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Merchant</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Warrior</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Beggar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cartographer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Chef</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scout</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scholar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Detective</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sheperd</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rogue</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scribe</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pickpocket</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Assassin</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Archer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Animal Tamer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Swordsman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Armsman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fencer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wrestler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lumberjack</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Miner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stoic</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Necromancer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Paladin</source> + <translation type="unfinished"></translation> + </message> + </context> + <context> + <name>@definitions</name> </context> <context> *************** *** 243,246 **** --- 559,566 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Sorry, not implemented yet :(</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 348,422 **** <name>Human_Stablemaster</name> <message> ! <source>STABLEMASTER</source> <translation type="unfinished"></translation> </message> <message> ! <source> STABLE</source> <translation type="unfinished"></translation> </message> <message> ! <source>Which pet do you want me to stable?</source> <translation type="unfinished"></translation> </message> <message> ! <source> RELEASE</source> <translation type="unfinished"></translation> </message> <message> ! <source>Here's your pet back!</source> <translation type="unfinished"></translation> </message> <message> ! <source>I cannot stable that!</source> <translation type="unfinished"></translation> </message> <message> ! <source>This does not belong to you!</source> <translation type="unfinished"></translation> </message> <message> ! <source>petitem: %1</source> <translation type="unfinished"></translation> </message> <message> ! <source>Say release to get your pet back!</source> <translation type="unfinished"></translation> </message> </context> <context> ! <name>Human_Vendor</name> <message> ! <source> BUY</source> <translation type="unfinished"></translation> </message> <message> ! <source> SELL</source> <translation type="unfinished"></translation> </message> - </context> - <context> - <name>Trade::Trade</name> <message> ! <source>You can't reach the vendor</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item bought.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold, which has been withdrawn from your bank account. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item sold.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Thank you %1, here are your %2 gold</source> <translation type="unfinished"></translation> </message> --- 668,764 ---- <name>Human_Stablemaster</name> <message> ! <source>petitem: %1</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>ScriptAI</name> <message> ! <source>Action tag in ai definition must contain attributes for pre-,postcondition and execute at least ! </source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>Trade::Trade</name> <message> ! <source>You can't reach the vendor</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item bought.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold, which has been withdrawn from your bank account. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item sold.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Thank you %1, here are your %2 gold</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>Vendor Female Titles</name> <message> ! <source>the Alchemist</source> <translation type="unfinished"></translation> </message> </context> <context> ! <name>Vendor Male Titles</name> <message> ! <source>the Alchemist</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>cAccounts</name> <message> ! <source>Unknown Account Database Driver '%1', check your wolfpack.xml</source> <translation type="unfinished"></translation> </message> <message> ! <source>Accounts database didn't exist! Creating one ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Created default admin account: Login = admin, Password = admin ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Error while saving Accounts: %1.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Unknown error while saving Accounts.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Hashed account password for '%1'. ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Account '%1' has an unhashed password. ! </source> ! <translation type="unfinished"></translation> ! </message> ! <message> ! <source>Error while loading Accounts: %1</source> ! <translation type="unfinished"></translation> ! </message> ! <message> ! <source>Unknown error while loading Accounts</source> <translation type="unfinished"></translation> </message> *************** *** 448,451 **** --- 790,798 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Trying to put item 0x%1 on layer %2 which is already occupied. + </source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 551,554 **** --- 898,909 ---- </context> <context> + <name>cMulti</name> + <message> + <source>Unable to create unscripted item: %1 + </source> + <translation type="unfinished"></translation> + </message> + </context> + <context> <name>cNPC</name> <message> *************** *** 822,825 **** --- 1177,1241 ---- <translation type="unfinished"></translation> </message> + <message> + <source>configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>scripts</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>contextmenus</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>spawnregions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>territories</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>maps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>sectormaps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>tiledata</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>multis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>accounts</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>world</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>network</source> + <translation type="unfinished"></translation> + </message> + </context> + <context> + <name>cServerThread</name> + <message> + <source> + The server has been shut down. You can close this window now. + </source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 1135,1142 **** </message> <message> - <source>Unexpected button input</source> - <translation type="unfinished"></translation> - </message> - <message> <source>You can only change your own profile</source> <translation type="unfinished"></translation> --- 1551,1554 ---- *************** *** 1198,1201 **** --- 1610,1617 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Unexpected button input.</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_es.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_es.ts,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** wolfpack_es.ts 24 Sep 2004 15:33:38 -0000 1.1 --- wolfpack_es.ts 26 Sep 2004 12:45:53 -0000 1.2 *************** *** 236,239 **** --- 236,555 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Total Users Online: %1 + </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Pirate</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the guard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the piper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spider</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Necromancer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Dragon</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Succubus</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Sprite Queen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Alchemist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ranger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Merchant</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Warrior</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Beggar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cartographer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Chef</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scout</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scholar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Detective</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sheperd</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rogue</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scribe</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pickpocket</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Assassin</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Archer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Animal Tamer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Swordsman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Armsman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fencer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wrestler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lumberjack</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Miner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stoic</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Necromancer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Paladin</source> + <translation type="unfinished"></translation> + </message> + </context> + <context> + <name>@definitions</name> </context> <context> *************** *** 243,246 **** --- 559,566 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Sorry, not implemented yet :(</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 348,422 **** <name>Human_Stablemaster</name> <message> ! <source>STABLEMASTER</source> <translation type="unfinished"></translation> </message> <message> ! <source> STABLE</source> <translation type="unfinished"></translation> </message> <message> ! <source>Which pet do you want me to stable?</source> <translation type="unfinished"></translation> </message> <message> ! <source> RELEASE</source> <translation type="unfinished"></translation> </message> <message> ! <source>Here's your pet back!</source> <translation type="unfinished"></translation> </message> <message> ! <source>I cannot stable that!</source> <translation type="unfinished"></translation> </message> <message> ! <source>This does not belong to you!</source> <translation type="unfinished"></translation> </message> <message> ! <source>petitem: %1</source> <translation type="unfinished"></translation> </message> <message> ! <source>Say release to get your pet back!</source> <translation type="unfinished"></translation> </message> </context> <context> ! <name>Human_Vendor</name> <message> ! <source> BUY</source> <translation type="unfinished"></translation> </message> <message> ! <source> SELL</source> <translation type="unfinished"></translation> </message> - </context> - <context> - <name>Trade::Trade</name> <message> ! <source>You can't reach the vendor</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item bought.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold, which has been withdrawn from your bank account. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item sold.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Thank you %1, here are your %2 gold</source> <translation type="unfinished"></translation> </message> --- 668,764 ---- <name>Human_Stablemaster</name> <message> ! <source>petitem: %1</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>ScriptAI</name> <message> ! <source>Action tag in ai definition must contain attributes for pre-,postcondition and execute at least ! </source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>Trade::Trade</name> <message> ! <source>You can't reach the vendor</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item bought.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold, which has been withdrawn from your bank account. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item sold.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Thank you %1, here are your %2 gold</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>Vendor Female Titles</name> <message> ! <source>the Alchemist</source> <translation type="unfinished"></translation> </message> </context> <context> ! <name>Vendor Male Titles</name> <message> ! <source>the Alchemist</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>cAccounts</name> <message> ! <source>Unknown Account Database Driver '%1', check your wolfpack.xml</source> <translation type="unfinished"></translation> </message> <message> ! <source>Accounts database didn't exist! Creating one ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Created default admin account: Login = admin, Password = admin ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Error while saving Accounts: %1.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Unknown error while saving Accounts.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Hashed account password for '%1'. ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Account '%1' has an unhashed password. ! </source> ! <translation type="unfinished"></translation> ! </message> ! <message> ! <source>Error while loading Accounts: %1</source> ! <translation type="unfinished"></translation> ! </message> ! <message> ! <source>Unknown error while loading Accounts</source> <translation type="unfinished"></translation> </message> *************** *** 448,451 **** --- 790,798 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Trying to put item 0x%1 on layer %2 which is already occupied. + </source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 551,554 **** --- 898,909 ---- </context> <context> + <name>cMulti</name> + <message> + <source>Unable to create unscripted item: %1 + </source> + <translation type="unfinished"></translation> + </message> + </context> + <context> <name>cNPC</name> <message> *************** *** 822,825 **** --- 1177,1241 ---- <translation type="unfinished"></translation> </message> + <message> + <source>configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>scripts</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>contextmenus</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>spawnregions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>territories</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>maps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>sectormaps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>tiledata</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>multis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>accounts</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>world</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>network</source> + <translation type="unfinished"></translation> + </message> + </context> + <context> + <name>cServerThread</name> + <message> + <source> + The server has been shut down. You can close this window now. + </source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 1135,1142 **** </message> <message> - <source>Unexpected button input</source> - <translation type="unfinished"></translation> - </message> - <message> <source>You can only change your own profile</source> <translation type="unfinished"></translation> --- 1551,1554 ---- *************** *** 1198,1201 **** --- 1610,1617 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Unexpected button input.</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_nl.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/languages/wolfpack_nl.ts,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** wolfpack_nl.ts 24 Sep 2004 15:33:37 -0000 1.7 --- wolfpack_nl.ts 26 Sep 2004 12:45:54 -0000 1.8 *************** *** 236,239 **** --- 236,555 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Total Users Online: %1 + </source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Pirate</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the guard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Architect</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Armorer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Baker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Banker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Hairstylist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the butcher</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cobbler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Cook</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Fisherlady</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Herbalist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Innkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Jeweler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Leatherworker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Provisioner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Shipwright</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spinner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Stablemaster</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tanner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tavernkeeper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaponsmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Weaver</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the piper</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Spider</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>The Necromancer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Dragon</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Succubus</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>the Sprite Queen</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Alchemist</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Healer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Ranger</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Merchant</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Warrior</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Beggar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Blacksmith</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bowyer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Bard</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Carpenter</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Cartographer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Chef</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scout</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scholar</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fisherman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Detective</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Sheperd</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Rogue</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Scribe</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Mage</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Pickpocket</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Assassin</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Archer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Medium</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tailor</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Animal Tamer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Tinker</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Veterinarian</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Swordsman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Armsman</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Fencer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Wrestler</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Lumberjack</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Miner</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Stoic</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Necromancer</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>Paladin</source> + <translation type="unfinished"></translation> + </message> + </context> + <context> + <name>@definitions</name> </context> <context> *************** *** 243,246 **** --- 559,566 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Sorry, not implemented yet :(</source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 348,422 **** <name>Human_Stablemaster</name> <message> ! <source>STABLEMASTER</source> <translation type="unfinished"></translation> </message> <message> ! <source> STABLE</source> <translation type="unfinished"></translation> </message> <message> ! <source>Which pet do you want me to stable?</source> <translation type="unfinished"></translation> </message> <message> ! <source> RELEASE</source> <translation type="unfinished"></translation> </message> <message> ! <source>Here's your pet back!</source> <translation type="unfinished"></translation> </message> <message> ! <source>I cannot stable that!</source> <translation type="unfinished"></translation> </message> <message> ! <source>This does not belong to you!</source> <translation type="unfinished"></translation> </message> <message> ! <source>petitem: %1</source> <translation type="unfinished"></translation> </message> <message> ! <source>Say release to get your pet back!</source> <translation type="unfinished"></translation> </message> </context> <context> ! <name>Human_Vendor</name> <message> ! <source> BUY</source> <translation type="unfinished"></translation> </message> <message> ! <source> SELL</source> <translation type="unfinished"></translation> </message> - </context> - <context> - <name>Trade::Trade</name> <message> ! <source>You can't reach the vendor</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item bought.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold, which has been withdrawn from your bank account. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item sold.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Thank you %1, here are your %2 gold</source> <translation type="unfinished"></translation> </message> --- 668,764 ---- <name>Human_Stablemaster</name> <message> ! <source>petitem: %1</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>ScriptAI</name> <message> ! <source>Action tag in ai definition must contain attributes for pre-,postcondition and execute at least ! </source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>Trade::Trade</name> <message> ! <source>You can't reach the vendor</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item bought.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold, which has been withdrawn from your bank account. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>The total of thy purchase is %1 gold. My thanks for the patronage.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Invalid item sold.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Thank you %1, here are your %2 gold</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>Vendor Female Titles</name> <message> ! <source>the Alchemist</source> <translation type="unfinished"></translation> </message> </context> <context> ! <name>Vendor Male Titles</name> <message> ! <source>the Alchemist</source> <translation type="unfinished"></translation> </message> + </context> + <context> + <name>cAccounts</name> <message> ! <source>Unknown Account Database Driver '%1', check your wolfpack.xml</source> <translation type="unfinished"></translation> </message> <message> ! <source>Accounts database didn't exist! Creating one ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Created default admin account: Login = admin, Password = admin ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Error while saving Accounts: %1.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Unknown error while saving Accounts.</source> <translation type="unfinished"></translation> </message> <message> ! <source>Hashed account password for '%1'. ! </source> <translation type="unfinished"></translation> </message> <message> ! <source>Account '%1' has an unhashed password. ! </source> ! <translation type="unfinished"></translation> ! </message> ! <message> ! <source>Error while loading Accounts: %1</source> ! <translation type="unfinished"></translation> ! </message> ! <message> ! <source>Unknown error while loading Accounts</source> <translation type="unfinished"></translation> </message> *************** *** 448,451 **** --- 790,798 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Trying to put item 0x%1 on layer %2 which is already occupied. + </source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 551,554 **** --- 898,909 ---- </context> <context> + <name>cMulti</name> + <message> + <source>Unable to create unscripted item: %1 + </source> + <translation type="unfinished"></translation> + </message> + </context> + <context> <name>cNPC</name> <message> *************** *** 822,825 **** --- 1177,1241 ---- <translation type="unfinished"></translation> </message> + <message> + <source>configuration</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>definitions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>scripts</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>contextmenus</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>spawnregions</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>territories</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>maps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>sectormaps</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>tiledata</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>multis</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>accounts</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>world</source> + <translation type="unfinished"></translation> + </message> + <message> + <source>network</source> + <translation type="unfinished"></translation> + </message> + </context> + <context> + <name>cServerThread</name> + <message> + <source> + The server has been shut down. You can close this window now. + </source> + <translation type="unfinished"></translation> + </message> </context> <context> *************** *** 1135,1142 **** </message> <message> - <source>Unexpected button input</source> - <translation type="unfinished"></translation> - </message> - <message> <source>You can only change your own profile</source> <translation type="unfinished"></translation> --- 1551,1554 ---- *************** *** 1198,1201 **** --- 1610,1617 ---- <translation type="unfinished"></translation> </message> + <message> + <source>Unexpected button input.</source> + <translation type="unfinished"></translation> + </message> </context> <context> Index: wolfpack_ge.ts =================================================================== RCS file: /cvsroot/wpdev/wolfpack/langua... [truncated message content] |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:46:03
|
Update of /cvsroot/wpdev/wolfpack/tools/translationupdate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5486/tools/translationupdate Modified Files: fetchtrwp.cpp Log Message: allowed translation of NPC titles Index: fetchtrwp.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/tools/translationupdate/fetchtrwp.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** fetchtrwp.cpp 26 Sep 2004 00:21:54 -0000 1.1 --- fetchtrwp.cpp 26 Sep 2004 12:45:54 -0000 1.2 *************** *** 83,90 **** }; ! bool DefinitionHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& /* atts */ ) { if ( qName == QString( "title" ) ) { flush(); } --- 83,98 ---- }; ! bool DefinitionHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString( "title" ) ) { + QString value = atts.value("context"); + + if (!value.isEmpty()) { + context = value; + } else { + context = "@default"; + } + flush(); } |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:46:03
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5486 Modified Files: basechar.cpp Log Message: allowed translation of NPC titles Index: basechar.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/basechar.cpp,v retrieving revision 1.150 retrieving revision 1.151 diff -C2 -d -r1.150 -r1.151 *** basechar.cpp 26 Sep 2004 00:21:53 -0000 1.150 --- basechar.cpp 26 Sep 2004 12:45:53 -0000 1.151 *************** *** 1235,1238 **** --- 1235,1247 ---- } + #if !defined(QT_NO_TRANSLATION) + else if ( TagName == "title" ) + { + QString context = Tag->getAttribute("context", "@default"); + Value = qApp->translate(context, Value); + setTitle(Value); + } + #endif + //<stat type="str">100</stats> else if ( TagName == "stat" ) |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:11:22
|
Update of /cvsroot/wpdev/xmlscripts/documentation/webroot In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29970/webroot Modified Files: ChangeLog.wolfpack Log Message: exploit fix Index: ChangeLog.wolfpack =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/documentation/webroot/ChangeLog.wolfpack,v retrieving revision 1.116 retrieving revision 1.117 diff -C2 -d -r1.116 -r1.117 *** ChangeLog.wolfpack 25 Sep 2004 19:57:27 -0000 1.116 --- ChangeLog.wolfpack 26 Sep 2004 12:11:11 -0000 1.117 *************** *** 62,65 **** --- 62,66 ---- - Fixed a bug where the send command didn't resend the world to the target. - Fix for the info command. + - Exploit fix for ore smelting. Unlimited mining skill checks. * Misc. Changes: - Fixed configure.py for FreeBSD 5 |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:11:03
|
Update of /cvsroot/wpdev/xmlscripts/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29885 Modified Files: ore.py Log Message: exploit fix Index: ore.py =================================================================== RCS file: /cvsroot/wpdev/xmlscripts/scripts/ore.py,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ore.py 11 Sep 2004 15:20:48 -0000 1.24 --- ore.py 26 Sep 2004 12:10:49 -0000 1.25 *************** *** 265,268 **** --- 265,274 ---- if ore.amount >= 1 and char.skill[ MINING ] >= reqskill: + # Exploit fix. Otherwise the skillcheck would be before + # consuming items. + if ore.baseid == DEF_ORES[0] and ore.amount <= 1: + char.socket.clilocmessage( 501987, '', GRAY ) + return False + if not skills.checkskill(char, MINING, chance): success = 0 |
From: Sebastian H. <dar...@us...> - 2004-09-26 12:05:47
|
Update of /cvsroot/wpdev/wolfpack/tools/translationupdate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28491/tools/translationupdate Modified Files: translationUpdate.pro Log Message: updated project file Index: translationUpdate.pro =================================================================== RCS file: /cvsroot/wpdev/wolfpack/tools/translationupdate/translationUpdate.pro,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** translationUpdate.pro 26 Sep 2004 00:21:54 -0000 1.1 --- translationUpdate.pro 26 Sep 2004 12:05:34 -0000 1.2 *************** *** 4,7 **** --- 4,8 ---- proparser.h SOURCES = fetchtr.cpp \ + fetchtrwp.cpp \ main.cpp \ merge.cpp \ |
From: Correa <thi...@us...> - 2004-09-26 00:22:05
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8183 Modified Files: basechar.cpp Log Message: - few updated clilocs - commited our own version of lupdate that parses XML and Python scripts Index: basechar.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/basechar.cpp,v retrieving revision 1.149 retrieving revision 1.150 diff -C2 -d -r1.149 -r1.150 *** basechar.cpp 20 Sep 2004 00:24:28 -0000 1.149 --- basechar.cpp 26 Sep 2004 00:21:53 -0000 1.150 *************** *** 1433,1437 **** if ( atLayer( layer ) != 0 ) { ! log( LOG_ERROR, QString( "Trying to put item 0x%1 on layer %2 which is already occupied.\n" ).arg( pi->serial(), 0, 16 ).arg( layer ) ); pi->container_ = 0; pi->moveTo( pos_, true ); --- 1433,1437 ---- if ( atLayer( layer ) != 0 ) { ! log( LOG_ERROR, tr( "Trying to put item 0x%1 on layer %2 which is already occupied.\n" ).arg( pi->serial(), 0, 16 ).arg( layer ) ); pi->container_ = 0; pi->moveTo( pos_, true ); |
From: Correa <thi...@us...> - 2004-09-26 00:22:05
|
Update of /cvsroot/wpdev/wolfpack/ai In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8183/ai Modified Files: ai_humans.cpp Log Message: - few updated clilocs - commited our own version of lupdate that parses XML and Python scripts Index: ai_humans.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/ai/ai_humans.cpp,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** ai_humans.cpp 25 Sep 2004 22:57:09 -0000 1.20 --- ai_humans.cpp 26 Sep 2004 00:21:54 -0000 1.21 *************** *** 62,70 **** if ( m_npc->inRange( pTalker, 4 ) && VendorChkName( m_npc, comm ) ) { ! if ( comm.contains( tr( " BUY" ) ) ) { m_npc->vendorBuy( pTalker ); } ! else if ( comm.contains( tr( " SELL" ) ) ) { m_npc->vendorSell( pTalker ); --- 62,70 ---- if ( m_npc->inRange( pTalker, 4 ) && VendorChkName( m_npc, comm ) ) { ! if ( comm.contains( " BUY" ) ) { m_npc->vendorBuy( pTalker ); } ! else if ( comm.contains( " SELL" ) ) { m_npc->vendorSell( pTalker ); *************** *** 100,113 **** if ( !pTalker->socket() ) return; ! if ( m_npc->inRange( pTalker, 4 ) && ( VendorChkName( m_npc, message ) || message.contains( tr( "STABLEMASTER" ) ) ) ) { ! if ( message.contains( tr( " STABLE" ) ) ) { ! m_npc->talk( tr( "Which pet do you want me to stable?" ) ); pTalker->socket()->attachTarget( new cStableTarget( m_npc ) ); } ! else if ( message.contains( tr( " RELEASE" ) ) ) { - int gold = pTalker->countBankGold() + pTalker->countGold(); P_ITEM pPack = m_npc->getBankbox(); --- 100,116 ---- if ( !pTalker->socket() ) return; ! ! if ( m_npc->inRange( pTalker, 4 ) && ( VendorChkName( m_npc, message ) || message.contains( "STABLEMASTER" ) ) ) { ! if ( message.contains( " STABLE" ) ) { ! m_npc->talk( 1042558 ); /* I charge 30 gold per pet for a real week's stable time. ! * I will withdraw it from thy bank account. ! * Which animal wouldst thou like to stable here? ! */ pTalker->socket()->attachTarget( new cStableTarget( m_npc ) ); } ! else if ( message.contains( " RELEASE" ) ) { P_ITEM pPack = m_npc->getBankbox(); *************** *** 150,154 **** pPack->update(); ! m_npc->talk( tr( "Here's your pet back!" ) ); } } --- 153,157 ---- pPack->update(); ! m_npc->talk( 1042559 ); // Here you go... and good day to you!; } } *************** *** 169,208 **** return; ! P_NPC pPet = dynamic_cast<P_NPC>( World::instance()->findChar( target->serial() ) ); ! if ( !pPet ) { ! m_npc->talk( tr( "I cannot stable that!" ) ); return; } ! if ( pPet->owner() != player ) { ! m_npc->talk( tr( "This does not belong to you!" ) ); ! return; } ! // we spawn a worldgem in the stablemasters bankbox for the pet ! // it does only hold the serial of it, the serial of the owner and the ! // number of refresh signals since begin of stabling ! // the pet becomes "free", which means, that it isnt in the world ! // but will still be saved. ! P_ITEM pGem = new cItem(); ! pGem->Init( true ); ! pGem->setTag( "player", cVariant( player->serial() ) ); ! pGem->setTag( "pet", cVariant( pPet->serial() ) ); ! pGem->setId( 0x1ea7 ); ! pGem->setName( tr( "petitem: %1" ).arg( pPet->name() ) ); ! pGem->setVisible( 2 ); // gm visible ! pPack->addItem( pGem ); ! pGem->update(); ! ! ! //pPet->free = true; ! MapObjects::instance()->remove( pPet ); ! pPet->setStablemasterSerial( this->m_npc->serial() ); ! pPet->removeFromView(); ! ! // we need this for db saves ! m_npc->talk( tr( "Say release to get your pet back!" ) ); } --- 172,226 ---- return; ! if ( player->serial() == target->serial() ) { ! m_npc->talk( 502672 ); // HA HA HA! Sorry, I am not an inn. return; } ! P_NPC pPet = dynamic_cast<P_NPC>( World::instance()->findChar( target->serial() ) ); ! if ( !pPet ) { ! m_npc->talk( 1048053 ); // You can't stable that! } + else if ( pPet->owner() != player ) + { + m_npc->talk( 1042562 ); // You do not own that pet! + } + else if ( pPet->isHuman() ) + { + m_npc->talk( 502672 ); // HA HA HA! Sorry, I am not an inn. + } + else if ( pPet->isAtWar() ) + { + m_npc->talk( 1042564 ); // I'm sorry. Your pet seems to be busy. + } + else + { + if ( player->takeGold( 30, true ) == 30 ) + { + // we spawn a worldgem in the stablemasters bankbox for the pet + // it does only hold the serial of it, the serial of the owner and the + // number of refresh signals since begin of stabling + // the pet becomes "free", which means, that it isnt in the world + // but will still be saved. + P_ITEM pGem = new cItem(); + pGem->Init( true ); + pGem->setTag( "player", cVariant( player->serial() ) ); + pGem->setTag( "pet", cVariant( pPet->serial() ) ); + pGem->setId( 0x1ea7 ); + pGem->setName( tr( "petitem: %1" ).arg( pPet->name() ) ); + pGem->setVisible( 2 ); // gm visible + pPack->addItem( pGem ); + pGem->update(); ! //pPet->free = true; ! MapObjects::instance()->remove( pPet ); ! pPet->setStablemasterSerial( this->m_npc->serial() ); ! pPet->removeFromView(); ! m_npc->talk( 502679 ); // Very well, thy pet is stabled. Thou mayst recover it by saying 'claim' to me. In one real world week, I shall sell it off if it is not claimed! ! } ! else ! m_npc->talk( 502677 ); // But thou hast not the funds in thy bank account! ! } } |
From: Correa <thi...@us...> - 2004-09-26 00:22:04
|
Update of /cvsroot/wpdev/wolfpack/tools/translationupdate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8183/tools/translationupdate Added Files: fetchtr.cpp fetchtrwp.cpp main.cpp merge.cpp metatranslator.cpp metatranslator.h numberh.cpp proparser.cpp proparser.h sametexth.cpp translationUpdate.pro Log Message: - few updated clilocs - commited our own version of lupdate that parses XML and Python scripts --- NEW FILE: translationUpdate.pro --- TEMPLATE = app CONFIG += qt warn_on console HEADERS = metatranslator.h \ proparser.h SOURCES = fetchtr.cpp \ main.cpp \ merge.cpp \ numberh.cpp \ sametexth.cpp \ metatranslator.cpp \ proparser.cpp TARGET = translationUpdate --- NEW FILE: main.cpp --- /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of Qt Linguist. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ** licenses may use this file in accordance with the Qt Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** See http://www.trolltech.com/pricing.html or email sa...@tr... for ** information about Qt Commercial License Agreements. ** ** Contact in...@tr... if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <metatranslator.h> #include <proparser.h> #include <qdir.h> #include <qfile.h> #include <qfileinfo.h> #include <qstring.h> #include <qstringlist.h> #include <qtextstream.h> #include <errno.h> #include <string.h> // defined in fetchtr.cpp extern void fetchtr_cpp( const char* fileName, MetaTranslator* tor, const char* defaultContext, bool mustExist ); extern void fetchtr_ui( const char* fileName, MetaTranslator* tor, const char* defaultContext, bool mustExist ); // defined in fetchtrwp.cpp extern void fetchtr_xml( const char* fileName, MetaTranslator* tor, const char* defaultContext, bool mustExist ); extern void fetchtr_py( const char* fileName, MetaTranslator* tor, const char* defaultContext, bool mustExist ); // defined in merge.cpp extern void merge( MetaTranslator* tor, const MetaTranslator* virginTor, bool verbose ); typedef QValueList<MetaTranslatorMessage> TML; static void printUsage() { fprintf( stderr, "Usage:\n" " lupdate [options] project-file\n" " lupdate [options] source-files -ts ts-files\n" "Options:\n" " -help Display this information and exit\n" " -noobsolete\n" " Drop all obsolete strings\n" " -verbose\n" " Explain what is being done\n" " -version\n" " Display the version of lupdate and exit\n" ); } static void updateTsFiles( const MetaTranslator& fetchedTor, const QStringList& tsFileNames, const QString& codec, bool noObsolete, bool verbose ) { QStringList::ConstIterator t = tsFileNames.begin(); while ( t != tsFileNames.end() ) { MetaTranslator tor; tor.load( *t ); if ( !codec.isEmpty() ) tor.setCodec( codec ); if ( verbose ) fprintf( stderr, "Updating '%s'...\n", ( *t ).latin1() ); merge( &tor, &fetchedTor, verbose ); if ( noObsolete ) tor.stripObsoleteMessages(); tor.stripEmptyContexts(); if ( !tor.save( *t ) ) fprintf( stderr, "lupdate error: Cannot save '%s': %s\n", ( *t ).latin1(), strerror( errno ) ); ++t; } } typedef void(*fetchFunctor)(const char*, MetaTranslator*, const char*, bool); static void lookForDefinitions( const QString& dir, const QString& filter, MetaTranslator* tor, fetchFunctor fetchtr ) { QDir d ( dir ); d.setFilter( QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoSymLinks ); d.setNameFilter( filter ); d.setSorting( QDir::Name ); d.setMatchAllDirs( true ); const QFileInfoList *list = d.entryInfoList(); QFileInfoListIterator it( *list ); QFileInfo *fi; for ( ; ( fi = it.current() ) != 0; ++it ) { // skip "." and ".." dir if ( fi->isDir() && ( fi->fileName() == "." || fi->fileName() == ".." ) ) continue; else if ( fi->isDir() ) lookForDefinitions( d.absPath() + "/" + fi->fileName(), filter, tor, fetchtr ); else { fetchtr( dir + "/" + fi->fileName(), tor, 0, true ); } } } int main( int argc, char** argv ) { QString defaultContext = "@default"; MetaTranslator fetchedTor; QCString codec; QStringList tsFileNames; bool verbose = FALSE; bool noObsolete = FALSE; bool metSomething = FALSE; int numFiles = 0; bool standardSyntax = TRUE; bool metTsFlag = FALSE; int i; for ( i = 1; i < argc; i++ ) { if ( qstrcmp( argv[i], "-ts" ) == 0 ) standardSyntax = FALSE; } for ( i = 1; i < argc; i++ ) { if ( qstrcmp( argv[i], "-help" ) == 0 ) { printUsage(); return 0; } else if ( qstrcmp( argv[i], "-noobsolete" ) == 0 ) { noObsolete = TRUE; continue; } else if ( qstrcmp( argv[i], "-verbose" ) == 0 ) { verbose = TRUE; continue; } else if ( qstrcmp( argv[i], "-version" ) == 0 ) { fprintf( stderr, "lupdate version %s\n", QT_VERSION_STR ); return 0; } else if ( qstrcmp( argv[i], "-ts" ) == 0 ) { metTsFlag = TRUE; continue; } numFiles++; QString fullText; if ( !metTsFlag ) { QFile f( argv[i] ); if ( !f.open( IO_ReadOnly ) ) { fprintf( stderr, "lupdate error: Cannot open file '%s': %s\n", argv[i], strerror( errno ) ); return 1; } QTextStream t( &f ); fullText = t.read(); f.close(); } QString oldDir = QDir::currentDirPath(); QDir::setCurrent( QFileInfo( argv[i] ).dirPath() ); if ( standardSyntax ) { fetchedTor = MetaTranslator(); codec.truncate( 0 ); tsFileNames.clear(); QMap<QString, QString> tagMap = proFileTagMap( fullText ); QMap<QString, QString>::Iterator it; for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { QStringList toks = QStringList::split( ' ', it.data() ); QStringList::Iterator t; for ( t = toks.begin(); t != toks.end(); ++t ) { if ( it.key() == "HEADERS" || it.key() == "SOURCES" ) { fetchtr_cpp( *t, &fetchedTor, defaultContext, TRUE ); metSomething = TRUE; } else if ( it.key() == "INTERFACES" || it.key() == "FORMS" ) { fetchtr_ui( *t, &fetchedTor, defaultContext, TRUE ); fetchtr_cpp( *t + ".h", &fetchedTor, defaultContext, FALSE ); metSomething = TRUE; } else if ( it.key() == "TRANSLATIONS" ) { tsFileNames.append( *t ); metSomething = TRUE; } else if ( it.key() == "CODEC" || it.key() == "DEFAULTCODEC" ) { codec = ( *t ).latin1(); } else if ( it.key() == "WPDEFINITIONS" ) { lookForDefinitions( *t, "*.xml", &fetchedTor, &fetchtr_xml ); } else if ( it.key() == "WPSCRIPTS" ) { lookForDefinitions( *t, "*.py", &fetchedTor, &fetchtr_py ); } } } updateTsFiles( fetchedTor, tsFileNames, codec, noObsolete, verbose ); if ( !metSomething ) { fprintf( stderr, "lupdate warning: File '%s' does not look like a" " project file\n", argv[i] ); } else if ( tsFileNames.isEmpty() ) { fprintf( stderr, "lupdate warning: Met no 'TRANSLATIONS' entry in" " project file '%s'\n", argv[i] ); } } else { if ( metTsFlag ) { if ( QString( argv[i] ).lower().endsWith( ".ts" ) ) { QFileInfo fi( argv[i] ); if ( !fi.exists() || fi.isWritable() ) { tsFileNames.append( argv[i] ); } else { fprintf( stderr, "lupdate warning: For some reason, I cannot" " save '%s'\n", argv[i] ); } } else { fprintf( stderr, "lupdate error: File '%s' lacks .ts extension\n", argv[i] ); } } else { QFileInfo fi( argv[i] ); if ( QString( argv[i] ).lower().endsWith( ".ui" ) ) { fetchtr_ui( fi.fileName(), &fetchedTor, defaultContext, TRUE ); fetchtr_cpp( QString( fi.fileName() ) + ".h", &fetchedTor, defaultContext, FALSE ); } else if ( QString( argv[i] ).lower().endsWith( ".xml" ) ) { fetchtr_xml( fi.fileName(), &fetchedTor, 0, TRUE ); } else if ( QString( argv[i] ).lower().endsWith( ".py" ) ) { fetchtr_py( fi.fileName(), &fetchedTor, 0, TRUE ); } else { fetchtr_cpp( fi.fileName(), &fetchedTor, defaultContext, TRUE ); } } } QDir::setCurrent( oldDir ); } if ( !standardSyntax ) updateTsFiles( fetchedTor, tsFileNames, codec, noObsolete, verbose ); if ( numFiles == 0 ) { printUsage(); return 1; } return 0; } --- NEW FILE: fetchtr.cpp --- /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qt Linguist. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ** licenses may use this file in accordance with the Qt Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** See http://www.trolltech.com/pricing.html or email sa...@tr... for ** information about Qt Commercial License Agreements. ** ** Contact in...@tr... if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <metatranslator.h> #include <qfile.h> #include <qregexp.h> #include <qstring.h> #include <qtextstream.h> #include <qvaluestack.h> #include <qxml.h> #include <ctype.h> #include <errno.h> #include <stdio.h> #include <string.h> /* qmake ignore Q_OBJECT */ static const char MagicComment[] = "TRANSLATOR "; static QMap<QCString, int> needs_Q_OBJECT; static QMap<QCString, int> lacks_Q_OBJECT; /* The first part of this source file is the C++ tokenizer. We skip most of C++; the only tokens that interest us are defined here. Thus, the code fragment int main() { printf( "Hello, world!\n" ); return 0; } is broken down into the following tokens (Tok_ omitted): Ident Ident LeftParen RightParen LeftBrace Ident LeftParen String RightParen Semicolon return Semicolon RightBrace. The 0 doesn't produce any token. */ enum { Tok_Eof, Tok_class, Tok_namespace, Tok_return, Tok_tr, Tok_trUtf8, Tok_translate, Tok_Q_OBJECT, Tok_Ident, Tok_Comment, Tok_String, Tok_Arrow, Tok_Colon, Tok_Gulbrandsen, Tok_LeftBrace, Tok_RightBrace, Tok_LeftParen, Tok_RightParen, Tok_Comma, Tok_Semicolon }; /* The tokenizer maintains the following global variables. The names should be self-explanatory. */ static QCString yyFileName; static int yyCh; static char yyIdent[128]; static size_t yyIdentLen; static char yyComment[65536]; static size_t yyCommentLen; static char yyString[16384]; static size_t yyStringLen; static QValueStack<int> yySavedBraceDepth; static QValueStack<int> yySavedParenDepth; static int yyBraceDepth; static int yyParenDepth; static int yyLineNo; static int yyCurLineNo; static int yyBraceLineNo; static int yyParenLineNo; // the file to read from (if reading from a file) static FILE *yyInFile; // the string to read from and current position in the string (otherwise) static QString yyInStr; static int yyInPos; static int ( *getChar )(); static int getCharFromFile() { int c = getc( yyInFile ); if ( c == '\n' ) yyCurLineNo++; return c; } static int getCharFromString() { if ( yyInPos == ( int ) yyInStr.length() ) { return EOF; } else { return yyInStr[yyInPos++].latin1(); } } static void startTokenizer( const char* fileName, int ( *getCharFunc ) () ) { yyInPos = 0; getChar = getCharFunc; yyFileName = fileName; yyCh = getChar(); yySavedBraceDepth.clear(); yySavedParenDepth.clear(); yyBraceDepth = 0; yyParenDepth = 0; yyCurLineNo = 1; yyBraceLineNo = 1; yyParenLineNo = 1; } static int getToken() { const char tab[] = "abfnrtv"; const char backTab[] = "\a\b\f\n\r\t\v"; uint n; yyIdentLen = 0; yyCommentLen = 0; yyStringLen = 0; while ( yyCh != EOF ) { yyLineNo = yyCurLineNo; if ( isalpha( yyCh ) || yyCh == '_' ) { do { if ( yyIdentLen < sizeof( yyIdent ) - 1 ) yyIdent[yyIdentLen++] = ( char ) yyCh; yyCh = getChar(); } while ( isalnum( yyCh ) || yyCh == '_' ); yyIdent[yyIdentLen] = '\0'; switch ( yyIdent[0] ) { case 'O': if ( strcmp ( yyIdent + 1, "BJECTDEF" ) == 0 ) { return Tok_Q_OBJECT; } break; case 'Q': if ( strcmp( yyIdent + 1, "_OBJECT" ) == 0 ) { return Tok_Q_OBJECT; } else if ( strcmp( yyIdent + 1, "T_TR_NOOP" ) == 0 ) { return Tok_tr; } else if ( strcmp( yyIdent + 1, "T_TRANSLATE_NOOP" ) == 0 ) { return Tok_translate; } break; case 'T': // TR() for when all else fails if ( qstricmp( yyIdent + 1, "R" ) == 0 ) return Tok_tr; break; case 'c': if ( strcmp( yyIdent + 1, "lass" ) == 0 ) return Tok_class; break; case 'f': /* QTranslator::findMessage() has the same parameters as QApplication::translate(). */ if ( strcmp( yyIdent + 1, "indMessage" ) == 0 ) return Tok_translate; break; case 'n': if ( strcmp( yyIdent + 1, "amespace" ) == 0 ) return Tok_namespace; break; case 'r': if ( strcmp( yyIdent + 1, "eturn" ) == 0 ) return Tok_return; break; case 's': if ( strcmp( yyIdent + 1, "truct" ) == 0 ) return Tok_class; break; case 't': if ( strcmp( yyIdent + 1, "r" ) == 0 ) { return Tok_tr; } else if ( qstrcmp( yyIdent + 1, "rUtf8" ) == 0 ) { return Tok_trUtf8; } else if ( qstrcmp( yyIdent + 1, "ranslate" ) == 0 ) { return Tok_translate; } } return Tok_Ident; } else { switch ( yyCh ) { case '#': /* Early versions of lupdate complained about unbalanced braces in the following code: #ifdef ALPHA while ( beta ) { #else while ( gamma ) { #endif delta; } The code contains, indeed, two opening braces for one closing brace; yet there's no reason to panic. The solution is to remember yyBraceDepth as it was when #if, #ifdef or #ifndef was met, and to set yyBraceDepth to that value when meeting #elif or #else. */ do { yyCh = getChar(); } while ( isspace( yyCh ) && yyCh != '\n' ); switch ( yyCh ) { case 'i': yyCh = getChar(); if ( yyCh == 'f' ) { // if, ifdef, ifndef yySavedBraceDepth.push( yyBraceDepth ); yySavedParenDepth.push( yyParenDepth ); } break; case 'e': yyCh = getChar(); if ( yyCh == 'l' ) { // elif, else if ( !yySavedBraceDepth.isEmpty() ) { yyBraceDepth = yySavedBraceDepth.top(); yyParenDepth = yySavedParenDepth.top(); } } else if ( yyCh == 'n' ) { // endif if ( !yySavedBraceDepth.isEmpty() ) { yySavedBraceDepth.pop(); yySavedParenDepth.pop(); } } } while ( isalnum( yyCh ) || yyCh == '_' ) yyCh = getChar(); break; case '/': yyCh = getChar(); if ( yyCh == '/' ) { do { yyCh = getChar(); } while ( yyCh != EOF && yyCh != '\n' ); } else if ( yyCh == '*' ) { bool metAster = FALSE; bool metAsterSlash = FALSE; while ( !metAsterSlash ) { yyCh = getChar(); if ( yyCh == EOF ) { fprintf( stderr, "%s: Unterminated C++ comment starting at" " line %d\n", ( const char * ) yyFileName, yyLineNo ); yyComment[yyCommentLen] = '\0'; return Tok_Comment; } if ( yyCommentLen < sizeof( yyComment ) - 1 ) yyComment[yyCommentLen++] = ( char ) yyCh; if ( yyCh == '*' ) metAster = TRUE; else if ( metAster && yyCh == '/' ) metAsterSlash = TRUE; else metAster = FALSE; } yyCh = getChar(); yyCommentLen -= 2; yyComment[yyCommentLen] = '\0'; return Tok_Comment; } break; case '"': yyCh = getChar(); while ( yyCh != EOF && yyCh != '\n' && yyCh != '"' ) { if ( yyCh == '\\' ) { yyCh = getChar(); if ( yyCh == '\n' ) { yyCh = getChar(); } else if ( yyCh == 'x' ) { QCString hex = "0"; yyCh = getChar(); while ( isxdigit( yyCh ) ) { hex += ( char ) yyCh; yyCh = getChar(); } sscanf( hex, "%x", &n ); if ( yyStringLen < sizeof( yyString ) - 1 ) yyString[yyStringLen++] = ( char ) n; } else if ( yyCh >= '0' && yyCh < '8' ) { QCString oct = ""; do { oct += ( char ) yyCh; yyCh = getChar(); } while ( yyCh >= '0' && yyCh < '8' ); sscanf( oct, "%o", &n ); if ( yyStringLen < sizeof( yyString ) - 1 ) yyString[yyStringLen++] = ( char ) n; } else { const char *p = strchr( tab, yyCh ); if ( yyStringLen < sizeof( yyString ) - 1 ) yyString[yyStringLen++] = ( p == 0 ) ? ( char ) yyCh : backTab[p - tab]; yyCh = getChar(); } } else { if ( yyStringLen < sizeof( yyString ) - 1 ) yyString[yyStringLen++] = ( char ) yyCh; yyCh = getChar(); } } yyString[yyStringLen] = '\0'; if ( yyCh != '"' ) qWarning( "%s:%d: Unterminated C++ string", ( const char * ) yyFileName, yyLineNo ); if ( yyCh == EOF ) { return Tok_Eof; } else { yyCh = getChar(); return Tok_String; } break; case '-': yyCh = getChar(); if ( yyCh == '>' ) { yyCh = getChar(); return Tok_Arrow; } break; case ':': yyCh = getChar(); if ( yyCh == ':' ) { yyCh = getChar(); return Tok_Gulbrandsen; } return Tok_Colon; case '\'': yyCh = getChar(); if ( yyCh == '\\' ) yyCh = getChar(); do { yyCh = getChar(); } while ( yyCh != EOF && yyCh != '\'' ); yyCh = getChar(); break; case '{': if ( yyBraceDepth == 0 ) yyBraceLineNo = yyCurLineNo; yyBraceDepth++; yyCh = getChar(); return Tok_LeftBrace; case '}': if ( yyBraceDepth == 0 ) yyBraceLineNo = yyCurLineNo; yyBraceDepth--; yyCh = getChar(); return Tok_RightBrace; case '(': if ( yyParenDepth == 0 ) yyParenLineNo = yyCurLineNo; yyParenDepth++; yyCh = getChar(); return Tok_LeftParen; case ')': if ( yyParenDepth == 0 ) yyParenLineNo = yyCurLineNo; yyParenDepth--; yyCh = getChar(); return Tok_RightParen; case ',': yyCh = getChar(); return Tok_Comma; case ';': yyCh = getChar(); return Tok_Semicolon; default: yyCh = getChar(); } } } return Tok_Eof; } /* The second part of this source file is the parser. It accomplishes a very easy task: It finds all strings inside a tr() or translate() call, and possibly finds out the context of the call. It supports three cases: (1) the context is specified, as in FunnyDialog::tr("Hello") or translate("FunnyDialog", "Hello"); (2) the call appears within an inlined function; (3) the call appears within a function defined outside the class definition. */ static int yyTok; static bool match( int t ) { bool matches = ( yyTok == t ); if ( matches ) yyTok = getToken(); return matches; } static bool matchString( QCString* s ) { bool matches = ( yyTok == Tok_String ); *s = ""; while ( yyTok == Tok_String ) { *s += yyString; yyTok = getToken(); } return matches; } static bool matchEncoding( bool* utf8 ) { if ( yyTok == Tok_Ident ) { if ( strcmp( yyIdent, "QApplication" ) == 0 ) { yyTok = getToken(); if ( yyTok == Tok_Gulbrandsen ) yyTok = getToken(); } *utf8 = QString( yyIdent ).endsWith( QString( "UTF8" ) ); yyTok = getToken(); return TRUE; } else { return FALSE; } } static void parse( MetaTranslator* tor, const char* initialContext, const char* defaultContext ) { QMap<QCString, QCString> qualifiedContexts; QStringList namespaces; QCString context; QCString text; QCString com; QCString functionContext = initialContext; QCString prefix; bool utf8 = FALSE; bool missing_Q_OBJECT = FALSE; yyTok = getToken(); while ( yyTok != Tok_Eof ) { switch ( yyTok ) { case Tok_class: /* Partial support for inlined functions. */ yyTok = getToken(); if ( yyBraceDepth == ( int ) namespaces.count() && yyParenDepth == 0 ) { do { /* This code should execute only once, but we play safe with impure definitions such as 'class Q_EXPORT QMessageBox', in which case 'QMessageBox' is the class name, not 'Q_EXPORT'. */ functionContext = yyIdent; yyTok = getToken(); } while ( yyTok == Tok_Ident ); while ( yyTok == Tok_Gulbrandsen ) { yyTok = getToken(); functionContext += "::"; functionContext += yyIdent; yyTok = getToken(); } if ( yyTok == Tok_Colon ) { missing_Q_OBJECT = TRUE; } else { functionContext = defaultContext; } } break; case Tok_namespace: yyTok = getToken(); if ( yyTok == Tok_Ident ) { QCString ns = yyIdent; yyTok = getToken(); if ( yyTok == Tok_LeftBrace && yyBraceDepth == ( int ) namespaces.count() + 1 ) namespaces.append( QString( ns ) ); } break; case Tok_tr: case Tok_trUtf8: utf8 = ( yyTok == Tok_trUtf8 ); yyTok = getToken(); if ( match( Tok_LeftParen ) && matchString( &text ) ) { com = ""; if ( match( Tok_RightParen ) || ( match( Tok_Comma ) && matchString( &com ) && match( Tok_RightParen ) ) ) { if ( prefix.isNull() ) { context = functionContext; if ( !namespaces.isEmpty() ) context.prepend( ( namespaces.join( QString( "::" ) ) + QString( "::" ) ).latin1() ); } else { context = prefix; } prefix = ( const char * ) 0; if ( qualifiedContexts.contains( context ) ) context = qualifiedContexts[context]; tor->insert( MetaTranslatorMessage( context, text, com, QString::null, utf8 ) ); if ( lacks_Q_OBJECT.contains( context ) ) { qWarning( "%s:%d: Class '%s' lacks OBJECTDEF macro", ( const char * ) yyFileName, yyLineNo, ( const char * ) context ); lacks_Q_OBJECT.remove( context ); } else { needs_Q_OBJECT.insert( context, 0 ); } } } break; case Tok_translate: utf8 = FALSE; yyTok = getToken(); if ( match( Tok_LeftParen ) && matchString( &context ) && match( Tok_Comma ) && matchString( &text ) ) { com = ""; if ( match( Tok_RightParen ) || ( match( Tok_Comma ) && matchString( &com ) && ( match( Tok_RightParen ) || match( Tok_Comma ) && matchEncoding( &utf8 ) && match( Tok_RightParen ) ) ) ) tor->insert( MetaTranslatorMessage( context, text, com, QString::null, utf8 ) ); } break; case Tok_Q_OBJECT: missing_Q_OBJECT = FALSE; yyTok = getToken(); break; case Tok_Ident: if ( !prefix.isNull() ) prefix += "::"; prefix += yyIdent; yyTok = getToken(); if ( yyTok != Tok_Gulbrandsen ) prefix = ( const char * ) 0; break; case Tok_Comment: com = yyComment; com = com.simplifyWhiteSpace(); if ( com.left( sizeof( MagicComment ) - 1 ) == MagicComment ) { com.remove( 0, sizeof( MagicComment ) - 1 ); int k = com.find( ' ' ); if ( k == -1 ) { context = com; } else { context = com.left( k ); com.remove( 0, k + 1 ); tor->insert( MetaTranslatorMessage( context, "", com, QString::null, FALSE ) ); } /* Provide a backdoor for people using "using namespace". See the manual for details. */ k = 0; while ( ( k = context.find( "::", k ) ) != -1 ) { qualifiedContexts.insert( context.mid( k + 2 ), context ); k++; } } yyTok = getToken(); break; case Tok_Arrow: yyTok = getToken(); if ( yyTok == Tok_tr || yyTok == Tok_trUtf8 ) qWarning( "%s:%d: Cannot invoke tr() like this", ( const char * ) yyFileName, yyLineNo ); break; case Tok_Gulbrandsen: // at top level? if ( yyBraceDepth == ( int ) namespaces.count() && yyParenDepth == 0 ) functionContext = prefix; yyTok = getToken(); break; case Tok_RightBrace: case Tok_Semicolon: if ( yyBraceDepth >= 0 && yyBraceDepth + 1 == ( int ) namespaces.count() ) namespaces.remove( namespaces.fromLast() ); if ( yyBraceDepth == ( int ) namespaces.count() ) { if ( missing_Q_OBJECT ) { if ( needs_Q_OBJECT.contains( functionContext ) ) { qWarning( "%s:%d: Class '%s' lacks OBJECTDEF macro", ( const char * ) yyFileName, yyLineNo, ( const char * ) functionContext ); } else { lacks_Q_OBJECT.insert( functionContext, 0 ); } } functionContext = defaultContext; missing_Q_OBJECT = FALSE; } yyTok = getToken(); break; default: yyTok = getToken(); } } if ( yyBraceDepth != 0 ) fprintf( stderr, "%s:%d: Unbalanced braces in C++ code (or abuse of the C++" " preprocessor)\n", ( const char * ) yyFileName, yyBraceLineNo ); else if ( yyParenDepth != 0 ) fprintf( stderr, "%s:%d: Unbalanced parentheses in C++ code (or abuse of the C++" " preprocessor)\n", ( const char * ) yyFileName, yyParenLineNo ); } void fetchtr_cpp( const char* fileName, MetaTranslator* tor, const char* defaultContext, bool mustExist ) { yyInFile = fopen( fileName, "r" ); if ( yyInFile == 0 ) { if ( mustExist ) fprintf( stderr, "lupdate error: Cannot open C++ source file '%s': %s\n", fileName, strerror( errno ) ); return; } startTokenizer( fileName, getCharFromFile ); parse( tor, 0, defaultContext ); fclose( yyInFile ); } /* In addition to C++, we support Qt Designer UI files. */ /* Fetches tr() calls in C++ code in UI files (inside "<function>" tag). This mechanism is obsolete. */ void fetchtr_inlined_cpp( const char* fileName, const QString& in, MetaTranslator* tor, const char* context ) { yyInStr = in; startTokenizer( fileName, getCharFromString ); parse( tor, context, 0 ); yyInStr = QString::null; } class UiHandler : public QXmlDefaultHandler { public: UiHandler( MetaTranslator* translator, const char* fileName ) : tor( translator ), fname( fileName ), comment( "" ) { } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); private: void flush(); MetaTranslator *tor; QCString fname; QString context; QString source; QString comment; QString accum; }; bool UiHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString( "item" ) ) { flush(); if ( !atts.value( QString( "text" ) ).isEmpty() ) source = atts.value( QString( "text" ) ); } else if ( qName == QString( "string" ) ) { flush(); } accum.truncate( 0 ); return TRUE; } bool UiHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { accum.replace( QRegExp( QString( "\r\n" ) ), "\n" ); if ( qName == QString( "class" ) ) { if ( context.isEmpty() ) context = accum; } else if ( qName == QString( "string" ) ) { source = accum; } else if ( qName == QString( "comment" ) ) { comment = accum; flush(); } else if ( qName == QString( "function" ) ) { fetchtr_inlined_cpp( ( const char * ) fname, accum, tor, context.latin1() ); } else { flush(); } return TRUE; } bool UiHandler::characters( const QString& ch ) { accum += ch; return TRUE; } bool UiHandler::fatalError( const QXmlParseException& exception ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().latin1() ); fprintf( stderr, "XML error: %s\n", msg.latin1() ); return FALSE; } void UiHandler::flush() { if ( !context.isEmpty() && !source.isEmpty() ) tor->insert( MetaTranslatorMessage( context.utf8(), source.utf8(), comment.utf8(), QString::null, TRUE ) ); source.truncate( 0 ); comment.truncate( 0 ); } void fetchtr_ui( const char* fileName, MetaTranslator* tor, const char * /* defaultContext */, bool mustExist ) { QFile f( fileName ); if ( !f.open( IO_ReadOnly ) ) { if ( mustExist ) fprintf( stderr, "lupdate error: cannot open UI file '%s': %s\n", fileName, strerror( errno ) ); return; } QTextStream t( &f ); QXmlInputSource in( t ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", FALSE ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", TRUE ); reader.setFeature( "http://trolltech.com/xml/features/report-whitespace" "-only-CharData", FALSE ); QXmlDefaultHandler *hand = new UiHandler( tor, fileName ); reader.setContentHandler( hand ); reader.setErrorHandler( hand ); if ( !reader.parse( in ) ) fprintf( stderr, "%s: Parse error in UI file\n", fileName ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); delete hand; f.close(); } --- NEW FILE: fetchtrwp.cpp --- #include <metatranslator.h> #include <qfile.h> #include <qregexp.h> #include <qstring.h> #include <qtextstream.h> #include <qvaluestack.h> #include <qregexp.h> #include <qxml.h> #include <ctype.h> #include <errno.h> #include <stdio.h> #include <string.h> void fetchtr_py( const char* fileName, MetaTranslator* tor, const char* /*defaultContext*/, bool mustExist ) { static QRegExp matchtr("\\W(tr)\\s{0,1}\\("); static QRegExp stringDelimiter("(\"?|\'?)"); static QString context("@pythonscript"); QFile f( fileName ); if ( !f.open( IO_ReadOnly ) ) { if ( mustExist ) fprintf( stderr, "translationUpdate error: Cannot open Python source file '%s': %s\n", fileName, f.errorString() ); return; } QString content = QString( f.readAll() ); content.replace( QRegExp("#[^\n]*"), "" );; // remove single line comments int pos = 0; while ( ( pos = matchtr.search(content, pos) ) != -1 ) { QString message = content.mid(pos + matchtr.matchedLength()); int start = 0, end = 0; if ( ( start = stringDelimiter.search(message) ) == -1 ) { pos += matchtr.matchedLength(); continue; } QString startDelimiter = message.mid( start, stringDelimiter.matchedLength() ); end = message.find( startDelimiter, start + startDelimiter.length() ); if ( end == -1 ) { fprintf( stderr, "translationUpdate error: Open string in tr() '%s': %i\n", fileName, pos ); return; } QString source = message.mid( start + startDelimiter.length(), end - startDelimiter.length() ); if ( !source.isEmpty() ) tor->insert( MetaTranslatorMessage( context.utf8(), source.utf8(), QString(fileName).utf8(), QString::null, TRUE ) ); pos += QMAX( end, matchtr.matchedLength() ); } } class DefinitionHandler : public QXmlDefaultHandler { public: DefinitionHandler( MetaTranslator* translator, const char* fileName ) : tor( translator ), fname( fileName ), comment( "" ) { context = "@definitions"; } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); private: void flush(); MetaTranslator *tor; QCString fname; QString context; QString source; QString comment; QString accum; }; bool DefinitionHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& /* atts */ ) { if ( qName == QString( "title" ) ) { flush(); } accum.truncate( 0 ); return TRUE; } bool DefinitionHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { accum.replace( QRegExp( QString( "\r\n" ) ), "\n" ); if ( qName == QString( "title" ) ) { source = accum; } else { flush(); } return TRUE; } bool DefinitionHandler::characters( const QString& ch ) { accum += ch; return TRUE; } bool DefinitionHandler::fatalError( const QXmlParseException& exception ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().latin1() ); fprintf( stderr, "XML error: %s\n", msg.latin1() ); return FALSE; } void DefinitionHandler::flush() { if ( !context.isEmpty() && !source.isEmpty() ) tor->insert( MetaTranslatorMessage( context.utf8(), source.utf8(), comment.utf8(), QString::null, TRUE ) ); source.truncate( 0 ); comment.truncate( 0 ); } void fetchtr_xml( const char* fileName, MetaTranslator* tor, const char* /* defaultContext */, bool mustExist ) { QFile f( fileName ); if ( !f.open( IO_ReadOnly ) ) { if ( mustExist ) fprintf( stderr, "translationupdate error: cannot open XML file '%s': %s\n", fileName, strerror( errno ) ); return; } QTextStream t( &f ); QXmlInputSource in( t ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", FALSE ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", TRUE ); reader.setFeature( "http://trolltech.com/xml/features/report-whitespace-only-CharData", FALSE ); QXmlDefaultHandler *hand = new DefinitionHandler( tor, fileName ); reader.setContentHandler( hand ); reader.setErrorHandler( hand ); if ( !reader.parse( in ) ) fprintf( stderr, "%s: Parse error in XML file\n", fileName ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); delete hand; f.close(); } --- NEW FILE: proparser.cpp --- /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of Qt Linguist. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ** licenses may use this file in accordance with the Qt Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** See http://www.trolltech.com/pricing.html or email sa...@tr... for ** information about Qt Commercial License Agreements. ** ** Contact in...@tr... if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "proparser.h" #include <qdir.h> #include <qfile.h> #include <qfileinfo.h> #include <qregexp.h> #include <qstringlist.h> #include <qtextstream.h> #ifdef Q_OS_UNIX #include <unistd.h> #endif #ifdef Q_OS_WIN32 #define QT_POPEN _popen #else #define QT_POPEN popen #endif QString loadFile( const QString& fileName ) { QFile file( fileName ); if ( !file.open( IO_ReadOnly ) ) { fprintf( stderr, "error: Cannot load '%s': %s\n", file.name().latin1(), file.errorString().latin1() ); return QString(); } QTextStream in( &file ); return in.read(); } QMap<QString, QString> proFileTagMap( const QString& text ) { QString t = text; QMap<QString, QString> tagMap; bool stillProcess = true; // If include() has a $$tag then we need to reprocess while ( stillProcess ) { /* Strip any commments before we try to include. We still need to do it after we include to make sure the included file does not have comments */ t.replace( QRegExp( QString( "#[^\n]*\n" ) ), QString( " " ) ); /* Process include() commands. $$PWD is a special case so we have to change it while we know where the included file is. */ QRegExp callToInclude( "include\\s*\\(\\s*([^()\\s]+)\\s*\\)" ); int i = 0; while ( ( i = callToInclude.search( t, i ) ) != -1 ) { bool doneWithVar = false; QString fileName = callToInclude.cap( 1 ); QString after = fileName.replace( "$$PWD", QDir::currentDirPath() ); if ( !tagMap.isEmpty() && after.contains( "$$" ) ) { QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); int ii = 0; while ( ( ii = after.find( var, ii ) ) != -1 ) { if ( tagMap.contains( var.cap( 1 ) ) ) { after.replace( ii, var.cap( 0 ).length(), tagMap[var.cap( 1 )] ); } else { // Couldn't find it doneWithVar = true; break; } } } if ( doneWithVar || !after.contains( "$$" ) ) { after = loadFile( after ); QFileInfo fi( callToInclude.cap( 1 ) ); after.replace( "$$PWD", fi.dirPath() ); t.replace( i, callToInclude.matchedLength(), after ); } i += after.length(); } /* Strip comments, merge lines ending with backslash, add spaces around '=' and '+=', replace '\n' with ';', and simplify white spaces. */ t.replace( QRegExp( QString( "#[^\n]*\n" ) ), QString( " " ) ); t.replace( QRegExp( QString( "\\\\[^\n\\S]*\n" ) ), QString( " " ) ); t.replace( "=", QString( " = " ) ); t.replace( "+ =", QString( " += " ) ); t.replace( "\n", QString( ";" ) ); t = t.simplifyWhiteSpace(); /* Populate tagMap with 'key = value' entries. */ QStringList lines = QStringList::split( QChar( ';' ), t ); QStringList::Iterator line; for ( line = lines.begin(); line != lines.end(); ++line ) { QStringList toks = QStringList::split( QChar( ' ' ), *line ); if ( toks.count() >= 3 && ( toks[1] == QString( "=" ) || toks[1] == QString( "+=" ) ) ) { QString tag = toks.first(); int k = tag.findRev( QChar( ':' ) ); // as in 'unix:' if ( k != -1 ) tag = tag.mid( k + 1 ); toks.remove( toks.begin() ); QString action = toks.first(); toks.remove( toks.begin() ); if ( tagMap.contains( tag ) ) { if ( action == QString( "=" ) ) tagMap.replace( tag, toks.join( QChar( ' ' ) ) ); else tagMap[tag] += QChar( ' ' ) + toks.join( QChar( ' ' ) ); } else { tagMap[tag] = toks.join( QChar( ' ' ) ); } } } /* Expand $$variables within the 'value' part of a 'key = value' pair. */ QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); QMap<QString, QString>::Iterator it; for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { int i = 0; while ( ( i = var.search( ( *it ), i ) ) != -1 ) { int len = var.matchedLength(); QString invocation = var.cap( 1 ); QString after; if ( invocation == "system" ) { // skip system(); it will be handled in the next pass ++i; } else { if ( tagMap.contains( invocation ) ) after = tagMap[invocation]; else if ( invocation.lower() == "pwd" ) after = QDir::currentDirPath(); ( *it ).replace( i, len, after ); i += after.length(); } } } /* Execute system() calls. */ QRegExp callToSystem( "\\$\\$system\\s*\\(([^()]*)\\)" ); for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { int i = 0; while ( ( i = callToSystem.search( ( *it ), i ) ) != -1 ) { /* This code is stolen from qmake's project.cpp file. Ideally we would use the same parser, so we wouldn't have this code duplication. */ QString after; char buff[256]; FILE *proc = QT_POPEN( callToSystem.cap( 1 ).latin1(), "r" ); while ( proc && !feof( proc ) ) { int read_in = fread( buff, 1, 255, proc ); if ( !read_in ) break; for ( int i = 0; i < read_in; i++ ) { if ( buff[i] == '\n' || buff[i] == '\t' ) buff[i] = ' '; } buff[read_in] = '\0'; after += buff; } ( *it ).replace( i, callToSystem.matchedLength(), after ); i += after.length(); } } stillProcess = callToInclude.search( t ) != -1; } return tagMap; } --- NEW FILE: sametexth.cpp --- /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of Qt Linguist. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ** licenses may use this file in accordance with the Qt Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** See http://www.trolltech.com/pricing.html or email sa...@tr... for ** information about Qt Commercial License Agreements. ** ** Contact in...@tr... if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include <metatranslator.h> #include <qcstring.h> #include <qmap.h> typedef QMap<QCString, MetaTranslatorMessage> TMM; typedef QValueList<MetaTranslatorMessage> TML; /* Augments a MetaTranslator with trivially derived translations. For example, if "Enabled:" is consistendly translated as "Eingeschaltet:" no matter the context or the comment, "Eingeschaltet:" is added as the translation of any untranslated "Enabled:" text and is marked Unfinished. */ void applySameTextHeuristic( MetaTranslator* tor, bool verbose ) { TMM translated; TMM avoid; TMM::Iterator t; TML untranslated; TML::Iterator u; TML all = tor->messages(); TML::Iterator it; int inserted = 0; for ( it = all.begin(); it != all.end(); ++it ) { if ( ( *it ).type() == MetaTranslatorMessage::Unfinished ) { if ( ( *it ).translation().isEmpty() ) untranslated.append( *it ); } else { QCString key = ( *it ).sourceText(); t = translated.find( key ); if ( t != translated.end() ) { /* The same source text is translated at least two different ways. Do nothing then. */ if ( ( *t ).translation() != ( *it ).translation() ) { translated.remove( key ); avoid.insert( key, *it ); } } else if ( !avoid.contains( key ) && !( *it ).translation().isEmpty() ) { translated.insert( key, *it ); } } } for ( u = untranslated.begin(); u != untranslated.end(); ++u ) { QCString key = ( *u ).sourceText(); t = translated.find( key ); if ( t != translated.end() ) { MetaTranslatorMessage m( *u ); m.setTranslation( ( *t ).translation() ); tor->insert( m ); inserted++; } } if ( verbose && inserted != 0 ) fprintf( stderr, " same-text heuristic provided %d translation%s\n", inserted, inserted == 1 ? "" : "s" ); } --- NEW FILE: metatranslator.cpp --- /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of Qt Linguist. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ** licenses may use this file in accordance with the Qt Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** See http://www.trolltech.com/pricing.html or email sa...@tr... for ** information about Qt Commercial License Agreements. ** ** Contact in...@tr... if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "metatranslator.h" #include <qapplication.h> #include <qcstring.h> #include <qfile.h> #include <qmessagebox.h> #include <qtextcodec.h> #include <qtextstream.h> #include <qxml.h> static bool encodingIsUtf8( const QXmlAttributes& atts ) { for ( int i = 0; i < atts.length(); i++ ) { // utf8="true" is a pre-3.0 syntax if ( atts.qName( i ) == QString( "utf8" ) ) { return ( atts.value( i ) == QString( "true" ) ); } else if ( atts.qName( i ) == QString( "encoding" ) ) { return ( atts.value( i ) == QString( "UTF-8" ) ); } } return FALSE; } class TsHandler : public QXmlDefaultHandler { public: TsHandler( MetaTranslator* translator ) : tor( translator ), type( MetaTranslatorMessage::Finished ), inMessage( FALSE ), ferrorCount( 0 ), contextIsUtf8( FALSE ), messageIsUtf8( FALSE ) { } virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ); virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ); virtual bool characters( const QString& ch ); virtual bool fatalError( const QXmlParseException& exception ); private: MetaTranslator *tor; MetaTranslatorMessage::Type type; bool inMessage; QString context; QString source; QString comment; QString translation; QString accum; int ferrorCount; bool contextIsUtf8; bool messageIsUtf8; }; bool TsHandler::startElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName, const QXmlAttributes& atts ) { if ( qName == QString( "byte" ) ) { for ( int i = 0; i < atts.length(); i++ ) { if ( atts.qName( i ) == QString( "value" ) ) { QString value = atts.value( i ); int base = 10; if ( value.startsWith( "x" ) ) { base = 16; value = value.mid( 1 ); } int n = value.toUInt( 0, base ); if ( n != 0 ) accum += QChar( n ); } } } else { if ( qName == QString( "context" ) ) { context.truncate( 0 ); source.truncate( 0 ); comment.truncate( 0 ); translation.truncate( 0 ); contextIsUtf8 = encodingIsUtf8( atts ); } else if ( qName == QString( "message" ) ) { inMessage = TRUE; type = MetaTranslatorMessage::Finished; source.truncate( 0 ); comment.truncate( 0 ); translation.truncate( 0 ); messageIsUtf8 = encodingIsUtf8( atts ); } else if ( qName == QString( "translation" ) ) { for ( int i = 0; i < atts.length(); i++ ) { if ( atts.qName( i ) == QString( "type" ) ) { if ( atts.value( i ) == QString( "unfinished" ) ) type = MetaTranslatorMessage::Unfinished; else if ( atts.value( i ) == QString( "obsolete" ) ) type = MetaTranslatorMessage::Obsolete; else type = MetaTranslatorMessage::Finished; } } } accum.truncate( 0 ); } return TRUE; } bool TsHandler::endElement( const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName ) { if ( qName == QString( "codec" ) || qName == QString( "defaultcodec" ) ) { // "codec" is a pre-3.0 syntax tor->setCodec( accum ); } else if ( qName == QString( "name" ) ) { context = accum; } else if ( qName == QString( "source" ) ) { source = accum; } else if ( qName == QString( "comment" ) ) { if ( inMessage ) { comment = accum; } else { if ( contextIsUtf8 ) tor->insert( MetaTranslatorMessage( context.utf8(), ContextComment, accum.utf8(), QString::null, TRUE, MetaTranslatorMessage::Unfinished ) ); else tor->insert( MetaTranslatorMessage( context.ascii(), ContextComment, accum.ascii(), QString::null, FALSE, MetaTranslatorMessage::Unfinished ) ); } } else if ( qName == QString( "translation" ) ) { translation = accum; } else if ( qName == QString( "message" ) ) { if ( messageIsUtf8 ) tor->insert( MetaTranslatorMessage( context.utf8(), source.utf8(), comment.utf8(), translation, TRUE, type ) ); else tor->insert( MetaTranslatorMessage( context.ascii(), source.ascii(), comment.ascii(), translation, FALSE, type ) ); inMessage = FALSE; } return TRUE; } bool TsHandler::characters( const QString& ch ) { QString t = ch; t.replace( "\r", "" ); accum += t; return TRUE; } bool TsHandler::fatalError( const QXmlParseException& exception ) { if ( ferrorCount++ == 0 ) { QString msg; msg.sprintf( "Parse error at line %d, column %d (%s).", exception.lineNumber(), exception.columnNumber(), exception.message().latin1() ); if ( qApp == 0 ) fprintf( stderr, "XML error: %s\n", msg.latin1() ); else QMessageBox::information( qApp->mainWidget(), QObject::tr( "Qt Linguist" ), msg ); } return FALSE; } static QString numericEntity( int ch ) { return QString( ch <= 0x20 ? "<byte value=\"x%1\"/>" : "&#x%1;" ) .arg( ch, 0, 16 ); } static QString protect( const QCString& str ) { QString result; int len = ( int ) str.length(); for ( int k = 0; k < len; k++ ) { switch ( str[k] ) { case '\"': result += QString( """ ); break; case '&': result += QString( "&" ); break; case '>': result += QString( ">" ); break; case '<': result += QString( "<" ); break; case '\'': result += QString( "'" ); break; default: if ( ( uchar ) str[k] < 0x20 && str[k] != '\n' ) result += numericEntity( ( uchar ) str[k] ); else result += str[k]; } } return result; } static QString evilBytes( const QCString& str, bool utf8 ) { if ( utf8 ) { return protect( str ); } else { QString result; QCString t = protect( str ).latin1(); int len = ( int ) t.length(); for ( int k = 0; k < len; k++ ) { if ( ( uchar ) t[k] >= 0x7f ) result += numericEntity( ( uchar ) t[k] ); else result += QChar( t[k] ); } return result; } } MetaTranslatorMessage::MetaTranslatorMessage() : utfeight( FALSE ), ty( Unfinished ) { } MetaTranslatorMessage::MetaTranslatorMessage( const char* context, const char* sourceText, const char* comment, const QString& translation, bool utf8, Type type ) : QTranslatorMessage( context, sourceText, comment, translation ), utfeight( FALSE ), ty( type ) { /* Don't use UTF-8 if it makes no difference. UTF-8 should be reserved for the real problematic case: non-ASCII (possibly non-Latin-1) characters in .ui files. */ if ( utf8 ) { if ( sourceText != 0 ) { int i = 0; while ( sourceText[i] != '\0' ) { if ( ( uchar ) sourceText[i] >= 0x80 ) { utfeight = TRUE; break; } i++; } } if ( !utfeight && comment != 0 ) { int i = 0; while ( comment[i] != '\0' ) { if ( ( uchar ) comment[i] >= 0x80 ) { utfeight = TRUE; break; } i++; } } } } MetaTranslatorMessage::MetaTranslatorMessage( const MetaTranslatorMessage& m ) : QTranslatorMessage( m ), utfeight( m.utfeight ), ty( m.ty ) { } MetaTranslatorMessage& MetaTranslatorMessage::operator=( const MetaTranslatorMessage& m ) { QTranslatorMessage::operator = ( m ); utfeight = m.utfeight; ty = m.ty; return *this; } bool MetaTranslatorMessage::operator==( const MetaTranslatorMessage& m ) const { return qstrcmp( context(), m.context() ) == 0 && qstrcmp( sourceText(), m.sourceText() ) == 0 && qstrcmp( comment(), m.comment() ) == 0; } bool MetaTranslatorMessage::operator<( const MetaTranslatorMessage& m ) const { int delta = qstrcmp( context(), m.context() ); if ( delta == 0 ) delta = qstrcmp( sourceText(), m.sourceText() ); if ( delta == 0 ) delta = qstrcmp( comment(), m.comment() ); return delta < 0; } MetaTranslator::MetaTranslator() { clear(); } MetaTranslator::MetaTranslator( const MetaTranslator& tor ) : mm( tor.mm ), codecName( tor.codecName ), codec( tor.codec ) { } MetaTranslator& MetaTranslator::operator=( const MetaTranslator& tor ) { mm = tor.mm; codecName = tor.codecName; codec = tor.codec; return *this; } void MetaTranslator::clear() { mm.clear(); codecName = "ISO-8859-1"; codec = 0; } bool MetaTranslator::load( const QString& filename ) { QFile f( filename ); if ( !f.open( IO_ReadOnly ) ) return FALSE; QTextStream t( &f ); QXmlInputSource in( t ); QXmlSimpleReader reader; reader.setFeature( "http://xml.org/sax/features/namespaces", FALSE ); reader.setFeature( "http://xml.org/sax/features/namespace-prefixes", TRUE ); reader.setFeature( "http://trolltech.com/xml/features/report-whitespace" "-only-CharData", FALSE ); QXmlDefaultHandler *hand = new TsHandler( this ); reader.setContentHandler( hand ); reader.setErrorHandler( hand ); bool ok = reader.parse( in ); reader.setContentHandler( 0 ); reader.setErrorHandler( 0 ); delete hand; f.close(); return ok; } bool MetaTranslator::save( const QString& filename ) const { QFile f( filename ); if ( !f.open( IO_WriteOnly ) ) return FALSE; QTextStream t( &f ); t.setCodec( QTextCodec::codecForName( "ISO-8859-1" ) ); t << "<!DOCTYPE TS><TS>\n"; if ( codecName != "ISO-8859-1" ) t << "<defaultcodec>" << codecName << "</defaultcodec>\n"; TMM::ConstIterator m = mm.begin(); while ( m != mm.end() ) { TMMInv inv; TMMInv::Iterator i; bool contextIsUtf8 = m.key().utf8(); QCString context = m.key().context(); QCString comment = ""; do { if ( QCString( m.key().sourceText() ) == ContextComment ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) { contextIsUtf8 = m.key().utf8(); comment = QCString( m.key().comment() ); } } else { inv.insert( *m, m.key() ); } } while ( ++m != mm.end() && QCString( m.key().context() ) == context ); t << "<context"; if ( contextIsUtf8 ) t << " encoding=\"UTF-8\""; t << ">\n"; t << " <name>" << evilBytes( context, contextIsUtf8 ) << "</name>\n"; if ( !comment.isEmpty() ) t << " <comment>" << evilBytes( comment, contextIsUtf8 ) << "</comment>\n"; for ( i = inv.begin(); i != inv.end(); ++i ) { // no need for such noise if ( ( *i ).type() == MetaTranslatorMessage::Obsolete && ( *i ).translation().isEmpty() ) continue; t << " <message"; if ( ( *i ).utf8() ) t << " encoding=\"UTF-8\""; t << ">\n" << " <source>" << evilBytes( ( *i ).sourceText(), ( *i ).utf8() ) << "</source>\n"; if ( !QCString( ( *i ).comment() ).isEmpty() ) t << " <comment>" << evilBytes( ( *i ).comment(), ( *i ).utf8() ) << "</comment>\n"; t << " <translation"; if ( ( *i ).type() == MetaTranslatorMessage::Unfinished ) t << " type=\"unfinished\""; else if ( ( *i ).type() == MetaTranslatorMessage::Obsolete ) t << " type=\"obsolete\""; t << ">" << protect( ( *i ).translation().utf8() ) << "</translation>\n"; t << " </message>\n"; } t << "</context>\n"; } t << "</TS>\n"; f.close(); return TRUE; } bool MetaTranslator::release( const QString& filename, bool verbose, QTranslator::SaveMode mode ) const { QTranslator tor( 0 ); int finished = 0; int unfinished = 0; int untranslated = 0; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) { if ( m.key().translation().isEmpty() ) { untranslated++; } else { if ( m.key().type() == MetaTranslatorMessage::Unfinished ) unfinished++; else finished++; QCString context = m.key().context(); QCString sourceText = m.key().sourceText(); QCString comment = m.key().comment(); QString translation = m.key().translation(); /* Drop the comment in (context, sourceText, comment), unless (context, sourceText, "") already exists, or unless we already dropped the comment of (context, sourceText, comment0). */ if ( comment.isEmpty() || contains( context, sourceText, "" ) || !tor.findMessage( context, sourceText, "" ).translation() .isNull() ) { tor.insert( m.key() ); } else { tor.insert( QTranslatorMessage( context, sourceText, "", translation ) ); } } } } bool saved = tor.save( filename, mode ); if ( saved && verbose ) fprintf( stderr, " %d finished, %d unfinished and %d untranslated messages\n", finished, unfinished, untranslated ); return saved; } bool MetaTranslator::contains( const char* context, const char* sourceText, const char* comment ) const { return mm.find( MetaTranslatorMessage( context, sourceText, comment ) ) != mm.end(); } void MetaTranslator::insert( const MetaTranslatorMessage& m ) { int pos = mm.count(); TMM::Iterator n = mm.find( m ); if ( n != mm.end() ) pos = *n; mm.replace( m, pos ); } void MetaTranslator::stripObsoleteMessages() { TMM newmm; TMM::Iterator m = mm.begin(); while ( m != mm.end() ) { if ( m.key().type() != MetaTranslatorMessage::Obsolete ) newmm.insert( m.key(), *m ); ++m; } mm = newmm; } void MetaTranslator::stripEmptyContexts() { TMM newmm; TMM::Iterator m = mm.begin(); while ( m != mm.end() ) { if ( QCString( m.key().sourceText() ) == ContextComment ) { TMM::Iterator n = m; ++n; // the context comment is followed by other messages if ( n != newmm.end() && qstrcmp( m.key().context(), n.key().context() ) == 0 ) newmm.insert( m.key(), *m ); } else { newmm.insert( m.key(), *m ); } ++m; } mm = newmm; } void MetaTranslator::setCodec( const char* name ) { const int latin1 = 4; codecName = name; codec = QTextCodec::codecForName( name ); if ( codec == 0 || codec->mibEnum() == latin1 ) codec = 0; } QString MetaTranslator::toUnicode( const char* str, bool utf8 ) const { if ( utf8 ) return QString::fromUtf8( str ); else if ( codec == 0 ) return QString( str ); else return codec->toUnicode( str ); } QValueList<MetaTranslatorMessage> MetaTranslator::messages() const { int n = mm.count(); TMM::ConstIterator *t = new TMM::ConstIterator[n + 1]; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) t[*m] = m; QValueList<MetaTranslatorMessage> val; for ( int i = 0; i < n; i++ ) val.append( t[i].key() ); delete[] t; return val; } QValueList<MetaTranslatorMessage> MetaTranslator::translatedMessages() const { QValueList<MetaTranslatorMessage> val; TMM::ConstIterator m; for ( m = mm.begin(); m != mm.end(); ++m ) { if ( m.key().type() == MetaTranslatorMessage::Finished ) val.append( m.key() ); } return val; } --- NEW FILE: merge.cpp --- /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qt Linguist. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition ** licenses may use this file in accordance with the Qt Commercial License ** Agreement provided with the Software. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WAR... [truncated message content] |
From: Correa <thi...@us...> - 2004-09-26 00:20:03
|
Update of /cvsroot/wpdev/wolfpack/tools/translationupdate In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7582/translationupdate Log Message: Directory /cvsroot/wpdev/wolfpack/tools/translationupdate added to the repository |
From: Correa <thi...@us...> - 2004-09-26 00:19:45
|
Update of /cvsroot/wpdev/wolfpack/tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7527/tools Log Message: Directory /cvsroot/wpdev/wolfpack/tools added to the repository |
From: Correa <thi...@us...> - 2004-09-25 22:57:55
|
Update of /cvsroot/wpdev/wolfpack In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20437 Modified Files: ChangeLog accounts.cpp multi.cpp server.cpp wolfpack.pro Log Message: - Human_Stablemaster inherits from Human_vendors now - Added wolfpack.tr to public Python API - Some additional user visible strings from the core are tr()'ed Index: accounts.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/accounts.cpp,v retrieving revision 1.105 retrieving revision 1.106 diff -C2 -d -r1.105 -r1.106 *** accounts.cpp 19 Sep 2004 16:25:35 -0000 1.105 --- accounts.cpp 25 Sep 2004 22:57:08 -0000 1.106 *************** *** 344,348 **** if ( !PersistentBroker::instance()->openDriver( Config::instance()->accountsDriver() ) ) { ! Console::instance()->log( LOG_ERROR, QString( "Unknown Account Database Driver '%1', check your wolfpack.xml" ).arg( Config::instance()->accountsDriver() ) ); return; } --- 344,348 ---- if ( !PersistentBroker::instance()->openDriver( Config::instance()->accountsDriver() ) ) { ! Console::instance()->log( LOG_ERROR, tr( "Unknown Account Database Driver '%1', check your wolfpack.xml" ).arg( Config::instance()->accountsDriver() ) ); return; } *************** *** 357,365 **** if ( !PersistentBroker::instance()->tableExists( "accounts" ) ) { ! Console::instance()->send( "Accounts database didn't exist! Creating one\n" ); PersistentBroker::instance()->executeQuery( createSql ); cAccount* account = createAccount( "admin", "admin" ); account->setAcl( "admin" ); ! Console::instance()->send( "Created default admin account: Login = admin, Password = admin\n" ); } --- 357,365 ---- if ( !PersistentBroker::instance()->tableExists( "accounts" ) ) { ! Console::instance()->send( tr("Accounts database didn't exist! Creating one\n") ); PersistentBroker::instance()->executeQuery( createSql ); cAccount* account = createAccount( "admin", "admin" ); account->setAcl( "admin" ); ! Console::instance()->send( tr("Created default admin account: Login = admin, Password = admin\n") ); } *************** *** 395,399 **** if ( connected ) PersistentBroker::instance()->executeQuery( "ROLLBACK;" ); ! Console::instance()->log( LOG_ERROR, QString( "Error while saving Accounts: %1." ).arg( error ) ); } catch ( ... ) --- 395,399 ---- if ( connected ) PersistentBroker::instance()->executeQuery( "ROLLBACK;" ); ! Console::instance()->log( LOG_ERROR, tr( "Error while saving Accounts: %1." ).arg( error ) ); } catch ( ... ) *************** *** 401,405 **** if ( connected ) PersistentBroker::instance()->executeQuery( "ROLLBACK;" ); ! Console::instance()->log( LOG_ERROR, "Unknown error while saving Accounts." ); } } --- 401,405 ---- if ( connected ) PersistentBroker::instance()->executeQuery( "ROLLBACK;" ); ! Console::instance()->log( LOG_ERROR, tr("Unknown error while saving Accounts.") ); } } *************** *** 410,414 **** if ( !PersistentBroker::instance()->openDriver( Config::instance()->accountsDriver() ) ) { ! throw wpException( QString( "Unknown Account Database Driver '%1', check your wolfpack.xml" ).arg( Config::instance()->accountsDriver() ) ); } --- 410,414 ---- if ( !PersistentBroker::instance()->openDriver( Config::instance()->accountsDriver() ) ) { ! throw wpException( tr( "Unknown Account Database Driver '%1', check your wolfpack.xml" ).arg( Config::instance()->accountsDriver() ) ); } *************** *** 420,428 **** if ( !PersistentBroker::instance()->tableExists( "accounts" ) ) { ! Console::instance()->send( "Accounts database didn't exist! Creating one\n" ); PersistentBroker::instance()->executeQuery( createSql ); cAccount* account = createAccount( "admin", "admin" ); account->setAcl( "admin" ); ! Console::instance()->send( "Created default admin account: Login = admin, Password = admin\n" ); } --- 420,428 ---- if ( !PersistentBroker::instance()->tableExists( "accounts" ) ) { ! Console::instance()->send( tr("Accounts database didn't exist! Creating one\n") ); PersistentBroker::instance()->executeQuery( createSql ); cAccount* account = createAccount( "admin", "admin" ); account->setAcl( "admin" ); ! Console::instance()->send( tr("Created default admin account: Login = admin, Password = admin\n") ); } *************** *** 457,465 **** { account->password_ = cMd5::fastDigest( account->password_ ); ! Console::instance()->log( LOG_NOTICE, QString( "Hashed account password for '%1'.\n" ).arg( account->login_ ) ); } else { ! Console::instance()->log( LOG_NOTICE, QString( "Account '%1' has an unhashed password.\n" ).arg( account->login_ ) ); } } --- 457,465 ---- { account->password_ = cMd5::fastDigest( account->password_ ); ! Console::instance()->log( LOG_NOTICE, tr( "Hashed account password for '%1'.\n" ).arg( account->login_ ) ); } else { ! Console::instance()->log( LOG_NOTICE, tr( "Account '%1' has an unhashed password.\n" ).arg( account->login_ ) ); } } *************** *** 473,481 **** catch ( QString& error ) { ! throw wpException( QString( "Error while loading Accounts: %1" ).arg( error ) ); } catch ( ... ) { ! throw wpException( "Unknown error while loading Accounts" ); } --- 473,481 ---- catch ( QString& error ) { ! throw wpException( tr( "Error while loading Accounts: %1" ).arg( error ) ); } catch ( ... ) { ! throw wpException( tr("Unknown error while loading Accounts") ); } Index: multi.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/multi.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** multi.cpp 15 Sep 2004 02:15:28 -0000 1.15 --- multi.cpp 25 Sep 2004 22:57:09 -0000 1.16 *************** *** 103,107 **** else { ! Console::instance()->log( LOG_ERROR, QString( "Unable to create unscripted item: %1\n" ).arg( id ) ); } --- 103,107 ---- else { ! Console::instance()->log( LOG_ERROR, tr( "Unable to create unscripted item: %1\n" ).arg( id ) ); } Index: wolfpack.pro =================================================================== RCS file: /cvsroot/wpdev/wolfpack/wolfpack.pro,v retrieving revision 1.212 retrieving revision 1.213 diff -C2 -d -r1.212 -r1.213 *** wolfpack.pro 24 Sep 2004 04:47:38 -0000 1.212 --- wolfpack.pro 25 Sep 2004 22:57:09 -0000 1.213 *************** *** 199,200 **** --- 199,205 ---- LICENSE.GPL + # used by tools/translationupdate, our own version of lupdate + # WPDEFINITIONS is the folder where xml definitons are. + # WPSCRIPTS is the folder where Python scripts are. + WPDEFINITIONS = ../definitions + WPSCRIPTS = ../scripts Index: server.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/server.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** server.cpp 25 Sep 2004 02:03:20 -0000 1.28 --- server.cpp 25 Sep 2004 22:57:09 -0000 1.29 *************** *** 209,233 **** // Register Components ! registerComponent( Config::instance(), "configuration", true, false ); // We want to start this independently //registerComponent(PythonEngine::instance(), "python", false, true, "configuration"); ! registerComponent( Definitions::instance(), "definitions", true, false, "configuration" ); ! registerComponent( ScriptManager::instance(), "scripts", true, false, "definitions" ); ! registerComponent( ContextMenus::instance(), "contextmenus", true, false, "scripts" ); ! registerComponent( SpawnRegions::instance(), "spawnregions", true, false, "definitions" ); ! registerComponent( Territories::instance(), "territories", true, false, "definitions" ); ! registerComponent( Maps::instance(), "maps", true, false, "configuration" ); ! registerComponent( SectorMaps::instance(), "sectormaps", false, true, "maps" ); ! registerComponent( TileCache::instance(), "tiledata", true, false, "configuration" ); ! registerComponent( MultiCache::instance(), "multis", true, false, "configuration" ); // Accounts come before world ! registerComponent( Accounts::instance(), "accounts", true, false ); ! registerComponent( World::instance(), "world", false, true ); ! registerComponent( Network::instance(), "network", true, false ); } --- 209,233 ---- // Register Components ! registerComponent( Config::instance(), QT_TR_NOOP("configuration"), true, false ); // We want to start this independently //registerComponent(PythonEngine::instance(), "python", false, true, "configuration"); ! registerComponent( Definitions::instance(), QT_TR_NOOP("definitions"), true, false, "configuration" ); ! registerComponent( ScriptManager::instance(), QT_TR_NOOP("scripts"), true, false, "definitions" ); ! registerComponent( ContextMenus::instance(), QT_TR_NOOP("contextmenus"), true, false, "scripts" ); ! registerComponent( SpawnRegions::instance(), QT_TR_NOOP("spawnregions"), true, false, "definitions" ); ! registerComponent( Territories::instance(), QT_TR_NOOP("territories"), true, false, "definitions" ); ! registerComponent( Maps::instance(), QT_TR_NOOP("maps"), true, false, "configuration" ); ! registerComponent( SectorMaps::instance(), QT_TR_NOOP("sectormaps"), false, true, "maps" ); ! registerComponent( TileCache::instance(), QT_TR_NOOP("tiledata"), true, false, "configuration" ); ! registerComponent( MultiCache::instance(), QT_TR_NOOP("multis"), true, false, "configuration" ); // Accounts come before world ! registerComponent( Accounts::instance(), QT_TR_NOOP("accounts"), true, false ); ! registerComponent( World::instance(), QT_TR_NOOP("world"), false, true ); ! registerComponent( Network::instance(), QT_TR_NOOP("network"), true, false ); } *************** *** 274,286 **** } - // Start Python - PythonEngine::instance()->load(); - - // Parse the parameters. - Getopts::instance()->parse_options( argc, argv ); - - // Print a header and useful version informations - setupConsole(); - #if !defined( QT_NO_TRANSLATION ) // Start the QT translator --- 274,277 ---- *************** *** 301,304 **** --- 292,304 ---- #endif + // Start Python + PythonEngine::instance()->load(); + + // Parse the parameters. + Getopts::instance()->parse_options( argc, argv ); + + // Print a header and useful version informations + setupConsole(); + // Load all subcomponents try *************** *** 623,627 **** if ( !component->isSilent() ) { ! Console::instance()->sendProgress( tr( "Reloading %1" ).arg( component->getName() ) ); } --- 623,627 ---- if ( !component->isSilent() ) { ! Console::instance()->sendProgress( tr( "Reloading %1" ).arg( tr(component->getName()) ) ); } Index: ChangeLog =================================================================== RCS file: /cvsroot/wpdev/wolfpack/ChangeLog,v retrieving revision 1.78 retrieving revision 1.79 diff -C2 -d -r1.78 -r1.79 *** ChangeLog 25 Sep 2004 21:15:46 -0000 1.78 --- ChangeLog 25 Sep 2004 22:57:08 -0000 1.79 *************** *** 56,59 **** --- 56,61 ---- - Fixed a gump response vulnerability. - Fixed console bugs. + - Added translation support to Python scripts. + - Fixed stablemaster speech handling ( Stablemasters are also vendors ) Wolfpack 12.9.10 Beta (10. September 2004) |
From: Correa <thi...@us...> - 2004-09-25 22:57:21
|
Update of /cvsroot/wpdev/wolfpack/win In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20437/win Modified Files: console_win.cpp Log Message: - Human_Stablemaster inherits from Human_vendors now - Added wolfpack.tr to public Python API - Some additional user visible strings from the core are tr()'ed Index: console_win.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/win/console_win.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** console_win.cpp 25 Sep 2004 21:15:47 -0000 1.30 --- console_win.cpp 25 Sep 2004 22:57:11 -0000 1.31 *************** *** 334,338 **** Network::instance()->unlock(); ! Console::instance()->send( QString( "Total Users Online: %1\n" ).arg( i ) ); break; --- 334,338 ---- Network::instance()->unlock(); ! Console::instance()->send( tr( "Total Users Online: %1\n" ).arg( i ) ); break; *************** *** 643,647 **** if ( returnValue_ != 0 ) { ! Console::instance()->send( ("\nThe server has been shut down. You can close this window now.\n") ); canClose = true; } --- 643,647 ---- if ( returnValue_ != 0 ) { ! Console::instance()->send( tr("\nThe server has been shut down. You can close this window now.\n") ); canClose = true; } |
From: Correa <thi...@us...> - 2004-09-25 22:57:20
|
Update of /cvsroot/wpdev/wolfpack/python In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20437/python Modified Files: global.cpp Log Message: - Human_Stablemaster inherits from Human_vendors now - Added wolfpack.tr to public Python API - Some additional user visible strings from the core are tr()'ed Index: global.cpp =================================================================== RCS file: /cvsroot/wpdev/wolfpack/python/global.cpp,v retrieving revision 1.161 retrieving revision 1.162 diff -C2 -d -r1.161 -r1.162 *** global.cpp 21 Sep 2004 05:28:05 -0000 1.161 --- global.cpp 25 Sep 2004 22:57:10 -0000 1.162 *************** *** 1794,1797 **** --- 1794,1814 ---- } + /* + \function wolfpack.tr + \param message The message to be translated. + \return The translated message into the current server's language. + \description Get a message in English and translates it into the current server's language. + */ + static PyObject* wpTr(PyObject*, PyObject *args) + { + char* message = 0; + if ( !PyArg_ParseTuple( args, "s:wolfpack.tr(message)", &message ) ) + { + return 0; + } + return QString2Python( qApp->translate( "@pythonscript", message ) ); + } + + static PyMethodDef wpGlobal[] = { *************** *** 1853,1856 **** --- 1870,1874 ---- { "charcount", wpCharCount, METH_NOARGS, "Returns the number of chars in the world" }, { "itemcount", wpItemCount, METH_NOARGS, "Returns the number of items in the world" }, + { "tr", wpTr, METH_VARARGS, NULL }, { NULL, NULL, 0, NULL } // Terminator |