diff --git a/package-lock.json b/package-lock.json
index dd9f5e64e9..a73d305d39 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "habitica",
- "version": "4.65.3",
+ "version": "4.65.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index f859d47ea2..702c8d1f85 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
- "version": "4.65.3",
+ "version": "4.65.4",
"main": "./website/server/index.js",
"dependencies": {
"@slack/client": "^3.8.1",
diff --git a/test/api/v3/integration/user/auth/POST-register_local.test.js b/test/api/v3/integration/user/auth/POST-register_local.test.js
index 1552ae8358..c6b3248258 100644
--- a/test/api/v3/integration/user/auth/POST-register_local.test.js
+++ b/test/api/v3/integration/user/auth/POST-register_local.test.js
@@ -276,7 +276,7 @@ describe('POST /user/auth/local/register', () => {
});
});
- it('enrolls new users in an A/B test', async () => {
+ xit('enrolls new users in an A/B test', async () => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
diff --git a/test/api/v3/integration/user/auth/POST-user_auth_social.test.js b/test/api/v3/integration/user/auth/POST-user_auth_social.test.js
index 992dd0c6f5..65aeb7985d 100644
--- a/test/api/v3/integration/user/auth/POST-user_auth_social.test.js
+++ b/test/api/v3/integration/user/auth/POST-user_auth_social.test.js
@@ -80,7 +80,7 @@ describe('POST /user/auth/social', () => {
expect(response.newUser).to.be.false;
});
- it('enrolls a new user in an A/B test', async () => {
+ xit('enrolls a new user in an A/B test', async () => {
await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
network,
@@ -136,7 +136,7 @@ describe('POST /user/auth/social', () => {
expect(response.newUser).to.be.false;
});
- it('enrolls a new user in an A/B test', async () => {
+ xit('enrolls a new user in an A/B test', async () => {
await api.post(endpoint, {
authResponse: {access_token: randomAccessToken}, // eslint-disable-line camelcase
network,
diff --git a/website/common/locales/cs/generic.json b/website/common/locales/cs/generic.json
index 0d043ada8a..02f2edc826 100644
--- a/website/common/locales/cs/generic.json
+++ b/website/common/locales/cs/generic.json
@@ -280,7 +280,7 @@
"spirituality": "Duchovno",
"time_management": "Časospráva + Zodpovědnost",
"recovery_support_groups": "Uzdravování + Podpůrné skupiny",
- "dismissAll": "Odmítnou vše",
+ "dismissAll": "Označit vše jako přečtené",
"messages": "Zprávy",
"emptyMessagesLine1": "Nemáš žádné zprávy",
"emptyMessagesLine2": "Pošli zprávu a zahaj konverzaci!",
diff --git a/website/common/locales/es/backgrounds.json b/website/common/locales/es/backgrounds.json
index a5eebbd174..27e27eac56 100644
--- a/website/common/locales/es/backgrounds.json
+++ b/website/common/locales/es/backgrounds.json
@@ -384,8 +384,8 @@
"backgrounds102018": "SET 53: Released October 2018",
"backgroundBayouText": "Bayou",
"backgroundBayouNotes": "Bask in the fireflies' glow on the misty Bayou.",
- "backgroundCreepyCastleText": "Creepy Castle",
+ "backgroundCreepyCastleText": "Castillo Espeluznante",
"backgroundCreepyCastleNotes": "Dare to approach a Creepy Castle.",
- "backgroundDungeonText": "Dungeon",
- "backgroundDungeonNotes": "Rescue the prisoners of a spooky Dungeon."
+ "backgroundDungeonText": "Mazmorra",
+ "backgroundDungeonNotes": "Rescata a los prisioneros de la Mazmorra escalofriante."
}
\ No newline at end of file
diff --git a/website/common/locales/es/content.json b/website/common/locales/es/content.json
index 1d98d05082..f18cfd17d5 100644
--- a/website/common/locales/es/content.json
+++ b/website/common/locales/es/content.json
@@ -176,8 +176,8 @@
"questEggKangarooText": "Canguro",
"questEggKangarooMountText": "Canguro",
"questEggKangarooAdjective": "entusiasta",
- "questEggAlligatorText": "Alligator",
- "questEggAlligatorMountText": "Alligator",
+ "questEggAlligatorText": "Caimán",
+ "questEggAlligatorMountText": "Caimán",
"questEggAlligatorAdjective": "a cunning",
"eggNotes": "Encuentra una poción de eclosión para verter en este huevo y eclosionará en <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
diff --git a/website/common/locales/es/front.json b/website/common/locales/es/front.json
index 4bfe5b93f8..64d851ab84 100644
--- a/website/common/locales/es/front.json
+++ b/website/common/locales/es/front.json
@@ -211,7 +211,7 @@
"unlockByline2": "¡Desbloquea nuevas herramientas motivacionales, como coleccionar mastocas, recompensas aleatorias, lanzamiento de hechizos y más!",
"unlockHeadline": "¡Cuando eres productivo, desbloqueas nuevo contenido!",
"useUUID": "Utilizar UUID / API Token (Para Usuarios de Facebook)",
- "username": "Username",
+ "username": "Nombre de usuario",
"emailOrUsername": "Email or Username (case-sensitive)",
"watchVideos": "Ver Vídeos",
"work": "Trabajar",
@@ -287,7 +287,7 @@
"passwordResetEmailSubject": "Restablecer contraseña para Habitica.",
"passwordResetEmailText": "Si has solicitado restablecer la contraseña del usuario <%= username %> en Habitica, entra en <%= passwordResetLink %> para establecer una nueva. El enlace expira tras 24 horas. Si no has solicitado restablecer una contraseña, por favor ignora este mensaje.",
"passwordResetEmailHtml": "Si has solicitado restablecer la contraseña del usuario <%= username %> en Habitica, \">haz clic aquí para establecer una nueva. El enlace expira tras 24 horas.
Si no has solicitado restablecer una contraseña, por favor ignora este mensaje.",
- "invalidLoginCredentialsLong": "Uh-oh - your email address / username or password is incorrect.\n- Make sure they are typed correctly. Your username and password are case-sensitive.\n- You may have signed up with Facebook or Google-sign-in, not email so double-check by trying them.\n- If you forgot your password, click \"Forgot Password\".",
+ "invalidLoginCredentialsLong": "Oh-oh - tu dirección de correo electrónico o contraseña son incorrectos.\n- Asegúrate de que están escritos correctamente. Tu nombre de inicio de sesión y contraseña distinguen entre mayúsculas y minúsculas.\n- Puede que te hayas registrado con tu cuenta de Google o Facebook en lugar de tu correo electrónico, intenta iniciar sesión con alguna de ellas.\n- Si has olvidado tu contraseña, pulsa sobre \"¿Has olvidado la contraseña?\".",
"invalidCredentials": "No hay ninguna cuenta con esas credenciales.",
"accountSuspended": "This account, User ID \"<%= userId %>\", has been blocked for breaking the [Community Guidelines](https://habitica.com/static/community-guidelines) or [Terms of Service](https://habitica.com/static/terms). For details or to ask to be unblocked, please email our Community Manager at <%= communityManagerEmail %> or ask your parent or guardian to email them. Please copy your User ID into the email and include your username.",
"accountSuspendedTitle": "Esta cuenta ha sido suspendida",
diff --git a/website/common/locales/es/generic.json b/website/common/locales/es/generic.json
index c45bf7a9e0..e6032ffb39 100644
--- a/website/common/locales/es/generic.json
+++ b/website/common/locales/es/generic.json
@@ -71,7 +71,7 @@
"submit": "Enviar",
"close": "Cerrar",
"saveAndClose": "Guardar y cerrar",
- "saveAndConfirm": "Save & Confirm",
+ "saveAndConfirm": "Guardar y Confirmar",
"cancel": "Cancelar",
"ok": "Aceptar",
"add": "Añadir",
diff --git a/website/common/locales/es/questscontent.json b/website/common/locales/es/questscontent.json
index 8d8025c6b8..58eb253957 100644
--- a/website/common/locales/es/questscontent.json
+++ b/website/common/locales/es/questscontent.json
@@ -623,6 +623,6 @@
"questAlligatorNotes": "“Crikey!” exclaims @gully. “An Insta-Gator in its natural habitat! Careful, it distracts its prey with things that seem urgent THIS INSTANT, and it feeds on the unchecked Dailies that result.” You fall silent to avoid attracting its attention, but to no avail. The Insta-Gator spots you and charges! Distracting voices rise up from Swamps of Stagnation, grabbing for your attention: “Read this post! See this photo! Pay attention to me THIS INSTANT!” You scramble to mount a counterattack, completing your Dailies and bolstering your good Habits to fight off the dreaded Insta-Gator.",
"questAlligatorCompletion": "With your attention focused on what’s important and not the Insta-Gator’s distractions, the Insta-Gator flees. Victory! “Are those eggs? They look like gator eggs to me,” asks @mfonda. “If we care for them correctly, they’ll be loyal pets or faithful steeds,” answers @UncommonCriminal, handing you three to care for. Let’s hope so, or else the Insta-Gator might make a return…",
"questAlligatorBoss": "Insta-Gator",
- "questAlligatorDropAlligatorEgg": "Alligator (Egg)",
- "questAlligatorUnlockText": "Unlocks purchasable Alligator eggs in the Market"
+ "questAlligatorDropAlligatorEgg": "Caimán (Huevo)",
+ "questAlligatorUnlockText": "Desbloquear la compra de huevos de Caimán en el Mercado"
}
\ No newline at end of file
diff --git a/website/common/locales/fr/backgrounds.json b/website/common/locales/fr/backgrounds.json
index 937a079eea..aea69c1476 100644
--- a/website/common/locales/fr/backgrounds.json
+++ b/website/common/locales/fr/backgrounds.json
@@ -381,7 +381,7 @@
"backgroundGiantBookNotes": "Lisez alors que vous parcourez les pages d'un livre géant.",
"backgroundCozyBarnText": "Grange confortable",
"backgroundCozyBarnNotes": "Relaxez-vous avec vos familiers et monture dans leur grange confortable.",
- "backgrounds102018": "SET 53 : Sorti en Octobre 2018",
+ "backgrounds102018": "Ensemble 53 : sorti en Octobre 2018",
"backgroundBayouText": "Marécage",
"backgroundBayouNotes": "Baignez dans la lueur des lucioles du Marécage brumeux.",
"backgroundCreepyCastleText": "Château Terrifiant",
diff --git a/website/common/locales/fr/content.json b/website/common/locales/fr/content.json
index 38e1b6e584..18fbd84f6e 100644
--- a/website/common/locales/fr/content.json
+++ b/website/common/locales/fr/content.json
@@ -178,7 +178,7 @@
"questEggKangarooAdjective": "enthousiaste",
"questEggAlligatorText": "Alligator",
"questEggAlligatorMountText": "Alligator",
- "questEggAlligatorAdjective": "a cunning",
+ "questEggAlligatorAdjective": "un rusé",
"eggNotes": "Trouvez une potion d’éclosion à verser sur cet œuf et il en sortira <%= eggAdjective(locale) %> bébé <%= eggText(locale) %>.",
"hatchingPotionBase": "de base",
"hatchingPotionWhite": "des neiges",
diff --git a/website/common/locales/fr/questscontent.json b/website/common/locales/fr/questscontent.json
index 6212a5de1a..e5c824f400 100644
--- a/website/common/locales/fr/questscontent.json
+++ b/website/common/locales/fr/questscontent.json
@@ -619,10 +619,10 @@
"questKangarooUnlockText": " Déverrouille l'achat d’œufs de kangourou au Marché ",
"forestFriendsText": "Lot de quête des amis sylvains",
"forestFriendsNotes": "Contient \"L'esprit du printemps\", \"La bête hérissée\" et \"L'arbre tortueux\". Disponible jusqu'au 30 Septembre.",
- "questAlligatorText": "The Insta-Gator",
- "questAlligatorNotes": "“Crikey!” exclaims @gully. “An Insta-Gator in its natural habitat! Careful, it distracts its prey with things that seem urgent THIS INSTANT, and it feeds on the unchecked Dailies that result.” You fall silent to avoid attracting its attention, but to no avail. The Insta-Gator spots you and charges! Distracting voices rise up from Swamps of Stagnation, grabbing for your attention: “Read this post! See this photo! Pay attention to me THIS INSTANT!” You scramble to mount a counterattack, completing your Dailies and bolstering your good Habits to fight off the dreaded Insta-Gator.",
- "questAlligatorCompletion": "With your attention focused on what’s important and not the Insta-Gator’s distractions, the Insta-Gator flees. Victory! “Are those eggs? They look like gator eggs to me,” asks @mfonda. “If we care for them correctly, they’ll be loyal pets or faithful steeds,” answers @UncommonCriminal, handing you three to care for. Let’s hope so, or else the Insta-Gator might make a return…",
- "questAlligatorBoss": "Insta-Gator",
+ "questAlligatorText": "L'insti-Gator",
+ "questAlligatorNotes": "\"Crikey !\" s'exclame @gully. \"Un Instia-Gator dans son habitat naturel ! Attention, il distrait sa proie avec des choses qui semblent urgentes A CET INSTANT, et il se nourrit des quotidiennes non contrôlées qui en résultent.\" Vous vous taisez pour éviter d'attirer son attention, mais en vain. L'Insti-Gator vous repère et charge ! Des voix distrayantes s'élèvent du marais de la stagnation, attirant votre attention : \"Lis ce post ! Regarde cette photo ! Fais attention à moi MAINTENANT !\" Vous vous précipitez pour monter une contre-attaque, complétant vos quotidiennes et renforçant vos bonnes habitudes pour combattre le redoutable Insti-Gator.",
+ "questAlligatorCompletion": "Avec votre attention concentrée sur ce qui est important et non sur les distractions de l'Insti-Gator, l'Insti-Gator fuit. Victoire ! \"Ce sont des oeufs ? Ils ressemblent à des œufs d'alligator pour moi \", demande @mfonda. \"Si nous prenons soin d'eux, ils seront des animaux de compagnie loyaux ou des coursiers fidèles\", répond @UncommonCriminal, vous en donnant trois à soigner. Espérons que oui, sinon l'Insti-Gator pourrait revenir...",
+ "questAlligatorBoss": "Insti-Gator",
"questAlligatorDropAlligatorEgg": "Alligator (Œuf)",
- "questAlligatorUnlockText": "Unlocks purchasable Alligator eggs in the Market"
+ "questAlligatorUnlockText": " Déverrouille l'achat d’œufs d'alligator au marché "
}
\ No newline at end of file
diff --git a/website/common/locales/it/questscontent.json b/website/common/locales/it/questscontent.json
index d7fa200883..8f2d9ee96c 100644
--- a/website/common/locales/it/questscontent.json
+++ b/website/common/locales/it/questscontent.json
@@ -560,17 +560,17 @@
"questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market",
"winterQuestsText": "Winter Quest Bundle",
"winterQuestsNotes": "Contains 'Trapper Santa', 'Find the Cub', and 'The Fowl Frost'. Available until December 31.",
- "questPterodactylText": "The Pterror-dactyl",
- "questPterodactylNotes": "You're taking a stroll along the peaceful Stoïkalm Cliffs when an evil screech rends the air. You turn to find a hideous creature flying towards you and are overcome by a powerful terror. As you turn to flee, @Lilith of Alfheim grabs you. \"Don't panic! It's just a Pterror-dactyl.\"
@Procyon P nods. \"They nest nearby, but they're attracted to the scent of negative Habits and undone Dailies.\"
\"Don't worry,\" @Katy133 says. \"We just need to be extra productive to defeat it!\" You are filled with a renewed sense of purpose and turn to face your foe.",
- "questPterodactylCompletion": "With one last screech the Pterror-dactyl plummets over the side of the cliff. You run forward to watch it soar away over the distant steppes. \"Phew, I'm glad that's over,\" you say. \"Me too,\" replies @GeraldThePixel. \"But look! It's left some eggs behind for us.\" @Edge passes you three eggs, and you vow to raise them in tranquility, surrounded by positive Habits and blue Dailies.",
- "questPterodactylBoss": "Pterror-dactyl",
+ "questPterodactylText": "Lo Pterrore-dattilo",
+ "questPterodactylNotes": "Stai facendo una passeggiata sulle serene scogliere di Stoikalm quando un malefico stridio lacera l'aria. Ti volti per trovare un'orrenda creatura volare verso di te mentre un potente terrore ti sovrasta. Mentre ti volti per fuggire, @Lilith of Alfheim ti afferra. \"Non avere paura! È solo uno Pterrore-dattilo.\"
@Procyon P annuisce. \"Hanno il nido nelle vicinanze ma sono attratti dal profumo delle abitudini negative e dalle Daily non svolte.\"
\"Non ti preoccupare,\" dice @Katy133. \"Dobbiamo solo essere extra produttivi per sconfiggerlo!\" Sei riempito da un nuovo senso del dovere e ti giri per affrontare il nemico.",
+ "questPterodactylCompletion": "Con un ultimo stridio lo Pterrore-Dattilo precipita sul fianco della scogliera. Corri per vederlo volare via oltre le distanti steppe. \"Uff, sono felice che sia finita,\" dici. \"Anche io,\" risponde @GeraldThePixel. \"Guarda! Ha lasciato qualche uovo per noi.\" @Edge ti passa tre uova e prometti di crescerle con tranquillità circondate da Abitudini positive e Daily blu.",
+ "questPterodactylBoss": "Pterrore-dattilo",
"questPterodactylDropPterodactylEgg": "Pterodattilo (uovo)",
"questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market",
- "questBadgerText": "Stop Badgering Me!",
- "questBadgerNotes": "Ah, winter in the Taskwoods. The softly falling snow, the branches sparkling with frost, the Flourishing Fairies… still not snoozing?
“Why are they still awake?” cries @LilithofAlfheim. “If they don't hibernate soon, they'll never have the energy for planting season.”
As you and @Willow the Witty hurry to investigate, a furry head pops up from the ground. Before you can yell, “It’s the Badgering Bother!” it’s back in its burrow—but not before snatching up the Fairies' “Hibernate” To-Dos and dropping a giant list of pesky tasks in their place!
“No wonder the fairies aren't resting, if they're constantly being badgered like that!” @plumilla says. Can you chase off this beast and save the Taskwood’s harvest this year?",
- "questBadgerCompletion": "You finally drive away the the Badgering Bother and hurry into its burrow. At the end of a tunnel, you find its hoard of the faeries’ “Hibernate” To-Dos. The den is otherwise abandoned, except for three eggs that look ready to hatch.",
- "questBadgerBoss": "The Badgering Bother",
- "questBadgerDropBadgerEgg": "Badger (Egg)",
+ "questBadgerText": "Smettila di tormentarmi!",
+ "questBadgerNotes": "Ah, l'inverno di Boscocompito. La soffice neve cadente, i rami gelati luccicano, le Fate Fiorenti... ancora non dormono?
\"Perché sono ancora sveglie?\" urla @LilithofAlfheim. \"Se non si ibernano al più presto non avranno mai l'energia per fissare la stagione.\"
Mentre tu e @Willow the Witty vi affrettate ad investigare, una testa pelosa appare dal terreno. Prima che tu possa urlare, \"È il Fastidio Tormentoso!\" torna nella sua tana—ma non prima di afferrare le Cose da Fare delle Fate \"Ibernate\" lasciando un enorme lista di fastidiose attività al loro posto!
\"Non c'è da stupirsi che le fate non stiano riposando, sono costantemente tormentate!\" Dice @plumilla. Puoi scacciare questa bestia e salvare il raccolto di Boscocompito di quest'anno?\"",
+ "questBadgerCompletion": "Finalmente scacci via il Fastidio Tormentoso e ti precipiti nella tana. Alla fine del tunnel trovi il suo tesoro delle delle Cose da Fare delle fate \"Ibernate\". Il covo è vuoto abbandonato eccetto per tre uova che sembrano pronte per essere schiuse.",
+ "questBadgerBoss": "Il Fastidio Tormentoso",
+ "questBadgerDropBadgerEgg": "Tasso (Uovo)",
"questBadgerUnlockText": "Unlocks purchasable Badger eggs in the Market",
"questDysheartenerText": "The Dysheartener",
"questDysheartenerNotes": "The sun is rising on Valentine’s Day when a shocking crash splinters the air. A blaze of sickly pink light lances through all the buildings, and bricks crumble as a deep crack rips through Habit City’s main street. An unearthly shrieking rises through the air, shattering windows as a hulking form slithers forth from the gaping earth.
Mandibles snap and a carapace glitters; legs upon legs unfurl in the air. The crowd begins to scream as the insectoid creature rears up, revealing itself to be none other than that cruelest of creatures: the fearsome Dysheartener itself. It howls in anticipation and lunges forward, hungering to gnaw on the hopes of hard-working Habiticans. With each rasping scrape of its spiny forelegs, you feel a vise of despair tightening in your chest.
“Take heart, everyone!” Lemoness shouts. “It probably thinks that we’re easy targets because so many of us have daunting New Year’s Resolutions, but it’s about to discover that Habiticans know how to stick to their goals!”
AnnDeLune raises her staff. “Let’s tackle our tasks and take this monster down!”",
@@ -595,8 +595,8 @@
"dysheartenerArtCredit": "Illustrazione di @AnnDeLune",
"hugabugText": "Hug a Bug Quest Bundle",
"hugabugNotes": "Contains 'The CRITICAL BUG,' 'The Snail of Drudgery Sludge,' and 'Bye, Bye, Butterfry.' Available until March 31.",
- "questSquirrelText": "The Sneaky Squirrel",
- "questSquirrelNotes": "You wake up and find you’ve overslept! Why didn’t your alarm go off? … How did an acorn get stuck in the ringer?
When you try to make breakfast, the toaster is stuffed with acorns. When you go to retrieve your mount, @Shtut is there, trying unsuccessfully to unlock their stable. They look into the keyhole. “Is that an acorn in there?”
@randomdaisy cries out, “Oh no! I knew my pet squirrels had gotten out, but I didn’t know they’d made such trouble! Can you help me round them up before they make any more of a mess?”
Following the trail of mischievously placed oak nuts, you track and catch the wayward sciurines, with @Cantras helping secure each one safely at home. But just when you think your task is almost complete, an acorn bounces off your helm! You look up to see a mighty beast of a squirrel, crouched in defense of a prodigious pile of seeds.
“Oh dear,” says @randomdaisy, softly. “She’s always been something of a resource guarder. We’ll have to proceed very carefully!” You circle up with your party, ready for trouble!",
+ "questSquirrelText": "Lo Scoiattolo Subdolo",
+ "questSquirrelNotes": "Ti svegli e ti accorgi di aver dormito troppo! Perché non ha suonato l'allarme? ... Come ha fatto una ghianda a finire nella sveglia?
Quando provi a fare colazione, il tostapane è pieno di ghiande. Quando vai a recuperare la tua cavalcatura, @Shtut è lì che tenta di aprire senza successo la loro scuderia. Guardano nella serratura. \"È una ghianda quella lì dentro?\"
@randomdaisy piange \"Oh no! Sapevo che i miei scoiattoli erano usciti ma non sapevo che avrebbero causato problemi del genere! Mi puoi aiutare a radunarli prima che facciano altri pasticci?\"
Seguendo la scia di noci di quercia mal disposte, tracci e catturi i roditori capricciosi con @Cantras che ti aiuta a proteggerli fino a casa. Ma proprio quando pensi che il tuo compito sia quasi finito, una ghianda rimbalza sul tuo elmo! Guardi in alto e vedi un grosso e bestiale schoiattolo, rannicchiato in difesa di una prodigiosa pila di semi.
\"Oh cara,\" dice dolcemente @randomdaisy.\"È sempre stata una specie di guardiana delle risorse. Dobbiamo procedere con cautela!\" Ti metti in cerchio con la tua squadra, pronti per i problemi!",
"questSquirrelCompletion": "With a gentle approach, offers of trade, and a few soothing spells, you’re able to coax the squirrel away from its hoard and back to the stables, which @Shtut has just finished de-acorning. They’ve set aside a few of the acorns on a worktable. “These ones are squirrel eggs! Maybe you can raise some that don’t play with their food quite so much.”",
"questSquirrelBoss": "Sneaky Squirrel",
"questSquirrelDropSquirrelEgg": "Squirrel (Egg)",
diff --git a/website/common/locales/ja/questscontent.json b/website/common/locales/ja/questscontent.json
index f96b3dbb59..36251fc240 100644
--- a/website/common/locales/ja/questscontent.json
+++ b/website/common/locales/ja/questscontent.json
@@ -619,10 +619,10 @@
"questKangarooUnlockText": "市場でカンガルーのたまごを買えるようにする",
"forestFriendsText": "「森の仲間たち」クエストセット",
"forestFriendsNotes": "「春の精」「巨大ハリネズミ」「混乱の木」のセット。9月30日まで購入できます。",
- "questAlligatorText": "The Insta-Gator",
- "questAlligatorNotes": "“Crikey!” exclaims @gully. “An Insta-Gator in its natural habitat! Careful, it distracts its prey with things that seem urgent THIS INSTANT, and it feeds on the unchecked Dailies that result.” You fall silent to avoid attracting its attention, but to no avail. The Insta-Gator spots you and charges! Distracting voices rise up from Swamps of Stagnation, grabbing for your attention: “Read this post! See this photo! Pay attention to me THIS INSTANT!” You scramble to mount a counterattack, completing your Dailies and bolstering your good Habits to fight off the dreaded Insta-Gator.",
- "questAlligatorCompletion": "With your attention focused on what’s important and not the Insta-Gator’s distractions, the Insta-Gator flees. Victory! “Are those eggs? They look like gator eggs to me,” asks @mfonda. “If we care for them correctly, they’ll be loyal pets or faithful steeds,” answers @UncommonCriminal, handing you three to care for. Let’s hope so, or else the Insta-Gator might make a return…",
- "questAlligatorBoss": "Insta-Gator",
+ "questAlligatorText": "インスタ・ゲーター",
+ "questAlligatorNotes": "「わあ!」 @gully が大きな声を出しました。「インスタ・ゲーターが自然の生息地にいるよ! 気をつけて、緊急の『今すぐ!』と思えるようなことで獲物の気を散らして、結果として生じたチェックしていない日課を食べるんだ。」 あなたは注意を引かないように沈黙しましたが、無駄でした。インスタ・ゲーターはあなたを見つけて突撃してきたのです! 気が散るような声がヨドミ沼から起こり、あなたを注目させました。「この投稿を読め! この写真を見ろ! オレに注目しろ『今すぐ!』」 あなたは慌てて、恐ろしいインスタ・ゲーターを撃退するために、日課を完了したり良い習慣を強化したりして反撃の手を打ちます。",
+ "questAlligatorCompletion": "あなたが大切なことに集中して、インスタ・ゲーターが気を散らそうとしても注目しないように心がけたことで、インスタ・ゲーターは逃げ出しました。勝利です! 「あれらはたまごかな? アリゲーターのたまごに見えるね。」 @mfonda は言いました。「もし私たちが正しくこの子たちを育てたら、忠実なペットか信頼できる乗騎に育つでしょうね。」 @UncommonCriminal が答えて、世話をするためにあなたに3つのたまごを手渡しました。そう願いましょう。さもなければ、インスタ・ゲーターが戻ってきてしまうかもしれません…",
+ "questAlligatorBoss": "インスタ・ゲーター",
"questAlligatorDropAlligatorEgg": "アリゲーター ( たまご )",
"questAlligatorUnlockText": "市場でアリゲーターのたまごを買えるようにする"
}
\ No newline at end of file
diff --git a/website/common/locales/pt/character.json b/website/common/locales/pt/character.json
index cc89fa113b..6e7aa90b90 100644
--- a/website/common/locales/pt/character.json
+++ b/website/common/locales/pt/character.json
@@ -8,8 +8,8 @@
"other": "Outros",
"fullName": "Nome Completo",
"displayName": "Nome a Exibir",
- "changeDisplayName": "Change Display Name",
- "newDisplayName": "New Display Name",
+ "changeDisplayName": "Mudar Nome de Utilizador",
+ "newDisplayName": "Novo Nome de Utilizador",
"displayPhoto": "Foto",
"displayBlurb": "Sobre",
"displayBlurbPlaceholder": "Por favor, apresente-se",
@@ -183,7 +183,7 @@
"lostMana": "Usou alguma Mana",
"lostHealth": "Perdeu alguma Vida",
"lostExperience": "Perdeu alguma Experiência",
- "displayNameDescription1": "This is what appears in messages you post in the Tavern, guilds, and party chat, along with what is displayed on your avatar. To change it, click the Edit button above. If instead you want to change your username, go to",
+ "displayNameDescription1": "Este nome é o que aparece nas mensagens que publique na Taverna, guildas e conversas da equipa, juntamente com o que é apresentado no seu avatar. Para o mudar, carregue no botão de Editar apresentado acima. Se quiser mudar o seu nome de utilizador, dirija-se a",
"displayNameDescription2": "Configurações -> Site",
"displayNameDescription3": "e veja a secção de Registo.",
"unequipBattleGear": "Desequipar Equipamento de Batalha",
@@ -206,7 +206,7 @@
"hideQuickAllocation": "Esconder Alocação por Característica",
"quickAllocationLevelPopover": "Cada nível vale-te um Ponto para atribuíres a uma Característica à escolha. Podes fazê-lo manualmente ou deixar o jogo decidir por ti usando uma das opções de Alocação Automática que podes encontrar em Ícone de Utilizador > Características.",
"notEnoughAttrPoints": "Não tens Pontos de Características suficientes.",
- "classNotSelected": "You must select Class before you can assign Stat Points.",
+ "classNotSelected": "Deve escolher uma Classe antes de poder atribuir Pontos de Característica.",
"style": "Estilo",
"facialhair": "Facial",
"photo": "Foto",
diff --git a/website/common/locales/pt/content.json b/website/common/locales/pt/content.json
index b08ff9ed35..1eeb3e3490 100644
--- a/website/common/locales/pt/content.json
+++ b/website/common/locales/pt/content.json
@@ -176,9 +176,9 @@
"questEggKangarooText": "Canguru",
"questEggKangarooMountText": "Canguru",
"questEggKangarooAdjective": "um acutilante",
- "questEggAlligatorText": "Alligator",
- "questEggAlligatorMountText": "Alligator",
- "questEggAlligatorAdjective": "a cunning",
+ "questEggAlligatorText": "Jacaré",
+ "questEggAlligatorMountText": "Jacaré",
+ "questEggAlligatorAdjective": "astucioso",
"eggNotes": "Ache uma poção de eclosão para usar nesse ovo e ele irá eclodir em um <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Básico/a",
"hatchingPotionWhite": "Branco/a",
@@ -205,7 +205,7 @@
"hatchingPotionStarryNight": "Noite Estrelada",
"hatchingPotionRainbow": "Arco-Íris",
"hatchingPotionGlass": " de Vidro",
- "hatchingPotionGlow": "Glow-in-the-Dark",
+ "hatchingPotionGlow": "Fluorescente",
"hatchingPotionNotes": "Utilize isto num ovo, e ele chocará como um mascote <%= potText(locale) %>.",
"premiumPotionAddlNotes": "Não utilizável nos ovos de mascote de missão.",
"foodMeat": "Carne",
diff --git a/website/common/locales/pt_BR/content.json b/website/common/locales/pt_BR/content.json
index 409944da81..659d0acade 100644
--- a/website/common/locales/pt_BR/content.json
+++ b/website/common/locales/pt_BR/content.json
@@ -178,7 +178,7 @@
"questEggKangarooAdjective": "um entusiasmado ",
"questEggAlligatorText": "Jacaré",
"questEggAlligatorMountText": "Jacaré",
- "questEggAlligatorAdjective": "uma astúcia",
+ "questEggAlligatorAdjective": "um astuto",
"eggNotes": "Ache uma poção de eclosão para usar nesse ovo e ele irá chocar em <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Básico",
"hatchingPotionWhite": "Branco",
diff --git a/website/common/locales/pt_BR/contrib.json b/website/common/locales/pt_BR/contrib.json
index f9e2959101..cd137ef7e3 100644
--- a/website/common/locales/pt_BR/contrib.json
+++ b/website/common/locales/pt_BR/contrib.json
@@ -10,28 +10,28 @@
"tierModerator": "Moderadores (Guardiões)",
"tierStaff": "Equipe (Heroicos) ",
"tierNPC": "NPC",
- "friend": "Amigos",
+ "friend": "Amigo",
"friendFirst": "Quando sua primeira contribuição for implementada, você receberá a medalha de Contribuidor do Habitica. Seu nome, no chat da Taverna, mostrará orgulhosamente que você é um contribuidor. Como recompensa pelo seu trabalho, você também receberá 3 Gemas.",
"friendSecond": "Quando sua segunda contribuição for implementada, a Armadura de Cristal ficará disponível para compra na loja de Recompensas. Como recompensa pelo seu trabalho contínuo, você também receberá 3 Gemas.",
- "elite": "Elites",
+ "elite": "Elite",
"eliteThird": "Quando sua terceira contribuição for implementada, o Elmo de Cristal ficará disponível para compra na loja de Recompensas. Como recompensa pelo seu trabalho contínuo, você também receberá 3 Gemas.",
"eliteFourth": "Quando sua quarta contribuição for implementada, a Lâmina de Cristal ficará disponível para compra na loja de Recompensas. Como recompensa pelo seu trabalho contínuo, você também receberá 4 Gemas.",
- "champion": "Campeões",
+ "champion": "Campeão",
"championFifth": "Quando sua quinta contribuição for implementada, o Escudo de Cristal ficará disponível para compra na loja de Recompensas. Como recompensa pelo seu trabalho contínuo, você também receberá 4 Gemas.",
"championSixth": "Quando sua sexta contribuição for implementada, você receberá o Mascote Hidra. Você também receberá 4 Gemas.",
- "legendary": "Lendários",
+ "legendary": "Lendário",
"legSeventh": "Quando seu sétimo conjunto de contribuições for implementado, você receberá 4 Gemas, se tornará um membro da honrada Guilda de Contribuidores e ganhará acesso aos bastidores do Habitica! Contribuições adicionais não aumentam seu nível, mas você pode continuar ganhando Gemas e títulos.",
"moderator": "Moderadores",
- "guardian": "Guardiões",
+ "guardian": "Guardião",
"guardianText": "Os moderadores foram cuidadosamente selecionados entre os contribuidores de maior nível, então, por favor, demonstre respeito e ouça suas sugestões.",
"staff": "Equipe",
- "heroic": "Heroicos",
+ "heroic": "Heroico",
"heroicText": "O nível Heroico contém a Equipe do Habitica e contribuidores ao nível da equipe. Se você possui esse título, você foi nomeado (ou contratado!).",
"npcText": "Os NPC apoiaram o Kickstarter do Habitica no nível mais alto. Você encontrará os avatares deles ao usar as funcionalidades do site!",
"modalContribAchievement": "Conquista de Contribuidores",
"contribModal": "<%= name %>, você é demais! Agora você é nível <%= level %> de contribuidor por ajudar o Habitica. ",
"contribLink": "Veja quais os prêmios que ganhou por sua contribuição!",
- "contribName": "Contribuidores",
+ "contribName": "Contribuidor",
"contribText": "Contribuiu para o Habitica com código, arte, música, textos ou outros métodos. Para saber mais, entre para a guilda \\\"Aspiring Legends\\\"",
"readMore": "Saber Mais",
"kickstartName": "Apoiador do Kickstarter - Nível $<%= key %>",
@@ -40,7 +40,7 @@
"helpedText1": "Ajudou o Habitica à crescer ao preencher",
"helpedText2": "essa pesquisa.",
"hall": "Salão dos Heróis",
- "contribTitle": "Título de Contribuidor(a) (Ex.: \"Ferreiro(a)\")",
+ "contribTitle": "Título de Contribuidor (Ex.: \"Ferreiro\")",
"contribLevel": "Níveis de Contribuidor",
"contribHallText": "1-7 para contribuidores normais, 8 para moderadores e 9 para Equipe. Isso determina quais itens, mascotes e montarias estão disponíveis. Também determina a cor da etiqueta do nome. Níveis 8 e 9 recebem automaticamente o status de administrador.",
"hallContributors": "Salão dos Contribuidores",
diff --git a/website/common/locales/pt_BR/defaulttasks.json b/website/common/locales/pt_BR/defaulttasks.json
index 1a6fae98e8..ff72ec42ee 100644
--- a/website/common/locales/pt_BR/defaulttasks.json
+++ b/website/common/locales/pt_BR/defaulttasks.json
@@ -10,7 +10,7 @@
"defaultHabit5Text": "Clique aqui para editar e fazer deste hábito um que você queira parar de fazer",
"defaultHabit5Notes": "Ou delete da tela de edição",
"defaultDaily1Text": "Use o Habitica para acompanhar suas tarefas",
- "defaultTodo1Text": "Entrar na [Guilda Brasil](/groups/guild/ac9ff1fd-50fc-46a6-9791-e1833173dab3) (Me marque!)",
+ "defaultTodo1Text": "Entrar no Habitica (Me Marque!)",
"defaultTodoNotes": "Você pode completar, editar ou remover este Afazer.",
"defaultTodo2Text": "Terminar o tutorial sobre Tarefas do Justin.",
"defaultTodo2Notes": "Visite todas as seções na barra inferior",
diff --git a/website/common/locales/pt_BR/questscontent.json b/website/common/locales/pt_BR/questscontent.json
index 11bc412109..09fc6eaa5f 100644
--- a/website/common/locales/pt_BR/questscontent.json
+++ b/website/common/locales/pt_BR/questscontent.json
@@ -620,7 +620,7 @@
"forestFriendsText": "Pacote de Missões Amigos da Floresta",
"forestFriendsNotes": "Contém 'O Espírito da Primavera', 'O Monstrouriço' e 'A Árvore Enrolada'. Disponível até o dia 30 de Setembro.",
"questAlligatorText": "O Éprajá-caré",
- "questAlligatorNotes": "\"Uau!\", exclama @gully. \"Um Éprajá-caré no seu habitat natura! Cuidado, ele distrai sua presa com coisas que parecem urgentes NESTE INSTANTE e se alimenta do resultado de diárias não concluídas.\" Você fica em silêncio para evitar atrair a atenção, mas sem sucesso. O Éprajá-caré te te vê e te cobra! Vozes que distraem se levantam no Pântano da Estagnação, agarrando sua atenção: \"Leia esta postagem! Veja esta foto! Preste atenção em mim NESTE INSTANTE!\" Você luta para montar um contra-ataque, completando suas Diárias e reforçando os seus Hábitos positivos para lutar contra o temido Éprajá-caré.",
+ "questAlligatorNotes": "\"Uau!\", exclama @gully. \"Um Éprajá-caré no seu habitat natural! Cuidado, ele distrai sua presa com coisas que parecem urgentes NESTE INSTANTE e se alimenta do resultado de diárias não concluídas.\" Você fica em silêncio para evitar atrair a atenção, mas sem sucesso. O Éprajá-caré te vê e te ataca! Vozes distrativas se levantam no Pântano da Estagnação, agarrando sua atenção: \"Leia esta postagem! Veja esta foto! Preste atenção em mim NESTE INSTANTE!\" Você luta para montar um contra-ataque, completando suas Diárias e reforçando os seus Hábitos positivos para lutar contra o temido Éprajá-caré.",
"questAlligatorCompletion": "Com sua atenção focada no que é importante e não nas distrações do Éprajá-caré, ele foge. Vitória! \"São esses ovos? Eles se parecem com ovos de jacaré para mim\", pergunta @mfonda. \"Se nos importarmos com eles corretamente, eles serão mascotes leais ou corcéis fiéis\", responde @UncommonCriminal, entregando-lhe três para cuidar. Espero que sim, ou então o Éprajá-caré pode retornar...",
"questAlligatorBoss": "Éprajá-caré",
"questAlligatorDropAlligatorEgg": "Jacaré (Ovo)",
diff --git a/website/common/locales/ru/backgrounds.json b/website/common/locales/ru/backgrounds.json
index fe4bcc771b..f18e9c6712 100644
--- a/website/common/locales/ru/backgrounds.json
+++ b/website/common/locales/ru/backgrounds.json
@@ -382,8 +382,8 @@
"backgroundCozyBarnText": "Уютный амбар",
"backgroundCozyBarnNotes": "Отдохните со своими питомцами и скакунами в вашем уютном амбаре.",
"backgrounds102018": "Набор 53: Выпущен в Октябре 2018",
- "backgroundBayouText": "Bayou",
- "backgroundBayouNotes": "Погреться в лучах ярких светлячков Bayou",
+ "backgroundBayouText": "Болото",
+ "backgroundBayouNotes": "Наслаждаться блеском светлячков на болоте.",
"backgroundCreepyCastleText": "Пугающий Замок",
"backgroundCreepyCastleNotes": "Робко приблизиться к Пугающему Замку.",
"backgroundDungeonText": "Подземелье",
diff --git a/website/common/locales/tr/backgrounds.json b/website/common/locales/tr/backgrounds.json
index 3dd56e39fa..bdda6e1cf1 100644
--- a/website/common/locales/tr/backgrounds.json
+++ b/website/common/locales/tr/backgrounds.json
@@ -381,7 +381,7 @@
"backgroundGiantBookNotes": "Dev Kitabın sayfalarını dolaşırken oku.",
"backgroundCozyBarnText": "Cozy Barn",
"backgroundCozyBarnNotes": "Relax with your pets and mounts in their Cozy Barn.",
- "backgrounds102018": "SET 53: Released October 2018",
+ "backgrounds102018": "SET 53: Ekim 2018'de yayımlandı",
"backgroundBayouText": "Bayou",
"backgroundBayouNotes": "Bask in the fireflies' glow on the misty Bayou.",
"backgroundCreepyCastleText": "Creepy Castle",
diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js
index 73d41e2957..11bdc40e8c 100644
--- a/website/server/controllers/api-v3/groups.js
+++ b/website/server/controllers/api-v3/groups.js
@@ -127,10 +127,6 @@ api.createGroup = {
user.achievements.joinedGuild = true;
user.addNotification('GUILD_JOINED_ACHIEVEMENT');
}
- if (user._ABtests && user._ABtests.guildReminder && user._ABtests.counter !== -1) {
- user._ABtests.counter = -1;
- user.markModified('_ABtests');
- }
} else {
if (group.privacy !== 'private') throw new NotAuthorized(res.t('partyMustbePrivate'));
if (user.party._id) throw new NotAuthorized(res.t('messageGroupAlreadyInParty'));
@@ -570,10 +566,6 @@ api.joinGroup = {
user.achievements.joinedGuild = true;
user.addNotification('GUILD_JOINED_ACHIEVEMENT');
}
- if (user._ABtests && user._ABtests.guildReminder && user._ABtests.counter !== -1) {
- user._ABtests.counter = -1;
- user.markModified('_ABtests');
- }
}
if (!isUserInvited) throw new NotAuthorized(res.t('messageGroupRequiresInvite'));
diff --git a/website/server/controllers/api-v3/tasks.js b/website/server/controllers/api-v3/tasks.js
index 0ee33b26a5..524669d3a1 100644
--- a/website/server/controllers/api-v3/tasks.js
+++ b/website/server/controllers/api-v3/tasks.js
@@ -630,18 +630,6 @@ api.scoreTask = {
setNextDue(task, user);
- if (user._ABtests && user._ABtests.guildReminder && user._ABtests.counter !== -1) {
- user._ABtests.counter++;
- if (user._ABtests.counter > 1) {
- if (user._ABtests.guildReminder.indexOf('timing1') !== -1 || user._ABtests.counter > 4) {
- user._ABtests.counter = -1;
- let textVariant = user._ABtests.guildReminder.indexOf('text2');
- user.addNotification('GUILD_PROMPT', {textVariant});
- }
- }
- user.markModified('_ABtests');
- }
-
let promises = [
user.save(),
task.save(),
diff --git a/website/server/libs/analyticsService.js b/website/server/libs/analyticsService.js
index 8a745f90e0..6f0787c0c3 100644
--- a/website/server/libs/analyticsService.js
+++ b/website/server/libs/analyticsService.js
@@ -70,8 +70,8 @@ let _formatUserData = (user) => {
properties.balance = user.balance;
properties.balanceGemAmount = properties.balance * 4;
-
properties.tutorialComplete = user.flags && user.flags.tour && user.flags.tour.intro === -2;
+ properties.verifiedUsername = user.flags && user.flags.verifiedUsername;
if (user.habits && user.dailys && user.todos && user.rewards) {
properties['Number Of Tasks'] = {
@@ -90,9 +90,6 @@ let _formatUserData = (user) => {
properties.subscription = user.purchased.plan.planId;
}
- if (user._ABtest) {
- properties.ABtest = user._ABtest;
- }
if (user._ABtests) {
properties.ABtests = toArray(user._ABtests);
}
diff --git a/website/server/libs/cron.js b/website/server/libs/cron.js
index 3091987637..5106b013e2 100644
--- a/website/server/libs/cron.js
+++ b/website/server/libs/cron.js
@@ -200,8 +200,6 @@ function trackCronAnalytics (analytics, user, _progress, options) {
function awardLoginIncentives (user) {
if (user.loginIncentives > MAX_INCENTIVES) return;
- // A/B test 2016-12-21: Should we deliver notifications for upcoming incentives on days when users don't receive rewards?
- if (!loginIncentives[user.loginIncentives].rewardKey && user._ABtests && user._ABtests.checkInModals === '20161221_noCheckInPreviews') return;
// Remove old notifications if they exists
user.notifications.forEach((notif, index) => {
diff --git a/website/server/models/user/hooks.js b/website/server/models/user/hooks.js
index 727396234d..020dd59ebe 100644
--- a/website/server/models/user/hooks.js
+++ b/website/server/models/user/hooks.js
@@ -124,25 +124,6 @@ function _setUpNewUser (user) {
let taskTypes;
let iterableFlags = user.flags.toObject();
- // A/B test 2017-05-11: Can we encourage people to join Guilds with a pester modal?
- let testGroup = Math.random();
- if (testGroup < 0.1) {
- user._ABtests.guildReminder = '20170511_noGuildReminder'; // control group, don't pester about Guilds
- user._ABtests.counter = -1;
- } else if (testGroup < 0.235) {
- user._ABtests.guildReminder = '20170511_text1timing1'; // first sample text, show after two clicks
- user._ABtests.counter = 0;
- } else if (testGroup < 0.46) {
- user._ABtests.guildReminder = '20170511_text2timing1'; // second sample text, show after two clicks
- user._ABtests.counter = 0;
- } else if (testGroup < 0.685) {
- user._ABtests.guildReminder = '20170511_text1timing2'; // first sample text, show after five clicks
- user._ABtests.counter = 0;
- } else {
- user._ABtests.guildReminder = '20170511_text2timing2'; // second sample text, show after five clicks
- user._ABtests.counter = 0;
- }
-
user.items.quests.dustbunnies = 1;
user.purchased.background.violet = true;
user.preferences.background = 'violet';