From 44d9ea2a1511606c761999ef71e65c38fec2543c Mon Sep 17 00:00:00 2001 From: Marcelo Sizer Date: Thu, 30 Jan 2014 18:25:25 -0200 Subject: [PATCH] i18n(interpolation): Add string interpolation --- views/options/inventory/inventory.jade | 21 +----- views/options/inventory/stable.jade | 2 +- views/options/profile.jade | 100 ++++++++++++------------- views/options/settings.jade | 80 ++++++++++---------- views/options/social/challenges.jade | 4 +- views/options/social/group.jade | 10 +-- views/options/social/hall.jade | 4 +- views/options/social/tavern.jade | 25 ++++--- views/shared/header/avatar.jade | 2 +- views/shared/modals/achievements.jade | 13 +--- views/shared/modals/buy-gems.jade | 5 +- views/shared/modals/settings.jade | 4 +- views/shared/tasks/task.jade | 4 +- views/static/about.jade | 2 +- views/static/contact.jade | 2 +- views/static/layout.jade | 10 +-- views/static/plans.jade | 59 ++++++++------- 17 files changed, 163 insertions(+), 184 deletions(-) diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index cc0c8d0d56..ee228041dc 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -78,24 +78,9 @@ script(type='text/ng-template', id='partials/options.inventory.drops.html') .popover-content p=env.t('welcomeMarket') p - button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()') - =env.t('sell') - |  {{selectedEgg.text}}  - =env.t('for') - |  {{selectedEgg.value}}  - =env.t('gold') - button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()') - =env.t('sell') - |  {{selectedPotion.text}}  - =env.t('for') - |  {{selectedPotion.value}}  - =env.t('gold') - button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()') - =env.t('sell') - |  {{selectedFood.text}}  - =env.t('for') - |  {{selectedFood.value}}  - =env.t('gold') + button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedEgg.text}}", gold: "{{selectedEgg.value}}"}) + button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedPotion.text}}", gold: "{{selectedPotion.value}}"}) + button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')=env.t('sellForGold', {item: "{{selectedFood.text}}", gold: "{{selectedFood.value}}"}) menu.inventory-list(type='list') li.customize-menu menu.pets-menu(label=env.t('eggs')) diff --git a/views/options/inventory/stable.jade b/views/options/inventory/stable.jade index 457881e42c..328be90ebb 100644 --- a/views/options/inventory/stable.jade +++ b/views/options/inventory/stable.jade @@ -10,7 +10,7 @@ script(type='text/ng-template', id='partials/options.inventory.mounts.html') h3.popover-title a(target='_blank', href='http://www.kickstarter.com/profile/mattboch')=env.t('mattBoch') .popover-content - p=env.t('mattShall1') + ' {{user.profile.name}} ' + env.t('mattShall2') + p=env.t('mattShall', {name: "{{user.profile.name}}"}) h4= '{{mountCount}} / {{totalPets}} ' + env.t('mountsTamed') menu.pets(type='list') li.customize-menu(ng-repeat='egg in Content.eggs') diff --git a/views/options/profile.jade b/views/options/profile.jade index 36eec2f599..d1d730b738 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -1,15 +1,15 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') .row-fluid .span4 - h3=env.t('bodybody') + h3=env.t('bodyBody') small | 2 / = ' ' + env.t('locked') - h5=env.t('bodysize') + h5=env.t('bodySize') .btn-group - button.btn.btn-small(ng-class='{active: user.preferences.size=="slim"}', ng-click='set({"preferences.size":"slim"})')=env.t('bodyslim') - button.btn.btn-small(ng-class='{active: user.preferences.size=="broad"}', ng-click='set({"preferences.size":"broad"})')=env.t('bodybroad') + button.btn.btn-small(ng-class='{active: user.preferences.size=="slim"}', ng-click='set({"preferences.size":"slim"})')=env.t('bodySlim') + button.btn.btn-small(ng-class='{active: user.preferences.size=="broad"}', ng-click='set({"preferences.size":"broad"})')=env.t('bodyBroad') menu(type='list') li.customize-menu @@ -17,15 +17,15 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') each shirt in ['black', 'blue', 'green', 'pink', 'white', 'yellow'] button.customize-option(class='{{user.preferences.size}}_shirt_'+shirt, type='button', ng-click='set({"preferences.shirt":"'+shirt+'"})') - menu(label=env.t('specialshirts')) + menu(label=env.t('specialShirts')) each shirt in ['convict', 'cross', 'fire', 'horizon', 'ocean', 'purple', 'rainbow', 'redblue', 'thunder', 'tropical', 'zombie'] button.customize-option(type='button', class='{{user.preferences.size}}_shirt_'+shirt, ng-class='{locked: !user.purchased.shirt.'+shirt+'}', ng-click='unlock("shirt.'+shirt+'")') menu - button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")')!= env.t('unlockset5') + ' ' + button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")')!= env.t('unlockSet5') + ' ' .span4 - h3=env.t('bodyhead') + h3=env.t('bodyHead') small | 2 / = ' ' + env.t('locked') @@ -38,35 +38,35 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') // Special Events li.customize-menu.well.limited-edition - .label.label-info.pull-right(popover=env.t('limited31Jan'), popover-title=env.t('limitededition'), popover-placement='right', popover-trigger='mouseenter') - =env.t('limitededition') + .label.label-info.pull-right(popover=env.t('limited31Jan'), popover-title=env.t('limitedEdition'), popover-placement='right', popover-trigger='mouseenter') + =env.t('limitedEdition') | i.icon.icon-question-sign - menu(label=env.t('wintercolors')) + menu(label=env.t('winterColors')) each color in ['candycane','frost','winternight','holly'] button(type='button', ng-class='{locked: !user.purchased.hair.color.#{color}}', class='customize-option hair_bangs_1_#{color}', style='width: 40px; height: 40px;', ng-click='unlock("hair.color.#{color}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.color.candycane && user.purchased.hair.color.frost && user.purchased.hair.color.winternight && user.purchased.hair.color.holly', ng-click='unlock("hair.color.candycane,hair.color.frost,hair.color.winternight,hair.color.holly")')!= env.t('unlockset5') + ' ' + button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.color.candycane && user.purchased.hair.color.frost && user.purchased.hair.color.winternight && user.purchased.hair.color.holly', ng-click='unlock("hair.color.candycane,hair.color.frost,hair.color.winternight,hair.color.holly")')!= env.t('unlockSet5') + ' ' - h5=env.t('bodyhair') + h5=env.t('bodyHair') // Bangs li.customize-menu - menu(label=env.t('hairbangs')) + menu(label=env.t('hairBangs')) button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.bangs":0})') each num in [1,2,3] button(class='hair_bangs_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.bangs":#{num}})') // Base li.customize-menu - menu(label=env.t('hairbase')) + menu(label=env.t('hairBase')) button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.base":0})') each v,k in {1:true,2:false,3:true,4:false,5:false,6:false,7:false,8:false} case v when true: button(class='hair_base_#{k}_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.base":#{k}})') when false: button(class='hair_base_#{k}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.base.#{k}}', ng-click='unlock("hair.base.#{k}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.base.2 && user.purchased.hair.base.4 && user.purchased.hair.base.5 && user.purchased.hair.base.6 && user.purchased.hair.base.7 && user.purchased.hair.base.8', ng-click='unlock("hair.base.2,hair.base.4,hair.base.5,hair.base.6,hair.base.7,hair.base.8")')!= env.t('unlockset5') + ' ' + button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.base.2 && user.purchased.hair.base.4 && user.purchased.hair.base.5 && user.purchased.hair.base.6 && user.purchased.hair.base.7 && user.purchased.hair.base.8', ng-click='unlock("hair.base.2,hair.base.4,hair.base.5,hair.base.6,hair.base.7,hair.base.8")')!= env.t('unlockSet5') + ' ' - h5=env.t('bodyfacialhair') + h5=env.t('bodyFacialHair') // Beard li.customize-menu @@ -82,31 +82,31 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') each num in [1,2] button(class='hair_mustache_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.mustache.#{num}}', ng-click='unlock("hair.mustache.#{num}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.mustache.1 && user.purchased.hair.mustache.2 && user.purchased.hair.beard.1 && user.purchased.hair.beard.2 && user.purchased.hair.beard.3', ng-click='unlock("hair.mustache.1,hair.mustache.2,hair.beard.1,hair.beard.2,hair.beard.3")')!= env.t('unlockset5') + ' ' + button.btn.btn-small.btn-primary(ng-hide='user.purchased.hair.mustache.1 && user.purchased.hair.mustache.2 && user.purchased.hair.beard.1 && user.purchased.hair.beard.2 && user.purchased.hair.beard.3', ng-click='unlock("hair.mustache.1,hair.mustache.2,hair.beard.1,hair.beard.2,hair.beard.3")')!= env.t('unlockSet5') + ' ' .span4 - h3=env.t('bodyskin') + h3=env.t('bodySkin') small | 2 / = ' ' + env.t('locked') // skin li.customize-menu - menu(label=env.t('basicskins')) + menu(label=env.t('basicSkins')) each color in ['ddc994','f5a76e','ea8349','c06534','98461a','915533','c3e1dc','6bd049'] button.customize-option(type='button', class='skin_#{color}', ng-click='set({"preferences.skin":"#{color}"})') // Rainbow Skin - h5=env.t('rainbowskins') + h5=env.t('rainbowSkins') //menu(label='Rainbow Skins (2G / skin)') menu each color in ['eb052b','f69922','f5d70f','0ff591','2b43f6','d7a9f7','800ed0','rainbow'] button.customize-option(type='button', class='skin_#{color}', ng-class='{locked: !user.purchased.skin.#{color}}', ng-click='unlock("skin.#{color}")') - button.btn.btn-small.btn-primary(ng-hide='user.purchased.skin.eb052b && user.purchased.skin.f69922 && user.purchased.skin.f5d70f && user.purchased.skin.0ff591 && user.purchased.skin.2b43f6 && user.purchased.skin.d7a9f7 && user.purchased.skin.800ed0 && user.purchased.skin.rainbow', ng-click='unlock("skin.eb052b,skin.f69922,skin.f5d70f,skin.0ff591,skin.2b43f6,skin.d7a9f7,skin.800ed0,skin.rainbow")')!= env.t('unlockset5') + ' ' + button.btn.btn-small.btn-primary(ng-hide='user.purchased.skin.eb052b && user.purchased.skin.f69922 && user.purchased.skin.f5d70f && user.purchased.skin.0ff591 && user.purchased.skin.2b43f6 && user.purchased.skin.d7a9f7 && user.purchased.skin.800ed0 && user.purchased.skin.rainbow', ng-click='unlock("skin.eb052b,skin.f69922,skin.f5d70f,skin.0ff591,skin.2b43f6,skin.d7a9f7,skin.800ed0,skin.rainbow")')!= env.t('unlockSet5') + ' ' // Special Events // restore to d4df481 to see purchasing + "limited edition" code div(ng-if='user.purchased.skin.monster || user.purchased.skin.pumpkin || user.purchased.skin.skeleton || user.purchased.skin.zombie || user.purchased.skin.ghost || user.purchased.skin.shadow') - h5=env.t('spookyskins') + h5=env.t('spookySkins') menu each color in ['monster','pumpkin','skeleton','zombie','ghost','shadow'] button.customize-option(type='button', class='skin_#{color}', ng-if='user.purchased.skin.#{color}', ng-click='unlock("skin.#{color}")') @@ -116,11 +116,11 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') .border-right(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') include ../shared/profiles/stats .span4.border-right.allocate-stats(ng-if='user.flags.classSelected && !user.preferences.disableClasses') - h3=env.t('characterbuild') + h3=env.t('characterBuild') h4 =env.t('class') + ': ' span {{ {warrior:'Warrior',wizard:'Mage',healer:'Healer',rogue:'Rogue'}[user.stats.class] }}  - a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeclass') + a.btn.btn-danger.btn-mini(ng-click='changeClass(null)')=env.t('changeClass') small 3 table.table.table-striped tr @@ -129,48 +129,48 @@ script(id='partials/options.profile.stats.html', type='text/ng-template') {{user.stats.points}}  =env.t('unallocated')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelpopover')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('levelPopover')) td tr td(colspan=2) fieldset.auto-allocate label.checkbox input(type='checkbox', ng-model='user.preferences.automaticAllocation', ng-change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation?true: false})', ng-click='set({"preferences.allocationMode":"taskbased"})') - =env.t('automaticallocation') + =env.t('autoAllocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('automaticallocationpopover')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('autoAllocationPop')) form(ng-show='user.preferences.automaticAllocation',style='margin-left:1em') label.radio input(type='radio', name='allocationMode', value='flat', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "flat"})') - =env.t('evenallocation') + =env.t('evenAllocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenallocationpopover')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('evenAllocationPop')) label.radio input(type='radio', name='allocationMode', value='classbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "classbased"})') - =env.t('classallocation') + =env.t('classAllocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classallocationpopover')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('classAllocationPop')) label.radio input(type='radio', name='allocationMode', value='taskbased', ng-model='user.preferences.allocationMode', ng-change='set({"preferences.allocationMode": "taskbased"})') - =env.t('taskallocation') + =env.t('taskAllocation')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskallocationpopover')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('taskAllocationPop')) tr - td= env.t('allocatestr') + ' {{user.stats.str}}' + td= env.t('allocateStr') + ' {{user.stats.str}}' td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatestrpop')) + + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("str")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateStrPop')) + tr - td= env.t('allocatecon') + ' {{user.stats.con}}' + td= env.t('allocateCon') + ' {{user.stats.con}}' td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateconpop')) + + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("con")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateConPop')) + tr - td= env.t('allocateper') + ' {{user.stats.per}}' + td= env.t('allocatePer') + ' {{user.stats.per}}' td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateperpop')) + + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("per")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocatePerPop')) + tr - td= env.t('allocateint') + ' {{user.stats.int}}' + td= env.t('allocateInt') + ' {{user.stats.int}}' td - a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateintpop')) + + a.btn.btn-primary(ng-show='user.stats.points', ng-click='allocate("int")', popover-trigger='mouseenter', popover-placement='right', popover=env.t('allocateIntPop')) + div(ng-class='user.flags.classSelected && !user.preferences.disableClasses ? "span4" : "span6"') include ../shared/profiles/achievements @@ -178,19 +178,19 @@ script(id='partials/options.profile.profile.html', type='text/ng-template') button.btn.btn-default(ng-click='_editing.profile = true', ng-show='!_editing.profile')= env.t('edit') button.btn.btn-primary(ng-click='save()', ng-show='_editing.profile')= env.t('save') div(ng-show='!_editing.profile') - h4=env.t('displayname') + h4=env.t('displayName') span(ng-show='profile.profile.name') {{profile.profile.name}} span.muted(ng-hide='profile.profile.name') -  =env.t('none') |  - - h4=env.t('displayphoto') + h4=env.t('displayPhoto') img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}') span.muted(ng-hide='profile.profile.imageUrl') -  =env.t('none') |  - - h4=env.t('displayblurb') + h4=env.t('displayBlurb') markdown(ng-show='profile.profile.blurb', ng-model='profile.profile.blurb') span.muted(ng-hide='profile.profile.blurb') -  =env.t('none') @@ -200,14 +200,14 @@ script(id='partials/options.profile.profile.html', type='text/ng-template') div.whatever-options(ng-show='_editing.profile') // TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak .control-group.option-large - label.control-label=env.t('displayname') + label.control-label=env.t('displayName') input.option-content(type='text', placeholder=env.t('fullName'), ng-model='editingProfile.name') .control-group.option-large - label.control-label=env.t('photourl') - input.option-content(type='url', ng-model='editingProfile.imageUrl', placeholder=env.t('imageurl')) + label.control-label=env.t('photoUrl') + input.option-content(type='url', ng-model='editingProfile.imageUrl', placeholder=env.t('imageUrl')) .control-group.option-large - label.control-label=env.t('displayblurb') - textarea.option-content(style='height:15em;', placeholder=env.t("displayblurb"), ng-model='editingProfile.blurb') + label.control-label=env.t('displayBlurb') + textarea.option-content(style='height:15em;', placeholder=env.t('displayBlurb'), ng-model='editingProfile.blurb') include ../shared/formatting-help script(id='partials/options.profile.html', type="text/ng-template") @@ -217,7 +217,7 @@ script(id='partials/options.profile.html', type="text/ng-template") =env.t('avatar') li(ng-class="{ active: $state.includes('options.profile.stats') }") a(ui-sref='options.profile.stats') - =env.t('statsach') + =env.t('statsAch') li(ng-class="{ active: $state.includes('options.profile.profile') }") a(ui-sref='options.profile.profile') =env.t('profile') diff --git a/views/options/settings.jade b/views/options/settings.jade index 5a330cda07..cd808f4336 100644 --- a/views/options/settings.jade +++ b/views/options/settings.jade @@ -8,10 +8,10 @@ script(id='partials/options.settings.html', type="text/ng-template") =env.t('API') li(ng-class="{ active: $state.includes('options.settings.export') }") a(ui-sref='options.settings.export') - =env.t('dataexport') + =env.t('dataExport') li(ng-class="{ active: $state.includes('options.settings.subscription') }") a(ui-sref='options.settings.subscription') - | Subscription + =env.t('subscription') .tab-content .tab-pane.active @@ -28,7 +28,10 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') div small div=env.t('clockInfo') - .alert.alert-danger Warning: this is a highly-experimental feature, and many experience issues with it. + .alert.alert-danger + =env.t('subWarning1') + a(href='https://github.com/HabitRPG/habitrpg/issues/1057' target='_blank')=env.t('subWarning2') + =env.t('subWarning3') hr h4=env.t('language') select(ng-model='language.code', ng-options='lang.code as lang.name for lang in avalaibleLanguages', ng-change='changeLanguage()') @@ -38,36 +41,36 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') input(type='checkbox', ng-click='set({"preferences.hideHeader":user.preferences.hideHeader?false:true})', ng-checked='user.preferences.hideHeader!==true') =env.t('showHeader')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('showHeaderpop')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('showHeaderPop')) label.checkbox input(type='checkbox', ng-click='toggleStickyHeader()', ng-checked='user.preferences.stickyHeader!==false') =env.t('stickyHeader')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('stickyHeaderpop')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('stickyHeaderPop')) label.checkbox input(type='checkbox', ng-model='user.preferences.newTaskEdit', ng-change='set({"preferences.newTaskEdit": user.preferences.newTaskEdit?true: false})') - =env.t('newtaskedit') + =env.t('newTaskEdit')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('newtaskeditpop')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('newTaskEditPop')) label.checkbox input(type='checkbox', ng-model='user.preferences.tagsCollapsed', ng-change='set({"preferences.tagsCollapsed": user.preferences.tagsCollapsed?true: false})') - =env.t('startcollapsed') + =env.t('startCollapsed')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startcollapsedpop')) + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startCollapsedPop')) label.checkbox input(type='checkbox', ng-model='user.preferences.advancedCollapsed', ng-change='set({"preferences.advancedCollapsed": user.preferences.advancedCollapsed?true: false})') - =env.t('startacollapsed') + =env.t('startAdvCollapsed')   - i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startacollapsedpop')) - button.btn(ng-click='showTour()', popover-placement='right', popover-trigger='mouseenter', popover=env.t('showtourpop1'))= env.t('showtour') + i.icon-question-sign(popover-trigger='mouseenter', popover-placement='right', popover=env.t('startAdvCollapsedPop')) + button.btn(ng-click='showTour()', popover-placement='right', popover-trigger='mouseenter', popover=env.t('restartTour'))= env.t('showTour') br - button.btn(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showtourpop'))= env.t('showtour2') + button.btn(ng-click='showBailey()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('showBaileyPop'))= env.t('showBailey') br - button.btn(ng-click='modals.restore = true', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixvalpop'))= env.t('fixval') + button.btn(ng-click='modals.restore = true', popover-trigger='mouseenter', popover-placement='right', popover=env.t('fixValPop'))= env.t('fixVal') div(ng-if='user.preferences.disableClasses==true') - button.btn(ng-click='user.ops.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableclasspop'))= env.t('enableclass') + button.btn(ng-click='user.ops.changeClass({})', popover-trigger='mouseenter', popover-placement='right', popover=env.t('enableClassPop'))= env.t('enableClass') div(ng-if='!user.preferences.disableClasses && user.flags.classSelected') - button.btn(ng-click='showClassesTour()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('classtourpop'))= env.t('showclass') + button.btn(ng-click='showClassesTour()', popover-trigger='mouseenter', popover-placement='right', popover=env.t('classTourPop'))= env.t('showClass') //- Why is ng-if='user.auth.local' validating for users *without* user.auth.local (facebook users)? adding .username here for extra div(ng-if='user.auth.local.username') @@ -84,8 +87,8 @@ script(type='text/ng-template', id='partials/options.settings.settings.html') hr h4=env.t('dangerZone') - a.btn.btn-danger(ng-click='modals.reset = true', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetaccpop'))= env.t('resetaccount') - a.btn.btn-danger(ng-click='modals.delete = true', popover-trigger='mouseenter', popover=env.t('deleteaccpop'))= env.t('deleteaccount') + a.btn.btn-danger(ng-click='modals.reset = true', popover-trigger='mouseenter', popover-placement='right', popover=env.t('resetAccPop'))= env.t('resetAccount') + a.btn.btn-danger(ng-click='modals.delete = true', popover-trigger='mouseenter', popover=env.t('deleteAccPop'))= env.t('deleteAccount') script(type='text/ng-template', id='partials/options.settings.api.html') .row.fluid @@ -96,19 +99,19 @@ script(type='text/ng-template', id='partials/options.settings.api.html') pre.prettyprint {{user.id}} h6=env.t('APIToken') pre.prettyprint {{user.apiToken}} - h6=env.t('qrcode') + h6=env.t('qrCode') img(src='https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl=%7B%22address%22%3A%22https%3A%2F%2Fhabitrpg.com%22%2C%22user%22%3A%22{{user.id}}%22%2C%22key%22%3A%22{{user.apiToken}}%22%7D&choe=UTF-8&chld=L', alt='qrcode') script(id='partials/options.settings.export.html', type="text/ng-template") .row.fluid .span6 - h2=env.t('dataexport') - small=env.t('dataexports') - h4=env.t('habithistory') - =env.t('exporthistory') + h2=env.t('dataExport') + small=env.t('saveData') + h4=env.t('habitHistory') + =env.t('exportHistory') a(href="/export/history.csv")= ' ' + env.t('csv') - h4=env.t('userdata') - =env.t('exportuserdata') + h4=env.t('userData') + =env.t('exportUserData') a(href="/export/userdata.xml")= ' ' + env.t('xml') + ' ' a(href="/export/userdata.json")= env.t('json') @@ -116,28 +119,24 @@ script(id='partials/options.settings.subscription.perks.html',type='text/ng-temp table.table.table-striped tr td - span.dashed-underline(popover="Ads will stay disabled while you have an active account (original users with disabled ads are grandfathered).",popover-trigger='mouseenter',popover-placement='right') - | Disable ads + span.dashed-underline(popover=env.t('disableAdsText'),popover-trigger='mouseenter',popover-placement='right')=env.t('disableAds') tr td - span.dashed-underline(popover="(1 Gem costs {{Shared.planGemLimits.convRate}} Gold) Addresses the \"pay to win\" concern, as everything is now achievable through hard work. There's a {{Shared.planGemLimits.convCap}}G monthly conversion cap to prevent farming.",popover-trigger='mouseenter',popover-placement='right') - | Buy Gems with Gold + span.dashed-underline(popover=env.t('buyGemsGoldText', {gemCost: "{{Shared.planGemLimits.convRate}}", gemLimit: "{{Shared.planGemLimits.convCap}}"}),popover-trigger='mouseenter',popover-placement='right')=env.t('buyGemsGold') tr td - span.dashed-underline(popover="Makes your full history available in graphs and export. Non-subscriber histories get consolidated for database optimization.",popover-trigger='mouseenter',popover-placement='right') - | Retain full history entries + span.dashed-underline(popover=env.t('retainHistoryText'),popover-trigger='mouseenter',popover-placement='right')=env.t('retainHistory') tr td - span.dashed-underline(popover="Complete your stable faster!",popover-trigger='mouseenter',popover-placement='right') - | Daily drop-caps doubled + span.dashed-underline(popover=env.t('doubleDropsText'),popover-trigger='mouseenter',popover-placement='right')=env.t('doubleDrops') //-tr //- td +20 gems to your account tr td - span.dashed-underline(popover="This open source project can use all the help it can get. Help us keep Habit alive!",popover-trigger='mouseenter',popover-placement='right') - | Supports the developers + span.dashed-underline(popover=env.t('supportDevsText'),popover-trigger='mouseenter',popover-placement='right')=env.t('supportDevs') tr - td.alert.alert-info $5 USD / Month + td.alert.alert-info $5  + =env.t('monthUSD') script(id='partials/feature-matrix-check.html',type='text/ng-template') span.task-checker.action-yesno @@ -147,16 +146,15 @@ script(id='partials/feature-matrix-check.html',type='text/ng-template') script(id='partials/options.settings.subscription.html',type='text/ng-template') .well - h2 Individual Subscription + h2=env.t('individualSub') div(ng-if='!user.purchased.plan.customerId') div(ng-include="'partials/options.settings.subscription.perks.html'") - .btn.btn-primary(ng-click='showStripe(true)') Subscribe + .btn.btn-primary(ng-click='showStripe(true)')=env.t('subscribe') //-small.muted PayPal coming soon. div(ng-if='user.purchased.plan.customerId') .well div(style='font-size:22px') - i.icon-ok - | Subscribed + i.icon-ok=env.t('subscribed') div(ng-include="'partials/options.settings.subscription.perks.html'") - .btn.btn-small.btn-danger(ng-click='cancelSubscription()') Cancel Subscription \ No newline at end of file + .btn.btn-small.btn-danger(ng-click='cancelSubscription()')=env.t('cancelSub') \ No newline at end of file diff --git a/views/options/social/challenges.jade b/views/options/social/challenges.jade index fe2769b6a1..ae90ff588e 100644 --- a/views/options/social/challenges.jade +++ b/views/options/social/challenges.jade @@ -1,6 +1,6 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.close.html') a.btn.btn-small.btn-danger(ng-click="delete(closingChal)")=env.t('delete') - h5=env.t('minusOr') + h5= '- ' + env.t('or') + ' -' select(ui-select2, ng-required=true, ng-model='closingChal.winner', data-placeholder=env.t('selectWinner'), ng-change='selectWinner(closingChal)', ) option(value='') option(ng-repeat='u in closingChal.members', value='{{u._id}}') {{u.profile.name}} @@ -111,7 +111,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.html') span.input-suffix.Pet_Currency_Gem1x.inline-gems i.icon-question-sign(popover=env.t('prizePop'), popover-trigger='mouseenter', popover-placement='right') span(ng-show='newChallenge.group=="habitrpg"') - !=env.t('min1Gem') + ' ' + env.t('publicChallenges') + ' ' + env.t('helpsPrevent') + !=env.t('publicChallenges') .option-medium(ng-if='user.contributor.admin') label.checkbox diff --git a/views/options/social/group.jade b/views/options/social/group.jade index 95a9871e43..ca7359a5f2 100644 --- a/views/options/social/group.jade +++ b/views/options/social/group.jade @@ -11,7 +11,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild // ------ Bosses ------- .modal.inline-modal(bindonce='group', ng-if='group.type==="party" && group.quest.key') .modal-header - h3(ng-if='group.quest.active==false')=env.t('questInv') + '{{Content.quests[group.quest.key].text}}' + h3(ng-if='group.quest.active==false')=env.t('questInvitation') + '{{Content.quests[group.quest.key].text}}' h3(ng-if='group.quest.active==true') {{Content.quests[group.quest.key].text}} .modal-body div(ng-if='group.quest.active==false') @@ -61,9 +61,9 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild div(ng-if='Content.quests[group.quest.key].boss') .npc_ian.pull-left - p!=env.t('bossDmg1') + ' ' + env.t('bossDmg2') + '' + p!=env.t('bossDmg1') br - p=env.t('bossDmg3') + p=env.t('bossDmg2') div(ng-if='Content.quests[group.quest.key].collect') .npc_ian.pull-left @@ -88,7 +88,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild input.option-content(type='text', ng-model='group.name', placeholder=env.t('groupName')) .control-group.option-large label.control-label=env.t('description') - textarea.option-content(style='height:15em;', placeholder=env.t('groupdescr'), ng-model='group.description') + textarea.option-content(style='height:15em;', placeholder=env.t('groupDescr'), ng-model='group.description') .control-group.option-large label.control-label=env.t('logoUrl') input.option-content(type='url', placeholder=env.t('logoUrl'), ng-model='group.logo') @@ -131,7 +131,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title=env.t('guild tr(ng-if='group.memberCount > group.members.length') td |{{group.memberCount - group.members.length}} - = ' ' + env.t('moremembers') + = ' ' + env.t('moreMembers') | h4(ng-show='group.invites.length > 0')=env.t('invited') diff --git a/views/options/social/hall.jade b/views/options/social/hall.jade index cfda892f3e..adebd5e3ee 100644 --- a/views/options/social/hall.jade +++ b/views/options/social/hall.jade @@ -42,9 +42,9 @@ script(type='text/ng-template', id='partials/options.social.hall.heroes.html') .control-group.option-medium input.option-content(type='number', step="any", ng-model='hero.balance') - span.input-suffix Balance + span.input-suffix=env.t('balance') p - small!= '`user.balance`' + env.t('USD1') + ' ' + env.t('not') + ' ' + env.t('USD2') + small!= '`user.balance`' + env.t('notGems') .control-group.option-medium label.checkbox diff --git a/views/options/social/tavern.jade b/views/options/social/tavern.jade index 6f30847450..349065f739 100644 --- a/views/options/social/tavern.jade +++ b/views/options/social/tavern.jade @@ -68,35 +68,40 @@ a.label.label-contributor-1(ng-click='toggleUserTier($event)')=env.t('friendBadge') div(style='display:none;') p - != ' ' + env.t('friendText') + ' ' + env.t('first') + ' ' + env.t('friend1Text') + ' 2 ' + env.t('gems') + '.' + span.achievement.achievement-firefox + !=env.t('friendFirst') hr p - != ' ' + env.t('friendText') + ' ' + env.t('second') + ' ' + env.t('friendText2') + ' ' + env.t('crystalArmor') + ' ' + env.t('friendText3') + ' 2 ' + env.t('gems') + '.' + span.shop-sprite.item-img(class='shop_armor_special_1') + !=env.t('friendSecond') tr td a.label.label-contributor-3(ng-click='toggleUserTier($event)')=env.t('eliteBadge') div(style='display:none;') p - != ' ' + env.t('friendText') + ' ' + env.t('third') + ' ' + env.t('friendText2') + ' ' + env.t('crystalHelmet') + ' ' + env.t('friendText3') + ' 2 ' + env.t('gems') + '.' + span.shop-sprite.item-img(class='shop_head_special_1') + !=env.t('eliteThird') hr p - != ' ' + env.t('friendText') + ' ' + env.t('fourth') + ' ' + env.t('friendText2') + ' ' + env.t('crystalSword') + ' ' + env.t('friendText3') + ' 2 ' + env.t('gems') + '.' - + span.shop-sprite.item-img(class='shop_weapon_special_1') + !=env.t('eliteFourth') tr td a.label.label-contributor-5(ng-click='toggleUserTier($event)')=env.t('championBadge') div(style='display:none;') p - != ' ' + env.t('friendText') + ' ' + env.t('fifth') + ' ' + env.t('friendText2') + ' ' + env.t('crystalShield') + ' ' + env.t('friendText3') + ' 2 ' + env.t('gems') + '.' + span.shop-sprite.item-img(class='shop_shield_special_1') + !=env.t('championFifth') hr p - != '
' + env.t('friendText') + ' ' + env.t('sixth') + ' ' + env.t('friendText2b') + ' ' + env.t('hydraPet') + ' ' + env.t('friendText3b') + ' 2 ' + env.t('gems') + '.' + div(class='Pet-Dragon-Hydra pull-left') + !=env.t('championSixth') tr td a.label.label-contributor-7(ng-click='toggleUserTier($event)')=env.t('legendaryBadge') div(style='display:none;') p - != env.t('friendText') + ' ' + env.t('seventh') + ' ' + env.t('friendText2c') + ' 2 ' + env.t('gems') + ' ' + env.t('friendText3c') + !=env.t('legSeventh') tr td a.label.label-contributor-8(ng-click='toggleUserTier($event)')=env.t('heroicBadge') @@ -111,12 +116,12 @@ include ./challenge-box .span8(ng-controller='ChatCtrl') - h3=env.t('taverntalk') + h3=env.t('tavernTalk') include ./chat-box small(style='position: relative; top: -20px; left: 25px;') include ../../shared/formatting-help small(style='position: relative; top: 18px; left: 0px') alert.alert-info - !=env.t('tavernalert1') + ' ' + env.t('tavernalert2') + '.' + !=env.t('tavernAlert1') + ' ' + env.t('tavernAlert2') + '.' ul.unstyled.tavern-chat include ./chat-message diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index 5491806c35..ef266bbb2f 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -47,4 +47,4 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( i.icon-circle-arrow-up.icon-white(ng-show='profile.stats.buffs.str || profile.stats.buffs.per || profile.stats.buffs.con || profile.stats.buffs.int || profile.stats.buffs.stealth', tooltip=env.t('buffed'), style='margin-right:5px;') =env.t('lvl') | {{profile.stats.lvl}} - i.icon-plus-sign.icon-white(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn') + '{{profile.achievements.rebirthLevel}}', style='margin-left:5px') + i.icon-plus-sign.icon-white(ng-show='profile.achievements.rebirths', tooltip=env.t('reborn', {reLevel: "{{profile.achievements.rebirthLevel}}"}), style='margin-left:5px') diff --git a/views/shared/modals/achievements.jade b/views/shared/modals/achievements.jade index 3526cb9dc4..ed4ba27b57 100644 --- a/views/shared/modals/achievements.jade +++ b/views/shared/modals/achievements.jade @@ -36,11 +36,8 @@ div(modal='user.flags.contributor') .modal-body .npc_justin.float-left p - | {{user.profile.name}}, - =env.t('contribText1') - | {{user.contributor.level}} - =env.t('contribText2') - a(href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank')=env.t('contribText3') + !=env.t('contribModal', {name: "{{user.profile.name}}", level: "{{user.contributor.level}}"}) + a(href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank')=env.t('contribLink') .modal-footer button.btn.btn-default.cancel(ng-click='set({"flags.contributor":false})')=env.t('ok') @@ -50,10 +47,6 @@ div(modal='modals.achievements.rebirth') h3=env.t('modalAchievement') .modal-body .achievement.achievement-sun - =env.t('rebirthAchievement1') - | {{user.achievements.rebirths}} - =env.t('rebirthAchievement2') - | {{user.achievements.rebirthLevel}}. - =env.t('rebirthAchievement3') + =env.t('rebirthAchievement', {number: "{{user.achievements.rebirths}}", level: "{{user.achievements.rebirthLevel}}"}) .modal-footer button.btn.btn-default.cancel(ng-click='modals.achievements.rebirth = false')=env.t('ok') diff --git a/views/shared/modals/buy-gems.jade b/views/shared/modals/buy-gems.jade index a7bd1375f8..63b5127abb 100644 --- a/views/shared/modals/buy-gems.jade +++ b/views/shared/modals/buy-gems.jade @@ -3,7 +3,7 @@ div(modal='modals.buyGems') .buy-gems include ../gems .well - h3 Buy Gems + h3=env.t('buyGems') table.table tr td @@ -14,7 +14,8 @@ div(modal='modals.buyGems') span.dashed-underline(popover=env.t('donateText3'),popover-trigger='mouseenter',popover-placement='right') =env.t('donateText2') tr - td.alert.alert-info=env.t('fiveUSD1') + td.alert.alert-info $5  + =env.t('USD') tr td .btn.btn-primary(ng-click='showStripe()',style='margin-left:10px;')=env.t('payWithCard') diff --git a/views/shared/modals/settings.jade b/views/shared/modals/settings.jade index 956b47a96d..0eefd1dd05 100644 --- a/views/shared/modals/settings.jade +++ b/views/shared/modals/settings.jade @@ -66,9 +66,7 @@ div(ng-controller='SettingsCtrl') .modal-header h3=env.t('deleteaccount') .modal-body - p=env.t('deleteText1') - strong=env.t('deleteText2') - =env.t('deleteText3') + p!=env.t('deleteText') p input(type='text', ng-model='_deleteAccount') .modal-footer diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index 1546e08faa..5fd8d64baa 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -93,9 +93,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s a(ng-click='unlink(task, "remove-all")')=env.t('removeThem') div(ng-if='task.challenge.broken=="CHALLENGE_CLOSED"') p - =env.t('challengeCompleted1') - span.badge {{task.challenge.winner}} - =env.t('challengeCompleted2') + !=env.t('challengeCompleted', {user: "{{task.challenge.winner}}"}) p a(ng-click='unlink(task, "keep-all")')=env.t('keepThem') |  |  diff --git a/views/static/about.jade b/views/static/about.jade index 6340ef31af..dfe6a20451 100644 --- a/views/static/about.jade +++ b/views/static/about.jade @@ -5,7 +5,7 @@ block vars - var menuItem = 'about' block title - title About + title=env.t('companyAbout') block content .container diff --git a/views/static/contact.jade b/views/static/contact.jade index 43591138b2..129734d3de 100644 --- a/views/static/contact.jade +++ b/views/static/contact.jade @@ -3,7 +3,7 @@ block vars - var layoutEnv = env - var menuItem = 'contact' block title - title Contact + title=env.t('contact') block content // Probably just add linkks to the respective contact locations? // Bugs? Github diff --git a/views/static/layout.jade b/views/static/layout.jade index fad18bac00..5492c2365f 100644 --- a/views/static/layout.jade +++ b/views/static/layout.jade @@ -27,15 +27,15 @@ html ul.nav li(class='#{menuItem=="home" ? "active" : ""}') - a(href='/static/front') Home + a(href='/static/front')=env.t('home') li(class='#{menuItem=="about" ? "active" : ""}') - a(href='/static/about') Learn More + a(href='/static/about')=env.t('learnMore') li - a(href='http://blog.habitrpg.com/') Blog + a(href='http://blog.habitrpg.com/')=env.t('companyBlog') li(class='#{menuItem=="plans" ? "active" : ""}') - a(href='/static/plans') Group Plans + a(href='/static/plans')=env.t('groupPlans') //li(class='#{menuItem=="contact" ? "active" : ""}') - a(href='/static/contact') Contact + a(href='/static/contact')=env.t('contact') .container block content diff --git a/views/static/plans.jade b/views/static/plans.jade index 1699d5a2b3..5f88d21333 100644 --- a/views/static/plans.jade +++ b/views/static/plans.jade @@ -5,25 +5,33 @@ block vars - var menuItem = 'plans' block title - title Group Plans + title=env.t('groupPlans') block content - h2 Group Plans + h2=env.t('groupPlans') - p For individuals, HabitRPG is free to play. Even for small interest groups, free (or cheap) guilds and challenges can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more. - p But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of HabitRPG for your group or organization, secure and independent of Habitica. See below for additional plan perks, and contact us for more information! + p + =env.t('indivPlan1') + a(href='http://habitrpg.wikia.com/wiki/Guilds' target='_blank')=env.t('guilds') + = ' ' + env.t('and') + ' ' + a(href='http://habitrpg.wikia.com/wiki/Challenges' target='_blank')=env.t('challenges') + =env.t('indivPlan2') + p + =env.t('groupText1') + a(href='http://habitrpg.wikia.com/wiki/Habitica' target='_blank')=env.t('habitica') + |.  + =env.t('groupText2') .subscription-features table.table.table-striped tr th.feature-name - th.feature-name.muted Family (Coming Soon) - th.feature-name.muted Group (Coming Soon) - th.feature-name Organization + th.feature-name.muted=env.t('planFamily') + th.feature-name.muted=env.t('planGroup') + th.feature-name=env.t('organization') tr th - span.dashed-underline(popover="Members of the organization participate outside of HabitRPG proper, providing focus for your participants.",popover-trigger='mouseenter',popover-placement='right') - | Private Organization + span.dashed-underline(popover=env.t('organizationSubText'),popover-trigger='mouseenter',popover-placement='right')=env.t('organizationSub') td.muted i.icon-ok td.muted @@ -32,53 +40,46 @@ block content i.icon-ok tr th - span.dashed-underline(popover="Dedicated Hosting: you get your own database and server hosted by HabitRPG, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as HabitRPG proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",popover-trigger='mouseenter',popover-placement='right') - | Dedicated Hosting + span.dashed-underline(popover=env.t('dedicatedHostText'),popover-trigger='mouseenter',popover-placement='right')=env.t('dedicatedHost') td td td i.icon-ok tr th - span.dashed-underline(popover="We can optionally give you your own domain for the installation.",popover-trigger='mouseenter',popover-placement='right') - | Custom Domain + span.dashed-underline(popover=env.t('customDomainText'),popover-trigger='mouseenter',popover-placement='right')=env.t('customDomain') td td td i.icon-ok tr th - span.dashed-underline(popover="The maximum number of players in your private organization.",popover-trigger='mouseenter',popover-placement='right') - | Max Participants + span.dashed-underline(popover=env.t('maxPlayersText'),popover-trigger='mouseenter',popover-placement='right')=env.t('maxPlayers') td.muted 10 td.muted 75 - td Unlimited + td=env.t('unlimited') tr th - span.dashed-underline(popover="First to be provided for with support.",popover-trigger='mouseenter',popover-placement='right') - | Priority Support On Tickets & Hosting + span.dashed-underline(popover=env.t('priSupportText'),popover-trigger='mouseenter',popover-placement='right')=env.t('priSupport') td td td i.icon-ok tr th - span.dashed-underline(popover="We will provide support for training, bugs, installation, and feature requests. Additional hours available at an hourly rate.",popover-trigger='mouseenter',popover-placement='right') - | Support Hours / Month + span.dashed-underline(popover=env.t('timeSupportText'),popover-trigger='mouseenter',popover-placement='right')=env.t('timeSupport') td.muted - td.muted 5 td 10 tr th - h5 Game features: + h5=env.t('gameFeatures') + ':' ul - li Ads disabled for members + li=env.t('gameNoAds') li - span.dashed-underline(popover="Members will be able to purchase gems with gold, meaning none of your participants need to buy anything with real money.",popover-trigger='mouseenter',popover-placement='right') - | Gems purchasable with gold + span.dashed-underline(popover=env.t('gold2GemText'),popover-trigger='mouseenter',popover-placement='right')=env.t('gold2Gem') li - span.dashed-underline(popover="We will provide the organization leaders with as many gems as they need, for things like challenge prizes, guild-creation, etc.",popover-trigger='mouseenter',popover-placement='right') - | Infinite leader gems + span.dashed-underline(popover=env.t('infiniteGemText'),popover-trigger='mouseenter',popover-placement='right')=env.t('infiniteGem') td.muted i.icon-ok td.muted @@ -89,8 +90,8 @@ block content th //| Price td - a.btn(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover="Plan not yet available, but click to contact us and we'll keep you updated.",popover-placement='right',popover-trigger='mouseenter') Contact Us + a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') td - a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover="Plan not yet available, but click to contact us and we'll keep you updated.",popover-placement='right',popover-trigger='mouseenter') Contact Us + a.btn.muted(href='https://docs.google.com/forms/d/17torT7OlxgtbHAPdBDRQNG2lTdIQyrGXk4O2YXvUMig/viewform',popover=env.t('notYetPlan'),popover-placement='right',popover-trigger='mouseenter')=env.t('contactUs') td - a.btn.btn-primary(href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform') Contact Us \ No newline at end of file + a.btn.btn-primary(href='https://docs.google.com/forms/d/12Jqj_8f3oQS0B3ZUHewHbK61uLjBdzBeB0zyEqB9lxM/viewform')=env.t('contactUs') \ No newline at end of file