From f986e0323e6206c04cd7ada6305cfde648034a23 Mon Sep 17 00:00:00 2001 From: vanadar Date: Tue, 4 Feb 2014 22:27:00 +0100 Subject: [PATCH 01/11] Start trad fr --- index.html | 2 + script/engine.js | 112 ++--- script/events.js | 10 +- script/events/encounters.js | 40 +- script/events/global.js | 26 +- script/events/outside.js | 92 ++-- script/events/room.js | 240 +++++------ script/events/setpieces.js | 824 ++++++++++++++++++------------------ script/outside.js | 32 +- 9 files changed, 690 insertions(+), 688 deletions(-) diff --git a/index.html b/index.html index 001e27a..4637098 100644 --- a/index.html +++ b/index.html @@ -25,6 +25,8 @@ + + diff --git a/script/engine.js b/script/engine.js index 032e976..f3a37a6 100644 --- a/script/engine.js +++ b/script/engine.js @@ -17,48 +17,48 @@ var Engine = { Perks: { 'boxer': { - desc: 'punches do more damage', - notify: 'learned to throw punches with purpose' + desc: _('punches do more damage'), + notify: _('learned to throw punches with purpose') }, 'martial artist': { - desc: 'punches do even more damage.', - notify: 'learned to fight quite effectively without weapons' + desc: _('punches do even more damage.'), + notify: _('learned to fight quite effectively without weapons') }, 'unarmed master': { - desc: 'punch twice as fast, and with even more force', - notify: 'learned to strike faster without weapons' + desc: _('punch twice as fast, and with even more force'), + notify: _('learned to strike faster without weapons') }, 'barbarian': { - desc: 'melee weapons deal more damage', - notify: 'learned to swing weapons with force' + desc: _('melee weapons deal more damage'), + notify: _('learned to swing weapons with force') }, 'slow metabolism': { - desc: 'go twice as far without eating', - notify: 'learned how to ignore the hunger' + desc: _('go twice as far without eating'), + notify: _('learned how to ignore the hunger') }, 'desert rat': { - desc: 'go twice as far without drinking', - notify: 'learned to love the dry air' + desc: _('go twice as far without drinking'), + notify: _('learned to love the dry air') }, 'evasive': { - desc: 'dodge attacks more effectively', - notify: "learned to be where they're not" + desc: _('dodge attacks more effectively'), + notify: _("learned to be where they're not") }, 'precise': { - desc: 'land blows more often', - notify: 'learned to predict their movement' + desc: _('land blows more often'), + notify: _('learned to predict their movement') }, 'scout': { - desc: 'see farther', - notify: 'learned to look ahead' + desc: _('see farther'), + notify: _('learned to look ahead') }, 'stealthy': { - desc: 'better avoid conflict in the wild', - notify: 'learned how not to be seen' + desc: _('better avoid conflict in the wild'), + notify: _('learned how not to be seen') }, 'gastronome': { - desc: 'restore more health when eating', - notify: 'learned to make the most of food' + desc: _('restore more health when eating'), + notify: _('learned to make the most of food') } }, @@ -100,31 +100,31 @@ var Engine = { $('') .addClass('lightsOff menuBtn') - .text('lights off.') + .text(_('lights off.')) .click(Engine.turnLightsOff) .appendTo(menu); $('') .addClass('menuBtn') - .text('restart.') + .text(_('restart.')) .click(Engine.confirmDelete) .appendTo(menu); $('') .addClass('menuBtn') - .text('share.') + .text(_('share.')) .click(Engine.share) .appendTo(menu); $('') .addClass('menuBtn') - .text('save.') + .text(_('save.')) .click(Engine.exportImport) .appendTo(menu); $('') .addClass('menuBtn') - .text('app store.') + .text(_('app store.')) .click(function() { window.open('https://itunes.apple.com/us/app/a-dark-room/id736683061'); }) .appendTo(menu); @@ -202,38 +202,38 @@ var Engine = { exportImport: function() { Events.startEvent({ - title: 'Export / Import', + title: _('Export / Import'), scenes: { start: { - text: ['export or import save data, for backing up', - 'or migrating computers'], + text: [_('export or import save data, for backing up'), + _('or migrating computers')], buttons: { 'export': { - text: 'export', + text: _('export'), onChoose: Engine.export64 }, 'import': { - text: 'import', + text: _('import'), nextScene: {1: 'confirm'}, }, 'cancel': { - text: 'cancel', + text: _('cancel'), nextScene: 'end' } } }, 'confirm': { - text: ['are you sure?', - 'if the code is invalid, all data will be lost.', - 'this is irreversible.'], + text: [_('are you sure?'), + _('if the code is invalid, all data will be lost.'), + _('this is irreversible.')], buttons: { 'yes': { - text: 'yes', + text: _('yes'), nextScene: 'end', onChoose: Engine.import64 }, 'no': { - text: 'no', + text: _('no'), nextScene: 'end' } } @@ -249,14 +249,14 @@ var Engine = { string64 = string64.replace(/\./g, ''); string64 = string64.replace(/\n/g, ''); Events.startEvent({ - title: 'Export', + title: _('Export'), scenes: { start: { - text: ['save this.'], + text: [_('save this.')], textarea: string64, buttons: { 'done': { - text: 'got it', + text: _('got it'), nextScene: 'end' } } @@ -266,7 +266,7 @@ var Engine = { }, import64: function() { - var string64 = prompt("put the save code here.",""); + var string64 = prompt(_("put the save code here."),""); string64 = string64.replace(/\s/g, ''); string64 = string64.replace(/\./g, ''); string64 = string64.replace(/\n/g, ''); @@ -283,18 +283,18 @@ var Engine = { confirmDelete: function() { Events.startEvent({ - title: 'Restart?', + title: _('Restart?'), scenes: { start: { - text: ['restart the game?'], + text: [_('restart the game?')], buttons: { 'yes': { - text: 'yes', + text: _('yes'), nextScene: 'end', onChoose: Engine.deleteSave }, 'no': { - text: 'no', + text: _('no'), nextScene: 'end' } } @@ -317,41 +317,41 @@ var Engine = { share: function() { Events.startEvent({ - title: 'Share', + title: _('Share'), scenes: { start: { - text: ['bring your friends.'], + text: [_('bring your friends.')], buttons: { 'facebook': { - text: 'facebook', + text: _('facebook'), nextScene: 'end', onChoose: function() { window.open('https://www.facebook.com/sharer/sharer.php?u=' + Engine.SITE_URL, 'sharer', 'width=626,height=436,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no'); } }, 'google': { - text:'google+', + text:_('google+'), nextScene: 'end', onChoose: function() { window.open('https://plus.google.com/share?url=' + Engine.SITE_URL, 'sharer', 'width=480,height=436,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no'); } }, 'twitter': { - text: 'twitter', + text: _('twitter'), onChoose: function() { window.open('https://twitter.com/intent/tweet?text=A%20Dark%20Room&url=' + Engine.SITE_URL, 'sharer', 'width=660,height=260,location=no,menubar=no,resizable=no,scrollbars=yes,status=no,toolbar=no'); }, nextScene: 'end' }, 'reddit': { - text: 'reddit', + text: _('reddit'), onChoose: function() { window.open('http://www.reddit.com/submit?url=' + Engine.SITE_URL, 'sharer', 'width=960,height=700,location=no,menubar=no,resizable=no,scrollbars=yes,status=no,toolbar=no'); }, nextScene: 'end' }, 'close': { - text: 'close', + text: _('close'), nextScene: 'end' } } @@ -385,16 +385,16 @@ var Engine = { if (darkCss == null) { $('head').append(''); Engine.turnLightsOff; - $('.lightsOff').text('lights on.'); + $('.lightsOff').text(_('lights on.')); } else if (darkCss.disabled) { darkCss.disabled = false; - $('.lightsOff').text('lights on.'); + $('.lightsOff').text(_('lights on.')); } else { $("#darkenLights").attr("disabled", "disabled"); darkCss.disabled = true; - $('.lightsOff').text('lights off.'); + $('.lightsOff').text(_('lights off.')); } }, diff --git a/script/events.js b/script/events.js index 239f406..682cfd4 100644 --- a/script/events.js +++ b/script/events.js @@ -123,7 +123,7 @@ var Events = { var btn = new Button.Button({ id: 'eat', - text: 'eat meat', + text: _('eat meat'), cooldown: cooldown, click: Events.eatMeat, cost: { 'cured meat': 1 } @@ -143,7 +143,7 @@ var Events = { var btn = new Button.Button({ id: 'meds', - text: 'use meds', + text: _('use meds'), cooldown: cooldown, click: Events.useMeds, cost: { 'medicine': 1 } @@ -453,7 +453,7 @@ var Events = { var btns = $('#buttons', Events.eventPanel()); desc.empty(); btns.empty(); - $('
').text('the ' + scene.enemy + (scene.plural ? ' are' : ' is') + ' dead.').appendTo(desc); + $('
').text(_("the {0} is dead.",scene.enemy)).appendTo(desc); Events.drawLoot(scene.loot); @@ -471,7 +471,7 @@ var Events = { Events.endEvent(); } }, - text: 'leave' + text: _('leave') }).appendTo(btns); Events.createEatMeatButton(0).appendTo(btns); @@ -808,7 +808,7 @@ var Events = { Engine.keyLock = false; // Force refocus on the body. I hate you, IE. $('body').focus(); - }); + }); }, handleStateUpdates: function(e){ diff --git a/script/events/encounters.js b/script/events/encounters.js index adcf892..fe750c8 100644 --- a/script/events/encounters.js +++ b/script/events/encounters.js @@ -4,7 +4,7 @@ Events.Encounters = [ /* Tier 1 */ { /* Snarling Beast */ - title: 'A Snarling Beast', + title: _('A Snarling Beast'), isAvailable: function() { return World.getDistance() <= 10 && World.getTerrain() == World.TILE.FOREST; }, @@ -34,12 +34,12 @@ Events.Encounters = [ chance: 0.8 } }, - notification: 'a snarling beast leaps out of the underbrush' + notification: _('a snarling beast leaps out of the underbrush') } } }, { /* Gaunt Man */ - title: 'A Gaunt Man', + title: _('A Gaunt Man'), isAvailable: function() { return World.getDistance() <= 10 && World.getTerrain() == World.TILE.BARRENS; }, @@ -69,12 +69,12 @@ Events.Encounters = [ chance: 0.5 } }, - notification: 'a gaunt man approaches, a crazed look in his eye' + notification: _('a gaunt man approaches, a crazed look in his eye') } } }, { /* Strange Bird */ - title: 'A Strange Bird', + title: _('A Strange Bird'), isAvailable: function() { return World.getDistance() <= 10 && World.getTerrain() == World.TILE.FIELD; }, @@ -104,13 +104,13 @@ Events.Encounters = [ chance: 0.8 } }, - notification: 'a strange looking bird speeds across the plains' + notification: _('a strange looking bird speeds across the plains') } } }, /* Tier 2*/ { /* Shivering Man */ - title: 'A Shivering Man', + title: _('A Shivering Man'), isAvailable: function() { return World.getDistance() > 10 && World.getDistance() <= 20 && World.getTerrain() == World.TILE.BARRENS; }, @@ -145,12 +145,12 @@ Events.Encounters = [ chance: 0.7 } }, - notification: 'a shivering man approaches and attacks with surprising strength' + notification: _('a shivering man approaches and attacks with surprising strength') } } }, { /* Man-eater */ - title: 'A Man-Eater', + title: _('A Man-Eater'), isAvailable: function() { return World.getDistance() > 10 && World.getDistance() <= 20 && World.getTerrain() == World.TILE.FOREST; }, @@ -180,12 +180,12 @@ Events.Encounters = [ chance: 0.8 } }, - notification: 'a large creature attacks, claws freshly bloodied' + notification: _('a large creature attacks, claws freshly bloodied') } } }, { /* Scavenger */ - title: 'A Scavenger', + title: _('A Scavenger'), isAvailable: function() { return World.getDistance() > 10 && World.getDistance() <= 20 && World.getTerrain() == World.TILE.BARRENS; }, @@ -220,12 +220,12 @@ Events.Encounters = [ chance: 0.1 } }, - notification: 'a scavenger draws close, hoping for an easy score' + notification: _('a scavenger draws close, hoping for an easy score') } } }, { /* Huge Lizard */ - title: 'A Huge Lizard', + title: _('A Huge Lizard'), isAvailable: function() { return World.getDistance() > 10 && World.getDistance() <= 20 && World.getTerrain() == World.TILE.FIELD; }, @@ -255,13 +255,13 @@ Events.Encounters = [ chance: 0.8 } }, - notification: 'the grass thrashes wildly as a huge lizard pushes through' + notification: _('the grass thrashes wildly as a huge lizard pushes through') } } }, /* Tier 3*/ { /* Feral Terror */ - title: 'A Feral Terror', + title: _('A Feral Terror'), isAvailable: function() { return World.getDistance() > 20 && World.getTerrain() == World.TILE.FOREST; }, @@ -291,12 +291,12 @@ Events.Encounters = [ chance: 0.8 } }, - notification: 'a beast, wilder than imagining, erupts out of the foliage' + notification: _('a beast, wilder than imagining, erupts out of the foliage') } } }, { /* Soldier */ - title: 'A Soldier', + title: _('A Soldier'), isAvailable: function() { return World.getDistance() > 20 && World.getTerrain() == World.TILE.BARRENS; }, @@ -332,12 +332,12 @@ Events.Encounters = [ chance: 0.1 } }, - notification: 'a soldier opens fire from across the desert' + notification: _('a soldier opens fire from across the desert') } } }, { /* Sniper */ - title: 'A Sniper', + title: _('A Sniper'), isAvailable: function() { return World.getDistance() > 20 && World.getTerrain() == World.TILE.FIELD; }, @@ -373,7 +373,7 @@ Events.Encounters = [ chance: 0.1 } }, - notification: 'a shot rings out, from somewhere in the long grass' + notification: _('a shot rings out, from somewhere in the long grass'à } } } diff --git a/script/events/global.js b/script/events/global.js index 85ca99a..04037d1 100644 --- a/script/events/global.js +++ b/script/events/global.js @@ -3,33 +3,33 @@ **/ Events.Global = [ { /* The Thief */ - title: 'The Thief', + title: _('The Thief'), isAvailable: function() { return (Engine.activeModule == Room || Engine.activeModule == Outside) && $SM.get('game.thieves') == 1; }, scenes: { 'start': { text: [ - 'the villagers haul a filthy man out of the store room.', - "say his folk have been skimming the supplies.", - 'say he should be strung up as an example.' + _('the villagers haul a filthy man out of the store room.'), + _("say his folk have been skimming the supplies."), + _('say he should be strung up as an example.') ], - notification: 'a thief is caught', + notification: _('a thief is caught'), buttons: { 'kill': { - text: 'hang him', + text: _('hang him'), nextScene: {1: 'hang'} }, 'spare': { - text: 'spare him', + text: _('spare him'), nextScene: {1: 'spare'} } } }, 'hang': { text: [ - 'the villagers hang the thief high in front of the store room.', - 'the point is made. in the next few days, the missing supplies are returned.' + _('the villagers hang the thief high in front of the store room.'), + _('the point is made. in the next few days, the missing supplies are returned.') ], onLoad: function() { $SM.set('game.thieves', 2); @@ -38,15 +38,15 @@ Events.Global = [ }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'spare': { text: [ - "the man says he's grateful. says he won't come around any more.", - "shares what he knows about sneaking before he goes." + _("the man says he's grateful. says he won't come around any more."), + _("shares what he knows about sneaking before he goes.") ], onLoad: function() { $SM.set('game.thieves', 2); @@ -55,7 +55,7 @@ Events.Global = [ }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } diff --git a/script/events/outside.js b/script/events/outside.js index 97dd7df..c9ee27e 100644 --- a/script/events/outside.js +++ b/script/events/outside.js @@ -3,15 +3,15 @@ **/ Events.Outside = [ { /* Ruined traps */ - title: 'A Ruined Trap', + title: _('A Ruined Trap'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.buildings["trap"]', true) > 0; }, scenes: { 'start': { text: [ - 'some of the traps have been torn apart.', - 'large prints lead away, into the forest.' + _('some of the traps have been torn apart.'), + _('large prints lead away, into the forest.') ], onLoad: function() { var numWrecked = Math.floor(Math.random() * $SM.get('game.buildings["trap"]', true)) + 1; @@ -19,34 +19,34 @@ Events.Outside = [ Outside.updateVillage(); Outside.updateTrapButton(); }, - notification: 'some traps have been destroyed', + notification: _('some traps have been destroyed'), buttons: { 'track': { - text: 'track them', + text: _('track them'), nextScene: {0.5: 'nothing', 1: 'catch'} }, 'ignore': { - text: 'ignore them', + text: _('ignore them'), nextScene: 'end' } } }, 'nothing': { text: [ - 'the tracks disappear after just a few minutes.', - 'the forest is silent.' + _('the tracks disappear after just a few minutes.'), + _('the forest is silent.') ], buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } }, 'catch': { text: [ - 'not far from the village lies a large beast, its fur matted with blood.', - 'it puts up little resistance before the knife.' + _('not far from the village lies a large beast, its fur matted with blood.'), + _('it puts up little resistance before the knife.') ], reward: { fur: 100, @@ -55,7 +55,7 @@ Events.Outside = [ }, buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } @@ -64,7 +64,7 @@ Events.Outside = [ }, { /* Sickness */ - title: 'Sickness', + title: _('Sickness'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 10 && @@ -74,37 +74,37 @@ Events.Outside = [ scenes: { 'start': { text: [ - 'a sickness is spreading through the village.', - 'medicine is needed immediately.' + _('a sickness is spreading through the village.'), + _('medicine is needed immediately.') ], buttons: { 'heal': { - text: '1 medicine', + text: _('1 medicine'), cost: { 'medicine' : 1 }, nextScene: {1: 'healed'} }, 'ignore': { - text: 'ignore it', + text: _('ignore it'), nextScene: {1: 'death'} } } }, 'healed': { text: [ - 'the sickness is cured in time.' + _('the sickness is cured in time.') ], buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } }, 'death': { text: [ - 'the sickness spreads through the village.', - 'the days are spent with burials.', - 'the nights are rent with screams.' + _('the sickness spreads through the village.'), + _('the days are spent with burials.'), + _('the nights are rent with screams.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 20) + 1; @@ -112,7 +112,7 @@ Events.Outside = [ }, buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } @@ -121,33 +121,33 @@ Events.Outside = [ }, { /* Plague */ - title: 'Plague', + title: _('Plague'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 50 && $SM.get('stores.medicine', true) > 0; }, scenes: { 'start': { text: [ - 'a terrible plague is fast spreading through the village.', - 'medicine is needed immediately.' + _('a terrible plague is fast spreading through the village.'), + _('medicine is needed immediately.') ], buttons: { 'heal': { - text: '5 medicine', + text: _('5 medicine'), cost: { 'medicine' : 5 }, nextScene: {1: 'healed'} }, 'ignore': { - text: 'do nothing', + text: _('do nothing'), nextScene: {1: 'death'} } } }, 'healed': { text: [ - 'the plague is kept from spreading.', - 'only a few die.', - 'the rest bury them.' + _('the plague is kept from spreading.'), + _('only a few die.'), + _('the rest bury them.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 5) + 2; @@ -155,16 +155,16 @@ Events.Outside = [ }, buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } }, 'death': { text: [ - 'the plague rips through the village.', - 'the nights are rent with screams.', - 'the only hope is a quick death.' + _('the plague rips through the village.'), + _('the nights are rent with screams.'), + _('the only hope is a quick death.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 80) + 10; @@ -172,7 +172,7 @@ Events.Outside = [ }, buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } @@ -181,16 +181,16 @@ Events.Outside = [ }, { /* Beast attack */ - title: 'A Beast Attack', + title: _('A Beast Attack'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 0; }, scenes: { 'start': { text: [ - 'a pack of snarling beasts pours out of the trees.', - 'the fight is short and bloody, but the beasts are repelled.', - 'the villagers retreat to mourn the dead.' + _('a pack of snarling beasts pours out of the trees.'), + _('the fight is short and bloody, but the beasts are repelled.'), + _('the villagers retreat to mourn the dead.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 10) + 1; @@ -203,7 +203,7 @@ Events.Outside = [ }, buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } @@ -212,16 +212,16 @@ Events.Outside = [ }, { /* Soldier attack */ - title: 'A Military Raid', + title: _('A Military Raid'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 0 && $SM.get('game.cityCleared');; }, scenes: { 'start': { text: [ - 'a gunshot rings through the trees.', - 'well armed men charge out of the forest, firing into the crowd.', - 'after a skirmish they are driven away, but not without losses.' + _('a gunshot rings through the trees.'), + _('well armed men charge out of the forest, firing into the crowd.'), + _('after a skirmish they are driven away, but not without losses.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 40) + 1; @@ -233,7 +233,7 @@ Events.Outside = [ }, buttons: { 'end': { - text: 'go home', + text: _('go home'), nextScene: 'end' } } diff --git a/script/events/room.js b/script/events/room.js index 76195e4..1424bdc 100644 --- a/script/events/room.js +++ b/script/events/room.js @@ -3,82 +3,82 @@ **/ Events.Room = [ { /* The Nomad -- Merchant */ - title: 'The Nomad', + title: _('The Nomad'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.fur', true) > 0; }, scenes: { 'start': { text: [ - 'a nomad shuffles into view, laden with makeshift bags bound with rough twine.', - "won't say from where he came, but it's clear that he's not staying." + _('a nomad shuffles into view, laden with makeshift bags bound with rough twine.'), + _("won't say from where he came, but it's clear that he's not staying.") ], - notification: 'a nomad arrives, looking to trade', + notification: _('a nomad arrives, looking to trade'), buttons: { 'buyScales': { - text: 'buy scales', + text: _('buy scales'), cost: { 'fur': 100 }, reward: { 'scales': 1 } }, 'buyTeeth': { - text: 'buy teeth', + text: _('buy teeth'), cost: { 'fur': 200 }, reward: { 'teeth': 1 } }, 'buyBait': { - text: 'buy bait', + text: _('buy bait'), cost: { 'fur': 5 }, reward: { 'bait': 1 }, - notification: 'traps are more effective with bait.' + notification: _('traps are more effective with bait.') }, 'buyCompass': { available: function() { return $SM.get('stores.compass', true) < 1; }, - text: 'buy compass', + text: _('buy compass'), cost: { fur: 300, scales: 15, teeth: 5 }, reward: { 'compass': 1 }, - notification: 'the old compass is dented and dusty, but it looks to work.', + notification: _('the old compass is dented and dusty, but it looks to work.'), onChoose: Path.openPath }, 'goodbye': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } } } }, { /* Noises Outside -- gain wood/fur */ - title: 'Noises', + title: _('Noises'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.wood'); }, scenes: { 'start': { text: [ - 'through the walls, shuffling noises can be heard.', - "can't tell what they're up to." + _('through the walls, shuffling noises can be heard.'), + _("can't tell what they're up to.") ], - notification: 'strange noises can be heard through the walls', + notification: _('strange noises can be heard through the walls'), buttons: { 'investigate': { - text: 'investigate', + text: _('investigate'), nextScene: { 0.3: 'stuff', 1: 'nothing' } }, 'ignore': { - text: 'ignore them', + text: _('ignore them'), nextScene: 'end' } } }, 'nothing': { text: [ - 'vague shapes move, just out of sight.', - 'the sounds stop.' + _('vague shapes move, just out of sight.'), + _('the sounds stop.') ], buttons: { 'backinside': { - text: 'go back inside', + text: _('go back inside'), nextScene: 'end' } } @@ -86,12 +86,12 @@ Events.Room = [ 'stuff': { reward: { wood: 100, fur: 10 }, text: [ - 'a bundle of sticks lies just beyond the threshold, wrapped in coarse furs.', - 'the night is silent.' + _('a bundle of sticks lies just beyond the threshold, wrapped in coarse furs.'), + _('the night is silent.') ], buttons: { 'backinside': { - text: 'go back inside', + text: _('go back inside'), nextScene: 'end' } } @@ -99,32 +99,32 @@ Events.Room = [ } }, { /* Noises Inside -- trade wood for better good */ - title: 'Noises', + title: _('Noises'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.wood'); }, scenes: { start: { text: [ - 'scratching noises can be heard from the store room.', - 'something\'s in there.' + _('scratching noises can be heard from the store room.'), + _('something\'s in there.') ], - notification: 'something\'s in the store room', + notification: _('something\'s in the store room'), buttons: { 'investigate': { - text: 'investigate', + text: _('investigate'), nextScene: { 0.5: 'scales', 0.8: 'teeth', 1: 'cloth' } }, 'ignore': { - text: 'ignore them', + text: _('ignore them'), nextScene: 'end' } } }, scales: { text: [ - 'some wood is missing.', - 'the ground is littered with small scales' + _('some wood is missing.'), + _('the ground is littered with small scales') ], onLoad: function() { var numWood = $SM.get('stores.wood', true); @@ -136,15 +136,15 @@ Events.Room = [ }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, teeth: { text: [ - 'some wood is missing.', - 'the ground is littered with small teeth' + _('some wood is missing.'), + _('the ground is littered with small teeth') ], onLoad: function() { var numWood = $SM.get('stores.wood', true); @@ -156,15 +156,15 @@ Events.Room = [ }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, cloth: { text: [ - 'some wood is missing.', - 'the ground is littered with scraps of cloth' + _('some wood is missing.'), + _('the ground is littered with scraps of cloth') ], onLoad: function() { var numWood = $SM.get('stores.wood', true); @@ -176,7 +176,7 @@ Events.Room = [ }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -184,30 +184,30 @@ Events.Room = [ } }, { /* The Beggar -- trade fur for better good */ - title: 'The Beggar', + title: _('The Beggar'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.fur'); }, scenes: { start: { text: [ - 'a beggar arrives.', - 'asks for any spare furs to keep him warm at night.' + _('a beggar arrives.'), + _('asks for any spare furs to keep him warm at night.') ], - notification: 'a beggar arrives', + notification: _('a beggar arrives'), buttons: { '50furs': { - text: 'give 50', + text: _('give 50'), cost: {fur: 50}, nextScene: { 0.5: 'scales', 0.8: 'teeth', 1: 'cloth' } }, '100furs': { - text: 'give 100', + text: _('give 100'), cost: {fur: 100}, nextScene: { 0.5: 'teeth', 0.8: 'scales', 1: 'cloth' } }, 'deny': { - text: 'turn him away', + text: _('turn him away'), nextScene: 'end' } } @@ -215,12 +215,12 @@ Events.Room = [ scales: { reward: { scales: 20 }, text: [ - 'the beggar expresses his thanks.', - 'leaves a pile of small scales behind.' + _('the beggar expresses his thanks.'), + _('leaves a pile of small scales behind.') ], buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } @@ -228,12 +228,12 @@ Events.Room = [ teeth: { reward: { teeth: 20 }, text: [ - 'the beggar expresses his thanks.', - 'leaves a pile of small teeth behind.' + _('the beggar expresses his thanks.'), + _('leaves a pile of small teeth behind.') ], buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } @@ -241,12 +241,12 @@ Events.Room = [ cloth: { reward: { cloth: 20 }, text: [ - 'the beggar expresses his thanks.', - 'leaves some scraps of cloth behind.' + _('the beggar expresses his thanks.'), + _('leaves some scraps of cloth behind.') ], buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } @@ -255,68 +255,68 @@ Events.Room = [ }, { /* Mysterious Wanderer -- wood gambling */ - title: 'The Mysterious Wanderer', + title: _('The Mysterious Wanderer'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.wood'); }, scenes: { start: { text: [ - 'a wanderer arrives with an empty cart. says if he leaves with wood, he\'ll be back with more.', - "builder's not sure he's to be trusted." + _('a wanderer arrives with an empty cart. says if he leaves with wood, he\'ll be back with more.'), + _("builder's not sure he's to be trusted.") ], - notification: 'a mysterious wanderer arrives', + notification: _('a mysterious wanderer arrives'), buttons: { '100wood': { - text: 'give 100', + text: _('give 100'), cost: {wood: 100}, nextScene: { 1: '100wood'} }, '500wood': { - text: 'give 500', + text: _('give 500'), cost: {wood: 500}, nextScene: { 1: '500wood' } }, 'deny': { - text: 'turn him away', + text: _('turn him away'), nextScene: 'end' } } }, '100wood': { text: [ - 'the wanderer leaves, cart loaded with wood' + _('the wanderer leaves, cart loaded with wood') ], onLoad: function() { if(Math.random() < 0.5) { setTimeout(function() { $SM.add('stores.wood', 300); - Notifications.notify(Room, 'the mysterious wanderer returns, cart piled high with wood.'); + Notifications.notify(Room, _('the mysterious wanderer returns, cart piled high with wood.')); }, 60 * 1000); } }, buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } }, '500wood': { text: [ - 'the wanderer leaves, cart loaded with wood' + _('the wanderer leaves, cart loaded with wood') ], onLoad: function() { if(Math.random() < 0.3) { setTimeout(function() { $SM.add('stores.wood', 1500); - Notifications.notify(Room, 'the mysterious wanderer returns, cart piled high with wood.'); + Notifications.notify(Room, _('the mysterious wanderer returns, cart piled high with wood.')); }, 60 * 1000); } }, buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } @@ -325,68 +325,68 @@ Events.Room = [ }, { /* Mysterious Wanderer -- fur gambling */ - title: 'The Mysterious Wanderer', + title: _('The Mysterious Wanderer'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.fur'); }, scenes: { start: { text: [ - 'a wanderer arrives with an empty cart. says if she leaves with furs, she\'ll be back with more.', - "builder's not sure she's to be trusted." + _('a wanderer arrives with an empty cart. says if she leaves with furs, she\'ll be back with more.'), + _("builder's not sure she's to be trusted.") ], - notification: 'a mysterious wanderer arrives', + notification: _('a mysterious wanderer arrives'), buttons: { '100fur': { - text: 'give 100', + text: _('give 100'), cost: {fur: 100}, nextScene: { 1: '100fur'} }, '500fur': { - text: 'give 500', + text: _('give 500'), cost: {fur: 500}, nextScene: { 1: '500fur' } }, 'deny': { - text: 'turn her away', + text: _('turn her away'), nextScene: 'end' } } }, '100fur': { text: [ - 'the wanderer leaves, cart loaded with furs' + _('the wanderer leaves, cart loaded with furs') ], onLoad: function() { if(Math.random() < 0.5) { setTimeout(function() { $SM.add('stores.fur', 300); - Notifications.notify(Room, 'the mysterious wanderer returns, cart piled high with furs.'); + Notifications.notify(Room, _('the mysterious wanderer returns, cart piled high with furs.')); }, 60 * 1000); } }, buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } }, '500fur': { text: [ - 'the wanderer leaves, cart loaded with furs' + _('the wanderer leaves, cart loaded with furs') ], onLoad: function() { if(Math.random() < 0.3) { setTimeout(function() { $SM.add('stores.fur', 1500); - Notifications.notify(Room, 'the mysterious wanderer returns, cart piled high with furs.'); + Notifications.notify(Room, _('the mysterious wanderer returns, cart piled high with furs.')); }, 60 * 1000); } }, buttons: { 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } @@ -395,26 +395,26 @@ Events.Room = [ }, { /* The Scout -- Map Merchant */ - title: 'The Scout', + title: _('The Scout'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('features.location.world'); }, scenes: { 'start': { text: [ - "the scout says she's been all over.", - "willing to talk about it, for a price." + _("the scout says she's been all over."), + _("willing to talk about it, for a price.") ], - notification: 'a scout stops for the night', + notification: _('a scout stops for the night'), buttons: { 'buyMap': { - text: 'buy map', + text: _('buy map'), cost: { 'fur': 200, 'scales': 10 }, - notification: 'the map uncovers a bit of the world', + notification: _('the map uncovers a bit of the world'), onChoose: World.applyMap }, 'learn': { - text: 'learn scouting', + text: _('learn scouting'), cost: { 'fur': 1000, 'scales': 50, 'teeth': 20 }, available: function() { return !$SM.hasPerk('scout'); @@ -424,7 +424,7 @@ Events.Room = [ } }, 'leave': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } @@ -433,20 +433,20 @@ Events.Room = [ }, { /* The Wandering Master */ - title: 'The Master', + title: _('The Master'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('features.location.world'); }, scenes: { 'start': { text: [ - 'an old wanderer arrives.', - 'he smiles warmly and asks for lodgings for the night.' + _('an old wanderer arrives.'), + _('he smiles warmly and asks for lodgings for the night.') ], - notification: 'an old wanderer arrives', + notification: _('an old wanderer arrives'), buttons: { 'agree': { - text: 'agree', + text: _('agree'), cost: { 'cured meat': 100, 'fur': 100, @@ -455,18 +455,18 @@ Events.Room = [ nextScene: {1: 'agree'} }, 'deny': { - text: 'turn him away', + text: _('turn him away'), nextScene: 'end' } } }, 'agree': { text: [ - 'in exchange, the wanderer offers his wisdom.' + _('in exchange, the wanderer offers his wisdom.') ], buttons: { 'evasion': { - text: 'evasion', + text: _('evasion'), available: function() { return !$SM.hasPerk('evasive'); }, @@ -476,7 +476,7 @@ Events.Room = [ nextScene: 'end' }, 'precision': { - text: 'precision', + text: _('precision'), available: function() { return !$SM.hasPerk('precise'); }, @@ -486,7 +486,7 @@ Events.Room = [ nextScene: 'end' }, 'force': { - text: 'force', + text: _('force'), available: function() { return !$SM.hasPerk('barbarian'); }, @@ -496,7 +496,7 @@ Events.Room = [ nextScene: 'end' }, 'nothing': { - text: 'nothing', + text: _('nothing'), nextScene: 'end' } } @@ -505,85 +505,85 @@ Events.Room = [ }, { /* The Sick Man */ - title: 'The Sick Man', + title: _('The Sick Man'), isAvailable: function() { return Engine.activeModule == Room && $SM.get('stores.medicine', true) > 0; }, scenes: { 'start': { text: [ - "a man hobbles up, coughing.", - "he begs for medicine." + _("a man hobbles up, coughing."), + _("he begs for medicine.") ], - notification: 'a sick man hobbles up', + notification: _('a sick man hobbles up'), buttons: { 'help': { - text: 'give 1 medicine', + text: _('give 1 medicine'), cost: { 'medicine': 1 }, - notification: 'the man swallows the medicine eagerly', + notification: _('the man swallows the medicine eagerly'), nextScene: { 0.1: 'alloy', 0.3: 'cells', 0.5: 'scales', 1.0: 'nothing' } }, 'ignore': { - text: 'tell him to leave', + text: _('tell him to leave'), nextScene: 'end' } } }, 'alloy': { text: [ - "the man is thankful.", - 'he leaves a reward.', - 'some weird metal he picked up on his travels.' + _("the man is thankful."), + _('he leaves a reward.'), + _('some weird metal he picked up on his travels.') ], onLoad: function() { $SM.add('stores["alien alloy"]', 1); }, buttons: { 'bye': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } }, 'cells': { text: [ - "the man is thankful.", - 'he leaves a reward.', - 'some weird glowing boxes he picked up on his travels.' + _("the man is thankful."), + _('he leaves a reward.'), + _('some weird glowing boxes he picked up on his travels.') ], onLoad: function() { $SM.add('stores["energy cell"]', 3); }, buttons: { 'bye': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } }, 'scales': { text: [ - "the man is thankful.", - 'he leaves a reward.', - 'all he has are some scales.' + _("the man is thankful."), + _('he leaves a reward.'), + _('all he has are some scales.') ], onLoad: function() { $SM.add('stores.scales', 5); }, buttons: { 'bye': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } }, 'nothing': { text: [ - "the man expresses his thanks and hobbles off." + _("the man expresses his thanks and hobbles off.") ], buttons: { 'bye': { - text: 'say goodbye', + text: _('say goodbye'), nextScene: 'end' } } diff --git a/script/events/setpieces.js b/script/events/setpieces.js index f78e880..7af71d8 100644 --- a/script/events/setpieces.js +++ b/script/events/setpieces.js @@ -3,13 +3,13 @@ **/ Events.Setpieces = { "outpost": { /* Friendly Outpost */ - title: 'An Outpost', + title: _('An Outpost'), scenes: { 'start': { text: [ - 'a safe place in the wilds.' + _('a safe place in the wilds.') ], - notification: 'a safe place in the wilds.', + notification: _('a safe place in the wilds.'), loot: { 'cured meat': { min: 5, @@ -22,7 +22,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -30,48 +30,48 @@ Events.Setpieces = { } }, "swamp": { /* Swamp */ - title: 'A Murky Swamp', + title: _('A Murky Swamp'), scenes: { 'start': { text: [ - 'rotting reeds rise out of the swampy earth.', - 'a lone frog sits in the muck, silently.' + _('rotting reeds rise out of the swampy earth.'), + _('a lone frog sits in the muck, silently.') ], - notification: 'a swamp festers in the stagnant air.', + notification: _('a swamp festers in the stagnant air.'), buttons: { 'enter': { - text: 'enter', + text: _('enter'), nextScene: {1: 'cabin'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'cabin': { text: [ - 'deep in the swamp is a moss-covered cabin.', - 'an old wanderer sits inside, in a seeming trance.' + _('deep in the swamp is a moss-covered cabin.'), + _('an old wanderer sits inside, in a seeming trance.') ], buttons: { 'talk': { cost: {'charm': 1}, - text: 'talk', + text: _('talk'), nextScene: {1: 'talk'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'talk': { text: [ - 'the wanderer takes the charm and nods slowly.', - 'he speaks of once leading the great fleets to fresh worlds.', - 'unfathomable destruction to fuel wanderer hungers.', - 'his time here, now, is his penance.' + _('the wanderer takes the charm and nods slowly.'), + _('he speaks of once leading the great fleets to fresh worlds.'), + _('unfathomable destruction to fuel wanderer hungers.'), + _('his time here, now, is his penance.') ], onLoad: function() { $SM.addPerk('gastronome'); @@ -79,7 +79,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -87,22 +87,22 @@ Events.Setpieces = { } }, "cave": { /* Cave */ - title: 'A Damp Cave', + title: _('A Damp Cave'), scenes: { 'start': { text: [ - 'the mouth of the cave is wide and dark.', - "can't see what's inside." + _('the mouth of the cave is wide and dark.'), + _("can't see what's inside.") ], - notification: 'the earth here is split, as if bearing an ancient wound', + notification: _('the earth here is split, as if bearing an ancient wound'), buttons: { 'enter': { - text: 'go inside', + text: _('go inside'), cost: { torch: 1 }, nextScene: {0.3: 'a1', 0.6: 'a2', 1: 'a3'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -116,7 +116,7 @@ Events.Setpieces = { hit: 0.8, attackDelay: 1, health: 5, - notification: 'a startled beast defends its home', + notification: _('a startled beast defends its home'), loot: { 'fur': { min: 1, @@ -131,35 +131,35 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'b1', 1: 'b2'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'a2': { text: [ - 'the cave narrows a few feet in.', - "the walls are moist and moss-covered" + _('the cave narrows a few feet in.'), + _("the walls are moist and moss-covered") ], buttons: { 'continue': { - text: 'squeeze', + text: _('squeeze'), nextScene: {0.5: 'b2', 1: 'b3'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'a3': { text: [ - 'the remains of an old camp sits just inside the cave.', - 'bedrolls, torn and blackened, lay beneath a thin layer of dust.' + _('the remains of an old camp sits just inside the cave.'), + _('bedrolls, torn and blackened, lay beneath a thin layer of dust.') ], loot: { 'cured meat': { @@ -180,20 +180,20 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'b3', 1: 'b4'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'b1': { text: [ - 'the body of a wanderer lies in a small cavern.', - "rot's been to work on it, and some of the pieces are missing.", - "can't tell what left it here." + _('the body of a wanderer lies in a small cavern.'), + _("rot's been to work on it, and some of the pieces are missing."), + _("can't tell what left it here.") ], loot: { 'iron sword': { @@ -219,29 +219,29 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'c1' } }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'b2': { text: [ - 'the torch sputters and dies in the damp air', - 'the darkness is absolute' + _('the torch sputters and dies in the damp air'), + _('the darkness is absolute') ], - notification: 'the torch goes out', + notification: _('the torch goes out'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), cost: {'torch': 1}, nextScene: { 1: 'c1' } }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } @@ -254,7 +254,7 @@ Events.Setpieces = { hit: 0.8, attackDelay: 1, health: 5, - notification: 'a startled beast defends its home', + notification: _('a startled beast defends its home'), loot: { 'fur': { min: 1, @@ -269,11 +269,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'c2'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } @@ -286,7 +286,7 @@ Events.Setpieces = { hit: 0.8, attackDelay: 2, health: 6, - notification: 'a cave lizard attacks', + notification: _('a cave lizard attacks'), loot: { 'scales': { min: 1, @@ -301,11 +301,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'c2'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } @@ -318,7 +318,7 @@ Events.Setpieces = { hit: 0.8, attackDelay: 2, health: 10, - notification: 'a large beast charges out of the dark', + notification: _('a large beast charges out of the dark'), loot: { 'fur': { min: 1, @@ -333,11 +333,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end1', 1: 'end2'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } @@ -350,7 +350,7 @@ Events.Setpieces = { hit: 0.8, attackDelay: 2, health: 10, - notification: 'a giant lizard shambles forward', + notification: _('a giant lizard shambles forward'), loot: { 'scales': { min: 1, @@ -365,18 +365,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.7: 'end2', 1: 'end3'} }, 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'end1': { text: [ - 'the nest of a large animal lies at the back of the cave.' + _('the nest of a large animal lies at the back of the cave.') ], onLoad: function() { World.clearDungeon(); @@ -410,14 +410,14 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'end2': { text: [ - 'a small supply cache is hidden at the back of the cave.' + _('a small supply cache is hidden at the back of the cave.') ], loot: { 'cloth': { @@ -461,14 +461,14 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } }, 'end3': { text: [ - 'an old case is wedged behind a rock, covered in a thick layer of dust.' + _('an old case is wedged behind a rock, covered in a thick layer of dust.') ], loot: { 'steel sword': { @@ -492,7 +492,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave cave', + text: _('leave cave'), nextScene: 'end' } } @@ -500,21 +500,21 @@ Events.Setpieces = { } }, "town": { /* Town */ - title: 'A Deserted Town', + title: _('A Deserted Town'), scenes: { 'start': { text: [ - 'a small suburb lays ahead, empty houses scorched and peeling.', - "broken streetlights stand, rusting. light hasn't graced this place in a long time." + _('a small suburb lays ahead, empty houses scorched and peeling.'), + _("broken streetlights stand, rusting. light hasn't graced this place in a long time.") ], - notification: "the town lies abandoned, its citizens long dead", + notification: _("the town lies abandoned, its citizens long dead"), buttons: { 'enter': { - text: 'explore', + text: _('explore'), nextScene: {0.3: 'a1', 0.7: 'a3', 1: 'a2'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -522,17 +522,17 @@ Events.Setpieces = { 'a1': { text: [ - "where the windows of the schoolhouse aren't shattered, they're blackened with soot.", - 'the double doors creak endlessly in the wind.' + _("where the windows of the schoolhouse aren't shattered, they're blackened with soot."), + _('the double doors creak endlessly in the wind.') ], buttons: { 'enter': { - text: 'enter', + text: _('enter'), nextScene: {0.5: 'b1', 1: 'b2'}, cost: {torch: 1} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -563,38 +563,38 @@ Events.Setpieces = { chance: 0.5 } }, - notification: 'ambushed on the street.', + notification: _('ambushed on the street.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'b3', 1: 'b4'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'a3': { text: [ - "a squat building up ahead.", - 'a green cross barely visible behind grimy windows.' + _("a squat building up ahead."), + _('a green cross barely visible behind grimy windows.') ], buttons: { 'enter': { - text: 'enter', + text: _('enter'), nextScene: {0.5: 'b5', 1: 'end5'}, cost: {torch: 1} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'b1': { text: [ - 'a small cache of supplies is tucked inside a rusting locker.' + _('a small cache of supplies is tucked inside a rusting locker.') ], loot: { 'cured meat': { @@ -620,11 +620,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c1', 1: 'c2'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -654,14 +654,14 @@ Events.Setpieces = { chance: 0.5 } }, - notification: 'a scavenger waits just inside the door.', + notification: _('a scavenger waits just inside the door.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c2', 1: 'c3'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -686,22 +686,22 @@ Events.Setpieces = { chance: 1 } }, - notification: 'a beast stands alone in an overgrown park.', + notification: _('a beast stands alone in an overgrown park.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c4', 1: 'c5'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'b4': { text: [ - 'an overturned caravan is spread across the pockmarked street.', - "it's been picked over by scavengers, but there's still some things worth taking." + _('an overturned caravan is spread across the pockmarked street.'), + _("it's been picked over by scavengers, but there's still some things worth taking.") ], loot: { 'cured meat': { @@ -727,11 +727,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c5', 1: 'c6' } }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -761,14 +761,14 @@ Events.Setpieces = { chance: 0.4 } }, - notification: 'a madman attacks, screeching.', + notification: _('a madman attacks, screeching.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.3: 'end5', 1: 'end6'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -798,14 +798,14 @@ Events.Setpieces = { chance: 0.5 } }, - notification: 'a thug moves out of the shadows.', + notification: _('a thug moves out of the shadows.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd1'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -830,31 +830,31 @@ Events.Setpieces = { chance: 1 } }, - notification: 'a beast charges out of a ransacked classroom.', + notification: _('a beast charges out of a ransacked classroom.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd1'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'c3': { text: [ - 'through the large gymnasium doors, footsteps can be heard.', - 'the torchlight casts a flickering glow down the hallway.', - 'the footsteps stop.' + _('through the large gymnasium doors, footsteps can be heard.'), + _('the torchlight casts a flickering glow down the hallway.'), + _('the footsteps stop.') ], buttons: { 'continue': { - text: 'enter', + text: _('enter'), nextScene: {1: 'd1'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -879,38 +879,38 @@ Events.Setpieces = { chance: 1 } }, - notification: 'another beast, draw by the noise, leaps out of a copse of trees.', + notification: _('another beast, draw by the noise, leaps out of a copse of trees.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd2'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'c5': { text: [ - "something's causing a commotion a ways down the road.", - "a fight, maybe." + _("something's causing a commotion a ways down the road."), + _("a fight, maybe.") ], buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd2'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'c6': { text: [ - 'a small basket of food is hidden under a park bench, with a note attached.', - "can't read the words." + _('a small basket of food is hidden under a park bench, with a note attached.'), + _("can't read the words.") ], loot: { 'cured meat': { @@ -921,11 +921,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd2'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -955,14 +955,14 @@ Events.Setpieces = { chance: 0.5 } }, - notification: 'a panicked scavenger bursts through the door, screaming.', + notification: _('a panicked scavenger bursts through the door, screaming.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end1', 1: 'end2'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -992,22 +992,22 @@ Events.Setpieces = { chance: 0.5 } }, - notification: "a man stands over a dead wanderer. notices he's not alone.", + notification: _("a man stands over a dead wanderer. notices he's not alone."), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end3', 1: 'end4'} }, 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'end1': { text: [ - 'scavenger had a small camp in the school.', - 'collected scraps spread across the floor like they fell from heaven.' + _('scavenger had a small camp in the school.'), + _('collected scraps spread across the floor like they fell from heaven.') ], onLoad: function() { World.clearDungeon(); @@ -1041,15 +1041,15 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'end2': { text: [ - "scavenger'd been looking for supplies in here, it seems.", - "a shame to let what he'd found go to waste." + _("scavenger'd been looking for supplies in here, it seems."), + _("a shame to let what he'd found go to waste.") ], onLoad: function() { World.clearDungeon(); @@ -1073,15 +1073,15 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'end3': { text: [ - "beneath the wanderer's rags, clutched in one of its many hands, a glint of steel.", - "worth killing for, it seems." + _("beneath the wanderer's rags, clutched in one of its many hands, a glint of steel."), + _("worth killing for, it seems.") ], onLoad: function() { World.clearDungeon(); @@ -1100,16 +1100,16 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'end4': { text: [ - "eye for an eye seems fair.", - "always worked before, at least.", - "picking the bones finds some useful trinkets." + _("eye for an eye seems fair."), + _("always worked before, at least."), + _("picking the bones finds some useful trinkets.") ], onLoad: function() { World.clearDungeon(); @@ -1143,14 +1143,14 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'end5': { text: [ - 'some medicine abandoned in the drawers.' + _('some medicine abandoned in the drawers.') ], onLoad: function() { World.clearDungeon(); @@ -1164,22 +1164,22 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } }, 'end6': { text: [ - 'the clinic has been ransacked.', - 'only dust and stains remain.' + _('the clinic has been ransacked.'), + _('only dust and stains remain.') ], onLoad: function() { World.clearDungeon(); }, buttons: { 'leave': { - text: 'leave town', + text: _('leave town'), nextScene: 'end' } } @@ -1187,110 +1187,110 @@ Events.Setpieces = { } }, "city": { /* City */ - title: 'A Ruined City', + title: _('A Ruined City'), scenes: { 'start': { text: [ - 'a battered highway sign stands guard at the entrance to this once-great city.', - "the towers that haven't crumbled jut from the landscape like the ribcage of some ancient beast.", - 'might be things worth having still inside.' + _('a battered highway sign stands guard at the entrance to this once-great city.'), + _("the towers that haven't crumbled jut from the landscape like the ribcage of some ancient beast."), + _('might be things worth having still inside.') ], - notification: "the towers of a decaying city dominate the skyline", + notification: _("the towers of a decaying city dominate the skyline"), buttons: { 'enter': { - text: 'explore', + text: _('explore'), nextScene: {0.2: 'a1', 0.5: 'a2', 0.8: 'a3', 1: 'a4'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'a1': { text:[ - 'the streets are empty.', - 'the air is filled with dust, driven relentlessly by the hard winds.' + _('the streets are empty.'), + _('the air is filled with dust, driven relentlessly by the hard winds.') ], buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'b1', 1: 'b2'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'a2': { text:[ - 'orange traffic cones are set across the street, faded and cracked.', - 'lights flash through the alleys between buildings.' + _('orange traffic cones are set across the street, faded and cracked.'), + _('lights flash through the alleys between buildings.') ], buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'b3', 1: 'b4'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'a3': { text: [ - 'a large shanty town sprawls across the streets.', - 'faces, darkened by soot and blood, stare out from crooked huts.' + _('a large shanty town sprawls across the streets.'), + _('faces, darkened by soot and blood, stare out from crooked huts.') ], buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'b5', 1: 'b6'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'a4': { text: [ - 'the shell of an abandoned hospital looms ahead.' + _('the shell of an abandoned hospital looms ahead.') ], buttons: { 'enter': { - text: 'enter', + text: _('enter'), cost: { 'torch': 1 }, nextScene: {0.5: 'b7', 1: 'b8'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b1': { text: [ - 'the old tower seems mostly intact.', - 'the shell of a burned out car blocks the entrance.', - 'most of the windows at ground level are busted anyway.' + _('the old tower seems mostly intact.'), + _('the shell of a burned out car blocks the entrance.'), + _('most of the windows at ground level are busted anyway.') ], buttons: { 'enter': { - text: 'enter', + text: _('enter'), nextScene: {0.5: 'c1', 1: 'c2'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b2': { combat: true, - notification: 'a huge lizard scrambles up out of the darkness of an old metro station.', + notification: _('a huge lizard scrambles up out of the darkness of an old metro station.'), enemy: 'lizard', chara: 'L', damage: 5, @@ -1316,17 +1316,17 @@ Events.Setpieces = { }, buttons: { 'descend': { - text: 'descend', + text: _('descend'), nextScene: {0.5: 'c2', 1: 'c3'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b3': { - notification: 'the shot echoes in the empty street.', + notification: _('the shot echoes in the empty street.'), combat: true, enemy: 'sniper', chara: 'S', @@ -1354,17 +1354,17 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c4', 1: 'c5'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b4': { - notification: 'the soldier steps out from between the buildings, rifle raised.', + notification: _('the soldier steps out from between the buildings, rifle raised.'), combat: true, enemy: 'soldier', ranged: true, @@ -1392,17 +1392,17 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c5', 1: 'c6'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b5': { - notification: 'a frail man stands defiantly, blocking the path.', + notification: _('a frail man stands defiantly, blocking the path.'), combat: true, enemy: 'frail man', chara: 'M', @@ -1434,49 +1434,49 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c7', 1: 'c8'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b6': { text: [ - 'nothing but downcast eyes.', - 'the people here were broken a long time ago.' + _('nothing but downcast eyes.'), + _('the people here were broken a long time ago.') ], buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'c8', 1: 'c9'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b7': { text: [ - 'empty corridors.', - 'the place has been swept clean by scavengers.' + _('empty corridors.'), + _('the place has been swept clean by scavengers.') ], buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.3: 'c12', 0.7: 'c10', 1: 'c11'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'b8': { - notification: 'an old man bursts through a door, wielding a scalpel.', + notification: _('an old man bursts through a door, wielding a scalpel.'), combat: true, enemy: 'old man', chara: 'M', @@ -1503,17 +1503,17 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.3: 'c13', 0.7: 'c11', 1: 'end15'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'c1': { - notification: 'a thug is waiting on the other side of the wall.', + notification: _('a thug is waiting on the other side of the wall.'), combat: true, enemy: 'thug', chara: 'T', @@ -1540,18 +1540,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'd1', 1: 'd2'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'c2': { - notification: 'a snarling beast jumps out from behind a car.', + notification: _('a snarling beast jumps out from behind a car.'), combat: true, enemy: 'beast', chara: 'B', @@ -1578,11 +1578,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd2'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1590,18 +1590,18 @@ Events.Setpieces = { 'c3': { text: [ - 'street above the subway platform is blown away.', - 'lets some light down into the dusty haze.', - 'a sound comes from the tunnel, just ahead.' + _('street above the subway platform is blown away.'), + _('lets some light down into the dusty haze.'), + _('a sound comes from the tunnel, just ahead.') ], buttons: { 'enter': { - text: 'investigate', + text: _('investigate'), cost: { 'torch': 1 }, nextScene: {0.5: 'd2', 1: 'd3'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1609,17 +1609,17 @@ Events.Setpieces = { 'c4': { text: [ - 'looks like a camp of sorts up ahead.', - 'rusted chainlink is pulled across an alleyway.', - 'fires burn in the courtyard beyond.' + _('looks like a camp of sorts up ahead.'), + _('rusted chainlink is pulled across an alleyway.'), + _('fires burn in the courtyard beyond.') ], buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'd4', 1: 'd5'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1627,16 +1627,16 @@ Events.Setpieces = { 'c5': { text: [ - 'more voices can be heard ahead.', - 'they must be here for a reason.' + _('more voices can be heard ahead.'), + _('they must be here for a reason.') ], buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd5'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1644,16 +1644,16 @@ Events.Setpieces = { 'c6': { text: [ - 'the sound of gunfire carries on the wind.', - 'the street ahead glows with firelight.' + _('the sound of gunfire carries on the wind.'), + _('the street ahead glows with firelight.') ], buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'd5', 1: 'd6'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1661,16 +1661,16 @@ Events.Setpieces = { 'c7': { text: [ - 'more squatters are crowding around now.', - 'someone throws a stone.' + _('more squatters are crowding around now.'), + _('someone throws a stone.') ], buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'd7', 1: 'd8'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1678,8 +1678,8 @@ Events.Setpieces = { 'c8': { text: [ - 'an improvised shop is set up on the sidewalk.', - 'the owner stands by, stoic.' + _('an improvised shop is set up on the sidewalk.'), + _('the owner stands by, stoic.') ], loot: { 'steel sword': { @@ -1710,11 +1710,11 @@ Events.Setpieces = { }, buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {1: 'd8'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1722,8 +1722,8 @@ Events.Setpieces = { 'c9': { text: [ - 'strips of meat hang drying by the side of the street.', - 'the people back away, avoiding eye contact.' + _('strips of meat hang drying by the side of the street.'), + _('the people back away, avoiding eye contact.') ], loot: { 'cured meat': { @@ -1734,11 +1734,11 @@ Events.Setpieces = { }, buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'd8', 1: 'd9'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1746,22 +1746,22 @@ Events.Setpieces = { 'c10': { text: [ - 'someone has locked and barricaded the door to this operating theatre.' + _('someone has locked and barricaded the door to this operating theatre.') ], buttons: { 'enter': { - text: 'continue', + text: _('continue'), nextScene: {0.2: 'end12', 0.6: 'd10', 1: 'd11'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'c11': { - notification: 'a tribe of elderly squatters is camped out in this ward.', + notification: _('a tribe of elderly squatters is camped out in this ward.'), combat: true, enemy: 'squatters', plural: true, @@ -1789,18 +1789,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'end10' } }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'c12': { - notification: 'a pack of lizards rounds the corner.', + notification: _('a pack of lizards rounds the corner.'), combat: true, enemy: 'lizards', plural: true, @@ -1828,11 +1828,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'end10' } }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1840,7 +1840,7 @@ Events.Setpieces = { 'c13': { text: [ - 'strips of meat are hung up to dry in this ward.' + _('strips of meat are hung up to dry in this ward.') ], loot: { 'cured meat': { @@ -1851,18 +1851,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 0.5: 'end10', 1: 'end11' } }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd1': { - notification: 'a large bird nests at the top of the stairs.', + notification: _('a large bird nests at the top of the stairs.'), combat: true, enemy: 'bird', chara: 'B', @@ -1879,11 +1879,11 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end1', 1: 'end2'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -1891,8 +1891,8 @@ Events.Setpieces = { 'd2': { text: [ - "the debris is denser here.", - "maybe some useful stuff in the rubble." + _("the debris is denser here."), + _("maybe some useful stuff in the rubble.") ], loot: { 'bullets': { @@ -1918,18 +1918,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'end2'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd3': { - notification: 'a swarm of rats rushes up the tunnel.', + notification: _('a swarm of rats rushes up the tunnel.'), combat: true, enemy: 'rats', plural: true, @@ -1952,18 +1952,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end2', 1: 'end3'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd4': { - notification: 'a large man attacks, waving a bayonet.', + notification: _('a large man attacks, waving a bayonet.'), combat: true, enemy: 'veteran', chara: 'V', @@ -1985,18 +1985,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end4', 1: 'end5'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd5': { - notification: 'a second soldier opens fire.', + notification: _('a second soldier opens fire.'), combat: true, enemy: 'soldier', ranged: true, @@ -2024,18 +2024,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'end5'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd6': { - notification: 'a masked soldier rounds the corner, gun drawn', + notification: _('a masked soldier rounds the corner, gun drawn'), combat: true, enemy: 'commando', chara: 'C', @@ -2063,18 +2063,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end5', 1: 'end6'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd7': { - notification: 'the crowd surges forward.', + notification: _('the crowd surges forward.'), combat: true, enemy: 'squatters', plural: true, @@ -2097,18 +2097,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end7', 1: 'end8'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd8': { - notification: 'a youth lashes out with a tree branch.', + notification: _('a youth lashes out with a tree branch.'), combat: true, enemy: 'youth', chara: 'Y', @@ -2130,18 +2130,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'end8'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd9': { - notification: 'a squatter stands firmly in the doorway of a small hut.', + notification: _('a squatter stands firmly in the doorway of a small hut.'), combat: true, enemy: 'squatter', chara: 'S', @@ -2163,18 +2163,18 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {0.5: 'end8', 1: 'end9'} }, 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } }, 'd10': { - notification: 'behind the door, a deformed figure awakes and attacks.', + notification: _('behind the door, a deformed figure awakes and attacks.'), combat: true, enemy: 'deformed', chara: 'D', @@ -2206,14 +2206,14 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'end14'} } } }, 'd11': { - notification: 'as soon as the door is open a little bit, hundreds of tentacles erupt.', + notification: _('as soon as the door is open a little bit, hundreds of tentacles erupt.'), combat: true, enemy: 'tentacles', plural: true, @@ -2231,7 +2231,7 @@ Events.Setpieces = { }, buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: {1: 'end13'} } } @@ -2239,8 +2239,8 @@ Events.Setpieces = { 'end1': { text: [ - 'bird must have liked shiney things.', - 'some good stuff woven into its nest.' + _('bird must have liked shiney things.'), + _('some good stuff woven into its nest.') ], onLoad: function() { World.clearDungeon(); @@ -2265,7 +2265,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2273,8 +2273,8 @@ Events.Setpieces = { 'end2': { text: [ - 'not much here.', - 'scavengers must have gotten to this place already.' + _('not much here.'), + _('scavengers must have gotten to this place already.') ], onLoad: function() { World.clearDungeon(); @@ -2294,7 +2294,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2302,9 +2302,9 @@ Events.Setpieces = { 'end3': { text: [ - 'the tunnel opens up at another platform.', - 'the walls are scorched from an old battle.', - 'bodies and supplies from both sides litter the ground.' + _('the tunnel opens up at another platform.'), + _('the walls are scorched from an old battle.'), + _('bodies and supplies from both sides litter the ground.') ], onLoad: function() { World.clearDungeon(); @@ -2339,7 +2339,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2348,9 +2348,9 @@ Events.Setpieces = { 'end4': { text: [ - 'the small military outpost is well supplied.', - 'arms and munitions, relics from the war, are neatly arranged on the store-room floor.', - 'just as deadly now as they were then.' + _('the small military outpost is well supplied.'), + _('arms and munitions, relics from the war, are neatly arranged on the store-room floor.'), + _('just as deadly now as they were then.') ], onLoad: function() { World.clearDungeon(); @@ -2375,7 +2375,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2383,9 +2383,9 @@ Events.Setpieces = { 'end5': { text: [ - 'searching the bodies yields a few supplies.', - 'more soldiers will be on their way.', - 'time to move on.' + _('searching the bodies yields a few supplies.'), + _('more soldiers will be on their way.'), + _('time to move on.') ], onLoad: function() { World.clearDungeon(); @@ -2415,7 +2415,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2423,9 +2423,9 @@ Events.Setpieces = { 'end6': { text: [ - 'the small settlement has clearly been burning a while.', - 'the bodies of the wanderers that lived here are still visible in the flames.', - "still time to rescue a few supplies." + _('the small settlement has clearly been burning a while.'), + _('the bodies of the wanderers that lived here are still visible in the flames.'), + _("still time to rescue a few supplies.") ], onLoad: function() { World.clearDungeon(); @@ -2450,7 +2450,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2459,8 +2459,8 @@ Events.Setpieces = { 'end7': { text: [ - 'the remaining settlers flee from the violence, their belongings forgotten.', - "there's not much, but some useful things can still be found." + _('the remaining settlers flee from the violence, their belongings forgotten.'), + _("there's not much, but some useful things can still be found.") ], onLoad: function() { World.clearDungeon(); @@ -2485,7 +2485,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2493,9 +2493,9 @@ Events.Setpieces = { 'end8': { text: [ - 'the young settler was carrying a canvas sack.', - "it contains travelling gear, and a few trinkets.", - "there's nothing else here." + _('the young settler was carrying a canvas sack.'), + _("it contains travelling gear, and a few trinkets."), + _("there's nothing else here.") ], onLoad: function() { World.clearDungeon(); @@ -2520,7 +2520,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2528,9 +2528,9 @@ Events.Setpieces = { 'end9': { text: [ - 'inside the hut, a child cries.', - "a few belongings rest against the walls.", - "there's nothing else here." + _('inside the hut, a child cries.'), + _("a few belongings rest against the walls."), + _("there's nothing else here.") ], onLoad: function() { World.clearDungeon(); @@ -2560,7 +2560,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2568,9 +2568,9 @@ Events.Setpieces = { 'end10': { text: [ - 'the stench of rot and death fills the operating theatres.', - "a few items are scattered on the ground.", - 'there is nothing else here.' + _('the stench of rot and death fills the operating theatres.'), + _("a few items are scattered on the ground."), + _('there is nothing else here.') ], onLoad: function() { World.clearDungeon(); @@ -2600,7 +2600,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2608,8 +2608,8 @@ Events.Setpieces = { 'end11': { text: [ - 'a pristine medicine cabinet at the end of a hallway.', - "the rest of the hospital is empty." + _('a pristine medicine cabinet at the end of a hallway.'), + _("the rest of the hospital is empty.") ], onLoad: function() { World.clearDungeon(); @@ -2634,7 +2634,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2642,7 +2642,7 @@ Events.Setpieces = { 'end12': { text: [ - 'someone had been stockpiling loot here.' + _('someone had been stockpiling loot here.') ], onLoad: function() { World.clearDungeon(); @@ -2682,7 +2682,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2690,8 +2690,8 @@ Events.Setpieces = { 'end13': { text: [ - 'the tentacular horror is defeated.', - 'inside, the remains of its victims are everywhere.' + _('the tentacular horror is defeated.'), + _('inside, the remains of its victims are everywhere.') ], onLoad: function() { World.clearDungeon(); @@ -2726,7 +2726,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2734,8 +2734,8 @@ Events.Setpieces = { 'end14': { text: [ - 'the warped man lies dead.', - 'the operating theatre has a lot of curious equipment.' + _('the warped man lies dead.'), + _('the operating theatre has a lot of curious equipment.') ], onLoad: function() { World.clearDungeon(); @@ -2770,7 +2770,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2778,7 +2778,7 @@ Events.Setpieces = { 'end15': { text: [ - 'the old man had a small cache of interesting items.' + _('the old man had a small cache of interesting items.') ], onLoad: function() { World.clearDungeon(); @@ -2813,7 +2813,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave city', + text: _('leave city'), nextScene: 'end' } } @@ -2821,29 +2821,29 @@ Events.Setpieces = { } }, "house": { /* Abandoned House */ - title: 'An Old House', + title: _('An Old House'), scenes: { 'start': { text: [ - 'an old house remains here, once white siding yellowed and peeling.', - 'the door hangs open.' + _('an old house remains here, once white siding yellowed and peeling.'), + _('the door hangs open.') ], - notification: 'the remains of an old house stand as a monument to simpler times', + notification: _('the remains of an old house stand as a monument to simpler times'), buttons: { 'enter': { - text: 'go inside', + text: _('go inside'), nextScene: { 0.25: 'medicine', 0.5: 'supplies', 1: 'occupied' } }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'supplies': { text: [ - 'the house is abandoned, but not yet picked over.', - 'still a few drops of water in the old well.' + _('the house is abandoned, but not yet picked over.'), + _('still a few drops of water in the old well.') ], onLoad: function() { World.markVisited(World.curPos[0], World.curPos[1]); @@ -2869,15 +2869,15 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'medicine': { text: [ - 'the house has been ransacked.', - 'but there is a cache of medicine under the floorboards.' + _('the house has been ransacked.'), + _('but there is a cache of medicine under the floorboards.') ], onLoad: function() { World.markVisited(World.curPos[0], World.curPos[1]); @@ -2891,7 +2891,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -2904,7 +2904,7 @@ Events.Setpieces = { hit: 0.8, attackDelay: 2, health: 10, - notification: 'a man charges down the hall, a rusty blade in his hand', + notification: _('a man charges down the hall, a rusty blade in his hand'), onLoad: function() { World.markVisited(World.curPos[0], World.curPos[1]); }, @@ -2927,7 +2927,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -2935,12 +2935,12 @@ Events.Setpieces = { } }, "battlefield": { /* Discovering an old battlefield */ - title: 'A Forgotten Battlefield', + title: _('A Forgotten Battlefield'), scenes: { 'start': { text: [ - 'a battle was fought here, long ago.', - 'battered technology from both sides lays dormant on the blasted landscape.' + _('a battle was fought here, long ago.'), + _('battered technology from both sides lays dormant on the blasted landscape.') ], onLoad: function() { World.markVisited(World.curPos[0], World.curPos[1]); @@ -2979,7 +2979,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -2987,13 +2987,13 @@ Events.Setpieces = { } }, "borehole": { /* Admiring a huge borehole */ - title: 'A Huge Borehole', + title: _('A Huge Borehole'), scenes: { 'start': { text: [ - 'a huge hole is cut deep into the earth, evidence of the past harvest.', - 'they took what they came for, and left.', - 'castoff from the mammoth drills can still be found by the edges of the precipice.' + _('a huge hole is cut deep into the earth, evidence of the past harvest.'), + _('they took what they came for, and left.'), + _('castoff from the mammoth drills can still be found by the edges of the precipice.') ], onLoad: function() { World.markVisited(World.curPos[0], World.curPos[1]); @@ -3007,7 +3007,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3015,7 +3015,7 @@ Events.Setpieces = { } }, "ship": { /* Finding a way off this rock */ - title: 'A Crashed Ship', + title: _('A Crashed Ship'), scenes: { 'start': { onLoad: function() { @@ -3024,13 +3024,13 @@ Events.Setpieces = { World.state.ship = true; }, text: [ - 'the familiar curves of a wanderer vessel rise up out of the dust and ash. ', - "lucky that the natives can't work the mechanisms.", - 'with a little effort, it might fly again.' + _('the familiar curves of a wanderer vessel rise up out of the dust and ash. '), + _("lucky that the natives can't work the mechanisms."), + _('with a little effort, it might fly again.') ], buttons: { 'leavel': { - text: 'salvage', + text: _('salvage'), nextScene: 'end' } } @@ -3038,21 +3038,21 @@ Events.Setpieces = { } }, "sulphurmine": { /* Clearing the Sulphur Mine */ - title: 'The Sulphur Mine', + title: _('The Sulphur Mine'), scenes: { 'start': { text: [ - "the military is already set up at the mine's entrance.", - 'soldiers patrol the perimeter, rifles slung over their shoulders.' + _("the military is already set up at the mine's entrance."), + _('soldiers patrol the perimeter, rifles slung over their shoulders.') ], - notification: 'a military perimeter is set up around the mine.', + notification: _('a military perimeter is set up around the mine.'), buttons: { 'attack': { - text: 'attack', + text: _('attack'), nextScene: {1: 'a1'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3083,14 +3083,14 @@ Events.Setpieces = { chance: 0.2 } }, - notification: 'a soldier, alerted, opens fire.', + notification: _('a soldier, alerted, opens fire.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'a2' } }, 'run': { - text: 'run', + text: _('run'), nextScene: 'end' } } @@ -3121,14 +3121,14 @@ Events.Setpieces = { chance: 0.2 } }, - notification: 'a second soldier joins the fight.', + notification: _('a second soldier joins the fight.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'a3' } }, 'run': { - text: 'run', + text: _('run'), nextScene: 'end' } } @@ -3153,20 +3153,20 @@ Events.Setpieces = { chance: 0.8 } }, - notification: 'a grizzled soldier attacks, waving a bayonet.', + notification: _('a grizzled soldier attacks, waving a bayonet.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'cleared' } } } }, 'cleared': { text: [ - 'the military presence has been cleared.', - 'the mine is now safe for workers.' + _('the military presence has been cleared.'), + _('the mine is now safe for workers.') ], - notification: 'the sulphur mine is clear of dangers', + notification: _('the sulphur mine is clear of dangers'), onLoad: function() { World.drawRoad(); World.state.sulphurmine = true; @@ -3174,7 +3174,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3182,21 +3182,21 @@ Events.Setpieces = { } }, "coalmine": { /* Clearing the Coal Mine */ - title: 'The Coal Mine', + title: _('The Coal Mine'), scenes: { 'start': { text: [ - 'camp fires burn by the entrance to the mine.', - 'men mill about, weapons at the ready.' + _('camp fires burn by the entrance to the mine.'), + _('men mill about, weapons at the ready.') ], - notification: 'this old mine is not abandoned', + notification: _('this old mine is not abandoned'), buttons: { 'attack': { - text: 'attack', + text: _('attack'), nextScene: {1: 'a1'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3221,14 +3221,14 @@ Events.Setpieces = { chance: 0.8 } }, - notification: 'a man joins the fight', + notification: _('a man joins the fight'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'a2' } }, 'run': { - text: 'run', + text: _('run'), nextScene: 'end' } } @@ -3253,14 +3253,14 @@ Events.Setpieces = { chance: 0.8 } }, - notification: 'a man joins the fight', + notification: _('a man joins the fight'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'a3' } }, 'run': { - text: 'run', + text: _('run'), nextScene: 'end' } } @@ -3290,20 +3290,20 @@ Events.Setpieces = { chance: 0.8 } }, - notification: 'only the chief remains.', + notification: _('only the chief remains.'), buttons: { 'continue': { - text: 'continue', + text: _('continue'), nextScene: { 1: 'cleared' } } } }, 'cleared': { text: [ - 'the camp is still, save for the crackling of the fires.', - 'the mine is now safe for workers.' + _('the camp is still, save for the crackling of the fires.'), + _('the mine is now safe for workers.') ], - notification: 'the coal mine is clear of dangers', + notification: _('the coal mine is clear of dangers'), onLoad: function() { World.drawRoad(); World.state.coalmine = true; @@ -3311,7 +3311,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3319,23 +3319,23 @@ Events.Setpieces = { } }, "ironmine": { /* Clearing the Iron Mine */ - title: 'The Iron Mine', + title: _('The Iron Mine'), scenes: { 'start': { text: [ - 'an old iron mine sits here, tools abandoned and left to rust.', - 'bleached bones are strewn about the entrance. many, deeply scored with jagged grooves.', - 'feral howls echo out of the darkness.' + _('an old iron mine sits here, tools abandoned and left to rust.'), + _('bleached bones are strewn about the entrance. many, deeply scored with jagged grooves.'), + _('feral howls echo out of the darkness.') ], - notification: 'the path leads to an abandoned mine', + notification: _('the path leads to an abandoned mine'), buttons: { 'enter': { - text: 'go inside', + text: _('go inside'), nextScene: { 1: 'enter' }, cost: { 'torch': 1 } }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3365,20 +3365,20 @@ Events.Setpieces = { chance: 0.5 } }, - notification: 'a large creature lunges, muscles rippling in the torchlight', + notification: _('a large creature lunges, muscles rippling in the torchlight'), buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: { 1: 'cleared' } } } }, 'cleared': { text: [ - 'the beast is dead.', - 'the mine is now safe for workers.' + _('the beast is dead.'), + _('the mine is now safe for workers.') ], - notification: 'the iron mine is clear of dangers', + notification: _('the iron mine is clear of dangers'), onLoad: function() { World.drawRoad(); World.state.ironmine = true; @@ -3386,7 +3386,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } @@ -3395,41 +3395,41 @@ Events.Setpieces = { }, "cache": { /* Cache - contains some of supplies from previous game */ - title: 'A Destroyed Village', + title: _('A Destroyed Village'), scenes: { 'start': { text: [ - 'a destroyed village lies in the dust.', - 'charred bodies litter the ground.' + _('a destroyed village lies in the dust.'), + _('charred bodies litter the ground.') ], - notification: 'the metallic tang of wanderer afterburner hangs in the air.', + notification: _('the metallic tang of wanderer afterburner hangs in the air.'), buttons: { 'enter': { - text: 'enter', + text: _('enter'), nextScene: {1: 'underground'} }, 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } }, 'underground': { text: [ - 'a shack stands at the center of the village.', - 'there are still supplies inside.' + _('a shack stands at the center of the village.'), + _('there are still supplies inside.') ], buttons: { 'take': { - text: 'take', + text: _('take'), nextScene: {1: 'exit'} } } }, 'exit': { text: [ - 'all the work of a previous generation is here.', - 'ripe for the picking.' + _('all the work of a previous generation is here.'), + _('ripe for the picking.') ], onLoad: function() { World.markVisited(World.curPos[0], World.curPos[1]); @@ -3437,7 +3437,7 @@ Events.Setpieces = { }, buttons: { 'leave': { - text: 'leave', + text: _('leave'), nextScene: 'end' } } diff --git a/script/outside.js b/script/outside.js index 882799f..7b6f1ac 100644 --- a/script/outside.js +++ b/script/outside.js @@ -87,32 +87,32 @@ var Outside = { { rollUnder: 0.5, name: 'fur', - message: 'scraps of fur' + message: _('scraps of fur') }, { rollUnder: 0.75, name: 'meat', - message: 'bits of meat' + message: _('bits of meat') }, { rollUnder: 0.85, name: 'scales', - message: 'strange scales' + message: _('strange scales') }, { rollUnder: 0.93, name: 'teeth', - message: 'scattered teeth' + message: _('scattered teeth') }, { rollUnder: 0.995, name: 'cloth', - message: 'tattered cloth' + message: _('tattered cloth') }, { rollUnder: 1.0, name: 'charm', - message: 'a crudely made charm' + message: _('a crudely made charm') } ], @@ -153,7 +153,7 @@ var Outside = { // Create the gather button new Button.Button({ id: 'gatherButton', - text: "gather wood", + text: _("gather wood"), click: Outside.gatherWood, cooldown: Outside._GATHER_DELAY, width: '80px' @@ -170,15 +170,15 @@ var Outside = { var num = Math.floor(Math.random()*(space/2) + space/2); if(num == 0) num = 1; if(num == 1) { - Notifications.notify(null, 'a stranger arrives in the night'); + Notifications.notify(null, _('a stranger arrives in the night')); } else if(num < 5) { - Notifications.notify(null, 'a weathered family takes up in one of the huts.'); + Notifications.notify(null, _('a weathered family takes up in one of the huts.')); } else if(num < 10) { - Notifications.notify(null, 'a small group arrives, all dust and bones.'); + Notifications.notify(null, _('a small group arrives, all dust and bones.')); } else if(num < 30) { - Notifications.notify(null, 'a convoy lurches in, equal parts worry and hope.'); + Notifications.notify(null, _('a convoy lurches in, equal parts worry and hope.')); } else { - Notifications.notify(null, "the town's booming. word does get around."); + Notifications.notify(null, _("the town's booming. word does get around.")); } Engine.log('population increased by ' + num); $SM.add('game.population', num); @@ -215,11 +215,11 @@ var Outside = { updateWorkersView: function() { var workers = $('div#workers'); - - // If our population is 0 and we don't already have a workers view, - // there's nothing to do here. + + // If our population is 0 and we don't already have a workers view, + // there's nothing to do here. if(!workers.length && $SM.get('game.population') == 0) return; - + var needsAppend = false; if(workers.length == 0) { needsAppend = true; From 989c6b4cfc3686417d30c8536f0d9715bb36709b Mon Sep 17 00:00:00 2001 From: vanadar Date: Tue, 4 Feb 2014 22:28:29 +0100 Subject: [PATCH 02/11] Lib & fichiers de trad --- lang/fr.js | 1 + lang/fr.mo | Bin 0 -> 3759 bytes lang/fr.po | 288 +++++++++++++++++++++++++++++++++++++++++++++++ lang/po2js.py | 58 ++++++++++ lib/icu.js | 23 ++++ lib/translate.js | 86 ++++++++++++++ 6 files changed, 456 insertions(+) create mode 100644 lang/fr.js create mode 100644 lang/fr.mo create mode 100644 lang/fr.po create mode 100755 lang/po2js.py create mode 100644 lib/icu.js create mode 100644 lib/translate.js diff --git a/lang/fr.js b/lang/fr.js new file mode 100644 index 0000000..ee9135d --- /dev/null +++ b/lang/fr.js @@ -0,0 +1 @@ +_.setTranslation({"save this.": "sauvegarder.", "a small group arrives, all dust and bones.": "un petit groupe arrive, sale et affam\u00e9.", "use meds": "utiliser un m\u00e9dicament", "scraps of fur": "morceaux de fourrure", "scattered teeth": "tas de dents", "punch twice as fast, and with even more force": "frapper deux fois plus vite, et avec plus de force", "restart.": "recommencer.", "gather wood": "r\u00e9coleter du bois", "export": "exporter", "punches do more damage": "les points font plus de d\u00e9gats", "cancel": "annuler", "import": "importer", "yes": "oui", "put the save code here.": "copier le code ici.", "close": "fermer", "strange scales": "\u00e9cailles \u00e9tranges", "learned to throw punches with purpose": "appris \u00e0 donner des coups de points avec un objectif", "a weathered family takes up in one of the huts.": "une famille \u00e9puis\u00e9e s'intalle dans une hutte.", "app store.": "app store", "learned to fight quite effectively without weapons": "apprendre \u00e0 se battre de fa\u00e7on efficace sans arme", "see farther": "voir plus loin", "lights off.": "lumi\u00e8res \u00e9teintes.", "are you sure?": "\u00eates vous sur ?", "bits of meat": "morceaux de viande", "restart the game?": "recommencer la partie ?", "a stranger arrives in the night": "Une \u00e9trang\u00e8re arrive durant la nuit", "lights on.": "lumi\u00e8res allum\u00e9es.", "a convoy lurches in, equal parts worry and hope.": "un convoi arrive, plein de crainte et d'\u00e9spoir.", "eat meat": "manger de la viande", "save.": "sauvegarder.", "punches do even more damage.": "les coups de points font plus de d\u00e9gats", "bring your friends.": "Invitez vos amis.", "Restart?": "Recommencer ?", "tattered cloth": "tas de vetements", "this is irreversible.": "Il n'y a pas de retour en arri\u00e8re possible.", "Export / Import": "Exporter/Importer", "the town's booming. word does get around.": "la ville s'agrandie, le mot se passe.", "no": "non", "Share": "Partager", "or migrating computers": "pour sauver votre partie ou changer d'ordinateur", "leave": "partir", "if the code is invalid, all data will be lost.": "si le code est incorrect, toutes les donn\u00e9es seront perdues.", "share.": "partager.", "Export": "Exporter", "learned to strike faster without weapons": "appris \u00e0 attaquer plus vite sans arme", "a crudely made charm": "un charme rudimentaire", "got it": "compris", "export or import save data, for backing up": "exporter ou importer vos donn\u00e9es de sauvegarde"}); diff --git a/lang/fr.mo b/lang/fr.mo new file mode 100644 index 0000000000000000000000000000000000000000..06710998e7c120a6c86f1b3e65e97613f56601b3 GIT binary patch literal 3759 zcmaKuONeDh8GtL3m+3^Ki6%Z{`Rq8;_w?1tO^*MF#E$7^- zGgWnNPb-?87~F`WL~xN1&~yw)M9_tZcmpncpy0xVNI+Z(E&^`Uh2MY9?e0k!Ec%@9 zR-LN)|N39mf4%FbZ!6kKo)7Z8c7sxn!TLsCw6EQy)GhE?cqjY@d>eco-VFEP5dH|h z8@>*Y!hgXJL(QaB_z+xz4SYNN61)RG3-5;Cfg^|r;601}S-4LB9K0Vs13v*@f-F_PhqBL~py>BHJOcj#?}7h>19&q+ z#6HKNjBmkv;TSSSJp+cfh|b_y+tG z{TtZqJ@6Q0NPPy%{+qnSMd#rw`0V0h{6>U|9(O>Ib03uXD^UD&5{mvKct89y6nlIh zil2T9Z-f7Z?}WFYca;`r@@$(T5E$2E3CH|g$X#*bd$;WvLo)7Rylem{AaVNfzw#@TU9`VIdo@*N>IcQ=7@q;vu zs_yH4^}c;Czr{D=S7~AwiD`*LX(!}$_G%MiUO=zv&1u&^Z&NlgpHWXvOti}AGWc28 z)pZ-oiA~!16>YDyrq&J9lHLh1?rP&JJqe91WI=2zTkqo`7jW2Dj$~q*g znAFd-z1e!`5Vh;$25$G_qyJ#MoxX z7_A9DUAqK3yUP|Mri`)w&%`{5VMjNu?*c$3(us|j1r27rMYtGqR2=;Fh4MjR ziK!b$lf@Qgm^Ll4lIr%-dB>Gjo7AbmS&5-;b33zMPjQ)8vb6ndJX{5R_^C2eGsda= zYVomK(vLHoyCCS?(wS94rci`Ug}q}R<=vFAnGz0*kwSGV^28AV@{@OIGFpqBt<4kq z(KKD?jM}J@6%$5@NR=dISkMQsW?^lU%KOWSB$i7k=dk0KlO`&r7^aXUsyH5J99y!1 zEb&#rObG@4V&vR0x$Ted_LH$1{Y;!@Eh7xCSHz+SlasB zg~7v-5N3Svh{<+CuMgKw42J82;R(IIwsCy@*l=w)Wa8kwojF;5oq6jU!(l(~95FMv zK$@o7kXsx2qVXb5KQQZm6s;%zVtQyiHLfo3{HK@Bk<~3e8(gqvx}gvH8>HOQ6Pr(* zJydG*S5uPB4?cC_(ZQ+1d7{q9#=%*SzcK5EK1Gf% zeSYwm^_CD6J-33z{d%o9S)AZY-yJ+|cf|wgoJ)B_UpkEwMBY9x`4F1J*`GDZHl*@~ zE|#_^i>4kt8sao<=ydvU)|2FBIoV>~V93nXqF5zxT$7g;B^MX=CD_K*zVq|drqp6{h5xL9-xr1Dx#F?MX2jiZ{g zPh&F%=n65p*Hz*bidWt3U`CYG`Cg%(qKwY>x;UP{L?ZSRDb^S{>)L2frC~dXeQGeP z=X*`-(tOYAw2VTOb}5IRy38a>aVB&RYO$KXoNdyx&?c$I9F^QHt!b~yk!FrkVAZCd zQO&-{tfUblwcPu*#vFKg3a0%v!3q>wEb8krANPM~3VvTMF{x}-1@BRlAE;{DnH`&m zw1X-g=X+(St<=P-B}H92DArQIBK_nvr|YT;b%bhNatV@tDVT=QY{9O`)KJUL!OALGV(@UCHf%o)}Wx*{z`@uz<rM}n;7xbYpPp`dvw^A+Tlh@Zgdw_-A~)S#2BcAyGPjf@C5v8LHQH4xmol)iNOsnR5+^%xHv0Hz->wYgo;}E^?Jy*JGu7tzXBc2wAkc;79TyBK@ zfFa4=)XCgqq6n#$-W1Iv>=XHqL(Ry{{#-R0cE*R9`u}BIlU$4+OE(n3Tw{&070q{vDIPs1q#_88!E*WN??t+}m%xNwTXQ RQ7W;3V=H1#WUA0Q^*`JY@YnzV literal 0 HcmV?d00001 diff --git a/lang/fr.po b/lang/fr.po new file mode 100644 index 0000000..e9d0f65 --- /dev/null +++ b/lang/fr.po @@ -0,0 +1,288 @@ +msgid "" +msgstr "" +"Project-Id-Version: adarkroom\n" +"POT-Creation-Date: 2014-02-04 21:32+0100\n" +"PO-Revision-Date: 2014-02-04 22:00+0100\n" +"Last-Translator: Vanadar \n" +"Language-Team: \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.4\n" +"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: s;\n" +"X-Poedit-SearchPath-0: ./../script\n" + +#: ../script/events.js:126 +msgid "eat meat" +msgstr "manger de la viande" + +#: ../script/events.js:146 +msgid "use meds" +msgstr "utiliser un médicament" + +#: ../script/events.js:456 +msgid "the {0} is dead." +msgstr "" + +#: ../script/events.js:474 +msgid "leave" +msgstr "partir" + +#: ../script/engine.js:20 +msgid "punches do more damage" +msgstr "les points font plus de dégats" + +#: ../script/engine.js:21 +msgid "learned to throw punches with purpose" +msgstr "appris à donner des coups de points avec un objectif" + +#: ../script/engine.js:24 +msgid "punches do even more damage." +msgstr "les coups de points font plus de dégats" + +#: ../script/engine.js:25 +msgid "learned to fight quite effectively without weapons" +msgstr "apprendre à se battre de façon efficace sans arme" + +#: ../script/engine.js:28 +msgid "punch twice as fast, and with even more force" +msgstr "frapper deux fois plus vite, et avec plus de force" + +#: ../script/engine.js:29 +msgid "learned to strike faster without weapons" +msgstr "appris à attaquer plus vite sans arme" + +#: ../script/engine.js:32 +msgid "melee weapons deal more damage" +msgstr "" + +#: ../script/engine.js:33 +msgid "learned to swing weapons with force" +msgstr "" + +#: ../script/engine.js:36 +msgid "go twice as far without eating" +msgstr "" + +#: ../script/engine.js:37 +msgid "learned how to ignore the hunger" +msgstr "" + +#: ../script/engine.js:40 +msgid "go twice as far without drinking" +msgstr "" + +#: ../script/engine.js:41 +msgid "learned to love the dry air" +msgstr "" + +#: ../script/engine.js:44 +msgid "dodge attacks more effectively" +msgstr "" + +#: ../script/engine.js:45 +msgid "learned to be where they're not" +msgstr "" + +#: ../script/engine.js:48 +msgid "land blows more often" +msgstr "" + +#: ../script/engine.js:49 +msgid "learned to predict their movement" +msgstr "" + +#: ../script/engine.js:52 +msgid "see farther" +msgstr "voir plus loin" + +#: ../script/engine.js:53 +msgid "learned to look ahead" +msgstr "" + +#: ../script/engine.js:56 +msgid "better avoid conflict in the wild" +msgstr "" + +#: ../script/engine.js:57 +msgid "learned how not to be seen" +msgstr "" + +#: ../script/engine.js:60 +msgid "restore more health when eating" +msgstr "" + +#: ../script/engine.js:61 +msgid "learned to make the most of food" +msgstr "" + +#: ../script/engine.js:103 ../script/engine.js:397 +msgid "lights off." +msgstr "lumières éteintes." + +#: ../script/engine.js:109 +msgid "restart." +msgstr "recommencer." + +#: ../script/engine.js:115 +msgid "share." +msgstr "partager." + +#: ../script/engine.js:121 +msgid "save." +msgstr "sauvegarder." + +#: ../script/engine.js:127 +msgid "app store." +msgstr "app store" + +#: ../script/engine.js:205 +msgid "Export / Import" +msgstr "Exporter/Importer" + +#: ../script/engine.js:208 +msgid "export or import save data, for backing up" +msgstr "exporter ou importer vos données de sauvegarde" + +#: ../script/engine.js:209 +msgid "or migrating computers" +msgstr "pour sauver votre partie ou changer d'ordinateur" + +#: ../script/engine.js:212 +msgid "export" +msgstr "exporter" + +#: ../script/engine.js:216 +msgid "import" +msgstr "importer" + +#: ../script/engine.js:220 +msgid "cancel" +msgstr "annuler" + +#: ../script/engine.js:226 +msgid "are you sure?" +msgstr "êtes vous sur ?" + +#: ../script/engine.js:227 +msgid "if the code is invalid, all data will be lost." +msgstr "si le code est incorrect, toutes les données seront perdues." + +#: ../script/engine.js:228 +msgid "this is irreversible." +msgstr "Il n'y a pas de retour en arrière possible." + +#: ../script/engine.js:231 ../script/engine.js:292 +msgid "yes" +msgstr "oui" + +#: ../script/engine.js:236 ../script/engine.js:297 +msgid "no" +msgstr "non" + +#: ../script/engine.js:252 +msgid "Export" +msgstr "Exporter" + +#: ../script/engine.js:255 +msgid "save this." +msgstr "sauvegarder." + +#: ../script/engine.js:259 +msgid "got it" +msgstr "compris" + +#: ../script/engine.js:269 +msgid "put the save code here." +msgstr "copier le code ici." + +#: ../script/engine.js:286 +msgid "Restart?" +msgstr "Recommencer ?" + +#: ../script/engine.js:289 +msgid "restart the game?" +msgstr "recommencer la partie ?" + +#: ../script/engine.js:320 +msgid "Share" +msgstr "Partager" + +#: ../script/engine.js:323 +msgid "bring your friends." +msgstr "Invitez vos amis." + +#: ../script/engine.js:326 +msgid "facebook" +msgstr "facebook" + +#: ../script/engine.js:333 +msgid "google+" +msgstr "google+" + +#: ../script/engine.js:340 +msgid "twitter" +msgstr "twitter" + +#: ../script/engine.js:347 +msgid "reddit" +msgstr "reddit" + +#: ../script/engine.js:354 +msgid "close" +msgstr "fermer" + +#: ../script/engine.js:388 ../script/engine.js:392 +msgid "lights on." +msgstr "lumières allumées." + +#: ../script/outside.js:90 +msgid "scraps of fur" +msgstr "morceaux de fourrure" + +#: ../script/outside.js:95 +msgid "bits of meat" +msgstr "morceaux de viande" + +#: ../script/outside.js:100 +msgid "strange scales" +msgstr "écailles étranges" + +#: ../script/outside.js:105 +msgid "scattered teeth" +msgstr "tas de dents" + +#: ../script/outside.js:110 +msgid "tattered cloth" +msgstr "tas de vetements" + +#: ../script/outside.js:115 +msgid "a crudely made charm" +msgstr "un charme rudimentaire" + +#: ../script/outside.js:156 +msgid "gather wood" +msgstr "récoleter du bois" + +#: ../script/outside.js:173 +msgid "a stranger arrives in the night" +msgstr "Une étrangère arrive durant la nuit" + +#: ../script/outside.js:175 +msgid "a weathered family takes up in one of the huts." +msgstr "une famille épuisée s'intalle dans une hutte." + +#: ../script/outside.js:177 +msgid "a small group arrives, all dust and bones." +msgstr "un petit groupe arrive, sale et affamé." + +#: ../script/outside.js:179 +msgid "a convoy lurches in, equal parts worry and hope." +msgstr "un convoi arrive, plein de crainte et d'éspoir." + +#: ../script/outside.js:181 +msgid "the town's booming. word does get around." +msgstr "la ville s'agrandie, le mot se passe." diff --git a/lang/po2js.py b/lang/po2js.py new file mode 100755 index 0000000..c53a874 --- /dev/null +++ b/lang/po2js.py @@ -0,0 +1,58 @@ +#!/usr/bin/python +# +# convert .po to .js +# + +import json +import optparse +import os +import polib +import re +import string +import sys + +parser = optparse.OptionParser(usage="usage: %prog [options] pofile...") +parser.add_option("--callback", default="_.setTranslation", dest="callback", help="callback function to call with data") +parser.add_option("--quiet", action="store_false", default=True, dest="verbose", help="don't print status messages to stdout") + +(options, args) = parser.parse_args() + +if args == None or len(args) == 0: + print("ERROR: you must specify at least one po file to translate"); + sys.exit(1) + +paramFix = re.compile("(\\(([0-9])\\))") + +for srcfile in args: + + destfile = os.path.splitext(srcfile)[0] + ".js" + if options.verbose: + print("INFO: converting %s to %s" % (srcfile, destfile)) + + xlate_map = {} + + po = polib.pofile(srcfile, autodetect_encoding=False, encoding="utf-8", wrapwidth=-1) + for entry in po: + if entry.obsolete or entry.msgstr == '' or entry.msgstr == entry.msgid: + continue + + xlate_map[entry.msgid] = entry.msgstr; + + dest = open(destfile, "w") + + dest.write(options.callback); + dest.write("("); + + encoder = json.JSONEncoder() + + for part in encoder.iterencode(xlate_map): + if part.startswith('"function('): + dest.write(part[1:-1]); + else: + dest.write(part); + + dest.write(");\n") + + dest.close() + + diff --git a/lib/icu.js b/lib/icu.js new file mode 100644 index 0000000..f6e91ff --- /dev/null +++ b/lib/icu.js @@ -0,0 +1,23 @@ +(function() { + + var dfs = {"am_pm":["AM","PM"],"day_name":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"day_short":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"era":["av. J.-C.","ap. J.-C."],"era_name":["avant Jésus-Christ","après Jésus-Christ"],"month_name":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"month_short":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"order_full":"DMY","order_long":"DMY","order_medium":"DMY","order_short":"DMY"}; + var nfs = {"decimal_separator":",","grouping_separator":" ","minus":"-"}; + var df = {SHORT_PADDED_CENTURY:function(d){if(d){return(((d.getDate()+101)+'').substring(1)+'/'+((d.getMonth()+101)+'').substring(1)+'/'+d.getFullYear());}},SHORT:function(d){if(d){return(((d.getDate()+101)+'').substring(1)+'/'+((d.getMonth()+101)+'').substring(1)+'/'+(d.getFullYear()+'').substring(2));}},SHORT_NOYEAR:function(d){if(d){return(((d.getDate()+101)+'').substring(1)+'/'+((d.getMonth()+101)+'').substring(1));}},SHORT_NODAY:function(d){if(d){return(((d.getMonth()+101)+'').substring(1)+'/'+(d.getFullYear()+'').substring(2));}},MEDIUM:function(d){if(d){return(d.getDate()+' '+dfs.month_short[d.getMonth()]+' '+d.getFullYear());}},MEDIUM_NOYEAR:function(d){if(d){return(d.getDate()+' '+dfs.month_short[d.getMonth()]);}},MEDIUM_WEEKDAY_NOYEAR:function(d){if(d){return(dfs.day_short[d.getDay()]+' '+d.getDate()+' '+dfs.month_short[d.getMonth()]);}},LONG_NODAY:function(d){if(d){return(dfs.month_name[d.getMonth()]+' '+d.getFullYear());}},LONG:function(d){if(d){return(d.getDate()+' '+dfs.month_name[d.getMonth()]+' '+d.getFullYear());}},FULL:function(d){if(d){return(dfs.day_name[d.getDay()]+' '+d.getDate()+' '+dfs.month_name[d.getMonth()]+' '+d.getFullYear());}}}; + + window.icu = window.icu || new Object(); + var icu = window.icu; + + icu.getCountry = function() { return "" }; + icu.getCountryName = function() { return "" }; + icu.getDateFormat = function(formatCode) { var retVal = {}; retVal.format = df[formatCode]; return retVal; }; + icu.getDateFormats = function() { return df; }; + icu.getDateFormatSymbols = function() { return dfs; }; + icu.getDecimalFormat = function(places) { var retVal = {}; retVal.format = function(n) { var ns = n < 0 ? Math.abs(n).toFixed(places) : n.toFixed(places); var ns2 = ns.split('.'); s = ns2[0]; var d = ns2[1]; var rgx = /(\d+)(\d{3})/;while(rgx.test(s)){s = s.replace(rgx, '$1' + nfs["grouping_separator"] + '$2');} return (n < 0 ? nfs["minus"] : "") + s + nfs["decimal_separator"] + d;}; return retVal; }; + icu.getDecimalFormatSymbols = function() { return nfs; }; + icu.getIntegerFormat = function() { var retVal = {}; retVal.format = function(i) { var s = i < 0 ? Math.abs(i).toString() : i.toString(); var rgx = /(\d+)(\d{3})/;while(rgx.test(s)){s = s.replace(rgx, '$1' + nfs["grouping_separator"] + '$2');} return i < 0 ? nfs["minus"] + s : s;}; return retVal; }; + icu.getLanguage = function() { return "fr" }; + icu.getLanguageName = function() { return "français" }; + icu.getLocale = function() { return "fr" }; + icu.getLocaleName = function() { return "français" }; + +})(); \ No newline at end of file diff --git a/lib/translate.js b/lib/translate.js new file mode 100644 index 0000000..64e4c17 --- /dev/null +++ b/lib/translate.js @@ -0,0 +1,86 @@ +(function() { + + var translate = function(text) + { + var xlate = translateLookup(text); + + if (typeof xlate == "function") + { + xlate = xlate.apply(this, arguments); + } + else if (arguments.length > 1) + { + var aps = Array.prototype.slice; + var args = aps.call( arguments, 1 ); + + xlate = formatter(xlate, args); + } + + return xlate; + }; + + // I want it available explicity as well as via the object + translate.translate = translate; + + //from https://gist.github.com/776196 via http://davedash.com/2010/11/19/pythonic-string-formatting-in-javascript/ + var defaultFormatter = (function() { + var re = /\{([^}]+)\}/g; + return function(s, args) { + return s.replace(re, function(_, match){ return args[match]; }); + } + }()); + var formatter = defaultFormatter; + translate.setFormatter = function(newFormatter) + { + formatter = newFormatter; + }; + + translate.format = function() + { + var aps = Array.prototype.slice; + var s = arguments[0]; + var args = aps.call( arguments, 1 ); + + return formatter(s, args); + }; + + var dynoTrans = null; + translate.setDynamicTranslator = function(newDynoTrans) + { + dynoTrans = newDynoTrans; + }; + + var translation = null; + translate.setTranslation = function(newTranslation) + { + translation = newTranslation; + }; + + function translateLookup(target) + { + if (translation == null || target == null) + { + return target; + } + + if (target in translation == false) + { + if (dynoTrans != null) + { + return dynoTrans(target); + } + return target; + } + + var result = translation[target]; + if (result == null) + { + return target; + } + + return result; + }; + + window._ = translate; + +})(); From 7ac28eeb1ada505646ba264a0c90780ab59c6d33 Mon Sep 17 00:00:00 2001 From: Vanadar Date: Wed, 5 Feb 2014 17:06:30 +0100 Subject: [PATCH 03/11] suites des trads --- index.html | 7 +- lang/fr.js | 2 +- lang/fr.mo | Bin 3759 -> 31821 bytes lang/fr.po | 2219 ++++++++++++++++++++++++++++++++++- script/engine.js | 3 +- script/events/encounters.js | 2 +- script/localization.js | 52 + script/outside.js | 24 +- script/room.js | 144 +-- 9 files changed, 2320 insertions(+), 133 deletions(-) create mode 100644 script/localization.js diff --git a/index.html b/index.html index 4637098..61716fc 100644 --- a/index.html +++ b/index.html @@ -39,8 +39,8 @@ - - + + @@ -63,6 +63,7 @@ +
diff --git a/lang/fr.js b/lang/fr.js index ee9135d..3fbbbef 100644 --- a/lang/fr.js +++ b/lang/fr.js @@ -1 +1 @@ -_.setTranslation({"save this.": "sauvegarder.", "a small group arrives, all dust and bones.": "un petit groupe arrive, sale et affam\u00e9.", "use meds": "utiliser un m\u00e9dicament", "scraps of fur": "morceaux de fourrure", "scattered teeth": "tas de dents", "punch twice as fast, and with even more force": "frapper deux fois plus vite, et avec plus de force", "restart.": "recommencer.", "gather wood": "r\u00e9coleter du bois", "export": "exporter", "punches do more damage": "les points font plus de d\u00e9gats", "cancel": "annuler", "import": "importer", "yes": "oui", "put the save code here.": "copier le code ici.", "close": "fermer", "strange scales": "\u00e9cailles \u00e9tranges", "learned to throw punches with purpose": "appris \u00e0 donner des coups de points avec un objectif", "a weathered family takes up in one of the huts.": "une famille \u00e9puis\u00e9e s'intalle dans une hutte.", "app store.": "app store", "learned to fight quite effectively without weapons": "apprendre \u00e0 se battre de fa\u00e7on efficace sans arme", "see farther": "voir plus loin", "lights off.": "lumi\u00e8res \u00e9teintes.", "are you sure?": "\u00eates vous sur ?", "bits of meat": "morceaux de viande", "restart the game?": "recommencer la partie ?", "a stranger arrives in the night": "Une \u00e9trang\u00e8re arrive durant la nuit", "lights on.": "lumi\u00e8res allum\u00e9es.", "a convoy lurches in, equal parts worry and hope.": "un convoi arrive, plein de crainte et d'\u00e9spoir.", "eat meat": "manger de la viande", "save.": "sauvegarder.", "punches do even more damage.": "les coups de points font plus de d\u00e9gats", "bring your friends.": "Invitez vos amis.", "Restart?": "Recommencer ?", "tattered cloth": "tas de vetements", "this is irreversible.": "Il n'y a pas de retour en arri\u00e8re possible.", "Export / Import": "Exporter/Importer", "the town's booming. word does get around.": "la ville s'agrandie, le mot se passe.", "no": "non", "Share": "Partager", "or migrating computers": "pour sauver votre partie ou changer d'ordinateur", "leave": "partir", "if the code is invalid, all data will be lost.": "si le code est incorrect, toutes les donn\u00e9es seront perdues.", "share.": "partager.", "Export": "Exporter", "learned to strike faster without weapons": "appris \u00e0 attaquer plus vite sans arme", "a crudely made charm": "un charme rudimentaire", "got it": "compris", "export or import save data, for backing up": "exporter ou importer vos donn\u00e9es de sauvegarde"}); +_.setTranslation({"a shivering man approaches and attacks with surprising strength": "un homme tremblant s'approche et attaque avec une force surprenante", "the room is {0}": "la pi\u00e8ce est {0}", "punch twice as fast, and with even more force": "frapper deux fois plus vite, et avec plus de force", "The Nomad": "Le nomade", "more traps won't help now": "plus de pi\u00e8ge n'apportera rien de plus maintenant", "only a few die.": "seuls quelques uns meurent.", "mild": "ti\u00e8de", "after a skirmish they are driven away, but not without losses.": "ils sont repouss\u00e9s apr\u00e8s une escarmouche, mais pas sans pertes.", "it puts up little resistance before the knife.": "elle r\u00e9siste faiblement face au couteau.", "use meds": "utiliser un m\u00e9dicament", "steel's stronger than iron": "l'acier est plus dur que le fer", "something's in the store room": "il y'a quelque chose dans l'entrep\u00f4t", "strange noises can be heard through the walls": "de l'autre cot\u00e9 du mur s'\u00e9chappe des bruits \u00e9tranges ", "a destroyed village lies in the dust.": "Des ruines d'un village recouvert de poussi\u00e8res.", "save.": "sauvegarder.", "learned to make the most of food": "vous savez tirer partie un maximum de la nourriture", "buy teeth": "acheter des dents", "the sky is grey and the wind blows relentlessly": "le ciel est gris et le vents souffle implacablement", "the tracks disappear after just a few minutes.": "les empruntes disparaissent apr\u00e8s quelques minutes.", "a safe place in the wilds.": "Une place s\u00fbre dans la nature.", "fur": "fourrure", "buy scales": "acheter des \u00e9cailles", "the hunting lodge stands in the forest, a ways out of town": "la cabane de chasseur est construite \u00e0 la sortie du village", "leave": "partir", "the convoy can haul mostly everything": "le convoi peut transporter presque tout", "learned to strike faster without weapons": "appris \u00e0 attaquer plus vite sans arme", "ignore them": "les ignorer", "willing to talk about it, for a price.": "Elle veut bien en parler, mais \u00e7a a un prix.", "a beast, wilder than imagining, erupts out of the foliage": "une b\u00eate, incroyablement sauvage, surgit des feuillage", "builder stokes the fire": "L'ouvrier attise le feu", "the rickety cart will carry more wood from the forest": "la charrette d\u00e9labr\u00e9e aidera \u00e0 ramener plus de bois de la for\u00eat", "a ragged stranger stumbles through the door and collapses in the corner": "une \u00e9trang\u00e8re en loque rentre en titubant et s'effondre dans un coin", "the fight is short and bloody, but the beasts are repelled.": "le combat est bref et sanglant, mais les b\u00eates sont repouss\u00e9es.", "the wood is running out": "il n'y a bient\u00f4t plus de bois", "restart.": "recommencer.", "workshop's finally ready. builder's excited to get to it": "l'atelier est enfin pr\u00eat. L'ouvri\u00e8re est impatiente de s'y mettre", "a trading post would make commerce easier": "un comptoir rendrait le commerce plus facile", "some wood is missing.": "il manque du bois.", "The Beggar": "Le mendiant", "the torch goes out": "la torche s\u2019\u00e9teint", "the sickness is cured in time.": "la maladie est soign\u00e9 \u00e0 temps.", "tannery goes up quick, on the edge of the village": "au bord du village, la tannerie se construit vite", "learned to fight quite effectively without weapons": "apprendre \u00e0 se battre de fa\u00e7on efficace sans arme", "leaves a pile of small teeth behind.": "il laisse une pile de petites dents derri\u00e8re lui.", "leave city": "quitter la cit\u00e9", "An Old House": "Une vieille maison", "a lone frog sits in the muck, silently.": "une grenouille solitaire est assise dans la vase, silencieuse.", "a gaunt man approaches, a crazed look in his eye": "un homme d\u00e9charn\u00e9 approche, ses yeux ont un regard d\u00e9ment", "learned how to ignore the hunger": "vous savez ignorer la faim", "An Outpost": "Un avant poste", "explore": "explorer", "a pack of snarling beasts pours out of the trees.": "une meute de b\u00eates sort de la foret.", "punches do even more damage.": "les coups de points font plus de d\u00e9gats", "roaring": "flambant", "something's in there.": "il y'a quelque chose \u00e0 l\u2019int\u00e9rieur.", "a bundle of sticks lies just beyond the threshold, wrapped in coarse furs.": "quelques brindilles enroul\u00e9es d'une fourrure grossi\u00e8re sont pos\u00e9s sur le seuil de la porte.", "builder says she could make finer things, if she had the tools": "L'ouvri\u00e8re dit qu'elle pourrait faire des objets de meilleurs qualit\u00e9s, si elle avait les outils.", "learn scouting": "apprendre la reconnaissance", "share.": "partager.", "A Murky Swamp": "Un marais boueux", "scales": "\u00e9cailles", "a shot rings out, from somewhere in the long grass": "un tir retenti, quelque part dans les hautes herbes", "gather wood": "ramasser du bois", "A Scavenger": "Un pilleur", "the villagers hang the thief high in front of the store room.": "les villageois pendent le voleur devant l\u2019entrep\u00f4t.", "1 medicine": "1 m\u00e9dicament", "leaves some scraps of cloth behind.": "il laisse quelques vieux v\u00eatements derri\u00e8re lui.", "are you sure?": "\u00eates vous sur ?", "charcutier": "boucher", "a military perimeter is set up around the mine.": "un p\u00e9rim\u00e8tre s\u00e9curis\u00e9 a \u00e9t\u00e9 mis en place autour de la mine.", "a wanderer arrives with an empty cart. says if she leaves with furs, she'll be back with more.": "une vagabonde arrive avec une charrette vide. elle dit que si elle peut emmener des fourrures, elle en ram\u00e8nera encore plus.", "in exchange, the wanderer offers his wisdom.": "en \u00e9change, il offrira un peu de sa sagesse.", "sulphur miner": "mineur de souffre", "warm": "douce", "stoke fire": "Attiser le feu", "A Strange Bird": "Un oiseau \u00e9trange", "leave town": "quitter la ville", "a strange looking bird speeds across the plains": "un oiseau \u00e9trange vole rapidement au dessus des plaines", "if the code is invalid, all data will be lost.": "si le code est incorrect, toutes les donn\u00e9es seront perdues.", "A Feral Terror": "Une terreur sauvage", "a large beast charges out of the dark": "Une grande b\u00eate appara\u00eet dans l'obscurit\u00e9 en chargeant", "the stranger in the corner stops shivering. her breathing calms.": "l'\u00e9trang\u00e8re dans le coin arr\u00eate de tremble. sa respiration se calme.", "a wanderer arrives with an empty cart. says if he leaves with wood, he'll be back with more.": "un vagabond arrive avec une charrette vide. il dit que s'il peut emmener du bois, il en ram\u00e8nera encore plus.", " and ": " et ", "cured meat": "viande fum\u00e9e", "builder puts up a hut, out in the forest. says word will get around.": "l'ouvri\u00e8re construit une cabane dans la foret. Elle dit que \u00e7a se saura.", "learned how not to be seen": "vous savez comment ne pas \u00eatre vu", "punches do more damage": "les points font plus de d\u00e9gats", "some traps have been destroyed": "des pi\u00e8ges ont \u00e9t\u00e9 d\u00e9truits", "well armed men charge out of the forest, firing into the crowd.": "des hommes arm\u00e9s surgissent hors de la foret et tirent sur tout ce qui bouge.", "app store.": "app store", "ignore it": "l'ignorer", "hot": "chaude", "he smiles warmly and asks for lodgings for the night.": "il souri chaleureusement et demande un abri pour la nuit.", "give 500": "en donner 500", "A Dark Room": "Une pi\u00e8ce sombre", "builder says leather could be useful. says the villagers could make it.": "l'ouvri\u00e8re dit que du cuir pourrait \u00eatre utile. elle dit que les villageois pourraient en fabriquer.", "learned to be where they're not": "vous savez \u00eatre l\u00e0 o\u00f9 ils ne sont pas", "soldiers patrol the perimeter, rifles slung over their shoulders.": "des soldats patrouillent dans le p\u00e9rim\u00e8tre, fusils pos\u00e9s sur leurs \u00e9paules.", "a small supply cache is hidden at the back of the cave.": "une petite cachette \u00e0 provision se trouve au fond de la cave.", "coal": "charbon", "can't tell what they're up to.": "impossible de comprendre ce qui se dit.", "enter": "entrer", "talk": "parler", "A Soldier": "Un soldat", "the man expresses his thanks and hobbles off.": "l'homme vous remercie et repart, boitillant.", "all the work of a previous generation is here.": "tout le travail d'une ancienne g\u00e9n\u00e9ration est l\u00e0.", "cold": "froide", "the iron mine is clear of dangers": "la mine de fer est s\u00fbre.", "the military presence has been cleared.": "la pr\u00e9sence militaire a \u00e9t\u00e9 n\u00e9ttoy\u00e9e.", "the fire is {0}": "le feu est {0}", "A Lonely Hut": "Une cabane solitaire", "iron's stronger than leather": "le fer est plus dur que le cuir", "a cave lizard attacks": "un l\u00e9zard attaque", "dodge attacks more effectively": "esquiver les attaques de fa\u00e7on plus efficace", "lights off.": "lumi\u00e8res \u00e9teintes.", "learned to look ahead": "vous savez regarder plus loin", "the mine is now safe for workers.": "la mine est maintenant s\u00fbre pour les mineurs.", "hunter": "chasseur", "the coal mine is clear of dangers": "La mine de charbon est s\u00e9curis\u00e9e", "some weird glowing boxes he picked up on his travels.": "d'\u00e9trange boites lumineuses qu'il a ramass\u00e9 durant ses voyages.", "give 50": "donner 50", "a soldier, alerted, opens fire.": "un soldat, alert\u00e9, ouvre le feu.", "meat": "viande", "a terrible plague is fast spreading through the village.": "une terrible peste se propage rapidement dans le village.", "leather's not strong. better than rags, though.": "le cuir n'est pas tr\u00e8s r\u00e9sistant, mais c'est mieux que des chiffons.", "armourer": "armurier", "a small group arrives, all dust and bones.": "un petit groupe arrive, sale et affam\u00e9.", "a beggar arrives": "un mendiant arrive", "The Thief": "Le voleur", "the rest of the hospital is empty.": "le reste de l'hopital est vide.", "bits of meat": "des morceaux de viande", "go twice as far without eating": "aller deux fois plus loin sans manger", "the cask holds enough water for longer expeditions": "le tonneau contiendra assez d'eau pour des exp\u00e9ditions plus longues", "check traps": "v\u00e9rifier les pi\u00e8ges", "Plague": "La peste", "medicine": "m\u00e9dicament", "no more room for huts.": "il n'y a plus de place pour des cabanes.", "a sick man hobbles up": "un homme arrive, boitillant", "cart": "charrette", "the wood has run out": "il n'y a plus de bois", "The Master": "Le ma\u00eetre", "a soldier opens fire from across the desert": "un soldat ouvre feu dans le desert", "go twice as far without drinking": "aller deux fois plus loin sans boire", "the villagers retreat to mourn the dead.": "les villageois rentrent et vont pleurer leurs morts", "A Modest Village": "Un village", "export or import save data, for backing up": "exporter ou importer vos donn\u00e9es de sauvegarde", "vague shapes move, just out of sight.": "une forme indistincte se d\u00e9place dans l'ombre", "the wanderer leaves, cart loaded with furs": "la vagabonde s'en va, la charrette charg\u00e9e de fourrure", "there are still supplies inside.": "il reste des provisions \u00e0 l'int\u00e9rieur.", "traps are more effective with bait.": "les pi\u00e8ges sont plus efficace avec des app\u00e2ts", "a sickness is spreading through the village.": "le village est contamin\u00e9 par une maladie", "a large creature attacks, claws freshly bloodied": "Une grande cr\u00e9ature attaque, les griffes d\u00e9goulinante de sang", "a second soldier joins the fight.": "un deuxi\u00e8me soldat rejoint le combat.", "attack": "attaquer", "turn her away": "la renvoyer", "not enough wood to get the fire going": "pas assez de bois pour alimenter le feu", "a stranger arrives in the night": "un \u00e9tranger arrive durant la nuit", "hut": "cabane", "trapper": "trappeur", "A Ruined Trap": "Un pi\u00e8ge d\u00e9truit", "steel": "acier", "the stranger is standing by the fire. she says she can help. says she builds things.": "l'\u00e9trang\u00e8re se tient pr\u00eat du feu. elle dit qu'elle peut aider. elle dit qu'elle sait construire des choses.", "the only hope is a quick death.": "le seul espoir est une mort rapide.", "iron": "fer", "light fire": "allumer le feu", "the stranger shivers, and mumbles quietly. her words are unintelligible.": "l'\u00e9trang\u00e8re tremble, marmonne quelques mots. ses mots sont inintelligible", "A Firelit Room": "Une pi\u00e8ce \u00e9clair\u00e9", "coal miner": "mineur de charbon", "all he has are some scales.": "quelques \u00e9cailles, toutes ses possessions.", "learned to predict their movement": "vous savez pr\u00e9dire leurs mouvement", "he begs for medicine.": "il supplie pour quelques m\u00e9dicaments.", "take": "prendre", "a nomad shuffles into view, laden with makeshift bags bound with rough twine.": "un nomade appara\u00eet, charg\u00e9 d'un sac de fortune ferm\u00e9 avec une corde rudimentaire.", "a convoy lurches in, equal parts worry and hope.": "un convoi arrive, plein de crainte et d'\u00e9spoir.", "the map uncovers a bit of the world": "la carte d\u00e9voile un petit morceau du monde", "the sounds stop.": "le bruit s\u2019arr\u00eate.", "lights on.": "lumi\u00e8res allum\u00e9es.", "a torch to keep the dark away": "une torche pour repousser la nuit", "charm": "charme", "nothing": "rien", "Restart?": "Recommencer ?", "this is irreversible.": "Il n'y a pas de retour en arri\u00e8re possible.", "the town's booming. word does get around.": "la ville s'agrandie, le mot se passe.", "iron miner": "mineur de fer", "give 100": "donner 100", "Export": "Exporter", "A Sniper": "Un sniper", "the mysterious wanderer returns, cart piled high with wood.": "le myst\u00e9rieux vagabond reviens, la charrette d\u00e9bordante de bois.", "the plague is kept from spreading.": "La peste ne se propage plus.", "bait": "app\u00e2t", "The Sulphur Mine": "La mine de souffre", "a thief is caught": "un voleur est attrap\u00e9", "rotting reeds rise out of the swampy earth.": "des racines pourrissantes ressortent des mar\u00e9cages.", "medicine is needed immediately.": "des m\u00e9dicaments sont n\u00e9cessaires imm\u00e9diatement.", "A Crashed Ship": "Un vaisseau \u00e9cras\u00e9", "the town lies abandoned, its citizens long dead": "la ville est totalement abandonn\u00e9e. ses citoyens mort depuis longtemps", "give 1 medicine": "donner 1 m\u00e9dicament", "the old compass is dented and dusty, but it looks to work.": "le vieux compas est ab\u00eem\u00e9 et rouill\u00e9, mais il semble encore fonctionner", "wood": "bois", "a scout stops for the night": "une \u00e9claireuse s\u2019arr\u00eate pour la nuit", "a gunshot rings through the trees.": "une d\u00e9tonation retenti dans la for\u00eat.", "freezing": "gel\u00e9e", "some of the traps have been torn apart.": "des pi\u00e8ges ont \u00e9t\u00e9 mis en pi\u00e8ces", "builder says it'd be useful to have a steady source of bullets": "l'ouvri\u00e8re dit que \u00e7a pourrait \u00eatre int\u00e9ressant d'avoir une source d'approvisionnement constante en munitions", "a mysterious wanderer arrives": "un myst\u00e9rieux vagabond arrive", "leave cave": "sortir de la cave", "leather": "cuir", "investigate": "enqu\u00eater", "sword is sharp. good protection out in the wilds.": "l'\u00e9p\u00e9e est tranchante, une bonne protection dans la nature.", "the tentacular horror is defeated.": "l'horreur tentaculaire est vaincue.", "the steel is strong, and the blade true.": "l'acier est r\u00e9sistant, et la larme magnifique", "A Military Raid": "Un raid militaire", "close": "fermer", "strange scales": "des \u00e9cailles \u00e9tranges", "learned to throw punches with purpose": "appris \u00e0 donner des coups de points avec un objectif", "spare him": "l'\u00e9pargner", "a beggar arrives.": "un mendiant arrive.", "the sulphur mine is clear of dangers": "la mine de souffre est maintenant sans danger", "the grass thrashes wildly as a huge lizard pushes through": "l'herbe bouge bizarrement et un \u00e9norme l\u00e9zard surgit", "the man is thankful.": "l'homme est reconnaissant.", "shares what he knows about sneaking before he goes.": "il partage ses astuces pour \u00eatre discret avant de s'en aller.", "import": "importer", "A Shivering Man": "Un homme tremblant", "the rest bury them.": "ils sont enterr\u00e9s par les survivants.", "smoldering": "fumant", "the ground is littered with small teeth": "le sol est jonch\u00e9 de petites dents", "the nest of a large animal lies at the back of the cave.": "le nid d'un grand animal se trouve au fond de la cave.", "A Tiny Village": "Un petit village", "agree": "accepter", "the double doors creak endlessly in the wind.": "le grincement des doubles portes battantes est port\u00e9 par le vent.", "got it": "compris", "Noises": "Bruits", "cancel": "annuler", "put the save code here.": "copier le code ici.", "hang him": "le pendre", "inside, the remains of its victims are everywhere.": "a l'int\u00e9rieur, les restes de ses victimes sont partout.", "this spear's not elegant, but it's pretty good at stabbing": "cette lance n'est pas tr\u00e8s jolie, mais elle est tr\u00e8s bonne pour frapper", "land blows more often": "mieux reconna\u00eetre les mouvements", "gatherer": "ramasseur", "the night is silent.": "la nuit est silencieuse.", "never go thirsty again": "plus jamais soif", "learned to love the dry air": "vous savez appr\u00e9cier l'air sec", "see farther": "voir plus loin", "the ground is littered with scraps of cloth": "le sol est jonch\u00e9 de morceaux de v\u00eatements", "The Coal Mine": "Une mine de charbon", "A Large Village": "A grand village", "precision": "pr\u00e9cision", "the sickness spreads through the village.": "la maladie se repend dans le village.", "won't say from where he came, but it's clear that he's not staying.": "il ne dit pas d'o\u00f9 il vient, mais il est clair qu'il ne restera pas.", "the mysterious wanderer returns, cart piled high with furs.": "la myst\u00e9rieuse vagabonde revient, la charrette d\u00e9bordante de fourrures.", "Export / Import": "Exporter/Importer", "steelworker": "sid\u00e9rurgiste", "learned to swing weapons with force": "vous savez manier vos armes avec plus de force", "a crudely made charm": "un charme rudimentaire", "large prints lead away, into the forest.": "de larges empruntes vont vers la for\u00eat.", "not enough {0}": "pas assez de {0}", "the man says he's grateful. says he won't come around any more.": "l'homme dit \u00eatre reconnaissant. Il dit qu'il ne reviendra plus.", "buy map": "acheter une carte", "scratching noises can be heard from the store room.": "des grattements semblent provenir de l'entrep\u00f4t.", "asks for any spare furs to keep him warm at night.": "il demande quelques morceaux de fourrure pour lui tenir chaud la nuit.", "A Raucous Village": "Un village bruyant", "the beggar expresses his thanks.": "le mendiant vous remercie chaleureusement.", "the {0} is dead.": "le {0} est mort", "carrying more means longer expeditions to the wilds": "porter plus signifie des exp\u00e9ditions plus longue dans les contr\u00e9s sauvages", "Room": "Pi\u00e8ce", "armoury's done, welcoming back the weapons of the past.": "l'armurerie est finie, r\u00e9cup\u00e9rant avec plaisir les armes d'un temps pass\u00e9.", "eat meat": "manger de la viande", "camp fires burn by the entrance to the mine.": "un feu de camps br\u00fble a l'entr\u00e9e de la mine.", "builder's not sure he's to be trusted.": "l'ouvri\u00e8re ne crois pas qu'il soit de confiance.", "evasion": "esquive", "buy bait": "acheter des app\u00e2ts", "builder": "ouvrier", "no": "non", "scattered teeth": "des dents", "a weathered family takes up in one of the huts.": "une famille \u00e9puis\u00e9e s'intalle dans une cabane.", "stores": "entrep\u00f4t", "now the nomads have a place to set up shop, they might stick around a while": "maintenant que les nomades ont un endroit pour faire du commerce, ils resteront ici quelques temps", "the footsteps stop.": "les bruits de pas s'arr\u00eatent.", "A Man-Eater": "Un mangeur d'homme", "bring your friends.": "Invitez vos amis.", "The Sick Man": "Le malade", "yes": "oui", "the traps contain ": "les pi\u00e8ges contiennent ", "builder says she can make traps to catch any creatures might still be alive out there": "l'ouvri\u00e8re dit qu'elle peut fabriquer des pi\u00e8ges pour attraper des animaux qui pourraient \u00eatre toujours vivant dehors", "the path leads to an abandoned mine": "le chemin m\u00e8ne \u00e0 une mine abandonn\u00e9e", "the nights are rent with screams.": "les nuits sont remplies de cris.", "buy compass": "acheter un compas", "this waterskin'll hold a bit of water, at least": "cette gourde retiendra un peu d'eau, au moins", "turn him away": "le renvoyer", "The Mysterious Wanderer": "Le myst\u00e9rieux vagabond", "A Huge Lizard": "Un \u00e9norme l\u00e9zard", "a man joins the fight": "Une personne rejoint le combat", "A Deserted Town": "Une ville d\u00e9serte", "some weird metal he picked up on his travels.": "un m\u00e9tal \u00e9trange qu'il a ramass\u00e9 durant ses voyages.", "restore more health when eating": "r\u00e9cup\u00e9rer plus de vie en mangeant", "A Snarling Beast": "Une b\u00eate qui grogne", "Share": "Partager", "a haze falls over the village as the steelworks fires up": "une brume tombe sur le village lorsque l'acierie d\u00e9marre", "an old iron mine sits here, tools abandoned and left to rust.": "ici se trouve une vieille mine de fer, les outils abandonn\u00e9s, bon pour rouiller.", "builder says the villagers could make steel, given the tools": "l'ouvri\u00e8re dit qu'avec les bon outils, les villageois pourraient fabriquer de l'acier", "continue": "continuer", "flickering": "vacillant", "only the chief remains.": "seul le chef reste.", "melee weapons deal more damage": "les armes de m\u00eal\u00e9s font plus de d\u00e9g\u00e2ts", "save this.": "sauvegarder.", "this old mine is not abandoned": "cette vieille mine n'est pas abandonn\u00e9e", "a fight, maybe.": "un combat, peut-\u00eatre.", "dead": "\u00e9teind", "export": "exporter", "not far from the village lies a large beast, its fur matted with blood.": "pas loin du village g\u00eet une b\u00eate agonisante, sa fourrure pleine de sang.", "the darkness is absolute": "l\u2019obscurit\u00e9 est compl\u00e8te", "ambushed on the street.": "une embuscade dans la rue.", "there is nothing else here.": "il n'y a rien d'autre ici.", "builder says she can make a cart for carrying wood": "l\u2019ouvri\u00e8re dit qu'elle peut construire un charrette pour ramasser du bois", "trap": "pi\u00e8ge", "go home": "rentrer", "A Silent Forest": "Une for\u00eat silencieuse", "builder's not sure she's to be trusted.": "l'ouvri\u00e8re ne crois pas qu'elle soit de confiance.", "A Destroyed Village": "Un village d\u00e9truit", "the point is made. in the next few days, the missing supplies are returned.": "le message est pass\u00e9. Les biens manquant sont rendus dans les jours qui suivent.", "the plague rips through the village.": "la peste d\u00e9cime tout le village", "an old wanderer arrives.": "un vieux vagabond arrive.", "the wanderer leaves, cart loaded with wood": "le vagabond s'en va, la charrette charg\u00e9e de bois", "a man hobbles up, coughing.": "un homme arrive. boitillant et toussant.", "The Scout": "L'\u00e9claireur", "leaves a pile of small scales behind.": "il laisse une pile de petites \u00e9cailles derri\u00e8re lui.", "better avoid conflict in the wild": "mieux \u00e9viter les conflits dans un environnement hostile", "the ground is littered with small scales": "le sol est jonch\u00e9 de petites \u00e9cailles", "burning": "cr\u00e9pitant", "a nomad arrives, looking to trade": "un nomade arrive, pr\u00eat \u00e0 faire du troc", "black powder and bullets, like the old days.": "de la poudre noir et des balles, comme a l'\u00e9poque.", "restart the game?": "recommencer la partie ?", "inside the hut, a child cries.": "\u00e0 l'int\u00e9rieur de la cabane, un enfant pleur.", "a scavenger draws close, hoping for an easy score": "Un pilleur s'approche, esp\u00e9rant un cible facile", "Sickness": "Maladie", "A Beast Attack": "Une attaque de b\u00eate", "torch": "torche", "he leaves a reward.": "il laisse une r\u00e9compense.", "the scout says she's been all over.": "l'\u00e9claireuse dit qu'elle a \u00e9t\u00e9 partout.", "cloth": "v\u00eatements", "scraps of fur": "des morceaux de fourrure", "the wind howls outside": "le vent siffle dehors", "the wagon can carry a lot of supplies": "le chariot peut transporter plus de provisions", "builder finishes the smokehouse. she looks hungry.": "L'ouvri\u00e8re a fini le fumoir. elle a l'air affam\u00e9e.", "a snarling beast leaps out of the underbrush": "des b\u00eates surgissent des buissons", "the forest is silent.": "la foret est silencieuse", "5 medicine": "5 m\u00e9dicaments", "do nothing": "ne rien faire", "A Gaunt Man": "Un homme d\u00e9charn\u00e9", "say goodbye": "dire au revoir", "{0} per {1}s": "{0} toutes les {1}s", "track them": "les suivre", "run": "courir", "builder says there are more wanderers. says they'll work, too.": "l'ouvri\u00e8re dit qu'il y'a d'autres vagabonds dehors. elle dit qu'ils travailleront. eux aussi.", "an old wanderer arrives": "un vieux vagabond arrive", "through the walls, shuffling noises can be heard.": "a travers le murs, on peut entendre quelques bruits \u00e9touff\u00e9s ", "go back inside": "rentrer \u00e0 l\u2019int\u00e9rieur", "the man swallows the medicine eagerly": "l'homme avale le m\u00e9dicament avidement", "the days are spent with burials.": "les enterrements s\u2019encha\u00eenent durant des jours.", "more traps to catch more creatures": "plus de pi\u00e8ges pour attraper plus d'animaux", "the light from the fire spills from the windows, out into the dark": "la lumi\u00e8re du feu se repend \u00e0 travers la a fen\u00eatre, dehors dans la nuit", "tell him to leave": "lui dire de partir", "dry brush and dead branches litter the forest floor": "des buissons secs et des branches mortes recouvre le sol de la for\u00eat", "tattered cloth": "des v\u00eatements", "tanner": "tanneur", "should cure the meat, or it'll spoil. builder says she can fix something up.": "il faudrait fumer la viande pour \u00e9viter qu'elle pourrisse. L'ouvri\u00e8re dit qu'elle pourra bricoler quelque chose.", "or migrating computers": "pour sauver votre partie ou changer d'ordinateur", "teeth": "dent", "villagers could help hunt, given the means": "les villageois pourraient aider pour la chasse, si on leur donne les moyens", "the beast is dead.": "la b\u00eate est morte.", "The Iron Mine": "La mine de fer"}); diff --git a/lang/fr.mo b/lang/fr.mo index 06710998e7c120a6c86f1b3e65e97613f56601b3..ee074105d5118d3cc68171f4b2a945b06f08b3fe 100644 GIT binary patch literal 31821 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

{5w}s$qz;nSjf(yVOfLDU$ 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 G&Ho2Ktyawd delta 1912 zcmYk5TWDNG7{@2~wn>^aHEGh?bP}z(Y_i$hG^UY6Y^~cC3F$?j(oS|~&mK5?&T`J# zZCWqulcwl{I8-VqSOjgfP$Pmq6e*^lq7j86K8O^=C$SF&MbroX|IJD8Bj5aHX3u>0 zto>DSZExx4mgwF9kBe_{m-9eonr-vDX&i|GC?Sda5R zU>#V8$9&&}B@VVl=R@EK&d0!BumtW0uYfi1FTTZwhHin3@HSWp{sy*zcfdig23}a9 zQIPku;4aVt@rfvbJHQt~27U>oy~`kC6jwo3@FS2F_#CWX;8nEkRCHejuMDICq@zxd-w%Ln)i}rmGGM6}o9D1$N!|t7 zt8c)q;J;uqSc~$sfV)5%?gtsj6v)62f^6YYkd97+w3Cg_mq5P14D#K_5wF*y{*U0| zX7phtCSnxldhh{o8suPRKstI8!dAqf zd!ZfBE+}OXT4G=BhsL3MpcGC&g~P{oPuat#-L`lt9|>N4npOJ)8cqm`P%%@oiq(S1E!;QpLwZo$gK6ZH!Rp; zAia#tX%(6qvDVgNiQz1vdvQR!`1_qhL6Q?gQs23%bSTKM~4qBq9$~|u^CFTO1zoV zNIIucYF|!^S)`^c?VE?6Oq#aieN87_EmxPz8LnPI=LSyfF}F_cug(_2&>VTH^Kj1d zQ(6@kWm?Okt=zO0Nw;W+`n)W9fmAt`Pq}WvfwPSEb3l&u^7+D1(Ic}m|5&%bx}5SH zjj&|8AQwD4*laI5Z93xIh5PcF@L+q{|I0KQAIK)G0K7 S7JE(exk0mZURHYrTl@!<@Lfd! diff --git a/lang/fr.po b/lang/fr.po index e9d0f65..b7c6f89 100644 --- a/lang/fr.po +++ b/lang/fr.po @@ -1,36 +1,20 @@ msgid "" msgstr "" "Project-Id-Version: adarkroom\n" -"POT-Creation-Date: 2014-02-04 21:32+0100\n" -"PO-Revision-Date: 2014-02-04 22:00+0100\n" -"Last-Translator: Vanadar \n" +"POT-Creation-Date: 2014-02-05 16:08+0100\n" +"PO-Revision-Date: 2014-02-05 16:24+0100\n" +"Last-Translator: louis \n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" -"X-Poedit-KeywordsList: _;gettext;gettext_noop\n" +"X-Poedit-KeywordsList: _\n" "X-Poedit-Basepath: .\n" "Plural-Forms: s;\n" "X-Poedit-SearchPath-0: ./../script\n" -#: ../script/events.js:126 -msgid "eat meat" -msgstr "manger de la viande" - -#: ../script/events.js:146 -msgid "use meds" -msgstr "utiliser un médicament" - -#: ../script/events.js:456 -msgid "the {0} is dead." -msgstr "" - -#: ../script/events.js:474 -msgid "leave" -msgstr "partir" - #: ../script/engine.js:20 msgid "punches do more damage" msgstr "les points font plus de dégats" @@ -57,43 +41,44 @@ msgstr "appris à attaquer plus vite sans arme" #: ../script/engine.js:32 msgid "melee weapons deal more damage" -msgstr "" +msgstr "les armes de mêlés font plus de dégâts" #: ../script/engine.js:33 msgid "learned to swing weapons with force" -msgstr "" +msgstr "vous savez manier vos armes avec plus de force" #: ../script/engine.js:36 msgid "go twice as far without eating" -msgstr "" +msgstr "aller deux fois plus loin sans manger" #: ../script/engine.js:37 msgid "learned how to ignore the hunger" -msgstr "" +msgstr "vous savez ignorer la faim" #: ../script/engine.js:40 msgid "go twice as far without drinking" -msgstr "" +msgstr "aller deux fois plus loin sans boire" #: ../script/engine.js:41 msgid "learned to love the dry air" -msgstr "" +msgstr "vous savez apprécier l'air sec" #: ../script/engine.js:44 msgid "dodge attacks more effectively" -msgstr "" +msgstr "esquiver les attaques de façon plus efficace" #: ../script/engine.js:45 msgid "learned to be where they're not" -msgstr "" +msgstr "vous savez être là où ils ne sont pas" +# description pour la précision ... #: ../script/engine.js:48 msgid "land blows more often" -msgstr "" +msgstr "mieux reconnaître les mouvements" #: ../script/engine.js:49 msgid "learned to predict their movement" -msgstr "" +msgstr "vous savez prédire leurs mouvement" #: ../script/engine.js:52 msgid "see farther" @@ -101,23 +86,23 @@ msgstr "voir plus loin" #: ../script/engine.js:53 msgid "learned to look ahead" -msgstr "" +msgstr "vous savez regarder plus loin" #: ../script/engine.js:56 msgid "better avoid conflict in the wild" -msgstr "" +msgstr "mieux éviter les conflits dans un environnement hostile" #: ../script/engine.js:57 msgid "learned how not to be seen" -msgstr "" +msgstr "vous savez comment ne pas être vu" #: ../script/engine.js:60 msgid "restore more health when eating" -msgstr "" +msgstr "récupérer plus de vie en mangeant" #: ../script/engine.js:61 msgid "learned to make the most of food" -msgstr "" +msgstr "vous savez tirer partie un maximum de la nourriture" #: ../script/engine.js:103 ../script/engine.js:397 msgid "lights off." @@ -239,41 +224,49 @@ msgstr "fermer" msgid "lights on." msgstr "lumières allumées." +#: ../script/engine.js:490 +msgid "{0} per {1}s" +msgstr "{0} toutes les {1}s" + #: ../script/outside.js:90 msgid "scraps of fur" -msgstr "morceaux de fourrure" +msgstr "des morceaux de fourrure" #: ../script/outside.js:95 msgid "bits of meat" -msgstr "morceaux de viande" +msgstr "des morceaux de viande" #: ../script/outside.js:100 msgid "strange scales" -msgstr "écailles étranges" +msgstr "des écailles étranges" #: ../script/outside.js:105 msgid "scattered teeth" -msgstr "tas de dents" +msgstr "des dents" #: ../script/outside.js:110 msgid "tattered cloth" -msgstr "tas de vetements" +msgstr "des vêtements" #: ../script/outside.js:115 msgid "a crudely made charm" msgstr "un charme rudimentaire" +#: ../script/outside.js:131 ../script/outside.js:516 +msgid "A Silent Forest" +msgstr "Une forêt silencieuse" + #: ../script/outside.js:156 msgid "gather wood" -msgstr "récoleter du bois" +msgstr "ramasser du bois" #: ../script/outside.js:173 msgid "a stranger arrives in the night" -msgstr "Une étrangère arrive durant la nuit" +msgstr "un étranger arrive durant la nuit" #: ../script/outside.js:175 msgid "a weathered family takes up in one of the huts." -msgstr "une famille épuisée s'intalle dans une hutte." +msgstr "une famille épuisée s'intalle dans une cabane." #: ../script/outside.js:177 msgid "a small group arrives, all dust and bones." @@ -286,3 +279,2143 @@ msgstr "un convoi arrive, plein de crainte et d'éspoir." #: ../script/outside.js:181 msgid "the town's booming. word does get around." msgstr "la ville s'agrandie, le mot se passe." + +#: ../script/outside.js:497 +msgid "check traps" +msgstr "vérifier les pièges" + +#: ../script/outside.js:518 +msgid "A Lonely Hut" +msgstr "Une cabane solitaire" + +#: ../script/outside.js:520 +msgid "A Tiny Village" +msgstr "Un petit village" + +#: ../script/outside.js:522 +msgid "A Modest Village" +msgstr "Un village" + +#: ../script/outside.js:524 +msgid "A Large Village" +msgstr "A grand village" + +#: ../script/outside.js:526 +msgid "A Raucous Village" +msgstr "Un village bruyant" + +#: ../script/outside.js:538 +msgid "the sky is grey and the wind blows relentlessly" +msgstr "le ciel est gris et le vents souffle implacablement" + +#: ../script/outside.js:548 +msgid "dry brush and dead branches litter the forest floor" +msgstr "des buissons secs et des branches mortes recouvre le sol de la forêt" + +#: ../script/outside.js:574 +msgid "the traps contain " +msgstr "les pièges contiennent " + +#: ../script/outside.js:579 +msgid " and " +msgstr " et " + +#: ../script/room.js:20 +msgid "" +"builder says she can make traps to catch any creatures might still be alive " +"out there" +msgstr "" +"l'ouvrière dit qu'elle peut fabriquer des pièges pour attraper des animaux " +"qui pourraient être toujours vivant dehors" + +#: ../script/room.js:21 +msgid "more traps to catch more creatures" +msgstr "plus de pièges pour attraper plus d'animaux" + +#: ../script/room.js:22 +msgid "more traps won't help now" +msgstr "plus de piège n'apportera rien de plus maintenant" + +#: ../script/room.js:34 +msgid "builder says she can make a cart for carrying wood" +msgstr "" +"l’ouvrière dit qu'elle peut construire un charrette pour ramasser du bois" + +#: ../script/room.js:35 +msgid "the rickety cart will carry more wood from the forest" +msgstr "la charrette délabrée aidera à ramener plus de bois de la forêt" + +#: ../script/room.js:46 +msgid "builder says there are more wanderers. says they'll work, too." +msgstr "" +"l'ouvrière dit qu'il y'a d'autres vagabonds dehors. elle dit qu'ils " +"travailleront. eux aussi." + +#: ../script/room.js:47 +msgid "builder puts up a hut, out in the forest. says word will get around." +msgstr "" +"l'ouvrière construit une cabane dans la foret. Elle dit que ça se saura." + +#: ../script/room.js:48 +msgid "no more room for huts." +msgstr "il n'y a plus de place pour des cabanes." + +#: ../script/room.js:60 +msgid "villagers could help hunt, given the means" +msgstr "" +"les villageois pourraient aider pour la chasse, si on leur donne les moyens" + +#: ../script/room.js:61 +msgid "the hunting lodge stands in the forest, a ways out of town" +msgstr "la cabane de chasseur est construite à la sortie du village" + +#: ../script/room.js:74 +msgid "a trading post would make commerce easier" +msgstr "un comptoir rendrait le commerce plus facile" + +#: ../script/room.js:75 +msgid "" +"now the nomads have a place to set up shop, they might stick around a while" +msgstr "" +"maintenant que les nomades ont un endroit pour faire du commerce, ils " +"resteront ici quelques temps" + +#: ../script/room.js:87 +msgid "builder says leather could be useful. says the villagers could make it." +msgstr "" +"l'ouvrière dit que du cuir pourrait être utile. elle dit que les villageois " +"pourraient en fabriquer." + +#: ../script/room.js:88 +msgid "tannery goes up quick, on the edge of the village" +msgstr "au bord du village, la tannerie se construit vite" + +#: ../script/room.js:100 +msgid "" +"should cure the meat, or it'll spoil. builder says she can fix something up." +msgstr "" +"il faudrait fumer la viande pour éviter qu'elle pourrisse. L'ouvrière dit " +"qu'elle pourra bricoler quelque chose." + +#: ../script/room.js:101 +msgid "builder finishes the smokehouse. she looks hungry." +msgstr "L'ouvrière a fini le fumoir. elle a l'air affamée." + +#: ../script/room.js:113 +msgid "builder says she could make finer things, if she had the tools" +msgstr "" +"L'ouvrière dit qu'elle pourrait faire des objets de meilleurs qualités, si " +"elle avait les outils." + +#: ../script/room.js:114 +msgid "workshop's finally ready. builder's excited to get to it" +msgstr "l'atelier est enfin prêt. L'ouvrière est impatiente de s'y mettre" + +#: ../script/room.js:127 +msgid "builder says the villagers could make steel, given the tools" +msgstr "" +"l'ouvrière dit qu'avec les bon outils, les villageois pourraient fabriquer " +"de l'acier" + +#: ../script/room.js:128 +msgid "a haze falls over the village as the steelworks fires up" +msgstr "une brume tombe sur le village lorsque l'acierie démarre" + +#: ../script/room.js:141 +msgid "builder says it'd be useful to have a steady source of bullets" +msgstr "" +"l'ouvrière dit que ça pourrait être intéressant d'avoir une source " +"d'approvisionnement constante en munitions" + +#: ../script/room.js:142 +msgid "armoury's done, welcoming back the weapons of the past." +msgstr "" +"l'armurerie est finie, récupérant avec plaisir les armes d'un temps passé." + +#: ../script/room.js:155 +msgid "a torch to keep the dark away" +msgstr "une torche pour repousser la nuit" + +#: ../script/room.js:167 +msgid "this waterskin'll hold a bit of water, at least" +msgstr "cette gourde retiendra un peu d'eau, au moins" + +#: ../script/room.js:178 +msgid "the cask holds enough water for longer expeditions" +msgstr "le tonneau contiendra assez d'eau pour des expéditions plus longues" + +#: ../script/room.js:190 +msgid "never go thirsty again" +msgstr "plus jamais soif" + +#: ../script/room.js:201 +msgid "this spear's not elegant, but it's pretty good at stabbing" +msgstr "" +"cette lance n'est pas très jolie, mais elle est très bonne pour frapper" + +#: ../script/room.js:213 +msgid "carrying more means longer expeditions to the wilds" +msgstr "" +"porter plus signifie des expéditions plus longue dans les contrés sauvages" + +#: ../script/room.js:224 +msgid "the wagon can carry a lot of supplies" +msgstr "le chariot peut transporter plus de provisions" + +#: ../script/room.js:236 +msgid "the convoy can haul mostly everything" +msgstr "le convoi peut transporter presque tout" + +#: ../script/room.js:248 +msgid "leather's not strong. better than rags, though." +msgstr "le cuir n'est pas très résistant, mais c'est mieux que des chiffons." + +#: ../script/room.js:259 +msgid "iron's stronger than leather" +msgstr "le fer est plus dur que le cuir" + +#: ../script/room.js:270 +msgid "steel's stronger than iron" +msgstr "l'acier est plus dur que le fer" + +#: ../script/room.js:281 +msgid "sword is sharp. good protection out in the wilds." +msgstr "l'épée est tranchante, une bonne protection dans la nature." + +#: ../script/room.js:293 +msgid "the steel is strong, and the blade true." +msgstr "l'acier est résistant, et la larme magnifique" + +#: ../script/room.js:304 +msgid "black powder and bullets, like the old days." +msgstr "de la poudre noir et des balles, comme a l'époque." + +#: ../script/room.js:436 +msgid "Room" +msgstr "Pièce" + +#: ../script/room.js:460 ../script/room.js:579 +msgid "A Dark Room" +msgstr "Une pièce sombre" + +#: ../script/room.js:473 +msgid "light fire" +msgstr "allumer le feu" + +#: ../script/room.js:483 +msgid "stoke fire" +msgstr "Attiser le feu" + +#: ../script/room.js:520 ../script/room.js:530 ../script/room.js:678 +#: ../script/room.js:682 +msgid "the room is {0}" +msgstr "la pièce est {0}" + +#: ../script/room.js:521 ../script/room.js:529 ../script/room.js:647 +msgid "the fire is {0}" +msgstr "le feu est {0}" + +#: ../script/room.js:540 +msgid "" +"the stranger is standing by the fire. she says she can help. says she builds " +"things." +msgstr "" +"l'étrangère se tient prêt du feu. elle dit qu'elle peut aider. elle dit " +"qu'elle sait construire des choses." + +#: ../script/room.js:555 +msgid "freezing" +msgstr "gelée" + +#: ../script/room.js:556 +msgid "cold" +msgstr "froide" + +#: ../script/room.js:557 +msgid "mild" +msgstr "tiède" + +#: ../script/room.js:558 +msgid "warm" +msgstr "douce" + +#: ../script/room.js:559 +msgid "hot" +msgstr "chaude" + +#: ../script/room.js:571 +msgid "dead" +msgstr "éteind" + +#: ../script/room.js:572 +msgid "smoldering" +msgstr "fumant" + +#: ../script/room.js:573 +msgid "flickering" +msgstr "vacillant" + +#: ../script/room.js:574 +msgid "burning" +msgstr "crépitant" + +#: ../script/room.js:575 +msgid "roaring" +msgstr "flambant" + +#: ../script/room.js:579 +msgid "A Firelit Room" +msgstr "Une pièce éclairé" + +#: ../script/room.js:617 +msgid "not enough wood to get the fire going" +msgstr "pas assez de bois pour alimenter le feu" + +#: ../script/room.js:630 +msgid "the wood has run out" +msgstr "il n'y a plus de bois" + +#: ../script/room.js:650 +msgid "the light from the fire spills from the windows, out into the dark" +msgstr "" +"la lumière du feu se repend à travers la a fenêtre, dehors dans la nuit" + +#: ../script/room.js:663 +msgid "builder stokes the fire" +msgstr "L'ouvrier attise le feu" + +#: ../script/room.js:693 +msgid "the wind howls outside" +msgstr "le vent siffle dehors" + +#: ../script/room.js:694 +msgid "the wood is running out" +msgstr "il n'y a bientôt plus de bois" + +#: ../script/room.js:701 +msgid "a ragged stranger stumbles through the door and collapses in the corner" +msgstr "une étrangère en loque rentre en titubant et s'effondre dans un coin" + +#: ../script/room.js:709 +msgid "" +"the stranger shivers, and mumbles quietly. her words are unintelligible." +msgstr "" +"l'étrangère tremble, marmonne quelques mots. ses mots sont inintelligible" + +#: ../script/room.js:712 +msgid "the stranger in the corner stops shivering. her breathing calms." +msgstr "l'étrangère dans le coin arrête de tremble. sa respiration se calme." + +#: ../script/room.js:914 +msgid "not enough {0}" +msgstr "pas assez de {0}" + +#: ../script/localization.js:3 +msgid "wood" +msgstr "bois" + +#: ../script/localization.js:3 +msgid "builder" +msgstr "ouvrier" + +#: ../script/localization.js:3 +msgid "teeth" +msgstr "dent" + +#: ../script/localization.js:3 +msgid "meat" +msgstr "viande" + +#: ../script/localization.js:3 +msgid "fur" +msgstr "fourrure" + +#: ../script/localization.js:4 +msgid "charm" +msgstr "charme" + +#: ../script/localization.js:4 +msgid "leather" +msgstr "cuir" + +#: ../script/localization.js:4 +msgid "iron" +msgstr "fer" + +#: ../script/localization.js:4 +msgid "steel" +msgstr "acier" + +#: ../script/localization.js:4 +msgid "coal" +msgstr "charbon" + +#: ../script/localization.js:5 +msgid "hut" +msgstr "cabane" + +#: ../script/localization.js:5 +msgid "cart" +msgstr "charrette" + +#: ../script/localization.js:5 +msgid "trap" +msgstr "piège" + +#: ../script/localization.js:5 +msgid "gatherer" +msgstr "ramasseur" + +#: ../script/localization.js:5 +msgid "cloth" +msgstr "vêtements" + +#: ../script/localization.js:6 +msgid "torch" +msgstr "torche" + +#: ../script/localization.js:6 +msgid "medicine" +msgstr "médicament" + +#: ../script/localization.js:6 +msgid "hunter" +msgstr "chasseur" + +#: ../script/localization.js:6 +msgid "trapper" +msgstr "trappeur" + +#: ../script/localization.js:6 +msgid "tanner" +msgstr "tanneur" + +#: ../script/localization.js:7 +msgid "charcutier" +msgstr "boucher" + +#: ../script/localization.js:7 +msgid "iron miner" +msgstr "mineur de fer" + +#: ../script/localization.js:7 +msgid "coal miner" +msgstr "mineur de charbon" + +#: ../script/localization.js:7 +msgid "sulphur miner" +msgstr "mineur de souffre" + +#: ../script/localization.js:7 +msgid "armourer" +msgstr "armurier" + +#: ../script/localization.js:8 +msgid "steelworker" +msgstr "sidérurgiste" + +#: ../script/localization.js:8 +msgid "bait" +msgstr "appât" + +#: ../script/localization.js:8 +msgid "cured meat" +msgstr "viande fumée" + +#: ../script/localization.js:8 +msgid "scales" +msgstr "écailles" + +#: ../script/localization.js:13 +msgid "stores" +msgstr "entrepôt" + +#: ../script/events.js:126 +msgid "eat meat" +msgstr "manger de la viande" + +#: ../script/events.js:146 +msgid "use meds" +msgstr "utiliser un médicament" + +#: ../script/events.js:456 +msgid "the {0} is dead." +msgstr "le {0} est mort" + +#: ../script/events.js:474 ../script/events/room.js:139 +#: ../script/events/room.js:159 ../script/events/room.js:179 +#: ../script/events/setpieces.js:25 ../script/events/setpieces.js:47 +#: ../script/events/setpieces.js:64 ../script/events/setpieces.js:82 +#: ../script/events/setpieces.js:105 ../script/events/setpieces.js:517 +#: ../script/events/setpieces.js:1205 ../script/events/setpieces.js:2838 +#: ../script/events/setpieces.js:2872 ../script/events/setpieces.js:2894 +#: ../script/events/setpieces.js:2930 ../script/events/setpieces.js:2982 +#: ../script/events/setpieces.js:3010 ../script/events/setpieces.js:3055 +#: ../script/events/setpieces.js:3177 ../script/events/setpieces.js:3199 +#: ../script/events/setpieces.js:3314 ../script/events/setpieces.js:3338 +#: ../script/events/setpieces.js:3371 ../script/events/setpieces.js:3389 +#: ../script/events/setpieces.js:3412 ../script/events/setpieces.js:3440 +#: ../script/events/global.js:41 ../script/events/global.js:58 +msgid "leave" +msgstr "partir" + +#: ../script/events/outside.js:6 +msgid "A Ruined Trap" +msgstr "Un piège détruit" + +#: ../script/events/outside.js:13 +msgid "some of the traps have been torn apart." +msgstr "des pièges ont été mis en pièces" + +#: ../script/events/outside.js:14 +msgid "large prints lead away, into the forest." +msgstr "de larges empruntes vont vers la forêt." + +#: ../script/events/outside.js:22 +msgid "some traps have been destroyed" +msgstr "des pièges ont été détruits" + +#: ../script/events/outside.js:25 +msgid "track them" +msgstr "les suivre" + +#: ../script/events/outside.js:29 ../script/events/room.js:69 +#: ../script/events/room.js:119 +msgid "ignore them" +msgstr "les ignorer" + +#: ../script/events/outside.js:36 +msgid "the tracks disappear after just a few minutes." +msgstr "les empruntes disparaissent après quelques minutes." + +#: ../script/events/outside.js:37 +msgid "the forest is silent." +msgstr "la foret est silencieuse" + +#: ../script/events/outside.js:41 ../script/events/outside.js:58 +#: ../script/events/outside.js:98 ../script/events/outside.js:115 +#: ../script/events/outside.js:158 ../script/events/outside.js:175 +#: ../script/events/outside.js:206 ../script/events/outside.js:236 +msgid "go home" +msgstr "rentrer" + +#: ../script/events/outside.js:48 +msgid "not far from the village lies a large beast, its fur matted with blood." +msgstr "" +"pas loin du village gît une bête agonisante, sa fourrure pleine de sang." + +#: ../script/events/outside.js:49 +msgid "it puts up little resistance before the knife." +msgstr "elle résiste faiblement face au couteau." + +#: ../script/events/outside.js:67 +msgid "Sickness" +msgstr "Maladie" + +#: ../script/events/outside.js:77 +msgid "a sickness is spreading through the village." +msgstr "le village est contaminé par une maladie" + +#: ../script/events/outside.js:78 ../script/events/outside.js:132 +msgid "medicine is needed immediately." +msgstr "des médicaments sont nécessaires immédiatement." + +#: ../script/events/outside.js:82 +msgid "1 medicine" +msgstr "1 médicament" + +#: ../script/events/outside.js:87 +msgid "ignore it" +msgstr "l'ignorer" + +#: ../script/events/outside.js:94 +msgid "the sickness is cured in time." +msgstr "la maladie est soigné à temps." + +#: ../script/events/outside.js:105 +msgid "the sickness spreads through the village." +msgstr "la maladie se repend dans le village." + +#: ../script/events/outside.js:106 +msgid "the days are spent with burials." +msgstr "les enterrements s’enchaînent durant des jours." + +#: ../script/events/outside.js:107 ../script/events/outside.js:166 +msgid "the nights are rent with screams." +msgstr "les nuits sont remplies de cris." + +#: ../script/events/outside.js:124 +msgid "Plague" +msgstr "La peste" + +#: ../script/events/outside.js:131 +msgid "a terrible plague is fast spreading through the village." +msgstr "une terrible peste se propage rapidement dans le village." + +#: ../script/events/outside.js:136 +msgid "5 medicine" +msgstr "5 médicaments" + +#: ../script/events/outside.js:141 +msgid "do nothing" +msgstr "ne rien faire" + +#: ../script/events/outside.js:148 +msgid "the plague is kept from spreading." +msgstr "La peste ne se propage plus." + +#: ../script/events/outside.js:149 +msgid "only a few die." +msgstr "seuls quelques uns meurent." + +#: ../script/events/outside.js:150 +msgid "the rest bury them." +msgstr "ils sont enterrés par les survivants." + +#: ../script/events/outside.js:165 +msgid "the plague rips through the village." +msgstr "la peste décime tout le village" + +#: ../script/events/outside.js:167 +msgid "the only hope is a quick death." +msgstr "le seul espoir est une mort rapide." + +#: ../script/events/outside.js:184 +msgid "A Beast Attack" +msgstr "Une attaque de bête" + +#: ../script/events/outside.js:191 +msgid "a pack of snarling beasts pours out of the trees." +msgstr "une meute de bêtes sort de la foret." + +#: ../script/events/outside.js:192 +msgid "the fight is short and bloody, but the beasts are repelled." +msgstr "le combat est bref et sanglant, mais les bêtes sont repoussées." + +#: ../script/events/outside.js:193 +msgid "the villagers retreat to mourn the dead." +msgstr "les villageois rentrent et vont pleurer leurs morts" + +#: ../script/events/outside.js:215 +msgid "A Military Raid" +msgstr "Un raid militaire" + +#: ../script/events/outside.js:222 +msgid "a gunshot rings through the trees." +msgstr "une détonation retenti dans la forêt." + +#: ../script/events/outside.js:223 +msgid "well armed men charge out of the forest, firing into the crowd." +msgstr "" +"des hommes armés surgissent hors de la foret et tirent sur tout ce qui bouge." + +#: ../script/events/outside.js:224 +msgid "after a skirmish they are driven away, but not without losses." +msgstr "ils sont repoussés après une escarmouche, mais pas sans pertes." + +#: ../script/events/encounters.js:7 +msgid "A Snarling Beast" +msgstr "Une bête qui grogne" + +#: ../script/events/encounters.js:37 +msgid "a snarling beast leaps out of the underbrush" +msgstr "des bêtes surgissent des buissons" + +#: ../script/events/encounters.js:42 +msgid "A Gaunt Man" +msgstr "Un homme décharné" + +#: ../script/events/encounters.js:72 +msgid "a gaunt man approaches, a crazed look in his eye" +msgstr "un homme décharné approche, ses yeux ont un regard dément" + +#: ../script/events/encounters.js:77 +msgid "A Strange Bird" +msgstr "Un oiseau étrange" + +#: ../script/events/encounters.js:107 +msgid "a strange looking bird speeds across the plains" +msgstr "un oiseau étrange vole rapidement au dessus des plaines" + +#: ../script/events/encounters.js:113 +msgid "A Shivering Man" +msgstr "Un homme tremblant" + +#: ../script/events/encounters.js:148 +msgid "a shivering man approaches and attacks with surprising strength" +msgstr "un homme tremblant s'approche et attaque avec une force surprenante" + +#: ../script/events/encounters.js:153 +msgid "A Man-Eater" +msgstr "Un mangeur d'homme" + +#: ../script/events/encounters.js:183 +msgid "a large creature attacks, claws freshly bloodied" +msgstr "Une grande créature attaque, les griffes dégoulinante de sang" + +#: ../script/events/encounters.js:188 +msgid "A Scavenger" +msgstr "Un pilleur" + +#: ../script/events/encounters.js:223 +msgid "a scavenger draws close, hoping for an easy score" +msgstr "Un pilleur s'approche, espérant un cible facile" + +#: ../script/events/encounters.js:228 +msgid "A Huge Lizard" +msgstr "Un énorme lézard" + +#: ../script/events/encounters.js:258 +msgid "the grass thrashes wildly as a huge lizard pushes through" +msgstr "l'herbe bouge bizarrement et un énorme lézard surgit" + +#: ../script/events/encounters.js:264 +msgid "A Feral Terror" +msgstr "Une terreur sauvage" + +#: ../script/events/encounters.js:294 +msgid "a beast, wilder than imagining, erupts out of the foliage" +msgstr "une bête, incroyablement sauvage, surgit des feuillage" + +#: ../script/events/encounters.js:299 +msgid "A Soldier" +msgstr "Un soldat" + +#: ../script/events/encounters.js:335 +msgid "a soldier opens fire from across the desert" +msgstr "un soldat ouvre feu dans le desert" + +#: ../script/events/encounters.js:340 +msgid "A Sniper" +msgstr "Un sniper" + +#: ../script/events/encounters.js:376 +msgid "a shot rings out, from somewhere in the long grass" +msgstr "un tir retenti, quelque part dans les hautes herbes" + +#: ../script/events/room.js:6 +msgid "The Nomad" +msgstr "Le nomade" + +#: ../script/events/room.js:13 +msgid "" +"a nomad shuffles into view, laden with makeshift bags bound with rough twine." +msgstr "" +"un nomade apparaît, chargé d'un sac de fortune fermé avec une corde " +"rudimentaire." + +#: ../script/events/room.js:14 +msgid "won't say from where he came, but it's clear that he's not staying." +msgstr "il ne dit pas d'où il vient, mais il est clair qu'il ne restera pas." + +#: ../script/events/room.js:16 +msgid "a nomad arrives, looking to trade" +msgstr "un nomade arrive, prêt à faire du troc" + +#: ../script/events/room.js:19 +msgid "buy scales" +msgstr "acheter des écailles" + +#: ../script/events/room.js:24 +msgid "buy teeth" +msgstr "acheter des dents" + +#: ../script/events/room.js:29 +msgid "buy bait" +msgstr "acheter des appâts" + +#: ../script/events/room.js:32 +msgid "traps are more effective with bait." +msgstr "les pièges sont plus efficace avec des appâts" + +#: ../script/events/room.js:38 +msgid "buy compass" +msgstr "acheter un compas" + +#: ../script/events/room.js:41 +msgid "the old compass is dented and dusty, but it looks to work." +msgstr "" +"le vieux compas est abîmé et rouillé, mais il semble encore fonctionner" + +#: ../script/events/room.js:45 ../script/events/room.js:223 +#: ../script/events/room.js:236 ../script/events/room.js:249 +#: ../script/events/room.js:300 ../script/events/room.js:319 +#: ../script/events/room.js:370 ../script/events/room.js:389 +#: ../script/events/room.js:427 ../script/events/room.js:543 +#: ../script/events/room.js:559 ../script/events/room.js:575 +#: ../script/events/room.js:586 +msgid "say goodbye" +msgstr "dire au revoir" + +#: ../script/events/room.js:52 ../script/events/room.js:102 +msgid "Noises" +msgstr "Bruits" + +#: ../script/events/room.js:59 +msgid "through the walls, shuffling noises can be heard." +msgstr "a travers le murs, on peut entendre quelques bruits étouffés " + +#: ../script/events/room.js:60 +msgid "can't tell what they're up to." +msgstr "impossible de comprendre ce qui se dit." + +#: ../script/events/room.js:62 +msgid "strange noises can be heard through the walls" +msgstr "de l'autre coté du mur s'échappe des bruits étranges " + +#: ../script/events/room.js:65 ../script/events/room.js:115 +#: ../script/events/setpieces.js:1599 +msgid "investigate" +msgstr "enquêter" + +#: ../script/events/room.js:76 +msgid "vague shapes move, just out of sight." +msgstr "une forme indistincte se déplace dans l'ombre" + +#: ../script/events/room.js:77 +msgid "the sounds stop." +msgstr "le bruit s’arrête." + +#: ../script/events/room.js:81 ../script/events/room.js:94 +msgid "go back inside" +msgstr "rentrer à l’intérieur" + +#: ../script/events/room.js:89 +msgid "" +"a bundle of sticks lies just beyond the threshold, wrapped in coarse furs." +msgstr "" +"quelques brindilles enroulées d'une fourrure grossière sont posés sur le " +"seuil de la porte." + +#: ../script/events/room.js:90 +msgid "the night is silent." +msgstr "la nuit est silencieuse." + +#: ../script/events/room.js:109 +msgid "scratching noises can be heard from the store room." +msgstr "des grattements semblent provenir de l'entrepôt." + +#: ../script/events/room.js:110 +msgid "something's in there." +msgstr "il y'a quelque chose à l’intérieur." + +#: ../script/events/room.js:112 +msgid "something's in the store room" +msgstr "il y'a quelque chose dans l'entrepôt" + +#: ../script/events/room.js:126 ../script/events/room.js:146 +#: ../script/events/room.js:166 +msgid "some wood is missing." +msgstr "il manque du bois." + +#: ../script/events/room.js:127 +msgid "the ground is littered with small scales" +msgstr "le sol est jonché de petites écailles" + +#: ../script/events/room.js:147 +msgid "the ground is littered with small teeth" +msgstr "le sol est jonché de petites dents" + +#: ../script/events/room.js:167 +msgid "the ground is littered with scraps of cloth" +msgstr "le sol est jonché de morceaux de vêtements" + +#: ../script/events/room.js:187 +msgid "The Beggar" +msgstr "Le mendiant" + +#: ../script/events/room.js:194 +msgid "a beggar arrives." +msgstr "un mendiant arrive." + +#: ../script/events/room.js:195 +msgid "asks for any spare furs to keep him warm at night." +msgstr "il demande quelques morceaux de fourrure pour lui tenir chaud la nuit." + +#: ../script/events/room.js:197 +msgid "a beggar arrives" +msgstr "un mendiant arrive" + +#: ../script/events/room.js:200 +msgid "give 50" +msgstr "donner 50" + +#: ../script/events/room.js:205 ../script/events/room.js:271 +#: ../script/events/room.js:341 +msgid "give 100" +msgstr "donner 100" + +#: ../script/events/room.js:210 ../script/events/room.js:281 +#: ../script/events/room.js:458 +msgid "turn him away" +msgstr "le renvoyer" + +#: ../script/events/room.js:218 ../script/events/room.js:231 +#: ../script/events/room.js:244 +msgid "the beggar expresses his thanks." +msgstr "le mendiant vous remercie chaleureusement." + +#: ../script/events/room.js:219 +msgid "leaves a pile of small scales behind." +msgstr "il laisse une pile de petites écailles derrière lui." + +#: ../script/events/room.js:232 +msgid "leaves a pile of small teeth behind." +msgstr "il laisse une pile de petites dents derrière lui." + +#: ../script/events/room.js:245 +msgid "leaves some scraps of cloth behind." +msgstr "il laisse quelques vieux vêtements derrière lui." + +#: ../script/events/room.js:258 ../script/events/room.js:328 +msgid "The Mysterious Wanderer" +msgstr "Le mystérieux vagabond" + +#: ../script/events/room.js:265 +msgid "" +"a wanderer arrives with an empty cart. says if he leaves with wood, he'll be " +"back with more." +msgstr "" +"un vagabond arrive avec une charrette vide. il dit que s'il peut emmener du " +"bois, il en ramènera encore plus." + +#: ../script/events/room.js:266 +msgid "builder's not sure he's to be trusted." +msgstr "l'ouvrière ne crois pas qu'il soit de confiance." + +#: ../script/events/room.js:268 ../script/events/room.js:338 +msgid "a mysterious wanderer arrives" +msgstr "un mystérieux vagabond arrive" + +#: ../script/events/room.js:276 ../script/events/room.js:346 +msgid "give 500" +msgstr "en donner 500" + +#: ../script/events/room.js:288 ../script/events/room.js:307 +msgid "the wanderer leaves, cart loaded with wood" +msgstr "le vagabond s'en va, la charrette chargée de bois" + +#: ../script/events/room.js:294 ../script/events/room.js:313 +msgid "the mysterious wanderer returns, cart piled high with wood." +msgstr "le mystérieux vagabond reviens, la charrette débordante de bois." + +#: ../script/events/room.js:335 +msgid "" +"a wanderer arrives with an empty cart. says if she leaves with furs, she'll " +"be back with more." +msgstr "" +"une vagabonde arrive avec une charrette vide. elle dit que si elle peut " +"emmener des fourrures, elle en ramènera encore plus." + +#: ../script/events/room.js:336 +msgid "builder's not sure she's to be trusted." +msgstr "l'ouvrière ne crois pas qu'elle soit de confiance." + +#: ../script/events/room.js:351 +msgid "turn her away" +msgstr "la renvoyer" + +#: ../script/events/room.js:358 ../script/events/room.js:377 +msgid "the wanderer leaves, cart loaded with furs" +msgstr "la vagabonde s'en va, la charrette chargée de fourrure" + +#: ../script/events/room.js:364 ../script/events/room.js:383 +msgid "the mysterious wanderer returns, cart piled high with furs." +msgstr "" +"la mystérieuse vagabonde revient, la charrette débordante de fourrures." + +#: ../script/events/room.js:398 +msgid "The Scout" +msgstr "L'éclaireur" + +#: ../script/events/room.js:405 +msgid "the scout says she's been all over." +msgstr "l'éclaireuse dit qu'elle a été partout." + +#: ../script/events/room.js:406 +msgid "willing to talk about it, for a price." +msgstr "Elle veut bien en parler, mais ça a un prix." + +#: ../script/events/room.js:408 +msgid "a scout stops for the night" +msgstr "une éclaireuse s’arrête pour la nuit" + +#: ../script/events/room.js:411 +msgid "buy map" +msgstr "acheter une carte" + +#: ../script/events/room.js:413 +msgid "the map uncovers a bit of the world" +msgstr "la carte dévoile un petit morceau du monde" + +#: ../script/events/room.js:417 +msgid "learn scouting" +msgstr "apprendre la reconnaissance" + +#: ../script/events/room.js:436 +msgid "The Master" +msgstr "Le maître" + +#: ../script/events/room.js:443 +msgid "an old wanderer arrives." +msgstr "un vieux vagabond arrive." + +#: ../script/events/room.js:444 +msgid "he smiles warmly and asks for lodgings for the night." +msgstr "il souri chaleureusement et demande un abri pour la nuit." + +#: ../script/events/room.js:446 +msgid "an old wanderer arrives" +msgstr "un vieux vagabond arrive" + +#: ../script/events/room.js:449 +msgid "agree" +msgstr "accepter" + +#: ../script/events/room.js:465 +msgid "in exchange, the wanderer offers his wisdom." +msgstr "en échange, il offrira un peu de sa sagesse." + +#: ../script/events/room.js:469 +msgid "evasion" +msgstr "esquive" + +#: ../script/events/room.js:479 +msgid "precision" +msgstr "précision" + +#: ../script/events/room.js:489 +msgid "force" +msgstr "force" + +#: ../script/events/room.js:499 +msgid "nothing" +msgstr "rien" + +#: ../script/events/room.js:508 +msgid "The Sick Man" +msgstr "Le malade" + +#: ../script/events/room.js:515 +msgid "a man hobbles up, coughing." +msgstr "un homme arrive. boitillant et toussant." + +#: ../script/events/room.js:516 +msgid "he begs for medicine." +msgstr "il supplie pour quelques médicaments." + +#: ../script/events/room.js:518 +msgid "a sick man hobbles up" +msgstr "un homme arrive, boitillant" + +#: ../script/events/room.js:521 +msgid "give 1 medicine" +msgstr "donner 1 médicament" + +#: ../script/events/room.js:523 +msgid "the man swallows the medicine eagerly" +msgstr "l'homme avale le médicament avidement" + +#: ../script/events/room.js:527 +msgid "tell him to leave" +msgstr "lui dire de partir" + +#: ../script/events/room.js:534 ../script/events/room.js:550 +#: ../script/events/room.js:566 +msgid "the man is thankful." +msgstr "l'homme est reconnaissant." + +#: ../script/events/room.js:535 ../script/events/room.js:551 +#: ../script/events/room.js:567 +msgid "he leaves a reward." +msgstr "il laisse une récompense." + +#: ../script/events/room.js:536 +msgid "some weird metal he picked up on his travels." +msgstr "un métal étrange qu'il a ramassé durant ses voyages." + +#: ../script/events/room.js:552 +msgid "some weird glowing boxes he picked up on his travels." +msgstr "d'étrange boites lumineuses qu'il a ramassé durant ses voyages." + +#: ../script/events/room.js:568 +msgid "all he has are some scales." +msgstr "quelques écailles, toutes ses possessions." + +#: ../script/events/room.js:582 +msgid "the man expresses his thanks and hobbles off." +msgstr "l'homme vous remercie et repart, boitillant." + +#: ../script/events/setpieces.js:6 +msgid "An Outpost" +msgstr "Un avant poste" + +#: ../script/events/setpieces.js:10 ../script/events/setpieces.js:12 +msgid "a safe place in the wilds." +msgstr "Une place sûre dans la nature." + +#: ../script/events/setpieces.js:33 +msgid "A Murky Swamp" +msgstr "Un marais boueux" + +#: ../script/events/setpieces.js:37 +msgid "rotting reeds rise out of the swampy earth." +msgstr "des racines pourrissantes ressortent des marécages." + +#: ../script/events/setpieces.js:38 +msgid "a lone frog sits in the muck, silently." +msgstr "une grenouille solitaire est assise dans la vase, silencieuse." + +#: ../script/events/setpieces.js:40 +msgid "a swamp festers in the stagnant air." +msgstr "" + +#: ../script/events/setpieces.js:43 ../script/events/setpieces.js:530 +#: ../script/events/setpieces.js:585 ../script/events/setpieces.js:853 +#: ../script/events/setpieces.js:1264 ../script/events/setpieces.js:1282 +#: ../script/events/setpieces.js:3408 +msgid "enter" +msgstr "entrer" + +#: ../script/events/setpieces.js:54 +msgid "deep in the swamp is a moss-covered cabin." +msgstr "" + +#: ../script/events/setpieces.js:55 +msgid "an old wanderer sits inside, in a seeming trance." +msgstr "" + +#: ../script/events/setpieces.js:60 +msgid "talk" +msgstr "parler" + +#: ../script/events/setpieces.js:71 +msgid "the wanderer takes the charm and nods slowly." +msgstr "" + +#: ../script/events/setpieces.js:72 +msgid "he speaks of once leading the great fleets to fresh worlds." +msgstr "" + +#: ../script/events/setpieces.js:73 +msgid "unfathomable destruction to fuel wanderer hungers." +msgstr "" + +#: ../script/events/setpieces.js:74 +msgid "his time here, now, is his penance." +msgstr "" + +#: ../script/events/setpieces.js:90 +msgid "A Damp Cave" +msgstr "" + +#: ../script/events/setpieces.js:94 +msgid "the mouth of the cave is wide and dark." +msgstr "" + +#: ../script/events/setpieces.js:95 +msgid "can't see what's inside." +msgstr "" + +#: ../script/events/setpieces.js:97 +msgid "the earth here is split, as if bearing an ancient wound" +msgstr "" + +#: ../script/events/setpieces.js:100 ../script/events/setpieces.js:2834 +#: ../script/events/setpieces.js:3333 +msgid "go inside" +msgstr "" + +#: ../script/events/setpieces.js:119 ../script/events/setpieces.js:257 +msgid "a startled beast defends its home" +msgstr "" + +#: ../script/events/setpieces.js:134 ../script/events/setpieces.js:183 +#: ../script/events/setpieces.js:222 ../script/events/setpieces.js:239 +#: ../script/events/setpieces.js:272 ../script/events/setpieces.js:304 +#: ../script/events/setpieces.js:336 ../script/events/setpieces.js:368 +#: ../script/events/setpieces.js:569 ../script/events/setpieces.js:623 +#: ../script/events/setpieces.js:660 ../script/events/setpieces.js:692 +#: ../script/events/setpieces.js:730 ../script/events/setpieces.js:767 +#: ../script/events/setpieces.js:804 ../script/events/setpieces.js:836 +#: ../script/events/setpieces.js:885 ../script/events/setpieces.js:901 +#: ../script/events/setpieces.js:924 ../script/events/setpieces.js:961 +#: ../script/events/setpieces.js:998 ../script/events/setpieces.js:1217 +#: ../script/events/setpieces.js:1233 ../script/events/setpieces.js:1249 +#: ../script/events/setpieces.js:1357 ../script/events/setpieces.js:1395 +#: ../script/events/setpieces.js:1437 ../script/events/setpieces.js:1453 +#: ../script/events/setpieces.js:1469 ../script/events/setpieces.js:1506 +#: ../script/events/setpieces.js:1543 ../script/events/setpieces.js:1581 +#: ../script/events/setpieces.js:1618 ../script/events/setpieces.js:1635 +#: ../script/events/setpieces.js:1652 ../script/events/setpieces.js:1669 +#: ../script/events/setpieces.js:1713 ../script/events/setpieces.js:1737 +#: ../script/events/setpieces.js:1753 ../script/events/setpieces.js:1792 +#: ../script/events/setpieces.js:1831 ../script/events/setpieces.js:1854 +#: ../script/events/setpieces.js:1882 ../script/events/setpieces.js:1921 +#: ../script/events/setpieces.js:1955 ../script/events/setpieces.js:1988 +#: ../script/events/setpieces.js:2027 ../script/events/setpieces.js:2066 +#: ../script/events/setpieces.js:2100 ../script/events/setpieces.js:2133 +#: ../script/events/setpieces.js:2166 ../script/events/setpieces.js:2209 +#: ../script/events/setpieces.js:2234 ../script/events/setpieces.js:3089 +#: ../script/events/setpieces.js:3127 ../script/events/setpieces.js:3159 +#: ../script/events/setpieces.js:3227 ../script/events/setpieces.js:3259 +#: ../script/events/setpieces.js:3296 +msgid "continue" +msgstr "continuer" + +#: ../script/events/setpieces.js:138 ../script/events/setpieces.js:154 +#: ../script/events/setpieces.js:187 ../script/events/setpieces.js:226 +#: ../script/events/setpieces.js:244 ../script/events/setpieces.js:276 +#: ../script/events/setpieces.js:308 ../script/events/setpieces.js:340 +#: ../script/events/setpieces.js:372 ../script/events/setpieces.js:413 +#: ../script/events/setpieces.js:464 ../script/events/setpieces.js:495 +msgid "leave cave" +msgstr "sortir de la cave" + +#: ../script/events/setpieces.js:145 +msgid "the cave narrows a few feet in." +msgstr "" + +#: ../script/events/setpieces.js:146 +msgid "the walls are moist and moss-covered" +msgstr "" + +#: ../script/events/setpieces.js:150 +msgid "squeeze" +msgstr "" + +#: ../script/events/setpieces.js:161 +msgid "the remains of an old camp sits just inside the cave." +msgstr "" + +#: ../script/events/setpieces.js:162 +msgid "bedrolls, torn and blackened, lay beneath a thin layer of dust." +msgstr "" + +#: ../script/events/setpieces.js:194 +msgid "the body of a wanderer lies in a small cavern." +msgstr "" + +#: ../script/events/setpieces.js:195 +msgid "rot's been to work on it, and some of the pieces are missing." +msgstr "" + +#: ../script/events/setpieces.js:196 +msgid "can't tell what left it here." +msgstr "" + +#: ../script/events/setpieces.js:233 +msgid "the torch sputters and dies in the damp air" +msgstr "" + +#: ../script/events/setpieces.js:234 +msgid "the darkness is absolute" +msgstr "l’obscurité est complète" + +#: ../script/events/setpieces.js:236 +msgid "the torch goes out" +msgstr "la torche s’éteint" + +#: ../script/events/setpieces.js:289 +msgid "a cave lizard attacks" +msgstr "un lézard attaque" + +#: ../script/events/setpieces.js:321 +msgid "a large beast charges out of the dark" +msgstr "Une grande bête apparaît dans l'obscurité en chargeant" + +#: ../script/events/setpieces.js:353 +msgid "a giant lizard shambles forward" +msgstr "" + +#: ../script/events/setpieces.js:379 +msgid "the nest of a large animal lies at the back of the cave." +msgstr "le nid d'un grand animal se trouve au fond de la cave." + +#: ../script/events/setpieces.js:420 +msgid "a small supply cache is hidden at the back of the cave." +msgstr "une petite cachette à provision se trouve au fond de la cave." + +#: ../script/events/setpieces.js:471 +msgid "an old case is wedged behind a rock, covered in a thick layer of dust." +msgstr "" + +#: ../script/events/setpieces.js:503 +msgid "A Deserted Town" +msgstr "Une ville déserte" + +#: ../script/events/setpieces.js:507 +msgid "a small suburb lays ahead, empty houses scorched and peeling." +msgstr "" + +#: ../script/events/setpieces.js:508 +msgid "" +"broken streetlights stand, rusting. light hasn't graced this place in a long " +"time." +msgstr "" + +#: ../script/events/setpieces.js:510 +msgid "the town lies abandoned, its citizens long dead" +msgstr "la ville est totalement abandonnée. ses citoyens mort depuis longtemps" + +#: ../script/events/setpieces.js:513 ../script/events/setpieces.js:1201 +msgid "explore" +msgstr "explorer" + +#: ../script/events/setpieces.js:525 +msgid "" +"where the windows of the schoolhouse aren't shattered, they're blackened " +"with soot." +msgstr "" + +#: ../script/events/setpieces.js:526 +msgid "the double doors creak endlessly in the wind." +msgstr "le grincement des doubles portes battantes est porté par le vent." + +#: ../script/events/setpieces.js:535 ../script/events/setpieces.js:573 +#: ../script/events/setpieces.js:590 ../script/events/setpieces.js:627 +#: ../script/events/setpieces.js:664 ../script/events/setpieces.js:696 +#: ../script/events/setpieces.js:734 ../script/events/setpieces.js:771 +#: ../script/events/setpieces.js:808 ../script/events/setpieces.js:840 +#: ../script/events/setpieces.js:857 ../script/events/setpieces.js:889 +#: ../script/events/setpieces.js:905 ../script/events/setpieces.js:928 +#: ../script/events/setpieces.js:965 ../script/events/setpieces.js:1002 +#: ../script/events/setpieces.js:1044 ../script/events/setpieces.js:1076 +#: ../script/events/setpieces.js:1103 ../script/events/setpieces.js:1146 +#: ../script/events/setpieces.js:1167 ../script/events/setpieces.js:1182 +msgid "leave town" +msgstr "quitter la ville" + +#: ../script/events/setpieces.js:566 +msgid "ambushed on the street." +msgstr "une embuscade dans la rue." + +#: ../script/events/setpieces.js:580 +msgid "a squat building up ahead." +msgstr "" + +#: ../script/events/setpieces.js:581 +msgid "a green cross barely visible behind grimy windows." +msgstr "" + +#: ../script/events/setpieces.js:597 +msgid "a small cache of supplies is tucked inside a rusting locker." +msgstr "" + +#: ../script/events/setpieces.js:657 +msgid "a scavenger waits just inside the door." +msgstr "" + +#: ../script/events/setpieces.js:689 +msgid "a beast stands alone in an overgrown park." +msgstr "" + +#: ../script/events/setpieces.js:703 +msgid "an overturned caravan is spread across the pockmarked street." +msgstr "" + +#: ../script/events/setpieces.js:704 +msgid "" +"it's been picked over by scavengers, but there's still some things worth " +"taking." +msgstr "" + +#: ../script/events/setpieces.js:764 +msgid "a madman attacks, screeching." +msgstr "" + +#: ../script/events/setpieces.js:801 +msgid "a thug moves out of the shadows." +msgstr "" + +#: ../script/events/setpieces.js:833 +msgid "a beast charges out of a ransacked classroom." +msgstr "" + +#: ../script/events/setpieces.js:847 +msgid "through the large gymnasium doors, footsteps can be heard." +msgstr "" + +#: ../script/events/setpieces.js:848 +msgid "the torchlight casts a flickering glow down the hallway." +msgstr "" + +#: ../script/events/setpieces.js:849 +msgid "the footsteps stop." +msgstr "les bruits de pas s'arrêtent." + +#: ../script/events/setpieces.js:882 +msgid "another beast, draw by the noise, leaps out of a copse of trees." +msgstr "" + +#: ../script/events/setpieces.js:896 +msgid "something's causing a commotion a ways down the road." +msgstr "" + +#: ../script/events/setpieces.js:897 +msgid "a fight, maybe." +msgstr "un combat, peut-être." + +#: ../script/events/setpieces.js:912 +msgid "" +"a small basket of food is hidden under a park bench, with a note attached." +msgstr "" + +#: ../script/events/setpieces.js:913 +msgid "can't read the words." +msgstr "" + +#: ../script/events/setpieces.js:958 +msgid "a panicked scavenger bursts through the door, screaming." +msgstr "" + +#: ../script/events/setpieces.js:995 +msgid "a man stands over a dead wanderer. notices he's not alone." +msgstr "" + +#: ../script/events/setpieces.js:1009 +msgid "scavenger had a small camp in the school." +msgstr "" + +#: ../script/events/setpieces.js:1010 +msgid "collected scraps spread across the floor like they fell from heaven." +msgstr "" + +#: ../script/events/setpieces.js:1051 +msgid "scavenger'd been looking for supplies in here, it seems." +msgstr "" + +#: ../script/events/setpieces.js:1052 +msgid "a shame to let what he'd found go to waste." +msgstr "" + +#: ../script/events/setpieces.js:1083 +msgid "" +"beneath the wanderer's rags, clutched in one of its many hands, a glint of " +"steel." +msgstr "" + +#: ../script/events/setpieces.js:1084 +msgid "worth killing for, it seems." +msgstr "" + +#: ../script/events/setpieces.js:1110 +msgid "eye for an eye seems fair." +msgstr "" + +#: ../script/events/setpieces.js:1111 +msgid "always worked before, at least." +msgstr "" + +#: ../script/events/setpieces.js:1112 +msgid "picking the bones finds some useful trinkets." +msgstr "" + +#: ../script/events/setpieces.js:1153 +msgid "some medicine abandoned in the drawers." +msgstr "" + +#: ../script/events/setpieces.js:1174 +msgid "the clinic has been ransacked." +msgstr "" + +#: ../script/events/setpieces.js:1175 +msgid "only dust and stains remain." +msgstr "" + +#: ../script/events/setpieces.js:1190 +msgid "A Ruined City" +msgstr "" + +#: ../script/events/setpieces.js:1194 +msgid "" +"a battered highway sign stands guard at the entrance to this once-great city." +msgstr "" + +#: ../script/events/setpieces.js:1195 +msgid "" +"the towers that haven't crumbled jut from the landscape like the ribcage of " +"some ancient beast." +msgstr "" + +#: ../script/events/setpieces.js:1196 +msgid "might be things worth having still inside." +msgstr "" + +#: ../script/events/setpieces.js:1198 +msgid "the towers of a decaying city dominate the skyline" +msgstr "" + +#: ../script/events/setpieces.js:1212 +msgid "the streets are empty." +msgstr "" + +#: ../script/events/setpieces.js:1213 +msgid "the air is filled with dust, driven relentlessly by the hard winds." +msgstr "" + +#: ../script/events/setpieces.js:1221 ../script/events/setpieces.js:1237 +#: ../script/events/setpieces.js:1253 ../script/events/setpieces.js:1269 +#: ../script/events/setpieces.js:1286 ../script/events/setpieces.js:1323 +#: ../script/events/setpieces.js:1361 ../script/events/setpieces.js:1399 +#: ../script/events/setpieces.js:1441 ../script/events/setpieces.js:1457 +#: ../script/events/setpieces.js:1473 ../script/events/setpieces.js:1510 +#: ../script/events/setpieces.js:1547 ../script/events/setpieces.js:1585 +#: ../script/events/setpieces.js:1604 ../script/events/setpieces.js:1622 +#: ../script/events/setpieces.js:1639 ../script/events/setpieces.js:1656 +#: ../script/events/setpieces.js:1673 ../script/events/setpieces.js:1717 +#: ../script/events/setpieces.js:1741 ../script/events/setpieces.js:1757 +#: ../script/events/setpieces.js:1796 ../script/events/setpieces.js:1835 +#: ../script/events/setpieces.js:1858 ../script/events/setpieces.js:1886 +#: ../script/events/setpieces.js:1925 ../script/events/setpieces.js:1959 +#: ../script/events/setpieces.js:1992 ../script/events/setpieces.js:2031 +#: ../script/events/setpieces.js:2070 ../script/events/setpieces.js:2104 +#: ../script/events/setpieces.js:2137 ../script/events/setpieces.js:2170 +#: ../script/events/setpieces.js:2268 ../script/events/setpieces.js:2297 +#: ../script/events/setpieces.js:2342 ../script/events/setpieces.js:2378 +#: ../script/events/setpieces.js:2418 ../script/events/setpieces.js:2453 +#: ../script/events/setpieces.js:2488 ../script/events/setpieces.js:2523 +#: ../script/events/setpieces.js:2563 ../script/events/setpieces.js:2603 +#: ../script/events/setpieces.js:2637 ../script/events/setpieces.js:2685 +#: ../script/events/setpieces.js:2729 ../script/events/setpieces.js:2773 +#: ../script/events/setpieces.js:2816 +msgid "leave city" +msgstr "quitter la cité" + +#: ../script/events/setpieces.js:1228 +msgid "orange traffic cones are set across the street, faded and cracked." +msgstr "" + +#: ../script/events/setpieces.js:1229 +msgid "lights flash through the alleys between buildings." +msgstr "" + +#: ../script/events/setpieces.js:1244 +msgid "a large shanty town sprawls across the streets." +msgstr "" + +#: ../script/events/setpieces.js:1245 +msgid "faces, darkened by soot and blood, stare out from crooked huts." +msgstr "" + +#: ../script/events/setpieces.js:1260 +msgid "the shell of an abandoned hospital looms ahead." +msgstr "" + +#: ../script/events/setpieces.js:1276 +msgid "the old tower seems mostly intact." +msgstr "" + +#: ../script/events/setpieces.js:1277 +msgid "the shell of a burned out car blocks the entrance." +msgstr "" + +#: ../script/events/setpieces.js:1278 +msgid "most of the windows at ground level are busted anyway." +msgstr "" + +#: ../script/events/setpieces.js:1293 +msgid "a huge lizard scrambles up out of the darkness of an old metro station." +msgstr "" + +#: ../script/events/setpieces.js:1319 +msgid "descend" +msgstr "" + +#: ../script/events/setpieces.js:1329 +msgid "the shot echoes in the empty street." +msgstr "" + +#: ../script/events/setpieces.js:1367 +msgid "the soldier steps out from between the buildings, rifle raised." +msgstr "" + +#: ../script/events/setpieces.js:1405 +msgid "a frail man stands defiantly, blocking the path." +msgstr "" + +#: ../script/events/setpieces.js:1448 +msgid "nothing but downcast eyes." +msgstr "" + +#: ../script/events/setpieces.js:1449 +msgid "the people here were broken a long time ago." +msgstr "" + +#: ../script/events/setpieces.js:1464 +msgid "empty corridors." +msgstr "" + +#: ../script/events/setpieces.js:1465 +msgid "the place has been swept clean by scavengers." +msgstr "" + +#: ../script/events/setpieces.js:1479 +msgid "an old man bursts through a door, wielding a scalpel." +msgstr "" + +#: ../script/events/setpieces.js:1516 +msgid "a thug is waiting on the other side of the wall." +msgstr "" + +#: ../script/events/setpieces.js:1554 +msgid "a snarling beast jumps out from behind a car." +msgstr "" + +#: ../script/events/setpieces.js:1593 +msgid "street above the subway platform is blown away." +msgstr "" + +#: ../script/events/setpieces.js:1594 +msgid "lets some light down into the dusty haze." +msgstr "" + +#: ../script/events/setpieces.js:1595 +msgid "a sound comes from the tunnel, just ahead." +msgstr "" + +#: ../script/events/setpieces.js:1612 +msgid "looks like a camp of sorts up ahead." +msgstr "" + +#: ../script/events/setpieces.js:1613 +msgid "rusted chainlink is pulled across an alleyway." +msgstr "" + +#: ../script/events/setpieces.js:1614 +msgid "fires burn in the courtyard beyond." +msgstr "" + +#: ../script/events/setpieces.js:1630 +msgid "more voices can be heard ahead." +msgstr "" + +#: ../script/events/setpieces.js:1631 +msgid "they must be here for a reason." +msgstr "" + +#: ../script/events/setpieces.js:1647 +msgid "the sound of gunfire carries on the wind." +msgstr "" + +#: ../script/events/setpieces.js:1648 +msgid "the street ahead glows with firelight." +msgstr "" + +#: ../script/events/setpieces.js:1664 +msgid "more squatters are crowding around now." +msgstr "" + +#: ../script/events/setpieces.js:1665 +msgid "someone throws a stone." +msgstr "" + +#: ../script/events/setpieces.js:1681 +msgid "an improvised shop is set up on the sidewalk." +msgstr "" + +#: ../script/events/setpieces.js:1682 +msgid "the owner stands by, stoic." +msgstr "" + +#: ../script/events/setpieces.js:1725 +msgid "strips of meat hang drying by the side of the street." +msgstr "" + +#: ../script/events/setpieces.js:1726 +msgid "the people back away, avoiding eye contact." +msgstr "" + +#: ../script/events/setpieces.js:1749 +msgid "someone has locked and barricaded the door to this operating theatre." +msgstr "" + +#: ../script/events/setpieces.js:1764 +msgid "a tribe of elderly squatters is camped out in this ward." +msgstr "" + +#: ../script/events/setpieces.js:1803 +msgid "a pack of lizards rounds the corner." +msgstr "" + +#: ../script/events/setpieces.js:1843 +msgid "strips of meat are hung up to dry in this ward." +msgstr "" + +#: ../script/events/setpieces.js:1865 +msgid "a large bird nests at the top of the stairs." +msgstr "" + +#: ../script/events/setpieces.js:1894 +msgid "the debris is denser here." +msgstr "" + +#: ../script/events/setpieces.js:1895 +msgid "maybe some useful stuff in the rubble." +msgstr "" + +#: ../script/events/setpieces.js:1932 +msgid "a swarm of rats rushes up the tunnel." +msgstr "" + +#: ../script/events/setpieces.js:1966 +msgid "a large man attacks, waving a bayonet." +msgstr "" + +#: ../script/events/setpieces.js:1999 +msgid "a second soldier opens fire." +msgstr "" + +#: ../script/events/setpieces.js:2038 +msgid "a masked soldier rounds the corner, gun drawn" +msgstr "" + +#: ../script/events/setpieces.js:2077 +msgid "the crowd surges forward." +msgstr "" + +#: ../script/events/setpieces.js:2111 +msgid "a youth lashes out with a tree branch." +msgstr "" + +#: ../script/events/setpieces.js:2144 +msgid "a squatter stands firmly in the doorway of a small hut." +msgstr "" + +#: ../script/events/setpieces.js:2177 +msgid "behind the door, a deformed figure awakes and attacks." +msgstr "" + +#: ../script/events/setpieces.js:2216 +msgid "as soon as the door is open a little bit, hundreds of tentacles erupt." +msgstr "" + +#: ../script/events/setpieces.js:2242 +msgid "bird must have liked shiney things." +msgstr "" + +#: ../script/events/setpieces.js:2243 +msgid "some good stuff woven into its nest." +msgstr "" + +#: ../script/events/setpieces.js:2276 +msgid "not much here." +msgstr "" + +#: ../script/events/setpieces.js:2277 +msgid "scavengers must have gotten to this place already." +msgstr "" + +#: ../script/events/setpieces.js:2305 +msgid "the tunnel opens up at another platform." +msgstr "" + +#: ../script/events/setpieces.js:2306 +msgid "the walls are scorched from an old battle." +msgstr "" + +#: ../script/events/setpieces.js:2307 +msgid "bodies and supplies from both sides litter the ground." +msgstr "" + +#: ../script/events/setpieces.js:2351 +msgid "the small military outpost is well supplied." +msgstr "" + +#: ../script/events/setpieces.js:2352 +msgid "" +"arms and munitions, relics from the war, are neatly arranged on the store-" +"room floor." +msgstr "" + +#: ../script/events/setpieces.js:2353 +msgid "just as deadly now as they were then." +msgstr "" + +#: ../script/events/setpieces.js:2386 +msgid "searching the bodies yields a few supplies." +msgstr "" + +#: ../script/events/setpieces.js:2387 +msgid "more soldiers will be on their way." +msgstr "" + +#: ../script/events/setpieces.js:2388 +msgid "time to move on." +msgstr "" + +#: ../script/events/setpieces.js:2426 +msgid "the small settlement has clearly been burning a while." +msgstr "" + +#: ../script/events/setpieces.js:2427 +msgid "" +"the bodies of the wanderers that lived here are still visible in the flames." +msgstr "" + +#: ../script/events/setpieces.js:2428 +msgid "still time to rescue a few supplies." +msgstr "" + +#: ../script/events/setpieces.js:2462 +msgid "" +"the remaining settlers flee from the violence, their belongings forgotten." +msgstr "" + +#: ../script/events/setpieces.js:2463 +msgid "there's not much, but some useful things can still be found." +msgstr "" + +#: ../script/events/setpieces.js:2496 +msgid "the young settler was carrying a canvas sack." +msgstr "" + +#: ../script/events/setpieces.js:2497 +msgid "it contains travelling gear, and a few trinkets." +msgstr "" + +#: ../script/events/setpieces.js:2498 ../script/events/setpieces.js:2533 +msgid "there's nothing else here." +msgstr "" + +#: ../script/events/setpieces.js:2531 +msgid "inside the hut, a child cries." +msgstr "à l'intérieur de la cabane, un enfant pleur." + +#: ../script/events/setpieces.js:2532 +msgid "a few belongings rest against the walls." +msgstr "" + +#: ../script/events/setpieces.js:2571 +msgid "the stench of rot and death fills the operating theatres." +msgstr "" + +#: ../script/events/setpieces.js:2572 +msgid "a few items are scattered on the ground." +msgstr "" + +#: ../script/events/setpieces.js:2573 +msgid "there is nothing else here." +msgstr "il n'y a rien d'autre ici." + +#: ../script/events/setpieces.js:2611 +msgid "a pristine medicine cabinet at the end of a hallway." +msgstr "" + +#: ../script/events/setpieces.js:2612 +msgid "the rest of the hospital is empty." +msgstr "le reste de l'hopital est vide." + +#: ../script/events/setpieces.js:2645 +msgid "someone had been stockpiling loot here." +msgstr "" + +#: ../script/events/setpieces.js:2693 +msgid "the tentacular horror is defeated." +msgstr "l'horreur tentaculaire est vaincue." + +#: ../script/events/setpieces.js:2694 +msgid "inside, the remains of its victims are everywhere." +msgstr "a l'intérieur, les restes de ses victimes sont partout." + +#: ../script/events/setpieces.js:2737 +msgid "the warped man lies dead." +msgstr "" + +#: ../script/events/setpieces.js:2738 +msgid "the operating theatre has a lot of curious equipment." +msgstr "" + +#: ../script/events/setpieces.js:2781 +msgid "the old man had a small cache of interesting items." +msgstr "" + +#: ../script/events/setpieces.js:2824 +msgid "An Old House" +msgstr "Une vieille maison" + +#: ../script/events/setpieces.js:2828 +msgid "an old house remains here, once white siding yellowed and peeling." +msgstr "" + +#: ../script/events/setpieces.js:2829 +msgid "the door hangs open." +msgstr "" + +#: ../script/events/setpieces.js:2831 +msgid "the remains of an old house stand as a monument to simpler times" +msgstr "" + +#: ../script/events/setpieces.js:2845 +msgid "the house is abandoned, but not yet picked over." +msgstr "" + +#: ../script/events/setpieces.js:2846 +msgid "still a few drops of water in the old well." +msgstr "" + +#: ../script/events/setpieces.js:2879 +msgid "the house has been ransacked." +msgstr "" + +#: ../script/events/setpieces.js:2880 +msgid "but there is a cache of medicine under the floorboards." +msgstr "" + +#: ../script/events/setpieces.js:2907 +msgid "a man charges down the hall, a rusty blade in his hand" +msgstr "" + +#: ../script/events/setpieces.js:2938 +msgid "A Forgotten Battlefield" +msgstr "" + +#: ../script/events/setpieces.js:2942 +msgid "a battle was fought here, long ago." +msgstr "" + +#: ../script/events/setpieces.js:2943 +msgid "" +"battered technology from both sides lays dormant on the blasted landscape." +msgstr "" + +#: ../script/events/setpieces.js:2990 +msgid "A Huge Borehole" +msgstr "" + +#: ../script/events/setpieces.js:2994 +msgid "a huge hole is cut deep into the earth, evidence of the past harvest." +msgstr "" + +#: ../script/events/setpieces.js:2995 +msgid "they took what they came for, and left." +msgstr "" + +#: ../script/events/setpieces.js:2996 +msgid "" +"castoff from the mammoth drills can still be found by the edges of the " +"precipice." +msgstr "" + +#: ../script/events/setpieces.js:3018 +msgid "A Crashed Ship" +msgstr "Un vaisseau écrasé" + +#: ../script/events/setpieces.js:3027 +msgid "" +"the familiar curves of a wanderer vessel rise up out of the dust and ash. " +msgstr "" + +#: ../script/events/setpieces.js:3028 +msgid "lucky that the natives can't work the mechanisms." +msgstr "" + +#: ../script/events/setpieces.js:3029 +msgid "with a little effort, it might fly again." +msgstr "" + +#: ../script/events/setpieces.js:3033 +msgid "salvage" +msgstr "" + +#: ../script/events/setpieces.js:3041 +msgid "The Sulphur Mine" +msgstr "La mine de souffre" + +#: ../script/events/setpieces.js:3045 +msgid "the military is already set up at the mine's entrance." +msgstr "" + +#: ../script/events/setpieces.js:3046 +msgid "soldiers patrol the perimeter, rifles slung over their shoulders." +msgstr "" +"des soldats patrouillent dans le périmètre, fusils posés sur leurs épaules." + +#: ../script/events/setpieces.js:3048 +msgid "a military perimeter is set up around the mine." +msgstr "un périmètre sécurisé a été mis en place autour de la mine." + +#: ../script/events/setpieces.js:3051 ../script/events/setpieces.js:3195 +msgid "attack" +msgstr "attaquer" + +#: ../script/events/setpieces.js:3086 +msgid "a soldier, alerted, opens fire." +msgstr "un soldat, alerté, ouvre le feu." + +#: ../script/events/setpieces.js:3093 ../script/events/setpieces.js:3131 +#: ../script/events/setpieces.js:3231 ../script/events/setpieces.js:3263 +msgid "run" +msgstr "courir" + +#: ../script/events/setpieces.js:3124 +msgid "a second soldier joins the fight." +msgstr "un deuxième soldat rejoint le combat." + +#: ../script/events/setpieces.js:3156 +msgid "a grizzled soldier attacks, waving a bayonet." +msgstr "" + +#: ../script/events/setpieces.js:3166 +msgid "the military presence has been cleared." +msgstr "la présence militaire a été néttoyée." + +#: ../script/events/setpieces.js:3167 ../script/events/setpieces.js:3304 +#: ../script/events/setpieces.js:3379 +msgid "the mine is now safe for workers." +msgstr "la mine est maintenant sûre pour les mineurs." + +#: ../script/events/setpieces.js:3169 +msgid "the sulphur mine is clear of dangers" +msgstr "la mine de souffre est maintenant sans danger" + +#: ../script/events/setpieces.js:3185 +msgid "The Coal Mine" +msgstr "Une mine de charbon" + +#: ../script/events/setpieces.js:3189 +msgid "camp fires burn by the entrance to the mine." +msgstr "un feu de camps brûle a l'entrée de la mine." + +#: ../script/events/setpieces.js:3190 +msgid "men mill about, weapons at the ready." +msgstr "" + +#: ../script/events/setpieces.js:3192 +msgid "this old mine is not abandoned" +msgstr "cette vieille mine n'est pas abandonnée" + +#: ../script/events/setpieces.js:3224 ../script/events/setpieces.js:3256 +msgid "a man joins the fight" +msgstr "Une personne rejoint le combat" + +#: ../script/events/setpieces.js:3293 +msgid "only the chief remains." +msgstr "seul le chef reste." + +#: ../script/events/setpieces.js:3303 +msgid "the camp is still, save for the crackling of the fires." +msgstr "" + +#: ../script/events/setpieces.js:3306 +msgid "the coal mine is clear of dangers" +msgstr "La mine de charbon est sécurisée" + +#: ../script/events/setpieces.js:3322 +msgid "The Iron Mine" +msgstr "La mine de fer" + +#: ../script/events/setpieces.js:3326 +msgid "an old iron mine sits here, tools abandoned and left to rust." +msgstr "" +"ici se trouve une vieille mine de fer, les outils abandonnés, bon pour " +"rouiller." + +#: ../script/events/setpieces.js:3327 +msgid "" +"bleached bones are strewn about the entrance. many, deeply scored with " +"jagged grooves." +msgstr "" + +#: ../script/events/setpieces.js:3328 +msgid "feral howls echo out of the darkness." +msgstr "" + +#: ../script/events/setpieces.js:3330 +msgid "the path leads to an abandoned mine" +msgstr "le chemin mène à une mine abandonnée" + +#: ../script/events/setpieces.js:3368 +msgid "a large creature lunges, muscles rippling in the torchlight" +msgstr "" + +#: ../script/events/setpieces.js:3378 +msgid "the beast is dead." +msgstr "la bête est morte." + +#: ../script/events/setpieces.js:3381 +msgid "the iron mine is clear of dangers" +msgstr "la mine de fer est sûre." + +#: ../script/events/setpieces.js:3398 +msgid "A Destroyed Village" +msgstr "Un village détruit" + +#: ../script/events/setpieces.js:3402 +msgid "a destroyed village lies in the dust." +msgstr "Des ruines d'un village recouvert de poussières." + +#: ../script/events/setpieces.js:3403 +msgid "charred bodies litter the ground." +msgstr "" + +#: ../script/events/setpieces.js:3405 +msgid "the metallic tang of wanderer afterburner hangs in the air." +msgstr "" + +#: ../script/events/setpieces.js:3419 +msgid "a shack stands at the center of the village." +msgstr "" + +#: ../script/events/setpieces.js:3420 +msgid "there are still supplies inside." +msgstr "il reste des provisions à l'intérieur." + +#: ../script/events/setpieces.js:3424 +msgid "take" +msgstr "prendre" + +#: ../script/events/setpieces.js:3431 +msgid "all the work of a previous generation is here." +msgstr "tout le travail d'une ancienne génération est là." + +#: ../script/events/setpieces.js:3432 +msgid "ripe for the picking." +msgstr "" + +#: ../script/events/global.js:6 +msgid "The Thief" +msgstr "Le voleur" + +#: ../script/events/global.js:13 +msgid "the villagers haul a filthy man out of the store room." +msgstr "" + +#: ../script/events/global.js:14 +msgid "say his folk have been skimming the supplies." +msgstr "" + +#: ../script/events/global.js:15 +msgid "say he should be strung up as an example." +msgstr "" + +#: ../script/events/global.js:17 +msgid "a thief is caught" +msgstr "un voleur est attrapé" + +#: ../script/events/global.js:20 +msgid "hang him" +msgstr "le pendre" + +#: ../script/events/global.js:24 +msgid "spare him" +msgstr "l'épargner" + +#: ../script/events/global.js:31 +msgid "the villagers hang the thief high in front of the store room." +msgstr "les villageois pendent le voleur devant l’entrepôt." + +#: ../script/events/global.js:32 +msgid "" +"the point is made. in the next few days, the missing supplies are returned." +msgstr "" +"le message est passé. Les biens manquant sont rendus dans les jours qui " +"suivent." + +#: ../script/events/global.js:48 +msgid "the man says he's grateful. says he won't come around any more." +msgstr "l'homme dit être reconnaissant. Il dit qu'il ne reviendra plus." + +#: ../script/events/global.js:49 +msgid "shares what he knows about sneaking before he goes." +msgstr "il partage ses astuces pour être discret avant de s'en aller." diff --git a/script/engine.js b/script/engine.js index f3a37a6..70c31ba 100644 --- a/script/engine.js +++ b/script/engine.js @@ -487,7 +487,8 @@ var Engine = { }, getIncomeMsg: function(num, delay) { - return (num > 0 ? "+" : "") + num + " per " + delay + "s"; + return _("{0} per {1}s", (num > 0 ? "+" : "") + num, delay); + //return (num > 0 ? "+" : "") + num + " per " + delay + "s"; }, keyDown: function(e) { diff --git a/script/events/encounters.js b/script/events/encounters.js index fe750c8..dd2ca77 100644 --- a/script/events/encounters.js +++ b/script/events/encounters.js @@ -373,7 +373,7 @@ Events.Encounters = [ chance: 0.1 } }, - notification: _('a shot rings out, from somewhere in the long grass'à + notification: _('a shot rings out, from somewhere in the long grass') } } } diff --git a/script/localization.js b/script/localization.js new file mode 100644 index 0000000..0fbf89a --- /dev/null +++ b/script/localization.js @@ -0,0 +1,52 @@ +(function(){ + //only used for poedit to find translatable strings + var keywords = [ _('wood'),_('builder'),_('teeth'),_('meat'),_('fur'), + _('charm'),_('leather'),_('iron'), _('steel'), _('coal'), + _('hut'), _('cart'), _('trap'), _('gatherer'),_('cloth'), + _('torch'),_('medicine'),_('hunter'),_('trapper'),_('tanner'), + _("charcutier"),_('iron miner'),_('coal miner'), _('sulphur miner'), _('armourer'), + _('steelworker'),_('bait'),_('cured meat'), _('scales'), _('compass'), + _('scales'), _('bone spear'), _('rucksack'), _('l armour'), _('trading post'), + _('lodge'), _('tannery'), _('smokehouse'), _('workshop'), _('cured meat')]; + delete keywords; + + //translate text in css by overriding attributes + $("