diff --git a/Dockerfile-Production b/Dockerfile-Production
index ca04b42d368..b1984019e3f 100644
--- a/Dockerfile-Production
+++ b/Dockerfile-Production
@@ -20,7 +20,7 @@ RUN npm install -g gulp mocha
# Clone Habitica repo and install dependencies
RUN mkdir -p /usr/src/habitrpg
WORKDIR /usr/src/habitrpg
-RUN git clone --branch v4.11.0 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
+RUN git clone --branch v4.20.1 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
RUN npm install
RUN gulp build:prod --force
diff --git a/Vagrantfile.example b/Vagrantfile.example
index 061c20f2778..5507219c7fd 100644
--- a/Vagrantfile.example
+++ b/Vagrantfile.example
@@ -16,5 +16,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.hostname = "habitrpg"
config.vm.network "forwarded_port", guest: 3000, host: 3000, auto_correct: true
config.vm.usable_port_range = (3000..3050)
+ config.vm.network "forwarded_port", guest: 8080, host: 8080, auto_correct: true
+ config.vm.usable_port_range = (8080..8130)
config.vm.provision :shell, :path => "vagrant_scripts/vagrant.sh"
end
diff --git a/config.json.example b/config.json.example
index c217657c436..f2274ce9401 100644
--- a/config.json.example
+++ b/config.json.example
@@ -71,6 +71,7 @@
},
"IAP_GOOGLE_KEYDIR": "/path/to/google/public/key/dir/",
"LOGGLY_TOKEN": "token",
+ "LOGGLY_CLIENT_TOKEN": "token",
"LOGGLY_ACCOUNT": "account",
"PUSH_CONFIGS": {
"GCM_SERVER_API_KEY": "",
diff --git a/migrations/20140831_increase_gems_for_previous_contributions.js b/migrations/20140831_increase_gems_for_previous_contributions.js
index 2bdc5dd5ebd..164dda444b0 100644
--- a/migrations/20140831_increase_gems_for_previous_contributions.js
+++ b/migrations/20140831_increase_gems_for_previous_contributions.js
@@ -16,7 +16,7 @@ var migrationName = '20140831_increase_gems_for_previous_contributions';
* https://github.com/HabitRPG/habitrpg/issues/3933
* Increase Number of Gems for Contributors
* author: Alys (d904bd62-da08-416b-a816-ba797c9ee265)
- *
+ *
* Increase everyone's gems per their contribution level.
* Originally they were given 2 gems per tier.
* Now they are given 3 gems per tier for tiers 1,2,3
@@ -70,7 +70,7 @@ dbUsers.findEach(query, fields, function(err, user) {
var extraGems = tier; // tiers 1,2,3
if (tier > 3) { extraGems = 3 + (tier - 3) * 2; }
if (tier == 8) { extraGems = 11; }
- extraBalance = extraGems / 4;
+ var extraBalance = extraGems / 4;
set['balance'] = user.balance + extraBalance;
// Capture current state of user:
diff --git a/migrations/20151021_usernames_emails_lowercase.js b/migrations/20151021_usernames_emails_lowercase.js
index 432d7eb650b..b40aaad9d7c 100644
--- a/migrations/20151021_usernames_emails_lowercase.js
+++ b/migrations/20151021_usernames_emails_lowercase.js
@@ -39,7 +39,7 @@ function findUsers(gt){
console.log('User: ', countUsers, user._id);
var update = {
- $set: {};
+ $set: {}
};
if(user.auth && user.auth.local) {
@@ -60,4 +60,4 @@ function findUsers(gt){
});
};
-findUsers();
\ No newline at end of file
+findUsers();
diff --git a/migrations/20171230_nye_hats.js b/migrations/20171230_nye_hats.js
new file mode 100644
index 00000000000..08db9a4158d
--- /dev/null
+++ b/migrations/20171230_nye_hats.js
@@ -0,0 +1,103 @@
+var migrationName = '20171230_nye_hats.js';
+var authorName = 'Sabe'; // in case script author needs to know when their ...
+var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
+
+/*
+ * Award New Year's Eve party hats to users in sequence
+ */
+
+var monk = require('monk');
+var connectionString = 'mongodb://localhost:27017/habitrpg?auto_reconnect=true'; // FOR TEST DATABASE
+var dbUsers = monk(connectionString).get('users', { castIds: false });
+
+function processUsers(lastId) {
+ // specify a query to limit the affected users (empty for all users):
+ var query = {
+ 'migration': {$ne:migrationName},
+ 'auth.timestamps.loggedin': {$gt:new Date('2017-11-30')},
+ };
+
+ if (lastId) {
+ query._id = {
+ $gt: lastId
+ }
+ }
+
+ dbUsers.find(query, {
+ sort: {_id: 1},
+ limit: 250,
+ fields: [
+ 'items.gear.owned',
+ ] // specify fields we are interested in to limit retrieved data (empty if we're not reading data):
+ })
+ .then(updateUsers)
+ .catch(function (err) {
+ console.log(err);
+ return exiting(1, 'ERROR! ' + err);
+ });
+}
+
+var progressCount = 1000;
+var count = 0;
+
+function updateUsers (users) {
+ if (!users || users.length === 0) {
+ console.warn('All appropriate users found and modified.');
+ displayData();
+ return;
+ }
+
+ var userPromises = users.map(updateUser);
+ var lastUser = users[users.length - 1];
+
+ return Promise.all(userPromises)
+ .then(function () {
+ processUsers(lastUser._id);
+ });
+}
+
+function updateUser (user) {
+ count++;
+
+ var set = {};
+ var push = {};
+
+ if (typeof user.items.gear.owned.head_special_nye2016 !== 'undefined') {
+ set = {'migration':migrationName, 'items.gear.owned.head_special_nye2017':false};
+ push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.head_special_nye2017', '_id': monk.id()}};
+ } else if (typeof user.items.gear.owned.head_special_nye2015 !== 'undefined') {
+ set = {'migration':migrationName, 'items.gear.owned.head_special_nye2016':false};
+ push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.head_special_nye2016', '_id': monk.id()}};
+ } else if (typeof user.items.gear.owned.head_special_nye2014 !== 'undefined') {
+ set = {'migration':migrationName, 'items.gear.owned.head_special_nye2015':false};
+ push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.head_special_nye2015', '_id': monk.id()}};
+ } else if (typeof user.items.gear.owned.head_special_nye !== 'undefined') {
+ set = {'migration':migrationName, 'items.gear.owned.head_special_nye2014':false};
+ push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.head_special_nye2014', '_id': monk.id()}};
+ } else {
+ set = {'migration':migrationName, 'items.gear.owned.head_special_nye':false};
+ push = {pinnedItems: {type: 'marketGear', path: 'gear.flat.head_special_nye', '_id': monk.id()}};
+ }
+
+ dbUsers.update({_id: user._id}, {$set: set, $push: push});
+
+ if (count % progressCount == 0) console.warn(count + ' ' + user._id);
+ if (user._id == authorUuid) console.warn(authorName + ' processed');
+}
+
+function displayData() {
+ console.warn('\n' + count + ' users processed\n');
+ return exiting(0);
+}
+
+function exiting(code, msg) {
+ code = code || 0; // 0 = success
+ if (code && !msg) { msg = 'ERROR!'; }
+ if (msg) {
+ if (code) { console.error(msg); }
+ else { console.log( msg); }
+ }
+ process.exit(code);
+}
+
+module.exports = processUsers;
diff --git a/migrations/20180110_nextPaymentProcessing.js b/migrations/20180110_nextPaymentProcessing.js
new file mode 100644
index 00000000000..293dcb354c2
--- /dev/null
+++ b/migrations/20180110_nextPaymentProcessing.js
@@ -0,0 +1,79 @@
+/*
+ * Convert purchased.plan.nextPaymentProcessing from a double to a date field for Apple subscribers
+ */
+
+var monk = require('monk');
+var connectionString = 'mongodb://localhost:27017/habitrpg?auto_reconnect=true'; // FOR TEST DATABASE
+var dbUsers = monk(connectionString).get('users', { castIds: false });
+
+function processUsers(lastId) {
+ // specify a query to limit the affected users (empty for all users):
+ var query = {
+ 'purchased.plan.paymentMethod': "Apple",
+ 'purchased.plan.nextPaymentProcessing': {$type: 'double'},
+ };
+
+ if (lastId) {
+ query._id = {
+ $gt: lastId
+ }
+ }
+
+ dbUsers.find(query, {
+ sort: {_id: 1},
+ limit: 250,
+ })
+ .then(updateUsers)
+ .catch(function (err) {
+ console.log(err);
+ return exiting(1, 'ERROR! ' + err);
+ });
+}
+
+var progressCount = 100;
+var count = 0;
+
+function updateUsers (users) {
+ if (!users || users.length === 0) {
+ console.warn('All appropriate users found and modified.');
+ displayData();
+ return;
+ }
+
+ var userPromises = users.map(updateUser);
+ var lastUser = users[users.length - 1];
+
+ return Promise.all(userPromises)
+ .then(function () {
+ processUsers(lastUser._id);
+ });
+}
+
+function updateUser (user) {
+ count++;
+
+ var set = {
+ 'purchased.plan.nextPaymentProcessing': new Date(user.purchased.plan.nextPaymentProcessing),
+ };
+
+ dbUsers.update({_id: user._id}, {$set: set});
+
+ if (count % progressCount == 0) console.warn(count + ' ' + user._id);
+}
+
+function displayData() {
+ console.warn('\n' + count + ' users processed\n');
+ return exiting(0);
+}
+
+function exiting(code, msg) {
+ code = code || 0; // 0 = success
+ if (code && !msg) { msg = 'ERROR!'; }
+ if (msg) {
+ if (code) { console.error(msg); }
+ else { console.log( msg); }
+ }
+ process.exit(code);
+}
+
+module.exports = processUsers;
diff --git a/migrations/docs/mongo-indexes.md b/migrations/docs/mongo-indexes.md
new file mode 100644
index 00000000000..9a2ab2fe4b5
--- /dev/null
+++ b/migrations/docs/mongo-indexes.md
@@ -0,0 +1,58 @@
+# Indexes
+
+This file contains a list of indexes that are on Habitica's production Mongo server.
+If we ever have an issue, use this list to reindex.
+
+## Challenges
+ - `{ "group": 1, "official": -1, "timestamp": -1 }`
+ - `{ "leader": 1, "official": -1, "timestamp": -1 }`
+ - `{ "official": -1, "timestamp": -1 }`
+
+## Groups
+ - `{ "privacy": 1, "type": 1, "memberCount": -1 }`
+ - `{ "privacy": 1 }`
+ - `{ "purchased.plan.customerId": 1 }`
+ - `{ "purchased.plan.paymentMethod": 1 }`
+ - `{ "purchased.plan.planId": 1, "purchased.plan.dateTerminated": 1 }`
+ - `{ "type": 1, "memberCount": -1, "_id": 1 }`
+ - `{ "type": 1 }`
+
+## Tasks
+ - `{ "challenge.id": 1 }`
+ - `{ "challenge.taskId": 1 }`
+ - `{ "group.id": 1 }`
+ - `{ "group.taskId": 1 }`
+ - `{ "type": 1, "everyX": 1, "frequency": 1 }`
+ - `{ "userId": 1 }`
+ - `{ "yesterDaily": 1, "type": 1 }`
+
+## Users
+ - `{ "_id": 1, "apiToken": 1 }`
+ - `{ "auth.facebook.emails.value": 1 }`
+ - `{ "auth.facebook.id": 1 }`
+ - `{ "auth.google.emails.value": 1 }`
+ - `{ "auth.google.id": 1 }`
+ - `{ "auth.local.email": 1 }`
+ - `{ "auth.local.lowerCaseUsername": 1 }`
+ - `{ "auth.local.username": 1 }`
+ - `{ "auth.timestamps.created": 1 }`
+ - `{ "auth.timestamps.loggedin": 1, "_lastPushNotification": 1, "preferences.timezoneOffset": 1 }`
+ - `{ "auth.timestamps.loggedin": 1 }`
+ - `{ "backer.tier": -1 }`
+ - `{ "challenges": 1, "_id": 1 }`
+ - `{ "contributor.admin": 1, "contributor.level": -1, "backer.npc": -1, "profile.name": 1 }`
+ - `{ "contributor.level": 1 }`
+ - `{ "flags.newStuff": 1 }`
+ - `{ "guilds": 1, "_id": 1 }`
+ - `{ "invitations.guilds.id": 1, "_id": 1 }`
+ - `{ "invitations.party.id": 1 }`
+ - `{ "loginIncentives": 1 }`
+ - `{ "migration": 1 }`
+ - {` "party._id": 1, "_id": 1 }`
+ - `{ "preferences.sleep": 1, "_id": 1, "flags.lastWeeklyRecap": 1, "preferences.emailNotifications.unsubscribeFromAll": 1, "preferences.emailNotifications.weeklyRecaps": 1 }`
+ - `{ "preferences.sleep": 1, "_id": 1, "lastCron": 1, "preferences.emailNotifications.importantAnnouncements": 1, "preferences.emailNotifications.unsubscribeFromAll": 1, "flags.recaptureEmailsPhase": 1 }`
+ - `{ "profile.name": 1 }`
+ - `{ "purchased.plan.customerId": 1 }`
+ - `{ "purchased.plan.paymentMethod": 1 }`
+ - `{ "stats.score.overall": 1 }`
+ - `{ "webhooks.type": 1 }`
diff --git a/migrations/migration-runner.js b/migrations/migration-runner.js
index a29f068bd58..b594e403d24 100644
--- a/migrations/migration-runner.js
+++ b/migrations/migration-runner.js
@@ -17,12 +17,5 @@ function setUpServer () {
setUpServer();
// Replace this with your migration
-const processUsers = require('./users/account-transfer');
-processUsers()
- .then(() => {
- process.exit();
- })
- .catch(function (err) {
- console.log(err);
- process.exit();
- });
+const processUsers = require('./tasks/tasks-set-everyX');
+processUsers();
diff --git a/migrations/mystery_items.js b/migrations/mystery_items.js
index aca1034c2d4..886ca4edfb2 100644
--- a/migrations/mystery_items.js
+++ b/migrations/mystery_items.js
@@ -2,7 +2,7 @@ var _id = '';
var update = {
$addToSet: {
'purchased.plan.mysteryItems':{
- $each:['armor_mystery_201711','body_mystery_201711']
+ $each:['armor_mystery_201712','head_mystery_201712']
}
}
};
diff --git a/migrations/takeThis.js b/migrations/takeThis.js
index 32d4c00ef67..17336e394d1 100644
--- a/migrations/takeThis.js
+++ b/migrations/takeThis.js
@@ -1,4 +1,4 @@
-var migrationName = '20170502_takeThis.js'; // Update per month
+var migrationName = '20180102_takeThis.js'; // Update per month
var authorName = 'Sabe'; // in case script author needs to know when their ...
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
@@ -7,14 +7,14 @@ var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
*/
var monk = require('monk');
-var connectionString = 'mongodb://localhost:27017/habitrpg?auto_reconnect=true'; // FOR TEST DATABASE
+var connectionString = 'mongodb://sabrecat:z8e8jyRA8CTofMQ@ds013393-a0.mlab.com:13393/habitica?auto_reconnect=true';
var dbUsers = monk(connectionString).get('users', { castIds: false });
function processUsers(lastId) {
// specify a query to limit the affected users (empty for all users):
var query = {
'migration':{$ne:migrationName},
- 'challenges':{$in:['69999331-d4ea-45a0-8c3f-f725d22b56c8']} // Update per month
+ 'challenges':{$in:['5f70ce5b-2d82-4114-8e44-ca65615aae62']} // Update per month
};
if (lastId) {
diff --git a/migrations/tasks/tasks-set-everyX.js b/migrations/tasks/tasks-set-everyX.js
new file mode 100644
index 00000000000..c0a4acc7fb9
--- /dev/null
+++ b/migrations/tasks/tasks-set-everyX.js
@@ -0,0 +1,88 @@
+var migrationName = 'tasks-set-everyX';
+var authorName = 'Sabe'; // in case script author needs to know when their ...
+var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done
+
+/*
+ * Iterates over all tasks and sets invalid everyX values (less than 0 or more than 9999 or not an int) field to 0
+ */
+
+var monk = require('monk');
+var connectionString = 'mongodb://sabrecat:z8e8jyRA8CTofMQ@ds013393-a0.mlab.com:13393/habitica?auto_reconnect=true';
+var dbTasks = monk(connectionString).get('tasks', { castIds: false });
+
+function processTasks(lastId) {
+ // specify a query to limit the affected tasks (empty for all tasks):
+ var query = {
+ type: "daily",
+ everyX: {
+ $not: {
+ $gte: 0,
+ $lte: 9999,
+ $type: "int",
+ }
+ },
+ };
+
+ if (lastId) {
+ query._id = {
+ $gt: lastId
+ }
+ }
+
+ dbTasks.find(query, {
+ sort: {_id: 1},
+ limit: 250,
+ fields: [],
+ })
+ .then(updateTasks)
+ .catch(function (err) {
+ console.log(err);
+ return exiting(1, 'ERROR! ' + err);
+ });
+}
+
+var progressCount = 1000;
+var count = 0;
+
+function updateTasks (tasks) {
+ if (!tasks || tasks.length === 0) {
+ console.warn('All appropriate tasks found and modified.');
+ displayData();
+ return;
+ }
+
+ var taskPromises = tasks.map(updatetask);
+ var lasttask = tasks[tasks.length - 1];
+
+ return Promise.all(taskPromises)
+ .then(function () {
+ processTasks(lasttask._id);
+ });
+}
+
+function updatetask (task) {
+ count++;
+ var set = {'everyX': 0};
+
+ dbTasks.update({_id: task._id}, {$set:set});
+
+ if (count % progressCount == 0) console.warn(count + ' ' + task._id);
+ if (task._id == authorUuid) console.warn(authorName + ' processed');
+}
+
+function displayData() {
+ console.warn('\n' + count + ' tasks processed\n');
+ return exiting(0);
+}
+
+function exiting(code, msg) {
+ code = code || 0; // 0 = success
+ if (code && !msg) { msg = 'ERROR!'; }
+ if (msg) {
+ if (code) { console.error(msg); }
+ else { console.log( msg); }
+ }
+ process.exit(code);
+}
+
+module.exports = processTasks;
diff --git a/migrations/users/achievement-restore.js b/migrations/users/achievement-restore.js
new file mode 100644
index 00000000000..bd7e91a3272
--- /dev/null
+++ b/migrations/users/achievement-restore.js
@@ -0,0 +1,93 @@
+const migrationName = 'AchievementRestore';
+const authorName = 'TheHollidayInn'; // in case script author needs to know when their ...
+const authorUuid = ''; //... own data is done
+
+/*
+ * This migraition will copy user data from prod to test
+ */
+import Bluebird from 'bluebird';
+
+const monk = require('monk');
+const connectionString = 'mongodb://localhost/new-habit';
+const Users = monk(connectionString).get('users', { castIds: false });
+
+const monkOld = require('monk');
+const oldConnectionSting = 'mongodb://localhost/old-habit';
+const UsersOld = monk(oldConnectionSting).get('users', { castIds: false });
+
+function getAchievementUpdate (newUser, oldUser) {
+ const oldAchievements = oldUser.achievements;
+ const newAchievements = newUser.achievements;
+
+ let achievementsUpdate = Object.assign({}, newAchievements);
+
+ // ultimateGearSets
+ if (!achievementsUpdate.ultimateGearSets && oldAchievements.ultimateGearSets) {
+ achievementsUpdate.ultimateGearSets = oldAchievements.ultimateGearSets;
+ } else if (oldAchievements.ultimateGearSets) {
+ for (let index in oldAchievements.ultimateGearSets) {
+ if (oldAchievements.ultimateGearSets[index]) achievementsUpdate.ultimateGearSets[index] = true;
+ }
+ }
+
+ // challenges
+ if (!newAchievements.challenges) newAchievements.challenges = [];
+ if (!oldAchievements.challenges) oldAchievements.challenges = [];
+ achievementsUpdate.challenges = newAchievements.challenges.concat(oldAchievements.challenges);
+
+ // Quests
+ if (!achievementsUpdate.quests) achievementsUpdate.quests = {};
+ for (let index in oldAchievements.quests) {
+ if (!achievementsUpdate.quests[index]) {
+ achievementsUpdate.quests[index] = oldAchievements.quests[index];
+ } else {
+ achievementsUpdate.quests[index] += oldAchievements.quests[index];
+ }
+ }
+
+ // Rebirth level
+ if (achievementsUpdate.rebirthLevel) {
+ achievementsUpdate.rebirthLevel = Math.max(achievementsUpdate.rebirthLevel, oldAchievements.rebirthLevel);
+ } else if (oldAchievements.rebirthLevel) {
+ achievementsUpdate.rebirthLevel = oldAchievements.rebirthLevel;
+ }
+
+ //All others
+ const indexsToIgnore = ['ultimateGearSets', 'challenges', 'quests', 'rebirthLevel'];
+ for (let index in oldAchievements) {
+ if (indexsToIgnore.indexOf(index) !== -1) continue;
+
+ if (!achievementsUpdate[index]) {
+ achievementsUpdate[index] = oldAchievements[index];
+ continue;
+ }
+
+ if (Number.isInteger(oldAchievements[index])) {
+ achievementsUpdate[index] += oldAchievements[index];
+ } else {
+ if (oldAchievements[index] === true) achievementsUpdate[index] = true;
+ }
+ }
+
+ return achievementsUpdate;
+}
+
+module.exports = async function achievementRestore () {
+ const userIds = [
+ ];
+
+ for (let index in userIds) {
+ const userId = userIds[index];
+ const oldUser = await UsersOld.findOne({_id: userId}, 'achievements');
+ const newUser = await Users.findOne({_id: userId}, 'achievements');
+ const achievementUpdate = getAchievementUpdate(newUser, oldUser);
+ await Users.update(
+ {_id: userId},
+ {
+ $set: {
+ 'achievements': achievementUpdate,
+ },
+ });
+ console.log(`Updated ${userId}`);
+ }
+};
diff --git a/package-lock.json b/package-lock.json
index 1c01a87b8bb..47f0ac8eb78 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "habitica",
- "version": "4.12.1",
+ "version": "4.20.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -32,6 +32,15 @@
"ws": "1.1.5"
}
},
+ "JSONStream": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
+ "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
+ "requires": {
+ "jsonparse": "1.3.1",
+ "through": "2.3.8"
+ }
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -1648,9 +1657,9 @@
}
},
"bootstrap": {
- "version": "4.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-beta.2.tgz",
- "integrity": "sha512-DzGtdTlKbrMoGMpz0LigKSqJ+MgtFKxA791PU/q062OlRG0HybNZcTLH7rpDAmLS66Y3esN9yzKHLLbqa5UR3w=="
+ "version": "4.0.0-beta.3",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0-beta.3.tgz",
+ "integrity": "sha512-/Qe1Q2d1muLEZRX2iCteMQHZBBAm6ZIjJ9FcBYK/xLr05+HvDtBOVBN+Cz7mCNZuy0zr+y5artZHM05W7mIz6g=="
},
"bootstrap-vue": {
"version": "1.2.0",
@@ -1659,7 +1668,7 @@
"requires": {
"lodash.startcase": "4.4.0",
"opencollective": "1.0.3",
- "popper.js": "1.12.9",
+ "popper.js": "1.13.0",
"vue-functional-data-merge": "1.0.7"
}
},
@@ -1771,9 +1780,9 @@
"resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz",
"integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=",
"requires": {
+ "JSONStream": "1.3.1",
"combine-source-map": "0.7.2",
"defined": "1.0.0",
- "JSONStream": "1.3.1",
"through2": "2.0.3",
"umd": "3.0.1"
}
@@ -1803,6 +1812,7 @@
"resolved": "https://registry.npmjs.org/browserify/-/browserify-12.0.2.tgz",
"integrity": "sha1-V/IeXm4wj/WYfE2v1EhAsrmPehk=",
"requires": {
+ "JSONStream": "1.3.1",
"assert": "1.3.0",
"browser-pack": "6.0.2",
"browser-resolve": "1.11.2",
@@ -1824,7 +1834,6 @@
"inherits": "2.0.3",
"insert-module-globals": "7.0.1",
"isarray": "0.0.1",
- "JSONStream": "1.3.1",
"labeled-stream-splicer": "2.0.0",
"module-deps": "4.1.1",
"os-browserify": "0.1.2",
@@ -6711,13 +6720,6 @@
}
}
},
- "string_decoder": {
- "version": "1.0.1",
- "bundled": true,
- "requires": {
- "safe-buffer": "5.0.1"
- }
- },
"string-width": {
"version": "1.0.2",
"bundled": true,
@@ -6727,6 +6729,13 @@
"strip-ansi": "3.0.1"
}
},
+ "string_decoder": {
+ "version": "1.0.1",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "5.0.1"
+ }
+ },
"stringstream": {
"version": "0.0.5",
"bundled": true,
@@ -8899,10 +8908,10 @@
"resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz",
"integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=",
"requires": {
+ "JSONStream": "1.3.1",
"combine-source-map": "0.7.2",
"concat-stream": "1.5.2",
"is-buffer": "1.1.6",
- "JSONStream": "1.3.1",
"lexical-scope": "1.2.0",
"process": "0.11.10",
"through2": "2.0.3",
@@ -9738,15 +9747,6 @@
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
"integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk="
},
- "JSONStream": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
- "integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
- "requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
- }
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -11554,6 +11554,7 @@
"resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
"integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
"requires": {
+ "JSONStream": "1.3.1",
"browser-resolve": "1.11.2",
"cached-path-relative": "1.0.1",
"concat-stream": "1.5.2",
@@ -11561,7 +11562,6 @@
"detective": "4.5.0",
"duplexer2": "0.1.4",
"inherits": "2.0.3",
- "JSONStream": "1.3.1",
"parents": "1.0.1",
"readable-stream": "2.0.6",
"resolve": "1.5.0",
@@ -11580,40 +11580,53 @@
"version": "git://github.com/habitrpg/moment-recur.git#f147ef27bbc26ca67638385f3db4a44084c76626"
},
"mongodb": {
- "version": "2.2.24",
- "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.24.tgz",
- "integrity": "sha1-gPQNbsW97A3ezw+c4BROeUxGRJo=",
+ "version": "2.2.33",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.33.tgz",
+ "integrity": "sha1-tTfEcdNKZlG0jzb9vyl1A0Dgi1A=",
+ "dev": true,
"requires": {
"es6-promise": "3.2.1",
- "mongodb-core": "2.1.8",
- "readable-stream": "2.1.5"
+ "mongodb-core": "2.1.17",
+ "readable-stream": "2.2.7"
},
"dependencies": {
"es6-promise": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
- "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
+ "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=",
+ "dev": true
},
"readable-stream": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
- "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=",
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz",
+ "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=",
+ "dev": true,
"requires": {
"buffer-shims": "1.0.0",
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
+ "string_decoder": "1.0.3",
"util-deprecate": "1.0.2"
}
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ }
}
}
},
"mongodb-core": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.8.tgz",
- "integrity": "sha1-sz4DcNClnZe2yx7GEFJ76elcosA=",
+ "version": "2.1.17",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.17.tgz",
+ "integrity": "sha1-pBizN6FKFJkPtRC5I97mqBMXPfg=",
+ "dev": true,
"requires": {
"bson": "1.0.4",
"require_optional": "1.0.1"
@@ -11646,10 +11659,48 @@
"lodash": "4.17.4"
}
},
+ "es6-promise": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz",
+ "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q="
+ },
+ "mongodb": {
+ "version": "2.2.24",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.24.tgz",
+ "integrity": "sha1-gPQNbsW97A3ezw+c4BROeUxGRJo=",
+ "requires": {
+ "es6-promise": "3.2.1",
+ "mongodb-core": "2.1.8",
+ "readable-stream": "2.1.5"
+ }
+ },
+ "mongodb-core": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.8.tgz",
+ "integrity": "sha1-sz4DcNClnZe2yx7GEFJ76elcosA=",
+ "requires": {
+ "bson": "1.0.4",
+ "require_optional": "1.0.1"
+ }
+ },
"ms": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz",
"integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U="
+ },
+ "readable-stream": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
+ "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=",
+ "requires": {
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
}
}
},
@@ -11675,7 +11726,7 @@
"requires": {
"debug": "2.6.9",
"gitbook-plugin-github": "2.0.0",
- "mongodb": "2.2.24"
+ "mongodb": "2.2.33"
}
},
"morgan": {
@@ -13881,9 +13932,9 @@
"integrity": "sha1-xi/0xMUdLJGUlLdhpvSZP01/5Wk="
},
"popper.js": {
- "version": "1.12.9",
- "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.12.9.tgz",
- "integrity": "sha1-DfvC3/lsRRuzMu3Pz6r1ZtMx1bM="
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.13.0.tgz",
+ "integrity": "sha1-4ef/ZcxD98+c8W8VEKdegfhPRWU="
},
"postcss": {
"version": "5.2.18",
@@ -15439,22 +15490,6 @@
"throttleit": "1.0.0"
}
},
- "require_optional": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
- "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
- "requires": {
- "resolve-from": "2.0.0",
- "semver": "5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
- }
- }
- },
"require-again": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-again/-/require-again-2.0.0.tgz",
@@ -15494,6 +15529,22 @@
}
}
},
+ "require_optional": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
+ "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==",
+ "requires": {
+ "resolve-from": "2.0.0",
+ "semver": "5.4.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
+ "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg=="
+ }
+ }
+ },
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@@ -16797,11 +16848,6 @@
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
"integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM="
},
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -16812,6 +16858,11 @@
"strip-ansi": "3.0.1"
}
},
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
@@ -18496,8 +18547,16 @@
"resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz",
"integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg=="
},
+ "vuedraggable": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.15.0.tgz",
+ "integrity": "sha1-NSat7pJL0itHigG3DAo038nLu08=",
+ "requires": {
+ "sortablejs": "1.7.0"
+ }
+ },
"vuejs-datepicker": {
- "version": "git://github.com/habitrpg/vuejs-datepicker.git#825a866b6a9c52dd8c588a3e8b900880875ce914"
+ "version": "git://github.com/habitrpg/vuejs-datepicker.git#af96f357a746463dc0461ddf5c2c13b7a4e1f484"
},
"w3counter": {
"version": "3.0.1",
diff --git a/package.json b/package.json
index 427eabcd949..c88b29f142b 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.12.1",
+ "version": "4.20.2",
"main": "./website/server/index.js",
"dependencies": {
"@slack/client": "^3.8.1",
@@ -31,7 +31,7 @@
"bcrypt": "^1.0.2",
"bluebird": "^3.3.5",
"body-parser": "^1.15.0",
- "bootstrap": "4.0.0-beta.2",
+ "bootstrap": "^4.0.0-beta.3",
"bootstrap-vue": "^1.0.2",
"browserify": "~12.0.1",
"compression": "^1.6.1",
@@ -72,7 +72,7 @@
"merge-stream": "^1.0.0",
"method-override": "^2.3.5",
"moment": "^2.13.0",
- "moment-recur": "git://github.com/habitrpg/moment-recur#f147ef27bbc26ca67638385f3db4a44084c76626",
+ "moment-recur": "git://github.com/habitrpg/moment-recur.git#f147ef27bbc26ca67638385f3db4a44084c76626",
"mongoose": "~4.8.6",
"mongoose-id-autoinc": "~2013.7.14-4",
"morgan": "^1.7.0",
@@ -89,12 +89,12 @@
"passport-google-oauth20": "1.0.0",
"paypal-ipn": "3.0.0",
"paypal-rest-sdk": "^1.2.1",
- "popper.js": "^1.11.0",
+ "popper.js": "^1.13.0",
"postcss-easy-import": "^2.0.0",
"pretty-data": "^0.40.0",
"ps-tree": "^1.0.0",
"pug": "^2.0.0-beta.12",
- "push-notify": "git://github.com/habitrpg/push-notify#6bc2b5fdb1bdc9649b9ec1964d79ca50187fc8a9",
+ "push-notify": "git://github.com/habitrpg/push-notify.git#6bc2b5fdb1bdc9649b9ec1964d79ca50187fc8a9",
"pusher": "^1.3.0",
"request": "~2.74.0",
"rimraf": "^2.4.3",
@@ -122,7 +122,8 @@
"vue-router": "^3.0.0",
"vue-style-loader": "^3.0.0",
"vue-template-compiler": "^2.5.2",
- "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker#825a866b6a9c52dd8c588a3e8b900880875ce914",
+ "vuedraggable": "^2.15.0",
+ "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#af96f357a746463dc0461ddf5c2c13b7a4e1f484",
"webpack": "^2.2.1",
"webpack-merge": "^4.0.0",
"winston": "^2.1.0",
@@ -196,7 +197,7 @@
"lcov-result-merger": "^1.0.2",
"lolex": "^1.4.0",
"mocha": "^3.2.0",
- "mongodb": "^2.0.46",
+ "mongodb": "^2.2.33",
"mongoskin": "~2.1.0",
"monk": "^4.0.0",
"nightwatch": "^0.9.12",
diff --git a/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js b/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js
index 2b98af9579f..d82bc498ad1 100644
--- a/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js
+++ b/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js
@@ -64,11 +64,11 @@ describe('GET /challenges/:challengeId/export/csv', () => {
let sortedMembers = _.sortBy([members[0], members[1], members[2], groupLeader], '_id');
let splitRes = res.split('\n');
- expect(splitRes[0]).to.equal('UUID,name,Task,Value,Notes,Task,Value,Notes');
- expect(splitRes[1]).to.equal(`${sortedMembers[0]._id},${sortedMembers[0].profile.name},habit:Task 1,0,,todo:Task 2,0,`);
- expect(splitRes[2]).to.equal(`${sortedMembers[1]._id},${sortedMembers[1].profile.name},habit:Task 1,0,,todo:Task 2,0,`);
- expect(splitRes[3]).to.equal(`${sortedMembers[2]._id},${sortedMembers[2].profile.name},habit:Task 1,0,,todo:Task 2,0,`);
- expect(splitRes[4]).to.equal(`${sortedMembers[3]._id},${sortedMembers[3].profile.name},habit:Task 1,0,,todo:Task 2,0,`);
+ expect(splitRes[0]).to.equal('UUID,name,Task,Value,Notes,Streak,Task,Value,Notes,Streak');
+ expect(splitRes[1]).to.equal(`${sortedMembers[0]._id},${sortedMembers[0].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`);
+ expect(splitRes[2]).to.equal(`${sortedMembers[1]._id},${sortedMembers[1].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`);
+ expect(splitRes[3]).to.equal(`${sortedMembers[2]._id},${sortedMembers[2].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`);
+ expect(splitRes[4]).to.equal(`${sortedMembers[3]._id},${sortedMembers[3].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`);
expect(splitRes[5]).to.equal('');
});
});
diff --git a/test/api/v3/integration/challenges/POST-challenges_challengeId_join.test.js b/test/api/v3/integration/challenges/POST-challenges_challengeId_join.test.js
index 29c312807d0..1f7ef43d6b9 100644
--- a/test/api/v3/integration/challenges/POST-challenges_challengeId_join.test.js
+++ b/test/api/v3/integration/challenges/POST-challenges_challengeId_join.test.js
@@ -101,19 +101,21 @@ describe('POST /challenges/:challengeId/join', () => {
});
it('syncs challenge tasks to joining user', async () => {
- let taskText = 'A challenge task text';
-
+ const taskText = 'A challenge task text';
await groupLeader.post(`/tasks/challenge/${challenge._id}`, [
- {type: 'habit', text: taskText},
+ {type: 'daily', text: taskText},
]);
await authorizedUser.post(`/challenges/${challenge._id}/join`);
- let tasks = await authorizedUser.get('/tasks/user');
- let tasksTexts = tasks.map((task) => {
- return task.text;
+
+ const tasks = await authorizedUser.get('/tasks/user');
+ const syncedTask = tasks.find((task) => {
+ return task.text === taskText;
});
- expect(tasksTexts).to.include(taskText);
+ expect(syncedTask.text).to.eql(taskText);
+ expect(syncedTask.isDue).to.exist;
+ expect(syncedTask.nextDue).to.exist;
});
it('adds challenge tag to user tags', async () => {
diff --git a/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js b/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js
index f25a6c669f4..e0dc561c668 100644
--- a/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js
+++ b/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js
@@ -149,13 +149,19 @@ describe('POST /challenges/:challengeId/winner/:winnerId', () => {
await sleep(0.5);
- let tasks = await winningUser.get('/tasks/user');
- let testTask = _.find(tasks, (task) => {
+ const tasks = await winningUser.get('/tasks/user');
+ const testTask = _.find(tasks, (task) => {
return task.text === taskText;
});
+ const updatedUser = await winningUser.sync();
+ const challengeTag = updatedUser.tags.find(tags => {
+ return tags.id === challenge._id;
+ });
+
expect(testTask.challenge.broken).to.eql('CHALLENGE_CLOSED');
expect(testTask.challenge.winner).to.eql(winningUser.profile.name);
+ expect(challengeTag.challenge).to.eql('false');
});
});
});
diff --git a/test/api/v3/integration/chat/POST-chat.test.js b/test/api/v3/integration/chat/POST-chat.test.js
index 6f8355aa557..9255772ad22 100644
--- a/test/api/v3/integration/chat/POST-chat.test.js
+++ b/test/api/v3/integration/chat/POST-chat.test.js
@@ -1,5 +1,6 @@
import {
createAndPopulateGroup,
+ generateUser,
translate as t,
sleep,
server,
@@ -363,6 +364,24 @@ describe('POST /chat', () => {
expect(message.message.id).to.exist;
});
+ it('adds backer info to chat', async () => {
+ const backerInfo = {
+ npc: 'Town Crier',
+ tier: 800,
+ tokensApplied: true,
+ };
+ const backer = await generateUser({
+ backer: backerInfo,
+ });
+
+ const message = await backer.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
+ const messageBackerInfo = message.message.backer;
+
+ expect(messageBackerInfo.npc).to.equal(backerInfo.npc);
+ expect(messageBackerInfo.tier).to.equal(backerInfo.tier);
+ expect(messageBackerInfo.tokensApplied).to.equal(backerInfo.tokensApplied);
+ });
+
it('sends group chat received webhooks', async () => {
let userUuid = generateUUID();
let memberUuid = generateUUID();
diff --git a/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js b/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js
index b3d410675a8..35a2878847a 100644
--- a/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js
+++ b/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js
@@ -3,6 +3,7 @@ import {
generateUser,
translate as t,
} from '../../../../helpers/api-v3-integration.helper';
+import config from '../../../../../config.json';
import { v4 as generateUUID } from 'uuid';
describe('POST /groups/:id/chat/:id/clearflags', () => {
@@ -74,7 +75,7 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
expect(messages[0].flagCount).to.eql(0);
});
- it('can unflag a system message', async () => {
+ it('can\'t flag a system message', async () => {
let { group, members } = await createAndPopulateGroup({
groupDetails: {
type: 'party',
@@ -95,13 +96,15 @@ describe('POST /groups/:id/chat/:id/clearflags', () => {
await member.post('/user/class/cast/mpheal');
let [skillMsg] = await member.get(`/groups/${group.id}/chat`);
-
- await member.post(`/groups/${group._id}/chat/${skillMsg.id}/flag`);
- await admin.post(`/groups/${group._id}/chat/${skillMsg.id}/clearflags`);
-
- let messages = await members[0].get(`/groups/${group._id}/chat`);
- expect(messages[0].id).to.eql(skillMsg.id);
- expect(messages[0].flagCount).to.eql(0);
+ await expect(member.post(`/groups/${group._id}/chat/${skillMsg.id}/flag`))
+ .to.eventually.be.rejected.and.eql({
+ code: 400,
+ error: 'BadRequest',
+ message: t('messageCannotFlagSystemMessages', {communityManagerEmail: config.EMAILS.COMMUNITY_MANAGER_EMAIL}),
+ });
+ // let messages = await members[0].get(`/groups/${group._id}/chat`);
+ // expect(messages[0].id).to.eql(skillMsg.id);
+ // expect(messages[0].flagCount).to.eql(0);
});
});
diff --git a/test/api/v3/integration/coupons/GET-coupons.test.js b/test/api/v3/integration/coupons/GET-coupons.test.js
index 6008d2b1df7..fd61ac1a983 100644
--- a/test/api/v3/integration/coupons/GET-coupons.test.js
+++ b/test/api/v3/integration/coupons/GET-coupons.test.js
@@ -1,8 +1,8 @@
import {
generateUser,
- translate as t,
resetHabiticaDB,
} from '../../../../helpers/api-v3-integration.helper';
+import apiMessages from '../../../../../website/server/libs/apiMessages';
describe('GET /coupons/', () => {
let user;
@@ -19,7 +19,7 @@ describe('GET /coupons/', () => {
await expect(user.get('/coupons')).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
- message: t('noSudoAccess'),
+ message: apiMessages('noSudoAccess'),
});
});
diff --git a/test/api/v3/integration/coupons/POST-coupons_generate_event.test.js b/test/api/v3/integration/coupons/POST-coupons_generate_event.test.js
index 09e4c763919..12730c8296f 100644
--- a/test/api/v3/integration/coupons/POST-coupons_generate_event.test.js
+++ b/test/api/v3/integration/coupons/POST-coupons_generate_event.test.js
@@ -4,6 +4,7 @@ import {
resetHabiticaDB,
} from '../../../../helpers/api-v3-integration.helper';
import couponCode from 'coupon-code';
+import apiMessages from '../../../../../website/server/libs/apiMessages';
describe('POST /coupons/generate/:event', () => {
let user;
@@ -25,7 +26,7 @@ describe('POST /coupons/generate/:event', () => {
await expect(user.post('/coupons/generate/aaa')).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
- message: t('noSudoAccess'),
+ message: apiMessages('noSudoAccess'),
});
});
diff --git a/test/api/v3/integration/groups/GET-groups_groupId_members.test.js b/test/api/v3/integration/groups/GET-groups_groupId_members.test.js
index e74c6acfa6e..863a80c98db 100644
--- a/test/api/v3/integration/groups/GET-groups_groupId_members.test.js
+++ b/test/api/v3/integration/groups/GET-groups_groupId_members.test.js
@@ -72,7 +72,7 @@ describe('GET /groups/:groupId/members', () => {
expect(memberRes).to.have.all.keys([ // works as: object has all and only these keys
'_id', 'id', 'preferences', 'profile', 'stats', 'achievements', 'party',
- 'backer', 'contributor', 'auth', 'items', 'inbox',
+ 'backer', 'contributor', 'auth', 'items', 'inbox', 'loginIncentives',
]);
expect(Object.keys(memberRes.auth)).to.eql(['timestamps']);
expect(Object.keys(memberRes.preferences).sort()).to.eql([
@@ -93,7 +93,7 @@ describe('GET /groups/:groupId/members', () => {
expect(memberRes).to.have.all.keys([ // works as: object has all and only these keys
'_id', 'id', 'preferences', 'profile', 'stats', 'achievements', 'party',
- 'backer', 'contributor', 'auth', 'items', 'inbox',
+ 'backer', 'contributor', 'auth', 'items', 'inbox', 'loginIncentives',
]);
expect(Object.keys(memberRes.auth)).to.eql(['timestamps']);
expect(Object.keys(memberRes.preferences).sort()).to.eql([
@@ -161,4 +161,19 @@ describe('GET /groups/:groupId/members', () => {
let resIds = res.concat(res2).map(member => member._id);
expect(resIds).to.eql(expectedIds.sort());
});
+
+ it('searches members', async () => {
+ let group = await generateGroup(user, {type: 'party', name: generateUUID()});
+
+ let usersToGenerate = [];
+ for (let i = 0; i < 2; i++) {
+ usersToGenerate.push(generateUser({party: {_id: group._id}}));
+ }
+ const usersCreated = await Promise.all(usersToGenerate);
+ const userToSearch = usersCreated[0].profile.name;
+
+ let res = await user.get(`/groups/party/members?search=${userToSearch}`);
+ expect(res.length).to.equal(1);
+ expect(res[0].profile.name).to.equal(userToSearch);
+ });
});
diff --git a/test/api/v3/integration/members/GET-members_id.test.js b/test/api/v3/integration/members/GET-members_id.test.js
index fa34fac096a..15e3fa9f56e 100644
--- a/test/api/v3/integration/members/GET-members_id.test.js
+++ b/test/api/v3/integration/members/GET-members_id.test.js
@@ -32,7 +32,7 @@ describe('GET /members/:memberId', () => {
let memberRes = await user.get(`/members/${member._id}`);
expect(memberRes).to.have.all.keys([ // works as: object has all and only these keys
'_id', 'id', 'preferences', 'profile', 'stats', 'achievements', 'party',
- 'backer', 'contributor', 'auth', 'items', 'inbox',
+ 'backer', 'contributor', 'auth', 'items', 'inbox', 'loginIncentives',
]);
expect(Object.keys(memberRes.auth)).to.eql(['timestamps']);
expect(Object.keys(memberRes.preferences).sort()).to.eql([
diff --git a/test/api/v3/integration/members/POST-send_private_message.test.js b/test/api/v3/integration/members/POST-send_private_message.test.js
index 7498d2e560c..aaa3cb3a2c9 100644
--- a/test/api/v3/integration/members/POST-send_private_message.test.js
+++ b/test/api/v3/integration/members/POST-send_private_message.test.js
@@ -118,4 +118,56 @@ describe('POST /members/send-private-message', () => {
expect(sendersMessageInReceiversInbox).to.exist;
expect(sendersMessageInSendersInbox).to.exist;
});
+
+ it('allows admin to send when sender has blocked the admin', async () => {
+ userToSendMessage = await generateUser({
+ 'contributor.admin': 1,
+ });
+ const receiver = await generateUser({'inbox.blocks': [userToSendMessage._id]});
+
+ await userToSendMessage.post('/members/send-private-message', {
+ message: messageToSend,
+ toUserId: receiver._id,
+ });
+
+ const updatedReceiver = await receiver.get('/user');
+ const updatedSender = await userToSendMessage.get('/user');
+
+ const sendersMessageInReceiversInbox = _.find(updatedReceiver.inbox.messages, (message) => {
+ return message.uuid === userToSendMessage._id && message.text === messageToSend;
+ });
+
+ const sendersMessageInSendersInbox = _.find(updatedSender.inbox.messages, (message) => {
+ return message.uuid === receiver._id && message.text === messageToSend;
+ });
+
+ expect(sendersMessageInReceiversInbox).to.exist;
+ expect(sendersMessageInSendersInbox).to.exist;
+ });
+
+ it('allows admin to send when to user has opted out of messaging', async () => {
+ userToSendMessage = await generateUser({
+ 'contributor.admin': 1,
+ });
+ const receiver = await generateUser({'inbox.optOut': true});
+
+ await userToSendMessage.post('/members/send-private-message', {
+ message: messageToSend,
+ toUserId: receiver._id,
+ });
+
+ const updatedReceiver = await receiver.get('/user');
+ const updatedSender = await userToSendMessage.get('/user');
+
+ const sendersMessageInReceiversInbox = _.find(updatedReceiver.inbox.messages, (message) => {
+ return message.uuid === userToSendMessage._id && message.text === messageToSend;
+ });
+
+ const sendersMessageInSendersInbox = _.find(updatedSender.inbox.messages, (message) => {
+ return message.uuid === receiver._id && message.text === messageToSend;
+ });
+
+ expect(sendersMessageInReceiversInbox).to.exist;
+ expect(sendersMessageInSendersInbox).to.exist;
+ });
});
diff --git a/test/api/v3/integration/tasks/POST-tasks_id_score_direction.test.js b/test/api/v3/integration/tasks/POST-tasks_id_score_direction.test.js
index 1baa24042e9..fa435c5e316 100644
--- a/test/api/v3/integration/tasks/POST-tasks_id_score_direction.test.js
+++ b/test/api/v3/integration/tasks/POST-tasks_id_score_direction.test.js
@@ -130,6 +130,7 @@ describe('POST /tasks/:id/score/:direction', () => {
});
it('uncompletes todo when direction is down', async () => {
+ await user.post(`/tasks/${todo._id}/score/up`);
await user.post(`/tasks/${todo._id}/score/down`);
let updatedTask = await user.get(`/tasks/${todo._id}`);
@@ -137,9 +138,23 @@ describe('POST /tasks/:id/score/:direction', () => {
expect(updatedTask.dateCompleted).to.be.a('undefined');
});
- it('scores up todo even if it is already completed'); // Yes?
+ it('doesn\'t let a todo be completed twice', async () => {
+ await user.post(`/tasks/${todo._id}/score/up`);
+ await expect(user.post(`/tasks/${todo._id}/score/up`))
+ .to.eventually.be.rejected.and.eql({
+ code: 401,
+ error: 'NotAuthorized',
+ message: t('sessionOutdated'),
+ });
+ });
- it('scores down todo even if it is already uncompleted'); // Yes?
+ it('doesn\'t let a todo be uncompleted twice', async () => {
+ await expect(user.post(`/tasks/${todo._id}/score/down`)).to.eventually.be.rejected.and.eql({
+ code: 401,
+ error: 'NotAuthorized',
+ message: t('sessionOutdated'),
+ });
+ });
context('user stats when direction is up', () => {
let updatedUser;
@@ -163,23 +178,25 @@ describe('POST /tasks/:id/score/:direction', () => {
});
context('user stats when direction is down', () => {
- let updatedUser;
+ let updatedUser, initialUser;
beforeEach(async () => {
+ await user.post(`/tasks/${todo._id}/score/up`);
+ initialUser = await user.get('/user');
await user.post(`/tasks/${todo._id}/score/down`);
updatedUser = await user.get('/user');
});
it('decreases user\'s mp', () => {
- expect(updatedUser.stats.mp).to.be.lessThan(user.stats.mp);
+ expect(updatedUser.stats.mp).to.be.lessThan(initialUser.stats.mp);
});
it('decreases user\'s exp', () => {
- expect(updatedUser.stats.exp).to.be.lessThan(user.stats.exp);
+ expect(updatedUser.stats.exp).to.be.lessThan(initialUser.stats.exp);
});
it('decreases user\'s gold', () => {
- expect(updatedUser.stats.gp).to.be.lessThan(user.stats.gp);
+ expect(updatedUser.stats.gp).to.be.lessThan(initialUser.stats.gp);
});
});
});
@@ -202,6 +219,7 @@ describe('POST /tasks/:id/score/:direction', () => {
});
it('uncompletes daily when direction is down', async () => {
+ await user.post(`/tasks/${daily._id}/score/up`);
await user.post(`/tasks/${daily._id}/score/down`);
let task = await user.get(`/tasks/${daily._id}`);
@@ -222,9 +240,22 @@ describe('POST /tasks/:id/score/:direction', () => {
expect(task.nextDue.length).to.eql(6);
});
- it('scores up daily even if it is already completed'); // Yes?
+ it('doesn\'t let a daily be completed twice', async () => {
+ await user.post(`/tasks/${daily._id}/score/up`);
+ await expect(user.post(`/tasks/${daily._id}/score/up`)).to.eventually.be.rejected.and.eql({
+ code: 401,
+ error: 'NotAuthorized',
+ message: t('sessionOutdated'),
+ });
+ });
- it('scores down daily even if it is already uncompleted'); // Yes?
+ it('doesn\'t let a daily be uncompleted twice', async () => {
+ await expect(user.post(`/tasks/${daily._id}/score/down`)).to.eventually.be.rejected.and.eql({
+ code: 401,
+ error: 'NotAuthorized',
+ message: t('sessionOutdated'),
+ });
+ });
context('user stats when direction is up', () => {
let updatedUser;
@@ -248,23 +279,25 @@ describe('POST /tasks/:id/score/:direction', () => {
});
context('user stats when direction is down', () => {
- let updatedUser;
+ let updatedUser, initialUser;
beforeEach(async () => {
+ await user.post(`/tasks/${daily._id}/score/up`);
+ initialUser = await user.get('/user');
await user.post(`/tasks/${daily._id}/score/down`);
updatedUser = await user.get('/user');
});
it('decreases user\'s mp', () => {
- expect(updatedUser.stats.mp).to.be.lessThan(user.stats.mp);
+ expect(updatedUser.stats.mp).to.be.lessThan(initialUser.stats.mp);
});
it('decreases user\'s exp', () => {
- expect(updatedUser.stats.exp).to.be.lessThan(user.stats.exp);
+ expect(updatedUser.stats.exp).to.be.lessThan(initialUser.stats.exp);
});
it('decreases user\'s gold', () => {
- expect(updatedUser.stats.gp).to.be.lessThan(user.stats.gp);
+ expect(updatedUser.stats.gp).to.be.lessThan(initialUser.stats.gp);
});
});
});
diff --git a/test/api/v3/integration/tasks/POST-tasks_user.test.js b/test/api/v3/integration/tasks/POST-tasks_user.test.js
index 729619037b7..29469f78dfc 100644
--- a/test/api/v3/integration/tasks/POST-tasks_user.test.js
+++ b/test/api/v3/integration/tasks/POST-tasks_user.test.js
@@ -302,6 +302,17 @@ describe('POST /tasks/user', () => {
expect(task.alias).to.eql('a_alias012');
});
+
+ // This is a special case for iOS requests
+ it('will round a priority (difficulty)', async () => {
+ let task = await user.post('/tasks/user', {
+ text: 'test habit',
+ type: 'habit',
+ priority: 0.10000000000005,
+ });
+
+ expect(task.priority).to.eql(0.1);
+ });
});
context('habits', () => {
@@ -628,6 +639,43 @@ describe('POST /tasks/user', () => {
});
});
+ it('returns an error if everyX is a non int', async () => {
+ await expect(user.post('/tasks/user', {
+ text: 'test daily',
+ type: 'daily',
+ everyX: 2.5,
+ })).to.eventually.be.rejected.and.eql({
+ code: 400,
+ error: 'BadRequest',
+ message: 'daily validation failed',
+ });
+ });
+
+ it('returns an error if everyX is negative', async () => {
+ await expect(user.post('/tasks/user', {
+ text: 'test daily',
+ type: 'daily',
+ everyX: -1,
+ })).to.eventually.be.rejected.and.eql({
+ code: 400,
+ error: 'BadRequest',
+ message: 'daily validation failed',
+ });
+ });
+
+ it('returns an error if everyX is above 9999', async () => {
+ await expect(user.post('/tasks/user', {
+ text: 'test daily',
+ type: 'daily',
+ everyX: 10000,
+ })).to.eventually.be.rejected.and.eql({
+ code: 400,
+ error: 'BadRequest',
+ message: 'daily validation failed',
+ });
+ });
+
+
it('can create checklists', async () => {
let task = await user.post('/tasks/user', {
text: 'test daily',
diff --git a/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js b/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js
index 0fa8bafd30c..e02e6dd2fe6 100644
--- a/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js
+++ b/test/api/v3/integration/tasks/challenges/POST-tasks_challenges_challengeId_tasks_id_score_direction.test.js
@@ -82,6 +82,13 @@ describe('POST /tasks/:id/score/:direction', () => {
});
it('should update the history', async () => {
+ let newCron = new Date(2015, 11, 20);
+
+ await user.post('/debug/set-cron', {
+ lastCron: newCron,
+ });
+
+ await user.post('/cron');
await user.post(`/tasks/${usersChallengeTaskId}/score/up`);
let tasks = await user.get(`/tasks/challenge/${challenge._id}`);
diff --git a/test/api/v3/integration/tasks/groups/POST-group_tasks_id_score_direction.test.js b/test/api/v3/integration/tasks/groups/POST-group_tasks_id_score_direction.test.js
index a707e445a25..d50841d3bc2 100644
--- a/test/api/v3/integration/tasks/groups/POST-group_tasks_id_score_direction.test.js
+++ b/test/api/v3/integration/tasks/groups/POST-group_tasks_id_score_direction.test.js
@@ -41,8 +41,9 @@ describe('POST /tasks/:id/score/:direction', () => {
let memberTasks = await member.get('/tasks/user');
let syncedTask = find(memberTasks, findAssignedTask);
+ const direction = 'up';
- await expect(member.post(`/tasks/${syncedTask._id}/score/up`))
+ await expect(member.post(`/tasks/${syncedTask._id}/score/${direction}`))
.to.eventually.be.rejected.and.to.eql({
code: 401,
error: 'NotAuthorized',
@@ -58,6 +59,7 @@ describe('POST /tasks/:id/score/:direction', () => {
user: member.auth.local.username,
taskName: updatedTask.text,
taskId: updatedTask._id,
+ direction,
}, 'cs')); // This test only works if we have the notification translated
expect(user.notifications[1].data.groupId).to.equal(guild._id);
@@ -71,8 +73,9 @@ describe('POST /tasks/:id/score/:direction', () => {
});
let memberTasks = await member.get('/tasks/user');
let syncedTask = find(memberTasks, findAssignedTask);
+ const direction = 'up';
- await expect(member.post(`/tasks/${syncedTask._id}/score/up`))
+ await expect(member.post(`/tasks/${syncedTask._id}/score/${direction}`))
.to.eventually.be.rejected.and.to.eql({
code: 401,
error: 'NotAuthorized',
@@ -88,6 +91,7 @@ describe('POST /tasks/:id/score/:direction', () => {
user: member.auth.local.username,
taskName: updatedTask.text,
taskId: updatedTask._id,
+ direction,
}));
expect(user.notifications[1].data.groupId).to.equal(guild._id);
@@ -97,6 +101,7 @@ describe('POST /tasks/:id/score/:direction', () => {
user: member.auth.local.username,
taskName: updatedTask.text,
taskId: updatedTask._id,
+ direction,
}));
expect(member2.notifications[0].data.groupId).to.equal(guild._id);
});
diff --git a/test/api/v3/integration/tasks/groups/POST-tasks_task_id_unassign.test.js b/test/api/v3/integration/tasks/groups/POST-tasks_task_id_unassign.test.js
index 50bcd46b1f9..1605819ec66 100644
--- a/test/api/v3/integration/tasks/groups/POST-tasks_task_id_unassign.test.js
+++ b/test/api/v3/integration/tasks/groups/POST-tasks_task_id_unassign.test.js
@@ -75,15 +75,6 @@ describe('POST /tasks/:taskId/unassign/:memberId', () => {
});
});
- it('returns error when non leader tries to create a task', async () => {
- await expect(member.post(`/tasks/${task._id}/unassign/${member._id}`))
- .to.eventually.be.rejected.and.eql({
- code: 401,
- error: 'NotAuthorized',
- message: t('onlyGroupLeaderCanEditTasks'),
- });
- });
-
it('unassigns a user from a task', async () => {
await user.post(`/tasks/${task._id}/unassign/${member._id}`);
@@ -129,4 +120,26 @@ describe('POST /tasks/:taskId/unassign/:memberId', () => {
expect(groupTask[0].group.assignedUsers).to.not.contain(member._id);
expect(syncedTask).to.not.exist;
});
+
+ it('allows a user to unassign themselves', async () => {
+ await member.post(`/tasks/${task._id}/unassign/${member._id}`);
+
+ let groupTask = await user.get(`/tasks/group/${guild._id}`);
+ let memberTasks = await member.get('/tasks/user');
+ let syncedTask = find(memberTasks, findAssignedTask);
+
+ expect(groupTask[0].group.assignedUsers).to.not.contain(member._id);
+ expect(syncedTask).to.not.exist;
+ });
+
+ // @TODO: Which do we want? The user to unassign themselves or not. This test was in
+ // here, but then we had a request to allow to unaissgn.
+ xit('returns error when non leader tries to unassign their a task', async () => {
+ await expect(member.post(`/tasks/${task._id}/unassign/${member._id}`))
+ .to.eventually.be.rejected.and.eql({
+ code: 401,
+ error: 'NotAuthorized',
+ message: t('onlyGroupLeaderCanEditTasks'),
+ });
+ });
});
diff --git a/test/api/v3/integration/user/DELETE-user.test.js b/test/api/v3/integration/user/DELETE-user.test.js
index a9def6c902d..d11fa679aec 100644
--- a/test/api/v3/integration/user/DELETE-user.test.js
+++ b/test/api/v3/integration/user/DELETE-user.test.js
@@ -308,7 +308,7 @@ describe('DELETE /user', () => {
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
- message: t('incorrectDeletePhrase'),
+ message: t('incorrectDeletePhrase', {magicWord: 'DELETE'}),
});
});
diff --git a/test/api/v3/integration/user/GET-user.test.js b/test/api/v3/integration/user/GET-user.test.js
index f828d4fbb2c..555672b079d 100644
--- a/test/api/v3/integration/user/GET-user.test.js
+++ b/test/api/v3/integration/user/GET-user.test.js
@@ -27,4 +27,13 @@ describe('GET /user', () => {
expect(returnedUser.auth.local.salt).to.not.exist;
expect(returnedUser.apiToken).to.not.exist;
});
+
+ it('returns only user properties requested', async () => {
+ let returnedUser = await user.get('/user?userFields=achievements,items.mounts');
+
+ expect(returnedUser._id).to.equal(user._id);
+ expect(returnedUser.achievements).to.exist;
+ expect(returnedUser.items.mounts).to.exist;
+ expect(returnedUser.stats).to.not.exist;
+ });
});
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 258cdc5de3e..046009d9972 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
@@ -37,6 +37,22 @@ describe('POST /user/auth/local/register', () => {
expect(user.newUser).to.eql(true);
});
+ it('remove spaces from username', async () => {
+ let username = ' usernamewithspaces ';
+ let email = 'test@example.com';
+ let password = 'password';
+
+ let user = await api.post('/user/auth/local/register', {
+ username,
+ email,
+ password,
+ confirmPassword: password,
+ });
+
+ expect(user.auth.local.username).to.eql(username.trim());
+ expect(user.profile.name).to.eql(username.trim());
+ });
+
context('provides default tags and tasks', async () => {
it('for a generic API consumer', async () => {
let username = generateRandomUserName();
diff --git a/test/api/v3/integration/user/buy/POST-user_buy_gear.test.js b/test/api/v3/integration/user/buy/POST-user_buy_gear.test.js
index 6056e2fbdfc..d3992ed1fef 100644
--- a/test/api/v3/integration/user/buy/POST-user_buy_gear.test.js
+++ b/test/api/v3/integration/user/buy/POST-user_buy_gear.test.js
@@ -25,12 +25,32 @@ describe('POST /user/buy-gear/:key', () => {
});
});
- it('buys a piece of gear', async () => {
+ it('buys the first level weapon gear', async () => {
+ let key = 'weapon_warrior_0';
+
+ await user.post(`/user/buy-gear/${key}`);
+ await user.sync();
+
+ expect(user.items.gear.owned[key]).to.eql(true);
+ });
+
+ it('buys the first level armor gear', async () => {
let key = 'armor_warrior_1';
await user.post(`/user/buy-gear/${key}`);
await user.sync();
- expect(user.items.gear.owned.armor_warrior_1).to.eql(true);
+ expect(user.items.gear.owned[key]).to.eql(true);
+ });
+
+ it('tries to buy subsequent, level gear', async () => {
+ let key = 'armor_warrior_2';
+
+ return expect(user.post(`/user/buy-gear/${key}`))
+ .to.eventually.be.rejected.and.eql({
+ code: 401,
+ error: 'NotAuthorized',
+ message: 'You need to purchase a lower level gear before this one.',
+ });
});
});
diff --git a/test/api/v3/unit/libs/amazonPayments.test.js b/test/api/v3/unit/libs/amazonPayments.test.js
deleted file mode 100644
index 757511121a7..00000000000
--- a/test/api/v3/unit/libs/amazonPayments.test.js
+++ /dev/null
@@ -1,739 +0,0 @@
-import moment from 'moment';
-import cc from 'coupon-code';
-import uuid from 'uuid';
-
-import {
- generateGroup,
-} from '../../../../helpers/api-unit.helper.js';
-import { model as User } from '../../../../../website/server/models/user';
-import { model as Group } from '../../../../../website/server/models/group';
-import { model as Coupon } from '../../../../../website/server/models/coupon';
-import amzLib from '../../../../../website/server/libs/amazonPayments';
-import payments from '../../../../../website/server/libs/payments';
-import common from '../../../../../website/common';
-
-const i18n = common.i18n;
-
-describe('Amazon Payments', () => {
- let subKey = 'basic_3mo';
-
- describe('checkout', () => {
- let user, orderReferenceId, headers;
- let setOrderReferenceDetailsSpy;
- let confirmOrderReferenceSpy;
- let authorizeSpy;
- let closeOrderReferenceSpy;
-
- let paymentBuyGemsStub;
- let paymentCreateSubscritionStub;
- let amount = 5;
-
- function expectAmazonStubs () {
- expect(setOrderReferenceDetailsSpy).to.be.calledOnce;
- expect(setOrderReferenceDetailsSpy).to.be.calledWith({
- AmazonOrderReferenceId: orderReferenceId,
- OrderReferenceAttributes: {
- OrderTotal: {
- CurrencyCode: amzLib.constants.CURRENCY_CODE,
- Amount: amount,
- },
- SellerNote: amzLib.constants.SELLER_NOTE,
- SellerOrderAttributes: {
- SellerOrderId: common.uuid(),
- StoreName: amzLib.constants.STORE_NAME,
- },
- },
- });
-
- expect(confirmOrderReferenceSpy).to.be.calledOnce;
- expect(confirmOrderReferenceSpy).to.be.calledWith({ AmazonOrderReferenceId: orderReferenceId });
-
- expect(authorizeSpy).to.be.calledOnce;
- expect(authorizeSpy).to.be.calledWith({
- AmazonOrderReferenceId: orderReferenceId,
- AuthorizationReferenceId: common.uuid().substring(0, 32),
- AuthorizationAmount: {
- CurrencyCode: amzLib.constants.CURRENCY_CODE,
- Amount: amount,
- },
- SellerAuthorizationNote: amzLib.constants.SELLER_NOTE,
- TransactionTimeout: 0,
- CaptureNow: true,
- });
-
- expect(closeOrderReferenceSpy).to.be.calledOnce;
- expect(closeOrderReferenceSpy).to.be.calledWith({ AmazonOrderReferenceId: orderReferenceId });
- }
-
- beforeEach(function () {
- user = new User();
- headers = {};
- orderReferenceId = 'orderReferenceId';
-
- setOrderReferenceDetailsSpy = sinon.stub(amzLib, 'setOrderReferenceDetails');
- setOrderReferenceDetailsSpy.returnsPromise().resolves({});
-
- confirmOrderReferenceSpy = sinon.stub(amzLib, 'confirmOrderReference');
- confirmOrderReferenceSpy.returnsPromise().resolves({});
-
- authorizeSpy = sinon.stub(amzLib, 'authorize');
- authorizeSpy.returnsPromise().resolves({});
-
- closeOrderReferenceSpy = sinon.stub(amzLib, 'closeOrderReference');
- closeOrderReferenceSpy.returnsPromise().resolves({});
-
- paymentBuyGemsStub = sinon.stub(payments, 'buyGems');
- paymentBuyGemsStub.returnsPromise().resolves({});
-
- paymentCreateSubscritionStub = sinon.stub(payments, 'createSubscription');
- paymentCreateSubscritionStub.returnsPromise().resolves({});
-
- sinon.stub(common, 'uuid').returns('uuid-generated');
- });
-
- afterEach(function () {
- amzLib.setOrderReferenceDetails.restore();
- amzLib.confirmOrderReference.restore();
- amzLib.authorize.restore();
- amzLib.closeOrderReference.restore();
- payments.buyGems.restore();
- payments.createSubscription.restore();
- common.uuid.restore();
- });
-
- it('should purchase gems', async () => {
- sinon.stub(user, 'canGetGems').returnsPromise().resolves(true);
- await amzLib.checkout({user, orderReferenceId, headers});
-
- expect(paymentBuyGemsStub).to.be.calledOnce;
- expect(paymentBuyGemsStub).to.be.calledWith({
- user,
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- headers,
- });
- expectAmazonStubs();
- expect(user.canGetGems).to.be.calledOnce;
- user.canGetGems.restore();
- });
-
- it('should error if gem amount is too low', async () => {
- let receivingUser = new User();
- receivingUser.save();
- let gift = {
- type: 'gems',
- gems: {
- amount: 0,
- uuid: receivingUser._id,
- },
- };
-
- await expect(amzLib.checkout({gift, user, orderReferenceId, headers}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- message: 'Amount must be at least 1.',
- name: 'BadRequest',
- });
- });
-
- it('should error if user cannot get gems gems', async () => {
- sinon.stub(user, 'canGetGems').returnsPromise().resolves(false);
- await expect(amzLib.checkout({user, orderReferenceId, headers})).to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- message: i18n.t('groupPolicyCannotGetGems'),
- name: 'NotAuthorized',
- });
- user.canGetGems.restore();
- });
-
- it('should gift gems', async () => {
- let receivingUser = new User();
- await receivingUser.save();
- let gift = {
- type: 'gems',
- uuid: receivingUser._id,
- gems: {
- amount: 16,
- },
- };
- amount = 16 / 4;
- await amzLib.checkout({gift, user, orderReferenceId, headers});
-
- expect(paymentBuyGemsStub).to.be.calledOnce;
- expect(paymentBuyGemsStub).to.be.calledWith({
- user,
- paymentMethod: amzLib.constants.PAYMENT_METHOD_GIFT,
- headers,
- gift,
- });
- expectAmazonStubs();
- });
-
- it('should gift a subscription', async () => {
- let receivingUser = new User();
- receivingUser.save();
- let gift = {
- type: 'subscription',
- subscription: {
- key: subKey,
- uuid: receivingUser._id,
- },
- };
- amount = common.content.subscriptionBlocks[subKey].price;
-
- await amzLib.checkout({user, orderReferenceId, headers, gift});
-
- gift.member = receivingUser;
- expect(paymentCreateSubscritionStub).to.be.calledOnce;
- expect(paymentCreateSubscritionStub).to.be.calledWith({
- user,
- paymentMethod: amzLib.constants.PAYMENT_METHOD_GIFT,
- headers,
- gift,
- });
- expectAmazonStubs();
- });
- });
-
- describe('subscribe', () => {
- let user, group, amount, billingAgreementId, sub, coupon, groupId, headers;
- let amazonSetBillingAgreementDetailsSpy;
- let amazonConfirmBillingAgreementSpy;
- let amazongAuthorizeOnBillingAgreementSpy;
- let createSubSpy;
-
- beforeEach(async () => {
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = 'customer-id';
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = 'customer-id';
- group.purchased.plan.planId = subKey;
- await group.save();
-
- amount = common.content.subscriptionBlocks[subKey].price;
- billingAgreementId = 'billingAgreementId';
- sub = {
- key: subKey,
- price: amount,
- };
- groupId = group._id;
- headers = {};
-
- amazonSetBillingAgreementDetailsSpy = sinon.stub(amzLib, 'setBillingAgreementDetails');
- amazonSetBillingAgreementDetailsSpy.returnsPromise().resolves({});
-
- amazonConfirmBillingAgreementSpy = sinon.stub(amzLib, 'confirmBillingAgreement');
- amazonConfirmBillingAgreementSpy.returnsPromise().resolves({});
-
- amazongAuthorizeOnBillingAgreementSpy = sinon.stub(amzLib, 'authorizeOnBillingAgreement');
- amazongAuthorizeOnBillingAgreementSpy.returnsPromise().resolves({});
-
- createSubSpy = sinon.stub(payments, 'createSubscription');
- createSubSpy.returnsPromise().resolves({});
-
- sinon.stub(common, 'uuid').returns('uuid-generated');
- });
-
- afterEach(function () {
- amzLib.setBillingAgreementDetails.restore();
- amzLib.confirmBillingAgreement.restore();
- amzLib.authorizeOnBillingAgreement.restore();
- payments.createSubscription.restore();
- common.uuid.restore();
- });
-
- it('should throw an error if we are missing a subscription', async () => {
- await expect(amzLib.subscribe({
- billingAgreementId,
- coupon,
- user,
- groupId,
- headers,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: i18n.t('missingSubscriptionCode'),
- });
- });
-
- it('should throw an error if we are missing a billingAgreementId', async () => {
- await expect(amzLib.subscribe({
- sub,
- coupon,
- user,
- groupId,
- headers,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: 'Missing req.body.billingAgreementId',
- });
- });
-
- it('should throw an error when coupon code is missing', async () => {
- sub.discount = 40;
-
- await expect(amzLib.subscribe({
- billingAgreementId,
- sub,
- coupon,
- user,
- groupId,
- headers,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: i18n.t('couponCodeRequired'),
- });
- });
-
- it('should throw an error when coupon code is invalid', async () => {
- sub.discount = 40;
- sub.key = 'google_6mo';
- coupon = 'example-coupon';
-
- let couponModel = new Coupon();
- couponModel.event = 'google_6mo';
- await couponModel.save();
-
- sinon.stub(cc, 'validate').returns('invalid');
-
- await expect(amzLib.subscribe({
- billingAgreementId,
- sub,
- coupon,
- user,
- groupId,
- headers,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('invalidCoupon'),
- });
- cc.validate.restore();
- });
-
- it('subscribes with amazon with a coupon', async () => {
- sub.discount = 40;
- sub.key = 'google_6mo';
- coupon = 'example-coupon';
-
- let couponModel = new Coupon();
- couponModel.event = 'google_6mo';
- let updatedCouponModel = await couponModel.save();
-
- sinon.stub(cc, 'validate').returns(updatedCouponModel._id);
-
- await amzLib.subscribe({
- billingAgreementId,
- sub,
- coupon,
- user,
- groupId,
- headers,
- });
-
- expect(createSubSpy).to.be.calledOnce;
- expect(createSubSpy).to.be.calledWith({
- user,
- customerId: billingAgreementId,
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- sub,
- headers,
- groupId,
- });
-
- cc.validate.restore();
- });
-
- it('subscribes with amazon', async () => {
- await amzLib.subscribe({
- billingAgreementId,
- sub,
- coupon,
- user,
- groupId,
- headers,
- });
-
- expect(amazonSetBillingAgreementDetailsSpy).to.be.calledOnce;
- expect(amazonSetBillingAgreementDetailsSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- BillingAgreementAttributes: {
- SellerNote: amzLib.constants.SELLER_NOTE_SUBSCRIPTION,
- SellerBillingAgreementAttributes: {
- SellerBillingAgreementId: common.uuid(),
- StoreName: amzLib.constants.STORE_NAME,
- CustomInformation: amzLib.constants.SELLER_NOTE_SUBSCRIPTION,
- },
- },
- });
-
- expect(amazonConfirmBillingAgreementSpy).to.be.calledOnce;
- expect(amazonConfirmBillingAgreementSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- });
-
- expect(amazongAuthorizeOnBillingAgreementSpy).to.be.calledOnce;
- expect(amazongAuthorizeOnBillingAgreementSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- AuthorizationReferenceId: common.uuid().substring(0, 32),
- AuthorizationAmount: {
- CurrencyCode: amzLib.constants.CURRENCY_CODE,
- Amount: amount,
- },
- SellerAuthorizationNote: amzLib.constants.SELLER_NOTE_ATHORIZATION_SUBSCRIPTION,
- TransactionTimeout: 0,
- CaptureNow: true,
- SellerNote: amzLib.constants.SELLER_NOTE_ATHORIZATION_SUBSCRIPTION,
- SellerOrderAttributes: {
- SellerOrderId: common.uuid(),
- StoreName: amzLib.constants.STORE_NAME,
- },
- });
-
- expect(createSubSpy).to.be.calledOnce;
- expect(createSubSpy).to.be.calledWith({
- user,
- customerId: billingAgreementId,
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- sub,
- headers,
- groupId,
- });
- });
-
- it('subscribes with amazon with price to existing users', async () => {
- user = new User();
- user.guilds.push(groupId);
- await user.save();
- group.memberCount = 2;
- await group.save();
- sub.key = 'group_monthly';
- sub.price = 9;
- amount = 12;
-
- await amzLib.subscribe({
- billingAgreementId,
- sub,
- coupon,
- user,
- groupId,
- headers,
- });
-
- expect(amazonSetBillingAgreementDetailsSpy).to.be.calledOnce;
- expect(amazonSetBillingAgreementDetailsSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- BillingAgreementAttributes: {
- SellerNote: amzLib.constants.SELLER_NOTE_SUBSCRIPTION,
- SellerBillingAgreementAttributes: {
- SellerBillingAgreementId: common.uuid(),
- StoreName: amzLib.constants.STORE_NAME,
- CustomInformation: amzLib.constants.SELLER_NOTE_SUBSCRIPTION,
- },
- },
- });
-
- expect(amazonConfirmBillingAgreementSpy).to.be.calledOnce;
- expect(amazonConfirmBillingAgreementSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- });
-
- expect(amazongAuthorizeOnBillingAgreementSpy).to.be.calledOnce;
- expect(amazongAuthorizeOnBillingAgreementSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- AuthorizationReferenceId: common.uuid().substring(0, 32),
- AuthorizationAmount: {
- CurrencyCode: amzLib.constants.CURRENCY_CODE,
- Amount: amount,
- },
- SellerAuthorizationNote: amzLib.constants.SELLER_NOTE_ATHORIZATION_SUBSCRIPTION,
- TransactionTimeout: 0,
- CaptureNow: true,
- SellerNote: amzLib.constants.SELLER_NOTE_ATHORIZATION_SUBSCRIPTION,
- SellerOrderAttributes: {
- SellerOrderId: common.uuid(),
- StoreName: amzLib.constants.STORE_NAME,
- },
- });
-
- expect(createSubSpy).to.be.calledOnce;
- expect(createSubSpy).to.be.calledWith({
- user,
- customerId: billingAgreementId,
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- sub,
- headers,
- groupId,
- });
- });
- });
-
- describe('cancelSubscription', () => {
- let user, group, headers, billingAgreementId, subscriptionBlock, subscriptionLength;
- let getBillingAgreementDetailsSpy;
- let paymentCancelSubscriptionSpy;
-
- function expectAmazonStubs () {
- expect(getBillingAgreementDetailsSpy).to.be.calledOnce;
- expect(getBillingAgreementDetailsSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- });
- }
-
- beforeEach(async () => {
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = 'customer-id';
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = 'customer-id';
- group.purchased.plan.planId = subKey;
- group.purchased.plan.lastBillingDate = new Date();
- await group.save();
-
- subscriptionBlock = common.content.subscriptionBlocks[subKey];
- subscriptionLength = subscriptionBlock.months * 30;
-
- headers = {};
-
- getBillingAgreementDetailsSpy = sinon.stub(amzLib, 'getBillingAgreementDetails');
- getBillingAgreementDetailsSpy.returnsPromise().resolves({
- BillingAgreementDetails: {
- BillingAgreementStatus: {State: 'Closed'},
- },
- });
-
- paymentCancelSubscriptionSpy = sinon.stub(payments, 'cancelSubscription');
- paymentCancelSubscriptionSpy.returnsPromise().resolves({});
- });
-
- afterEach(function () {
- amzLib.getBillingAgreementDetails.restore();
- payments.cancelSubscription.restore();
- });
-
- it('should throw an error if we are missing a subscription', async () => {
- user.purchased.plan.customerId = undefined;
-
- await expect(amzLib.cancelSubscription({user}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('missingSubscription'),
- });
- });
-
- it('should cancel a user subscription', async () => {
- billingAgreementId = user.purchased.plan.customerId;
-
- await amzLib.cancelSubscription({user, headers});
-
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({
- user,
- groupId: undefined,
- nextBill: moment(user.purchased.plan.lastBillingDate).add({ days: subscriptionLength }),
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- headers,
- cancellationReason: undefined,
- });
- expectAmazonStubs();
- });
-
- it('should close a user subscription if amazon not closed', async () => {
- amzLib.getBillingAgreementDetails.restore();
- getBillingAgreementDetailsSpy = sinon.stub(amzLib, 'getBillingAgreementDetails')
- .returnsPromise()
- .resolves({
- BillingAgreementDetails: {
- BillingAgreementStatus: {State: 'Open'},
- },
- });
- let closeBillingAgreementSpy = sinon.stub(amzLib, 'closeBillingAgreement').returnsPromise().resolves({});
- billingAgreementId = user.purchased.plan.customerId;
-
- await amzLib.cancelSubscription({user, headers});
-
- expectAmazonStubs();
- expect(closeBillingAgreementSpy).to.be.calledOnce;
- expect(closeBillingAgreementSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- });
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({
- user,
- groupId: undefined,
- nextBill: moment(user.purchased.plan.lastBillingDate).add({ days: subscriptionLength }),
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- headers,
- cancellationReason: undefined,
- });
- amzLib.closeBillingAgreement.restore();
- });
-
- it('should throw an error if group is not found', async () => {
- await expect(amzLib.cancelSubscription({user, groupId: 'fake-id'}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 404,
- name: 'NotFound',
- message: i18n.t('groupNotFound'),
- });
- });
-
- it('should throw an error if user is not group leader', async () => {
- let nonLeader = new User();
- nonLeader.guilds.push(group._id);
- await nonLeader.save();
-
- await expect(amzLib.cancelSubscription({user: nonLeader, groupId: group._id}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('onlyGroupLeaderCanManageSubscription'),
- });
- });
-
- it('should cancel a group subscription', async () => {
- billingAgreementId = group.purchased.plan.customerId;
-
- await amzLib.cancelSubscription({user, groupId: group._id, headers});
-
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({
- user,
- groupId: group._id,
- nextBill: moment(group.purchased.plan.lastBillingDate).add({ days: subscriptionLength }),
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- headers,
- cancellationReason: undefined,
- });
- expectAmazonStubs();
- });
-
- it('should close a group subscription if amazon not closed', async () => {
- amzLib.getBillingAgreementDetails.restore();
- getBillingAgreementDetailsSpy = sinon.stub(amzLib, 'getBillingAgreementDetails')
- .returnsPromise()
- .resolves({
- BillingAgreementDetails: {
- BillingAgreementStatus: {State: 'Open'},
- },
- });
- let closeBillingAgreementSpy = sinon.stub(amzLib, 'closeBillingAgreement').returnsPromise().resolves({});
- billingAgreementId = group.purchased.plan.customerId;
-
- await amzLib.cancelSubscription({user, groupId: group._id, headers});
-
- expectAmazonStubs();
- expect(closeBillingAgreementSpy).to.be.calledOnce;
- expect(closeBillingAgreementSpy).to.be.calledWith({
- AmazonBillingAgreementId: billingAgreementId,
- });
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({
- user,
- groupId: group._id,
- nextBill: moment(group.purchased.plan.lastBillingDate).add({ days: subscriptionLength }),
- paymentMethod: amzLib.constants.PAYMENT_METHOD,
- headers,
- cancellationReason: undefined,
- });
- amzLib.closeBillingAgreement.restore();
- });
- });
-
- describe('#upgradeGroupPlan', () => {
- let spy, data, user, group, uuidString;
-
- beforeEach(async function () {
- user = new User();
- user.profile.name = 'sender';
-
- data = {
- user,
- sub: {
- key: 'basic_3mo', // @TODO: Validate that this is group
- },
- customerId: 'customer-id',
- paymentMethod: 'Payment Method',
- headers: {
- 'x-client': 'habitica-web',
- 'user-agent': '',
- },
- };
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- await group.save();
-
- spy = sinon.stub(amzLib, 'authorizeOnBillingAgreement');
- spy.returnsPromise().resolves([]);
-
- uuidString = 'uuid-v4';
- sinon.stub(uuid, 'v4').returns(uuidString);
-
- data.groupId = group._id;
- data.sub.quantity = 3;
- });
-
- afterEach(function () {
- sinon.restore(amzLib.authorizeOnBillingAgreement);
- uuid.v4.restore();
- });
-
- it('charges for a new member', async () => {
- data.paymentMethod = amzLib.constants.PAYMENT_METHOD;
- await payments.createSubscription(data);
-
- let updatedGroup = await Group.findById(group._id).exec();
-
- updatedGroup.memberCount += 1;
- await updatedGroup.save();
-
- await amzLib.chargeForAdditionalGroupMember(updatedGroup);
-
- expect(spy.calledOnce).to.be.true;
- expect(spy).to.be.calledWith({
- AmazonBillingAgreementId: updatedGroup.purchased.plan.customerId,
- AuthorizationReferenceId: uuidString.substring(0, 32),
- AuthorizationAmount: {
- CurrencyCode: amzLib.constants.CURRENCY_CODE,
- Amount: 3,
- },
- SellerAuthorizationNote: amzLib.constants.SELLER_NOTE_GROUP_NEW_MEMBER,
- TransactionTimeout: 0,
- CaptureNow: true,
- SellerNote: amzLib.constants.SELLER_NOTE_GROUP_NEW_MEMBER,
- SellerOrderAttributes: {
- SellerOrderId: uuidString,
- StoreName: amzLib.constants.STORE_NAME,
- },
- });
- });
- });
-});
diff --git a/test/api/v3/unit/libs/payments.test.js b/test/api/v3/unit/libs/payments.test.js
index fbe82377ac4..7cb136698d2 100644
--- a/test/api/v3/unit/libs/payments.test.js
+++ b/test/api/v3/unit/libs/payments.test.js
@@ -153,6 +153,24 @@ describe('payments/index', () => {
expect(recipient.purchased.plan.dateUpdated).to.exist;
});
+ it('sets plan.dateUpdated if it did exist but the user has cancelled', async () => {
+ recipient.purchased.plan.dateUpdated = moment().subtract(1, 'days').toDate();
+ recipient.purchased.plan.dateTerminated = moment().subtract(1, 'days').toDate();
+ recipient.purchased.plan.customerId = 'testing';
+
+ await api.createSubscription(data);
+
+ expect(moment(recipient.purchased.plan.dateUpdated).date()).to.eql(moment().date());
+ });
+
+ it('sets plan.dateUpdated if it did exist but the user has a corrupt plan', async () => {
+ recipient.purchased.plan.dateUpdated = moment().subtract(1, 'days').toDate();
+
+ await api.createSubscription(data);
+
+ expect(moment(recipient.purchased.plan.dateUpdated).date()).to.eql(moment().date());
+ });
+
it('sets plan.dateCreated if it did not previously exist', async () => {
expect(recipient.purchased.plan.dateCreated).to.not.exist;
diff --git a/test/api/v3/unit/libs/payments/amazon/cancel.test.js b/test/api/v3/unit/libs/payments/amazon/cancel.test.js
new file mode 100644
index 00000000000..13e524f58f1
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/amazon/cancel.test.js
@@ -0,0 +1,180 @@
+import moment from 'moment';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import amzLib from '../../../../../../../website/server/libs/amazonPayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+import { createNonLeaderGroupMember } from '../paymentHelpers';
+
+const i18n = common.i18n;
+
+describe('Amazon Payments - Cancel Subscription', () => {
+ const subKey = 'basic_3mo';
+
+ let user, group, headers, billingAgreementId, subscriptionBlock, subscriptionLength;
+ let getBillingAgreementDetailsSpy;
+ let paymentCancelSubscriptionSpy;
+
+ function expectAmazonStubs () {
+ expect(getBillingAgreementDetailsSpy).to.be.calledOnce;
+ expect(getBillingAgreementDetailsSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ });
+ }
+
+ function expectAmazonCancelSubscriptionSpy (groupId, lastBillingDate) {
+ expect(paymentCancelSubscriptionSpy).to.be.calledWith({
+ user,
+ groupId,
+ nextBill: moment(lastBillingDate).add({ days: subscriptionLength }),
+ paymentMethod: amzLib.constants.PAYMENT_METHOD,
+ headers,
+ cancellationReason: undefined,
+ });
+ }
+
+ function expectAmazonCancelUserSubscriptionSpy () {
+ expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
+ expectAmazonCancelSubscriptionSpy(undefined, user.purchased.plan.lastBillingDate);
+ }
+
+ function expectAmazonCancelGroupSubscriptionSpy (groupId) {
+ expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
+ expectAmazonCancelSubscriptionSpy(groupId, group.purchased.plan.lastBillingDate);
+ }
+
+ function expectBillingAggreementDetailSpy () {
+ getBillingAgreementDetailsSpy = sinon.stub(amzLib, 'getBillingAgreementDetails')
+ .returnsPromise()
+ .resolves({
+ BillingAgreementDetails: {
+ BillingAgreementStatus: {State: 'Open'},
+ },
+ });
+ }
+
+ beforeEach(async () => {
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = 'customer-id';
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = 'customer-id';
+ group.purchased.plan.planId = subKey;
+ group.purchased.plan.lastBillingDate = new Date();
+ await group.save();
+
+ subscriptionBlock = common.content.subscriptionBlocks[subKey];
+ subscriptionLength = subscriptionBlock.months * 30;
+
+ headers = {};
+
+ getBillingAgreementDetailsSpy = sinon.stub(amzLib, 'getBillingAgreementDetails');
+ getBillingAgreementDetailsSpy.returnsPromise().resolves({
+ BillingAgreementDetails: {
+ BillingAgreementStatus: {State: 'Closed'},
+ },
+ });
+
+ paymentCancelSubscriptionSpy = sinon.stub(payments, 'cancelSubscription');
+ paymentCancelSubscriptionSpy.returnsPromise().resolves({});
+ });
+
+ afterEach(function () {
+ amzLib.getBillingAgreementDetails.restore();
+ payments.cancelSubscription.restore();
+ });
+
+ it('should throw an error if we are missing a subscription', async () => {
+ user.purchased.plan.customerId = undefined;
+
+ await expect(amzLib.cancelSubscription({user}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('missingSubscription'),
+ });
+ });
+
+ it('should cancel a user subscription', async () => {
+ billingAgreementId = user.purchased.plan.customerId;
+
+ await amzLib.cancelSubscription({user, headers});
+
+ expectAmazonCancelUserSubscriptionSpy();
+ expectAmazonStubs();
+ });
+
+ it('should close a user subscription if amazon not closed', async () => {
+ amzLib.getBillingAgreementDetails.restore();
+ expectBillingAggreementDetailSpy();
+ let closeBillingAgreementSpy = sinon.stub(amzLib, 'closeBillingAgreement').returnsPromise().resolves({});
+ billingAgreementId = user.purchased.plan.customerId;
+
+ await amzLib.cancelSubscription({user, headers});
+
+ expectAmazonStubs();
+ expect(closeBillingAgreementSpy).to.be.calledOnce;
+ expect(closeBillingAgreementSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ });
+ expectAmazonCancelUserSubscriptionSpy();
+ amzLib.closeBillingAgreement.restore();
+ });
+
+ it('should throw an error if group is not found', async () => {
+ await expect(amzLib.cancelSubscription({user, groupId: 'fake-id'}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 404,
+ name: 'NotFound',
+ message: i18n.t('groupNotFound'),
+ });
+ });
+
+ it('should throw an error if user is not group leader', async () => {
+ let nonLeader = await createNonLeaderGroupMember(group);
+
+ await expect(amzLib.cancelSubscription({user: nonLeader, groupId: group._id}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('onlyGroupLeaderCanManageSubscription'),
+ });
+ });
+
+ it('should cancel a group subscription', async () => {
+ billingAgreementId = group.purchased.plan.customerId;
+
+ await amzLib.cancelSubscription({user, groupId: group._id, headers});
+
+ expectAmazonCancelGroupSubscriptionSpy(group._id);
+ expectAmazonStubs();
+ });
+
+ it('should close a group subscription if amazon not closed', async () => {
+ amzLib.getBillingAgreementDetails.restore();
+ expectBillingAggreementDetailSpy();
+ let closeBillingAgreementSpy = sinon.stub(amzLib, 'closeBillingAgreement').returnsPromise().resolves({});
+ billingAgreementId = group.purchased.plan.customerId;
+
+ await amzLib.cancelSubscription({user, groupId: group._id, headers});
+
+ expectAmazonStubs();
+ expect(closeBillingAgreementSpy).to.be.calledOnce;
+ expect(closeBillingAgreementSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ });
+ expectAmazonCancelGroupSubscriptionSpy(group._id);
+ amzLib.closeBillingAgreement.restore();
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/amazon/checkout.test.js b/test/api/v3/unit/libs/payments/amazon/checkout.test.js
new file mode 100644
index 00000000000..9e74cdb145c
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/amazon/checkout.test.js
@@ -0,0 +1,193 @@
+import { model as User } from '../../../../../../../website/server/models/user';
+import amzLib from '../../../../../../../website/server/libs/amazonPayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('Amazon Payments - Checkout', () => {
+ const subKey = 'basic_3mo';
+ let user, orderReferenceId, headers;
+ let setOrderReferenceDetailsSpy;
+ let confirmOrderReferenceSpy;
+ let authorizeSpy;
+ let closeOrderReferenceSpy;
+
+ let paymentBuyGemsStub;
+ let paymentCreateSubscritionStub;
+ let amount = 5;
+
+ function expectOrderReferenceSpy () {
+ expect(setOrderReferenceDetailsSpy).to.be.calledOnce;
+ expect(setOrderReferenceDetailsSpy).to.be.calledWith({
+ AmazonOrderReferenceId: orderReferenceId,
+ OrderReferenceAttributes: {
+ OrderTotal: {
+ CurrencyCode: amzLib.constants.CURRENCY_CODE,
+ Amount: amount,
+ },
+ SellerNote: amzLib.constants.SELLER_NOTE,
+ SellerOrderAttributes: {
+ SellerOrderId: common.uuid(),
+ StoreName: amzLib.constants.STORE_NAME,
+ },
+ },
+ });
+ }
+
+ function expectAuthorizeSpy () {
+ expect(authorizeSpy).to.be.calledOnce;
+ expect(authorizeSpy).to.be.calledWith({
+ AmazonOrderReferenceId: orderReferenceId,
+ AuthorizationReferenceId: common.uuid().substring(0, 32),
+ AuthorizationAmount: {
+ CurrencyCode: amzLib.constants.CURRENCY_CODE,
+ Amount: amount,
+ },
+ SellerAuthorizationNote: amzLib.constants.SELLER_NOTE,
+ TransactionTimeout: 0,
+ CaptureNow: true,
+ });
+ }
+
+ function expectAmazonStubs () {
+ expectOrderReferenceSpy();
+
+ expect(confirmOrderReferenceSpy).to.be.calledOnce;
+ expect(confirmOrderReferenceSpy).to.be.calledWith({ AmazonOrderReferenceId: orderReferenceId });
+
+ expectAuthorizeSpy();
+
+ expect(closeOrderReferenceSpy).to.be.calledOnce;
+ expect(closeOrderReferenceSpy).to.be.calledWith({ AmazonOrderReferenceId: orderReferenceId });
+ }
+
+ beforeEach(function () {
+ user = new User();
+ headers = {};
+ orderReferenceId = 'orderReferenceId';
+
+ setOrderReferenceDetailsSpy = sinon.stub(amzLib, 'setOrderReferenceDetails');
+ setOrderReferenceDetailsSpy.returnsPromise().resolves({});
+
+ confirmOrderReferenceSpy = sinon.stub(amzLib, 'confirmOrderReference');
+ confirmOrderReferenceSpy.returnsPromise().resolves({});
+
+ authorizeSpy = sinon.stub(amzLib, 'authorize');
+ authorizeSpy.returnsPromise().resolves({});
+
+ closeOrderReferenceSpy = sinon.stub(amzLib, 'closeOrderReference');
+ closeOrderReferenceSpy.returnsPromise().resolves({});
+
+ paymentBuyGemsStub = sinon.stub(payments, 'buyGems');
+ paymentBuyGemsStub.returnsPromise().resolves({});
+
+ paymentCreateSubscritionStub = sinon.stub(payments, 'createSubscription');
+ paymentCreateSubscritionStub.returnsPromise().resolves({});
+
+ sinon.stub(common, 'uuid').returns('uuid-generated');
+ });
+
+ afterEach(function () {
+ amzLib.setOrderReferenceDetails.restore();
+ amzLib.confirmOrderReference.restore();
+ amzLib.authorize.restore();
+ amzLib.closeOrderReference.restore();
+ payments.buyGems.restore();
+ payments.createSubscription.restore();
+ common.uuid.restore();
+ });
+
+ function expectBuyGemsStub (paymentMethod, gift) {
+ expect(paymentBuyGemsStub).to.be.calledOnce;
+
+ let expectedArgs = {
+ user,
+ paymentMethod,
+ headers,
+ };
+ if (gift) expectedArgs.gift = gift;
+ expect(paymentBuyGemsStub).to.be.calledWith(expectedArgs);
+ }
+
+ it('should purchase gems', async () => {
+ sinon.stub(user, 'canGetGems').returnsPromise().resolves(true);
+ await amzLib.checkout({user, orderReferenceId, headers});
+
+ expectBuyGemsStub(amzLib.constants.PAYMENT_METHOD);
+ expectAmazonStubs();
+ expect(user.canGetGems).to.be.calledOnce;
+ user.canGetGems.restore();
+ });
+
+ it('should error if gem amount is too low', async () => {
+ let receivingUser = new User();
+ receivingUser.save();
+ let gift = {
+ type: 'gems',
+ gems: {
+ amount: 0,
+ uuid: receivingUser._id,
+ },
+ };
+
+ await expect(amzLib.checkout({gift, user, orderReferenceId, headers}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ message: 'Amount must be at least 1.',
+ name: 'BadRequest',
+ });
+ });
+
+ it('should error if user cannot get gems gems', async () => {
+ sinon.stub(user, 'canGetGems').returnsPromise().resolves(false);
+ await expect(amzLib.checkout({user, orderReferenceId, headers})).to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ message: i18n.t('groupPolicyCannotGetGems'),
+ name: 'NotAuthorized',
+ });
+ user.canGetGems.restore();
+ });
+
+ it('should gift gems', async () => {
+ let receivingUser = new User();
+ await receivingUser.save();
+ let gift = {
+ type: 'gems',
+ uuid: receivingUser._id,
+ gems: {
+ amount: 16,
+ },
+ };
+ amount = 16 / 4;
+ await amzLib.checkout({gift, user, orderReferenceId, headers});
+
+ expectBuyGemsStub(amzLib.constants.PAYMENT_METHOD_GIFT, gift);
+ expectAmazonStubs();
+ });
+
+ it('should gift a subscription', async () => {
+ let receivingUser = new User();
+ receivingUser.save();
+ let gift = {
+ type: 'subscription',
+ subscription: {
+ key: subKey,
+ uuid: receivingUser._id,
+ },
+ };
+ amount = common.content.subscriptionBlocks[subKey].price;
+
+ await amzLib.checkout({user, orderReferenceId, headers, gift});
+
+ gift.member = receivingUser;
+ expect(paymentCreateSubscritionStub).to.be.calledOnce;
+ expect(paymentCreateSubscritionStub).to.be.calledWith({
+ user,
+ paymentMethod: amzLib.constants.PAYMENT_METHOD_GIFT,
+ headers,
+ gift,
+ });
+ expectAmazonStubs();
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/amazon/subscribe.test.js b/test/api/v3/unit/libs/payments/amazon/subscribe.test.js
new file mode 100644
index 00000000000..8095f90c636
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/amazon/subscribe.test.js
@@ -0,0 +1,267 @@
+import cc from 'coupon-code';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import { model as Coupon } from '../../../../../../../website/server/models/coupon';
+import amzLib from '../../../../../../../website/server/libs/amazonPayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('Amazon Payments - Subscribe', () => {
+ const subKey = 'basic_3mo';
+ let user, group, amount, billingAgreementId, sub, coupon, groupId, headers;
+ let amazonSetBillingAgreementDetailsSpy;
+ let amazonConfirmBillingAgreementSpy;
+ let amazonAuthorizeOnBillingAgreementSpy;
+ let createSubSpy;
+
+ beforeEach(async () => {
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = 'customer-id';
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = 'customer-id';
+ group.purchased.plan.planId = subKey;
+ await group.save();
+
+ amount = common.content.subscriptionBlocks[subKey].price;
+ billingAgreementId = 'billingAgreementId';
+ sub = {
+ key: subKey,
+ price: amount,
+ };
+ groupId = group._id;
+ headers = {};
+
+ amazonSetBillingAgreementDetailsSpy = sinon.stub(amzLib, 'setBillingAgreementDetails');
+ amazonSetBillingAgreementDetailsSpy.returnsPromise().resolves({});
+
+ amazonConfirmBillingAgreementSpy = sinon.stub(amzLib, 'confirmBillingAgreement');
+ amazonConfirmBillingAgreementSpy.returnsPromise().resolves({});
+
+ amazonAuthorizeOnBillingAgreementSpy = sinon.stub(amzLib, 'authorizeOnBillingAgreement');
+ amazonAuthorizeOnBillingAgreementSpy.returnsPromise().resolves({});
+
+ createSubSpy = sinon.stub(payments, 'createSubscription');
+ createSubSpy.returnsPromise().resolves({});
+
+ sinon.stub(common, 'uuid').returns('uuid-generated');
+ });
+
+ afterEach(function () {
+ amzLib.setBillingAgreementDetails.restore();
+ amzLib.confirmBillingAgreement.restore();
+ amzLib.authorizeOnBillingAgreement.restore();
+ payments.createSubscription.restore();
+ common.uuid.restore();
+ });
+
+ function expectAmazonAuthorizeBillingAgreementSpy () {
+ expect(amazonAuthorizeOnBillingAgreementSpy).to.be.calledOnce;
+ expect(amazonAuthorizeOnBillingAgreementSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ AuthorizationReferenceId: common.uuid().substring(0, 32),
+ AuthorizationAmount: {
+ CurrencyCode: amzLib.constants.CURRENCY_CODE,
+ Amount: amount,
+ },
+ SellerAuthorizationNote: amzLib.constants.SELLER_NOTE_ATHORIZATION_SUBSCRIPTION,
+ TransactionTimeout: 0,
+ CaptureNow: true,
+ SellerNote: amzLib.constants.SELLER_NOTE_ATHORIZATION_SUBSCRIPTION,
+ SellerOrderAttributes: {
+ SellerOrderId: common.uuid(),
+ StoreName: amzLib.constants.STORE_NAME,
+ },
+ });
+ }
+
+ function expectAmazonSetBillingAgreementDetailsSpy () {
+ expect(amazonSetBillingAgreementDetailsSpy).to.be.calledOnce;
+ expect(amazonSetBillingAgreementDetailsSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ BillingAgreementAttributes: {
+ SellerNote: amzLib.constants.SELLER_NOTE_SUBSCRIPTION,
+ SellerBillingAgreementAttributes: {
+ SellerBillingAgreementId: common.uuid(),
+ StoreName: amzLib.constants.STORE_NAME,
+ CustomInformation: amzLib.constants.SELLER_NOTE_SUBSCRIPTION,
+ },
+ },
+ });
+ }
+
+ function expectCreateSpy () {
+ expect(createSubSpy).to.be.calledOnce;
+ expect(createSubSpy).to.be.calledWith({
+ user,
+ customerId: billingAgreementId,
+ paymentMethod: amzLib.constants.PAYMENT_METHOD,
+ sub,
+ headers,
+ groupId,
+ });
+ }
+
+ it('should throw an error if we are missing a subscription', async () => {
+ await expect(amzLib.subscribe({
+ billingAgreementId,
+ coupon,
+ user,
+ groupId,
+ headers,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: i18n.t('missingSubscriptionCode'),
+ });
+ });
+
+ it('should throw an error if we are missing a billingAgreementId', async () => {
+ await expect(amzLib.subscribe({
+ sub,
+ coupon,
+ user,
+ groupId,
+ headers,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: 'Missing req.body.billingAgreementId',
+ });
+ });
+
+ it('should throw an error when coupon code is missing', async () => {
+ sub.discount = 40;
+
+ await expect(amzLib.subscribe({
+ billingAgreementId,
+ sub,
+ coupon,
+ user,
+ groupId,
+ headers,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: i18n.t('couponCodeRequired'),
+ });
+ });
+
+ it('should throw an error when coupon code is invalid', async () => {
+ sub.discount = 40;
+ sub.key = 'google_6mo';
+ coupon = 'example-coupon';
+
+ let couponModel = new Coupon();
+ couponModel.event = 'google_6mo';
+ await couponModel.save();
+
+ sinon.stub(cc, 'validate').returns('invalid');
+
+ await expect(amzLib.subscribe({
+ billingAgreementId,
+ sub,
+ coupon,
+ user,
+ groupId,
+ headers,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('invalidCoupon'),
+ });
+ cc.validate.restore();
+ });
+
+ it('subscribes with amazon with a coupon', async () => {
+ sub.discount = 40;
+ sub.key = 'google_6mo';
+ coupon = 'example-coupon';
+
+ let couponModel = new Coupon();
+ couponModel.event = 'google_6mo';
+ let updatedCouponModel = await couponModel.save();
+
+ sinon.stub(cc, 'validate').returns(updatedCouponModel._id);
+
+ await amzLib.subscribe({
+ billingAgreementId,
+ sub,
+ coupon,
+ user,
+ groupId,
+ headers,
+ });
+
+ expectCreateSpy();
+
+ cc.validate.restore();
+ });
+
+ it('subscribes with amazon', async () => {
+ await amzLib.subscribe({
+ billingAgreementId,
+ sub,
+ coupon,
+ user,
+ groupId,
+ headers,
+ });
+
+ expectAmazonSetBillingAgreementDetailsSpy();
+
+ expect(amazonConfirmBillingAgreementSpy).to.be.calledOnce;
+ expect(amazonConfirmBillingAgreementSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ });
+
+ expectAmazonAuthorizeBillingAgreementSpy();
+
+ expectCreateSpy();
+ });
+
+ it('subscribes with amazon with price to existing users', async () => {
+ user = new User();
+ user.guilds.push(groupId);
+ await user.save();
+ group.memberCount = 2;
+ await group.save();
+ sub.key = 'group_monthly';
+ sub.price = 9;
+ amount = 12;
+
+ await amzLib.subscribe({
+ billingAgreementId,
+ sub,
+ coupon,
+ user,
+ groupId,
+ headers,
+ });
+
+ expectAmazonSetBillingAgreementDetailsSpy();
+ expect(amazonConfirmBillingAgreementSpy).to.be.calledOnce;
+ expect(amazonConfirmBillingAgreementSpy).to.be.calledWith({
+ AmazonBillingAgreementId: billingAgreementId,
+ });
+ expectAmazonAuthorizeBillingAgreementSpy();
+ expectCreateSpy();
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/amazon/upgrade-groupplan.test.js b/test/api/v3/unit/libs/payments/amazon/upgrade-groupplan.test.js
new file mode 100644
index 00000000000..a62e7f1b536
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/amazon/upgrade-groupplan.test.js
@@ -0,0 +1,83 @@
+import uuid from 'uuid';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import { model as Group } from '../../../../../../../website/server/models/group';
+import amzLib from '../../../../../../../website/server/libs/amazonPayments';
+import payments from '../../../../../../../website/server/libs/payments';
+
+describe('#upgradeGroupPlan', () => {
+ let spy, data, user, group, uuidString;
+
+ beforeEach(async function () {
+ user = new User();
+ user.profile.name = 'sender';
+
+ data = {
+ user,
+ sub: {
+ key: 'basic_3mo', // @TODO: Validate that this is group
+ },
+ customerId: 'customer-id',
+ paymentMethod: 'Payment Method',
+ headers: {
+ 'x-client': 'habitica-web',
+ 'user-agent': '',
+ },
+ };
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ await group.save();
+
+ spy = sinon.stub(amzLib, 'authorizeOnBillingAgreement');
+ spy.returnsPromise().resolves([]);
+
+ uuidString = 'uuid-v4';
+ sinon.stub(uuid, 'v4').returns(uuidString);
+
+ data.groupId = group._id;
+ data.sub.quantity = 3;
+ });
+
+ afterEach(function () {
+ sinon.restore(amzLib.authorizeOnBillingAgreement);
+ uuid.v4.restore();
+ });
+
+ it('charges for a new member', async () => {
+ data.paymentMethod = amzLib.constants.PAYMENT_METHOD;
+ await payments.createSubscription(data);
+
+ let updatedGroup = await Group.findById(group._id).exec();
+
+ updatedGroup.memberCount += 1;
+ await updatedGroup.save();
+
+ await amzLib.chargeForAdditionalGroupMember(updatedGroup);
+
+ expect(spy.calledOnce).to.be.true;
+ expect(spy).to.be.calledWith({
+ AmazonBillingAgreementId: updatedGroup.purchased.plan.customerId,
+ AuthorizationReferenceId: uuidString.substring(0, 32),
+ AuthorizationAmount: {
+ CurrencyCode: amzLib.constants.CURRENCY_CODE,
+ Amount: 3,
+ },
+ SellerAuthorizationNote: amzLib.constants.SELLER_NOTE_GROUP_NEW_MEMBER,
+ TransactionTimeout: 0,
+ CaptureNow: true,
+ SellerNote: amzLib.constants.SELLER_NOTE_GROUP_NEW_MEMBER,
+ SellerOrderAttributes: {
+ SellerOrderId: uuidString,
+ StoreName: amzLib.constants.STORE_NAME,
+ },
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/paymentHelpers.js b/test/api/v3/unit/libs/payments/paymentHelpers.js
new file mode 100644
index 00000000000..99069a8f492
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paymentHelpers.js
@@ -0,0 +1,7 @@
+import { model as User } from '../../../../../../website/server/models/user';
+
+export async function createNonLeaderGroupMember (group) {
+ let nonLeader = new User();
+ nonLeader.guilds.push(group._id);
+ return await nonLeader.save();
+}
diff --git a/test/api/v3/unit/libs/payments/paypal/checkout-success.test.js b/test/api/v3/unit/libs/payments/paypal/checkout-success.test.js
new file mode 100644
index 00000000000..5f63b99050a
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paypal/checkout-success.test.js
@@ -0,0 +1,87 @@
+/* eslint-disable camelcase */
+import payments from '../../../../../../../website/server/libs/payments';
+import paypalPayments from '../../../../../../../website/server/libs/paypalPayments';
+import { model as User } from '../../../../../../../website/server/models/user';
+
+describe('checkout success', () => {
+ const subKey = 'basic_3mo';
+ let user, gift, customerId, paymentId;
+ let paypalPaymentExecuteStub, paymentBuyGemsStub, paymentsCreateSubscritionStub;
+
+ beforeEach(() => {
+ user = new User();
+ customerId = 'customerId-test';
+ paymentId = 'paymentId-test';
+
+ paypalPaymentExecuteStub = sinon.stub(paypalPayments, 'paypalPaymentExecute').returnsPromise().resolves({});
+ paymentBuyGemsStub = sinon.stub(payments, 'buyGems').returnsPromise().resolves({});
+ paymentsCreateSubscritionStub = sinon.stub(payments, 'createSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(() => {
+ paypalPayments.paypalPaymentExecute.restore();
+ payments.buyGems.restore();
+ payments.createSubscription.restore();
+ });
+
+ it('purchases gems', async () => {
+ await paypalPayments.checkoutSuccess({user, gift, paymentId, customerId});
+
+ expect(paypalPaymentExecuteStub).to.be.calledOnce;
+ expect(paypalPaymentExecuteStub).to.be.calledWith(paymentId, { payer_id: customerId });
+ expect(paymentBuyGemsStub).to.be.calledOnce;
+ expect(paymentBuyGemsStub).to.be.calledWith({
+ user,
+ customerId,
+ paymentMethod: 'Paypal',
+ });
+ });
+
+ it('gifts gems', async () => {
+ let receivingUser = new User();
+ await receivingUser.save();
+ gift = {
+ type: 'gems',
+ gems: {
+ amount: 16,
+ uuid: receivingUser._id,
+ },
+ };
+
+ await paypalPayments.checkoutSuccess({user, gift, paymentId, customerId});
+
+ expect(paypalPaymentExecuteStub).to.be.calledOnce;
+ expect(paypalPaymentExecuteStub).to.be.calledWith(paymentId, { payer_id: customerId });
+ expect(paymentBuyGemsStub).to.be.calledOnce;
+ expect(paymentBuyGemsStub).to.be.calledWith({
+ user,
+ customerId,
+ paymentMethod: 'PayPal (Gift)',
+ gift,
+ });
+ });
+
+ it('gifts subscription', async () => {
+ let receivingUser = new User();
+ await receivingUser.save();
+ gift = {
+ type: 'subscription',
+ subscription: {
+ key: subKey,
+ uuid: receivingUser._id,
+ },
+ };
+
+ await paypalPayments.checkoutSuccess({user, gift, paymentId, customerId});
+
+ expect(paypalPaymentExecuteStub).to.be.calledOnce;
+ expect(paypalPaymentExecuteStub).to.be.calledWith(paymentId, { payer_id: customerId });
+ expect(paymentsCreateSubscritionStub).to.be.calledOnce;
+ expect(paymentsCreateSubscritionStub).to.be.calledWith({
+ user,
+ customerId,
+ paymentMethod: 'PayPal (Gift)',
+ gift,
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/paypal/checkout.test.js b/test/api/v3/unit/libs/payments/paypal/checkout.test.js
new file mode 100644
index 00000000000..9ed40c1ad82
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paypal/checkout.test.js
@@ -0,0 +1,127 @@
+/* eslint-disable camelcase */
+import nconf from 'nconf';
+
+import paypalPayments from '../../../../../../../website/server/libs/paypalPayments';
+import { model as User } from '../../../../../../../website/server/models/user';
+import common from '../../../../../../../website/common';
+
+const BASE_URL = nconf.get('BASE_URL');
+const i18n = common.i18n;
+
+describe('checkout', () => {
+ const subKey = 'basic_3mo';
+ let paypalPaymentCreateStub;
+ let approvalHerf;
+
+ function getPaypalCreateOptions (description, amount) {
+ return {
+ intent: 'sale',
+ payer: { payment_method: 'Paypal' },
+ redirect_urls: {
+ return_url: `${BASE_URL}/paypal/checkout/success`,
+ cancel_url: `${BASE_URL}`,
+ },
+ transactions: [{
+ item_list: {
+ items: [{
+ name: description,
+ price: amount,
+ currency: 'USD',
+ quantity: 1,
+ }],
+ },
+ amount: {
+ currency: 'USD',
+ total: amount,
+ },
+ description,
+ }],
+ };
+ }
+
+ beforeEach(() => {
+ approvalHerf = 'approval_href';
+ paypalPaymentCreateStub = sinon.stub(paypalPayments, 'paypalPaymentCreate')
+ .returnsPromise().resolves({
+ links: [{ rel: 'approval_url', href: approvalHerf }],
+ });
+ });
+
+ afterEach(() => {
+ paypalPayments.paypalPaymentCreate.restore();
+ });
+
+ it('creates a link for gem purchases', async () => {
+ let link = await paypalPayments.checkout({user: new User()});
+
+ expect(paypalPaymentCreateStub).to.be.calledOnce;
+ expect(paypalPaymentCreateStub).to.be.calledWith(getPaypalCreateOptions('Habitica Gems', 5.00));
+ expect(link).to.eql(approvalHerf);
+ });
+
+ it('should error if gem amount is too low', async () => {
+ let receivingUser = new User();
+ receivingUser.save();
+ let gift = {
+ type: 'gems',
+ gems: {
+ amount: 0,
+ uuid: receivingUser._id,
+ },
+ };
+
+ await expect(paypalPayments.checkout({gift}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ message: 'Amount must be at least 1.',
+ name: 'BadRequest',
+ });
+ });
+
+ it('should error if the user cannot get gems', async () => {
+ let user = new User();
+ sinon.stub(user, 'canGetGems').returnsPromise().resolves(false);
+
+ await expect(paypalPayments.checkout({user})).to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ message: i18n.t('groupPolicyCannotGetGems'),
+ name: 'NotAuthorized',
+ });
+ });
+
+ it('creates a link for gifting gems', async () => {
+ let receivingUser = new User();
+ await receivingUser.save();
+ let gift = {
+ type: 'gems',
+ uuid: receivingUser._id,
+ gems: {
+ amount: 16,
+ },
+ };
+
+ let link = await paypalPayments.checkout({gift});
+
+ expect(paypalPaymentCreateStub).to.be.calledOnce;
+ expect(paypalPaymentCreateStub).to.be.calledWith(getPaypalCreateOptions('Habitica Gems (Gift)', '4.00'));
+ expect(link).to.eql(approvalHerf);
+ });
+
+ it('creates a link for gifting a subscription', async () => {
+ let receivingUser = new User();
+ receivingUser.save();
+ let gift = {
+ type: 'subscription',
+ subscription: {
+ key: subKey,
+ uuid: receivingUser._id,
+ },
+ };
+
+ let link = await paypalPayments.checkout({gift});
+
+ expect(paypalPaymentCreateStub).to.be.calledOnce;
+ expect(paypalPaymentCreateStub).to.be.calledWith(getPaypalCreateOptions('mo. Habitica Subscription (Gift)', '15.00'));
+ expect(link).to.eql(approvalHerf);
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/paypal/ipn.test.js b/test/api/v3/unit/libs/payments/paypal/ipn.test.js
new file mode 100644
index 00000000000..7094b67cb91
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paypal/ipn.test.js
@@ -0,0 +1,66 @@
+/* eslint-disable camelcase */
+import payments from '../../../../../../../website/server/libs/payments';
+import paypalPayments from '../../../../../../../website/server/libs/paypalPayments';
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+
+describe('ipn', () => {
+ const subKey = 'basic_3mo';
+ let user, group, txn_type, userPaymentId, groupPaymentId;
+ let ipnVerifyAsyncStub, paymentCancelSubscriptionSpy;
+
+ beforeEach(async () => {
+ txn_type = 'recurring_payment_profile_cancel';
+ userPaymentId = 'userPaymentId-test';
+ groupPaymentId = 'groupPaymentId-test';
+
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = userPaymentId;
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+ await user.save();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = groupPaymentId;
+ group.purchased.plan.planId = subKey;
+ group.purchased.plan.lastBillingDate = new Date();
+ await group.save();
+
+ ipnVerifyAsyncStub = sinon.stub(paypalPayments, 'ipnVerifyAsync').returnsPromise().resolves({});
+ paymentCancelSubscriptionSpy = sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(function () {
+ paypalPayments.ipnVerifyAsync.restore();
+ payments.cancelSubscription.restore();
+ });
+
+ it('should cancel a user subscription', async () => {
+ await paypalPayments.ipn({txn_type, recurring_payment_id: userPaymentId});
+
+ expect(ipnVerifyAsyncStub).to.be.calledOnce;
+ expect(ipnVerifyAsyncStub).to.be.calledWith({txn_type, recurring_payment_id: userPaymentId});
+
+ expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
+ expect(paymentCancelSubscriptionSpy.args[0][0].user._id).to.eql(user._id);
+ expect(paymentCancelSubscriptionSpy.args[0][0].paymentMethod).to.eql('Paypal');
+ });
+
+ it('should cancel a group subscription', async () => {
+ await paypalPayments.ipn({txn_type, recurring_payment_id: groupPaymentId});
+
+ expect(ipnVerifyAsyncStub).to.be.calledOnce;
+ expect(ipnVerifyAsyncStub).to.be.calledWith({txn_type, recurring_payment_id: groupPaymentId});
+
+ expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
+ expect(paymentCancelSubscriptionSpy).to.be.calledWith({ groupId: group._id, paymentMethod: 'Paypal' });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/paypal/subscribe-cancel.test.js b/test/api/v3/unit/libs/payments/paypal/subscribe-cancel.test.js
new file mode 100644
index 00000000000..ef5b399fed8
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paypal/subscribe-cancel.test.js
@@ -0,0 +1,124 @@
+/* eslint-disable camelcase */
+import payments from '../../../../../../../website/server/libs/payments';
+import paypalPayments from '../../../../../../../website/server/libs/paypalPayments';
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import common from '../../../../../../../website/common';
+import { createNonLeaderGroupMember } from '../paymentHelpers';
+
+const i18n = common.i18n;
+
+describe('subscribeCancel', () => {
+ const subKey = 'basic_3mo';
+ let user, group, groupId, customerId, groupCustomerId, nextBillingDate;
+ let paymentCancelSubscriptionSpy, paypalBillingAgreementCancelStub, paypalBillingAgreementGetStub;
+
+ beforeEach(async () => {
+ customerId = 'customer-id';
+ groupCustomerId = 'groupCustomerId-test';
+
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = customerId;
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = groupCustomerId;
+ group.purchased.plan.planId = subKey;
+ group.purchased.plan.lastBillingDate = new Date();
+ await group.save();
+
+ nextBillingDate = new Date();
+
+ paypalBillingAgreementCancelStub = sinon.stub(paypalPayments, 'paypalBillingAgreementCancel').returnsPromise().resolves({});
+ paypalBillingAgreementGetStub = sinon.stub(paypalPayments, 'paypalBillingAgreementGet')
+ .returnsPromise().resolves({
+ agreement_details: {
+ next_billing_date: nextBillingDate,
+ cycles_completed: 1,
+ },
+ });
+ paymentCancelSubscriptionSpy = sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(function () {
+ paypalPayments.paypalBillingAgreementGet.restore();
+ paypalPayments.paypalBillingAgreementCancel.restore();
+ payments.cancelSubscription.restore();
+ });
+
+ it('should throw an error if we are missing a subscription', async () => {
+ user.purchased.plan.customerId = undefined;
+
+ await expect(paypalPayments.subscribeCancel({user}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('missingSubscription'),
+ });
+ });
+
+ it('should throw an error if group is not found', async () => {
+ await expect(paypalPayments.subscribeCancel({user, groupId: 'fake-id'}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 404,
+ name: 'NotFound',
+ message: i18n.t('groupNotFound'),
+ });
+ });
+
+ it('should throw an error if user is not group leader', async () => {
+ let nonLeader = await createNonLeaderGroupMember(group);
+
+ await expect(paypalPayments.subscribeCancel({user: nonLeader, groupId: group._id}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('onlyGroupLeaderCanManageSubscription'),
+ });
+ });
+
+ it('should cancel a user subscription', async () => {
+ await paypalPayments.subscribeCancel({user});
+
+ expect(paypalBillingAgreementGetStub).to.be.calledOnce;
+ expect(paypalBillingAgreementGetStub).to.be.calledWith(customerId);
+ expect(paypalBillingAgreementCancelStub).to.be.calledOnce;
+ expect(paypalBillingAgreementCancelStub).to.be.calledWith(customerId, { note: i18n.t('cancelingSubscription') });
+
+ expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
+ expect(paymentCancelSubscriptionSpy).to.be.calledWith({
+ user,
+ groupId,
+ paymentMethod: 'Paypal',
+ nextBill: nextBillingDate,
+ cancellationReason: undefined,
+ });
+ });
+
+ it('should cancel a group subscription', async () => {
+ await paypalPayments.subscribeCancel({user, groupId: group._id});
+
+ expect(paypalBillingAgreementGetStub).to.be.calledOnce;
+ expect(paypalBillingAgreementGetStub).to.be.calledWith(groupCustomerId);
+ expect(paypalBillingAgreementCancelStub).to.be.calledOnce;
+ expect(paypalBillingAgreementCancelStub).to.be.calledWith(groupCustomerId, { note: i18n.t('cancelingSubscription') });
+
+ expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
+ expect(paymentCancelSubscriptionSpy).to.be.calledWith({
+ user,
+ groupId: group._id,
+ paymentMethod: 'Paypal',
+ nextBill: nextBillingDate,
+ cancellationReason: undefined,
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/paypal/subscribe-success.test.js b/test/api/v3/unit/libs/payments/paypal/subscribe-success.test.js
new file mode 100644
index 00000000000..5caaf34fc85
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paypal/subscribe-success.test.js
@@ -0,0 +1,77 @@
+/* eslint-disable camelcase */
+import payments from '../../../../../../../website/server/libs/payments';
+import paypalPayments from '../../../../../../../website/server/libs/paypalPayments';
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import common from '../../../../../../../website/common';
+
+describe('subscribeSuccess', () => {
+ const subKey = 'basic_3mo';
+ let user, group, block, groupId, token, headers, customerId;
+ let paypalBillingAgreementExecuteStub, paymentsCreateSubscritionStub;
+
+ beforeEach(async () => {
+ user = new User();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+
+ token = 'test-token';
+ headers = {};
+ block = common.content.subscriptionBlocks[subKey];
+ customerId = 'test-customerId';
+
+ paypalBillingAgreementExecuteStub = sinon.stub(paypalPayments, 'paypalBillingAgreementExecute')
+ .returnsPromise({}).resolves({
+ id: customerId,
+ });
+ paymentsCreateSubscritionStub = sinon.stub(payments, 'createSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(() => {
+ paypalPayments.paypalBillingAgreementExecute.restore();
+ payments.createSubscription.restore();
+ });
+
+ it('creates a user subscription', async () => {
+ await paypalPayments.subscribeSuccess({user, block, groupId, token, headers});
+
+ expect(paypalBillingAgreementExecuteStub).to.be.calledOnce;
+ expect(paypalBillingAgreementExecuteStub).to.be.calledWith(token, {});
+
+ expect(paymentsCreateSubscritionStub).to.be.calledOnce;
+ expect(paymentsCreateSubscritionStub).to.be.calledWith({
+ user,
+ groupId,
+ customerId,
+ paymentMethod: 'Paypal',
+ sub: block,
+ headers,
+ });
+ });
+
+ it('create a group subscription', async () => {
+ groupId = group._id;
+
+ await paypalPayments.subscribeSuccess({user, block, groupId, token, headers});
+
+ expect(paypalBillingAgreementExecuteStub).to.be.calledOnce;
+ expect(paypalBillingAgreementExecuteStub).to.be.calledWith(token, {});
+
+ expect(paymentsCreateSubscritionStub).to.be.calledOnce;
+ expect(paymentsCreateSubscritionStub).to.be.calledWith({
+ user,
+ groupId,
+ customerId,
+ paymentMethod: 'Paypal',
+ sub: block,
+ headers,
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/paypal/subscribe.test.js b/test/api/v3/unit/libs/payments/paypal/subscribe.test.js
new file mode 100644
index 00000000000..f0450ccfc1b
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/paypal/subscribe.test.js
@@ -0,0 +1,112 @@
+/* eslint-disable camelcase */
+import moment from 'moment';
+import cc from 'coupon-code';
+
+import paypalPayments from '../../../../../../../website/server/libs/paypalPayments';
+import { model as Coupon } from '../../../../../../../website/server/models/coupon';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('subscribe', () => {
+ const subKey = 'basic_3mo';
+ let coupon, sub, approvalHerf;
+ let paypalBillingAgreementCreateStub;
+
+ beforeEach(() => {
+ approvalHerf = 'approvalHerf-test';
+ sub = Object.assign({}, common.content.subscriptionBlocks[subKey]);
+
+ paypalBillingAgreementCreateStub = sinon.stub(paypalPayments, 'paypalBillingAgreementCreate')
+ .returnsPromise().resolves({
+ links: [{ rel: 'approval_url', href: approvalHerf }],
+ });
+ });
+
+ afterEach(() => {
+ paypalPayments.paypalBillingAgreementCreate.restore();
+ });
+
+ it('should throw an error when coupon code is missing', async () => {
+ sub.discount = 40;
+
+ await expect(paypalPayments.subscribe({sub, coupon}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: i18n.t('couponCodeRequired'),
+ });
+ });
+
+ it('should throw an error when coupon code is invalid', async () => {
+ sub.discount = 40;
+ sub.key = 'google_6mo';
+ coupon = 'example-coupon';
+
+ let couponModel = new Coupon();
+ couponModel.event = 'google_6mo';
+ await couponModel.save();
+
+ sinon.stub(cc, 'validate').returns('invalid');
+
+ await expect(paypalPayments.subscribe({sub, coupon}))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('invalidCoupon'),
+ });
+ cc.validate.restore();
+ });
+
+ it('subscribes with amazon with a coupon', async () => {
+ sub.discount = 40;
+ sub.key = 'google_6mo';
+ coupon = 'example-coupon';
+
+ let couponModel = new Coupon();
+ couponModel.event = 'google_6mo';
+ let updatedCouponModel = await couponModel.save();
+
+ sinon.stub(cc, 'validate').returns(updatedCouponModel._id);
+
+ let link = await paypalPayments.subscribe({sub, coupon});
+
+ expect(link).to.eql(approvalHerf);
+ expect(paypalBillingAgreementCreateStub).to.be.calledOnce;
+ let billingPlanTitle = `Habitica Subscription ($${sub.price} every ${sub.months} months, recurring)`;
+ expect(paypalBillingAgreementCreateStub).to.be.calledWith({
+ name: billingPlanTitle,
+ description: billingPlanTitle,
+ start_date: moment().add({ minutes: 5 }).format(),
+ plan: {
+ id: sub.paypalKey,
+ },
+ payer: {
+ payment_method: 'Paypal',
+ },
+ });
+
+ cc.validate.restore();
+ });
+
+ it('creates a link for a subscription', async () => {
+ delete sub.discount;
+
+ let link = await paypalPayments.subscribe({sub, coupon});
+
+ expect(link).to.eql(approvalHerf);
+ expect(paypalBillingAgreementCreateStub).to.be.calledOnce;
+ let billingPlanTitle = `Habitica Subscription ($${sub.price} every ${sub.months} months, recurring)`;
+ expect(paypalBillingAgreementCreateStub).to.be.calledWith({
+ name: billingPlanTitle,
+ description: billingPlanTitle,
+ start_date: moment().add({ minutes: 5 }).format(),
+ plan: {
+ id: sub.paypalKey,
+ },
+ payer: {
+ payment_method: 'Paypal',
+ },
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/stripe/cancel-subscription.test.js b/test/api/v3/unit/libs/payments/stripe/cancel-subscription.test.js
new file mode 100644
index 00000000000..2e09014a39e
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/stripe/cancel-subscription.test.js
@@ -0,0 +1,143 @@
+import stripeModule from 'stripe';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import stripePayments from '../../../../../../../website/server/libs/stripePayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('cancel subscription', () => {
+ const subKey = 'basic_3mo';
+ const stripe = stripeModule('test');
+ let user, groupId, group;
+
+ beforeEach(async () => {
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = 'customer-id';
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = 'customer-id';
+ group.purchased.plan.planId = subKey;
+ await group.save();
+
+ groupId = group._id;
+ });
+
+ it('throws an error if there is no customer id', async () => {
+ user.purchased.plan.customerId = undefined;
+
+ await expect(stripePayments.cancelSubscription({
+ user,
+ groupId: undefined,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('missingSubscription'),
+ });
+ });
+
+ it('throws an error if the group is not found', async () => {
+ await expect(stripePayments.cancelSubscription({
+ user,
+ groupId: 'fake-group',
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 404,
+ name: 'NotFound',
+ message: i18n.t('groupNotFound'),
+ });
+ });
+
+ it('throws an error if user is not the group leader', async () => {
+ let nonLeader = new User();
+ nonLeader.guilds.push(groupId);
+ await nonLeader.save();
+
+ await expect(stripePayments.cancelSubscription({
+ user: nonLeader,
+ groupId,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('onlyGroupLeaderCanManageSubscription'),
+ });
+ });
+
+ describe('success', () => {
+ let stripeDeleteCustomerStub, paymentsCancelSubStub, stripeRetrieveStub, subscriptionId, currentPeriodEndTimeStamp;
+
+ beforeEach(() => {
+ subscriptionId = 'subId';
+ stripeDeleteCustomerStub = sinon.stub(stripe.customers, 'del').returnsPromise().resolves({});
+ paymentsCancelSubStub = sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
+
+ currentPeriodEndTimeStamp = (new Date()).getTime();
+ stripeRetrieveStub = sinon.stub(stripe.customers, 'retrieve')
+ .returnsPromise().resolves({
+ subscriptions: {
+ data: [{id: subscriptionId, current_period_end: currentPeriodEndTimeStamp}], // eslint-disable-line camelcase
+ },
+ });
+ });
+
+ afterEach(() => {
+ stripe.customers.del.restore();
+ stripe.customers.retrieve.restore();
+ payments.cancelSubscription.restore();
+ });
+
+ it('cancels a user subscription', async () => {
+ await stripePayments.cancelSubscription({
+ user,
+ groupId: undefined,
+ }, stripe);
+
+ expect(stripeDeleteCustomerStub).to.be.calledOnce;
+ expect(stripeDeleteCustomerStub).to.be.calledWith(user.purchased.plan.customerId);
+ expect(stripeRetrieveStub).to.be.calledOnce;
+ expect(stripeRetrieveStub).to.be.calledWith(user.purchased.plan.customerId);
+ expect(paymentsCancelSubStub).to.be.calledOnce;
+ expect(paymentsCancelSubStub).to.be.calledWith({
+ user,
+ groupId: undefined,
+ nextBill: currentPeriodEndTimeStamp * 1000, // timestamp in seconds
+ paymentMethod: 'Stripe',
+ cancellationReason: undefined,
+ });
+ });
+
+ it('cancels a group subscription', async () => {
+ await stripePayments.cancelSubscription({
+ user,
+ groupId,
+ }, stripe);
+
+ expect(stripeDeleteCustomerStub).to.be.calledOnce;
+ expect(stripeDeleteCustomerStub).to.be.calledWith(group.purchased.plan.customerId);
+ expect(stripeRetrieveStub).to.be.calledOnce;
+ expect(stripeRetrieveStub).to.be.calledWith(user.purchased.plan.customerId);
+ expect(paymentsCancelSubStub).to.be.calledOnce;
+ expect(paymentsCancelSubStub).to.be.calledWith({
+ user,
+ groupId,
+ nextBill: currentPeriodEndTimeStamp * 1000, // timestamp in seconds
+ paymentMethod: 'Stripe',
+ cancellationReason: undefined,
+ });
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/stripe/checkout-subscription.test.js b/test/api/v3/unit/libs/payments/stripe/checkout-subscription.test.js
new file mode 100644
index 00000000000..0c2683b8c22
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/stripe/checkout-subscription.test.js
@@ -0,0 +1,307 @@
+import stripeModule from 'stripe';
+import cc from 'coupon-code';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import { model as Coupon } from '../../../../../../../website/server/models/coupon';
+import stripePayments from '../../../../../../../website/server/libs/stripePayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('checkout with subscription', () => {
+ const subKey = 'basic_3mo';
+ const stripe = stripeModule('test');
+ let user, group, data, gift, sub, groupId, email, headers, coupon, customerIdResponse, subscriptionId, token;
+ let spy;
+ let stripeCreateCustomerSpy;
+ let stripePaymentsCreateSubSpy;
+
+ beforeEach(async () => {
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = 'customer-id';
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = 'customer-id';
+ group.purchased.plan.planId = subKey;
+ await group.save();
+
+ sub = {
+ key: 'basic_3mo',
+ };
+
+ data = {
+ user,
+ sub,
+ customerId: 'customer-id',
+ paymentMethod: 'Payment Method',
+ };
+
+ email = 'example@example.com';
+ customerIdResponse = 'test-id';
+ subscriptionId = 'test-sub-id';
+ token = 'test-token';
+
+ spy = sinon.stub(stripe.subscriptions, 'update');
+ spy.returnsPromise().resolves;
+
+ stripeCreateCustomerSpy = sinon.stub(stripe.customers, 'create');
+ let stripCustomerResponse = {
+ id: customerIdResponse,
+ subscriptions: {
+ data: [{id: subscriptionId}],
+ },
+ };
+ stripeCreateCustomerSpy.returnsPromise().resolves(stripCustomerResponse);
+
+ stripePaymentsCreateSubSpy = sinon.stub(payments, 'createSubscription');
+ stripePaymentsCreateSubSpy.returnsPromise().resolves({});
+
+ data.groupId = group._id;
+ data.sub.quantity = 3;
+ });
+
+ afterEach(function () {
+ sinon.restore(stripe.subscriptions.update);
+ stripe.customers.create.restore();
+ payments.createSubscription.restore();
+ });
+
+ it('should throw an error if we are missing a token', async () => {
+ await expect(stripePayments.checkout({
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: 'Missing req.body.id',
+ });
+ });
+
+ it('should throw an error when coupon code is missing', async () => {
+ sub.discount = 40;
+
+ await expect(stripePayments.checkout({
+ token,
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: i18n.t('couponCodeRequired'),
+ });
+ });
+
+ it('should throw an error when coupon code is invalid', async () => {
+ sub.discount = 40;
+ sub.key = 'google_6mo';
+ coupon = 'example-coupon';
+
+ let couponModel = new Coupon();
+ couponModel.event = 'google_6mo';
+ await couponModel.save();
+
+ sinon.stub(cc, 'validate').returns('invalid');
+
+ await expect(stripePayments.checkout({
+ token,
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: i18n.t('invalidCoupon'),
+ });
+ cc.validate.restore();
+ });
+
+ it('subscribes with amazon with a coupon', async () => {
+ sub.discount = 40;
+ sub.key = 'google_6mo';
+ coupon = 'example-coupon';
+
+ let couponModel = new Coupon();
+ couponModel.event = 'google_6mo';
+ let updatedCouponModel = await couponModel.save();
+
+ sinon.stub(cc, 'validate').returns(updatedCouponModel._id);
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ expect(stripeCreateCustomerSpy).to.be.calledOnce;
+ expect(stripeCreateCustomerSpy).to.be.calledWith({
+ email,
+ metadata: { uuid: user._id },
+ card: token,
+ plan: sub.key,
+ });
+
+ expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
+ expect(stripePaymentsCreateSubSpy).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Stripe',
+ sub,
+ headers,
+ groupId: undefined,
+ subscriptionId: undefined,
+ });
+
+ cc.validate.restore();
+ });
+
+ it('subscribes a user', async () => {
+ sub = data.sub;
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ expect(stripeCreateCustomerSpy).to.be.calledOnce;
+ expect(stripeCreateCustomerSpy).to.be.calledWith({
+ email,
+ metadata: { uuid: user._id },
+ card: token,
+ plan: sub.key,
+ });
+
+ expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
+ expect(stripePaymentsCreateSubSpy).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Stripe',
+ sub,
+ headers,
+ groupId: undefined,
+ subscriptionId: undefined,
+ });
+ });
+
+ it('subscribes a group', async () => {
+ token = 'test-token';
+ sub = data.sub;
+ groupId = group._id;
+ email = 'test@test.com';
+ headers = {};
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ expect(stripeCreateCustomerSpy).to.be.calledOnce;
+ expect(stripeCreateCustomerSpy).to.be.calledWith({
+ email,
+ metadata: { uuid: user._id },
+ card: token,
+ plan: sub.key,
+ quantity: 3,
+ });
+
+ expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
+ expect(stripePaymentsCreateSubSpy).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Stripe',
+ sub,
+ headers,
+ groupId,
+ subscriptionId,
+ });
+ });
+
+ it('subscribes a group with the correct number of group members', async () => {
+ token = 'test-token';
+ sub = data.sub;
+ groupId = group._id;
+ email = 'test@test.com';
+ headers = {};
+ user = new User();
+ user.guilds.push(groupId);
+ await user.save();
+ group.memberCount = 2;
+ await group.save();
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ sub,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ expect(stripeCreateCustomerSpy).to.be.calledOnce;
+ expect(stripeCreateCustomerSpy).to.be.calledWith({
+ email,
+ metadata: { uuid: user._id },
+ card: token,
+ plan: sub.key,
+ quantity: 4,
+ });
+
+ expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
+ expect(stripePaymentsCreateSubSpy).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Stripe',
+ sub,
+ headers,
+ groupId,
+ subscriptionId,
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/stripe/checkout.test.js b/test/api/v3/unit/libs/payments/stripe/checkout.test.js
new file mode 100644
index 00000000000..f784bca300f
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/stripe/checkout.test.js
@@ -0,0 +1,193 @@
+import stripeModule from 'stripe';
+
+import { model as User } from '../../../../../../../website/server/models/user';
+import stripePayments from '../../../../../../../website/server/libs/stripePayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('checkout', () => {
+ const subKey = 'basic_3mo';
+ const stripe = stripeModule('test');
+ let stripeChargeStub, paymentBuyGemsStub, paymentCreateSubscritionStub;
+ let user, gift, groupId, email, headers, coupon, customerIdResponse, token;
+
+ beforeEach(() => {
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = 'customer-id';
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ token = 'test-token';
+
+ customerIdResponse = 'example-customerIdResponse';
+ let stripCustomerResponse = {
+ id: customerIdResponse,
+ };
+ stripeChargeStub = sinon.stub(stripe.charges, 'create').returnsPromise().resolves(stripCustomerResponse);
+ paymentBuyGemsStub = sinon.stub(payments, 'buyGems').returnsPromise().resolves({});
+ paymentCreateSubscritionStub = sinon.stub(payments, 'createSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(() => {
+ stripe.charges.create.restore();
+ payments.buyGems.restore();
+ payments.createSubscription.restore();
+ });
+
+ it('should error if gem amount is too low', async () => {
+ let receivingUser = new User();
+ receivingUser.save();
+ gift = {
+ type: 'gems',
+ gems: {
+ amount: 0,
+ uuid: receivingUser._id,
+ },
+ };
+
+ await expect(stripePayments.checkout({
+ token,
+ user,
+ gift,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ message: 'Amount must be at least 1.',
+ name: 'BadRequest',
+ });
+ });
+
+
+ it('should error if user cannot get gems', async () => {
+ gift = undefined;
+ sinon.stub(user, 'canGetGems').returnsPromise().resolves(false);
+
+ await expect(stripePayments.checkout({
+ token,
+ user,
+ gift,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe)).to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ message: i18n.t('groupPolicyCannotGetGems'),
+ name: 'NotAuthorized',
+ });
+ });
+
+ it('should purchase gems', async () => {
+ gift = undefined;
+ sinon.stub(user, 'canGetGems').returnsPromise().resolves(true);
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ expect(stripeChargeStub).to.be.calledOnce;
+ expect(stripeChargeStub).to.be.calledWith({
+ amount: 500,
+ currency: 'usd',
+ card: token,
+ });
+
+ expect(paymentBuyGemsStub).to.be.calledOnce;
+ expect(paymentBuyGemsStub).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Stripe',
+ gift,
+ });
+ expect(user.canGetGems).to.be.calledOnce;
+ user.canGetGems.restore();
+ });
+
+ it('should gift gems', async () => {
+ let receivingUser = new User();
+ await receivingUser.save();
+ gift = {
+ type: 'gems',
+ uuid: receivingUser._id,
+ gems: {
+ amount: 16,
+ },
+ };
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ expect(stripeChargeStub).to.be.calledOnce;
+ expect(stripeChargeStub).to.be.calledWith({
+ amount: '400',
+ currency: 'usd',
+ card: token,
+ });
+
+ expect(paymentBuyGemsStub).to.be.calledOnce;
+ expect(paymentBuyGemsStub).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Gift',
+ gift,
+ });
+ });
+
+ it('should gift a subscription', async () => {
+ let receivingUser = new User();
+ receivingUser.save();
+ gift = {
+ type: 'subscription',
+ subscription: {
+ key: subKey,
+ uuid: receivingUser._id,
+ },
+ };
+
+ await stripePayments.checkout({
+ token,
+ user,
+ gift,
+ groupId,
+ email,
+ headers,
+ coupon,
+ }, stripe);
+
+ gift.member = receivingUser;
+ expect(stripeChargeStub).to.be.calledOnce;
+ expect(stripeChargeStub).to.be.calledWith({
+ amount: '1500',
+ currency: 'usd',
+ card: token,
+ });
+
+ expect(paymentCreateSubscritionStub).to.be.calledOnce;
+ expect(paymentCreateSubscritionStub).to.be.calledWith({
+ user,
+ customerId: customerIdResponse,
+ paymentMethod: 'Gift',
+ gift,
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/stripe/edit-subscription.test.js b/test/api/v3/unit/libs/payments/stripe/edit-subscription.test.js
new file mode 100644
index 00000000000..9c58c4bae5d
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/stripe/edit-subscription.test.js
@@ -0,0 +1,147 @@
+import stripeModule from 'stripe';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import stripePayments from '../../../../../../../website/server/libs/stripePayments';
+import common from '../../../../../../../website/common';
+
+const i18n = common.i18n;
+
+describe('edit subscription', () => {
+ const subKey = 'basic_3mo';
+ const stripe = stripeModule('test');
+ let user, groupId, group, token;
+
+ beforeEach(async () => {
+ user = new User();
+ user.profile.name = 'sender';
+ user.purchased.plan.customerId = 'customer-id';
+ user.purchased.plan.planId = subKey;
+ user.purchased.plan.lastBillingDate = new Date();
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ group.purchased.plan.customerId = 'customer-id';
+ group.purchased.plan.planId = subKey;
+ await group.save();
+
+ groupId = group._id;
+
+ token = 'test-token';
+ });
+
+ it('throws an error if there is no customer id', async () => {
+ user.purchased.plan.customerId = undefined;
+
+ await expect(stripePayments.editSubscription({
+ user,
+ groupId: undefined,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('missingSubscription'),
+ });
+ });
+
+ it('throws an error if a token is not provided', async () => {
+ await expect(stripePayments.editSubscription({
+ user,
+ groupId: undefined,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 400,
+ name: 'BadRequest',
+ message: 'Missing req.body.id',
+ });
+ });
+
+ it('throws an error if the group is not found', async () => {
+ await expect(stripePayments.editSubscription({
+ token,
+ user,
+ groupId: 'fake-group',
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 404,
+ name: 'NotFound',
+ message: i18n.t('groupNotFound'),
+ });
+ });
+
+ it('throws an error if user is not the group leader', async () => {
+ let nonLeader = new User();
+ nonLeader.guilds.push(groupId);
+ await nonLeader.save();
+
+ await expect(stripePayments.editSubscription({
+ token,
+ user: nonLeader,
+ groupId,
+ }))
+ .to.eventually.be.rejected.and.to.eql({
+ httpCode: 401,
+ name: 'NotAuthorized',
+ message: i18n.t('onlyGroupLeaderCanManageSubscription'),
+ });
+ });
+
+ describe('success', () => {
+ let stripeListSubscriptionStub, stripeUpdateSubscriptionStub, subscriptionId;
+
+ beforeEach(() => {
+ subscriptionId = 'subId';
+ stripeListSubscriptionStub = sinon.stub(stripe.customers, 'listSubscriptions')
+ .returnsPromise().resolves({
+ data: [{id: subscriptionId}],
+ });
+
+ stripeUpdateSubscriptionStub = sinon.stub(stripe.customers, 'updateSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(() => {
+ stripe.customers.listSubscriptions.restore();
+ stripe.customers.updateSubscription.restore();
+ });
+
+ it('edits a user subscription', async () => {
+ await stripePayments.editSubscription({
+ token,
+ user,
+ groupId: undefined,
+ }, stripe);
+
+ expect(stripeListSubscriptionStub).to.be.calledOnce;
+ expect(stripeListSubscriptionStub).to.be.calledWith(user.purchased.plan.customerId);
+ expect(stripeUpdateSubscriptionStub).to.be.calledOnce;
+ expect(stripeUpdateSubscriptionStub).to.be.calledWith(
+ user.purchased.plan.customerId,
+ subscriptionId,
+ { card: token }
+ );
+ });
+
+ it('edits a group subscription', async () => {
+ await stripePayments.editSubscription({
+ token,
+ user,
+ groupId,
+ }, stripe);
+
+ expect(stripeListSubscriptionStub).to.be.calledOnce;
+ expect(stripeListSubscriptionStub).to.be.calledWith(group.purchased.plan.customerId);
+ expect(stripeUpdateSubscriptionStub).to.be.calledOnce;
+ expect(stripeUpdateSubscriptionStub).to.be.calledWith(
+ group.purchased.plan.customerId,
+ subscriptionId,
+ { card: token }
+ );
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/stripe/handle-webhook.test.js b/test/api/v3/unit/libs/payments/stripe/handle-webhook.test.js
new file mode 100644
index 00000000000..c91cb7e919a
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/stripe/handle-webhook.test.js
@@ -0,0 +1,257 @@
+import stripeModule from 'stripe';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import stripePayments from '../../../../../../../website/server/libs/stripePayments';
+import payments from '../../../../../../../website/server/libs/payments';
+import common from '../../../../../../../website/common';
+import logger from '../../../../../../../website/server/libs/logger';
+import { v4 as uuid } from 'uuid';
+import moment from 'moment';
+
+const i18n = common.i18n;
+
+describe('Stripe - Webhooks', () => {
+ const stripe = stripeModule('test');
+
+ describe('all events', () => {
+ const eventType = 'account.updated';
+ const event = {id: 123};
+ const eventRetrieved = {type: eventType};
+
+ beforeEach(() => {
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves(eventRetrieved);
+ sinon.stub(logger, 'error');
+ });
+
+ afterEach(() => {
+ stripe.events.retrieve.restore();
+ logger.error.restore();
+ });
+
+ it('logs an error if an unsupported webhook event is passed', async () => {
+ const error = new Error(`Missing handler for Stripe webhook ${eventType}`);
+ await stripePayments.handleWebhooks({requestBody: event}, stripe);
+ expect(logger.error).to.have.been.called.once;
+ expect(logger.error).to.have.been.calledWith(error, {event: eventRetrieved});
+ });
+
+ it('retrieves and validates the event from Stripe', async () => {
+ await stripePayments.handleWebhooks({requestBody: event}, stripe);
+ expect(stripe.events.retrieve).to.have.been.called.once;
+ expect(stripe.events.retrieve).to.have.been.calledWith(event.id);
+ });
+ });
+
+ describe('customer.subscription.deleted', () => {
+ const eventType = 'customer.subscription.deleted';
+
+ beforeEach(() => {
+ sinon.stub(stripe.customers, 'del').returnsPromise().resolves({});
+ sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
+ });
+
+ afterEach(() => {
+ stripe.customers.del.restore();
+ payments.cancelSubscription.restore();
+ });
+
+ it('does not do anything if event.request is null (subscription cancelled manually)', async () => {
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
+ id: 123,
+ type: eventType,
+ request: 123,
+ });
+
+ await stripePayments.handleWebhooks({requestBody: {}}, stripe);
+
+ expect(stripe.events.retrieve).to.have.been.called.once;
+ expect(stripe.customers.del).to.not.have.been.called;
+ expect(payments.cancelSubscription).to.not.have.been.called;
+ stripe.events.retrieve.restore();
+ });
+
+ describe('user subscription', () => {
+ it('throws an error if the user is not found', async () => {
+ const customerId = 456;
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
+ id: 123,
+ type: eventType,
+ data: {
+ object: {
+ plan: {
+ id: 'basic_earned',
+ },
+ customer: customerId,
+ },
+ },
+ request: null,
+ });
+
+ await expect(stripePayments.handleWebhooks({requestBody: {}}, stripe)).to.eventually.be.rejectedWith({
+ message: i18n.t('userNotFound'),
+ httpCode: 404,
+ name: 'NotFound',
+ });
+
+ expect(stripe.customers.del).to.not.have.been.called;
+ expect(payments.cancelSubscription).to.not.have.been.called;
+
+ stripe.events.retrieve.restore();
+ });
+
+ it('deletes the customer on Stripe and calls payments.cancelSubscription', async () => {
+ const customerId = '456';
+
+ let subscriber = new User();
+ subscriber.purchased.plan.customerId = customerId;
+ subscriber.purchased.plan.paymentMethod = 'Stripe';
+ await subscriber.save();
+
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
+ id: 123,
+ type: eventType,
+ data: {
+ object: {
+ plan: {
+ id: 'basic_earned',
+ },
+ customer: customerId,
+ },
+ },
+ request: null,
+ });
+
+ await stripePayments.handleWebhooks({requestBody: {}}, stripe);
+
+ expect(stripe.customers.del).to.have.been.calledOnce;
+ expect(stripe.customers.del).to.have.been.calledWith(customerId);
+ expect(payments.cancelSubscription).to.have.been.calledOnce;
+
+ let cancelSubscriptionOpts = payments.cancelSubscription.lastCall.args[0];
+ expect(cancelSubscriptionOpts.user._id).to.equal(subscriber._id);
+ expect(cancelSubscriptionOpts.paymentMethod).to.equal('Stripe');
+ expect(Math.round(moment(cancelSubscriptionOpts.nextBill).diff(new Date(), 'days', true))).to.equal(3);
+ expect(cancelSubscriptionOpts.groupId).to.be.undefined;
+
+ stripe.events.retrieve.restore();
+ });
+ });
+
+ describe('group plan subscription', () => {
+ it('throws an error if the group is not found', async () => {
+ const customerId = 456;
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
+ id: 123,
+ type: eventType,
+ data: {
+ object: {
+ plan: {
+ id: 'group_monthly',
+ },
+ customer: customerId,
+ },
+ },
+ request: null,
+ });
+
+ await expect(stripePayments.handleWebhooks({requestBody: {}}, stripe)).to.eventually.be.rejectedWith({
+ message: i18n.t('groupNotFound'),
+ httpCode: 404,
+ name: 'NotFound',
+ });
+
+ expect(stripe.customers.del).to.not.have.been.called;
+ expect(payments.cancelSubscription).to.not.have.been.called;
+
+ stripe.events.retrieve.restore();
+ });
+
+ it('throws an error if the group leader is not found', async () => {
+ const customerId = 456;
+
+ let subscriber = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: uuid(),
+ });
+ subscriber.purchased.plan.customerId = customerId;
+ subscriber.purchased.plan.paymentMethod = 'Stripe';
+ await subscriber.save();
+
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
+ id: 123,
+ type: eventType,
+ data: {
+ object: {
+ plan: {
+ id: 'group_monthly',
+ },
+ customer: customerId,
+ },
+ },
+ request: null,
+ });
+
+ await expect(stripePayments.handleWebhooks({requestBody: {}}, stripe)).to.eventually.be.rejectedWith({
+ message: i18n.t('userNotFound'),
+ httpCode: 404,
+ name: 'NotFound',
+ });
+
+ expect(stripe.customers.del).to.not.have.been.called;
+ expect(payments.cancelSubscription).to.not.have.been.called;
+
+ stripe.events.retrieve.restore();
+ });
+
+ it('deletes the customer on Stripe and calls payments.cancelSubscription', async () => {
+ const customerId = '456';
+
+ let leader = new User();
+ await leader.save();
+
+ let subscriber = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: leader._id,
+ });
+ subscriber.purchased.plan.customerId = customerId;
+ subscriber.purchased.plan.paymentMethod = 'Stripe';
+ await subscriber.save();
+
+ sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
+ id: 123,
+ type: eventType,
+ data: {
+ object: {
+ plan: {
+ id: 'group_monthly',
+ },
+ customer: customerId,
+ },
+ },
+ request: null,
+ });
+
+ await stripePayments.handleWebhooks({requestBody: {}}, stripe);
+
+ expect(stripe.customers.del).to.have.been.calledOnce;
+ expect(stripe.customers.del).to.have.been.calledWith(customerId);
+ expect(payments.cancelSubscription).to.have.been.calledOnce;
+
+ let cancelSubscriptionOpts = payments.cancelSubscription.lastCall.args[0];
+ expect(cancelSubscriptionOpts.user._id).to.equal(leader._id);
+ expect(cancelSubscriptionOpts.paymentMethod).to.equal('Stripe');
+ expect(Math.round(moment(cancelSubscriptionOpts.nextBill).diff(new Date(), 'days', true))).to.equal(3);
+ expect(cancelSubscriptionOpts.groupId).to.equal(subscriber._id);
+
+ stripe.events.retrieve.restore();
+ });
+ });
+ });
+});
diff --git a/test/api/v3/unit/libs/payments/stripe/upgrade-group-plan.test.js b/test/api/v3/unit/libs/payments/stripe/upgrade-group-plan.test.js
new file mode 100644
index 00000000000..f0126631a9e
--- /dev/null
+++ b/test/api/v3/unit/libs/payments/stripe/upgrade-group-plan.test.js
@@ -0,0 +1,66 @@
+import stripeModule from 'stripe';
+
+import {
+ generateGroup,
+} from '../../../../../../helpers/api-unit.helper.js';
+import { model as User } from '../../../../../../../website/server/models/user';
+import { model as Group } from '../../../../../../../website/server/models/group';
+import stripePayments from '../../../../../../../website/server/libs/stripePayments';
+import payments from '../../../../../../../website/server/libs/payments';
+
+describe('Stripe - Upgrade Group Plan', () => {
+ const stripe = stripeModule('test');
+ let spy, data, user, group;
+
+ beforeEach(async function () {
+ user = new User();
+ user.profile.name = 'sender';
+
+ data = {
+ user,
+ sub: {
+ key: 'basic_3mo', // @TODO: Validate that this is group
+ },
+ customerId: 'customer-id',
+ paymentMethod: 'Payment Method',
+ headers: {
+ 'x-client': 'habitica-web',
+ 'user-agent': '',
+ },
+ };
+
+ group = generateGroup({
+ name: 'test group',
+ type: 'guild',
+ privacy: 'public',
+ leader: user._id,
+ });
+ await group.save();
+
+ spy = sinon.stub(stripe.subscriptions, 'update');
+ spy.returnsPromise().resolves([]);
+ data.groupId = group._id;
+ data.sub.quantity = 3;
+ stripePayments.setStripeApi(stripe);
+ });
+
+ afterEach(function () {
+ sinon.restore(stripe.subscriptions.update);
+ });
+
+ it('updates a group plan quantity', async () => {
+ data.paymentMethod = 'Stripe';
+ await payments.createSubscription(data);
+
+ let updatedGroup = await Group.findById(group._id).exec();
+ expect(updatedGroup.purchased.plan.quantity).to.eql(3);
+
+ updatedGroup.memberCount += 1;
+ await updatedGroup.save();
+
+ await stripePayments.chargeForAdditionalGroupMember(updatedGroup);
+
+ expect(spy.calledOnce).to.be.true;
+ expect(updatedGroup.purchased.plan.quantity).to.eql(4);
+ });
+});
diff --git a/test/api/v3/unit/libs/paypalPayments.test.js b/test/api/v3/unit/libs/paypalPayments.test.js
deleted file mode 100644
index ae67cf3eded..00000000000
--- a/test/api/v3/unit/libs/paypalPayments.test.js
+++ /dev/null
@@ -1,561 +0,0 @@
-/* eslint-disable camelcase */
-import nconf from 'nconf';
-import moment from 'moment';
-import cc from 'coupon-code';
-
-import payments from '../../../../../website/server/libs/payments';
-import paypalPayments from '../../../../../website/server/libs/paypalPayments';
-import {
- generateGroup,
-} from '../../../../helpers/api-unit.helper.js';
-import { model as User } from '../../../../../website/server/models/user';
-import { model as Coupon } from '../../../../../website/server/models/coupon';
-import common from '../../../../../website/common';
-
-const BASE_URL = nconf.get('BASE_URL');
-const i18n = common.i18n;
-
-describe('Paypal Payments', () => {
- let subKey = 'basic_3mo';
-
- describe('checkout', () => {
- let paypalPaymentCreateStub;
- let approvalHerf;
-
- function getPaypalCreateOptions (description, amount) {
- return {
- intent: 'sale',
- payer: { payment_method: 'Paypal' },
- redirect_urls: {
- return_url: `${BASE_URL}/paypal/checkout/success`,
- cancel_url: `${BASE_URL}`,
- },
- transactions: [{
- item_list: {
- items: [{
- name: description,
- price: amount,
- currency: 'USD',
- quantity: 1,
- }],
- },
- amount: {
- currency: 'USD',
- total: amount,
- },
- description,
- }],
- };
- }
-
- beforeEach(() => {
- approvalHerf = 'approval_href';
- paypalPaymentCreateStub = sinon.stub(paypalPayments, 'paypalPaymentCreate')
- .returnsPromise().resolves({
- links: [{ rel: 'approval_url', href: approvalHerf }],
- });
- });
-
- afterEach(() => {
- paypalPayments.paypalPaymentCreate.restore();
- });
-
- it('creates a link for gem purchases', async () => {
- let link = await paypalPayments.checkout({user: new User()});
-
- expect(paypalPaymentCreateStub).to.be.calledOnce;
- expect(paypalPaymentCreateStub).to.be.calledWith(getPaypalCreateOptions('Habitica Gems', 5.00));
- expect(link).to.eql(approvalHerf);
- });
-
- it('should error if gem amount is too low', async () => {
- let receivingUser = new User();
- receivingUser.save();
- let gift = {
- type: 'gems',
- gems: {
- amount: 0,
- uuid: receivingUser._id,
- },
- };
-
- await expect(paypalPayments.checkout({gift}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- message: 'Amount must be at least 1.',
- name: 'BadRequest',
- });
- });
-
- it('should error if the user cannot get gems', async () => {
- let user = new User();
- sinon.stub(user, 'canGetGems').returnsPromise().resolves(false);
-
- await expect(paypalPayments.checkout({user})).to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- message: i18n.t('groupPolicyCannotGetGems'),
- name: 'NotAuthorized',
- });
- });
-
- it('creates a link for gifting gems', async () => {
- let receivingUser = new User();
- await receivingUser.save();
- let gift = {
- type: 'gems',
- uuid: receivingUser._id,
- gems: {
- amount: 16,
- },
- };
-
- let link = await paypalPayments.checkout({gift});
-
- expect(paypalPaymentCreateStub).to.be.calledOnce;
- expect(paypalPaymentCreateStub).to.be.calledWith(getPaypalCreateOptions('Habitica Gems (Gift)', '4.00'));
- expect(link).to.eql(approvalHerf);
- });
-
- it('creates a link for gifting a subscription', async () => {
- let receivingUser = new User();
- receivingUser.save();
- let gift = {
- type: 'subscription',
- subscription: {
- key: subKey,
- uuid: receivingUser._id,
- },
- };
-
- let link = await paypalPayments.checkout({gift});
-
- expect(paypalPaymentCreateStub).to.be.calledOnce;
- expect(paypalPaymentCreateStub).to.be.calledWith(getPaypalCreateOptions('mo. Habitica Subscription (Gift)', '15.00'));
- expect(link).to.eql(approvalHerf);
- });
- });
-
- describe('checkout success', () => {
- let user, gift, customerId, paymentId;
- let paypalPaymentExecuteStub, paymentBuyGemsStub, paymentsCreateSubscritionStub;
-
- beforeEach(() => {
- user = new User();
- customerId = 'customerId-test';
- paymentId = 'paymentId-test';
-
- paypalPaymentExecuteStub = sinon.stub(paypalPayments, 'paypalPaymentExecute').returnsPromise().resolves({});
- paymentBuyGemsStub = sinon.stub(payments, 'buyGems').returnsPromise().resolves({});
- paymentsCreateSubscritionStub = sinon.stub(payments, 'createSubscription').returnsPromise().resolves({});
- });
-
- afterEach(() => {
- paypalPayments.paypalPaymentExecute.restore();
- payments.buyGems.restore();
- payments.createSubscription.restore();
- });
-
- it('purchases gems', async () => {
- await paypalPayments.checkoutSuccess({user, gift, paymentId, customerId});
-
- expect(paypalPaymentExecuteStub).to.be.calledOnce;
- expect(paypalPaymentExecuteStub).to.be.calledWith(paymentId, { payer_id: customerId });
- expect(paymentBuyGemsStub).to.be.calledOnce;
- expect(paymentBuyGemsStub).to.be.calledWith({
- user,
- customerId,
- paymentMethod: 'Paypal',
- });
- });
-
- it('gifts gems', async () => {
- let receivingUser = new User();
- await receivingUser.save();
- gift = {
- type: 'gems',
- gems: {
- amount: 16,
- uuid: receivingUser._id,
- },
- };
-
- await paypalPayments.checkoutSuccess({user, gift, paymentId, customerId});
-
- expect(paypalPaymentExecuteStub).to.be.calledOnce;
- expect(paypalPaymentExecuteStub).to.be.calledWith(paymentId, { payer_id: customerId });
- expect(paymentBuyGemsStub).to.be.calledOnce;
- expect(paymentBuyGemsStub).to.be.calledWith({
- user,
- customerId,
- paymentMethod: 'PayPal (Gift)',
- gift,
- });
- });
-
- it('gifts subscription', async () => {
- let receivingUser = new User();
- await receivingUser.save();
- gift = {
- type: 'subscription',
- subscription: {
- key: subKey,
- uuid: receivingUser._id,
- },
- };
-
- await paypalPayments.checkoutSuccess({user, gift, paymentId, customerId});
-
- expect(paypalPaymentExecuteStub).to.be.calledOnce;
- expect(paypalPaymentExecuteStub).to.be.calledWith(paymentId, { payer_id: customerId });
- expect(paymentsCreateSubscritionStub).to.be.calledOnce;
- expect(paymentsCreateSubscritionStub).to.be.calledWith({
- user,
- customerId,
- paymentMethod: 'PayPal (Gift)',
- gift,
- });
- });
- });
-
- describe('subscribe', () => {
- let coupon, sub, approvalHerf;
- let paypalBillingAgreementCreateStub;
-
- beforeEach(() => {
- approvalHerf = 'approvalHerf-test';
- sub = common.content.subscriptionBlocks[subKey];
-
- paypalBillingAgreementCreateStub = sinon.stub(paypalPayments, 'paypalBillingAgreementCreate')
- .returnsPromise().resolves({
- links: [{ rel: 'approval_url', href: approvalHerf }],
- });
- });
-
- afterEach(() => {
- paypalPayments.paypalBillingAgreementCreate.restore();
- });
-
- it('should throw an error when coupon code is missing', async () => {
- sub.discount = 40;
-
- await expect(paypalPayments.subscribe({sub, coupon}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: i18n.t('couponCodeRequired'),
- });
- });
-
- it('should throw an error when coupon code is invalid', async () => {
- sub.discount = 40;
- sub.key = 'google_6mo';
- coupon = 'example-coupon';
-
- let couponModel = new Coupon();
- couponModel.event = 'google_6mo';
- await couponModel.save();
-
- sinon.stub(cc, 'validate').returns('invalid');
-
- await expect(paypalPayments.subscribe({sub, coupon}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('invalidCoupon'),
- });
- cc.validate.restore();
- });
-
- it('subscribes with amazon with a coupon', async () => {
- sub.discount = 40;
- sub.key = 'google_6mo';
- coupon = 'example-coupon';
-
- let couponModel = new Coupon();
- couponModel.event = 'google_6mo';
- let updatedCouponModel = await couponModel.save();
-
- sinon.stub(cc, 'validate').returns(updatedCouponModel._id);
-
- let link = await paypalPayments.subscribe({sub, coupon});
-
- expect(link).to.eql(approvalHerf);
- expect(paypalBillingAgreementCreateStub).to.be.calledOnce;
- let billingPlanTitle = `Habitica Subscription ($${sub.price} every ${sub.months} months, recurring)`;
- expect(paypalBillingAgreementCreateStub).to.be.calledWith({
- name: billingPlanTitle,
- description: billingPlanTitle,
- start_date: moment().add({ minutes: 5 }).format(),
- plan: {
- id: sub.paypalKey,
- },
- payer: {
- payment_method: 'Paypal',
- },
- });
-
- cc.validate.restore();
- });
-
- it('creates a link for a subscription', async () => {
- delete sub.discount;
-
- let link = await paypalPayments.subscribe({sub, coupon});
-
- expect(link).to.eql(approvalHerf);
- expect(paypalBillingAgreementCreateStub).to.be.calledOnce;
- let billingPlanTitle = `Habitica Subscription ($${sub.price} every ${sub.months} months, recurring)`;
- expect(paypalBillingAgreementCreateStub).to.be.calledWith({
- name: billingPlanTitle,
- description: billingPlanTitle,
- start_date: moment().add({ minutes: 5 }).format(),
- plan: {
- id: sub.paypalKey,
- },
- payer: {
- payment_method: 'Paypal',
- },
- });
- });
- });
-
- describe('subscribeSuccess', () => {
- let user, group, block, groupId, token, headers, customerId;
- let paypalBillingAgreementExecuteStub, paymentsCreateSubscritionStub;
-
- beforeEach(async () => {
- user = new User();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
-
- token = 'test-token';
- headers = {};
- block = common.content.subscriptionBlocks[subKey];
- customerId = 'test-customerId';
-
- paypalBillingAgreementExecuteStub = sinon.stub(paypalPayments, 'paypalBillingAgreementExecute')
- .returnsPromise({}).resolves({
- id: customerId,
- });
- paymentsCreateSubscritionStub = sinon.stub(payments, 'createSubscription').returnsPromise().resolves({});
- });
-
- afterEach(() => {
- paypalPayments.paypalBillingAgreementExecute.restore();
- payments.createSubscription.restore();
- });
-
- it('creates a user subscription', async () => {
- await paypalPayments.subscribeSuccess({user, block, groupId, token, headers});
-
- expect(paypalBillingAgreementExecuteStub).to.be.calledOnce;
- expect(paypalBillingAgreementExecuteStub).to.be.calledWith(token, {});
-
- expect(paymentsCreateSubscritionStub).to.be.calledOnce;
- expect(paymentsCreateSubscritionStub).to.be.calledWith({
- user,
- groupId,
- customerId,
- paymentMethod: 'Paypal',
- sub: block,
- headers,
- });
- });
-
- it('create a group subscription', async () => {
- groupId = group._id;
-
- await paypalPayments.subscribeSuccess({user, block, groupId, token, headers});
-
- expect(paypalBillingAgreementExecuteStub).to.be.calledOnce;
- expect(paypalBillingAgreementExecuteStub).to.be.calledWith(token, {});
-
- expect(paymentsCreateSubscritionStub).to.be.calledOnce;
- expect(paymentsCreateSubscritionStub).to.be.calledWith({
- user,
- groupId,
- customerId,
- paymentMethod: 'Paypal',
- sub: block,
- headers,
- });
- });
- });
-
- describe('subscribeCancel', () => {
- let user, group, groupId, customerId, groupCustomerId, nextBillingDate;
- let paymentCancelSubscriptionSpy, paypalBillingAgreementCancelStub, paypalBillingAgreementGetStub;
-
- beforeEach(async () => {
- customerId = 'customer-id';
- groupCustomerId = 'groupCustomerId-test';
-
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = customerId;
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = groupCustomerId;
- group.purchased.plan.planId = subKey;
- group.purchased.plan.lastBillingDate = new Date();
- await group.save();
-
- nextBillingDate = new Date();
-
- paypalBillingAgreementCancelStub = sinon.stub(paypalPayments, 'paypalBillingAgreementCancel').returnsPromise().resolves({});
- paypalBillingAgreementGetStub = sinon.stub(paypalPayments, 'paypalBillingAgreementGet')
- .returnsPromise().resolves({
- agreement_details: {
- next_billing_date: nextBillingDate,
- cycles_completed: 1,
- },
- });
- paymentCancelSubscriptionSpy = sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
- });
-
- afterEach(function () {
- paypalPayments.paypalBillingAgreementGet.restore();
- paypalPayments.paypalBillingAgreementCancel.restore();
- payments.cancelSubscription.restore();
- });
-
- it('should throw an error if we are missing a subscription', async () => {
- user.purchased.plan.customerId = undefined;
-
- await expect(paypalPayments.subscribeCancel({user}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('missingSubscription'),
- });
- });
-
- it('should throw an error if group is not found', async () => {
- await expect(paypalPayments.subscribeCancel({user, groupId: 'fake-id'}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 404,
- name: 'NotFound',
- message: i18n.t('groupNotFound'),
- });
- });
-
- it('should throw an error if user is not group leader', async () => {
- let nonLeader = new User();
- nonLeader.guilds.push(group._id);
- await nonLeader.save();
-
- await expect(paypalPayments.subscribeCancel({user: nonLeader, groupId: group._id}))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('onlyGroupLeaderCanManageSubscription'),
- });
- });
-
- it('should cancel a user subscription', async () => {
- await paypalPayments.subscribeCancel({user});
-
- expect(paypalBillingAgreementGetStub).to.be.calledOnce;
- expect(paypalBillingAgreementGetStub).to.be.calledWith(customerId);
- expect(paypalBillingAgreementCancelStub).to.be.calledOnce;
- expect(paypalBillingAgreementCancelStub).to.be.calledWith(customerId, { note: i18n.t('cancelingSubscription') });
-
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({
- user,
- groupId,
- paymentMethod: 'Paypal',
- nextBill: nextBillingDate,
- cancellationReason: undefined,
- });
- });
-
- it('should cancel a group subscription', async () => {
- await paypalPayments.subscribeCancel({user, groupId: group._id});
-
- expect(paypalBillingAgreementGetStub).to.be.calledOnce;
- expect(paypalBillingAgreementGetStub).to.be.calledWith(groupCustomerId);
- expect(paypalBillingAgreementCancelStub).to.be.calledOnce;
- expect(paypalBillingAgreementCancelStub).to.be.calledWith(groupCustomerId, { note: i18n.t('cancelingSubscription') });
-
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({
- user,
- groupId: group._id,
- paymentMethod: 'Paypal',
- nextBill: nextBillingDate,
- cancellationReason: undefined,
- });
- });
- });
-
- describe('ipn', () => {
- let user, group, txn_type, userPaymentId, groupPaymentId;
- let ipnVerifyAsyncStub, paymentCancelSubscriptionSpy;
-
- beforeEach(async () => {
- txn_type = 'recurring_payment_profile_cancel';
- userPaymentId = 'userPaymentId-test';
- groupPaymentId = 'groupPaymentId-test';
-
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = userPaymentId;
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
- await user.save();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = groupPaymentId;
- group.purchased.plan.planId = subKey;
- group.purchased.plan.lastBillingDate = new Date();
- await group.save();
-
- ipnVerifyAsyncStub = sinon.stub(paypalPayments, 'ipnVerifyAsync').returnsPromise().resolves({});
- paymentCancelSubscriptionSpy = sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
- });
-
- afterEach(function () {
- paypalPayments.ipnVerifyAsync.restore();
- payments.cancelSubscription.restore();
- });
-
- it('should cancel a user subscription', async () => {
- await paypalPayments.ipn({txn_type, recurring_payment_id: userPaymentId});
-
- expect(ipnVerifyAsyncStub).to.be.calledOnce;
- expect(ipnVerifyAsyncStub).to.be.calledWith({txn_type, recurring_payment_id: userPaymentId});
-
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy.args[0][0].user._id).to.eql(user._id);
- expect(paymentCancelSubscriptionSpy.args[0][0].paymentMethod).to.eql('Paypal');
- });
-
- it('should cancel a group subscription', async () => {
- await paypalPayments.ipn({txn_type, recurring_payment_id: groupPaymentId});
-
- expect(ipnVerifyAsyncStub).to.be.calledOnce;
- expect(ipnVerifyAsyncStub).to.be.calledWith({txn_type, recurring_payment_id: groupPaymentId});
-
- expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
- expect(paymentCancelSubscriptionSpy).to.be.calledWith({ groupId: group._id, paymentMethod: 'Paypal' });
- });
- });
-});
diff --git a/test/api/v3/unit/libs/stripePayments.test.js b/test/api/v3/unit/libs/stripePayments.test.js
deleted file mode 100644
index 75aaffafcb8..00000000000
--- a/test/api/v3/unit/libs/stripePayments.test.js
+++ /dev/null
@@ -1,1059 +0,0 @@
-import stripeModule from 'stripe';
-import cc from 'coupon-code';
-
-import {
- generateGroup,
-} from '../../../../helpers/api-unit.helper.js';
-import { model as User } from '../../../../../website/server/models/user';
-import { model as Group } from '../../../../../website/server/models/group';
-import { model as Coupon } from '../../../../../website/server/models/coupon';
-import stripePayments from '../../../../../website/server/libs/stripePayments';
-import payments from '../../../../../website/server/libs/payments';
-import common from '../../../../../website/common';
-import logger from '../../../../../website/server/libs/logger';
-import { v4 as uuid } from 'uuid';
-import moment from 'moment';
-
-const i18n = common.i18n;
-
-describe('Stripe Payments', () => {
- let subKey = 'basic_3mo';
- let stripe = stripeModule('test');
-
- describe('checkout', () => {
- let stripeChargeStub, paymentBuyGemsStub, paymentCreateSubscritionStub;
- let user, gift, groupId, email, headers, coupon, customerIdResponse, token;
-
- beforeEach(() => {
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = 'customer-id';
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- token = 'test-token';
-
- customerIdResponse = 'example-customerIdResponse';
- let stripCustomerResponse = {
- id: customerIdResponse,
- };
- stripeChargeStub = sinon.stub(stripe.charges, 'create').returnsPromise().resolves(stripCustomerResponse);
- paymentBuyGemsStub = sinon.stub(payments, 'buyGems').returnsPromise().resolves({});
- paymentCreateSubscritionStub = sinon.stub(payments, 'createSubscription').returnsPromise().resolves({});
- });
-
- afterEach(() => {
- stripe.charges.create.restore();
- payments.buyGems.restore();
- payments.createSubscription.restore();
- });
-
- it('should error if gem amount is too low', async () => {
- let receivingUser = new User();
- receivingUser.save();
- gift = {
- type: 'gems',
- gems: {
- amount: 0,
- uuid: receivingUser._id,
- },
- };
-
- await expect(stripePayments.checkout({
- token,
- user,
- gift,
- groupId,
- email,
- headers,
- coupon,
- }, stripe))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- message: 'Amount must be at least 1.',
- name: 'BadRequest',
- });
- });
-
-
- it('should error if user cannot get gems', async () => {
- gift = undefined;
- sinon.stub(user, 'canGetGems').returnsPromise().resolves(false);
-
- await expect(stripePayments.checkout({
- token,
- user,
- gift,
- groupId,
- email,
- headers,
- coupon,
- }, stripe)).to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- message: i18n.t('groupPolicyCannotGetGems'),
- name: 'NotAuthorized',
- });
- });
-
- it('should purchase gems', async () => {
- gift = undefined;
- sinon.stub(user, 'canGetGems').returnsPromise().resolves(true);
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- expect(stripeChargeStub).to.be.calledOnce;
- expect(stripeChargeStub).to.be.calledWith({
- amount: 500,
- currency: 'usd',
- card: token,
- });
-
- expect(paymentBuyGemsStub).to.be.calledOnce;
- expect(paymentBuyGemsStub).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Stripe',
- gift,
- });
- expect(user.canGetGems).to.be.calledOnce;
- user.canGetGems.restore();
- });
-
- it('should gift gems', async () => {
- let receivingUser = new User();
- await receivingUser.save();
- gift = {
- type: 'gems',
- uuid: receivingUser._id,
- gems: {
- amount: 16,
- },
- };
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- expect(stripeChargeStub).to.be.calledOnce;
- expect(stripeChargeStub).to.be.calledWith({
- amount: '400',
- currency: 'usd',
- card: token,
- });
-
- expect(paymentBuyGemsStub).to.be.calledOnce;
- expect(paymentBuyGemsStub).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Gift',
- gift,
- });
- });
-
- it('should gift a subscription', async () => {
- let receivingUser = new User();
- receivingUser.save();
- gift = {
- type: 'subscription',
- subscription: {
- key: subKey,
- uuid: receivingUser._id,
- },
- };
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- gift.member = receivingUser;
- expect(stripeChargeStub).to.be.calledOnce;
- expect(stripeChargeStub).to.be.calledWith({
- amount: '1500',
- currency: 'usd',
- card: token,
- });
-
- expect(paymentCreateSubscritionStub).to.be.calledOnce;
- expect(paymentCreateSubscritionStub).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Gift',
- gift,
- });
- });
- });
-
- describe('checkout with subscription', () => {
- let user, group, data, gift, sub, groupId, email, headers, coupon, customerIdResponse, subscriptionId, token;
- let spy;
- let stripeCreateCustomerSpy;
- let stripePaymentsCreateSubSpy;
-
- beforeEach(async () => {
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = 'customer-id';
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = 'customer-id';
- group.purchased.plan.planId = subKey;
- await group.save();
-
- sub = {
- key: 'basic_3mo',
- };
-
- data = {
- user,
- sub,
- customerId: 'customer-id',
- paymentMethod: 'Payment Method',
- };
-
- email = 'example@example.com';
- customerIdResponse = 'test-id';
- subscriptionId = 'test-sub-id';
- token = 'test-token';
-
- spy = sinon.stub(stripe.subscriptions, 'update');
- spy.returnsPromise().resolves;
-
- stripeCreateCustomerSpy = sinon.stub(stripe.customers, 'create');
- let stripCustomerResponse = {
- id: customerIdResponse,
- subscriptions: {
- data: [{id: subscriptionId}],
- },
- };
- stripeCreateCustomerSpy.returnsPromise().resolves(stripCustomerResponse);
-
- stripePaymentsCreateSubSpy = sinon.stub(payments, 'createSubscription');
- stripePaymentsCreateSubSpy.returnsPromise().resolves({});
-
- data.groupId = group._id;
- data.sub.quantity = 3;
- });
-
- afterEach(function () {
- sinon.restore(stripe.subscriptions.update);
- stripe.customers.create.restore();
- payments.createSubscription.restore();
- });
-
- it('should throw an error if we are missing a token', async () => {
- await expect(stripePayments.checkout({
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: 'Missing req.body.id',
- });
- });
-
- it('should throw an error when coupon code is missing', async () => {
- sub.discount = 40;
-
- await expect(stripePayments.checkout({
- token,
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: i18n.t('couponCodeRequired'),
- });
- });
-
- it('should throw an error when coupon code is invalid', async () => {
- sub.discount = 40;
- sub.key = 'google_6mo';
- coupon = 'example-coupon';
-
- let couponModel = new Coupon();
- couponModel.event = 'google_6mo';
- await couponModel.save();
-
- sinon.stub(cc, 'validate').returns('invalid');
-
- await expect(stripePayments.checkout({
- token,
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: i18n.t('invalidCoupon'),
- });
- cc.validate.restore();
- });
-
- it('subscribes with amazon with a coupon', async () => {
- sub.discount = 40;
- sub.key = 'google_6mo';
- coupon = 'example-coupon';
-
- let couponModel = new Coupon();
- couponModel.event = 'google_6mo';
- let updatedCouponModel = await couponModel.save();
-
- sinon.stub(cc, 'validate').returns(updatedCouponModel._id);
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- expect(stripeCreateCustomerSpy).to.be.calledOnce;
- expect(stripeCreateCustomerSpy).to.be.calledWith({
- email,
- metadata: { uuid: user._id },
- card: token,
- plan: sub.key,
- });
-
- expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
- expect(stripePaymentsCreateSubSpy).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Stripe',
- sub,
- headers,
- groupId: undefined,
- subscriptionId: undefined,
- });
-
- cc.validate.restore();
- });
-
- it('subscribes a user', async () => {
- sub = data.sub;
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- expect(stripeCreateCustomerSpy).to.be.calledOnce;
- expect(stripeCreateCustomerSpy).to.be.calledWith({
- email,
- metadata: { uuid: user._id },
- card: token,
- plan: sub.key,
- });
-
- expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
- expect(stripePaymentsCreateSubSpy).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Stripe',
- sub,
- headers,
- groupId: undefined,
- subscriptionId: undefined,
- });
- });
-
- it('subscribes a group', async () => {
- token = 'test-token';
- sub = data.sub;
- groupId = group._id;
- email = 'test@test.com';
- headers = {};
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- expect(stripeCreateCustomerSpy).to.be.calledOnce;
- expect(stripeCreateCustomerSpy).to.be.calledWith({
- email,
- metadata: { uuid: user._id },
- card: token,
- plan: sub.key,
- quantity: 3,
- });
-
- expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
- expect(stripePaymentsCreateSubSpy).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Stripe',
- sub,
- headers,
- groupId,
- subscriptionId,
- });
- });
-
- it('subscribes a group with the correct number of group members', async () => {
- token = 'test-token';
- sub = data.sub;
- groupId = group._id;
- email = 'test@test.com';
- headers = {};
- user = new User();
- user.guilds.push(groupId);
- await user.save();
- group.memberCount = 2;
- await group.save();
-
- await stripePayments.checkout({
- token,
- user,
- gift,
- sub,
- groupId,
- email,
- headers,
- coupon,
- }, stripe);
-
- expect(stripeCreateCustomerSpy).to.be.calledOnce;
- expect(stripeCreateCustomerSpy).to.be.calledWith({
- email,
- metadata: { uuid: user._id },
- card: token,
- plan: sub.key,
- quantity: 4,
- });
-
- expect(stripePaymentsCreateSubSpy).to.be.calledOnce;
- expect(stripePaymentsCreateSubSpy).to.be.calledWith({
- user,
- customerId: customerIdResponse,
- paymentMethod: 'Stripe',
- sub,
- headers,
- groupId,
- subscriptionId,
- });
- });
- });
-
- describe('edit subscription', () => {
- let user, groupId, group, token;
-
- beforeEach(async () => {
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = 'customer-id';
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = 'customer-id';
- group.purchased.plan.planId = subKey;
- await group.save();
-
- groupId = group._id;
-
- token = 'test-token';
- });
-
- it('throws an error if there is no customer id', async () => {
- user.purchased.plan.customerId = undefined;
-
- await expect(stripePayments.editSubscription({
- user,
- groupId: undefined,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('missingSubscription'),
- });
- });
-
- it('throws an error if a token is not provided', async () => {
- await expect(stripePayments.editSubscription({
- user,
- groupId: undefined,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 400,
- name: 'BadRequest',
- message: 'Missing req.body.id',
- });
- });
-
- it('throws an error if the group is not found', async () => {
- await expect(stripePayments.editSubscription({
- token,
- user,
- groupId: 'fake-group',
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 404,
- name: 'NotFound',
- message: i18n.t('groupNotFound'),
- });
- });
-
- it('throws an error if user is not the group leader', async () => {
- let nonLeader = new User();
- nonLeader.guilds.push(groupId);
- await nonLeader.save();
-
- await expect(stripePayments.editSubscription({
- token,
- user: nonLeader,
- groupId,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('onlyGroupLeaderCanManageSubscription'),
- });
- });
-
- describe('success', () => {
- let stripeListSubscriptionStub, stripeUpdateSubscriptionStub, subscriptionId;
-
- beforeEach(() => {
- subscriptionId = 'subId';
- stripeListSubscriptionStub = sinon.stub(stripe.customers, 'listSubscriptions')
- .returnsPromise().resolves({
- data: [{id: subscriptionId}],
- });
-
- stripeUpdateSubscriptionStub = sinon.stub(stripe.customers, 'updateSubscription').returnsPromise().resolves({});
- });
-
- afterEach(() => {
- stripe.customers.listSubscriptions.restore();
- stripe.customers.updateSubscription.restore();
- });
-
- it('edits a user subscription', async () => {
- await stripePayments.editSubscription({
- token,
- user,
- groupId: undefined,
- }, stripe);
-
- expect(stripeListSubscriptionStub).to.be.calledOnce;
- expect(stripeListSubscriptionStub).to.be.calledWith(user.purchased.plan.customerId);
- expect(stripeUpdateSubscriptionStub).to.be.calledOnce;
- expect(stripeUpdateSubscriptionStub).to.be.calledWith(
- user.purchased.plan.customerId,
- subscriptionId,
- { card: token }
- );
- });
-
- it('edits a group subscription', async () => {
- await stripePayments.editSubscription({
- token,
- user,
- groupId,
- }, stripe);
-
- expect(stripeListSubscriptionStub).to.be.calledOnce;
- expect(stripeListSubscriptionStub).to.be.calledWith(group.purchased.plan.customerId);
- expect(stripeUpdateSubscriptionStub).to.be.calledOnce;
- expect(stripeUpdateSubscriptionStub).to.be.calledWith(
- group.purchased.plan.customerId,
- subscriptionId,
- { card: token }
- );
- });
- });
- });
-
- describe('cancel subscription', () => {
- let user, groupId, group;
-
- beforeEach(async () => {
- user = new User();
- user.profile.name = 'sender';
- user.purchased.plan.customerId = 'customer-id';
- user.purchased.plan.planId = subKey;
- user.purchased.plan.lastBillingDate = new Date();
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- group.purchased.plan.customerId = 'customer-id';
- group.purchased.plan.planId = subKey;
- await group.save();
-
- groupId = group._id;
- });
-
- it('throws an error if there is no customer id', async () => {
- user.purchased.plan.customerId = undefined;
-
- await expect(stripePayments.cancelSubscription({
- user,
- groupId: undefined,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('missingSubscription'),
- });
- });
-
- it('throws an error if the group is not found', async () => {
- await expect(stripePayments.cancelSubscription({
- user,
- groupId: 'fake-group',
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 404,
- name: 'NotFound',
- message: i18n.t('groupNotFound'),
- });
- });
-
- it('throws an error if user is not the group leader', async () => {
- let nonLeader = new User();
- nonLeader.guilds.push(groupId);
- await nonLeader.save();
-
- await expect(stripePayments.cancelSubscription({
- user: nonLeader,
- groupId,
- }))
- .to.eventually.be.rejected.and.to.eql({
- httpCode: 401,
- name: 'NotAuthorized',
- message: i18n.t('onlyGroupLeaderCanManageSubscription'),
- });
- });
-
- describe('success', () => {
- let stripeDeleteCustomerStub, paymentsCancelSubStub, stripeRetrieveStub, subscriptionId, currentPeriodEndTimeStamp;
-
- beforeEach(() => {
- subscriptionId = 'subId';
- stripeDeleteCustomerStub = sinon.stub(stripe.customers, 'del').returnsPromise().resolves({});
- paymentsCancelSubStub = sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
-
- currentPeriodEndTimeStamp = (new Date()).getTime();
- stripeRetrieveStub = sinon.stub(stripe.customers, 'retrieve')
- .returnsPromise().resolves({
- subscriptions: {
- data: [{id: subscriptionId, current_period_end: currentPeriodEndTimeStamp}], // eslint-disable-line camelcase
- },
- });
- });
-
- afterEach(() => {
- stripe.customers.del.restore();
- stripe.customers.retrieve.restore();
- payments.cancelSubscription.restore();
- });
-
- it('cancels a user subscription', async () => {
- await stripePayments.cancelSubscription({
- user,
- groupId: undefined,
- }, stripe);
-
- expect(stripeDeleteCustomerStub).to.be.calledOnce;
- expect(stripeDeleteCustomerStub).to.be.calledWith(user.purchased.plan.customerId);
- expect(stripeRetrieveStub).to.be.calledOnce;
- expect(stripeRetrieveStub).to.be.calledWith(user.purchased.plan.customerId);
- expect(paymentsCancelSubStub).to.be.calledOnce;
- expect(paymentsCancelSubStub).to.be.calledWith({
- user,
- groupId: undefined,
- nextBill: currentPeriodEndTimeStamp * 1000, // timestamp in seconds
- paymentMethod: 'Stripe',
- cancellationReason: undefined,
- });
- });
-
- it('cancels a group subscription', async () => {
- await stripePayments.cancelSubscription({
- user,
- groupId,
- }, stripe);
-
- expect(stripeDeleteCustomerStub).to.be.calledOnce;
- expect(stripeDeleteCustomerStub).to.be.calledWith(group.purchased.plan.customerId);
- expect(stripeRetrieveStub).to.be.calledOnce;
- expect(stripeRetrieveStub).to.be.calledWith(user.purchased.plan.customerId);
- expect(paymentsCancelSubStub).to.be.calledOnce;
- expect(paymentsCancelSubStub).to.be.calledWith({
- user,
- groupId,
- nextBill: currentPeriodEndTimeStamp * 1000, // timestamp in seconds
- paymentMethod: 'Stripe',
- cancellationReason: undefined,
- });
- });
- });
- });
-
- describe('#upgradeGroupPlan', () => {
- let spy, data, user, group;
-
- beforeEach(async function () {
- user = new User();
- user.profile.name = 'sender';
-
- data = {
- user,
- sub: {
- key: 'basic_3mo', // @TODO: Validate that this is group
- },
- customerId: 'customer-id',
- paymentMethod: 'Payment Method',
- headers: {
- 'x-client': 'habitica-web',
- 'user-agent': '',
- },
- };
-
- group = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: user._id,
- });
- await group.save();
-
- spy = sinon.stub(stripe.subscriptions, 'update');
- spy.returnsPromise().resolves([]);
- data.groupId = group._id;
- data.sub.quantity = 3;
- stripePayments.setStripeApi(stripe);
- });
-
- afterEach(function () {
- sinon.restore(stripe.subscriptions.update);
- });
-
- it('updates a group plan quantity', async () => {
- data.paymentMethod = 'Stripe';
- await payments.createSubscription(data);
-
- let updatedGroup = await Group.findById(group._id).exec();
- expect(updatedGroup.purchased.plan.quantity).to.eql(3);
-
- updatedGroup.memberCount += 1;
- await updatedGroup.save();
-
- await stripePayments.chargeForAdditionalGroupMember(updatedGroup);
-
- expect(spy.calledOnce).to.be.true;
- expect(updatedGroup.purchased.plan.quantity).to.eql(4);
- });
- });
-
- describe('handleWebhooks', () => {
- describe('all events', () => {
- const eventType = 'account.updated';
- const event = {id: 123};
- const eventRetrieved = {type: eventType};
-
- beforeEach(() => {
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves(eventRetrieved);
- sinon.stub(logger, 'error');
- });
-
- afterEach(() => {
- stripe.events.retrieve.restore();
- logger.error.restore();
- });
-
- it('logs an error if an unsupported webhook event is passed', async () => {
- const error = new Error(`Missing handler for Stripe webhook ${eventType}`);
- await stripePayments.handleWebhooks({requestBody: event}, stripe);
- expect(logger.error).to.have.been.called.once;
- expect(logger.error).to.have.been.calledWith(error, {event: eventRetrieved});
- });
-
- it('retrieves and validates the event from Stripe', async () => {
- await stripePayments.handleWebhooks({requestBody: event}, stripe);
- expect(stripe.events.retrieve).to.have.been.called.once;
- expect(stripe.events.retrieve).to.have.been.calledWith(event.id);
- });
- });
-
- describe('customer.subscription.deleted', () => {
- const eventType = 'customer.subscription.deleted';
-
- beforeEach(() => {
- sinon.stub(stripe.customers, 'del').returnsPromise().resolves({});
- sinon.stub(payments, 'cancelSubscription').returnsPromise().resolves({});
- });
-
- afterEach(() => {
- stripe.customers.del.restore();
- payments.cancelSubscription.restore();
- });
-
- it('does not do anything if event.request is null (subscription cancelled manually)', async () => {
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
- id: 123,
- type: eventType,
- request: 123,
- });
-
- await stripePayments.handleWebhooks({requestBody: {}}, stripe);
-
- expect(stripe.events.retrieve).to.have.been.called.once;
- expect(stripe.customers.del).to.not.have.been.called;
- expect(payments.cancelSubscription).to.not.have.been.called;
- stripe.events.retrieve.restore();
- });
-
- describe('user subscription', () => {
- it('throws an error if the user is not found', async () => {
- const customerId = 456;
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
- id: 123,
- type: eventType,
- data: {
- object: {
- plan: {
- id: 'basic_earned',
- },
- customer: customerId,
- },
- },
- request: null,
- });
-
- await expect(stripePayments.handleWebhooks({requestBody: {}}, stripe)).to.eventually.be.rejectedWith({
- message: i18n.t('userNotFound'),
- httpCode: 404,
- name: 'NotFound',
- });
-
- expect(stripe.customers.del).to.not.have.been.called;
- expect(payments.cancelSubscription).to.not.have.been.called;
-
- stripe.events.retrieve.restore();
- });
-
- it('deletes the customer on Stripe and calls payments.cancelSubscription', async () => {
- const customerId = '456';
-
- let subscriber = new User();
- subscriber.purchased.plan.customerId = customerId;
- subscriber.purchased.plan.paymentMethod = 'Stripe';
- await subscriber.save();
-
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
- id: 123,
- type: eventType,
- data: {
- object: {
- plan: {
- id: 'basic_earned',
- },
- customer: customerId,
- },
- },
- request: null,
- });
-
- await stripePayments.handleWebhooks({requestBody: {}}, stripe);
-
- expect(stripe.customers.del).to.have.been.calledOnce;
- expect(stripe.customers.del).to.have.been.calledWith(customerId);
- expect(payments.cancelSubscription).to.have.been.calledOnce;
-
- let cancelSubscriptionOpts = payments.cancelSubscription.lastCall.args[0];
- expect(cancelSubscriptionOpts.user._id).to.equal(subscriber._id);
- expect(cancelSubscriptionOpts.paymentMethod).to.equal('Stripe');
- expect(Math.round(moment(cancelSubscriptionOpts.nextBill).diff(new Date(), 'days', true))).to.equal(3);
- expect(cancelSubscriptionOpts.groupId).to.be.undefined;
-
- stripe.events.retrieve.restore();
- });
- });
-
- describe('group plan subscription', () => {
- it('throws an error if the group is not found', async () => {
- const customerId = 456;
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
- id: 123,
- type: eventType,
- data: {
- object: {
- plan: {
- id: 'group_monthly',
- },
- customer: customerId,
- },
- },
- request: null,
- });
-
- await expect(stripePayments.handleWebhooks({requestBody: {}}, stripe)).to.eventually.be.rejectedWith({
- message: i18n.t('groupNotFound'),
- httpCode: 404,
- name: 'NotFound',
- });
-
- expect(stripe.customers.del).to.not.have.been.called;
- expect(payments.cancelSubscription).to.not.have.been.called;
-
- stripe.events.retrieve.restore();
- });
-
- it('throws an error if the group leader is not found', async () => {
- const customerId = 456;
-
- let subscriber = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: uuid(),
- });
- subscriber.purchased.plan.customerId = customerId;
- subscriber.purchased.plan.paymentMethod = 'Stripe';
- await subscriber.save();
-
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
- id: 123,
- type: eventType,
- data: {
- object: {
- plan: {
- id: 'group_monthly',
- },
- customer: customerId,
- },
- },
- request: null,
- });
-
- await expect(stripePayments.handleWebhooks({requestBody: {}}, stripe)).to.eventually.be.rejectedWith({
- message: i18n.t('userNotFound'),
- httpCode: 404,
- name: 'NotFound',
- });
-
- expect(stripe.customers.del).to.not.have.been.called;
- expect(payments.cancelSubscription).to.not.have.been.called;
-
- stripe.events.retrieve.restore();
- });
-
- it('deletes the customer on Stripe and calls payments.cancelSubscription', async () => {
- const customerId = '456';
-
- let leader = new User();
- await leader.save();
-
- let subscriber = generateGroup({
- name: 'test group',
- type: 'guild',
- privacy: 'public',
- leader: leader._id,
- });
- subscriber.purchased.plan.customerId = customerId;
- subscriber.purchased.plan.paymentMethod = 'Stripe';
- await subscriber.save();
-
- sinon.stub(stripe.events, 'retrieve').returnsPromise().resolves({
- id: 123,
- type: eventType,
- data: {
- object: {
- plan: {
- id: 'group_monthly',
- },
- customer: customerId,
- },
- },
- request: null,
- });
-
- await stripePayments.handleWebhooks({requestBody: {}}, stripe);
-
- expect(stripe.customers.del).to.have.been.calledOnce;
- expect(stripe.customers.del).to.have.been.calledWith(customerId);
- expect(payments.cancelSubscription).to.have.been.calledOnce;
-
- let cancelSubscriptionOpts = payments.cancelSubscription.lastCall.args[0];
- expect(cancelSubscriptionOpts.user._id).to.equal(leader._id);
- expect(cancelSubscriptionOpts.paymentMethod).to.equal('Stripe');
- expect(Math.round(moment(cancelSubscriptionOpts.nextBill).diff(new Date(), 'days', true))).to.equal(3);
- expect(cancelSubscriptionOpts.groupId).to.equal(subscriber._id);
-
- stripe.events.retrieve.restore();
- });
- });
- });
- });
-});
diff --git a/test/api/v3/unit/middlewares/ensureAccessRight.test.js b/test/api/v3/unit/middlewares/ensureAccessRight.test.js
index f4cf909a956..4421b82a3e8 100644
--- a/test/api/v3/unit/middlewares/ensureAccessRight.test.js
+++ b/test/api/v3/unit/middlewares/ensureAccessRight.test.js
@@ -7,6 +7,7 @@ import {
import i18n from '../../../../../website/common/script/i18n';
import { ensureAdmin, ensureSudo } from '../../../../../website/server/middlewares/ensureAccessRight';
import { NotAuthorized } from '../../../../../website/server/libs/errors';
+import apiMessages from '../../../../../website/server/libs/apiMessages';
describe('ensure access middlewares', () => {
let res, req, next;
@@ -42,7 +43,7 @@ describe('ensure access middlewares', () => {
ensureSudo(req, res, next);
- expect(next).to.be.calledWith(new NotAuthorized(i18n.t('noSudoAccess')));
+ expect(next).to.be.calledWith(new NotAuthorized(apiMessages('noSudoAccess')));
});
it('passes when user is a sudo user', () => {
diff --git a/test/api/v3/unit/models/group.test.js b/test/api/v3/unit/models/group.test.js
index a2db74fcc20..db44574a8ba 100644
--- a/test/api/v3/unit/models/group.test.js
+++ b/test/api/v3/unit/models/group.test.js
@@ -391,6 +391,20 @@ describe('Group Model', () => {
expect(party.quest.progress.collect.soapBars).to.eq(5);
});
+ it('does not drop an item if not need when on a collection quest', async () => {
+ party.quest.key = 'dilatoryDistress1';
+ party.quest.active = false;
+ await party.startQuest(questLeader);
+ party.quest.progress.collect.fireCoral = 20;
+ await party.save();
+
+ await Group.processQuestProgress(participatingMember, progress);
+
+ party = await Group.findOne({_id: party._id});
+
+ expect(party.quest.progress.collect.fireCoral).to.eq(20);
+ });
+
it('sends a chat message about progress', async () => {
await Group.processQuestProgress(participatingMember, progress);
diff --git a/test/api/v3/unit/models/user.test.js b/test/api/v3/unit/models/user.test.js
index 98abc11a4cf..6be822fc8da 100644
--- a/test/api/v3/unit/models/user.test.js
+++ b/test/api/v3/unit/models/user.test.js
@@ -323,4 +323,48 @@ describe('User Model', () => {
expect(user.achievements.beastMaster).to.not.equal(true);
});
});
+
+ context('days missed', () => {
+ // http://forbrains.co.uk/international_tools/earth_timezones
+ let user;
+
+ beforeEach(() => {
+ user = new User();
+ });
+
+ it('should not cron early when going back a timezone', () => {
+ const yesterday = moment('2017-12-05T00:00:00.000-06:00'); // 11 pm on 4 Texas
+ const timezoneOffset = moment().zone('-06:00').zone();
+ user.lastCron = yesterday;
+ user.preferences.timezoneOffset = timezoneOffset;
+
+ const today = moment('2017-12-06T00:00:00.000-06:00'); // 11 pm on 4 Texas
+ const req = {};
+ req.header = () => {
+ return timezoneOffset + 60;
+ };
+
+ const {daysMissed} = user.daysUserHasMissed(today, req);
+
+ expect(daysMissed).to.eql(0);
+ });
+
+ it('should not cron early when going back a timezone with a custom day start', () => {
+ const yesterday = moment('2017-12-05T02:00:00.000-08:00');
+ const timezoneOffset = moment().zone('-08:00').zone();
+ user.lastCron = yesterday;
+ user.preferences.timezoneOffset = timezoneOffset;
+ user.preferences.dayStart = 2;
+
+ const today = moment('2017-12-06T02:00:00.000-08:00');
+ const req = {};
+ req.header = () => {
+ return timezoneOffset + 60;
+ };
+
+ const {daysMissed} = user.daysUserHasMissed(today, req);
+
+ expect(daysMissed).to.eql(0);
+ });
+ });
});
diff --git a/test/client/unit/specs/components/groups/membersModal.js b/test/client/unit/specs/components/groups/membersModal.js
new file mode 100644
index 00000000000..79d57e70a31
--- /dev/null
+++ b/test/client/unit/specs/components/groups/membersModal.js
@@ -0,0 +1,31 @@
+import Vue from 'vue';
+import MembersModalComponent from 'client/components/groups/membersModal.vue';
+
+describe('Members Modal Component', () => {
+ describe('Party Sort', () => {
+ let CTor;
+ let vm;
+
+ beforeEach(() => {
+ CTor = Vue.extend(MembersModalComponent);
+ vm = new CTor().$mount();
+ });
+
+ afterEach(() => {
+ vm.$destroy();
+ });
+
+ it('should have an empty object as sort-option at start', () => {
+ const defaultData = vm.data();
+ expect(defaultData.sortOption).to.eq({});
+ });
+
+ it('should accept sort-option object', () => {
+ const sortOption = vm.data().sortOption[0];
+ vm.sort(sortOption);
+ Vue.nextTick(() => {
+ expect(vm.data().sortOption).to.eq(sortOption);
+ });
+ });
+ });
+});
diff --git a/test/common/libs/shops.js b/test/common/libs/shops.js
index f3b5dce7240..c04fad0bd67 100644
--- a/test/common/libs/shops.js
+++ b/test/common/libs/shops.js
@@ -34,6 +34,31 @@ describe('shops', () => {
});
});
});
+
+ it('shows relevant non class gear in special category', () => {
+ let contributor = generateUser({
+ contributor: {
+ level: 7,
+ critical: true,
+ },
+ items: {
+ gear: {
+ owned: {
+ weapon_armoire_basicCrossbow: true, // eslint-disable-line camelcase
+ },
+ },
+ },
+ });
+
+ let gearCategories = shared.shops.getMarketGearCategories(contributor);
+ let specialCategory = gearCategories.find(o => o.identifier === 'none');
+ expect(specialCategory.items.find((item) => item.key === 'weapon_special_1'));
+ expect(specialCategory.items.find((item) => item.key === 'armor_special_1'));
+ expect(specialCategory.items.find((item) => item.key === 'head_special_1'));
+ expect(specialCategory.items.find((item) => item.key === 'shield_special_1'));
+ expect(specialCategory.items.find((item) => item.key === 'weapon_special_critical'));
+ expect(specialCategory.items.find((item) => item.key === 'weapon_armoire_basicCrossbow'));// eslint-disable-line camelcase
+ });
});
describe('questShop', () => {
diff --git a/test/common/ops/addTask.js b/test/common/ops/addTask.js
index d8301a4b351..9d5e1d7a8e2 100644
--- a/test/common/ops/addTask.js
+++ b/test/common/ops/addTask.js
@@ -38,7 +38,7 @@ describe('shared.ops.addTask', () => {
expect(habit.counterDown).to.equal(0);
});
- it('adds an habtit when type is invalid', () => {
+ it('adds a habit when type is invalid', () => {
let habit = addTask(user, {
body: {
type: 'invalid',
diff --git a/vagrant_scripts/install_node.sh b/vagrant_scripts/install_node.sh
old mode 100644
new mode 100755
diff --git a/webpack/config/index.js b/webpack/config/index.js
index 4a05a1d9dc0..ff54852be9d 100644
--- a/webpack/config/index.js
+++ b/webpack/config/index.js
@@ -3,6 +3,14 @@ const path = require('path');
const staticAssetsDirectory = './website/static/.'; // The folder where static files (not processed) live
const prodEnv = require('./prod.env');
const devEnv = require('./dev.env');
+const nconf = require('nconf');
+const setupNconf = require('../../website/server/libs/setupNconf');
+
+let configFile = path.join(path.resolve(__dirname, '../../config.json'));
+
+setupNconf(configFile);
+
+const DEV_BASE_URL = nconf.get('BASE_URL');
module.exports = {
build: {
@@ -33,25 +41,25 @@ module.exports = {
assetsPublicPath: '/',
staticAssetsDirectory,
proxyTable: {
- // proxy all requests starting with /api/v3 to localhost:3000
+ // proxy all requests starting with /api/v3 to IP:PORT as specified in the top-level config
'/api/v3': {
- target: 'http://localhost:3000',
+ target: DEV_BASE_URL,
changeOrigin: true,
},
'/stripe': {
- target: 'http://localhost:3000',
+ target: DEV_BASE_URL,
changeOrigin: true,
},
'/amazon': {
- target: 'http://localhost:3000',
+ target: DEV_BASE_URL,
changeOrigin: true,
},
'/paypal': {
- target: 'http://localhost:3000',
+ target: DEV_BASE_URL,
changeOrigin: true,
},
'/logout': {
- target: 'http://localhost:3000',
+ target: DEV_BASE_URL,
changeOrigin: true,
},
},
diff --git a/webpack/config/prod.env.js b/webpack/config/prod.env.js
index ea7ffdd0be3..ca5c502e1dc 100644
--- a/webpack/config/prod.env.js
+++ b/webpack/config/prod.env.js
@@ -1,17 +1,11 @@
const nconf = require('nconf');
const { join, resolve } = require('path');
+const setupNconf = require('../../website/server/libs/setupNconf');
const PATH_TO_CONFIG = join(resolve(__dirname, '../../config.json'));
let configFile = PATH_TO_CONFIG;
-nconf
- .argv()
- .env()
- .file('user', configFile);
-
-nconf.set('IS_PROD', nconf.get('NODE_ENV') === 'production');
-nconf.set('IS_DEV', nconf.get('NODE_ENV') === 'development');
-nconf.set('IS_TEST', nconf.get('NODE_ENV') === 'test');
+setupNconf(configFile);
// @TODO: Check if we can import from client. Items like admin emails can be imported
// and that should be prefered
@@ -40,7 +34,7 @@ let env = {
},
};
-'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY PUSHER:KEY PUSHER:ENABLED'
+'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY PUSHER:KEY PUSHER:ENABLED LOGGLY_CLIENT_TOKEN'
.split(' ')
.forEach(key => {
env[key] = `"${nconf.get(key)}"`;
diff --git a/webpack/webpack.base.conf.js b/webpack/webpack.base.conf.js
index 8ad3c973e2d..773d3bbd80b 100644
--- a/webpack/webpack.base.conf.js
+++ b/webpack/webpack.base.conf.js
@@ -11,7 +11,7 @@ const IS_PROD = process.env.NODE_ENV === 'production';
const baseConfig = {
entry: {
- app: './website/client/main.js',
+ app: ['babel-polyfill', './website/client/main.js'],
},
output: {
path: config.build.assetsRoot,
diff --git a/webpack/webpack.dev.conf.js b/webpack/webpack.dev.conf.js
index 16e9d116c3d..75d6741d084 100644
--- a/webpack/webpack.dev.conf.js
+++ b/webpack/webpack.dev.conf.js
@@ -7,7 +7,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin');
// add hot-reload related code to entry chunks
Object.keys(baseWebpackConfig.entry).forEach((name) => {
- baseWebpackConfig.entry[name] = ['./webpack/dev-client'].concat(baseWebpackConfig.entry[name]);
+ baseWebpackConfig.entry[name] = baseWebpackConfig.entry[name].concat('./webpack/dev-client');
});
module.exports = merge(baseWebpackConfig, {
diff --git a/website/client/app.vue b/website/client/app.vue
index b81f340cd97..e37c6a8abb1 100644
--- a/website/client/app.vue
+++ b/website/client/app.vue
@@ -1,37 +1,72 @@
-#app(:class='{"casting-spell": castingSpell}')
- snackbars
- router-view(v-if="!isUserLoggedIn || isStaticPage")
- template(v-else)
- template(v-if="isUserLoaded")
- notifications-display
- app-menu
- .container-fluid
- app-header
- buyModal(
- :item="selectedItemToBuy || {}",
- :withPin="true",
- @change="resetItemToBuy($event)",
- @buyPressed="customPurchase($event)",
- :genericPurchase="genericPurchase(selectedItemToBuy)",
-
- )
- selectMembersModal(
- :item="selectedSpellToBuy || {}",
- :group="user.party",
- @memberSelected="memberSelected($event)",
- )
-
- div(:class='{sticky: user.preferences.stickyHeader}')
- router-view
- app-footer
-
- audio#sound(autoplay, ref="sound")
- source#oggSource(type="audio/ogg", :src="sound.oggSource")
- source#mp3Source(type="audio/mp3", :src="sound.mp3Source")
+div
+ #loading-screen-inapp(v-if='loading')
+ .row
+ .col-12.text-center
+ svg#melior(xmlns='http://www.w3.org/2000/svg', viewbox='0 0 61.91 64')
+ path(d='M61.82,64H51.59c-3.08,0-3.72.37-3.67-1,0.07-1.87.67-1.94,2.63-2.49,1.63-.45,1-3.35-0.8-5.88-1.28-1.76-3.89-3.81-7.31-2.22a10.75,10.75,0,0,0-4.56,3.52c-1.68,2.33-1.59,4.54,1,4.54s5.39-1.5,6.23.64c1,2.64.33,2.89-.18,2.89H28.55v0C19.77,64,11,63.93,9,58.38c-2.82-7.68,7.43-10.64,7.75-15.46,0.13-2-1-2.85-2.34-2.85h-6V36.41H4.7v-11H8.36V29.1H12v3.65h3.65v5.08a5.76,5.76,0,0,1,3.07,5.05c-0.17,5.51-9.5,8.57-7.79,14.35,1.56,5.29,13.37,4,13,.74L23.7,56.1c-0.06-2.62-.47-6.12.08-9.22C24.64,42,27.67,37.78,33,37.74c1,0,1.78-.21,1.78-1s-1.55-.84-2.64-0.95a23.35,23.35,0,0,1-12.56-5c-2.43-2-6.21-8.3-3.74-7.83a21.74,21.74,0,0,0,4.06.4c1.24,0,4.44-.35,4.44-1.11,0-1-1.85-.42-4.57-0.68C16.48,21.22,9.6,19.83,6,9.35,4.71,5.43,3.83-1.91,6,.46c12.46,13.7,16.69,11.47,23.84,16.16,3.15,2.06,5.19,7,7,6.58,1.2-.27.46-1.37,0.64-3.93C37.66,17,38.75,16.48,36,15.79c-3.26-.81-6.52-4.38-4.39-4.33a11.89,11.89,0,0,0,5.53-.76c1.87-.81,6.43-4.28,9.18-2.89s5.08-.6,6.94-0.25c2.71,0.51,3.41,4.24,3.05,6.42-0.22,1.38-.22,1.38-2,1.28-3.61-.21-4.53,2.67-2,4.25,3.87,2.42,5.51,4.23,6.56,9.58,0.51,2.6.1,3.2-.76,2.72s-2.34-.72-0.29,4-1.29,10.28-2.39,10.9a1.3,1.3,0,0,0-.91,1.34c0,11.42,0,12.27,1.92,12.48,2.9,0.31,4.14-1.44,5.27.06C63.29,62.73,63.41,64,61.82,64ZM4.7,21.28H1v3.65H4.7V21.28Z', transform='translate(-1.05)', fill='#fff')
+ .col-12.text-center
+ h2 {{$t('tipTitle', {tipNumber: currentTipNumber})}}
+ p {{currentTip}}
+ #app(:class='{"casting-spell": castingSpell}')
+ amazon-payments-modal
+ snackbars
+ router-view(v-if="!isUserLoggedIn || isStaticPage")
+ template(v-else)
+ template(v-if="isUserLoaded")
+ notifications-display
+ app-menu
+ .container-fluid
+ app-header
+ buyModal(
+ :item="selectedItemToBuy || {}",
+ :withPin="true",
+ @change="resetItemToBuy($event)",
+ @buyPressed="customPurchase($event)",
+ :genericPurchase="genericPurchase(selectedItemToBuy)",
+
+ )
+ selectMembersModal(
+ :item="selectedSpellToBuy || {}",
+ :group="user.party",
+ @memberSelected="memberSelected($event)",
+ )
+
+ div(:class='{sticky: user.preferences.stickyHeader}')
+ router-view
+ app-footer
+
+ audio#sound(autoplay, ref="sound")
+ source#oggSource(type="audio/ogg", :src="sound.oggSource")
+ source#mp3Source(type="audio/mp3", :src="sound.mp3Source")
-
diff --git a/website/client/components/challenges/challengeDetail.vue b/website/client/components/challenges/challengeDetail.vue
index 392f0c3f164..01f07bcb6d1 100644
--- a/website/client/components/challenges/challengeDetail.vue
+++ b/website/client/components/challenges/challengeDetail.vue
@@ -4,10 +4,9 @@
leave-challenge-modal(:challengeId='challenge._id')
close-challenge-modal(:members='members', :challengeId='challenge._id')
challenge-member-progress-modal(:memberId='progressMemberId', :challengeId='challenge._id')
-
- .col-8.standard-page
+ .col-12.col-md-8.standard-page
.row
- .col-8
+ .col-12.col-md-8
h1(v-markdown='challenge.name')
div
strong(v-once) {{$t('createdBy')}}:
@@ -20,7 +19,7 @@
// span {{challenge.endDate}}
.tags
span.tag(v-for='tag in challenge.tags') {{tag}}
- .col-4
+ .col-12.col-md-4
.box(@click="showMemberModal()")
.svg-icon.member-icon(v-html="icons.memberIcon")
| {{challenge.memberCount}}
@@ -30,13 +29,10 @@
| {{challenge.prize}}
.details(v-once) {{$t('prize')}}
.row.challenge-actions
- .col-7.offset-5
+ .col-12.col-md-7.offset-md-5
span.view-progress
strong {{ $t('viewProgressOf') }}
- b-dropdown.create-dropdown(text="Select a Participant")
- input.form-control(type='text', v-model='searchTerm')
- b-dropdown-item(v-for="member in memberResults", :key="member._id", @click="openMemberProgressModal(member._id)")
- | {{ member.profile.name }}
+ member-search-dropdown(:text="$t('selectParticipant')", :members='members', :challengeId='challengeId', @member-selected='openMemberProgressModal')
span(v-if='isLeader || isAdmin')
b-dropdown.create-dropdown(:text="$t('addTaskToChallenge')", :variant="'success'")
b-dropdown-item(v-for="type in columns", :key="type", @click="createTask(type)")
@@ -51,7 +47,6 @@
v-on:taskEdited='taskEdited',
@taskDestroyed='taskDestroyed'
)
-
.row
task-column.col-12.col-sm-6(
v-for="column in columns",
@@ -60,7 +55,7 @@
:taskListOverride='tasksByType[column]',
v-on:editTask="editTask",
v-if='tasksByType[column].length > 0')
- .col-4.sidebar.standard-page
+ .col-12.col-md-4.sidebar.standard-page
.acitons
div(v-if='canJoin')
button.btn.btn-success(v-once, @click='joinChallenge()') {{$t('joinChallenge')}}
@@ -185,6 +180,7 @@ import omit from 'lodash/omit';
import uuid from 'uuid';
import { mapState } from 'client/libs/store';
+import memberSearchDropdown from 'client/components/members/memberSearchDropdown';
import closeChallengeModal from './closeChallengeModal';
import Column from '../tasks/column';
import TaskModal from '../tasks/taskModal';
@@ -211,6 +207,7 @@ export default {
leaveChallengeModal,
challengeModal,
challengeMemberProgressModal,
+ memberSearchDropdown,
TaskColumn: Column,
TaskModal,
},
@@ -388,8 +385,8 @@ export default {
updatedChallenge (eventData) {
Object.assign(this.challenge, eventData.challenge);
},
- openMemberProgressModal (memberId) {
- this.progressMemberId = memberId;
+ openMemberProgressModal (member) {
+ this.progressMemberId = member._id;
this.$root.$emit('bv::show::modal', 'challenge-member-modal');
},
async exportChallengeCsv () {
diff --git a/website/client/components/challenges/challengeModal.vue b/website/client/components/challenges/challengeModal.vue
index 872b59f808e..8f39632badd 100644
--- a/website/client/components/challenges/challengeModal.vue
+++ b/website/client/components/challenges/challengeModal.vue
@@ -1,5 +1,5 @@
- b-modal#challenge-modal(:title="title", size='lg')
+ b-modal#challenge-modal(:title="title", size='lg', @shown="shown")
.form
.form-group
label
@@ -8,7 +8,7 @@
.form-group
label
strong(v-once) {{$t('shortName')}} *
- b-form-input(type="text", :placeholder="$t('shortNamePlaceholder')", v-model="workingChallenge.shortName" :disabled="!creating")
+ b-form-input(type="text", :placeholder="$t('shortNamePlaceholder')", v-model="workingChallenge.shortName")
.form-group
label
strong(v-once) {{$t('challengeSummary')}} *
@@ -36,12 +36,12 @@
:key="group.key",
v-if='group.key !== "habitica_official" || user.contributor.admin'
)
- label.custom-control.custom-checkbox
+ .custom-control.custom-checkbox
input.custom-control-input(type="checkbox",
- :value='group.key',
+ :value="group.key",
+ :id="group.key",
v-model="workingChallenge.categories")
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t(group.label) }}
+ label.custom-control-label(v-once, :for="group.key") {{ $t(group.label) }}
button.btn.btn-primary(@click.prevent="toggleCategorySelect") {{$t('close')}}
// @TODO: Implement in V2 .form-group
label
@@ -57,9 +57,10 @@
You do not have enough gems to create a Tavern challenge
// @TODO if buy gems button is added, add analytics tracking to it
// see https://github.com/HabitRPG/habitica/blob/develop/website/views/options/social/challenges.jade#L134
- button.btn.btn-primary(v-once, v-if='creating', @click='createChallenge()') {{$t('createChallengeCloneTasks')}}
- button.btn.btn-primary(v-once, v-if='!creating', @click='updateChallenge()') {{$t('updateChallenge')}}
- .col-12.text-center(v-if='creating')
+ button.btn.btn-primary(v-if='creating && !cloning', @click='createChallenge()', :disabled='loading') {{$t('createChallengeAddTasks')}}
+ button.btn.btn-primary(v-once, v-if='cloning', @click='createChallenge()', :disabled='loading') {{$t('createChallengeCloneTasks')}}
+ button.btn.btn-primary(v-once, v-if='!creating && !cloning', @click='updateChallenge()') {{$t('updateChallenge')}}
+ .col-12.text-center
p(v-once) {{$t('challengeMinimum')}}
@@ -123,7 +124,7 @@
}
.category-box {
- top: -120px !important;
+ top: 20em !important;
z-index: 10;
}
}
@@ -227,27 +228,11 @@ export default {
showCategorySelect: false,
categoryOptions,
categoriesHashByKey,
+ loading: false,
groups: [],
};
},
- async mounted () {
- this.groups = await this.$store.dispatch('guilds:getMyGuilds');
- if (this.user.party._id) {
- let party = await this.$store.dispatch('guilds:getGroup', {groupId: 'party'});
- this.groups.push({
- name: party.name,
- _id: party._id,
- privacy: 'private',
- });
- }
-
- this.groups.push({
- name: this.$t('publicChallengesTitle'),
- _id: TAVERN_ID,
- });
-
- this.setUpWorkingChallenge();
- },
+ async mounted () {},
watch: {
user () {
if (!this.challenge) this.workingChallenge.leader = this.user._id;
@@ -313,6 +298,25 @@ export default {
},
},
methods: {
+ async shown () {
+ this.groups = await this.$store.dispatch('guilds:getMyGuilds');
+ await this.$store.dispatch('party:getParty');
+ const party = this.$store.state.party.data;
+ if (party._id) {
+ this.groups.push({
+ name: party.name,
+ _id: party._id,
+ privacy: 'private',
+ });
+ }
+
+ this.groups.push({
+ name: this.$t('publicChallengesTitle'),
+ _id: TAVERN_ID,
+ });
+
+ this.setUpWorkingChallenge();
+ },
setUpWorkingChallenge () {
this.resetWorkingChallenge();
@@ -353,6 +357,7 @@ export default {
this.$store.state.workingChallenge = {};
},
async createChallenge () {
+ this.loading = true;
// @TODO: improve error handling, add it to updateChallenge, make errors translatable. Suggestion: `<% fieldName %> is required` where possible, where `fieldName` is inserted as the translatable string that's used for the field header.
let errors = [];
@@ -366,6 +371,7 @@ export default {
if (errors.length > 0) {
alert(errors.join('\n'));
+ this.loading = false;
return;
}
diff --git a/website/client/components/challenges/closeChallengeModal.vue b/website/client/components/challenges/closeChallengeModal.vue
index ea2d93e7568..736066ade72 100644
--- a/website/client/components/challenges/closeChallengeModal.vue
+++ b/website/client/components/challenges/closeChallengeModal.vue
@@ -10,10 +10,7 @@ div
.col-12
strong(v-once) {{$t('selectChallengeWinnersDescription')}}
.col-12
- b-dropdown.create-dropdown(:text="winnerText")
- input.form-control(type='text', v-model='searchTerm')
- b-dropdown-item(v-for="member in memberResults", :key="member._id", @click="selectMember(member)")
- | {{ member.profile.name }}
+ member-search-dropdown(:text='winnerText', :members='members', :challengeId='challengeId', @member-selected='selectMember')
.col-12
button.btn.btn-primary(v-once, @click='closeChallenge') {{$t('awardWinners')}}
.col-12
@@ -74,16 +71,16 @@ div
diff --git a/website/client/components/chat/chatMessages.vue b/website/client/components/chat/chatMessages.vue
index da3c2c29449..ddd2480197e 100644
--- a/website/client/components/chat/chatMessages.vue
+++ b/website/client/components/chat/chatMessages.vue
@@ -2,9 +2,8 @@
.container
.row
.col-12
- copy-as-todo-modal(:copying-message='copyingMessage', :group-name='groupName', :group-id='groupId')
+ copy-as-todo-modal(:group-name='groupName', :group-id='groupId')
report-flag-modal
-
div(v-for="(msg, index) in messages", v-if='chat && canViewFlag(msg)')
// @TODO: is there a different way to do these conditionals? This creates an infinite loop
//.hr(v-if='displayDivider(msg)')
@@ -19,76 +18,22 @@
@click.native="showMemberModal(msg.uuid)",
)
.card(:class='inbox ? "col-8" : "col-10"')
- .mentioned-icon(v-if='isUserMentioned(msg)')
- .message-hidden(v-if='msg.flagCount === 1 && user.contributor.admin') Message flagged once, not hidden
- .message-hidden(v-if='msg.flagCount > 1 && user.contributor.admin') Message hidden
- .card-body
- h3.leader(
- :class='userLevelStyle(cachedProfileData[msg.uuid])'
- @click="showMemberModal(msg.uuid)",
- )
- | {{msg.user}}
- .svg-icon(v-html="icons[`tier${cachedProfileData[msg.uuid].contributor.level}`]", v-if='cachedProfileData[msg.uuid] && cachedProfileData[msg.uuid].contributor && cachedProfileData[msg.uuid].contributor.level')
- p.time {{msg.timestamp | timeAgo}}
- .text(v-markdown='msg.text')
- hr
- .action(@click='like(msg, index)', v-if='msg.likes', :class='{active: msg.likes[user._id]}')
- .svg-icon(v-html="icons.like")
- span(v-if='!msg.likes[user._id]') {{ $t('like') }}
- span(v-if='msg.likes[user._id]') {{ $t('liked') }}
- // @TODO make copyAsTodo work in Tavern, guilds, party (inbox can be done later)
- span.action(v-if='!inbox', @click='copyAsTodo(msg)')
- .svg-icon(v-html="icons.copy")
- | {{$t('copyAsTodo')}}
- // @TODO make copyAsTodo work in the inbox
- span.action(v-if='!inbox && user.flags.communityGuidelinesAccepted', @click='report(msg)')
- .svg-icon(v-html="icons.report")
- | {{$t('report')}}
- // @TODO make flagging/reporting work in the inbox. NOTE: it must work even if the communityGuidelines are not accepted and it MUST work for messages that you have SENT as well as received. -- Alys
- span.action(v-if='msg.uuid === user._id || inbox || user.contributor.admin', @click='remove(msg, index)')
- .svg-icon(v-html="icons.delete")
- | {{$t('delete')}}
- span.action.float-right.liked(v-if='likeCount(msg) > 0')
- .svg-icon(v-html="icons.liked")
- | + {{ likeCount(msg) }}
- // @TODO can we avoid duplicating all this code? Cannot we just push everything
- // to the right if the user is the author?
- // Maybe we just create two sub components instead
+ chat-card(
+ :msg='msg',
+ :inbox='inbox',
+ :groupId='groupId',
+ @messaged-liked='messageLiked',
+ @message-removed='messageRemoved',
+ @show-member-modal='showMemberModal')
.row(v-if='user._id === msg.uuid')
.card(:class='inbox ? "col-8" : "col-10"')
- .mentioned-icon(v-if='isUserMentioned(msg)')
- .message-hidden(v-if='msg.flagCount === 1 && user.contributor.admin') Message flagged once, not hidden
- .message-hidden(v-if='msg.flagCount > 1 && user.contributor.admin') Message hidden
- .card-body
- h3.leader(
- :class='userLevelStyle(cachedProfileData[msg.uuid])',
- @click="showMemberModal(msg.uuid)",
- )
- | {{msg.user}}
- .svg-icon(v-html="icons[`tier${cachedProfileData[msg.uuid].contributor.level}`]", v-if='cachedProfileData[msg.uuid] && cachedProfileData[msg.uuid].contributor && cachedProfileData[msg.uuid].contributor.level')
- p.time {{msg.timestamp | timeAgo}}
- .text(v-markdown='msg.text')
- hr
- .action(@click='like(msg, index)', v-if='msg.likes', :class='{active: msg.likes[user._id]}')
- .svg-icon(v-html="icons.like")
- span(v-if='!msg.likes[user._id]') {{ $t('like') }}
- span(v-if='msg.likes[user._id]') {{ $t('liked') }}
- // @TODO make copyAsTodo work in Tavern, guilds, party (inbox can be done later)
- span.action(v-if='!inbox', @click='copyAsTodo(msg)')
- .svg-icon(v-html="icons.copy")
- | {{$t('copyAsTodo')}}
- // @TODO make copyAsTodo work in the inbox
- span.action(v-if='user.flags.communityGuidelinesAccepted', @click='report(msg)')
- span.action(v-if='!inbox && user.flags.communityGuidelinesAccepted', @click='report(msg)')
- .svg-icon(v-html="icons.report")
- | {{$t('report')}}
- // @TODO make flagging/reporting work in the inbox. NOTE: it must work even if the communityGuidelines are not accepted and it MUST work for messages that you have SENT as well as received. -- Alys
- span.action(v-if='msg.uuid === user._id', @click='remove(msg, index)')
- .svg-icon(v-html="icons.delete")
- | {{$t('delete')}}
- span.action.float-right.liked(v-if='likeCount(msg) > 0')
- .svg-icon(v-html="icons.liked")
- | + {{ likeCount(msg) }}
+ chat-card(
+ :msg='msg',
+ :inbox='inbox',
+ :groupId='groupId',
+ @messaged-liked='messageLiked',
+ @message-removed='messageRemoved',
+ @show-member-modal='showMemberModal')
div(:class='inbox ? "col-4" : "col-2"')
avatar(
v-if='cachedProfileData[msg.uuid] && !cachedProfileData[msg.uuid].rejected',
@@ -102,80 +47,6 @@
diff --git a/website/client/components/chat/copyAsTodoModal.vue b/website/client/components/chat/copyAsTodoModal.vue
index 3cda6232c45..9aff58475f2 100644
--- a/website/client/components/chat/copyAsTodoModal.vue
+++ b/website/client/components/chat/copyAsTodoModal.vue
@@ -20,7 +20,7 @@
div(v-markdown='text', target='_blank')
.modal-footer
- button.btn.btn-default(@click='close()') {{ $t('close') }}
+ button.btn.btn-secondary(@click='close()') {{ $t('close') }}
button.btn.btn-primary(@click='saveTodo()') {{ $t('submit') }}
diff --git a/website/client/components/chat/reportFlagModal.vue b/website/client/components/chat/reportFlagModal.vue
index 3c46fff59d0..78f45a1e944 100644
--- a/website/client/components/chat/reportFlagModal.vue
+++ b/website/client/components/chat/reportFlagModal.vue
@@ -33,12 +33,6 @@ export default {
name: `${reportMessage}`,
};
},
- abuseObject () {
- return this.$store.state.flagChatOptions.message;
- },
- groupId () {
- return this.$store.state.flagChatOptions.groupId;
- },
},
data () {
let abuseFlagModalBody = {
@@ -49,8 +43,21 @@ export default {
return {
abuseFlagModalBody,
+ abuseObject: '',
+ groupId: '',
};
},
+ created () {
+ this.$root.$on('habitica::report-chat', data => {
+ if (!data.message || !data.groupId) return;
+ this.abuseObject = data.message;
+ this.groupId = data.groupId;
+ this.$root.$emit('bv::show::modal', 'report-flag');
+ });
+ },
+ destroyed () {
+ this.$root.$off('habitica::report-chat');
+ },
methods: {
close () {
this.$root.$emit('bv::hide::modal', 'report-flag');
@@ -61,6 +68,7 @@ export default {
groupId: this.groupId,
chatId: this.abuseObject.id,
});
+
this.close();
},
async clearFlagCount () {
diff --git a/website/client/components/creatorIntro.vue b/website/client/components/creatorIntro.vue
index 0cf4b918cbc..a4a2ef4b783 100644
--- a/website/client/components/creatorIntro.vue
+++ b/website/client/components/creatorIntro.vue
@@ -33,7 +33,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
.svg-icon(v-html='icons.accessoriesIcon')
strong(v-once) {{$t('extra')}}
.menu-container.col-2(v-if='editing', :class='{active: activeTopPage === "backgrounds"}')
- .menu-item(@click='changeTopPage("backgrounds", "2017")')
+ .menu-item(@click='changeTopPage("backgrounds", "2018")')
.svg-icon(v-html='icons.backgroundsIcon')
strong(v-once) {{$t('backgrounds')}}
#body.section.customize-section(v-if='activeTopPage === "body"')
@@ -177,6 +177,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
span 5
button.btn.btn-secondary.purchase-all(@click='unlock(`hair.beard.${baseHair5Keys.join(",hair.beard.")}`)') {{ $t('purchaseAll') }}
.col-12.customize-options(v-if='editing')
+ .head_0.option(@click='set({"preferences.hair.mustache": 0})', :class="[{ active: user.preferences.hair.mustache === 0 }, 'hair_base_0_' + user.preferences.hair.color]")
.option(v-for='option in baseHair6',
:class='{active: option.active, locked: option.locked}')
.base.sprite.customize-option(:class="`hair_mustache_${option.key}_${user.preferences.hair.color}`", @click='option.click')
@@ -249,13 +250,15 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
.incentive-background(:class='[`background_${bg.key}`]')
.small-rectangle
.row.sub-menu.col-10.offset-1
+ .col-3.text-center.sub-menu-item(@click='changeSubPage("2018")', :class='{active: activeSubPage === "2018"}')
+ strong(v-once) 2018
.col-3.text-center.sub-menu-item(@click='changeSubPage("2017")', :class='{active: activeSubPage === "2017"}')
strong(v-once) 2017
- .col-3.text-center.sub-menu-item(@click='changeSubPage("2016")', :class='{active: activeSubPage === "2016"}')
+ .col-2.text-center.sub-menu-item(@click='changeSubPage("2016")', :class='{active: activeSubPage === "2016"}')
strong(v-once) 2016
- .col-3.text-center.sub-menu-item(@click='changeSubPage("2015")', :class='{active: activeSubPage === "2015"}')
+ .col-2.text-center.sub-menu-item(@click='changeSubPage("2015")', :class='{active: activeSubPage === "2015"}')
strong(v-once) 2015
- .col-3.text-center.sub-menu-item(@click='changeSubPage("2014")', :class='{active: activeSubPage === "2014"}')
+ .col-2.text-center.sub-menu-item(@click='changeSubPage("2014")', :class='{active: activeSubPage === "2014"}')
strong(v-once) 2014
.row.customize-menu(v-for='(sets, key) in backgroundShopSetsByYear')
.row(v-for='set in sets', v-if='activeSubPage === key')
@@ -291,41 +294,34 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
.section.row
.col-6
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='work', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('work') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#work(type="checkbox", value='work', v-model='taskCategories')
+ label.custom-control-label(v-once, for="work") {{ $t('work') }}
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='exercise', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('exercise') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#excercise(type="checkbox", value='exercise', v-model='taskCategories')
+ label.custom-control-label(v-once, for="excercise") {{ $t('exercise') }}
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='health_wellness', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('health_wellness') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#health_wellness(type="checkbox", value='health_wellness', v-model='taskCategories')
+ label.custom-control-label(v-once, for="health_wellness") {{ $t('health_wellness') }}
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='school', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('school') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#school(type="checkbox", value='school', v-model='taskCategories')
+ label.custom-control-label(v-once, for="school") {{ $t('school') }}
.col-6
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='chores', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('chores') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#chores(type="checkbox", value='chores', v-model='taskCategories')
+ label.custom-control-label(v-once, for="chores") {{ $t('chores') }}
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='creativity', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('creativity') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#creativity(type="checkbox", value='creativity', v-model='taskCategories')
+ label.custom-control-label(v-once, for="creativity") {{ $t('creativity') }}
.task-option
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", value='self_care', v-model='taskCategories')
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t('self_care') }}
+ .custom-control.custom-checkbox
+ input.custom-control-input#self_care(type="checkbox", value='self_care', v-model='taskCategories')
+ label.custom-control-label(v-once, for="self_care") {{ $t('self_care') }}
.section.row.justin-message-section(:class='{top: modalPage > 1}', v-if='!editing')
.col-12
@@ -538,12 +534,6 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
padding-bottom: 2em;
}
- .option.locked {
- border-radius: 2px;
- background-color: #ffffff;
- box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.16), 0 1px 4px 0 rgba(26, 24, 29, 0.12);
- }
-
.option.hide {
display: none !important;
}
@@ -554,8 +544,17 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
padding: .5em;
height: 90px;
width: 90px;
- margin-bottom: .5em;
- margin-right: .5em;
+ margin: 1em .5em .5em 0;
+ border: 4px solid $gray-700;
+ border-radius: 4px;
+
+ &.locked {
+ border: none;
+ border-radius: 2px;
+ background-color: #ffffff;
+ box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.16), 0 1px 4px 0 rgba(26, 24, 29, 0.12);
+ margin-top: 0;
+ }
.sprite.customize-option {
margin: 0 auto;
@@ -587,9 +586,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
}
.option.active {
- border: 4px solid $purple-200;
- border-radius: 4px;
- margin-top: 1em;
+ border-color: $purple-200;
}
.option:hover {
@@ -1023,7 +1020,8 @@ export default {
option.key = key;
option.active = this.user.preferences.costume ? this.user.items.gear.costume.eyewear === newKey : this.user.items.gear.equipped.eyewear === newKey;
option.click = () => {
- return this.equip(newKey);
+ let type = this.user.preferences.costume ? 'costume' : 'equipped';
+ return this.equip(newKey, type);
};
return option;
});
@@ -1047,7 +1045,6 @@ export default {
return own;
},
animalEars () {
- // @TODO: This is not like other purchase items
// @TODO: For some resonse when I use $set on the user purchases object, this is not recomputed. Hack for now
let backgroundUpdate = this.backgroundUpdate; // eslint-disable-line
let keys = this.animalEarsKeys;
@@ -1061,7 +1058,8 @@ export default {
option.active = this.user.preferences.costume ? this.user.items.gear.costume.headAccessory === newKey : this.user.items.gear.equipped.headAccessory === newKey;
option.locked = locked;
option.click = () => {
- return locked ? this.purchase('gear', newKey) : this.equip(newKey);
+ let type = this.user.preferences.costume ? 'costume' : 'equipped';
+ return locked ? this.unlock(`items.gear.owned.${newKey}`) : this.equip(newKey, type);
};
return option;
});
@@ -1225,6 +1223,7 @@ export default {
2015: [],
2016: [],
2017: [],
+ 2018: [],
};
// Hack to force update for now until we restructure the data
@@ -1306,9 +1305,8 @@ export default {
set (settings) {
this.$store.dispatch('user:set', settings);
},
- equip (key) {
- this.$store.dispatch('common:equip', {key, type: 'equipped'});
- this.user.items.gear.equipped[key] = !this.user.items.gear.equipped[key];
+ equip (key, type) {
+ this.$store.dispatch('common:equip', {key, type});
},
async done () {
this.loading = true;
diff --git a/website/client/components/group-plans/taskInformation.vue b/website/client/components/group-plans/taskInformation.vue
index d71374b7746..2535712b79a 100644
--- a/website/client/components/group-plans/taskInformation.vue
+++ b/website/client/components/group-plans/taskInformation.vue
@@ -3,7 +3,7 @@
.row.tasks-navigation
.col-4
h1 Group's Tasks
- // @TODO: Abstract to component?
+ // @TODO: Abstract to component!
.col-4
.input-group
input.form-control.input-search(type="text", :placeholder="$t('search')", v-model="searchText")
@@ -18,20 +18,20 @@
.col-6(v-for="(tag, tagIndex) in tagsSnap")
.inline-edit-input-group.tag-edit-item.input-group
input.tag-edit-input.inline-edit-input.form-control(type="text", :value="tag.name")
- span.input-group-btn(@click="removeTag(tagIndex)")
+ .input-group-append(@click="removeTag(tagIndex)")
.svg-icon.destroy-icon(v-html="icons.destroy")
.col-6
input.new-tag-item.edit-tag-item.inline-edit-input.form-control(type="text", :placeholder="$t('newTag')", @keydown.enter="addTag($event)", v-model="newTag")
template(v-else)
.col-6(v-for="(tag, tagIndex) in tagsType.tags")
- label.custom-control.custom-checkbox
+ .custom-control.custom-checkbox
input.custom-control-input(
type="checkbox",
:checked="isTagSelected(tag)",
@change="toggleTag(tag)",
+ :id="`tag-${tagIndex}`",
)
- span.custom-control-indicator
- span.custom-control-description {{ tag.name }}
+ label.custom-control-label(:for="`tag-${tagIndex}`") {{ tag.name }}
.filter-panel-footer.clearfix
template(v-if="editingTags === true")
@@ -44,7 +44,7 @@
.float-right
a.mr-3.btn-filters-primary(@click="applyFilters()", v-once) {{ $t('applyFilters') }}
a.btn-filters-secondary(@click="closeFilterPanel()", v-once) {{ $t('cancel') }}
- span.input-group-btn
+ span.input-group-append
button.btn.btn-secondary.filter-button(
type="button",
@click="toggleFilterPanel()",
@@ -173,7 +173,7 @@
.tag-edit-input {
border-bottom: 1px solid $gray-500 !important;
- &:focus, &:focus ~ .input-group-btn {
+ &:focus, &:focus ~ .input-group-append {
border-color: $purple-500 !important;
}
}
@@ -188,7 +188,7 @@
background-image: url(~client/assets/svg/for-css/positive.svg);
}
- .tag-edit-item .input-group-btn {
+ .tag-edit-item .input-group-append {
border-bottom: 1px solid $gray-500 !important;
&:focus {
@@ -196,7 +196,7 @@
}
}
- .custom-control-description {
+ .custom-control-label {
margin-left: 10px;
}
diff --git a/website/client/components/groups/createPartyModal.vue b/website/client/components/groups/createPartyModal.vue
index 5860a3441c3..74beb78f0c9 100644
--- a/website/client/components/groups/createPartyModal.vue
+++ b/website/client/components/groups/createPartyModal.vue
@@ -57,6 +57,7 @@ b-modal#create-party-modal(title="Empty", size='lg', hide-footer=true)
.header-wrap {
padding: 0;
color: #4e4a57;
+ width: 100%;
.quest_screen {
background-image: url('~client/assets/images/quest_screen.png');
diff --git a/website/client/components/groups/discovery.vue b/website/client/components/groups/discovery.vue
index 7a833d77673..602a330df28 100644
--- a/website/client/components/groups/discovery.vue
+++ b/website/client/components/groups/discovery.vue
@@ -137,6 +137,7 @@ export default {
// Reset the page when filters are updated
this.lastPageLoaded = 0;
+ this.hasLoadedAllGuilds = false;
this.queryFilters.page = this.lastPageLoaded;
this.queryFilters.categories = eventData.categories.join(',');
@@ -173,10 +174,11 @@ export default {
},
async fetchGuilds () {
// We have the data cached
- if (this.lastPageLoaded === 0 && this.guilds.length > 0) return;
+ if (this.lastPageLoaded === 0 && this.guilds.length > 0) {
+ this.lastPageLoaded += 1;
+ }
this.loading = true;
-
this.queryFilters.page = this.lastPageLoaded;
let guilds = await this.$store.dispatch('guilds:getPublicGuilds', this.queryFilters);
if (guilds.length === 0) this.hasLoadedAllGuilds = true;
diff --git a/website/client/components/groups/group.vue b/website/client/components/groups/group.vue
index 357388dbe9a..3a51f7ee342 100644
--- a/website/client/components/groups/group.vue
+++ b/website/client/components/groups/group.vue
@@ -7,11 +7,11 @@
group-gems-modal
.col-12.col-sm-8.standard-page
.row
- .col-6.title-details
+ .col-12.col-md-6.title-details
h1 {{group.name}}
strong.float-left(v-once) {{$t('groupLeader')}}
span.leader.float-left(v-if='group.leader.profile', @click='showMemberProfile(group.leader)') : {{group.leader.profile.name}}
- .col-6
+ .col-12.col-md-6
.row.icon-row
.col-4.offset-4(v-bind:class="{ 'offset-8': isParty }")
.item-with-icon(@click="showMemberModal()")
@@ -28,23 +28,19 @@
.row.chat-row
.col-12
h3(v-once) {{ $t('chat') }}
-
.row.new-message-row
- textarea(:placeholder="!isParty ? $t('chatPlaceholder') : $t('partyChatPlaceholder')", v-model='newMessage', @keydown='updateCarretPosition')
+ textarea(:placeholder="!isParty ? $t('chatPlaceholder') : $t('partyChatPlaceholder')", v-model='newMessage', @keydown='updateCarretPosition', @keyup.ctrl.enter='sendMessage()')
autocomplete(:text='newMessage', v-on:select="selectedAutocomplete", :coords='coords', :chat='group.chat')
-
.row
.col-6
button.btn.btn-secondary.float-left.fetch(v-once, @click='fetchRecentMessages()') {{ $t('fetchRecentMessages') }}
button.btn.btn-secondary.float-left(v-once, @click='reverseChat()') {{ $t('reverseChat') }}
.col-6
button.btn.btn-secondary.send-chat.float-right(v-once, @click='sendMessage()') {{ $t('send') }}
-
.row.community-guidelines(v-if='!communityGuidelinesAccepted')
div.col-8(v-once, v-html="$t('communityGuidelinesIntro')")
div.col-4
button.btn.btn-info(@click='acceptCommunityGuidelines()', v-once) {{ $t('acceptCommunityGuidelines') }}
-
.row
.col-12.hr
chat-message(:chat.sync='group.chat', :group-id='group._id', group-name='group.name')
@@ -66,75 +62,8 @@
// @TODO: V2 button.btn.btn-primary(v-once, v-if='!isLeader') {{$t('messageGuildLeader')}} // Suggest making the button visible to the leader too - useful for them to test how the feature works or to send a note to themself. -- Alys
.button-container
// @TODO: V2 button.btn.btn-primary(v-once, v-if='isMember && !isParty') {{$t('donateGems')}} // Suggest removing the isMember restriction - it's okay if non-members donate to a public guild. Also probably allow it for parties if parties can buy imagery. -- Alys
-
.section-header(v-if='isParty')
- .row
- .col-10
- h3(v-once) {{ $t('questDetailsTitle') }}
- .col-2
- .toggle-up(@click="sections.quest = !sections.quest", v-if="sections.quest")
- .svg-icon(v-html="icons.upIcon")
- .toggle-down(@click="sections.quest = !sections.quest", v-if="!sections.quest")
- .svg-icon(v-html="icons.downIcon")
- .section(v-if="sections.quest")
- .row.no-quest-section(v-if='isParty && !onPendingQuest && !onActiveQuest')
- .col-12.text-center
- .svg-icon(v-html="icons.questIcon")
- h4(v-once) {{ $t('youAreNotOnQuest') }}
- p(v-once) {{ $t('questDescription') }}
- button.btn.btn-secondary(v-once, @click="openStartQuestModal()") {{ $t('startAQuest') }}
- .row.quest-active-section(v-if='isParty && onPendingQuest && !onActiveQuest')
- .col-2
- .quest(:class='`inventory_quest_scroll_${questData.key}`')
- .col-6.titles
- strong {{ questData.text() }}
- p {{acceptedCount}} / {{group.memberCount}}
- .col-4
- button.btn.btn-secondary(@click="openQuestDetails()") {{ $t('details') }}
- .row.quest-active-section.quest-invite(v-if='user.party.quest && user.party.quest.RSVPNeeded')
- span {{ $t('wouldYouParticipate') }}
- button.btn.btn-primary.accept(@click='questAccept(group._id)') {{$t('accept')}}
- button.btn.btn-primary.reject(@click='questReject(group._id)') {{$t('reject')}}
- .row.quest-active-section(v-if='isParty && !onPendingQuest && onActiveQuest')
- .col-12.text-center
- .quest-boss(:class="'quest_' + questData.key")
- h3(v-once) {{ questData.text() }}
- .quest-box
- .collect-info(v-if='questData.collect')
- .row(v-for='(value, key) in questData.collect')
- .col-2
- div(:class="'quest_' + questData.key + '_' + key")
- .col-10
- strong {{value.text()}}
- .grey-progress-bar
- .collect-progress-bar(:style="{width: (group.quest.progress.collect[key] / value.count) * 100 + '%'}")
- strong {{group.quest.progress.collect[key]}} / {{value.count}}
- .boss-info(v-if='questData.boss')
- .row
- .col-6
- h4.float-left(v-once) {{ questData.boss.name() }}
- .col-6
- span.float-right(v-once) {{ $t('participantsTitle') }}
- .row
- .col-12
- .grey-progress-bar
- .boss-health-bar(:style="{width: (group.quest.progress.hp / questData.boss.hp) * 100 + '%'}")
- .row.boss-details
- .col-6
- span.float-left
- | {{parseFloat(group.quest.progress.hp).toFixed(2)}} / {{parseFloat(questData.boss.hp).toFixed(2)}}
- .col-6
- // @TODO: Why do we not sync quset progress on the group doc? Each user could have different progress
- span.float-right {{parseFloat(user.party.quest.progress.up).toFixed(1) || 0}} pending damage
- .row.rage-bar-row(v-if='questData.boss.rage')
- .col-12
- .grey-progress-bar
- .boss-health-bar.rage-bar(:style="{width: (group.quest.progress.rage / questData.boss.rage.value) * 100 + '%'}")
- .row.boss-details.rage-details(v-if='questData.boss.rage')
- .col-6
- span.float-left {{ $t('rage') }} {{ parseFloat(group.quest.progress.rage).toFixed(2) }} / {{ questData.boss.rage.value }}
- button.btn.btn-secondary(v-once, @click="questAbort()", v-if='canEditQuest') {{ $t('abort') }}
-
+ quest-sidebar-section(@toggle='toggleQuestSection', :show='sections.quest', :group='group')
.section-header(v-if='!isParty')
.row
.col-10
@@ -146,7 +75,6 @@
.svg-icon(v-html="icons.downIcon")
.section(v-if="sections.summary")
p(v-markdown='group.summary')
-
.section-header
.row
.col-10
@@ -158,7 +86,6 @@
.svg-icon(v-html="icons.downIcon")
.section(v-if="sections.description")
p(v-markdown='group.description')
-
.section-header.challenge
.row
.col-10.information-header
@@ -184,6 +111,16 @@
diff --git a/website/client/components/groups/myGuilds.vue b/website/client/components/groups/myGuilds.vue
index 68ca0edf150..a75aaf71b40 100644
--- a/website/client/components/groups/myGuilds.vue
+++ b/website/client/components/groups/myGuilds.vue
@@ -60,6 +60,12 @@
}
}
}
+
+ @media only screen and (max-width: 768px) {
+ .no-guilds-wrapper {
+ width: 100% !important;
+ }
+ }
diff --git a/website/client/components/groups/sidebar.vue b/website/client/components/groups/sidebar.vue
index ee7a0428053..cd1a35ebf9a 100644
--- a/website/client/components/groups/sidebar.vue
+++ b/website/client/components/groups/sidebar.vue
@@ -1,5 +1,5 @@
-.standard-sidebar.hidden-xs-down
+.standard-sidebar.d-none.d-sm-block
.form-group
input.form-control.search(type="text", :placeholder="$t('search')", v-model='searchTerm')
@@ -11,30 +11,27 @@
v-for="group in categoryOptions",
:key="group.key",
)
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", :value='group.key' v-model="categoryFilters")
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t(group.label) }}
+ .custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="categoryFilters", :id="group.key")
+ label.custom-control-label(v-once, :for="group.key") {{ $t(group.label) }}
.form-group
h3 Role
.form-check(
v-for="group in roleOptions",
:key="group.key",
)
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", :value='group.key' v-model="roleFilters")
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t(group.label) }}
+ .custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="roleFilters", :id="group.key")
+ label.custom-control-label(v-once, :for="group.key") {{ $t(group.label) }}
.form-group
h3 Guild Size
.form-check(
v-for="group in guildSizeOptions",
:key="group.key",
)
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", :value='group.key' v-model="guildSizeFilters")
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ $t(group.label) }}
+ .custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", :value='group.key' v-model="guildSizeFilters", :id="group.key")
+ label.custom-control-label(v-once, :for="group.key") {{ $t(group.label) }}
diff --git a/website/client/components/header/menu.vue b/website/client/components/header/menu.vue
index 2d0a7ee2f03..1fdca4a76a8 100644
--- a/website/client/components/header/menu.vue
+++ b/website/client/components/header/menu.vue
@@ -3,15 +3,14 @@ div
inbox-modal
creator-intro
profile
- b-navbar.navbar.navbar-inverse.fixed-top.navbar-expand-md(type="dark")
+ b-navbar.navbar.navbar-inverse.fixed-top.navbar-expand-lg(type="dark")
.navbar-header
.logo.svg-icon.d-none.d-xl-block(v-html="icons.logo")
.svg-icon.gryphon.d-md-block.d-none.d-xl-none
.svg-icon.gryphon.d-sm-block.d-lg-none.d-md-none
-
b-nav-toggle(target='nav_collapse')
- b-collapse#nav_collapse.collapse.navbar-collapse(is-nav)
- ul.navbar-nav.mr-auto
+ b-collapse#nav_collapse.collapse.navbar-collapse.justify-content-between.flex-wrap(is-nav)
+ .ul.navbar-nav
router-link.nav-item(tag="li", :to="{name: 'tasks'}", exact)
a.nav-link(v-once) {{ $t('tasks') }}
router-link.nav-item.dropdown(tag="li", :to="{name: 'items'}", :class="{'active': $route.path.startsWith('/inventory')}")
@@ -46,7 +45,7 @@ div
.dropdown-menu
router-link.dropdown-item(:to="{name: 'myChallenges'}") {{ $t('myChallenges') }}
router-link.dropdown-item(:to="{name: 'findChallenges'}") {{ $t('findChallenges') }}
- router-link.nav-item.dropdown(tag="li", to="/help", :class="{'active': $route.path.startsWith('/help')}", :to="{name: 'faq'}")
+ router-link.nav-item.dropdown(tag="li", :class="{'active': $route.path.startsWith('/help')}", :to="{name: 'faq'}")
a.nav-link(v-once) {{ $t('help') }}
.dropdown-menu
router-link.dropdown-item(:to="{name: 'faq'}") {{ $t('faq') }}
@@ -56,7 +55,7 @@ div
a.dropdown-item(href="https://trello.com/c/odmhIqyW/440-read-first-table-of-contents", target='_blank') {{ $t('requestAF') }}
a.dropdown-item(href="http://habitica.wikia.com/wiki/Contributing_to_Habitica", target='_blank') {{ $t('contributing') }}
a.dropdown-item(href="http://habitica.wikia.com/wiki/Habitica_Wiki", target='_blank') {{ $t('wiki') }}
- .d-flex.align-items-center
+ .user-menu.d-flex.align-items-center
.item-with-icon(v-if="userHourglasses > 0")
.svg-icon(v-html="icons.hourglasses", v-b-tooltip.hover.bottom="$t('mysticHourglassesTooltip')")
span {{ userHourglasses }}
@@ -76,17 +75,17 @@ div
@import '~client/assets/scss/colors.scss';
@import '~client/assets/scss/utils.scss';
- @media only screen and (max-width: 1280px) {
+ @media only screen and (max-width: 1305px) {
.nav-link {
padding: .8em 1em !important;
}
- }
- @media only screen and (max-width: 1200px) {
.navbar-header {
- margin-right: 0px;
+ margin-right: 5px !important;
}
+ }
+ @media only screen and (max-width: 1200px) {
.gryphon {
background-image: url('~assets/images/melior@3x.png');
width: 30px;
@@ -98,18 +97,45 @@ div
}
.svg-icon.gryphon.d-sm-block {
-
position: absolute;
left: calc(50% - 30px);
top: 1em;
}
+
+ .nav-item .nav-link {
+ font-size: 14px !important;
+ padding: 16px 12px !important;
+ }
}
@media only screen and (max-width: 990px) {
#nav_collapse {
margin-top: 0.6em;
- background-color: $purple-200;
+ flex-direction: row !important;
+ max-height: 650px;
+ overflow: auto;
}
+
+ .navbar-nav {
+ width: 100%;
+ background: $purple-100;
+ }
+
+ .user-menu {
+ flex-direction: column !important;
+ align-items: left !important;
+ background: $purple-100;
+ width: 100%;
+
+ .item-with-icon {
+ width: 100%;
+ padding-bottom: 1em;
+ }
+ }
+ }
+
+ #nav_collapse {
+ display: flex;
}
nav.navbar {
@@ -135,7 +161,7 @@ div
color: $white !important;
font-weight: bold;
line-height: 1.5;
- padding: 16px 24px;
+ padding: 16px 20px;
transition: none;
}
diff --git a/website/client/components/header/notificationsDropdown.vue b/website/client/components/header/notificationsDropdown.vue
index 4bbd1ae3132..2b29937a91e 100644
--- a/website/client/components/header/notificationsDropdown.vue
+++ b/website/client/components/header/notificationsDropdown.vue
@@ -15,7 +15,7 @@ menu-dropdown.item-notifications(:right="true")
a.dropdown-item(v-if='user.purchased.plan.mysteryItems.length', @click='go("/inventory/items")')
span.glyphicon.glyphicon-gift
span {{ $t('newSubscriberItem') }}
- a.dropdown-item(v-for='(party, index) in user.invitations.parties')
+ a.dropdown-item(v-for='(party, index) in user.invitations.parties', :key='party.id')
div
span.glyphicon.glyphicon-user
span {{ $t('invitedTo', {name: party.name}) }}
@@ -26,7 +26,7 @@ menu-dropdown.item-notifications(:right="true")
span.glyphicon.glyphicon-envelope
span {{ $t('cardReceived') }}
a.dropdown-item(@click.stop='clearCards()')
- a.dropdown-item(v-for='(guild, index) in user.invitations.guilds')
+ a.dropdown-item(v-for='(guild, index) in user.invitations.guilds', :key='guild.id')
div
span.glyphicon.glyphicon-user
span {{ $t('invitedTo', {name: guild.name}) }}
@@ -34,10 +34,10 @@ menu-dropdown.item-notifications(:right="true")
button.btn.btn-primary(@click.stop='accept(guild, index, "guild")') Accept
button.btn.btn-primary(@click.stop='reject(guild, index, "guild")') Reject
a.dropdown-item(v-if='user.flags.classSelected && !user.preferences.disableClasses && user.stats.points',
- @click='go("/user/profile")')
+ @click='showProfile()')
span.glyphicon.glyphicon-plus-sign
span {{ $t('haveUnallocated', {points: user.stats.points}) }}
- a.dropdown-item(v-for='message in userNewMessages')
+ a.dropdown-item(v-for='message in userNewMessages', :key='message.key')
span(@click='navigateToGroup(message.key)')
span.glyphicon.glyphicon-comment
span {{message.name}}
@@ -279,6 +279,12 @@ export default {
let quest = await this.$store.dispatch('quests:sendAction', {groupId: partyId, action: 'quests/reject'});
this.user.party.quest = quest;
},
+ showProfile () {
+ this.$root.$emit('habitica:show-profile', {
+ user: this.user,
+ startingPage: 'stats',
+ });
+ },
},
};
diff --git a/website/client/components/header/userDropdown.vue b/website/client/components/header/userDropdown.vue
index 60ead51a3a0..be1d7567562 100644
--- a/website/client/components/header/userDropdown.vue
+++ b/website/client/components/header/userDropdown.vue
@@ -11,7 +11,7 @@ menu-dropdown.item-user(:right="true")
a.nav-link.dropdown-item.dropdown-separated(@click.prevent='showInbox()')
| {{ $t('messages') }}
message-count(v-if='user.inbox.newMessages > 0', :count="user.inbox.newMessages")
- a.dropdown-item(@click='showAvatar("backgrounds", "2017")') {{ $t('backgrounds') }}
+ a.dropdown-item(@click='showAvatar("backgrounds", "2018")') {{ $t('backgrounds') }}
a.dropdown-item(@click='showProfile("stats")') {{ $t('stats') }}
a.dropdown-item(@click='showProfile("achievements")') {{ $t('achievements') }}
a.dropdown-item.dropdown-separated(@click='showProfile("profile")') {{ $t('profile') }}
@@ -98,9 +98,10 @@ export default {
this.$root.$emit('bv::show::modal', 'inbox-modal');
},
showProfile (startingPage) {
- this.$store.state.profileUser = this.user;
- this.$store.state.profileOptions.startingPage = startingPage;
- this.$root.$emit('bv::show::modal', 'profile');
+ this.$root.$emit('habitica:show-profile', {
+ user: this.user,
+ startingPage,
+ });
},
showBuyGemsModal (startingPage) {
this.$store.state.gemModalOptions.startingPage = startingPage;
diff --git a/website/client/components/inventory/equipment/equipGearModal.vue b/website/client/components/inventory/equipment/equipGearModal.vue
index 213c63683c3..d54390f70a6 100644
--- a/website/client/components/inventory/equipment/equipGearModal.vue
+++ b/website/client/components/inventory/equipment/equipGearModal.vue
@@ -17,6 +17,7 @@
:withBackground="true",
:overrideAvatarGear="memberOverrideAvatarGear(item)",
:spritesMargin='"0px auto auto -1px"',
+ :showVisualBuffs="false",
)
h4.title {{ itemText }}
diff --git a/website/client/components/inventory/equipment/index.vue b/website/client/components/inventory/equipment/index.vue
index 41cf7480699..301de48008a 100644
--- a/website/client/components/inventory/equipment/index.vue
+++ b/website/client/components/inventory/equipment/index.vue
@@ -1,6 +1,6 @@
.row
- .standard-sidebar
+ .standard-sidebar.d-none.d-sm-block
.form-group
input.form-control.input-search(type="text", v-model="searchText", :placeholder="$t('search')")
@@ -12,10 +12,9 @@
v-for="group in itemsGroups",
:key="group.key",
)
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", v-model="viewOptions[group.key].selected")
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ group.label }}
+ .custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", v-model="viewOptions[group.key].selected", :id="group.key")
+ label.custom-control-label(v-once, :for="group.key") {{ group.label }}
.standard-page
.clearfix
@@ -215,7 +214,7 @@ export default {
},
watch: {
searchText: throttle(function throttleSearch () {
- this.searchTextThrottled = this.searchText;
+ this.searchTextThrottled = this.searchText.toLowerCase();
}, 250),
},
mounted () {
@@ -243,7 +242,7 @@ export default {
});
},
sortItems (items, sortBy) {
- return _reverse(_sortBy(items, sortGearTypeMap[sortBy]));
+ return sortBy === 'sortByName' ? _sortBy(items, sortGearTypeMap[sortBy]) : _reverse(_sortBy(items, sortGearTypeMap[sortBy]));
},
drawerToggled (newState) {
this.$store.state.equipmentDrawerOpen = newState;
diff --git a/website/client/components/inventory/items/cards-modal.vue b/website/client/components/inventory/items/cards-modal.vue
index a2581ceffbc..f51b93de0eb 100644
--- a/website/client/components/inventory/items/cards-modal.vue
+++ b/website/client/components/inventory/items/cards-modal.vue
@@ -10,7 +10,7 @@
div(v-markdown='cardMessage')
.modal-footer
small.pull-left {{ $t(cardType + 'CardExplanation')}}
- button.btn.btn-default(@click='readCard()') {{ $t('ok') }}
+ button.btn.btn-secondary(@click='readCard()') {{ $t('ok') }}
@@ -242,6 +257,8 @@ export default {
groups,
sortBy: 'quantity', // or 'AZ'
+ currentDraggingEgg: null,
+ eggClickMode: false,
currentDraggingPotion: null,
potionClickMode: false,
cardOptions: {
@@ -252,7 +269,7 @@ export default {
},
watch: {
searchText: throttle(function throttleSearch () {
- this.searchTextThrottled = this.searchText;
+ this.searchTextThrottled = this.searchText.toLowerCase();
}, 250),
},
computed: {
@@ -343,6 +360,7 @@ export default {
this.currentDraggingPotion = null;
},
onDragStart ($event, potion) {
+ // Dragging needs to be added for egg items
this.currentDraggingPotion = potion;
let itemRef = this.$refs.draggingPotionInfo;
@@ -351,19 +369,19 @@ export default {
dragEvent.dataTransfer.setDragImage(itemRef, -20, -20);
},
- isHatchable (potion, eggKey) {
- if (potion === null)
+ isHatchable (potion, egg) {
+ if (potion === null || egg === null)
return false;
- let petKey = `${eggKey}-${potion.key}`;
+ let petKey = `${egg.key}-${potion.key}`;
if (!this.content.petInfo[petKey])
return false;
- return !this.userHasPet(potion.key, eggKey);
+ return !this.userHasPet(potion.key, egg.key);
},
onDragOver ($event, egg) {
- if (this.isHatchable(this.currentDraggingPotion, egg.key)) {
+ if (this.isHatchable(this.currentDraggingPotion, egg)) {
$event.dropable = false;
}
},
@@ -373,18 +391,38 @@ export default {
onDragLeave () {
},
onEggClicked ($event, egg) {
- if (this.currentDraggingPotion === null) {
+ if (this.currentDraggingPotion !== null) {
+ if (this.isHatchable(this.currentDraggingPotion, egg)) {
+ this.hatchPet(this.currentDraggingPotion, egg);
+ }
+
+ this.currentDraggingPotion = null;
+ this.potionClickMode = false;
return;
}
- if (this.isHatchable(this.currentDraggingPotion, egg.key)) {
- this.hatchPet(this.currentDraggingPotion, egg);
- }
+ if (this.currentDraggingEgg === null || this.currentDraggingEgg !== egg) {
+ this.currentDraggingEgg = egg;
+ this.eggClickMode = true;
- this.currentDraggingPotion = null;
- this.potionClickMode = false;
+ this.$nextTick(() => {
+ this.mouseMoved(lastMouseMoveEvent);
+ });
+ } else {
+ this.currentDraggingEgg = null;
+ this.eggClickMode = false;
+ }
},
onPotionClicked ($event, potion) {
+ if (this.currentDraggingEgg !== null) {
+ if (this.isHatchable(potion, this.currentDraggingEgg)) {
+ this.hatchPet(potion, this.currentDraggingEgg);
+ }
+
+ this.currentDraggingEgg = null;
+ this.eggClickMode = false;
+ return;
+ }
if (this.currentDraggingPotion === null || this.currentDraggingPotion !== potion) {
this.currentDraggingPotion = potion;
this.potionClickMode = true;
@@ -437,6 +475,10 @@ export default {
// dragging potioninfo is 180px wide (90 would be centered)
this.$refs.clickPotionInfo.style.left = `${$event.x - 70}px`;
this.$refs.clickPotionInfo.style.top = `${$event.y}px`;
+ } else if (this.eggClickMode) {
+ // dragging eggInfo is 180px wide (90 would be centered)
+ this.$refs.clickEggInfo.style.left = `${$event.x - 70}px`;
+ this.$refs.clickEggInfo.style.top = `${$event.y}px`;
} else {
lastMouseMoveEvent = $event;
}
diff --git a/website/client/components/inventory/stable/index.vue b/website/client/components/inventory/stable/index.vue
index 191995b0ebe..eaf9132f2a7 100644
--- a/website/client/components/inventory/stable/index.vue
+++ b/website/client/components/inventory/stable/index.vue
@@ -1,7 +1,7 @@
// @TODO: breakdown to componentes and use some SOLID
.row.stable(v-mousePosition="30", @mouseMoved="mouseMoved($event)")
- .standard-sidebar.col-3.hidden-xs-down
+ .standard-sidebar.d-none.d-sm-block
div
#npmMattStable.npc_matt
b-popover(
@@ -23,28 +23,28 @@
v-for="petGroup in petGroups",
:key="petGroup.key"
)
- label.custom-control.custom-checkbox
+ .custom-control.custom-checkbox
input.custom-control-input(
type="checkbox",
v-model="viewOptions[petGroup.key].selected",
- :disabled="viewOptions[petGroup.key].animalCount == 0"
+ :disabled="viewOptions[petGroup.key].animalCount == 0",
+ :id="petGroup.key",
)
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ petGroup.label }}
+ label.custom-control-label(v-once, :for="petGroup.key") {{ petGroup.label }}
h3(v-once) {{ $t('mounts') }}
.form-group
.form-check(
v-for="mountGroup in mountGroups",
:key="mountGroup.key"
)
- label.custom-control.custom-checkbox
+ .custom-control.custom-checkbox
input.custom-control-input(
type="checkbox",
v-model="viewOptions[mountGroup.key].selected",
- :disabled="viewOptions[mountGroup.key].animalCount == 0"
+ :disabled="viewOptions[mountGroup.key].animalCount == 0",
+ :id="mountGroup.key",
)
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ mountGroup.label }}
+ label.custom-control-label(v-once, :for="mountGroup.key") {{ mountGroup.label }}
div.form-group.clearfix
h3.float-left Hide Missing
@@ -54,7 +54,7 @@
@change="updateHideMissing"
)
- .standard-page.col-12.col-sm-9
+ .standard-page
.clearfix
h1.float-left.mb-4.page-header(v-once) {{ $t('stable') }}
@@ -186,6 +186,7 @@
slot="drawer-slider",
:itemWidth=94,
:itemMargin=24,
+ :itemType="selectedDrawerTab"
)
template(slot="item", slot-scope="context")
foodItem(
@@ -867,7 +868,7 @@
}
if (pet.mountOwned()) {
- return `GreyedOut Pet Pet-${pet.key}`;
+ return `GreyedOut Pet Pet-${pet.key} ${pet.eggKey}`;
}
if (pet.isHatchable()) {
diff --git a/website/client/components/memberDetails.vue b/website/client/components/memberDetails.vue
index 8e8644c50db..e265baa58f7 100644
--- a/website/client/components/memberDetails.vue
+++ b/website/client/components/memberDetails.vue
@@ -1,6 +1,6 @@
.member-details(
- :class="{ condensed, expanded, 'd-flex': isHeader, row: !isHeader, }",
+ :class="{ condensed, expanded, 'd-flex': isHeader, row: !isHeader, }",
@click='showMemberModal(member)'
)
div(:class="{ 'col-4': !isHeader }")
@@ -174,7 +174,7 @@
border-radius: 0px;
height: 10px;
}
- }
+ }
diff --git a/website/client/components/members/memberSearchDropdown.vue b/website/client/components/members/memberSearchDropdown.vue
new file mode 100644
index 00000000000..ada0c50a28b
--- /dev/null
+++ b/website/client/components/members/memberSearchDropdown.vue
@@ -0,0 +1,47 @@
+
+b-dropdown.create-dropdown(:text="text", no-flip)
+ input.form-control(type='text', v-model='searchTerm')
+ b-dropdown-item(v-for="member in memberResults", :key="member._id", @click="selectMember(member)")
+ | {{ member.profile.name }}
+
+
+
+
+
diff --git a/website/client/components/members/removeMemberModal.vue b/website/client/components/members/removeMemberModal.vue
index e6172f236a4..7fc706d322e 100644
--- a/website/client/components/members/removeMemberModal.vue
+++ b/website/client/components/members/removeMemberModal.vue
@@ -10,7 +10,7 @@
v-model='removeMessage')
.modal-footer
button.pull-left.btn.btn-danger(@click='confirmRemoveMember()') {{ $t('yesRemove') }}
- button.btn.btn-default(@click='close()') {{ $t('cancel') }}
+ button.btn.btn-secondary(@click='close()') {{ $t('cancel') }}
diff --git a/website/client/components/shops/market/sellModal.vue b/website/client/components/shops/market/sellModal.vue
index 0d3753a1d87..8eee123848f 100644
--- a/website/client/components/shops/market/sellModal.vue
+++ b/website/client/components/shops/market/sellModal.vue
@@ -7,9 +7,16 @@
div.close
span.svg-icon.inline.icon-10(aria-hidden="true", v-html="icons.close", @click="hideDialog()")
- div.content(v-if="item != null")
+ div.content(v-if="item")
- div.inner-content
+ div.inner-content(v-if="item.sellWarningNote")
+ slot(name="item", :item="item")
+
+ h4.title {{ text ? text : item.text() }}
+ div.text {{ item.sellWarningNote() }}
+ br
+
+ div.inner-content(v-else)
slot(name="item", :item="item")
h4.title {{ text ? text : item.text() }}
diff --git a/website/client/components/shops/quests/index.vue b/website/client/components/shops/quests/index.vue
index 16a27bfd6d8..0f499129d0f 100644
--- a/website/client/components/shops/quests/index.vue
+++ b/website/client/components/shops/quests/index.vue
@@ -1,6 +1,6 @@
.row.quests
- .standard-sidebar
+ .standard-sidebar.d-none.d-sm-block
.form-group
input.form-control.input-search(type="text", v-model="searchText", :placeholder="$t('search')")
@@ -11,10 +11,9 @@
v-for="category in categories",
:key="category.identifier",
)
- label.custom-control.custom-checkbox
- input.custom-control-input(type="checkbox", v-model="viewOptions[category.identifier].selected")
- span.custom-control-indicator
- span.custom-control-description(v-once) {{ category.text }}
+ .custom-control.custom-checkbox
+ input.custom-control-input(type="checkbox", v-model="viewOptions[category.identifier].selected", :id="`category-${category.identifier}`")
+ label.custom-control-label(v-once, :for="`category-${category.identifier}`") {{ category.text }}
div.form-group.clearfix
h3.float-left(v-once) {{ $t('hideLocked') }}
diff --git a/website/client/components/shops/quests/questDialogContent.vue b/website/client/components/shops/quests/questDialogContent.vue
index 4bff1a058cf..48a9eb082c1 100644
--- a/website/client/components/shops/quests/questDialogContent.vue
+++ b/website/client/components/shops/quests/questDialogContent.vue
@@ -32,7 +32,6 @@
diff --git a/website/client/directives/sortable.directive.js b/website/client/directives/sortable.directive.js
deleted file mode 100644
index 24ebabf0aa6..00000000000
--- a/website/client/directives/sortable.directive.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import Sortable from 'sortablejs';
-import uuid from 'uuid';
-
-let emit = (vNode, eventName, data) => {
- let handlers = vNode.data && vNode.data.on ||
- vNode.componentOptions && vNode.componentOptions.listeners;
-
- if (handlers && handlers[eventName]) {
- handlers[eventName].fns(data);
- }
-};
-
-let sortableReferences = {};
-
-function createSortable (el, vNode) {
- let sortableRef = Sortable.create(el, {
- filter: '.task-dropdown', // do not make the tasks dropdown draggable or it won't work
- onSort: (evt) => {
- emit(vNode, 'onsort', {
- oldIndex: evt.oldIndex,
- newIndex: evt.newIndex,
- });
- },
- });
-
- let uniqueId = uuid();
- sortableReferences[uniqueId] = sortableRef;
- el.dataset.sortableId = uniqueId;
-}
-
-export default {
- bind (el, binding, vNode) {
- createSortable(el, vNode);
- },
- unbind (el) {
- if (sortableReferences[el.dataset.sortableId]) sortableReferences[el.dataset.sortableId].destroy();
- },
- update (el, vNode) {
- if (sortableReferences[el.dataset.sortableId] && !vNode.value) {
- sortableReferences[el.dataset.sortableId].destroy();
- delete sortableReferences[el.dataset.sortableId];
- return;
- }
- if (!sortableReferences[el.dataset.sortableId]) createSortable(el, vNode);
- },
-};
diff --git a/website/client/index.html b/website/client/index.html
index 1b2cb7813fd..50a5cda11ea 100644
--- a/website/client/index.html
+++ b/website/client/index.html
@@ -3,7 +3,9 @@
- De siger at der lurer en frygtelig ondskab i grotterne under Habitica-bjerget. Et monster, hvis blotte tilstedeværelse knækker viljen hos landets stærke helte, og fylder dem med dårlige vaner og dovenskab! Bæstet er en enorm drage med enorme kræfter og består af skygger: Last, den forræderiske Skyggedrage. Modige Habitikanere, rejs jer og overvind dette forfærdelige bæst en gang for alle, men kun hvis I tror I kan klare jer imod dens enorm kræfte . Hvordan skulle I kunne bekæmpe uhyret hvis I allerede er i dets magt? Lad jer ikke drukne i laster og dovenskab. Kæmp for at modarbejde dragens mørke indflydelse og befri jer for hans greb i jer!
@eevachu преглъща уплашено и казва: „Сигурно лошите ни навици са я заразили.“
„Бързо!“ — казва Фералем Тау — „Да направим нещо, преди и другите крави да муутират.“
Чу достатъчно. Без повече размотаване — време е да поставиш лошите навици на мястото им!",
+ "questCowNotes": "Беше дълъг, горещ ден във фермата Спаринг и няма нищо, което да желаеш повече от вода и добър сън. Както си стоиш замечтано, изведнъж @Soloana започва да крещи: „Бягайте, всички! Кравата на наградите муутира!“
@eevachu преглъща уплашено и казва: „Сигурно лошите ни навици са я заразили.“
„Бързо!“ — казва @Feralem Tau — „Да направим нещо, преди и другите крави да муутират.“
Чу достатъчно. Без повече размотаване — време е да поставиш лошите навици на мястото им!",
"questCowCompletion": "Издояваш добрите си навици колкото може, докато кравата най-после връща нормалната си форма. Сега тя те гледа с красивите си кафяви очи и побутва към теб три яйца.
@fuzzytrees се смее и ти подава яйцата: „Може би все още е муутирала, ако в тези яйца има малки кравички. Вярвам че ще се придържаш към добрите си навици докато ги отглеждаш!“",
"questCowBoss": "Муутирала крава",
"questCowDropCowEgg": "Крава (яйце)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "Леко размахвайки някакъв крайник завършващ с карфица, и със слаб рев, Ужасяващото Преждоспагети най-накрая се срива и се превръща в купчина кълбета прежда.
„Погрижи се за тази прежда“ — казва продавачът @JinjooHat, подавайки ти ги. — „Ако ги храниш и се грижиш добре за тях, те ще се превърнат в нови вълнуващи проекти, които може да окрилят сърцето ти…“",
"questYarnBoss": "Ужасяващото Преждоспагети",
"questYarnDropYarnEgg": "Прежда (яйце)",
- "questYarnUnlockText": "Отключва възможността за купуване на яйца на прежда от пазара."
+ "questYarnUnlockText": "Отключва възможността за купуване на яйца на прежда от пазара.",
+ "winterQuestsText": "Пакет зимни мисии",
+ "winterQuestsNotes": "Съдържа: „Ловджията Дядо Коледа“, „Търсенето на мечето“ и „Пернатият мраз“. Наличен до 31 декември.",
+ "questPterodactylText": "Птерор-дактилът",
+ "questPterodactylNotes": "Разхождаш се безцелно из Споколандските планини, когато ужасяващ пронизителен крясък те измъква от състоянието на блаженство. Обръщаш се и виждаш как към теб лети отвратително чудовище, и мигновено те обзема ужасяващо чувство. Докато се обръщаш с намерението да си плюеш на петите, @Lilith of Alfheim те хваща. „Без паника! Това е просто един Птерор-дактил!“
@Procyon P кима — „Имат гнездо наоколо, но ги привлича миризмата на отрицателни навици и незавършени ежедневни задачи.“
„Не се притеснявай“ — казва @Katy133, — „просто трябва да бъдем още по-продуктивни, за даго победим!“ Изпълваш се с ново чувство за цел и се обръщаш към нападателя.",
+ "questPterodactylCompletion": "След един последен писък Птерор-дактилът се хвърля от ръба на скалата. Втурваш се към ръба, за да видиш как изчезва над далечните степи. „Уф, радвам се, че това свърши“ — казваш. „Аз също“ — отговаря ти @GeraldThePixel. — „Но виж! Оставил е няколко яйца за нас.“ @Edge ти подава три яйца и ти ги поемаш спокойно, заобиколен от ореола на положителните навици и сините ежедневни задачи.",
+ "questPterodactylBoss": "Птерор-дактил",
+ "questPterodactylDropPterodactylEgg": "Птеродактил (яйце)",
+ "questPterodactylUnlockText": "Отключва възможността за купуване на яйца на птеродактил от пазара."
}
\ No newline at end of file
diff --git a/website/common/locales/bg/settings.json b/website/common/locales/bg/settings.json
index 5f7e97a79ae..18a7696ecba 100644
--- a/website/common/locales/bg/settings.json
+++ b/website/common/locales/bg/settings.json
@@ -65,7 +65,7 @@
"resetText1": "ВНИМАНИЕ! Това нулира части от профила Ви. Това е силно непрепоръчително, но някои хора го смятат за полезно в началото, след като са използвали уеб сайта известно време.",
"resetText2": "Ще загубите всичките си нива, злато и точки опит. Всички задачи (освен тези от предизвикателства) ще бъдат изтрити завинаги и ще загубите цялата им история. Ще загубите всичката си екипировка, но ще можете да си купите отново всичко, включително предметите от ограничени серии и тайнствените предмети за абонати, които притежавате в момента (ще трябва да използвате правилния клас, за да закупите отново класово-специфичната екипировка). Ще запазите текущия си клас, както и любимците и превозите си. Вместо това, може да предпочетете да използвате Кълбото на прераждането, което е много по-безопасно и ще запази задачите Ви.",
"deleteLocalAccountText": "Наистина ли искате това? Профилът Ви ще бъде изтрит завинаги и няма да може да бъде възстановен! Ще трябва да регистрирате нов профил, ако искате да използвате Хабитика отново. Закупените и използваните диаманти няма да Ви бъдат възстановени. Ако сте напълно сигурен/на в решението си, въведете паролата си в полето.",
- "deleteSocialAccountText": "Наистина ли искате това? Профилът Ви ще бъде изтрит завинаги и няма да може да бъде възстановен! Ще трябва да регистрирате нов профил, ако искате да използвате Хабитика отново. Закупените и използваните диаманти няма да Ви бъдат възстановени. Ако сте напълно сигурен/на в решението си, въведете „DELETE“ (без кавичките) в полето по-долу.",
+ "deleteSocialAccountText": "Наистина ли искате това? Профилът Ви ще бъде изтрит завинаги и няма да може да бъде възстановен! Ще трябва да регистрирате нов профил, ако искате да използвате Хабитика отново. Закупените и използваните диаманти няма да Ви бъдат възстановени. Ако сте напълно сигурен/на в решението си, въведете „<%= magicWord %>“ (без кавичките) в полето по-долу.",
"API": "ППИ",
"APIv3": "ППИ версия 3",
"APIText": "Можете да копирате тези стойности и да ги използвате във външни приложения. Имайте предвид, че Вашият жетон за ППИ е нещо като парола - и не го споделяйте. Понякога от Вас може да изискват Вашия потребителски идентификатор и в това няма нищо опасно, но никога не публикувайте своя жетон за ППИ там, където той може да бъде видян от другиго, включително в Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Подарък — абонамент",
"giftedSubscriptionInfo": "<%= name %> Ви подари <%= months %> месец(а) абонамент",
"giftedSubscriptionFull": "Здравейте <%= username %>, <%= sender %> Ви изпрати <%= monthCount %> месец(а) абонамент!",
+ "giftedSubscriptionWinterPromo": "Здравейте, <%= username %>, Вие получихте <%= monthCount %> месец(а) абонамент като част от нашата промоция за подаряване на подаръци за празниците!",
"invitedParty": "Покана в група",
"invitedGuild": "Покана в гилдия",
"importantAnnouncements": "Напомняния да влезете, за да завършите задачите си и да получите награди",
diff --git a/website/common/locales/bg/subscriber.json b/website/common/locales/bg/subscriber.json
index 0c8e7deaa2f..1315108e204 100644
--- a/website/common/locales/bg/subscriber.json
+++ b/website/common/locales/bg/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Прекратяване на абонамента",
"cancelSubInfoGoogle": "Моля, идете в раздела „Профил > Абонаменти“ в магазина „Google Play“, за да прекратите абонамента си или да видите кога изтича той, ако вече сте го прекратили. Тук не можете да разберете дали абонаментът Ви е бил прекратен.",
"cancelSubInfoApple": "Моля, следвайте официалните инструкции на Апъл, за да прекратите абонамента си, или да видите кога изтича той, ако вече сте го прекратили. Тук не можете да разберете дали абонаментът Ви е бил прекратен.",
+ "cancelSubInfoGroupPlan": "Тъй като имате безплатен абонамент от групов план, не можете да го прекратите. Той ще приключи когато престанете да бъдете член на групата. Ако Вие сте водачът на групата и искате да прекратите целия групов план, можете да го направите от раздела „Подробности за разплащането“ на групата.",
"canceledSubscription": "Прекратен абонамент",
"cancelingSubscription": "Прекратяване на абонамента",
"adminSub": "Администраторски абонаменти",
@@ -136,6 +137,7 @@
"mysterySet201709": "Комплект на ученика-магьосник",
"mysterySet201710": "Комплект на надменното дяволче",
"mysterySet201711": "Комплект на килимния летец",
+ "mysterySet201712": "Комплект на майстора-свещар",
"mysterySet301404": "Стандартен изтънчен комплект",
"mysterySet301405": "Комплект изтънчени принадлежности",
"mysterySet301703": "Изтънчен паунов комплект",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Непознат вид карта.",
"invalidCoupon": "Грешен код от купон.",
"couponUsed": "Този код от купон вече е използван.",
- "noSudoAccess": "Нямате достъп на супер потребител.",
"couponCodeRequired": "Кодът от купона е задължителен.",
"eventRequired": "„req.params.event“ е задължително.",
"countRequired": "„req.query.count“ е задължително.",
diff --git a/website/common/locales/bg/tasks.json b/website/common/locales/bg/tasks.json
index 85b1ffc0a04..3435527b912 100644
--- a/website/common/locales/bg/tasks.json
+++ b/website/common/locales/bg/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Потвърждаване, че тази ежедневна задача не е била свършена, преди нанасяне на щетите",
"yesterDailiesDescription": "Ако това е включено, Хабитика ще ви пита дали наистина сте искали да оставите ежедневната задача несвършена, преди да изчисли и приложи щетите върху героя Ви. Това може да Ви предпази от нежелани щети по невнимание.",
"repeatDayError": "Моля, уверете се, че сте избрали поне един ден от седмицата.",
- "searchTasks": "Търсене в заглавията и описанията…"
+ "searchTasks": "Търсене в заглавията и описанията…",
+ "sessionOutdated": "Сесията Ви е изтекла. Моля, опреснете или синхронизирайте."
}
\ No newline at end of file
diff --git a/website/common/locales/cs/backgrounds.json b/website/common/locales/cs/backgrounds.json
index 0711a2deac1..3c5256d2644 100644
--- a/website/common/locales/cs/backgrounds.json
+++ b/website/common/locales/cs/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Půlnoční hrad",
"backgroundMidnightCastleNotes": "Procházej se půlnočním hradem.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Leť skrz tornádo."
+ "backgroundTornadoNotes": "Leť skrz tornádo.",
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/cs/challenge.json b/website/common/locales/cs/challenge.json
index 69b35f02823..22d7abb2860 100644
--- a/website/common/locales/cs/challenge.json
+++ b/website/common/locales/cs/challenge.json
@@ -111,7 +111,7 @@
"challengeDescriptionPlaceholder": "Use this section to go into more detail about everything that Challenge participants should know about your Challenge.",
"challengeGuild": "Add to",
"challengeMinimum": "Minimum 1 Gem for public Challenges (helps prevent spam, it really does).",
- "participantsTitle": "Participants",
+ "participantsTitle": "účastníci",
"shortName": "Short Name",
"shortNamePlaceholder": "What short tag should be used to identify your Challenge?",
"updateChallenge": "Update Challenge",
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "selectMember": "Select Member",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/cs/character.json b/website/common/locales/cs/character.json
index 52e52e31035..c9afdd70246 100644
--- a/website/common/locales/cs/character.json
+++ b/website/common/locales/cs/character.json
@@ -163,6 +163,7 @@
"dieText": "Propadl jsi o úroveň níž a přišel jsi o všechny zlaťáky a náhodný kus vybavení. Povstaň, Habiťane, a zkus to znovu! Zbav se zlozvyků, poctivě plň denní úkoly a v případě zaváhání se vyhni smrti pomocí léčivého lektvaru.",
"sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "Koupit za <%= cost %> drahokamů?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Nedostatek many.",
"invalidTarget": "You can't cast a skill on that.",
"youCast": "Seslal jsi <%= spell %>.",
diff --git a/website/common/locales/cs/content.json b/website/common/locales/cs/content.json
index 832de375aff..8b0bacbb6bc 100644
--- a/website/common/locales/cs/content.json
+++ b/website/common/locales/cs/content.json
@@ -159,8 +159,11 @@
"questEggHippoMountText": "hroch",
"questEggHippoAdjective": "veselý",
"questEggYarnText": "Yarn",
- "questEggYarnMountText": "Flying Carpet",
- "questEggYarnAdjective": "woolen",
+ "questEggYarnMountText": "létající koberec",
+ "questEggYarnAdjective": "vlněný",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Najdi líhnoucí lektvar, nalij ho na vejce a to se vylíhne v <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Základní",
"hatchingPotionWhite": "Bílý",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "oblačný",
"hatchingPotionShimmer": "třpytivý",
"hatchingPotionFairy": "pohádkový",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Nalij ho na vejce a vylíhne se ti <%= potText(locale) %> mazlíček.",
"premiumPotionAddlNotes": "Nelze použít na vejce mazlíčků z výprav.",
"foodMeat": "Maso",
@@ -218,5 +222,6 @@
"foodCandyRed": "Skořicové cukrátko",
"foodSaddleText": "Sedlo",
"foodSaddleNotes": "Okamžitě zkrotí jednoho z tvých mazlíčků, aby sis ho mohl osedlat.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Nakrm tímto mazlíčka, aby z něj vyrostlo pořádné zvíře."
}
\ No newline at end of file
diff --git a/website/common/locales/cs/contrib.json b/website/common/locales/cs/contrib.json
index 28fdc55fbe3..1f0d48ec398 100644
--- a/website/common/locales/cs/contrib.json
+++ b/website/common/locales/cs/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, ty úžasná osobo! Nyní jsi za pomoc programu Habitica na úrovni přispěvatele <%= name %> . Podívej se",
"contribLink": "jaké ceny jsi za svou pomoc získal!",
"contribName": "Přispěvatel",
- "contribText": "Pomohl programu Habitica (programování, design, pixel art, právní pomoc, dokumentace, atd.). Chceš toto ocenění? Přečti si víc.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Číst dál",
"kickstartName": "Podporovatel z Kickstarteru úrovně - $<%= key %>",
"kickstartText": "Podpořil projekt na Kickstarteru",
diff --git a/website/common/locales/cs/faq.json b/website/common/locales/cs/faq.json
index b084b1f846c..23308c11adf 100644
--- a/website/common/locales/cs/faq.json
+++ b/website/common/locales/cs/faq.json
@@ -2,7 +2,7 @@
"frequentlyAskedQuestions": "Nejčastější otázky",
"faqQuestion0": "Jsem zmatený. Kde najdu přehled?",
"iosFaqAnswer0": "Nejprve si zadáš nějaký úkol, který chceš splnit (ve škole, v práci, etc.). Až ho splníš a odškrtneš, dostaneš Zkušenostní body a zlato. Zlato se používá na nákup vybavení nebo jiných předmětů a vlastních odměn. Díky zkušenosti budeš získávat vyšší a vyšší úrovně a odemykat obsah, jakým jsou třeba Mazlíčci, Dovednosti, nebo Výpravy! Svou postavu si můžeš upravit v Menu > Upravit postavu.\n\nPár základních rad jak se tu pohybovat: když chceš přidat úkol klikni na (+) v pravém horním rohu. Ťuknutím na již existující úkol ho můžeš měnit, a když s ním pohneš doleva, vymaže se. Můžeš si úkoly řadit pomocí tagů v horním pravém rohu, a rozbalovat a zabalovat seznamy kliknutím na bublinu seznamu.",
- "androidFaqAnswer0": "First, you'll set up tasks that you want to do in your everyday life. Then, as you complete the tasks in real life and check them off, you'll earn experience and gold. Gold is used to buy equipment and some items, as well as custom rewards. Experience causes your character to level up and unlock content such as Pets, Skills, and Quests! You can customize your character under Menu > [Inventory >] Avatar.\n\n Some basic ways to interact: click the (+) in the lower-right-hand corner to add a new task. Tap on an existing task to edit it, and swipe left on a task to delete it. You can sort tasks using Tags in the upper-right-hand corner, and expand and contract checklists by clicking on the checklist count box.",
+ "androidFaqAnswer0": "Nejprve si nastavíš úkoly, které chceš dělat v každodenním životě. Poté, zatímco budeš plnit své úkoly v reálném životě a odškrtávat si je, budeš dostávat zkušenosti a zlato. Zlato můžeš použít na nákup vybavení a i nějakých položek v obchodě, ale také na své vlastní odměny. Zkušenosti způsobují to, že se tvoje postava dostane na další úroveň (level) a tím se ti postupně odemyká další obsah jako domácí mazlíčci, dovednosti a úkoly. Můžeš si svoji postavu upravit pod Menu > [Inventář] > [Avatar].\n\nNěkteré základní způsoby interakce: klikni na (+) v pravém dolním rohu pro přidání nového úkolu. Klikni na již vytvořený úkol pro jeho úpravu a přejeď prstem doleva na úkolu pro jeho odstranění. Můžeš si úkoly seřadit za použití Štítků v pravém horním rohu a rozbalit či zabalit seznamy tím, že klikneš na počítadlo seznamu.",
"webFaqAnswer0": "Nejprve si zadáš nějaký úkol, který chceš splnit v reálném životě. Až ho splníš a odškrtneš, dostaneš Zkušenostní body a zlato. Zlato se používá na nákup vybavení nebo jiných předmětů a vlastních odměn. Díky zkušenosti budeš získávat vyšší a vyšší úrovně a odemykat obsah, jakým jsou třeba Mazlíčci, Dovednosti, nebo Výpravy! Pro více informací se podívej na přehled krok-za-krokem v [Nápověda -> Přehled pro nové uživatele] (https://habitica.com/static/overview).",
"faqQuestion1": "Jak si přidám úkoly?",
"iosFaqAnswer1": "Dobré zvyky (ty s +), jsou věci, které můžeš plnit kolikrát chceš, například jedení zeleniny. Zlozvyky (ty s -) jsou věci, kterým se chceš vyhnout, třeba kousání nehtů. Zvyky s + a - jsou takové věci, kde můžeš udělat dobré či špatné rozhodnutí, jako třeba když jdeš po schodech vs. jízda výtahem. Dobré zvyky tě za splnění odmění Zkušenostmi a zlatem. Zlozvyky ti uberou Zdraví.\n\nDenní úkoly jsou věci, které musíš dělat každý den, jako třeba čištění zubů nebo kontrola emailu. Můžeš si nastavit ve které dny máš plnit které denní úkoly tak, že na ně ťukneš. Pokud naplánovaný Denní úkol nesplníš, odečte se ti přes noc Zdraví. Dávej pozor, aby sis nepřidal moc Denních úkolů najednou!\n\nÚkolníček obsahuje tvoje naplánované úkoly. Když je splníš, přinesou ti Zkušenost a zlato. Za nesplněné úkoly v Úkolníčku nikdy neztratíš Zdraví. Můžeš jim přiřadit datum splnění tím, že na ně ťukneš.",
@@ -10,7 +10,7 @@
"webFaqAnswer1": "* Good Habits (the ones with a :heavy_plus_sign:) are tasks that you can do many times a day, such as eating vegetables. Bad Habits (the ones with a :heavy_minus_sign:) are tasks that you should avoid, like biting nails. Habits with a :heavy_plus_sign: and a :heavy_minus_sign: have a good choice and a bad choice, like taking the stairs vs. taking the elevator. Good Habits award Experience and Gold. Bad Habits subtract Health.\n* Dailies are tasks that you have to do every day, like brushing your teeth or checking your email. You can adjust the days that a Daily is due by clicking the pencil item to edit it. If you skip a Daily that is due, your avatar will take damage overnight. Be careful not to add too many Dailies at once!\n* To-Dos are your To-Do list. Completing a To-Do earns you Gold and Experience. You never lose Health from To-Dos. You can add a due date to a To-Do by clicking the pencil icon to edit.",
"faqQuestion2": "Co jsou ukázkové úkoly?",
"iosFaqAnswer2": "Wiki má čtyři seznamy ukázkových úkolů, kterými se můžeš inspirovat:\n
\n* [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits)\n* [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies)\n* [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos)\n* [Sample Custom Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
- "androidFaqAnswer2": "The wiki has four lists of sample tasks to use as inspiration:\n
\n * [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits)\n * [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies)\n * [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos)\n * [Sample Custom Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
+ "androidFaqAnswer2": "Habitica wiki má čtyři seznamy ukázkových úkolů pro inspiraci:\n
\n * [Ukázkové zvyky](http://habitica.wikia.com/wiki/Sample_Habits)\n * [Ukázkové Denní úkoly](http://habitica.wikia.com/wiki/Sample_Dailies)\n * [Ukázkové úkoly(http://habitica.wikia.com/wiki/Sample_To-Dos)\n * [Ukázkové vlastní odměny](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
"webFaqAnswer2": "Wiki má čtyři seznamy ukázkových úkolů, kterými se můžeš inspirovat:\n [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits)\n* [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies)\n* [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos)\n* [Sample Custom Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
"faqQuestion3": "Proč moje úkoly mění barvu?",
"iosFaqAnswer3": "Tvé úkoly mění barvu v závislosti na tom, jak dobře si v nich vedeš! Každý nový úkol začíná na neutrální žluté. Plň Denní úkoly a Zvyky často a začnou modrat. Když nesplníš Denní úkol nebo se poddáš zlozvyku, začnou tvé úkoly červenat. Čím červenější úkol bude, tím více odměn za něj získáš, ale pokud to je Denní úkol nebo Zvyk, tak tím více ti ublíží! Tento systém tě pomáhá motivovat a plnit úkoly, se kterými máš problém.",
diff --git a/website/common/locales/cs/front.json b/website/common/locales/cs/front.json
index 909448fa2f4..88b81af4cf6 100644
--- a/website/common/locales/cs/front.json
+++ b/website/common/locales/cs/front.json
@@ -30,6 +30,7 @@
"companyAbout": "How It Works",
"companyBlog": "Blog",
"devBlog": "Vývojářský blog",
+ "companyContribute": "Contribute",
"companyDonate": "Přispět",
"companyPrivacy": "Soukromí",
"companyTerms": "Podmínky",
@@ -252,7 +253,7 @@
"missingNewPassword": "Chybějící nové heslo.",
"invalidEmailDomain": "Nemůžeš se zaregistrovat e-mailem z následujících domén: <%= domains %>",
"wrongPassword": "Špatné heslo.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Neplatná e-mailová adresa.",
"emailTaken": "E-mailová adresa je již použita.",
"newEmailRequired": "Chybějící e-mailová adresa.",
diff --git a/website/common/locales/cs/gear.json b/website/common/locales/cs/gear.json
index 614338ecc13..c015f7a2a00 100644
--- a/website/common/locales/cs/gear.json
+++ b/website/common/locales/cs/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Vidle hodů",
"weaponMystery201411Notes": "Píchni své nepřátele nebo se pusť do svého oblíbeného jídla - tyhle všestranné vidle zvládnou všechno! Nepřináší žádný benefit.",
"weaponMystery201502Text": "Třpytivá okřídlená hůl lásky a také pravdy",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "zbroj",
"armorCapitalized": "Zbroj",
"armorBase0Text": "Obyčejné oblečení",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Oděv poslíčka",
"armorMystery201402Notes": "Třpytivý a silný, tento oděv má spoustu kapes na dopisy. Nepřináší žádný benefit. Výbava pro předplatitele únor 2014",
"armorMystery201403Text": "Zbroj lesáka",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunk oblek",
"armorMystery301404Notes": "Elegantní a fešácký, joj! Nepřináší žádný benefit. Předmět pro předplatitele únor 3015.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Helma duhového bojovníka",
"headSpecialGaymerxNotes": "Ku příležitosti oslav GaymerX je tato speciální helma zdobena zářivým, barevným, duhovým vzorem! GaymerX je herní veletrh oslavující LGBTQ a hry a je otevřený všem.",
"headMystery201402Text": "Okřídlená přilba",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Fešný cylindr",
"headMystery301404Notes": "Fešný cylindr pro ty největší džentlmeny. Předmět pro předplatitele leden 2015. Nepřináší žádný benefit.",
"headMystery301405Text": "Obyčejný cylindr",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Kat odhodlání",
"shieldMystery201601Notes": "Tento meč lze použít k odražení všech rozptýlení. Neposkytuje žádný bonus. Předplatitelský předmět ledna 2016.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "This cloak has secret pockets to hide all the Gold you loot from your Tasks. Confers no benefit. June 2017 Subscriber Item.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "doplňky na hlavu",
"headAccessoryCapitalized": "Head Accessory",
"accessories": "Doplňky",
diff --git a/website/common/locales/cs/generic.json b/website/common/locales/cs/generic.json
index f0f5e000b42..92bdf7fd3de 100644
--- a/website/common/locales/cs/generic.json
+++ b/website/common/locales/cs/generic.json
@@ -4,9 +4,9 @@
"titleIndex": "Habitica | Hra tvého života",
"habitica": "Habitica",
"habiticaLink": "Habitica",
- "onward": "Onward!",
- "done": "Done",
- "gotIt": "Got it!",
+ "onward": "Vpřed!",
+ "done": "Hotovo",
+ "gotIt": "Mám to!",
"titleTasks": "Úkoly",
"titleAvatar": "Postava",
"titleBackgrounds": "Pozadí",
@@ -28,9 +28,9 @@
"titleTimeTravelers": "Cestovatelé časem",
"titleSeasonalShop": "Sezónní obchod",
"titleSettings": "Nastavení",
- "saveEdits": "Save Edits",
- "showMore": "Show More",
- "showLess": "Show Less",
+ "saveEdits": "Ulož úpravy",
+ "showMore": "Ukaž více",
+ "showLess": "Ukaž méně",
"expandToolbar": "Rozbalit lištu",
"collapseToolbar": "Zabalit lištu",
"markdownBlurb": "Program Habitica používá formátování ve zprávách. Podívej se na Tahák na formátování, kde najdeš více informací.",
@@ -48,23 +48,23 @@
"unorderedListMarkdown": "+ První položka\n+ Druhá položka\n+ Třetí položka",
"code": "`kód`",
"achievements": "Úspěchy",
- "basicAchievs": "Basic Achievements",
- "seasonalAchievs": "Seasonal Achievements",
- "specialAchievs": "Special Achievements",
+ "basicAchievs": "Základní úspěchy",
+ "seasonalAchievs": "Sezónní úspěchy ",
+ "specialAchievs": "Speciální úspěchy",
"modalAchievement": "Úspěch!",
"special": "Speciální",
"site": "Stránka",
"help": "Nápověda",
"user": "Uživatel",
"market": "Trh",
- "groupPlansTitle": "Group Plans",
- "newGroupTitle": "New Group",
+ "groupPlansTitle": "Skupinové plány",
+ "newGroupTitle": "Nová skupina",
"subscriberItem": "Záhadný předmět",
"newSubscriberItem": "Nový záhadný předmět",
"subscriberItemText": "Předplatitelé obdrží každý měsíc záhadný předmět. Ten je zpravidla představen týden před koncem měsíce. Pro více informací mrkni na stránku 'Mystery Item' na wiki.",
"all": "Vše",
"none": "Žádné",
- "more": "<%= count %> more",
+ "more": "<%= count %> více",
"and": "a",
"loginSuccess": "Přihlášení proběhlo úspěšně!",
"youSure": "Jsi si jistý?",
@@ -86,8 +86,8 @@
"gemsPopoverTitle": "drahokamy",
"gems": "Drahokamy",
"gemButton": "Máš <%= number %> Drahokamy/Drahokamů",
- "needMoreGems": "Need More Gems?",
- "needMoreGemsInfo": "Purchase Gems now, or become a subscriber to buy Gems with Gold, get monthly mystery items, enjoy increased drop caps and more!",
+ "needMoreGems": "Potřebuješ více drahokamů?",
+ "needMoreGemsInfo": "Kup si drahokamy nyní, nebo se staň předplatitelem a kup si je za zlato, dostaň náhodné věci každý měsíc, užívej si zvýšené maximální hranice denních nálezů věcí a více!",
"moreInfo": "Více informací",
"moreInfoChallengesURL": "http://habitica.wikia.com/wiki/Challenges",
"moreInfoTagsURL": "http://habitica.wikia.com/wiki/Tags",
@@ -107,8 +107,8 @@
"achievementDilatory": "Zachránce Liknavosti",
"achievementDilatoryText": "Pomohl přemoci obávaného Drag'ona z Liknavosti v průběhu letní Šplouch akce 2014!",
"costumeContest": "Soutěžící s kostýmem",
- "costumeContestText": "Účastnil se soutěže kodtýmů Habitoweenu. Na některé z kostýmů se můžeš podívat na Habitica blogu!",
- "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Členem od",
"lastLoggedIn": "- Naposledy přihlášen",
"notPorted": "Tato funkce zatím nebyla převedena z původní stránky.",
@@ -122,7 +122,7 @@
"error": "Chyba",
"menu": "Menu",
"notifications": "Oznámení",
- "noNotifications": "You have no notifications.",
+ "noNotifications": "Nemáš žádná oznámení.",
"clear": "Vymazat",
"endTour": "Ukončit prohlídku",
"audioTheme": "Zvukové téma",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's Theme",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Theme",
"audioTheme_arashiTheme": "Arashi's Theme",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Položit otázku",
"reportBug": "Nahlásit chybu",
"HabiticaWiki": "Habitica Wiki",
@@ -162,7 +164,7 @@
"achievementBewilder": "Zachránce Mistiflyingu",
"achievementBewilderText": "Přispěl k poražení Be-Wildera během akce Jarního Hodu 2016!",
"checkOutProgress": "Koukejte, jaký pokrok se mi povedl v zemi Habitica!",
- "cards": "Cards",
+ "cards": "Karty",
"cardReceived": "Obdržel jsi přání!",
"cardReceivedFrom": "<%= cardType %> od <%= userName %>",
"greetingCard": "Blahopřání",
@@ -173,7 +175,7 @@
"greeting2": "`vehementně mává`",
"greeting3": "Čau ty!",
"greetingCardAchievementTitle": "Veselý kámoš",
- "greetingCardAchievementText": "Hey! Hi! Hello! Sent or received <%= count %> greeting cards.",
+ "greetingCardAchievementText": "Ahoj! Nazdárek! Čau! Poslal nebo obdržel 1<%= count %> blahopřání.",
"thankyouCard": "Děkovné přání",
"thankyouCardExplanation": "Oba obdržíte ocenění Velmi vděčný!",
"thankyouCardNotes": "Pošli děkovné přání někomu z družiny.",
@@ -192,28 +194,28 @@
"congratsCard": "Congratulations Card",
"congratsCardExplanation": "You both receive the Congratulatory Companion achievement!",
"congratsCardNotes": "Send a Congratulations card to a party member.",
- "congrats0": "Congratulations on your success!",
- "congrats1": "I'm so proud of you!",
- "congrats2": "Well done!",
- "congrats3": "A round of applause for you!",
- "congrats4": "Bask in your well-deserved success!",
+ "congrats0": "Gratulace k tvému úspěchu!",
+ "congrats1": "Jsem na tebe tak pyšný!",
+ "congrats2": "Výborně!",
+ "congrats3": "Kolečko potlesku pro tebe!",
+ "congrats4": "Sluň se ve svém zaslouženém úspěchu.",
"congratsCardAchievementTitle": "Congratulatory Companion",
"congratsCardAchievementText": "It's great to celebrate your friends' achievements! Sent or received <%= count %> congratulations cards.",
"getwellCard": "Get Well Card",
"getwellCardExplanation": "You both receive the Caring Confidant achievement!",
"getwellCardNotes": "Send a Get Well card to a party member.",
- "getwell0": "Hope you feel better soon!",
- "getwell1": "Take care! <3",
- "getwell2": "You're in my thoughts!",
- "getwell3": "Sorry you're not feeling your best!",
+ "getwell0": "Doufám, že se brzo budeš cítit lépe!",
+ "getwell1": "Opatruj se <3",
+ "getwell2": "Myslím na tebe!",
+ "getwell3": "Je mi líto, že se necítíš nejlépe!",
"getwellCardAchievementTitle": "Caring Confidant",
"getwellCardAchievementText": "Well-wishes are always appreciated. Sent or received <%= count %> get well cards.",
"goodluckCard": "Good Luck Card",
"goodluckCardExplanation": "You both receive the Lucky Letter achievement!",
"goodluckCardNotes": "Send a good luck card to a party member.",
- "goodluck0": "May luck always follow you!",
- "goodluck1": "Wishing you lots of luck!",
- "goodluck2": "I hope luck is on your side today and always!!",
+ "goodluck0": "Nechť tě vždy provází štěstěna!",
+ "goodluck1": "Přeji ti hodně štěstí!",
+ "goodluck2": "Doufám, že štěstí zůstane dnes a vždy na tvé straně.",
"goodluckCardAchievementTitle": "Lucky Letter",
"goodluckCardAchievementText": "Wishes for good luck are great encouragement! Sent or received <%= count %> good luck cards.",
"streakAchievement": "Získal jsi ocenění za sérii!",
@@ -233,47 +235,47 @@
"enableDesktopNotifications": "Povolit upozornění na ploše",
"online": "online",
"onlineCount": "<%= count %> online",
- "loading": "Loading...",
- "userIdRequired": "User ID is required",
- "resetFilters": "Clear all filters",
- "applyFilters": "Apply Filters",
- "categories": "Categories",
- "habiticaOfficial": "Habitica Official",
- "animals": "Animals",
- "artDesign": "Art & Design",
- "booksWriting": "Books & Writing",
- "comicsHobbies": "Comics & Hobbies",
- "diyCrafts": "DIY & Crafts",
- "education": "Education",
- "foodCooking": "Food & Cooking",
- "healthFitness": "Health & Fitness",
- "music": "Music",
- "relationship": "Relationships",
- "scienceTech": "Science & Technology",
- "exercise": "Exercise",
- "creativity": "Creativity",
- "budgeting": "Budgeting",
- "health_wellness": "Health & Wellness",
- "self_care": "Self-Care",
- "habitica_official": "Habitica Official",
- "academics": "Academics",
- "advocacy_causes": "Advocacy + Causes",
- "entertainment": "Entertainment",
+ "loading": "Načítání...",
+ "userIdRequired": "Je potřeba uživatelské ID",
+ "resetFilters": "Vyčisti všechny fltry",
+ "applyFilters": "Použij filtry",
+ "categories": "Kategorie",
+ "habiticaOfficial": "Oficiální Habitica",
+ "animals": "Zvířata",
+ "artDesign": "Umění & Design",
+ "booksWriting": "Knihy & Psaní",
+ "comicsHobbies": "Komiksy & Koníčky",
+ "diyCrafts": "Udělej si sám & Vlastnoruční výrobky",
+ "education": "Vzdělání",
+ "foodCooking": "Jídlo & Vaření",
+ "healthFitness": "Zdraví & Fitness",
+ "music": "Hudba",
+ "relationship": "Vztahy",
+ "scienceTech": "Věda & Technologie",
+ "exercise": "Cvičení",
+ "creativity": "Kreativita",
+ "budgeting": "Hospodaření",
+ "health_wellness": "Zdraví & Wellness",
+ "self_care": "Péče o sebe sam",
+ "habitica_official": "Oficiální Habitica",
+ "academics": "Profesoři",
+ "advocacy_causes": "Obhajování + Případy",
+ "entertainment": "Zábava",
"finance": "Finance",
- "health_fitness": "Health + Fitness",
- "hobbies_occupations": "Hobbies + Occupations",
- "location_based": "Location-based",
- "mental_health": "Mental Health + Self-Care",
- "getting_organized": "Getting Organized",
- "self_improvement": "Self-Improvement",
- "spirituality": "Spirituality",
- "time_management": "Time-Management + Accountability",
- "recovery_support_groups": "Recovery + Support Groups",
- "messages": "Messages",
- "emptyMessagesLine1": "You don't have any messages",
- "emptyMessagesLine2": "Send a message to start a conversation!",
- "letsgo": "Let's Go!",
- "selected": "Selected",
- "howManyToBuy": "How many would you like to buy?",
- "habiticaHasUpdated": "There is a new Habitica update. Refresh to get the latest version!"
+ "health_fitness": "Zraví + Fitness",
+ "hobbies_occupations": "Koníčky + Povolání",
+ "location_based": "Na poloze založené",
+ "mental_health": "Duševní zdraví + Péče o sebe",
+ "getting_organized": "Stávání se více organizovaným",
+ "self_improvement": "Sebezlepšení",
+ "spirituality": "Duchovno",
+ "time_management": "Časospráva + Zodpovědnost",
+ "recovery_support_groups": "Uzdravování + Podpůrné skupiny",
+ "messages": "Zprávy",
+ "emptyMessagesLine1": "Nemáš žádné zprávy",
+ "emptyMessagesLine2": "Pošli zprávu a zahaj konverzaci!",
+ "letsgo": "Pojďmě!",
+ "selected": "Vybrané",
+ "howManyToBuy": "Kolik by jsi chtěl koupit?",
+ "habiticaHasUpdated": "Existuje nová verze Habiticy. Znovu načti, aby jsi dostal nejnovější verzi."
}
\ No newline at end of file
diff --git a/website/common/locales/cs/groups.json b/website/common/locales/cs/groups.json
index 0f5b44783c7..982c5ae5a99 100644
--- a/website/common/locales/cs/groups.json
+++ b/website/common/locales/cs/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Nepovinná zpráva",
"yesRemove": "Ano, odstraň je",
"foreverAlone": "Nemůže se ti líbit tvoje vlastní zpráva. Nebuď takový.",
- "sortLevel": "Seřadit podle úrovně",
- "sortRandom": "Řadit náhodně",
- "sortPets": "Řadit podle počtu mazlíčků",
- "sortName": "Seřadit podle jména avatara",
- "sortBackgrounds": "Seřadit podle pozadí",
- "sortHabitrpgJoined": "Seřaď podle data, kdy se vydal na cestu zemí Habitica",
- "sortHabitrpgLastLoggedIn": "Seřaď podle toho, kdy se naposledy přihlásil",
- "ascendingSort": "Seřaď vzestupně",
- "descendingSort": "Seřaď sestupně",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Vytvořit cech za 4 drahokamy?",
"leaveGroupCha": "Opustit výzvy cechu a...",
"confirm": "Potvrdit",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Nemáte oprávnění k smazání této zprávy.",
"onlyGroupLeaderCanEditTasks": "Not authorized to manage tasks!",
"onlyGroupTasksCanBeAssigned": "Only group tasks can be assigned",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Your chat privileges have been revoked.",
"newChatMessagePlainNotification": "New message in <%= groupName %> by <%= authorName %>. Click here to open the chat page!",
"newChatMessageTitle": "New message in <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancel Group Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Canceled Group Plan",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/cs/limited.json b/website/common/locales/cs/limited.json
index df2294302ea..34a3fbfc0e3 100644
--- a/website/common/locales/cs/limited.json
+++ b/website/common/locales/cs/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndApril": "April 19",
"dateEndMay": "May 17",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/cs/loadingscreentips.json b/website/common/locales/cs/loadingscreentips.json
index ad6e88f527b..5b287df1d8d 100644
--- a/website/common/locales/cs/loadingscreentips.json
+++ b/website/common/locales/cs/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tip #<%= tipNumber %>",
"tip1": "Kontroluj úkoly na cestách s mobilní aplikací Habitica.",
- "tip2": "Dosáhni úrovně 100, abys odemkl kouli znovuzrození zadarmo a začal nové dobrodružství!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Používej emoji pro rychlé odlišení svých úkolů.",
"tip4": "Napiš # na začátek názvu úkolu a bude obrovský!",
- "tip5": "Je lepší použít vylepšení ráno aby vydržely déle.",
- "tip6": "Občas projdi své úkoly a ujisti se, že jsou aktuální!",
- "tip7": "Některá pozadí na sebe perfektně navazují, když členové družiny používají stejné pozadí. Např.: Horské jezero, Pagody a Kopce.",
- "tip8": "Pošli někomu soukromou zprávu kliknutím na ikonu obálky vedle jména v chatu!",
- "tip9": "Navštěv gildu Vůdců a gildu Tvůrců výzev pro radu při zakládání nové gildy.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Soutěžením ve výzvách můžeš vyhrát drahokamy. Nové výzvy jsou přidávány každý den!",
- "tip11": "Jestli máš rád oblékání své postavy tak se podívej na gildu Kostýmových karnevalů.",
- "tip12": "Přidej se do cechu \"Challenge... Accepted\" pro pravidelně plánované náhodné výzvy.",
- "tip13": "S více než čtyřmi členy družiny zvyšuješ odpovědnost!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Můžeš přidat hlavičku nebo inspirační citát do tvého seznamu jako zvyk bez žádných (+/-).",
- "tip15": "Přidej seznam do tvého úkolníčku abys zvýšil odměnu!",
- "tip16": "Podívej se na Data pro hodnotné postřehy ohledně tvého pokroku.",
- "tip17": "Použítí štítků může udělat nepraktický seznam úkolů velmi zvládnutelný!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Zvyky, které jsou jenom kladné nebo záporné, postupně \"blednou\" a vrátí se na žlutou.",
- "tip19": "Posil vlastnost Inteligence, abys získal více zkušeností po dokončení úkolu.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Posil vlastnost Vnímání, abys získal více předmětů a zlata.",
"tip21": "Posil vlastnost Síla, abys dal více poškození bossovi nebo udělal kritický zásah.",
"tip22": "Posil vlastnost Obrana, abys dostával menší poškození z nedokončených denních úkolů.",
- "tip23": "Klikni na ikonu sloupcového grafu abys viděl graf, který ukazuje tvůj postup.",
- "tip24": "Habitica je Open Source! Zeptej se v gildě Aspiring Legends jestli chceš pomoct.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "Čtyři sezóní Velké Slavnosti začínají blízko slunovratů a rovnodenností.",
- "tip26": "Šipka nalevo u čísla někoho úrovně znamená, že mají momentálně zlepšené atributy.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Udělal jsi denní úkol včera, ale zapoměl jsi si ho odškrtnout? Nevěš hlavu! S Záznamem včerejších aktivit budeš mít šanci zaznamenat si co jsi udělal předtím, než začne nový den.",
- "tip28": "Nastav si vlastní začátek dne v Nastavení > Stránka abys mohl kontrolovat, kdy se tvůj den restartuje.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Udělej všechny své denní úkoly, abys získal zlepšení perfektního dne, které zvyšuje tvoje atributy!",
"tip30": "Můžeš pozvat lidi i do cechu, ne jen do družiny.",
"tip31": "Pro vzorové úkoly se podívej na předpřipravené seznamy v cechu s názvem Library of Tasks and Challenges.",
- "tip32": "Spousta kódu, umění a psaní je uděláno dobrovolníky! Kdokoli může pomoct.",
- "tip33": "Podívej se na gildu The Bulletin Board pro novinky o gildách, výzvách a ostatních hráči udělaných událostech a ohlaš tam své vlastní!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/cs/messages.json b/website/common/locales/cs/messages.json
index e36d4cea143..cd1834c1c8c 100644
--- a/website/common/locales/cs/messages.json
+++ b/website/common/locales/cs/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Našel jsi výpravu \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Tohle vybavení jsi si koupil už v minulosti, ale momentálně ho nevlastníš. Můžeš si ho koupit znovu ve sloupečku odměnu na stránce s úkoly.",
"messageAlreadyOwnGear": "Tento předmět už máš. Vybav se jím na stránce s Vybavením.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Už teď máš plné zdraví.",
"messageHealthAlreadyMin": "Ach ne! Už nemáš žádné životy, takže je pozdě si kupovat lektvar života, ale neboj se - můžeš se oživit!",
"armoireEquipment": "<%= image %> V almaře jsi našel kus vzácného vybavení ve Zbrojnici: <%= dropText %>! Skvělé!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Již jsi tento příspěvek nahlásil",
"messageGroupChatNotFound": "Zpráva nenalezena!",
"messageGroupChatAdminClearFlagCount": "Pouze admin může smazat počet označení!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ups, vypadá to, že posíláš moc zpráv! Počkej prosím minutku a zkus to znovu. Chat v Krčmě může mít jenom 200 zpráv v jeden čas, takže Habitica podporuje posílání delších, více promyšlených zpráv a odpovědí. Nemůžeme se dočkat, až se s námi podělíš o tom, co máš na srdci. :)",
"messageUserOperationProtected": "cesta `<%= operation %>` nebyla uložena, protože je chráněná.",
"messageUserOperationNotFound": "<%= operation %> operace nebyla nalezena",
diff --git a/website/common/locales/cs/npc.json b/website/common/locales/cs/npc.json
index fb28d96c094..c5016fd42cd 100644
--- a/website/common/locales/cs/npc.json
+++ b/website/common/locales/cs/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Drahokam",
"typeNotSellable": "Nelze prodat. Lze prodat pouze <%= acceptedTypes %>",
"userItemsKeyNotFound": "Klíč nenalezen v user.items <%= type %>",
- "userItemsNotEnough": "Nenalezen dostatek předmětů pro user.items<%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Je požadována cesta k vláknu",
"unlocked": "Předměty byly odemčeny",
"alreadyUnlocked": "Celý set je již odemčen.",
diff --git a/website/common/locales/cs/quests.json b/website/common/locales/cs/quests.json
index 8f90c3a5235..0c72670d898 100644
--- a/website/common/locales/cs/quests.json
+++ b/website/common/locales/cs/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> hledaný předmět nalezen",
"questDamage": "+ <%= val %> poškození bossovi",
"begin": "Začít",
- "bossHP": "Zdraví příšery",
+ "bossHP": "Boss HP",
"bossStrength": "Síla příšery",
"rage": "Zuřivost",
"collect": "Sbírat",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Aby sis mohl koupit tuto výpravu, musíš být na úrovni <%= level %> !",
"mustInviteFriend": "Aby sis zasloužil tuto Výpravu, musíš pozvat někoho do své Družiny. Pozveš někoho hned?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Jsi si jistý, že chceš skončit výpravu? Všechny pozvánky budou ztraceny. Svitek bude navrácen svému majiteli.",
"sureAbort": "Jsi si jistý, že chceš ukončit výpravu? Bude ukončena pro všechny v družině a všechen pokrok bude ztracen. Svitek bude navrácen svému majiteli.",
"doubleSureAbort": "Jsi si určitě jistý? Ujisti se, že tě pak ostatní nebudou do smrti nenávidět!",
diff --git a/website/common/locales/cs/questscontent.json b/website/common/locales/cs/questscontent.json
index 0d5275fae8b..369e43dc8cb 100644
--- a/website/common/locales/cs/questscontent.json
+++ b/website/common/locales/cs/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Pásovec (vejce)",
"questArmadilloUnlockText": "Unlocks purchasable Armadillo eggs in the Market",
"questCowText": "The Mootant Cow",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "Kráva (vejce)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/cs/settings.json b/website/common/locales/cs/settings.json
index 8cc893fb86b..4f1eb5ca27a 100644
--- a/website/common/locales/cs/settings.json
+++ b/website/common/locales/cs/settings.json
@@ -24,7 +24,7 @@
"showBaileyPop": "Vytáhni Baileyho, městského vyvolávače, z úkrytu, aby sis mohl přečíst starší novinky.",
"fixVal": "Opravit hodnoty postavy",
"fixValPop": "Ručně upravit hodnoty jako zdraví, úroveň a zlaťáky.",
- "invalidLevel": "Invalid value: Level must be 1 or greater.",
+ "invalidLevel": "Neplatná hodnota: Úroveň musí být 1 nebo více.",
"enableClass": "Povolit systém povolání",
"enableClassPop": "Dříve jsi se odhlásil ze sytému povolání. Chceš se nyní zapojit?",
"classTourPop": "Zobrazí průvodce pro použití systému povolání.",
@@ -65,7 +65,7 @@
"resetText1": "POZOR! Tímto resetujete mnoho částí svého účtu. Silně nedoporučujeme tuto možnost používat, ale vyhovuje to některým uživatelům, kteří si se stránkou na začátku trochu hrají.",
"resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type your password into the text box below.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Zkopíruj je pro použití v aplikacích třetích stran. Avšak, stejně jako bys nikomu neřekl své heslo, tak nikomu neříkej svůj API Token. Někdy můžeš být požádán o své uživatelské ID, ale nikdy neuveřejňuj svůj API Token tam, kde ho uvidí ostatní a to včetně Githubu.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Darované předplatné",
"giftedSubscriptionInfo": "<%= name %> gifted you a <%= months %> month subscription",
"giftedSubscriptionFull": "Hello <%= username %>, <%= sender %> has sent you <%= monthCount %> months of subscription!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Pozván do Družiny",
"invitedGuild": "Pozván do Cechu",
"importantAnnouncements": "Reminders to check in to complete tasks and receive prizes",
diff --git a/website/common/locales/cs/subscriber.json b/website/common/locales/cs/subscriber.json
index 36285cbbf92..9ad12e5560b 100644
--- a/website/common/locales/cs/subscriber.json
+++ b/website/common/locales/cs/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Zrušit předplatné",
"cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Zrušené předplatné",
"cancelingSubscription": "rušení předplatného",
"adminSub": "Administrátorské předplatné",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Standardní steampunkový set",
"mysterySet301405": "Set steampunkových doplňků",
"mysterySet301703": "Peacock Steampunk Set",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Neznámý typ karty.",
"invalidCoupon": "Neplatný kód kupónu.",
"couponUsed": "Kód kupónu byl již použit.",
- "noSudoAccess": "Nemáte přístup sudo.",
"couponCodeRequired": "Je požadován kód kupónu.",
"eventRequired": "je požadováno „req.params.event\".",
"countRequired": "je požadováno „req.query.count\".",
diff --git a/website/common/locales/cs/tasks.json b/website/common/locales/cs/tasks.json
index f3b44993f20..2343668a546 100644
--- a/website/common/locales/cs/tasks.json
+++ b/website/common/locales/cs/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Confirm that this Daily wasn't done before applying damage",
"yesterDailiesDescription": "If this setting is applied, Habitica will ask you if you meant to leave the Daily undone before calculating and applying damage to your avatar. This can protect you against unintentional damage.",
"repeatDayError": "Please ensure that you have at least one day of the week selected.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Search titles and descriptions...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/da/backgrounds.json b/website/common/locales/da/backgrounds.json
index 448a568a505..dfbe39b0136 100644
--- a/website/common/locales/da/backgrounds.json
+++ b/website/common/locales/da/backgrounds.json
@@ -297,18 +297,32 @@
"backgroundGardenShedNotes": "Arbejd i et haveskur",
"backgroundPixelistsWorkshopText": "Pixelistens Workshop",
"backgroundPixelistsWorkshopNotes": "Skab et mesterværk i Pixelistens Workshop.",
- "backgrounds102017": "SET 41: Released October 2017",
- "backgroundMagicalCandlesText": "Magical Candles",
- "backgroundMagicalCandlesNotes": "Bask in the glow of Magical Candles.",
- "backgroundSpookyHotelText": "Spooky Hotel",
- "backgroundSpookyHotelNotes": "Sneak down the hall of a Spooky Hotel.",
- "backgroundTarPitsText": "Tar Pits",
- "backgroundTarPitsNotes": "Tiptoe through the Tar Pits.",
- "backgrounds112017": "SET 42: Released November 2017",
+ "backgrounds102017": "SÆT 41: Udgivet oktober 2017",
+ "backgroundMagicalCandlesText": "Magiske lys",
+ "backgroundMagicalCandlesNotes": "Bad i gløden fra magiske lys.",
+ "backgroundSpookyHotelText": "Uhyggeligt hotel",
+ "backgroundSpookyHotelNotes": "Liste igennem hallen på et uhyggeligt hotel.",
+ "backgroundTarPitsText": "Tjæresøer",
+ "backgroundTarPitsNotes": "Trippe gennem Tjæresøerne.",
+ "backgrounds112017": "Sæt 42: Udgivet november 2017",
"backgroundFiberArtsRoomText": "Fiber Arts Room",
"backgroundFiberArtsRoomNotes": "Spin thread in a Fiber Arts Room.",
- "backgroundMidnightCastleText": "Midnight Castle",
- "backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
+ "backgroundMidnightCastleText": "Midnatsslottet",
+ "backgroundMidnightCastleNotes": "Spadsere forbi Midnatsslottet.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Fly through a Tornado."
+ "backgroundTornadoNotes": "Flyve igennem en tornado.",
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/da/challenge.json b/website/common/locales/da/challenge.json
index 632533fed34..df02468f7ba 100644
--- a/website/common/locales/da/challenge.json
+++ b/website/common/locales/da/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "selectMember": "Select Member",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/da/character.json b/website/common/locales/da/character.json
index 4d719b7cbc2..23400013678 100644
--- a/website/common/locales/da/character.json
+++ b/website/common/locales/da/character.json
@@ -2,9 +2,9 @@
"communityGuidelinesWarning": "Vær venligst opmærksom på, at dit Skærmnavn, profilbillede og den korte tekst skal leve op til Community Guidelines (f.eks. ingen bandeord, ingen voksne emne, ingen fornærmelser osv.). Hvis du har nogle spørgsmål til om noget er passende, så send endelig en mail til <%= hrefBlankCommunityManagerEmail %>!",
"profile": "Profil",
"avatar": "Tilpas Avatar",
- "editAvatar": "Edit Avatar",
- "noDescription": "This Habitican hasn't added a description.",
- "noPhoto": "This Habitican hasn't added a photo.",
+ "editAvatar": "Ret Avatar",
+ "noDescription": "Denne Habitikaner har ikke tilføjet en beskrivelse.",
+ "noPhoto": "Denne Habitikaner har ikke tilføjet et foto.",
"other": "Andet",
"fullName": "Fuldt navn",
"displayName": "Skærmnavn",
@@ -19,24 +19,24 @@
"buffed": "Boostet",
"bodyBody": "Krop",
"bodySize": "Størrelse",
- "size": "Size",
+ "size": "Størrelse",
"bodySlim": "Slank",
"bodyBroad": "Bred",
"unlockSet": "Frigør Sættet - <%= cost %>",
"locked": "Låst",
"shirts": "Trøjer",
- "shirt": "Shirt",
+ "shirt": "Trøje",
"specialShirts": "Særlige trøjer",
"bodyHead": "Frisurer og Hårfarver",
"bodySkin": "Hud",
"skin": "Skin",
"color": "Farve",
"bodyHair": "Hår",
- "hair": "Hair",
- "bangs": "Bangs",
+ "hair": "Hår",
+ "bangs": "Pandehår",
"hairBangs": "Pandehår",
- "ponytail": "Ponytail",
- "glasses": "Glasses",
+ "ponytail": "Hestehale",
+ "glasses": "Briller",
"hairBase": "Basis",
"hairSet1": "Frisuresæt 1",
"hairSet2": "Frisuresæt 2",
@@ -73,7 +73,7 @@
"useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.
Got more questions? Check out the Costume page on the wiki. Find the perfect ensemble? Show it off in the Costume Carnival guild or brag in the Tavern!",
"costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
"autoEquipPopoverText": "Select this option to automatically equip gear as soon as you purchase it.",
- "costumeDisabled": "You have disabled your costume.",
+ "costumeDisabled": "Du har deaktiveret dit kostume",
"gearAchievement": "Du har gennemført præstationen \"Det Ultimative Udstyr\" ved at opgradere til det maksimale udstyrssæt for din klasse. Du har opnået følgende komplette sæt:",
"moreGearAchievements": "To attain more Ultimate Gear badges, change classes on the Settings > Site page and buy your new class's gear!",
"armoireUnlocked": "For mere udstyr, prøv den Fortryllede Kiste! Klik på den Fortryllede Kiste-belønningen for en chance for at få specielt Udstyr! Der er også en chance for XP eller mad.",
@@ -99,7 +99,7 @@
"allocateInt": "Point tilføjet til Intelligens:",
"allocateIntPop": "Tilføj et point til Intelligens",
"noMoreAllocate": "Nu hvor du er blevet niveau 100, kan du ikke længere tjene attributpoint. Du kan stadig stige i niveau, eller starte et nyt eventyr fra niveau 1 ved at bruge en Genfødselskugle, der nu er gratis på Markedet.",
- "stats": "Stats",
+ "stats": "Egenskaber",
"achievs": "Præstationer",
"strength": "Styrke",
"strengthText": "Styrke øger chancen for vilkårlige \"fuldtræffere\" og Guld-, Erfarings- og dropchance-boost fra dem. Det hjælper også med at skade Boss-monstre.",
@@ -123,12 +123,12 @@
"healer": "Helbreder",
"rogue": "Slyngel",
"mage": "Magiker",
- "wizard": "Mage",
+ "wizard": "Magiker",
"mystery": "Mystisk",
"changeClass": "Skift klasse, Refunder attributpoint",
"lvl10ChangeClass": "For at skifte klasse skal du være mindst niveau 10.",
- "changeClassConfirmCost": "Are you sure you want to change your class for 3 Gems?",
- "invalidClass": "Ugyldig klasses. Angiv venligst 'warrior', 'rogue', 'wizard' eller 'healer'.",
+ "changeClassConfirmCost": "Er du sikker på, du ønsker at ændre din klasse for 3 ædelstene?",
+ "invalidClass": "Ugyldig klasse. Angiv venligst 'Kriger', 'Slyngel', 'Troldmand' eller 'Helbreder'.",
"levelPopover": "Hvert niveau giver dig et point du kan tildele en attribut efter eget valg. Du kan gøre det manuelt, eller lade spillet bestemme for dig ved hjælp af en af de automatiske tildelingsmuligheder.",
"unallocated": "Ufordelte attributpoint",
"haveUnallocated": "Du har <%= points %> ubrugt(e) attributpoint",
@@ -149,10 +149,10 @@
"healerText": "Helbredere er upåvirkede af skade, og giver denne beskyttelse videre til andre. Oversprungne Daglige og dårlige Vaner tager næppe pippet fra dem, og de har metoder for at genvinde Liv fra fiaskoer. Spil som Helbreder hvis du nyder at hjælpe andre i dit Selskab, eller hvis tanken om at snyde Døden med hårdt arbejde inspirerer dig!",
"optOutOfClasses": "Fravælg",
"optOutOfPMs": "Fravælg",
- "chooseClass": "Choose your Class",
- "chooseClassLearnMarkdown": "[Learn more about Habitica's class system](http://habitica.wikia.com/wiki/Class_System)",
+ "chooseClass": "Vælg din klasse",
+ "chooseClassLearnMarkdown": "[Lær mere om Habitica's klassesystem](http://habitica.wikia.com/wiki/Class_System)",
"optOutOfClassesText": "Can't be bothered with classes? Want to choose later? Opt out - you'll be a warrior with no special abilities. You can read about the class system later on the wiki and enable classes at any time under User Icon > Settings.",
- "selectClass": "Select <%= heroClass %>",
+ "selectClass": "Vælg <%= heroClass %>",
"select": "Vælg",
"stealth": "Snigen",
"stealthNewDay": "Når et nyt døgn begynder, vil du undgå skade fra dette antal oversprunge Daglige.",
@@ -163,20 +163,21 @@
"dieText": "Du har tabt et niveau, alt dit Guld, og et vilkårligt stykke Udstyr. Rejs dig, Habitør, og prøv igen! Tøjl dine negative Vaner, vær opmærksom på at fuldføre Daglige, og hold Døden på afstand med en Livseliksir hvis du vakler!",
"sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "Køb for <%= cost %> Ædelsten?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Ikke nok mana.",
- "invalidTarget": "You can't cast a skill on that.",
+ "invalidTarget": "Du kan ikke bruge en evne på det.",
"youCast": "Du kaster <%= spell %>.",
"youCastTarget": "Du kaster <%= spell %> på <%= target %>.",
"youCastParty": "Du kaster <%= spell %> for hele selskabet.",
"critBonus": "Fuldtræffer! Bonus:",
- "gainedGold": "You gained some Gold",
- "gainedMana": "You gained some Mana",
- "gainedHealth": "You gained some Health",
- "gainedExperience": "You gained some Experience",
- "lostGold": "You spent some Gold",
- "lostMana": "You used some Mana",
- "lostHealth": "You lost some Health",
- "lostExperience": "You lost some Experience",
+ "gainedGold": "Du har fået noget Guld",
+ "gainedMana": "Du har fået noget Mana",
+ "gainedHealth": "Du har fået noget Liv",
+ "gainedExperience": "Du har fået noget Erfaring",
+ "lostGold": "Du har brugt noget Guld",
+ "lostMana": "Du har brugt noget Mana",
+ "lostHealth": "Du har mistet noget Liv",
+ "lostExperience": "Du har mistet noget Erfaring",
"displayNameDescription1": "Dette er, hvad der ses i beskeder, du skriver i Værtshuset, klaner og gruppechat, og også hvad der er vist på din avatar. For at ændre det, klik Rediger ovenfor. Hvis du i stedet ønsker at ændre dit login navn, gå til",
"displayNameDescription2": "Indstillinger->Side",
"displayNameDescription3": "og se Registreringssektionen.",
@@ -196,19 +197,19 @@
"con": "KON",
"per": "OPF",
"int": "INT",
- "showQuickAllocation": "Vis stattildeling",
- "hideQuickAllocation": "Skjul stattildeling",
+ "showQuickAllocation": "Vis egenskabstildeling",
+ "hideQuickAllocation": "Skjul egenskabstildeling",
"quickAllocationLevelPopover": "Each level earns you one point to assign to an attribute of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User Icon > Stats.",
"invalidAttribute": "\"<%= attr %>\" er ikke en gyldig attribut.",
"notEnoughAttrPoints": "Du har ikke nok attributpoint.",
- "style": "Style",
+ "style": "Stil",
"facialhair": "Facial",
- "photo": "Photo",
- "info": "Info",
+ "photo": "Billede",
+ "info": "Information",
"joined": "Joined",
"totalLogins": "Total Check Ins",
"latestCheckin": "Latest Check In",
- "editProfile": "Edit Profile",
+ "editProfile": "Ret profil",
"challengesWon": "Challenges Won",
"questsCompleted": "Quests Completed",
"headAccess": "Head Access.",
diff --git a/website/common/locales/da/content.json b/website/common/locales/da/content.json
index cf9adfad899..6738786fedf 100644
--- a/website/common/locales/da/content.json
+++ b/website/common/locales/da/content.json
@@ -61,7 +61,7 @@
"questEggRoosterAdjective": "en spankulerende",
"questEggSpiderText": "Edderkop",
"questEggSpiderMountText": "Edderkop",
- "questEggSpiderAdjective": "an artistic",
+ "questEggSpiderAdjective": "en kunsterisk",
"questEggOwlText": "Ugle",
"questEggOwlMountText": "Ugle",
"questEggOwlAdjective": "en klog",
@@ -148,19 +148,22 @@
"questEggGuineaPigAdjective": "en svimlende",
"questEggPeacockText": "Påfugl",
"questEggPeacockMountText": "Påfugl",
- "questEggPeacockAdjective": "a prancing",
+ "questEggPeacockAdjective": "en spankulerende",
"questEggButterflyText": "Sommerfuglelarve",
"questEggButterflyMountText": "Sommerfugl",
"questEggButterflyAdjective": "en sød",
"questEggNudibranchText": "Nøgensnegl",
"questEggNudibranchMountText": "Nøgensnegl",
"questEggNudibranchAdjective": "en fiks",
- "questEggHippoText": "Hippo",
- "questEggHippoMountText": "Hippo",
- "questEggHippoAdjective": "a happy",
- "questEggYarnText": "Yarn",
- "questEggYarnMountText": "Flying Carpet",
- "questEggYarnAdjective": "woolen",
+ "questEggHippoText": "Flodhest",
+ "questEggHippoMountText": "Flodhest",
+ "questEggHippoAdjective": "en glad",
+ "questEggYarnText": "Garn",
+ "questEggYarnMountText": "Flyvende tæppe",
+ "questEggYarnAdjective": "ulden",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Find en udrugningseliksir til at hælde på dit æg, og det vil udklække <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Almindelig",
"hatchingPotionWhite": "Hvid",
@@ -176,7 +179,7 @@
"hatchingPotionPeppermint": "Pebermynte",
"hatchingPotionFloral": "Blomstret",
"hatchingPotionAquatic": "Akvatisk",
- "hatchingPotionEmber": "Ember",
+ "hatchingPotionEmber": "Glød",
"hatchingPotionThunderstorm": "Tordenvejr",
"hatchingPotionGhost": "Spøgelse",
"hatchingPotionRoyalPurple": "Royal lilla",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Amor",
"hatchingPotionShimmer": "Glimmer",
"hatchingPotionFairy": "Fe",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Hæld på et æg, og det vil udklække til et <%= potText(locale) %> kæledyr.",
"premiumPotionAddlNotes": "Kan ikke bruges på quest-æg.",
"foodMeat": "Kød",
@@ -218,5 +222,6 @@
"foodCandyRed": "Kanelslik",
"foodSaddleText": "Sadel",
"foodSaddleNotes": "Gør øjeblikkeligt et af dine kæledyr til et ridedyr.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Giv dette til et kæledyr, så kan det vokse sig til en stolt ganger."
}
\ No newline at end of file
diff --git a/website/common/locales/da/contrib.json b/website/common/locales/da/contrib.json
index e8f99bcb0e4..bf1174f1759 100644
--- a/website/common/locales/da/contrib.json
+++ b/website/common/locales/da/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, du fantastiske person! Du er nu trin <%= level %> bidragyder fordi du hjalp Habitica. Se",
"contribLink": "hvilke præmier du har fået for dit bidrag!",
"contribName": "Bidragsyder",
- "contribText": "Har bidraget til Habitica (kode, design, pixelkunst, juridisk rådgivning, dokumenter osv.). Vil du have dette emblem? Læs mere her.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Læs mere",
"kickstartName": "Kickstarterstøtte - $<%= key %> trin",
"kickstartText": "Støttede Kickstarterprojektet",
diff --git a/website/common/locales/da/front.json b/website/common/locales/da/front.json
index d1517b8bbac..7d9918acc5d 100644
--- a/website/common/locales/da/front.json
+++ b/website/common/locales/da/front.json
@@ -30,6 +30,7 @@
"companyAbout": "How It Works",
"companyBlog": "Blog",
"devBlog": "Udviklere blog",
+ "companyContribute": "Contribute",
"companyDonate": "Donér",
"companyPrivacy": "Fortrolighed",
"companyTerms": "Vilkår",
@@ -41,7 +42,7 @@
"forgotPassword": "Forgot Password?",
"emailNewPass": "E-mail et nulstillings-link til kodeord",
"forgotPasswordSteps": "Enter the email address you used to register your Habitica account.",
- "sendLink": "Send Link",
+ "sendLink": "Send link",
"evagantzQuote": "Min allerførste aftale med tandlægen, hvor tandlægen faktisk var positivt overrasket over mine børstevaner. Tak, [Habitica]!",
"examplesHeading": "Spillere bruger Habitica til at styre...",
"featureAchievementByline": "Gør noget fedt? Få et emblem og vis det frem!",
@@ -105,9 +106,9 @@
"marketing1Lead3Title": "Find Tilfældige Præmier",
"marketing1Lead3": "For some, it's the gamble that motivates them: a system called \"stochastic rewards.\" Habitica accommodates all reinforcement and punishment styles: positive, negative, predictable, and random.",
"marketing2Header": "Kæmp med venner, deltag i interessegrupper",
- "marketing2Lead1Title": "Social Productivity",
+ "marketing2Lead1Title": "Social produktivitet",
"marketing2Lead1": "Selvom du selvfølgelig kan spille Habitica selv, bliver det først virkelig godt når I begynder at samarbejde, konkurrere og holde hinanden ansvarlige. Den mest effektive del af ethvert selvforbedringsprogram er social ansvarlighed, og hvad er et bedre miljø for ansvarlighed og konkurrence end et computerspil?",
- "marketing2Lead2Title": "Fight Monsters",
+ "marketing2Lead2Title": "Bekæmp monstre",
"marketing2Lead2": "What's a Role Playing Game without battles? Fight monsters with your party. Monsters are \"super accountability mode\" - a day you miss the gym is a day the monster hurts *everyone!*",
"marketing2Lead3Title": "Challenge Each Other",
"marketing2Lead3": "Challenges let you compete with friends and strangers. Whoever does the best at the end of a challenge wins special prizes.",
@@ -132,7 +133,7 @@
"oldNews": "Nyheder",
"newsArchive": "Nyhedsarkiv på Wikia (flersproget)",
"passConfirm": "Bekræft Kodeord",
- "setNewPass": "Set New Password",
+ "setNewPass": "Sæt nyt kodeord",
"passMan": "Hvis du bruger en kodeordshusker (såsom 1Password) og har problemer med at logge ind, så prøv at skrive dit brugernavn og kodeord manuelt.",
"password": "Kodeord",
"playButton": "Spil",
@@ -194,7 +195,7 @@
"unlockByline2": "Lås op for nye motivationer, som at samle på kæledyr, tilfældige belønninger, kaste fortryllelser og meget mere!",
"unlockHeadline": "Så længe du er produktiv, åbner du for nyt indhold!",
"useUUID": "Brug dit Unikke Bruger-ID/ API Nøgle (for Facebook brugere)",
- "username": "Login Name",
+ "username": "Loginnavn",
"emailOrUsername": "Email or Login Name (case-sensitive)",
"watchVideos": "Se videoer",
"work": "Arbejde",
@@ -245,18 +246,18 @@
"altAttrSlack": "Slack",
"missingAuthHeaders": "Godkendelses-headers mangler.",
"missingAuthParams": "Manglende godkendelsesparametre.",
- "missingUsernameEmail": "Missing Login Name or email.",
+ "missingUsernameEmail": "Manglende loginnavn eller email.",
"missingEmail": "Manglende email.",
- "missingUsername": "Missing Login Name.",
+ "missingUsername": "Manglende loginnavn.",
"missingPassword": "Manglende kodeord.",
"missingNewPassword": "Manglende nyt kodeord.",
"invalidEmailDomain": "Du kan ikke registrere med emails med følgende domæner: <%= domains %>",
"wrongPassword": "Forkert kodeord.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Ugyldig e-mailadresse.",
"emailTaken": "E-mailadressen er allerede brugt til en konto.",
"newEmailRequired": "Manglende ny e-mailadresse.",
- "usernameTaken": "Login Name already taken.",
+ "usernameTaken": "Loginnavn er allerede taget.",
"passwordConfirmationMatch": "Kodeord og godkendelse er ikke ens.",
"invalidLoginCredentials": "Forkert brugernavn og/eller email og/eller kodeord.",
"passwordResetPage": "Nulstil kodeord",
@@ -277,7 +278,7 @@
"modelNotFound": "Denne model findes ikke.",
"signUpWithSocial": "Sign up with <%= social %>",
"loginWithSocial": "Log in with <%= social %>",
- "confirmPassword": "Confirm Password",
+ "confirmPassword": "Bekræft kodeord",
"usernamePlaceholder": "e.g., HabitRabbit",
"emailPlaceholder": "e.g., rabbit@example.com",
"passwordPlaceholder": "e.g., ******************",
@@ -295,21 +296,21 @@
"trackYourGoalsDesc": "Stay accountable by tracking and managing your Habits, Daily goals, and To-Do list with Habitica’s easy-to-use mobile apps and web interface.",
"earnRewards": "Earn Rewards for Your Goals",
"earnRewardsDesc": "Check off tasks to level up your Avatar and unlock in-game features such as battle armor, mysterious pets, magic skills, and even quests!",
- "battleMonsters": "Battle Monsters with Friends",
+ "battleMonsters": "Bekæmp monstre med dine venner",
"battleMonstersDesc": "Fight monsters with other Habiticans! Use the Gold that you earn to buy in-game or custom rewards, like watching an episode of your favorite TV show.",
"playersUseToImprove": "Players Use Habitica to Improve",
- "healthAndFitness": "Health and Fitness",
+ "healthAndFitness": "Sundhed og velvære",
"healthAndFitnessDesc": "Never motivated to floss? Can't seem to get to the gym? Habitica finally makes it fun to get healthy.",
- "schoolAndWork": "School and Work",
+ "schoolAndWork": "Skole og arbejde",
"schoolAndWorkDesc": "Whether you're preparing a report for your teacher or your boss, it's easy to keep track of your progress as you tackle your toughest tasks.",
- "muchmuchMore": "And much, much more!",
+ "muchmuchMore": "Og meget, meget mere!",
"muchmuchMoreDesc": "Our fully customizable task list means that you can shape Habitica to fit your personal goals. Work on creative projects, emphasize self-care, or pursue a different dream -- it's all up to you.",
"levelUpAnywhere": "Level Up Anywhere",
"levelUpAnywhereDesc": "Our mobile apps make it simple to keep track of your tasks on-the-go. Accomplish your goals with a single tap, no matter where you are.",
"joinMany": "Join over 2,000,000 people having fun while accomplishing their goals!",
"joinToday": "Join Habitica Today",
"signup": "Sign Up",
- "getStarted": "Get Started",
+ "getStarted": "Kom i gang",
"mobileApps": "Mobile Apps",
"learnMore": "Learn More",
"useMobileApps": "Habitica is not optimized for a mobile browser. We recommend downloading our mobile apps."
diff --git a/website/common/locales/da/gear.json b/website/common/locales/da/gear.json
index 0e1d5bd2387..9d7a3236ff2 100644
--- a/website/common/locales/da/gear.json
+++ b/website/common/locales/da/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Høstfests-Høtyv",
"weaponMystery201411Notes": "Stik dine fjender eller grib for dig af dine yndlingsretter - denne høtyv kan det hele! Giver ingen bonusser. November 2014 Abonnentvare.",
"weaponMystery201502Text": "Glinsende Bevinget Stav af Kærlighed og Også Sandhed",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "rustning",
"armorCapitalized": "Armor",
"armorBase0Text": "Almindeligt tøj",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Sendebudsdragt",
"armorMystery201402Notes": "En skinnende og stærk dragt med masser af lommer til at bære breve i. Giver ingen bonusser. Februar 2014 Abonnentting.",
"armorMystery201403Text": "Skovvandrer-rustning",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunk-dragt",
"armorMystery301404Notes": "Nydelig og elegant, selvfølgelig! Giver ingen bonusser. Februar 3015 Abonnentting.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Regnbuekrigerhjelm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
"headMystery201402Text": "Bevinget Hjelm",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Smart Tophat",
"headMystery301404Notes": "En smart tophat for de fineste folk! Giver ingen bonusser. Januar 3015 Abonnentting.",
"headMystery301405Text": "Simpel Tophat",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Tids-fryser skjold",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "This cloak has secret pockets to hide all the Gold you loot from your Tasks. Confers no benefit. June 2017 Subscriber Item.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "hovedudstyr",
"headAccessoryCapitalized": "Hovedbeklædning",
"accessories": "Tilbehør",
diff --git a/website/common/locales/da/generic.json b/website/common/locales/da/generic.json
index 38673b17079..4f35e114a90 100644
--- a/website/common/locales/da/generic.json
+++ b/website/common/locales/da/generic.json
@@ -5,7 +5,7 @@
"habitica": "Habitica",
"habiticaLink": "Habitica",
"onward": "Onward!",
- "done": "Done",
+ "done": "Færdig",
"gotIt": "Got it!",
"titleTasks": "Opgaver",
"titleAvatar": "Avatar",
@@ -28,9 +28,9 @@
"titleTimeTravelers": "Tidsrejsende",
"titleSeasonalShop": "Sæson-marked",
"titleSettings": "Indstillinger",
- "saveEdits": "Save Edits",
- "showMore": "Show More",
- "showLess": "Show Less",
+ "saveEdits": "Gem rettelser",
+ "showMore": "Vis mere",
+ "showLess": "Vis mindre",
"expandToolbar": "Åbn værktøjslinje",
"collapseToolbar": "Luk værktøjslinje",
"markdownBlurb": "Habitica bruger Markdown til at formattere beskeder. Se Markdown Cheat Sheet for mere information.",
@@ -64,7 +64,7 @@
"subscriberItemText": "Hver måned får abonnenter en mystisk genstand. Denne bliver normalt frigivet ca. en uge før slutningen af måneden. Se 'Mystery Item' siden på Wikien for mere information.",
"all": "Alle",
"none": "Ingen",
- "more": "<%= count %> more",
+ "more": "<%= count %> mere",
"and": "og",
"loginSuccess": "Du er nu logget ind!",
"youSure": "Er du sikker?",
@@ -107,8 +107,8 @@
"achievementDilatory": "Frelser af Forhaling",
"achievementDilatoryText": "Var med til at vinde over Den Frygtelige Drag'e af Forhaling i 2014 Sommer Plaske-Eventet!",
"costumeContest": "Kostumedeltager",
- "costumeContestText": "Deltog i Halloweenkostumekonkurrencen. Se nogen af kostumerne på Halloween-bloggen!",
- "costumeContestTextPlural": "Deltog i <%= count %> Habitoweenkostumekonkurrencer. Se nogen af deltagerne på Habitica bloggen!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Medlem siden",
"lastLoggedIn": "- Sidst logget ind",
"notPorted": "Denne funktion er ikke blevet konvertet fra den originale side endnu.",
@@ -122,7 +122,7 @@
"error": "Fejl",
"menu": "Menu",
"notifications": "Notifikationer",
- "noNotifications": "You have no notifications.",
+ "noNotifications": "Du har ingen notifikationer",
"clear": "Ryd",
"endTour": "Afslut Rundvisning",
"audioTheme": "Lydtema",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's Tema",
"audioTheme_beatscribeNesTheme": "Beatscribes NES Tema",
"audioTheme_arashiTheme": "Arashis Tema",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Stil et Spørgsmål",
"reportBug": "Rapporter en Fejl",
"HabiticaWiki": "Habitica Wikien",
@@ -235,45 +237,45 @@
"onlineCount": "<%= count %> online",
"loading": "Indlæser...",
"userIdRequired": "Bruger ID påkrævet.",
- "resetFilters": "Clear all filters",
- "applyFilters": "Apply Filters",
- "categories": "Categories",
- "habiticaOfficial": "Habitica Official",
- "animals": "Animals",
- "artDesign": "Art & Design",
- "booksWriting": "Books & Writing",
- "comicsHobbies": "Comics & Hobbies",
- "diyCrafts": "DIY & Crafts",
- "education": "Education",
- "foodCooking": "Food & Cooking",
+ "resetFilters": "Ryd alle filtre",
+ "applyFilters": "Brug filtre",
+ "categories": "Kategorier",
+ "habiticaOfficial": "Officiel Habitica",
+ "animals": "Dyr",
+ "artDesign": "Kunst & design",
+ "booksWriting": "Bøger & skriverier",
+ "comicsHobbies": "Tegneserier & hobbies",
+ "diyCrafts": "Gør-det-selv & håndarbejde",
+ "education": "Uddannelse",
+ "foodCooking": "Mad & madlavning",
"healthFitness": "Health & Fitness",
- "music": "Music",
- "relationship": "Relationships",
- "scienceTech": "Science & Technology",
- "exercise": "Exercise",
- "creativity": "Creativity",
+ "music": "Musik",
+ "relationship": "Relationer",
+ "scienceTech": "Videnskab & teknologi",
+ "exercise": "Motion",
+ "creativity": "Kreativitet",
"budgeting": "Budgeting",
"health_wellness": "Health & Wellness",
"self_care": "Self-Care",
"habitica_official": "Habitica Official",
"academics": "Academics",
"advocacy_causes": "Advocacy + Causes",
- "entertainment": "Entertainment",
- "finance": "Finance",
+ "entertainment": "Underholdning",
+ "finance": "Finans",
"health_fitness": "Health + Fitness",
"hobbies_occupations": "Hobbies + Occupations",
"location_based": "Location-based",
"mental_health": "Mental Health + Self-Care",
"getting_organized": "Getting Organized",
"self_improvement": "Self-Improvement",
- "spirituality": "Spirituality",
+ "spirituality": "Spiritualitet",
"time_management": "Time-Management + Accountability",
"recovery_support_groups": "Recovery + Support Groups",
- "messages": "Messages",
+ "messages": "Beskeder",
"emptyMessagesLine1": "You don't have any messages",
- "emptyMessagesLine2": "Send a message to start a conversation!",
+ "emptyMessagesLine2": "Send en besked for at starte en samtale!",
"letsgo": "Let's Go!",
- "selected": "Selected",
+ "selected": "Valgt",
"howManyToBuy": "How many would you like to buy?",
"habiticaHasUpdated": "There is a new Habitica update. Refresh to get the latest version!"
}
\ No newline at end of file
diff --git a/website/common/locales/da/groups.json b/website/common/locales/da/groups.json
index 598c61aa693..76caf49632f 100644
--- a/website/common/locales/da/groups.json
+++ b/website/common/locales/da/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Valgfri besked",
"yesRemove": "Ja, fjern dem",
"foreverAlone": "Du kan ikke synes godt om din egen besked. Lad være med at være sådan.",
- "sortLevel": "Sortér efter niveau",
- "sortRandom": "Sortér tilfældigt",
- "sortPets": "Sortér efter antal kæledyr",
- "sortName": "Sortér efter avatar-navn",
- "sortBackgrounds": "Sortér efter baggrund",
- "sortHabitrpgJoined": "Sortér efter Habitica indmeldelsesdato",
- "sortHabitrpgLastLoggedIn": "Sortér efter sidst logget ind",
- "ascendingSort": "Stigende sortering",
- "descendingSort": "Faldende sortering",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Opret Klan for 4 Ædelsten?",
"leaveGroupCha": "Forlad Klanudfordringer og...",
"confirm": "Bekræft",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Ikke bemyndiget til at slette denne besked!",
"onlyGroupLeaderCanEditTasks": "Ikke bemyndiget til at håndtere opgaver!",
"onlyGroupTasksCanBeAssigned": "Kun gruppe opgaver kan blive tildelt",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Du har fået frataget dine chat privilegier. ",
"newChatMessagePlainNotification": "Ny besked i <%= groupName %> af <%= authorName %>. Klik her for at åbne chatsiden!",
"newChatMessageTitle": "Ny besked i <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Annuller Gruppe Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Annullerede Gruppe Plan",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/da/limited.json b/website/common/locales/da/limited.json
index cc26eb8c639..94aa62e942a 100644
--- a/website/common/locales/da/limited.json
+++ b/website/common/locales/da/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Tilgændelig til køb indtil <%= date(locale) %>.",
"dateEndApril": "19. april",
"dateEndMay": "17. maj",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "pakke"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "pakke",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/da/loadingscreentips.json b/website/common/locales/da/loadingscreentips.json
index 798051dca87..e4b401b984e 100644
--- a/website/common/locales/da/loadingscreentips.json
+++ b/website/common/locales/da/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tip #<%= tipNumber %>",
"tip1": "Check opgaver af på farten med Habitica mobil apps.",
- "tip2": "Når du har nået niveau 100, kan du bruge en Genfødselskugle gratis og starte et nyt eventyr!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Brug emoji for hurtigt at kunne se forskel på dine opgaver.",
"tip4": "Brug #-tegnet før en opgaves titel for at gøre den kæmpestor!",
- "tip5": "Det er bedst at bruge Boostere om morgenen, så varer de længere.",
- "tip6": "Re-evaluér dine opgaver en gang imellem, så du er sikker på at de er opdaterede.",
- "tip7": "Nogle baggrunde forbindes perfekt hvis gruppe medlemmer bruger den samme baggrund. F. eks.: Mountain Lake, Pagodas og Rolling Hills.",
- "tip8": "Send en privat besked til nogen ved at trykke på konvolutten ved deres navn i chatten!",
- "tip9": "Besøg Guild Leaders & Challenge Creators Klan for at få råd om at starte en klan.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Du kan vinde ædelsten ved at deltage i Udfordringer. Der bliver tilføjet nye hver dag!",
- "tip11": "Hvis du holder af at klæde din avatar ud, så besøg Costume Carnival klanen.",
- "tip12": "Bliv medlem af \"Challenge... Accepted\" klan for regelmæssige planlagte tilfældige udfordringer.",
- "tip13": "Det øger ansvarligheden at have mere end fire Gruppemedlemmer!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Du kan tilføje titler eller inspirations-citater til din liste som Vaner med ingen (+/-).",
- "tip15": "Tilføj checklister til dine To-Dos og få større belønninger!",
- "tip16": "Tag et kik på Data-fanen for værdifuld indsigt i dine fremskridt.",
- "tip17": "Brugen af Tags kan gøre klodsede opgaver meget mere overkommelige!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Vaner der kun er positive eller negative vil gradvist \"falme\" tilbage til gul.",
- "tip19": "Forøg din Intelligens for at få mere XP når du fuldender en opgave.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Forøg din Opfattelse for at få flere drops og mere guld.",
"tip21": "Forøg din Styrke for at gøre mere skade på bosser eller få fuldtræffere ind.",
"tip22": "Forøg din Konstitution for at mindske skaden fra ufuldførte Daglige.",
- "tip23": "Tryk på søjlediagram-ikonet på dine opgaver for at se en graf over dine fremskridt.",
- "tip24": "Habitica er Open Source! Spørg i klanen Aspiring Legends hvis du vil bidrage.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "De fire årlige Store Galaer starter tæt ved solhverv og jævndøgn.",
- "tip26": "En pil til venstre for en brugers viste niveau betyder at de i øjeblikket er boostet.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.",
- "tip28": "Opsæt en Brugerdefineret Dagstart under Indtillinger > Side for at vælge hvornår din dag begynder.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Udfør alle dine Daglige opgaver og få et Perfekt Dag-boost der forhøjer dine Statistikker!",
"tip30": "Du kan invitere folk til Klaner, ikke kun Grupper.",
"tip31": "For at se opgave-eksempler kan du tage et kik på de færdiglavede lister i klanen Library of Tasks and Challenges.",
- "tip32": "En stor del af Habiticas kode, grafik og skrivekunst er lavet af frivillige bidragydere! Alle kan hjælpe!",
- "tip33": "Tag et kik på klanen The Bulletin Board for at få nyheder om klaner, udfordringer og andre spillerskabte hændelser - og for at annoncere dine egne!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/da/messages.json b/website/common/locales/da/messages.json
index bf93c225244..8ba12f4a28e 100644
--- a/website/common/locales/da/messages.json
+++ b/website/common/locales/da/messages.json
@@ -21,23 +21,24 @@
"messageNotEnoughGold": "Ikke nok Guld",
"messageTwoHandedEquip": "At håndtere <%= twoHandedText %> kræver to hænder. Derfor afvæbnes <%= offHandedText %>.",
"messageTwoHandedUnequip": "At håndtere <%= twoHandedText %> kræver to hænder. Det blev derfor afvæbnet, da du bevæbnede dig med <%= offHandedText %>.",
- "messageDropFood": "You've found <%= dropArticle %><%= dropText %>!",
- "messageDropEgg": "You've found a <%= dropText %> Egg!",
- "messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
+ "messageDropFood": "Du har fundet <%= dropArticle %><%= dropText %>!",
+ "messageDropEgg": "Du har fundet et <%= dropText %> æg!",
+ "messageDropPotion": "Du har fundet en <%= dropText %> udrugningseliksir!",
"messageDropQuest": "Du har fundet en quest!",
"messageDropMysteryItem": "Du åbner æsken og finder <%= dropText %>!",
"messageFoundQuest": "Du fandt questen \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Du har engang købt dette udstyr, men ejer det ikke på nuværende tidspunkt. Du kan købe det igen i belønningskolonnen på opgavesiden.",
"messageAlreadyOwnGear": "Du ejer allerede denne ting. Tag det på ved at gå til udstyrssiden.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Du har allerede fuldt liv.",
- "messageHealthAlreadyMin": "Oh no! You have already run out of health so it's too late to buy a health potion, but don't worry - you can revive!",
+ "messageHealthAlreadyMin": "Åh nej! Du er allerede løbet tør for liv så det erfor sent at købe en Livseliksir, mens bare rolig - du kan genoplive!",
"armoireEquipment": "<%= image %> Du har fundet sjældent Udstyr i Klædeskabet: <%= dropText %>! Fantastisk!",
"armoireFood": "<%= image %> Du roder rundt i bunden af Klædeskabet. Pludselig finder du <%= dropText %>. Gad vide hvad den laver her?",
"armoireExp": "Du kæmper med Klædeskabet og får Erfaring. Sådan!",
"messageInsufficientGems": "Ikke nok Ædelsten!",
"messageAuthPasswordMustMatch": ":password og :confirmPassword er ikke ens",
"messageAuthCredentialsRequired": ":brugernavn, :e-mail, :kodeord, :valideretKodeord krævet",
- "messageAuthUsernameTaken": "Login Name already taken",
+ "messageAuthUsernameTaken": "Loginnavn er allerede taget",
"messageAuthEmailTaken": "E-mailen er allerede i brug",
"messageAuthNoUserFound": "Ingen bruger fundet.",
"messageAuthMustBeLoggedIn": "Du skal være logget ind først.",
@@ -52,10 +53,11 @@
"messageGroupChatFlagAlreadyReported": "Du har allerede anmeldt denne besked",
"messageGroupChatNotFound": "Besked ikke fundet!",
"messageGroupChatAdminClearFlagCount": "Kun en administrator kan rydde flagtælleren!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ups, det ser ud til at du slår for mange beskeder op! Vent venligst et minut og prøv igen. Værtshuschatten kan kun indeholde 200 beskeder ad gangen, så Habitica opfordrer til at man skriver længere, mere gennemtænkte beskeder og venter på svar. Vi glæder os til at høre hvad du vil sige. :)",
"messageUserOperationProtected": "stien `<%= operation %>` blev ikke gemt, da det er en beskyttet sti.",
"messageUserOperationNotFound": "Funktionen <%= operation %> blev ikke fundet.",
"messageNotificationNotFound": "Notifikation ikke fundet.",
"notificationsRequired": "Notafikation ID'er er krævet.",
- "beginningOfConversation": "This is the beginning of your conversation with <%= userName %>. Remember to be kind, respectful, and follow the Community Guidelines!"
+ "beginningOfConversation": "Dette er begyndelsen på din samtale med <%= userName %>. Husk at være venlig, respektfuld og at følge Retningslinjerne for Fællesskabet!"
}
\ No newline at end of file
diff --git a/website/common/locales/da/npc.json b/website/common/locales/da/npc.json
index a75d0ab2062..23a5e028e2e 100644
--- a/website/common/locales/da/npc.json
+++ b/website/common/locales/da/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 ædelsten",
"typeNotSellable": "Type kan ikke sælges. Skal være en af følgende <%= acceptedTypes %>",
"userItemsKeyNotFound": "Nøgle ikke fundet for user.items <%= type %>",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Path string er påkrævet",
"unlocked": "Genstande er blevet låst op",
"alreadyUnlocked": "Fuldt sæt er allerede låst op for.",
diff --git a/website/common/locales/da/quests.json b/website/common/locales/da/quests.json
index e4fbc9bbe1b..2f4a3341831 100644
--- a/website/common/locales/da/quests.json
+++ b/website/common/locales/da/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> quest-genstand(e) fundet",
"questDamage": "+ <%= val %> skade til boss",
"begin": "Begynd",
- "bossHP": "Boss Liv",
+ "bossHP": "Boss HP",
"bossStrength": "Boss-styrke",
"rage": "Vrede",
"collect": "Saml",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Du skal være niveau <%= level %> for at købe denne quest!",
"mustInviteFriend": "For at få denne quest skal du invitere en ven til din gruppe. Vil du invitere nogen nu?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Er du sikker på at du vil afbryde denne quest? Alle invitation-accepter vil gå tabt. Quest-lederen vil beholde quest-skriftrullen.",
"sureAbort": "Er du sikker på at du vil afbryde missionen? Det vil afbryde den for alle i gruppen og al fremskridt vil gå tabt. Quest-skriftrullen vil blive returneret til quest-lederen.",
"doubleSureAbort": "Er du helt sikker? Tjek lige at de ikke vil hade dig for evigt!",
diff --git a/website/common/locales/da/questscontent.json b/website/common/locales/da/questscontent.json
index e7750b6c0c5..b3a7629dff3 100644
--- a/website/common/locales/da/questscontent.json
+++ b/website/common/locales/da/questscontent.json
@@ -58,7 +58,7 @@
"questSpiderBoss": "Edderkop",
"questSpiderDropSpiderEgg": "Edderkop (Æg)",
"questSpiderUnlockText": "Åbner for køb af Edderkoppeæg på Markedet",
- "questGroupVice": "Vice the Shadow Wyrm",
+ "questGroupVice": "Skyggedragen Last",
"questVice1Text": "Last, del 1: Befri dig selv fra Dragens indflydelse.",
"questVice1Notes": "Last, del 1:
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "Cow (Egg)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/da/settings.json b/website/common/locales/da/settings.json
index ffe048f7db6..261b74a221f 100644
--- a/website/common/locales/da/settings.json
+++ b/website/common/locales/da/settings.json
@@ -65,7 +65,7 @@
"resetText1": "ADVARSEL! Dette nulstiller mange dele af din konto. Vi fraråder på det kraftigste dette, men nogen finder det brugbart i begyndelsen, efter at have spillet i kort tid.",
"resetText2": "Du vil miste alle dine niveauer, dit guld og dine erfaringspoint. Alle dine opgaver (udover dem fra udfordringer) vil blive slettet permanent, og du vil miste alle deres historiske data. Du vil miste alt dit udstyr, men du kan købe det hele igen, inklusive alle specielle udgaver og abonnenters Mystiske varer som du allerede ejer (du skal dog være den korrekte klasse for at købe klassespecifikt udstyr). Du vil beholde din nuværende klasse og dine kæledyr og ridedyr. Du vil måske foretrække at bruge en Genfødselskugle i stedet, hvilket er et meget sikrere valg og vil lade dig beholde dine opgaver.",
"deleteLocalAccountText": "Er du sikker? Dette vil slette din konto for evigt, og den kan aldrig gendannes! Du skal registrere en ny konto for at kunne bruge Habitica igen. Ædelsten du har brugt eller har på lager vil ikke refunderes. Hvis du er fuldstændig sikker, så skriv dit kodeord i kassen herunder.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Kopiér disse til brug i tredjeparts-applikationer. Dog skal du tænke på din API Nøgle som et kodeord, og lade være med at dele den offentligt. Du kan nogen gange blive bedt om dit Bruger ID, men skriv aldrig din API Nøgle hvor andre kan se den, heller ikke på Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Abonnementsgave",
"giftedSubscriptionInfo": "<%= name %> har foræret dig <%= months %> måneders abonnement",
"giftedSubscriptionFull": "Hej <%= username %>, <%= sender %> har sendt dig <%= monthCount %> måneders abonnement!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Gruppeinvitation",
"invitedGuild": "Klaninvitation",
"importantAnnouncements": "Påmindelser om check ind for at fuldføre opgaver og modtage belønninger",
diff --git a/website/common/locales/da/subscriber.json b/website/common/locales/da/subscriber.json
index efe65ee14a9..9ceaea0e2ee 100644
--- a/website/common/locales/da/subscriber.json
+++ b/website/common/locales/da/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Annullér Abonnement",
"cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Abonnement annulleret",
"cancelingSubscription": "Annullerer abonnementet",
"adminSub": "Administratorabonnementer",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Steampunk Standardsæt",
"mysterySet301405": "Steampunk Tilbehørssæt",
"mysterySet301703": "Påfugle-Steampunk-sæt",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Ukendt korttype.",
"invalidCoupon": "Ugyldig kuponkode.",
"couponUsed": "Kuponkode allerede i brug.",
- "noSudoAccess": "Du har ikke sudo-adgang.",
"couponCodeRequired": "Kuponkode påkrævet.",
"eventRequired": "\"req.params.event\" påkrævet.",
"countRequired": "\"req.query.count\" påkrævet.",
diff --git a/website/common/locales/da/tasks.json b/website/common/locales/da/tasks.json
index 4ce811ea394..ed0c11acd45 100644
--- a/website/common/locales/da/tasks.json
+++ b/website/common/locales/da/tasks.json
@@ -4,19 +4,19 @@
"deleteToDosExplanation": "If you click the button below, all of your completed To-Dos and archived To-Dos will be permanently deleted, except for To-Dos from active challenges and Group Plans. Export them first if you want to keep a record of them.",
"addMultipleTip": "Tip: To add multiple Tasks, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
"addsingle": "Tilføj Én",
- "addATask": "Add a <%= type %>",
- "editATask": "Edit a <%= type %>",
- "createTask": "Create <%= type %>",
- "addTaskToUser": "Add Task",
- "scheduled": "Scheduled",
- "theseAreYourTasks": "These are your <%= taskType %>",
+ "addATask": "Tilføj en <%= type %>",
+ "editATask": "Ret en<%= type %>",
+ "createTask": "Opret <%= type %>",
+ "addTaskToUser": "Tilføj opgave",
+ "scheduled": "Planlagt",
+ "theseAreYourTasks": "Dette er dine <%= taskType %>",
"habit": "Vane",
"habits": "Vaner",
"newHabit": "Ny Vane",
"newHabitBulk": "Nye Vaner (én per linje)",
- "habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
- "positive": "Positive",
- "negative": "Negative",
+ "habitsDesc": "Vaner har ikke en fast plan. Du kan bruge dem mange gang per dag. ",
+ "positive": "Positiv",
+ "negative": "Negativ",
"yellowred": "Svag",
"greenblue": "Stærk",
"edit": "Redigér",
@@ -24,12 +24,12 @@
"addChecklist": "Tilføj Tjekliste",
"checklist": "Tjekliste",
"checklistText": "Del en opgave op i mindre bidder. Tjeklister øger hvor meget Erfaring og Guld du får fra en To-Do, og reducerer skaden fra Daglige.",
- "newChecklistItem": "New checklist item",
- "expandChecklist": "Expand Checklist",
- "collapseChecklist": "Collapse Checklist",
+ "newChecklistItem": "Nyt tjekliste punkt",
+ "expandChecklist": "Udvid Tjekliste",
+ "collapseChecklist": "Fold Tjekliste",
"text": "Titel",
"extraNotes": "Ekstra Noter",
- "notes": "Notes",
+ "notes": "Noter",
"direction/Actions": "Retning/Virkninger",
"advancedOptions": "Avancerede Indstillinger",
"taskAlias": "Opgavealias",
@@ -49,10 +49,10 @@
"dailies": "Daglige",
"newDaily": "Ny Daglig",
"newDailyBulk": "Nye Daglige (én per linje)",
- "dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
+ "dailysDesc": "Daglige opgaver gentager sig selv på fast basis. Vælg en plan, som virker bedst for dig!",
"streakCounter": "Stribe-tæller",
"repeat": "Gentag",
- "repeats": "Repeats",
+ "repeats": "Gentager",
"repeatEvery": "Gentag hver",
"repeatHelpTitle": "Hvor ofte skal denne opgave gentages?",
"dailyRepeatHelpContent": "Denne opgave vil være forfalden hver X dage. Du kan sætte værdien herunder.",
@@ -62,26 +62,26 @@
"day": "Dag",
"days": "Dage",
"restoreStreak": "Genskab Stribe",
- "resetStreak": "Reset Streak",
+ "resetStreak": "Nulstil stribe",
"todo": "To-Do",
"todos": "To-Dos",
"newTodo": "Ny To-Do",
"newTodoBulk": "Nye To-Dos (én per linje)",
- "todosDesc": "To-Dos need to be completed once. Add checklists to your To-Dos to increase their value.",
+ "todosDesc": "To-Do's skal færdiggøres en gang. Tilføje Tjeklister til dine To-Dos for at øge deres værdi.",
"dueDate": "Forfaldsdato",
"remaining": "Aktive",
"complete": "Færdig",
- "complete2": "Complete",
+ "complete2": "Færdig",
"dated": "Med dato",
- "today": "Today",
- "dueIn": "Due <%= dueIn %>",
+ "today": "I dag",
+ "dueIn": "Forfalder <%= dueIn %>",
"due": "Forfalden",
"notDue": "Ikke Forfalden",
"grey": "Grå",
"score": "Score",
"reward": "Belønning",
"rewards": "Belønninger",
- "rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
+ "rewardsDesc": "Belønninger er en god måde at bruge Habitica på og blive færdig med dine opgaver. Prøv at tilføje nogle i dag!",
"ingamerewards": "Udstyr og Evner",
"gold": "Guld",
"silver": "Sølv (100 sølv = 1 guld)",
@@ -94,7 +94,7 @@
"clearTags": "Ryd",
"hideTags": "Skjul",
"showTags": "Vis",
- "editTags2": "Edit Tags",
+ "editTags2": "Ret Tag",
"toRequired": "Du skal angive en \"til\"-egenskab.",
"startDate": "Startdato",
"startDateHelpTitle": "Hvornår skal denne opgave starte?",
@@ -115,11 +115,11 @@
"fortifyText": "Forstærk vil returnere alle dine opgaver (som ikke er knyttet til en udfordring) til en neutral (gul) værdi, som om du lige har tilføjet dem, og give dig fuldt Liv tilbage. Dette er godt hvis alle dine røde opgaver gør spillet for hårdt, eller alle dine blå opgaver gør det for nemt. Hvis du hellere vil starte forfra, så brug Ædelsten og bliv benådet!",
"confirmFortify": "Er du sikker?",
"fortifyComplete": "Forstærkning gennemført!",
- "sureDelete": "Are you sure you want to delete this task?",
+ "sureDelete": "Er du sikker på du vil slette denne opgave?",
"sureDeleteCompletedTodos": "Er du sikker på, at du vil slette dine færdiggjorte to-dos?",
"streakCoins": "Stribebonus!",
- "taskToTop": "To top",
- "taskToBottom": "To bottom",
+ "taskToTop": "Til toppen",
+ "taskToBottom": "Til bunden",
"emptyTask": "Indtast først opgavens titel.",
"dailiesRestingInInn": "Du slapper af på Kroen. Dine Daglige kan IKKE skade dig, men de vil stadig blive nulstillet hver dag. Hvis du er i gang med en quest, kan du ikke give skade/samle ting før du forlader Kroen, men du kan stadig blive skadet af Bossen, hvis dine gruppemedlemmer ikke udfører deres Daglige.",
"habitHelp1": "Gode Vaner er noget du ofte gør. De giver Guld og Erfaring hver gang du klikker på <%= plusIcon %>.",
@@ -145,7 +145,7 @@
"taskNotFound": "Opgave ikke fundet.",
"invalidTaskType": "Opgave type skal være \"vane\", \"daglig\", \"todo\" eller \"belønning\".",
"cantDeleteChallengeTasks": "En opgave, der tilhører en udfordring kan ikke slettes.",
- "checklistOnlyDailyTodo": "Checklists are supported only on Dailies and To-Dos",
+ "checklistOnlyDailyTodo": "Tjeklister er kun understøttet på Daglige opgaver og To-Dos",
"checklistItemNotFound": "Der blev ikke fundet noget tjekliste-punkt med det angivne id. ",
"itemIdRequired": "\"itemId\" skal være et gyldigt Unikt Bruger-ID.",
"tagNotFound": "Der blev ikke fundet noget tag med det angivne id.",
@@ -169,9 +169,9 @@
"taskApprovalHasBeenRequested": "Godkendelse er anmodet",
"approvals": "Godkendelser",
"approvalRequired": "Godkendelse Påkrævet",
- "repeatZero": "Daily is never due",
- "repeatType": "Repeat Type",
- "repeatTypeHelpTitle": "What kind of repeat is this?",
+ "repeatZero": "Daglige opgaver kan aldrig udløbe",
+ "repeatType": "Gentag type",
+ "repeatTypeHelpTitle": "Hvilken slags gentagelse er dette?",
"repeatTypeHelp": "Select \"Daily\" if you want this task to repeat every day or every third day, etc. Select \"Weekly\"if you want it to repeat on certain days of the week. If you select \"Monthly\" or \"Yearly\", adjust the Start Date to control which day of the month or year the task will be due on.",
"weekly": "Ugentlig",
"monthly": "Månedlig ",
@@ -196,11 +196,12 @@
"resets": "Nulstilles",
"summaryStart": "Gentages <%= frequency %> hver <%= everyX %> <%= frequencyPlural %>",
"nextDue": "Næste Forfaldsdatoer",
- "checkOffYesterDailies": "Check off any Dailies you did yesterday:",
- "yesterDailiesTitle": "You left these Dailies unchecked yesterday! Do you want to check off any of them now?",
- "yesterDailiesCallToAction": "Start My New Day!",
- "yesterDailiesOptionTitle": "Confirm that this Daily wasn't done before applying damage",
+ "checkOffYesterDailies": "Markér de daglige opgaver du udførte i går:",
+ "yesterDailiesTitle": "Du efterlod disse daglige opgaver ufærdige i går! Vil du strege nogen af dem ud nu?",
+ "yesterDailiesCallToAction": "Start min nye dag!",
+ "yesterDailiesOptionTitle": "Bekræft at denne daglige opgave ikke var gjort før du tager skade",
"yesterDailiesDescription": "If this setting is applied, Habitica will ask you if you meant to leave the Daily undone before calculating and applying damage to your avatar. This can protect you against unintentional damage.",
"repeatDayError": "Tjek venligst at du har mindst en ugedag valgt.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Søg i titler og beskrivelser...",
+ "sessionOutdated": "Din session er forældet. Refresh din browser eller synkronisér."
}
\ No newline at end of file
diff --git a/website/common/locales/de/backgrounds.json b/website/common/locales/de/backgrounds.json
index 7570fb00c55..31a143d4f47 100644
--- a/website/common/locales/de/backgrounds.json
+++ b/website/common/locales/de/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Mitternachtsschloss",
"backgroundMidnightCastleNotes": "Schlendere am Mitternachtsschloss vorbei.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Fliege durch einen Tornado."
+ "backgroundTornadoNotes": "Fliege durch einen Tornado.",
+ "backgrounds122017": "Set 43: Veröffentlicht im Dezember 2017",
+ "backgroundCrosscountrySkiTrailText": "Langlaufloipe",
+ "backgroundCrosscountrySkiTrailNotes": "Gleite eine Langlaufloipe entlang.",
+ "backgroundStarryWinterNightText": "Sternenklare Winternacht",
+ "backgroundStarryWinterNightNotes": "Bewundere eine Sternenklare Winternacht.",
+ "backgroundToymakersWorkshopText": "Werkstatt des Spielzeugmachers",
+ "backgroundToymakersWorkshopNotes": "Staune über die Wunder in der Spielzeugmacher-Werkstatt.",
+ "backgrounds012018": "Set 44: Veröffentlicht im Januar 2018",
+ "backgroundAuroraText": "Polarlicht",
+ "backgroundAuroraNotes": "Aale dich im winterlichen Schein eines Polarlichts.",
+ "backgroundDrivingASleighText": "Schlitten",
+ "backgroundDrivingASleighNotes": "Fahre einen Schlitten über schneebedeckte Felder.",
+ "backgroundFlyingOverIcySteppesText": "Eisige Steppen",
+ "backgroundFlyingOverIcySteppesNotes": "Fliege über eisige Steppen."
}
\ No newline at end of file
diff --git a/website/common/locales/de/challenge.json b/website/common/locales/de/challenge.json
index 9da59efb820..9ac1a293654 100644
--- a/website/common/locales/de/challenge.json
+++ b/website/common/locales/de/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Zuordnung des Wettbewerbs ist erforderlich (Füge hinzu)",
"categoiresRequired": "Eine oder mehr Kategorien müssen ausgewählt sein",
"viewProgressOf": "Fortschritt Ansehen Von",
- "selectMember": "Ein Mitglied Auswählen"
+ "selectMember": "Ein Mitglied Auswählen",
+ "confirmKeepChallengeTasks": "Möchtest Du die Wettbewerbsaufgaben behalten?",
+ "selectParticipant": "Wähle einen Teilnehmer aus"
}
\ No newline at end of file
diff --git a/website/common/locales/de/character.json b/website/common/locales/de/character.json
index fd187e6690d..17a7a61bd69 100644
--- a/website/common/locales/de/character.json
+++ b/website/common/locales/de/character.json
@@ -163,6 +163,7 @@
"dieText": "Du hast ein Level, Dein gesamtes Gold und einen zufälliges Teil Deiner Ausrüstung verloren. Erhebe Dich, Habiticaner, und versuche es erneut! Gebiete diesen schlechten Gewohnheiten Einhalt, sei gewissenhaft bei der Erfüllung Deiner täglichen Aufgaben und halte Dir den Tod mit Heiltränken vom Leib, wenn Du einmal straucheln solltest!",
"sureReset": "Bist Du sicher? Dies wird Deine Klasse und Attributpunkte zurücksetzen (Du erhältst alle Punkte zurück, um sie neu zuzuweisen). Es kostet 3 Edelsteine.",
"purchaseFor": "Für <%= cost %> Edelsteine erwerben?",
+ "purchaseForHourglasses": "Gegen <%= cost %> Sanduhren eintauschen?",
"notEnoughMana": "Nicht genug Mana.",
"invalidTarget": "Du kannst Deine Fähigkeit hierauf nicht anwenden.",
"youCast": "Du verwendest <%= spell %>.",
diff --git a/website/common/locales/de/content.json b/website/common/locales/de/content.json
index 2f15cfec580..a1a6c99837b 100644
--- a/website/common/locales/de/content.json
+++ b/website/common/locales/de/content.json
@@ -159,8 +159,11 @@
"questEggHippoMountText": "Nilpferd",
"questEggHippoAdjective": "ein glückliches",
"questEggYarnText": "Wollknäuel",
- "questEggYarnMountText": "Fliegender Teppich",
+ "questEggYarnMountText": "Fliegendes Teppichwesen",
"questEggYarnAdjective": "wolliges",
+ "questEggPterodactylText": "Pterodactylus",
+ "questEggPterodactylMountText": "Pterodactylus",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Finde ein Schlüpfelixier, das Du über dieses Ei gießen kannst, damit ein <%= eggAdjective(locale) %> <%= eggText(locale) %> schlüpfen kann.",
"hatchingPotionBase": "Normales",
"hatchingPotionWhite": "Weißes",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Amors",
"hatchingPotionShimmer": "Schimmerndes",
"hatchingPotionFairy": "Feenhaftes",
+ "hatchingPotionStarryNight": "Sternenklare Nacht",
"hatchingPotionNotes": "Gieße dies über ein Ei und es wird ein <%= potText(locale) %> Haustier daraus schlüpfen.",
"premiumPotionAddlNotes": "Nicht auf Eier von Quest-Haustieren anwendbar.",
"foodMeat": "Fleisch",
@@ -218,5 +222,6 @@
"foodCandyRed": "Zimtbonbon",
"foodSaddleText": "Magischer Sattel",
"foodSaddleNotes": "Lässt eines Deiner Haustiere augenblicklich zum Reittier heranwachsen.",
+ "foodSaddleSellWarningNote": "Hey! Das ist ein sehr nützlicher Gegenstand! Bist Du vertraut damit, wie Du den Sattel mit Deinen Haustieren nutzt?",
"foodNotes": "Verfüttere das an ein Haustier und es wächst bald zu einem kräftigen Reittier heran."
}
\ No newline at end of file
diff --git a/website/common/locales/de/contrib.json b/website/common/locales/de/contrib.json
index a33aa038a32..08317209e73 100644
--- a/website/common/locales/de/contrib.json
+++ b/website/common/locales/de/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, Du bist fantastisch! Du hast den Rang <%= level %> als Mitwirkender errungen, weil Du bei Habitica mithilfst. Sieh,",
"contribLink": "welche Preise Du für Deinen Beitrag verdient hast!",
"contribName": "Mitwirkender",
- "contribText": "Hat zu Habitica beigetragen (Code, Design, Pixelkunst, Rechtsrat, Dokumentationen, usw.). Willst Du dieses Abzeichen auch haben? Erfahre mehr.",
+ "contribText": "Hat zu Habitica beigetragen, sei es durch Code, Grafiken, Musik, Texte oder andere Arbeiten. Tritt der Aspiring Legends Gilde bei, um mehr zu erfahren!",
"readMore": "Lies mehr",
"kickstartName": "Kickstarter-Unterstützer - $<%= key %> Rang",
"kickstartText": "Hat das Kickstarter-Projekt mitfinanziert",
diff --git a/website/common/locales/de/faq.json b/website/common/locales/de/faq.json
index 203d1b7c400..ac8c71c906e 100644
--- a/website/common/locales/de/faq.json
+++ b/website/common/locales/de/faq.json
@@ -45,7 +45,7 @@
"androidFaqAnswer10": "Gems are purchased with real money by tapping on the Gem icon in the header. When people buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying Gems directly, there are three other ways players can gain Gems:\n\n * Win a Challenge that has been set up by another player. Go to Social > Challenges to join some.\n * Subscribe and unlock the ability to buy a certain number of Gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the app without them!",
"webFaqAnswer10": "Edelsteine werden mit echtem Geld gekauft, jedoch können [Abonnenten](https://habitica.com/user/settings/subscription) diese mit Gold erwerben. Wer Habitica abonniert oder Edelsteine kauft, hilft die Seite am Leben zu erhalten. Wir sind sehr dankbar für diese Unterstützung! Neben dem Kauf von Edelsteinen oder eines Abonnements kann ein Spieler auf zwei weitere Arten an Edelsteine kommen:\nGewinne einen Wettbewerb, der von einem anderen Spieler eingerichtet wurde. Gehe hierfür zu Wettbewerbe > Wettbewerbe Entdecken.\nTrage mit Deinen Fähigkeiten zum Projekt Habitica bei. Mehr Details findest Du auf dieser Wiki-Seite [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica). Beachte, dass mit Edelsteinen gekaufte Gegenstände keine statistischen Vorteile bringen, sodass Spieler die Seite auch ohne sie nutzen können!",
"faqQuestion11": "Wie melde ich einen Fehler oder schlage ein Feature vor?",
- "iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > About > Report a Bug and Menu > About > Send Feedback! We'll do everything we can to assist you.",
+ "iosFaqAnswer11": "Du kannst Fehler melden, ein Feature vorschlagen oder Feedback geben, indem Du Menü > Über > Einen Fehler melden oder Menü > Über > Feedback senden auswählst! Wir werden alles Mögliche tun, um Dir zu helfen.",
"androidFaqAnswer11": "Um einen Fehler zu melden, ein Feature vorzuschlagen oder Feedback zu senden, gehe im Menü unter Hilfe > Melde einen Fehler und Hilfe > Feature vorschlagen! Wir werden alles tun, um Dir zu helfen.",
"webFaqAnswer11": "Um einen Fehler zu melden, gehe zu [Hilfe > Melde einen Fehler](https://habitica.com/#/options/groups/guilds/a29da26b-37de-4a71-b0c6-48e72a900dac) und lies die Punkte oberhalb des Chatfensters. Falls Du Dich nicht in Habitica anmelden kannst, sende Deine Anmeldedaten (nicht Dein Passwort!) an [<%= techAssistanceEmail %>](<%= wikiTechAssistanceEmail %>). Keine Sorge, wir werden Dir schnellstmöglich helfen! Vorschläge für Funktionen werden in Trello gesammelt. Gehe zu [Hilfe > Eine Funktion Vorschlagen](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) und folge den Anweisungen. Ta-da!\n",
"faqQuestion12": "Wie bekämpfe ich einen Weltboss?",
diff --git a/website/common/locales/de/front.json b/website/common/locales/de/front.json
index cfb63438adf..c25e7d50a68 100644
--- a/website/common/locales/de/front.json
+++ b/website/common/locales/de/front.json
@@ -30,6 +30,7 @@
"companyAbout": "So funktioniert es",
"companyBlog": "Blog",
"devBlog": "Entwicklerblog",
+ "companyContribute": "Mitwirken",
"companyDonate": "Spenden",
"companyPrivacy": "Datenschutz",
"companyTerms": "AGB",
@@ -195,7 +196,7 @@
"unlockHeadline": "Je mehr Du tust, desto mehr neue Inhalte kannst Du freigeschalten!",
"useUUID": "Benutze UUID / API Token (Für Facebook-Benutzer)",
"username": "Anmeldename",
- "emailOrUsername": "Email or Login Name (case-sensitive)",
+ "emailOrUsername": "E-Mail-Adresse oder Anmeldename (Groß- und Kleinschreibung beachten)",
"watchVideos": "Sehen Sie sich die Videos an",
"work": "Arbeit",
"zelahQuote": "Mit [Habitica] kann ich mich davon überzeugen, rechtzeitig ins Bett zu gehen, denn wenn ich früh ins Bett gehe, verdiene ich Punkte und wenn ich zu lange aufbleibe, verliere ich Leben.",
@@ -252,7 +253,7 @@
"missingNewPassword": "Fehlendes neues Passwort.",
"invalidEmailDomain": "Du kannst E-Mails mit den folgenden Domains nicht registrieren: <%= domains %>",
"wrongPassword": "Falsches Passwort.",
- "incorrectDeletePhrase": "Bitte gib DELETE in Großbuchstaben ein, um Deinen Account zu löschen.",
+ "incorrectDeletePhrase": "Bitte gebe <%= magicWord %> in Großbuchstaben ein, um Dein Konto zu löschen. ",
"notAnEmail": "Ungültige E-Mail-Adresse.",
"emailTaken": "Diese E-Mail-Adresse wird bereits von einem Konto verwendet.",
"newEmailRequired": "Fehlende neue E-Mail-Adresse.",
@@ -286,13 +287,13 @@
"alreadyHaveAccountLogin": "Du hast schon einen Habitica-Account? Anmelden.",
"dontHaveAccountSignup": "Du hast noch kein Habitica-Konto? Melde dich an.",
"motivateYourself": "Motiviere Dich selber, Deine Ziele zu erreichen.",
- "timeToGetThingsDone": "It's time to have fun when you get things done! Join over 2.5 million Habiticans and improve your life one task at a time.",
+ "timeToGetThingsDone": "Zeit für ein bisschen Spass während Du etwas erledigst! Schliess Dich über 2.5 Millionen Habiticanern an und verbessere Dein Leben mit jeder erledigten Aufgabe.",
"singUpForFree": "Kostenlos registrieren",
"or": "ODER",
"gamifyYourLife": "Mach Dein Leben zum Spiel",
"aboutHabitica": "Habitica is a free habit-building and productivity app that treats your real life like a game. With in-game rewards and punishments to motivate you and a strong social network to inspire you, Habitica can help you achieve your goals to become healthy, hard-working, and happy.",
"trackYourGoals": "Behalte den Überblick über deine Gewohnheiten und Ziele",
- "trackYourGoalsDesc": "Stay accountable by tracking and managing your Habits, Daily goals, and To-Do list with Habitica’s easy-to-use mobile apps and web interface.",
+ "trackYourGoalsDesc": "Bleibe verantwortungsbewusst indem Du Deine Gewohnheiten, täglichen Aufgaben und To-Dos mit Habiticas benutzerfreundlichen Mobile Apps und der Webseite trackst und organisierst.",
"earnRewards": "Verdiene Belohnungen für Deine Ziele",
"earnRewardsDesc": "Check off tasks to level up your Avatar and unlock in-game features such as battle armor, mysterious pets, magic skills, and even quests!",
"battleMonsters": "Bezwinge Monster mit Freunden",
@@ -304,7 +305,7 @@
"schoolAndWorkDesc": "Ob ein Ausatz für den Lehrer oder ein Bericht für deinen Chef, es ist einfach deinem Aufgaben-Fortschritt zu folgen, während du die schwierigsten Aufgaben bezwingst.",
"muchmuchMore": "Und viel, viel mehr!",
"muchmuchMoreDesc": "Our fully customizable task list means that you can shape Habitica to fit your personal goals. Work on creative projects, emphasize self-care, or pursue a different dream -- it's all up to you.",
- "levelUpAnywhere": "Level Up Anywhere",
+ "levelUpAnywhere": "Steige ein Level auf wo immer Du bist!",
"levelUpAnywhereDesc": "Unsere Handy-Apps machen es Dir leicht, Deine Aufgaben unterwegs zu verwalten. Verwirkliche Deine Ziele mit einem einfachen Fingerzeig, egal wo Du bist.",
"joinMany": "Schließe Dich über 2.000.000 Leuten an und habe Spaß, während Du Deine Aufgaben erfüllst!",
"joinToday": "Tritt Habitica heute bei",
diff --git a/website/common/locales/de/gear.json b/website/common/locales/de/gear.json
index 1a5255bbb81..2dd6437a427 100644
--- a/website/common/locales/de/gear.json
+++ b/website/common/locales/de/gear.json
@@ -10,7 +10,7 @@
"gearNotOwned": "Du besitzt diesen Gegenstand nicht.",
"noGearItemsOfType": "Du besitzt nichts davon.",
"noGearItemsOfClass": "Du besitzt bereits sämtliche Klassen-Ausrüstung! Mehr wird während der großen Galas veröffentlicht, um die Sonnenwenden und Tagundnachtgleichen herum.",
- "classLockedItem": "This item is only available to a specific class. Change your class under the User icon > Settings > Character Build!",
+ "classLockedItem": "Dieser Gegenstand ist nur für eine bestimmte Klasse verfügbar. Du kannst Deine Klasse unter Benutzer-Icon > Einstellungen > Charakter ändern!",
"tierLockedItem": "Dieser Gegenstand ist erst verfügbar, wenn Du die vorherigen Gegenstände der Reihe nach gekauft hast. Arbeite weiter deinen Weg nach oben!",
"sortByType": "Typ",
"sortByPrice": "Preis",
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "Die Augen des leuchtenden Schädels auf diesem Stab strahlen vor Magie und Geheimnissen. Erhöht Intelligenz um <%= int %> und Wahrnehmung um <%= per %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
"weaponSpecialFall2017HealerText": "Gruseliger Kandelaber",
"weaponSpecialFall2017HealerNotes": "Das Licht vertreibt Angst und zeigt anderen, dass Du hier bist um zu helfen. Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Feiertagskonfetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Forke des Feierns",
"weaponMystery201411Notes": "Erstich Deine Feinde oder verschling Dein Lieblingsessen - diese flexible Forke ist universell einsetzbar! Gewährt keinen Attributbonus. Abonnentengegenstand, November 2014.",
"weaponMystery201502Text": "Schimmernder Flügelstab der Liebe und auch der Wahrheit",
@@ -308,8 +316,12 @@
"weaponArmoireBattleAxeNotes": "Diese gute Eisenaxt eignet sich bestens, um Deine ärgsten Gegner und Deine schwierigsten Aufgaben zu bekämpfen. Erhöht Intelligenz um <%= int %> und Ausdauer um <%= con %>. Verzauberter Schrank: Unabhängiger Gegenstand.",
"weaponArmoireHoofClippersText": "Hufschere",
"weaponArmoireHoofClippersNotes": "Schneide die Hufe Deiner hart arbeitenden Reittiere, damit sie gesund bleiben während sie Dich ins Abenteuer tragen! Erhöht Stärke, Intelligenz und Ausdauer jeweils um <%= attrs %>. Verzauberter Schrank: Hufschmiedset (Gegenstand 1 von 3).",
- "weaponArmoireWeaversCombText": "Weaver's Comb",
- "weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireWeaversCombText": "Kamm des Webers",
+ "weaponArmoireWeaversCombNotes": "Verwende diesen Kamm, um Deine Schussfäden zu einem dicht gewebten Stoff zusammenzuschieben. Erhöht Wahrnehmung um <%= per %> und Stärke um <%= str %>. Verzauberter Schrank: Weber-Set (Gegenstand 2 von 3).",
+ "weaponArmoireLamplighterText": "Laternenanzünder",
+ "weaponArmoireLamplighterNotes": "Dieser lange Stab hat an einem Ende einen Docht, um Laternen anzuzünden, und am anderen Ende einen Haken, um sie wieder auszumachen. Erhöht Ausdauer um <%= con %> und Wahrnehmung um <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "Rüstung",
"armorCapitalized": "Rüstung",
"armorBase0Text": "Schlichte Kleidung",
@@ -386,8 +398,8 @@
"armorSpecialDandySuitNotes": "Du bist unbestreitbar erfolgreich angezogen! Erhöht Wahrnehmung um <%= per %>.",
"armorSpecialSamuraiArmorText": "Samurairüstung",
"armorSpecialSamuraiArmorNotes": "Diese robuste, maßgeschneiderte Rüstung wird von eleganten Seidenstricken zusammengehalten. Erhöht Wahrnehmung um <%= per %>.",
- "armorSpecialTurkeyArmorBaseText": "Turkey Armor",
- "armorSpecialTurkeyArmorBaseNotes": "Keep your drumsticks warm and cozy in this feathery armor! Confers no benefit.",
+ "armorSpecialTurkeyArmorBaseText": "Truthahnrüstung",
+ "armorSpecialTurkeyArmorBaseNotes": "Halte Deine Schenkel in dieser gefederten Rüstung warm und kuschelig! Gewährt keinen Attributbonus.",
"armorSpecialYetiText": "Robe des Yeti-Zähmers",
"armorSpecialYetiNotes": "Flauschig und wild. Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2013-2014 Winterausrüstung.",
"armorSpecialSkiText": "Parka des Sk(i)-attentäters",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "Welches Maskerade-Ensemble wäre schon komplett ohne eine dramatisch schwingende Robe? Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
"armorSpecialFall2017HealerText": "Spukhaus-Rüstung",
"armorSpecialFall2017HealerNotes": "Dein Herz ist eine offene Tür. Und Deine Schultern sind Dachziegeln! Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
+ "armorSpecialWinter2018RogueText": "Rentierkostüm",
+ "armorSpecialWinter2018RogueNotes": "Du siehst so niedlich und kuschelig aus; wer würde vermuten, dass Du hinter den Plätzchen her bist? Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
+ "armorSpecialWinter2018WarriorText": "Geschenkpapier-Rüstung",
+ "armorSpecialWinter2018WarriorNotes": "Lass Dich von dem papiernen Gefühl dieser Rüstung nicht täuschen. Sie ist fast unmöglich zu zerreißen! Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
+ "armorSpecialWinter2018MageText": "Strahlender Smoking",
+ "armorSpecialWinter2018MageNotes": "Das Nonplusultra der magischen formellen Kleidung. Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
+ "armorSpecialWinter2018HealerText": "Mistelzweigrobe",
+ "armorSpecialWinter2018HealerNotes": "In diese Roben wurden Zaubersprüche für extra Feiertagsfreude gewebt. Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
"armorMystery201402Text": "Robe des Nachrichtenbringers",
"armorMystery201402Notes": "Schimmernd, stabil und mit vielen Taschen für Briefe. Gewährt keinen Attributbonus. Abonnentengegenstand, Februar 2014.",
"armorMystery201403Text": "Waldwanderer-Rüstung",
@@ -584,8 +604,10 @@
"armorMystery201707Notes": "Mit dieser Rüstung kannst Du Dich unter die Kreaturen des Ozeans mischen, während Du Unterwasser-Quests und Abenteuern nachschwimmst. Abonnentengegenstand, Juli 2017.",
"armorMystery201710Text": "Gebieterischer Gnom Gewand",
"armorMystery201710Notes": "Geschuppt, glänzend und gehärtet! Gewährt keinen Attributbonus. Abonnentengegenstand, Oktober 2017.",
- "armorMystery201711Text": "Carpet Rider Outfit",
+ "armorMystery201711Text": "Teppichreitergewand",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunkanzug",
"armorMystery301404Notes": "Adrett und schneidig, hoho! Gewährt keinen Attributbonus. Abonnentengegenstand, Februar 3015.",
"armorMystery301703Text": "Steampunk-Pfauen-Robe",
@@ -660,8 +682,12 @@
"armorArmoireFarrierOutfitNotes": "Diese robuste Arbeitskleidung hält dem unordentlichsten Stall stand. Erhöht Intelligenz, Ausdauer und Wahrnehmung jeweils um <%= attrs %>. Verzauberter Schrank: Hufschmiedset (Gegenstand 2 von 3).",
"armorArmoireCandlestickMakerOutfitText": "Kerzenmachergewand",
"armorArmoireCandlestickMakerOutfitNotes": "Dieses robuste Kleidungsstück schützt Dich vor heißem Kerzenwachs, während Du Deinem Handwerk nachgehst. Erhöht Ausdauer um<%= con %>. Verzauberter Schrank Kerzenmacher-Set (Gegenstand 1 von 3).",
- "armorArmoireWovenRobesText": "Woven Robes",
- "armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireWovenRobesText": "Gewebte Robe",
+ "armorArmoireWovenRobesNotes": "Zeige stolz Deine Weber-Kunst, indem Du diese farbenfrohe Robe trägst! Erhöht Ausdauer um <%= con %> und Intelligenz um <%= int %>. Verzauberter Schrank: Weber-Set (Gegenstand 1 von 3).",
+ "armorArmoireLamplightersGreatcoatText": "Laternenanzünder-Mantel",
+ "armorArmoireLamplightersGreatcoatNotes": "Dieser schwere, wollene Mantel kann selbst der kältesten Winternacht widerstehen! Erhöht Wahrnehmung um <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "Helm",
"headgearCapitalized": "Kopfschutz",
"headBase0Text": "Keine Kopfbedeckung",
@@ -740,8 +766,8 @@
"headSpecialKabutoNotes": "Dieser Helm ist funktional und schön zugleich! Deine Feinde werden abgelenkt sein, weil sie ihn bewundern werden. Erhöht Intelligenz um <%= int %>.",
"headSpecialNamingDay2017Text": "Königlicher purpurfarbener Greifenhelm",
"headSpecialNamingDay2017Notes": "Alles Liebe zum Namenstag! Trage diesen unerschütterlichen und fedrigen Helm, während Du Habitica feierst. Gewährt keinen Attributbonus.",
- "headSpecialTurkeyHelmBaseText": "Turkey Helm",
- "headSpecialTurkeyHelmBaseNotes": "Your Turkey Day look will be complete when you don this beaked helm! Confers no benefit.",
+ "headSpecialTurkeyHelmBaseText": "Truthahnhelm",
+ "headSpecialTurkeyHelmBaseNotes": "Dein Truthahn-Tag-Aussehen wird vervollständigt, wenn Du diesen schnabelförmigen Helm anziehst! Gewährt keinen Attributbonus.",
"headSpecialNyeText": "Ulkiger Partyhut",
"headSpecialNyeNotes": "Du hast einen ulkigen Partyhut erhalten! Trage ihn mit Stolz bei Deinem Rutsch ins neue Jahr! Gewährt keinen Attributbonus.",
"headSpecialYetiText": "Helm des Yeti-Zähmers",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "Wenn du mit diesem federigen Kopfschmuck erscheinst, wird jeder über die Identität des zauberhaften Unbekannten im Raum rätseln! Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
"headSpecialFall2017HealerText": "Spukhaus-Helm",
"headSpecialFall2017HealerNotes": "Lade spukende Geister und gutgesinnte Kreaturen dazu ein Deine heilenden Kräfte in diesem Helm aufzusuchen! Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Regenbogenkriegerhelm",
"headSpecialGaymerxNotes": "Zur Feier der GaymerX-Konferenz ist dieser spezielle Helm dekoriert mit einem strahlenden, farbenfrohen Regenbogenmuster! GaymerX ist eine Videospiel-Tagung, die LGBTQ und Videospiele feiert und für alle offen ist.",
"headMystery201402Text": "Geflügelter Helm",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Brauchst Du ein paar extra Hände für Deine Aufgaben? Dieser durchscheinende Quallenschirm hat ein paar Tentakeln, die Dir helfen! Gewährt keinen Attributbonus. Abonnentengegenstand, Juli 2017.",
"headMystery201710Text": "Gebieterischer Gnom Helm",
"headMystery201710Notes": "Dieser Helm lässt Dich einschüchternd aussehen... aber er wird Deiner Tiefenwahrnehmung keinen Gefallen tun! Gewährt keinen Attributbonus. Abonnentengegenstand, Oktober 2017.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Schicker Zylinder",
"headMystery301404Notes": "Ein schicker Zylinder für die feinsten Ehrenleute! Gewährt keinen Attributbonus. Abonnentengegenstand, Januar 3015.",
"headMystery301405Text": "Einfacher Zylinder",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "Dieser mächtige Stahlhelm wird Dir dabei helfen, den Kampf zu gewinnen, um gesund, glücklich und produktiv zu sein! Erhöht Wahrnehmung um <%= per %>. Verzauberter Schrank: Anti-Aufschieberitis-Set (Gegenstand 1 von 3).",
"headArmoireCandlestickMakerHatText": "Kerzenmacherhut",
"headArmoireCandlestickMakerHatNotes": "Mit einem flotten Hut macht jeder Job mehr Spaß und die Kerzenmacherei ist da keine Ausnahme! Erhöht Wahrnehmung und Intelligenz jeweils um<%= attrs %>. Verzauberter Schrank (Gegenstand 2 von 3).",
+ "headArmoireLamplightersTopHatText": "Laternenanzünder-Zylinder",
+ "headArmoireLamplightersTopHatNotes": "Dieser flotte, schwarze Hut komplettiert Dein Laternenanzünder-Outfit! Erhöht Ausdauer um <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "Schildhand-Gegenstand",
"offhandCapitalized": "Schildhand-Gegenstand",
"shieldBase0Text": "Keine Schildhand-Ausrüstung.",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "Dieser gezuckerte Schild hat mächtige schützende Kräfte, versuche also nicht daran zu naschen! Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
"shieldSpecialFall2017HealerText": "Herumgeisternde Kugel",
"shieldSpecialFall2017HealerNotes": "Diese Kugel kreischt gelegentlich. Es tut uns leid, aber wir wissen nicht warum. Jedenfalls sieht sie schick aus! Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2017 Herbstausrüstung.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Töter der Vorsätze",
"shieldMystery201601Notes": "Diese Klinge kann zur Entfernung aller Ablenkungen verwendet werden. Gewährt keinen Attributbonus. Abonnentengegenstand, Januar 2016.",
"shieldMystery201701Text": "Zeitanhalterschild",
@@ -1212,8 +1260,8 @@
"shieldArmoireHorseshoeNotes": "Schütze die Hufe Deiner Reittiere mit diesem Hufeisen. Erhöht Ausdauer, Wahrnehmung und Stärke jeweils um <%= attrs %>. Verzauberter Schrank: Hufschmiedset (Gegenstand 3 von 3).",
"shieldArmoireHandmadeCandlestickText": "Handgearbeitete Kerze",
"shieldArmoireHandmadeCandlestickNotes": "Deine feinen Wachswaren spenden den dankbaren Habiticanern Licht und Wärme! Erhöht Stärke um <%= str %>. Verzauberter Schrank (Gegenstand 3 von 3).",
- "shieldArmoireWeaversShuttleText": "Weaver's Shuttle",
- "shieldArmoireWeaversShuttleNotes": "This tool passes your weft thread through the warp to make cloth! Increases Intelligence by <%= int %> and Perception by <%= per %>. Enchanted Armoire: Weaver Set (Item 3 of 3).",
+ "shieldArmoireWeaversShuttleText": "Schiffchen des Webers",
+ "shieldArmoireWeaversShuttleNotes": "Dieses Werkzeug führt Deinen Schussfaden durch die Kette, um Stoff zu fertigen! Erhöht Intelligenz um <%= int %> und Wahrnehmung um <%= per %>. Verzauberter Schrank: Weber-Set (Gegenstand 3 von 3).",
"back": "Rückenschmuck",
"backCapitalized": "Rückenaccessoire",
"backBase0Text": "Kein Rückenschmuck",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Dieser Umhang hat geheime Taschen um all das Gold zu verstecken, dass Du von Deinen Aufgaben erbeutet hast. Gewährt keinen Attributbonus. Abonnentengegenstand, Juni 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "Kopfschmuck",
"headAccessoryCapitalized": "Kopfschmuck",
"accessories": "Accessoires",
diff --git a/website/common/locales/de/generic.json b/website/common/locales/de/generic.json
index 08432f054b2..0b041007e59 100644
--- a/website/common/locales/de/generic.json
+++ b/website/common/locales/de/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Retter von Dilatory",
"achievementDilatoryText": "Hat bei der Sommer-Strandparty 2014 dabei geholfen, den Schreckensdrachen von Dilatory zu besiegen!",
"costumeContest": "Kostümwettbewerbsteilnehmer",
- "costumeContestText": "Hat am Habitoween-Kostümwettbewerb teilgenommen. Schau einige Einträge im Habitica-Blog an!",
- "costumeContestTextPlural": "Hat an <%= count %> Habitoween-Kostümwettbewerben teilgenommen. Schau einige Einträge im Habitica-Blog an!",
+ "costumeContestText": "Hat am Habitoween-Kostümwettbewerb teilgenommen. Sieh Dir einige der genialen Einsendungen auf blog.habitrpg.com an! ",
+ "costumeContestTextPlural": "Hat an <%= count %> Habitoween-Kostümwettbewerben teilgenommen. Sieh Dir einige der genialen Einsendungen auf blog.habitrpg.com an! ",
"memberSince": "- Mitglied seit",
"lastLoggedIn": "- Zuletzt eingeloggt",
"notPorted": "Dieses Feature wurde noch nicht von der ursprünglichen Seite portiert.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's Melodie",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Melodie",
"audioTheme_arashiTheme": "Arashi's Melodie",
+ "audioTheme_maflTheme": "MAFL Melodie",
+ "audioTheme_pizildenTheme": "Pizilden's Melodie",
"askQuestion": "Stelle eine Frage",
"reportBug": "Melde einen Fehler",
"HabiticaWiki": "Das Habitica-Wiki",
diff --git a/website/common/locales/de/groups.json b/website/common/locales/de/groups.json
index bc6eb69974a..2e3b086a3c5 100644
--- a/website/common/locales/de/groups.json
+++ b/website/common/locales/de/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Optionale Nachricht",
"yesRemove": "Ja, entferne sie",
"foreverAlone": "\"Gefällt mir\" funktioniert nicht bei eigenen Nachrichten. Sei nicht so einer.",
- "sortLevel": "Nach Level sortieren",
- "sortRandom": "Zufällig sortieren",
- "sortPets": "Nach Anzahl der Haustiere sortieren",
- "sortName": "Nach Avatarname sortieren",
- "sortBackgrounds": "Nach Hintergrund sortieren",
- "sortHabitrpgJoined": "Nach Habitica-Beitrittsdatum sortieren",
- "sortHabitrpgLastLoggedIn": "Nach letzter Anmeldezeit sortieren",
- "ascendingSort": "Aufsteigend sortieren",
- "descendingSort": "Absteigend sortieren",
+ "sortDateJoinedAsc": "Frühestes Beitrittsdatum",
+ "sortDateJoinedDesc": "Letztes Beitrittsdatum",
+ "sortLoginAsc": "Frühester Login",
+ "sortLoginDesc": "Letzter Login",
+ "sortLevelAsc": "Niedrigster Level",
+ "sortLevelDesc": "Höchster Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Niedrigster Rang",
+ "sortTierDesc": "Höchster Rang",
"confirmGuild": "Gilde für 4 Edelsteine gründen?",
"leaveGroupCha": "Gildenwettbewerbe verlassen und ...",
"confirm": "Bestätigen",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Löschen der Nachricht nicht erlaubt!",
"onlyGroupLeaderCanEditTasks": "Nicht berechtigt, Aufgaben zu bearbeiten!",
"onlyGroupTasksCanBeAssigned": "Nur Team-Aufgaben können verteilt werden",
+ "assignedToUser": "<%= userName %> zugewiesen",
+ "assignedToMembers": "<%= userCount %> Mitgliedern zugewiesen",
+ "assignedToYouAndMembers": "Dir und <%= userCount %> Mitgliedern zugewiesen",
+ "youAreAssigned": "Du bist dieser Aufgabe zugewiesen",
+ "taskIsUnassigned": "Dieser Aufgabe ist niemand zugewiesen",
+ "confirmClaim": "Bist Du sicher, dass Du diese Aufgabe beanspruchen möchtest?",
+ "confirmUnClaim": "Bist Du sicher, dass Du diese Aufgabe abgeben möchtest?",
+ "confirmApproval": "Bist Du sicher, dass Du diese Aufgabe bestätigen möchtest?",
+ "userRequestsApproval": "<%= userName %> beantragt eine Bestätigung",
+ "userCountRequestsApproval": "<%= userCount %> beantragen eine Bestätigung",
+ "youAreRequestingApproval": "Du beantragst eine Bestätigung",
"chatPrivilegesRevoked": "Dir wurden Deine Chat Privilegien entzogen.",
"newChatMessagePlainNotification": "Neue Nachricht in <%= groupName %> von <%= authorName %>. Hier geht's zur Chat Seite!",
"newChatMessageTitle": "Neue Nachricht in <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Spaßige Extras",
"enterprisePlansButton": "Frage nach Unternehmensplänen",
"enterprisePlansDescription": "Suchst Du nach einer größeren Installation mit Nutzerbedürfnissen? Vielleicht sind unsere Unternehmenspläne genau das Richtige für Dich.",
- "enterprisePlansEmailSubject": "Fragen im Bezug auf die Unternehmenspläne",
"familyPlansButton": "Melde dich für eine Familienplan-Nachrichtenliste an",
"familyPlansDescription": "Suchst Du nach einer gemütlicheren Lösung Deinen Haushalt zu organisieren? Bald gibt es Familienpläne!",
"createAGroup": "Erstelle ein Team",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Du bist dabei einem Team mit gekündigtem Plan beizutreten. Du erhältst KEIN freies Abonnement.",
"cannotChangeLeaderWithActiveGroupPlan": "Du kannst den Leiter nicht ändern während das Team einen aktiven Plan hat.",
"leaderCannotLeaveGroupWithActiveGroup": "Ein Leiter kann ein Team nicht verlassen, während es noch einen aktiven Plan hat.",
- "youHaveGroupPlan": "Du hast ein kostenloses Abonnement, weil Du einem Team angehörst, das einen Team-Plan hat. Dies endet, wenn Du das Team mitsamt Team-Plan verlässt. Deine zusätzlichen Abonnementsguthaben-Monate werden nach Ablauf des Team-Plans fortgesetzt.",
+ "youHaveGroupPlan": "Du hast ein kostenloses Abonnement, weil Du einem Team angehörst, das einen Team-Plan hat. Dies endet, wenn Du das Team mit dem Team-Plan verlässt. Deine zusätzlichen Abonnementsguthaben-Monate werden nach Ablauf des Team-Plans fortgesetzt. ",
"cancelGroupSub": "Team-Plan abbrechen",
"confirmCancelGroupPlan": "Bist Du Dir sicher, dass du den Team-Plan abbrechen möchtest und damit alle Team-Mitglieder dessen Vorteile verlieren, unter anderem auch ihre freien Abonnements?",
"canceledGroupPlan": "Abgebrochener Team-Plan",
@@ -350,19 +361,19 @@
"privacySettings": "Datenschutzeinstellungen",
"onlyLeaderCreatesChallenges": "Nur der Leiter kann Wettbewerbe erstellen",
"privateGuild": "Private Gilde",
- "charactersRemaining": "<%= characters %> characters remaining",
+ "charactersRemaining": "<%= characters %> Zeichen übrig",
"guildSummary": "Zusammenfassung",
"guildSummaryPlaceholder": "Schreibe eine Kurzbeschreibung um Deine Gilde anderen Habiticanern bekannt zu machen. Was ist der Hauptzweck der Gilde und warum sollten Leute dem ihr beitreten? Verwende hilfreiche Schlüsselwörter in der Beschreibung, um die Suche für andere Habiticaner zu erleichtern!",
"groupDescription": "Beschreibung",
"guildDescriptionPlaceholder": "Nutze diesen Abschnitt um alles, was Mitglieder der Gilde über Deine Gilde wissen sollten, ausführlicher darzustellen. Nützliche Tipps, hilfreiche Links und ermutigende Worte gehören hier hin!",
- "markdownFormattingHelp": "[Markdown formatting help](http://habitica.wikia.com/wiki/Markdown_Cheat_Sheet)",
- "partyDescriptionPlaceholder": "This is our party's description. It describes what we do in this party. If you want to learn more about what we do in this party, read the description. Party on.",
- "guildGemCostInfo": "A Gem cost promotes high quality Guilds and is transferred into your Guild's bank.",
+ "markdownFormattingHelp": "[Markdown Formatierungshilfe](http://habitica.wikia.com/wiki/Markdown_Cheat_Sheet)",
+ "partyDescriptionPlaceholder": "Das ist unsere Gruppenbeschreibung. Sie beschreibt, was wir in unserer Gruppe so tun. Wenn Du mehr darüber wissen willst, was wir in unserer Gruppe so machen, lies die Beschreibung. Party on!",
+ "guildGemCostInfo": "Eine Edelstein-Gebühr fördert die Qualität der Gilde und wird der Gildenbank gutgeschrieben.",
"noGuildsTitle": "Du bist nicht Mitglied einer Gilde.",
- "noGuildsParagraph1": "Guilds are social groups created by other players that can offer you support, accountability, and encouraging chat.",
- "noGuildsParagraph2": "Click the Discover tab to see recommended Guilds based on your interests, browse Habitica's public Guilds, or create your own Guild.",
+ "noGuildsParagraph1": "Gilden sind von anderen Spielern erstellte soziale Gruppen, die Dir Unterstützung, Verantwortlichkeit und aufmunternde Unterhaltung bieten können.",
+ "noGuildsParagraph2": "Klicke auf den Gilden Entdecken Reiter, um basierend auf Deinen Interessen empfohlene Gilden zu sehen, stöbere durch Habitica's öffentliche Gilden, oder erstelle Deine eigene Gilde.",
"privateDescription": "Private Gilden werden nicht in Habiticas Gildenübersicht angezeigt. Neue Mitglieder können nur durch eine Einladung hinzugefügt werden.",
- "removeInvite": "Remove Invitation",
+ "removeInvite": "Einladung entfernen",
"removeMember": "Mitglied Entfernen",
"sendMessage": "Nachricht Senden",
"removeManager2": "Manager entfernen",
@@ -372,7 +383,7 @@
"createParty": "Erstelle eine Gruppe",
"inviteMembersNow": "Möchtest Du jetzt Mitglieder einladen?",
"playInPartyTitle": "Spiele Habitica in einer Gruppe!",
- "playInPartyDescription": "Take on amazing quests with friends or on your own. Battle monsters, create Challenges, and help yourself stay accountable through Parties.",
+ "playInPartyDescription": "Bewältige unglaubliche Quests - mit Freunden oder auf Dich allein gestellt. Besiege Monster, erstelle Wettbewerbe und hilf Dir selbst, verantwortungsvoll zu bleiben, indem Du einer Gruppe beitrittst.",
"startYourOwnPartyTitle": "Starte Deine eigene Gruppe",
"startYourOwnPartyDescription": "Bezwinge Monster allein oder lade so viele Deiner Freunde ein, wie Du möchtest!",
"shartUserId": "Nutzer ID Teilen",
@@ -397,5 +408,6 @@
"groupBilling": "Team Abrechnung",
"wouldYouParticipate": "Möchtest du gern teilnehmen?",
"managerAdded": "Manager erfolgreich hinzugefügt",
- "managerRemoved": "Manager erfolgreich entfernt"
+ "managerRemoved": "Manager erfolgreich entfernt",
+ "leaderChanged": "Gruppenleitung wurde gewechselt"
}
\ No newline at end of file
diff --git a/website/common/locales/de/limited.json b/website/common/locales/de/limited.json
index d65dad6dd59..48a261ecc6d 100644
--- a/website/common/locales/de/limited.json
+++ b/website/common/locales/de/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Maskerade-Magier (Magier)",
"fall2017HauntedHouseSet": "Geisterhaus-Heiler (Heiler)",
"fall2017TrickOrTreatSet": "Süßes-oder-Saures-Schurke (Schurke)",
+ "winter2018ConfettiSet": "Konfettimagier (Magier)",
+ "winter2018GiftWrappedSet": "Geschenkpapierverpackter Krieger (Krieger)",
+ "winter2018MistletoeSet": "Mistelzweigheiler (Heiler)",
+ "winter2018ReindeerSet": "Rentier-Schurke (Schurke)",
"eventAvailability": "Zum Kauf verfügbar bis zum <%= date(locale) %>.",
"dateEndApril": "19. April",
"dateEndMay": "17. Mai",
@@ -120,5 +124,9 @@
"dateEndAugust": "31. August",
"dateEndOctober": "31. Oktober",
"dateEndNovember": "30. November",
- "discountBundle": "Paket"
+ "dateEndJanuary": "31. Januar",
+ "discountBundle": "Paket",
+ "winterPromoGiftHeader": "Schenke ein Abonnement und bekomme ein weiteres umsonst! ",
+ "winterPromoGiftDetails1": "Wenn Du bis 12. Januar jemandem ein Abonnement schenkst, bekommst Du das geiche Abonnement für Dich selbst umsonst!",
+ "winterPromoGiftDetails2": "Bitte bedenke, dass das geschenkte Abonnement, falls Du oder Deine beschenkte Person bereits über ein sich wiederholendes Abonnement verfügen, erst dann startet, wenn das alte Abonnement gekündigt wird oder ausläuft. Herzlichen Dank für Deine Unterstützung! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/de/loadingscreentips.json b/website/common/locales/de/loadingscreentips.json
index 6fc8c95aabf..7d4cbd38f33 100644
--- a/website/common/locales/de/loadingscreentips.json
+++ b/website/common/locales/de/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tipp #<%= tipNumber %>",
"tip1": "Erledige Deine Aufgaben unterwegs mit den mobilen Habitica-Apps.",
- "tip2": "Erreiche Level 100, um die Sphäre der Wiedergeburt kostenlos zu erhalten und ein neues Abenteuer zu beginnen.",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Benutze Emojis, um Deine Aufgaben rasch unterscheiden zu können.",
"tip4": "Setze ein #-Zeichen an den Anfang des Namens einer Aufgabe, um sie richtig groß zu machen!",
- "tip5": "Am besten aktivierst Du Boni am Morgen, damit sie länger wirken.",
- "tip6": "Überpüfe Deine Aufgaben ab und zu, ob sie noch aktuell sind.",
- "tip7": "Einige Hintergründe verbinden sich perfekt wenn Gruppenmitglieder die gleichen verwenden, wie z. B. Bergsee, Pagoden und Hügellandschaft.",
- "tip8": "Schick jemandem eine PN, indem Du auf den Umschlag neben ihrem Namen im Chat klickst.",
- "tip9": "Besuche die 'Guild Leaders & Challenge Creators' Gilde für Ratschläge, um eine eigene Gilde zu starten.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Du kannst Edelsteine gewinnen, indem Du an Wettbewerben teilnimmst. Es werden jeden Tag neue ausgeschrieben.",
- "tip11": "Wenn Du Deinen Avatar gerne verkleidest, sieh Dir mal die \"Costume Carnival\" Gilde an.",
- "tip12": "Trete der Gilde \"Challenge... Accepted\" bei, um regelmässig an zufälligen Wettbewerben teilzunehmen.",
- "tip13": "Mehr als vier Mitglieder in der Gruppe erhöhen das Verantwortungsbewusstsein!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Du kannst ein inspirierendes Zitat oder einen Titel in Deine Liste einfügen, indem Du eine Gewohnheit ohne (+/-) erstellst.",
- "tip15": "Füge Deinen einmaligen Aufgaben eine Checkliste hinzu, um die Belohnungen zu erhöhen!",
- "tip16": "Benutze den Daten-Tab, um wertvolle Einsichten in Deinen Fortschritt zu gewinnen.",
- "tip17": "Mit Tags wird eine lange Aufgabenliste leicht zu handhaben!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Gewohnheiten, die nur positiv oder nur negativ sind, werden mit der Zeit wieder gelb.",
- "tip19": "Erhöhe Deinen Intelligenzwert, um mehr EP für erledigte Aufgaben zu erhalten.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Erhöhe Deinen Aufmerksamkeitswert, um mehr Beute und Gold zu finden.",
"tip21": "Erhöhe Deinen Stärkewert, um mehr Schaden anzurichten oder kritische Schläge zu landen.",
"tip22": "Erhöhe Deinen Ausdauerwert, um weniger Schaden durch unvollständige tägliche Aufgaben zu erleiden.",
- "tip23": "Klicke auf das Balkendiagramm-Symbol Deiner Aufgaben, um ein Diagramm Deines Fortschritts anzuzeigen.",
- "tip24": "Habitica ist Open Source! Frage in der \"Aspiring Legends\" Gilde nach, wenn Du etwas beitragen möchtest.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "Die vier großen Galas der Jahreszeiten starten um die Sonnenwenden und Tagundnachtgleichen.",
- "tip26": "Ein Pfeil links von jemandes Level zeigt an, dass der-/diejenige derzeit einen Bonus auf die Statuswerte genießt.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Du hast gestern eine tägliche Aufgabe abgeschlossen, aber vergessen, sie abzuhaken? Mach Dir keine Sorgen! Mit der Funktion \"Gestrige Aktivität aufzeichnen\" hast Du die Chance, einzutragen, was Du gemacht hast, bevor Du einen neuen Tag startest.",
- "tip28": "Setze Deinen Tageswechsel individuell unter Einstellungen > Seite, um festzulegen, wann Dein Tag beginnt.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Erledige all Deine täglichen Aufgaben, um einen Bonus für einen perfekten Tag zu erhalten, der Deine Statuswerte erhöht!",
"tip30": "Du kannst Leute auch in Gilden einladen, nicht nur in Gruppen.",
"tip31": "Schau Dir die vorgefertigten Listen in der \"Library of Tasks and Challenges\" Gilde an, um Beispiele von Aufgaben zu sehen.",
- "tip32": "Große Teile von Habiticas Code, Illustrationen und Text stammen von Freiwilligen! Jeder kann mithelfen.",
- "tip33": "Besuche die Schwarze-Brett-Gilde für Neuigkeiten über Gilden, Herausforderungen und andere Ereignisse von Spielern - und veröffentliche dort Deine eigenen!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/de/messages.json b/website/common/locales/de/messages.json
index 9bcc40ce3f9..bf344eaa30c 100644
--- a/website/common/locales/de/messages.json
+++ b/website/common/locales/de/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Du hast die Quest \"<%= questText %>\" gefunden!",
"messageAlreadyPurchasedGear": "Du hast diesen Gegenstand in der Vergangenheit bereits gekauft, besitzt ihn aktuell aber nicht mehr. Du kannst ihn in der Spalte \"Belohnungen\" Deiner Aufgabenseite erneut kaufen.",
"messageAlreadyOwnGear": "Du besitzt diesen Gegenstand schon. Gehe zur Ausrüstungsseite um ihn anzulegen.",
+ "previousGearNotOwned": "Du musst eine Ausrüstung einer niedrigeren Stufe kaufen, bevor Du diese Ausrüstung kaufen kannst.",
"messageHealthAlreadyMax": "Du hast schon alle Lebenspunkte.",
"messageHealthAlreadyMin": "Oh nein! Du hast bereits alle Lebenspunkte verloren - jetzt ist es zu spät, um noch einen Heiltrank zu kaufen! Aber keine Sorge, Du kannst Dich wiederbeleben.",
"armoireEquipment": "<%= image %> Du hast ein Stück seltener Ausrüstung im verzauberten Schrank gefunden: <%= dropText %>! Großartig!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Du hast diese Nachricht bereits gemeldet",
"messageGroupChatNotFound": "Nachricht wurde nicht gefunden!",
"messageGroupChatAdminClearFlagCount": "Nur Admins können den Zählmarker zurücksetzen!",
+ "messageCannotFlagSystemMessages": "Du kannst eine Systemmeldungen nicht als unangemessen melden. Falls Du bezüglich dieser Meldung eine Verletzung der Community-Richtlinien melden willst, sende bitte eine E-Mail mit einem Screenshot und einer Erklärung an Lemoness unter <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ups, es sieht so aus als ob du zu viele Nachrichten schreibst! Bitte warte eine Minute und versuche es erneut. Das Gasthaus kann nur 200 Nachrichten gleichzeitig beinhalten und deshalb ermutigt Habitica längere, mehr durchdachte Nachrichten und hilfreiche Antworten zu schreiben. Wir können es kaum erwarten zu hören, was du zu sagen hast. :)",
"messageUserOperationProtected": "Pfad `<%= operation %>` wurde nicht gespeichert, da dieser geschützt ist.",
"messageUserOperationNotFound": "<%= operation %> Operation nicht gefunden",
diff --git a/website/common/locales/de/npc.json b/website/common/locales/de/npc.json
index a76df4865dc..6405bbb285d 100644
--- a/website/common/locales/de/npc.json
+++ b/website/common/locales/de/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Edelstein",
"typeNotSellable": "Typ ist nicht verkäuflich. Dieser muss einer der Folgenden sein: <%= acceptedTypes %>",
"userItemsKeyNotFound": "Schlüssel für user.items <%= type %> nicht gefunden",
- "userItemsNotEnough": "Nicht genügend Gegenstände für user.items <%= type %> gefunden",
+ "userItemsNotEnough": "Du hast nicht genug <%= type %>",
"pathRequired": "Pfad ist erforderlich",
"unlocked": "Gegenstände wurden freigeschaltet",
"alreadyUnlocked": "Komplettes Set ist bereits freigeschaltet.",
diff --git a/website/common/locales/de/pets.json b/website/common/locales/de/pets.json
index a6dff0136c2..f3fb1e0b035 100644
--- a/website/common/locales/de/pets.json
+++ b/website/common/locales/de/pets.json
@@ -41,7 +41,7 @@
"hatchingPotion": "Schlüpfelixier",
"noHatchingPotions": "Du hast im Moment keine Schlüpfelixiere.",
"inventoryText": "Klicke auf ein Ei um die anwendbaren Elixiere grün hervorgehoben zu sehen. Klicke dann auf ein hervorgehobenes Elixier, um Dein Haustier auszubrüten. Falls kein Elixier hervorgehoben wird, klicke auf das Ei um es abzuwählen und klicke diesmal zuerst auf das Elixier, um die Eier hervorzuheben. Du kannst überflüssige Gegenstände auch an Alexander den Händler verkaufen.",
- "haveHatchablePet": "Du hast ein <%= potion %>Schlüpfelixier und <%= egg %>Ei um dieses Haustier auszubrüten! klicke auf den Pfotenabdruck, damit es schlüpft.",
+ "haveHatchablePet": "Du hast ein <%= potion %> Schlüpfelixier und ein <%= egg %>-Ei, um dieses Haustier auszubrüten! Klicke auf den Pfotenabdruck, damit es schlüpft.",
"quickInventory": "Schnell-Inventar",
"foodText": "Futter",
"food": "Futter und magische Sättel",
@@ -75,7 +75,7 @@
"hatchAPot": "Willst Du ein <%= potion %> <%= egg %> ausbrüten?",
"hatchedPet": "Du hast ein neues <%= potion %> <%= egg %> ausgebrütet!",
"hatchedPetGeneric": "Du hast ein neues Haustier ausgebrütet!",
- "hatchedPetHowToUse": "Visit the [Stable](/inventory/stable) to feed and equip your newest pet!",
+ "hatchedPetHowToUse": "Schau im [Stall](/inventory/stable) vorbei, um Dein neuestes Haustier auszurüsten oder zu füttern!",
"displayNow": "Jetzt anzeigen",
"displayLater": "Später anzeigen",
"petNotOwned": "Du besitzt dieses Haustier nicht.",
@@ -123,5 +123,5 @@
"clickOnPetToFeed": "Klicke auf ein Haustier um ihm <%= foodName %> zu füttern und sieh, wie es wächst!",
"dragThisPotion": "Ziehe dieses <%= potionName %> zu einem Ei und brüte ein neues Haustier aus!",
"clickOnEggToHatch": "Klicke auf ein Ei um Dein <%= potionName %> Schlüpfelixier zu nutzen und ein neues Haustier auszubrüten!",
- "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
+ "hatchDialogText": "Gieße Dein <%= potionName %> Schlüpfelixier auf Dein <%= eggName %>-Ei und es wird ein <%= petName %> daraus schlüpfen."
}
\ No newline at end of file
diff --git a/website/common/locales/de/quests.json b/website/common/locales/de/quests.json
index a73757012ef..2fb44822c7b 100644
--- a/website/common/locales/de/quests.json
+++ b/website/common/locales/de/quests.json
@@ -78,6 +78,7 @@
"mustLvlQuest": "Du musst Level <%= level %> sein um dieses Quest zu erwerben!",
"mustInviteFriend": "Um diese Quest freizuschalten musst Du einen Freund in Deine Gruppe einladen. Willst Du jetzt jemanden einladen?",
"unlockByQuesting": "Um diese Quest freizuschalten musst Du erst <%= title %> abschließen.",
+ "questConfirm": "Bist Du sicher? Nur <%= questmembers %> der <%= totalmembers %> Mitspieler Deiner Gruppe sind dieser Quest beigetreten! Quests starten automatisch sobald alle Mitspieler die Einladung angenommen oder abgelehnt haben.",
"sureCancel": "Bist Du sicher, dass Du diese Quest abbrechen willst? Alle akzeptierten Einladungen werden verloren gehen. Der Quest-Besitzer wird die Questschriftrolle zurück bekommen.",
"sureAbort": "Bist Du sicher, dass Du diese Mission abbrechen willst? Das wird sie für alle in Deiner Gruppe abbrechen und jeder Fortschritt wird verloren gehen. Die Questschriftrolle wird dem Quest-Besitzer zurückgegeben.",
"doubleSureAbort": "Bist Du wirklich, wirklich sicher? Sei ganz sicher, dass sie Dich nicht für immer hassen werden!",
diff --git a/website/common/locales/de/questscontent.json b/website/common/locales/de/questscontent.json
index 5bac0004b2a..dff2d6a5361 100644
--- a/website/common/locales/de/questscontent.json
+++ b/website/common/locales/de/questscontent.json
@@ -105,7 +105,7 @@
"questGoldenknight3DropHoney": "Honig (Futter)",
"questGoldenknight3DropGoldenPotion": "Goldenes Schlüpfelixier",
"questGoldenknight3DropWeapon": "Mustaines Meilenstein-matschender Morgenstern (Zweithand-Waffe)",
- "questGroupEarnable": "Earnable Quests",
+ "questGroupEarnable": "Verdienbare Quests",
"questBasilistText": "Der Basi-List",
"questBasilistNotes": "Da ist ein Aufruhr auf dem Marktplatz - es sieht ganz so aus, als ob man lieber in die andere Richtung rennen sollte. Da Du aber ein mutiger Abenteurer bist, rennst Du stattdessen darauf zu und entdeckst einen Basi-List, der sich aus einem Haufen unerledigter Aufgaben geformt hat! Alle umstehenden Habiticaner sind aus Angst vor der Länge des Basi-Lists gelähmt und können nicht anfangen zu arbeiten. Von irgendwo in der Nähe hörst Du @Arcosine schreien: \"Schnell! Erledige Deine To-Dos und täglichen Aufgaben, um dem Monster die Zähne zu entfernen, bevor sich jemand am Papier schneidet!\" Greife schnell an, Abenteurer, und hake etwas ab - aber Vorsicht! Wenn Du irgendwelche täglichen Aufgaben nicht erledigst, wird der Basi-List Dich und Deine Gruppe angreifen!",
"questBasilistCompletion": "Der Basi-List ist in Papierschnitzel zerfallen, die sanft in Regenbogenfarben schimmern. \"Puh!\" sagt @Arcosine. \"Gut, dass ihr gerade hier wart!\" Du fühlst Dich erfahrener als vorher und sammelst ein paar verstreute Goldstücke zwischen den Papierstücken auf.",
@@ -237,7 +237,7 @@
"questDilatoryDistress2DropSkeletonPotion": "Skelettiertes Schlüpfelixier",
"questDilatoryDistress2DropCottonCandyBluePotion": "Zuckerwattenblaues Schlüpfelixier",
"questDilatoryDistress2DropHeadgear": "Feuerkorallendiadem (Kopfbedeckung)",
- "questDilatoryDistress3Text": "Dilatory in Gefahr, Teil 3: Nicht nur ein Dienstmädchen",
+ "questDilatoryDistress3Text": "Dilatory in Gefahr, Teil 3: Mehr als eine Jungfrau",
"questDilatoryDistress3Notes": "Du folgst den Fangschreckenkrebsen tief in die Meeresspalte und entdeckst eine Unterwasserfestung. Prinzessin Adva, von weiteren Wasserschädeln begleitet, erwartet Dich in der Haupthalle. \"Mein Vater hat euch gesandt, oder? Berichtet ihm, dass ich es ablehne zurückzukehren. Ich bin damit zufrieden hier zu bleiben und Zauberei zu betreiben. Verschwinde jetzt oder Du wirst den Zorn der neuen Meereskönigin spüren!\" Adva scheint unnachgiebig zu sein, aber während sie spricht bemerkst Du einen seltsamen, bedrohlich glühenden Rubinanhänger an ihrem Hals ... Vielleicht würden ihre Wahnvorstellungen aufhören, wenn Du ihn zerbrichst?",
"questDilatoryDistress3Completion": "Schließlich gelingt es Dir, den verhexten Anhänger von Advas Hals zu nehmen und Du wirfst ihn weg. Adva fasst sich an den Kopf: \"Wo bin ich? Was ist hier passiert?\" Nachdem sie Deine Geschichte gehört hat, runzelt sie ihre Stirn: \"Dieses Amulett wurde mir von einer seltsamen Botschafterin überreicht - Eine Dame namens 'Tzina'. Danach erinnere ich mich an nichts mehr!\"
Zurück in Dilatory ist Manta überglücklich über Deinen Erfolg. \"Erlaube mir, Dich mit diesem Dreizack und diesem Schild zu belohnen! Ich habe sie bei @aiseant und @starsystemic als Geschenk für Adva anfertigen lassen, aber ... Ich möchte in nächster Zeit lieber keine Waffen mehr in ihre Hände geben.",
"questDilatoryDistress3Boss": "Adva, die putschende Meerjungfrau",
@@ -349,10 +349,10 @@
"questArmadilloDropArmadilloEgg": "Gürteltier (Ei)",
"questArmadilloUnlockText": "Ermöglicht den Kauf von Gürteltiereiern auf dem Marktplatz",
"questCowText": "Die Muhtanten-Kuh",
- "questCowNotes": "Es war ein langer, heißer Tag auf der Übungs-Farm, und Du würdest nichts lieber tun als einen großen Schluck Wasser zu trinken und etwas zu schlafen. Während Du vor Dich hinträumst, schreit @Soloana plötzlich: \"Lauft! Die Siegerkuh ist muhtiert!\"
@eevachu schluckt. \"Unsere schlechten Angewohnheiten müssen sie infiziert haben.\"
\"Schnell!\", meint Feralem Tau. \"Lasst uns etwas unternehmen, bevor die anderen Kühe ebenfalls muhtieren.\"
Du hast genug gehört. Keine Tagträumereien mehr -- Es ist Zeit die schlechten Angewohnheiten unter Kontrolle zu bringen!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "Du pflegst Deine guten Gewohnheiten solange, bis die Kuh wieder ihre ursprüngliche Gestalt annimmt. Die Kuh sieht Dich mit ihren schönen, braunen Augen an und schubst drei Eier zu Dir herüber.
@fuzzytrees lacht und überreicht Dir die Eier: \"Vielleicht sind die Babykühe darin immernoch muhtiert. Aber ich vertraue darauf, dass Du Deine guten Gewohnheiten beibehältst, wenn Du sie großziehst!\"",
"questCowBoss": "Muhtanten-Kuh",
- "questCowDropCowEgg": "Bulle (Ei)",
+ "questCowDropCowEgg": "Kalb (Ei)",
"questCowUnlockText": "Ermöglicht den Kauf von Kuheiern auf dem Marktplatz",
"questBeetleText": "Der KRITISCHE BUG",
"questBeetleNotes": "Etwas ist in der Domäne von Habitica schief gelaufen. Die Essen des Schmieds sind erloschen und merkwürdige Fehler tauchen überall auf. Unter unheilvollem Beben schält sich ein tückischer Feind aus der Erde... Ein KRITISCHER BUG! Du nimmst Haltung an als er das Land infiziert und Glitches beginnen die Habiticans um dich herum einzuholen. @starsystemic schreit: \"Wir müssen dem Schmied helfen diesen Bug unter Kontrolle zu bringen!\" Es scheint so, als müsstest Du diesen Plagegeist des Programmierers vordringlich behandeln.",
@@ -512,15 +512,15 @@
"questUnlockLostMasterclasser": "Um diese Quest freizuschalten, musst Du die finalen Quests der Questreihen 'Dilatory in Gefahr', 'Chaos in Mistiflying', 'Stoïstilles Unglück' und 'Schrecken in den Aufgabenwäldern' abgeschlossen haben.",
"questLostMasterclasser1Text": "Das Geheimnis der Klassenmeister, Teil 1: Lies zwischen den Zeilen",
"questLostMasterclasser1Notes": "Du wurdest unerwartet von @beffymaroo und @Lemoness nach Habit Hall gerufen, wo Du erstaunt feststellst, dass im fahlen Licht der Dämmerung alle vier Klassenmeister von Habitica auf Dich warten. Sogar der Fröhliche Reaper sieht düster aus.
“Oho, Du bist hier”, sagt der April-Scherzkeks. “Nun, wir stören ungern Deine Nachtruhe ohne einen wirklich triftigen—”
“Hilf uns, den jüngsten Fall von Besessenheit aufzuklären”, unterbricht Lady Glaciate. “Alle Opfer beschuldigten jemanden namens Tzina.”
Der April-Scherzkeks ist sichtlich beleidigt von der Kurzfassung. “Was ist mit meiner Ansprache?” zischt er ihr zu. “Mit dem Nebel und den Gewitter-Effekten?”
“Wir sind in Eile”, murmelt sie zurück. “Und meine Mammuts sind immer noch klatschnass von Deinen pausenlosen Proben.”
“Ich fürchte, dass die verehrte Meisterin der Krieger Recht behält”, sagt König Manta. “Zeit ist von wesentlicher Bedeutung. Wirst Du uns helfen?”
Als Du nickst, winkt er mit seinen Händen, um ein Portal zu öffnen, das zu einem Unterwasser-Raum führt. “Schwimm mit mir hinab nach Dilatory, und wir durchkämmen meine Bibliothek nach jeglichen Belegen, die uns einen Hinweis geben könnten.” Als er Deine Verwirrung bemerkt, fügt er hinzu: “Keine Sorge, das Papier wurde bereits verzaubert, lange bevor Dilatory versank. Keines der Bücher ist auch nur im geringsten feucht!” Er zwinkert. “Im Gegensatz zu Lady Glaciate’s Mammuts.”
“Das habe ich gehört, Manta.”
Als Du hinter dem Meister der Magier in das Wasser tauchst, verschmelzen Deine Beine auf magische Weise zu einer Schwanzflosse. Und obwohl Dein Körper Auftrieb hat, sinkt Dein Herz beim Anblick tausender Bücherregale. Du fängst besser an zu lesen…",
- "questLostMasterclasser1Completion": "After hours of poring through volumes, you still haven’t found any useful information.
“It seems impossible that there isn’t even the tiniest reference to anything relevant,” says head librarian @Tuqjoi, and their assistant @stefalupagus nods in frustration.
King Manta’s eyes narrow. “Not impossible…” he says. “Intentional.” For a moment, the water glows around his hands, and several of the books shudder. “Something is obscuring information,” he says. “Not just a static spell, but something with a will of its own. Something… alive.” He swims up from the table. “The Joyful Reaper needs to hear about this. Let’s pack a meal for the road.”",
+ "questLostMasterclasser1Completion": "Obwohl Du stundenlang über den Büchern gebrütet hast, hast Du keine einzige nützliche Information gefunden.
“Es kann unmöglich sein, dass sich nicht einmal der kleinste Hinweis auf etwas Relevantes finden lässt”, sagt Oberbibliothekar @Tuqjoi, und der Assistent @stefalupagus nickt frustriert.
König Manta verengt die Augen zu Schlitzen. “Nicht unmöglich…”, sagt er. “Beabsichtigt.” Für einen Moment glüht das Wasser um seine Hände, und einige der Bücher erschauern. “Etwas verschleiert Informationen”, stellt er fest. “Nicht einfach ein statischer Zauber, sondern etwas mit einem eigenen Willen. Etwas… Lebendiges.” Er schwimmt vom Tisch hoch. “Der Fröhliche Reaper muss davon erfahren. Packen wir etwas Proviant für unterwegs ein.”",
"questLostMasterclasser1CollectAncientTomes": "Alte Bücher",
"questLostMasterclasser1CollectForbiddenTomes": "Verbotene Bücher",
"questLostMasterclasser1CollectHiddenTomes": "Versteckte Bücher",
- "questLostMasterclasser2Text": "The Mystery of the Masterclassers, Part 2: Assembling the a'Voidant",
- "questLostMasterclasser2Notes": "The Joyful Reaper drums her bony fingers on some of the books that you brought. “Oh, dear,” the Master of Healers says. “There is a malevolent life essence at work. I might have guessed, considering the attacks by reanimated skulls during each incident.” Her assistant @tricksy.fox brings in a chest, and you are startled to see the contents that @beffymaroo unloads: the very same objects once used by this mysterious Tzina to possess people.
“I’m going to use resonant healing magic to try to make this creature manifest,” the Joyful Reaper says, reminding you that the skeleton is a somewhat unconventional Healer. “You’ll need to read the revealed information quickly, in case it breaks loose.”
As she concentrates, a twisting mist begins to siphon from the books and twine around the objects. Quickly, you flip through the pages, trying to read the new lines of text that are writhing into view. You catch only a few snippets: “Sands of the Timewastes” — “the Great Disaster” —“split into four”— “permanently corrupted”— before a single name catches your eye: Zinnya.
Abruptly, the pages wrench free from your fingers and shred themselves as a howling creature explodes into being, coalescing around the possessed objects.
“It’s an a’Voidant!” the Joyful Reaper shouts, throwing up a protection spell. “They’re ancient creatures of confusion and obscurity. If this Tzina can control one, she must have a frightening command over life magic. Quickly, attack it before it escapes back into the books!”
",
+ "questLostMasterclasser2Text": "Das Geheimnis der Klassenmeister, Teil 2: Beschwörung des v'Schwinders",
+ "questLostMasterclasser2Notes": "Der Fröhliche Reaper trommelt mit ihren knochigen Fingern auf den Büchern, die ihr mitgebracht habt. “Ach je”, sagt der Meister der Heiler. “Da ist eine bösartige Lebensessenz am Werk. Ich hätte es mir denken können, wenn man die Angriffe der wiederbelebten Schädel während der Vorfälle berücksichtigt.” Ihre rechte Hand @tricksy.fox bringt eine Truhe herein, und Du bist überrascht zu sehen, was beffymaroo daraus hervorholt: es sind genau die Gegenstände, die einst von der mysteriösen Tzina benutzt wurden, um anderen ihren Willen aufzuzwingen.
“Ich werde mit resonierender Heilmagie versuchen, die Kreatur zu manifestieren”, sagt der Fröhliche Reaper, und erinnert Dich daran, dass das Skelett ein eher unkonventioneller Heiler ist. “Du musst die enthüllten Informationen schnell lesen, für den Fall dass sie freikommt.”
Als sie sich konzentriert, fließt wirbelnder Nebel aus den Büchern und windet sich um die Gegenstände. Du blätterst schnell durch die Seiten, in dem Versuch, die neuen Textzeilen zu lesen, die wabernd wieder sichtbar werden. Du kannst nur ein paar Bruchstücke erfassen: “Sand der Zeitwüste” — “die Große Katastrophe” —“in vier Teile gespalten”— “für immer verdorben”— bevor Dir ein einzelner Name ins Auge springt: Zinnya.
Schlagartig befreien sich die Seiten aus Deinen Händen und zerfallen in der Luft in tausend Schnipsel, als mit einer Explosion eine heulende Kreatur erscheint und sich mit den Gegenständen verbindet.
“Das ist ein v'Schwinder!” ruft der Fröhliche Reaper und wirft einen Schutzzauber über euch. “Das sind alte Kreaturen der Verwirrung und Verschleierung. Wenn diese Tzina so einen kontrollieren kann, muss sie eine beängstigende Macht über Lebensmagie haben. Schnell, greift ihn an, bevor er wieder in die Bücher flüchtet!”
",
"questLostMasterclasser2Completion": "The a’Voidant succumbs at last, and you share the snippets that you read.
“None of those references sound familiar, even for someone as old as I,” the Joyful Reaper says. “Except… the Timewastes are a distant desert at the most hostile edge of Habitica. Portals often fail nearby, but swift mounts could get you there in no time. Lady Glaciate will be glad to assist.” Her voice grows amused. “Which means that the enamored Master of Rogues will undoubtedly tag along.” She hands you the glimmering mask. “Perhaps you should try to track the lingering magic in these items to its source. I’ll go harvest some sustenance for your journey.”",
- "questLostMasterclasser2Boss": "The a'Voidant",
- "questLostMasterclasser2DropEyewear": "Aether Mask (Eyewear)",
+ "questLostMasterclasser2Boss": "Der v'Schwinder",
+ "questLostMasterclasser2DropEyewear": "Äthermaske (Brille)",
"questLostMasterclasser3Text": "The Mystery of the Masterclassers, Part 3: City in the Sands",
"questLostMasterclasser3Notes": "As night unfurls over the scorching sands of the Timewastes, your guides @AnnDeLune, @Kiwibot, and @Katy133 lead you forward. Some bleached pillars poke from the shadowed dunes, and as you approach them, a strange skittering sound echoes across the seemingly-abandoned expanse.
“Invisible creatures!” says the April Fool, clearly covetous. “Oho! Just imagine the possibilities. This must be the work of a truly stealthy Rogue.”
“A Rogue who could be watching us,” says Lady Glaciate, dismounting and raising her spear. “If there’s a head-on attack, try not to irritate our opponent. I don’t want a repeat of the volcano incident.”
He beams at her. “But it was one of your most resplendent rescues.”
To your surprise, Lady Glaciate turns very pink at the compliment. She hastily stomps away to examine the ruins.
“Looks like the wreck of an ancient city,” says @AnnDeLune. “I wonder what…”
Before she can finish her sentence, a portal roars open in the sky. Wasn’t that magic supposed to be nearly impossible here? The hoofbeats of the invisible animals thunder as they flee in panic, and you steady yourself against the onslaught of shrieking skulls that flood the skies.",
"questLostMasterclasser3Completion": "The April Fool surprises the final skull with a spray of sand, and it blunders backwards into Lady Glaciate, who smashes it expertly. As you catch your breath and look up, you see a single flash of someone’s silhouette moving on the other side of the closing portal. Thinking quickly, you snatch up the amulet from the chest of previously-possessed items, and sure enough, it’s drawn towards the unseen person. Ignoring the shouts of alarm from Lady Glaciate and the April Fool, you leap through the portal just as it snaps shut, plummeting into an inky swath of nothingness.",
@@ -541,13 +541,21 @@
"questLostMasterclasser4RageTitle": "Siphoning Void",
"questLostMasterclasser4RageDescription": "Siphoning Void: This bar fills when you don't complete your Dailies. When it is full, Anti'zinnya will remove the party's Mana!",
"questLostMasterclasser4RageEffect": "`Anti'zinnya uses SIPHONING VOID!` In a twisted inversion of the Ethereal Surge spell, you feel your magic drain away into the darkness!",
- "questLostMasterclasser4DropBackAccessory": "Aether Cloak (Back Accessory)",
- "questLostMasterclasser4DropWeapon": "Aether Crystals (Two-Handed Weapon)",
- "questLostMasterclasser4DropMount": "Invisible Aether Mount",
+ "questLostMasterclasser4DropBackAccessory": "Äther Umhang (Rücken Accessoire)",
+ "questLostMasterclasser4DropWeapon": "Äther Kristalle (zweihändige Waffe)",
+ "questLostMasterclasser4DropMount": "Unsichtbares Äther-Reittier",
"questYarnText": "Ein verheddertes Knäuel",
- "questYarnNotes": "It’s such a pleasant day that you decide to take a walk through the Taskan Countryside. As you pass by its famous yarn shop, a piercing scream startles the birds into flight and scatters the butterflies into hiding. You run towards the source and see @Arcosine running up the path towards you. Behind him, a horrifying creature consisting of yarn, pins, and knitting needles is clicking and clacking ever closer.
The shopkeepers race after him, and @stefalupagus grabs your arm, out of breath. \"Looks like all of his unfinished projects\" gasp gasp \"have transformed the yarn from our Yarn Shop\" gasp gasp \"into a tangled mass of Yarnghetti!\"
\"Sometimes, life gets in the way and a project is abandoned, becoming ever more tangled and confused,\" says @khdarkwolf. \"The confusion can even spread to other projects, until there are so many half-finished works running around that no one gets anything done!\"
It’s time to make a choice: complete your stalled projects… or decide to unravel them for good. Either way, you'll have to increase your productivity quickly before the Dread Yarnghetti spreads confusion and discord to the rest of Habitica!",
- "questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
- "questYarnBoss": "The Dread Yarnghetti",
+ "questYarnNotes": "Es ist so ein wunderbarer Tag, dass Du Dich entscheidest, einen Spaziergang durch Aufgabistan zu machen. Als Du am berühmten Wollladen vorbei kommst, lässt ein durchdringender Schrei die Vögel aufflattern und die Schmetterlinge sich verstecken. Als Du in die Richtung des Schreis rennst, kommt Dir @Arcosine auf dem Pfad entgegen gerannt. Hinter ihm kommt eine furchterregende Kreatur aus Wollfäden, Steck- und Stricknadeln klickend und klackernd immer näher.
Der Ladenbesitzer rennt hinterher, und @stefalupagus packt Deinen Arm, völlig außer Atem. \"Sieht aus, als ob all seine unvollendeten Projekte\", keuch keuch \"die ganzen Knäuel aus unserem Wollladen\" keuch keuch \" in ein verheddertes Wollgräuel verwandelt haben!\"
\"Manchmal kommt das Leben dazwischen, und dann werden Projekte liegen gelassen, bis sie sich immer mehr verheddern und verwirren\", sagt @khdarkwolf. \"Die Verwirrung kann sich sogar auf andere Projekte ausbreiten, bis so viele halb angefangene Arbeiten rumliegen, dass niemand mehr etwas fertig bringt!\"
Es ist an der Zeit für eine Entscheidung: vollende Deine liegen gelassenen Projekte... oder ribbel sie endgültig auf. So oder so, Du musst schnell Deine Produktivität steigern, bevor das Grauenhafte Wollgräuel in ganz Habitica Verwirrung und Zwietracht verbreitet!",
+ "questYarnCompletion": "Mit einem kraftlosen Wischer eines Nadel-durchlöcherten Zipfels und einem schwachen Brüllen entwirrt sich das Grauenhafte Wollgräuel schließlich zu einem Haufen Wollknäuel.
\"Pass gut auf diese Wolle auf\", sagt der Ladenbesitzer @JinjooHat, und drückt Dir die Knäuel in die Hände. \"Wenn Du sie fütterst und richtig pflegst, wachsen sie zu neuen und aufregenden Projekten heran, die Dein Herz höher fliegen lassen könnten…\"",
+ "questYarnBoss": "Das Grauenhafte Wollgräuel",
"questYarnDropYarnEgg": "Wollknäuel (Ei)",
- "questYarnUnlockText": "Ermöglicht den Kauf von Wollknäueleiern auf dem Marktplatz"
+ "questYarnUnlockText": "Ermöglicht den Kauf von Wollknäueleiern auf dem Marktplatz",
+ "winterQuestsText": "\"Winter\" Quest-Paket",
+ "winterQuestsNotes": "Beinhaltet 'Wildernder Weihnachtswichtel', 'Finde das Jungtier' und 'Der Federvieh-Frost'. Verfügbar bis zum 31. Dezember.",
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/de/rebirth.json b/website/common/locales/de/rebirth.json
index 6d461fc6833..8c9b387a73f 100644
--- a/website/common/locales/de/rebirth.json
+++ b/website/common/locales/de/rebirth.json
@@ -21,7 +21,7 @@
"rebirthOrb": "Hat eine Sphäre der Wiedergeburt verwendet um noch einmal von vorne zu beginnen, nachdem Level <%= level %> erreicht wurde.",
"rebirthOrb100": "Hat eine Sphäre der Wiedergeburt verwendet um noch mal von vorne zu beginnen, nachdem Level 100 oder höher erreicht wurde.",
"rebirthOrbNoLevel": "Hat eine Sphäre der Wiedergeburt verwendet um noch mal von vorne zu beginnen.",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
+ "rebirthPop": "Beginne sofort von vorn mit einem Charakter auf Level 1, aber behalte Erfolge, Sammelgegenstände, Ausrüstung und Aufgaben mit Verlauf bei.",
"rebirthName": "Sphäre der Wiedergeburt",
"reborn": "Wiedergeboren, max. Level <%= reLevel %>",
"confirmReborn": "Bist Du sicher?",
diff --git a/website/common/locales/de/settings.json b/website/common/locales/de/settings.json
index e2ddee34185..ad9de2b2570 100644
--- a/website/common/locales/de/settings.json
+++ b/website/common/locales/de/settings.json
@@ -65,7 +65,7 @@
"resetText1": "WARNUNG! Es werden große Teile Deines Accounts zurückgesetzt. Wir raten dringend davon ab. Jedoch finden einige Spieler diese Funktion sinnvoll, um nach einem anfänglichen Testen der Seite neu beginnen zu können.",
"resetText2": "Du wirst all deine Level, Gold und Erfahrungspunkte verlieren. All deine Aufgaben (mit Ausnahme der von Herausforderungen) werden dauerhaft gelöscht und alle historischen Daten gehen verloren. Du wirst all deine Ausrüstung verlieren, die du aber zurückkaufen kannst, einschließlich aller Ausrüstungsgegenstände aus limitierter Ausgabe und Gegenständen, die du als Abonnent erworben hast (um klassenspezifische Gegenstände zurück zu kaufen, musst du der korrekten Klasse angehören). Du behältst deine jetzige Klasse, sowie Haus- und Reittiere. Zur Sicherheit solltest du stattdessen eine Kugel der Wiedergeburt verwenden, welche deine jetzigen Aufgaben und Ausrüstungsgegenstände schont.",
"deleteLocalAccountText": "Bist Du sicher? Dies wird Dein Konto für immer löschen und es kann nicht wiederhergestellt werden! Wenn Du Habitica wieder verwenden möchtest, musst Du ein neues Konto registrieren. Gesparte oder verbrauchte Edelsteine werden nicht ersetzt. Wenn Du absolut sicher bist, dann tippe Dein Passwort in die Text-Box unten ein.",
- "deleteSocialAccountText": "Bist Du sicher? Dies wird Dein Konto für immer löschen und es kann nicht wiederhergestellt werden! Wenn Du Habitica wieder verwenden möchtest, musst Du ein neues Konto registrieren. Gesparte oder verbrauchte Edelsteine werden nicht ersetzt. Wenn Du absolut sicher bist, dann tippe \"DELETE\" in die Text-Box unten ein.",
+ "deleteSocialAccountText": "Bist Du sicher? Dies wird Dein Konto für immer löschen und es kann nicht wiederhergestellt werden! Wenn Du Habitica wieder verwenden möchtest, musst Du ein neues Konto registrieren. Gesparte oder verbrauchte Edelsteine werden nicht ersetzt. Wenn Du absolut sicher bist, dann tippe \"<%= magicWord %>\" in die Text-Box unten ein.",
"API": "API",
"APIv3": "API v3",
"APIText": "Kopiere sie zur Anwendung in Applikationen von Drittanbietern. Sieh Dein API-Token aber als Passwort an und verbreite es nicht. Du wirst vielleicht gelegentlich nach Deiner Benutzer-ID gefragt, aber poste niemals Dein API-Token öffentlich wo es andere sehen können, auch nicht auf GitHub.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Verschenkte Abonnements",
"giftedSubscriptionInfo": "<%= name %> hat Dir ein <%= months %>-monatiges Abonnement geschenkt",
"giftedSubscriptionFull": "Hallo <%= username %>, <%= sender %> hat Dir <%= monthCount %> Monate Abonnement geschickt!",
+ "giftedSubscriptionWinterPromo": "Hallo <%= username %>, Du hast durch unsere Festtags-Promo <%= monthCount %>Abonnements-Monate geschenkt bekommen!",
"invitedParty": "In die Gruppe eingeladen",
"invitedGuild": "In die Gilde eingeladen",
"importantAnnouncements": "Erinnerungen zur Anmeldung, um Aufgaben zu komplettieren und Preise zu erhalten",
@@ -179,7 +180,7 @@
"consecutiveMonths": "Aufeinanderfolgende Monate:",
"gemCapExtra": "Zusätzliche Erhöhung der Edelsteingrenze:",
"mysticHourglasses": "Mystische Sanduhren:",
- "mysticHourglassesTooltip": "Mystic Hourglasses",
+ "mysticHourglassesTooltip": "Mystische Sanduhren",
"paypal": "PayPal",
"amazonPayments": "Amazon-Zahlungen",
"timezone": "Zeitzone",
diff --git a/website/common/locales/de/spells.json b/website/common/locales/de/spells.json
index 8efa9e10895..36d3cd0cc4d 100644
--- a/website/common/locales/de/spells.json
+++ b/website/common/locales/de/spells.json
@@ -9,7 +9,7 @@
"spellWizardFrostNotes": "Mit einem Zauberspruch gefrieren all Deine Strähnen und sie werden morgen nicht auf Null zurückgesetzt! ",
"spellWizardFrostAlreadyCast": "Du hast Deine Aufgaben heute schon verzaubert. Deine Strähnen sind eingefroren und es ist nicht nötig, diese Fähigkeit erneut zu benutzen.",
"spellWarriorSmashText": "Gewaltschlag",
- "spellWarriorSmashNotes": "You make a task more blue/less red and deal extra damage to Bosses! (Based on: STR)",
+ "spellWarriorSmashNotes": "Du machst eine Aufgabe blauer/weniger rot und fügst Bossen extra Schaden zu! (Basiert auf: STR)",
"spellWarriorDefensiveStanceText": "Verteidigungshaltung",
"spellWarriorDefensiveStanceNotes": "Du duckst Dich weg und erhältst einen Bonus auf Deine Ausdauer!\n(Basiert auf: CON ohne Boni)",
"spellWarriorValorousPresenceText": "Tapfere Präsenz",
diff --git a/website/common/locales/de/subscriber.json b/website/common/locales/de/subscriber.json
index 72ce3984989..3738c4f684c 100644
--- a/website/common/locales/de/subscriber.json
+++ b/website/common/locales/de/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Abonnement beenden",
"cancelSubInfoGoogle": "Bitte schaue in \"Konto\" > \"Abos\" im Google Play Store App nach, um Dein Abonnement zu kündigen oder um zu sehen, wann Dein Abonnement endet, wenn Du es bereits gekündigt hast. Du kannst dort aber nicht sehen, ob dein Abonnement ausgelaufen ist. ",
"cancelSubInfoApple": "Bitte befolge Apple's offizielle Hinweise um Dein Abonnement zu kündigen oder das Ablaufdatum Deines Abonnements zu sehen, wenn Du es bereits gekündigt hast. Diese Seite kann nicht anzeigen, ob Dein Abonnement gekündigt wurde.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Abonnement storniert",
"cancelingSubscription": "Abonnement stornieren",
"adminSub": "Administrator-Abonnements",
@@ -119,23 +120,24 @@
"mysterySet201604": "Blattkrieger-Set",
"mysterySet201605": "Blaskappellen-Bardenset",
"mysterySet201606": "Selkie-Roben-Set",
- "mysterySet201607": "Meeresboden Schurkenset",
+ "mysterySet201607": "Meeresboden-Schurke-Set",
"mysterySet201608": "Gewitter-Set",
"mysterySet201609": "Kuhkostüm-Set",
"mysterySet201610": "Spektralflammen-Set",
"mysterySet201611": "Füllhorn-Set",
"mysterySet201612": "Nussknacker-Set",
- "mysterySet201701": "Zeitanhalterset",
+ "mysterySet201701": "Zeitanhalter-Set",
"mysterySet201702": "Herzensstehler-Set",
"mysterySet201703": "Schimmer-Set",
"mysterySet201704": "Feen-Set",
- "mysterySet201705": "Gefiedertes Kämpfer-Set",
+ "mysterySet201705": "Gefiederter- Kämpfer-Set",
"mysterySet201706": "Piraten-Pionier Set",
"mysterySet201707": "Quallenzauberer-Set",
"mysterySet201708": "Lavakrieger-Set",
"mysterySet201709": "Zauberschüler-Set",
- "mysterySet201710": "Imperious Imp Set",
- "mysterySet201711": "Carpet Rider Set",
+ "mysterySet201710": "Gebieterischer-Gnom-Set",
+ "mysterySet201711": "Teppichreiter-Set",
+ "mysterySet201712": "Kerzenzauberer-Set",
"mysterySet301404": "Steampunk-Standard-Set",
"mysterySet301405": "Steampunk-Zubehör-Set",
"mysterySet301703": "Pfauen-Steampunk-Set",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Unbekannter Kartentyp.",
"invalidCoupon": "Ungültiger Gutscheincode.",
"couponUsed": "Gutschein wurde bereits eingelöst.",
- "noSudoAccess": "Du hast keine sudo-Rechte.",
"couponCodeRequired": "Gutscheincode erforderlich.",
"eventRequired": "\"req.params.event\" erforderlich.",
"countRequired": "\"req.query.count\" erforderlich.",
diff --git a/website/common/locales/de/tasks.json b/website/common/locales/de/tasks.json
index 8fd0f3af135..97740ca3ff1 100644
--- a/website/common/locales/de/tasks.json
+++ b/website/common/locales/de/tasks.json
@@ -2,7 +2,7 @@
"clearCompleted": "Erfüllte Aufgaben entfernen",
"lotOfToDos": "Hier siehst Du Deine 30 neuesten erledigten Aufgaben. Ältere erledigte Aufgaben kannst Du hier einsehen: Daten > Werkzeug zur Datenanzeige > Daten exportieren > Benutzerdaten.",
"deleteToDosExplanation": "Wenn Du auf diesen Knopf klickst, werden alle Deine erfüllten und archivierten To-Dos dauerhaft gelöscht, mit Außnahme von To-Dos aus aktiven Wettbewerben und Gruppenplänen. Exportiere sie vorher, wenn Du sie nicht verlieren möchtest.",
- "addMultipleTip": "Tip: To add multiple Tasks, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
+ "addMultipleTip": "Tipp: Um mehrere Aufgaben hinzuzufügen, trenne sie mit einem Zeilenumbruch (Umschalt + Enter) und drücke dann \"Enter\".",
"addsingle": "Einzelne hinzufügen",
"addATask": "<%= type %> hinzufügen",
"editATask": "Ein/e <%= type %> bearbeiten",
@@ -25,8 +25,8 @@
"checklist": "Checkliste",
"checklistText": "Zerlege eine Aufgabe in kleinere Teile! Checklisten erhöhen die Erfahrung und das Gold, das Du für eine Aufgabe bekommst, und verringern den Schaden, den eine tägliche Aufgabe verursacht.",
"newChecklistItem": "Neues Checklistenelement",
- "expandChecklist": "Expand Checklist",
- "collapseChecklist": "Collapse Checklist",
+ "expandChecklist": "Checkliste aufklappen",
+ "collapseChecklist": "Checkliste zuklappen",
"text": "Titel",
"extraNotes": "Zusatznotizen",
"notes": "Notizen",
@@ -115,11 +115,11 @@
"fortifyText": "Stärken setzt alle Deine Aufgaben außer Wettbewerbs-Aufgaben auf einen neutralen Status (gelb) zurück, so als ob Du sie gerade erstellt hättest, und füllt Deine Lebenspunkte wieder ganz auf. Das ist toll wenn all die roten Aufgaben Dir das Leben zu schwer machen, oder all die blauen Aufgaben das Spiel zu einfach erscheinen lassen. Wenn ein Neuanfang gerade den größten Motivationsschub darstellt, gib ein paar Edelsteine aus und gönn' Dir eine Atempause!",
"confirmFortify": "Bist Du sicher?",
"fortifyComplete": "Verstärkung abgeschlossen!",
- "sureDelete": "Are you sure you want to delete this task?",
+ "sureDelete": "Möchtest Du diese Aufgabe wirklich löschen?",
"sureDeleteCompletedTodos": "Bist Du sicher, dass Du Deine abgeschlossenen To-Dos löschen willst?",
"streakCoins": "Strähnenbonus!",
- "taskToTop": "To top",
- "taskToBottom": "To bottom",
+ "taskToTop": "Nach oben",
+ "taskToBottom": "Nach unten",
"emptyTask": "Gib der Aufgabe zunächst einen Titel.",
"dailiesRestingInInn": "Du ruhst Dich im Gasthaus aus! Deine täglichen Aufgaben werden Dir heute Nacht keinen Schaden zufügen, sie werden sich aber dennoch täglich aktualisieren. Falls Du Dich in einer Quest befindest, wirst Du keinen Schaden austeilen/Gegenstände finden bis Du das Gasthaus wieder verlässt, allerdings kannst Du durch einen Boss verletzt werden, wenn Deine Gruppe tägliche Aufgaben nicht erledigt.",
"habitHelp1": "Gute Gewohnheiten sind Aktivitäten, die Du oft machen sollst. Sie bringen Gold und Erfahrung jedes mal wenn Du auf <%= plusIcon %> klickst.",
@@ -169,7 +169,7 @@
"taskApprovalHasBeenRequested": "Die Zustimmung wurde angefragt.",
"approvals": "Zustimmungen",
"approvalRequired": "Zustimmung benötigt",
- "repeatZero": "Die tägliche Aufgabe ist nie fällig",
+ "repeatZero": "Die Tagesaufgabe ist nie fällig",
"repeatType": "Wiederholungstyp",
"repeatTypeHelpTitle": "Was für eine Art der Wiederholung ist dies?",
"repeatTypeHelp": "Wähle \"täglich\" aus, wenn Du möchtest, dass sich diese Aufgabe jeden Tag, oder jeden dritten Tag, wiederholt. Wähle \"wöchentlich\" aus, wenn Du möchtest, dass sich die Aufgabe an bestimmten Tagen der Woche wiederholt. Wenn Du \"monatlich\" oder \"jährlich\" auswählst, kannst Du das Startdatum auswählen um zu beeinflussen an welchem Tag im Monat, oder welchem Tag des Jahres die Aufgabe fällig sein wird.",
@@ -196,11 +196,12 @@
"resets": "Wird zurückgesetzt",
"summaryStart": "Wird <%= frequency %> alle <%= everyX %> <%= frequencyPlural %> fällig",
"nextDue": "Nächste Fälligkeitstermine",
- "checkOffYesterDailies": "Hake die Aufgaben ab, die Du gestern erledigt hast:",
- "yesterDailiesTitle": "Du hast diese täglichen Aufgaben gestern nicht abgehakt! Willst Du einige von ihnen jetzt abhaken?",
+ "checkOffYesterDailies": "Hake die Tagesaufgaben ab, die Du gestern erledigt hast:",
+ "yesterDailiesTitle": "Du hast diese Tagesaufgaben gestern nicht abgehakt! Willst Du einige von ihnen jetzt abhaken?",
"yesterDailiesCallToAction": "Starte meinen neuen Tag!",
- "yesterDailiesOptionTitle": "Bestätige, dass diese tägliche Aufgabe nicht erledigt wurde, bevor Schaden entsteht",
- "yesterDailiesDescription": "Falls diese Einstellung ausgewählt wird, wird Habitica Dich fragen, ob Du die tägliche Aufgabe absichtlich nicht abgehakt hast, bevor der Schaden an deinem Avatar berechnet und angewandt wird. Dies kann Dich vor unbeabsichtigtem Schaden schützen.",
+ "yesterDailiesOptionTitle": "Bestätigen, dass diese Tagesaufgabe nicht erledigt wurde, bevor Schaden durchgeführt wird.",
+ "yesterDailiesDescription": "Falls diese Einstellung ausgewählt wird, wird Habitica Dich fragen, ob Du die Tagesaufgabe absichtlich nicht abgehakt hast, bevor der Schaden an deinem Avatar berechnet und angewandt wird. Dies kann Dich vor unbeabsichtigtem Schaden schützen.",
"repeatDayError": "Bitte achte darauf, dass mindestens ein Wochentag ausgewählt ist.",
- "searchTasks": "Durchsuche die Überschriften und Beschreibungen..."
+ "searchTasks": "Durchsuche die Überschriften und Beschreibungen...",
+ "sessionOutdated": "Deine Sitzung ist abgelaufen. Bitte lade oder synchronisiere die Seite neu."
}
\ No newline at end of file
diff --git a/website/common/locales/en/backgrounds.json b/website/common/locales/en/backgrounds.json
index 4091da4ef0f..093746815ef 100644
--- a/website/common/locales/en/backgrounds.json
+++ b/website/common/locales/en/backgrounds.json
@@ -353,5 +353,21 @@
"backgroundMidnightCastleText": "Midnight Castle",
"backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Fly through a Tornado."
+ "backgroundTornadoNotes": "Fly through a Tornado.",
+
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
diff --git a/website/common/locales/en/challenge.json b/website/common/locales/en/challenge.json
index d1f36189026..93c688b9e16 100644
--- a/website/common/locales/en/challenge.json
+++ b/website/common/locales/en/challenge.json
@@ -103,8 +103,8 @@
"addTask": "Add Task",
"editChallenge": "Edit Challenge",
"challengeDescription": "Challenge Description",
- "selectChallengeWinnersDescription": "Select winners from the Challenge participants",
- "awardWinners": "Award Winners",
+ "selectChallengeWinnersDescription": "Select a winner from the Challenge participants",
+ "awardWinners": "Award Winner",
"doYouWantedToDeleteChallenge": "Do you want to delete this Challenge?",
"deleteChallenge": "Delete Challenge",
"challengeNamePlaceholder": "What is your Challenge name?",
@@ -130,5 +130,6 @@
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
"selectMember": "Select Member",
- "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?"
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
diff --git a/website/common/locales/en/character.json b/website/common/locales/en/character.json
index 7760890b7f5..51a7013b300 100644
--- a/website/common/locales/en/character.json
+++ b/website/common/locales/en/character.json
@@ -60,8 +60,8 @@
"winteryColors": "Wintery Colors",
"equipment": "Equipment",
"equipmentBonus": "Equipment",
- "equipmentBonusText": "Attribute bonuses provided by your equipped battle gear. See the Equipment tab under Inventory to select your battle gear.",
- "classBonusText": "Your class (Warrior, if you haven't unlocked or selected another class) uses its own equipment more effectively than gear from other classes. Equipped gear from your current class gets a 50% boost to the attribute bonus it grants.",
+ "equipmentBonusText": "Stat bonuses provided by your equipped battle gear. See the Equipment tab under Inventory to select your battle gear.",
+ "classBonusText": "Your class (Warrior, if you haven't unlocked or selected another class) uses its own equipment more effectively than gear from other classes. Equipped gear from your current class gets a 50% boost to the Stat bonus it grants.",
"classEquipBonus": "Class Bonus",
"battleGear": "Battle Gear",
"battleGearText": "This is the gear you wear into battle; it affects numbers when interacting with your tasks.",
@@ -69,9 +69,9 @@
"costume": "Costume",
"costumeText": "If you prefer the look of other gear to what you have equipped, check the \"Use Costume\" box to visually don a costume while wearing your battle gear underneath.",
"useCostume": "Use Costume",
- "useCostumeInfo1": "Click \"Use Costume\" to equip items to your avatar without affecting the stats from your Battle Gear! This means that you can equip for the best stats on the left, and dress up your avatar with your equipment on the right.",
- "useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.
Got more questions? Check out the Costume page on the wiki. Find the perfect ensemble? Show it off in the Costume Carnival guild or brag in the Tavern!",
- "costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
+ "useCostumeInfo1": "Click \"Use Costume\" to equip items to your avatar without affecting the Stats from your Battle Gear! This means that you can equip for the best Stats on the left, and dress up your avatar with your equipment on the right.",
+ "useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your Stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.
Got more questions? Check out the Costume page on the wiki. Find the perfect ensemble? Show it off in the Costume Carnival guild or brag in the Tavern!",
+ "costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the Stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
"autoEquipPopoverText": "Select this option to automatically equip gear as soon as you purchase it.",
"costumeDisabled": "You have disabled your costume.",
"gearAchievement": "You have earned the \"Ultimate Gear\" Achievement for upgrading to the maximum gear set for a class! You have attained the following complete sets:",
@@ -91,18 +91,18 @@
"xp": "XP",
"health": "Health",
"allocateStr": "Points allocated to Strength:",
- "allocateStrPop": "Add a point to Strength",
+ "allocateStrPop": "Add a Point to Strength",
"allocateCon": "Points allocated to Constitution:",
- "allocateConPop": "Add a point to Constitution",
+ "allocateConPop": "Add a Point to Constitution",
"allocatePer": "Points allocated to Perception:",
- "allocatePerPop": "Add a point to Perception",
+ "allocatePerPop": "Add a Point to Perception",
"allocateInt": "Points allocated to Intelligence:",
- "allocateIntPop": "Add a point to Intelligence",
- "noMoreAllocate": "Now that you've hit level 100, you won't gain any more Attribute Points. You can continue leveling up, or start a new adventure at level 1 by using the Orb of Rebirth, now available for free in the Market.",
+ "allocateIntPop": "Add a Point to Intelligence",
+ "noMoreAllocate": "Now that you've hit level 100, you won't gain any more Stat Points. You can continue leveling up, or start a new adventure at level 1 by using the Orb of Rebirth, now available for free in the Market.",
"stats": "Stats",
"achievs": "Achievements",
"strength": "Strength",
- "strengthText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
+ "strText": "Strength increases the chance of random \"critical hits\" and the Gold, Experience, and drop chance boost from them. It also helps deal damage to boss monsters.",
"constitution": "Constitution",
"conText": "Constitution reduces the damage you take from negative Habits and missed Dailies.",
"perception": "Perception",
@@ -110,12 +110,12 @@
"intelligence": "Intelligence",
"intText": "Intelligence increases how much Experience you earn, and once you've unlocked Classes, determines your maximum Mana available for class abilities.",
"levelBonus": "Level Bonus",
- "levelBonusText": "Each attribute gets a bonus equal to half of (your Level minus 1).",
+ "levelBonusText": "Each Stat gets a bonus equal to half of (your Level minus 1).",
"allocatedPoints": "Allocated Points",
- "allocatedPointsText": "Attribute points you've earned and assigned. Assign points using the Character Build column.",
+ "allocatedPointsText": "Stat Points you've earned and assigned. Assign Points using the Character Build column.",
"allocated": "Allocated",
"buffs": "Buffs",
- "buffsText": "Temporary attribute bonuses from abilities and achievements. These wear off at the end of your day. The abilities you've unlocked appear in the Rewards list of your Tasks page.",
+ "buffsText": "Temporary Stat bonuses from abilities and achievements. These wear off at the end of your day. The abilities you've unlocked appear in the Rewards list of your Tasks page.",
"characterBuild": "Character Build",
"class": "Class",
"experience": "Experience",
@@ -125,23 +125,23 @@
"mage": "Mage",
"wizard": "Mage",
"mystery": "Mystery",
- "changeClass": "Change Class, Refund Attribute Points",
+ "changeClass": "Change Class, Refund Stat Points",
"lvl10ChangeClass": "To change class you must be at least level 10.",
"changeClassConfirmCost": "Are you sure you want to change your class for 3 Gems?",
"invalidClass":"Invalid class. Please specify 'warrior', 'rogue', 'wizard', or 'healer'.",
- "levelPopover": "Each level earns you one point to assign to an attribute of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
- "unallocated": "Unallocated Attribute Points",
- "haveUnallocated": "You have <%= points %> unallocated Attribute Point(s)",
+ "levelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options.",
+ "unallocated": "Unallocated Stat Points",
+ "haveUnallocated": "You have <%= points %> unallocated Stat Point(s)",
"autoAllocation": "Automatic Allocation",
- "autoAllocationPop": "Places points into attributes according to your preferences, when you level up.",
- "evenAllocation": "Distribute attribute points evenly",
- "evenAllocationPop": "Assigns the same number of points to each attribute.",
- "classAllocation": "Distribute points based on Class",
- "classAllocationPop": "Assigns more points to the attributes important to your Class.",
- "taskAllocation": "Distribute points based on task activity",
- "taskAllocationPop": "Assigns points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
+ "autoAllocationPop": "Places Points into Stats according to your preferences, when you level up.",
+ "evenAllocation": "Distribute Stat Points evenly",
+ "evenAllocationPop": "Assigns the same number of Points to each Stat.",
+ "classAllocation": "Distribute Points based on Class",
+ "classAllocationPop": "Assigns more Points to the Stats important to your Class.",
+ "taskAllocation": "Distribute Points based on task activity",
+ "taskAllocationPop": "Assigns Points based on the Strength, Intelligence, Constitution, and Perception categories associated with the tasks you complete.",
"distributePoints": "Distribute Unallocated Points",
- "distributePointsPop": "Assigns all unallocated attribute points according to the selected allocation scheme.",
+ "distributePointsPop": "Assigns all unallocated Stat Points according to the selected allocation scheme.",
"warriorText": "Warriors score more and better \"critical hits\", which randomly give bonus Gold, Experience, and drop chance for scoring a task. They also deal heavy damage to boss monsters. Play a Warrior if you find motivation from unpredictable jackpot-style rewards, or want to dish out the hurt in boss Quests!",
"wizardText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
"mageText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
@@ -161,8 +161,9 @@
"respawn": "Respawn!",
"youDied": "You Died!",
"dieText": "You've lost a Level, all your Gold, and a random piece of Equipment. Arise, Habiteer, and try again! Curb those negative Habits, be vigilant in completion of Dailies, and hold death at arm's length with a Health Potion if you falter!",
- "sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
+ "sureReset": "Are you sure? This will reset your character's class and allocated Stat Points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "Purchase for <%= cost %> Gems?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Not enough mana.",
"invalidTarget": "You can't cast a skill on that.",
"youCast": "You cast <%= spell %>.",
@@ -196,11 +197,11 @@
"con": "CON",
"per": "PER",
"int": "INT",
- "showQuickAllocation": "Show stat allocation",
- "hideQuickAllocation": "Hide stat allocation",
- "quickAllocationLevelPopover": "Each level earns you one point to assign to an attribute of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User Icon > Stats.",
- "invalidAttribute": "\"<%= attr %>\" is not a valid attribute.",
- "notEnoughAttrPoints": "You don't have enough attribute points.",
+ "showQuickAllocation": "Show Stat Allocation",
+ "hideQuickAllocation": "Hide Stat Allocation",
+ "quickAllocationLevelPopover": "Each level earns you one Point to assign to a Stat of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User Icon > Stats.",
+ "invalidAttribute": "\"<%= attr %>\" is not a valid Stat.",
+ "notEnoughAttrPoints": "You don't have enough Stat Points.",
"style": "Style",
"facialhair": "Facial",
"photo": "Photo",
diff --git a/website/common/locales/en/content.json b/website/common/locales/en/content.json
index 21f4b81c07c..5634b018425 100644
--- a/website/common/locales/en/content.json
+++ b/website/common/locales/en/content.json
@@ -223,6 +223,10 @@
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "woolen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
+
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
@@ -247,6 +251,7 @@
"hatchingPotionCupid": "Cupid",
"hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs.",
@@ -286,6 +291,7 @@
"foodSaddleText": "Saddle",
"foodSaddleNotes": "Instantly raises one of your pets into a mount.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Feed this to a pet and it may grow into a sturdy steed."
}
diff --git a/website/common/locales/en/contrib.json b/website/common/locales/en/contrib.json
index 56647248fdc..c0df17906cb 100644
--- a/website/common/locales/en/contrib.json
+++ b/website/common/locales/en/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, you awesome person! You're now a tier <%= level %> contributor for helping Habitica. See",
"contribLink": "what prizes you've earned for your contribution!",
"contribName": "Contributor",
- "contribText": "Has contributed to Habitica (code, design, pixel art, legal advice, docs, etc). Want this badge? Read more.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Read More",
"kickstartName": "Kickstarter Backer - $<%= key %> Tier",
"kickstartText": "Backed the Kickstarter Project",
diff --git a/website/common/locales/en/faq.json b/website/common/locales/en/faq.json
index 59586d5ee3b..f3b56741440 100644
--- a/website/common/locales/en/faq.json
+++ b/website/common/locales/en/faq.json
@@ -41,7 +41,7 @@
"androidFaqAnswer7": "At level 10, you can choose to become a Warrior, Mage, Rogue, or Healer. (All players start as Warriors by default.) Each Class has different equipment options, different Skills that they can cast after level 11, and different advantages. Warriors can easily damage Bosses, withstand more damage from their tasks, and help make their Party tougher. Mages can also easily damage Bosses, as well as level up quickly and restore Mana for their party. Rogues earn the most gold and find the most item drops, and they can help their Party do the same. Finally, Healers can heal themselves and their Party members.\n\n If you don't want to choose a Class immediately -- for example, if you are still working to buy all the gear of your current class -- you can click “Opt Out” and choose later under Menu > Choose Class.",
"webFaqAnswer7": "At level 10, you can choose to become a Warrior, Mage, Rogue, or Healer. (All players start as Warriors by default.) Each Class has different equipment options, different Skills that they can cast after level 11, and different advantages. Warriors can easily damage Bosses, withstand more damage from their tasks, and help make their party tougher. Mages can also easily damage Bosses, as well as level up quickly and restore Mana for their party. Rogues earn the most Gold and find the most item drops, and they can help their party do the same. Finally, Healers can heal themselves and their party members. If you don't want to choose a Class immediately -- for example, if you are still working to buy all the gear of your current class -- you can click \"Opt Out\" and re-enable it later under Settings.",
- "faqQuestion8": "What is the blue stat bar that appears in the Header after level 10?",
+ "faqQuestion8": "What is the blue Stat bar that appears in the Header after level 10?",
"iosFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 under Menu > Use Skills. Unlike your health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete Good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You'll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.",
"androidFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 under Menu > Skills. Unlike your health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete Good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You'll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.",
"webFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 in the action bar at the bottom of the screen. Unlike your Health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You'll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.",
diff --git a/website/common/locales/en/front.json b/website/common/locales/en/front.json
index e5a694e072f..b01e184e36a 100644
--- a/website/common/locales/en/front.json
+++ b/website/common/locales/en/front.json
@@ -30,6 +30,7 @@
"companyAbout": "How It Works",
"companyBlog": "Blog",
"devBlog": "Developer Blog",
+ "companyContribute": "Contribute",
"companyDonate": "Donate",
"companyPrivacy": "Privacy",
"companyTerms": "Terms",
@@ -85,7 +86,7 @@
"landingend": "Not convinced yet?",
"landingend2": "See a more detailed list of [our features](/static/overview). Are you looking for a more private approach? Check out our [administrative packages](/static/plans), which are perfect for families, teachers, support groups, and businesses.",
"landingp1": "The problem with most productivity apps on the market is that they provide no incentive to continue using them. Habitica fixes this by making habit building fun! By rewarding you for your successes and penalizing you for slip-ups, Habitica provides external motivation for completing your day-to-day activities.",
- "landingp2": "Whenever you reinforce a positive habit, complete a daily task, or take care of an old to-do, Habitica immediately rewards you with experience points and gold. As you gain experience, you can level up, increasing your stats and unlocking more features, like classes and pets. Gold can be spent on in-game items that change your experience or personalized rewards you've created for motivation. When even the smallest successes provide you with an immediate reward, you're less likely to procrastinate.",
+ "landingp2": "Whenever you reinforce a positive habit, complete a daily task, or take care of an old to-do, Habitica immediately rewards you with Experience points and Gold. As you gain experience, you can level up, increasing your Stats and unlocking more features, like classes and pets. Gold can be spent on in-game items that change your experience or personalized rewards you've created for motivation. When even the smallest successes provide you with an immediate reward, you're less likely to procrastinate.",
"landingp2header": "Instant Gratification",
"landingp3": "Whenever you indulge in a bad habit or fail to complete one of your daily tasks, you lose health. If your health drops too low, you lose some of the progress you've made. By providing immediate consequences, Habitica can help break bad habits and procrastination cycles before they cause real-world problems.",
"landingp3header": "Consequences",
@@ -140,6 +141,23 @@
"presskit": "Press Kit",
"presskitDownload": "Download all images:",
"presskitText": "Thanks for your interest in Habitica! The following images can be used for articles or videos about Habitica. For more information, please contact Siena Leslie at <%= pressEnquiryEmail %>.",
+ "pkQuestion1": "What inspired Habitica? How did it start?",
+ "pkAnswer1": "If you’ve ever invested time in leveling up a character in a game, it’s hard not to wonder how great your life would be if you put all of that effort into improving your real-life self instead of your avatar. We starting building Habitica to address that question.
Habitica officially launched with a Kickstarter in 2013, and the idea really took off. Since then, it’s grown into a huge project, supported by our awesome open-source volunteers and our generous users.",
+ "pkQuestion2": "Why does Habitica work?",
+ "pkAnswer2": "Forming a new habit is hard because people really need that obvious, instant reward. For example, it’s tough to start flossing, because even though our dentist tells us that it's healthier in the long run, in the immediate moment it just makes your gums hurt.
Habitica's gamification adds a sense of instant gratification to everyday objectives by rewarding a tough task with experience, gold… and maybe even a random prize, like a dragon egg! This helps keep people motivated even when the task itself doesn't have an intrinsic reward, and we've seen people turn their lives around as a result. You can check out success stories here: https://habitversary.tumblr.com",
+ "pkQuestion3": "Why did you add social features?",
+ "pkAnswer3": "Social pressure is a huge motivating factor for a lot of people, so we knew that we wanted to have a strong community that would hold each other accountable for their goals and cheer for their successes. Luckily, one of the things that multiplayer video games do best is foster a sense of community among their users! Habitica’s community structure borrows from these types of games; you can form a small Party of close friends, but you can also join a larger, shared-interest groups known as a Guild. Although some users choose to play solo, most decide to form a support network that encourages social accountability through features such as Quests, where Party members pool their productivity to battle monsters together.",
+ "pkQuestion4": "Why does skipping tasks remove your avatar’s health?",
+ "pkAnswer4": "If you skip one of your daily goals, your avatar will lose health the following day. This serves as an important motivating factor to encourage people to follow through with their goals because people really hate hurting their little avatar! Plus, the social accountability is critical for a lot of people: if you’re fighting a monster with your friends, skipping your tasks hurts their avatars, too.",
+ "pkQuestion5": "What distinguishes Habitica from other gamification programs?",
+ "pkAnswer5": "One of the ways that Habitica has been most successful at using gamification is that we've put a lot of effort into thinking about the game aspects to ensure that they are actually fun. We've also included many social components, because we feel that some of the most motivating games let you play with friends, and because research has shown that it's easier to form habits when you have accountability to other people.",
+ "pkQuestion6": "Who is the typical user of Habitica?",
+ "pkAnswer6": "Lots of different people use Habitica! More than half of our users are ages 18 to 34, but we have grandparents using the site with their young grandkids and every age in-between. Often families will join a party and battle monsters together.
Many of our users have a background in games, but surprisingly, when we ran a survey a while back, 40% of our users identified as non-gamers! So it looks like our method can be effective for anyone who wants productivity and wellness to feel more fun.",
+ "pkQuestion7": "Why does Habitica use pixel art?",
+ "pkAnswer7": "Habitica uses pixel art for several reasons. In addition to the fun nostalgia factor, pixel art is very approachable to our volunteer artists who want to chip in. It's much easier to keep our pixel art consistent even when lots of different artists contribute, and it lets us quickly generate a ton of new content!",
+ "pkQuestion8": "How has Habitica affected people's real lives?",
+ "pkAnswer8": "You can find lots of testimonials for how Habitica has helped people here: https://habitversary.tumblr.com",
+ "pkMoreQuestions": "Do you have a question that’s not on this list? Send an email to leslie@habitica.com!",
"pkVideo": "Video",
"pkPromo": "Promos",
"pkLogo": "Logos",
@@ -252,7 +270,7 @@
"missingNewPassword": "Missing new password.",
"invalidEmailDomain": "You cannot register with emails with the following domains: <%= domains %>",
"wrongPassword": "Wrong password.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Invalid email address.",
"emailTaken": "Email address is already used in an account.",
"newEmailRequired": "Missing new email address.",
diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json
index 456bfd15467..a4b35b62db9 100644
--- a/website/common/locales/en/gear.json
+++ b/website/common/locales/en/gear.json
@@ -3,7 +3,7 @@
"equipmentType" : "Type",
"klass": "Class",
"groupBy": "Group By <%= type %>",
- "classBonus": "(This item matches your class, so it gets an additional 1.5 stat multiplier.)",
+ "classBonus": "(This item matches your class, so it gets an additional 1.5 Stat multiplier.)",
"classArmor": "Class Armor",
"featuredset": "Featured Set <%= name %>",
"mysterySets": "Mystery Sets",
@@ -89,7 +89,7 @@
"weaponSpecial0Text": "Dark Souls Blade",
"weaponSpecial0Notes": "Feasts upon foes' life essence to power its wicked strokes. Increases Strength by <%= str %>.",
"weaponSpecial1Text": "Crystal Blade",
- "weaponSpecial1Notes": "Its glittering facets tell the tale of a hero. Increases all attributes by <%= attrs %>.",
+ "weaponSpecial1Notes": "Its glittering facets tell the tale of a hero. Increases all Stats by <%= attrs %>.",
"weaponSpecial2Text": "Stephen Weber's Shaft of the Dragon",
"weaponSpecial2Notes": "Feel the potency of the dragon surge from within! Increases Strength and Perception by <%= attrs %> each.",
"weaponSpecial3Text": "Mustaine's Milestone Mashing Morning Star",
@@ -97,7 +97,7 @@
"weaponSpecialCriticalText": "Critical Hammer of Bug-Crushing",
"weaponSpecialCriticalNotes": "This champion slew a critical GitHub foe where many warriors fell. Fashioned from the bones of Bug, this hammer deals a mighty critical hit. Increases Strength and Perception by <%= attrs %> each.",
"weaponSpecialTakeThisText": "Take This Sword",
- "weaponSpecialTakeThisNotes": "This sword was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "weaponSpecialTakeThisNotes": "This sword was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"weaponSpecialTridentOfCrashingTidesText": "Trident of Crashing Tides",
"weaponSpecialTridentOfCrashingTidesNotes": "Gives you the ability to command fish, and also deliver some mighty stabs to your tasks. Increases Intelligence by <%= int %>.",
"weaponSpecialTaskwoodsLanternText": "Taskwoods Lantern",
@@ -121,7 +121,7 @@
"weaponSpecialTachiText": "Tachi",
"weaponSpecialTachiNotes": "This light and curved sword will shred your tasks to ribbons! Increases Strength by <%= str %>.",
"weaponSpecialAetherCrystalsText": "Aether Crystals",
- "weaponSpecialAetherCrystalsNotes": "These bracers and crystals once belonged to the Lost Masterclasser herself. Increases all attributes by <%= attrs %>.",
+ "weaponSpecialAetherCrystalsNotes": "These bracers and crystals once belonged to the Lost Masterclasser herself. Increases all Stats by <%= attrs %>.",
"weaponSpecialYetiText": "Yeti-Tamer Spear",
"weaponSpecialYetiNotes": "This spear allows its user to command any yeti. Increases Strength by <%= str %>. Limited Edition 2013-2014 Winter Gear.",
@@ -267,6 +267,15 @@
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+
"weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -291,7 +300,7 @@
"weaponArmoireIronCrookText": "Iron Crook",
"weaponArmoireIronCrookNotes": "Fiercely hammered from iron, this iron crook is good at herding sheep. Increases Perception and Strength by <%= attrs %> each. Enchanted Armoire: Horned Iron Set (Item 3 of 3).",
"weaponArmoireGoldWingStaffText": "Gold Wing Staff",
- "weaponArmoireGoldWingStaffNotes": "The wings on this staff constantly flutter and twist. Increases all attributes by <%= attrs %> each. Enchanted Armoire: Independent Item.",
+ "weaponArmoireGoldWingStaffNotes": "The wings on this staff constantly flutter and twist. Increases all Stats by <%= attrs %> each. Enchanted Armoire: Independent Item.",
"weaponArmoireBatWandText": "Bat Wand",
"weaponArmoireBatWandNotes": "This wand can turn any task into a bat! Wave it about and watch them fly away. Increases Intelligence by <%= int %> and Perception by <%= per %>. Enchanted Armoire: Independent Item.",
"weaponArmoireShepherdsCrookText": "Shepherd's Crook",
@@ -336,6 +345,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armor",
"armorCapitalized": "Armor",
@@ -390,11 +403,11 @@
"armorSpecial0Text": "Shade Armor",
"armorSpecial0Notes": "Screams when struck, for it feels pain in its wearer's place. Increases Constitution by <%= con %>.",
"armorSpecial1Text": "Crystal Armor",
- "armorSpecial1Notes": "Its tireless power inures the wearer to mundane discomfort. Increases all attributes by <%= attrs %>.",
+ "armorSpecial1Notes": "Its tireless power inures the wearer to mundane discomfort. Increases all Stats by <%= attrs %>.",
"armorSpecial2Text": "Jean Chalard's Noble Tunic",
"armorSpecial2Notes": "Makes you extra fluffy! Increases Constitution and Intelligence by <%= attrs %> each.",
"armorSpecialTakeThisText": "Take This Armor",
- "armorSpecialTakeThisNotes": "This armor was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "armorSpecialTakeThisNotes": "This armor was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"armorSpecialFinnedOceanicArmorText": "Finned Oceanic Armor",
"armorSpecialFinnedOceanicArmorNotes": "Although delicate, this armor makes your skin as harmful to the touch as a fire coral. Increases Strength by <%= str %>.",
"armorSpecialPyromancersRobesText": "Pyromancer's Robes",
@@ -577,6 +590,15 @@
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor",
@@ -637,6 +659,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -714,6 +738,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -768,11 +796,11 @@
"headSpecial0Text": "Shade Helm",
"headSpecial0Notes": "Blood and ash, lava and obsidian give this helm its imagery and power. Increases Intelligence by <%= int %>.",
"headSpecial1Text": "Crystal Helm",
- "headSpecial1Notes": "The favored crown of those who lead by example. Increases all attributes by <%= attrs %>.",
+ "headSpecial1Notes": "The favored crown of those who lead by example. Increases all Stats by <%= attrs %>.",
"headSpecial2Text": "Nameless Helm",
"headSpecial2Notes": "A testament to those who gave of themselves while asking nothing in return. Increases Intelligence and Strength by <%= attrs %> each.",
"headSpecialTakeThisText": "Take This Helm",
- "headSpecialTakeThisNotes": "This helm was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "headSpecialTakeThisNotes": "This helm was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"headSpecialFireCoralCircletText": "Fire Coral Circlet",
"headSpecialFireCoralCircletNotes": "This circlet, designed by Habitica's greatest alchemists, allows you to breathe water and dive for treasure! Increases Perception by <%= per %>.",
"headSpecialPyromancersTurbanText": "Pyromancer's Turban",
@@ -954,6 +982,17 @@
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -1017,6 +1056,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
"headMystery301405Text": "Basic Top Hat",
@@ -1102,6 +1143,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
@@ -1134,9 +1179,9 @@
"shieldSpecial0Text": "Tormented Skull",
"shieldSpecial0Notes": "Sees beyond the veil of death, and displays what it finds there for enemies to fear. Increases Perception by <%= per %>.",
"shieldSpecial1Text": "Crystal Shield",
- "shieldSpecial1Notes": "Shatters arrows and deflects the words of naysayers. Increases all attributes by <%= attrs %>.",
+ "shieldSpecial1Notes": "Shatters arrows and deflects the words of naysayers. Increases all Stats by <%= attrs %>.",
"shieldSpecialTakeThisText": "Take This Shield",
- "shieldSpecialTakeThisNotes": "This shield was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "shieldSpecialTakeThisNotes": "This shield was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"shieldSpecialGoldenknightText": "Mustaine's Milestone Mashing Morning Star",
"shieldSpecialGoldenknightNotes": "Meetings, monsters, malaise: managed! Mash! Increases Constitution and Perception by <%= attrs %> each.",
"shieldSpecialMoonpearlShieldText": "Moonpearl Shield",
@@ -1264,6 +1309,13 @@
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1351,7 +1403,7 @@
"backSpecialWonderconBlackText": "Sneaky Cape",
"backSpecialWonderconBlackNotes": "Spun of shadows and whispers. Confers no benefit. Special Edition Convention Item.",
"backSpecialTakeThisText": "Take This Wings",
- "backSpecialTakeThisNotes": "These wings were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "backSpecialTakeThisNotes": "These wings were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"backSpecialSnowdriftVeilText": "Snowdrift Veil",
"backSpecialSnowdriftVeilNotes": "This translucent veil makes it appear you are surrounded by an elegant flurry of snow! Confers no benefit.",
"backSpecialAetherCloakText": "Aether Cloak",
@@ -1371,7 +1423,7 @@
"bodySpecialWonderconBlackText": "Ebony Collar",
"bodySpecialWonderconBlackNotes": "An attractive ebony collar! Confers no benefit. Special Edition Convention Item.",
"bodySpecialTakeThisText": "Take This Pauldrons",
- "bodySpecialTakeThisNotes": "These pauldrons were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "bodySpecialTakeThisNotes": "These pauldrons were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.",
"bodySpecialAetherAmuletText": "Aether Amulet",
"bodySpecialAetherAmuletNotes": "This amulet has a mysterious history. Increases Constitution and Strength by <%= attrs %> each.",
@@ -1396,6 +1448,9 @@
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
+
"headAccessory": "head accessory",
"headAccessoryCapitalized": "Head Accessory",
"accessories": "Accessories",
@@ -1471,7 +1526,7 @@
"headAccessoryMystery301405Notes": "\"Goggles are for your eyes,\" they said. \"Nobody wants goggles that you can only wear on your head,\" they said. Hah! You sure showed them! Confers no benefit. August 3015 Subscriber Item.",
"headAccessoryArmoireComicalArrowText": "Comical Arrow",
- "headAccessoryArmoireComicalArrowNotes": "This whimsical item doesn't provide a stat boost, but it sure is good for a laugh! Confers no benefit. Enchanted Armoire: Independent Item.",
+ "headAccessoryArmoireComicalArrowNotes": "This whimsical item doesn't provide a Stat boost, but it sure is good for a laugh! Confers no benefit. Enchanted Armoire: Independent Item.",
"eyewear": "Eyewear",
"eyewearCapitalized": "Eyewear",
diff --git a/website/common/locales/en/gear_README.md b/website/common/locales/en/gear_README.md
index 540371b9a60..a3d41b79f98 100644
--- a/website/common/locales/en/gear_README.md
+++ b/website/common/locales/en/gear_README.md
@@ -10,11 +10,11 @@ To maintain consistency in equipment descriptions, the following guidelines have
## Stat Effect
* **No bonus:**
"Confers no benefit."
-* **Single or all stat bonus:**
-"Increases (Strength/Intelligence/Constitution/Perception/all attributes) by (<%= str %>/<%= int %>/<%= con %>/<%= per %>/<%= attrs %>)."
-* **Two stats, same bonus:**
+* **Single or all Stat bonus:**
+"Increases (Strength/Intelligence/Constitution/Perception/all Stats) by (<%= str %>/<%= int %>/<%= con %>/<%= per %>/<%= attrs %>)."
+* **Two Stats, same bonus:**
"Increases (Strength/Intelligence/Constitution) and (Intelligence/Constitution/Perception) by <%= attrs %> each."
-* **Two stats, different bonus:**
+* **Two Stats, different bonus:**
"Increases (Strength/Intelligence/Constitution) by (<%= str %>/<%= int %>/<%= con %>) and (Intelligence/Constitution/Perception) by (<%= int %>/<%= con %>/<%= per %>)]."
## Event/Origin
diff --git a/website/common/locales/en/generic.json b/website/common/locales/en/generic.json
index 50152ad540c..00e48a9daef 100644
--- a/website/common/locales/en/generic.json
+++ b/website/common/locales/en/generic.json
@@ -1,4 +1,4 @@
-{
+{
"languageName": "English",
"stringNotFound": "String '<%= string %>' not found.",
"titleIndex": "Habitica | Your Life The Role Playing Game",
@@ -37,7 +37,7 @@
"expandToolbar": "Expand Toolbar",
"collapseToolbar": "Collapse Toolbar",
- "markdownBlurb": "Habitica uses markdown for message formatting. See the Markdown Cheat Sheet for more info.",
+ "markdownHelpLink": "Markdown formatting help",
"showFormattingHelp": "Show formatting help",
"hideFormattingHelp": "Hide formatting help",
"youType": "You type:",
@@ -111,8 +111,8 @@
"achievementDilatory": "Savior of Dilatory",
"achievementDilatoryText": "Helped defeat the Dread Drag'on of Dilatory during the 2014 Summer Splash Event!",
"costumeContest": "Costume Contestant",
- "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
- "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Member since",
"lastLoggedIn": "- Last logged in",
"notPorted": "This feature is not yet ported from the original site.",
@@ -141,6 +141,12 @@
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Theme",
"audioTheme_arashiTheme": "Arashi's Theme",
"audioTheme_triumphTheme": "Triumph Theme",
+ "audioTheme_lunasolTheme": "Lunasol Theme",
+ "audioTheme_spacePenguinTheme": "SpacePenguin's Theme",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
+ "audioTheme_farvoidTheme": "Farvoid Theme",
+
"askQuestion": "Ask a Question",
"reportBug": "Report a Bug",
"HabiticaWiki": "The Habitica Wiki",
diff --git a/website/common/locales/en/groups.json b/website/common/locales/en/groups.json
index 4721253b918..cc87d71ee4c 100644
--- a/website/common/locales/en/groups.json
+++ b/website/common/locales/en/groups.json
@@ -102,15 +102,18 @@
"optionalMessage": "Optional message",
"yesRemove": "Yes, remove them",
"foreverAlone": "Can't like your own message. Don't be that person.",
- "sortLevel": "Sort by level",
- "sortRandom": "Sort randomly",
- "sortPets": "Sort by number of pets",
- "sortName": "Sort by avatar name",
- "sortBackgrounds": "Sort by background",
- "sortHabitrpgJoined": "Sort by Habitica date joined",
- "sortHabitrpgLastLoggedIn": "Sort by last time user logged in",
- "ascendingSort": "Sort Ascending",
- "descendingSort": "Sort Descending",
+
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
+
"confirmGuild": "Create Guild for 4 Gems?",
"leaveGroupCha": "Leave Guild challenges and...",
"confirm": "Confirm",
@@ -234,6 +237,7 @@
"onlyCreatorOrAdminCanDeleteChat": "Not authorized to delete this message!",
"onlyGroupLeaderCanEditTasks": "Not authorized to manage tasks!",
"onlyGroupTasksCanBeAssigned": "Only group tasks can be assigned",
+ "assignedTo": "Assigned To",
"assignedToUser": "Assigned to <%= userName %>",
"assignedToMembers": "Assigned to <%= userCount %> members",
"assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
@@ -293,7 +297,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -317,7 +320,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancel Group Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Canceled Group Plan",
@@ -411,5 +414,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
diff --git a/website/common/locales/en/limited.json b/website/common/locales/en/limited.json
index a9d68e5e6dd..aed263d032d 100644
--- a/website/common/locales/en/limited.json
+++ b/website/common/locales/en/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndApril": "April 19",
"dateEndMay": "May 17",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
+ "dateEndJanuary": "January 31",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3",
"discountBundle": "bundle"
}
diff --git a/website/common/locales/en/loadingScreenTips.json b/website/common/locales/en/loadingScreenTips.json
index 32b7fe5e6c0..ec50ad2ee10 100644
--- a/website/common/locales/en/loadingScreenTips.json
+++ b/website/common/locales/en/loadingScreenTips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tip #<%= tipNumber %>",
"tip1": "Check tasks on the go with the Habitica mobile apps.",
- "tip2": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Use emoji to quickly differentiate between your tasks.",
"tip4": "Use the # sign before a task name to make it really big!",
- "tip5": "It’s best to cast buffs in the morning so they last longer.",
- "tip6": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
- "tip7": "Some backgrounds connect perfectly if party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
- "tip8": "Send a PM to someone by clicking the envelope near their name in chat!",
- "tip9": "Visit the Guild Leaders & Challenge Creators Guild for advice on starting a Guild.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "You can win gems by competing in Challenges. New ones are added every day!",
- "tip11": "If you enjoy dressing up your avatar, check out the Costume Carnival Guild.",
- "tip12": "Join the “Challenge... Accepted” Guild for regularly scheduled random challenges.",
- "tip13": "Having more than four Party members increases accountability!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "You can add headers or inspirational quotes to your list as Habits with no (+/-).",
- "tip15": "Add checklists to your To-Dos to increase your rewards!",
- "tip16": "Check out the Data tab for valuable insights on your progress.",
- "tip17": "Using Tags can make an unwieldy task list very manageable!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Habits that are just positive or just negative gradually “fade” and return to yellow.",
- "tip19": "Boost your Intelligence Stat to gain more XP when you complete a task.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Boost your Perception Stat to get more drops and gold.",
"tip21": "Boost your Strength Stat to do more boss damage or get critical hits.",
"tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.",
- "tip23": "Click the bar graph icon on your tasks to see a graph showing your progress.",
- "tip24": "Habitica is Open Source! Ask in the Aspiring Legends Guild if you want to contribute.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.",
- "tip26": "An arrow to the left of someone’s level number means they’re currently buffed.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.",
- "tip28": "Set a Custom Day Start under Settings > Site to control when your day restarts.",
- "tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your stats!",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
+ "tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your Stats!",
"tip30": "You can invite people to Guilds, not just Parties.",
"tip31": "Check out the pre-made lists in the Library of Tasks and Challenges Guild for example tasks.",
- "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Anyone can help.",
- "tip33": "Check out The Bulletin Board guild for news about guilds, challenges, and other player-created events - and announce your own there!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/en/messages.json b/website/common/locales/en/messages.json
index 2bef686376a..9877ab39f23 100644
--- a/website/common/locales/en/messages.json
+++ b/website/common/locales/en/messages.json
@@ -1,5 +1,4 @@
{
-
"messageLostItem": "Your <%= itemText %> broke.",
"messageTaskNotFound": "Task not found.",
"messageDuplicateTaskID": "A task with that ID already exists.",
@@ -31,6 +30,7 @@
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
"messageHealthAlreadyMin": "Oh no! You have already run out of health so it's too late to buy a health potion, but don't worry - you can revive!",
@@ -58,6 +58,7 @@
"messageGroupChatFlagAlreadyReported": "You have already reported this message",
"messageGroupChatNotFound": "Message not found!",
"messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
diff --git a/website/common/locales/en/npc.json b/website/common/locales/en/npc.json
index 01a33788e36..78b36cfd23e 100644
--- a/website/common/locales/en/npc.json
+++ b/website/common/locales/en/npc.json
@@ -95,7 +95,7 @@
"plusOneGem": "+1 Gem",
"typeNotSellable": "Type is not sellable. Must be one of the following <%= acceptedTypes %>",
"userItemsKeyNotFound": "Key not found for user.items <%= type %>",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Path string is required",
"unlocked": "Items have been unlocked",
"alreadyUnlocked": "Full set already unlocked.",
@@ -117,9 +117,9 @@
"classGear": "Class Gear",
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
- "classStats": "These are your class's stats; they affect the game-play. Each time you level up, you get one point to allocate to a particular stat. Hover over each stat for more information.",
+ "classStats": "These are your class's Stats; they affect the game-play. Each time you level up, you get one Point to allocate to a particular Stat. Hover over each Stat for more information.",
"autoAllocate": "Auto Allocate",
- "autoAllocateText": "If 'automatic allocation' is checked, your avatar gains stats automatically based on your tasks' attributes, which you can find in TASK > Edit > Advanced > Attributes. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
+ "autoAllocateText": "If 'Automatic Allocation' is selected, your avatar gains Stats automatically based on your tasks' Stats, which you can find in TASK > Edit > Advanced Settings > Stat Allocation. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
"spells": "Skills",
"spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed To-Do.",
"skillsTitle": "Skills",
@@ -147,7 +147,7 @@
"tourHallPage": "Welcome to the Hall of Heroes, where open-source contributors to Habitica are honored. Whether through code, art, music, writing, or even just helpfulness, they have earned Gems, exclusive equipment, and prestigious titles. You can contribute to Habitica, too!",
"tourPetsPage": "This is the Stable! After reaching level 3, you will gather pet eggs and hatching potions as you complete tasks. When you hatch a pet in the Market, it will appear here! Click a pet's image to add it to your avatar. Feed them with the food you find after level 3, and they'll grow into powerful mounts.",
"tourMountsPage": "Once you've fed a pet enough food to turn it into a mount, it will appear here. Click a mount to saddle up!",
- "tourEquipmentPage": "This is where your Equipment is stored! Your Battle Gear affects your stats. If you want to show different Equipment on your avatar without changing your stats, click \"Enable Costume.\"",
+ "tourEquipmentPage": "This is where your Equipment is stored! Your Battle Gear affects your Stats. If you want to show different Equipment on your avatar without changing your Stats, click \"Enable Costume.\"",
"equipmentAlreadyOwned": "You already own that piece of equipment",
"tourOkay": "Okay!",
diff --git a/website/common/locales/en/pets.json b/website/common/locales/en/pets.json
index 86321975199..c6a5cb863f7 100644
--- a/website/common/locales/en/pets.json
+++ b/website/common/locales/en/pets.json
@@ -89,6 +89,18 @@
"rideLater": "Ride Later",
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
+ "keyToPets": "Key to the Pet Kennels",
+ "keyToPetsDesc": "Release all standard Pets so you can collect them again. (Quest Pets and rare Pets are not affected.)",
+ "keyToMounts": "Key to the Mount Kennels",
+ "keyToMountsDesc": "Release all standard Mounts so you can collect them again. (Quest Mounts and rare Mounts are not affected.)",
+ "keyToBoth": "Master Keys to the Kennels",
+ "keyToBothDesc": "Release all standard Pets and Mounts so you can collect them again. (Quest Pets/Mounts and rare Pets/Mounts are not affected.)",
+ "releasePetsConfirm": "Are you sure you want to release your standard Pets?",
+ "releasePetsSuccess": "Your standard Pets have been released!",
+ "releaseMountsConfirm": "Are you sure you want to release your standard Mounts?",
+ "releaseMountsSuccess": "Your standard Mounts have been released!",
+ "releaseBothConfirm": "Are you sure you want to release your standard Pets and Mounts?",
+ "releaseBothSuccess": "Your standard Pets and Mounts have been released!",
"petKeyName": "Key to the Kennels",
"petKeyPop": "Let your pets roam free, release them to start their own adventure, and give yourself the thrill of Beast Master once more!",
"petKeyBegin": "Key to the Kennels: Experience <%= title %> Once More!",
@@ -123,5 +135,6 @@
"clickOnPetToFeed": "Click on a Pet to feed <%= foodName %> and watch it grow!",
"dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!",
"clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!",
- "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
+ "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.",
+ "clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!"
}
diff --git a/website/common/locales/en/quests.json b/website/common/locales/en/quests.json
index 0ba8d79cbb9..be23ef00c06 100644
--- a/website/common/locales/en/quests.json
+++ b/website/common/locales/en/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
- "bossHP": "Boss Health",
+ "bossHP": "Boss HP",
"bossStrength": "Boss Strength",
"rage": "Rage",
"collect": "Collect",
@@ -78,6 +78,7 @@
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
diff --git a/website/common/locales/en/questsContent.json b/website/common/locales/en/questsContent.json
index 28301732fbc..58353b5f11e 100644
--- a/website/common/locales/en/questsContent.json
+++ b/website/common/locales/en/questsContent.json
@@ -405,7 +405,7 @@
"questArmadilloUnlockText": "Unlocks purchasable Armadillo eggs in the Market",
"questCowText": "The Mootant Cow",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "Cow (Egg)",
@@ -637,5 +637,15 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
diff --git a/website/common/locales/en/settings.json b/website/common/locales/en/settings.json
index 354e2c1049e..4c0e9bc2bec 100644
--- a/website/common/locales/en/settings.json
+++ b/website/common/locales/en/settings.json
@@ -63,16 +63,16 @@
"newUsername": "New Login Name",
"dangerZone": "Danger Zone",
"resetText1": "WARNING! This resets many parts of your account. This is highly discouraged, but some people find it useful in the beginning after playing with the site for a short time.",
- "resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
+ "resetText2": "You will lose all your levels, Gold, and Experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type your password into the text box below.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copy these for use in third party applications. However, think of your API Token like a password, and do not share it publicly. You may occasionally be asked for your User ID, but never post your API Token where others can see it, including on Github.",
"APIToken": "API Token (this is a password - see warning above!)",
"showAPIToken": "Show API Token",
"hideAPIToken": "Hide API Token",
- "APITokenWarning": "If you need a new API Token (e.g., if you accidentally shared it), email <%= hrefTechAssistanceEmail %> with your User ID and current Token. Once it is reset you will need to re-authorize everything by logging out of the website and mobile app and by providing the new Token to any other Habitica tools that you use.",
+ "APITokenWarning": "If you need a new API Token (e.g., if you accidentally shared it), email <%= hrefTechAssistanceEmail %> with your User ID and current Token. Once it is reset you will need to re-authorize everything by logging out of the website and mobile app and by providing the new Token to any other Habitica tools that you use.",
"thirdPartyApps": "Third Party Apps",
"dataToolDesc": "A webpage that shows you certain information from your Habitica account, such as statistics about your tasks, equipment, and skills.",
"beeminder": "Beeminder",
@@ -118,6 +118,7 @@
"giftedSubscription": "Gifted Subscription",
"giftedSubscriptionInfo": "<%= name %> gifted you a <%= months %> month subscription",
"giftedSubscriptionFull": "Hello <%= username %>, <%= sender %> has sent you <%= monthCount %> months of subscription!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Invited To Party",
"invitedGuild": "Invited To Guild",
"importantAnnouncements": "Reminders to check in to complete tasks and receive prizes",
diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json
index 31344242778..874050805b2 100644
--- a/website/common/locales/en/subscriber.json
+++ b/website/common/locales/en/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Cancel Subscription",
"cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Canceled Subscription",
"cancelingSubscription": "Canceling the subscription",
"adminSub": "Administrator Subscriptions",
@@ -137,6 +138,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
@@ -170,7 +172,6 @@
"cardTypeNotAllowed": "Unknown card type.",
"invalidCoupon": "Invalid coupon code.",
"couponUsed": "Coupon code already used.",
- "noSudoAccess": "You don't have sudo access.",
"couponCodeRequired": "The coupon code is required.",
"eventRequired": "\"req.params.event\" is required.",
"countRequired": "\"req.query.count\" is required.",
@@ -193,7 +194,7 @@
"gemBenefit1": "Unique and fashionable costumes for your avatar.",
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
- "gemBenefit4": "Reset your avatar's attribute points and change its Class.",
+ "gemBenefit4": "Reset your avatar's Stat Points and change its Class.",
"subscriptionBenefitLeadin": "Support Habitica by becoming a subscriber and you'll receive these useful benefits!",
"subscriptionBenefit1": "Alexander the Merchant will sell you Gems, for 20 Gold each!",
"subscriptionBenefit2": "Completed To-Dos and task history are available for longer.",
diff --git a/website/common/locales/en/tasks.json b/website/common/locales/en/tasks.json
index c7eea26af17..ac38dfa510a 100644
--- a/website/common/locales/en/tasks.json
+++ b/website/common/locales/en/tasks.json
@@ -31,19 +31,20 @@
"extraNotes": "Extra Notes",
"notes": "Notes",
"direction/Actions": "Direction/Actions",
- "advancedOptions": "Advanced Options",
+ "advancedSettings": "Advanced Settings",
"taskAlias": "Task Alias",
"taskAliasPopover": "This task alias can be used when integrating with 3rd party integrations. Only dashes, underscores, and alphanumeric characters are supported. The task alias must be unique among all your tasks.",
"taskAliasPlaceholder": "your-task-alias-here",
"taskAliasPopoverWarning": "WARNING: Changing this value will break any 3rd party integrations that rely on the task alias.",
"difficulty": "Difficulty",
- "difficultyHelpTitle": "How difficult is this task?",
- "difficultyHelpContent": "The harder a task, the more Experience and Gold it awards you when you check it off... but the more it damages you if it is a Daily or Bad Habit!",
+ "difficultyHelp": "Difficulty describes how challenging a Habit, Daily, or To-Do is for you to complete. A higher difficulty results in greater rewards when a Task is completed, but also greater damage when a Daily is missed or a negative Habit is clicked.",
"trivial": "Trivial",
"easy": "Easy",
"medium": "Medium",
"hard": "Hard",
- "attributes": "Attributes",
+ "attributes": "Stats",
+ "attributeAllocation": "Stat Allocation",
+ "attributeAllocationHelp": "Stat allocation is an option that provides methods for Habitica to automatically assign an earned Stat Point to a Stat immediately upon level-up.
You can adjust how Automatic Allocation is handled from the Stats section of your profile.",
"progress": "Progress",
"daily": "Daily",
"dailies": "Dailies",
@@ -54,6 +55,7 @@
"repeat": "Repeat",
"repeats": "Repeats",
"repeatEvery": "Repeat Every",
+ "repeatOn": "Repeat On",
"repeatHelpTitle": "How often should this task be repeated?",
"dailyRepeatHelpContent": "This task will be due every X days. You can set that value below.",
"weeklyRepeatHelpContent": "This task will be due on the highlighted days below. Click on a day to activate/deactivate it.",
@@ -61,7 +63,7 @@
"repeatWeek": "On Certain Days of the Week",
"day": "Day",
"days": "Days",
- "restoreStreak": "Restore Streak",
+ "restoreStreak": "Adjust Streak",
"resetStreak": "Reset Streak",
"todo": "To-Do",
"todos": "To-Dos",
@@ -105,9 +107,9 @@
"streakSingular": "Streaker",
"streakSingularText": "Has performed a 21-day streak on a Daily",
"perfectName": "<%= count %> Perfect Days",
- "perfectText": "Completed all active Dailies on <%= count %> days. With this achievement you get a +level/2 buff to all attributes for the next day. Levels greater than 100 don't have any additional effects on buffs.",
+ "perfectText": "Completed all active Dailies on <%= count %> days. With this achievement you get a +level/2 buff to all Stats for the next day. Levels greater than 100 don't have any additional effects on buffs.",
"perfectSingular": "Perfect Day",
- "perfectSingularText": "Completed all active Dailies in one day. With this achievement you get a +level/2 buff to all attributes for the next day. Levels greater than 100 don't have any additional effects on buffs.",
+ "perfectSingularText": "Completed all active Dailies in one day. With this achievement you get a +level/2 buff to all Stats for the next day. Levels greater than 100 don't have any additional effects on buffs.",
"streakerAchievement": "You have attained the \"Streaker\" Achievement! The 21-day mark is a milestone for habit formation. You can continue to stack this Achievement for every additional 21 days, on this Daily or any other!",
"fortifyName": "Fortify Potion",
"fortifyPop": "Return all tasks to neutral value (yellow color), and restore all lost Health.",
@@ -115,6 +117,7 @@
"fortifyText": "Fortify will return all your tasks, except challenge tasks, to a neutral (yellow) state, as if you'd just added them, and top your Health off to full. This is great if all your red tasks are making the game too hard, or all your blue tasks are making the game too easy. If starting fresh sounds much more motivating, spend the Gems and catch a reprieve!",
"confirmFortify": "Are you sure?",
"fortifyComplete": "Fortify complete!",
+ "deleteTask": "Delete this Task",
"sureDelete": "Are you sure you want to delete this task?",
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed todos?",
"streakCoins": "Streak Bonus!",
@@ -136,7 +139,7 @@
"toDoHelp3": "Breaking a To-Do down into a checklist of smaller items will make it less scary, and will increase your points!",
"toDoHelp4": "For inspiration, check out these sample To-Dos!",
"rewardHelp1": "The Equipment you buy for your avatar is stored in <%= linkStart %>Inventory > Equipment<%= linkEnd %>.",
- "rewardHelp2": "Equipment affects your stats (<%= linkStart %>Avatar > Stats<%= linkEnd %>).",
+ "rewardHelp2": "Equipment affects your Stats (<%= linkStart %>Avatar > Stats<%= linkEnd %>).",
"rewardHelp3": "Special equipment will appear here during World Events.",
"rewardHelp4": "Don't be afraid to set custom Rewards! Check out some samples here.",
"clickForHelp": "Click for help",
@@ -168,7 +171,7 @@
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
"taskApprovalHasBeenRequested": "Approval has been requested",
"approvals": "Approvals",
- "approvalRequired": "Approval Required",
+ "approvalRequired": "Needs Approval",
"repeatZero": "Daily is never due",
"repeatType": "Repeat Type",
"repeatTypeHelpTitle": "What kind of repeat is this?",
@@ -202,5 +205,7 @@
"yesterDailiesOptionTitle": "Confirm that this Daily wasn't done before applying damage",
"yesterDailiesDescription": "If this setting is applied, Habitica will ask you if you meant to leave the Daily undone before calculating and applying damage to your avatar. This can protect you against unintentional damage.",
"repeatDayError": "Please ensure that you have at least one day of the week selected.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Search titles and descriptions...",
+ "repeatDayError": "Please ensure that you have at least one day of the week selected.",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
diff --git a/website/common/locales/en@pirate/backgrounds.json b/website/common/locales/en@pirate/backgrounds.json
index 04620df1263..24ed626ba50 100644
--- a/website/common/locales/en@pirate/backgrounds.json
+++ b/website/common/locales/en@pirate/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Midnight Castle",
"backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Fly through a Tornado."
+ "backgroundTornadoNotes": "Fly through a Tornado.",
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/en@pirate/challenge.json b/website/common/locales/en@pirate/challenge.json
index b2f92a114b3..de603b4015e 100644
--- a/website/common/locales/en@pirate/challenge.json
+++ b/website/common/locales/en@pirate/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "selectMember": "Select Member",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/en@pirate/character.json b/website/common/locales/en@pirate/character.json
index 2982d7ed73c..432e5d938ae 100644
--- a/website/common/locales/en@pirate/character.json
+++ b/website/common/locales/en@pirate/character.json
@@ -163,6 +163,7 @@
"dieText": "Ye've lost a Level, all ye Doubloons, 'n a random piece 'o Equipment. Arise, Habiteer, 'n give a go' again! Curb them negative Habits, be vigilant in completion 'o Dailies, 'n hold Davy Jones' locker at arm's length wit' a Health Potion if ye falter!",
"sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "Purchase fer <%= cost %> Sapphires?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Not enough mana.",
"invalidTarget": "You can't cast a skill on that.",
"youCast": "Ye cast <%= spell %>.",
diff --git a/website/common/locales/en@pirate/content.json b/website/common/locales/en@pirate/content.json
index 1efeed8d16c..8922b8cb0bb 100644
--- a/website/common/locales/en@pirate/content.json
+++ b/website/common/locales/en@pirate/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Yarn",
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "woolen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Find ye hatchin' potion to pourrrr on this egg, an' it'll hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
"hatchingPotionWhite": "White",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupid",
"hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Pour this on an egg, an' it'll hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Ye canna use this on quest pet eggs.",
"foodMeat": "Meat",
@@ -218,5 +222,6 @@
"foodCandyRed": "Cinnamon Candy",
"foodSaddleText": "Saddle",
"foodSaddleNotes": "Instantly turns one 'o yer pets into a mount.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Feed this to a pet 'n mayhaps it'll grow inter a sturdy steed."
}
\ No newline at end of file
diff --git a/website/common/locales/en@pirate/contrib.json b/website/common/locales/en@pirate/contrib.json
index 1a691902544..39bdff596bb 100644
--- a/website/common/locales/en@pirate/contrib.json
+++ b/website/common/locales/en@pirate/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, ye awesome person! Ye now be a tier <%= level %> contributor for helpin' Habitica. See",
"contribLink": "what treasure ya earned fer yer contribution!",
"contribName": "Contributor",
- "contribText": "Has contribut'd t' Habitica (code, design, pixel art, legal advice, docs, etc). Ye wantin' t'is medal? Read more.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Read More",
"kickstartName": "Kickstarter Backer - $<%= key %> Rank",
"kickstartText": "Backed th' Kickstarter Project",
diff --git a/website/common/locales/en@pirate/front.json b/website/common/locales/en@pirate/front.json
index d11af5f4f80..8520c52bb4f 100644
--- a/website/common/locales/en@pirate/front.json
+++ b/website/common/locales/en@pirate/front.json
@@ -30,6 +30,7 @@
"companyAbout": "How It Works",
"companyBlog": "Blog",
"devBlog": "Developer Blog",
+ "companyContribute": "Contribute",
"companyDonate": "Donate",
"companyPrivacy": "Privacy",
"companyTerms": "Terms",
@@ -252,7 +253,7 @@
"missingNewPassword": "Missing new password.",
"invalidEmailDomain": "You cannot register with emails with the following domains: <%= domains %>",
"wrongPassword": "Wrong password.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Invalid email address.",
"emailTaken": "Email address is already used in an account.",
"newEmailRequired": "Missing new email address.",
diff --git a/website/common/locales/en@pirate/gear.json b/website/common/locales/en@pirate/gear.json
index af34536d8f5..3d21da32ce4 100644
--- a/website/common/locales/en@pirate/gear.json
+++ b/website/common/locales/en@pirate/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Pitchfork o' Feasting",
"weaponMystery201411Notes": "Stab yer enemies or dig in to yer favorite vittles - this here versatile pitchfork does it all! It don't benefit ye.\nNovember 2014 Subscriberrr Item",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armor",
"armorCapitalized": "Armor",
"armorBase0Text": "Plain Slops",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering an' strong, these robes have many pockets t' carry letters. Don't benefit ye. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper an' dashing, wot! Don't benefit ye. February 3015 Subscriber Item.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration o' th' GaymerX Conference, this special helmet be decorated with a radiant, colorful rainbow pattern! GaymerX be a game convention celebratin' LGTBQ an' gaming an' be open t' everyone.",
"headMystery201402Text": "Winged Helm",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat fer th' finest o' gentlefolk! January 3015 Subscriber Item. Don't benefit ye.",
"headMystery301405Text": "Basic Top Hat",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "This cloak has secret pockets to hide all the Gold you loot from your Tasks. Confers no benefit. June 2017 Subscriber Item.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "head accessory",
"headAccessoryCapitalized": "Head Accessory",
"accessories": "Accessories",
diff --git a/website/common/locales/en@pirate/generic.json b/website/common/locales/en@pirate/generic.json
index c08803de2df..1876c77acc3 100644
--- a/website/common/locales/en@pirate/generic.json
+++ b/website/common/locales/en@pirate/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Savior o' Dilatory",
"achievementDilatoryText": "Helped defeat th' Dread Drag'on 'o Dilatory durin' th' 2014 Summer Splash Event!",
"costumeContest": "Costume Contestant",
- "costumeContestText": "Participated in th' Habitoween Costume Contest. See some of the entries on the Habitica blog!",
- "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Mate since",
"lastLoggedIn": "- Last sailed on",
"notPorted": "This feature is not yet ported from th' original site.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's Theme",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Theme",
"audioTheme_arashiTheme": "Arashi's Theme",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Ask a Question",
"reportBug": "Report a Bug",
"HabiticaWiki": "Th' Habitica Wiki",
diff --git a/website/common/locales/en@pirate/groups.json b/website/common/locales/en@pirate/groups.json
index d8cde2c6030..c7f108534ee 100644
--- a/website/common/locales/en@pirate/groups.json
+++ b/website/common/locales/en@pirate/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Optional message",
"yesRemove": "Aye, scuttle them",
"foreverAlone": "Can't like yer own message. Don't be a knave.",
- "sortLevel": "Sort by level",
- "sortRandom": "Sort randomly",
- "sortPets": "Sort by number o' pets",
- "sortName": "Sort by avatarr name",
- "sortBackgrounds": "Sort by background",
- "sortHabitrpgJoined": "Sort by Habitica date joined",
- "sortHabitrpgLastLoggedIn": "Sort by last time user logged in",
- "ascendingSort": "Sort Ascendin'",
- "descendingSort": "Sort Descendin'",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Create Ship fer 4 Sapphires?",
"leaveGroupCha": "Leave Ship challenges 'n...",
"confirm": "Confirm",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Not authorized to delete this message!",
"onlyGroupLeaderCanEditTasks": "Not authorized to manage tasks!",
"onlyGroupTasksCanBeAssigned": "Only group tasks can be assigned",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Your chat privileges have been revoked.",
"newChatMessagePlainNotification": "New message in <%= groupName %> by <%= authorName %>. Click here to open the chat page!",
"newChatMessageTitle": "New message in <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancel Group Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Canceled Group Plan",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/en@pirate/limited.json b/website/common/locales/en@pirate/limited.json
index 80ebfbb4ce5..97ae2019ae2 100644
--- a/website/common/locales/en@pirate/limited.json
+++ b/website/common/locales/en@pirate/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndApril": "April 19",
"dateEndMay": "May 17",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/en@pirate/loadingscreentips.json b/website/common/locales/en@pirate/loadingscreentips.json
index 3d97efc525f..cfb650f5a4c 100644
--- a/website/common/locales/en@pirate/loadingscreentips.json
+++ b/website/common/locales/en@pirate/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tip #<%= tipNumber %>",
"tip1": "Check tasks on the go with the Habitica mobile apps.",
- "tip2": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Use emoji to quickly differentiate between your tasks.",
"tip4": "Use the # sign before a task name to make it really big!",
- "tip5": "It’s best to cast buffs in the morning so they last longer.",
- "tip6": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
- "tip7": "Some backgrounds connect perfectly if party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
- "tip8": "Send a PM to someone by clicking the envelope near their name in chat!",
- "tip9": "Visit the Guild Leaders & Challenge Creators Guild for advice on starting a Guild.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "You can win gems by competing in Challenges. New ones are added every day!",
- "tip11": "If you enjoy dressing up your avatar, check out the Costume Carnival Guild.",
- "tip12": "Join the “Challenge... Accepted” Guild for regularly scheduled random challenges.",
- "tip13": "Having more than four Party members increases accountability!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "You can add headers or inspirational quotes to your list as Habits with no (+/-).",
- "tip15": "Add checklists to your To-Dos to increase your rewards!",
- "tip16": "Check out the Data tab for valuable insights on your progress.",
- "tip17": "Using Tags can make an unwieldy task list very manageable!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Habits that are just positive or just negative gradually “fade” and return to yellow.",
- "tip19": "Boost your Intelligence Stat to gain more XP when you complete a task.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Boost your Perception Stat to get more drops and gold.",
"tip21": "Boost your Strength Stat to do more boss damage or get critical hits.",
"tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.",
- "tip23": "Click the bar graph icon on your tasks to see a graph showing your progress.",
- "tip24": "Habitica is Open Source! Ask in the Aspiring Legends Guild if you want to contribute.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.",
- "tip26": "An arrow to the left of someone’s level number means they’re currently buffed.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.",
- "tip28": "Set a Custom Day Start under Settings > Site to control when your day restarts.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your stats!",
"tip30": "Ye can invite mates t' Ships, not just Ships.",
"tip31": "Check out the pre-made lists in the Library of Tasks and Challenges Guild for example tasks.",
- "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Anyone can help.",
- "tip33": "Check out The Bulletin Board guild for news about guilds, challenges, and other player-created events - and announce your own there!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/en@pirate/messages.json b/website/common/locales/en@pirate/messages.json
index 39803faf504..4f68edb4dad 100644
--- a/website/common/locales/en@pirate/messages.json
+++ b/website/common/locales/en@pirate/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Ye 'ave found th' adventure \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Ye purchased this gear in th' past, but do not currently own it. Ye can buy it again in th' rewards column on th' tasks page.",
"messageAlreadyOwnGear": "Ye already own this item. Equip it by going to th' equipment page.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Ye already 'ave maximum health.",
"messageHealthAlreadyMin": "Oh no! You have already run out of health so it's too late to buy a health potion, but don't worry - you can revive!",
"armoireEquipment": "<%= image %> Ye found a piece of rare Equipment in th' Armoire: <%= dropText %>! Awesome!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Ye be reportin' this message already",
"messageGroupChatNotFound": "Message not found! ",
"messageGroupChatAdminClearFlagCount": "Only an admin be able to clear the flag count!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Shiver me timbers, looks like ye be postin' too many messages! Please wait a minute an' try again. Th' Pub chat only holds 200 messages at a time, so Habitica encourages postin' long'r, more thoughtful messages and consolidatin' replies. Can't wait t' hear wha' ye have t' say. :)",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not be here",
diff --git a/website/common/locales/en@pirate/npc.json b/website/common/locales/en@pirate/npc.json
index 70b265c6206..70244eadbcd 100644
--- a/website/common/locales/en@pirate/npc.json
+++ b/website/common/locales/en@pirate/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Gem",
"typeNotSellable": "Type is not sellable. Must be one of the following <%= acceptedTypes %>",
"userItemsKeyNotFound": "Key not found for user.items <%= type %>",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Path string is required",
"unlocked": "Items have been unlocked",
"alreadyUnlocked": "Full set already unlocked.",
diff --git a/website/common/locales/en@pirate/quests.json b/website/common/locales/en@pirate/quests.json
index 94c5e866b6f..e44bb9c55bd 100644
--- a/website/common/locales/en@pirate/quests.json
+++ b/website/common/locales/en@pirate/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Embark",
- "bossHP": "Boss Health",
+ "bossHP": "Boss HP",
"bossStrength": "Strength",
"rage": "Rage",
"collect": "Plunder",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Ye must be level <%= level %> t' buy this adventure!",
"mustInviteFriend": "To earn this quest, invite a friend t' yer Crew. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Be ye sure ye want to cancel 'tis quest? All invitation acceptances gunna be lost. th' quest owner gunna retain possession 'o th' quest scroll.",
"sureAbort": "Be ye sure ye want to abort 'tis mission? It gunna abort it fer all ye crew members an' all progress gunna be lost. th' quest scroll gunna be returned to th' quest owner.",
"doubleSureAbort": "Arrr ye double sure? Make sure they won't hate ye forever!",
diff --git a/website/common/locales/en@pirate/questscontent.json b/website/common/locales/en@pirate/questscontent.json
index 4b9523b6356..0d8c5604eea 100644
--- a/website/common/locales/en@pirate/questscontent.json
+++ b/website/common/locales/en@pirate/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Armadillo (Egg)",
"questArmadilloUnlockText": "Unlocks purchasable Armadillo eggs in the Market",
"questCowText": "The Mootant Cow",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "Cow (Egg)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/en@pirate/settings.json b/website/common/locales/en@pirate/settings.json
index 4022dbedf2a..5358a5aa926 100644
--- a/website/common/locales/en@pirate/settings.json
+++ b/website/common/locales/en@pirate/settings.json
@@ -65,7 +65,7 @@
"resetText1": "AHOY! 'tis resets many parts 'o ye account. 'tis be highly discouraged, but some people find it useful in th' beginnin' after playin' wit' th' site fer a short time.",
"resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "Are ye sure? This will scuttle yer account forever, 'n it can ne'er be restored! Ye will needs t' register a new account t' use Habitica again. Banked or spent Gems will nah be refunded. If ye're absolutely certain ye wish to walk the plank, type yer password into th' text box below.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copy these fer use in third parrrty applications. However, think 'o ye API Token like a passcode, 'n do not share it publicly. Ye may occasionally be asked fer yer User ID, but never message yer API Token whar others can spy wit' ye eye it, includin' on Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Gifted Subscription",
"giftedSubscriptionInfo": "<%= name %> gifted you a <%= months %> month subscription",
"giftedSubscriptionFull": "Hello <%= username %>, <%= sender %> has sent you <%= monthCount %> months of subscription!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Invited T' Crew",
"invitedGuild": "Invited T' Ship",
"importantAnnouncements": "Reminders to check in to complete tasks and receive prizes",
diff --git a/website/common/locales/en@pirate/subscriber.json b/website/common/locales/en@pirate/subscriber.json
index e96bad06940..732c51d80f6 100644
--- a/website/common/locales/en@pirate/subscriber.json
+++ b/website/common/locales/en@pirate/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Cancel Subscription",
"cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Canceled Subscription",
"cancelingSubscription": "Canceling th' subscription",
"adminSub": "Administrator Subscriptions",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Unknown card type.",
"invalidCoupon": "Invalid coupon code.",
"couponUsed": "Coupon code already used.",
- "noSudoAccess": "Ye don't have sudo access.",
"couponCodeRequired": "Th' coupon code be required.",
"eventRequired": "\"req.params.event\" is required.",
"countRequired": "\"req.query.count\" is required.",
diff --git a/website/common/locales/en@pirate/tasks.json b/website/common/locales/en@pirate/tasks.json
index 19f3c8352cf..5b1c470f718 100644
--- a/website/common/locales/en@pirate/tasks.json
+++ b/website/common/locales/en@pirate/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Confirm that this Daily wasn't done before applying damage",
"yesterDailiesDescription": "If this setting is applied, Habitica will ask you if you meant to leave the Daily undone before calculating and applying damage to your avatar. This can protect you against unintentional damage.",
"repeatDayError": "Please ensure that you have at least one day of the week selected.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Search titles and descriptions...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/backgrounds.json b/website/common/locales/en_GB/backgrounds.json
index e93faddb466..4e5105fff39 100644
--- a/website/common/locales/en_GB/backgrounds.json
+++ b/website/common/locales/en_GB/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Midnight Castle",
"backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Fly through a Tornado."
+ "backgroundTornadoNotes": "Fly through a Tornado.",
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/challenge.json b/website/common/locales/en_GB/challenge.json
index c2dd72c04d1..2c292d9dec7 100644
--- a/website/common/locales/en_GB/challenge.json
+++ b/website/common/locales/en_GB/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "selectMember": "Select Member",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/character.json b/website/common/locales/en_GB/character.json
index 903f3dda244..79d5695c148 100644
--- a/website/common/locales/en_GB/character.json
+++ b/website/common/locales/en_GB/character.json
@@ -163,6 +163,7 @@
"dieText": "You've lost a Level, all your Gold, and a random piece of Equipment. Arise, Habiteer, and try again! Curb those negative Habits, be vigilant in completion of Dailies, and hold death at arm's length with a Health Potion if you falter!",
"sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "Purchase for <%= cost %> Gems?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Not enough mana.",
"invalidTarget": "You can't cast a skill on that.",
"youCast": "You cast <%= spell %>.",
diff --git a/website/common/locales/en_GB/content.json b/website/common/locales/en_GB/content.json
index 5c18624a27d..7a03f0197ea 100644
--- a/website/common/locales/en_GB/content.json
+++ b/website/common/locales/en_GB/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Yarn",
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "woolen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
"hatchingPotionWhite": "White",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupid",
"hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs.",
"foodMeat": "Meat",
@@ -218,5 +222,6 @@
"foodCandyRed": "Cinnamon Sweet",
"foodSaddleText": "Saddle",
"foodSaddleNotes": "Instantly raises one of your pets into a mount.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Feed this to a pet and it may grow into a sturdy steed."
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/contrib.json b/website/common/locales/en_GB/contrib.json
index d277baca47b..f20dda9b6ee 100644
--- a/website/common/locales/en_GB/contrib.json
+++ b/website/common/locales/en_GB/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, you awesome person! You're now a tier <%= level %> contributor for helping Habitica. See",
"contribLink": "what prizes you've earned for your contribution!",
"contribName": "Contributor",
- "contribText": "Has contributed to Habitica (code, design, pixel art, legal advice, docs, etc). Want this badge? Read more.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Read More",
"kickstartName": "Kickstarter Backer - $<%= key %> Tier",
"kickstartText": "Backed the Kickstarter Project",
diff --git a/website/common/locales/en_GB/front.json b/website/common/locales/en_GB/front.json
index 928a7d62584..66afdc4fe9d 100644
--- a/website/common/locales/en_GB/front.json
+++ b/website/common/locales/en_GB/front.json
@@ -30,6 +30,7 @@
"companyAbout": "How It Works",
"companyBlog": "Blog",
"devBlog": "Developer Blog",
+ "companyContribute": "Contribute",
"companyDonate": "Donate",
"companyPrivacy": "Privacy",
"companyTerms": "Terms",
@@ -252,7 +253,7 @@
"missingNewPassword": "Missing new password.",
"invalidEmailDomain": "You cannot register with emails with the following domains: <%= domains %>",
"wrongPassword": "Wrong password.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Invalid email address.",
"emailTaken": "Email address is already used in an account.",
"newEmailRequired": "Missing new email address.",
diff --git a/website/common/locales/en_GB/gear.json b/website/common/locales/en_GB/gear.json
index ab9eba367b2..308fd630dc6 100644
--- a/website/common/locales/en_GB/gear.json
+++ b/website/common/locales/en_GB/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favourite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armour",
"armorCapitalized": "Armour",
"armorBase0Text": "Plain Clothing",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armour",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colourful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
"headMystery201402Text": "Winged Helm",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
"headMystery301405Text": "Basic Top Hat",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "This cloak has secret pockets to hide all the Gold you loot from your Tasks. Confers no benefit. June 2017 Subscriber Item.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "head accessory",
"headAccessoryCapitalized": "Head Accessory",
"accessories": "Accessories",
diff --git a/website/common/locales/en_GB/generic.json b/website/common/locales/en_GB/generic.json
index 3314eed318c..dc297dbefa5 100644
--- a/website/common/locales/en_GB/generic.json
+++ b/website/common/locales/en_GB/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Saviour of Dilatory",
"achievementDilatoryText": "Helped defeat the Dread Dragon of Dilatory during the 2014 Summer Splash Event!",
"costumeContest": "Costume Contestant",
- "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
- "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Member since",
"lastLoggedIn": "- Last logged in",
"notPorted": "This feature is not yet ported from the original site.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's Theme",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Theme",
"audioTheme_arashiTheme": "Arashi's Theme",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Ask a Question",
"reportBug": "Report a Bug",
"HabiticaWiki": "The Habitica Wiki",
diff --git a/website/common/locales/en_GB/groups.json b/website/common/locales/en_GB/groups.json
index 59be3cc9198..fa79df68e74 100644
--- a/website/common/locales/en_GB/groups.json
+++ b/website/common/locales/en_GB/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Optional message",
"yesRemove": "Yes, remove them",
"foreverAlone": "Can't like your own message. Don't be that person.",
- "sortLevel": "Sort by level",
- "sortRandom": "Sort randomly",
- "sortPets": "Sort by number of pets",
- "sortName": "Sort by avatar name",
- "sortBackgrounds": "Sort by background",
- "sortHabitrpgJoined": "Sort by Habitica date joined",
- "sortHabitrpgLastLoggedIn": "Sort by last time user logged in",
- "ascendingSort": "Sort Ascending",
- "descendingSort": "Sort Descending",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Create Guild for 4 Gems?",
"leaveGroupCha": "Leave Guild challenges and...",
"confirm": "Confirm",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Not authorised to delete this message!",
"onlyGroupLeaderCanEditTasks": "Not authorised to manage tasks!",
"onlyGroupTasksCanBeAssigned": "Only group tasks can be assigned",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Your chat privileges have been revoked.",
"newChatMessagePlainNotification": "New message in <%= groupName %> by <%= authorName %>. Click here to open the chat page!",
"newChatMessageTitle": "New message in <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cosier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a cancelled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You cannot change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader cannot leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancel Group Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Cancelled Group Plan",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/limited.json b/website/common/locales/en_GB/limited.json
index a048ba38248..638be33e094 100644
--- a/website/common/locales/en_GB/limited.json
+++ b/website/common/locales/en_GB/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndApril": "April 19",
"dateEndMay": "May 17",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/loadingscreentips.json b/website/common/locales/en_GB/loadingscreentips.json
index 32b7fe5e6c0..f8b744df472 100644
--- a/website/common/locales/en_GB/loadingscreentips.json
+++ b/website/common/locales/en_GB/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tip #<%= tipNumber %>",
"tip1": "Check tasks on the go with the Habitica mobile apps.",
- "tip2": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Use emoji to quickly differentiate between your tasks.",
"tip4": "Use the # sign before a task name to make it really big!",
- "tip5": "It’s best to cast buffs in the morning so they last longer.",
- "tip6": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
- "tip7": "Some backgrounds connect perfectly if party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
- "tip8": "Send a PM to someone by clicking the envelope near their name in chat!",
- "tip9": "Visit the Guild Leaders & Challenge Creators Guild for advice on starting a Guild.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "You can win gems by competing in Challenges. New ones are added every day!",
- "tip11": "If you enjoy dressing up your avatar, check out the Costume Carnival Guild.",
- "tip12": "Join the “Challenge... Accepted” Guild for regularly scheduled random challenges.",
- "tip13": "Having more than four Party members increases accountability!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "You can add headers or inspirational quotes to your list as Habits with no (+/-).",
- "tip15": "Add checklists to your To-Dos to increase your rewards!",
- "tip16": "Check out the Data tab for valuable insights on your progress.",
- "tip17": "Using Tags can make an unwieldy task list very manageable!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Habits that are just positive or just negative gradually “fade” and return to yellow.",
- "tip19": "Boost your Intelligence Stat to gain more XP when you complete a task.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Boost your Perception Stat to get more drops and gold.",
"tip21": "Boost your Strength Stat to do more boss damage or get critical hits.",
"tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.",
- "tip23": "Click the bar graph icon on your tasks to see a graph showing your progress.",
- "tip24": "Habitica is Open Source! Ask in the Aspiring Legends Guild if you want to contribute.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.",
- "tip26": "An arrow to the left of someone’s level number means they’re currently buffed.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.",
- "tip28": "Set a Custom Day Start under Settings > Site to control when your day restarts.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your stats!",
"tip30": "You can invite people to Guilds, not just Parties.",
"tip31": "Check out the pre-made lists in the Library of Tasks and Challenges Guild for example tasks.",
- "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Anyone can help.",
- "tip33": "Check out The Bulletin Board guild for news about guilds, challenges, and other player-created events - and announce your own there!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/en_GB/messages.json b/website/common/locales/en_GB/messages.json
index 594dab75ede..3f0f324e203 100644
--- a/website/common/locales/en_GB/messages.json
+++ b/website/common/locales/en_GB/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
"messageHealthAlreadyMin": "Oh no! You have already run out of health so it's too late to buy a health potion, but don't worry - you can revive!",
"armoireEquipment": "<%= image %> You found a piece of rare Equipment in the Armoire: <%= dropText %>! Awesome!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "You have already reported this message",
"messageGroupChatNotFound": "Message not found!",
"messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not found",
diff --git a/website/common/locales/en_GB/npc.json b/website/common/locales/en_GB/npc.json
index 82005639330..2ec6bb8fd6e 100644
--- a/website/common/locales/en_GB/npc.json
+++ b/website/common/locales/en_GB/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Gem",
"typeNotSellable": "Type is not sellable. Must be one of the following <%= acceptedTypes %>",
"userItemsKeyNotFound": "Key not found for user.items <%= type %>",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Path string is required",
"unlocked": "Items have been unlocked",
"alreadyUnlocked": "Full set already unlocked.",
diff --git a/website/common/locales/en_GB/quests.json b/website/common/locales/en_GB/quests.json
index 081a553fb14..055d63d02c7 100644
--- a/website/common/locales/en_GB/quests.json
+++ b/website/common/locales/en_GB/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
- "bossHP": "Boss Health",
+ "bossHP": "Boss HP",
"bossStrength": "Boss Strength",
"rage": "Rage",
"collect": "Collect",
@@ -78,6 +78,7 @@
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
diff --git a/website/common/locales/en_GB/questscontent.json b/website/common/locales/en_GB/questscontent.json
index 92704ac1b8b..05415db9e54 100644
--- a/website/common/locales/en_GB/questscontent.json
+++ b/website/common/locales/en_GB/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Armadillo (Egg)",
"questArmadilloUnlockText": "Unlocks purchasable Armadillo eggs in the Market",
"questCowText": "The Mootant Cow",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "Cow (Egg)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/en_GB/settings.json b/website/common/locales/en_GB/settings.json
index 9a74d96c9e7..4cc78bec9e0 100644
--- a/website/common/locales/en_GB/settings.json
+++ b/website/common/locales/en_GB/settings.json
@@ -65,7 +65,7 @@
"resetText1": "WARNING! This resets many parts of your account. This is highly discouraged, but some people find it useful in the beginning after playing with the site for a short time.",
"resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type your password into the text box below.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copy these for use in third party applications. However, think of your API Token like a password, and do not share it publicly. You may occasionally be asked for your User ID, but never post your API Token where others can see it, including on Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Gifted Subscription",
"giftedSubscriptionInfo": "<%= name %> gifted you a <%= months %> month subscription",
"giftedSubscriptionFull": "Hello <%= username %>, <%= sender %> has sent you <%= monthCount %> months of subscription!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Invited To Party",
"invitedGuild": "Invited To Guild",
"importantAnnouncements": "Reminders to check in to complete tasks and receive prizes",
diff --git a/website/common/locales/en_GB/subscriber.json b/website/common/locales/en_GB/subscriber.json
index 5f804b1b6de..da9bbcf4247 100644
--- a/website/common/locales/en_GB/subscriber.json
+++ b/website/common/locales/en_GB/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Cancel Subscription",
"cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Cancelled Subscription",
"cancelingSubscription": "Canceling the subscription",
"adminSub": "Administrator Subscriptions",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Unknown card type.",
"invalidCoupon": "Invalid coupon code.",
"couponUsed": "Coupon code already used.",
- "noSudoAccess": "You don't have 'sudo' access.",
"couponCodeRequired": "The coupon code is required.",
"eventRequired": "\"req.params.event\" is required.",
"countRequired": "\"req.query.count\" is required.",
diff --git a/website/common/locales/en_GB/tasks.json b/website/common/locales/en_GB/tasks.json
index 72c8a8f4fa0..2c0a622a90c 100644
--- a/website/common/locales/en_GB/tasks.json
+++ b/website/common/locales/en_GB/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Confirm that this Daily wasn't done before applying damage",
"yesterDailiesDescription": "If this setting is applied, Habitica will ask you if you meant to leave the Daily undone before calculating and applying damage to your avatar. This can protect you against unintentional damage.",
"repeatDayError": "Please ensure that you have at least one day of the week selected.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Search titles and descriptions...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/es/backgrounds.json b/website/common/locales/es/backgrounds.json
index 9b21ed77b0d..31dd1fad148 100644
--- a/website/common/locales/es/backgrounds.json
+++ b/website/common/locales/es/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Castillo de la Medianoche",
"backgroundMidnightCastleNotes": "Da un paseo por el Castillo de la Medianoche.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Vuela a través de un Tornado."
+ "backgroundTornadoNotes": "Vuela a través de un Tornado.",
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/es/challenge.json b/website/common/locales/es/challenge.json
index c7ae469df64..e71c0294ba7 100644
--- a/website/common/locales/es/challenge.json
+++ b/website/common/locales/es/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "selectMember": "Select Member",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/es/character.json b/website/common/locales/es/character.json
index 7c1f4d9d9ea..731c73eded3 100644
--- a/website/common/locales/es/character.json
+++ b/website/common/locales/es/character.json
@@ -163,6 +163,7 @@
"dieText": "Has perdido un Nivel, todo tu Oro y una pieza de equipamiento al azar. ¡Levántate Habiteer e inténtalo otra vez! ¡Ataca esos Hábitos negativos, mantente atento para cumplir las tareas Diarias y mantén a la muerte a raya con una Poción de Salud cuando falles!",
"sureReset": "¿Estás seguro? Esto reiniciará tu tipo de personaje y los puntos asignados (los recuperarás todos para reasignarlos), y cuesta 3 Gemas.",
"purchaseFor": "¿Comprar por <%= cost %> Gemas?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "No hay suficiente Maná.",
"invalidTarget": "No puedes lanzar una habilidad a eso.",
"youCast": "Lanzas <%= spell %>.",
diff --git a/website/common/locales/es/communityguidelines.json b/website/common/locales/es/communityguidelines.json
index 8707f17e670..d213df40bb7 100644
--- a/website/common/locales/es/communityguidelines.json
+++ b/website/common/locales/es/communityguidelines.json
@@ -1,6 +1,6 @@
{
"iAcceptCommunityGuidelines": "Estoy de acuerdo en cumplir las Normas de la Comunidad",
- "tavernCommunityGuidelinesPlaceholder": "Recordatorio amable: este es un chat para todas las edades así que, por favor, ¡mantén un lenguaje apropiado! Consulta las Guías de la Comunidad en la barra lateral si tienes alguna duda.",
+ "tavernCommunityGuidelinesPlaceholder": "Amable recordatorio: este es un chat para todas las edades así que, por favor, ¡mantén un lenguaje apropiado! Consulta las Guías de la Comunidad en la barra lateral si tienes alguna duda.",
"commGuideHeadingWelcome": "¡Bienvenido a Habitica!",
"commGuidePara001": "¡Saludos, aventurero! Bienvenido a Habitica, la tierra de la productividad, vida sana y algún grifo arrasador de vez en cuando. Tenemos una alegre comunidad llena de gente apoyándose los unos a los otros en su camino hacia la mejora personal.",
"commGuidePara002": "Para ayudar a mantener a todos a salvo, felices y productivos en la comunidad, tenemos algunas pautas. Las hemos diseñado cuidadosamente para que sean lo más agradable y fáciles de leer posible. Por favor, tómese el tiempo para leerlas.",
diff --git a/website/common/locales/es/content.json b/website/common/locales/es/content.json
index bff0f013edb..ba0845fbd79 100644
--- a/website/common/locales/es/content.json
+++ b/website/common/locales/es/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Yarn",
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "woolen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Encuentra una poción de eclosión para verter en este huevo y eclosionará en <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
"hatchingPotionWhite": "Blanco",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupido",
"hatchingPotionShimmer": "Resplandeciente",
"hatchingPotionFairy": "Hada",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Vierte esto en un huevo y eclosionará como una mascota <%= potText(locale) %>.",
"premiumPotionAddlNotes": "No puede usarse en huevos de mascota de misión.",
"foodMeat": "Carne",
@@ -218,5 +222,6 @@
"foodCandyRed": "Caramelo de canela",
"foodSaddleText": "Silla de Montar",
"foodSaddleNotes": "Convierte instantáneamente una de tus mascotas en una montura.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Dale esto a una mascota y puede convertirse en una robusta montura."
}
\ No newline at end of file
diff --git a/website/common/locales/es/contrib.json b/website/common/locales/es/contrib.json
index 0ab063d9dcd..f1ffefafe3b 100644
--- a/website/common/locales/es/contrib.json
+++ b/website/common/locales/es/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, ¡eres increíble! Ahora eres un contribuidor de nivel <%= level %> por ayudar Habitica. Mira",
"contribLink": "los premios que has ganado por tu colaboración!",
"contribName": "Colaborador",
- "contribText": "Contribuyó a Habitica (código, diseño, arte, asesoramiento legal, documentos, etc). ¿Quieres esta insignia? Entra aquí.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Leer Más",
"kickstartName": "Sponsor de Kickstarter - Nivel <%= key %>$",
"kickstartText": "Respaldó el Proyecto Kickstarter",
diff --git a/website/common/locales/es/front.json b/website/common/locales/es/front.json
index 015e7cebccf..7ed1f763935 100644
--- a/website/common/locales/es/front.json
+++ b/website/common/locales/es/front.json
@@ -30,6 +30,7 @@
"companyAbout": "Cómo funciona",
"companyBlog": "Blog",
"devBlog": "Blog de desarrolladores",
+ "companyContribute": "Contribute",
"companyDonate": "Donar",
"companyPrivacy": "Privacidad",
"companyTerms": "Condiciones",
@@ -252,7 +253,7 @@
"missingNewPassword": "Falta una nueva contraseña.",
"invalidEmailDomain": "No puedes registrar con emails con los siguientes dominios: <%= domains %>",
"wrongPassword": "Contraseña errónea.",
- "incorrectDeletePhrase": "Por favor, escribe ELIMINAR en mayúsculas para borrar tu cuenta.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "La dirección de correo electrónico no es válida.",
"emailTaken": "Ya existe una cuenta con esa dirección de correo electrónico.",
"newEmailRequired": "Falta la nueva dirección de correo electrónico.",
diff --git a/website/common/locales/es/gear.json b/website/common/locales/es/gear.json
index a1a121d67c1..1a4b9fbdfff 100644
--- a/website/common/locales/es/gear.json
+++ b/website/common/locales/es/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Horca de Banquete",
"weaponMystery201411Notes": "Clávasela a tus enemigos o ataca tus comidas favoritas - ¡esta horca versátil vale para todo! No confiere ningún beneficio. Artículo de suscriptor de noviembre 2014.",
"weaponMystery201502Text": "Báculo Reluciente Alado del Amor y También de la Verdad",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armadura",
"armorCapitalized": "Armadura",
"armorBase0Text": "Ropa normal",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Túnica de Mensajero",
"armorMystery201402Notes": "Reluciente y fuerte, esta túnica tiene muchos bolsillos para llevar cartas. No proporciona ningún beneficio. Artículo de suscriptor de febrero 2014.",
"armorMystery201403Text": "Armadura del Caminante del Bosque",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Traje Steampunk",
"armorMystery301404Notes": "¡Sofisticado y elegante! No otorga ningún beneficio. Artículo de suscriptor de febrero 3015.",
"armorMystery301703Text": "Traje de Pavo Real Steampunk",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Equipo de cabeza",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Casco de Guerrero de Arco Iris",
"headSpecialGaymerxNotes": "Con motivo de la celebración por la Conferencia GaymerX, ¡este casco especial está decorado con un radiante y colorido estampado arco iris! GaymerX es una convención de juegos que celebra a la gente LGBTQ y a los videojuegos, y está abierta a todo el público.",
"headMystery201402Text": "Casco alado",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "¿Necesitas manos extra para tus tareas? ¡Este translúcido yelmo tiene unos pocos tentáculos que ofrecerán esa ayuda! No proporciona ningún beneficio. Artículo del suscriptor Julio 2017.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Sombrero de copa sofisticado",
"headMystery301404Notes": "¡Un sofisticado sombrero de copa solo para los más refinados caballeros! No otorga ningún beneficio. Artículo de Suscriptor de Enero del 3015",
"headMystery301405Text": "Sombrero de copa básico",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "¡Este yelmo de poderoso acero te ayudará a vencer en tu batalla por se productivo, feliz y saludable! Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto Anti-Procastinación (Objeto 1 de 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Destructora de Resoluciones",
"shieldMystery201601Notes": "Esta espada se puede usar para desviar a todas las distracciones. No otorga ningún beneficio. Artículo de Suscriptor de Enero 2016.",
"shieldMystery201701Text": "Escudo para congelar el tiempo",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Esta capa tiene bolsillos secretos para esconder todo el oro que le robes a tus tareas. No proporciona ningún beneficio. Artículo del suscriptor Junio 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "Accesorio de Cabeza",
"headAccessoryCapitalized": "Accesorio para la cabeza",
"accessories": "Accesorios",
diff --git a/website/common/locales/es/generic.json b/website/common/locales/es/generic.json
index 8681ee244b1..ff4ce6b5b6f 100644
--- a/website/common/locales/es/generic.json
+++ b/website/common/locales/es/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Salvador de Dilatoria",
"achievementDilatoryText": "¡Ayudó a derrotar al Dread Drag'on de Dilatoria durante el evento Summer Splash del 2014!",
"costumeContest": "Participante disfrazado",
- "costumeContestText": "Ha participado en el concurso de disfraces de Habitoween. Puedes ver algunas de las candidaturas en el blog de Habitica.",
- "costumeContestTextPlural": "Participó en <%= count %> Concursos de Disfraces de Habitoween. ¡Mira algunas de las candidaturas en el blog de Habitica!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Miembro desde",
"lastLoggedIn": "- Última conexión el",
"notPorted": "Esta función aún no se ha traído del sitio original.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Tema Airu",
"audioTheme_beatscribeNesTheme": "Tema Beatscribe's NES",
"audioTheme_arashiTheme": "Tema Arashi",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Hacer una pregunta",
"reportBug": "Notificar un error",
"HabiticaWiki": "La wiki de Habitica",
diff --git a/website/common/locales/es/groups.json b/website/common/locales/es/groups.json
index 8b1d0080f64..0197f54c69d 100644
--- a/website/common/locales/es/groups.json
+++ b/website/common/locales/es/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Mensaje opcional",
"yesRemove": "Sí, elimínalos",
"foreverAlone": "No pueden gustarte tus propios mensajes. No seas esa persona.",
- "sortLevel": "Ordenar por nivel",
- "sortRandom": "Ordenar al azar",
- "sortPets": "Ordenar por número de mascotas",
- "sortName": "Ordenar por nombre del personaje",
- "sortBackgrounds": "Ordenar por fondo",
- "sortHabitrpgJoined": "Ordenar por fecha de regisitro a Habitica",
- "sortHabitrpgLastLoggedIn": "Ordenar por última vez activo",
- "ascendingSort": "Ordenar Ascendente",
- "descendingSort": "Ordenar Descendente",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "¿Crear Gremio por 4 gemas?",
"leaveGroupCha": "Abandonar los desafíos del Gremio y...",
"confirm": "Confirmar",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "¡No estás autorizado para borrar este mensaje!",
"onlyGroupLeaderCanEditTasks": "¡No estás autorizado para manejar las tareas!",
"onlyGroupTasksCanBeAssigned": "Sólo pueden ser asignadas tareas del grupo.",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Tus privilegios para chatear han sido revocados.",
"newChatMessagePlainNotification": "Nuevo mensaje en <%= groupName %> de <%= authorName %>. ¡Haz click aquí para abrir la pagina de chat!",
"newChatMessageTitle": "Nuevo mensaje en <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Divertidos Extras",
"enterprisePlansButton": "Pregunta sobre Planes de Empresa",
"enterprisePlansDescription": "¿Buscando instalar mayores funcionalidades? Mira si nuestros Planes de Empresa son adecuados para ti.",
- "enterprisePlansEmailSubject": "Preguntas relativas a Planes Empresariales",
"familyPlansButton": "Date de alta en una lista de correo del Plan Familiar",
"familyPlansDescription": "¿Quieres una solución más cómoda para gestionar tu hogar? ¡El Plan Familiar está en camino!",
"createAGroup": "Crear un Grupo",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Estás a punto de unirte a un grupo con un plan cancelado. NO recibirás una subscripción gratuita",
"cannotChangeLeaderWithActiveGroupPlan": "No puedes cambiar de líder mientras el grupo tiene un plan activo.",
"leaderCannotLeaveGroupWithActiveGroup": "Un líder no puede abandonar un grupo mientras el grupo tenga un plan activo",
- "youHaveGroupPlan": "Tienes una suscripción gratuita porque eres miembro de un grupo que tiene un Plan de Grupo. Cualquier saldo de meses extra de suscripción que tengas se aplicará al final del plan de grupo.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancelar plan de grupo",
"confirmCancelGroupPlan": "¿Estás seguro de que quieres cancelar el plan de grupo y eliminar los beneficios de todos los miembros, incluyendo sus suscripciones gratuitas?",
"canceledGroupPlan": "Plan de grupo cancelado",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/es/limited.json b/website/common/locales/es/limited.json
index f8008fa95e4..f2924771558 100644
--- a/website/common/locales/es/limited.json
+++ b/website/common/locales/es/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Disponible para su compra hasta el <%= date(locale) %>.",
"dateEndApril": "19 de abril",
"dateEndMay": "17 de mayo",
@@ -120,5 +124,9 @@
"dateEndAugust": "Agosto 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "Lote"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "Lote",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/es/loadingscreentips.json b/website/common/locales/es/loadingscreentips.json
index 89c320f9f51..e172cf13934 100644
--- a/website/common/locales/es/loadingscreentips.json
+++ b/website/common/locales/es/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Consejo n.º <%= tipNumber %>",
"tip1": "Consulta tus tareas desde cualquier parte con las aplicaciones de Habitica para móviles.",
- "tip2": "Si llegas al nivel 100, desbloquearás gratis el Orbe de Renacimiento y ¡podrás empezar una nueva aventura!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Usa emojis para distinguir rápidamente tus tareas.",
"tip4": "Escribe el signo # antes del nombre de una tarea para que se muestre en letras muy grandes.",
- "tip5": "Es mejor lanzar los apoyos por la mañana, para que duren más.",
- "tip6": "De vez en cuando, revisa tus tareas para comprobar que están al día.",
- "tip7": "Algunos fondos se conectan perfectamente, si es que los miembros del grupo usan el mismo fondo. Por ejemplo: Lago de montaña, Pagodas y Colinas ondulantes.",
- "tip8": "Si quieres enviar un mensaje privado a alguien, haz clic en el sobre que aparece junto a su nombre en el chat.",
- "tip9": "Visita los Lideres de Gremios y el Gremio de Creadores de Desafíos por consejo para comenzar un gremio.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Puedes ganar gemas participando en desafíos. ¡Todos los días se añade alguno nuevo!",
- "tip11": "Si te gusta disfrazar a tu personaje, echa un vistazo al gremio \"Costume Carnival\".",
- "tip12": "Únete al gremio \"Desafio..Aceptado\" para desafíos aleatorios programados regularmente.",
- "tip13": "Tener mas de cuatro miembros en tu grupo aumenta la responsabilidad!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Puedes añadir títulos de sección o frases inspiradoras a tu lista: añádelos como hábitos y quítales los signos + y -.",
- "tip15": "Añade listas de casillas a tus tareas pendientes para obtener más recompensas.",
- "tip16": "Echa una ojeada a la pestaña Datos para ver información muy útil sobre tus avances.",
- "tip17": "Si tu lista de tareas es difícil de gestionar, con las etiquetas te resultará mucho más fácil.",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Los hábitos que son solo positivos o solo negativos, con el tiempo, tienden a volver a ser de color amarillo.",
- "tip19": "Aumenta tu atributo de inteligencia si quieres ganar más experiencia al completar tareas.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Aumenta tu atributo de percepción si quieres conseguir más oro y más botines.",
"tip21": "Aumenta tu atributo de fuerza si quieres dañar más a los jefes o conseguir golpes críticos.",
"tip22": "Aumenta tu atributo de constitución para disminuir el daño recibido por Tareas Diarias incompletas.",
- "tip23": "En tus tareas, haz clic en el icono del gráfico de barras para ver un gráfico de tu progreso.",
- "tip24": "¡Habitica es de código libre! Si quieres colaborar, pregunta en el gremio \"Aspiring Legends\".",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "Las cuatros Grandes Galas estacionales comienzan cercanas a los solsticios y los equinoccios.",
- "tip26": "Si ves una flecha a la izquierda del número que indica el nivel de alguien, significa que ese usuario tiene un apoyo.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "¿Hiciste una tarea Diaria ayer pero olvidaste completarla? ¡No te preocupes! Con Registrar Actividad de Ayer, tendrás la oportunidad de marcar lo que hiciste justo antes de empezar tu nuevo día.",
- "tip28": "Si quieres controlar en qué momento se reinicia tu día, configura un inicio de día personalizado en Ajustes > Sitio web.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Si cumples todas tus tareas diarias, ¡conseguirás un apoyo de día perfecto que mejorará tus atributos el día siguiente!",
"tip30": "Puedes invitar a otras personas a los gremios, no solo a grupos.",
"tip31": "Echa un vistazo a las listas pre-hechas del gremio \"Library of Tasks and Challenges\" para ver ejemplos de tareas.",
- "tip32": "Gran parte del código, los diseños y los textos de Habitica es obra de colaboradores voluntarios. Todo el mundo puede ayudar.",
- "tip33": "Échale un vistazo al gremio \"The Bulletin Board\" para enterarte de las últimas noticias sobre gremios, desafíos y otros eventos creados por los jugadores. También puedes anunciar los que hayas creado tú."
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/es/messages.json b/website/common/locales/es/messages.json
index 882a2a8827f..10d48ef150a 100644
--- a/website/common/locales/es/messages.json
+++ b/website/common/locales/es/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "¡Has encontrado la misión \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Compraste este equipo en el pasado, pero no lo tienes actualmente. Puedes comprarlo de nuevo en la columna de recompensas de la página de tareas.",
"messageAlreadyOwnGear": "Ya posees este objeto. Para equiparlo has de ir a la página de equipo.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Ya tienes el máximo de salud.",
"messageHealthAlreadyMin": "¡Oh no! Ya has perdido completamente tu salud, por lo que es demasiado tarde para comprar una poción, pero no te preocupes - ¡puedes resucitar!",
"armoireEquipment": "<%= image %> Has encontrado un objeto de equipamiento raro en el armario: <%= dropText %>! ¡Genial!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Has reportado este mensaje",
"messageGroupChatNotFound": "¡Mensaje no encontrado!",
"messageGroupChatAdminClearFlagCount": "¡Sólo un administrador puede borrar la cuenta!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "¡Oops, parece que estas escribiendo demasiados mensajes! Por favor, espera un minuto y vuelve a intentarlo. El Chat de la Taberna solo puede procesar 200 mensajes a la vez, por ello, Habitica recomienda escribir mensajes más largos y razonados, al igual que respuestas combinadas. No puedo esperar a leer lo que tienes que decir :) .",
"messageUserOperationProtected": "la ruta <%= operation %> no se guardó porque es una ruta protegida.",
"messageUserOperationNotFound": "<%= operation %> no encontrado",
diff --git a/website/common/locales/es/npc.json b/website/common/locales/es/npc.json
index 8f1f2f2ae34..6e8e3daa8c4 100644
--- a/website/common/locales/es/npc.json
+++ b/website/common/locales/es/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Gema.",
"typeNotSellable": "Tipo no vendible. Debe ser alguno de los siguientes <%= acceptedTypes %>",
"userItemsKeyNotFound": "Llave no encontrada para user.items <%= type %>",
- "userItemsNotEnough": "No se han encontrado suficientes objetos para <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "La ruta cadena es requerida",
"unlocked": "Los objetos han sido desbloqueados",
"alreadyUnlocked": "Conjunto completo ya desbloqueado.",
diff --git a/website/common/locales/es/quests.json b/website/common/locales/es/quests.json
index b4c393f611b..5816746b041 100644
--- a/website/common/locales/es/quests.json
+++ b/website/common/locales/es/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> artículos de misión encontrados",
"questDamage": "+ <%= val %> de daño al jefe",
"begin": "Comenzar",
- "bossHP": "Salud del Jefe",
+ "bossHP": "Boss HP",
"bossStrength": "Fuerza del Jefe",
"rage": "Furia",
"collect": "Recoger",
@@ -78,6 +78,7 @@
"mustLvlQuest": "¡Necesitas ser nivel <%= level %> para comprar esta misión!",
"mustInviteFriend": "Para conseguir esta misión, invita a un amigo a tu grupo. ¿Quieres invitar a alguien ahora?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "¿Estás seguro que quieres cancelar esta misión? Todas las invitaciones aceptadas se perderán. El dueño de la misión se quedará con el pergamino usado.",
"sureAbort": "¿Estás seguro que quieres abandonar esta misión? Abortará para todos los componentes del grupo y todo progreso se perderá. El pergamino de la misión volverá a su dueño.",
"doubleSureAbort": "¿Estás totalmente seguro? ¡Asegurate de que no te vayan a odiar para siempre!",
diff --git a/website/common/locales/es/questscontent.json b/website/common/locales/es/questscontent.json
index 4024c0933af..acc1b3495ef 100644
--- a/website/common/locales/es/questscontent.json
+++ b/website/common/locales/es/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Armadillo (Huevo)",
"questArmadilloUnlockText": "Desbloquear la compra de huevos de Armadillo en el Mercado",
"questCowText": "La Vaca Muutante",
- "questCowNotes": "Ha sido un largo y caluroso día en las Granjas Sparring, y nada te gustaría más que un largo trago de agua y dormir algo. Estás ahí soñando despierto cuando @Soloana de pronto exclama, \"¡Corred todos! ¡El la vaca ganadora ha sido muutada!\"
@eevachu traga saliva. \"Debe de ser uno de nuestros malos hábitos, que la han infectado.\"
\"¡Rápido!\" dice Feralem Tau. \"Hagamos algo antes de que las otras vacas muuten, también.\"
Has escuchado suficiente. No más soñar despierto -- ¡es hora de poner esos malos hábitos bajo control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "Ordeñas tus buenos hábitos todo lo que puedes mientras que la vaca vuelve a su forma original. La vaca te mira con sus preciosos ojos marrones y acerca de un empujoncito tres huevos.
@fuzzytrees se ríe y te da los huevos, \"A lo mejor sigue muutada si hay terneros en esos huevos. ¡Pero confío en que seguirás con tus buenos hábitos cuando los críes!\"",
"questCowBoss": "Vaca Muutante",
"questCowDropCowEgg": "Vaca (Huevo)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/es/settings.json b/website/common/locales/es/settings.json
index 037166c483c..d3fe9755f9a 100644
--- a/website/common/locales/es/settings.json
+++ b/website/common/locales/es/settings.json
@@ -65,7 +65,7 @@
"resetText1": "¡PELIGRO! Eso resetea muchas partes de tu cuenta. Esto es altamente desalentador, pero algunas personas lo encuentran útil al principio después de jugar durante un tiempo.",
"resetText2": "Perderás todos tus niveles, oro y puntos de experiencia. Todas tus tareas(excepto aquellas de desafíos) serán borradas permanentemente y perderas todos sus datos históricos. Perderás todo tu equipamiento pero serás capaz de volver a comprarlo todo, incluyendo todo el equipamiento de edición limitada o los objetos misteriosos de subscripción que ya posees (necesitarás estar en la clase correcta para volver a comprar el equipamiento específico de clase). Mantendrás tu clase actual, junto con tus mascotas y monturas. Quizás prefieras usar un Orbe de Renacimiento en su lugar, que es un método más seguro y por el cual se preservarán tus tareas y equipamientos.",
"deleteLocalAccountText": "¿Seguro? Tu cuenta se eliminará para siempre y nunca podrá recuperarse. Si más tarde quieres volver a usar Habitica, tendrás que crear una nueva cuenta. No se te reembolsarán las gemas que tengas ni las que hayas gastado. Si estás totalmente seguro, escribe tu contraseña en el siguiente cuadro de texto.",
- "deleteSocialAccountText": "¿Estás seguro? ¡Esto borrará tu cuenta para siempre y jamás podrá ser restaurada! Necesitarás crear una cuenta nueva para volver a usar Habitica de nuevo. Las Gemas gastadas o almacenadas no serán devueltas. Si estás absolutamente convencido, escribe \"ELIMINAR\" en el cuadro de abajo.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v. 3",
"APIText": "Copie esto para usarlo en aplicaciones de terceros. Sin embargo, pensá en tu API Token como una contraseña, no la compartas en público. En ocasiones se te solicitará tu ID de Usuario, pero nunca publiques tu API Token donde otros puedan verla, incluyendo Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Suscripción Regalada",
"giftedSubscriptionInfo": "<%= name %> te ha regalado una suscripción de <%= months %> meses",
"giftedSubscriptionFull": "¡Hola <%= username %>, <%= sender %> te ha enviado <%= monthCount %> meses de suscripción!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Invitado al Grupo",
"invitedGuild": "Invitado al Gremio",
"importantAnnouncements": "Recordatorios para entrar en Habitica, completar tareas y recibir premios",
diff --git a/website/common/locales/es/subscriber.json b/website/common/locales/es/subscriber.json
index 8179f4ed7d9..25fce41a540 100644
--- a/website/common/locales/es/subscriber.json
+++ b/website/common/locales/es/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Cancelar suscripción",
"cancelSubInfoGoogle": "Por favor, dirígete a la sección \"Cuenta\" > \"Suscripciones\" de la aplicación Google Play Store para cancelar tu suscripción o para ver la fechar de anulación si ya la has cancelado. Esta pantalla no es capaz de mostrarte si tu suscripción ha sido cancelada.",
"cancelSubInfoApple": "Por favor, sigue las instrucciones oficiales de Apple para cancelar tu suscripción o ver la fecha de finalización de tu suscripción si ya la has cancelado. En esta pantalla no es posible mostrar si tu sucripción ha sido cancelada.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Suscripciones canceladas",
"cancelingSubscription": "Cancelando la suscripción",
"adminSub": "Suscripciones de administradores",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "El Conjunto Steampunk",
"mysterySet301405": "Accesorios Steampunk",
"mysterySet301703": "Conjunto de Pavo real Steampunk",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Tipo de tarjeta desconocido.",
"invalidCoupon": "El código del cupón no es válido.",
"couponUsed": "El código del cupón ya ha sido usado.",
- "noSudoAccess": "No tienes acceso \"sudo\".",
"couponCodeRequired": "El código del cupón es necesario.",
"eventRequired": "\"req.params.event\" es obligatorio.",
"countRequired": "\"req.query.count\" es obligatorio.",
diff --git a/website/common/locales/es/tasks.json b/website/common/locales/es/tasks.json
index 67cad162324..af420352c13 100644
--- a/website/common/locales/es/tasks.json
+++ b/website/common/locales/es/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Confirma que esta Tarea Diaria no ha sido realizada antes de aplicar el daño",
"yesterDailiesDescription": "Si esta opción es aplicada, Habitica te preguntará si de verdad querías dejar la Tarea Diaria sin marcar antes de calcular y aplicar el daño a tu personaje. Esto puede protegerte de daño no intencionado.",
"repeatDayError": "Por favor, asegúrate de que seleccionas al menos un día de la semana.",
- "searchTasks": "Buscar títulos y descripciones..."
+ "searchTasks": "Buscar títulos y descripciones...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/backgrounds.json b/website/common/locales/es_419/backgrounds.json
index 85654d7cbac..c3aee42c4e3 100644
--- a/website/common/locales/es_419/backgrounds.json
+++ b/website/common/locales/es_419/backgrounds.json
@@ -181,16 +181,16 @@
"backgroundWaterfallRockNotes": "Salpica en una Piedra de la Cascada",
"backgrounds072016": "CONJUNTO 26: Lanzado en julio 2016",
"backgroundAquariumText": "Acuario",
- "backgroundAquariumNotes": "Bob en un acuario",
+ "backgroundAquariumNotes": "Muévete en un acuario.",
"backgroundDeepSeaText": "Mar profundo",
"backgroundDeepSeaNotes": "Sumérgete al Mar Profundo",
"backgroundDilatoryCastleText": "Castillo de Tardanza",
- "backgroundDilatoryCastleNotes": "Nadete por el Castillo de Tardanza.",
+ "backgroundDilatoryCastleNotes": "Nada por el Castillo de Tardanza.",
"backgrounds082016": "CONJUNTO 27: Lanzado en agosto del 2016",
- "backgroundIdyllicCabinText": "Cabaña Idilica",
- "backgroundIdyllicCabinNotes": "Retírate a una cabaña idilica.",
- "backgroundMountainPyramidText": "Piramide de montaña",
- "backgroundMountainPyramidNotes": "Escala los muchos escalones de una piramide de montaña.",
+ "backgroundIdyllicCabinText": "Cabaña Idílica",
+ "backgroundIdyllicCabinNotes": "Retírate a una Cabaña Idílica.",
+ "backgroundMountainPyramidText": "Piramide de Montaña",
+ "backgroundMountainPyramidNotes": "Escala los muchos escalones de una Piramide de Montaña.",
"backgroundStormyShipText": "Barco Tormentoso.",
"backgroundStormyShipNotes": "Mantente firme contra viento y marea a bordo de un Barco Tormentoso.",
"backgrounds092016": "CONJUNTO 28: Lanzado en septiembre del 2016",
@@ -199,116 +199,130 @@
"backgroundFarmhouseText": "Granja",
"backgroundFarmhouseNotes": "Saluda los animales en tu camino a la Granja.",
"backgroundOrchardText": "Huerta",
- "backgroundOrchardNotes": "Recoge una fruta madura en una Huerta",
- "backgrounds102016": "Conjunto 29: Lanzado en octubre del 2016",
+ "backgroundOrchardNotes": "Recoge fruta madura en una Huerta",
+ "backgrounds102016": "CONJUNTO 29: Lanzado en octubre del 2016",
"backgroundSpiderWebText": "Telaraña",
- "backgroundSpiderWebNotes": "Atrapado en la Telaraña",
+ "backgroundSpiderWebNotes": "Queda atrapado en una Telaraña.",
"backgroundStrangeSewersText": "Extrañas Alcantarillas",
- "backgroundStrangeSewersNotes": "Atravezando Extrañas Alcantarillas",
+ "backgroundStrangeSewersNotes": "Deslízate por las Extrañas Alcantarillas",
"backgroundRainyCityText": "Ciudad Lluviosa",
- "backgroundRainyCityNotes": "Chapotea en una Ciudad Lluviosa",
- "backgrounds112016": "Conjunto 30: Lanzado en noviembre del 2016",
+ "backgroundRainyCityNotes": "Chapotea a través de una Ciudad Lluviosa.",
+ "backgrounds112016": "CONJUNTO 30: Lanzado en noviembre del 2016",
"backgroundMidnightCloudsText": "Nubes de Medianoche",
- "backgroundMidnightCloudsNotes": "Vuela a través de las Nubes de Medianoche ",
+ "backgroundMidnightCloudsNotes": "Vuela a través de las Nubes de Medianoche.",
"backgroundStormyRooftopsText": "Tejados Tormentosos",
- "backgroundStormyRooftopsNotes": "Arrástrate por los Tejados Tormentosos",
+ "backgroundStormyRooftopsNotes": "Deslízate por Tejados Tormentosos.",
"backgroundWindyAutumnText": "Otoño Ventoso",
- "backgroundWindyAutumnNotes": "Persigue hojas durante el Otoño Ventoso",
- "incentiveBackgrounds": "Set de Fondos Planos",
+ "backgroundWindyAutumnNotes": "Persigue hojas durante un Otoño Ventoso.",
+ "incentiveBackgrounds": "Conjunto de Fondos Simples",
"backgroundVioletText": "Violeta",
- "backgroundVioletNotes": "Un vibrante fondo violeta.",
+ "backgroundVioletNotes": "Un fondo violeta vibrante.",
"backgroundBlueText": "Azul",
- "backgroundBlueNotes": "Un básico fondo azulado",
+ "backgroundBlueNotes": "Un fondo azul atrevido.",
"backgroundGreenText": "Verde",
- "backgroundGreenNotes": "Un gran fondo verde",
+ "backgroundGreenNotes": "Un fondo verde vetusto.",
"backgroundPurpleText": "Morado",
- "backgroundPurpleNotes": "Un placentero fondo Morado",
+ "backgroundPurpleNotes": "Un fondo morado moderno.",
"backgroundRedText": "Rojo",
- "backgroundRedNotes": "Un fondo rojo radiante",
+ "backgroundRedNotes": "Un fondo rojo radiante.",
"backgroundYellowText": "Amarillo",
- "backgroundYellowNotes": "Un sabroso fondo Amarillo",
- "backgrounds122016": "Conjunto 31: Lanzado en diciembre 2016",
- "backgroundShimmeringIcePrismText": "Brillantes Prismas de Hielo",
- "backgroundShimmeringIcePrismNotes": "Baila entre los Brillantes Prismas de Hielo",
+ "backgroundYellowNotes": "Un fondo amarillo adorable.",
+ "backgrounds122016": "CONJUNTO 31: Lanzado en diciembre 2016",
+ "backgroundShimmeringIcePrismText": "Prismas de Hielo Resplandeciente",
+ "backgroundShimmeringIcePrismNotes": "Baila a través de los Prismas de Hielo Resplandeciente.",
"backgroundWinterFireworksText": "Fuegos Artificiales de Invierno",
- "backgroundWinterFireworksNotes": "Lanza los Fuegos Artificiales de Invierno",
+ "backgroundWinterFireworksNotes": "Lanza los Fuegos Artificiales de Invierno.",
"backgroundWinterStorefrontText": "Tienda de Invierno",
- "backgroundWinterStorefrontNotes": "Compra regalos en la Tienda de Invierno",
+ "backgroundWinterStorefrontNotes": "Compra regalos en la Tienda de Invierno.",
"backgrounds012017": "CONJUNTO 32: Lanzado en enero 2017",
- "backgroundBlizzardText": "Tormenta de nieve",
- "backgroundBlizzardNotes": "Sobrevive a una feroz Tormenta de Nieve.",
+ "backgroundBlizzardText": "Tormenta de Nieve",
+ "backgroundBlizzardNotes": "Desafía una feroz Tormenta de Nieve.",
"backgroundSparklingSnowflakeText": "Brillante Copo de Nieve",
"backgroundSparklingSnowflakeNotes": "Deslizate en un Brillante Copo de Nieve.",
"backgroundStoikalmVolcanoesText": "Volcanes Stoïkalm",
- "backgroundStoikalmVolcanoesNotes": "Explora los volcanes Stoïkalm.",
+ "backgroundStoikalmVolcanoesNotes": "Explora los Volcanes Stoïkalm.",
"backgrounds022017": "CONJUNTO 33: Lanzado en Febrero 2017",
- "backgroundBellTowerText": "Torre de la Campana",
- "backgroundBellTowerNotes": "Escala a la Torre de la Campana.",
- "backgroundTreasureRoomText": "Sala del Tesoro.",
+ "backgroundBellTowerText": "Campanario",
+ "backgroundBellTowerNotes": "Sube al Campanario.",
+ "backgroundTreasureRoomText": "Sala del Tesoro",
"backgroundTreasureRoomNotes": "Disfruta las riquezas de una Sala del Tesoro.",
"backgroundWeddingArchText": "Arco de Boda",
"backgroundWeddingArchNotes": "Posa bajo el Arco de Boda.",
"backgrounds032017": "CONJUNTO 34: Lanzado en marzo 2017",
- "backgroundMagicBeanstalkText": "Tallo de frijoles mágico",
- "backgroundMagicBeanstalkNotes": "Ascender un tallo de frijoles mágico",
+ "backgroundMagicBeanstalkText": "Tallo de Frijoles Mágicos",
+ "backgroundMagicBeanstalkNotes": "Ascender un Tallo de Frijoles Mágicos.",
"backgroundMeanderingCaveText": "Cueva Serpenteante.",
"backgroundMeanderingCaveNotes": "Explora la Cueva Serpenteante.",
- "backgroundMistiflyingCircusText": "Desconcertante circo volador",
- "backgroundMistiflyingCircusNotes": "Parranda en el desconcertante circo volador",
+ "backgroundMistiflyingCircusText": "Circo Volador Perplégico",
+ "backgroundMistiflyingCircusNotes": "Pasea en el Circo Volador Perplégico.",
"backgrounds042017": "CONJUNTO 35: Lanzado en abril 2017",
"backgroundBugCoveredLogText": "Tronco Cubierto de Insectos",
"backgroundBugCoveredLogNotes": "Investiga un Tronco Cubierto de Insectos",
"backgroundGiantBirdhouseText": "Pajarera Gigante",
"backgroundGiantBirdhouseNotes": "Percha en una Pajarera Gigante",
"backgroundMistShroudedMountainText": "Montaña Cubierta de Niebla",
- "backgroundMistShroudedMountainNotes": "Cumbre de una Montaña Cubierta de Niebla",
+ "backgroundMistShroudedMountainNotes": "Llega a la cumbre de una Montaña Cubierta de Niebla.",
"backgrounds052017": "CONJUNTO 36: Lanzado en Mayo 2017",
- "backgroundGuardianStatuesText": "Estatuas de guardianes",
- "backgroundGuardianStatuesNotes": "Mantén la guardia frente la las estatuas de guardianes",
- "backgroundHabitCityStreetsText": "Calles de la Ciudad Hábito",
- "backgroundHabitCityStreetsNotes": "Explora las calles de la Ciudad Hábito",
- "backgroundOnATreeBranchText": "Sobre la rama de un árbol",
- "backgroundOnATreeBranchNotes": "Pósate sobre la rama de un árbol",
+ "backgroundGuardianStatuesText": "Estatuas Guardianes",
+ "backgroundGuardianStatuesNotes": "Mantén la guardia frente a Estatuas Guardianes.",
+ "backgroundHabitCityStreetsText": "Calles de la Ciudad del Hábito",
+ "backgroundHabitCityStreetsNotes": "Explora las calles de la Ciudad del Hábito.",
+ "backgroundOnATreeBranchText": "Sobre la Rama de un Árbol",
+ "backgroundOnATreeBranchNotes": "Pósate Sobre la Rama de un Árbol.",
"backgrounds062017": "CONJUNTO 37: Lanzado en junio 2017",
- "backgroundBuriedTreasureText": "Tesoro enterrado",
- "backgroundBuriedTreasureNotes": "Desentierra un tesoro oculto",
- "backgroundOceanSunriseText": "Amanecer en el océano",
- "backgroundOceanSunriseNotes": "Admira el amanecer en el océano",
- "backgroundSandcastleText": "Castillo de arena",
- "backgroundSandcastleNotes": "Reina sobre un castillo de arena",
+ "backgroundBuriedTreasureText": "Tesoro Enterrado",
+ "backgroundBuriedTreasureNotes": "Desentierra un Tesoro Enterrado.",
+ "backgroundOceanSunriseText": "Amanecer Marino",
+ "backgroundOceanSunriseNotes": "Admira un Amanecer Marino.",
+ "backgroundSandcastleText": "Castillo de Arena",
+ "backgroundSandcastleNotes": "Reina sobre un Castillo de Arena.",
"backgrounds072017": "CONJUNTO 38: Lanzado en julio 2017",
- "backgroundGiantSeashellText": "Concha marina gigante",
- "backgroundGiantSeashellNotes": "Descansa en una concha marina gigante",
- "backgroundKelpForestText": "Bosque de algas",
- "backgroundKelpForestNotes": "Nada a través de un bosque de algas",
- "backgroundMidnightLakeText": "Lago a medianoche",
- "backgroundMidnightLakeNotes": "Descansa en un lago a medianoche",
+ "backgroundGiantSeashellText": "Concha Marina Gigante",
+ "backgroundGiantSeashellNotes": "Descansa en una Concha Marina Gigante",
+ "backgroundKelpForestText": "Bosque de Algas",
+ "backgroundKelpForestNotes": "Nada a través de un Bosque de Algas.",
+ "backgroundMidnightLakeText": "Lago de Medianoche",
+ "backgroundMidnightLakeNotes": "Descansa cerca a un Lago de Medianoche.",
"backgrounds082017": "CONJUNTO 39: Lanzado en Agosto 2017",
- "backgroundBackOfGiantBeastText": "Espalda de una Bestia Gigante",
- "backgroundBackOfGiantBeastNotes": "Monta en la espalda de una Bestia Gigante",
+ "backgroundBackOfGiantBeastText": "Lomo de una Bestia Gigante",
+ "backgroundBackOfGiantBeastNotes": "Monta en el Lomo de una Bestia Gigante.",
"backgroundDesertDunesText": "Dunas del Desierto",
- "backgroundDesertDunesNotes": "Explora valientemente las Dunas del Desierto.",
+ "backgroundDesertDunesNotes": "Sé audaz y explora las Dunas del Desierto.",
"backgroundSummerFireworksText": "Fuegos Artificiales de Verano",
"backgroundSummerFireworksNotes": "¡Celebra el Día del Nombramiento de Habitica con Fuegos Artificiales de Verano! ",
"backgrounds092017": "CONJUNTO 40: Lanzado en septiembre 2017",
- "backgroundBesideWellText": "Al lado de un Pozo",
- "backgroundBesideWellNotes": "Pasea al Lado del Poso",
- "backgroundGardenShedText": "Cobertizo de jardín",
- "backgroundGardenShedNotes": "Trabaja en un Cobertizo de Jardín",
+ "backgroundBesideWellText": "Al Lado de un Pozo",
+ "backgroundBesideWellNotes": "Pasea al Lado de un Poso.",
+ "backgroundGardenShedText": "Cobertizo",
+ "backgroundGardenShedNotes": "Trabaja en un Cobertizo.",
"backgroundPixelistsWorkshopText": "Taller del Pixelista",
- "backgroundPixelistsWorkshopNotes": "Crea obras de arte en el Taller del Pixelista",
+ "backgroundPixelistsWorkshopNotes": "Crea obras de arte en el Taller del Pixelista.",
"backgrounds102017": "CONJUNTO 41: Lanzado en octubre 2017",
- "backgroundMagicalCandlesText": "Velas mágicas",
- "backgroundMagicalCandlesNotes": "Disfruta de la luz de las Velas Mágicas",
- "backgroundSpookyHotelText": "Hotel Escalofriante",
- "backgroundSpookyHotelNotes": "Escabullirse por el salón de un Hotel Escalofriante",
+ "backgroundMagicalCandlesText": "Velas Mágicas",
+ "backgroundMagicalCandlesNotes": "Disfruta del resplandor de las Velas Mágicas.",
+ "backgroundSpookyHotelText": "Hotel Espeluznante",
+ "backgroundSpookyHotelNotes": "Escabúllete por el corredor de un Hotel Espeluznante.",
"backgroundTarPitsText": "Pozos de Alquitrán",
"backgroundTarPitsNotes": "Ir de puntas de pie por los Pozos de Alquitrán.",
- "backgrounds112017": "SET 42: Released November 2017",
- "backgroundFiberArtsRoomText": "Fiber Arts Room",
- "backgroundFiberArtsRoomNotes": "Spin thread in a Fiber Arts Room.",
- "backgroundMidnightCastleText": "Midnight Castle",
- "backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
+ "backgrounds112017": "CONJUNTO 42: Lanzando en noviembre 2017",
+ "backgroundFiberArtsRoomText": "Salón de Artes de Fibra",
+ "backgroundFiberArtsRoomNotes": "Hila en un Salón de Artes de Fibra",
+ "backgroundMidnightCastleText": "Castillo de Medianoche",
+ "backgroundMidnightCastleNotes": "Pasea por el Castillo de Medianoche",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Fly through a Tornado."
+ "backgroundTornadoNotes": "Vuela atravesando un tornado.",
+ "backgrounds122017": "CONJUNTO 43: Lanzado en diciembre de 2017",
+ "backgroundCrosscountrySkiTrailText": "Pista de Esquí",
+ "backgroundCrosscountrySkiTrailNotes": "Deslízate a lo largo de una Pista de Esquí",
+ "backgroundStarryWinterNightText": "Estrellada Noche de Invierno",
+ "backgroundStarryWinterNightNotes": "Admira una Estrellada Noche de Invierno",
+ "backgroundToymakersWorkshopText": "Taller del Fabricante de Juguetes",
+ "backgroundToymakersWorkshopNotes": "Disfruta de las maravillas del taller del Fabricante de Juguetes",
+ "backgrounds012018": "CONJUNTO 44: Lanzado en Enero de 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Disfruta del frió brillo de una aurora.",
+ "backgroundDrivingASleighText": "Trineo",
+ "backgroundDrivingASleighNotes": "Conduce un Trineo sobre campos cubiertos de nieve",
+ "backgroundFlyingOverIcySteppesText": "Estepas Heladas",
+ "backgroundFlyingOverIcySteppesNotes": "Vuelva sobre Estepas Heladas"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/challenge.json b/website/common/locales/es_419/challenge.json
index 5063f3e4f1b..00e6fb4e407 100644
--- a/website/common/locales/es_419/challenge.json
+++ b/website/common/locales/es_419/challenge.json
@@ -28,8 +28,8 @@
"notParticipating": "No participando",
"either": "Ambos",
"createChallenge": "Crear Desafío",
- "createChallengeAddTasks": "Add Challenge Tasks",
- "createChallengeCloneTasks": "Clone Challenge Tasks",
+ "createChallengeAddTasks": "Añadir tareas del reto",
+ "createChallengeCloneTasks": "Duplicar tareas del reto",
"addTaskToChallenge": "Añadir tarea",
"discard": "Descartar",
"challengeTitle": "Título del Desafío",
@@ -56,10 +56,10 @@
"leaveCha": "Dejar el desafio y...",
"challengedOwnedFilterHeader": "Propiedad",
"challengedOwnedFilter": "Propio",
- "owned": "Owned",
+ "owned": "Adquirido",
"challengedNotOwnedFilter": "No Propio",
- "not_owned": "Not Owned",
- "not_participating": "Not Participating",
+ "not_owned": "No adquirido",
+ "not_participating": "No participando",
"challengedEitherOwnedFilter": "Ambos",
"backToChallenges": "Volver a todos los desafíos",
"prizeValue": "<%= gemcount %> <%= gemicon %> Premio",
@@ -93,7 +93,7 @@
"myChallenges": "Mis desafíos",
"findChallenges": "Descubrir Desafíos",
"noChallengeTitle": "No tienes ningún Desafío.",
- "challengeDescription1": "Challenges are community events in which players compete and earn prizes by completing a group of related tasks.",
+ "challengeDescription1": "Los Retos son eventos de comunidad en los cuales los jugadores ganan recompensas completando un grupo de tareas relacionadas.",
"challengeDescription2": "Encuentra Desafíos recomendados basados en tus intereses, explora los Desafíos Públicos de Habitica, o crea tus propios Desafíos.",
"createdBy": "Creado por",
"joinChallenge": "Unirse al Desafío",
@@ -101,31 +101,33 @@
"addTask": "Añadir tarea",
"editChallenge": "Editar Desafío",
"challengeDescription": "Descripción del Desafío",
- "selectChallengeWinnersDescription": "Select winners from the Challenge participants",
- "awardWinners": "Award Winners",
+ "selectChallengeWinnersDescription": "Escoger ganadores de los participantes del reto",
+ "awardWinners": "Recompensar a los ganadores",
"doYouWantedToDeleteChallenge": "¿Quieres eliminar este Desafío?",
"deleteChallenge": "Eliminar Desafío",
"challengeNamePlaceholder": "¿Cuál es el nombre de tu Desafío?",
- "challengeSummary": "Summary",
- "challengeSummaryPlaceholder": "Write a short description advertising your Challenge to other Habiticans. What is the main purpose of your Challenge and why should people join it? Try to include useful keywords in the description so that Habiticans can easily find it when they search!",
- "challengeDescriptionPlaceholder": "Use this section to go into more detail about everything that Challenge participants should know about your Challenge.",
- "challengeGuild": "Add to",
- "challengeMinimum": "Minimum 1 Gem for public Challenges (helps prevent spam, it really does).",
- "participantsTitle": "Participants",
- "shortName": "Short Name",
- "shortNamePlaceholder": "What short tag should be used to identify your Challenge?",
- "updateChallenge": "Update Challenge",
- "haveNoChallenges": "This group has no Challenges",
- "loadMore": "Load More",
- "exportChallengeCsv": "Export Challenge",
- "editingChallenge": "Editing Challenge",
- "nameRequired": "Name is required",
- "tagTooShort": "Tag name is too short",
- "summaryRequired": "Summary is required",
- "summaryTooLong": "Summary is too long",
- "descriptionRequired": "Description is required",
- "locationRequired": "Location of challenge is required ('Add to')",
- "categoiresRequired": "One or more categories must be selected",
- "viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "challengeSummary": "Resumen",
+ "challengeSummaryPlaceholder": "Escribe una corta descripción promocionando tu Reto a otros Habitianos. ¿Cuál es el principal propósito de tu Reto y por qué debería la gente unirse? ¡Intenta incluir palabras clave útiles en la descripción para que los Habitianos puedan encontrarlo fácilmente cuando lo busquen!",
+ "challengeDescriptionPlaceholder": "Usa esta sección para obtener más detalles sobre todo lo que los participantes del Reto deberían saber sobre tu Reto.",
+ "challengeGuild": "Añadir a",
+ "challengeMinimum": "Mínimo 1 Gema para Retos públicos (ayuda a prevenir el spam, en serio)",
+ "participantsTitle": "Participantes",
+ "shortName": "Nombre Corto",
+ "shortNamePlaceholder": "¿Qué tipo de etiqueta debería usarse para identificar a tu Reto?",
+ "updateChallenge": "Actualizar Reto",
+ "haveNoChallenges": "Este grupo no tiene Retos",
+ "loadMore": "Cargar más",
+ "exportChallengeCsv": "Exportar Reto",
+ "editingChallenge": "Editando Reto",
+ "nameRequired": "Se requiere un nombre",
+ "tagTooShort": "El nombre de la etiqueta es demasiado corto",
+ "summaryRequired": "Se requiere Resumen",
+ "summaryTooLong": "El Resumen es demasiado largo",
+ "descriptionRequired": "Se requiere una Descripción",
+ "locationRequired": "La ubicación del reto es necesaria (\"Añadir a\")",
+ "categoiresRequired": "Una o más categorías deben ser seleccionadas",
+ "viewProgressOf": "Ver el Progreso de",
+ "selectMember": "Seleccionar miembro",
+ "confirmKeepChallengeTasks": "¿Quieres mantener las tareas del reto?",
+ "selectParticipant": "Seleccionar un Participante"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/character.json b/website/common/locales/es_419/character.json
index 7511c6d7911..b5eba9364b6 100644
--- a/website/common/locales/es_419/character.json
+++ b/website/common/locales/es_419/character.json
@@ -2,9 +2,9 @@
"communityGuidelinesWarning": "Ten en cuenta que tu nombre para mostrar, foto de perfil y sección \"Sobre mí\" deben cumplir con las Normas de la Comunidad (por ej., nada de comentarios obscenos, temas inapropiados para menores de edad, insultos, etc.). Si tienes preguntas sobre si algo es apropiado o no, por favor comunícate al correo electrónico <%= hrefBlankCommunityManagerEmail %>.",
"profile": "Perfil",
"avatar": "Personalizar avatar",
- "editAvatar": "Edit Avatar",
- "noDescription": "This Habitican hasn't added a description.",
- "noPhoto": "This Habitican hasn't added a photo.",
+ "editAvatar": "Editar Avatar",
+ "noDescription": "Este Habitiano no ha añadido una descripción.",
+ "noPhoto": "Este Habitiano no ha añadido una foto.",
"other": "Otro",
"fullName": "Nombre completo",
"displayName": "Nombre para mostrar",
@@ -25,7 +25,7 @@
"unlockSet": "Desbloquear el conjunto - <%= cost %>",
"locked": "bloqueado",
"shirts": "Camisas",
- "shirt": "Shirt",
+ "shirt": "Camisa",
"specialShirts": "Camisas especiales",
"bodyHead": "Peinados y colores de pelo",
"bodySkin": "Piel",
@@ -33,9 +33,9 @@
"color": "Color",
"bodyHair": "Pelo",
"hair": "Cabello",
- "bangs": "Bangs",
+ "bangs": "Flequillos",
"hairBangs": "Flequillo",
- "ponytail": "Ponytail",
+ "ponytail": "Colita",
"glasses": "Lentes",
"hairBase": "Base",
"hairSet1": "Conjunto de peinados 1",
@@ -70,12 +70,12 @@
"costumeText": "Si prefieres el aspecto de otro equipo al que estás usando, marca la casilla \"Usar Disfraz\" para llevarlo como disfraz mientras usas tu equipo de batalla por debajo.",
"useCostume": "Usar Disfraz",
"useCostumeInfo1": "¡Haz click en \"Usar Disfraz\" para equipar a tu avatar sin afectar las estadísticas que tu Equipamiento de combate te da! Esto significa que a tu izquierda puedes equiparte para tener las mejores estadísiticas, y a tu derecha vestir a tu avatar con tus ítems favoritos.",
- "useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.
Got more questions? Check out the Costume page on the wiki. Find the perfect ensemble? Show it off in the Costume Carnival guild or brag in the Tavern!",
- "costumePopoverText": "Select \"Use Costume\" to equip items to your avatar without affecting the stats from your Battle Gear! This means that you can dress up your avatar in whatever outfit you like while still having your best Battle Gear equipped.",
- "autoEquipPopoverText": "Select this option to automatically equip gear as soon as you purchase it.",
- "costumeDisabled": "You have disabled your costume.",
+ "useCostumeInfo2": "Una vez que des click en \"Usar Traje\" tu avatar se verá bastante básico... pero no te preocupes! Si miras al lado izquierdo, verás que tu Equipo de Batalla todavía está equipado. ¡Luego puedes dejar volar tu imaginación! Lo que sea que equipes en la derecha no afectará tus estadísticas, pero puede hacer que te veas increíble. Intenta usar diferentes combos, mezclar conjuntos y coordinar tu Traje con tus mascotas, monturas y fondos.
¿Tienes más preguntas? Revisa la página del Traje en la wiki. ¿Encontraste la combinación perfecta? ¡Lúcela en la hermandad Festival de Trajes o alardea en la Taverna!",
+ "costumePopoverText": "¡Selecciona \"Usar Traje\" para equipar objetos a tu avatar sin afectar las estadísticas de tu Equipo de Batalla! Esto significa que puedes vestir a tu avatar como quieras teniendo tu mejor Equipo de Batalla equipado.",
+ "autoEquipPopoverText": "Selecciona esta opción para equipar objetos automáticamente apenas los compres.",
+ "costumeDisabled": "Has desactivado tu disfraz.",
"gearAchievement": "¡Has conseguido el logro \"Equipamiento definitivo\" por llegar al máximo conjunto de equipo para una clase! Has conseguido los siguientes conjuntos completos:",
- "moreGearAchievements": "To attain more Ultimate Gear badges, change classes on the Settings > Site page and buy your new class's gear!",
+ "moreGearAchievements": "¡Para obtener más medallas de Equipo Definitivo, cambia de clase en la página de configuración y compra el nuevo equipo de tu clase!",
"armoireUnlocked": "Para más equipamiento revisa el ¡Armario Encantado!. ¡Cliquea en la recompensa del Armario Encantado para una posibilidad aleatoria en equipamiento especial! También podría darte PX aleatorios o ítems de comida.",
"ultimGearName": "Equipo supremo - <%= ultClass %>",
"ultimGearText": "Ha mejorado al máximo nivel de arma y armadura para la clase <%= ultClass %>.",
@@ -143,16 +143,16 @@
"distributePoints": "Distribuir puntos no asignados",
"distributePointsPop": "Asigna los puntos no distribuidos según el esquema de asignación seleccionado.",
"warriorText": "Los Guerreros consiguen más y mejores \"golpes críticos\", los cuales otorgan bonus de Oro, Experiencia y probabilidad de botín al completar una tarea. También hacen graves daños a los monstruos jefes. ¡Juega como un Guerrero si te motivan las recompensas impredecibles como al ganar la lotería o si deseas ser la fuente de daño en las Misiones!",
- "wizardText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
+ "wizardText": "Los magos aprenden fácilmente, ganando Experiencia y Niveles más rápido que las otras clases. También tienen una gran cantidad de Maná para usar habilidades especiales. Juega como Mago si disfrutas de los aspectos de juego tácticos de Habitica, o si te sientes fuertemente motivado por subir de nivel y desbloquear características avanzadas.",
"mageText": "Los Magos aprenden rápidamente, ganando Experiencia y Niveles más rápido que otras clases. También reciben mucho Maná para usar habilidades especiales. ¡Juega como Mago si disfrutas los aspectos tácticos de Habitica y si subir de nivel y desbloquear características avanzadas del juego te motiva!",
"rogueText": "A los Pícaros les encanta acumular riquezas, ganan más Oro que los demás y suelen encontrar objetos aleatorios. Su capacidad emblemática de Sigilo les permite esquivar las consecuencias de Diarias sin completar. ¡Juega como un Pícaro si encuentras motivación en las recompensas y los logros, esforzándote por botines y medallas!",
"healerText": "Los Sanadores son inmunes al daño y extienden esa protección a otros. El no cumplir Diarias y los malos Hábitos no les afectan demasiado y tienen maneras de recuperar la Salud tras un fallo. ¡Juega como un Sanador si disfrutas de ayudar a otros en tu grupo o si la idea de engañar a la muerte a través del trabajo duro te inspira!",
"optOutOfClasses": "No usar",
"optOutOfPMs": "No usar",
"chooseClass": "Elige tu clase",
- "chooseClassLearnMarkdown": "[Learn more about Habitica's class system](http://habitica.wikia.com/wiki/Class_System)",
- "optOutOfClassesText": "Can't be bothered with classes? Want to choose later? Opt out - you'll be a warrior with no special abilities. You can read about the class system later on the wiki and enable classes at any time under User Icon > Settings.",
- "selectClass": "Select <%= heroClass %>",
+ "chooseClassLearnMarkdown": "[Aprende mas sobre el sistema de clases de Habitica](http://habitica.wikia.com/wiki/Class_System)",
+ "optOutOfClassesText": "No quieres tomarte la molestia de las clases? Quieres elegir luego? No tienes que hacerlo en este momento - serás un guerrero sin habilidades especiales. Puedes leer acerca del sistema de clases más tarde en la wiki y habilitar las clases en cualquier momento en Icono del Usuario > Configuraciones.",
+ "selectClass": "Seleccionar <%= heroClass %>",
"select": "Seleccionar",
"stealth": "Sigilo",
"stealthNewDay": "Cuando empiece un nuevo día, evitarás el daño de las Diarias sin cumplir.",
@@ -163,27 +163,28 @@
"dieText": "Has perdido un Nivel, todo tu Oro, y una pieza de Equipamiento al azar. ¡Levántate Habitero e inténtalo otra vez! ¡Domina esos Hábitos negativos, mantente atento para cumplir las Diarias y mantén a la muerte a raya con una Poción de Salud cuando flaqueas!",
"sureReset": "¿Estás seguro? Esto reiniciará la clase de tu personaje y los puntos asignados (los recuperarás todos para re-asignarlos), y te costará 3 Gemas.",
"purchaseFor": "¿Comprar por <%= cost %> Gemas?",
+ "purchaseForHourglasses": "Compar por <%= cost %> Relojes de Arena?",
"notEnoughMana": "No tienes maná suficiente.",
- "invalidTarget": "You can't cast a skill on that.",
+ "invalidTarget": "No puedes usar una habilidad en eso.",
"youCast": "Lanzas <%= spell %>.",
"youCastTarget": "Lanzas <%= spell %> sobre <%= target %>.",
"youCastParty": "Lanzas <%= spell %> para el grupo.",
"critBonus": "¡Golpe Crítico! Bonus:",
"gainedGold": "Recibiste algo de Oro",
- "gainedMana": "You gained some Mana",
- "gainedHealth": "You gained some Health",
- "gainedExperience": "You gained some Experience",
- "lostGold": "You spent some Gold",
- "lostMana": "You used some Mana",
- "lostHealth": "You lost some Health",
- "lostExperience": "You lost some Experience",
+ "gainedMana": "Ganaste algo de Maná.",
+ "gainedHealth": "Ganaste algo de Salud",
+ "gainedExperience": "Ganaste algo de Experiencia",
+ "lostGold": "Gastaste algo de Oro",
+ "lostMana": "Usaste algo de Maná",
+ "lostHealth": "Perdiste algo de Salud",
+ "lostExperience": "Perdiste algo de Experiencia",
"displayNameDescription1": "Ésto es lo que aparece en los mensajes que publicas en la Taverna, gremios y chats de grupos, junto a lo que es mostrado en tu avatar. Ve a",
"displayNameDescription2": "Ajustes -> Sitio",
"displayNameDescription3": "y desplázate hacia la sección de Registro.",
"unequipBattleGear": "Quitar Equipamient de batalla",
"unequipCostume": "Quitar disfraz",
- "equip": "Equip",
- "unequip": "Unequip",
+ "equip": "Equipar",
+ "unequip": "Desequipar",
"unequipPetMountBackground": "Quitar Mascota, Montura, Fondo",
"animalSkins": "Pieles de animales",
"chooseClassHeading": "¡Elige tu Clase! U opta por no tener una, y elige luego.",
@@ -198,25 +199,25 @@
"int": "INT",
"showQuickAllocation": "Mostrar asignación de estadísticas",
"hideQuickAllocation": "Ocultar asignación de estadísticas",
- "quickAllocationLevelPopover": "Each level earns you one point to assign to an attribute of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User Icon > Stats.",
+ "quickAllocationLevelPopover": "Cada nivel te otorga un punto para asignarlo al atributo de tu elección. Puedes hacerlo manualmente, o puedes dejar que el juego decida por ti usando uno de las opciones de Asignación Automática encontradas en Icono del Usuario > Estadísticas.",
"invalidAttribute": "\"<%= attr %>\" no es un atributo válido.",
"notEnoughAttrPoints": "No tienes suficientes Puntos de Atributo.",
- "style": "Style",
- "facialhair": "Facial",
- "photo": "Photo",
- "info": "Info",
- "joined": "Joined",
- "totalLogins": "Total Check Ins",
- "latestCheckin": "Latest Check In",
- "editProfile": "Edit Profile",
- "challengesWon": "Challenges Won",
- "questsCompleted": "Quests Completed",
- "headAccess": "Head Access.",
- "backAccess": "Back Access.",
- "bodyAccess": "Body Access.",
- "mainHand": "Main-Hand",
- "offHand": "Off-Hand",
- "pointsAvailable": "Points Available",
+ "style": "Estilo",
+ "facialhair": "Cara",
+ "photo": "Foto",
+ "info": "Información",
+ "joined": "Se unió",
+ "totalLogins": "Total de días en linea.",
+ "latestCheckin": "Último día en linea.",
+ "editProfile": "Editar Perfil",
+ "challengesWon": "Retos Ganados",
+ "questsCompleted": "Misiones Completadas",
+ "headAccess": "Accesorio para la Cabeza",
+ "backAccess": "Accesorio para la Espalda",
+ "bodyAccess": "Accesorio para el Cuerpo",
+ "mainHand": "Mano Principal",
+ "offHand": "Mano Secundaria",
+ "pointsAvailable": "Puntos disponibles",
"pts": "pts",
- "statsObjectRequired": "Stats update is required"
+ "statsObjectRequired": "Se requiere actualizar las Estadísticas"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/communityguidelines.json b/website/common/locales/es_419/communityguidelines.json
index 0201b0d4261..9dcafe415ed 100644
--- a/website/common/locales/es_419/communityguidelines.json
+++ b/website/common/locales/es_419/communityguidelines.json
@@ -1,6 +1,6 @@
{
"iAcceptCommunityGuidelines": "Acepto cumplir con las Normas de la comunidad",
- "tavernCommunityGuidelinesPlaceholder": "Friendly reminder: this is an all-ages chat, so please keep content and language appropriate! Consult the Community Guidelines in the sidebar if you have questions.",
+ "tavernCommunityGuidelinesPlaceholder": "Un amistoso recordatorio: este es un chat para todas las edades, así que ¡por favor mantén el contenido y el lenguaje apropiado! Consulta las Normas de la Comunidad debajo si tienes preguntas.",
"commGuideHeadingWelcome": "¡Bienvenido a Habitica!",
"commGuidePara001": "¡Saludos aventurero! Bienvenido a Habitica, la tierra de productividad, vida saludable, y el ataque ocasional de un grifo. Tenemos una alegre comunidad llena de gente servicial brindando apoyo el uno al otro en su camino a la autosuperación.",
"commGuidePara002": "Para ayudar a mantener a todos seguros, felices, y productivos en la comunidad, nosotros tenemos algunas pautas. Las hemos diseñado cuidadosamente para hacerlas lo más amigables y fáciles de leer. Por favor toma el tiempo de leerlas.",
@@ -184,5 +184,5 @@
"commGuideLink07description": "para enviar pixel art.",
"commGuideLink08": "El Trello de misiones",
"commGuideLink08description": "para enviar escritos para misiones.",
- "lastUpdated": "Last updated:"
+ "lastUpdated": "Ultima actualización:"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/content.json b/website/common/locales/es_419/content.json
index 464bf94d85c..833068d394a 100644
--- a/website/common/locales/es_419/content.json
+++ b/website/common/locales/es_419/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Yarn",
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "woolen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Encuentra una poción de eclosión para verter sobre este huevo y se convertirá en <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Básico",
"hatchingPotionWhite": "Blanco",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupido",
"hatchingPotionShimmer": "Brillo",
"hatchingPotionFairy": "Hadas",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Vierte esto sobre un huevo, y nacerá una mascota <%= potText(locale) %>.",
"premiumPotionAddlNotes": "No se puede usar con huevos de mascotas de misión.",
"foodMeat": "Carne",
@@ -218,5 +222,6 @@
"foodCandyRed": "Caramelo de Canela",
"foodSaddleText": "Silla de Montar",
"foodSaddleNotes": "Convierte instantáneamente a una de tus mascotas en una montura.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Dale esto a una mascota y podrá convertirse en un corcel robusto."
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/contrib.json b/website/common/locales/es_419/contrib.json
index 035918805aa..158d11c4c31 100644
--- a/website/common/locales/es_419/contrib.json
+++ b/website/common/locales/es_419/contrib.json
@@ -1,15 +1,15 @@
{
- "playerTiersDesc": "The colored usernames you see in chat represent a person's contributor tier. The higher the tier, the more the person has contributed to habitica through art, code, the community, or more!",
- "tier1": "Tier 1 (Friend)",
- "tier2": "Tier 2 (Friend)",
- "tier3": "Tier 3 (Elite)",
- "tier4": "Tier 4 (Elite)",
- "tier5": "Tier 5 (Champion)",
- "tier6": "Tier 6 (Champion)",
- "tier7": "Tier 7 (Legendary)",
- "tierModerator": "Moderator (Guardian)",
- "tierStaff": "Staff (Heroic)",
- "tierNPC": "NPC",
+ "playerTiersDesc": "Los colores de los nombres de usuario que ves en el chat representan el nivel de contribución de una persona. A mayor nivel, es una mayor contribución que la persona a hecho a Habitica a través de arte, código, la comunidad, ¡O mas!",
+ "tier1": "Nivel 1 (Amigo)",
+ "tier2": "Nivel 2 (Amigo)",
+ "tier3": "Nivel 3 (Élite) ",
+ "tier4": "Nivel 4 (Élite)",
+ "tier5": "Nivel 5 (Campeón)",
+ "tier6": "Nivel 6 (Campeón)",
+ "tier7": "Nivel 7 (Legendario) ",
+ "tierModerator": "Moderador (Guardián)",
+ "tierStaff": "Staff (Heroico) ",
+ "tierNPC": "PNJ",
"friend": "Amigo",
"friendFirst": "Cuando se implemente tu primera contribución, recibirás la medalla de Colaborador de Habitica. Tu nombre en el chat de la Taberna mostrará orgullosamente que eres un colaborador. Como premio por tu trabajo también recibirás 3 Gemas.",
"friendSecond": "Cuando se implemente tu segunda contribución, la Armadura de cristal estará disponible en la tienda de Recompensas. Como premio por tu trabajo continuo también recibirás 3 Gemas.",
@@ -32,7 +32,7 @@
"contribModal": "¡<%= name %>, eres una persona increíble! Ahora eres un colaborador nivel <%= level %> por ayudar a Habitica. ¡Revisa",
"contribLink": "los premios que has ganado por tu colaboración!",
"contribName": "Colaborador",
- "contribText": "Has contribuído a Habitica (código, diseño, arte de pixel, consejo legal, documentos, etc). ¿Quieres esta medalla? Leer más.",
+ "contribText": "Ha contribuido a Habitica, sea a través de código, arte, música, escritura, o cualquier otro método. Para aprender mas, ¡Únete al gremio de Apiring Legends (Aspirantes a leyenda)!",
"readMore": "Leer más",
"kickstartName": "Sponsor de Kickstarter - $<%= key %> Nivel",
"kickstartText": "Respaldó el proyecto Kickstarter",
diff --git a/website/common/locales/es_419/front.json b/website/common/locales/es_419/front.json
index a2a61de09e5..ff68ec8777f 100644
--- a/website/common/locales/es_419/front.json
+++ b/website/common/locales/es_419/front.json
@@ -1,6 +1,6 @@
{
"FAQ": "Preguntas frecuentes",
- "termsAndAgreement": "By clicking the button below, you are indicating that you have read and agree to the Terms of Service and Privacy Policy.",
+ "termsAndAgreement": "Al hacer clic en el botón debajo, indicas que has leído y estas de acuerdo con los Términos de Servicio y la Política de Privacidad .",
"accept1Terms": "Al hacer clic en el botón de abajo, acepto los",
"accept2Terms": "y la",
"alexandraQuote": "No pude NO hablar sobre [Habitica] durante mi discurso en Madrid. Es una herramienta imprescindible para freelancers que aún necesitan un jefe.",
@@ -27,9 +27,10 @@
"communityForum": "Foro",
"communityKickstarter": "Kickstarter",
"communityReddit": "Reddit",
- "companyAbout": "How It Works",
+ "companyAbout": "Cómo Funciona",
"companyBlog": "Blog",
"devBlog": "Blog de Desarrollador",
+ "companyContribute": "Contribuir",
"companyDonate": "Donar",
"companyPrivacy": "Privacidad",
"companyTerms": "Condiciones",
@@ -38,10 +39,10 @@
"dragonsilverQuote": "No te imaginas la cantidad de sistemas de control del tiempo y de tareas que he probado a lo largo de décadas... [Habitica] es lo único que realmente me ayuda a hacer las cosas en vez de sólo anotarlas en una lista.",
"dreimQuote": "Cuando descubrí [Habitica] el verano pasado, había reprobado alrededor de la mitad de mis exámenes. Gracias a las Diarias... fui capaz de organizarme y ser disciplinado, e incluso el mes pasado aprobé todos mis exámenes con muy buenas calificaciones.",
"elmiQuote": "¡Cada mañana ansío levantarme para ganar oro!",
- "forgotPassword": "Forgot Password?",
+ "forgotPassword": "¿Olvidó la contraseña?",
"emailNewPass": "Envía un vínculo para restablecer la contraseña",
- "forgotPasswordSteps": "Enter the email address you used to register your Habitica account.",
- "sendLink": "Send Link",
+ "forgotPasswordSteps": "Ingresa la dirección de correo electrónico que usaste para registrar tu cuenta en Habitica.",
+ "sendLink": "Enviar Enlace",
"evagantzQuote": "En mi primera cita con el dentista, el higienista estaba muy entusiasmado por mis hábitos de uso del hilo dental. ¡Gracias, [Habitica]!",
"examplesHeading": "Los jugadores usan Habitica para administrar...",
"featureAchievementByline": "¿Acabas de hacer algo totalmente increíble? ¡Consigue una medalla y muéstrala con orgullo!",
@@ -98,22 +99,22 @@
"loginGoogleAlt": "Inicia sesión con Google",
"logout": "Cerrar sesión",
"marketing1Header": "Mejora tus hábitos jugando",
- "marketing1Lead1Title": "Your Life, the Role Playing Game",
+ "marketing1Lead1Title": "Tu Vida, el Juego de Rol",
"marketing1Lead1": "Habitica es un videojuego que te ayuda a mejorar tus hábitos en la vida real. Hace de tu vida un juego convirtiendo todas tus tareas (hábitos, diarias, y pendientes) en pequeños monstruos que tienes que conquistar. Mientras mejor lo hagas, más progresarás en el juego. SI te equivocas en la vida, tu personaje en el juego empezará a recaer.",
"marketing1Lead2Title": "Obtén un equipo genial",
- "marketing1Lead2": "Improve your habits to build up your avatar. Show off the sweet gear you've earned!",
+ "marketing1Lead2": "Mejora tus hábitos para construir tu personaje. ¡Luce el lindo equipamiento que te has ganado!",
"marketing1Lead3Title": "Encuentra premios aleatorios",
"marketing1Lead3": "For some, it's the gamble that motivates them: a system called \"stochastic rewards.\" Habitica accommodates all reinforcement and punishment styles: positive, negative, predictable, and random.",
"marketing2Header": "Compite con tus amigos, únete a grupos de interés",
- "marketing2Lead1Title": "Social Productivity",
+ "marketing2Lead1Title": "Productividad Social",
"marketing2Lead1": "While you can play Habitica solo, the lights really turn on when you start collaborating, competing, and holding each other accountable. The most effective part of any self-improvement program is social accountability, and what better an environment for accountability and competition than a video game?",
- "marketing2Lead2Title": "Fight Monsters",
- "marketing2Lead2": "What's a Role Playing Game without battles? Fight monsters with your party. Monsters are \"super accountability mode\" - a day you miss the gym is a day the monster hurts *everyone!*",
- "marketing2Lead3Title": "Challenge Each Other",
+ "marketing2Lead2Title": "Lucha contra Monstruos.",
+ "marketing2Lead2": "¿Que es un juego de rol sin batallas? Pelea contra monstruos junto con tu grupo. Los monstruos \"no perdonan\" - ¡Un día que faltes al gimnasio es un día que el monstruo lastima a *todos*!",
+ "marketing2Lead3Title": "Rétense el Uno al Otro",
"marketing2Lead3": "Challenges let you compete with friends and strangers. Whoever does the best at the end of a challenge wins special prizes.",
"marketing3Header": "Aplicaciones y extensiones",
"marketing3Lead1": "The **iPhone & Android** apps let you take care of business on the go. We realize that logging into the website to click buttons can be a drag.",
- "marketing3Lead2Title": "Integrations",
+ "marketing3Lead2Title": "Integraciones",
"marketing3Lead2": "Other **3rd Party Tools** tie Habitica into various aspects of your life. Our API provides easy integration for things like the [Chrome Extension](https://chrome.google.com/webstore/detail/habitica/pidkmpibnnnhneohdgjclfdjpijggmjj?hl=en-US), for which you lose points when browsing unproductive websites, and gain points when on productive ones. [See more here](http://habitica.wikia.com/wiki/Extensions,_Add-Ons,_and_Customizations).",
"marketing4Header": "Uso organizativo",
"marketing4Lead1": "Education is one of the best sectors for gamification. We all know how glued to phones and games students are these days; harness that power! Pit your students against each other in friendly competition. Reward good behavior with rare prizes. Watch their grades and behavior soar.",
@@ -130,9 +131,9 @@
"motivate1": "Motívate a hacer cualquier cosa.",
"motivate2": "Consigue organizarte. Consigue motivarte. Consigue oro.",
"oldNews": "Noticias",
- "newsArchive": "News archive on Wikia (multilingual)",
+ "newsArchive": "Archivo de noticias en la Wiki (multi-idioma)",
"passConfirm": "Confirmar contraseña",
- "setNewPass": "Set New Password",
+ "setNewPass": "Establecer una Nueva Contraseña",
"passMan": "Si estás utilizando un gestor de contraseñas (como 1Password) y tienes problemas al iniciar sesión, intenta escribir tu nombre de usuario y contraseña manualmente.",
"password": "Contraseña",
"playButton": "Jugar",
@@ -188,14 +189,14 @@
"localStorageClearing": "Borrando datos",
"localStorageClearingExplanation": "Habitica's stored data is being cleared from your browser. You will be logged out and redirected to the home page. Please wait.",
"localStorageClear": "Borrar datos",
- "localStorageClearExplanation": "This button will clear local storage and most cookies, and log you out.",
+ "localStorageClearExplanation": "Este botón limpiara la memoria local y la mayoría de cookies, también cerrara tu sesión.",
"tutorials": "Tutoriales",
"unlockByline1": "Cumple tus metas y sube de nivel.",
"unlockByline2": "¡Desbloquea nuevas herramientas motivacionales, tales como coleccionar mascotas, premios al azar, conjurar hechizos y más!",
"unlockHeadline": "¡Al mantenerte productivo desbloqueas nuevo contenido!",
"useUUID": "Utilizar UUID / Ficha API (Para Usuarios de Facebook)",
- "username": "Login Name",
- "emailOrUsername": "Email or Login Name (case-sensitive)",
+ "username": "Nombre de Usuario",
+ "emailOrUsername": "Correo Electrónico o Nombre de Usuario (sensible a mayúsculas y minúsculas)",
"watchVideos": "Ver videos",
"work": "Trabajo",
"zelahQuote": "¡Con [Habitica] puedo ser persuadido de ir a la cama a tiempo con la idea de ganar puntos por acostarme temprano o perder salud al acostarme tarde!",
@@ -245,18 +246,18 @@
"altAttrSlack": "Slack",
"missingAuthHeaders": "Faltan encabezados de autenticación.",
"missingAuthParams": "Faltan parámetros de autenticación.",
- "missingUsernameEmail": "Missing Login Name or email.",
+ "missingUsernameEmail": "Falta Nombre de Usuario o Correo Electrónico.",
"missingEmail": "Falta el correo electrónico.",
- "missingUsername": "Missing Login Name.",
+ "missingUsername": "Falta Nombre de Usuario.",
"missingPassword": "Falta la contraseña.",
"missingNewPassword": "Falta la contraseña nueva.",
- "invalidEmailDomain": "You cannot register with emails with the following domains: <%= domains %>",
+ "invalidEmailDomain": "No puedes registrarte con correos electrónicos con los siguientes dominios: <%= domains %>",
"wrongPassword": "Contraseña incorrecta.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Por favor escribe <%= magicWord %> en mayúsculas para eliminar tu cuenta.",
"notAnEmail": "Dirección de correo electrónico inválida.",
"emailTaken": "Esta dirección de correo electrónico ya está en uso.",
"newEmailRequired": "El nuevo correo electronico no puede ser encontrado.",
- "usernameTaken": "Login Name already taken.",
+ "usernameTaken": "Nombre de Usuario ya existente.",
"passwordConfirmationMatch": "La confirmacion de contraseña y la contraseña no coinciden.",
"invalidLoginCredentials": "Nombre de usuario , email y/o contraseñas incorrectos.",
"passwordResetPage": "Renovar la contraseña",
@@ -275,19 +276,19 @@
"heroIdRequired": "\"heroid\" debe ser un UUID válido.",
"cannotFulfillReq": "Tu petición no puede ser llevada a cabo. Envia un correo electrónico a admin@habitica.com si este error continúa.",
"modelNotFound": "Este modelo no existe.",
- "signUpWithSocial": "Sign up with <%= social %>",
- "loginWithSocial": "Log in with <%= social %>",
- "confirmPassword": "Confirm Password",
+ "signUpWithSocial": "Inicia sesión con <%= social %>",
+ "loginWithSocial": "Acceder usando <%= social %>",
+ "confirmPassword": "Confirma contraseña.",
"usernamePlaceholder": "e.g., HabitRabbit",
"emailPlaceholder": "e.g., rabbit@example.com",
"passwordPlaceholder": "e.g., ******************",
- "confirmPasswordPlaceholder": "Make sure it's the same password!",
+ "confirmPasswordPlaceholder": "¡Asegúrate de que sea la misma contraseña!",
"joinHabitica": "Join Habitica",
"alreadyHaveAccountLogin": "Already have a Habitica account? Log in.",
"dontHaveAccountSignup": "Don’t have a Habitica account? Sign up.",
"motivateYourself": "Motivate yourself to achieve your goals.",
"timeToGetThingsDone": "It's time to have fun when you get things done! Join over 2.5 million Habiticans and improve your life one task at a time.",
- "singUpForFree": "Sign Up For Free",
+ "singUpForFree": "Regístrate gratis",
"or": "OR",
"gamifyYourLife": "Gamify Your Life",
"aboutHabitica": "Habitica is a free habit-building and productivity app that treats your real life like a game. With in-game rewards and punishments to motivate you and a strong social network to inspire you, Habitica can help you achieve your goals to become healthy, hard-working, and happy.",
@@ -300,9 +301,9 @@
"playersUseToImprove": "Players Use Habitica to Improve",
"healthAndFitness": "Health and Fitness",
"healthAndFitnessDesc": "Never motivated to floss? Can't seem to get to the gym? Habitica finally makes it fun to get healthy.",
- "schoolAndWork": "School and Work",
+ "schoolAndWork": "Escuela y Trabajo",
"schoolAndWorkDesc": "Whether you're preparing a report for your teacher or your boss, it's easy to keep track of your progress as you tackle your toughest tasks.",
- "muchmuchMore": "And much, much more!",
+ "muchmuchMore": "Y ¡mucho, mucho más!",
"muchmuchMoreDesc": "Our fully customizable task list means that you can shape Habitica to fit your personal goals. Work on creative projects, emphasize self-care, or pursue a different dream -- it's all up to you.",
"levelUpAnywhere": "Level Up Anywhere",
"levelUpAnywhereDesc": "Our mobile apps make it simple to keep track of your tasks on-the-go. Accomplish your goals with a single tap, no matter where you are.",
@@ -312,5 +313,5 @@
"getStarted": "Get Started",
"mobileApps": "Mobile Apps",
"learnMore": "Learn More",
- "useMobileApps": "Habitica is not optimized for a mobile browser. We recommend downloading our mobile apps."
+ "useMobileApps": "Habitica no esta optimizada para navegadores móviles. Te recomendamos descargar una de nuestras aplicaciones para celular."
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/gear.json b/website/common/locales/es_419/gear.json
index 4f7d1e027a7..4aaed9a32bf 100644
--- a/website/common/locales/es_419/gear.json
+++ b/website/common/locales/es_419/gear.json
@@ -5,7 +5,7 @@
"groupBy": "Agrupar por <%= type %>",
"classBonus": "(Este objeto coincide con tu clase, por lo que tiene un multiplicador adicional de 1.5)",
"classArmor": "Armadura de Clase",
- "featuredset": "Featured Set <%= name %>",
+ "featuredset": "Conjunto Destacado <%= name %>",
"mysterySets": "Conjuntos Misteriosos",
"gearNotOwned": "No posees este item.",
"noGearItemsOfType": "No posees ninguno de estos.",
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "Los ojos de la calavera incandescente en este báculo irradian magia y misterio. Incrementa Ia Inteligencia en <%= int %> y la Percepción en <%= per %>. Equipamiento de Edición Limitada Otoño 2017.",
"weaponSpecialFall2017HealerText": "Candelabro Terrorífico",
"weaponSpecialFall2017HealerNotes": "Esta luz disipa el miedo y les hace saber a los otros que tú estás ahí para ayudar. Incrementa la Inteligencia en <%= int %>. Equipamiento de Edición Limitada de Otoño 2017. ",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Horqueta de Banquete",
"weaponMystery201411Notes": "Atraviesa a tus enemigos o ataca tu comida favorita - ¡esta horqueta versátil lo hace todo! No otorga ningún beneficio. Artículo de Suscriptor de Noviembre 2014.",
"weaponMystery201502Text": "Reluciente Báculo Alado del Amor y También de la Verdad",
@@ -308,8 +316,12 @@
"weaponArmoireBattleAxeNotes": "Esta fina hacha de hierro es muy adecuada para combatir con tus enemigos más feroces o tus tareas más difíciles. Incrementa la Fuerza por <%= int %> y la Constitución por <%= con %>. Armario Encantado: Artículo Independiente",
"weaponArmoireHoofClippersText": "Cortapezuñas",
"weaponArmoireHoofClippersNotes": "Corta las pezuñas de tus muy trabajadoras monturas para ayudarlas a estar saludables ¡así como ellas te llevan a la aventura! Incrementa la Fuerza, Inteligencia y Constitución en <%= attrs %> cada uno. Armario Encantado: Conjunto de Herrador (Artículo 1 de 3).",
- "weaponArmoireWeaversCombText": "Weaver's Comb",
- "weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireWeaversCombText": "Peine de Tejedor",
+ "weaponArmoireWeaversCombNotes": "Usa este peine para comprimir el hilo y convertirlo en un tejido ceñido. Incrementa Percepción por <%= per %> y Fuerza por <%= str %>. Armario Encantado: Conjunto de Tejedor (Artículo 2 de 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armadura",
"armorCapitalized": "Armadura",
"armorBase0Text": "Ropa Simple",
@@ -371,23 +383,23 @@
"armorSpecialLunarWarriorArmorText": "Armadura de Guerrero Lunar",
"armorSpecialLunarWarriorArmorNotes": "Esta armadura está forjada con piedra lunar y acero mágico. Incrementa la Fuerza y Constitución en <%= attrs %>cada uno.",
"armorSpecialMammothRiderArmorText": "Armadura de Jinete de Mamut",
- "armorSpecialMammothRiderArmorNotes": "This suit of fur and leather includes a snazzy cape studded with rose quartz gems. It will protect you from bitter winds as you adventure in the coldest climes. Increases Constitution by <%= con %>.",
+ "armorSpecialMammothRiderArmorNotes": "Este traje de piel y cuero incluye una elegante capa adornada con gemas de cuarzo rosa. Te protegerá de duros vientos mientras te aventuras a los climas más fríos. Incrementa Constitución por <%= con %>.",
"armorSpecialPageArmorText": "Armadura de paje",
- "armorSpecialPageArmorNotes": "Carry everything you need in your perfect pack! Increases Constitution by <%= con %>.",
- "armorSpecialRoguishRainbowMessengerRobesText": "Roguish Rainbow Messenger Robes",
- "armorSpecialRoguishRainbowMessengerRobesNotes": "These vividly striped robes will allow you to fly through gale-force winds smoothly and safely. Increases Strength by <%= str %>.",
- "armorSpecialSneakthiefRobesText": "Sneakthief Robes",
- "armorSpecialSneakthiefRobesNotes": "These robes will help hide you in the dead of night, but will also allow freedom of movement as you silently sneak about! Increases Intelligence by <%= int %>.",
- "armorSpecialSnowSovereignRobesText": "Snow Sovereign Robes",
- "armorSpecialSnowSovereignRobesNotes": "These robes are elegant enough for court, yet warm enough for the coldest winter day. Increases Perception by <%= per %>.",
+ "armorSpecialPageArmorNotes": "¡Carga con todo lo que necesitas en tu paquete perfecto! Incrementa Constitución por <%= con %>.",
+ "armorSpecialRoguishRainbowMessengerRobesText": "Túnica de Mensajero Arcoiris Picarón",
+ "armorSpecialRoguishRainbowMessengerRobesNotes": "Esta colorida túnica a rayas te permitirá volar a través de vendavales de manera tranquila y segura. Incrementa Fuerza por <%= str %>.",
+ "armorSpecialSneakthiefRobesText": "Túnica Robafurtivo",
+ "armorSpecialSneakthiefRobesNotes": "Esta túnica ayudará a esconderte en la oscuridad de la noche, pero también te brindará libertad de movimiento mientras te desplazas a hurtadillas. Incrementa Inteligencia por <%= int %>.",
+ "armorSpecialSnowSovereignRobesText": "Túnica Soberana de Nieve",
+ "armorSpecialSnowSovereignRobesNotes": "Esta túnica es suficientemente elegante para la corte, y suficientemente cálida para el día más frío de invierno. Incrementa Perception por <%= per %>.",
"armorSpecialNomadsCuirassText": "Coraza de Nómada",
- "armorSpecialNomadsCuirassNotes": "This armor features a strong chest-plate to protect your heart! Increases Constitution by <%= con %>.",
- "armorSpecialDandySuitText": "Dandy Suit",
- "armorSpecialDandySuitNotes": "You're undeniably dressed for success! Increases Perception by <%= per %>.",
+ "armorSpecialNomadsCuirassNotes": "¡Esta armadura ofrece fuerte protección para el pecho y para tu corazón! Incrementa Constitución por <%= con %>.",
+ "armorSpecialDandySuitText": "Traje de Dandy",
+ "armorSpecialDandySuitNotes": "Sin duda, ¡estás vestido para el estrellato! Incrementa Percepción por <%= per %>.",
"armorSpecialSamuraiArmorText": "Armadura de Samurai",
"armorSpecialSamuraiArmorNotes": "This strong, scaled armor is held together by elegant silk cords. Increases Perception by <%= per %>.",
- "armorSpecialTurkeyArmorBaseText": "Turkey Armor",
- "armorSpecialTurkeyArmorBaseNotes": "Keep your drumsticks warm and cozy in this feathery armor! Confers no benefit.",
+ "armorSpecialTurkeyArmorBaseText": "Armadura de Pavo",
+ "armorSpecialTurkeyArmorBaseNotes": "¡Mantén tus huesos cómodos y cálidos en esta armadura de plumas! No brinda ningún beneficio.",
"armorSpecialYetiText": "Túnica de Domador de Yetis",
"armorSpecialYetiNotes": "Velloso y feroz. Incrementa la Constitución por <%= con %>. Equipamiento de Edición Limitada de Invierno 2013-2014.",
"armorSpecialSkiText": "Parka de Esquia-sesino",
@@ -402,8 +414,8 @@
"armorSpecialBirthday2015Notes": "¡Feliz Cumpleaños, Habitica! Usa esta Túnica Disparatada de Fiesta para celebrar este maravilloso día. No otorga ningún beneficio.",
"armorSpecialBirthday2016Text": "Túnica Ridícula de Fiesta",
"armorSpecialBirthday2016Notes": "¡Feliz Cumpleaños, Habitica! Usa esta Túnica Ridícula de Fiesta para celebrar este maravilloso día. No otorga ningún beneficio.",
- "armorSpecialBirthday2017Text": "Whimsical Party Robes",
- "armorSpecialBirthday2017Notes": "Happy Birthday, Habitica! Wear these Whimsical Party Robes to celebrate this wonderful day. Confers no benefit.",
+ "armorSpecialBirthday2017Text": "Fantástica Túnica de Fiesta",
+ "armorSpecialBirthday2017Notes": "¡Feliz Cumpleaños, Habitica! Usa esta Fantástica Túnica de Fiesta para celebrar este fantástico día. No brinda ningún beneficio.",
"armorSpecialGaymerxText": "Armadura de Guerrero Arco Iris",
"armorSpecialGaymerxNotes": "Con motivo de la celebración por la Conferencia GaymerX, ¡esta armadura especial está decorada con un radiante y colorido estampado arco iris! GaymerX es una convención de juegos que celebra a la gente LGBTQ y a los videojuegos, y está abierta a todo el público.",
"armorSpecialSpringRogueText": "Traje de Gato Lustroso",
@@ -488,7 +500,7 @@
"armorSpecialSummer2016HealerNotes": "Esta prenda puntiaguda convierte a su usuario en un verdadero Hipocampo Sanador. Incrementa la Constitución por <%= con %>. Equipamiento de edición limitada Verano de 2016.",
"armorSpecialFall2016RogueText": "Armadura de viuda negra",
"armorSpecialFall2016RogueNotes": "The eyes on this armor are constantly blinking. Increases Perception by <%= per %>. Limited Edition 2016 Autumn Gear.",
- "armorSpecialFall2016WarriorText": "Slime-Streaked Armor",
+ "armorSpecialFall2016WarriorText": "Armadura de Baba a Rayas",
"armorSpecialFall2016WarriorNotes": "Mysteriously moist and mossy! Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
"armorSpecialFall2016MageText": "Capa de la maldad",
"armorSpecialFall2016MageNotes": "When your cloak flaps, you hear the sound of cackling laughter. Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Túnica de Mensajero",
"armorMystery201402Notes": "Reluciente y fuerte, esta túnica tiene muchos bolsillos para llevar cartas. No otorga ningún beneficio. Artículo de Suscriptor de Febrero 2014.",
"armorMystery201403Text": "Armadura de Caminante del Bosque",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Traje Steampunk",
"armorMystery301404Notes": "¡Sofisticado y elegante! No otorga ningún beneficio. Artículo de Suscriptor de Febrero 3015.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -648,13 +670,13 @@
"armorArmoireGreenFestivalYukataNotes": "This fine lightweight yukata will keep you cool while you enjoy any festive occasion. Increases Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Festival Attire Set (Item 1 of 3).",
"armorArmoireMerchantTunicText": "Túnica de Comerciante",
"armorArmoireMerchantTunicNotes": "¡Las mangas anchas de esta túnica son perfectas para esconder las monedas que has ganado! Aumenta la Percepción por <%= per %>. Armario Encantado: Conjunto de Comerciante (Artículo 2 de 3).",
- "armorArmoireVikingTunicText": "Viking Tunic",
+ "armorArmoireVikingTunicText": "Túnica Vikinga",
"armorArmoireVikingTunicNotes": "This warm woolen tunic includes a cloak for extra coziness even in ocean gales. Increases Constitution by <%= con %> and Strength by <%= str %>. Enchanted Armoire: Viking Set (Item 1 of 3).",
"armorArmoireSwanDancerTutuText": "Swan Dancer Tutu",
"armorArmoireSwanDancerTutuNotes": "You just might fly away into the air as you spin in this gorgeous feathered tutu. Increases Intelligence and Strength by <%= attrs %> each. Enchanted Armoire: Swan Dancer Set (Item 2 of 3).",
"armorArmoireAntiProcrastinationArmorText": "Anti-Procrastination Armor",
"armorArmoireAntiProcrastinationArmorNotes": "Infused with ancient productivity spells, this steel armor will give you extra strength to battle your tasks. Increases Strength by <%= str %>. Enchanted Armoire: Anti-Procrastination Set (Item 2 of 3).",
- "armorArmoireYellowPartyDressText": "Yellow Party Dress",
+ "armorArmoireYellowPartyDressText": "Vestido amarillo de fiesta",
"armorArmoireYellowPartyDressNotes": "You're perceptive, strong, smart, and so fashionable! Increases Perception, Strength, and Intelligence by <%= attrs %> each. Enchanted Armoire: Yellow Hairbow Set (Item 2 of 2).",
"armorArmoireFarrierOutfitText": "Farrier Outfit",
"armorArmoireFarrierOutfitNotes": "These sturdy work clothes can stand up to the messiest Stable. Increases Intelligence, Constitution, and Perception by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 2 of 3).",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Gorros",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Yelmo de Guerrero Arco Iris",
"headSpecialGaymerxNotes": "Con motivo de la celebración por la Conferencia GaymerX, ¡este casco especial está decorado con un radiante y colorido estampado arco iris! GaymerX es una convención de juegos que celebra a la gente LGBTQ y a los videojuegos, y está abierta a todo el público.",
"headMystery201402Text": "Yelmo Alado",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Galera Elegante",
"headMystery301404Notes": "¡Una galera elegante para los señores más sofisticados! Artículo de Suscriptor de Enero 3015. No otorga ningún beneficio.",
"headMystery301405Text": "Galera Básica",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "artículo de mano secundaria",
"offhandCapitalized": "Artículo de Mano Secundaria",
"shieldBase0Text": "Equipamiento sin Mano Secundaria",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Destructora de Resoluciones",
"shieldMystery201601Notes": "Esta espada se puede usar para desviar a todas las distracciones. No otorga ningún beneficio. Artículo de Suscriptor de Enero 2016.",
"shieldMystery201701Text": "Escudo congela tiempo",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Esta capa tiene bolsillos secretos para esconder todo el oro que obtengas como botín por tus tareas. No otorga ningún beneficio. Artículo de Suscriptor de Junio 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "Accesorio para la cabeza",
"headAccessoryCapitalized": "Accesorio de Cabeza",
"accessories": "Accesorios",
diff --git a/website/common/locales/es_419/generic.json b/website/common/locales/es_419/generic.json
index 0aec6b9f4fc..58905b9d281 100644
--- a/website/common/locales/es_419/generic.json
+++ b/website/common/locales/es_419/generic.json
@@ -4,9 +4,9 @@
"titleIndex": "Habitica | Tu vida, un juego de rol",
"habitica": "Habitica",
"habiticaLink": "Habitica",
- "onward": "Onward!",
- "done": "Done",
- "gotIt": "Got it!",
+ "onward": "Adelante!",
+ "done": "Listo",
+ "gotIt": "¡Lo tengo!",
"titleTasks": "Tareas",
"titleAvatar": "Avatar",
"titleBackgrounds": "Fondos",
@@ -28,9 +28,9 @@
"titleTimeTravelers": "Viajeros del Tiempo",
"titleSeasonalShop": "Tienda Estacional",
"titleSettings": "Ajustes",
- "saveEdits": "Save Edits",
- "showMore": "Show More",
- "showLess": "Show Less",
+ "saveEdits": "Guardar cambios",
+ "showMore": "Mostrar más",
+ "showLess": "Mostrar menos ",
"expandToolbar": "Abrir barra de herramientas",
"collapseToolbar": "Cerrar barra de herramientas",
"markdownBlurb": "Habitica utiliza Markdown para dar formato a los mensajes. Visita la Guía de Markdown para obtener mayor información.",
@@ -58,13 +58,13 @@
"user": "Usuario",
"market": "Mercado",
"groupPlansTitle": "Planes grupales",
- "newGroupTitle": "New Group",
+ "newGroupTitle": "Nuevo grupo",
"subscriberItem": "Artículo Misterioso",
"newSubscriberItem": "Nuevo Artículo Misterioso",
"subscriberItemText": "Cada mes, los suscriptores recibirán un artículo misterioso. Esto sucede usualmente una semana antes de fin de mes. Ve la página de la wiki \"Artículo Misterioso\" para más información.",
"all": "Todo",
"none": "Ninguno",
- "more": "<%= count %> more",
+ "more": "<%= count %>más",
"and": "y",
"loginSuccess": "¡Has iniciado sesión!",
"youSure": "¿Estás seguro?",
@@ -86,8 +86,8 @@
"gemsPopoverTitle": "Gemas",
"gems": "Gemas",
"gemButton": "Tienes <%= number %> gemas.",
- "needMoreGems": "Need More Gems?",
- "needMoreGemsInfo": "Purchase Gems now, or become a subscriber to buy Gems with Gold, get monthly mystery items, enjoy increased drop caps and more!",
+ "needMoreGems": "¿Necesitas más gemas?",
+ "needMoreGemsInfo": "Compra gemas ahora, o vuelvete un suscriptor para comprar gemas con Oro, recibir objetos misteriosos mensualmente, disfrutar de un mayor botín ¡Y más!",
"moreInfo": "Más información",
"moreInfoChallengesURL": "http://habitica.wikia.com/wiki/Challenges",
"moreInfoTagsURL": "http://habitica.wikia.com/wiki/Tags",
@@ -107,8 +107,8 @@
"achievementDilatory": "Salvador de Dilatoria",
"achievementDilatoryText": "¡Ayudó a vencer al Temido Drag'on de Dilatoria durante el Evento de Bienvenida del Verano de 2014!",
"costumeContest": "Participante del Concurso de Disfraces",
- "costumeContestText": "Participó en el Concurso de Disfraces de Habitoween. ¡Ve algunas de las entradas en el blog de Habitica!",
- "costumeContestTextPlural": "Participó en <%= count %> Concursos de Disfraces de Habitoween. ¡Ve algunas de las entradas en el blog de Habitica!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Miembro desde",
"lastLoggedIn": "- Última conexión",
"notPorted": "Esta función aún no se ha traído del sitio original.",
@@ -122,7 +122,7 @@
"error": "Error",
"menu": "Menú",
"notifications": "Notificaciones",
- "noNotifications": "You have no notifications.",
+ "noNotifications": "No tienes notificaciones.",
"clear": "Borrar",
"endTour": "Terminar el tour",
"audioTheme": "Tema de audio",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Tema de Airu",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Theme",
"audioTheme_arashiTheme": "Arashi's Theme",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Hacer una pregunta",
"reportBug": "Reportar un error",
"HabiticaWiki": "La Wiki de Habitica",
@@ -208,7 +210,7 @@
"getwell3": "Sorry you're not feeling your best!",
"getwellCardAchievementTitle": "Caring Confidant",
"getwellCardAchievementText": "Well-wishes are always appreciated. Sent or received <%= count %> get well cards.",
- "goodluckCard": "Good Luck Card",
+ "goodluckCard": "Carta de la buena suerte",
"goodluckCardExplanation": "You both receive the Lucky Letter achievement!",
"goodluckCardNotes": "Send a good luck card to a party member.",
"goodluck0": "May luck always follow you!",
@@ -235,23 +237,23 @@
"onlineCount": "<%= count %> en línea",
"loading": "Cargando...",
"userIdRequired": "El ID de usuario es requerido",
- "resetFilters": "Clear all filters",
- "applyFilters": "Apply Filters",
+ "resetFilters": "Quitar todos los filtros ",
+ "applyFilters": "Aplicar filtros",
"categories": "Categories",
"habiticaOfficial": "Habitica Official",
- "animals": "Animals",
- "artDesign": "Art & Design",
- "booksWriting": "Books & Writing",
- "comicsHobbies": "Comics & Hobbies",
+ "animals": "Animales",
+ "artDesign": "Arte y Diseño",
+ "booksWriting": "Libros y Escritura",
+ "comicsHobbies": "Comics y Hobbies",
"diyCrafts": "DIY & Crafts",
- "education": "Education",
- "foodCooking": "Food & Cooking",
+ "education": "Educación ",
+ "foodCooking": "Comida y Cocina",
"healthFitness": "Health & Fitness",
- "music": "Music",
- "relationship": "Relationships",
- "scienceTech": "Science & Technology",
- "exercise": "Exercise",
- "creativity": "Creativity",
+ "music": "Música",
+ "relationship": "Relaciones ",
+ "scienceTech": "Ciencia y Tecnología",
+ "exercise": "Ejercicio ",
+ "creativity": "Creatividad",
"budgeting": "Budgeting",
"health_wellness": "Health & Wellness",
"self_care": "Self-Care",
@@ -266,14 +268,14 @@
"mental_health": "Mental Health + Self-Care",
"getting_organized": "Getting Organized",
"self_improvement": "Self-Improvement",
- "spirituality": "Spirituality",
+ "spirituality": "Espiritualidad ",
"time_management": "Time-Management + Accountability",
"recovery_support_groups": "Recovery + Support Groups",
- "messages": "Messages",
- "emptyMessagesLine1": "You don't have any messages",
- "emptyMessagesLine2": "Send a message to start a conversation!",
+ "messages": "Mensajes ",
+ "emptyMessagesLine1": "No tienes ningún mensaje ",
+ "emptyMessagesLine2": "¡Envía un mensaje para iniciar una conversación!",
"letsgo": "Let's Go!",
"selected": "Selected",
- "howManyToBuy": "How many would you like to buy?",
+ "howManyToBuy": "¿Cuántos quieres vender? ",
"habiticaHasUpdated": "There is a new Habitica update. Refresh to get the latest version!"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/groups.json b/website/common/locales/es_419/groups.json
index 18ed3de203f..5c68e300215 100644
--- a/website/common/locales/es_419/groups.json
+++ b/website/common/locales/es_419/groups.json
@@ -1,19 +1,19 @@
{
"tavern": "Chat de Taberna",
- "tavernChat": "Tavern Chat",
+ "tavernChat": "Chat de la Taberna",
"innCheckOut": "Dejar la posada",
"innCheckIn": "Descansar en la posada",
"innText": "¡Has entrado a descansar en la Posada! Mientras permanezcas aquí tus Diarias no te dañarán al finalizar el día, pero sí se renovarán cada día. Ten cuidado: si estás participando en una Misión contra un Jefe ¡las Diarias incompletas de tus compañeros de equipo te seguirán haciendo daño! Además, tú no dañarás al jefe (ni obtendrás los objetos recolectados) hasta que no hayas salido de la Posada.",
"innTextBroken": "Has entrado a descansar en la Posada, supongo... Mientras permanezcas aquí tus Diarias no te dañarán al finalizar el día, pero sí se renovarán cada día... Si estás participando en una Misión contra un Jefe, las Diarias incompletas de tus compañeros de equipo te seguirán haciendo daño... a menos que ellos también estén descansando en la Posada... Además, tú no dañarás al jefe (ni obtendrás los objetos recolectados) hasta que no hayas salido de la Posada... estoy tan cansado...",
- "helpfulLinks": "Helpful Links",
- "communityGuidelinesLink": "Community Guidelines",
- "lookingForGroup": "Looking for Group (Party Wanted) Posts",
- "dataDisplayTool": "Data Display Tool",
- "reportProblem": "Report a Bug",
- "requestFeature": "Request a Feature",
- "askAQuestion": "Ask a Question",
- "askQuestionGuild": "Ask a Question (Habitica Help guild)",
- "contributing": "Contributing",
+ "helpfulLinks": "Enlaces Útiles",
+ "communityGuidelinesLink": "Normas de la Comunidad",
+ "lookingForGroup": "Publicaciones buscando un Grupo (Party Wanted)",
+ "dataDisplayTool": "Herramienta de Visualización de Datos",
+ "reportProblem": "Reporta un Error",
+ "requestFeature": "Solicita una Característica",
+ "askAQuestion": "Haz una Pregunta",
+ "askQuestionGuild": "Haz una Pregunta (Gremio de Ayuda en Habitica)",
+ "contributing": "Contribuir",
"faq": "FAQ",
"lfgPosts": "Publicaciones de Búsqueda de Grupo (Se Busca Equipo)",
"tutorial": "Tutorial",
@@ -37,21 +37,21 @@
"party": "Equipo",
"createAParty": "Crear un Equipo",
"updatedParty": "Ajustes de Equipo actualizados.",
- "errorNotInParty": "You are not in a Party",
+ "errorNotInParty": "No estás en un Grupo",
"noPartyText": "O no tienes un equipo o tu equipo está tardando en cargar. Puedes crear uno e invitar a algunos amigos, o si quieres unirte a un equipo existente, haz que introduzcan tu ID de usuario único abajo y después vuelves aquí para buscar la invitación:",
"LFG": "Para promocionar tu nuevo equipo o encontrar uno para unirte, ve al Gremio <%= linkStart %>Se Busca Equipo (Búsqueda de Grupo)<%= linkEnd %>.",
"wantExistingParty": "¿Quieres unirte a un equipo existente? Ve al <%= linkStart %>Gremio Se Busca Equipo<%= linkEnd %> y publica este ID de usuario:",
"joinExistingParty": "Unirse al Equipo de otra persona",
"needPartyToStartQuest": "¡Ups! necesitas unirte o crear un grupo antes de iniciar un a misión.",
- "createGroupPlan": "Create",
+ "createGroupPlan": "Crear",
"create": "Crear",
"userId": "ID de Usuario",
"invite": "Invitar",
"leave": "Salir",
"invitedTo": "Invitado a <%= name %>",
- "invitedToNewParty": "You were invited to join a party! Do you want to leave this party, reject all other party invitations and join <%= partyName %>?",
- "partyInvitationsText": "You have <%= numberInvites %> party invitations! Choose wisely, because you can only be in one party at a time.",
- "joinPartyConfirmationText": "Are you sure you want to join the party \"<%= partyName %>\"? You can only be in one party at a time. If you join, all other party invitations will be rejected.",
+ "invitedToNewParty": "¡Fuiste invitado a unirte a un grupo! ¿Quieres abandonar este grupo, rechazar todas las otras invitaciones y unirte a <%= partyName %>?",
+ "partyInvitationsText": "¡Tienes <%= numberInvites %> invitaciones de grupo! Escoge sabiamente ya que solo puedes estar en un grupo a la vez.",
+ "joinPartyConfirmationText": "Estas seguro que quieres unirte al grupo \"<%= partyName %>\"? Solo puedes estar en un grupo a la vez. Si te unes, todas las otras invitaciones serán rechazadas.",
"invitationAcceptedHeader": "Tu invitación ha sido Aceptada",
"invitationAcceptedBody": "<%= username %> aceptada tu invitación a <%= groupName %>!",
"joinNewParty": "Unirte al nuevo Equipo",
@@ -70,7 +70,7 @@
"guildBankPop1": "Banco del gremio",
"guildBankPop2": "Gemas que el líder del gremio puede usar como premios en desafíos.",
"guildGems": "Gemas del gremio",
- "group": "Group",
+ "group": "Grupo",
"editGroup": "Editar grupo",
"newGroupName": "Nombre del <%= groupType %>",
"groupName": "Nombre del grupo",
@@ -80,7 +80,7 @@
"logoUrl": "URL del Logotipo",
"assignLeader": "Asignar líder del grupo",
"members": "Miembros",
- "memberList": "Member List",
+ "memberList": "Lista de Miembros",
"partyList": "Orden de la lista de miembros en la cabecera",
"banTip": "Echar miembro",
"moreMembers": "más miembros",
@@ -94,7 +94,7 @@
"search": "Buscar",
"publicGuilds": "Gremios Públicos",
"createGuild": "Crear Gremio",
- "createGuild2": "Create",
+ "createGuild2": "Crear",
"guild": "Gremio",
"guilds": "Gremios",
"guildsLink": "Gremios",
@@ -102,15 +102,16 @@
"optionalMessage": "Mensaje opcional",
"yesRemove": "Si, elimínalo",
"foreverAlone": "No puedes darle me gusta a tu propio mensaje. No seas ese tipo de persona.",
- "sortLevel": "Ordenar por nivel",
- "sortRandom": "Ordenar al azar",
- "sortPets": "Ordenar por número de mascotas",
- "sortName": "Ordenar por nombre de avatar",
- "sortBackgrounds": "Ordenar por fondo",
- "sortHabitrpgJoined": "Ordenar por fecha de registro a Habitica",
- "sortHabitrpgLastLoggedIn": "Ordenar por último inicio de sesión de usuario",
- "ascendingSort": "Orden ascendente",
- "descendingSort": "Orden descendente",
+ "sortDateJoinedAsc": "Fecha de Ingreso más Antígua",
+ "sortDateJoinedDesc": "Fecha de Ingreso más Reciente",
+ "sortLoginAsc": "Inicio de Sesión más Antiguo",
+ "sortLoginDesc": "Último Inicio de Sesión",
+ "sortLevelAsc": "Nivel más bajo",
+ "sortLevelDesc": "Nivel más Alto",
+ "sortNameAsc": "Nombre (A-Z)",
+ "sortNameDesc": "Nombre (Z-A)",
+ "sortTierAsc": "Nivel de Colaborador más bajo",
+ "sortTierDesc": "Nivel de Colaborador más alto",
"confirmGuild": "¿Crear Gremio por 4 gemas?",
"leaveGroupCha": "Abandonar los desafíos de gremio y...",
"confirm": "Confirmar",
@@ -138,17 +139,17 @@
"privateMessageGiftSubscriptionMessage": "Tienes <%= numberOfMonths %> meses de suscripción.",
"cannotSendGemsToYourself": "No puedes enviarte gemas a ti mismo. Prueba con una suscripción en su lugar.",
"badAmountOfGemsToSend": "La cantidad de gemas debe de estar entre 1 y el número de gemas que tienes. ",
- "report": "Report",
+ "report": "Reportar",
"abuseFlag": "Reportar una violación de las Normas de la Comunidad",
"abuseFlagModalHeading": "¿Reportar una violación hecha por <%= name %>?",
- "abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:
",
+ "abuseFlagModalBody": "¿Estás seguro que quieres reportar esta publicación? Deberías reportar SÓLO las publicaciones que violan las <%= firstLinkStart %>Normas de la Comunidad<%= linkEnd %> y/o los <%= secondLinkStart %>Términos de Servicio<%= linkEnd %>. Reportar inapropiadamente una publicación es una violación de las Normas de la Comunidad y puede darte una infracción. Algunas de las razones apropiadas incluyen pero no limitan:
",
"abuseFlagModalButton": "Reportar Violación",
"abuseReported": "Gracias por reportar esta violación. Los moderadores han sido notificados.",
"abuseAlreadyReported": "Ya has reportado este mensaje.",
"needsText": "Por favor escribe un mensaje.",
"needsTextPlaceholder": "Escribe tu mensaje aqui.",
"copyMessageAsToDo": "Copiar mensaje como Pendiente",
- "copyAsTodo": "Copy as To-Do",
+ "copyAsTodo": "Copialo como Pendiente",
"messageAddedAsToDo": "Mensaje copiado como Pendiente.",
"messageWroteIn": "<%= user %> escribió en <%= group %>",
"taskFromInbox": "<%= from %> escribió '<%= message %>'",
@@ -157,10 +158,10 @@
"leaderOnlyChallenges": "Sólo el líder del grupo puede crear desafíos",
"sendGift": "Enviar Regalo",
"inviteFriends": "Invitar Amigos",
- "partyMembersInfo": "Your party currently has <%= memberCount %> members and <%= invitationCount %> pending invitations. The limit of members in a party is <%= limitMembers %>. Invitations above this limit cannot be sent.",
+ "partyMembersInfo": "Tu grupo tiene actualmente <%= memberCount %> miembros y <%= invitationCount %> invitaciones pendientes. El límite de miembros en un grupo es de <%= limitMembers %>. Invitaciones sobre este límite no serán enviadas.",
"inviteByEmail": "Invitar por correo electrónico",
"inviteByEmailExplanation": "Si un amigo se une a Habitica mediante el correo que le enviaste, ¡será invitado automáticamente a tu equipo!",
- "inviteMembersHowTo": "Invite people via a valid email or 36-digit User ID. If an email isn't registered yet, we'll invite them to join Habitica.",
+ "inviteMembersHowTo": "Invita gente mediante un correo electrónico válido o con el ID de usuario de 36 dígitos. Si un correo no se encuentra registrado aún, lo invitaremos a unirse a Habitica.",
"inviteFriendsNow": "Invitar a tus amigos ahora",
"inviteFriendsLater": "Invitar a tus amigos más tarde",
"inviteAlertInfo": "Si tienes amigos que ya están usando Habitica, invítalos mediante su ID de usuario aquí.",
@@ -170,10 +171,10 @@
"sendInvitations": "Enviar invitaciones",
"invitationsSent": "¡Invitaciones enviadas!",
"invitationSent": "¡Invitación enviada!",
- "invitedFriend": "Invited a Friend",
- "invitedFriendText": "This user invited a friend (or friends) who joined them on their adventure!",
+ "invitedFriend": "Invitó a un Amigo",
+ "invitedFriendText": "¡Este usuario ha invitado un amigo (o amigos) que se unieron a ellos en su aventura!",
"inviteAlertInfo2": "O comparte este link (copia/pega):",
- "inviteLimitReached": "You have already sent the maximum number of email invitations. We have a limit to prevent spamming, however if you would like more, please contact us at <%= techAssistanceEmail %> and we'll be happy to discuss it!",
+ "inviteLimitReached": "Ya has enviado el número máximo de invitaciones por email. Tenemos un límite para prevenir el spam, no obstante, si quieres más, por favor contáctanos en <%= techAssistanceEmail %> y ¡estaremos encantados de llegar a un acuerdo!",
"sendGiftHeading": "Enviar regalo a <%= name %>",
"sendGiftGemsBalance": "De <%= number %> Gemas",
"sendGiftCost": "Total: $<%= cost %> USD",
@@ -181,7 +182,7 @@
"sendGiftPurchase": "Comprar",
"sendGiftMessagePlaceholder": "Mensaje personal (opcional)",
"sendGiftSubscription": "<%= months %> Mes(es): $<%= price %> USD",
- "gemGiftsAreOptional": "Please note that Habitica will never require you to gift gems to other players. Begging people for gems is a violation of the Community Guidelines, and all such instances should be reported to <%= hrefTechAssistanceEmail %>.",
+ "gemGiftsAreOptional": "Por favor ten en cuenta que Habitica nunca te pedirá que regales gemas a otros usuarios. La gente que pide gemas está violación a las Normas de la Comunidad, por lo que todos esos casos deben ser reportados a <%= hrefTechAssistanceEmail %>.",
"battleWithFriends": "Combate a monstruos con tus amigos",
"startPartyWithFriends": "¡Empieza un Equipo con tus amigos!",
"startAParty": "Crea un Equipo",
@@ -199,8 +200,8 @@
"requestAcceptGuidelines": "Si quieres publicar mensajes en la Taberna o en el chat de un equipo o de un gremio, por favor lee nuestras <%= linkStart %>Normas de la Comunidad<%= linkEnd %> primero y después haz clic en el botón de abajo para indicar que las aceptas.",
"partyUpName": "Equipados",
"partyOnName": "Equipazo",
- "partyUpText": "Joined a Party with another person! Have fun battling monsters and supporting each other.",
- "partyOnText": "Joined a Party with at least four people! Enjoy your increased accountability as you unite with your friends to vanquish your foes!",
+ "partyUpText": "¡Te uniste a un Grupo con otra persona! Diviértete luchando contra monstruos y apoyándose el uno al otro.",
+ "partyOnText": "¡Te uniste a un Grupo con al menos 4 personas! Disfruta tu responsabilidad aumentada ¡a la vez que te unes con tus amigos para vencer sus enemigos!",
"largeGroupNote": "Nota: Este Gremio es muy grande y ya no soporta notificaciones. Asegúrese de revisar de nuevo todos los días para ver los mensajes nuevos.",
"groupIdRequired": "\"groupId\" debe ser un UUID válido",
"groupNotFound": "Grupo no encontrado o no tienes acceso.",
@@ -216,7 +217,7 @@
"keepOrRemove": "req.query.keep debe ser ya sea \"keep\" o \"remove\"",
"canOnlyInviteEmailUuid": "Solo se puede invitar usando uuids o correos.",
"inviteMissingEmail": "No se encuentra el correo electronico en la invitacíon.",
- "inviteMissingUuid": "Missing user id in invite",
+ "inviteMissingUuid": "Falta el ID de usuario en la invitación",
"inviteMustNotBeEmpty": "La invitación no debe estar vacía",
"partyMustbePrivate": "Partidos tienen que ser privados.",
"userAlreadyInGroup": "Usuario ya esta en ese grupo.",
@@ -229,69 +230,79 @@
"uuidsMustBeAnArray": "Las invitaciónes de ID de usuarios deben ser un array.",
"emailsMustBeAnArray": "Dirección de correo electronico debe ser un array",
"canOnlyInviteMaxInvites": "Solo puedes invitar \"<%= maxInvites %>\" a la vez.",
- "partyExceedsMembersLimit": "Party size is limited to <%= maxMembersParty %> members",
+ "partyExceedsMembersLimit": "El tamaño del Grupo está limitado a <%= maxMembersParty %> miembros",
"onlyCreatorOrAdminCanDeleteChat": "¡No autorizado a eliminar este mensaje!",
"onlyGroupLeaderCanEditTasks": "¡No autorizado para administrar tareas!",
"onlyGroupTasksCanBeAssigned": "Solo las tareas grupales pueden ser asignadas.",
- "chatPrivilegesRevoked": "Your chat privileges have been revoked.",
+ "assignedToUser": "Asignada a <%= userName %>",
+ "assignedToMembers": "Asignado a los miembros <%= userCount %>",
+ "assignedToYouAndMembers": "Asignado a ti y <%= userCount %>miembros",
+ "youAreAssigned": "Tu estás asignado a esta tarea",
+ "taskIsUnassigned": "Esta tarea está sin asignar",
+ "confirmClaim": "¿Estás seguro que quieres pedir esta tarea?",
+ "confirmUnClaim": "¿Estás seguro que no quieres reclamar esta tarea?",
+ "confirmApproval": "¿Estás seguro que quieres aprobar esta tarea?",
+ "userRequestsApproval": "<%= userName %> solicita aprobación",
+ "userCountRequestsApproval": "<%= userCount %> solicitan aprobación",
+ "youAreRequestingApproval": "Estás solicitando aprobación",
+ "chatPrivilegesRevoked": "Tus privilegios del chat han sido revocados.",
"newChatMessagePlainNotification": "Nuevo mensaje en <%= groupName %> por <%= authorName %>. Cliquea aquí para abrir la página de chat.",
"newChatMessageTitle": "Nuevo mensaje en <%= groupName %>",
"exportInbox": "Exportar mensajes",
"exportInboxPopoverTitle": "Exportar tus mensajes como HTML",
- "exportInboxPopoverBody": "HTML allows easy reading of messages in a browser. For a machine-readable format, use Data > Export Data",
+ "exportInboxPopoverBody": "el HTML permite leer fácilmente los mensajes en un navegador. Para un formato legible por la máquina, usa Datos > Exportar Datos",
"to": "Para:",
"from": "De:",
- "desktopNotificationsText": "We need your permission to enable desktop notifications for new messages in party chat! Follow your browser's instructions to turn them on.
You'll receive these notifications only while you have Habitica open. If you decide you don't like them, they can be disabled in your browser's settings.
This box will close automatically when a decision is made.",
+ "desktopNotificationsText": "¡Necesitamos tu permiso para habilitar las notificaciones de escritorio para nuevos mensajes en el chat del grupo! Sigue las instrucciones de tu navegador para activarlas.
Recibirás estas notificaciones sólo cuando tengas Habitica abierto. Si decides que ya no las deseas, pueden ser deshabilitadas en los ajustes de tu navegador.
Este cuadro se cerrará automáticamente cuando se tome una decisión.",
"confirmAddTag": "¿Quieres asignar esta tarea a \"<%= tag %>\"?",
"confirmRemoveTag": "¿Realmente quiere eliminar a \"<%= tag %>\"?",
"groupHomeTitle": "Hogar",
"assignTask": "Asignar tarea",
- "claim": "Claim",
+ "claim": "Reclama",
"onlyGroupLeaderCanManageSubscription": "Solo el líder del grupo puede administrar la suscripción grupal",
"yourTaskHasBeenApproved": "Tu tarea \"<%= taskText %>\" fue aprobada",
"userHasRequestedTaskApproval": "<%= user %> ha requerido la aprobación de la tarea <%= taskName %>",
"approve": "Aprobar",
- "approvalTitle": "<%= userName %> has completed <%= type %>: \"<%= text %>\"",
+ "approvalTitle": "<%= userName %> ha completado <%= type %>: \"<%= text %>\"",
"confirmTaskApproval": "¿Quieres recompensar a <%= username %> por completar esta tarea?",
"groupSubscriptionPrice": "$9 cada mes + $3 mensuales por cada miembro adicional del grupo",
"groupAdditionalUserCost": "+$3.00/por mes/por usuario",
"groupBenefitsTitle": "Cómo te puede ayudar un plan grupal",
- "groupBenefitsDescription": "We've just launched the beta version of our group plans! Upgrading to a group plan unlocks some unique features to optimize the social side of Habitica.",
+ "groupBenefitsDescription": "¡Acabamos de lanzar la versión beta de nuestros planes grupales! Actualizándote a un plan grupal desbloquearás algunas características únicas para optimizar el lado social de Habitica.",
"groupBenefitOneTitle": "Crea una lista de tareas compartida",
- "groupBenefitOneDescription": "Set up a shared task list for the group that everyone can easily view and edit.",
+ "groupBenefitOneDescription": "Crea una lista de tareas compartida para el grupo que todos pueden ver y editar fácilmente.",
"groupBenefitTwoTitle": "Asigna tareas a los miembros del grupo",
- "groupBenefitTwoDescription": "Want a coworker to answer a critical email? Need your roommate to pick up the groceries? Just assign them the tasks you create, and they'll automatically appear in that person's task dashboard.",
- "groupBenefitThreeTitle": "Claim a task that you are working on",
- "groupBenefitThreeDescription": "Stake your claim on any group task with a simple click. Make it clear what everybody is working on!",
+ "groupBenefitTwoDescription": "¿Quieres que un compañero de trabajo responda un email importante? ¿Necesitas que tu compañero de habitación recoja los paquetes? Sólo asígnales tareas que has creado y aparecerán automáticamente en el tablero de tareas de esta persona.",
+ "groupBenefitThreeTitle": "Solicita una tarea en la que estás trabajando",
+ "groupBenefitThreeDescription": "Coloca tu solicitud en cualquier grupo de tareas con un simple click. ¡Deja claro en qué está trabajando cada uno!",
"groupBenefitFourTitle": "Marca tareas que requieren de aprobación especial",
- "groupBenefitFourDescription": "Need to verify that a task really did get done before that user gets their rewards? Just adjust the approval settings for added control.",
+ "groupBenefitFourDescription": "¿Necesitas verificar que una tarea ha sido realizada antes de que el usuario obtenga sus recompensas? Solamente ajusta los ajustes de aprobación para control adicional.",
"groupBenefitFiveTitle": "Chatea de forma privada con tu grupo",
- "groupBenefitFiveDescription": "Stay in the loop about important decisions in our easy-to-use chatroom!",
+ "groupBenefitFiveDescription": "Mantente al tanto acerca de las decisiones importantes en nuestra intuitiva sala de chat",
"groupBenefitSixTitle": "Recibe una suscripción gratis",
- "groupBenefitSixDescription": "Get full subscription benefits, including exclusive monthly items and the ability to buy gems with gold! (If you're already a subscriber, your old subscription will be cancelled but your consecutive subscription benefits such as monthly hourglasses will remain.)",
- "groupBenefitSevenTitle": "Get a brand-new exclusive Jackalope Mount",
- "groupBenefitEightTitle": "Add Group Managers to help manage tasks",
- "groupBenefitEightDescription": "Want to share your group's responsibilities? Promote people to Group Managers to help the Leader add, assign, and approve tasks!",
- "groupBenefitMessageLimitTitle": "Increase message limit",
- "groupBenefitMessageLimitDescription": "Your message limit is doubled to house up to 400 messages at a time!",
- "teamBasedTasks": "Team-based Tasks",
- "specializedCommunication": "Specialized Communication",
- "funExtras": "Fun Extras",
- "enterprisePlansButton": "Ask about Enterprise Plans",
- "enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
- "familyPlansButton": "Sign Up for Family Plan Mailing List",
- "familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
+ "groupBenefitSixDescription": "Obtén los beneficios completos de subscripción, incluyendo artículos mensuales exclusivos ¡y la capacidad de comprar gemas con oro! (Si actualmente eres un suscriptor, tu vieja suscripción será cancelada pero tus beneficios consecutivos de suscripción como los relojes de arena mensuales se mantendrán.)",
+ "groupBenefitSevenTitle": "Obtén la nueva y exclusiva Montura de Jackalope",
+ "groupBenefitEightTitle": "Agrega Administradores de Grupo para ayudarte a manejar las tareas",
+ "groupBenefitEightDescription": "¿Quieres compartir las responsabilidades de tu grupo? Asciende gente a Administradores de Grupo para ayudar al Líder !agregando, asignando y aprobando tareas!",
+ "groupBenefitMessageLimitTitle": "Aumenta el límite de mensajes",
+ "groupBenefitMessageLimitDescription": "¡Tu límite de mensajes ha sido doblado para guardar hasta 400 mensajes al mismo tiempo!",
+ "teamBasedTasks": "Tareas basadas en Equipo",
+ "specializedCommunication": "Comunicación especializada ",
+ "funExtras": "Extras divertidos",
+ "enterprisePlansButton": "Pregunta por nuestros Planes Empresariales",
+ "enterprisePlansDescription": "¿Estás buscando una instalación más grande para necesidades personalizadas? Revisa si nuestros planes empresariales son buenos para ti.",
+ "familyPlansButton": "Regístrate para manejar una Lista de Correo de Planes Familiares",
+ "familyPlansDescription": "¿Quieres una cómoda solución para manejar tu hogar? ¡Los Planes Familiares vienen pronto!",
"createAGroup": "Crear un grupo",
- "getAGroupPlanToday": "Get a Group Plan Today",
+ "getAGroupPlanToday": "Obtener un Plan Grupal Hoy",
"assignFieldPlaceholder": "Escribe el nombre de perfil de algún miembro del grupo",
"cannotDeleteActiveGroup": "No puedes eliminar un grupo con una suscripción activa",
"groupTasksTitle": "Lista de tareas grupales",
"approvalsTitle": "Tareas esperando ser aprobadas",
- "upgradeTitle": "Upgrade",
- "blankApprovalsDescription": "When your group completes tasks that need your approval, they'll appear here! Adjust approval requirement settings under task editing.",
- "userIsClamingTask": "`<%= username %> has claimed \"<%= task %>\"`",
- "approvalRequested": "Approval Requested",
+ "upgradeTitle": "Actualizar",
+ "blankApprovalsDescription": "!Cuando tu grupo complete tareas que necesitan tu aprobación, ellas aparecerán aquí! Ajusta los requisitos de aprobación en edición de tareas.",
+ "userIsClamingTask": "`<%= username %> ha solicitado \"<%= task %>\"`",
+ "approvalRequested": "Aprobación Solicitada",
"refreshApprovals": "Actualizar permisos",
"refreshGroupTasks": "Actualiza las tareas grupales",
"claimedBy": "Reclamado por: <%= claimingUsers %>",
@@ -300,102 +311,103 @@
"onlyGroupLeaderCanInviteToGroupPlan": "Solo el líder del grupo puede invitar a usuarios a un grupo con una suscripción.",
"remainOrLeaveChallenges": "req.query.keep debe ser o 'remain-in-challenges' o 'leave-challenges'",
"paymentDetails": "Detalles de pago",
- "aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
+ "aboutToJoinCancelledGroupPlan": "Estás a punto de unirte a un grupo con un plan cancelado. NO recibirás una suscripción gratuita.",
"cannotChangeLeaderWithActiveGroupPlan": "No puedes cambiar el líder mientras el grupo tiene un plan activo.",
"leaderCannotLeaveGroupWithActiveGroup": "Un líder no puede abandonar el grupo con un plan activo",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancelar el plan grupal",
- "confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
+ "confirmCancelGroupPlan": "¿Estás seguro que quieres cancelar el plan grupal y retirar sus beneficios para todos sus miembros, incluyendo sus suscripciones gratuitas?",
"canceledGroupPlan": "Plan grupal cancelado",
"groupPlanCanceled": "El plan grupal se desactivará el",
- "purchasedGroupPlanPlanExtraMonths": "You have <%= months %> months of extra group plan credit.",
- "addManagers": "Add Managers",
- "addManager": "Add Manager",
- "removeManager": "Remove",
- "userMustBeMember": "User must be a member",
- "userIsNotManager": "User is not manager",
- "canOnlyApproveTaskOnce": "This task has already been approved.",
- "addTaskToGroupPlan": "Create",
- "leaderMarker": "- Leader",
- "managerMarker": "- Manager",
- "joinedGuild": "Joined a Guild",
- "joinedGuildText": "Ventured into the social side of Habitica by joining a Guild!",
- "badAmountOfGemsToPurchase": "Amount must be at least 1.",
+ "purchasedGroupPlanPlanExtraMonths": "Tú tienes <%= months %> meses de crédito adicional al plan grupal",
+ "addManagers": "Agregar Administradores",
+ "addManager": "Agregar Administrador",
+ "removeManager": "Eliminar",
+ "userMustBeMember": "El Usuario debe ser miembro",
+ "userIsNotManager": "El Usuario no es administrador",
+ "canOnlyApproveTaskOnce": "Esta tarea ya ha sido aprobada.",
+ "addTaskToGroupPlan": "Crear",
+ "leaderMarker": "- Líder",
+ "managerMarker": "- Administrador",
+ "joinedGuild": "Se unió a un Gremio",
+ "joinedGuildText": "¡Aventúrate al lado social de Habitica uniéndote a un Gremio!",
+ "badAmountOfGemsToPurchase": "La cantidad debe ser de al menos 1.",
"groupPolicyCannotGetGems": "The policy of one group you're part of prevents its members from obtaining gems.",
- "viewParty": "View Party",
- "newGuildPlaceholder": "Enter your guild's name.",
- "guildMembers": "Guild Members",
- "guildBank": "Guild Bank",
- "chatPlaceholder": "Type your message to Guild members here",
- "partyChatPlaceholder": "Type your message to Party members here",
- "fetchRecentMessages": "Fetch Recent Messages",
- "like": "Like",
- "liked": "Liked",
- "joinGuild": "Join Guild",
- "inviteToGuild": "Invite to Guild",
- "messageGuildLeader": "Message Guild Leader",
- "donateGems": "Donate Gems",
- "updateGuild": "Update Guild",
- "viewMembers": "View Members",
- "memberCount": "Member Count",
- "recentActivity": "Recent Activity",
- "myGuilds": "My Guilds",
- "guildsDiscovery": "Discover Guilds",
- "guildOrPartyLeader": "Leader",
- "guildLeader": "Guild Leader",
- "member": "Member",
- "goldTier": "Gold Tier",
- "silverTier": "Silver Tier",
- "bronzeTier": "Bronze Tier",
- "privacySettings": "Privacy Settings",
- "onlyLeaderCreatesChallenges": "Only the Leader can create Challenges",
- "privateGuild": "Private Guild",
- "charactersRemaining": "<%= characters %> characters remaining",
- "guildSummary": "Summary",
- "guildSummaryPlaceholder": "Write a short description advertising your Guild to other Habiticans. What is the main purpose of your Guild and why should people join it? Try to include useful keywords in the summary so that Habiticans can easily find it when they search!",
- "groupDescription": "Description",
+ "viewParty": "Ver Grupo",
+ "newGuildPlaceholder": "Ingresa el nombre de tu gremio.",
+ "guildMembers": "Miembros del Gremio",
+ "guildBank": "Banco del Gremio",
+ "chatPlaceholder": "Escribe tu mensaje para los miembros del Gremio aquí",
+ "partyChatPlaceholder": "Escribe tu mensaje para los miembros del Grupo aquí",
+ "fetchRecentMessages": "Recuperar Mensajes Recientes",
+ "like": "Me gusta",
+ "liked": "Te gusta",
+ "joinGuild": "Unirse al Gremio",
+ "inviteToGuild": "Invitar al Gremio",
+ "messageGuildLeader": "Mensaje para el Líder del Gremio",
+ "donateGems": "Donar Gemas",
+ "updateGuild": "Actualizar Gremio",
+ "viewMembers": "Ver Miembros",
+ "memberCount": "Número de Miembros",
+ "recentActivity": "Actividad Reciente",
+ "myGuilds": "Mis Gremios",
+ "guildsDiscovery": "Descubrir Gremios",
+ "guildOrPartyLeader": "Líder",
+ "guildLeader": "Líder del Gremio",
+ "member": "Miembro",
+ "goldTier": "Nivel Oro",
+ "silverTier": "Nivel Plata",
+ "bronzeTier": "Nivel Bronce",
+ "privacySettings": "Ajustes de Privacidad",
+ "onlyLeaderCreatesChallenges": "Solo el Líder puede crear Desafíos",
+ "privateGuild": "Gremio Privado",
+ "charactersRemaining": "<%= characters %> caracteres restantes",
+ "guildSummary": "Resumen",
+ "guildSummaryPlaceholder": "Escribe una corta descripción anunciando tu Gremio para los otros Habiticans. ¿Cuál es el propósito principal de tu Gremio y por qué debería unirse la gente? Intenta incluir palabras claves en el resumen ¡así los Habiticans podrán encontrarte fácilmente cuando estén buscando!",
+ "groupDescription": "Descripción",
"guildDescriptionPlaceholder": "Use this section to go into more detail about everything that Guild members should know about your Guild. Useful tips, helpful links, and encouraging statements all go here!",
"markdownFormattingHelp": "[Markdown formatting help](http://habitica.wikia.com/wiki/Markdown_Cheat_Sheet)",
"partyDescriptionPlaceholder": "This is our party's description. It describes what we do in this party. If you want to learn more about what we do in this party, read the description. Party on.",
"guildGemCostInfo": "A Gem cost promotes high quality Guilds and is transferred into your Guild's bank.",
- "noGuildsTitle": "You aren't a member of any Guilds.",
- "noGuildsParagraph1": "Guilds are social groups created by other players that can offer you support, accountability, and encouraging chat.",
+ "noGuildsTitle": "No eres miembro de algún gremio. ",
+ "noGuildsParagraph1": "Los gremios son grupos sociales creados por otros jugadores que pueden ofrecerte apoyo, soporte, y mensajes alentadores.",
"noGuildsParagraph2": "Click the Discover tab to see recommended Guilds based on your interests, browse Habitica's public Guilds, or create your own Guild.",
"privateDescription": "A private Guild will not be displayed in Habitica's Guild directory. New members can be added by invitation only.",
- "removeInvite": "Remove Invitation",
- "removeMember": "Remove Member",
- "sendMessage": "Send Message",
- "removeManager2": "Remove Manager",
- "promoteToLeader": "Promote to Leader",
+ "removeInvite": "Remover invitación",
+ "removeMember": "Remover miembro",
+ "sendMessage": "Mandar mensaje",
+ "removeManager2": "Remover Administrador",
+ "promoteToLeader": "Promover a Líder ",
"inviteFriendsParty": "Inviting friends to your party will grant you an exclusive
Quest Scroll to battle the Basi-List together!",
"upgradeParty": "Upgrade Party",
- "createParty": "Create a Party",
+ "createParty": "Crear un Equipo",
"inviteMembersNow": "Would you like to invite members now?",
- "playInPartyTitle": "Play Habitica in a Party!",
+ "playInPartyTitle": "¡Juega Habitica en Grupo!",
"playInPartyDescription": "Take on amazing quests with friends or on your own. Battle monsters, create Challenges, and help yourself stay accountable through Parties.",
- "startYourOwnPartyTitle": "Start your own Party",
+ "startYourOwnPartyTitle": "Inicia tu propio Grupo",
"startYourOwnPartyDescription": "Battle monsters solo or invite as many of your friends as you'd like!",
"shartUserId": "Share User ID",
- "wantToJoinPartyTitle": "Want to join a Party?",
+ "wantToJoinPartyTitle": "¿Quieres unirte a un grupo?",
"wantToJoinPartyDescription": "Give your User ID to a friend who already has a Party, or head to the Party Wanted Guild to meet potential comrades!",
- "copy": "Copy",
+ "copy": "Copiar",
"inviteToPartyOrQuest": "Invite Party to Quest",
"inviteInformation": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the Quest begins.",
"questOwnerRewards": "Quest Owner Rewards",
"updateParty": "Update Party",
"upgrade": "Upgrade",
"selectPartyMember": "Select a Party Member",
- "areYouSureDeleteMessage": "Are you sure you want to delete this message?",
+ "areYouSureDeleteMessage": "¿Estás seguro de que quieres eliminar este mensaje?",
"reverseChat": "Reverse Chat",
- "invites": "Invites",
- "details": "Details",
- "participantDesc": "Once all members have either accepted or declined, the Quest begins. Only those who clicked 'accept' will be able to participate in the Quest and receive the rewards.",
- "groupGems": "Group Gems",
+ "invites": "Invitaciones ",
+ "details": "Detalles",
+ "participantDesc": "Cuando todos los miembros hayan aceptado o rechazado, comenzara la misión. Solo los que hicieron clic en \"aceptar\" podrán participar en la misión y recibir los premios.",
+ "groupGems": "Gemas del grupo",
"groupGemsDesc": "Guild Gems can be spent to make Challenges! In the future, you will be able to add more Guild Gems.",
"groupTaskBoard": "Task Board",
"groupInformation": "Group Information",
"groupBilling": "Group Billing",
- "wouldYouParticipate": "Would you like to participate?",
+ "wouldYouParticipate": "¿Te gustaría participar?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "El Líder se ha cambiado"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/limited.json b/website/common/locales/es_419/limited.json
index 30a2fc41976..05950dbdecd 100644
--- a/website/common/locales/es_419/limited.json
+++ b/website/common/locales/es_419/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Disponible para compra hasta el <%= date(locale) %>.",
"dateEndApril": "19 de Abril",
"dateEndMay": "17 de Mayo",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/loadingscreentips.json b/website/common/locales/es_419/loadingscreentips.json
index c2bc265883f..5d6c290416f 100644
--- a/website/common/locales/es_419/loadingscreentips.json
+++ b/website/common/locales/es_419/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Consejo #<%= tipNumber %>",
"tip1": "Verifica las tareas sobre la marcha con las aplicaciones móviles de Habitica.",
- "tip2": "Alcanza el nivel 100 para desbloquear el orbe del renacimiento gratis y empezar una nueva aventura",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Usa un emoji para diferenciar rapidamente tus tareas.",
"tip4": "Usa el signo # antes del nombre de la mision para que sea realmente grande!",
- "tip5": "Es preferible conjurar mejoras en la mañana para que duren mas tiempo.",
- "tip6": "Ocasionalmente re-evalua tus misiones para asegurarte de que esten actualizados ",
- "tip7": "Algunos fondos se conectan perfectamente si otros compañeros de equipo tienen el mismo fondo.\nEjemplo: Lago de la montaña, Pagodas y las Colinas ondulantes.",
- "tip8": "Envía un mensaje privado a alguien haciendo click en el sobre cerca de su nombre en el chat!",
- "tip9": "Visita el gremio:\"Leaders & Challenge Creators Guild\" para consejos sobre empezar un gremio.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Tu puedes ganar gemas compitiendo en desafios. adquiirendo uno nuevo cada dia!",
- "tip11": "Si disfrutas vistiendo a tu avatar, pasate por el gremio:\"Costume Carnival Guild.\"",
- "tip12": "Unete al gremio:\"Challenge... Accepted\", para desafios aleatorios, de forma regular.",
- "tip13": "¡Tener mas de cuatro miembros en tu Equipo incrementa la responsabilidad!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Tu puedes agregar encabezados o citas de inspiracion en tu lista como hábito sin (+/-).",
- "tip15": "Agrega y comprueba tu To-Dos e incrementa tu recompensa!",
- "tip16": "Evalua tu tablero de datos por informacion valiosa en tu progreso.",
- "tip17": "Usando etiquetas puedes hacer la lista de misiones pesadas muy manejable!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Habitos que son solo positivo o negativo gradualmente \"desapareciendo\" y regresa a amarillo.",
- "tip19": "Aumenta tu estadistica de inteligencia para ganar mas XP cuando completes tu mision.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Aumenta tu estadistica de percepcion para obtener mas gotas y oro.",
"tip21": "Aumenta tu estadistica de fuerza para hacer mas daño a tu enemigo u obtener golpe critico.",
"tip22": "Aumenta tu estadistica de constitución para disminuir el daño recibido por las diarias incompletas.",
- "tip23": "Click en el icono de la barra de graficos en tu mision para ver y mostrar el grafico de tu progreso.",
- "tip24": "Habitica es de codigo abierto! pregunta en el Gremio Aspirantes legendarios si tu quieres contribuir.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "Las cuatro galas estacionales empiezan cerca de los solsticios y equinoxios.",
- "tip26": "Una flecha a la izquierda de alguien del numero de nivel significa que ellos estan actualmente definidos.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "¿Hiciste una Tarea Diaria ayer pero olvidaste marcarla como hecha? ¡No te preocupes! Con Registrar la Actividad de Ayer, tendrás una oportunidad de marcar lo que hiciste antes de comenzar tu nuevo día.",
- "tip28": "Establecer un dia de ccostumbre empezar bajo el ajuste>Sitio para controlar cuando tus dias reinician.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Completa todos tus asistencias para obtener un dia pulido y perfecto que incremente tus estadisticas.",
"tip30": "Tu puedes invitar personas al gremio, no solo del equipo.",
"tip31": "Revisa las listas pre-hechas en el gremio de la Biblioteca de tareas y desafíos para tareas de ejemplo.",
- "tip32": "Muchos codigos de Habitica¨, artes y escritos es hecho por contribuyentes voluntarios! cualquiera puede ayudar.",
- "tip33": "¡Revisa el gremio del tablón de anuncios para enterarte de noticias sobre gremios, desafío y otros eventos creados por jugadores - y anuncia los tuyos ahí!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/es_419/messages.json b/website/common/locales/es_419/messages.json
index 87ec5e0adf3..246de630a07 100644
--- a/website/common/locales/es_419/messages.json
+++ b/website/common/locales/es_419/messages.json
@@ -21,7 +21,7 @@
"messageNotEnoughGold": "No tienes oro suficiente",
"messageTwoHandedEquip": "Empuñar <%= twoHandedText %> requiere dos manos, por lo cual <%= offHandedText %> ha sido removid@.",
"messageTwoHandedUnequip": "Empuñar <%= twoHandedText %> requiere dos manos, por lo cual fue removido cuando equipaste <%= offHandedText %>.",
- "messageDropFood": "You've found <%= dropArticle %><%= dropText %>!",
+ "messageDropFood": "¡Has encontrado <%= dropArticle %><%= dropText %>!",
"messageDropEgg": "¡Has encontrado un Huevo de <%= dropText %>!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "¡Has encontrado una misión!",
@@ -29,6 +29,7 @@
"messageFoundQuest": "¡Has encontrado la misión \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Compraste este equipamiento antes, pero no lo posees actualmente. Lo puedes volver a comprar en la columna de recompensas en la página de tareas.",
"messageAlreadyOwnGear": "Ya posees este artículo. Equípalo desde la página de equipamiento.",
+ "previousGearNotOwned": "Debes de comprar un equipamiento de menor nivel antes de este.",
"messageHealthAlreadyMax": "Tu salud ya se encuentra en el nivel máximo.",
"messageHealthAlreadyMin": "¡Oh no! Te has quedado sin salud y es muy tarde para comprar una poción, pero no te preocupes - ¡puedes revivir!",
"armoireEquipment": "<%= image %> Hallaste una pieza de Equipamiento raro en el Armario: ¡<%= dropText %>! ¡Genial!",
@@ -37,7 +38,7 @@
"messageInsufficientGems": "¡No tienes suficientes gemas!",
"messageAuthPasswordMustMatch": ":password y :confirmPassword no coinciden",
"messageAuthCredentialsRequired": "Se necesitan :username, :email, :password, y :confirmPassword",
- "messageAuthUsernameTaken": "Login Name already taken",
+ "messageAuthUsernameTaken": "Nombre de Usuario ya existente.",
"messageAuthEmailTaken": "Esta dirección de correo electrónico no está disponible",
"messageAuthNoUserFound": "Usuario no encontrado.",
"messageAuthMustBeLoggedIn": "Tienes que iniciar sesíon.",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Ya has denunciado este mensaje",
"messageGroupChatNotFound": "¡Mensaje no encontrado!",
"messageGroupChatAdminClearFlagCount": "¡Sólo un administrador puede borrar el número de denuncias!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ups, ¡parece que estás publicando demasiados mensajes! Espera un minuto y vuelve a intentarlo. El chat de la Taberna solo puede con 200 mensajes a la vez, por lo que Habitica recomienda publicar mensajes más largos y meditados, así como respuestas unificadas. No podemos esperar a oir lo que tienes que decir. :)",
"messageUserOperationProtected": "la ruta `<%= operation %>` no ha sido guardada, ya que es una ruta protegida.",
"messageUserOperationNotFound": "<%= operation %> operación no encontrada",
diff --git a/website/common/locales/es_419/npc.json b/website/common/locales/es_419/npc.json
index 3e9938952dc..1f8af0ee696 100644
--- a/website/common/locales/es_419/npc.json
+++ b/website/common/locales/es_419/npc.json
@@ -2,30 +2,30 @@
"npc": "PNJ",
"npcAchievementName": "<%= key %> PNJ",
"npcAchievementText": "¡Respaldó el proyecto de Kickstarter al nivel máximo!",
- "welcomeTo": "Welcome to",
- "welcomeBack": "Welcome back!",
+ "welcomeTo": "Bienvenido a",
+ "welcomeBack": "¡Bienvenido de vuelta!",
"justin": "Justin",
- "justinIntroMessage1": "Hello there! You must be new here. My name is Justin, your guide to Habitica.",
- "justinIntroMessage2": "To start, you'll need to create an avatar.",
- "justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
- "introTour": "Here we are! I've filled out some Tasks for you based on your interests, so you can get started right away. Click a Task to edit or add new Tasks to fit your routine!",
- "prev": "Prev",
- "next": "Next",
- "randomize": "Randomize",
+ "justinIntroMessage1": "¡Hola! Debes ser nuevo por aquí. Mi nombre es Justin, tu guía en Habitica.",
+ "justinIntroMessage2": "Para comenzar, necesitarás crear un avatar.",
+ "justinIntroMessage3": "¡Genial! Ahora, ¿en qué te interesa trabajar durante este viaje?",
+ "introTour": "¡Aquí estamos! He llenado algunas Tareas para ti según tus intereses, así que podrás comenzar en seguida. ¡Haz clic en una Tarea para editarla o agrega nuevas Tareas que encajen en tu rutina!",
+ "prev": "Ant",
+ "next": "Sig",
+ "randomize": "Aleatorio",
"mattBoch": "Matt Boch",
"mattShall": "¿Te traigo tu corcel, <%= name %>? Cuando hayas alimentado lo suficiente a una mascota de modo que se transforme en una montura, aparecerá aquí. ¡Haz clic en una montura para ensillarla!",
- "mattBochText1": "¡Bienvenido/a al establo! Soy Matt, el Maestro de las Bestias. Desde el nivel 3 encontraras huevos y pociones con las cuales eclosionarlos. ¡Cuando eclosiones una mascota en el Mercado aparecerá aquí! Cliquea la imagen de una mascota para añadirla a tu avatar. Dales de comer comida que encontrarás desde el nivel 3 y crecerán hasta ser monturas robustas.",
- "welcomeToTavern": "Welcome to The Tavern!",
- "sleepDescription": "Need a break? Check into Daniel's Inn to pause some of Habitica's more difficult game mechanics:",
- "sleepBullet1": "Missed Dailies won't damage you",
- "sleepBullet2": "Tasks won't lose streaks or decay in color",
- "sleepBullet3": "Bosses won't do damage for your missed Dailies",
- "sleepBullet4": "Your boss damage or collection Quest items will stay pending until check-out",
- "pauseDailies": "Pause Damage",
- "unpauseDailies": "Unpause Damage",
- "staffAndModerators": "Staff and Moderators",
- "communityGuidelinesIntro": "Habitica tries to create a welcoming environment for users of all ages and backgrounds, especially in public spaces like the Tavern. If you have any questions, please consult our Community Guidelines.",
- "acceptCommunityGuidelines": "I agree to follow the Community Guidelines",
+ "mattBochText1": "¡Éste es el Establo! Soy Matt, el Maestro de las Bestias. Desde el nivel 3 podrás obtener mascotas utilizando huevos y pociones. Cuando hayas utilizado una poción para sacar del cascarón a tu mascota en el Mercado, ¡aparecerá aquí! Haz clic sobre la imagen de una mascota para añadirla a tu avatar. Aliméntalas con la comida que encuentres después del nivel 4, y crecerán hasta convertirse en poderosos animales de montura.",
+ "welcomeToTavern": "¡Bienvenido a La Taverna!",
+ "sleepDescription": "¿Necesitas un descanso? Ingresa a la Posada de Daniel para suspender algunas de las mecánicas de juego más difíciles de Habitica:",
+ "sleepBullet1": "Diarias perdidas no te harán daño",
+ "sleepBullet2": "Tareas no perderán rachas o cambiarán de color",
+ "sleepBullet3": "Jefes no harán daño por tus Diarias perdidas",
+ "sleepBullet4": "Tus daños de jefe o artículos de Misión de colección quedarán pendientes hasta que salgas de la Posada.",
+ "pauseDailies": "Suspender Daño",
+ "unpauseDailies": "Reiniciar Daño",
+ "staffAndModerators": "Personal y Moderadores",
+ "communityGuidelinesIntro": "Habitica trata de crear un ambiente acogedor para usuarios de todas las edades y orígenes, especialmente en lugares públicos como la Taverna. Si tienes cualquier duda, por favor consulta nuestras Normas de la Comunidad.",
+ "acceptCommunityGuidelines": "Accedo a seguir las Normas de la Comunidad.",
"daniel": "Daniel",
"danielText": "¡Bienvenido a la Taberna! Quédate un rato y conoce a los lugareños. Si necesitas descansar (¿Vacaciones? ¿Enfermedad?) te daré un lugar en la Posada. Mientras estés registrado tus Diarias no te harán daño al final del día, pero aún así las puedes marcar.",
"danielText2": "Aviso: Si estás participando en una misión contra un jefe, ¡el jefe seguirá haciéndote daño si tus compañeros de equipo no completan sus Diarias! Además, el daño que tú le hagas al Jefe (o los objetos que hayas recolectado) no se aplicará hasta que salgas de la Posada.",
@@ -33,45 +33,45 @@
"danielText2Broken": "Oh... Si estás participando en una misión contra un jefe, el jefe seguirá dañándote por las Diarias que tus compañeros de equipo no completen... Además, el daño que tú le causes al Jefe (o los objetos recolectados) no será aplicado hasta que salgas de la Posada...",
"alexander": "Alexander el Comerciante",
"welcomeMarket": "¡Bienvenidos al Mercado! ¡Compra huevos difíciles de encontrar y pociones! ¡Vende tus extras! ¡Encarga servicios útiles! Ven a ver lo que tenemos para ofrecer.",
- "welcomeMarketMobile": "Welcome to the Market! Buy hard-to-find eggs and potions! Come see what we have to offer.",
+ "welcomeMarketMobile": "¡Bienvenido al Mercado! ¡Compra huevos y pociones difíciles de encontrar! Ven a ver lo que tenemos para ofrecer.",
"displayItemForGold": "¿Quieres vender un/a <%= itemType %>?",
"displayEggForGold": "¿Quieres vender un Huevo de <%= itemType %>?",
"displayPotionForGold": "¿Quieres vender una Poción <%= itemType %>?",
"sellForGold": "Véndel@ por <%= gold %> Oro",
- "howManyToSell": "How many would you like to sell?",
- "yourBalance": "Your balance",
- "sell": "Sell",
- "buyNow": "Buy Now",
- "sortByNumber": "Number",
- "featuredItems": "Featured Items!",
- "hideLocked": "Hide locked",
- "hidePinned": "Hide pinned",
- "amountExperience": "<%= amount %> Experience",
- "amountGold": "<%= amount %> Gold",
- "namedHatchingPotion": "<%= type %> Hatching Potion",
+ "howManyToSell": "¿Cuántos quisieras vender?",
+ "yourBalance": "Tu balance",
+ "sell": "Vende",
+ "buyNow": "Compra Ahora",
+ "sortByNumber": "Numero",
+ "featuredItems": "¡Artículos Destacados!",
+ "hideLocked": "Ocultar bloqueados",
+ "hidePinned": "Ocultar fijados",
+ "amountExperience": "<%= amount %> Experiencia",
+ "amountGold": "<%= amount %> Oro",
+ "namedHatchingPotion": "<%= type %> Poción de Nacimiento",
"buyGems": "Comprar Gemas",
"purchaseGems": "Comprar Gemas",
- "items": "Items",
+ "items": "Artículos",
"AZ": "A-Z",
- "sort": "Sort",
- "sortBy": "Sort By",
- "groupBy2": "Group By",
- "sortByName": "Name",
- "quantity": "Quantity",
- "cost": "Cost",
- "shops": "Shops",
- "custom": "Custom",
- "wishlist": "Wishlist",
- "wrongItemType": "The item type \"<%= type %>\" is not valid.",
- "wrongItemPath": "The item path \"<%= path %>\" is not valid.",
- "unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.",
- "cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.",
- "purchasedItem": "You bought <%= itemName %>",
+ "sort": "Ordernar",
+ "sortBy": "Ordernar Por",
+ "groupBy2": "Agrupar Por",
+ "sortByName": "Nombre",
+ "quantity": "Cantidad",
+ "cost": "Costo",
+ "shops": "Tiendas",
+ "custom": "Personalizado",
+ "wishlist": "Lista de Deseos",
+ "wrongItemType": "El artículo tipo \"<%= type %>\" no es válido.",
+ "wrongItemPath": "La ruta del artículo \"<%= path %>\" no es válida.",
+ "unpinnedItem": "¡Desfijaste <%= item %>! Ya no aparecerá en tu columna de Recompensas.",
+ "cannotUnpinArmoirPotion": "La Poción de Salud y el Armario Encantado no pueden ser desfijados.",
+ "purchasedItem": "Compraste <%= itemName %>",
"ian": "Ian",
"ianText": "¡Bienvenido a la Tienda de Misiones! Aquí puedes usar Pergaminos de Misiones para luchar contra monstruos con tus amigos. ¡Asegúrate de echar un vistazo a nuestra fina selección de Pergaminos de Misiones disponibles a la derecha!",
- "ianTextMobile": "Can I interest you in some quest scrolls? Activate them to battle monsters with your Party!",
+ "ianTextMobile": "¿Podré interesarte en algunos pergaminos de misión? ¡Actívalos para combatir monstruos con tu Equipo!",
"ianBrokenText": "Bienvenido a la Tienda de Misiones... Aquí puedes utilizar Pergaminos de Misión para luchar contra monstruos con tus amigos... Asegúrate de echar un vistazo a nuestra fina selección de Pergaminos de Misión a la derecha...",
- "featuredQuests": "Featured Quests!",
+ "featuredQuests": "¡Misiones Destacadas!",
"missingKeyParam": "\"req.params.key\" es requerido.",
"itemNotFound": "No se encontro el objeto \"<%= key >\"",
"cannotBuyItem": "No puedes comprar este objeto",
@@ -88,13 +88,13 @@
"plusOneGem": "+1 Gema",
"typeNotSellable": "El tipo no se puede vender. Debe ser uno de los siguientes: <%= acceptedTypes %>",
"userItemsKeyNotFound": "no se encontró una llave para los objetos del usuario <%= type %>",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "No tienes suficientes <%= type %>",
"pathRequired": "Una cadena de camino es requerida. ",
"unlocked": "Se han desbloqueado objetos. ",
"alreadyUnlocked": "El conjunto ya se ha desbloqueado por completo. ",
"alreadyUnlockedPart": "El conjunto se ha desbloqueado parcialmente. ",
"USD": "(USD)",
- "newStuff": "New Stuff by [Bailey](https://twitter.com/Mihakuu)",
+ "newStuff": "Cosas Nuevas por [Bailey](https://twitter.com/Mihakuu)",
"cool": "Dímelo más tarde",
"dismissAlert": "Descartar este alerta",
"donateText1": "Añade 20 Gemas a tu cuenta. Las gemas se usan para comprar objetos especiales en el juego, como camisas y peinados.",
@@ -107,13 +107,13 @@
"amazonInstructions": "Haz clic en el botón para pagar mediante Amazon Payments",
"paymentMethods": "Comprar usando",
"classGear": "Equipamiento de Clase",
- "classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
+ "classGearText": "¡Felicitaciones por haber escogido una clase! He añadido tu nueva arma básica a tu inventario. ¡Écha una mirada abajo para equiparla!",
"classStats": "Éstas son las estadísticas de tu clase; afectan el estilo de juego. Cada vez que subes de nivel, obtienes un punto para asignarle a alguna estadística en particular. Coloca el cursor sobre cada estadística para más información.",
"autoAllocate": "Asignación automática",
- "autoAllocateText": "If 'automatic allocation' is checked, your avatar gains stats automatically based on your tasks' attributes, which you can find in TASK > Edit > Advanced > Attributes. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
- "spells": "Skills",
- "spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed To-Do.",
- "skillsTitle": "Skills",
+ "autoAllocateText": "Si marcas 'Asignación Automática', tu avatar gana puntos automáticamente basado en los atributos de tus Tareas, las cuales puedes encontrar en TAREA > Editar > Avanzado > Atributos. Por ejemplo, si vas seguido al gimnasio y tu Diaria 'Gimnasio' está asignada al atributo 'Fuerza', ganarás Fuerza automáticamente.",
+ "spells": "Habilidades",
+ "spellsText": "Ahora puedes desbloquear habilidades específicas a una clase. Verás la primera en el nivel 11. Tu maná se repondrá a 10 puntos por día, más 1 punto por cada Pendiente completado.",
+ "skillsTitle": "Habilidades",
"toDo": "Pendiente",
"moreClass": "Para ver más información sobre el sistema de clases, visita la Wikia.",
"tourWelcome": "¡Bienvenido a Habitica! Ésta es tu lista de Pendientes. ¡Marca una tarea para continuar!",
@@ -128,13 +128,13 @@
"tourScrollDown": "¡Asegúrate de desplazarte hacia abajo para ver todas las opciones! Vuelve a hacer clic en tu avatar para regresar a la página de tareas.",
"tourMuchMore": "¡Cuando hayas terminado con tus tareas, podrás formar un Equipo con tus amigos, chatear en los Gremios que te interesen, unirte a Desafíos, y más!",
"tourStatsPage": "¡Esta es la página de Estadísticas! Gana logros completando las tareas en la lista.",
- "tourTavernPage": "Welcome to the Tavern, an all-ages chat room! You can keep your Dailies from hurting you in case of illness or travel by clicking \"Pause Damage\". Come say hi!",
+ "tourTavernPage": "Bienvenido a la Taverna, ¡un salón de chat para todas las edades! Puedes evitar el daño de tus Diarias en caso de enfermedad o viajes haciendo clic en \"Suspender Daño\". ¡Entra, y di hola!",
"tourPartyPage": "Tu equipo te ayudará a que te mantengas responsable. ¡Invita a tus amigos para desbloquear un Pergamino de Misión!",
- "tourGuildsPage": "Guilds are common-interest chat groups created by the players, for the players. Browse through the list and join the Guilds that interest you. Be sure to check out the popular Habitica Help: Ask a Question guild, where anyone can ask questions about Habitica!",
+ "tourGuildsPage": "Gremios son salones de chat de interés común, creados por los jugadores, para los jugadores. Echa un vistazo a la lista y únete a Gremios que te interesen. Asegúrate de chequear el popular gremio Habitica Ayuda: Pregunta, ¡donde cualquiera puede hacer preguntas sobre Habitica!",
"tourChallengesPage": "¡Los Desafíos son listas de tareas basadas en un tema específico creadas por los usuarios! Al unirte a un Desafío éste añadirá tareas a tu cuenta. ¡Compite contra otros usuarios para ganar Gemas!",
"tourMarketPage": "A partir del Nivel 3, huevos y pociones de eclosión empezarán a caer al azar cuando completes tareas. Aparecen aquí - ¡úsalos para hacer eclosionar a las mascotas! También puedes comprar artículos del Mercado.",
"tourHallPage": "Bienvenido al Salón de los Héroes, donde los colaboradores del código abierto de Habitica son honrados. Ya sea a través de código, arte, música, escritura o solamente ayudando, ellos han ganado gemas, equipamiento exclusivo y prestigiosos títulos. ¡Tú también puedes contribuir a Habitica!",
- "tourPetsPage": "This is the Stable! After reaching level 3, you will gather pet eggs and hatching potions as you complete tasks. When you hatch a pet in the Market, it will appear here! Click a pet's image to add it to your avatar. Feed them with the food you find after level 3, and they'll grow into powerful mounts.",
+ "tourPetsPage": "¡Este es el Establo! Al llegar al nivel 3 podrás recolectar huevos de mascota y pociones de nacimiento mientras vas completando tareas. Cuando hagas nacer una mascota, ¡aparecerá aquí! Haz clic en la imagen de una mascota para agregarla a tu avatar. ¡Aliméntala con comida que encuentres después del nivel 3 y crecerán a ser poderosos animales de montura!",
"tourMountsPage": "Tu mascota va a aparecer acá una vez que la hayas alimentado suficiente para pasar a ser una montura. ¡Cliquea en una montura para montarla!",
"tourEquipmentPage": "¡Aquí es donde se guarda tu equipamiento! Tu Equipamiento de Batalla afecta tus estadísticas. Si quieres lucir un equipamiento distinto sin afectar tus estadísticas, utiliza la opción \"Usar disfraz\".",
"equipmentAlreadyOwned": "Ya posees esa pieza de equipamiento. ",
@@ -149,7 +149,7 @@
"tourHabitsBrief": "Buenos y malos hábitos
",
"tourHabitsProceed": "¡Tiene sentido!",
"tourRewardsBrief": "Lista de recompensas
",
- "tourRewardsArmoire": "Reward List
",
+ "tourRewardsArmoire": "Lista de Recompensas
",
"tourRewardsProceed": "¡Eso es todo!",
"welcomeToHabit": "¡Bienvenido a Habitica!",
"welcome1": "Crea un avatar básico.",
@@ -161,5 +161,5 @@
"welcome4": "¡Evita los malos hábitos que consumen tu Salud (PV), o tu avatar morirá!",
"welcome5": "Ahora podrás personalizar tu avatar y configurar tus tareas...",
"imReady": "Ingresar a Habitica",
- "limitedOffer": "Available until <%= date %>"
+ "limitedOffer": "Disponible hasta el <%= date %>"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/pets.json b/website/common/locales/es_419/pets.json
index 5117800164f..2bfd2003235 100644
--- a/website/common/locales/es_419/pets.json
+++ b/website/common/locales/es_419/pets.json
@@ -18,7 +18,7 @@
"veteranWolf": "Lobo Veterano",
"veteranTiger": "Tigre Veterano ",
"veteranLion": "Leon Veterano",
- "veteranBear": "Veteran Bear",
+ "veteranBear": "Oso veterano",
"cerberusPup": "Cachorro Cerbero",
"hydra": "Hidra",
"mantisShrimp": "Mantis Marina",
@@ -42,10 +42,10 @@
"noHatchingPotions": "No tienes pociones de eclosión.",
"inventoryText": "Haz clic en un huevo para ver las pociones utilizables resaltadas en verde, y después haz clic en una de las pociones para que tu mascota eclosione. Si ninguna poción se destacó, cliquea en ese huevo de nuevo para anular la selección, y pulsa primero sobre una poción para destacar los huevos utilizables. También puedes vender los objetos que ya no desees a Alexander el Comerciante.",
"haveHatchablePet": "You have a <%= potion %> hatching potion and <%= egg %> egg to hatch this pet! Click the paw print to hatch.",
- "quickInventory": "Quick Inventory",
+ "quickInventory": "Inventario rapido",
"foodText": "comida",
"food": "Comida y Monturas",
- "noFoodAvailable": "You don't have any Food.",
+ "noFoodAvailable": "No tienes comida.",
"noSaddlesAvailable": "You don't have any Saddles.",
"noFood": "No tienes ni comida ni monturas.",
"dropsExplanation": "Consigue estos objetos más rápido con Gemas si no quieres esperar a que aparezcan cuando completes una tarea. Lee más acerca del sistema de botines.",
@@ -111,16 +111,16 @@
"welcomeStableText": "I'm Matt, the Beast Master. Starting at level 3, you can hatch Pets from Eggs by using Potions you find! When you hatch a Pet from your Inventory, it will appear here! Click a Pet's image to add it to your avatar. Feed them here with the Food you find after level 3, and they'll grow into hardy Mounts.",
"petLikeToEat": "What does my pet like to eat?",
"petLikeToEatText": "Pets will grow no matter what you feed them, but they'll grow faster if you feed them the one food that they like best. Experiment to find out the pattern, or see the answers here:
http://habitica.wikia.com/wiki/Food_Preferences",
- "filterByStandard": "Standard",
- "filterByMagicPotion": "Magic Potion",
- "filterByQuest": "Quest",
- "standard": "Standard",
+ "filterByStandard": "Estándar ",
+ "filterByMagicPotion": "Poción mágica",
+ "filterByQuest": "Misión",
+ "standard": "Estándar",
"sortByColor": "Color",
"sortByHatchable": "Hatchable",
"hatch": "Hatch!",
- "foodTitle": "Food",
- "dragThisFood": "Drag this <%= foodName %> to a Pet and watch it grow!",
- "clickOnPetToFeed": "Click on a Pet to feed <%= foodName %> and watch it grow!",
+ "foodTitle": "Comida ",
+ "dragThisFood": "Arrastra la <%= foodName %> a una mascota y ¡Ve como crece! ",
+ "clickOnPetToFeed": "Dale clic a una mascota para darle <%= foodName %> ¡Ve como crece!",
"dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!",
"clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!",
"hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
diff --git a/website/common/locales/es_419/quests.json b/website/common/locales/es_419/quests.json
index c396e568e16..53d485c4672 100644
--- a/website/common/locales/es_419/quests.json
+++ b/website/common/locales/es_419/quests.json
@@ -8,8 +8,8 @@
"unlockableQuests": "Misiones desbloqueables",
"goldQuests": "Masterclasser Quest Lines",
"questDetails": "Detalles de la misión",
- "questDetailsTitle": "Quest Details",
- "questDescription": "Quests allow players to focus on long-term, in-game goals with the members of their party.",
+ "questDetailsTitle": "Detalles de la misión ",
+ "questDescription": "Las misiones permiten a los jugadores enfocarse en objetivos de largo plazo, dentro del juego, junto con los miembros de su grupo.",
"invitations": "Invitaciones",
"completed": "¡Completado!",
"rewardsAllParticipants": "Recompensas para todos los participantes de la misión",
@@ -29,7 +29,7 @@
"questLater": "Realizar misión más tarde",
"buyQuest": "Comprar misión",
"accepted": "Aceptó",
- "declined": "Declined",
+ "declined": "Rechazado",
"rejected": "Rechazó",
"pending": "Pendiente",
"questStart": "La misión comienza cuando todos los miembros hayan aceptado o rechazado la invitación. Sólo aquellos que hayan hecho clic en \"aceptar\" podrán participar en la misión y recibir los botines. Si los participantes tardan demasiado (o están inactivos) el organizador de la misión puede comenzarla sin ellos haciendo clic en \"Iniciar\". El organizador también puede cancelar la misión y recuperar el pergamino de misión haciendo clic en \"Cancelar\".",
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> articulo(s) de misión encontrado",
"questDamage": "+ <%= val %> de daño al jefe",
"begin": "Iniciar",
- "bossHP": "Salud del Jefe",
+ "bossHP": "PV Jefe",
"bossStrength": "Fuerza del Jefe",
"rage": "Ira",
"collect": "Recolectar",
@@ -77,7 +77,8 @@
"mustLevel": "Deber haber alcanzado por lo menos el nivel <%= level %> para comenzar esta misión.",
"mustLvlQuest": "¡Debes haber alcanzado por lo menos el nivel <%= level %> para poder comprar esta misión!",
"mustInviteFriend": "Para obtener esta misión, invita a un amigo a tu Equipo. ¿Quieres invitar a alguien ahora?",
- "unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "unlockByQuesting": "Para desbloquear esta misión, completa <%= title %>.",
+ "questConfirm": "¿Estas seguro? ¡Solamente <%= questmembers %> de los <%= totalmembers %> miembros del grupo se han unido a esta misión! La misión inicia automáticamente cuando todos los jugadores han aceptado o rechazado la invitación.",
"sureCancel": "¿Estás seguro de que quieres cancelar esta misión? Todas las invitaciones aceptadas se perderán. El organizador de la misión se quedará con el pergamino de misión.",
"sureAbort": "¿Estás seguro de que quieres abortar esta misión? Esto la abortará para todos en tu equipo y todo el progreso se perderá. El pergamino de misión será regresado al organizador de la misión.",
"doubleSureAbort": "¿Estás totalmente seguro? ¡Asegúrate de que no te odiarán eternamente!",
@@ -103,7 +104,7 @@
"noActiveQuestToLeave": "No hay una misión activa para abandonar.",
"questLeaderCannotLeaveQuest": "El lider de la misión no puede abandonarla.",
"notPartOfQuest": "No eres parte de la misión",
- "youAreNotOnQuest": "You're not on a quest",
+ "youAreNotOnQuest": "No te encuentras en una misión",
"noActiveQuestToAbort": "No hay misión activa para abortar.",
"onlyLeaderAbortQuest": "Solo el lider del grupo o misión puede abortar una misión.",
"questAlreadyRejected": "Ya rechazaste la invitacion a la misión.",
@@ -112,11 +113,11 @@
"questNotPending": "No hay misión activa para empezar.",
"questOrGroupLeaderOnlyStartQuest": "Solo el lider del grupo o misión puede forzar el inicio de la misión.",
"createAccountReward": "Crea una cuenta",
- "loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
+ "loginIncentiveQuest": "Para desbloquear esta misión, ¡Ingresa a Habitica en <%= count %> días distintos!",
"loginIncentiveQuestObtained": "¡Has obtenido esta misión ingresando a Habitica <%= count %> días distintos!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "¡Recibiste esta misión cuanto te uniste a Habitica! Si un amigo se une recibirá uno también.",
"questBundles": "Paquetes de misiones con descuento",
"buyQuestBundle": "Comprar paquete de misiones",
- "noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!"
+ "noQuestToStart": "¿No puedes encontrar una misión para iniciar? ¡Intenta revisar la Tienda de Misiones en el Mercado para ver nuevas misiones!"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/questscontent.json b/website/common/locales/es_419/questscontent.json
index fc938cb5494..1c83cfe6a74 100644
--- a/website/common/locales/es_419/questscontent.json
+++ b/website/common/locales/es_419/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Armadillo (Huevo)",
"questArmadilloUnlockText": "Desbloquea huevos de armadillo adquiribles en el mercado",
"questCowText": "La vaca muutante",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Vaca muutante",
"questCowDropCowEgg": "Vaca (Huevo)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/rebirth.json b/website/common/locales/es_419/rebirth.json
index 27f78834263..deccaef5364 100644
--- a/website/common/locales/es_419/rebirth.json
+++ b/website/common/locales/es_419/rebirth.json
@@ -21,7 +21,7 @@
"rebirthOrb": "Ha utilizado una esfera de renacimiento para empezar de nuevo luego de alcanzar el nivel <%= level %>.",
"rebirthOrb100": "Ha usado una Esfera de renacimiento para volver a empezar al alcanzar el nivel 100 o más.",
"rebirthOrbNoLevel": "Ha utilizado una esfera de renacimiento para comenzar de nuevo.",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
+ "rebirthPop": "Reinicia instantáneamente tu personaje en nivel 1, manteniendo tus Logros, Coleccionables, Equipamiento, y Tareas con historial. Esto tendrá efecto inmediatamente.",
"rebirthName": "Esfera de Renacimiento",
"reborn": "Renacido, nivel máximo <%= reLevel %>",
"confirmReborn": "¿Estás seguro?",
diff --git a/website/common/locales/es_419/settings.json b/website/common/locales/es_419/settings.json
index eaa49e4d794..aec41b692b7 100644
--- a/website/common/locales/es_419/settings.json
+++ b/website/common/locales/es_419/settings.json
@@ -65,7 +65,7 @@
"resetText1": "¡AVISO! Esto reinicia muchas partes de tu cuenta. Esto no es recomendable, pero ha resultado útil para algunas personas al principio después de jugar con el sitio web por un corto tiempo.",
"resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "¿Estás seguro? ¡Esto borrará tu cuenta para siempre, y no podrá ser recuperada! Necesitarás registrar una cuenta nueva para volver a usar Habitica. Las Gemas no serán reembolsadas. Si estás absolutamente seguro escribe tu contraseña en la caja de texto de abajo.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Puedes copiar éstos para usarlos en aplicaciones de terceros. Sin embargo, considera tu Ficha API como una contraseña y no la compartas públicamente. De vez en cuando se te puede pedir tu ID de usuario, pero nunca publiques tu Ficha API donde otros puedan verla, incluyendo en Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Suscripción regalada",
"giftedSubscriptionInfo": "<%= name %> te regaló una suscripción de <%= months %> meses",
"giftedSubscriptionFull": "¡Hola <%= username %>, <%= sender %> te ha enviado una suscripción de <%= monthCount %> meses!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Invitado al Equipo",
"invitedGuild": "Invitado al Gremio",
"importantAnnouncements": "Recordatorios para ingresar a completar tareas y recibir premios",
@@ -179,12 +180,12 @@
"consecutiveMonths": "Meses consecutivos:",
"gemCapExtra": "Extra del tope de gemas:",
"mysticHourglasses": "Relojes de Arena Místicos:",
- "mysticHourglassesTooltip": "Mystic Hourglasses",
+ "mysticHourglassesTooltip": "Relojes de Arena Místicos",
"paypal": "PayPal",
"amazonPayments": "Amazon Payments",
"timezone": "Zona horaria",
"timezoneUTC": "Habitica utiliza la zona horaria de tu PC, la cual es <%= utc %>",
"timezoneInfo": "If that time zone is wrong, first reload this page using your browser's reload or refresh button to ensure that Habitica has the most recent information. If it is still wrong, adjust the time zone on your PC and then reload this page again.
If you use Habitica on other PCs or mobile devices, the time zone must be the same on them all. If your Dailies have been resetting at the wrong time, repeat this check on all other PCs and on a browser on your mobile devices.",
"push": "Empuja",
- "about": "About"
+ "about": "Acerca de"
}
\ No newline at end of file
diff --git a/website/common/locales/es_419/spells.json b/website/common/locales/es_419/spells.json
index b6566cf126d..dda6a926990 100644
--- a/website/common/locales/es_419/spells.json
+++ b/website/common/locales/es_419/spells.json
@@ -35,21 +35,21 @@
"spellHealerHealAllText": "Bendición",
"spellHealerHealAllNotes": "Your soothing spell restores your whole Party's health! (Based on: CON and INT)",
"spellSpecialSnowballAuraText": "Bola de Nieve",
- "spellSpecialSnowballAuraNotes": "Turn a friend into a frosty snowman!",
+ "spellSpecialSnowballAuraNotes": "¡Transforma a tu amigo en un hombre de nieve!",
"spellSpecialSaltText": "Sal",
- "spellSpecialSaltNotes": "Reverse the spell that made you a snowman.",
+ "spellSpecialSaltNotes": "Deshaz el hechizo que te convirtió en hombre de nieve.",
"spellSpecialSpookySparklesText": "Brillantina Espeluznante",
"spellSpecialSpookySparklesNotes": "Turn your friend into a transparent pal!",
"spellSpecialOpaquePotionText": "Poción Opaca",
- "spellSpecialOpaquePotionNotes": "Reverse the spell that made you transparent.",
+ "spellSpecialOpaquePotionNotes": "Deshaz el hechizo que te volvió transparente.",
"spellSpecialShinySeedText": "Semilla Radiante",
"spellSpecialShinySeedNotes": "¡Transforma a un amigo en una alegre flor!",
"spellSpecialPetalFreePotionText": "Poción Anti-Pétalos",
- "spellSpecialPetalFreePotionNotes": "Reverse the spell that made you a flower.",
+ "spellSpecialPetalFreePotionNotes": "Deshaz el hechizo que te convirtió en una flor.",
"spellSpecialSeafoamText": "Espuma de Mar",
"spellSpecialSeafoamNotes": "¡Convierte a un amigo en una criatura marina!",
"spellSpecialSandText": "Arena",
- "spellSpecialSandNotes": "Reverse the spell that made you a sea star.",
+ "spellSpecialSandNotes": "Deshaz el hechizo que te convirtió en estrella de mar.",
"spellNotFound": "Habilidad \"<%= spellId %>\" no encontrada.",
"partyNotFound": "Equipo no encontrado",
"targetIdUUID": "\"targetId\" debe ser un ID de usuario válido.",
diff --git a/website/common/locales/es_419/subscriber.json b/website/common/locales/es_419/subscriber.json
index b8f81c85098..68360e701c9 100644
--- a/website/common/locales/es_419/subscriber.json
+++ b/website/common/locales/es_419/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Cancelar la suscripción",
"cancelSubInfoGoogle": "Ve a la sección de la aplicación Google Play Store \"Cuenta\" > \"Suscripciones\" para cancelar tu suscripción o para ver la fecha de finalización si ya la has cancelado. Esta pantalla no te puede mostrar si tu suscripción ya fue cancelada.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Suscripción Cancelada",
"cancelingSubscription": "Cancelar la suscripción",
"adminSub": "Suscripción de administradores",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Conjunto Steampunk Estándar ",
"mysterySet301405": "Conjunto de Accesorios Steampunk",
"mysterySet301703": "Conjunto Pavo Real Steampunk",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Tipo de carta desconocido.",
"invalidCoupon": "Codigo de cupón invalido.",
"couponUsed": "El codigo de cupón ya fue usado.",
- "noSudoAccess": "No tienes acceso sudo.",
"couponCodeRequired": "El codigo de cupón es requerido.",
"eventRequired": "\"req.params.event\" es requerido.",
"countRequired": "\"req.query.count\" es requerido.",
diff --git a/website/common/locales/es_419/tasks.json b/website/common/locales/es_419/tasks.json
index dfa0a8485f5..603ad5f27df 100644
--- a/website/common/locales/es_419/tasks.json
+++ b/website/common/locales/es_419/tasks.json
@@ -4,19 +4,19 @@
"deleteToDosExplanation": "Si haces clic en el siguiente botón, todas tus Pendientes realizadas y tus Pendientes archivadas serán borradas de forma permanente, con la excepción de Pendientes de desafíos activos y de Planes Grupales. Expórtalas primero si quieres mantener un registro de ellas.",
"addMultipleTip": "Tip: To add multiple Tasks, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
"addsingle": "Agregar sólo un@",
- "addATask": "Add a <%= type %>",
- "editATask": "Edit a <%= type %>",
- "createTask": "Create <%= type %>",
+ "addATask": "Agrega una <%= type %>",
+ "editATask": "Edita una <%= type %>",
+ "createTask": "Crea una <%= type %>",
"addTaskToUser": "Añadir tarea",
"scheduled": "Scheduled",
- "theseAreYourTasks": "These are your <%= taskType %>",
+ "theseAreYourTasks": "Estas son tus <%= taskType %>",
"habit": "Hábito",
"habits": "Hábitos",
"newHabit": "Nuevo Hábito",
"newHabitBulk": "Nuevos Hábitos (uno por línea)",
"habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
- "positive": "Positive",
- "negative": "Negative",
+ "positive": "Positivo",
+ "negative": "Negativo",
"yellowred": "Débil",
"greenblue": "Fuerte",
"edit": "Editar",
@@ -29,7 +29,7 @@
"collapseChecklist": "Collapse Checklist",
"text": "Título",
"extraNotes": "Notas adicionales",
- "notes": "Notes",
+ "notes": "Notas",
"direction/Actions": "Dirección/Acciones",
"advancedOptions": "Opciones avanzadas",
"taskAlias": "Alias de la tarea.",
@@ -62,7 +62,7 @@
"day": "Día",
"days": "Días",
"restoreStreak": "Restaurar racha",
- "resetStreak": "Reset Streak",
+ "resetStreak": "Resetear racha",
"todo": "Pendiente",
"todos": "Pendientes",
"newTodo": "Nueva Pendiente",
@@ -73,7 +73,7 @@
"complete": "Hechas",
"complete2": "Completado",
"dated": "Con fecha límite",
- "today": "Today",
+ "today": "Hoy",
"dueIn": "Due <%= dueIn %>",
"due": "Vencen hoy",
"notDue": "No vencen hoy",
@@ -81,7 +81,7 @@
"score": "Puntaje",
"reward": "Recompensa",
"rewards": "Recompensas",
- "rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
+ "rewardsDesc": "Las recompensas son una gran forma de usar Habitica y completar tus tareas. ¡Intenta agregar unas cuantas hoy!",
"ingamerewards": "Equipamiento y Habilidades",
"gold": "Oro",
"silver": "Plata (100 monedas de plata = 1 moneda de oro)",
@@ -94,7 +94,7 @@
"clearTags": "Borrar",
"hideTags": "Ocultar",
"showTags": "Mostrar",
- "editTags2": "Edit Tags",
+ "editTags2": "Editar Etiquetas",
"toRequired": "Debes ingresar una propiedad \"a\"",
"startDate": "Día de inicio",
"startDateHelpTitle": "¿Cuándo debería comenzar esta tarea?",
@@ -115,7 +115,7 @@
"fortifyText": "Fortalecer devuelve todas tus tareas, excepto las de desafíos, a un valor neutral (amarillo), como si las acabaras de añadir, y llena tu salud a tope. Esto es genial si todas tus tareas rojas hacen muy difícil el juego, o si todas tus tareas azules lo vuelven demasiado fácil. Si empezar de cero suena mucho más motivador, ¡gasta las gemas y tómate un respiro!",
"confirmFortify": "¿Estás seguro?",
"fortifyComplete": "¡Fortalecimiento completado!",
- "sureDelete": "Are you sure you want to delete this task?",
+ "sureDelete": "¿Estas seguro de que quieres eliminar esta tarea?",
"sureDeleteCompletedTodos": "Estas seguro de querer eliminar tus completados, de tu lista de pendientes?",
"streakCoins": "¡Bonus de racha!",
"taskToTop": "To top",
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Confirma que esta tarea diaria no estuviera hecha antes de aplicar el daño",
"yesterDailiesDescription": "Si se aplica esta configuración, Habitica te preguntará si quisiste dejar la tarea diaria sin hacer antes de calcular y aplicar el daño a tu avatar. Esto te puede proteger contra daño no intencional.",
"repeatDayError": "Asegúrate de tener al menos un día de la semana seleccionado.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Buscar títulos y descripciones...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/fr/backgrounds.json b/website/common/locales/fr/backgrounds.json
index 4d5ed7c52a7..b27f80b2e19 100644
--- a/website/common/locales/fr/backgrounds.json
+++ b/website/common/locales/fr/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Château de minuit",
"backgroundMidnightCastleNotes": "Promenez-vous à côté du château de minuit.",
"backgroundTornadoText": "Tornade",
- "backgroundTornadoNotes": "Volez à travers une tornade."
+ "backgroundTornadoNotes": "Volez à travers une tornade.",
+ "backgrounds122017": "Ensemble 43 : sorti en décembre 2017",
+ "backgroundCrosscountrySkiTrailText": "Un sentier de ski de fond",
+ "backgroundCrosscountrySkiTrailNotes": "Glissez sur un sentier de Cross-Country.",
+ "backgroundStarryWinterNightText": "Nuit d'hiver étoilée",
+ "backgroundStarryWinterNightNotes": "Contemplez une nuit d'hiver étoilée.",
+ "backgroundToymakersWorkshopText": "Atelier de fabricant de jouets",
+ "backgroundToymakersWorkshopNotes": "Savourez les mystères de l'atelier d'un fabricant de jouets.",
+ "backgrounds012018": "Ensemble 44 : sorti en janvier 2018",
+ "backgroundAuroraText": "Aurore",
+ "backgroundAuroraNotes": "Savourez la lueur hivernale d'une Aurore.",
+ "backgroundDrivingASleighText": "Traineau",
+ "backgroundDrivingASleighNotes": "Conduisez un traineau dans des champs enneigés",
+ "backgroundFlyingOverIcySteppesText": "Steppes glacées",
+ "backgroundFlyingOverIcySteppesNotes": "Volez au-dessus des steppes glacées."
}
\ No newline at end of file
diff --git a/website/common/locales/fr/challenge.json b/website/common/locales/fr/challenge.json
index 8c7904087e6..c8d69313da2 100644
--- a/website/common/locales/fr/challenge.json
+++ b/website/common/locales/fr/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Le lieu du défi est requis ('Ajouter à')",
"categoiresRequired": "Une ou plusieurs catégories doivent être sélectionnées",
"viewProgressOf": "Voir la progression de",
- "selectMember": "Choisir un membre"
+ "selectMember": "Choisir un membre",
+ "confirmKeepChallengeTasks": "Voulez-vous garder les tâches du défi?",
+ "selectParticipant": "Sélectionnez un participant"
}
\ No newline at end of file
diff --git a/website/common/locales/fr/character.json b/website/common/locales/fr/character.json
index 5edb14b7447..d7af25da443 100644
--- a/website/common/locales/fr/character.json
+++ b/website/common/locales/fr/character.json
@@ -25,7 +25,7 @@
"unlockSet": "Débloquer l'ensemble - <%= cost %>",
"locked": "verrouillé",
"shirts": "Tenues",
- "shirt": "Maillot",
+ "shirt": "Tenue",
"specialShirts": "Tenues spéciales",
"bodyHead": "Coupes et couleurs de cheveux",
"bodySkin": "Peau",
@@ -98,7 +98,7 @@
"allocatePerPop": "Ajouter un point en Perception",
"allocateInt": "Points alloués en Intelligence :",
"allocateIntPop": "Ajouter un point en Intelligence",
- "noMoreAllocate": "Maintenant que vous avez atteint le niveau 100, vous ne gagnerez plus de points d'attribut. Vous pouvez continuer à passer des niveaux ou commencer une nouvelle aventure depuis le niveau 1 en utilisant l'Orbe de Renaissance, disponible dès maintenant au marché, gratuitement.",
+ "noMoreAllocate": "Maintenant que vous avez atteint le niveau 100, vous ne gagnerez plus de points d'attribut. Vous pouvez continuer à passer des niveaux ou commencer une nouvelle aventure depuis le niveau 1 en utilisant l'orbe de renaissance, disponible dès maintenant au marché, gratuitement.",
"stats": "Caractéristiques",
"achievs": "Succès",
"strength": "Force",
@@ -150,7 +150,7 @@
"optOutOfClasses": "Désactiver",
"optOutOfPMs": "Désactiver",
"chooseClass": "Choisissez votre classe",
- "chooseClassLearnMarkdown": "[En apprendre plus sur le système de classe d'Habitica](http://habitica.wikia.com/wiki/Class_System)",
+ "chooseClassLearnMarkdown": "[En apprendre plus sur le système de classe d'Habitica](http://fr.habitica.wikia.com/wiki/Système_de_Classe)",
"optOutOfClassesText": "Pas intéressé par les classes ? Vous préférez choisir plus tard ? N'en choisissez pas - vous serez un guerrier sans compétences particulières. Vous pourrez vous renseigner plus tard sur le système de classes dans le wiki et activer les classes quand vous le voudrez dans l'icône utilisateur > Paramètres.",
"selectClass": "Sélectionner <%= heroClass %>",
"select": "Sélectionner",
@@ -163,6 +163,7 @@
"dieText": "Vous avez perdu un niveau, tout votre or et une pièce d'équipement aléatoire. Relevez-vous, membre d'Habitica, et essayez encore ! Mettez un frein à ces habitudes négatives, complétez vos tâches Quotidiennes avec vigilance et tenez la mort à distance avec une potion de santé si vous fléchissez !",
"sureReset": "Confirmez-vous ? Ceci réinitialisera la classe de votre personnage ainsi que vos points alloués (vous les récupérerez tous pour les ré-allouer), et vous coûtera 3 gemmes.",
"purchaseFor": "Acheter pour <%= cost %> gemmes ?",
+ "purchaseForHourglasses": "Acheter pour <%= cost %> sabilers?",
"notEnoughMana": "Pas assez de mana.",
"invalidTarget": "Vous ne pouvez pas utiliser une compétence là-dessus.",
"youCast": "Vous avez lancé <%= spell %>.",
diff --git a/website/common/locales/fr/content.json b/website/common/locales/fr/content.json
index 950733adb54..15a4872d0c0 100644
--- a/website/common/locales/fr/content.json
+++ b/website/common/locales/fr/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Laine",
"questEggYarnMountText": "Tapis volant",
"questEggYarnAdjective": "laineux",
+ "questEggPterodactylText": "ptérodactyle",
+ "questEggPterodactylMountText": "Ptérodactyle",
+ "questEggPterodactylAdjective": "confiant",
"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",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "cupidon",
"hatchingPotionShimmer": "scintillant",
"hatchingPotionFairy": "féerique",
+ "hatchingPotionStarryNight": "Nuit étoilée",
"hatchingPotionNotes": "Versez-la sur un œuf et il en sortira un familier <%= potText(locale) %>.",
"premiumPotionAddlNotes": "N'est pas utilisable sur les œufs de quête.",
"foodMeat": "Côtelette",
@@ -218,5 +222,6 @@
"foodCandyRed": "Friandise à la cannelle",
"foodSaddleText": "Selle",
"foodSaddleNotes": "Transforme directement l'un de vos familiers en monture.",
+ "foodSaddleSellWarningNote": "Hé ! Cet objet est super utile ! Savez-vous comment utiliser une selle sur vos familiers ?",
"foodNotes": "Donnez-la à un de vos familiers, et il pourrait bien grandir en un robuste destrier."
}
\ No newline at end of file
diff --git a/website/common/locales/fr/contrib.json b/website/common/locales/fr/contrib.json
index 40b79fe59e0..8643a0eab7c 100644
--- a/website/common/locales/fr/contrib.json
+++ b/website/common/locales/fr/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, vous êtes une personne géniale ! Vous êtes maintenant un contributeur d'échelon <%= level %> pour avoir aidé Habitica. Allez voir",
"contribLink": "quelles récompenses vous avez gagnées grâce à votre contribution !",
"contribName": "Contributeur",
- "contribText": "A contribué au développement d'Habitica (code, design, pixel art, conseils juridiques, documents, etc). Vous voulez ce badge ? En savoir plus.",
+ "contribText": "A contribué au développement d'Habitica, soit en code, dessin, pixel art, musique, écriture, ou d'autres méthodes. Pour apprendre davantage, joignez le guilde des légendes aspirant! ",
"readMore": "Plus d'informations",
"kickstartName": "Soutien Kickstarter - Palier <%= key %>$",
"kickstartText": "A soutenu le projet Kickstarter",
diff --git a/website/common/locales/fr/front.json b/website/common/locales/fr/front.json
index c60349519af..94b9f7be2bb 100644
--- a/website/common/locales/fr/front.json
+++ b/website/common/locales/fr/front.json
@@ -30,6 +30,7 @@
"companyAbout": "Comment ça marche",
"companyBlog": "Blog",
"devBlog": "Blog des développeurs",
+ "companyContribute": "Contribuer",
"companyDonate": "Faire un don",
"companyPrivacy": "Confidentialité",
"companyTerms": "Conditions",
@@ -252,7 +253,7 @@
"missingNewPassword": "Nouveau mot de passe manquant.",
"invalidEmailDomain": "Vous ne pouvez pas vous enregistrer avec une adresse courriel appartenant aux domaines suivants : %= domains %>",
"wrongPassword": "Mauvais mot de passe.",
- "incorrectDeletePhrase": "Veuillez écrire DELETE en majuscules pour supprimer votre compte.",
+ "incorrectDeletePhrase": "Veuillez taper <%= magicWord %> en majuscules pour supprimer votre compte",
"notAnEmail": "Adresse courriel invalide.",
"emailTaken": "Adresse courriel déjà utilisée par un utilisateur.",
"newEmailRequired": "Nouvelle adresse courriel manquante.",
diff --git a/website/common/locales/fr/gear.json b/website/common/locales/fr/gear.json
index 8a1c78668d0..b4373ac995c 100644
--- a/website/common/locales/fr/gear.json
+++ b/website/common/locales/fr/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "La magie et le mystère irradient des yeux du crâne brillant à l'extrémité de ce bâton. Augmente l'Intelligence de <%= int %> et la Perception de <%= per %>. Équipement en édition limitée de l'automne 2017.",
"weaponSpecialFall2017HealerText": "Candélabre horrifique",
"weaponSpecialFall2017HealerNotes": "Cette lumière désamorce la peur et fait savoir aux autres que vous êtes là pour les aider. Augmente l'Intelligence de <%= int %>. Équipement en édition limitée de l'automne 2017.",
+ "weaponSpecialWinter2018RogueText": "Crochet menthe poivrée",
+ "weaponSpecialWinter2018RogueNotes": "Parfait pour grimper les murs ou distraire vos ennemis avec des bonbons tout doux. Augmente la force de <%= str %>. Équipement en édition limitée de l'Hiver 2017-2018.",
+ "weaponSpecialWinter2018WarriorText": "Marteau de fête à nœud ",
+ "weaponSpecialWinter2018WarriorNotes": "L'apparence brillante de cette arme lumineuse éblouira vos ennemis pendant que vous l'agiterez ! Augmente la Force de <%= str %>. Équipement en édition limitée de l'hiver 2017-2018.",
+ "weaponSpecialWinter2018MageText": "Confetti de fêtes",
+ "weaponSpecialWinter2018MageNotes": "La magie et les paillettes sont dans l'air! Augmente l'Intelligence de <%= int %> et la Perception de <%= per %>. Équipement en édition limitée de l'hiver 2017-2018.",
+ "weaponSpecialWinter2018HealerText": "Baguette de gui",
+ "weaponSpecialWinter2018HealerNotes": "Cette boule de gui enchantera et ravira les passants à coup sûr! Augmente l'Intelligence de <%= int %>. Équipement en édition limitée de l'hiver 2017-2018.",
"weaponMystery201411Text": "Fourche festive",
"weaponMystery201411Notes": "Embrochez vos ennemis ou plantez-la dans votre nourriture préférée : cette fourche multi-fonctions peut tout faire ! N'apporte aucun bonus. Équipement d'abonné·e de novembre 2014.",
"weaponMystery201502Text": "Bâton chatoyant ailé d'amour et aussi de vérité",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Taillez les sabots de vos montures de somme, pour les aider à rester en bonne santé tandis qu'elles vous amènent à l'aventure ! Augmente la Force, l'Intelligence et la Constitution de <%= attrs %> chacune. Armoire enchantée : ensemble du maréchal-ferrant (objet 1 sur 3).",
"weaponArmoireWeaversCombText": "Peigne de tisserand",
"weaponArmoireWeaversCombNotes": "Utilisez ce peigne pour assembler vos fils de trame ensemble pour faire un tissus solidement tissé. Augmente la Perception de <%= per %> et la Force de <%= str %>. Armoire enchantée : Ensemble du tisserand (objet 2 sur 3).",
+ "weaponArmoireLamplighterText": "Allumeur de réverbères",
+ "weaponArmoireLamplighterNotes": "Ce long mât a une mèche sur une extrémité pour allumer des lampes, et un crochet sur l'autre extrémité pour les éteindre. Augmente la constitution de <%= con %> et la perception par <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Fouet du cocher",
+ "weaponArmoireCoachDriversWhipNotes": "Vos montures savent ce qu'elles font, donc le fouet n'est là que pour le spectacle (et le bruit net du claquement !). Augmente l'Intelligence de<%= int %>and la Force de <%= str %>. Armoire enchantée : ensemble du cocher (Objet 3 sur 3).",
"armor": "armure",
"armorCapitalized": "Armure",
"armorBase0Text": "Habit simple",
@@ -387,7 +399,7 @@
"armorSpecialSamuraiArmorText": "Armure de samouraï",
"armorSpecialSamuraiArmorNotes": "Cette armure épaisse est maintenue par d'élégants cordons en soie. Augmente la Perception de <%= per %>.",
"armorSpecialTurkeyArmorBaseText": "Armure de dindon",
- "armorSpecialTurkeyArmorBaseNotes": "Keep your drumsticks warm and cozy in this feathery armor! Confers no benefit.",
+ "armorSpecialTurkeyArmorBaseNotes": "Gardez vos baguettes bien au chaud dans cette armure de plumes ! Ne confère aucun bonus.",
"armorSpecialYetiText": "Tunique du dresseur de yéti",
"armorSpecialYetiNotes": "Flou et féroce. Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'hiver 2013-2014.",
"armorSpecialSkiText": "Parka de ski-sassin",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "Quelle mascarade serait complète sans cette large tunique dramatique ? Augmente l'intelligence de <%= int %>. Équipement en édition limitée de l'automne 2017.",
"armorSpecialFall2017HealerText": "Armure de maison hantée",
"armorSpecialFall2017HealerNotes": "Votre cœur est une porte ouverte. Et vos épaules sont des tuiles ! Augmente la constitution de <%= con %>. Équipement d'automne 2017 en édition limitée.",
+ "armorSpecialWinter2018RogueText": "Costume de renne",
+ "armorSpecialWinter2018RogueNotes": "Avec votre air mignon et duveteux, qui pourrait vous suspecter après le pillage des fêtes ? Augmente la Perception de <%= per %>. Équipement en édition limitée de l'hiver 2017-2018.",
+ "armorSpecialWinter2018WarriorText": "Armure en papier cadeau",
+ "armorSpecialWinter2018WarriorNotes": "Ne vous faites pas avoir par la texture de papier de cette armure. Elle est quasiment indéchirable ! Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'hiver 2017-2018.",
+ "armorSpecialWinter2018MageText": "Smoking brillant",
+ "armorSpecialWinter2018MageNotes": "Le summum de la tenue de cérémonie magique. Augmente l'Intelligence de<%= int %>. Équipement de l'édition limitée de l'hiver 2017-2018.",
+ "armorSpecialWinter2018HealerText": "Tunique en gui",
+ "armorSpecialWinter2018HealerNotes": "Ces robes sont tissées avec des sortilèges pour un peu plus de joie pendant les fêtes. Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'hiver 2017-2018 ",
"armorMystery201402Text": "Robe du messager",
"armorMystery201402Notes": "Chatoyante et solide, cette robe possède de nombreuses poches dans lesquelles transporter des lettres. N'apporte aucun bonus. Équipement d'abonné·e de février 2014.",
"armorMystery201403Text": "Armure du marcheur sylvain",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Écailleux, éclatants et à toute épreuve ! N'apporte aucun bonus. Équipement d'abonné·e d'octobre 2017.",
"armorMystery201711Text": "Vêtements de chevaucheur de tapis",
"armorMystery201711Notes": "Ces vêtements de tricot vous garderont au chaud alors que vous voyagez dans les airs. N'apporte aucun bonus. Équipement d'abonné·e de novembre 2017.",
+ "armorMystery201712Text": "Armure du bougiemancien",
+ "armorMystery201712Notes": "La chaleur et la lumière générées par cette armure magique réchauffera votre cœur mais ne brûlera jamais votre peau ! N'apporte aucun bonus. Équipement d'abonné·e de Décembre 2017. ",
"armorMystery301404Text": "Tenue steampunk",
"armorMystery301404Notes": "Pimpant et fringuant ! N'apporte aucun bonus. Équipement d'abonné·e de février 3015.",
"armorMystery301703Text": "Toge du paon steampunk",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "Cet ensemble de vêtements résistants vous protègera de la cire brûlante que vous pourriez renverser en pratiquant votre art ! Augmente la Constitution de <%= con %>. Armoire enchantée : ensemble du cirier (objet 1 sur 3).",
"armorArmoireWovenRobesText": "Tunique tissée",
"armorArmoireWovenRobesNotes": "Exhibez fièrement votre travail de tissage en portant cette tunique bariolée ! Augmente la Constitution de <%= con %> et l'Intelligence de <%= int %>. Armoire enchantée : ensemble du tisserand (objet 1 sur 3).",
+ "armorArmoireLamplightersGreatcoatText": "Pardessus d'allumeur de réverbères",
+ "armorArmoireLamplightersGreatcoatNotes": "Cet épais manteau de laine peut résister aux plus rudes des nuits hivernales ! Augmente la Perception de <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Livrée de cocher",
+ "armorArmoireCoachDriverLiveryNotes": "Ce lourd manteau vous protégera des intempéries pendant que vous conduisez. De plus, il est plutôt élégant ! Augmente la Force de <%= str %>. Armoire enchantée: Ensemble du cocher (objet 1 sur 3).",
"headgear": "heaume",
"headgearCapitalized": "Couvre-chef",
"headBase0Text": "Pas de couvre-chef",
@@ -741,7 +767,7 @@
"headSpecialNamingDay2017Text": "Heaume de griffon pourpre royal",
"headSpecialNamingDay2017Notes": "Joyeux Jour d'Appellation ! Revêtez ce heaume terrible et plumeux pour célébrer Habitica. N'apporte aucun bonus.",
"headSpecialTurkeyHelmBaseText": "Coiffe de dindon",
- "headSpecialTurkeyHelmBaseNotes": "Votre costume du Jour du Dindon sera complet lorsque vous revêtirez cette coiffe à bec ! N'apporte aucun bonus.",
+ "headSpecialTurkeyHelmBaseNotes": "Votre costume du jour du Dindon sera complet lorsque vous revêtirez cette coiffe à bec ! N'apporte aucun bonus.",
"headSpecialNyeText": "Chapeau pointu absurde",
"headSpecialNyeNotes": "Vous avez reçu un chapeau pointu absurde ! Portez-le avec fierté en célébrant le Nouvel an ! N'apporte aucun bonus.",
"headSpecialYetiText": "Heaume du dresseur de yéti",
@@ -871,13 +897,23 @@
"headSpecialSummer2017HealerText": "Couronne de créatures marines",
"headSpecialSummer2017HealerNotes": "Ce casque est fait de créatures marines amicales qui se reposent temporairement sur votre tête, vous donnant de sages conseils. Augmente l'Intelligence de <%= int %>. Équipement en édition limitée de l'été 2017.",
"headSpecialFall2017RogueText": "Heaume de citrouille d'Habitoween",
- "headSpecialFall2017RogueNotes": "Prêt pour les surprises ? Il est temps d'utiliser ce casque festif et luisant ! Augmente la perception de <%= per %> Équipement d'automne 2017 en édition limitée.",
+ "headSpecialFall2017RogueNotes": "Prêt pour les surprises ? Il est temps d'utiliser ce casque festif et luisant ! Augmente la Perception de <%= per %>. Équipement en édition limitée de l'automne 2017.",
"headSpecialFall2017WarriorText": "Casque en sucre d'orge",
- "headSpecialFall2017WarriorNotes": "Ce casque pourrait être un régal, mais les tâches rebelles ne le trouveront pas si doux ! Augmente la force de <%= str %> Équipement d'automne 2017 en édition limitée.. ",
+ "headSpecialFall2017WarriorNotes": "Ce casque pourrait être un régal, mais les tâches rebelles ne le trouveront pas si doux ! Augmente la Force de <%= str %> Équipement d'automne 2017 en édition limitée.",
"headSpecialFall2017MageText": "Heaume de mascarade",
"headSpecialFall2017MageNotes": "Lorsque vous apparaîtrez avec ce chapeau à plumes, tout le monde cherchera l'identité de cet inconnu sorcier qui vient d'arriver. Augmente la Perception de <%= per %>. Équipement en édition limitée de l'automne 2017.",
"headSpecialFall2017HealerText": "Heaume de maison hantée",
"headSpecialFall2017HealerNotes": "Invitez des esprits effrayants et des créatures amicales à solliciter vos pouvoirs régénérateurs dans ce heaume ! Augmente l'Intelligence de <%= int %>. Équipement en édition limitée de l'automne 2017.",
+ "headSpecialNye2017Text": "Chapeau de soirée fantaisiste",
+ "headSpecialNye2017Notes": "Vous avez reçu un chapeau de soirée fantaisiste ! Portez le avec fierté en levant votre verre à cette nouvelle année ! N'apporte aucun bonus.",
+ "headSpecialWinter2018RogueText": "Heaume de renne",
+ "headSpecialWinter2018RogueNotes": "Le parfait déguisement pour les fêtes, avec un phare intégré ! Augmente la Perception de <%= per %>. Équipement en édition limitée de l'hiver 2017-2018.",
+ "headSpecialWinter2018WarriorText": "Heaume en boîte cadeau",
+ "headSpecialWinter2018WarriorNotes": "Ce splendide couvercle de boîte et son nœud ne sont pas seulement festifs, ils sont aussi robustes. Augmente la Force de<%= str %>. Équipement en édition limité de l'hiver 2017-2018.",
+ "headSpecialWinter2018MageText": "Haut-de-forme brillant",
+ "headSpecialWinter2018MageNotes": "Prêt pour encore plus de magie spéciale? Ce chapeau pailleté boostera tous vos sorts! Augmente la Perception de<%= per %>. Équipement en édition limitée de l'hiver 2017-2018. ",
+ "headSpecialWinter2018HealerText": "Capuche de gui",
+ "headSpecialWinter2018HealerNotes": "Cette superbe capuche vous tiendra chaud dans une joyeuse ambiance de fête ! Augmente l'Intelligence de <%= int %>. Équipement en édition limitée de l'hiver 2017-2018.",
"headSpecialGaymerxText": "Heaume de guerrier arc-en-ciel",
"headSpecialGaymerxNotes": "En l'honneur de la conférence GaymerX, cet casque spécial est décoré avec un motif arc-en-ciel aussi radieux que coloré ! GaymerX est une convention célébrant les LGBTQ et les jeux, et est ouverte à tous.",
"headMystery201402Text": "Heaume ailé",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Besoin de mains supplémentaires pour accomplir vos tâches ? Cette coiffe de gelée translucide dispose de pas mal de tentacules prêtes à vous aider ! N'apporte aucun bonus. Équipement d'abonné·e de juillet 2017.",
"headMystery201710Text": "Heaume de diablotin diablement impérieux",
"headMystery201710Notes": "Ce heaume vous rend intimidant... Mais il ne rendra pas service à votre perception de la profondeur ! N'apporte aucun bonus. Équipement d'abonné·e d'octobre 2017.",
+ "headMystery201712Text": "Couronne du bougiemancien",
+ "headMystery201712Notes": "Cette couronne vous apportera de la lumière et de la chaleur même dans la nuit d'hiver la plus sombre. N'apporte aucun bonus. Équipement d'abonné·e de Décembre 2017.",
"headMystery301404Text": "Haut-de-forme fantaisiste",
"headMystery301404Notes": "Un couvre-chef fantaisiste pour les gens de bonne famille les plus élégants ! N'apporte aucun bonus. Équipement d'abonné·e de janvier 3015.",
"headMystery301405Text": "Haut-de-forme classique",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "Cet auguste heaume d'acier vous aidera dans vos quêtes de santé, de bonheur et de productivité ! Augmente la Perception de <%= per %>. Armoire enchantée : ensemble anti-procrastination (objet 1 sur 3).",
"headArmoireCandlestickMakerHatText": "Chapeau de cirier",
"headArmoireCandlestickMakerHatNotes": "Un chapeau enjoué rend tout travail plus amusant, et la fabrique de bougies n'y fait pas exception ! Augmente la Perception et l'Intelligence de <%= attrs %> chacune. Armoire enchantée : ensemble du cirier (objet 2 sur 3).",
+ "headArmoireLamplightersTopHatText": "Chapeau d'allumeur de réverbères",
+ "headArmoireLamplightersTopHatNotes": "Ce chapeau noir enjoué complète votre ensemble d'allumeur de réverbères ! Augmente la Constitution de <%= con %>.",
+ "headArmoireCoachDriversHatText": "Chapeau de cocher",
+ "headArmoireCoachDriversHatNotes": "Ce chapeau est chic, mais pas autant qu'un chapeau haut-de-forme. Faites attention à ne pas le perdre lors de vos courses à travers le pays ! Augmente l'Intelligence de <%= int %>. Armoire enchantée : ensemble du cocher (objet 2 sur 3). ",
"offhand": "objet de main secondaire",
"offhandCapitalized": "Objet de main secondaire",
"shieldBase0Text": "Pas d'équipement de main secondaire",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "Ce bouclier en sucre d'orge détient de puissants pouvoirs de protection, alors essayez de ne pas le grignoter ! Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'automne 2017.",
"shieldSpecialFall2017HealerText": "Orbe hantée",
"shieldSpecialFall2017HealerNotes": "Cette orbe pousse des cris stridents de temps à autre. Nous sommes désolés, nous ne savons pas vraiment pourquoi. Mais une chose est sûre, quelle classe ! Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'automne 2017.",
+ "shieldSpecialWinter2018RogueText": "Crochet menthe poivrée",
+ "shieldSpecialWinter2018RogueNotes": "Parfait pour grimper les murs ou distraire vos ennemis avec des bonbons tout doux. Augmente la force de <%= str %>. Équipement en édition limitée de l'Hiver 2017-2018.",
+ "shieldSpecialWinter2018WarriorText": "Sac cadeau magique",
+ "shieldSpecialWinter2018WarriorNotes": "Quasiment tout ce dont vous avez besoin se trouve dans ce sac, si vous savez murmurer le mot magique. Augmente la Constitution de <%= con %>. Équipement en édition limitée de l'hiver 2017-2018.",
+ "shieldSpecialWinter2018HealerText": "Clochette en gui",
+ "shieldSpecialWinter2018HealerNotes": "Quel est ce son? C'est le son de la chaleur et des acclamations pour que tous puissent l'entendre!\nAugmente la Constitution de <%= con %>. Équipement en édition limitée de l'hiver 2017-2018.",
"shieldMystery201601Text": "Tueuse résolue",
"shieldMystery201601Notes": "Cette lame peut être utilisée pour parer toutes les distractions. N'apporte aucun bonus. Équipement d'abonné·e de janvier 2016.",
"shieldMystery201701Text": "Bouclier du temps transi",
@@ -1210,8 +1258,8 @@
"shieldArmoireAntiProcrastinationShieldNotes": "Ce robuste bouclier d'acier bloquera toute distraction en approche ! Augmente la Constitution de <%= con %>. Armoire enchantée : ensemble anti-procrastination (objet 3 sur 3).",
"shieldArmoireHorseshoeText": "Fer à cheval",
"shieldArmoireHorseshoeNotes": "Utilisez ce fer à cheval pour protéger les sabots de vos montures ongulées. Augmente la Constitution, la Perception et la Force de <%= attrs %>chacune. Armoire enchantée : ensemble du maréchal-ferrant (objet 3 sur 3).",
- "shieldArmoireHandmadeCandlestickText": "Chandelle faite-main",
- "shieldArmoireHandmadeCandlestickNotes": "Votre cire fine fournit lumière et chaleur aux Habiticiens reconnaissants ! Augmente la Force de <%= str %>. Armoire enchantée : ensemble du cirier (objet 3 sur 3).",
+ "shieldArmoireHandmadeCandlestickText": "Chandelle faite main",
+ "shieldArmoireHandmadeCandlestickNotes": "Votre cire fine fournit lumière et chaleur aux Habiticiennes et Habiticiens reconnaissants ! Augmente la Force de <%= str %>. Armoire enchantée : ensemble du cirier (objet 3 sur 3).",
"shieldArmoireWeaversShuttleText": "Navette de métier à tisser",
"shieldArmoireWeaversShuttleNotes": "Cet outil passe vos fils de trame à travers la chaîne pour faire du tissu ! Augmente l'Intelligence de <%= int %> et la Perception de <%= per %>. Armoire enchantée : ensemble du tisserand (objet 3 sur 3).",
"back": "Accessoire dorsal",
@@ -1251,9 +1299,9 @@
"backSpecialSnowdriftVeilText": "Voile-congère",
"backSpecialSnowdriftVeilNotes": "Ce voile translucide donne à croire qu'une rafale de neige vous enveloppe ! N'apporte aucun bonus.",
"backSpecialAetherCloakText": "Cape d'éther",
- "backSpecialAetherCloakNotes": "Cette cape a autrefois appartenu à la maîtresse des classes disparue. Augmente la perception de <%= per %>.",
+ "backSpecialAetherCloakNotes": "Cette cape a autrefois appartenu à la maîtresse oubliée en personne. Augmente la perception de <%= per %>.",
"backSpecialTurkeyTailBaseText": "Queue de dindon",
- "backSpecialTurkeyTailBaseNotes": "Portez fièrement votre noble queue de dindon lors des fêtes ! N'apporte aucun bonus.",
+ "backSpecialTurkeyTailBaseNotes": "Portez fièrement votre noble queue de dindon tandis que vous célébrez Thanksgiving ! N'apporte aucun bonus.",
"body": "Accessoire de Corps",
"bodyCapitalized": "Accessoire de corps",
"bodyBase0Text": "Pas d'armure.",
@@ -1267,7 +1315,7 @@
"bodySpecialTakeThisText": "Épaulettes Take This",
"bodySpecialTakeThisNotes": "Ces épaulettes ont été obtenues en participant à un défi sponsorisé créé par Take This. Félicitations ! Augmente tous les attributs de <%= attrs %>.",
"bodySpecialAetherAmuletText": "Amulette d'éther",
- "bodySpecialAetherAmuletNotes": "Cette amulette a une histoire mystérieuse. Augmente la constitution et la force de <%= attrs %> chacune.",
+ "bodySpecialAetherAmuletNotes": "Cette amulette a une histoire mystérieuse. Augmente la Constitution et la Force de <%= attrs %> chacune.",
"bodySpecialSummerMageText": "Pèlerine étincelante ",
"bodySpecialSummerMageNotes": "Ni l'eau de mer ni l'eau douce ne peuvent ternir cette pèlerine métallisée. N'apporte aucun bonus. Équipement en édition limitée de l’été 2014.",
"bodySpecialSummerHealerText": "Collier de corail",
@@ -1284,8 +1332,10 @@
"bodyMystery201705Notes": "Ces ailes ployées sont classes, mais en plus elles vous donneront l'agilité et la vitesse d'un griffon ! N'apporte aucun bonus. Équipement d'abonné·e de mai 2017.",
"bodyMystery201706Text": "Manteau loqueteux de corsaire",
"bodyMystery201706Notes": "Ce manteau cache des poches secrètes afin de dissimuler tout l'or que vous avez récupéré en accomplissant vos tâches. N'apporte aucun bonus. Équipement d'abonné·e de juin 2017.",
- "bodyMystery201711Text": "Écharpe de chevaucheur de tapis volant",
+ "bodyMystery201711Text": "Écharpe de chevaucheur de tapis",
"bodyMystery201711Notes": "Cette douce écharpe tricotée se pare de majesté lorsqu'elle vole au vent. N'apporte aucun bonus. Équipement d'abonné·e de novembre 2017.",
+ "bodyArmoireCozyScarfText": "Écharpe douillette",
+ "bodyArmoireCozyScarfNotes": "Cette douce écharpe vous tiendra au chaud alors que vous vaquez à vos occupations hivernales. N'apporte aucun bonus.",
"headAccessory": "accessoire de tête",
"headAccessoryCapitalized": "Accessoire de tête",
"accessories": "Accessoires",
@@ -1373,7 +1423,7 @@
"eyewearSpecialYellowTopFrameText": "Lunettes normales jaunes",
"eyewearSpecialYellowTopFrameNotes": "Des lunettes à monture jaune. N'apportent aucun bonus.",
"eyewearSpecialAetherMaskText": "Masque d'éther",
- "eyewearSpecialAetherMaskNotes": "Ce masque a une histoire mystérieuse. Augmente l'intelligence de <%= int %>.",
+ "eyewearSpecialAetherMaskNotes": "Ce masque a une histoire mystérieuse. Augmente l'Intelligence de <%= int %>.",
"eyewearSpecialSummerRogueText": "Cache-œil espiègle",
"eyewearSpecialSummerRogueNotes": "Même un voyou peut voir à quel point c'est élégant ! N'apporte aucun bonus. Équipement en édition limitée de l’été 2014.",
"eyewearSpecialSummerWarriorText": "Cache-œil fringuant",
diff --git a/website/common/locales/fr/generic.json b/website/common/locales/fr/generic.json
index f870af1698d..2a66cefaf92 100644
--- a/website/common/locales/fr/generic.json
+++ b/website/common/locales/fr/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Sauveur de Dilatoire",
"achievementDilatoryText": "A contribué à vaincre le Redoutable Drag'on de Dilatoire au cours du \"Summer Splash Event\" 2014 !",
"costumeContest": "Compétiteur du concours de costumes",
- "costumeContestText": "A participé au concours de costumes d'Habitoween. Découvrez certaines des participations sur le blog d'Habitica !",
- "costumeContestTextPlural": "A participé <%= count %> fois au concours de costumes d'Habitoween. Découvrez certaines des participations sur le blog d'Habitica !",
+ "costumeContestText": "A participé au concours de costumes d'Habitoween. Découvrez certaines des participations sur blog.habitrpg.com !",
+ "costumeContestTextPlural": "A participé <%= count %> fois au concours de costumes d'Habitoween. Découvrez certaines des participations sur blog.habitrpg.com !",
"memberSince": "- Membre depuis",
"lastLoggedIn": "- Dernière connexion",
"notPorted": "Cette fonction n'a pas encore été importée depuis le site original.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Thème d'Airu",
"audioTheme_beatscribeNesTheme": "Thème NES de Beatscribe",
"audioTheme_arashiTheme": "Thème d'Arashi",
+ "audioTheme_maflTheme": "Thème MAFL",
+ "audioTheme_pizildenTheme": "Thème de Pizilden",
"askQuestion": "Poser une question",
"reportBug": "Signaler un Bug",
"HabiticaWiki": "Le Wiki Habitica",
diff --git a/website/common/locales/fr/groups.json b/website/common/locales/fr/groups.json
index b63a818e161..71a4c2fe0b2 100644
--- a/website/common/locales/fr/groups.json
+++ b/website/common/locales/fr/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Message optionnel",
"yesRemove": "Oui, enlevez-les",
"foreverAlone": "Vous ne pouvez pas aimer votre propre message. Ne soyez pas ce genre de personne.",
- "sortLevel": "Classer par niveau",
- "sortRandom": "Classer aléatoirement",
- "sortPets": "Classer par nombre de familiers",
- "sortName": "Classer par nom d'avatar",
- "sortBackgrounds": "Classer par arrière-plan",
- "sortHabitrpgJoined": "Trier en fonction de la date d'inscription à Habitica",
- "sortHabitrpgLastLoggedIn": "Trier en fonction de la dernière connexion",
- "ascendingSort": "Trier par ordre Croissant",
- "descendingSort": "Trier par ordre Décroissant",
+ "sortDateJoinedAsc": "Première date joint",
+ "sortDateJoinedDesc": "Dernière date joint",
+ "sortLoginAsc": "Première connexion",
+ "sortLoginDesc": "Dernière Connexion",
+ "sortLevelAsc": "Niveau le plus bas",
+ "sortLevelDesc": "Niveau le plus haut",
+ "sortNameAsc": "Nom (A - Z)",
+ "sortNameDesc": "Nom (Z - A)",
+ "sortTierAsc": "Échelon le plus bas",
+ "sortTierDesc": "Échelon le plus haut",
"confirmGuild": "Créer une guilde pour 4 gemmes ?",
"leaveGroupCha": "Quitter les défis de guilde et…",
"confirm": "Confirmer",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Vous n'êtes pas autorisé à supprimer ce message !",
"onlyGroupLeaderCanEditTasks": "Pas d'autorisation pour gérer les tâches !",
"onlyGroupTasksCanBeAssigned": "Seules les tâches de groupe peuvent être assignées",
+ "assignedToUser": "Attribué à <%= userName %>",
+ "assignedToMembers": "Attribué à <%= userCount %> membres",
+ "assignedToYouAndMembers": "Attribué à vous et <%= userCount %> membres",
+ "youAreAssigned": "Vous êtes attribués à cette tâche",
+ "taskIsUnassigned": "Cette tâche n'est pas attribué",
+ "confirmClaim": "Êtes-vous sûr de vouloir réclamer cette tâche?",
+ "confirmUnClaim": "Voulez-vous ne plus réclamer cette tâche ?",
+ "confirmApproval": "Êtes-vous sûr de vouloir approuver cette tâche?",
+ "userRequestsApproval": "<%= userName %> demande une approbation",
+ "userCountRequestsApproval": "<%= userCount %> demandent une approbation",
+ "youAreRequestingApproval": "Vous demandez une approbation",
"chatPrivilegesRevoked": "Vos privilèges de discussion ont été révoqués.",
"newChatMessagePlainNotification": "Nouveau message de <%= authorName %> dans <%= groupName %>. Cliquez ici pour ouvrir la page de discussion !",
"newChatMessageTitle": "Nouveau message dans <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Extras amusants",
"enterprisePlansButton": "Se renseigner sur les forfaits d'entreprise",
"enterprisePlansDescription": "Vous cherchez une installation plus grande avec des besoins spécifiques ? Regardez si nos forfaits d'entreprise vous correspondent.",
- "enterprisePlansEmailSubject": "Question à propos des forfaits d'entreprise",
"familyPlansButton": "Inscrivez-vous à la liste de diffusion des offres familiales",
"familyPlansDescription": "Vous souhaitez une solution plus douillette pour gérer votre foyer ? Les offres familiales arrivent bientôt !",
"createAGroup": "Créer un groupe",
@@ -362,7 +373,7 @@
"noGuildsParagraph1": "Les guildes sont des groupes sociaux créés par des joueurs qui peuvent vous offrir du soutien, vous responsabilisez et vous encouragez.",
"noGuildsParagraph2": "Cliquez sur l'onglet Découvrir pour voir les guildes suggérées en fonction de vos intérêts, naviguer dans les guildes publiques d'Habitica, ou créer votre propre guilde.",
"privateDescription": "Une guilde privée ne seras pas affichée dans le répertoire des guildes d'Habitica. Les nouveaux membres ne peuvent être ajoutés que sur invitation.",
- "removeInvite": "Annuler l'invitation.",
+ "removeInvite": "Annuler l'invitation",
"removeMember": "Retirer le membre",
"sendMessage": "Envoyer un message",
"removeManager2": "Retirer le responsable",
@@ -372,7 +383,7 @@
"createParty": "Créer une équipe",
"inviteMembersNow": "Voulez-vous inviter des membres maintenant ?",
"playInPartyTitle": "Jouez à Habitica dans une équipe !",
- "playInPartyDescription": "Tentez de formidables quêtes avec des amis ou sans. Combattez des monstres, créez des défis et aidez vous à rester responsable avec les équipes.",
+ "playInPartyDescription": "Tentez de formidables quêtes avec des amis ou en solo. Combattez des monstres, créez des défis et aidez-vous à rester responsable en équipe.",
"startYourOwnPartyTitle": "Formez votre propre équipe",
"startYourOwnPartyDescription": "Combattez des monstres en solitaire ou invitez autant d'amis que vous voulez !",
"shartUserId": "Partager l'ID d'Utilisateur",
@@ -397,5 +408,6 @@
"groupBilling": "Facturation du groupe",
"wouldYouParticipate": "Voulez-vous participer ?",
"managerAdded": "Gestionnaire ajouté avec succès",
- "managerRemoved": "Gestionnaire retiré avec succès"
+ "managerRemoved": "Gestionnaire retiré avec succès",
+ "leaderChanged": "Le responsable a été changé"
}
\ No newline at end of file
diff --git a/website/common/locales/fr/limited.json b/website/common/locales/fr/limited.json
index 4dbc3d0090e..9dc72e34468 100644
--- a/website/common/locales/fr/limited.json
+++ b/website/common/locales/fr/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Mage de mascarade (Mage)",
"fall2017HauntedHouseSet": "Guérisseur Maison Hantée (Guérisseur)",
"fall2017TrickOrTreatSet": "Voleur un-bonbon-ou-un-sort (Voleur)",
+ "winter2018ConfettiSet": "Mage confetti (Mage)",
+ "winter2018GiftWrappedSet": "Guerrier papier-cadeau (Guerrier)",
+ "winter2018MistletoeSet": "Guérisseur du gui (Guérisseur)",
+ "winter2018ReindeerSet": "Voleur renne (Voleur)",
"eventAvailability": "Disponible à l'achat jusqu'au <%= date(locale) %>.",
"dateEndApril": "19 avril",
"dateEndMay": "17 mai",
@@ -120,5 +124,9 @@
"dateEndAugust": "31 août",
"dateEndOctober": "31 octobre",
"dateEndNovember": "30 novembre",
- "discountBundle": "lot"
+ "dateEndJanuary": "31 janvier",
+ "discountBundle": "lot",
+ "winterPromoGiftHeader": "OFFREZ UN ABONNEMENT ET OBTENEZ-EN UN GRATUIT !",
+ "winterPromoGiftDetails1": "Jusqu'au 12 janvier seulement, quand vous offrez un abonnement à quelqu'un, vous obtenez le même abonnement, pour vous, gratuitement !",
+ "winterPromoGiftDetails2": "Merci de noter que si vous, ou la personne à qui vous faites ce cadeau, détenez un abonnement récurrent, l'abonnement offert ne commencera qu'après que cet abonnement sera annulé ou expirera. Merci infiniment pour votre soutien <3"
}
\ No newline at end of file
diff --git a/website/common/locales/fr/loadingscreentips.json b/website/common/locales/fr/loadingscreentips.json
index b5eaa2858a7..a4f2f659385 100644
--- a/website/common/locales/fr/loadingscreentips.json
+++ b/website/common/locales/fr/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Astuce #<%= tipNumber %>",
"tip1": "Complétez des tâches sur le pouce avec les applications mobiles Habitica",
- "tip2": "Atteignez le niveau 100 pour débloquer l'Orbe de renaissance gratuitement et commencer une nouvelle aventure !",
+ "tip2": "Cliquez sur n'importe quel équipement pour voir un aperçu, ou équipez le immédiatement en cliquant l'étoile dans son coin supérieur gauche !",
"tip3": "Utilisez des emojis pour différencier rapidement vos tâches.",
"tip4": "Utilisez le signe # devant le nom d'une tâche pour le rendre énorme !",
- "tip5": "Il vaut mieux utiliser les compétences conférant des bonus dans la matinée pour qu'ils durent plus longtemps.",
- "tip6": "Réévaluez occasionnellement vos tâches pour vous assurer qu'elles sont à jour !",
- "tip7": "Certains arrière-plans se juxtaposent parfaitement si les membres de l'équipe utilisent le même arrière-plan. Par exemple: le Lac en altitude, les Pagodes et les Collines Fleuries.",
- "tip8": "Envoyez un message privé à quelqu'un en cliquant sur l'enveloppe près de leur nom dans la discussion !",
- "tip9": "Visitez la guilde \"Guild Leaders & Challenge Creators\" pour des conseils pour commencer une guilde.",
+ "tip5": "Il vaut mieux utiliser les compétences conférant des bonus dans la matinée, pour qu'ils durent plus longtemps.",
+ "tip6": "Survolez une tâche et cliquez les points pour accéder les contrôles avancés des tâches, comme la possibilité de passer les tâches en haut ou en bas de la liste.",
+ "tip7": "Certains arrière-plans se juxtaposent parfaitement si les membres de l'équipe utilisent le même arrière-plan. Par exemple: le lac en altitude, les pagodes et les collines fleuries.",
+ "tip8": "Envoyez un message privé à quelqu'un en cliquant sur son nom dans le fil de discussion, puis sur l'icône d'enveloppe en haut de leur profil !",
+ "tip9": "Utilisez les filtres et la barre de recherche dans l'inventaire, les magasins, les guildes et les défis pour trouver rapidement ce que vous voulez.",
"tip10": "Vous pouvez gagner des gemmes en accomplissant des défis. De nouveaux défis sont ajoutés chaque jour !",
- "tip11": "Si vous aimez habiller votre avatar, visitez la guilde \"Costume Carnival\".",
- "tip12": "Rejoignez la guilde \"Challenge... Accepted\" pour des défis réguliers sélectionnés au hasard.",
- "tip13": "Avoir plus de quatre membres dans votre équipe augmente la responsabilité de chacun!",
+ "tip11": "Avoir plus de quatre membres dans votre équipe augmente la responsabilité de chacun !",
+ "tip12": "Ajoutez des listes de vérification à vos tâches pour augmenter vos récompenses !",
+ "tip13": "Cliquez sur les filtres dans votre page des tâches pour rendre gérable une liste de tâches insensée !",
"tip14": "Vous pouvez ajouter des en-têtes ou des citations inspirantes à votre liste comme des habitudes sans (+/-).",
- "tip15": "Ajoutez des listes à vos tâches pour augmenter vos récompenses !",
- "tip16": "Visitez le menu Données pour des informations intéressantes sur vos progrès.",
- "tip17": "L'utilisation d'étiquettes peut rendre une longue liste de tâches plus facile à gérer !",
+ "tip15": "Accomplissez la suite de quêtes des maîtres des classes, et vous en apprendrez plus sur les mystérieuses origines d'Habitica.",
+ "tip16": "Cliquez sur \"Outil d'affichage des données\", dans la section du bas de page, pour accéder à des informations intéressantes concernant vos progrès.",
+ "tip17": "Utilisez les applications mobiles pour définir des rappels pour vos tâches.",
"tip18": "Les habitudes qui sont juste positives ou juste négatives s'effacent graduellement pour redevenir jaunes.",
- "tip19": "Améliorez votre statistique d'intelligence pour gagner plus d'expérience lorsque vous réalisez une tâche.",
+ "tip19": "Améliorez votre statistique d'Intelligence pour gagner plus d'expérience lorsque vous réalisez une tâche.",
"tip20": "Améliorez votre statistique de perception pour obtenir plus d'or et de butin.",
"tip21": "Améliorez votre statistique de force pour infliger plus de dégâts contre les monstres et faire plus de coups critiques.",
"tip22": "Améliorez votre statistique de Constitution pour diminuer les dommages encourus par vos quotidiennes incomplètes.",
- "tip23": "Cliquez sur l'icône de graphique sur vos tâches pour voir un graphique montrant votre progrès.",
- "tip24": "Habitica est open source ! Rendez-vous sur la guilde \"Aspiring Legends\" si vous voulez contribuer.",
+ "tip23": "Atteignez le niveau 100 pour débloquer l'orbe de renaissance gratuitement et commencer une nouvelle aventure !",
+ "tip24": "Vous avez une question ? Demandez à la guilde \"Habitica Help\" !",
"tip25": "Les quatre Grands Galas saisonniers commencent vers les solstices et équinoxes.",
- "tip26": "Une flèche à gauche du niveau de l'avatar indique que le joueur ou la joueuse bénéficie actuellement d'un bonus.",
+ "tip26": "Une flèche à droite du nom de l'avatar indique que le joueur ou la joueuse bénéficie actuellement d'un bonus.",
"tip27": "Vous avez accompli une tâche hier, mais ne l'avez pas cochée ? Pas de panique ! Grâce à \"Valider les tâches de la veille\", vous pourrez passer en revue les tâches non-validées de la veille avant de commencer votre nouvelle journée.",
- "tip28": "Indiquez un début de journée personnalisé dans Paramètres > Site pour contrôler quand votre journée démarre.",
+ "tip28": "Indiquez un début de journée personnalisé en cliquant sur l'icône Utilisateur > Paramètres, afin de décider de l'heure à laquelle votre journée démarre.",
"tip29": "Complétez toutes vos quotidiennes pour obtenir un Bonus de Jour Parfait qui augmentera vos statistiques !",
"tip30": "Vous pouvez inviter des gens dans les guildes, pas uniquement dans les équipes.",
"tip31": "Jetez un coup d'œil aux listes prédéfinies dans la guilde « Library of Tasks and Challenges » pour des exemples de liste.",
- "tip32": "Beaucoup de codes, d'arts et d'écritures dans Habitica sont réalisés par des contributeurs et contributrices volontaires ! Tout le monde peut aider.",
- "tip33": "Consultez la guilde \"The Bulletin Board\" pour des nouvelles concernant des guildes, défis et autres événements créés par des joueurs et joueuses - et y annoncer les vôtres!"
+ "tip32": "Une grande partie du code, des textes et des illustrations d'Habitica sont réalisés par des contributeurs et contributrices volontaires ! Tout le monde peut aider.",
+ "tip33": "Consultez la guilde \"The Bulletin Board\" pour connaître les actualités concernant des guildes, des défis et d'autres événements créés par des joueurs et joueuses... et annoncez-y les vôtres!",
+ "tip34": "Ré-évaluez de temps en temps vos tâches pour vous assurer qu'elles sont toujours à jour !",
+ "tip35": "Les personnes qui font partie d'une offre de groupe gagnent la capacité d'affecter des tâches à d'autres personnes dans ce groupe pour une meilleure gestion et une responsabilité plus importante."
}
diff --git a/website/common/locales/fr/messages.json b/website/common/locales/fr/messages.json
index 45ece447c96..64687ae249f 100644
--- a/website/common/locales/fr/messages.json
+++ b/website/common/locales/fr/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Vous avez trouvé la quête \"<%= questText %>\" !",
"messageAlreadyPurchasedGear": "Vous avez acheté cet équipement auparavant mais ne le possédez actuellement pas. Vous pouvez l'acheter à nouveau dans la colonne Récompenses sur la page des tâches.",
"messageAlreadyOwnGear": "Vous possédez déjà cet objet. Équipez le depuis la page d'équipement.",
+ "previousGearNotOwned": "Vous devez achetez un équipement de niveau inférieur avant celui là.",
"messageHealthAlreadyMax": "Votre santé est déjà à son maximum.",
"messageHealthAlreadyMin": "Ho non ! Votre santé est déjà tombée au plus bas et il est trop tard pour acheter une potion de santé ! Mais pas de panique... vous pouvez revivre !",
"armoireEquipment": "<%= image %> Vous avez trouvé une pièce d'équipement rare dans l'armoire : <%= dropText %> ! Génial !",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Vous avez déjà signalé ce message.",
"messageGroupChatNotFound": "Message introuvable !",
"messageGroupChatAdminClearFlagCount": "Seul un administrateur peut modifier ce compteur !",
+ "messageCannotFlagSystemMessages": "Vous ne pouvez pas signaler un message système. Si vous avez besoin de signaler une violation des règles de vie en communauté liée à ce message, veuillez envoyer un courriel avec une capture d'écran à Lemoness à <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Oups, on dirait que vous postez trop de messages ! Merci d'attendre une minute et d'essayer de nouveau. Le fil de discussion de la taverne ne pouvant contenir que 200 messages, Habitica vous encourage à poster des messages plus longs et plus réfléchis, et à répondre en un seul bloc plutôt qu'en plusieurs petits messages. Nous avons hâte d'entendre ce que vous avez à dire. :)",
"messageUserOperationProtected": "chemin `<%= operation %>` n'a pas été sauvegardé car c'est un chemin protégé.",
"messageUserOperationNotFound": "<%= operation %> opération introuvable",
diff --git a/website/common/locales/fr/npc.json b/website/common/locales/fr/npc.json
index 948ad51c6a0..d90368e6a22 100644
--- a/website/common/locales/fr/npc.json
+++ b/website/common/locales/fr/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 gemme",
"typeNotSellable": "Type n'est pas vendable. Il doit faire partie des types suivants <%= acceptedTypes %>",
"userItemsKeyNotFound": "Clé non trouvée pour user.items <%= type %>",
- "userItemsNotEnough": "Pas assez d'objets trouvés pour user.items <%= type %>",
+ "userItemsNotEnough": "Vous n'avez pas assez de <%= type %>.",
"pathRequired": "La chaîne de chemin d'accès est requise",
"unlocked": "Les objets ont été débloqués.",
"alreadyUnlocked": "Ensemble complet déjà débloqué.",
diff --git a/website/common/locales/fr/quests.json b/website/common/locales/fr/quests.json
index 3f5105d5a2f..4994f658bb1 100644
--- a/website/common/locales/fr/quests.json
+++ b/website/common/locales/fr/quests.json
@@ -78,6 +78,7 @@
"mustLvlQuest": "Vous devez être au niveau <%= level %> pour acheter cette quête !",
"mustInviteFriend": "Pour gagner cette quête, invitez un ami dans votre équipe. Voulez-vous inviter quelqu'un maintenant ?",
"unlockByQuesting": "Pour débloquer cette quête, complétez <%= title %>.",
+ "questConfirm": "Avez-vous bien fait votre choix ? Seuls<%= questmembers %> des <%= totalmembers %> membres de votre équipe ont rejoint cette quête ! Les quêtes démarrent automatiquement quand tous les joueurs ont accepté ou décliné l'invitation.",
"sureCancel": "Confirmez-vous vouloir annuler cette quête ? Toutes les invitations acceptées seront perdues. Le responsable de quête reprendra possession du parchemin de quête.",
"sureAbort": "Confirmez-vous vouloir abandonner cette mission ? Elle sera abandonnée pour tous les membres de votre groupe et toute la progression sera perdue. Le responsable de quête reprendra possession du parchemin de quête.",
"doubleSureAbort": "Confirmez-vous absolument ? Assurez-vous qu'ils ne vont pas vous détester pour le reste de votre vie !",
diff --git a/website/common/locales/fr/questscontent.json b/website/common/locales/fr/questscontent.json
index 8b10c6c07fe..a8d767a51c6 100644
--- a/website/common/locales/fr/questscontent.json
+++ b/website/common/locales/fr/questscontent.json
@@ -226,13 +226,13 @@
"questDilatoryDistress1Completion": "Vous revêtez l'armure à aileron et nagez en direction de Dilatoire aussi vite que possible. Les ondins et leurs alliés crevettes-mantes ont réussi à retenir les monstres hors de la ville pour l'instant, mais ils perdent du terrain. À peine êtes-vous dans l'enceinte du château que l'effrayant siège l'envahit !",
"questDilatoryDistress1CollectFireCoral": "Corail de feu",
"questDilatoryDistress1CollectBlueFins": "Nageoires bleues",
- "questDilatoryDistress1DropArmor": "Armure océane à nageoire (Armure)",
+ "questDilatoryDistress1DropArmor": "Armure océane à nageoire (armure)",
"questDilatoryDistress2Text": "Le désespoir de Dilatoire, 2e partie : les créatures de la crevasse",
"questDilatoryDistress2Notes": "Le siège est visible à des kilomètres : des milliers de crânes désincarnés se ruent à travers un portail dans les murs de la crevasse et se fraient un chemin vers Dilatoire.
Quand vous voyez le roi Manta dans la salle de commandement, il semble avoir les yeux enfoncés dans ses orbites et son visage est tourmenté. \"Ma fille Adva a disparu dans la crevasse obscure juste avant le début du siège. Je vous en prie, trouvez-la et ramenez-la saine et sauve à la maison ! Tenez, je vous prête mon diadème de corail de feu pour vous aider. Si vous réussissez, il est à vous.\"",
"questDilatoryDistress2Completion": "Vous vainquez la cauchemardesque horde de crânes mais n'avez pas l'impression d'avoir avancé dans votre quête d'Adva. Vous parlez à @Kiwibot, la pisteuse royale, pour voir si elle a quelques idées. \"Les crevettes-mantes qui défendent la ville doivent avoir vu Adva s'enfuir\", dit @Kiwibot. \"Essayez de les suivre dans la crevasse obscure.\"",
"questDilatoryDistress2Boss": "Nuée de crânes aquatiques",
"questDilatoryDistress2RageTitle": "Régénération de la nuée",
- "questDilatoryDistress2RageDescription": "Régénération de la nuée : Cette barre se remplit quand vous n'effectuez pas vos Quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
+ "questDilatoryDistress2RageDescription": "Régénération de la nuée : Cette barre se remplit quand vous n'effectuez pas vos quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
"questDilatoryDistress2RageEffect": "'La nuée utilise RÉGÉNÉRATION DE LA NUÉE !'\n\nEncouragés par leurs victoires, plus de crânes affluent de la crevasse pour renforcer la nuée !",
"questDilatoryDistress2DropSkeletonPotion": "Potion d'éclosion squelette",
"questDilatoryDistress2DropCottonCandyBluePotion": "Potion d'éclosion bleu barbe-à-papa",
@@ -242,7 +242,7 @@
"questDilatoryDistress3Completion": "Finalement, vous arrivez à tirer le pendentif ensorcelé du cou d'Adva et le jetez. Adva prend sa tête dans ses mains. \"Où suis-je ? Que s'est-il passé ici ?\" Lorsqu'elle entend votre histoire, elle fronce les sourcils. \"Ce collier m'a été donné par une ambassadrice – une dame du nom de Tzina. Je ne me rappelle de rien après ce moment !\"
De retour à Dilatoire, Manta est enchanté de votre réussite. \"Permettez-moi de vous récompenser avec ce trident et ce bouclier ! Je les ai commandés à @aiseant et @starsystemic pour les offrir à Adva, mais... je préfère ne pas l'équiper en armes avant un bon moment !\"",
"questDilatoryDistress3Boss": "Adva, la sirène usurpatrice",
"questDilatoryDistress3DropFish": "Sardine (Nourriture)",
- "questDilatoryDistress3DropWeapon": "Trident des marées déferlantes (Arme)",
+ "questDilatoryDistress3DropWeapon": "Trident des marées déferlantes (arme)",
"questDilatoryDistress3DropShield": "Bouclier perle-de-lune (équipement secondaire)",
"questCheetahText": "Quel tricheur, ce guépard",
"questCheetahNotes": "Alors que vous vous promenez dans la savane Tanfépaï avec vos amis @PainterProphet, @tivaquinn, @Unruly Hyena et @Crawford, vous êtes surpris de voir un guépard tenant un nouvel Habiticien dans sa gueule. Sous les pattes enflammées du guépard, les tâches se consument comme si elles étaient complétées – avant même que quiconque ne puisse les achever ! L'Habiticien vous voit et crie : \"Aidez-moi s'il vous plait ! Ce guépard me fait gagner des niveaux trop vite, mais je n'accomplis rien. Je veux prendre mon temps et profiter du jeu. Arrêtez-le !\" Vous vous souvenez de votre premier jour et vous savez que vous devez aider le petit nouveau à arrêter ce guépard !",
@@ -366,7 +366,7 @@
"questTaskwoodsTerror1Completion": "Avec l'aide de la Joyeuse faucheuse et de la célèbre pyromancienne @Beffymaroo, vous parvenez a faire fuir la nuée. Dans une démonstration de solidarité, Beffymaroo vous offre son turban de pyromancienne, puis vous vous enfoncez plus profondément dans la forêt.",
"questTaskwoodsTerror1Boss": "Nuée de crânes enflammés",
"questTaskwoodsTerror1RageTitle": "Régénération de la nuée",
- "questTaskwoodsTerror1RageDescription": "Régénération de la nuée : cette barre se remplit quand vous n'effectuez pas vos Quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
+ "questTaskwoodsTerror1RageDescription": "Régénération de la nuée : cette barre se remplit quand vous n'effectuez pas vos quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
"questTaskwoodsTerror1RageEffect": "`La nuée utilise RÉGÉNÉRATION DE LA NUÉE !`\n\nEncouragés par cette victoire, d'autres crânes se joignent a la nuée dans une gerbe de flammes.",
"questTaskwoodsTerror1DropSkeletonPotion": "Potion d'éclosion squelette",
"questTaskwoodsTerror1DropRedPotion": "Potion d'éclosion rouge",
@@ -377,13 +377,13 @@
"questTaskwoodsTerror2CollectPixies": "Lutins",
"questTaskwoodsTerror2CollectBrownies": "Farfadets",
"questTaskwoodsTerror2CollectDryads": "Dryades",
- "questTaskwoodsTerror2DropArmor": "Robe de pyromancienne (Armure)",
+ "questTaskwoodsTerror2DropArmor": "Robe de pyromancienne (armure)",
"questTaskwoodsTerror3Text": "Terreur dans le bois des Tâches, 3e partie : Jacko à la lanterne",
"questTaskwoodsTerror3Notes": "Prêt pour la bataille, votre groupe marche jusqu'au cœur de la forêt, où l'esprit renégat tente de détruire un vénérable pommier entouré de buissons pleins de baies. Sa tête-citrouille irradie une affreuse lumière partout où son regard porte et il tient fermement dans sa main gauche un long bâton au bout duquel pend une lanterne. En lieu et place de la flamme, la lanterne contient un cristal noir dont la simple vue vous glace le sang.
La Joyeuse faucheuse porte sa main osseuse à sa bouche. \"C'est... c'est Jacko, l'esprit de la lanterne ! Mais c'est un esprit moissonneur bien utile qui guide nos fermiers. Qu'est ce qui a pu conduire cette âme respectable à se comporter de la sorte ?\"
\"Je n'en sais rien, dit @bridgetteempress, mais on dirait bien que cette 'âme respectable' est sur le point de nous attaquer !\"",
"questTaskwoodsTerror3Completion": "Après une longue bataille, vous parvenez à faire tomber le cristal contenu dans la lanterne que Jacko tient. Il revient soudainement à lui-même et se répand en larmes. \"Oh, ma forêt, ma magnifique forêt ! Qu'ai-je fait ?!\" gémit-il. Ses larmes éteignent l'incendie et sauvent les pommes et les buissons.
Après l'avoir aidé à se reprendre, Jacko s'explique : \"J'ai rencontré une charmante dame, nommée Tzina, et elle m'a donné ce cristal en cadeau. Puisqu'elle insistait, je l'ai mis dans ma lanterne... mais c'est tout ce dont je me souviens.\" Il se tourne vers vous avec un sourire rayonnant. \"Peut-être devriez-vous le garder en sécurité pendant que j'aiderai les vergers à repousser.\"",
"questTaskwoodsTerror3Boss": "Jacko à la lanterne",
"questTaskwoodsTerror3DropStrawberry": "Fraise (Nourriture)",
- "questTaskwoodsTerror3DropWeapon": "Lanterne du bois des Tâches (Arme à deux mains)",
+ "questTaskwoodsTerror3DropWeapon": "Lanterne du bois des Tâches (arme à deux mains)",
"questFerretText": "L'abominable furet",
"questFerretNotes": "En traversant Habitiville, vous apercevez une foule en colère attroupée autour d'un furet à poil rouge.
\"Cette potion de productivité que tu m'as vendue est inutile !\" se plaint @Beffymaroo. \"J'ai regardé la télé pendant trois heures la nuit dernière, au lieu d'accomplir mes tâches !\"
\"Ouais !\" crie @Pandah. \"Et aujourd'hui j'ai passé une heure à réorganiser ma bibliothèque, au lieu d'avancer dans mes lectures !\"
L'abominable furet agite les bras en signe d'innocence. \"On peut donc dire que vous avez été très efficace dans la catégorie \"visionnage d'émissions\" et \"organisation de la maison\", non ?\"
La foule explose de colère.
\"Pas de remboursement !\" réplique l'abominable furet. Puis il lance un éclair magique sur la foule, préparant sa fuite dans un nuage de fumée.
\"Oyez, Habiticiennes et Habiticiens !\" lance @Faye, tout en saisissant votre bras. \"Vainquons le furet et forçons-le à rembourser l'argent indûment gagné !\"",
"questFerretCompletion": "Vous avez vaincu l’escroc à poil doux et @UncommonCriminal donne à la foule leurs remboursements. Il reste même un peu d'or pour vous. En plus, on dirait que le furet a laissé tomber quelques œufs dans sa fuite hâtive !",
@@ -404,12 +404,12 @@
"questMoon2Notes": "Après avoir étudié les éclats, @Starsystemic l'oracle apporte de mauvaises nouvelles. \"Un ancien monstre approche Habitica, et il cause un terrible stress à tous les citoyens. Je peux soulager les gens en extrayant ce qui assombrit leur cœur. J'attirerai cette ombre jusque dans cette tour, où elle prendra une forme physique, mais vous devrez la défaire avant qu'elle ne s'échappe et se répande de nouveau.\" Vous acquiescez, et elle commence ses incantations. Des ombres dansantes remplissent la pièce, se pressant les unes contre les autres. Un vent froid souffle, l'obscurité se fait plus forte. L’éclipse de stress s'élève du sol, ricane tel un cauchemar devenu réalité... et frappe ! ",
"questMoon2Completion": "L'ombre explose dans un nuage d'air sombre, laissant la pièce plus lumineuse et votre cœur plus léger. Le stress qui couvrait Habitica est diminué, et vous pouvez tous pousser un soupir de soulagement. Pourtant, en regardant le ciel, vous sentez que ce n'est pas fini : le monstre physique sait que quelqu'un a détruit son ombre. \"Nous resterons en alerte pour les prochaines semaines\", dit @Starsystemic, \"et je vous enverrai un nouveau parchemin de quête quand il se manifestera.\"",
"questMoon2Boss": "Éclipse de stress",
- "questMoon2DropArmor": "Armure de guerrier lunaire (Armure)",
+ "questMoon2DropArmor": "Armure de guerrier lunaire (armure)",
"questMoon3Text": "Affrontement lunaire, 3e partie : la lune monstrueuse",
"questMoon3Notes": "Vous recevez un parchemin urgent de @Starsystemic lorsque minuit sonne, et vous galopez jusqu'à sa tour. \"Le monstre utilise la pleine lune pour essayer de traverser jusqu'à notre monde\", dit-elle. \"S'il réussit, l'onde de choc de stress sera dévastatrice !\"
À votre grand désarroi, vous voyez que le monstre utilise effectivement la lune pour se manifester. Un œil luisant s'ouvre sur la surface rocheuse, et une longue langue roule d'une bouche béante pleine de crocs acérés. Vous ne pouvez pas le laisser émerger complètement !",
"questMoon3Completion": "Le monstre naissant éclate dans l'ombre, et la lune redevient argentée alors que le danger se dissipe. Les dragons recommencent à chanter, et les étoiles brillent d'une lumière diffuse. @Starsystemic l'oracle se penche en avant et ramasse un éclat lunaire. Il luit d'un éclat argenté dans sa main, avant de se changer en une magnifique faux cristalline.",
"questMoon3Boss": "Lune monstrueuse",
- "questMoon3DropWeapon": "Faux lunaire (Arme à deux mains)",
+ "questMoon3DropWeapon": "Faux lunaire (arme à deux mains)",
"questSlothText": "Somnolent le paresseux",
"questSlothNotes": "Vous vous êtes risqués dans la forêt Flocododo avec votre équipe, et vous êtes soulagés d'apercevoir enfin un éclat vert parmi les blanches congères... jusqu'à ce qu'un immense paresseux émerge des arbres couverts de givre ! Sur son dos, des émeraudes vertes ont un chatoiement hypnotique.
\"Bonjour aventuriers... Pourquoi ne pas faire une pause ? Cela fait longtemps que vous marchez... alors pourquoi ne pas... s'arrêter ? Allongez-vous, reposez-vous...\"
Vos paupières se font lourdes, et vous comprenez tout-à-coup : c'est Somnolent le paresseux ! Selon @JaizakAripaik, il tire son nom des émeraudes qu'il a sur le dos, et qui paraît-il... emmènent les gens... au pays des rêves...
Vous vous secouez, vous résistez à la torpeur. Juste à temps, @awakebyjava et @PainterProphet hurlent des sorts et réveillent toute votre équipe. \"Allons-y, c'est le moment !\" crie @Kiwibot.",
"questSlothCompletion": "Vous avez réussi ! Somnolent est vaincu, et les émeraudes se détachent de son dos. \"Vous avez levé la malédiction qui pesait sur moi, merci\", dit le paresseux. \"Je vais enfin pouvoir dormir paisiblement, sans que mon dos ait à supporter ces lourdes émeraudes. Prenez ces œufs en guise de remerciement, et puis les émeraudes, aussi.\" Le paresseux vous donne trois de ses œufs et part vers des contrées plus clémentes.",
@@ -428,7 +428,7 @@
"questStoikalmCalamity1Completion": "Tandis que vous assénez un dernier coup aux crânes belliqueux, ces derniers se dissipent en une bouffée de magie. \"Cette maudite nuée s'en est allée, dit Dame Givre, mais nous affrontons de plus gros problèmes. Suivez-moi.\" Elle vous lance un manteau afin que vous vous protégiez de l'air frais, et vous vous élancez derrière elle.",
"questStoikalmCalamity1Boss": "Nuée de crânes telluriques",
"questStoikalmCalamity1RageTitle": "Régénération de la nuée",
- "questStoikalmCalamity1RageDescription": "Régénération de la nuée : Cette barre se remplit quand vous n'effectuez pas vos Quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
+ "questStoikalmCalamity1RageDescription": "Régénération de la nuée : Cette barre se remplit quand vous n'effectuez pas vos quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
"questStoikalmCalamity1RageEffect": "`La nuée utilise RÉSURRECTION DE LA NUÉE !`\n\nDe nouveaux crânes sortent de terre, leurs dents claquant dans l'air froid !",
"questStoikalmCalamity1DropSkeletonPotion": "Potion d'éclosion squelette",
"questStoikalmCalamity1DropDesertPotion": "Potion d'éclosion du désert",
@@ -444,7 +444,7 @@
"questStoikalmCalamity3Boss": "Reine guivre-givre",
"questStoikalmCalamity3DropBlueCottonCandy": "Barbe-à-papa bleue (Nourriture)",
"questStoikalmCalamity3DropShield": "Olifant de chevaucheur de mammouths (équipement secondaire)",
- "questStoikalmCalamity3DropWeapon": "Lance de chevaucheur de mammouths (Arme)",
+ "questStoikalmCalamity3DropWeapon": "Lance de chevaucheur de mammouths (arme)",
"questGuineaPigText": "Le gang des cochons d'Inde",
"questGuineaPigNotes": "Vous vous baladez nonchalamment sur le célèbre marché d'Habitiville quand @Pandah vous fait signe. \"Hé, regardez ça !\" Plus loin, un groupe exhibe à Alexandre le marchand un œuf aux teintes brunes et beiges, que vous n'arrivez pas à identifier.
Alexandre fronce les sourcils. \"Je ne me souviens pas avoir proposé cet œuf à la vente. D'où peut-il bien...\" Une petite patte lui coupe la parole.
\"D'inde-nous tout ton argent, marchand !\" couine une petite voix machiavélique.
\"Oh non, l’œuf était un hameçon !\" s'exclame @mewrose. \"Ces brutes avides forment le gang des cochons d'Inde ! Ils ne font jamais leurs Quotidiennes. Du coup, ils passent leur temps à voler de l'or pour s'acheter des potions de santé !\"
\"Dévaliser le marché ?\", dit @emmavig. \"Pas si nous sommes là !\" Sans plus attendre, vous vous lancez au secours d'Alexandre.",
"questGuineaPigCompletion": "\"On se rend !\" Le boss du gang des cochons d'Inde lève les pattes en l'air, la tête basse et duveteuse. De sous son chapeau tombe un papier, une liste, que @snazzyorange ramasse aussitôt. Vous l'inspectez et dites \"Attendez une minute... Pas étonnant que vous perdiez de la santé ! Vous vous imposez beaucoup trop de Quotidiennes. Ce ne sont pas des potions de santé dont vous avez besoin... mais d'une meilleure organisation.\"
\"Vraiment ?\" couine le chef du gang des cochons d'Inde. \"Cela nous a poussé à voler tellement de gens ! Veuillez accepter nos œufs, comme geste d'excuse pour nos méthodes véreuses.\"",
@@ -469,11 +469,11 @@
"questMayhemMistiflying1Completion": "Un dernier crâne chute du ciel, avec coincé dans la mâchoire tout un ensemble de tuniques arc-en-ciel... mais le vent n'a pas faibli du tout. Quelque chose d'autre se trame par ici. Et où est passé ce satané Fou d'avril ? Vous prenez les tuniques et descendez en piqué, droit sur la ville.",
"questMayhemMistiflying1Boss": "Nuée de crânes aériens",
"questMayhemMistiflying1RageTitle": "Régénération de la nuée",
- "questMayhemMistiflying1RageDescription": "Régénération de la nuée : cette barre se remplit quand vous n'effectuez pas vos Quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
+ "questMayhemMistiflying1RageDescription": "Régénération de la nuée : cette barre se remplit quand vous n'effectuez pas vos quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
"questMayhemMistiflying1RageEffect": "`La nuée utilise RÉGÉNÉRATION DE LA NUÉE !`\n\nEncouragés par cette victoire, d'autres crânes apparaissent des nuages, et tournoient de plus belle !",
"questMayhemMistiflying1DropSkeletonPotion": "Potion d'éclosion squelette",
"questMayhemMistiflying1DropWhitePotion": "Potion d'éclosion des neiges",
- "questMayhemMistiflying1DropArmor": "Tunique du malicieux messager arc-en-ciel (Armure)",
+ "questMayhemMistiflying1DropArmor": "Tunique du malicieux messager arc-en-ciel (armure)",
"questMayhemMistiflying2Text": "Du rififi à Mistivolant, 2e partie : quand le vent se lève",
"questMayhemMistiflying2Notes": "Mistivolant penche et ballotte dangereusement, car les abeilles féeriques qui maintiennent la cité en l'air sont secouées par le coup de vent. Votre quête désespérée du Fou d'avril s'achève quand vous le trouvez installé dans une maison de campagne, tout guilleret, en train de jouer aux cartes face à un crâne ligoté et hargneux.
@Katy133 donne de la voix pour couvrir les sifflements du vent : \"Qu'est-ce qui provoque cette tempête ? Nous avons vaincu les crânes, mais ça empire !\"
\"Oui c'est ennuyeux\", valide le Fou d'avril. \"Soyez gentils et n'en touchez pas un mot à Dame Givre. Elle menace tout le temps de mettre fin à notre petite idylle au prétexte que je suis 'catastrophiquement irresponsable', et je pense qu'elle pourrait mal interpréter les événements actuels.\" Il mélange les cartes. \"Peut-être devriez-vous suivre les Mistiphalènes ? Elles sont immatérielles ; le vent ne leur fait donc rien. Et elles ont tendance à se ruer sur les menaces.\" Il pointe du menton vers la fenêtre, derrière laquelle plusieurs Mistiphalènes – les emblèmes protecteurs de la cité – battent de l'aile vers l'est. \"Maintenant laissez-moi me concentrer. Mon adversaire est impassible, c'est difficile de lire sur son visage.\"",
"questMayhemMistiflying2Completion": "Vous remontez la piste des Mistiphalènes jusqu'aux lieux d'une tornade, bien trop puissante pour que vous puissiez explorer son cœur.
\"Cela devrait vous aider\", dit une voix tout près de votre oreille, et vous en tombez presque de votre monture. Le Fou d'avril est, on ne sait trop comment, assis derrière vous sur la selle. \"J'ai ouï dire que ces capuches de messager émettent une aura qui protège des contrariétés météorologiques. Pratique pour ne pas égarer de courrier, quand vous voletez autour des quartiers. Vous devriez peut-être les enfiler ?\"",
@@ -511,43 +511,51 @@
"questGroupLostMasterclasser": "Le mystère des maîtres des classes",
"questUnlockLostMasterclasser": "Pour débloquer cette quête, complétez la dernière quête des séries suivantes : 'Le désespoir de Dilatoire', 'Du rififi à Mistivolant', 'Calamité de Stoïcalme' et 'Terreur dans le bois des Tâches'.",
"questLostMasterclasser1Text": "Le mystère des maîtres des classes, 1re partie : lisez entre les lignes",
- "questLostMasterclasser1Notes": "@beffymaroo et @Lemoness vous convoquent au Habithéon, un endroit inhabituel... et vous y trouvez les quatre maîtres des classes d'Habitica, qui vous attendaient dans la pâle lumière de l'aube. Même la Joyeuse faucheuse fait grise mine.
\"Oh ! Vous êtes là, dit le Fou d'avril. Bon, nous n'aurions pas osé vous réveiller si ce n'était pour une véritable –\"
\"Aidez-nous à enquêter sur cette flambée de gens possédés,\" l'interrompt Dame Givre. \"Toutes les victimes accusent une personne nommée Tzina.\"
Le Fou d'avril est clairement choqué d'un tel résumé. \"Et mon discours, alors ?\" siffle-t-il. \"J'avais prévu de la fumée et des orages !\"
\"Nous sommes pressés, murmure-t-elle en retour, et mes mammouths ne sont pas encore remis de tes séances de répétitions !\"
\"Je crains que la très estimée maîtresse des guerriers n'ait raison\", dit le roi Manta. \"Le temps presse... nous aiderez-vous ?\"
Vous hochez la tête et le voici qui lève les mains au ciel, ouvrant un portail à destination d'une pièce immergée. \"Nagez avec moi jusqu'à Dilatoire, et nous ratisserons ma bibliothèque à la recherche d'indices.\" Voyant votre mine confuse, il ajoute : \"Pas d'inquiétude, le papier était enchanté bien avant que Dilatoire ne coule. Aucun des livres n'est trempé... alors que les mammouths de Dame Givre...\" et il vous fait un clin d’œil.
\"J'ai tout entendu, Manta.\"
Tandis que vous plongez dans l'eau à la suite du maître des mages, vos jambes se transforment en nageoires. Et bien que votre corps soit capable de flotter, votre cœur se plombe en contemplant les milliers d'étagères. Il est l'heure de se mettre au travail...",
- "questLostMasterclasser1Completion": "After hours of poring through volumes, you still haven’t found any useful information.
“It seems impossible that there isn’t even the tiniest reference to anything relevant,” says head librarian @Tuqjoi, and their assistant @stefalupagus nods in frustration.
King Manta’s eyes narrow. “Not impossible…” he says. “Intentional.” For a moment, the water glows around his hands, and several of the books shudder. “Something is obscuring information,” he says. “Not just a static spell, but something with a will of its own. Something… alive.” He swims up from the table. “The Joyful Reaper needs to hear about this. Let’s pack a meal for the road.”",
+ "questLostMasterclasser1Notes": "@beffymaroo et @Lemoness vous convoquent au Habithéon, un endroit inhabituel... et vous y trouvez les quatre maîtres des classes d'Habitica, qui vous attendaient dans la pâle lumière de l'aube. Même la Joyeuse faucheuse fait grise mine.
\"Oh ! Vous êtes là, dit le Fou d'avril. Bon, nous n'aurions pas osé vous réveiller si ce n'était pour une véritable –\"
\"Aidez-nous à enquêter sur cette flambée de gens possédés,\" l'interrompt Dame Givre. \"Toutes les victimes accusent une personne nommée Tzina.\"
Le Fou d'avril est clairement choqué d'un tel résumé. \"Et mon discours, alors ?\" siffle-t-il. \"J'avais prévu de la fumée et des orages !\"
\"Nous sommes pressés, murmure-t-elle en retour, et mes mammouths ne sont toujours pas remis de tes séances d'entraînement !\"
\"Je crains que la très estimée maîtresse des guerriers n'ait raison\", dit le roi Manta. \"Le temps presse... nous aiderez-vous ?\"
Vous hochez la tête et le voici qui lève les mains au ciel, ouvrant un portail à destination d'une pièce immergée. \"Nagez avec moi jusqu'à Dilatoire, et nous ratisserons ma bibliothèque à la recherche d'indices.\" Voyant votre mine confuse, il ajoute : \"Pas d'inquiétude, le papier était enchanté bien avant que Dilatoire ne coule. Aucun des livres n'est trempé... alors que les mammouths de Dame Givre...\" et il vous fait un clin d’œil.
\"J'ai tout entendu, Manta.\"
Tandis que vous plongez dans l'eau à la suite du maître des mages, vos jambes se transforment en nageoires. Et bien que votre corps soit capable de flotter, votre cœur se plombe en contemplant les milliers d'étagères. Il est l'heure de se mettre au travail...",
+ "questLostMasterclasser1Completion": "Après des heures passées à examiner les ouvrages, vous n'avez toujours pas trouvé une seule information.
\"Cela semble impossible qu'il n'existe pas la moindre petite référence à quelque chose de pertinent\", s'exclame le responsable-libraire @Tuqjoi, et l'assistant @stefalupagus hoche la tête de frustration.
Les yeux du roi Manta se plissent. \"Ce n'est pas impossible...\", murmure-t-il. \"C'est intentionnel.\" Pendant un instant, l'eau brille autour de ses mains, et quelques livres se mettent à frissonner. \"Quelque chose nous dissimule des données\", déclare-t-il. \"Pas juste un sortilège statique, mais quelque chose avec une pensée propre. Quelque chose... de vivant.\" Il nage au-dessus de la table. \"La Joyeuse faucheuse doit être prévenue. Préparons un casse-croûte pour la route.\"",
"questLostMasterclasser1CollectAncientTomes": "Tomes anciens",
"questLostMasterclasser1CollectForbiddenTomes": "Tomes interdits",
"questLostMasterclasser1CollectHiddenTomes": "Tomes cachés",
- "questLostMasterclasser2Text": "Le mystère des maîtres des classes, 2e partie : rassembler l'é-Vitement",
- "questLostMasterclasser2Notes": "The Joyful Reaper drums her bony fingers on some of the books that you brought. “Oh, dear,” the Master of Healers says. “There is a malevolent life essence at work. I might have guessed, considering the attacks by reanimated skulls during each incident.” Her assistant @tricksy.fox brings in a chest, and you are startled to see the contents that @beffymaroo unloads: the very same objects once used by this mysterious Tzina to possess people.
“I’m going to use resonant healing magic to try to make this creature manifest,” the Joyful Reaper says, reminding you that the skeleton is a somewhat unconventional Healer. “You’ll need to read the revealed information quickly, in case it breaks loose.”
As she concentrates, a twisting mist begins to siphon from the books and twine around the objects. Quickly, you flip through the pages, trying to read the new lines of text that are writhing into view. You catch only a few snippets: “Sands of the Timewastes” — “the Great Disaster” —“split into four”— “permanently corrupted”— before a single name catches your eye: Zinnya.
Abruptly, the pages wrench free from your fingers and shred themselves as a howling creature explodes into being, coalescing around the possessed objects.
“It’s an a’Voidant!” the Joyful Reaper shouts, throwing up a protection spell. “They’re ancient creatures of confusion and obscurity. If this Tzina can control one, she must have a frightening command over life magic. Quickly, attack it before it escapes back into the books!”
",
- "questLostMasterclasser2Completion": "The a’Voidant succumbs at last, and you share the snippets that you read.
“None of those references sound familiar, even for someone as old as I,” the Joyful Reaper says. “Except… the Timewastes are a distant desert at the most hostile edge of Habitica. Portals often fail nearby, but swift mounts could get you there in no time. Lady Glaciate will be glad to assist.” Her voice grows amused. “Which means that the enamored Master of Rogues will undoubtedly tag along.” She hands you the glimmering mask. “Perhaps you should try to track the lingering magic in these items to its source. I’ll go harvest some sustenance for your journey.”",
- "questLostMasterclasser2Boss": "L'é-Vitement",
- "questLostMasterclasser2DropEyewear": "Masque d'éther (Lunettes)",
+ "questLostMasterclasser2Text": "Le mystère des maîtres des classes, 2e partie : rassembler l'e'Vitement",
+ "questLostMasterclasser2Notes": "La Joyeuse faucheuse tape de ses doigts osseux sur quelques-uns des livres que vous avez rapportés. \"Hé bien...\" lance la maîtresse des guérisseurs. \"Il y a là-derrière une essence de vie malveillante. J'aurais pu m'en douter, puisque à chaque incident, des crânes réanimés passaient à l'attaque.\" Son assistant @tricksy.fox apporte alors un coffre, et vous vous étonnez de son contenu lorsque @beffymaroo l'en extirpe : tous les objets auparavant utilisés par cette mystérieuse Tzina pour posséder des gens.
\"Je vais me servir d'une magie de soin résonante pour tenter de forcer cette créature à se manifester\", dit la Joyeuse faucheuse, vous rappelant ainsi que ce squelette est un guérisseur peu conventionnel. \"Il va falloir que vous lisiez vite, car il se peut que cette chose se libère des livres.\"
La voici qui se concentre, et une brume tournoyante s'échappe des bouquins, circulant autour des objets sortis du coffre. Rapidement, vous passez de page en page, tentant d'identifier les lignes qui n'étaient pas là avant. Vous en extirpez de courts extraits : \"sables des Temperdus\" – \"Le Grand désastre\" – \"séparée en quatre\" – \"corrompu à jamais\" – et puis un nom se détache et vous frappe : Zinnya.
Soudain, les pages s'arrachent de vos doigts et se réduisent en cendres, tandis qu'une créature se met à brailler, sortant des brumes qui s'échappaient des objets possédés.
\"C'est un e'Vitement !\" crie la Joyeuse faucheuse, tout en exécutant un sort de protection. \"Ce sont d'anciennes créatures de confusion et d'obscurité. Si cette Tzina est capable d'en contrôler un, ses compétences en magie vitale sont terrifiantes ! Vite, attaquez-le avant qu'il ne retourne se réfugier dans les manuscrits !\"
",
+ "questLostMasterclasser2Completion": "L'e'Vitement succombe enfin, et vous communiquez les passages que vous avez pu lire.
\"Rien de tout cela ne m'évoque quoi que ce soit, et pourtant je suis âgée, dit la Joyeuse faucheuse. Sauf... les sables des Temperdus, qui forment un lointain désert, dans le plus hostile recoin d'Habitica. Les portails échouent généralement à nous y transporter. Mais de vives montures doivent pouvoir vous y amener en un rien de temps. Dame Givre se fera une joie de vous aider.\" Son ton devient rigolard. \"Ce qui veut dire que l'amouraché maître des voleurs proposera de vous suivre.\" Elle vous tend le masque miroitant. \"Peut-être devriez-vous essayer de remonter la piste de la magie qui persiste dans ces objets, jusqu'à sa source. Je vais cueillir de quoi manger pour votre voyage.\"",
+ "questLostMasterclasser2Boss": "L'e'Vitement",
+ "questLostMasterclasser2DropEyewear": "Masque d'éther (lunettes)",
"questLostMasterclasser3Text": "Le mystère des maîtres des classes, 3e partie : la cité dans les sables",
- "questLostMasterclasser3Notes": "As night unfurls over the scorching sands of the Timewastes, your guides @AnnDeLune, @Kiwibot, and @Katy133 lead you forward. Some bleached pillars poke from the shadowed dunes, and as you approach them, a strange skittering sound echoes across the seemingly-abandoned expanse.
“Invisible creatures!” says the April Fool, clearly covetous. “Oho! Just imagine the possibilities. This must be the work of a truly stealthy Rogue.”
“A Rogue who could be watching us,” says Lady Glaciate, dismounting and raising her spear. “If there’s a head-on attack, try not to irritate our opponent. I don’t want a repeat of the volcano incident.”
He beams at her. “But it was one of your most resplendent rescues.”
To your surprise, Lady Glaciate turns very pink at the compliment. She hastily stomps away to examine the ruins.
“Looks like the wreck of an ancient city,” says @AnnDeLune. “I wonder what…”
Before she can finish her sentence, a portal roars open in the sky. Wasn’t that magic supposed to be nearly impossible here? The hoofbeats of the invisible animals thunder as they flee in panic, and you steady yourself against the onslaught of shrieking skulls that flood the skies.",
- "questLostMasterclasser3Completion": "The April Fool surprises the final skull with a spray of sand, and it blunders backwards into Lady Glaciate, who smashes it expertly. As you catch your breath and look up, you see a single flash of someone’s silhouette moving on the other side of the closing portal. Thinking quickly, you snatch up the amulet from the chest of previously-possessed items, and sure enough, it’s drawn towards the unseen person. Ignoring the shouts of alarm from Lady Glaciate and the April Fool, you leap through the portal just as it snaps shut, plummeting into an inky swath of nothingness.",
- "questLostMasterclasser3Boss": "Essaim de crânes vides",
+ "questLostMasterclasser3Notes": "Comme la nuit se déploie sur les sables brûlants des Temperdus, vos guides @AnnDeLune, @Kiwibot et @Katy133 vous font avancer. Quelques piliers blanchis par le soleil se détachent des dunes assombries, et tandis que vous vous approchez d'eux, un bruit étrange et bondissant résonne dans ce qui, pourtant, semble être une étendue abandonnée.
\"Des créatures invisibles !\" lance le Fou d'avril, dont l'avidité se lit sur le visage. \"Oh ! Imaginez tout ce que cela permet ! Ce ne peut être que l'œuvre d'un grand expert voleur.\"
\"Un voleur qui nous épie peut-être en ce moment même\", murmure Dame Givre, tandis qu'elle met pied à terre et qu'elle saisit sa lance. \"Si l'on nous attaque de front, essaie de ne pas provoquer notre adversaire. Je ne veux pas revivre l'incident du volcan.\"
Il lui fait un grand sourire : \"Mais il s'agissait là de l'un de tes plus brillants sauvetages !\"
À votre grande surprise, Dame Givre vire au rouge face à ce compliment. Elle s'écarte rapidement pour examiner les ruines.
\"Cela ressemble aux décombres d'une ancienne cité, dit @AnnDeLune, et je me demande bien...\"
Elle ne peut finir sa phrase qu'un portail s'ouvre à grand bruit dans le ciel. Mais ce type de magie n'était-il pas quasiment impossible à réaliser, par ici ? Les créatures invisibles, prises de panique, s'enfuient, et le son de leurs sabots provoque un immense fracas, tandis que vous tentez de garder l'équilibre face à l'assaut de crânes hurlants qui déferlent des cieux.",
+ "questLostMasterclasser3Completion": "Le Fou d'avril prend le dernier crâne par surprise en lui envoyant du sable dessus, ce qui le fait basculer en arrière et percuter Dame Givre, qui se charge de le fracasser. Pendant que vous reprenez votre souffle et levez la tête, vous pensez apercevoir la silhouette de quelqu'un, qui bouge de l'autre côté du portail, lequel est en train de se refermer. Dans l'urgence, vous arrachez l'amulette du coffret qui contenait les objets autrefois possédés, et comme vous l'imaginiez, il est aspiré en direction de cette forme fugace. Ignorant les cris d'alarme de Dame Givre et du Fou d'avril, vous bondissez à travers le portail juste avant qu'il ne se referme, dégringolant dans une sorte de bain d'encre de néant.",
+ "questLostMasterclasser3Boss": "Nuée de crânes vides",
"questLostMasterclasser3RageTitle": "Régénération de la nuée",
"questLostMasterclasser3RageDescription": "Régénération de la nuée : Cette barre se remplit quand vous n'effectuez pas vos quotidiennes. Quand elle est pleine, la nuée récupère 30% de sa santé restante !",
"questLostMasterclasser3RageEffect": "`L'essaim de crânes vides utilise RÉGÉNÉRATION DE LA NUÉE !`\n\nEncouragés par leurs victoires, de nouveaux crânes tombent des cieux en criant, renforçant l'essaim !",
- "questLostMasterclasser3DropBodyAccessory": "Amulette d'éther (Accessoire de torse)",
+ "questLostMasterclasser3DropBodyAccessory": "Amulette d'éther (accessoire de torse)",
"questLostMasterclasser3DropBasePotion": "Potion d'éclosion de base",
"questLostMasterclasser3DropGoldenPotion": "Potion d'éclosion dorée",
- "questLostMasterclasser3DropPinkPotion": "Potion d'éclosion barbe à papa rose",
+ "questLostMasterclasser3DropPinkPotion": "Potion d'éclosion rose barbe-à-papa",
"questLostMasterclasser3DropShadePotion": "Potion d'éclosion sombre",
"questLostMasterclasser3DropZombiePotion": "Potion d'éclosion zombie",
- "questLostMasterclasser4Text": "Le mystère des maîtres des classes, 4e partie : La maîtresse des classes disparue",
- "questLostMasterclasser4Notes": "You surface from the portal, but you’re still suspended in a strange, shifting netherworld. “That was bold,” says a cold voice. “I have to admit, I hadn’t planned for a direct confrontation yet.” A woman rises from the churning whirlpool of darkness. “Welcome to the Realm of Void.”
You try to fight back your rising nausea. “Are you Zinnya?” you ask.
“That old name for a young idealist,” she says, mouth twisting, and the world writhes beneath you. “No. If anything, you should call me the Anti’zinnya now, given all that I have done and undone.”
Suddenly, the portal reopens behind you, and as the four Masterclassers burst out, bolting towards you, Anti’zinnya’s eyes flash with hatred. “I see that my pathetic replacements have managed to follow you.”
You stare. “Replacements?”
“As the Master Aethermancer, I was the first Masterclasser — the only Masterclasser. These four are a mockery, each possessing only a fragment of what I once had! I commanded every spell and learned every skill. I shaped your very world to my whim — until the traitorous aether itself collapsed under the weight of my talents and my perfectly reasonable expectations. I have been trapped for millennia in this resulting void, recuperating. Imagine my disgust when I learned how my legacy had been corrupted.” She lets out a low, echoing laugh. “My plan was to destroy their domains before destroying them, but I suppose the order is irrelevant.” With a burst of uncanny strength, she charges forward, and the Realm of Void explodes into chaos.",
- "questLostMasterclasser4Completion": "Under the onslaught of your final attack, the Lost Masterclasser screams in frustration, her body flickering into translucence. The thrashing void stills around her as she slumps forward, and for a moment, she seems to change, becoming younger, calmer, with an expression of peace upon her face… but then everything melts away with scarcely a whisper, and you’re kneeling once more in the desert sand.
“It seems that we have much to learn about our own history,” King Manta says, staring at the broken ruins. “After the Master Aethermancer grew overwhelmed and lost control of her abilities, the outpouring of void must have leached the life from the entire land. Everything probably became deserts like this.”
“No wonder the ancients who founded Habitica stressed a balance of productivity and wellness,” the Joyful Reaper murmurs. “Rebuilding their world would have been a daunting task requiring considerable hard work, but they would have wanted to prevent such a catastrophe from happening again.”
“Oho, look at those formerly possessed items!” says the April Fool. Sure enough, all of them shimmer with a pale, glimmering translucence from the final burst of aether released when you laid Anti’zinnya’s spirit to rest. “What a dazzling effect. I must take notes.”
“The concentrated remnants of aether in this area probably caused these animals to go invisible, too,” says Lady Glaciate, scratching a patch of emptiness behind the ears. You feel an unseen fluffy head nudge your hand, and suspect that you’ll have to do some explaining at the Stables back home. As you look at the ruins one last time, you spot all that remains of the first Masterclasser: her shimmering cloak. Lifting it onto your shoulders, you head back to Habit City, pondering everything that you have learned.
",
+ "questLostMasterclasser4Text": "Le mystère des maîtres des classes, 4e partie : La maîtresse oubliée",
+ "questLostMasterclasser4Notes": "Vous émergez du portail, mais vous êtes toujours en suspension dans cet étrange monde changeant. \"C'était courageux,\" dit une voix froide. \"Je dois admettre que je n'avais pas déjà imaginé une confrontation directe.\" Une femme s'élève du tourbillon d'obscurité. \"Bienvenue au royaume du vide.\"
Vous essayez de retenir cette nausée qui monte en vous et vous demandez : \"Êtes-vous Zinnya ?\".
\"Cet ancien nom pour une jeune idéaliste,\" dit-elle entre ses lèvres, et le monde se tord en dessous de vous. \"Non. Vous feriez mieux de m'appeler l'Anti-zinnya maintenant, étant donné tout ce que j'ai fait et défait.\"
Soudain, le portail se rouvre derrière vous, et alors que les quatre maîtres des classes en jaillissent et foncent sur vous, les yeux d'Anti-zinnya brillent de haine. \"Je vois que mes pathétiques remplaçants sont parvenus à vous suivre\".
Vous la fixez. 'Remplaçants ?\"
\"En tant que maître de l'éther, j'étais la première maîtresse des classes — la seule maîtresse des classes. Ces quatre-là sont une farce, chacun possédant seulement un fragment de ce que j'avais par le passé ! Je connaissais chaque sort et j'avais appris chaque compétence. J'ai modelé le monde selon mes caprices — jusqu'à ce que ce traître d'éther lui-même s'effondre, sous le poids de mes talents et de mes attentes parfaitement raisonnables. J'ai été piégée dans le vide résultant, pendant des millénaires, à me régénérer. Imaginez mon dégoût lorsque j'ai appris comment mon héritage avait été corrompu.\" Elle pousse un rire léger qui fait écho. \"Mon plan était de détruire leurs domaines avant de les détruire eux-mêmes, mais je suppose que je peux y aller dans le désordre.\" Dans une explosion de force terrifiante, elle charge vers vous, et le royaume du vide se transforme en chaos.",
+ "questLostMasterclasser4Completion": "Sous l'assaut de votre dernière attaque, la Maîtresse des classes perdues hurle de frustration, son corps tremblant devient transparent. Le vide galope toujours autour d'elle alors qu'elle s'effondre, et pendant un moment, elle semble changer, devenant plus jeune, plus calme, avec une expression de paix sur son visage... mais alors tout se dissipe avec à peine un murmure, et vous êtes agenouillé(e) à nouveau dans le sable du désert.
\"Il semble que nous ayons beaucoup à apprendre sur notre propre histoire\", dit le roi Manta, regardant les ruines brisées. \"Après que le Maître Aethermancer ait été submergé et ait perdu le contrôle de ses capacités, le flot de vide a dû balayer la vie de toute la terre. Tout a dû devenir des déserts comme celui-ci.
«Pas étonnant que les anciens qui ont fondé Habitica aient mis l'accent sur l'équilibre entre la productivité et le bien-être», murmure Joyful Reaper. «Reconstruire leur monde aurait été une tâche décourageante qui exigeait beaucoup de travail, mais ils auraient voulu empêcher qu'une telle catastrophe ne se reproduise.»
«Oh, regarde les objets qui étaient possédés!», dit le poisson d'avril. Effectivement, tous miroitaient avec une translucidité pâle et scintillante de la dernière explosion d'éther libérée lorsque vous avez mis l'esprit d'Anti'zinnya au repos. \"Quel effet éblouissant. Je dois prendre des notes. \"
\" Les restes concentrés d'éther dans cette région ont probablement aussi rendu ces animaux invisibles \", dit Lady Glaciate, grattant une parcelle de vide derrière les oreilles. Vous sentez qu'une tête invisible et pelucheuse vous pousse la main, et vous pressentez que vous devrez vous expliquer aux Ecuries une fois rentré(e) à la maison... En regardant les ruines une dernière fois, vous apercevez tout ce qui reste du premier Maître de classe: sa cape scintillante. En la posant sur vos épaules, vous revenez à la Cité des Habitudes, méditant sur tout ce que vous avez appris.
",
"questLostMasterclasser4Boss": "Anti'zinnya",
"questLostMasterclasser4RageTitle": "Absorption du vide",
"questLostMasterclasser4RageDescription": "Absorption du vide : Cette jauge se remplit lorsque vous ne complétez pas vos quotidiennes. Lorsqu'elle est pleine, Anti'zinnya fera disparaître le mana de l'équipe !",
- "questLostMasterclasser4RageEffect": "`Anti'zinnya utilise ABSORPTION DU VIDE !` A travers une inversion du sort de poussée éthérée, vous sentez votre magie drainée dans les ténèbres !",
- "questLostMasterclasser4DropBackAccessory": "Cape d'éther (Accessoire dorsal)",
- "questLostMasterclasser4DropWeapon": "Cristaux d'éther (Arme à deux mains)",
+ "questLostMasterclasser4RageEffect": "`Anti'zinnya utilise ABSORPTION DU VIDE !` À travers une inversion du sort de poussée éthérée, vous sentez votre magie drainée dans les ténèbres !",
+ "questLostMasterclasser4DropBackAccessory": "Cape d'éther (accessoire dorsal)",
+ "questLostMasterclasser4DropWeapon": "Cristaux d'éther (arme à deux mains)",
"questLostMasterclasser4DropMount": "Monture d'éther invisible",
- "questYarnText": "Une laine emmêlée",
- "questYarnNotes": "C'est un jour si plaisant que vous décidez d'aller vous balader dans la campagne Tâcheraine. Alors que vous passez à côté de sa fameuse boutique de laine vous entendez un cri perçant qui disperse les oiseaux et fait se cacher les papillons. Vous courez vers la source du bruit et voyez @Arcosine se précipiter dans votre direction. Derrière lui, une créature horrifiante faite de laine, d'épingles et d'aiguilles à tricoter cliquète et claquète en se rapprochant inexorablement.
Le commerçant lui court après, et @stefalupagus attrape votre bras, le souffle court. \"On dirait que ses projets inaboutis.\" han, han \"ont changé la laine de notre boutique.\" han, han \"en une masse enchevêtrée de Taglainatelles !\"
\"Parfois la vie se met dans le passage et un projet est abandonné, devenant de plus en plus emmêlée et confus\", dit @khdarkwolf. \"La confusion peut même s'étendre à d'autres projets, jusqu'à ce qu'il y ait tellement de projets à moitié finis qu'on n'arrive plus à finir quoi que ce soit !\"
Il est temps de faire un choix : finir vos projets en retard... Ou vous en défaire pour de bon. Quoi qu'il en soit, vous allez devoir améliorer votre productivité rapidement avant que les effroyables Taiglanatelles n'étendent la confusion et la discorde au reste d'Habitica.",
- "questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
- "questYarnBoss": "The Dread Yarnghetti",
- "questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "questYarnText": "Du fil à retordre",
+ "questYarnNotes": "C'est un jour si plaisant que vous décidez d'aller vous balader dans la campagne Tâcheraine. Alors que vous passez à côté de sa fameuse boutique de laine vous entendez un cri perçant qui disperse les oiseaux et fait se cacher les papillons. Vous courez vers la source du bruit et voyez @Arcosine se précipiter dans votre direction. Derrière lui, une créature horrifiante faite de fil, d'épingles et d'aiguilles à tricoter claquette en se rapprochant inexorablement.
Les commerçants courent après le malheureux, et @stefalupagus attrape votre bras, le souffle court. \"On dirait que tous ses projets inaboutis...\" han, han \"...ont changé la laine de notre boutique...\" han, han \"...en une masse enchevêtrée de Taglainatelles !\"
\"Parfois la vie s'en mêle et un projet est abandonné, s'entortillant et s'emberlificotant\", dit @khdarkwolf. \"L'embobelinage peut même s'étendre à d'autres projets, jusqu'à ce qu'il y ait tellement de travaux à moitié finis qu'on n'arrive plus à achever quoi que ce soit !\"
Plutôt que de finir vos projets en retard... vous allez devoir vous en défaire ! Améliorez votre productivité rapidement avant que les effroyables Taglainatelles n'étendent la confusion et la discorde au reste d'Habitica.",
+ "questYarnCompletion": "Avec un faible mouvement de son appendice plein d'aiguilles et un faible rugissement, l'effroyable Taglainatelle se démêle en un paquet de pelotes de fils.
\"Prenez soin de ces pelotes\", dit @JinjooHat le marchand, en vous les tendant. \"Si vous les nourrissez et que vous en prenez soin, ils deviendront de nouveaux et excitants projets qui pourraient faire s'envoler votre cœur...\"",
+ "questYarnBoss": "L'effroyable Taglainatelle",
+ "questYarnDropYarnEgg": "Pelote (Œuf)",
+ "questYarnUnlockText": "Déverrouille l'achat d’œufs de pelote au marché",
+ "winterQuestsText": "Lot de quêtes hivernales",
+ "winterQuestsNotes": "Contient \"Trappeur Noël\", \"Trouvez l'ourson\" et \"Le gorfou glacé\". Disponible jusqu'au 31 décembre.",
+ "questPterodactylText": "Le Pterreur-dactyle",
+ "questPterodactylNotes": "Vous vous promenez le long des paisibles falaises de Stoïkalm lorsqu'un crissement maléfique déchire l'air. Vous vous tournez pour trouver une créature hideuse qui vole vers vous et êtes submergé par une terreur puissante. Alors que vous vous tournez pour fuir, @Lilith d'Alfheim vous attrape. \"Ne paniquez pas, c'est juste un Pterreur-dactyl.\"
@Procyon P acquiesce. «Ils nichent à proximité, mais ils sont attirés par l'odeur des Habitudes négatives et des Journalières non réalisées.»
«Ne vous inquiétez pas», dit @Katy133. \"Nous avons juste besoin d'être très productif pour le vaincre!\" Vous êtes remplis d'une détermination renouvelée et vous vous tournez pour faire face à votre ennemi.",
+ "questPterodactylCompletion": "Avec un dernier cri, le Pterreur-dactyl dégringole du flanc de la falaise. Vous vous précipitez pour le voir s'envoler dans les steppes lointaines. «Ouf, je suis content que ce soit fini», dis-tu. \"Moi aussi\", répond @GeraldThePixel. \"Mais regarde, il a laissé quelques oeufs pour nous.\" @Edge vous donne trois oeufs, et vous promettez de les élever dans la tranquillité, entouré par des Habitudes positives et des Journalières bleues.",
+ "questPterodactylBoss": "Pterreur-dactyle",
+ "questPterodactylDropPterodactylEgg": "Ptérodactyle (Œuf)",
+ "questPterodactylUnlockText": "Déverrouille l'achat d’œufs de ptérodactyle au marché"
}
\ No newline at end of file
diff --git a/website/common/locales/fr/rebirth.json b/website/common/locales/fr/rebirth.json
index bda17d761fb..4dba2858726 100644
--- a/website/common/locales/fr/rebirth.json
+++ b/website/common/locales/fr/rebirth.json
@@ -18,11 +18,11 @@
"rebirthAchievement100": "Vous avez commencé une nouvelle aventure ! C'est votre Renaissance <%= number %>, et le plus haut niveau que vous ayez atteint est 100 ou plus. Pour obtenir ce succès une fois de plus, commencez votre prochaine nouvelle aventure lorsque vous aurez atteint la prochaine centaine !",
"rebirthBegan": "A commencé une Nouvelle Aventure",
"rebirthText": "A débuté <%= rebirths %> Nouvelles Aventures",
- "rebirthOrb": "A utilisé un Orbe de Renaissance pour recommencer à zéro après avoir atteint le niveau <%= level %>.",
- "rebirthOrb100": "A utilisé un Orbe de Renaissance pour recommencer à zéro après avoir atteint le niveau 100 ou plus.",
- "rebirthOrbNoLevel": "A utilisé un Orbe de Renaissance pour recommencer à zéro.",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
- "rebirthName": "Orbe de Renaissance",
+ "rebirthOrb": "A utilisé un orbe de renaissance pour recommencer à zéro après avoir atteint le niveau <%= level %>.",
+ "rebirthOrb100": "A utilisé un orbe de renaissance pour recommencer à zéro après avoir atteint le niveau 100 ou plus.",
+ "rebirthOrbNoLevel": "A utilisé un orbe de renaissance pour recommencer à zéro.",
+ "rebirthPop": "Recommencez instantanément votre personnage au niveau 1 tout en conservant vos succès, vos objets, votre équipement et l'historique de vos tâches. Cela prendra effet immédiatement.",
+ "rebirthName": "Orbe de renaissance",
"reborn": "Né de nouveau, niveau maximum <%= reLevel %>",
"confirmReborn": "Confirmez-vous ?",
"rebirthComplete": "Vous avez été ressuscité !"
diff --git a/website/common/locales/fr/settings.json b/website/common/locales/fr/settings.json
index f180a4db627..bda97acfaa9 100644
--- a/website/common/locales/fr/settings.json
+++ b/website/common/locales/fr/settings.json
@@ -63,9 +63,9 @@
"newUsername": "Nouveau nom d'utilisateur",
"dangerZone": "Zone de Danger",
"resetText1": "ATTENTION ! Cette action va réinitialiser une grand partie de votre compte. Ceci est fortement déconseillé, mais certaines personnes y trouvent une utilité dans les premiers temps, après une courte utilisation de l'application.",
- "resetText2": "Vous perdrez tous vos niveaux, or et points d'expérience. Toutes vos tâches (à l'exception des tâches de défis) seront supprimées de façon permanente et vous perdrez tout l'historique associé aux tâches. Vous perdrez tout votre équipement, mais il vous sera possible de l'acheter à nouveau, y compris les équipements en édition limitée et les objets mystère d'abonné. (Vous devrez cependant être de la classe correspondante pour racheter les équipements de classe.) Vous conserverez votre classe actuelle, ainsi que vos familiers et montures. Peut-être préféreriez-vous utiliser une Orbe de renaissance, une option bien plus sûre qui vous permettra de conserver toutes vos tâches et votre équipement.",
+ "resetText2": "Vous perdrez tous vos niveaux, or et points d'expérience. Toutes vos tâches (à l'exception des tâches de défis) seront supprimées de façon permanente et vous perdrez tout l'historique associé aux tâches. Vous perdrez tout votre équipement, mais il vous sera possible de l'acheter à nouveau, y compris les équipements en édition limitée et les objets mystère d'abonné. (Vous devrez cependant être de la classe correspondante pour racheter les équipements de classe.) Vous conserverez votre classe actuelle, ainsi que vos familiers et montures. Peut-être préféreriez-vous utiliser un orbe de renaissance, une option bien plus sûre qui vous permettra de conserver toutes vos tâches et votre équipement.",
"deleteLocalAccountText": "Confirmez-vous ? Cela va supprimer votre compte Habitica définitivement et il ne pourra pas être restauré ! Vous devrez créer un nouveau compte pour ré-utiliser Habitica. Les gemmes sur votre compte ou celles dépensées ne seront pas remboursées. Si vous confirmez définitivement, tapez votre mot de passe dans le champ de texte ci-dessous.",
- "deleteSocialAccountText": "Confirmez-vous votre choix ? Cela supprimera votre compte définitivement, et il ne pourra jamais être restauré ! Vous devrez créer un nouveau compte pour réutiliser Habitica. Vos gemmes restantes ou dépensées ne seront pas remboursées. Si votre décision est prise, écrivez \"DELETE\" dans le champ ci-dessous.",
+ "deleteSocialAccountText": "Confirmez-vous votre choix ? Cela supprimera votre compte définitivement, et il ne pourra jamais être restauré ! Vous devrez créer un nouveau compte pour réutiliser Habitica. Vos gemmes restantes ou dépensées ne seront pas remboursées. Si votre décision est prise, écrivez \"<%= magicWord %>\" dans le champ ci-dessous.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copiez ceci pour un usage dans des applications tierces. Considérez toutefois votre Jeton d'API comme l'équivalent d'un mot de passe, et ne le partagez pas publiquement. Votre ID d'utilisateur peut occasionnellement vous être demandé, mais ne publiez jamais votre Jeton d'API là où d'autres peuvent le voir, y compris sur Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Abonnement Offert",
"giftedSubscriptionInfo": "<%= name %> vous a offert un abonnement de <%= months %> mois",
"giftedSubscriptionFull": "Bonjour <%= username %>, <%= sender %> vous a envoyé <%= monthCount %> mois d'abonnement !",
+ "giftedSubscriptionWinterPromo": "Bonjour <%= username %>, vous avez reçu <%= monthCount %> mois de d'abonnement en cadeau dans le cadre de notre promotion de vacances !",
"invitedParty": "Invitation dans une équipe",
"invitedGuild": "Invitation dans une guilde",
"importantAnnouncements": "Rappels de connexion pour terminer des tâches et recevoir des récompenses",
diff --git a/website/common/locales/fr/subscriber.json b/website/common/locales/fr/subscriber.json
index 3cd14031c59..4545b80cab4 100644
--- a/website/common/locales/fr/subscriber.json
+++ b/website/common/locales/fr/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Annuler l'abonnement",
"cancelSubInfoGoogle": "Veuillez vous rendre dans la section \"Mes jeux et applications\" > \"Abonnements\" du Play Store Google pour annuler votre abonnement, ou voir la date d'expiration de votre abonnement si vous l'avez déjà annulé. Cet écran ne pourra pas vous indiquer si votre abonnement a été annulé.",
"cancelSubInfoApple": "Veuillez suivre les instructions officielles d'Apple pour annuler votre abonnement, ou voir la date d'expiration de votre abonnement si vous l'avez déjà annulé. Cet écran ne pourra pas vous indiquer si votre abonnement a été annulé.",
+ "cancelSubInfoGroupPlan": "Parce que vous avez un abonnement gratuit par une offre de groupe, vous ne pouvez pas l'annuler. Il se finira lorsque vous ne ferez plus partie du groupe. Si vous êtes responsable du groupe et voulez annuler toute l'offre de groupe, vous pouvez faire ça depuis l'onglet du groupe \"Détails de paiement\".",
"canceledSubscription": "Abonnement annulé",
"cancelingSubscription": "Annulation de l'abonnement",
"adminSub": "Abonnements Administrateur",
@@ -135,7 +136,8 @@
"mysterySet201708": "Ensemble du guerrier de lave",
"mysterySet201709": "Ensemble de l'apprenti-sorcier",
"mysterySet201710": "Ensemble du diablotin diablement impérieux",
- "mysterySet201711": "Carpet Rider Set",
+ "mysterySet201711": "Ensemble du Chevaucheur de tapis",
+ "mysterySet201712": "Ensemble du bougiemancien",
"mysterySet301404": "Ensemble steampunk de base",
"mysterySet301405": "Ensemble d'accessoires steampunks",
"mysterySet301703": "Ensemble du paon steampunk",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Type de carte inconnu.",
"invalidCoupon": "Code du coupon invalide.",
"couponUsed": "Code du coupon déjà utilisé.",
- "noSudoAccess": "Vous n'avez pas d'accès sudo.",
"couponCodeRequired": "Le code du coupon est requis.",
"eventRequired": "\"req.params.event\" est requis.",
"countRequired": "\"req.query.count\" est requis.",
diff --git a/website/common/locales/fr/tasks.json b/website/common/locales/fr/tasks.json
index 4e540e2e3eb..3d3bfd1de8f 100644
--- a/website/common/locales/fr/tasks.json
+++ b/website/common/locales/fr/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Confirmer que cette quotidienne n'a pas été faite avant que les dommages ne s'appliquent",
"yesterDailiesDescription": "Si ce paramètre est activé, Habitica vous demandera, avant de calculer les dommages à appliquer à votre avatar, si vous avez intentionnellement laissé cette quotidienne comme non-faite. Cela peut vous protéger de dommages involontaires.",
"repeatDayError": "Merci de vérifier que vous avez au moins un jour de la semaine de sélectionné.",
- "searchTasks": "Rechercher dans les titres et les descriptions"
+ "searchTasks": "Rechercher dans les titres et les descriptions",
+ "sessionOutdated": "Votre session a expiré. Veuillez actualiser la page ou la synchroniser."
}
\ No newline at end of file
diff --git a/website/common/locales/he/backgrounds.json b/website/common/locales/he/backgrounds.json
index 16b2df913ce..2b1410f94a5 100644
--- a/website/common/locales/he/backgrounds.json
+++ b/website/common/locales/he/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Midnight Castle",
"backgroundMidnightCastleNotes": "Stroll by the Midnight Castle.",
"backgroundTornadoText": "טורנדו",
- "backgroundTornadoNotes": "Fly through a Tornado."
+ "backgroundTornadoNotes": "Fly through a Tornado.",
+ "backgrounds122017": "SET 43: Released December 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/he/challenge.json b/website/common/locales/he/challenge.json
index d9807eee0c5..1c018086186 100644
--- a/website/common/locales/he/challenge.json
+++ b/website/common/locales/he/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "selectMember": "Select Member",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/he/character.json b/website/common/locales/he/character.json
index e27569d528f..2d0da63906f 100644
--- a/website/common/locales/he/character.json
+++ b/website/common/locales/he/character.json
@@ -163,6 +163,7 @@
"dieText": "איבדת דרגה, את כל הזהב שלך, ופריט ציוד ראנדומאלי. קום, שחקן, ונסה שוב! השתלט על ההרגלים הרעים, היה דרוך בעשיית המטלות היומיות, והתרחק ממוות באמצעות שיקוי בריאות, במידה ותצטרך.",
"sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "לרכוש בתמורה ל <%= cost %> אבני חן?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "אין לך מספיק מאנה.",
"invalidTarget": "You can't cast a skill on that.",
"youCast": "הטלת <%= spell %>.",
diff --git a/website/common/locales/he/content.json b/website/common/locales/he/content.json
index 3e38399c242..155e731894c 100644
--- a/website/common/locales/he/content.json
+++ b/website/common/locales/he/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Yarn",
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "woolen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "מצא שיקוי הבקעה לשפוך על ביצה זו, והיא תהפוך ל<%= eggText(locale) %> <%= eggAdjective(locale) %>.",
"hatchingPotionBase": "רגיל",
"hatchingPotionWhite": "לבן",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupid",
"hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "מזוג שיקוי זה על ביצה, והיא תבקע כ: <%= potText(locale) %>.",
"premiumPotionAddlNotes": "לא ניתן לשימוש על ביצי הרפתקאות.",
"foodMeat": "בשר",
@@ -218,5 +222,6 @@
"foodCandyRed": "סוכריית קינמון",
"foodSaddleText": "אוכף",
"foodSaddleNotes": "הופך חיית מחמד לחיית רכיבה בין רגע!",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "האכל בזה את חיות המחמד שלך והן יגדלו לחיות רכיבה חסונות."
}
\ No newline at end of file
diff --git a/website/common/locales/he/contrib.json b/website/common/locales/he/contrib.json
index 0d29273a8a5..0fb42e12a54 100644
--- a/website/common/locales/he/contrib.json
+++ b/website/common/locales/he/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, את/ה אדיר/ה! זכיתם ברמת תורם <%= level %> עבור עזרתכם להאביטיקה. ראו",
"contribLink": "אילו פרסים הרווחת עבור תרומתך!",
"contribName": "תורמים",
- "contribText": "Has contributed to Habitica (code, design, pixel art, legal advice, docs, etc). Want this badge? Read more.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "קראו עוד",
"kickstartName": "Kickstarter Backer - $<%= key %> Tier",
"kickstartText": "גיבה את פרוייקט הקיקסטראטר שהתחיל את האתר.",
diff --git a/website/common/locales/he/front.json b/website/common/locales/he/front.json
index 65a2427612b..1c984cf250d 100644
--- a/website/common/locales/he/front.json
+++ b/website/common/locales/he/front.json
@@ -30,6 +30,7 @@
"companyAbout": "How It Works",
"companyBlog": "בלוג",
"devBlog": "בלוג מפתחים",
+ "companyContribute": "Contribute",
"companyDonate": "לתרומה",
"companyPrivacy": "פרטיות",
"companyTerms": "מונחים",
@@ -252,7 +253,7 @@
"missingNewPassword": "חסרה סיסמה חדשה.",
"invalidEmailDomain": "אינכם יכולים להרשם עם מיילים מהמתחמים (דומיינים) הבאים: <%= domains %>",
"wrongPassword": "סיסמה שגויה.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "כתובת מייל לא תקנית.",
"emailTaken": "כתובת המייל כבר בשימוש על ידי חשבון אחר.",
"newEmailRequired": "חסרה כתובת מייל חדשה.",
diff --git a/website/common/locales/he/gear.json b/website/common/locales/he/gear.json
index 2f894520314..349f2cc791e 100644
--- a/website/common/locales/he/gear.json
+++ b/website/common/locales/he/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "קילשון למשתאות",
"weaponMystery201411Notes": "דיקרו את אויבייכם או חפרו לתוך מאכליכם - הקילשון רב-השימושים הזה עושה הכל! לא מקנה ייתרון. נובמבר 2014, חפץ מנויים.",
"weaponMystery201502Text": "מטה מכונף ונוצץ של אהבה וגם אמת",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "שריון",
"armorCapitalized": "שריון",
"armorBase0Text": "בגדים פשוטים",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "גלימות שליח",
"armorMystery201402Notes": "מנצנצות וחזקות, לגלימות אלו כיסים רבים לנשיאת מכתבים. לא מקנות ייתרון. פברואר 2014, חפץ מנויים.",
"armorMystery201403Text": "שריון מהלך היער",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "חליפת סטימפאנק",
"armorMystery301404Notes": "נאה ונמרץ, אה! לא מקנה ייתרון. פברואר 3015, חפץ מנויים.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "ציוד ראש",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "קסדת לוחמי הקשת",
"headSpecialGaymerxNotes": "לרגל חגיגות כנס גיימר-אקס, הקסדה המיוחדת הזו מעוטרת בדוגמה בוהקת של קשת צבעונית! גיימר-אקס הוא כנס שחוגג להט״בים ומשחקים, והוא פתוח לכולם.",
"headMystery201402Text": "קסדה מכונפת",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "כובע ראש מפואר",
"headMystery301404Notes": "כובע ראש מפואר למכובד שבג׳נטלמנים! ינואר 3015, חפץ מנויים. לא מקנה ייתרון.",
"headMystery301405Text": "כובע ראש בסיסי",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "שוחט החלטות",
"shieldMystery201601Notes": "סכין זו יכולה לשמש כדי להדוף הסחות דעת. לא מקנה ייתרון. ינואר 2016, חפץ מנויים.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "This cloak has secret pockets to hide all the Gold you loot from your Tasks. Confers no benefit. June 2017 Subscriber Item.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "אביזר ראש",
"headAccessoryCapitalized": "אביזר ראש",
"accessories": "אקססוריז",
diff --git a/website/common/locales/he/generic.json b/website/common/locales/he/generic.json
index 9f6e3ea0ef5..20a20482ccd 100644
--- a/website/common/locales/he/generic.json
+++ b/website/common/locales/he/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "המושיעים של עצלניה",
"achievementDilatoryText": "סייעו להביס את הדרעקון האיום של עצלניה באירוע \"שפריץ הקיץ\" של 2014!",
"costumeContest": "מתחרה מחופש",
- "costumeContestText": "השתתף בתחרות התחפושות של הביטואין. ראו כמה מועמדויות בבלוג של הביטיקה!",
- "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- חברים מאז",
"lastLoggedIn": "- התחברו לאחרונה",
"notPorted": "התכונה הזו עוד לא יובאה מהאתר המקורי",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's Theme",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES Theme",
"audioTheme_arashiTheme": "Arashi's Theme",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "שאלו שאלה",
"reportBug": "דיווח על תקלה",
"HabiticaWiki": "הוויקי של האביטיקה",
diff --git a/website/common/locales/he/groups.json b/website/common/locales/he/groups.json
index 9653392c905..57d1434ebf7 100644
--- a/website/common/locales/he/groups.json
+++ b/website/common/locales/he/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "הודעה אופציונלית",
"yesRemove": "כן, הסר אותם",
"foreverAlone": "אינכם יכולים לתמוך בהודעות של עצמכם. אל תהיו כאלו.",
- "sortLevel": "מיון לפי רמה",
- "sortRandom": "סידור אקראי",
- "sortPets": "מיון לפי מספר חיות מחמד",
- "sortName": "מיון לפי שם דמות",
- "sortBackgrounds": "מיון לפי רקע",
- "sortHabitrpgJoined": "מיון לפי תאריך הצטרפות",
- "sortHabitrpgLastLoggedIn": "מיון לפי זמן ההתחברות האחרון",
- "ascendingSort": "מיון בסדר עולה",
- "descendingSort": "מיון בסדר יורד",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "צור גילדה בתמורה ל4 אבני חן?",
"leaveGroupCha": "עזבו את אתגרי הגילדה וגם...",
"confirm": "אישור",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "אין לך הרשאה למחוק את ההודעה הזאת!",
"onlyGroupLeaderCanEditTasks": "Not authorized to manage tasks!",
"onlyGroupTasksCanBeAssigned": "Only group tasks can be assigned",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Your chat privileges have been revoked.",
"newChatMessagePlainNotification": "הודעה חדשה ב<%= groupName %> מ<%= authorName %>. לחצו כאן כדי לפתוח את דף השיחה!",
"newChatMessageTitle": "הודעה חדשה ב<%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancel Group Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Canceled Group Plan",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/he/limited.json b/website/common/locales/he/limited.json
index 8ee2385a16a..5884b6ec2ca 100644
--- a/website/common/locales/he/limited.json
+++ b/website/common/locales/he/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndApril": "April 19",
"dateEndMay": "May 17",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/he/loadingscreentips.json b/website/common/locales/he/loadingscreentips.json
index d39b174310c..4a58551321c 100644
--- a/website/common/locales/he/loadingscreentips.json
+++ b/website/common/locales/he/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "טיפ #<%= tipNumber %>",
"tip1": "סמנו משימות כשאתם בדרכים באמצעות אפליקציות המובייל של האביטיקה.",
- "tip2": "הגיעו לרמה 100 כדי להשיג את כדור הלידה מחדש בחינם ולהתחיל מסע חדש!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "השתמשו באימוג'י על מנת להבדיל בין המשימות שלכם במהירות.",
"tip4": "השתמשו בסימן ה # לפני שם של משימה כדי להפוך אותו לממש גדול!",
- "tip5": "כדאי להשתמש ביכולות המעניקות בונוסים בבוקר כדי שישפיעו לזמן רב יותר.",
- "tip6": "עברו מחדש על המשימות שלכם מדי פעם כדי לוודא שהן עדכניות!",
- "tip7": "כמה רקעים מתחברים באופן מושלם אם כמה חברי חבורה משתמשים באותו הרקע. למשל: אגם לצד הר, פאגודה, וגבעות מתגלגלות.",
- "tip8": "שלחו למישהו הודעה פרטית על ידי לחיצה על המעטפה ליד השם שלהם בצ'אט!",
- "tip9": "בקרו בגילדת מובילי החבורות ויוצרי האתגרים לעצות בנוגע להתחלה של גילדה.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "אתם יכולים לזכות באבני-חן על ידי השתתפות באתגרים. אתגרים חדשים נוספים מדי יום!",
- "tip11": "אם אתם נהנים להלביש את הדמות שלכם, שימו לב לגילדת מסיבת התחפושות.",
- "tip12": "הצטרפו לגילדת ״האתגר... התקבל״ לסדרת אתגרים אקראיים.",
- "tip13": "חבורות עם יותר מארבעה חברים מגבירות את המחוייבות!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "אתם יכולים להוסיף כותרות או ציטוטים מעוררי השראה לרשימה שלכם בתור הרגלים ללא (+/-).",
- "tip15": "הוסיפו רשימות למשימות שלכם כדי לקבל יותר פרסים!",
- "tip16": "הביטו בכרטיסיית המידע כדי לקבל תובנות חשובות על ההתקדמות שלכם.",
- "tip17": "שימוש בתגיות יכול להפוך רשימת משימות מגושמת למאוד מסודרת!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "הרגלים שהם רק חיוביים או רק שליליים \"דוהים\" בהדרגתיות וחוזרים להיות צהובים.",
- "tip19": "הגדילו את תכונת התבונה כדי להשיג יותר נסיון בעת ביצוע משימות.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "הגדילו את תכונת התפיסה כדי למצוא יותר חפצים וזהב.",
"tip21": "הגדילו את תכונת הכוח כדי לגרום ליותר נזק לאויבים ולפגוע מכות ישירות.",
"tip22": "הגדילו את תכונת החוסן כדי להפחית את הנזק ממטלות יומיות שאינן מושלמות.",
- "tip23": "לחצו על אייקון גרף העמודות במשימות שלכם כדי לראות גרף המראה את ההתקדמות שלכם.",
- "tip24": "האביטיקה כתובה במקור פתוח! תשאלו בגילדת השאיפה לחיי אגדות אם ברצונכם לתרום.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "ארבעת נשפי הרשף העונתיים מתחילים סמוך לימי השוויון וההיפוך.",
- "tip26": "חץ לצד מספר הדרגה של מישהו אומר שהוא כרגע עם בונוס.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Did a Daily yesterday, but forgot to check it off? Don't worry! With Record Yesterday's Activity, you'll have a chance to record what you did before starting your new day.",
- "tip28": "שנו את מועד תחילת היום תחת הגדרות > אתר כדי לקבוע מתי היום שלכם מתחיל מחדש.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "השלימו את כל המטלות היומיות שלכם כדי לקבל בונוס יום מושלם שמגדיל את כל התכונות שלכם!",
"tip30": "אתם יכולים להזמין אנשים לגילדות, לא רק לחבורות.",
"tip31": "Check out the pre-made lists in the Library of Tasks and Challenges Guild for example tasks.",
- "tip32": "חלק גדול מהקוד, מעיצוב ומהכתיבה של האביטיקה נעשה על ידי תורמים בהתנדבות! כולם יכולים לעזור.",
- "tip33": "Check out The Bulletin Board guild for news about guilds, challenges, and other player-created events - and announce your own there!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/he/messages.json b/website/common/locales/he/messages.json
index d52d4550e5c..4df6aa3fd22 100644
--- a/website/common/locales/he/messages.json
+++ b/website/common/locales/he/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "מצאת את ההרפתקה \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "רכשתם את החפץ הזה בעבר, אך כעת הוא לא ברשותכם. תוכלו לרכוש אותו שוב בעמודת הפרסים בדף המשימות.",
"messageAlreadyOwnGear": "כבר יש לכם את החפץ הזה. הצטיידו בו בדף הציוד.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "כבר יש לכם את הבריאות המקסימלית.",
"messageHealthAlreadyMin": "Oh no! You have already run out of health so it's too late to buy a health potion, but don't worry - you can revive!",
"armoireEquipment": "<%= image %> מצאתם ציוד נדיר בארמואר: <%= dropText %>! מגניב!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "כבר דיווחתם על ההודעה הזו",
"messageGroupChatNotFound": "הודעה לא נמצאה!",
"messageGroupChatAdminClearFlagCount": "רק מנהל מערכת יכול לאפס את ספירת הדגלים!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageUserOperationProtected": "הנתיב `<%= operation %>` לא נשמר, כיוון שהוא מוגן.",
"messageUserOperationNotFound": "הפעולה <%= operation %> לא נמצאה",
diff --git a/website/common/locales/he/npc.json b/website/common/locales/he/npc.json
index 6d9e9028be4..ddb4beaf91f 100644
--- a/website/common/locales/he/npc.json
+++ b/website/common/locales/he/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 אבני חן",
"typeNotSellable": "הסוג אינו ניתן למכירה. חייב להיות אחד מהבאים: <%= acceptedTypes %>",
"userItemsKeyNotFound": "מפתח לא נמצא ברשותך",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "שורת הנתיב נדרשת",
"unlocked": "חפצים שוחררו",
"alreadyUnlocked": "סט מלא כבר נפתח.",
diff --git a/website/common/locales/he/quests.json b/website/common/locales/he/quests.json
index e1ce36db4d9..ecffaafe774 100644
--- a/website/common/locales/he/quests.json
+++ b/website/common/locales/he/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "התחל",
- "bossHP": "בריאות האויב",
+ "bossHP": "Boss HP",
"bossStrength": "עוצמת האויב",
"rage": "זעם",
"collect": "לאסוף",
@@ -78,6 +78,7 @@
"mustLvlQuest": "עליכם להיות בדרגה <%= level %> כדי לקנות את ההרפתקה הזו!",
"mustInviteFriend": "כדי לזכות בהרפתקה הזו, הזמינו חברים לחבורה שלכם. להזמין מישהו עכשיו?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "האם אתם בטוחים שברצונכם לבטל את ההרפתקה? כל ההסכמות להשתתפות יאבדו, ובעלי ההרפתקה ישמרו בעלות על המגילה.",
"sureAbort": "האם אתם בטוחים שברצונכם לבטל את ההרפתקה הזו? היא תבוטל עבור כל החבורה שלכם, וההתקדמות שלכם תאבד. המגילה תוחזר לבעלי ההרפתקה.",
"doubleSureAbort": "האם אתם באמת באמת בטוחים? כל החבורה שלכם עלולה לשנוא אתכם לנצח!",
diff --git a/website/common/locales/he/questscontent.json b/website/common/locales/he/questscontent.json
index 24d362110c3..e818b16c52d 100644
--- a/website/common/locales/he/questscontent.json
+++ b/website/common/locales/he/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "ארמדיל (ביצה)",
"questArmadilloUnlockText": "משחרר ביצי ארמדיל לרכישה בשוק",
"questCowText": "The Mootant Cow",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Mootant Cow",
"questCowDropCowEgg": "פרה (ביצה)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/he/settings.json b/website/common/locales/he/settings.json
index 84d1b9826f9..f3b8376765d 100644
--- a/website/common/locales/he/settings.json
+++ b/website/common/locales/he/settings.json
@@ -65,7 +65,7 @@
"resetText1": "אזהרה! פעולה זו תמחק חלקים רבים מהמשתמש שלכם. זה ממש לא מומלץ, כי תאבדו מידע היסטורי, השימושי למעקב אחר ההתקדמות שלכם לאורך זמן, אם כי, ישנם אנשים שהדבר שימושי עבורם אחרי שהם משחקים בהאביטיקה מזה זמן.",
"resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "האם אתם בטוחים? פעולה זו תמחק את החשבון שלכם לצמיתות, ולא ניתן יהיה לשחזרו! עליכה יהיה ליצור חשבון חדש על מנת להשתמש בHabitica שוב. לא יתקבל החזר כספי עבור אבני-חן. אם אתם בטוחים לחלוטין, הקלידו את הסיסמה שלכם בתיבת הטקסט.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "ממשק",
"APIv3": "API גרסה 3",
"APIText": "העתיקו את השדות הללו לשימוש באפליקציות חיצוניות. עם זאת, חשבו על אסימון הממשק שלכם כמו על סיסמא, ואל תחלקו אותו בציבור. ייתכן שיבקשו מכם את זהות המשתמש שלכם במקום ציבורי, אבל לעולם לא את אסימון הממשק. כולל ב-github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "מנוי שניתן במתנה",
"giftedSubscriptionInfo": "<%= name %> gifted you a <%= months %> month subscription",
"giftedSubscriptionFull": "Hello <%= username %>, <%= sender %> has sent you <%= monthCount %> months of subscription!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "הוזמנת לחבורה",
"invitedGuild": "הוזמנת לגילדה",
"importantAnnouncements": "Reminders to check in to complete tasks and receive prizes",
diff --git a/website/common/locales/he/subscriber.json b/website/common/locales/he/subscriber.json
index 55ea010e10b..c9449baa7f8 100644
--- a/website/common/locales/he/subscriber.json
+++ b/website/common/locales/he/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "ביטול תרומה",
"cancelSubInfoGoogle": "Please go to the \"Account\" > \"Subscriptions\" section of the Google Play Store app to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "מנויים שבוטלו",
"cancelingSubscription": "ביטול מנוי",
"adminSub": "תרומת מנהלים",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "סט סטימפאנק רגיל",
"mysterySet301405": "סט סטימפאנק אקססוריז",
"mysterySet301703": "Peacock Steampunk Set",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "סוג כרטיס לא ידוע.",
"invalidCoupon": "קופון לא תקין.",
"couponUsed": "הקופון כבר נוצל.",
- "noSudoAccess": "אין לכם גישת מפעיל מערכת.",
"couponCodeRequired": "יש להשתמש בקופון.",
"eventRequired": "נדרש למלא \"req.params.event\".",
"countRequired": "נדרש למלא \"req.query.count\".",
diff --git a/website/common/locales/he/tasks.json b/website/common/locales/he/tasks.json
index db3aceb1e53..cef1dc563de 100644
--- a/website/common/locales/he/tasks.json
+++ b/website/common/locales/he/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "וודא שהמטלה היומית הזאת לא בוצעה לפני יישום הנזק",
"yesterDailiesDescription": "If this setting is applied, Habitica will ask you if you meant to leave the Daily undone before calculating and applying damage to your avatar. This can protect you against unintentional damage.",
"repeatDayError": "נא וודא/י שבחרת לפחות יום אחד בשבוע.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Search titles and descriptions...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/hu/backgrounds.json b/website/common/locales/hu/backgrounds.json
index c08ba8f2db9..9ab2cb5f50c 100644
--- a/website/common/locales/hu/backgrounds.json
+++ b/website/common/locales/hu/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Éjféli kastély",
"backgroundMidnightCastleNotes": "Sétálj el az éjféli kastély mellett.",
"backgroundTornadoText": "Tornádó",
- "backgroundTornadoNotes": "Repülj keresztül egy tornádón."
+ "backgroundTornadoNotes": "Repülj keresztül egy tornádón.",
+ "backgrounds122017": "KÉSZLET 43: Kiadva 2017 decemberében",
+ "backgroundCrosscountrySkiTrailText": "Sífutúpálya",
+ "backgroundCrosscountrySkiTrailNotes": "Suhanj végig egy sífutópályán.",
+ "backgroundStarryWinterNightText": "Csillagos téli éjszaka",
+ "backgroundStarryWinterNightNotes": "Csodáld a csillagos téli éjszakát.",
+ "backgroundToymakersWorkshopText": "A játékkészítő műhelye",
+ "backgroundToymakersWorkshopNotes": "Csodáld meg a játékkészítő műhelyét.",
+ "backgrounds012018": "KÉSZLET 44: Kiadva 2018 januárjában",
+ "backgroundAuroraText": "Sarki fény",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Szán",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Jeges pusztaság",
+ "backgroundFlyingOverIcySteppesNotes": "Repülj át a jeges pusztaság felett."
}
\ No newline at end of file
diff --git a/website/common/locales/hu/challenge.json b/website/common/locales/hu/challenge.json
index ddc7c75376d..4b27d71758c 100644
--- a/website/common/locales/hu/challenge.json
+++ b/website/common/locales/hu/challenge.json
@@ -88,7 +88,7 @@
"userAlreadyInChallenge": "A felhasználó már részt vesz ebben a kihívásban.",
"cantOnlyUnlinkChalTask": "Csak a érvénytelen, kihívásokhoz kapcsolódó feladatokat lehet törölni.",
"shortNameTooShort": "Egy címke nevének legalább 3 betűből kell állnia.",
- "joinedChallenge": "Csatlakozotál egy kihíváshoz",
+ "joinedChallenge": "Csatlakoztál egy kihíváshoz",
"joinedChallengeText": "Ez a felhasználó próbára tette magát azzal, hogy csatlakozott egy kihíváshoz!",
"myChallenges": "Saját kihívásaim",
"findChallenges": "Kihívások böngészése",
@@ -127,5 +127,7 @@
"locationRequired": "Kihívás helyének kiválasztása szükséges ('Hozzáadás')",
"categoiresRequired": "Egy vagy több katergória kiválasztás kötelező",
"viewProgressOf": "Haladás megtekintése",
- "selectMember": "Tag kiválasztása"
+ "selectMember": "Tag kiválasztása",
+ "confirmKeepChallengeTasks": "Meg akarod tartani a kihíváshoz tartozó feladatokat?",
+ "selectParticipant": "Válassz ki egy résztvevőt"
}
\ No newline at end of file
diff --git a/website/common/locales/hu/character.json b/website/common/locales/hu/character.json
index d51844e1cdb..00a8d5fe04a 100644
--- a/website/common/locales/hu/character.json
+++ b/website/common/locales/hu/character.json
@@ -163,6 +163,7 @@
"dieText": "Elvesztettél egy szintet, minden aranyad és egy véletlenszerű tárgyat. Kelj fel, kalandor és próbálkozz újra! Zabolázd meg azokat a fránya rossz szokásokat, figyelj a napi feladatokra és tartsd magadtól távol a halált egy gyógyitallal!",
"sureReset": "Biztos vagy benne? Ezzel visszaállítod a kasztodat és a kiosztott pontjaidat (mindet visszakapod, hogy újra kioszthasd őket) a kiindulási állapotra. Ez 3 drágakőbe kerül.",
"purchaseFor": "Megveszed <%= cost %> drágakőért?",
+ "purchaseForHourglasses": "Megveszed <%= cost %> homokóráért?",
"notEnoughMana": "Nincs elég mana.",
"invalidTarget": "Erre nem varázsolhatsz.",
"youCast": "Egy <%= spell %>-t varázsoltál.",
diff --git a/website/common/locales/hu/content.json b/website/common/locales/hu/content.json
index c488bd5ea74..04b67811c9d 100644
--- a/website/common/locales/hu/content.json
+++ b/website/common/locales/hu/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Fonal",
"questEggYarnMountText": "Repülő szőnyeg",
"questEggYarnAdjective": "gyapjú",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Találj egy keltetőfőzetet ehez a tojáshoz, hogy kikeljen belőle egy <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Alap",
"hatchingPotionWhite": "Fehér",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Kupidó",
"hatchingPotionShimmer": "Vibráló",
"hatchingPotionFairy": "Tündér",
+ "hatchingPotionStarryNight": "Csillagos éjszaka",
"hatchingPotionNotes": "Öntsd ezt egy tojásra, és egy <%= potText(locale) %> háziállat fog belőle kikelni.",
"premiumPotionAddlNotes": "Nem használható küldetésben szerzett tojásokhoz.",
"foodMeat": "Hús",
@@ -218,5 +222,6 @@
"foodCandyRed": "Fahéjas cukorka",
"foodSaddleText": "Nyereg",
"foodSaddleNotes": "Azonnal hátassá változtatja egy háziállatodat.",
+ "foodSaddleSellWarningNote": "Hey! Ez aztán egy igazán hasznos tárgy! Tudod hogyan kell használni a nyerget a háziállataiddal?",
"foodNotes": "Etesd meg ezt egy háziállattal, hogy életerős hátassá váljon."
}
\ No newline at end of file
diff --git a/website/common/locales/hu/contrib.json b/website/common/locales/hu/contrib.json
index f908fe5af43..8d75ee0639b 100644
--- a/website/common/locales/hu/contrib.json
+++ b/website/common/locales/hu/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "Király vagy, <%= name %>! Mostantól te egy <%= level %> szintű közreműködő vagy, amiért segítetted a Habitica-t. Nézd meg",
"contribLink": "milyen díjakat szereztél a közreműködésedért!",
"contribName": "Közreműködő",
- "contribText": "Hozzájárult a Habiticához (kóddal, tervezéssel, grafikával, jogi tanácsadással, dokumentációval, stb.-vel) Szeretnéd ezt a jelvényt? Olvass tovább.",
+ "contribText": "Hozzájárult a Habiticához kóddal, grafikával, zenével, szöveggel, vagy más dologgal. Hogy többet megtudj erről, csatlakozz az \"Aspiring Legends Guild\" nevű céhhez!",
"readMore": "Tovább",
"kickstartName": "Kickstarter Támogató - $<%= key %> Szint",
"kickstartText": "Támogatta a Kickstarter projektet!",
diff --git a/website/common/locales/hu/front.json b/website/common/locales/hu/front.json
index 585783e733d..ee6d81603be 100644
--- a/website/common/locales/hu/front.json
+++ b/website/common/locales/hu/front.json
@@ -30,6 +30,7 @@
"companyAbout": "Így működik",
"companyBlog": "Blog",
"devBlog": "Fejlesztői blog",
+ "companyContribute": "Hozzájárulás",
"companyDonate": "Adományozás",
"companyPrivacy": "Adatvédelem",
"companyTerms": "Feltételek",
@@ -252,7 +253,7 @@
"missingNewPassword": "Hiányzó új jelszó.",
"invalidEmailDomain": "Nem regisztrálhatsz olyan e-mail domainnel mint: <%= domains %>",
"wrongPassword": "Hibás jelszó.",
- "incorrectDeletePhrase": "A fiókod törléséhez gépeld be a 'DELETE' szót nagybetűket használva.",
+ "incorrectDeletePhrase": "A fiókod törléséhez gépeld be a '<%= magicWord %>' szót nagybetűket használva.",
"notAnEmail": "Hibás e-mail cím.",
"emailTaken": "Egy felhasználó már használja ezt az e-mail címet.",
"newEmailRequired": "Hiányzó új e-mail cím.",
diff --git a/website/common/locales/hu/gear.json b/website/common/locales/hu/gear.json
index 65f80ab457a..0769c79abf9 100644
--- a/website/common/locales/hu/gear.json
+++ b/website/common/locales/hu/gear.json
@@ -154,10 +154,10 @@
"weaponSpecialWinter2015MageNotes": "Ennek a kristálybotnak a fénye örömmel tölti meg a szíveket . Növeli az intelligenciádat <%= int %> ponttal és az észlelésedet <%= per %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
"weaponSpecialWinter2015HealerText": "Andalító jogar",
"weaponSpecialWinter2015HealerNotes": "Ez a jogar melengeti a fájó izmokat és csillapítja a stresszt. Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
- "weaponSpecialSpring2015RogueText": "Robbanó vinnyogás",
+ "weaponSpecialSpring2015RogueText": "Robbanó petárda",
"weaponSpecialSpring2015RogueNotes": "Ne hagyd, hogy a hangja becsapjon - ezek a robbanószerek igazán odavágnak. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
"weaponSpecialSpring2015WarriorText": "Csont bunkó",
- "weaponSpecialSpring2015WarriorNotes": "Egy igazi csont bunkó igazán ádáz kutyáknak ami semmiképpen sem egy rágó játék amit a szezonlis vraázslónőtől kaptál mert, ki a jó kutyus? Ki a jó kutyuuuus?? Te vagy! Te vagy a jó kutyus!!! Növeli az erődet <%= str %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "weaponSpecialSpring2015WarriorNotes": "Egy igazi csont bunkó igazán ádáz kutyáknak ami semmiképpen sem egy rágó játék amit a szezonális varázslónőtől kaptál mert, ki a jó kutyus? Ki a jó kutyuuuus?? Te vagy! Te vagy a jó kutyus!!! Növeli az erődet <%= str %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
"weaponSpecialSpring2015MageText": "A bűvész varázspálcája",
"weaponSpecialSpring2015MageNotes": "Varázsolj elő egy répát ezzel a díszes varázspálcával. Növeli az intelligenciádat <%= int %>ponttal és az észlelésedet <%= per %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
"weaponSpecialSpring2015HealerText": "Macska csörgő",
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "A varázsboton lévő világító koponya szemei mágiát és rejtélyt sugároznak. Növeli az intelligenciád <%= int %> ponttal, és az észlelésed <%= per %> ponttal. Limitált kiadású 2017-es őszi felszerelés.",
"weaponSpecialFall2017HealerText": "Ijesztő kandeláber",
"weaponSpecialFall2017HealerNotes": "Ez a fény eloszlatja a félelmet, és tudatja másokkal, hogy segíteni akarsz. Növeli az intelligenciád <%= int %> ponttal. Limitált kiadású 2017-es őszi felszerelés.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "A lakmározás vasvillája",
"weaponMystery201411Notes": "Szúrd le az ellenségeidet vagy túrj bele kedvenc eledeleidbe - ezzel a sokoldalú vasvillával mindent megtehetsz! Nem változtat a tulajdonságaidon. 2014 novemberi előfizetői tárgy.",
"weaponMystery201502Text": "A szeretet csillogó szárnyas botja és az igazságé is",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "páncél",
"armorCapitalized": "Páncél",
"armorBase0Text": "Egyszerű ruházat",
@@ -409,11 +421,11 @@
"armorSpecialSpringRogueText": "Karcsú macskajelmez",
"armorSpecialSpringRogueNotes": "Hibátlanul ápolva. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"armorSpecialSpringWarriorText": "Lóhere-acél páncél",
- "armorSpecialSpringWarriorNotes": "Puha, mint a lóhere, kemény, mint az acél. Növeli a szívósságot <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
+ "armorSpecialSpringWarriorNotes": "Puha, mint a lóhere, kemény, mint az acél. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"armorSpecialSpringMageText": "Rágcsálóköpeny",
"armorSpecialSpringMageNotes": "Az egerek aranyosak! Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
- "armorSpecialSpringHealerText": "Rojtos kölyökkutya köpeny",
- "armorSpecialSpringHealerNotes": "Meleg és símulós, de megvéd az ártalmaktól. Növeli a szívósságot <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
+ "armorSpecialSpringHealerText": "Bolyhos kutyus köpeny",
+ "armorSpecialSpringHealerNotes": "Meleg és simulós, de megvéd az ártalmaktól. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"armorSpecialSummerRogueText": "Kalóz köpeny",
"armorSpecialSummerRogueNotes": "Ez a köpeny roppant kényelmes, harrrrr! Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2014-es nyári felszerelés.",
"armorSpecialSummerWarriorText": "Kalandorköpeny",
@@ -438,7 +450,7 @@
"armorSpecialWinter2015MageNotes": "Az északi fény játékát látod ezen a köpenyen. Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
"armorSpecialWinter2015HealerText": "Korcsolyázó szerelés",
"armorSpecialWinter2015HealerNotes": "A jégkorcsolya nagyon pihentető, de nem érdemes kipróbálni enélkül a védőfelszerelés nélkül, ha netalán megtámadnak a jégtüskés sárkányok. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
- "armorSpecialSpring2015RogueText": "Vinnyogó köpeny",
+ "armorSpecialSpring2015RogueText": "Süvítő köpeny",
"armorSpecialSpring2015RogueNotes": "Szőrös, puha és semmiképpen sem gyúlékony. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
"armorSpecialSpring2015WarriorText": "Óvakodó páncél",
"armorSpecialSpring2015WarriorNotes": "Csak a legádázabb kutya lehet ilyen bolyhos. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
@@ -499,7 +511,7 @@
"armorSpecialWinter2017WarriorText": "Jéghokis páncél",
"armorSpecialWinter2017WarriorNotes": "Erősítsd a csapatszellemet ebben a meleg, bélelt páncélban. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés",
"armorSpecialWinter2017MageText": "Farkasszerű páncél",
- "armorSpecialWinter2017MageNotes": "A tél legmelegebb gyapjújából, valamint a titokzatos Téli farkas által beleszőtt varázslatokból készült, ez a páncél megvéd a hidegtől és egyben segít hogy az elméd éber maradjon. Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés",
+ "armorSpecialWinter2017MageNotes": "A tél legmelegebb gyapjújából, valamint a titokzatos téli farkas által beleszőtt varázslatokból készült, ez a páncél megvéd a hidegtől és egyben segít hogy az elméd éber maradjon. Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés.",
"armorSpecialWinter2017HealerText": "Vibráló szirom páncél",
"armorSpecialWinter2017HealerNotes": "Habár könnyednek tűnik, ez a szirompáncél elképesztő védelmező erővel bír. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés",
"armorSpecialSpring2017RogueText": "Trükkös nyuszi jelmez",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Hírvivő köpeny",
"armorMystery201402Notes": "Csillámlóak és erősek, ezeknek a köpenyeknek sok zsebük van levelek hordásához. Nem változtat a tulajdonságaidon. 2014 februári előfizetői tárgy.",
"armorMystery201403Text": "Erdőjáró páncél",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Pikkelyes, csillogó és erős! Nem változtat a tulajdonságaidon. 2017 októberi előfizetői tárgy.",
"armorMystery201711Text": "Szőnyeglovas ruha",
"armorMystery201711Notes": "Ez a kényelmes szett melegen tart miközben az égen repkedsz! Nem változtat a tulajdonságaidon. 2017 novemberi előfizetői tárgy.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunk öltözet",
"armorMystery301404Notes": "Jól vasalt és lenyűgöző, ugye! Nem változtat a tulajdonságaidon. 3015 februári előfizetői tárgy.",
"armorMystery301703Text": "Steampunk páva köntös",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "sisak",
"headgearCapitalized": "Fejfedő",
"headBase0Text": "Nincs fejfedő",
@@ -757,7 +783,7 @@
"headSpecialSpringWarriorText": "Lóhere-acél Sisak",
"headSpecialSpringWarriorNotes": "Édes mezei lóheréből hegesztett sisak, mely a leghatalmasabb csapásoktól is megvéd. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"headSpecialSpringMageText": "Svájci sajtos sapka",
- "headSpecialSpringMageNotes": "Ez a sapka sok erős mágiát tartalmaz. Probáld nem elmajszolni. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
+ "headSpecialSpringMageNotes": "Ez a sapka sok erős mágiát tartalmaz. Próbáld nem elmajszolni. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"headSpecialSpringHealerText": "Barátság koronája",
"headSpecialSpringHealerNotes": "Ez a korona lojalitást és bajtársiasságot szimbolizál. A kutya a kalandozó legjobb barátja ugyebár! Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"headSpecialSummerRogueText": "Kalóz kalap",
@@ -784,16 +810,16 @@
"headSpecialWinter2015WarriorNotes": "Gondolkodj, gondolkodj, gondolkodj olyan erősen ahogy csak tudsz. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
"headSpecialWinter2015MageText": "Sarki fényes kalap",
"headSpecialWinter2015MageNotes": "E sapka anyaga változik és világít amikor a viselője tanul. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
- "headSpecialWinter2015HealerText": "Rásimuló ülvédő",
+ "headSpecialWinter2015HealerText": "Rásimuló fülvédő",
"headSpecialWinter2015HealerNotes": "Ezek a meleg fülvédők megvédenek a hidegrázástól és a zavaró hangoktól. Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
"headSpecialSpring2015RogueText": "Tűzálló sisak",
- "headSpecialSpring2015RogueNotes": "Fire? HAH! You squeak fiercely in the face of fire! Increases Perception by <%= per %>. Limited Edition 2015 Spring Gear.",
- "headSpecialSpring2015WarriorText": "Beware Helm",
- "headSpecialSpring2015WarriorNotes": "Beware the Helm! Only a fierce doggy can wear it. Stop laughing. Increases Strength by <%= str %>. Limited Edition 2015 Spring Gear.",
- "headSpecialSpring2015MageText": "Stage Mage Hat",
- "headSpecialSpring2015MageNotes": "Mi volt előbb, a nyuszi vagy a kalap? Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2015-ös Tavaszi Felszerelés.",
- "headSpecialSpring2015HealerText": "Comforting Crown",
- "headSpecialSpring2015HealerNotes": "The pearl at the center of this crown calms and comforts those around it. Increases Intelligence by <%= int %>. Limited Edition 2015 Spring Gear.",
+ "headSpecialSpring2015RogueNotes": "Tűz? HAH! Ádázul vonyítasz ha szembekerülsz a tűzzel! Növeli az észlelésedet<%= per %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "headSpecialSpring2015WarriorText": "Óvakódó sisak",
+ "headSpecialSpring2015WarriorNotes": "Óvakodj a sisaktól! Csak a legádázabb kutyák hordhatják. Ne nevess. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "headSpecialSpring2015MageText": "Bűvészsüveg",
+ "headSpecialSpring2015MageNotes": "Mi volt előbb, a nyuszi vagy a kalap? Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "headSpecialSpring2015HealerText": "Megnyugtató korona",
+ "headSpecialSpring2015HealerNotes": "A gyöngy ennek a koronának a közepén, megnyugtatja a körülötte lévőket. Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
"headSpecialSummer2015RogueText": "Renegade Hat",
"headSpecialSummer2015RogueNotes": "This pirate hat fell overboard and has been decorated with scraps of fire coral. Increases Perception by <%= per %>. Limited Edition 2015 Summer Gear.",
"headSpecialSummer2015WarriorText": "Jeweled Oceanic Helm",
@@ -846,14 +872,14 @@
"headSpecialFall2016HealerNotes": "Woe to anyone who looks you in the eyes... Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
"headSpecialNye2016Text": "Hóbortos party süveg",
"headSpecialNye2016Notes": "Megkaptad a hóbortos őarty süveget! Viseld büszkén, miközben átlépsz az újévbe! Nem változtat a tulajdonságaidon.",
- "headSpecialWinter2017RogueText": "Frosty Helm",
- "headSpecialWinter2017RogueNotes": "Fashioned from ice crystals, this helm will help you move unnoticed through wintry landscapes. Increases Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
+ "headSpecialWinter2017RogueText": "Jeges sisak",
+ "headSpecialWinter2017RogueNotes": "Ez a sisak, melyet jégkristályokból formáztak, segít abban hogy észrevétlenül utazz téli vidékeken. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés.",
"headSpecialWinter2017WarriorText": "Jéghokis sisak",
"headSpecialWinter2017WarriorNotes": "Ezt a kemény és tartós sisakot úgy készítették hogy ellenálljon a jégnek vagy a vörös napi feladatoknak! Növeli az erődet <%= str %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés. ",
- "headSpecialWinter2017MageText": "Winter Wolf Helm",
- "headSpecialWinter2017MageNotes": "This helm, fashioned in the image of the legendary Winter Wolf, will keep your head warm and your vision sharp. Increases Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
- "headSpecialWinter2017HealerText": "Sparkling Blossom Helm",
- "headSpecialWinter2017HealerNotes": "These glittering petals focus brainpower! Increases Intelligence by <%= int %>. Limited Edition 2016-2017 Winter Gear.",
+ "headSpecialWinter2017MageText": "Téli farkas sisak",
+ "headSpecialWinter2017MageNotes": "Ez a sisak, amit a legendás téli farkas arcmására készítettek, a fejedet melegen, a látásodat tisztán tartja. Növeli az észlelésedet <%= per %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés.",
+ "headSpecialWinter2017HealerText": "Csillogó virág sisak",
+ "headSpecialWinter2017HealerNotes": "Ezek a csillogó szirmok fókuszálják az elmédet! Növeli az intelligenciádat <%= int %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés.",
"headSpecialSpring2017RogueText": "Sneaky Bunny Helm",
"headSpecialSpring2017RogueNotes": "This mask will prevent your cuteness from giving you away as you sneak up on Dailies (or clovers)! Increases Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
"headSpecialSpring2017WarriorText": "Feline Helm",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Szívárványos harcisisak",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
"headMystery201402Text": "Szárnyas sisak",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Szükséged van egy kis segítségre a feladataidban? Ennek az átlátszó medúza sisaknak van egy pár csápja ami segítő kezet tud nyújtani! Nem változtat a tulajdonságaidon. 2017 júliusi előfizetői tárgy.",
"headMystery201710Text": "Dölyfös manó sisak",
"headMystery201710Notes": "Ettől a sisaktól félelmetesnek látszol... de a távolságészlelésben nem sokat segít! Nem változtat a tulajdonságaidon. 2017 októberi előfizetői tárgy.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Elegáns cilinder",
"headMystery301404Notes": "Egy elegáns cilinder a legelőkelőbb úriembereknek! Nem változtat a tulajdonságaidon. 3015 januári előfizetői tárgy. ",
"headMystery301405Text": "Egyszerű cilinder",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "Ez a rendkívüli acélból készült sisak segít abban hogy egészséges, boldog és produktív legyél! Növeli az észlelésedet <%= per %> ponttal. Elvarázsolt láda: Anti-prokrasztináció szett (1. tárgy a 3-ból).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "balkezes fegyver",
"offhandCapitalized": "Balkezes fegyver",
"shieldBase0Text": "Nincs balkezes felszerelés",
@@ -1075,11 +1117,11 @@
"shieldSpecialSnowflakeText": "Hópehely pajzs",
"shieldSpecialSnowflakeNotes": "Mindegyik hópehely pajzs egyedi. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2013-2014-es téli felszerelés.",
"shieldSpecialSpringRogueText": "Kampós karmok",
- "shieldSpecialSpringRogueNotes": "Kiváló falmászáshoz és szőnyegaprításhoz. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
+ "shieldSpecialSpringRogueNotes": "Kiváló falmászáshoz, vagy szőnyegszaggatáshoz. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"shieldSpecialSpringWarriorText": "Tojás pajzs",
"shieldSpecialSpringWarriorNotes": "Ez a pajzs soha nem törik meg, akármilyen erősen ütöd! Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"shieldSpecialSpringHealerText": "A végső védelem csipogó labdája",
- "shieldSpecialSpringHealerNotes": "Visszataszítóan kezd csipogni, amikor megcspapják, mely elüldözi ellenségeidet. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
+ "shieldSpecialSpringHealerNotes": "Visszataszítóan kezd csipogni, amikor megcsapják, elüldözve ellenségeidet. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-es tavaszi felszerelés.",
"shieldSpecialSummerRogueText": "Kalóz vadászkés",
"shieldSpecialSummerRogueNotes": "Elég! Azok a napi feladatok hamar a tengerben kötnek majd ki! Növeli az erődet <%= str %> ponttal. Limitált kiadású 2014-es nyári felszerelés.",
"shieldSpecialSummerWarriorText": "Uszadékfa Pajzs",
@@ -1098,12 +1140,12 @@
"shieldSpecialWinter2015WarriorNotes": "Ez az édesnek tűnő pajzs valójában tápláló kocsonyás zöldségekből készült. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
"shieldSpecialWinter2015HealerText": "Andalító pajzs",
"shieldSpecialWinter2015HealerNotes": "Ez a pajzs eltéríti a fagyos szeleket. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2014-2015-ös téli felszerelés.",
- "shieldSpecialSpring2015RogueText": "Robbanó vinnyogás",
+ "shieldSpecialSpring2015RogueText": "Robbanó petárda",
"shieldSpecialSpring2015RogueNotes": "Ne hagyd, hogy a hangja becsapjon - ezek a robbanószerek igazán odavágnak. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
- "shieldSpecialSpring2015WarriorText": "Dish Discus",
- "shieldSpecialSpring2015WarriorNotes": "Hurl it at your enemies.... or just hold it, because it will fill up with yummy kibble at dinnertime. Increases Constitution by <%= con %>. Limited Edition 2015 Spring Gear.",
- "shieldSpecialSpring2015HealerText": "Patterned Pillow",
- "shieldSpecialSpring2015HealerNotes": "You can rest your head on this soft pillow, or you can wrestle it with your fearsome claws. Rawr! Increases Constitution by <%= con %>. Limited Edition 2015 Spring Gear.",
+ "shieldSpecialSpring2015WarriorText": "Sütődiszkosz",
+ "shieldSpecialSpring2015WarriorNotes": "Hajítsd az ellenségeidnek... vagy csak fogd a kezedben, mert vacsora idején megtöltődik finom eledellel. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "shieldSpecialSpring2015HealerText": "Mintás párna",
+ "shieldSpecialSpring2015HealerNotes": "Pihentesd a fejedet ezen a puha párnán, vagy küzdj meg ellene félelmetes karmaiddal. Rawr! Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2015-ös tavaszi felszerelés.",
"shieldSpecialSummer2015RogueText": "Tüzes korall",
"shieldSpecialSummer2015RogueNotes": "Ez a tűzkorall családjába tartozó korall képes arra hogy a mérgét a vízen keresztül hajtsa. Növeli az erődet <%= str %> ponttal. Limitált kiadású 2015-ös nyári felszerelés.",
"shieldSpecialSummer2015WarriorText": "Kardhal pajzs",
@@ -1144,8 +1186,8 @@
"shieldSpecialWinter2017RogueNotes": "Ez a fejsze hasznos támadáshoz, védekezéshez, valamint jégmászáshoz! Növeli az erődet <%= str %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés.",
"shieldSpecialWinter2017WarriorText": "Korong pajzs",
"shieldSpecialWinter2017WarriorNotes": "Ez a pajzs, ami egy hatalmas hokikorongból készült, még a legnagyobb ütésnek is ellenáll. Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés. ",
- "shieldSpecialWinter2017HealerText": "Sugarplum Shield",
- "shieldSpecialWinter2017HealerNotes": "This fibrous armament will help protect you from even the sourest of tasks! Increases Constitution by <%= con %>. Limited Edition 2016-2017 Winter Gear.",
+ "shieldSpecialWinter2017HealerText": "Cukorbonbon pajzs",
+ "shieldSpecialWinter2017HealerNotes": "Ez a rostokkal teli felszerelés még a legsavanyúbb feladatok ellen is védelmet nyújt! Növeli a szívósságodat <%= con %> ponttal. Limitált kiadású 2016-2017-es téli felszerelés.",
"shieldSpecialSpring2017RogueText": "Karrotana",
"shieldSpecialSpring2017RogueNotes": "These blades will make quick work of tasks, but also are handy for slicing vegetables! Yum! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
"shieldSpecialSpring2017WarriorText": "Yarn Shield",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Eskü pusztító",
"shieldMystery201601Notes": "Ez a penge arra használható hogy minden figyelemeleterlést elhárítson. Nem változtat a tulajdonságaidon. 2016 januári előfizetői tárgy.",
"shieldMystery201701Text": "Idő megállító pajzs",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Ennek a köpenynek titkos zsebei vannak, amiben elrejtheted az aranyat amit a feladataidból zsákmányolsz. Nem változtat a tulajdonságaidon. 2017 júniusi előfizetői tárgy.",
"bodyMystery201711Text": "Szőnyeglovas sál",
"bodyMystery201711Notes": "Ez a puha, kötött sál fenségesen néz ki ahogy a szélben lobog. Nem változtat a tulajdonságaidon. 2017 novemberi előfizetői tárgy.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "fej kiegészítő",
"headAccessoryCapitalized": "Fej kiegészítő",
"accessories": "Kiegészítők",
@@ -1296,16 +1346,16 @@
"headAccessorySpecialSpringRogueNotes": "Ezek a macskafülek megrándulnak, ha vész közeleg. Nem változtat a tulajdonságaidon. Limitált kiadású 2014-es tavaszi felszerelés.",
"headAccessorySpecialSpringWarriorText": "Zöld nyuszifülek",
"headAccessorySpecialSpringWarriorNotes": "Nyuszifülek, amik lelkesen jeleznek minden falat répát. Nem változtat a tulajdonságaidon. Limitált kiadású 2014-es tavaszi felszerelés.",
- "headAccessorySpecialSpringMageText": "Kék egér fülek",
+ "headAccessorySpecialSpringMageText": "Kék egérfülek",
"headAccessorySpecialSpringMageNotes": "Ezek a kerek egérfülek pihepuhák. Nem változtat a tulajdonságaidon. Limitált kiadású 2014-es tavaszi felszerelés.",
- "headAccessorySpecialSpringHealerText": "Sárga kutya fülek",
+ "headAccessorySpecialSpringHealerText": "Sárga kutyafülek",
"headAccessorySpecialSpringHealerNotes": "Lecsüngenek, de cukik. Akarsz játszani? Nem változtat a tulajdonságaidon. Limitált kiadású 2014-es tavaszi felszerelés.",
- "headAccessorySpecialSpring2015RogueText": "Sárga egér fülek",
- "headAccessorySpecialSpring2015RogueNotes": "These ears steel themselves against the sound of explosions. Confers no benefit. Limited Edition 2015 Spring Gear.",
- "headAccessorySpecialSpring2015WarriorText": "Lila kutya fülek",
- "headAccessorySpecialSpring2015WarriorNotes": "Lila színűek. Kutya fülek. Ne pazarold tovább az idődet más hülyeséggel! Nem változtat a tulajdonságaidon. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "headAccessorySpecialSpring2015RogueText": "Sárga egérfülek",
+ "headAccessorySpecialSpring2015RogueNotes": "Ezek a fülek megacálozzák magukat a robbanás hangjával szemben. Nem változtat a tulajdonságaidon. Limitált kiadású 2015-ös tavaszi felszerelés.",
+ "headAccessorySpecialSpring2015WarriorText": "Lila kutyafülek",
+ "headAccessorySpecialSpring2015WarriorNotes": "Lila színűek. Kutya fülek. Ne pazarold tovább az idődet más butaságokkal! Nem változtat a tulajdonságaidon. Limitált kiadású 2015-ös tavaszi felszerelés.",
"headAccessorySpecialSpring2015MageText": "Kék nyuszifülek",
- "headAccessorySpecialSpring2015MageNotes": "These ears listen keenly, in case somewhere a magician is revealing secrets. Confers no benefit. Limited Edition 2015 Spring Gear.",
+ "headAccessorySpecialSpring2015MageNotes": "Ezek a fülek intenzíven hallgatóznak, ha netalán valahol egy bűvész titkokat árulna el. Nem változtat a tulajdonságaidon. Limitált kiadású 2015-ös tavaszi felszerelés.",
"headAccessorySpecialSpring2015HealerText": "Zöld cicafülek",
"headAccessorySpecialSpring2015HealerNotes": "Ezektől az aranyos fülektől mindenkit a sárga irigység fog el. Nem változtat a tulajdonságaidon. Limitált kiadású 2015-ös tavaszi felszerelés.",
"headAccessorySpecialSpring2016RogueText": "Zöld kutyafülek",
@@ -1314,9 +1364,9 @@
"headAccessorySpecialSpring2016WarriorNotes": "To better hear your theme song across clamorous battlefields. Confers no benefit. Limited Edition 2016 Spring Gear.",
"headAccessorySpecialSpring2016MageText": "Sárga macskafülek",
"headAccessorySpecialSpring2016MageNotes": "These sharp ears can detect the minute hum of ambient Mana, or the muted footfalls of a Rogue. Confers no benefit. Limited Edition 2016 Spring Gear.",
- "headAccessorySpecialSpring2016HealerText": "Lila nyuszifülek",
+ "headAccessorySpecialSpring2016HealerText": "Lila nyuszi fülek",
"headAccessorySpecialSpring2016HealerNotes": "They stand like flags above the fray, letting others know where to run for help. Confers no benefit. Limited Edition 2016 Spring Gear.",
- "headAccessorySpecialSpring2017RogueText": "Piros nyuszifülek",
+ "headAccessorySpecialSpring2017RogueText": "Piros nyuszi fülek",
"headAccessorySpecialSpring2017RogueNotes": "No sounds will escape you thanks to these ears. Confers no benefit. Limited Edition 2017 Spring Gear.",
"headAccessorySpecialSpring2017WarriorText": "Kék cicafülek",
"headAccessorySpecialSpring2017WarriorNotes": "These ears can hear a bag of kitty treats open even in the din of battle! Confers no benefit. Limited Edition 2017 Spring Gear.",
diff --git a/website/common/locales/hu/generic.json b/website/common/locales/hu/generic.json
index 0ebb5ad8bd2..a2fe54df573 100644
--- a/website/common/locales/hu/generic.json
+++ b/website/common/locales/hu/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "A halogatók megváltója",
"achievementDilatoryText": "Segített legyőzni a Halogató rémületes sárkányát a 2014 nyári csobbanóbulin!",
"costumeContest": "Jelmezverseny résztvevője",
- "costumeContestText": "Részt vett a Habitoween jelmez versenyén. Nézz meg pár versenyzőt a Habitica blogon!",
- "costumeContestTextPlural": "Részt vett <%= count %> Habitoween jelmez versenyen. Nézz meg pár versenyzőt a Habitica blogon!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Regisztrált",
"lastLoggedIn": "- Utolsó bejelentkezés",
"notPorted": "Ezt a funkciót még nem helyeztük át az eredeti honlapról.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu témája",
"audioTheme_beatscribeNesTheme": "Beatscribe NES témája",
"audioTheme_arashiTheme": "Arashi témája",
+ "audioTheme_maflTheme": "MAFL témája",
+ "audioTheme_pizildenTheme": "Pizilden témája",
"askQuestion": "Tegyél fel egy kérdést",
"reportBug": "Programhiba jelentése",
"HabiticaWiki": "A Habitica Wiki",
diff --git a/website/common/locales/hu/groups.json b/website/common/locales/hu/groups.json
index 7f5a2a33228..93aa3637b40 100644
--- a/website/common/locales/hu/groups.json
+++ b/website/common/locales/hu/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Opcionális üzenet",
"yesRemove": "Igen, távolítsd el őket",
"foreverAlone": "Nem lájkolhatod a saját üzenetedet. Ne legyél az az ember.",
- "sortLevel": "Rendezés szint alapján",
- "sortRandom": "Véletlenszerű rendezés",
- "sortPets": "Rendezés a háziállatok száma alapján",
- "sortName": "Rendezés avatár név alapján",
- "sortBackgrounds": "Rendezés háttér alapján",
- "sortHabitrpgJoined": "Habitica-hez csatlakozás szerinti rendezés",
- "sortHabitrpgLastLoggedIn": "Utolsó bejelentkezés szerinti rendezés",
- "ascendingSort": "Növekvő sorrendbe rendezés",
- "descendingSort": "Csökkenő sorrendbe rendezés",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Létre hozol egy céhet 4 drágakőért?",
"leaveGroupCha": "Csoport kihívások elhagyása és...",
"confirm": "Megerősítés",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Nincs felhatalmazásod hogy töröld ezt az üzenetet!",
"onlyGroupLeaderCanEditTasks": "Not authorized to manage tasks!",
"onlyGroupTasksCanBeAssigned": "Only group tasks can be assigned",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Your chat privileges have been revoked.",
"newChatMessagePlainNotification": "Új üzenet a <%= groupName %> csapatban <%= authorName %> felhasználótól. Kattints ide a chat megnyitásához!",
"newChatMessageTitle": "Új üzenet a <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Fun Extras",
"enterprisePlansButton": "Ask about Enterprise Plans",
"enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
"familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
"createAGroup": "Create a Group",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "You are about to join a group with a canceled plan. You will NOT receive a free subscription.",
"cannotChangeLeaderWithActiveGroupPlan": "You can not change the leader while the group has an active plan.",
"leaderCannotLeaveGroupWithActiveGroup": "A leader can not leave a group while the group has an active plan",
- "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a group plan. Any months of extra subscription credit you have will be applied at the end of the group plan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancel Group Plan",
"confirmCancelGroupPlan": "Are you sure you want to cancel the group plan and remove its benefits from all members, including their free subscriptions?",
"canceledGroupPlan": "Canceled Group Plan",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/hu/limited.json b/website/common/locales/hu/limited.json
index c528c7bf985..7dc8faee86c 100644
--- a/website/common/locales/hu/limited.json
+++ b/website/common/locales/hu/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndApril": "április 19.",
"dateEndMay": "május 17.",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/hu/loadingscreentips.json b/website/common/locales/hu/loadingscreentips.json
index 2f768e786a1..47ead4d7446 100644
--- a/website/common/locales/hu/loadingscreentips.json
+++ b/website/common/locales/hu/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "<%= tipNumber %>. számú tipp",
"tip1": "Utazás közben is ellenőrizheted feladataidat a Habitica mobil alkalmazással.",
- "tip2": "Érd el a 100. szintet, hogy ingyen megkapd az Újjászületés gömbjét amivel új kalandot kezdhetsz!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Hangulatjelekkel könnyedén megkülönböztetheted a feladataidat.",
"tip4": "Használd a # jelet a feladat neve előtt, hogy megnöveld a betű méretét!",
- "tip5": "Az erősíteseket érdemes reggel varázsolni, hogy egész nap hassanak.",
- "tip6": "Időnként vizsgáld felül a feladataidat, hogy biztos naprakészek legyenek.",
- "tip7": "Néhány háttérkép tökéletesen illeszkedik egymáshoz, ha a csapattagok ugyanazt használják. Pl.: a \"Hegyi tó\", a \"Pagodák\" és a \"Lankás dombok\".",
- "tip8": "Küldhetsz személyes üzenetet bárkinek, a neve melletti borítékra kattintva.",
- "tip9": "Látogasd meg a \"Guild Leaders & Challenge Creators Guild\" nevű céhet alapítási tanácsokért.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Drágaköveket nyerhetsz ha részt veszel kihívásokban. Minden nap találhatsz új kihívásokat!",
- "tip11": "Ha kedvedet leled avatárod öltöztetésében, látogasd meg a \"Costume Carnival Guild\" nevű céhet.",
- "tip12": "Csatlakozz a “Challenge... Accepted” nevű céhhez rendszeres kihívásokért.",
- "tip13": "Ha több mint négy tag van a csapatodban, mégjobban növekszik a felelősség!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Fejléceket vagy bíztató idézeket adhatsz a szokásokhoz ha nem jelölöd be a (+/-) jeleket.",
- "tip15": "A tennivalóidhoz adott listákkal növelheted a jutalmaidat!",
- "tip16": "Fejlődésed részleteit megtudhatod az adat oldalon.",
- "tip17": "Címkék segítenek abban hogy a feladataidat könnyebben kezelhesd!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Szokások, amik csak pozitív vagy negatív jellel vannak ellátva, rendszerint \"elhalványulnak\" és visszatérnek sárga állapotba.",
- "tip19": "Növeld az intelligencia értékét, hogy feladatok teljesítésekor több tapasztalati pontot kapj.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Növeld az észlelés értékét, hogy több tárgyat és aranyat szerezz.",
"tip21": "Növeld az erő értékét, hogy több sebzést okozz a főellenségnek vagy kritikus találatot érj el.",
"tip22": "Növeld a szívósság értékét, hogy kevesebb sebzést szenvedj a félbemaradt napi feladataidtól.",
- "tip23": "Kattints a grafikon ikonra a feladataidnál, hogy lásd a fejlődésedet grafikon formájában.",
- "tip24": "Habitica nyílt forráskodú! Érdeklődj a \"Aspiring Legends Guild\" nevű céhben, hogy hogyan tudod támogatni az oldalt.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "A négy évszakos nagy gálák mindig a napfordulókhoz és napéjegyenlőségekhez közel kezdődnek.",
- "tip26": "Egy nyíl jelzi a felhasználók szintje mellett, ha valakin éppen erősítés van.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Elvégeztél tegnap egy napi feladatot, de elfelejtetted kipipálni? Semmi gond! Mielőtt új napot kezdenél, a 'Tegnapi feladatok feljegyzésének' segítségével be tudod jelölni azokat a feladatokat amiket előző nap elfelejtettél.",
- "tip28": "Egyéni napkezdést állíthatsz be a Beállítások > Honlap menüben, aminek segítségével beállíthatod hogy mikor kezdődjön újra a napod.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Végezd ell az összes napi feladatodat, hogy megkapd a tökéletes nap erősítést, ami növeli az értékeidet!",
"tip30": "Céhekbe is meghívhatsz felhasználókat, nem csak csapatokba.",
"tip31": "Előre elkészített listákért látogass el a Feladatok könyvtárába, példafeladatokért pedig a \"Challenges Guild\" nevű céhbe. ",
- "tip32": "Sok Habitica forráskód, kép és felirat önkéntesek hozzájárulása! Bárki segíthet.",
- "tip33": "Látogass el a \"The Bulletin Board\" nevű céhbe céhes hírekért, valamint kihívásokkal és más játékosok által létrehozott eseményekkel kapscsolatos hírekért - vagy tedd közzé a sajátodat!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/hu/messages.json b/website/common/locales/hu/messages.json
index 6c8b806d83b..2b2bc269678 100644
--- a/website/common/locales/hu/messages.json
+++ b/website/common/locales/hu/messages.json
@@ -21,14 +21,15 @@
"messageNotEnoughGold": "Nincs elég aranyad",
"messageTwoHandedEquip": "<%= twoHandedText %> használatához két kézre van szükséged, ezért <%= offHandedText %>-t elraktad.",
"messageTwoHandedUnequip": "<%= twoHandedText %> használatához két kézre van szükséged ezért elraktad, hogy használhasd a(z) <%= offHandedText %>-t.",
- "messageDropFood": "You've found <%= dropArticle %><%= dropText %>!",
- "messageDropEgg": "You've found a <%= dropText %> Egg!",
- "messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
+ "messageDropFood": "Találtál egy <%= dropArticle %><%= dropText %>!",
+ "messageDropEgg": "Találtál egy <%= dropText %> tojást!",
+ "messageDropPotion": "Találtál egy <%= dropText %> keltetőfőzetet!",
"messageDropQuest": "Találtál egy küldetést!",
"messageDropMysteryItem": "Kinyitottad a dobozt és találtál egy <%= dropText %>!",
"messageFoundQuest": "Megtaláltad a \"<%= questText %>\" küldetést!",
"messageAlreadyPurchasedGear": "A múltban már megvetted ezt a felszerelést, de jelenleg nincs a birtokodban. Újra megvásárolhatod a jutalmak oszlopában a feladatok lapon.",
"messageAlreadyOwnGear": "Már rendelkezel ezzel a tárggyal. A felszerelés lapon felszerelheted.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Már maximumon van az életerőd. ",
"messageHealthAlreadyMin": "Jajj ne! Nincs több életed ezért már nem tudsz gyógyitalt használni. De ne aggódj - újraéledhetsz!",
"armoireEquipment": "<%= image %> Találtál egy ritka felszerelést a Szekrényben: <%= dropText %>! Hihetetlen!",
@@ -37,7 +38,7 @@
"messageInsufficientGems": "Nincs elég drágaköved!",
"messageAuthPasswordMustMatch": ":password és :confirmPassword nem egyeznek",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword szükséges",
- "messageAuthUsernameTaken": "Login Name already taken",
+ "messageAuthUsernameTaken": "A felhasználónév már foglalt. ",
"messageAuthEmailTaken": "Az E-Mail cím már foglalt.",
"messageAuthNoUserFound": "felhasználó nem található.",
"messageAuthMustBeLoggedIn": "Be kell jelentkezned.",
@@ -52,10 +53,11 @@
"messageGroupChatFlagAlreadyReported": "Már jelentetted ezt az üzenetet",
"messageGroupChatNotFound": "Üzenet nem található!",
"messageGroupChatAdminClearFlagCount": "Csak egy adminisztrátor törölheti flag számlálót.",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Uppsz, úgy néz ki, túl sok üzenetet küldtél. Kérlek, várj egy kicsit és próbáld újra. A Fogadó üzenőfala csak 200 üzenettel bír el egyszerre, ezért a Habitica hosszabb és tartalmasabb üzenetek küldésére, illetve a válaszok összevonására bátorít. Alig várjuk, hogy ismét halljunk felőled... :)",
"messageUserOperationProtected": "'<%= operation %>' elérési út nem menthető, mivel ez védett.",
"messageUserOperationNotFound": "<%= operation %> művelet nem található",
"messageNotificationNotFound": "Az értesítés nem található.",
"notificationsRequired": "Értesítés azonosítók szükségesek.",
- "beginningOfConversation": "This is the beginning of your conversation with <%= userName %>. Remember to be kind, respectful, and follow the Community Guidelines!"
+ "beginningOfConversation": "Elkeztél beszélgetni <%= userName %> felhasználóval. Emlékezz, hogy legyél kedves, tisztelettudó és kövesd a Közösségi irányelveket!"
}
\ No newline at end of file
diff --git a/website/common/locales/hu/npc.json b/website/common/locales/hu/npc.json
index ce6b1e3694a..48d75868cc4 100644
--- a/website/common/locales/hu/npc.json
+++ b/website/common/locales/hu/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Drágakő",
"typeNotSellable": "Ez a Típus nem eladható. Válassz a <%= acceptedTypes %>-ok közül.",
"userItemsKeyNotFound": "Kulcsszó nem található a user.items <%= type %>-hoz.",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Útvonal címe szükséges.",
"unlocked": "Új tárgyak elérhetőek",
"alreadyUnlocked": "A teljes szett már elérhető.",
diff --git a/website/common/locales/hu/quests.json b/website/common/locales/hu/quests.json
index 5d0c754d93b..efee7bd0a69 100644
--- a/website/common/locales/hu/quests.json
+++ b/website/common/locales/hu/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> küldetéshez szükséges tárgy megszerezve",
"questDamage": "+ <%= val %> sebzés a főellenség ellen",
"begin": "Indít",
- "bossHP": "Főellenség életereje",
+ "bossHP": "Boss HP",
"bossStrength": "Főellenség ereje",
"rage": "Harag",
"collect": "Gyűjts be",
@@ -78,6 +78,7 @@
"mustLvlQuest": "<%= level %> szintűnek kell lenned, hogy megvehesd ezt a küldetést.",
"mustInviteFriend": "Ahhoz, hogy elnyerd ezt a küldetést, hívj meg egy barátot a csapatodba. Meghívsz most valakit?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Biztosan meg akarod szakítani ezt a küldetést? Minden meghívási beleegyezés el fog veszni. A küldetés tulajdonosa megtartja a küldetés tekercset.",
"sureAbort": "Biztosan el akarod hagyni ezt a küldetést? Ez meg fogja szakítani mindenkinek a csapatodban, és minden haladás el fog veszni. A küldetés tekercs vissza fog kerülni a küldetés tulajdonosához.",
"doubleSureAbort": "Tuti biztos vagy benne? Győződj meg róla, hogy nem fognak a többiek utálni!",
diff --git a/website/common/locales/hu/questscontent.json b/website/common/locales/hu/questscontent.json
index f696a9727cd..59c99da99d2 100644
--- a/website/common/locales/hu/questscontent.json
+++ b/website/common/locales/hu/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Tatu (tojás)",
"questArmadilloUnlockText": "Elérhetővé teszi a tatutojások megvásárlását a piacon",
"questCowText": "A múútálódott tehén",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
"questCowBoss": "Múútálódott tehén",
"questCowDropCowEgg": "Tehén (tojás)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/hu/rebirth.json b/website/common/locales/hu/rebirth.json
index 5689319c451..9b2196ca59a 100644
--- a/website/common/locales/hu/rebirth.json
+++ b/website/common/locales/hu/rebirth.json
@@ -21,7 +21,7 @@
"rebirthOrb": "Használtad az Újjászületés gömbjét hogy új kalandot kezdj miután elérted a <%= level %> szintet.",
"rebirthOrb100": "Használtad az Újjászületés gömbjét hogy új kalandot kezdj miután elérted a 100 szintet vagy magasabbat.",
"rebirthOrbNoLevel": "Használtad az Újjászületés gömbjét hogy új kalandot kezdj.",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
+ "rebirthPop": "Kezd újra a karaktered 1. szinttől, megtartva a kitüntetéseket, gyűjteményeket, felszereléseket és a feladatelőzményeket. Azonnal megtörténik. ",
"rebirthName": "Újjászületés gömbje",
"reborn": "Újjászülettél, maximális szint <%= reLevel %>",
"confirmReborn": "Biztos vagy benne?",
diff --git a/website/common/locales/hu/settings.json b/website/common/locales/hu/settings.json
index 5e46f2523c9..9f0ccce36a1 100644
--- a/website/common/locales/hu/settings.json
+++ b/website/common/locales/hu/settings.json
@@ -65,7 +65,7 @@
"resetText1": "VIGYÁZAT! Ez alapállapotra állítja a fiókod sok részét. Alapvetően nem ajánljuk, de pár embernek hasznos lehet az elején, miután még csak egy rövid ideig játszott.",
"resetText2": "You will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment.",
"deleteLocalAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type your password into the text box below.",
- "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"DELETE\" into the text box below.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Másold ki ezt, külső alkalmazások használatához. Egyébiránt úgy gondolj az API Kulcsodra, mint egy jelszóra és ne oszd meg senkivel nyilvánosan. Előfordulhat, hogy a felhasználói azonosítódat kérik, de soha ne írd be sehova az API Kulcsodat, ahol mások esetleg láthatják, még a Githubra se.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Előfizetés ajándékozva",
"giftedSubscriptionInfo": "<%= name %><%= months %>havi előfizetéssel ajándékozott meg",
"giftedSubscriptionFull": "Üdv <%= username %>, <%= sender %><%= monthCount %>havi előfizetést küldött neked!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Meghívva egy csapatba",
"invitedGuild": "Meghívva egy céhbe",
"importantAnnouncements": "Reminders to check in to complete tasks and receive prizes",
diff --git a/website/common/locales/hu/subscriber.json b/website/common/locales/hu/subscriber.json
index 71362fc98b1..368953c2931 100644
--- a/website/common/locales/hu/subscriber.json
+++ b/website/common/locales/hu/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Leíratkozás",
"cancelSubInfoGoogle": "Kérlek menj a \"fiók\" > \"Előfizetések\" szekcióba a Google Play Store appon az előfizetésed megszüntetéséhez, vagy ellenőrizd mikor ér véget az előfizetésed, ha már megszüntetted. Ez az oldal nem mutatja, hogy az előfizetésed vissza lett-e mondva. ",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Megszüntetett előfizetés",
"cancelingSubscription": "Előfizetés megszüntetése",
"adminSub": "Adminisztrátor felíratkozások",
@@ -136,6 +137,7 @@
"mysterySet201709": "Varázslótanonc szett ",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Alap steampunk szett",
"mysterySet301405": "Steampunk kiegészítő szett",
"mysterySet301703": "Steampunk páva szett",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Ismeretlen kártyatípus",
"invalidCoupon": "Érvénytelen kuponkód",
"couponUsed": "A kupon kódot már használták.",
- "noSudoAccess": "Nincs admin hozzáférésed.",
"couponCodeRequired": "A kupon kód szükséges.",
"eventRequired": "\"req.params.event\" szükséged.",
"countRequired": "\"req.query.count\" szükséges",
diff --git a/website/common/locales/hu/tasks.json b/website/common/locales/hu/tasks.json
index 0029f902155..3ef6f1089e2 100644
--- a/website/common/locales/hu/tasks.json
+++ b/website/common/locales/hu/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Erősítsd meg hogy ez a napi feladat nem volt elvégezve támadás előtt",
"yesterDailiesDescription": "Ha ez a beállítás engedélyezve van, a Habitica meg fogja kérdezni hogy a napi feladat tényleg nem volt-e elvégezve mielőtt kiszámolja a sebzést az avatárodra. Ez megvéd a nem szándékos sebzésektől.",
"repeatDayError": "Bizonyosodj meg róla hogy legalább a hét egyik napja ki van választva.",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "Search titles and descriptions...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/id/backgrounds.json b/website/common/locales/id/backgrounds.json
index 758054918b6..de0a6aeb920 100644
--- a/website/common/locales/id/backgrounds.json
+++ b/website/common/locales/id/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Kastel Tengah Malam",
"backgroundMidnightCastleNotes": "Berjalan-jalan di Kastel Tengah Malam.",
"backgroundTornadoText": "Angin Topan",
- "backgroundTornadoNotes": "Terbang menembus Angin Topan."
+ "backgroundTornadoNotes": "Terbang menembus Angin Topan.",
+ "backgrounds122017": "SET 43: Dirilis Desember 2017",
+ "backgroundCrosscountrySkiTrailText": "Jalur Ski Lintas Alam",
+ "backgroundCrosscountrySkiTrailNotes": "Meluncur Sepanjang Jalur Ski Lintas Alam",
+ "backgroundStarryWinterNightText": "Malam Musim Dingin Berbintang",
+ "backgroundStarryWinterNightNotes": "Kagumi Malam Musim Dingin Berbintang",
+ "backgroundToymakersWorkshopText": "Ruang Kerja Pembuat Mainan",
+ "backgroundToymakersWorkshopNotes": "Bersenang-senang di dalam kemegahan Ruang Kerja Pembuat Mainan",
+ "backgrounds012018": "Set 44: Dirilis Januari 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Rasakan sensasi diselimuti cahaya musim dingin dari Aurora.",
+ "backgroundDrivingASleighText": "Kereta Luncur",
+ "backgroundDrivingASleighNotes": "Kendarai Kereta Luncur melalui padang yang diselimuti es.",
+ "backgroundFlyingOverIcySteppesText": "Stepa Es",
+ "backgroundFlyingOverIcySteppesNotes": "Terbang di atas Stepa Es."
}
\ No newline at end of file
diff --git a/website/common/locales/id/challenge.json b/website/common/locales/id/challenge.json
index 5e0b5f5d2b4..3532545e234 100644
--- a/website/common/locales/id/challenge.json
+++ b/website/common/locales/id/challenge.json
@@ -29,7 +29,7 @@
"either": "Yang mana saja",
"createChallenge": "Buat Tantangan",
"createChallengeAddTasks": "Tambahkan Tugas Tantangan",
- "createChallengeCloneTasks": "Clone Challenge Tasks",
+ "createChallengeCloneTasks": "Duplikat Tugas Tantangan",
"addTaskToChallenge": "Tambahkan Tugas",
"discard": "Buang",
"challengeTitle": "Judul Tantangan",
@@ -127,5 +127,7 @@
"locationRequired": "Lokasi tantangan diperlukan ('Tambahkan ke')",
"categoiresRequired": "Satu atau lebih kategori harus dipilih",
"viewProgressOf": "Lihat Progress Dari",
- "selectMember": "Pilih Anggota"
+ "selectMember": "Pilih Anggota",
+ "confirmKeepChallengeTasks": "Apakah kamu mau menyimpan tugas dari tantangan ini?",
+ "selectParticipant": "Pilih Seorang Peserta"
}
\ No newline at end of file
diff --git a/website/common/locales/id/character.json b/website/common/locales/id/character.json
index a281a98cfc4..4f96897eb5e 100644
--- a/website/common/locales/id/character.json
+++ b/website/common/locales/id/character.json
@@ -163,20 +163,21 @@
"dieText": "Kamu kehilangan satu Level, semua Koin Emas, dan salah satu Perlengkapanmu. Bangkitlah, Habiteer, dan coba lagi! Kurangi Kebiasaan buruk tersebut, waspada dalam menyelesaikan Keseharian, dan tunda kematian selama mungkin dengan Ramuan Kesehatan jika kamu goyah!",
"sureReset": "Apakah kamu yakin? Kamu akan memilih ulang pekerjaan karaktermu dan poin yang sudah dialokasikan akan dihapus (kamu akan mendapatkan semuanya kembali untuk dialokasikan ulang), seharga 3 Permata.",
"purchaseFor": "Beli seharga <%= cost %> Gem?",
+ "purchaseForHourglasses": "Beli seharga <%= cost %> Jam Pasir?",
"notEnoughMana": "Mana tidak cukup.",
"invalidTarget": "Kamu tidak dapat menggunakan kemampuan kamu untuk itu.",
"youCast": "Kamu menggunakan <%= spell %>.",
"youCastTarget": "Kamu menggunakan <%= spell %> kepada <%= target %>.",
"youCastParty": "Kamu menggunakan <%= spell %> kepada party.",
"critBonus": "Serangan Kritis! Bonus:",
- "gainedGold": "Kamu mendapat beberapa Koin Emas",
- "gainedMana": "Kamu mendapat beberapa Mana",
- "gainedHealth": "Kamu mendapat beberapa Nyawa",
- "gainedExperience": "Kamu mendapat beberapa Pengalaman",
- "lostGold": "Kamu menggunakan beberapa Koin Emas",
- "lostMana": "Kamu menggunakan beberapa Mana",
- "lostHealth": "Kamu kehilangan beberapa Nyawa",
- "lostExperience": "Kamu kehilangan beberapa Pengalaman",
+ "gainedGold": "Kamu mendapat Koin Emas",
+ "gainedMana": "Kamu memeroleh Mana",
+ "gainedHealth": "Kamu memeroleh Nyawa",
+ "gainedExperience": "Kamu memeroleh Pengalaman",
+ "lostGold": "Kamu menggunakan Koin Emas",
+ "lostMana": "Kamu menggunakan Mana",
+ "lostHealth": "Kamu kehilangan Nyawa",
+ "lostExperience": "Kamu kehilangan Pengalaman",
"displayNameDescription1": "Ini yang akan muncul di pesan yang kamu tulis di Kedai Minuman, guild dan party, begitu juga yang terpampang di avatarmu. Untuk mengubahnya, klik tombol Edit di atas. Tapi kalau kamu mau mengubah nama login-mu, pergi ke",
"displayNameDescription2": "Pengaturan -> Situs",
"displayNameDescription3": "dan lihat di bagian Registrasi.",
diff --git a/website/common/locales/id/communityguidelines.json b/website/common/locales/id/communityguidelines.json
index cbedd1c5d1b..67e36f93ec1 100644
--- a/website/common/locales/id/communityguidelines.json
+++ b/website/common/locales/id/communityguidelines.json
@@ -151,7 +151,7 @@
"commGuideHeadingContributing": "Berkontribusi ke Habitica",
"commGuidePara064": "Habitica adalah proyek open-source, yang artinya semua anggota Habiticans boleh saja membantu dalam pembangunan! Semua yang membantu akan diberi hadiah menurut tingkatan ini:",
"commGuideList12A": "Lencana Kontributor Habitica, tambah 3 Permata",
- "commGuideList12B": "Baju Kontributor, plus 3 Permata",
+ "commGuideList12B": "Baju Zirah Kontributor, plus 3 Permata",
"commGuideList12C": "Helm Kontributor, plus 3 Permata.",
"commGuideList12D": "Pedang Kontributor, plus 4 Permata.",
"commGuideList12E": "Perisai Kontributor, plus 4 Permata.",
diff --git a/website/common/locales/id/content.json b/website/common/locales/id/content.json
index c71e23514b1..f0d506319a1 100644
--- a/website/common/locales/id/content.json
+++ b/website/common/locales/id/content.json
@@ -127,7 +127,7 @@
"questEggTurtleAdjective": "penuh damai",
"questEggArmadilloText": "Armadilo",
"questEggArmadilloMountText": "Armadilo",
- "questEggArmadilloAdjective": "berlapis baja",
+ "questEggArmadilloAdjective": "berbaju zirah",
"questEggCowText": "Sapi",
"questEggCowMountText": "Sapi",
"questEggCowAdjective": "melenguh",
@@ -161,6 +161,9 @@
"questEggYarnText": "Benang",
"questEggYarnMountText": "Karpet Terbang",
"questEggYarnAdjective": "wol",
+ "questEggPterodactylText": "Pterodaktil",
+ "questEggPterodactylMountText": "Pterodaktil",
+ "questEggPterodactylAdjective": "penuh kepercayaan",
"eggNotes": "Gunakan ramuan penetas kepada telur ini, dan ia akan menetas menjadi <%= eggText(locale) %> yang <%= eggAdjective(locale) %>;",
"hatchingPotionBase": "Biasa",
"hatchingPotionWhite": "Putih",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupid",
"hatchingPotionShimmer": "Berkilau",
"hatchingPotionFairy": "Peri",
+ "hatchingPotionStarryNight": "Malam Berbintang",
"hatchingPotionNotes": "Berikan ini kepada sebuah telur, dan ia akan menetas menjadi binatang peliharaan <%= potText(locale) %>.",
"premiumPotionAddlNotes": "Tidak dapat digunakan kepada telur peliharaan yang didapat dari misi.",
"foodMeat": "Daging",
@@ -218,5 +222,6 @@
"foodCandyRed": "Permen Kayu Manis",
"foodSaddleText": "Pelana",
"foodSaddleNotes": "Membuat peliharaanmu langsung bisa ditunggangi.",
+ "foodSaddleSellWarningNote": "Hei! Ini adalah item yang lumayan berguna! Apakah kamu familiar dengan cara menggunakan sebuah Pelana untuk peliharaanmu?",
"foodNotes": "Beri makan peliharaanmu agar tumbuh menjadi tunggangan yang kuat."
}
\ No newline at end of file
diff --git a/website/common/locales/id/contrib.json b/website/common/locales/id/contrib.json
index 380e4f7ba60..ee5981e2bee 100644
--- a/website/common/locales/id/contrib.json
+++ b/website/common/locales/id/contrib.json
@@ -12,7 +12,7 @@
"tierNPC": "NPC",
"friend": "Teman",
"friendFirst": "Partisipasi pertamamu akan dihadiahi lencana Kontributor Habitica. Namamu dalam percakapan kedai minuman akan menunjukkan bahwa kamu adalah kontributor. Selain itu, kamu juga akan mendapatkan hadiah 3 Permata.",
- "friendSecond": "Partisipasi keduamu akan dihadiahi Baju Kristal yang bisa dibeli dengan Koin Emas. Selain itu, kamu juga akan mendapatkan hadiah 3 Permata.",
+ "friendSecond": "Sewaktu kontribusi keduamu telah diterima, kamu akan dihadiahi Baju Zirah Kristal yang bisa dibeli dengan Koin Emas. Selain itu, kamu juga akan mendapatkan hadiah 3 Permata.",
"elite": "Elit",
"eliteThird": "Partisipasi ketigamu akan dihadiahi Helm Kristal yang bisa dibeli dengan Koin Emas. Selain itu, kamu juga akan mendapatkan hadiah 3 Permata.",
"eliteFourth": "Partisipasi keempatmu akan dihadiahi Pedang Kristal yang bisa dibeli dengan Koin Emas. Selain itu, kamu juga akan mendapatkan hadiah 4 Permata.",
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, kamu keren banget! Sekarang kamu tingkat <%= level %> kontributor karena telah membantu Habitica. Lihat",
"contribLink": "hadiah apa yang kamu dapatkan dari kontribusimu!",
"contribName": "Kontributor",
- "contribText": "Telah berkontribusi kepada Habitica (kode, desain, seni pixel, nasihat hukum, dokumen, dll). Ingin lencana seperti ini? Baca lebih lanjut.",
+ "contribText": "Telah berkontribusi kepada Habitica, entah melalui kode, desain, musik, tulisan, atau cara lain. Untuk mengetahui lebih lanjut, bergabunglah dengan Guild Aspiring Legends!",
"readMore": "Baca selanjutnya",
"kickstartName": "Pendukung Kickstarter - $<%= key %> Tingkat",
"kickstartText": "Mendukung Proyek Kickstarter",
diff --git a/website/common/locales/id/faq.json b/website/common/locales/id/faq.json
index 7f93e4e6110..f2481da4593 100644
--- a/website/common/locales/id/faq.json
+++ b/website/common/locales/id/faq.json
@@ -3,7 +3,7 @@
"faqQuestion0": "Saya bingung. Dimana saya mendapatkan gambaran?",
"iosFaqAnswer0": "Pertama, kamu buat sebuah tugas yang ingin kamu lakukan dalam keseharianmu. Lalu, saat kamu telah menyelesaikan tugas di kehidupan nyata dan menandainya, kamu akan mendapat nilai pengalaman dan koin emas. Koin emas digunakan untuk membeli perlengkapan, item, dan hadiah pribadi. Pengalaman akan membuat karakter naik level dan membuka fitur seperti Peliharaan, Kemampuan, dan Misi! Kamu dapat mengkustomisasi karaktermu pada Menu > Kustomisasi Avatar.\n\nBeberapa interaksi dasar klik (+) pada pojok kanan atas untuk menabah tugas baru. Ketuk pada tugas yang ada untuk edit, dan geser ke kiri pada sebuah tugas untuk menghapusnya. Kamu dapat mengurutkan tugas menggunakan Label pada pojok kiri atas, dan melihat serta menyembunyikan ceklis dengan klik lingkaran ceklis.",
"androidFaqAnswer0": "Pertama, buat sebuah tugas yang ingin dilakukan dalam keseharian. Lalu, saat kamu telah menyelesaikan tugas di kehidupan nyata dan menandainya, kamu akan mendapat nilai pengalaman dan koin emas. Koin emas digunakan untuk membeli perlengkapan, item, dan hadiah pribadi. Pengalaman akan membuat karakter naik level dan membuka fitur seperti Peliharaan, Kemampuan, dan Misi! Kamu dapat mengkustomisasi karaktermu pada Menu > [Inventori >] Avatar.\n\nBeberapa interaksi dasar: klik (+) pada pojok kanan bawah untuk menambah tugas baru. Ketuk pada tugas yang ada untuk mengubahnya, dan geser ke kiri pada sebuah tugas untuk menghapusnya. Kamu dapat mengurutkan tugas menggunakan Label pada pojok kiri atas, dan melihat serta menyembunyikan ceklis dengan klik pada kotak ceklis.",
- "webFaqAnswer0": "Pertama, kamu buat sebuah tugas yang ingin kamu lakukan dalam keseharianmu. Lalu, saat kamu telah menyelesaikan tugas di kehidupan nyata dan menandainya, kamu akan mendapat nilai pengalaman dan koin emas. Koin emas digunakan untuk membeli perlengkapan, item, dan hadiah pribadi. Pengalaman akan membuat karakter naik level dan membuka fitur seperti Peliharaan, Kemampuan, dan Misi! Untuk lebih jelasnya, wiki memiliki petunjuk langkah demi langkah untuk permainan di [Bantuan -> Petunjuk untuk Pengguna Baru] (https://habitica.com/static/overview).",
+ "webFaqAnswer0": "Pertama, kamu buat sebuah tugas yang ingin kamu lakukan dalam keseharianmu. Lalu, saat kamu telah menyelesaikan tugas di kehidupan nyata dan menandainya, kamu akan mendapat nilai pengalaman dan koin emas. Koin emas digunakan untuk membeli perlengkapan, item, dan hadiah pribadi. Pengalaman akan membuat karakter naik level dan membuka fitur seperti peliharaan, kemampuan, dan misi! Untuk lebih jelasnya, wiki memiliki petunjuk langkah demi langkah untuk permainan ini di [Bantuan -> Petunjuk untuk Pengguna Baru] (https://habitica.com/static/overview).",
"faqQuestion1": "Bagaimana saya mengatur tugas?",
"iosFaqAnswer1": "Kebiasaan baik (dengan tanda +) merupakan tugas yang dapat dilakukan lebih dari satu kali setiap hari, seperti makan sayur. Kebiasaan buruk (dengan tanda -) adalah tugas yang harus dihindari, seperti menggigiti kuku. Tugas dengan tanda + dan - memiliki dua pilihan, baik atau buruk, seperti naik tangga vs. naik elevator. Kebiasaan Baik memberikan hadiah pengalaman dan koin emas. Kebiasaan Buruk mengurangi nyawa. \n\nKeseharian adalah tugas yang harus dilakukan setiap hari, seperti menggosok gigi atau memeriksa email. Kamu dapat mengatur hari dengan ketuk untuk mengeditnya. Jika kamu melewatkan tugas harian yang aktif, avatarmu akan terkena pengurangan nyawa saat pergantian hari. Hati-hati untuk tidak menambah begitu banyak tugas harian dalam satu waktu!\n\nDaftar tugas merupakan daftar tugasmu. Menyelesaikan sebuah tugas memberikan kamu koin emas dan pengalaman. Kamu tidak akan mendapatkan pengurangan nyawa dari daftar tugas. Kamu dapat memberi batas waktu pada sebuah tugas dengan mengetuk untuk edit.",
"androidFaqAnswer1": "Kebiasaan baik (dengan tanda +) merupakan tugas yang dapat dilakukan lebih dari satu kali setiap hari, seperti makan sayur. Kebiasaan buruk (dengan tanda -) adalah tugas yang harus dihindari, seperti menggigiti kuku. Kebiasaan dengan tanda + dan - memiliki dua pilihan, baik atau buruk, seperti naik tangga vs. naik elevator. Kebiasaan Baik memberikan hadiah pengalaman dan koin emas. Kebiasaan Buruk mengurangi nyawa. \n\nKeseharian adalah tugas yang harus dilakukan setiap hari, seperti menggosok gigi atau memeriksa email. Kamu dapat mengatur hari dengan ketuk untuk mengeditnya. Jika kamu melewatkan tugas harian yang aktif, avatarmu akan terkena pengurangan nyawa saat pergantian hari. Hati-hati untuk tidak menambah begitu banyak tugas harian dalam satu waktu! \n\nDaftar tugas merupakan daftar tugasmu. Menyelesaikan sebuah tugas memberikan kamu koin emas dan pengalaman. Kamu tidak akan mendapatkan pengurangan nyawa dari daftar tugas. Kamu dapat memberi batas waktu pada sebuah tugas dengan mengetuk untuk edit.",
@@ -17,12 +17,12 @@
"androidFaqAnswer3": "Tugasmu berubah warna sesuai dengan seberapa baik kamu mengerjakannya! Setiap tugas baru mulai dengan kuning netral. Lakukan Keseharian atau Kebiasaan positif lebih sering dan mereka akan menjadi lebih biru. Lewatkan Keseharian atau menyerah kepada Kebiasaan buruk dan tugas akan menjadi lebih merah. Lebih merah sebuah tugas, lebih banyak hadiah yang tugas itu akan berikan, tetapi jika itu adalah Keseharian atau Kebiasaan buruk, itu akan lebih menyakitimu! Ini mendorongmu untuk menyelesaikan tugas yang bermasalah bagimu.",
"webFaqAnswer3": "Tugasmu berubah warna sesuai sebagaimana baik kamu menyelesaikannya! Setiap tugas baru dimulai dari warna kuning. Lakukan keseharian atau kebiasaan baik lebih sering dan tugas akan mulai berubah menjadi biru. Lewatkan keseharian atau menyerah kepada kebiasaan buruk dan tugas akan mulai berubah menjadi merah. Semakin merah sebuah tugas, semakin banyak hadiah yang akan didapatkan, tetapi jika itu adalah Keseharian atau kebiasaan buruk, tugas akan melukaimu lebih parah! Hal ini akan membantu memotivasi dirimu untuk menyelesaikan tugas yang memberikanmu masalah.",
"faqQuestion4": "Mengapa avatarku kehilangan nyawa, dan bagaimana caraku mendapatkannya kembali?",
- "iosFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight and didn't check them off in the screen that popped up the next morning, those unfinished Dailies will damage you. Second, if you tap a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your Party and one of your Party mates did not complete all their Dailies, the Boss will attack you.\n\n The main way to heal is to gain a level, which restores all your health. You can also buy a Health Potion with gold from the Rewards column. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a Party with a Healer, they can heal you as well.",
- "androidFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight and didn't check them off in the screen that popped up the next morning, those unfinished Dailies will damage you. Second, if you tap a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your Party and one of your Party mates did not complete all their Dailies, the Boss will attack you.\n\n The main way to heal is to gain a level, which restores all your health. You can also buy a Health Potion with gold from the Rewards tab on the Tasks page. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a Party with a Healer, they can heal you as well.",
- "webFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight and didn't check them off in the screen that popped up the next morning, those unfinished Dailies will damage you. Second, if you click a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your party and one of your party mates did not complete all their Dailies, the Boss will attack you. The main way to heal is to gain a level, which restores all your Health. You can also buy a Health Potion with Gold from the Rewards column. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. Other Healers can heal you as well if you are in a Party with them. Learn more by clicking \"Party\" in the navigation bar.",
+ "iosFaqAnswer4": "Ada beberapa hal yang dapat membuatmu menerima damage. Pertama, jika kamu meninggalkan Keseharian tidak terselesaikan dan tidak mencentangnya pada tampilan yang muncul keesokan paginya, Keseharian itu akan memberimu damage. Kedua, jika kamu melakukan kebiasaan buruk, itu akan memberimu damage. Terakhir, jika kamu sedang bertarung melawan Boss dengan Party-mu dan salah satu anggota Party-mu tidak menyelesaikan semua Kesehariannya, Boss itu akan menyerangmu.\n\nCara utama untuk menyembuhkan diri adalah dengan naik level, yang akan mengembalikan semua nyawamu. Kamu juga dapat membeli Ramuan Kesehatan dengan koin emas dari kolom Hadiah. Plus, di level 10 atau lebih, kamu bisa memilih untuk menjadi Healer, dan kamu akan belajar kemampuan penyembuhan. Jika kamu berada dalam Party dengan seorang Healer, mereka juga dapat menyembuhkanmu.",
+ "androidFaqAnswer4": "Ada beberapa hal yang dapat membuatmu kehilangan nyawa. Pertama, jika kamu membiarkan Keseharian kamu tidak terselesaikan, dan tidak mencentangnya pada tampilan yang muncul keesokan paginya, Keseharian itu akan memberimu damage. Kedua, jika kamu melakukan Kebiasaan buruk, itu akan memberimu damage. Terakhir, jika kamu sedang bertarun melawan Boss dengan Party-mu dan salah satu anggota Party-mu tidak menyelesaikan semua Kesehariannya, Boss itu akan menyerangmu.\n\nCara utama untuk menyembuhkan diri adalah dengan naik level, yang akan mengembalikan semua nyawamu. Kamu juga bisa membeli Ramuan Kesehatan dengan koin emas dari tab Hadiah di halaman Tugas. Plus, di level 10 atau lebih, kamu bisa memilih untuk menjadi Healer, dan kamu akan belajar skill penyembuhan. Jika kamu berada dalam Party dengan seorang Healer, mereka juga dapat menyembuhkanmu.",
+ "webFaqAnswer4": "Ada beberapa hal yang dapat membuatmu menerima damage. Pertama, jika kamu meninggalkan Keseharian tidak terselesaikan dan tidak mencentangnya pada tampilan yang muncul keesokan paginya, Keseharian itu akan memberimu damage. Kedua, jika kamu melakukan Kebiasaan buruk, itu akan memberimu damage. Terakhir, jika kamu sedang bertarung melawan Boss dengan party-mu dan salah satu anggota party-mu tidak menyelesaikan semua Kesehariannya, Boss itu akan menyerangmu. Cara utama untuk menyembuhkan diri adalah dengan naik level, yang akan mengembalikan semua Nyawa-mu. Kamu juga dapat membeli Ramuan Kesehatan dengan Koin Emas dari kolom Hadiah. Plus, di level 10 atau lebih, kamu bisa memilih untuk menjadi Healer, dan kamu akan belajar kemampuan penyembuhan. Healer lain juga bisa menyembuhkanmu jika kamu berada dalam satu Party dengan mereka. Belajar lebih lanjut dengan menekan \"Party\" di panel navigasi.",
"faqQuestion5": "Bagaimana cara bermain Habitica dengan teman-teman?",
"iosFaqAnswer5": "Cara terbaik adalah dengan mengundang mereka masuk ke dalam party-mu! Party bisa bersama-sama mengikuti misi, memerangi monster, dan merapal mantra untuk membantu satu sama lain. Pergi ke Menu > Party dan klik \"Buat Party Baru\" jika kamu belum memiliki party. Sentuh pada daftar member, dan sentuh Undang di pojok kanan atas untuk mengundang temanmu dengan mengetikkan User ID mereka (baris nomor dan angka yang bisa ditemukan di Pengaturan > Detail Akun di aplikasi, dan Pengaturan > API di website). Di website, kamu bisa juga mengundang teman lewat email, yang akan kami tambakan di aplikasi pada pembaharuan berikutnya.\n\nDi website, kamu dan teman-temanmu juga bisa bergabung dalam Perkumpulan, yang merupakan ruang obrolan publik. Perkumpulan akan ditambahkan ke app pada update berikutnya!",
- "androidFaqAnswer5": "The best way is to invite them to a Party with you! Parties can go on quests, battle monsters, and cast skills to support each other. Go to the [website](https://habitica.com/) to create one if you don't already have a Party. You can also join guilds together (Social > Guilds). Guilds are chat rooms focusing on a shared interest or the pursuit of a common goal, and can be public or private. You can join as many guilds as you'd like, but only one party.\n\n For more detailed info, check out the wiki pages on [Parties](http://habitrpg.wikia.com/wiki/Party) and [Guilds](http://habitrpg.wikia.com/wiki/Guilds).",
+ "androidFaqAnswer5": "Cara terbaik adalah dengan mengundang mereka masuk ke dalam Party-mu! Party bisa bersama-sama melakukan misi, memerangi monster, dan merapal mantra untuk membantu satu sama lain. Pergi ke [situs](https://habitica.com/) untuk membuat sebuah Party jika kamu belum punya. Kamu juga bisa bergabung dalam Guild bersama-sama (Sosial > Guild). Perkumpulan merupakan ruang obrolan yang terfokus pada topik tertentu atau tujuan yang umum, dapat bersifat publik maupun pribadi. Kamu bisa bergabung dengan sebanyak mungkin Guild yang kamu mau, tetapi hanya boleh bergabung dalam satu Party.\n\nUntuk info lebih lanjut, cek halaman wiki di [Party](http://habitrpg.wikia.com/wiki/Party) dan [Guild](http://habitrpg.wikia.com/wiki/Guilds).",
"webFaqAnswer5": "The best way is to invite them to a Party with you by clicking \"Party\" in the navigation bar! Parties can go on quests, battle monsters, and cast skills to support each other. You can also join Guilds together (click on \"Guilds\" in the navigation bar). Guilds are chat rooms focusing on a shared interest or the pursuit of a common goal, and can be public or private. You can join as many Guilds as you'd like, but only one Party. For more detailed info, check out the wiki pages on [Parties](http://habitrpg.wikia.com/wiki/Party) and [Guilds](http://habitrpg.wikia.com/wiki/Guilds).",
"faqQuestion6": "Bagaimana caraku mendapatkan Peliharaan atau Tunggangan?",
"iosFaqAnswer6": "Pada level 3, kamu akan mendapatkan fitur sistem hadiah. Setiap kamu menyelesaikan suatu tugas, kamu mendapat kesempatan acak untuk mendapatkan telur, ramuan penetas, atau sepotong makanan. Mereka tersimpan dalam Menu > Item.\n\nUntuk menetaskan peliharaan, kamu akan membutuhkan telur dan ramuan penetas. Klik pada telur untuk menentukan spesies yang ingin amu tetaskan, dan pilih \"Tetaskan Telur.\" Kemudian pilih ramuan penetas untuk menentukan jenisnya! Buka Menu > Peliharaan untuk menambahkan Peliharaan barumu pada avatar dengan klik pada gambar.\n\nKamu juga dapat membesarkan Peliharaan menjad Tunggangan dengan memberi mereka makan pada Menu > Peliharaan. Klik pada peliharaan dan klik \"Beri Makan Peliharaan\"! Kamu harus banyak memberi makan agar peliharaan dapat menjadi Tunggangan, tapi jika kamu sudah hafal makanan kesukaan tiap jenisnya, pertumbuhannya akan lebih cepat. Coba-coba sendiri atau [lihat contekan di sini](http://habitica.wikia.com/wiki/Food#Food_Preferences). Ketika kamu sudah mendapatkan Tunggangan, buka Menu > Tunggangan dan klik gambar utuk memberikannya pada avatarmu.\n\nKamu juga mendapatkan telur dari Sayembara Peliharaan dengan mengikuti Misi tertentu. (Lihat dibawah untuk mempelajari lebih lanjut mengenai Misi.)",
@@ -45,14 +45,14 @@
"androidFaqAnswer10": "Gems are purchased with real money by tapping on the Gem icon in the header. When people buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying Gems directly, there are three other ways players can gain Gems:\n\n * Win a Challenge that has been set up by another player. Go to Social > Challenges to join some.\n * Subscribe and unlock the ability to buy a certain number of Gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the app without them!",
"webFaqAnswer10": "Gems are purchased with real money, although [subscribers](https://habitica.com/user/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support! In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n* Win a Challenge that has been set up by another player. Go to Challenges > Discover Challenges to join some.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica). Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!",
"faqQuestion11": "Bagaimana saya melaporkan gangguan atau meminta suatu fitur?",
- "iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > About > Report a Bug and Menu > About > Send Feedback! We'll do everything we can to assist you.",
+ "iosFaqAnswer11": "Kamu dapat melaporkan gangguan, meminta fitur baru, atau mengirim timbal balik melalui Menu > Tentang > Laporkan Gangguan dan Menu > Tentang > Kirim Timbal Balik! Kami akan melakukan semampu kami untuk membantumu.",
"androidFaqAnswer11": "Kamu dapat melaporkan gangguan, meminta fitur baru, atau mengirim timbal balik melalui Tentang > Laporkan Gangguan dan Tentang > Kirim Timbal Balik! Kami akan melakukan semampu kami untuk membantumu.",
"webFaqAnswer11": "Untuk melaporkan gangguan teknis, klik [Bantuan > Laporkan Gangguan](https://habitica.com/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac) dan baca poin-poin di atas kotak obrolan. Jika kamu tidak dapat masuk ke Habitica, kirim detail login kamu (bukan kata sandimu!) ke [<%= techAssistanceEmail %>](<%= wikiTechAssistanceEmail %>). Jangan khawatir, kami akan membetulkannya secepat mungkin! Permintaan Fitur akan dikumpulkan di Trello. Klik [Bantuan > Minta Sebuah Fitur](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) dan ikuti petunjuknya. Ta-da!",
- "faqQuestion12": "Bagaimana cara melawan Musuh Dunia?",
- "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and Skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and Skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
- "androidFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and Skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and Skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
- "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and Skills will damage the Boss as usual. You can also be in a normal Quest at the same time. Your tasks and Skills will count towards both the World Boss and the Boss/Collection Quest in your party. A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change. You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
+ "faqQuestion12": "Bagaimana caranya melawan World Boss?",
+ "iosFaqAnswer12": "World Boss adalah monster spesial yang muncul di Kedai Minuman. Semua pengguna aktif akan bertarung melawan Boss itu secara otomatis, dan tugas mereka dan Kemampuan mereka akan memberikan damage kepada Boss seperti biasa.\n\nKamu juga bisa melakukan Misi biasa secara bersamaan. Tugas-tugas dan Kemampuanmu akan diperhitungkan terhadap World Boss dan juga Misi Mengumpulkan Barang/ Misi Boss di party-mu.\n\nSebuah World Boss tidak akan pernah menyakitimu atau akunmu dengan cara apapun. Sebagai gantinya, ia mempunyai Tingkat Kemarahan yang terisi ketika pengguna melewatkan Keseharian mereka. Jika Tingkat Kemarahan itu penuh, ia akan menyerang salah satu dari para Non-Player Character di sekitar situs dan gambar mereka akan berubah.\n\nKamu bisa membaca lebih lanjut tentang [World Boss sebelumnya](http://habitica.wikia.com/wiki/World_Bosses) di wiki.",
+ "androidFaqAnswer12": "World Boss adalah monster spesial yang muncul di Kedai Minuman. Semua pengguna aktif akan bertarung melawan Boss itu secara otomatis, dan tugas mereka dan Kemampuan mereka akan memberikan damage kepada Boss seperti biasa.\n\nKamu juga bisa melakukan Misi biasa secara bersamaan. Tugas-tugas dan Kemampuanmu akan diperhitungkan terhadap World Boss dan juga Misi Mengumpulkan Barang/ Misi Boss di party-mu.\n\nSebuah World Boss tidak akan pernah menyakitimu atau akunmu dengan cara apapun. Sebagai gantinya, ia mempunyai Tingkat Kemarahan yang terisi ketika pengguna melewatkan Keseharian mereka. Jika Tingkat Kemarahan itu penuh, ia akan menyerang salah satu dari para Non-Player Character di sekitar situs dan gambar mereka akan berubah.\n\nKamu bisa membaca lebih lanjut tentang [World Boss sebelumnya](http://habitica.wikia.com/wiki/World_Bosses) di wiki.",
+ "webFaqAnswer12": "World Boss adalah monster spesial yang muncul di Kedai Minuman. Semua pengguna aktif akan bertarung melawan Boss itu secara otomatis, dan tugas mereka dan Kemampuan mereka akan memberikan damage kepada Boss seperti biasa. Kamu juga bisa melakukan Misi biasa secara bersamaan. Tugas-tugas dan Kemampuanmu akan diperhitungkan terhadap World Boss dan juga Misi Mengumpulkan Barang/ Misi Boss di party-mu. Sebuah World Boss tidak akan pernah menyakitimu atau akunmu dengan cara apapun. Sebagai gantinya, ia mempunyai Tingkat Kemarahan yang terisi ketika pengguna melewatkan Keseharian mereka. Jika Tingkat Kemarahan itu penuh, ia akan menyerang salah satu dari para Non-Player Character di sekitar situs dan gambar mereka akan berubah. Kamu bisa membaca lebih lanjut tentang [World Boss sebelumnya](http://habitica.wikia.com/wiki/World_Bosses) di wiki.",
"iosFaqStillNeedHelp": "Jika kamu punya pertanyaan yang tidak ada di dalam daftar ini atau di [Wiki FAQ] (http://habitica.wikia.com/wiki/FAQ), tanyakan saja di Tavern chat di Menu > Tavern! Kami senang untuk membantu.",
- "androidFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](http://habitica.wikia.com/wiki/FAQ), come ask in the Tavern chat under Menu > Tavern! We're happy to help.",
+ "androidFaqStillNeedHelp": "Jika kamu punya pertanyaan yang tidak tertera dalam daftar ini atau di [Wiki FAQ] (http://habitica.wikia.com/wiki/FAQ), tanyakan saja di obrolan Kedai Minuman di Menu > Kedai Minuman! Kami akan membantu dengan senang hati.",
"webFaqStillNeedHelp": "Jika kamu punya pertanyaan yang tidak ada di dalam daftar atau di [Wiki FAQ] (http://habitica.wikia.com/wiki/FAQ), tanyakan saja di [Guild Bantuan Habitica](https://habitica.com/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! Kami akan membantu dengan senang hati."
}
\ No newline at end of file
diff --git a/website/common/locales/id/front.json b/website/common/locales/id/front.json
index fa7ad5a9a0d..5098f8d726d 100644
--- a/website/common/locales/id/front.json
+++ b/website/common/locales/id/front.json
@@ -1,6 +1,6 @@
{
"FAQ": "FAQ",
- "termsAndAgreement": "By clicking the button below, you are indicating that you have read and agree to the Terms of Service and Privacy Policy.",
+ "termsAndAgreement": "Dengan menekan tombol di bawah, kamu menunjukkan bahwa kamu telah membaca dan setuju dengan Persyaratan Layanan dan Kebijakan Privasi.",
"accept1Terms": "Dengan menekan tombol berikut, Saya setuju dengan",
"accept2Terms": "dan",
"alexandraQuote": "Tidak mampu TIDAK membicarakan [Habitica] selama pidato saya di Madrid. Sesuatu yang harus dimiliki oleh para pekerja lepas yang masih memerlukan bos.",
@@ -30,6 +30,7 @@
"companyAbout": "Bagaimana Cara Kerjanya",
"companyBlog": "Blog",
"devBlog": "Blog Pengembang",
+ "companyContribute": "Berkontribusi",
"companyDonate": "Sumbang",
"companyPrivacy": "Privasi",
"companyTerms": "Syarat",
@@ -83,7 +84,7 @@
"joinOthers": "Bergabunglah dengan <%= userCount %> orang mencapai tujuan dengan cara yang menyenangkan!",
"kazuiQuote": "Sebelum [Habitica], skripsi saya mandek, saya juga tidak puas dengan ketidakdisiplinan saya mengenai pekerjaan rumah tangga dan hal-hal seperti belajar kosakata dan mempelajari teori Go. Ternyata membagi tugas menjadi tahap-tahap kecil dan menuliskannya di sini cukup untuk membuat saya termotivasi dan terus bekerja.",
"landingend": "Belum yakin juga?",
- "landingend2": "See a more detailed list of [our features](/static/overview). Are you looking for a more private approach? Check out our [administrative packages](/static/plans), which are perfect for families, teachers, support groups, and businesses.",
+ "landingend2": "Lihat daftar yang lebih detil dari [fitur kami](/static/overview). Apakah kamu sedang mencari sebuah pendekatan swasta? Lihat [paket administratif](/static/plans) kami, sempurna untuk keluarga, guru, kelompok dukungan, dan juga bisnis.",
"landingp1": "Kekurangan dari kebanyakan aplikasi dalam bidang produktivitas di pasar adalah mereka tidak mampu memberikan penghargaan yang mampu membuat pengguna terus menggunakannya. Habitica mengatasi ini dengan membuat membangun karakter menyenangkan! Dengan memberikan penghargaan atas keberhasilan dan memberikan penalti ketika ceroboh, Habitica memberikan motivasi eksternal untuk menyelesaikan aktivitas sehari-harimu.",
"landingp2": "Setiap kali kamu memperkuat kebiasaan positif, menyelesaikan pekerjaan harian atau menyelesaikan to-do yang sudah lama ditinggalkan, Habitica langsung menghadiahimu poin pengalaman dan emas. Dengan mendapatkan pengalaman, kamu dapat meningkatkan levelmu, meningkatkan stat dan membuka fitur baru, seperti pekerjaan dan binatang peliharaan. Koin Emas dapat digunakan untuk membeli item dalam game yang mengubah pengalamanmu atau hadiah pribadi yang kamu ciptakan untuk motivasimu. Bahkan sekecil apapun kesuksesanmu akan tetap diberikan hadiah langsung, dan hal inilah yang akan menyebabkanmu menjadi lebih tidak menunda-nunda.",
"landingp2header": "Hadiah Langsung",
@@ -98,23 +99,23 @@
"loginGoogleAlt": "Masuk melalui Google",
"logout": "Keluar",
"marketing1Header": "Memperbaiki Kebiasaanmu Melalui Permainan",
- "marketing1Lead1Title": "Your Life, the Role Playing Game",
+ "marketing1Lead1Title": "Hidupmu, Permainanmu",
"marketing1Lead1": "Habitica adalah permainan yang akan membantumu untuk memperbaiki kebiasaan buruk di kehidupan nyata. Ia \"memainkan\" hidupmu dengan mengubah seluruh pekerjaan (kebiasaan, pekerjaan harian, dan to-do) menjadi monster yang kamu harus kalahkan. Semakin baik kamu dalam menghadapinya, semakin kamu membuat progres dalam game ini. Kalau kamu lalai dalam kehidupanmu, maka karaktermu juga akan jatuh di dalam game.",
"marketing1Lead2Title": "Dapatkan Perlengkapan Keren",
- "marketing1Lead2": "Improve your habits to build up your avatar. Show off the sweet gear you've earned!",
+ "marketing1Lead2": "Bangun kebiasaan baik untuk memperbaik avatarmu. Pamerkan perlengkapan keren yang kamu dapatkan!",
"marketing1Lead3Title": "Temukan Hadiah Acak",
- "marketing1Lead3": "For some, it's the gamble that motivates them: a system called \"stochastic rewards.\" Habitica accommodates all reinforcement and punishment styles: positive, negative, predictable, and random.",
+ "marketing1Lead3": "Untuk beberapa orang, pertaruhan ini yang memotivasi mereka: sebuah sistem bernama \"penghargaan stokastik.\" Habitica mendukung semua jenis bantuan dan hukuman: positif, negatif, dapat ditebak, dan acak.",
"marketing2Header": "Bersaing dengan Teman, Ikuti Kelompok Minat",
- "marketing2Lead1Title": "Social Productivity",
+ "marketing2Lead1Title": "Produktivitas Sosial",
"marketing2Lead1": "Kamu memang dapat bermain Habitica sendirian, tapi kamu akan lebih bersemangat untuk main di saat kamu berkolaborasi, berkompetisi, dan bergantung satu sama lain. Bagian yang paling efektif dari sebuah program perbaikan diri adalah pertanggungjawaban sosial, dan lingkungan apa yang lebih baik untuk pertanggungjawaban dan kompetisi, selain video game?",
- "marketing2Lead2Title": "Fight Monsters",
- "marketing2Lead2": "What's a Role Playing Game without battles? Fight monsters with your party. Monsters are \"super accountability mode\" - a day you miss the gym is a day the monster hurts *everyone!*",
- "marketing2Lead3Title": "Challenge Each Other",
- "marketing2Lead3": "Challenges let you compete with friends and strangers. Whoever does the best at the end of a challenge wins special prizes.",
+ "marketing2Lead2Title": "Kalahkan Monster",
+ "marketing2Lead2": "Apa artinya game RPG tanpa pertempuran? Kalahkan monster bersama party-mu. Monster adalah \"mode pertanggungjawaban super\" - hari di mana kamu melewatkan gym adalah harinya sang monster melukai *semua orang!*",
+ "marketing2Lead3Title": "Tantang Satu Sama Lain",
+ "marketing2Lead3": "Tantangan membuat kamu dapat bersaing dengan teman dan orang lain. Siapapun yang berhasil melakukan yang terbaik pada akhir tantangan akan memenangi hadiah spesial.",
"marketing3Header": "Aplikasi dan Ekstensi",
- "marketing3Lead1": "The **iPhone & Android** apps let you take care of business on the go. We realize that logging into the website to click buttons can be a drag.",
- "marketing3Lead2Title": "Integrations",
- "marketing3Lead2": "Other **3rd Party Tools** tie Habitica into various aspects of your life. Our API provides easy integration for things like the [Chrome Extension](https://chrome.google.com/webstore/detail/habitica/pidkmpibnnnhneohdgjclfdjpijggmjj?hl=en-US), for which you lose points when browsing unproductive websites, and gain points when on productive ones. [See more here](http://habitica.wikia.com/wiki/Extensions,_Add-Ons,_and_Customizations).",
+ "marketing3Lead1": "Aplikasi di **iPhone & Android** memudahkanmu mengurus game ini di mana saja. Kami sadar bahwa membuka website hanya untuk menekan beberapa tombol itu merepotkan.",
+ "marketing3Lead2Title": "Integrasi",
+ "marketing3Lead2": "**Peralatan Pihak Ketiga** lainnya mengikatkan Habitica kepada berbagai aspek hidupmu. API kami memudahkan integrasi untuk hal seperti [Chrome Extension](https://chrome.google.com/webstore/detail/habitica/pidkmpibnnnhneohdgjclfdjpijggmjj?hl=en-US), di mana kamu kehilangan poin sewaktu membuka laman web tidak produktif, dan mendapat poin sewaktu berada di yang produktif. [Lihat selengkapnya di sini](http://habitica.wikia.com/wiki/Extensions,_Add-Ons,_and_Customizations).",
"marketing4Header": "Penggunaan Organisasi",
"marketing4Lead1": "Edukasi adalah salah satu bidang terbaik yang bisa diubah jadi seperti game. Kita semua tahu bagaimana pelajar zaman sekarang begitu tidak bisa lepas dari game dan smartphone, tapi mari manfaatkan kekuatan itu! Buat murid-muridmu bergabung dalam kompetisi yang bersahabat. Beri hadiah untuk mereka yang berkelakuan baik dengan hadiah yang langka. Berikutnya, anda tinggal melihat bagaimana nilai dan perilaku mereka meningkat drastis.",
"marketing4Lead1Title": "Permainan dalam Edukasi",
@@ -132,7 +133,7 @@
"oldNews": "Berita",
"newsArchive": "Arsip berita di Wikia (multibahasa)",
"passConfirm": "Ulangi Kata sandi",
- "setNewPass": "Set New Password",
+ "setNewPass": "Atur Kata Sandi Baru",
"passMan": "Apabila kamu menggunakan manajer kata sandi (seperti 1Password) dan memiliki masalah saat masuk, cobalah memasukkan nama pengguna dan kata sandi secara manual.",
"password": "Kata sandi",
"playButton": "Main",
@@ -194,8 +195,8 @@
"unlockByline2": "Membuka alat motivasi baru, seperti pengumpulan hewan peliharaan, imbalan acak, mantra, dan banyak lagi!",
"unlockHeadline": "Selama kamu produktif, kamu mendapat konten baru!",
"useUUID": "Gunakan UUID/ API Token (untuk Pengguna Facebook)",
- "username": "Login Name",
- "emailOrUsername": "Email or Login Name (case-sensitive)",
+ "username": "Nama Login",
+ "emailOrUsername": "Email atau Nama Login (sensitif kepada huruf kapital)",
"watchVideos": "Lihat Video",
"work": "Pekerjaan",
"zelahQuote": "Dengan [Habitica], saya dapat memilih untuk pergi tidur lebih awal karena ingin dapat poin atau terancam kehilangan nyawa jika tidur terlaru larut!",
@@ -247,16 +248,16 @@
"missingAuthParams": "Parameter autentikasi hilang.",
"missingUsernameEmail": "Nama Login atau email tidak dapat ditemukan.",
"missingEmail": "Email hilang.",
- "missingUsername": "Missing Login Name.",
+ "missingUsername": "Nama Login Tidak Dapat Ditemukan",
"missingPassword": "Kata sandi hilang.",
"missingNewPassword": "Kata sandi baru hilang.",
"invalidEmailDomain": "Kamu tidak dapat mendaftar menggunakan email dengan domain berikut ini: <%= domains %>",
"wrongPassword": "Kata sandi salah.",
- "incorrectDeletePhrase": "Please type DELETE in all caps to delete your account.",
+ "incorrectDeletePhrase": "Silahkan ketik <%= magicWord %> seluruhnya dengan menggunakan huruf kapital untuk menghapus akunmu.",
"notAnEmail": "Alamat email salah.",
"emailTaken": "Alamat email telah digunakan oleh akun lain.",
"newEmailRequired": "Alamat email baru hilang.",
- "usernameTaken": "Login Name already taken.",
+ "usernameTaken": "Nama Login sudah diambil.",
"passwordConfirmationMatch": "Konfirmasi kata sandi tidak cocok dengan kata sandi.",
"invalidLoginCredentials": "Nama pengguna dan/atau email dan/atau kata sandi salah.",
"passwordResetPage": "Reset Kata Sandi",
@@ -264,7 +265,7 @@
"passwordResetEmailSubject": "Reset Kata Sandi untuk Habitica",
"passwordResetEmailText": "Kalau kamu meminta reset kata sandi untuk <%= username %> di Habitica, buka <%= passwordResetLink %> untuk membuat kata sandi baru. Tautan akan hangus setelah 24 jam. Kalau kamu tidak pernah meminta reset kata sandi, abaikan saja email ini.",
"passwordResetEmailHtml": "Kalau kamu meminta reset kata sandi untuk <%= username %> di Habitica, \">klik di sini untuk membuat kata sandi baru. Tautan akan hangus setelah 24 jam.
Kalau kamu tidak pernah meminta reset kata sandi, abaikan saja email ini.",
- "invalidLoginCredentialsLong": "Uh-oh - your email address / login name or password is incorrect.\n- Make sure they are typed correctly. Your login name 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": "O-ow - alamat email / nama penggunamu atau kata sandimu tidak benar.\n- Pastikan semuanya telah diketik dengan benar. Nama pengguna dan kata sandimu sensitif terhadap huruf kapital.\n- Kamu mungkin terdaftar menggunakan Facebook atau sign-in Google, bukan email jadi periksa ulang dengan mencoba opsi-opsi tersebut.\n- Jika kamu lupa kata sandimu, klik \"Lupa Kata Sandi\".",
"invalidCredentials": "Tidak ada akun yang menggunakan credential tersebut.",
"accountSuspended": "Akun anda telah disuspend, mohon hubungi <%= communityManagerEmail %> dengan User ID anda \"<%= userId %>\" untuk bantuan.",
"unsupportedNetwork": "Jaringan ini saat ini belum didukung.",
@@ -275,42 +276,42 @@
"heroIdRequired": "\"heroId\" harus merupakan UUID yang valid.",
"cannotFulfillReq": "Permintaanmu tidak dapat dipenuhi. Kirim email ke admin@habitica.com jika error ini terus berlangsung.",
"modelNotFound": "Model ini tidak ada.",
- "signUpWithSocial": "Sign up with <%= social %>",
- "loginWithSocial": "Log in with <%= social %>",
- "confirmPassword": "Confirm Password",
- "usernamePlaceholder": "e.g., HabitRabbit",
- "emailPlaceholder": "e.g., rabbit@example.com",
- "passwordPlaceholder": "e.g., ******************",
- "confirmPasswordPlaceholder": "Make sure it's the same password!",
- "joinHabitica": "Join Habitica",
- "alreadyHaveAccountLogin": "Already have a Habitica account? Log in.",
- "dontHaveAccountSignup": "Don’t have a Habitica account? Sign up.",
- "motivateYourself": "Motivate yourself to achieve your goals.",
- "timeToGetThingsDone": "It's time to have fun when you get things done! Join over 2.5 million Habiticans and improve your life one task at a time.",
- "singUpForFree": "Sign Up For Free",
- "or": "OR",
- "gamifyYourLife": "Gamify Your Life",
- "aboutHabitica": "Habitica is a free habit-building and productivity app that treats your real life like a game. With in-game rewards and punishments to motivate you and a strong social network to inspire you, Habitica can help you achieve your goals to become healthy, hard-working, and happy.",
- "trackYourGoals": "Track Your Habits and Goals",
- "trackYourGoalsDesc": "Stay accountable by tracking and managing your Habits, Daily goals, and To-Do list with Habitica’s easy-to-use mobile apps and web interface.",
- "earnRewards": "Earn Rewards for Your Goals",
- "earnRewardsDesc": "Check off tasks to level up your Avatar and unlock in-game features such as battle armor, mysterious pets, magic skills, and even quests!",
- "battleMonsters": "Battle Monsters with Friends",
- "battleMonstersDesc": "Fight monsters with other Habiticans! Use the Gold that you earn to buy in-game or custom rewards, like watching an episode of your favorite TV show.",
- "playersUseToImprove": "Players Use Habitica to Improve",
- "healthAndFitness": "Health and Fitness",
- "healthAndFitnessDesc": "Never motivated to floss? Can't seem to get to the gym? Habitica finally makes it fun to get healthy.",
- "schoolAndWork": "School and Work",
- "schoolAndWorkDesc": "Whether you're preparing a report for your teacher or your boss, it's easy to keep track of your progress as you tackle your toughest tasks.",
- "muchmuchMore": "And much, much more!",
- "muchmuchMoreDesc": "Our fully customizable task list means that you can shape Habitica to fit your personal goals. Work on creative projects, emphasize self-care, or pursue a different dream -- it's all up to you.",
- "levelUpAnywhere": "Level Up Anywhere",
- "levelUpAnywhereDesc": "Our mobile apps make it simple to keep track of your tasks on-the-go. Accomplish your goals with a single tap, no matter where you are.",
- "joinMany": "Join over 2,000,000 people having fun while accomplishing their goals!",
- "joinToday": "Join Habitica Today",
- "signup": "Sign Up",
- "getStarted": "Get Started",
- "mobileApps": "Mobile Apps",
- "learnMore": "Learn More",
- "useMobileApps": "Habitica is not optimized for a mobile browser. We recommend downloading our mobile apps."
+ "signUpWithSocial": "Daftar dengan <%= social %>",
+ "loginWithSocial": "Log in dengan <%= social %>",
+ "confirmPassword": "Konfirmasi Kata Sandi",
+ "usernamePlaceholder": "contoh: HabitRabbit",
+ "emailPlaceholder": "contoh: rabbit@example.com",
+ "passwordPlaceholder": "contoh: ******************",
+ "confirmPasswordPlaceholder": "Pastikan ini kata sandi yang sama!",
+ "joinHabitica": "Gabung dengan Habitica",
+ "alreadyHaveAccountLogin": "Sudah mempunyai akun Habitica? Log in.",
+ "dontHaveAccountSignup": "Tidak mempunyai akun Habitica? Daftar.",
+ "motivateYourself": "Motivasi dirimu untuk mencapai tujuan.",
+ "timeToGetThingsDone": "Ini waktunya untuk bersenang-senang sewaktu menyelesaikan tugas! Gabung dengan lebih dari 2,5 juta Habitican dan perbaiki hidupmu melalui satu per satu tugas yang terselesaikan.",
+ "singUpForFree": "Daftar Gratis",
+ "or": "ATAU",
+ "gamifyYourLife": "Buat Hidupmu Menjadi Game",
+ "aboutHabitica": "Habitica adalah aplikasi gratis untuk membangun produktivitas dan kebiasaan baik dengan mengubah kehidupan nyata menjadi permainan. Dengan imbalan dan hukuman dalam game untuk memotivasi kamu dan jaringan sosial yang kuat untuk menginspirasi kamu, Habitica dapat membantu kamu mencapai tujuanmu untuk menjadi sehat, bekerja keras, dan bahagia.",
+ "trackYourGoals": "Pantau Kebiasaan dan Targetmu",
+ "trackYourGoalsDesc": "Tetap bertanggung jawab dengan memantau dan mengatur Kebiasaan, target Harianmu, dan daftar To-Do dengan aplikasi ponsel yang mudah digunakan dan antarmuka web Habitica.",
+ "earnRewards": "Dapatkan Hadiah untuk Targetmu",
+ "earnRewardsDesc": "Selesaikan tugasmu untuk membuat Avatarmu naik level dan membuka fitur dalam game seperti baju perang, peliharaan misterius, kemampuan ajaib, dan bahkan misi!",
+ "battleMonsters": "Kalahkan Monster bersama Teman-Teman",
+ "battleMonstersDesc": "Kalahkan monster bersama Habitican lain! Gunakan Koin Emas yang kamu hasilkan untuk membeli hadiah kustom atau yang di dalam game, seperti menonton satu episode acara TV favoritmu.",
+ "playersUseToImprove": "Pemain Menggunakan Habitica untuk Menjadi Lebih Baik",
+ "healthAndFitness": "Kesehatan dan Kebugaran",
+ "healthAndFitnessDesc": "Tidak termotivasi untuk membersihkan gigi? Tidak berniat pergi ke gym? Habitica akhirnya membuat hidup sehat seru.",
+ "schoolAndWork": "Sekolah dan Kerja",
+ "schoolAndWorkDesc": "Jika kamu sedang menyiapkan laporan untuk guru atau bosmu, akan lebih mudah untuk memantau kemajuannya selagi kamu mengalahkan tugasmu yang paling susah.",
+ "muchmuchMore": "Dan masih banyak lagi!",
+ "muchmuchMoreDesc": "Daftar tugas kami yang dapat diubah sepenuhnya berarti kamu dapat membentuk Habitica untuk memenuhi tujuan pribadimu. Buat proyek kreatif, berfokus pada perawatan diri, atau kejar mimpi yang berbeda -- semua terserah kepadamu.",
+ "levelUpAnywhere": "Naik Level Dimana Saja",
+ "levelUpAnywhereDesc": "Aplikasi ponsel kami memantau kemajuan tugasmu dengan mudah sewaktu kamu sedang pergi. Capai targetmu dengan satu sentuhan, di mana pun kamu berada.",
+ "joinMany": "Bergabung dengan lebih dari 2.000.000 orang bersenang-senang selagi mencapai tujuan mereka!",
+ "joinToday": "Bergabung dengan Habitica Hari Ini",
+ "signup": "Daftar",
+ "getStarted": "Memulai",
+ "mobileApps": "Aplikasi Handphone",
+ "learnMore": "Pelajari Lebih Lanjut",
+ "useMobileApps": "Habitica tidak dioptimalkan untuk browser ponsel. Kami sarankan untuk mengunduh aplikasi ponsel kami."
}
\ No newline at end of file
diff --git a/website/common/locales/id/gear.json b/website/common/locales/id/gear.json
index 080c20116cd..a22f7599225 100644
--- a/website/common/locales/id/gear.json
+++ b/website/common/locales/id/gear.json
@@ -1,17 +1,17 @@
{
"set": "Set",
- "equipmentType": "Tipe",
- "klass": "Profesi",
+ "equipmentType": "Jenis",
+ "klass": "Pekerjaan",
"groupBy": "Dikelompokkan sesuai <%= type %>",
- "classBonus": "(Item ini cocok dengan profesimu, jadi item ini mendapatkan tambahan x1.5 status.)",
- "classArmor": "Class Armor",
- "featuredset": "Featured Set <%= name %>",
+ "classBonus": "(Item ini cocok dengan pekerjaanmu, jadi item ini mendapatkan tambahan x1.5 status.)",
+ "classArmor": "Armor Pekerjaan",
+ "featuredset": "Set Spesial <%= name %>",
"mysterySets": "Set Misteri",
"gearNotOwned": "Kamu tidak memiliki item ini.",
- "noGearItemsOfType": "Kamu tidak memiliki semua ini.",
+ "noGearItemsOfType": "Kamu tidak memiliki item ini.",
"noGearItemsOfClass": "Kamu sudah mempunyai semua perlengkapan pekerjaanmu! Lebih banyak lagi akan dirilis selama Grand Gala, dekat titik balik matahari dan ekuinoks.",
"classLockedItem": "Item ini hanya tersedia untuk pekerjaan tertentu. Ganti pekerjaanmu di bawah ikon Pengguna > Pengaturan > Membangun Karakter!",
- "tierLockedItem": "Item ini hanya tersedia setelah kamu sudah membeli item sebelumnya di urutan. Terus bekerja keras untuk mendapatkan item teratas!",
+ "tierLockedItem": "Item ini hanya tersedia setelah kamu sudah membeli item sebelumnya dalam seri ini. Terus bekerja keras untuk mendapatkan item teratas!",
"sortByType": "Jenis",
"sortByPrice": "Harga",
"sortByCon": "KET",
@@ -57,17 +57,17 @@
"weaponWizard2Text": "Tongkat Permata",
"weaponWizard2Notes": "Memusatkan tenaga dengan bantuan batu akik. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>.",
"weaponWizard3Text": "Tongkat Besi",
- "weaponWizard3Notes": "Terbungkus logam untuk mampu bertahan dari panas, dingin, dan petir. Meningkatkan Kecerdasan sebesar <%= int%> dan Persepsi sebesar <%= per %>.",
+ "weaponWizard3Notes": "Terbungkus logam untuk menghantarkan panas, dingin, dan petir. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>.",
"weaponWizard4Text": "Tongkat Kuningan",
"weaponWizard4Notes": "Kekuatannya sebesar beratnya. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>.",
"weaponWizard5Text": "Tongkat Penyihir",
- "weaponWizard5Notes": "Membantu dalam merapal mantera yang paling sulit sekalipun. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>.",
+ "weaponWizard5Notes": "Membantu dalam merapal mantra yang paling sulit sekalipun. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>.",
"weaponWizard6Text": "Tongkat Emas",
"weaponWizard6Notes": "Menggunakan batu orichalcum, kebanggaan para alkemis, batu yang kuat dan langka. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>.",
"weaponHealer0Text": "Tongkat Pemula",
- "weaponHealer0Notes": "Untuk para Penyembuh yang masih pemula. Tidak menambah status apapun.",
+ "weaponHealer0Notes": "Untuk para penyembuh yang masih pemula. Tidak menambah status apapun.",
"weaponHealer1Text": "Tongkat Acolyte",
- "weaponHealer1Notes": "Benda pusaka yang dibuat pada masa awal lahirnya seorang Penyembuh. Meningkatkan Kecerdasan sebesar <%= int %>.",
+ "weaponHealer1Notes": "Benda pusaka yang dibuat pada masa awal lahirnya seorang penyembuh. Meningkatkan Kecerdasan sebesar <%= int %>.",
"weaponHealer2Text": "Tongkat Kuarsa",
"weaponHealer2Notes": "Menggunakan batu yang memiliki daya penyembuh. Meningkatkan Kecerdasan sebesar <%= int %>.",
"weaponHealer3Text": "Tongkat Ametis",
@@ -75,69 +75,69 @@
"weaponHealer4Text": "Tongkat Penyembuh",
"weaponHealer4Notes": "Penanda tempat kerja yang bisa jadi alat penyembuh juga. Meningkatkan Kecerdasan sebesar <%= int %>.",
"weaponHealer5Text": "Tongkat Kerajaan",
- "weaponHealer5Notes": "Cocok untuk tangan para raja, atau para tangan kanan raja. Meningkatkan Kecerdasan sebesar <%= int%>.",
- "weaponHealer6Text": "Tongkat Emas",
+ "weaponHealer5Notes": "Cocok untuk tangan para raja, atau para tangan kanan raja. Meningkatkan Kecerdasan sebesar <%= int %>.",
+ "weaponHealer6Text": "Tongkat Emas Kerajaan",
"weaponHealer6Notes": "Meredakan segala rasa sakit bagi siapapun yang melihatnya. Meningkatkan Kecerdasan sebesar <%= int %>.",
"weaponSpecial0Text": "Pedang Jiwa Kegelapan",
"weaponSpecial0Notes": "Menyantap jiwa musuh untuk memperkuat tiap sabetan jahatnya. Meningkatkan Kekuatan sebesar <%= str %>.",
"weaponSpecial1Text": "Pedang Kristal",
- "weaponSpecial1Notes": "Permukaan berkilaunya mengisahkan kehidupan para pahlawan. Meningkatkan semua kemampuan sebesar <%= attrs %>.",
+ "weaponSpecial1Notes": "Permukaan berkilaunya mengisahkan kehidupan para pahlawan. Meningkatkan semua atribut sebesar <%= attrs %>.",
"weaponSpecial2Text": "Tongkat Naga Stephen Weber",
"weaponSpecial2Notes": "Rasakan kekuatan naga dari dalam! Meningkatkan Kekuatan dan Persepsi masing-masing sebesar <%= attrs %>.",
"weaponSpecial3Text": "Mustaine's Milestone Mashing Morning Star",
- "weaponSpecial3Notes": "Rapat, monster, rasa sakit: sudah diatasi! Hancurkan! Meningkatkan Kekuatan, Kecerdasan, dan Ketahanan masing-masing sebesar <%= attrs %>.",
+ "weaponSpecial3Notes": "Rapat, raksasa, rasa sakit: rampung! Roboh! Meningkatkan Kekuatan, Kecerdasan, dan Ketahanan masing-masing sebesar <%= attrs %>.",
"weaponSpecialCriticalText": "Palu Kritis Penghancur Bug",
- "weaponSpecialCriticalNotes": "Jawara ini berhasil mengalahkan sebuah musuh kritis GitHub meskipun ksatria yang lain gagal. Dibuat dari tulang belulang dari Bug, palu ini menyerang dengan serangan kritis yang dahsyat. Meningkatkan Kekuatan dan Persepsi masing-masing sebanyak <%= attrs %>.",
+ "weaponSpecialCriticalNotes": "Jawara ini berhasil mengalahkan sebuah musuh kritis GitHub meskipun ksatria yang lain gagal. Dibuat dari tulang belulang dari Bug, palu ini menyerang dengan serangan kritis yang dahsyat. Meningkatkan Kekuatan dan Persepsi masing-masing sebesar <%= attrs %>.",
"weaponSpecialTakeThisText": "Pedang Take This",
- "weaponSpecialTakeThisNotes": "Pedang ini didapatkan bagi para partisipan yang bergabung dalam Tantangan yang disponsori oleh Take This. Selamat! Meningkatkan semua atribut sebesar <%= attrs %>.",
+ "weaponSpecialTakeThisNotes": "Pedang ini didapatkan oleh para partisipan yang bergabung dalam Tantangan yang disponsori oleh Take This. Selamat! Meningkatkan semua atribut sebesar <%= attrs %>.",
"weaponSpecialTridentOfCrashingTidesText": "Trisula Pemecah Ombak",
"weaponSpecialTridentOfCrashingTidesNotes": "Memberi kemampuan untuk memerintah para ikan, sekaligus memberi tusukan yang kuat ke tugas-tugasmu. Meningkatkan Kecerdasan sebesar <%= int %>.",
"weaponSpecialTaskwoodsLanternText": "Lentera Taskwood",
- "weaponSpecialTaskwoodsLanternNotes": "Diberikan kepada penjaga hantu Taskwood Orchards pada awal waktu, lentera ini dapat menerangkan segala kegelapan dan memiliki sihir kuat. Menambah <%= attrs %> ke Persepsi dan Kecerdasan.",
- "weaponSpecialBardInstrumentText": "Seruling Penyair",
- "weaponSpecialBardInstrumentNotes": "Mainkan sebuah lagu gembira dengan kecapi gaib ini! Menambahkan <%= attrs %> ke Kecerdasan dan Persepsi",
+ "weaponSpecialTaskwoodsLanternNotes": "Diberikan kepada hantu penjaga Taskwood Orchards pada waktu fajar, lentera ini dapat menerangi kegelapan terdalam dan menjalin sihir yang kuat. Meningkatkan Persepsi dan Kecerdasan masing-masing sebesar <%= attrs %>.",
+ "weaponSpecialBardInstrumentText": "Kecapi Penyair",
+ "weaponSpecialBardInstrumentNotes": "Mainkan sebuah lagu gembira dengan kecapi magis ini! Meningkatkan Kecerdasan dan Persepsi masing-masing sebesar <%= attrs %>.",
"weaponSpecialLunarScytheText": "Sabit Bulan",
- "weaponSpecialLunarScytheNotes": "Gosok sabit ini secara teratur, atau kekuatannya akan memudar. Meningkatkan Kekuatan dan Persepsi masing-masing sebanyak <%= attrs %>.",
- "weaponSpecialMammothRiderSpearText": "Tombak Pengendara Mammoth",
+ "weaponSpecialLunarScytheNotes": "Gosok sabit ini secara teratur, atau kekuatannya akan memudar. Meningkatkan Kekuatan dan Persepsi masing-masing sebesar <%= attrs %>.",
+ "weaponSpecialMammothRiderSpearText": "Tombak Penunggang Mammoth",
"weaponSpecialMammothRiderSpearNotes": "Kuarsa mawar tajam di ujung tombak ini akan menyelimutimu dengan kekuatan untuk merapal mantra dari zaman purbakala. Meningkatkan Kecerdasan sebesar <%= int %>.",
- "weaponSpecialPageBannerText": "Page Banner",
+ "weaponSpecialPageBannerText": "Panji Lembaran",
"weaponSpecialPageBannerNotes": "Lambaikan panjimu setinggi mungkin untuk mengobarkan kepercayaan diri! Meningkatkan Kekuatan sebesar <%= str %>.",
- "weaponSpecialRoguishRainbowMessageText": "Roguish Rainbow Message",
- "weaponSpecialRoguishRainbowMessageNotes": "This sparkly envelope contains messages of encouragement from Habiticans, and a touch of magic to help speed your deliveries! Increases Perception by <%= per %>.",
+ "weaponSpecialRoguishRainbowMessageText": "Surat Pelangi Nakal",
+ "weaponSpecialRoguishRainbowMessageNotes": "Amplop gemerlapan ini berisi pesan penyemangat dari para Habitican, dan setitik sihir untuk mempercepat pengirimannya! Meningkatkan Persepsi sebesar <%= per %>.",
"weaponSpecialSkeletonKeyText": "Kunci Tulang",
- "weaponSpecialSkeletonKeyNotes": "All the best Sneakthieves carry a key that can open any lock! Increases Constitution by <%= con %>.",
- "weaponSpecialNomadsScimitarText": "Nomad's Scimitar",
- "weaponSpecialNomadsScimitarNotes": "The curved blade of this Scimitar is perfect for attacking Tasks from the back of a mount! Increases Intelligence by <%= int %>.",
- "weaponSpecialFencingFoilText": "Fencing Foil",
- "weaponSpecialFencingFoilNotes": "Should anyone dare to impugn your honor, you'll be ready with this fine foil! Increases Strength by <%= str %>.",
+ "weaponSpecialSkeletonKeyNotes": "Semua Pencuri Penyelinap terbaik selalu membawa kunci yang dapat membuka segala gembok! Meningkatkan Ketahanan sebesar <%= con %>.",
+ "weaponSpecialNomadsScimitarText": "Pedang Lengkung Nomad",
+ "weaponSpecialNomadsScimitarNotes": "Bilah pedang melengkung Scimitar ini cocok untuk menyerang Tugas sambil menaiki seekor tunggangan! Meningkatkan Kecerdasan sebesar <%= int %>.",
+ "weaponSpecialFencingFoilText": "Pedang Anggar",
+ "weaponSpecialFencingFoilNotes": "Jika ada orang yang berani menentang kehormatanmu, kamu akan siap menggunakan pedang runcing ini! Meningkatkan Kekuatan sebesar <%= str %>.",
"weaponSpecialTachiText": "Tachi",
- "weaponSpecialTachiNotes": "This light and curved sword will shred your tasks to ribbons! Increases Strength by <%= str %>.",
+ "weaponSpecialTachiNotes": "Pedang yang ringan dan melengkung ini akan mengiris tugasmu menjadi pita! Meningkatkan Kekuatan sebesar <%= str %>.",
"weaponSpecialAetherCrystalsText": "Kristal Aether",
- "weaponSpecialAetherCrystalsNotes": "These bracers and crystals once belonged to the Lost Masterclasser herself. Increases all attributes by <%= attrs %>.",
+ "weaponSpecialAetherCrystalsNotes": "Pelindung tangan dan kristal ini pernah menjadi kepunyaan sang Masterclasser yang Hilang. Meningkatkan semua atribut sebesar <%= attrs %>.",
"weaponSpecialYetiText": "Tombak Penjinak Yeti",
- "weaponSpecialYetiNotes": "Tombak ini membuat penggunanya mampu memerintah Yeti manapun. Meningkatkan Kekuatan sebanyak <%= str %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
+ "weaponSpecialYetiNotes": "Tombak ini membuat penggunanya mampu memerintah yeti manapun. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
"weaponSpecialSkiText": "Tongkat Ski Pembunuh",
- "weaponSpecialSkiNotes": "Senjata yang mampu menghancurkan pasukan musuh! dan juga mampu membuat belokan paralel yang lancar. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
+ "weaponSpecialSkiNotes": "Senjata yang mampu menghancurkan pasukan musuh! Juga mampu membuat belokan paralel yang lancar. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
"weaponSpecialCandycaneText": "Tongkat Permen",
- "weaponSpecialCandycaneNotes": "Tongkat Penyihir yang sangat kuat. Sangat ENAK, beneran! senjata untuk dua tangan. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
+ "weaponSpecialCandycaneNotes": "Tongkat penyihir yang sangat kuat. Sangat ENAK, beneran! Senjata untuk dua tangan. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
"weaponSpecialSnowflakeText": "Tongkat Kristal Salju",
"weaponSpecialSnowflakeNotes": "Tongkat ini berkilauan dengan kekuatan penyembuhnya yang tak terbatas. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
"weaponSpecialSpringRogueText": "Cakar Kait",
"weaponSpecialSpringRogueNotes": "Bagus untuk memanjat bangunan tinggi, dan merusak karpet. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2014 Edisi Terbatas.",
"weaponSpecialSpringWarriorText": "Pedang Wortel",
- "weaponSpecialSpringWarriorNotes": "Pedang kuat ini dapat membelah musuh dengan mudah! Bisa juga dimakan dikala lapar ditengah pertarungan. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2014 Edisi Terbatas.",
+ "weaponSpecialSpringWarriorNotes": "Pedang kuat ini dapat membelah musuh dengan mudah! Bisa juga dimakan sebagai cemilan di tengah pertarungan. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2014 Edisi Terbatas.",
"weaponSpecialSpringMageText": "Tongkat Keju Swiss",
"weaponSpecialSpringMageNotes": "Hanya tikus terkuat yang bisa tahan memegang tongkat sakti ini tanpa tergoda memakannya. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Semi 2014 Edisi Terbatas.",
- "weaponSpecialSpringHealerText": "Tulang Antik",
+ "weaponSpecialSpringHealerText": "Tulang Cinta",
"weaponSpecialSpringHealerNotes": "KEJAR! Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Semi 2014 Edisi Terbatas.",
"weaponSpecialSummerRogueText": "Pedang Bajak Laut",
"weaponSpecialSummerRogueNotes": "Awas! Kau akan membuat Keseharianmu berjalan di atas palang kayu! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
"weaponSpecialSummerWarriorText": "Pembelah Lautan",
- "weaponSpecialSummerWarriorNotes": "Tidak ada tugas manapun yang sanggup menghadapi belati ini! Meningkatkan Kekuatan sebesar <%= str %>. Peralatan Musim Panas 2014 Edisi Terbatas.",
- "weaponSpecialSummerMageText": "Penangkap Rumput Laut.",
+ "weaponSpecialSummerWarriorNotes": "Tidak ada tugas manapun yang sanggup menghadapi belati ini! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
+ "weaponSpecialSummerMageText": "Penangkap Rumput Laut",
"weaponSpecialSummerMageNotes": "Trisula ini digunakan untuk mendapatkan rumput laut secara efektif, menambah penghasilan panen petani rumput laut! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
"weaponSpecialSummerHealerText": "Tongkat Karang Laut",
- "weaponSpecialSummerHealerNotes": "Tongkat ini, terbuat dari akuamarin dan karang hidup, sangat menarik bagi gerombolan ikan. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
+ "weaponSpecialSummerHealerNotes": "Tongkat ini, terbuat dari aquamarine dan karang hidup, sangat menarik bagi gerombolan ikan. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
"weaponSpecialFallRogueText": "Pancang Perak",
"weaponSpecialFallRogueNotes": "Menyingkirkan para setan. Juga menyingkirkan para serigala jadi-jadian, karena kamu sendiri tidak bisa bedakan mereka dari manusia biasa. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2014 Edisi Terbatas.",
"weaponSpecialFallWarriorText": "Cakar Penangkap yang Ilmiah",
@@ -147,25 +147,25 @@
"weaponSpecialFallHealerText": "Tongkat Scarab",
"weaponSpecialFallHealerNotes": "Scarab di tongkat ini melindungi dan menyembuhkan siapapun yang memilikinya. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Gugur 2014 Edisi Terbatas.",
"weaponSpecialWinter2015RogueText": "Tombak Es",
- "weaponSpecialWinter2015RogueNotes": "Anda benar-benar, pasti, sungguh-sungguh hanya mengambil ini dari tanah . Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2014-2015 Edisi Terbatas.",
+ "weaponSpecialWinter2015RogueNotes": "Kamu benar-benar, pasti, sungguh-sungguh baru saja memungut ini dari jalanan. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2014-2015 Edisi Terbatas.",
"weaponSpecialWinter2015WarriorText": "Pedang Permen Karet",
- "weaponSpecialWinter2015WarriorNotes": "Pedang yang kelihatannya enak ini bakal mengundang banyak monster... tapi santai saja, kamu bisa mengalahkan mereka semua! Meningkatkan Kekuatan sebanyak <%= str %>. Peralatan Musim Dingin 2014-2015 Edisi Terbatas.",
+ "weaponSpecialWinter2015WarriorNotes": "Pedang yang kelihatannya enak ini bakal mengundang banyak monster... tapi santai saja, kamu bisa mengalahkan mereka semua! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2014-2015 Edisi Terbatas.",
"weaponSpecialWinter2015MageText": "Tongkat Cahaya Musim Dingin",
"weaponSpecialWinter2015MageNotes": "Cahaya dari tongkat kristal ini mengisi hatimu dengan kebahagiaan. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2014-2015 Edisi Terbatas.",
"weaponSpecialWinter2015HealerText": "Tongkat Penentram",
- "weaponSpecialWinter2015HealerNotes": "Tongkat kerajaan ini meredakan pegal linu dan menghilangkan stres. Meningkatkan Kecerdasan sebesar <%= int %>. Peralatan Musim Dingin 2014-2015 Edisi Terbatas.",
+ "weaponSpecialWinter2015HealerNotes": "Tongkat kerajaan ini meredakan pegal linu dan menghilangkan stres. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2014-2015 Edisi Terbatas.",
"weaponSpecialSpring2015RogueText": "Peledak Berdecit",
- "weaponSpecialSpring2015RogueNotes": "Jangan biarkan suara anehnya menipumu - ini peledak yang sangat hebat. Meningkatkan Kekuatan sebanyak <%= str %>. Peralatan Musim Semi 2015 Edisi Terbatas.",
+ "weaponSpecialSpring2015RogueNotes": "Jangan biarkan suara anehnya menipumu - ini peledak yang sangat hebat. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2015 Edisi Terbatas.",
"weaponSpecialSpring2015WarriorText": "Pemukul dari Tulang",
- "weaponSpecialSpring2015WarriorNotes": "Ini pemukul tulang untuk ajing yang benar-benar berani dan bukannya mainan yang diberikan oleh Penyihir Musim padamu karena siapa anjing yang baik? Siapaaaa anjing yang baik?? Kamu!!! Kamu anjing yang baik!!! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2015 Edisi Terbatas.",
+ "weaponSpecialSpring2015WarriorNotes": "Ini pemukul tulang untuk anjing yang benar-benar berani dan bukannya mainan yang diberikan oleh Penyihir Musim padamu karena siapa anjing yang baik? Siapaaaa anjing yang baik?? Kamu!!! Kamu anjing pintar!!! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2015 Edisi Terbatas.",
"weaponSpecialSpring2015MageText": "Tongkat Penyihir",
"weaponSpecialSpring2015MageNotes": "Sulaplah wortelmu sendiri dengan tongkat ajaib ini. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Semi 2015 Edisi Terbatas.",
"weaponSpecialSpring2015HealerText": "Mainan Kucing",
"weaponSpecialSpring2015HealerNotes": "Ketika kamu mengguncangnya, bakal ada suara lucu yang akan membuat SEMUA ORANG terhibur berjam-jam. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Semi 2015 Edisi Terbatas.",
- "weaponSpecialSummer2015RogueText": "Koral Penembak",
- "weaponSpecialSummer2015RogueNotes": "Jenis koral api ini memiliki kemampuan untuk menembakkan racunnya melewati air. Meningkatkan Kekuatan sebesar <%= str %>. Peralatan Musim Panas Edisi Terbatas 2015.",
+ "weaponSpecialSummer2015RogueText": "Koral Membara",
+ "weaponSpecialSummer2015RogueNotes": "Jenis koral api ini memiliki kemampuan untuk menembakkan racunnya menembus air. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2015 Edisi Terbatas.",
"weaponSpecialSummer2015WarriorText": "Ikan Pedang Matahari",
- "weaponSpecialSummer2015WarriorNotes": "Ikan Pedang Matahari adalah senjata yang hebat, buktinya dia bisa disuruh berhenti menggelepar. Meningkatkan Kekuatan sebesar <%= str %>. Peralatan Musim Panas Edisi Terbatas 2015.",
+ "weaponSpecialSummer2015WarriorNotes": "Ikan Pedang Matahari adalah senjata yang hebat, buktinya dia bisa disuruh berhenti menggelepar. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2015 Edisi Terbatas.",
"weaponSpecialSummer2015MageText": "Tongkat Soothsayer",
"weaponSpecialSummer2015MageNotes": "Kekuatan yang hebat tersembunyi di dalam permata tongkat ini. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Semi 2015 Edisi Terbatas.",
"weaponSpecialSummer2015HealerText": "Tongkat Ombak",
@@ -175,83 +175,91 @@
"weaponSpecialFall2015WarriorText": "Papan Kayu",
"weaponSpecialFall2015WarriorNotes": "Cocok untuk membantu menaikkan barang-barang di ladang jagung dan/atau menghajar tugas-tugas. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2015 Edisi Terbatas.",
"weaponSpecialFall2015MageText": "Benang Ajaib",
- "weaponSpecialFall2015MageNotes": "Penyihit Jahit terkuat dapat mengontrol benang ajaib ini tanpa menyentuhnya! Meningkat Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2015 Edisi Terbatas.",
+ "weaponSpecialFall2015MageNotes": "Penyihit Jahit terkuat dapat mengontrol benang ajaib ini tanpa menyentuhnya! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2015 Edisi Terbatas.",
"weaponSpecialFall2015HealerText": "Ramuan Lendir Rawa",
"weaponSpecialFall2015HealerNotes": "Diseduh dengan sempurna! Sekarang yang harus kamu lakukan adalah meyakinkan dirimu untuk meminumnya. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Gugur 2015 Edisi Terbatas.",
"weaponSpecialWinter2016RogueText": "Secangkir Cokelat",
- "weaponSpecialWinter2016RogueNotes": "Minuman hangat, atau senjata air panas? Kamu yang menentukan... Meningkatkan kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2015-2016 Edisi Terbatas.",
+ "weaponSpecialWinter2016RogueNotes": "Minuman hangat, atau senjata air panas? Kamu yang menentukan... Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2015-2016 Edisi Terbatas.",
"weaponSpecialWinter2016WarriorText": "Sekop Kokoh",
- "weaponSpecialWinter2016WarriorNotes": "Sekoplah tugas-tugas yang tidak terselesaikan dari jalanmu! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2015-2016 Edisi Terbatas. ",
+ "weaponSpecialWinter2016WarriorNotes": "Sekoplah tugas-tugas yang tidak terselesaikan keluar dari jalanmu! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2015-2016 Edisi Terbatas. ",
"weaponSpecialWinter2016MageText": "Papan Salju Sihir",
"weaponSpecialWinter2016MageNotes": "Trikmu sangat keren, pasti gara-gara sihir! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2015-2016 Edisi Terbatas.",
"weaponSpecialWinter2016HealerText": "Meriam Pesta",
"weaponSpecialWinter2016HealerNotes": "HOREEEEEE!!!!!! SELAMAT MUSIM DINGIN!!!!!!!! Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2015-2016 Edisi Terbatas.",
- "weaponSpecialSpring2016RogueText": "Obor",
- "weaponSpecialSpring2016RogueNotes": "Kamu telah menguasai bola, alat pemukul, dan pisau. Sekarang kamu berlatih memainkan obor! Awoo! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
+ "weaponSpecialSpring2016RogueText": "Bolas Api",
+ "weaponSpecialSpring2016RogueNotes": "Kamu telah menguasai bola, alat pemukul, dan pisau. Sekarang kamu berlatih sirkus api! Awoo! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
"weaponSpecialSpring2016WarriorText": "Pemukul Keju",
"weaponSpecialSpring2016WarriorNotes": "Tidak ada yang punya teman sebanyak seekor tikus dengan kejunya yang empuk. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
"weaponSpecialSpring2016MageText": "Tongkat Lonceng",
- "weaponSpecialSpring2016MageNotes": "Abra-ka-dabra! Begitu mempesona, kau mungkin memikat dirimu sendiri! Ooh... benda itu bergemerincing... Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
+ "weaponSpecialSpring2016MageNotes": "Abra-cat-abra! Begitu mempesona, kamu mungkin memikat dirimu sendiri! Ooh... benda itu bergemerincing... Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
"weaponSpecialSpring2016HealerText": "Tongkat Bunga Musim Semi",
- "weaponSpecialSpring2016HealerNotes": "Dengan gelombang dan kedipan, kamu membuat padang rumput dan hutan bermekaran! Atau memukul tikus biang onar di kepala. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
+ "weaponSpecialSpring2016HealerNotes": "Dengan satu lambaian dan kedipan, kamu membuat padang rumput dan hutan bermekaran! Atau memukul tikus biang onar di kepala. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
"weaponSpecialSummer2016RogueText": "Tongkat Listrik",
- "weaponSpecialSummer2016RogueNotes": "Siapapun yang bertarung denganmu akan mendapatkan sebuah \"kejutan\"... Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas Edisi Terbatas 2016.",
+ "weaponSpecialSummer2016RogueNotes": "Siapapun yang bertarung denganmu akan mendapatkan sebuah \"kejutan\"... Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"weaponSpecialSummer2016WarriorText": "Pedang Kait",
- "weaponSpecialSummer2016WarriorNotes": "Bite those tough tasks with this hooked sword! Increases Strength by <%= str %>. Limited Edition 2016 Summer Gear.",
+ "weaponSpecialSummer2016WarriorNotes": "Potong tugas-tugas keras itu dengan menggunakan pedang berkait ini! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"weaponSpecialSummer2016MageText": "Tongkat Busa Laut",
- "weaponSpecialSummer2016MageNotes": "All the power of the seas filters through this staff. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2016 Summer Gear.",
+ "weaponSpecialSummer2016MageNotes": "Semua kekuatan laut mengalir melewati tongkat ini. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"weaponSpecialSummer2016HealerText": "Trisula Penyembuh",
- "weaponSpecialSummer2016HealerNotes": "Satu duri membunuh, duri lainnya menyembuhkan. Meningkatkan Kecerdasan sebanyak <%= int %>. Perlengkapan Musim Panas Edisi Terbatas 2016.",
+ "weaponSpecialSummer2016HealerNotes": "Satu duri membunuh, duri lainnya menyembuhkan. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"weaponSpecialFall2016RogueText": "Belati Gigitan Laba-laba",
- "weaponSpecialFall2016RogueNotes": "Feel the sting of the spider's bite! Increases Strength by <%= str %>. Limited Edition 2016 Autumn Gear.",
+ "weaponSpecialFall2016RogueNotes": "Rasakan betapa sakitnya gigitan seekor laba-laba! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
"weaponSpecialFall2016WarriorText": "Akar Penyerang",
- "weaponSpecialFall2016WarriorNotes": "Attack your tasks with these twisting roots! Increases Strength by <%= str %>. Limited Edition 2016 Autumn Gear.",
- "weaponSpecialFall2016MageText": "Ominous Orb",
- "weaponSpecialFall2016MageNotes": "Don't ask this orb to tell your future... Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2016 Autumn Gear.",
+ "weaponSpecialFall2016WarriorNotes": "Serang tugasmu dengan menggunakan pilinan akar-akar ini! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "weaponSpecialFall2016MageText": "Bola Firasat Buruk",
+ "weaponSpecialFall2016MageNotes": "Jangan meminta bola kristal ini untuk memberitahukan masa depanmu... Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
"weaponSpecialFall2016HealerText": "Ular Berbisa",
- "weaponSpecialFall2016HealerNotes": "One bite harms, and another bite heals. Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
+ "weaponSpecialFall2016HealerNotes": "Satu gigitan mematikan, dan gigitan lainnya menyembuhkan. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
"weaponSpecialWinter2017RogueText": "Kapak Es",
- "weaponSpecialWinter2017RogueNotes": "Kapak ini bagus untuk menyerang, bertahan, dan memanjat es! Meningkatkan Kekuatan sejumlah <%= str %>. Perlengkapan Musim Dingin Edisi Terbatas 2016-2017.",
+ "weaponSpecialWinter2017RogueNotes": "Kapak ini bagus untuk menyerang, bertahan, dan memanjat es! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"weaponSpecialWinter2017WarriorText": "Tongkat yang Kuat",
- "weaponSpecialWinter2017WarriorNotes": "Conquer your goals by whacking them with this mighty stick! Increases Strength by <%= str %>. Limited Edition 2016-2017 Winter Gear.",
+ "weaponSpecialWinter2017WarriorNotes": "Taklukan targetmu dengan menghajarnya menggunakan tongkat perkasa ini! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"weaponSpecialWinter2017MageText": "Tongkat Kristal Serigala Musim Dingin",
- "weaponSpecialWinter2017MageNotes": "The glowing blue crystal set in the end of this staff is called the Winter Wolf's Eye! It channels magic from snow and ice. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
- "weaponSpecialWinter2017HealerText": "Sugar-Spun Wand",
- "weaponSpecialWinter2017HealerNotes": "This wand can reach into your dreams and bring you visions of dancing sugarplums. Increases Intelligence by <%= int %>. Limited Edition 2016-2017 Winter Gear.",
+ "weaponSpecialWinter2017MageNotes": "Kristal biru bercahaya di ujung tongkat ini dinamakan Mata Serigala Musim Dingin! Kristal ini dapat mengalirkan sihir dari salju dan es. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
+ "weaponSpecialWinter2017HealerText": "Tongkat Lilitan Gula",
+ "weaponSpecialWinter2017HealerNotes": "Tongkat ini bisa memasuki mimpimu dan menghadirkan gambaran para sugarplum yang menari. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"weaponSpecialSpring2017RogueText": "Karrotana",
- "weaponSpecialSpring2017RogueNotes": "These blades will make quick work of tasks, but also are handy for slicing vegetables! Yum! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
- "weaponSpecialSpring2017WarriorText": "Feathery Whip",
- "weaponSpecialSpring2017WarriorNotes": "This mighty whip will tame the unruliest task. But.. It's also… So FUN AND DISTRACTING!! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
- "weaponSpecialSpring2017MageText": "Magic Fetching Stick",
- "weaponSpecialSpring2017MageNotes": "When you're not crafting spells with it, you can throw it and then bring it back! What fun!! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
- "weaponSpecialSpring2017HealerText": "Egg Wand",
- "weaponSpecialSpring2017HealerNotes": "The true magic of this wand is the secret of new life inside the colorful shell. Increases Intelligence by <%= int %>. Limited Edition 2017 Spring Gear.",
- "weaponSpecialSummer2017RogueText": "Sea Dragon Fins",
- "weaponSpecialSummer2017RogueNotes": "The edges of these fins are razor-sharp. Increases Strength by <%= str %>. Limited Edition 2017 Summer Gear.",
- "weaponSpecialSummer2017WarriorText": "The Mightiest Beach Umbrella",
- "weaponSpecialSummer2017WarriorNotes": "All fear it. Increases Strength by <%= str %>. Limited Edition 2017 Summer Gear.",
- "weaponSpecialSummer2017MageText": "Whirlpool Whips",
- "weaponSpecialSummer2017MageNotes": "Summon up magical whips of boiling water to smite your tasks! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Summer Gear.",
- "weaponSpecialSummer2017HealerText": "Pearl Wand",
- "weaponSpecialSummer2017HealerNotes": "A single touch from this pearl-tipped wand soothes away all wounds. Increases Intelligence by <%= int %>. Limited Edition 2017 Summer Gear.",
- "weaponSpecialFall2017RogueText": "Candied Apple Mace",
- "weaponSpecialFall2017RogueNotes": "Defeat your foes with sweetness! Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.",
- "weaponSpecialFall2017WarriorText": "Candy Corn Lance",
- "weaponSpecialFall2017WarriorNotes": "All your foes will cower before this tasty-looking lance, regardless of whether they're ghosts, monsters, or red To-Dos. Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.",
- "weaponSpecialFall2017MageText": "Spooky Staff",
- "weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
- "weaponSpecialFall2017HealerText": "Creepy Candelabra",
- "weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialSpring2017RogueNotes": "Pedang ini akan mengerjakan tugas dengan cepat, tapi juga berguna untuk memotong sayuran! Nyam! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Semi 2017 Edisi Terbatas.",
+ "weaponSpecialSpring2017WarriorText": "Cambuk Berbulu",
+ "weaponSpecialSpring2017WarriorNotes": "Cambuk perkasa ini akan menjinakkan tugas paling liar. Tapi.. Ini juga.. Sangat SERU DAN MENGALIHKAN PERHATIAN!! Meningkatkan Kekuatan sebesar<%= str %>. Perlengkapan Musim Semi 2017 Edisi Terbatas.",
+ "weaponSpecialSpring2017MageText": "Tongkat Pengambil Sihir",
+ "weaponSpecialSpring2017MageNotes": "Saat kamu sedang tidak menggunakannya untuk merapal mantra, kamu bisa melemparnya kemudian membawanya balik! Seru banget kan!! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Semi 2017 Edisi Terbatas.",
+ "weaponSpecialSpring2017HealerText": "Tongkat Telur",
+ "weaponSpecialSpring2017HealerNotes": "Sihir asli dari tongkat ini adalah rahasia dari kehidupan baru di dalam cangkang warna-warninya. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Semi 2017 Edisi Terbatas.",
+ "weaponSpecialSummer2017RogueText": "Sirip Naga Laut",
+ "weaponSpecialSummer2017RogueNotes": "Pinggiran sirip-sirip ini setajam silet. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "weaponSpecialSummer2017WarriorText": "Payung Pantai Terperkasa",
+ "weaponSpecialSummer2017WarriorNotes": "Semua takut kepadanya. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "weaponSpecialSummer2017MageText": "Cambuk Pusaran Air",
+ "weaponSpecialSummer2017MageNotes": "Datangkan cambuk ajaib dari air mendidih untuk menghantam tugasmu! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "weaponSpecialSummer2017HealerText": "Tongkat Mutiara",
+ "weaponSpecialSummer2017HealerNotes": "Satu sentuhan dari tongkat berujung mutiara ini menyembuhkan semua luka. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "weaponSpecialFall2017RogueText": "Gada Permen Apel",
+ "weaponSpecialFall2017RogueNotes": "Kalahkan musuhmu dengan kemanisan! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "weaponSpecialFall2017WarriorText": "Tombak Permen Jagung",
+ "weaponSpecialFall2017WarriorNotes": "Semua musuhmu akan meringkuk ketakutan di hadapan tombak yang terlihat enak ini, tidak peduli apakah itu hantu, monster, atau To-Do merah. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "weaponSpecialFall2017MageText": "Tongkat Berhantu",
+ "weaponSpecialFall2017MageNotes": "Mata dari tengkorak bercahaya pada tongkat ini memancarkan sihir dan misteri. Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "weaponSpecialFall2017HealerText": "Candelabra Seram",
+ "weaponSpecialFall2017HealerNotes": "Cahayanya mengusir rasa takut dan memberi tahu orang-orang bahwa kamu datang untuk menolong. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "weaponSpecialWinter2018RogueText": "Kail Peppermint",
+ "weaponSpecialWinter2018RogueNotes": "Sempurna untuk memanjat dinding atau mengalihkan perhatian lawanmu dengan permen yang sangat, sangat manis. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "weaponSpecialWinter2018WarriorText": "Palu Pita Liburan",
+ "weaponSpecialWinter2018WarriorNotes": "Tampilan yang berkilau dari senjata ini akan menyilaukan musuhmu saat kamu mengayunkannya! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "weaponSpecialWinter2018MageText": "Confetti Liburan",
+ "weaponSpecialWinter2018MageNotes": "Sihir--dan gemerlap--memenuhi ruangan! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi <%= per %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "weaponSpecialWinter2018HealerText": "Tongkat Mistletoe",
+ "weaponSpecialWinter2018HealerNotes": "Bola mistletoe ini memesona dan membawa kegembiraan bagi siapapun yang melintas! Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
"weaponMystery201411Text": "Garpu Makan",
"weaponMystery201411Notes": "Tusuk musuh atau tusuk makanan - semua bisa dilakukan dengan garpu ini! Tidak menambah status apapun.. Item Pelanggan November 2014.",
"weaponMystery201502Text": "Tongkat Cahaya Bersayap dari Cinta dan Juga Kejujuran",
"weaponMystery201502Notes": "demi TERBANG! untuk CINTA! juga KEJUJURAN! Tidak menambah status apapun. Benda Pelanggan Februari 2015.",
"weaponMystery201505Text": "Tombak Ksatria Hijau",
"weaponMystery201505Notes": "Tombak hijau dan silver ini akan menjatuhkan musuh dari tunggangan mereka. Tidak menambah status apapun. Item Pelanggan Mei 2015.",
- "weaponMystery201611Text": "Copious Cornucopia",
- "weaponMystery201611Notes": "All manner of delicious and wholesome foods spill forth from this horn. Enjoy the feast! Confers no benefit. November 2016 Subscriber Item.",
- "weaponMystery201708Text": "Lava Sword",
- "weaponMystery201708Notes": "The fiery glow of this sword will make quick work of even dark red Tasks! Confers no benefit. August 2017 Subscriber Item.",
+ "weaponMystery201611Text": "Cornucopia Berlimpah",
+ "weaponMystery201611Notes": "Segala hal yang enak dan makanan yang bergizi bertumpahan dari tanduk ini. Nikmati pestanya! Tidak menambah status apapun. Item Pelanggan November 2016.",
+ "weaponMystery201708Text": "Pedang Lava",
+ "weaponMystery201708Notes": "Sinar berapi dari pedang ini akan menghabiskan bahkan tugas termerahmu dengan cepat! TIdak menambah status apapun. Item Pelanggan Agustus 2017.",
"weaponMystery301404Text": "Tongkat Steampunk",
"weaponMystery301404Notes": "Cocok dibawa jalan-jalan di kota. Benda pelanggan Maret 3015. Tidak menambah status apapun.",
"weaponArmoireBasicCrossbowText": "Panah Biasa",
@@ -273,7 +281,7 @@
"weaponArmoireCrystalCrescentStaffText": "Tongkat Sabit Kristal",
"weaponArmoireCrystalCrescentStaffNotes": "Panggil kekuatan bulan sabit dengan tongkat bersinar ini! Meningkatkan Kecerdasan dan Kekuatan masing-masing sebesar <%= attrs %>. Peti Harta Karun: Set Sabit Kristal (Item 3 dari 3).",
"weaponArmoireBlueLongbowText": "Busur Panjang Biru",
- "weaponArmoireBlueLongbowNotes": "Ready... Aim... Fire! This bow has great range. Increases Perception by <%= per %>, Constitution by <%= con %>, and Strength by <%= str %>. Enchanted Armoire: Iron Archer Set (Item 3 of 3).",
+ "weaponArmoireBlueLongbowNotes": "Siap... Bidik... Tembak! Busur ini bisa mencapai jarak yang jauh. Meningkatkan Persepsi sebesar <%= per %>, Ketahanan sebesar <%= con %>, dan Kekuatan sebesar <%= str %>, Peti Harta Karun: Set Pemanah Besi (Item 3 dari 3).",
"weaponArmoireGlowingSpearText": "Tombak Berpendar",
"weaponArmoireGlowingSpearNotes": "Tombak ini menghipnotis tugas-tugas liar jadi kamu bisa menyerang mereka. Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Item Tersendiri.",
"weaponArmoireBarristerGavelText": "Palu Pengacara",
@@ -289,28 +297,32 @@
"weaponArmoireSandySpadeText": "Sekop Berpasir",
"weaponArmoireSandySpadeNotes": "Alat untuk menggali, juga untuk menerbangkan pasir ke mata musuh. Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Pesisir Pantai (Item 1 dari 3).",
"weaponArmoireCannonText": "Meriam",
- "weaponArmoireCannonNotes": "Arr! Set your aim with determination. Increases Strength by <%= str %>. Enchanted Armoire: Cannoneer Set (Item 1 of 3).",
+ "weaponArmoireCannonNotes": "Arr! Tentukan sasaranmu dengan tekad. Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Penembak Meriam (Item 1 dari 3).",
"weaponArmoireVermilionArcherBowText": "Busur Pemanah Vermilion",
- "weaponArmoireVermilionArcherBowNotes": "Your arrow will fly like a shooting star from this brilliant red bow! Increases Strength by <%= str %>. Enchanted Armoire: Vermilion Archer Set (Item 1 of 3).",
+ "weaponArmoireVermilionArcherBowNotes": "Panahmu akan terbang seperti bintang jatuh dari busur merah cerah ini! Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Pemanah Merah Cerah (Item 1 dari 3).",
"weaponArmoireOgreClubText": "Klub Ogre",
- "weaponArmoireOgreClubNotes": "This club was salvaged from an actual Ogre's lair. Increases Strength by <%= str %>. Enchanted Armoire: Ogre Outfit (Item 2 of 3).",
+ "weaponArmoireOgreClubNotes": "Gada ini dirampas dari sebuah sarang Ogre asli. Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Kostum Ogre (Item 2 dari 3).",
"weaponArmoireWoodElfStaffText": "Tongkat Kayu Elf",
- "weaponArmoireWoodElfStaffNotes": "Made from a fallen limb of an ancient tree, this staff will help you communicate with forest denizens great and small. Increases Intelligence by <%= int %>. Enchanted Armoire: Wood Elf Set (Item 3 of 3).",
- "weaponArmoireWandOfHeartsText": "Wand of Hearts",
- "weaponArmoireWandOfHeartsNotes": "This wand sparkles with a warm red light. It will also grant your heart wisdom. Increases Intelligence by <%= int %>. Enchanted Armoire: Queen of Hearts Set (Item 3 of 3).",
- "weaponArmoireForestFungusStaffText": "Forest Fungus Staff",
- "weaponArmoireForestFungusStaffNotes": "Use this gnarled staff to work mycological magic! Increases Intelligence by <%= int %> and Perception by <%= per %>. Enchanted Armoire: Independent Item.",
- "weaponArmoireFestivalFirecrackerText": "Festival Firecracker",
- "weaponArmoireFestivalFirecrackerNotes": "Enjoy this delightful sparkler responsibly. Increases Perception by <%= per %>. Enchanted Armoire: Festival Attire Set (Item 3 of 3).",
- "weaponArmoireMerchantsDisplayTrayText": "Merchant's Display Tray",
- "weaponArmoireMerchantsDisplayTrayNotes": "Use this lacquered tray to show the fine goods you're offering for sale. Increases Intelligence by <%= int %>. Enchanted Armoire: Merchant Set (Item 3 of 3).",
- "weaponArmoireBattleAxeText": "Ancient Axe",
- "weaponArmoireBattleAxeNotes": "This fine iron axe is well-suited to battling your fiercest foes or your most difficult tasks. Increases Intelligence by <%= int %> and Constitution by <%= con %>. Enchanted Armoire: Independent Item.",
+ "weaponArmoireWoodElfStaffNotes": "Dibuat dari ranting pohon kuno yang terjatuh, tongkat ini akan membantumu berkomunikasi dengan penghuni hutan baik besar maupun kecil. Meningkatkan Kecerdasan sebesar <%= int %>. Peti Harta Karun: Set Peri Pohon (Item 3 dari 3).",
+ "weaponArmoireWandOfHeartsText": "Tongkat Hati",
+ "weaponArmoireWandOfHeartsNotes": "Tongkat ini berkilau dengan cahaya merah hangat. Juga akan memberikan hatimu kebijaksanaan. Meningkatkan Kecerdasan sebesar <%= int %>. Peti Harta Karun: Set Ratu Hati (Item 3 dari 3).",
+ "weaponArmoireForestFungusStaffText": "Tongkat Jamur Hutan",
+ "weaponArmoireForestFungusStaffNotes": "Gunakan tongkat berbonggol ini untuk melakukan sihir mistis! Meningkatkan Kecerdasan sebesar <%= int %> dan Persepsi sebesar <%= per %>. Peti Harta Karun: Item Tersendiri.",
+ "weaponArmoireFestivalFirecrackerText": "Kembang Api Festival",
+ "weaponArmoireFestivalFirecrackerNotes": "Nikmati kembang api menyengankan ini dengan penuh tanggung jawab. Meningkatkan Persepsi sebesar <%= per %>. Peti Harta Karun: Set Pakaian Festival (Item 3 dari 3).",
+ "weaponArmoireMerchantsDisplayTrayText": "Nampan Pameran Saudagar",
+ "weaponArmoireMerchantsDisplayTrayNotes": "Gunakan nampan yang sudah dipernis ini untuk memamerkan barang-barang berkelas yang kamu jual. Meningkatkan Kecerdasan sebesar <%= int %>. Peti Harta Karun: Set Saudagar (Item 3 dari 3).",
+ "weaponArmoireBattleAxeText": "Kapak Kuno",
+ "weaponArmoireBattleAxeNotes": "Kapak besi tajam ini cocok untuk mengalahkan musuh terganasmu atau tugas tersulitmu. Meningkatkan Kecerdasan sebesar <%= int %> dan Ketahanan sebesar <%= con %>. Peti Harta Karun: Item Tersendiri.",
"weaponArmoireHoofClippersText": "Hoof Clippers",
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
- "weaponArmoireWeaversCombText": "Weaver's Comb",
- "weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
- "armor": "Baju Perang",
+ "weaponArmoireWeaversCombText": "Sisir Penenun",
+ "weaponArmoireWeaversCombNotes": "Gunakan sisir ini untuk merapikan benang tenunmu bersama untuk membuat sebuah kain yang tertenun rapat. Meningkatkan Persepsi sebesar <%= per %> dan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Penenun (Item 2 dari 3).",
+ "weaponArmoireLamplighterText": "Penerang Lentera",
+ "weaponArmoireLamplighterNotes": "Tongkat panjang ini mempunyai sumbu di ujungnya untuk menyalakan lentera, dan sebuah kait di ujungnya untuk mematikan lentera itu. Meningkatkan Ketahanan sebesar <%= con %> dan Persepsi sebesar <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Cambuk Pengendara Kereta",
+ "weaponArmoireCoachDriversWhipNotes": "Kudamu tahu apa yang mereka lakukan, sehingga cambuk ini hanya untuk penampilan (dan bunyi yang cetar membahana!). Meningkatkan Kecerdasan sebesar <%= int %> dan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Pengendara Kereta (Set 3 dari 3).",
+ "armor": "baju perang",
"armorCapitalized": "Baju Perang",
"armorBase0Text": "Pakaian Biasa",
"armorBase0Notes": "Pakaian biasa. Tidak menambah status apapun.",
@@ -361,20 +373,20 @@
"armorSpecial2Text": "Jubah mulia Jean Chalard",
"armorSpecial2Notes": "Membuat kamu ekstra lembut! Meningkatkan Ketahanan dan Kecerdasan masing-masing sebesar <%= attrs %>.",
"armorSpecialTakeThisText": "Baju Take This",
- "armorSpecialTakeThisNotes": "This armor was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "armorSpecialTakeThisNotes": "Baju zirah ini didapatkan dengan berpartisipasi dalam Tantangan bersponsor yang dibuat oleh Take This. Selamat! Meningkatkan semua atribut sebesar <%= attrs %>.",
"armorSpecialFinnedOceanicArmorText": "Baju Samudra Bersirip",
"armorSpecialFinnedOceanicArmorNotes": "Meskipun lembut, pakaian ini dapat membuat kulitmu mampu membakar apapun yang kamu sentuh seperti halnya koral api. Meningkatkan Kekuatan sebesar <%= str %>.",
- "armorSpecialPyromancersRobesText": "Pyromancer's Robes",
- "armorSpecialPyromancersRobesNotes": "These elegant robes bestow each strike and spell with a burst of ethereal fire. Increases Constitution by <%= con %>.",
- "armorSpecialBardRobesText": "Bardic Robes",
- "armorSpecialBardRobesNotes": "These colorful robes may be conspicuous, but you can sing your way out of any situation. Increases Perception by <%= per %>.",
- "armorSpecialLunarWarriorArmorText": "Lunar Warrior Armor",
- "armorSpecialLunarWarriorArmorNotes": "This armor is forged of moonstone and magical steel. Increases Strength and Constitution by <%= attrs %> each.",
- "armorSpecialMammothRiderArmorText": "Baju Perang Pengendara Mammoth",
+ "armorSpecialPyromancersRobesText": "Jubah Pyromancer",
+ "armorSpecialPyromancersRobesNotes": "Jubah elegan ini melimpahkan setiap serangan dan mantra dengan semburan api ethereal. Meningkatkan Ketahanan sebesar <%= con %>.",
+ "armorSpecialBardRobesText": "Jubah Penyair",
+ "armorSpecialBardRobesNotes": "Jubah warna-warni ini mungkin mencolok, tetapi kamu bisa menyanyi untuk menghindari situasi apapun. Meningkatkan Persepsi sebesar <%= per %>.",
+ "armorSpecialLunarWarriorArmorText": "Baju Zirah Ksatria Rembulan",
+ "armorSpecialLunarWarriorArmorNotes": "Baju zirah ini ditempa dari batu bulan dan baja ajaib. Meningkatkan Kekuatan dan Ketahanan masing-masing sebesar <%= attrs %>.",
+ "armorSpecialMammothRiderArmorText": "Baju Perang Penunggang Mammoth",
"armorSpecialMammothRiderArmorNotes": "This suit of fur and leather includes a snazzy cape studded with rose quartz gems. It will protect you from bitter winds as you adventure in the coldest climes. Increases Constitution by <%= con %>.",
"armorSpecialPageArmorText": "Page Armor",
"armorSpecialPageArmorNotes": "Carry everything you need in your perfect pack! Increases Constitution by <%= con %>.",
- "armorSpecialRoguishRainbowMessengerRobesText": "Roguish Rainbow Messenger Robes",
+ "armorSpecialRoguishRainbowMessengerRobesText": "Jubah Kurir Pelangi Nakal",
"armorSpecialRoguishRainbowMessengerRobesNotes": "These vividly striped robes will allow you to fly through gale-force winds smoothly and safely. Increases Strength by <%= str %>.",
"armorSpecialSneakthiefRobesText": "Sneakthief Robes",
"armorSpecialSneakthiefRobesNotes": "These robes will help hide you in the dead of night, but will also allow freedom of movement as you silently sneak about! Increases Intelligence by <%= int %>.",
@@ -382,12 +394,12 @@
"armorSpecialSnowSovereignRobesNotes": "These robes are elegant enough for court, yet warm enough for the coldest winter day. Increases Perception by <%= per %>.",
"armorSpecialNomadsCuirassText": "Nomad's Cuirass",
"armorSpecialNomadsCuirassNotes": "This armor features a strong chest-plate to protect your heart! Increases Constitution by <%= con %>.",
- "armorSpecialDandySuitText": "Dandy Suit",
- "armorSpecialDandySuitNotes": "You're undeniably dressed for success! Increases Perception by <%= per %>.",
- "armorSpecialSamuraiArmorText": "Samurai Armor",
- "armorSpecialSamuraiArmorNotes": "This strong, scaled armor is held together by elegant silk cords. Increases Perception by <%= per %>.",
- "armorSpecialTurkeyArmorBaseText": "Turkey Armor",
- "armorSpecialTurkeyArmorBaseNotes": "Keep your drumsticks warm and cozy in this feathery armor! Confers no benefit.",
+ "armorSpecialDandySuitText": "Setelan Dandy",
+ "armorSpecialDandySuitNotes": "Tak dapat disangkal lagi kalau kamu berpakaian untuk sukses! Meningkatkan Persepsi sebesar <%= per %>.",
+ "armorSpecialSamuraiArmorText": "Baju Pelindung Samurai",
+ "armorSpecialSamuraiArmorNotes": "Baju zirah bersisik yang kuat ini disambung oleh tali-tali sutra yang elegan. Meningkatkan Persepsi sebesar <%= per %>.",
+ "armorSpecialTurkeyArmorBaseText": "Baju Pelindung Kalkun",
+ "armorSpecialTurkeyArmorBaseNotes": "Menjaga pahamu hangat dan nyaman di dalam baju pelindung berbulu ini! TIdak menambah status apapun.",
"armorSpecialYetiText": "Jubah Penjinak Yeti",
"armorSpecialYetiNotes": "Berbulu dan berani. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Dingin 2013-2014 Edisi Terbatas.",
"armorSpecialSkiText": "Jaket Ski Pembunuh",
@@ -402,8 +414,8 @@
"armorSpecialBirthday2015Notes": "Selamat Ulang Tahun, Habitica! Kenakan Jubah Pesta Konyol ini untuk merayakan hari yang meriah. Tidak menambah status apapun.",
"armorSpecialBirthday2016Text": "Jubah Pesta Konyol",
"armorSpecialBirthday2016Notes": "Selamat Ulang Tahun, Habitica! Kenakan Jubah Pesta Konyol ini untuk merayakan hari yang meriah. Tidak menambah status apapun.",
- "armorSpecialBirthday2017Text": "Whimsical Party Robes",
- "armorSpecialBirthday2017Notes": "Happy Birthday, Habitica! Wear these Whimsical Party Robes to celebrate this wonderful day. Confers no benefit.",
+ "armorSpecialBirthday2017Text": "Jubah Pesta Aneh",
+ "armorSpecialBirthday2017Notes": "Selamat Ulang Tahun, Habitica! Gunakan Jubah Pesta aneh ini untuk merayakan hari yang mengagumkan ini. Tidak menambah status apapun.",
"armorSpecialGaymerxText": "Baju Prajurit Pelangi",
"armorSpecialGaymerxNotes": "Sebagai Perayaan Konferensi GaymerX, baju spesial ini berhiaskan pelangi yang cerah dan indah! GaymerX adalah konvensi gamer yang merayakan LGBTQ dan permainan dan terbuka untuk semua orang.",
"armorSpecialSpringRogueText": "Baju Kucing Lembut",
@@ -479,27 +491,27 @@
"armorSpecialSpring2016HealerText": "Celana Kelinci Berbulu",
"armorSpecialSpring2016HealerNotes": "Hop hop! Melompat dari bukit ke bukit, menyembuhkan siapapun yang membutuhkan. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Semi 2016 Edisi Terbatas.",
"armorSpecialSummer2016RogueText": "Ekor Belut",
- "armorSpecialSummer2016RogueNotes": "This electrifying garment transforms its wearer into a real Eel Rogue! Increases Perception by <%= per %>. Limited Edition 2016 Summer Gear.",
+ "armorSpecialSummer2016RogueNotes": "Pakaian yang dapat menyetrum ini mengubah pemakainya menjadi Rogue Belut asli! Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"armorSpecialSummer2016WarriorText": "Ekor Hiu",
- "armorSpecialSummer2016WarriorNotes": "This rough garment transforms its wearer into a real Shark Warrior! Increases Constitution by <%= con %>. Limited Edition 2016 Summer Gear.",
+ "armorSpecialSummer2016WarriorNotes": "Pakaian berkain kasar ini mengubah pemakainya menjadi Pendekar Hiu asli! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"armorSpecialSummer2016MageText": "Ekor Lumba-lumba",
- "armorSpecialSummer2016MageNotes": "This slippery garment transforms its wearer into a real Dolphin Mage! Increases Intelligence by <%= int %>. Limited Edition 2016 Summer Gear.",
+ "armorSpecialSummer2016MageNotes": "Pakaian licin ini mengubah pemakainya menjadi Penyihir Lumba-Lumba asli! Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"armorSpecialSummer2016HealerText": "Ekor Kuda Laut",
- "armorSpecialSummer2016HealerNotes": "This spiky garment transforms its wearer into a real Seahorse Healer! Increases Constitution by <%= con %>. Limited Edition 2016 Summer Gear.",
- "armorSpecialFall2016RogueText": "Black Widow Armor",
- "armorSpecialFall2016RogueNotes": "The eyes on this armor are constantly blinking. Increases Perception by <%= per %>. Limited Edition 2016 Autumn Gear.",
+ "armorSpecialSummer2016HealerNotes": "Pakaian berduri ini mengubah pemakainya menjadi Penyembuh Kuda Laut asli! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
+ "armorSpecialFall2016RogueText": "Baju Pelindung Janda Hitam",
+ "armorSpecialFall2016RogueNotes": "Mata di baju pelindung ini tidak pernah berhenti mengedip. Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
"armorSpecialFall2016WarriorText": "Slime-Streaked Armor",
"armorSpecialFall2016WarriorNotes": "Mysteriously moist and mossy! Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
"armorSpecialFall2016MageText": "Cloak of Wickedness",
"armorSpecialFall2016MageNotes": "When your cloak flaps, you hear the sound of cackling laughter. Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
- "armorSpecialFall2016HealerText": "Gorgon Robes",
- "armorSpecialFall2016HealerNotes": "These robes are actually made of stone. How are they so comfortable? Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
- "armorSpecialWinter2017RogueText": "Frosty Armor",
- "armorSpecialWinter2017RogueNotes": "This stealthy suit reflects light to dazzle unsuspecting tasks as you take your rewards from them! Increases Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
+ "armorSpecialFall2016HealerText": "Jubah Gorgon",
+ "armorSpecialFall2016HealerNotes": "Jubah ini sebenarnya terbuat dari batu. Kenapa bisa nyaman sekali ya? Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "armorSpecialWinter2017RogueText": "Baju Zirah Beku",
+ "armorSpecialWinter2017RogueNotes": "Pakaian penyelinap ini memantulkan cahaya untuk membingungkan tugas yang lemah selagi kamu mengambil hadiah dari mereka! Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"armorSpecialWinter2017WarriorText": "Ice Hockey Armor",
"armorSpecialWinter2017WarriorNotes": "Show your team spirit and strength in this warm, padded armor. Increases Constitution by <%= con %>. Limited Edition 2016-2017 Winter Gear.",
"armorSpecialWinter2017MageText": "Baju Serigala",
- "armorSpecialWinter2017MageNotes": "Made of winter's warmest wool and woven with spells by the mystical Winter Wolf, these robes stave off the chill and keep your mind alert! Increases Intelligence by <%= int %>. Limited Edition 2016-2017 Winter Gear.",
+ "armorSpecialWinter2017MageNotes": "Dibuat dari wol terhangat musim dingin dan ditenun dengan sihir oleh sang Serigala Musim Dingin mistis, jubah ini menjauhkan udara dingin dan menjagamu tetap waspada! Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"armorSpecialWinter2017HealerText": "Shimmer Petal Armor",
"armorSpecialWinter2017HealerNotes": "Though soft, this armor of petals has fantastic protective power. Increases Constitution by <%= con %>. Limited Edition 2016-2017 Winter Gear.",
"armorSpecialSpring2017RogueText": "Sneaky Bunny Suit",
@@ -510,22 +522,30 @@
"armorSpecialSpring2017MageNotes": "Magical by design, fluffy by choice. Increases Intelligence by <%= int %>. Limited Edition 2017 Spring Gear.",
"armorSpecialSpring2017HealerText": "Robes of Repose",
"armorSpecialSpring2017HealerNotes": "The softness of these robes comforts you as well as any who need your healing help! Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
- "armorSpecialSummer2017RogueText": "Sea Dragon Tail",
- "armorSpecialSummer2017RogueNotes": "This colorful garment transforms its wearer into a real Sea Dragon! Increases Perception by <%= per %>. Limited Edition 2017 Summer Gear.",
- "armorSpecialSummer2017WarriorText": "Sandy Armor",
- "armorSpecialSummer2017WarriorNotes": "Don't be fooled by the crumbly exterior: this armor is harder than steel. Increases Constitution by <%= con %>. Limited Edition 2017 Summer Gear.",
+ "armorSpecialSummer2017RogueText": "Ekor Naga Laut",
+ "armorSpecialSummer2017RogueNotes": "Pakaian berwarna-warni ini mengubah pemakainya menjadi Naga Laut asli! Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "armorSpecialSummer2017WarriorText": "Baju Zirah Berpasir",
+ "armorSpecialSummer2017WarriorNotes": "Jangan tertipu dengan penampilan rapuhnya: baju zirah ini lebih keras dari baja. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
"armorSpecialSummer2017MageText": "Whirlpool Robes",
"armorSpecialSummer2017MageNotes": "Careful not to get splashed by these robes woven of enchanted water! Increases Intelligence by <%= int %>. Limited Edition 2017 Summer Gear.",
"armorSpecialSummer2017HealerText": "Silversea Tail",
"armorSpecialSummer2017HealerNotes": "This garment of silvery scales transforms its wearer into a real Seahealer! Increases Constitution by <%= con %>. Limited Edition 2017 Summer Gear.",
"armorSpecialFall2017RogueText": "Pumpkin Patch Robes",
"armorSpecialFall2017RogueNotes": "Need to hide out? Crouch among the Jack o' Lanterns and these robes will conceal you! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
- "armorSpecialFall2017WarriorText": "Strong and Sweet Armor",
- "armorSpecialFall2017WarriorNotes": "This armor will protect you like a delicious candy shell. Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
- "armorSpecialFall2017MageText": "Masquerade Robes",
- "armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
- "armorSpecialFall2017HealerText": "Haunted House Armor",
- "armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialFall2017WarriorText": "Baju Zirah Kuat dan Manis",
+ "armorSpecialFall2017WarriorNotes": "Baju zirah ini akan melindungimu seperti cangkang permen enak. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "armorSpecialFall2017MageText": "Jubah Penyamaran",
+ "armorSpecialFall2017MageNotes": "Setelan pakaian penyamaran mana yang bisa lengkap tanpa jubah yang besar dan dramatik? Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "armorSpecialFall2017HealerText": "Baju Zirah Rumah Hantu",
+ "armorSpecialFall2017HealerNotes": "Hatimu itu pintu yang terbuka. Dan bahumu adalah gentengnya! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
+ "armorSpecialWinter2018RogueText": "Kostum Rusa Kutub",
+ "armorSpecialWinter2018RogueNotes": "Kamu terlihat sangat lucu dan samar, siapa yang bakal curiga bahwa kamu sebenarnya mengincar hadiah? Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "armorSpecialWinter2018WarriorText": "Baju Kertas Kado",
+ "armorSpecialWinter2018WarriorNotes": "Rasanya memang seperti kertas, tapi jangan tertipu. Baju ini hampir tidak mungkin dirobek! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "armorSpecialWinter2018MageText": "Tuksedo Gemerlap",
+ "armorSpecialWinter2018MageNotes": "Pamungkas dalam urusan setelan sihir. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "armorSpecialWinter2018HealerText": "Jubah Mistletoe",
+ "armorSpecialWinter2018HealerNotes": "Jubah ini ditenun dengan mantra untuk menghadirkan kegembiraan hari libur. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
"armorMystery201402Text": "Jubah Pembawa Pesan",
"armorMystery201402Notes": "Berkilau dan kuat, jubah ini punya banyak kantong untuk membawa surat. Tidak menambah status apapun. Item Pelanggan Februari 2014.",
"armorMystery201403Text": "Baju Penjelajah Hutan",
@@ -570,25 +590,27 @@
"armorMystery201606Notes": "This strong tail shimmers like sea foam crashing upon the shore. Confers no benefit. June 2016 Subscriber Item.",
"armorMystery201607Text": "Seafloor Rogue Armor",
"armorMystery201607Notes": "Blend into the sea floor with this stealthy aquatic armor. Confers no benefit. July 2016 Subscriber Item.",
- "armorMystery201609Text": "Cow Armor",
- "armorMystery201609Notes": "Fit in with the rest of the herd in this snuggly armor! Confers no benefit. September 2016 Subscriber Item.",
- "armorMystery201610Text": "Spectral Armor",
- "armorMystery201610Notes": "Mysterious armor that will cause you to float like a ghost! Confers no benefit. October 2016 Subscriber Item.",
- "armorMystery201612Text": "Nutcracker Armor",
- "armorMystery201612Notes": "Crack nuts in style in this spectacular holiday ensemble. Be careful not to pinch your fingers! Confers no benefit. December 2016 Subscriber Item.",
+ "armorMystery201609Text": "Baju Zirah Sapi",
+ "armorMystery201609Notes": "Sesuaikan dirimu dengan sisa kawanan dengan baju zirah nyaman ini! Tidak menambah status apapun! Item Pelanggan September 2016.",
+ "armorMystery201610Text": "Baju Zirah Hantu",
+ "armorMystery201610Notes": "Baju zirah misterius yang membuatmu mengambang seperti hantu! Tidak menambah status apapun. Item Pelanggan Oktober 2016.",
+ "armorMystery201612Text": "Baju Zirah Nutcracker",
+ "armorMystery201612Notes": "Pecahkan kacang dengan penuh gaya menggunakan setelah liburan spektakuler ini. Hati-hati jangan menjepit jarimu sendiri! TIdak menambah status apapun. Item Pelanggan Desember 2016.",
"armorMystery201703Text": "Shimmer Armor",
"armorMystery201703Notes": "Though its colors are reminiscent of spring petals, this armor is stronger than steel! Confers no benefit. March 2017 Subscriber Item.",
- "armorMystery201704Text": "Fairytale Armor",
- "armorMystery201704Notes": "Fairy folk crafted this armor from morning dew to capture the colors of the sunrise. Confers no benefit. April 2017 Subscriber Item.",
- "armorMystery201707Text": "Jellymancer Armor",
- "armorMystery201707Notes": "This armor will help you blend in with the creatures of the ocean while you pursue undersea quests and adventures. Confers no benefit. July 2017 Subscriber Item.",
- "armorMystery201710Text": "Imperious Imp Apparel",
- "armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
- "armorMystery201711Text": "Carpet Rider Outfit",
- "armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201704Text": "Baju Zirah Dongeng",
+ "armorMystery201704Notes": "Bangsa peri menempa baju zirah ini dari embun pagi untuk menangkap warna-warni sebelum matahari terbit. Tidak menambah status apapun. Item Pelanggan April 2017.",
+ "armorMystery201707Text": "Baju Zirah Jellymancer",
+ "armorMystery201707Notes": "Baju zirah ini akan membantumu berbaur dengan makhluk samudra lainnya selagi kamu menyelesaikan misi dan petualangan bawah laut. Tidak menambah status apapun. Item PElanggan Juli 2017.",
+ "armorMystery201710Text": "Pakaian Imp Angkuh",
+ "armorMystery201710Notes": "Bersisik, berkilau, dan kuat! Tidak menambah status apapun. Item Pelanggan Oktober 2017.",
+ "armorMystery201711Text": "Pakaian Pengendara Karpet",
+ "armorMystery201711Notes": "Setelan sweter nyaman ini akan menjagamu tetap hangat sewaktu kamu berkendara di langit! Tidak menambah status apapun. Item Pelanggan November 2017.",
+ "armorMystery201712Text": "Baju Zirah Candlemancer",
+ "armorMystery201712Notes": "Panas dan cahaya yang dihasilkan baju zirah ajaib ini akan menghangatkan hatimu tapi tidak pernah membakar kulitmu! Tidak menambah status apapun. Item Pelanggan Desember 2017.",
"armorMystery301404Text": "Baju Steampunk",
"armorMystery301404Notes": "Necis dan keren, iya lah! Tidak menambah status apapun. Item Pelanggan Februari 3015.",
- "armorMystery301703Text": "Steampunk Peacock Gown",
+ "armorMystery301703Text": "Gaun Merak Steampunk",
"armorMystery301703Notes": "Gaun elegan ini cocok untuk digunakan bahkan ke pesta paling mewah! Tidak menambahkan status apapun. Item Pelanggan Maret 3017.",
"armorMystery301704Text": "Steampunk Pheasant Dress",
"armorMystery301704Notes": "This fine outfit is perfect for a night out and about or a day in your gadget workshop! Confers no benefit. April 3017 Subscriber Item.",
@@ -628,14 +650,14 @@
"armorArmoireCannoneerRagsNotes": "These rags be tougher than they look. Increases Constitution by <%= con %>. Enchanted Armoire: Cannoneer Set (Item 2 of 3).",
"armorArmoireFalconerArmorText": "Falconer Armor",
"armorArmoireFalconerArmorNotes": "Keep away talon attacks with this sturdy armor! Increases Constitution by <%= con %>. Enchanted Armoire: Falconer Set (Item 1 of 3).",
- "armorArmoireVermilionArcherArmorText": "Vermilion Archer Armor",
- "armorArmoireVermilionArcherArmorNotes": "This armor is made of a specially enchanted red metal for maximum protection, minimal restriction, and maximum flair! Increases Perception by <%= per %>. Enchanted Armoire: Vermilion Archer Set (Item 2 of 3).",
- "armorArmoireOgreArmorText": "Ogre Armor",
- "armorArmoireOgreArmorNotes": "This armor imitates an Ogre's tough skin, but it's lined with fleece for human comfort! Increases Constitution by <%= con %>. Enchanted Armoire: Ogre Outfit (Item 3 of 3).",
+ "armorArmoireVermilionArcherArmorText": "Baju Zirah Pemanah Vermillion",
+ "armorArmoireVermilionArcherArmorNotes": "Baju zirah ini dibuat dari besi merah yang telah dimantrai untuk perlindungan penuh, tidak menahan pergerakanmu, dan memperkuat bakatmu! Meningkatkan Persepsi sebesar <%= per %>. Peti Harta Karun: Set Pemanah Vermillion (Item 2 dari 3).",
+ "armorArmoireOgreArmorText": "Baju Zirah Ogre",
+ "armorArmoireOgreArmorNotes": "Baju zirah ini meniru kulit keras Ogre, tapi dilapisi dengan bulu domba demi kenyamanan manusia! Meningkatkan Ketahanan sebesar <%= con %>. Peti Harta Karun: Pakaian Ogre (Item 3 dari 3).",
"armorArmoireIronBlueArcherArmorText": "Iron Blue Archer Armor",
"armorArmoireIronBlueArcherArmorNotes": "This armor will protect you from flying arrows on the battlefield! Increases Strength by <%= str %>. Enchanted Armoire: Iron Archer Set (Item 2 of 3).",
- "armorArmoireRedPartyDressText": "Red Party Dress",
- "armorArmoireRedPartyDressNotes": "You're strong, tough, smart, and so fashionable! Increases Strength, Constitution, and Intelligence by <%= attrs %> each. Enchanted Armoire: Red Hairbow Set (Item 2 of 2).",
+ "armorArmoireRedPartyDressText": "Gaun Pesta Merah",
+ "armorArmoireRedPartyDressNotes": "Kamu kuat, tangguh, pintar dan juga modis! Meningkatkan Kekuatan, Ketahanan, dan Kecerdasan masing-masing sebesar <%= attrs %>. Peti Harta Karun: Set Pita Rambut Merah (Item 2 dari 2).",
"armorArmoireWoodElfArmorText": "Wood Elf Armor",
"armorArmoireWoodElfArmorNotes": "This armor of bark and leaves will serve as durable camouflage in the forest. Increases Perception by <%= per %>. Enchanted Armoire: Wood Elf Set (Item 2 of 3).",
"armorArmoireRamFleeceRobesText": "Ram Fleece Robes",
@@ -650,21 +672,25 @@
"armorArmoireMerchantTunicNotes": "The wide sleeves of this tunic are perfect for stashing the coins you've earned! Increases Perception by <%= per %>. Enchanted Armoire: Merchant Set (Item 2 of 3).",
"armorArmoireVikingTunicText": "Viking Tunic",
"armorArmoireVikingTunicNotes": "This warm woolen tunic includes a cloak for extra coziness even in ocean gales. Increases Constitution by <%= con %> and Strength by <%= str %>. Enchanted Armoire: Viking Set (Item 1 of 3).",
- "armorArmoireSwanDancerTutuText": "Swan Dancer Tutu",
- "armorArmoireSwanDancerTutuNotes": "You just might fly away into the air as you spin in this gorgeous feathered tutu. Increases Intelligence and Strength by <%= attrs %> each. Enchanted Armoire: Swan Dancer Set (Item 2 of 3).",
- "armorArmoireAntiProcrastinationArmorText": "Anti-Procrastination Armor",
- "armorArmoireAntiProcrastinationArmorNotes": "Infused with ancient productivity spells, this steel armor will give you extra strength to battle your tasks. Increases Strength by <%= str %>. Enchanted Armoire: Anti-Procrastination Set (Item 2 of 3).",
- "armorArmoireYellowPartyDressText": "Yellow Party Dress",
- "armorArmoireYellowPartyDressNotes": "You're perceptive, strong, smart, and so fashionable! Increases Perception, Strength, and Intelligence by <%= attrs %> each. Enchanted Armoire: Yellow Hairbow Set (Item 2 of 2).",
+ "armorArmoireSwanDancerTutuText": "Tutu Penari Angsa",
+ "armorArmoireSwanDancerTutuNotes": "Kamu dapat saja terbang ke langit selagi berputar menggunakan tutu berbulu yang cantik ini. Meningkatkan Kecerdasan dan Kekuatan masing-masing sebesar <%= attrs %>. Peti Harta Karun: Set Penari Angsa (Item 2 dari 3)",
+ "armorArmoireAntiProcrastinationArmorText": "Baju Zirah Anti Penundaan",
+ "armorArmoireAntiProcrastinationArmorNotes": "Terisi dengan mantra produktifitas kuno, baju zirah besi ini akan memberikanmu kekuatan tambahan untuk bertempur melawan tugas-tugasmu. Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Anti Penundaan (Item 2 dari 3).",
+ "armorArmoireYellowPartyDressText": "Gaun Pesta Kuning",
+ "armorArmoireYellowPartyDressNotes": "Kamu tanggap, kuat, pintar dan sangat modis! Meningkatkan Persepsi, Kekuatan, dan Kecerdasan masing-masing sebesar <%= attrs %>. Peti Harta Karun: Set Pita Rambut Kuning (Item 2 dari 3).",
"armorArmoireFarrierOutfitText": "Farrier Outfit",
"armorArmoireFarrierOutfitNotes": "These sturdy work clothes can stand up to the messiest Stable. Increases Intelligence, Constitution, and Perception by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 2 of 3).",
- "armorArmoireCandlestickMakerOutfitText": "Candlestick Maker Outfit",
- "armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
+ "armorArmoireCandlestickMakerOutfitText": "Pakaian Pembuat Kandil",
+ "armorArmoireCandlestickMakerOutfitNotes": "Set pakaian kukuh ini akan melindungimu dari tumpahan lilin panas sewaktu kamu membentuk karyamu! Meningkatkan Ketahanan sebesar <%= con %>. Peti Harta Karun: Set Pembuat Kandil (Item 1 dari 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Mantel Penerang Lentera",
+ "armorArmoireLamplightersGreatcoatNotes": "Mantel wol tebal ini dapat menahan angin malam musim dingin yang membekukan! Meningkatkan Persepsi sebesar <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "Jubah panjang dan tebal ini akan melindungimu dari cuaca sewaktu berkendara. Plus juga terlihat keren! Meningkatkan Kekuatan sebesar <%= str %>. Peti Harta Karun: Set Pengendara Kereta (Item 1 dari 3).",
"headgear": "helm",
"headgearCapitalized": "Akesoris kepala",
- "headBase0Text": "No Headgear",
+ "headBase0Text": "Tidak Ada Perlengkapan Kepala",
"headBase0Notes": "Tidak mengenakan aksesori kepala.",
"headWarrior1Text": "Helm Kulit",
"headWarrior1Notes": "Topi dari kulit yang tahan lama. Meningkatkan Kekuatan sebesar <%= str %>.",
@@ -713,35 +739,35 @@
"headSpecial2Text": "Helm Tanpa Nama",
"headSpecial2Notes": "Helm yang diberikan untuk siapapun yang mengorbankan dirinya tanpa pamrih. Meningkatkan Kecerdasan dan Kekuatan masing-masing sebesar <%= attrs %>.",
"headSpecialTakeThisText": "Helm Take This",
- "headSpecialTakeThisNotes": "This helm was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "headSpecialTakeThisNotes": "Helm ini didapatkan dengan berpartisipasi dalam sebuah Tantangan bersponsor yang buat oleh Take This. Selamat! Meningkatkan semua atribut sebesar <%= attrs %>.",
"headSpecialFireCoralCircletText": "Mahkota Koral Api",
"headSpecialFireCoralCircletNotes": "Mahkota ini, didesain oleh alkemis termahsyur Habitica, membuatmu mampu bernafas di dalam air dan menyelam untuk mencari harta karun! Meningkatkan Persepsi sebesar <%= per %>.",
- "headSpecialPyromancersTurbanText": "Pyromancer's Turban",
- "headSpecialPyromancersTurbanNotes": "This magical turban will help you breathe even in the thickest smoke! Plus it's extremely cozy! Increases Strength by <%= str %>.",
+ "headSpecialPyromancersTurbanText": "Serban Pyromancer",
+ "headSpecialPyromancersTurbanNotes": "Serban ajaib ini akan membantumu bernafas bahkan di dalam asap tertebal! Plus ini sangat nyaman! Meningkatkan Kekuatan sebesar <%= str %>.",
"headSpecialBardHatText": "Bardic Cap",
"headSpecialBardHatNotes": "Stick a feather in your cap and call it \"productivity\"! Increases Intelligence by <%= int %>.",
- "headSpecialLunarWarriorHelmText": "Lunar Warrior Helm",
- "headSpecialLunarWarriorHelmNotes": "The power of the moon will strengthen you in battle! Increases Strength and Intelligence by <%= attrs %> each.",
- "headSpecialMammothRiderHelmText": "Mammoth Rider Helm",
+ "headSpecialLunarWarriorHelmText": "Helm Ksatria Rembulan",
+ "headSpecialLunarWarriorHelmNotes": "Kekuatan bulan akan menguatkanmu dalam pertempuran! Meningkatkan Kekuatan dan Kecerdasan masing-masing sebesar <%= attrs %>.",
+ "headSpecialMammothRiderHelmText": "Helm Penunggang Mamut",
"headSpecialMammothRiderHelmNotes": "Don't let its fluffiness fool you--this hat will grant you piercing powers of perception! Increases Perception by <%= per %>.",
"headSpecialPageHelmText": "Page Helm",
"headSpecialPageHelmNotes": "Chainmail: for the stylish AND the practical. Increases Perception by <%= per %>.",
- "headSpecialRoguishRainbowMessengerHoodText": "Roguish Rainbow Messenger Hood",
- "headSpecialRoguishRainbowMessengerHoodNotes": "This bright hood emits a colorful glow that will protect you from unpleasant weather! Increases Constitution by <%= con %>.",
+ "headSpecialRoguishRainbowMessengerHoodText": "Tudung Kurir Pelangi Nakal",
+ "headSpecialRoguishRainbowMessengerHoodNotes": "Tudung berwarna cerah ini mengeluarkan cahaya warna-warni yang akan melindungimu dari cuaca tidak mengenakkan! Meningkatkan Ketahanan sebesar <%= con %>.",
"headSpecialClandestineCowlText": "Clandestine Cowl",
"headSpecialClandestineCowlNotes": "Take care to conceal your face as you rob your Tasks of gold and loot! Increases Perception by <%= per %>.",
"headSpecialSnowSovereignCrownText": "Snow Sovereign Crown",
"headSpecialSnowSovereignCrownNotes": "The jewels in this crown sparkle like new-fallen snowflakes. Increases Constitution by <%= con %>.",
- "headSpecialSpikedHelmText": "Spiked Helm",
- "headSpecialSpikedHelmNotes": "You'll be well protected from stray Dailies and bad Habits with this functional (and neat-looking!) helm. Increases Strength by <%= str %>.",
- "headSpecialDandyHatText": "Dandy Hat",
- "headSpecialDandyHatNotes": "What a merry chapeau! You'll look quite fine enjoying a stroll in it. Increases Constitution by <%= con %>.",
+ "headSpecialSpikedHelmText": "Helm Berduri",
+ "headSpecialSpikedHelmNotes": "Kamu akan terlindungi dengan baik dari Keseharian terlantar dan Kebiasaan buruk dengan helm yang berguna (dan terlihat rapi!). Meningkatkan Kekuatan sebesar <%= str %>.",
+ "headSpecialDandyHatText": "Topi Dandy",
+ "headSpecialDandyHatNotes": "Betapa cerianya topi prancis ini! Kamu terlihat cukup keren sewaktu memakainya untuk jalan-jalan. Meningkatkan Ketahanan sebesar <%= con %>.",
"headSpecialKabutoText": "Kabuto",
"headSpecialKabutoNotes": "This helm is functional and beautiful! Your enemies will become distracted admiring it. Increases Intelligence by <%= int %>.",
- "headSpecialNamingDay2017Text": "Royal Purple Gryphon Helm",
- "headSpecialNamingDay2017Notes": "Happy Naming Day! Wear this fierce and feathery helm as you celebrate Habitica. Confers no benefit.",
- "headSpecialTurkeyHelmBaseText": "Turkey Helm",
- "headSpecialTurkeyHelmBaseNotes": "Your Turkey Day look will be complete when you don this beaked helm! Confers no benefit.",
+ "headSpecialNamingDay2017Text": "Helm Gryphon Ungu Kerajaan",
+ "headSpecialNamingDay2017Notes": "Selamat Hari Penamaan! Pakai helm garang dan berbulu ini selagi memperingati Habitica. Tidak menambah status apapun.",
+ "headSpecialTurkeyHelmBaseText": "Helm Kalkun",
+ "headSpecialTurkeyHelmBaseNotes": "Hari Kalkunmu akan terlihat lengkap sewaktu kamu mengenakan helm berparuh ini! Tidak menambah status apapun.",
"headSpecialNyeText": "Topi Pesta Aneh",
"headSpecialNyeNotes": "Kamu mendapatkan Topi Pesta Aneh! Kenakan saat kamu konvoi Tahun Baru! Tidak menambah status apapun.",
"headSpecialYetiText": "Helm Yeti-Tamer",
@@ -829,29 +855,29 @@
"headSpecialSpring2016HealerText": "Mahkota Bermekaran",
"headSpecialSpring2016HealerNotes": "Berpe",
"headSpecialSummer2016RogueText": "Helm Belut",
- "headSpecialSummer2016RogueNotes": "Peek out from rocky crevices while wearing this stealthy helm. Increases Perception by <%= per %>. Limited Edition 2016 Summer Gear.",
+ "headSpecialSummer2016RogueNotes": "Mengintip dari celah-celah bebatuan sewaktu memakai helm penyamaran ini. Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"headSpecialSummer2016WarriorText": "Helm Hiu",
- "headSpecialSummer2016WarriorNotes": "Bite those tough tasks with this fearsome helm! Increases Strength by <%= str %>. Limited Edition 2016 Summer Gear.",
+ "headSpecialSummer2016WarriorNotes": "Gigit semua tugas keras itu dengan helm menakutkan ini! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"headSpecialSummer2016MageText": "Blowspout Hat",
"headSpecialSummer2016MageNotes": "Magical water constantly sprays from this hat. Increases Perception by <%= per %>. Limited Edition 2016 Summer Gear.",
"headSpecialSummer2016HealerText": "Helm Kuda Laut",
- "headSpecialSummer2016HealerNotes": "This helm indicates that the wearer was trained by the magical healing seahorses of Dilatory. Increases Intelligence by <%= int %>. Limited Edition 2016 Summer Gear.",
- "headSpecialFall2016RogueText": "Black Widow Helm",
- "headSpecialFall2016RogueNotes": "The legs on this helm are constantly twitching. Increases Perception by <%= per %>. Limited Edition 2016 Autumn Gear.",
- "headSpecialFall2016WarriorText": "Gnarled Bark Helm",
- "headSpecialFall2016WarriorNotes": "This swamp-sogged helm is covered with bits of bog. Increases Strength by <%= str %>. Limited Edition 2016 Autumn Gear.",
- "headSpecialFall2016MageText": "Hood of Wickedness",
- "headSpecialFall2016MageNotes": "Conceal your plotting beneath this shadowy hood. Increases Perception by <%= per %>. Limited Edition 2016 Autumn Gear.",
- "headSpecialFall2016HealerText": "Medusa's Crown",
- "headSpecialFall2016HealerNotes": "Woe to anyone who looks you in the eyes... Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
- "headSpecialNye2016Text": "Whimsical Party Hat",
- "headSpecialNye2016Notes": "You've received a Whimsical Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialSummer2016HealerNotes": "Helm ini menandakan bahwa pemakainya telah dilatih oleh para kuda laut penyembuh ajaib dari Dilatory. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
+ "headSpecialFall2016RogueText": "Helm Janda Hitam",
+ "headSpecialFall2016RogueNotes": "Kaki-kaki di helm ini selalu bergerak tanpa henti. Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "headSpecialFall2016WarriorText": "Helm Kulit Pohon Berbonggol",
+ "headSpecialFall2016WarriorNotes": "Helm ini lembab karena air dari rawa-rawa dan tertutup dengan sedikit lumpur. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "headSpecialFall2016MageText": "Tudung Kejahatan",
+ "headSpecialFall2016MageNotes": "Sembunyikan persengkongkolan anda di bawah tudung berbayang ini. Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "headSpecialFall2016HealerText": "Mahkota Medusa",
+ "headSpecialFall2016HealerNotes": "Kasihan orang-orang yang melihat ke arah matamu... Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "headSpecialNye2016Text": "Topi Pesta Aneh",
+ "headSpecialNye2016Notes": "Kamu menerima sebuah Topi Pesta Aneh! Pakai ini dengan bangga selagi menyambut kedatangan Tahun Baru! Tidak menambah status apapun.",
"headSpecialWinter2017RogueText": "Frosty Helm",
"headSpecialWinter2017RogueNotes": "Fashioned from ice crystals, this helm will help you move unnoticed through wintry landscapes. Increases Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
- "headSpecialWinter2017WarriorText": "Hockey Helm",
- "headSpecialWinter2017WarriorNotes": "This is a hard and durable helmet, made to withstand impacts from ice or even dark red dailies! Increases Strength by <%= str %>. Limited Edition 2016-2017 Winter Gear.",
- "headSpecialWinter2017MageText": "Winter Wolf Helm",
- "headSpecialWinter2017MageNotes": "This helm, fashioned in the image of the legendary Winter Wolf, will keep your head warm and your vision sharp. Increases Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
+ "headSpecialWinter2017WarriorText": "Helm Hoki",
+ "headSpecialWinter2017WarriorNotes": "Helm keras dan tahan lama, dibuat untuk menahan benturan es atau bahkan keseharian merah gelap! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan MUsim Dingin 2016-2017 Edisi Terbatas.",
+ "headSpecialWinter2017MageText": "Helm Serigala Musim Dingin",
+ "headSpecialWinter2017MageNotes": "Helm ini, didesain berdasarkan gambar Serigala Musim Dingin legendaris, akan menjaga kepalamu hangat dan penglihatanmu tajam. Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"headSpecialWinter2017HealerText": "Sparkling Blossom Helm",
"headSpecialWinter2017HealerNotes": "These glittering petals focus brainpower! Increases Intelligence by <%= int %>. Limited Edition 2016-2017 Winter Gear.",
"headSpecialSpring2017RogueText": "Sneaky Bunny Helm",
@@ -862,22 +888,32 @@
"headSpecialSpring2017MageNotes": "This hat can help you cast mighty spells… Or you can just use it to summon tennis balls. Your choice. Increases Perception by <%= per %>. Limited Edition 2017 Spring Gear.",
"headSpecialSpring2017HealerText": "Petal Circlet",
"headSpecialSpring2017HealerNotes": "This delicate crown emits the comforting scent of new Spring blooms. Increases Intelligence by <%= int %>. Limited Edition 2017 Spring Gear.",
- "headSpecialSummer2017RogueText": "Sea Dragon Helm",
- "headSpecialSummer2017RogueNotes": "This helm changes colors to help you blend in with your surroundings. Increases Perception by <%= per %>. Limited Edition 2017 Summer Gear.",
- "headSpecialSummer2017WarriorText": "Sandcastle Helm",
- "headSpecialSummer2017WarriorNotes": "The finest helm anyone could hope to wear... at least, until the tide comes in. Increases Strength by <%= str %>. Limited Edition 2017 Summer Gear.",
+ "headSpecialSummer2017RogueText": "Helm Naga Laut",
+ "headSpecialSummer2017RogueNotes": "Helm ini berganti warna untuk berbaur dengan lingkungan sekelilingmu. Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "headSpecialSummer2017WarriorText": "Helm Istana Pasir",
+ "headSpecialSummer2017WarriorNotes": "Helm terhalus yang pernah digunakan oleh siapapun... setidaknua, hingga ombak datang. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
"headSpecialSummer2017MageText": "Whirlpool Hat",
"headSpecialSummer2017MageNotes": "This hat is composed entirely of a swirling, inverted whirlpool. Increases Perception by <%= per %>. Limited Edition 2017 Summer Gear.",
- "headSpecialSummer2017HealerText": "Crown of Sea Creatures",
- "headSpecialSummer2017HealerNotes": "This helm is made up of friendly sea creatures who are temporarily resting on your head, giving you sage advice. Increases Intelligence by <%= int %>. Limited Edition 2017 Summer Gear.",
+ "headSpecialSummer2017HealerText": "Mahkota Makhluk Laut",
+ "headSpecialSummer2017HealerNotes": "Helm ini dibuat dari makhluk laut bersahabat yang beristirahat sebentar di kepalanya, memberikanmu nasihat bijak. Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
"headSpecialFall2017RogueText": "Jack-o-Lantern Helm",
"headSpecialFall2017RogueNotes": "Ready for treats? Time to don this festive, glowing helm! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
- "headSpecialFall2017WarriorText": "Candy Corn Helm",
- "headSpecialFall2017WarriorNotes": "This helm might look like a treat, but wayward tasks won't find it so sweet! Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialFall2017WarriorText": "Helm Permen Jagung",
+ "headSpecialFall2017WarriorNotes": "Helm ini mungkin terlihat seperti cemilan, tetapi tugas-tugas bandel tidak akan menganggapnya manis! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Gugur 2017 Edisi Terbatas.",
"headSpecialFall2017MageText": "Masquerade Helm",
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Helm Rusa Kutub",
+ "headSpecialWinter2018RogueNotes": "Samaran sempurna untuk liburan, dilengkapi dengan lampu! Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "headSpecialWinter2018WarriorText": "Helm Kado",
+ "headSpecialWinter2018WarriorNotes": "Tutup kado dengan pita yang bergaya ini tidak hanya meriah, tapi juga kokoh. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "headSpecialWinter2018MageText": "Topi Tinggi Gemerlap",
+ "headSpecialWinter2018MageNotes": "Siap untuk sihir spesial ekstra? Topi berkilauan ini bisa banget meningkatkan semua mantramu! Meningkatkan Persepsi sebesar <%= per %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "headSpecialWinter2018HealerText": "Tudung Mistletoe",
+ "headSpecialWinter2018HealerNotes": "Tudung indah ini akan menghangatkanmu dengan kegembiraan liburan! Meningkatkan Kecerdasan sebesar <%= int %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
"headSpecialGaymerxText": "Helm Prajurit Pelangi",
"headSpecialGaymerxNotes": "Sebagai Perayaan Konferensi GaymerX, helm spesial ini berhiaskan pelangi yang cerah dan indah! GaymerX adalah konvensi gamer yang merayakan LGBTQ",
"headMystery201402Text": "Helm Bersayap",
@@ -920,32 +956,34 @@
"headMystery201606Notes": "Hum the tune of the ocean as you blend in with the frolicking seals! Confers no benefit. June 2016 Subscriber Item.",
"headMystery201607Text": "Seafloor Rogue Helm",
"headMystery201607Notes": "The kelp growing from this helm helps camouflage you. Confers no benefit. July 2016 Subscriber Item.",
- "headMystery201608Text": "Helm of Lightning",
- "headMystery201608Notes": "This crackling helm conducts electricity! Confers no benefit. August 2016 Subscriber Item.",
+ "headMystery201608Text": "Helm Halilintar",
+ "headMystery201608Notes": "Helm bercahaya ini menghantarkan listrik! TIdak menambah status apapun. Item Pelanggan Agustus 2016.",
"headMystery201609Text": "Cow Hat",
"headMystery201609Notes": "You'll never want to remooooove this cow hat. Confers no benefit. September 2016 Subscriber Item.",
"headMystery201610Text": "Spectral Flame",
"headMystery201610Notes": "These flames will awaken your ghostly power. Confers no benefit. October 2016 Subscriber Item.",
"headMystery201611Text": "Fancy Feasting Hat",
"headMystery201611Notes": "You're guaranteed to be the fanciest person at the feast in this plumed chapeau. Confers no benefit. November 2016 Subscriber Item.",
- "headMystery201612Text": "Nutcracker Helm",
- "headMystery201612Notes": "This tall and splendid helm adds a magnificent element to your holiday apparel! Confers no benefit. December 2016 Subscriber Item.",
- "headMystery201702Text": "Heartstealer Hood",
- "headMystery201702Notes": "Though this hood conceals your face, it only magnifies your powers of attraction! Confers no benefit. February 2017 Subscriber Item.",
- "headMystery201703Text": "Shimmer Helm",
- "headMystery201703Notes": "The soft light reflected from this horned helm will soothe even the most enraged foe. Confers no benefit. March 2017 Subscriber Item.",
+ "headMystery201612Text": "Helm Nutcracker",
+ "headMystery201612Notes": "Helm tinggi dan mewah ini menambahkan elemen kemegahan kepada pakaian liburanmu! TIdak menambah status apapun. Item Pelanggan Desember 2016.",
+ "headMystery201702Text": "Tudung Pencuri Hati",
+ "headMystery201702Notes": "Meskipun tudung ini menyembunyikan mukamu, ini hanya akan menambahkan daya tarikmu! Tidak menambah status apapun. Item Pelanggan Februari 2017.",
+ "headMystery201703Text": "Helm Berkilau",
+ "headMystery201703Notes": "Cahaya lembut yang terpantul dari helm bertanduk ini bahkan dapat menenangkan musuh yang mengamuk. Tidak menambah status apapun. Item Pelanggan Maret 2017.",
"headMystery201705Text": "Feathered Fighter Helm",
- "headMystery201705Notes": "Habitica is known for its fierce and productive Gryphon Warriors! Join their prestigious ranks when you don this feathery helm. Confers no benefit. May 2017 Subscriber Item.",
- "headMystery201707Text": "Jellymancer Helm",
- "headMystery201707Notes": "Need some extra hands for your tasks? This translucent jelly helm has quite a few tentacles to lend you help! Confers no benefit. July 2017 Subscriber Item.",
+ "headMystery201705Notes": "Habitica itu terkenal dengan Ksatria Gryphon yang garang dan produktif! Bergabunglah dengan pasukan bergengsi mereka sewaktu kamu menggunakan helm berbulu ini. Tidak menambah status apapun. Item Pelanggan Mei 2017.",
+ "headMystery201707Text": "Helm Jellymancer",
+ "headMystery201707Notes": "Perlu bantuan untuk tugas-tugasmu? Helm jeli tembus cahaya ini punya cukp banyak tentakel untuk membantumu! Tidak menambah status apapun. Item Pelanggan Juli 2017.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Mahkota Candlemancer",
+ "headMystery201712Notes": "Mahkota ini membawa cahaya dan kehangatan bahkan ke malam musim dingin tergelap. Tidak menambah status apapun. Item Pelanggan Desember 2017.",
"headMystery301404Text": "Topi Fancy",
"headMystery301404Notes": "Topi paling cocok untuk gentleman! Item pelanggan Januari 3015. Tidak menambah status apapun.",
"headMystery301405Text": "Topi Biasa",
"headMystery301405Notes": "Topi yang sangat biasa, tapi sepertinya cocok dipadupadankan dengan akeseoris lain. Tidak menambah status apapun. Item Pelanggan Mei 3015.",
- "headMystery301703Text": "Fancy Feather Hat",
- "headMystery301703Notes": "The feathers for this hat were donated by Miss Prue's Finishing School for Fancy Peacocks. Wear them with pride! Confers no benefit. March 3017 Subscriber Item.",
+ "headMystery301703Text": "Topi Bulu Mewah",
+ "headMystery301703Notes": "Bulu-bulu pada topi ini disumbangkan oleh Sekolah Etika untuk Merak Mewah milik Nona Prue. Pakailah dengan rasa bangga! Tidak menambah status apapun. Item Pelanggan Maret 3017.",
"headMystery301704Text": "Pheasant Plume Hat",
"headMystery301704Notes": "What could be more pleasant than a plume from a pheasant? Confers no benefit. April 3017 Subscriber Item.",
"headArmoireLunarCrownText": "Mahkota Bulan Penentram",
@@ -1000,10 +1038,10 @@
"headArmoireCannoneerBandannaNotes": "'Tis a cannoneer's life for me! Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Cannoneer Set (Item 3 of 3).",
"headArmoireFalconerCapText": "Falconer Cap",
"headArmoireFalconerCapNotes": "This jaunty cap helps you better understand birds of prey. Increases Intelligence by <%= int %>. Enchanted Armoire: Falconer Set (Item 2 of 3).",
- "headArmoireVermilionArcherHelmText": "Vermilion Archer Helm",
- "headArmoireVermilionArcherHelmNotes": "The magic ruby in this helm will help you aim with laser focus! Increases Perception by <%= per %>. Enchanted Armoire: Vermilion Archer Set (Item 3 of 3).",
- "headArmoireOgreMaskText": "Ogre Mask",
- "headArmoireOgreMaskNotes": "Your enemies will run for the hills when they see an Ogre coming their way! Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Ogre Outfit (Item 1 of 3).",
+ "headArmoireVermilionArcherHelmText": "Helm Pemanah Vermilion",
+ "headArmoireVermilionArcherHelmNotes": "Rubi ajaib dalam helm ini akan membantumu membidik dengan konsentrasi penuh! Meningkatkan Persepsi sebesar <%= per %>. Peti Harta Karun: Set Pemanah Vermillion (Item 3 dari 3).",
+ "headArmoireOgreMaskText": "Topeng Ogre",
+ "headArmoireOgreMaskNotes": "Musuh-musuhmu akan berlari dan berlindung sewaktu mereka melihat seorang Ogre datang ke arah mereka! Meningkatkan Ketahanan dan Kekuatan masing-masing sebesar <%= attrs %>. Peti Harta Karun: Pakaian Ogre (Item 1 dari 3).",
"headArmoireIronBlueArcherHelmText": "Iron Blue Archer Helm",
"headArmoireIronBlueArcherHelmNotes": "Hard-headed? No, you're just well protected. Increases Constitution by <%= con %>. Enchanted Armoire: Iron Archer Set (Item 1 of 3).",
"headArmoireWoodElfHelmText": "Wood Elf Helm",
@@ -1016,14 +1054,18 @@
"headArmoireMushroomDruidCapNotes": "Harvested deep in a misty forest, this cap grants the wearer knowledge of medicinal plants. Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Mushroom Druid Set (Item 1 of 3).",
"headArmoireMerchantChaperonText": "Merchant Chaperon",
"headArmoireMerchantChaperonNotes": "This versatile wrapped wool hat will surely make you the most stylish seller in the market! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Merchant Set (Item 1 of 3).",
- "headArmoireVikingHelmText": "Viking Helm",
- "headArmoireVikingHelmNotes": "No horns or wings are found on this helm: those are too easy for enemies to grab! Increases Strength by <%= str %> and Perception by <%= per %>. Enchanted Armoire: Viking Set (Item 2 of 3).",
- "headArmoireSwanFeatherCrownText": "Swan Feather Crown",
- "headArmoireSwanFeatherCrownNotes": "This tiara is lovely and light as a swan's feather! Increases Intelligence by <%= int %>. Enchanted Armoire: Swan Dancer Set (Item 1 of 3).",
+ "headArmoireVikingHelmText": "Helm Viking",
+ "headArmoireVikingHelmNotes": "Tak ada tanduk atau sayap yang dapat ditemukan di helm ini: itu terlalu mudah untuk digenggam musuh! Meningkatkan Kekuatan sebesar <%= str %> dan Persepsi sebanyak <%= per %>. Peti Harta Karun: Set Viking (Item 2 dari 3).",
+ "headArmoireSwanFeatherCrownText": "Mahkota Bulu Angsa",
+ "headArmoireSwanFeatherCrownNotes": "Tiara ini indah dan ringan layaknya bulu angsa! Meningkatkan Kecerdasan sebesar <%= int %>. Peti Harta Karun: Set Penari Angsa (Item 1 dari 3).",
"headArmoireAntiProcrastinationHelmText": "Anti-Procrastination Helm",
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
- "headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
- "headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireCandlestickMakerHatText": "Topi Pembuat Kandil",
+ "headArmoireCandlestickMakerHatNotes": "Sebuah topi gaul membuat setiap pekerjaan lebih seru, dan membuat kandil tidak terkecuali! Meningkatkan Persepsi dan Kecerdasan masing-masing sebesar <%= attrs %>. Peti Harta Karun: Set Pembuat Kandil (Item 2 dari 3).",
+ "headArmoireLamplightersTopHatText": "Topi Tinggi Penerang Lentera",
+ "headArmoireLamplightersTopHatNotes": "Topi hitam gaul ini melengkapi perpaduan penerang lentera-mu! Meningkatkan Ketahanan sebesar <%= con %>.",
+ "headArmoireCoachDriversHatText": "Topi Pengendara Kereta",
+ "headArmoireCoachDriversHatNotes": "Topi ini bergaya, tapi tidak terlalu bergaya seperti sebuah topi tinggi. Pastikan topi ini tidak terbang sewaktu kamu mengendara dengan kecepatan tinggi! Meningkatkan Kecerdasan sebesar <%= int %>. Peti Harta Karun: Set Pengendara Kereta (Item 2 dari 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1053,21 +1095,21 @@
"shieldSpecial1Text": "Perisai Kristal",
"shieldSpecial1Notes": "Menghancurkan panah dan bertahan dari kata-kata orang payah. Meningkatkan semua kemampuan sebesar <%= attrs %>.",
"shieldSpecialTakeThisText": "Perisai Take This",
- "shieldSpecialTakeThisNotes": "This shield was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "shieldSpecialTakeThisNotes": "Perisai ini didapatkan dengan berpartisipasi dalam sebuah Tantangan bersponsor yang buat oleh Take This. Selamat! Meningkatkan semua atribut sebesar <%= attrs %>.",
"shieldSpecialGoldenknightText": "Mustaine's Milestone Mashing Morning Star",
"shieldSpecialGoldenknightNotes": "Rapat, monster, rasa sakit: sudah diatasi! Hancurkan! Meningkatkan Ketahanan dan Persepsi masing-masing sebesar <%= attrs %>.",
"shieldSpecialMoonpearlShieldText": "Perisai Permata Bulan",
"shieldSpecialMoonpearlShieldNotes": "Didesain untuk berenang cepat, dan juga pertahanan diri. Meningkatkan Ketahanan sebesar <%= con %>.",
- "shieldSpecialMammothRiderHornText": "Mammoth Rider's Horn",
- "shieldSpecialMammothRiderHornNotes": "One blow on this mighty rose quartz horn and you'll summon powerful magical forces. Increases Strength by <%= str %>.",
+ "shieldSpecialMammothRiderHornText": "Trompet Penunggang Mamut",
+ "shieldSpecialMammothRiderHornNotes": "Satu tiupan di trompet kuarsa mawar perkasa ini dan kamu akan memanggil tenaga magis yang kuat. Meningkatkan Kekuatan sebanyak <%= str %>.",
"shieldSpecialDiamondStaveText": "Diamond Stave",
"shieldSpecialDiamondStaveNotes": "This valuable stave has mystical powers. Increases Intelligence by <%= int %>.",
- "shieldSpecialRoguishRainbowMessageText": "Roguish Rainbow Message",
- "shieldSpecialRoguishRainbowMessageNotes": "This sparkly envelope contains messages of encouragement from Habiticans, and a touch of magic to help speed your deliveries! Increases Intelligence by <%= int %>.",
+ "shieldSpecialRoguishRainbowMessageText": "Surat Pelangi Nakal",
+ "shieldSpecialRoguishRainbowMessageNotes": "Amplop gemerlapan ini berisi pesan penyemangat dari para Habitican, dan setitik sihir untuk mempercepat pengirimannya! Meningkatkan Kecerdasan sebesar <%= int %>.",
"shieldSpecialLootBagText": "Loot Bag",
"shieldSpecialLootBagNotes": "This bag is ideal for storing all the goodies you've stealthily removed from unsuspecting Tasks! Increases Strength by <%= str %>.",
- "shieldSpecialWintryMirrorText": "Wintry Mirror",
- "shieldSpecialWintryMirrorNotes": "How else to best admire your wintry look? Increases Intelligence by <%= int %>.",
+ "shieldSpecialWintryMirrorText": "Cermin Musim Dingin",
+ "shieldSpecialWintryMirrorNotes": "Apa lagi cara terbaik untuk mengagumi penampilan musim dingin-mu? Meningkatkan Kecerdasan sebesar <%= int %>.",
"shieldSpecialWakizashiText": "Wakizashi",
"shieldSpecialWakizashiNotes": "This short sword is perfect for close-quarters battles with your Dailies! Increases Constitution by <%= con %>.",
"shieldSpecialYetiText": "Perisai Penjinak Yeti",
@@ -1131,17 +1173,17 @@
"shieldSpecialSummer2016RogueText": "Electric Rod",
"shieldSpecialSummer2016RogueNotes": "Anyone who battles you is in for a shocking surprise... Increases Strength by <%= str %>. Limited Edition 2016 Summer Gear.",
"shieldSpecialSummer2016WarriorText": "Gigi Hiu",
- "shieldSpecialSummer2016WarriorNotes": "Bite those tough tasks with this toothy shield! Increases Constitution by <%= con %>. Limited Edition 2016 Summer Gear.",
+ "shieldSpecialSummer2016WarriorNotes": "Potong tugas-tugas keras itu dengan menggunakan perisai bergigi ini! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"shieldSpecialSummer2016HealerText": "Perisai Bintang Laut",
- "shieldSpecialSummer2016HealerNotes": "Sometimes mistakenly called a Starfish Shield. Increases Constitution by <%= con %>. Limited Edition 2016 Summer Gear.",
+ "shieldSpecialSummer2016HealerNotes": "Sering salah disebut sebagai Perisai Bintang Laut. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Panas 2016 Edisi Terbatas.",
"shieldSpecialFall2016RogueText": "Spiderbite Dagger",
"shieldSpecialFall2016RogueNotes": "Feel the sting of the spider's bite! Increases Strength by <%= str %>. Limited Edition 2016 Autumn Gear.",
"shieldSpecialFall2016WarriorText": "Defensive Roots",
"shieldSpecialFall2016WarriorNotes": "Defend against Dailies with these writhing roots! Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
- "shieldSpecialFall2016HealerText": "Gorgon Shield",
- "shieldSpecialFall2016HealerNotes": "Don't admire your own reflection in this. Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
- "shieldSpecialWinter2017RogueText": "Ice Axe",
- "shieldSpecialWinter2017RogueNotes": "This axe is great for attack, defense, and ice-climbing! Increases Strength by <%= str %>. Limited Edition 2016-2017 Winter Gear.",
+ "shieldSpecialFall2016HealerText": "Perisai Gorgon",
+ "shieldSpecialFall2016HealerNotes": "Jangan kagumi pantulanmu sendiri di dalam sini. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Gugur 2016 Edisi Terbatas.",
+ "shieldSpecialWinter2017RogueText": "Kapak Es",
+ "shieldSpecialWinter2017RogueNotes": "Kapak ini bagus untuk menyerang, bertahan, dan memanjat gunung es! Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2016-2017 Edisi Terbatas.",
"shieldSpecialWinter2017WarriorText": "Puck Shield",
"shieldSpecialWinter2017WarriorNotes": "Made from a giant hockey puck, this shield can stand up to quite a beating. Increases Constitution by <%= con %>. Limited Edition 2016-2017 Winter Gear.",
"shieldSpecialWinter2017HealerText": "Sugarplum Shield",
@@ -1150,13 +1192,13 @@
"shieldSpecialSpring2017RogueNotes": "These blades will make quick work of tasks, but also are handy for slicing vegetables! Yum! Increases Strength by <%= str %>. Limited Edition 2017 Spring Gear.",
"shieldSpecialSpring2017WarriorText": "Yarn Shield",
"shieldSpecialSpring2017WarriorNotes": "Every fiber of this shield is woven with protective spells! Try not to play with it (too much). Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
- "shieldSpecialSpring2017HealerText": "Basket Shield",
- "shieldSpecialSpring2017HealerNotes": "Protective and also handy for holding your many healing herbs and accoutrements. Increases Constitution by <%= con %>. Limited Edition 2017 Spring Gear.",
- "shieldSpecialSummer2017RogueText": "Sea Dragon Fins",
- "shieldSpecialSummer2017RogueNotes": "The edges of these fins are razor-sharp. Increases Strength by <%= str %>. Limited Edition 2017 Summer Gear.",
- "shieldSpecialSummer2017WarriorText": "Scallop Shield",
- "shieldSpecialSummer2017WarriorNotes": "This shell that you just found is both decorative AND defensive! Increases Constitution by <%= con %>. Limited Edition 2017 Summer Gear.",
- "shieldSpecialSummer2017HealerText": "Oyster Shield",
+ "shieldSpecialSpring2017HealerText": "Perisai Keranjang",
+ "shieldSpecialSpring2017HealerNotes": "Protektif dan juga berguna untuk membawa banyak tanaman obat dan pakaian cadangan. Meningkatkan Ketahanan sebesar <%= con %>. Peralatan Musim Semi 2017 Edisi Terbatas.",
+ "shieldSpecialSummer2017RogueText": "Sirip Naga Laut",
+ "shieldSpecialSummer2017RogueNotes": "Pinggiran dari sirip ini setajam silet. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "shieldSpecialSummer2017WarriorText": "Perisai Kerang",
+ "shieldSpecialSummer2017WarriorNotes": "Cangkang yang kamu baru temukan ini bagus untuk hiasan dan pertahanan! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Panas 2017 Edisi Terbatas.",
+ "shieldSpecialSummer2017HealerText": "Perisai Tiram",
"shieldSpecialSummer2017HealerNotes": "This magical oyster constantly generates pearls as well as protection. Increases Constitution by <%= con %>. Limited Edition 2017 Summer Gear.",
"shieldSpecialFall2017RogueText": "Candied Apple Mace",
"shieldSpecialFall2017RogueNotes": "Defeat your foes with sweetness! Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Kail Peppermint",
+ "shieldSpecialWinter2018RogueNotes": "Sempurna untuk memanjat dinding atau mengalihkan perhatian lawanmu dengan permen yang sangat, sangat manis. Meningkatkan Kekuatan sebesar <%= str %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "shieldSpecialWinter2018WarriorText": "Kantung Hadiah Ajaib",
+ "shieldSpecialWinter2018WarriorNotes": "Hampir semua benda berguna yang kamu butuhkan bisa ditemukan dalam kantung ini, asal kamu tahu harus membisikkan mantra apa. Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
+ "shieldSpecialWinter2018HealerText": "Lonceng Mistletoe",
+ "shieldSpecialWinter2018HealerNotes": "Suara apa itu? Suara keceriaan dan kehangatan untuk didengar semua orang! Meningkatkan Ketahanan sebesar <%= con %>. Perlengkapan Musim Dingin 2017-2018 Edisi Terbatas.",
"shieldMystery201601Text": "Pedang Resolusi",
"shieldMystery201601Notes": "Pedang ini dapat digunakan untuk menangkis semua gangguan. Tidak menambah status apapun. Item Pelanggan Januari 2016.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -1192,7 +1240,7 @@
"shieldArmoireSandyBucketNotes": "Cocok untuk menampung semua Koin Emas yang kamu dapatkan dari penyelesaian tugas! Meningkatkan Persepsi sebesar <%= per %>. Peti Harta Karun: Set Pesisir Pantai (Item 3 dari 3).",
"shieldArmoirePerchingFalconText": "Perching Falcon",
"shieldArmoirePerchingFalconNotes": "A falcon friend perches on your arm, prepared to swoop at your enemies. Increases Strength by <%= str %>. Enchanted Armoire: Falconer Set (Item 3 of 3).",
- "shieldArmoireRamHornShieldText": "Ram Horn Shield",
+ "shieldArmoireRamHornShieldText": "Perisai Tanduk Domba",
"shieldArmoireRamHornShieldNotes": "Ram this shield into opposing Dailies! Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Ram Barbarian Set (3 of 3).",
"shieldArmoireRedRoseText": "Red Rose",
"shieldArmoireRedRoseNotes": "This deep red rose smells enchanting. It will also sharpen your understanding. Increases Perception by <%= per %>. Enchanted Armoire: Independent Item.",
@@ -1247,15 +1295,15 @@
"backSpecialWonderconBlackText": "Jubah Pengintai",
"backSpecialWonderconBlackNotes": "Berputar dengan bayangan dan bisikan. Tidak menambah status apapun. Item Edisi Spesial Konvensi",
"backSpecialTakeThisText": "Sayap Take This",
- "backSpecialTakeThisNotes": "These wings were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
+ "backSpecialTakeThisNotes": "Sayap ini didapatkan dengan berpartisipasi dalam Tantangan bersponsor yang dibuat oleh Take This. Selamat! Meningkatkan semua atribut sebesar <%= attrs %>.",
"backSpecialSnowdriftVeilText": "Snowdrift Veil",
"backSpecialSnowdriftVeilNotes": "This translucent veil makes it appear you are surrounded by an elegant flurry of snow! Confers no benefit.",
- "backSpecialAetherCloakText": "Aether Cloak",
+ "backSpecialAetherCloakText": "Jubah Aether",
"backSpecialAetherCloakNotes": "This cloak once belonged to the Lost Masterclasser herself. Increases Perception by <%= per %>.",
- "backSpecialTurkeyTailBaseText": "Turkey Tail",
- "backSpecialTurkeyTailBaseNotes": "Wear your noble Turkey Tail with pride while you celebrate! Confers no benefit.",
+ "backSpecialTurkeyTailBaseText": "Ekor Kalkun",
+ "backSpecialTurkeyTailBaseNotes": "Gunakan Ekor Kalkun bangsawan-mu dengan rasa bangga selagi merayakan! Tidak menambah status apapun.",
"body": "Aksesori Tubuh",
- "bodyCapitalized": "Body Accessory",
+ "bodyCapitalized": "Aksesori Tubuh",
"bodyBase0Text": "Tidak Mengenakan Aksesori Badan",
"bodyBase0Notes": "Tidak Mengenakan Aksesori Badan.",
"bodySpecialWonderconRedText": "Kerah Ruby",
@@ -1266,7 +1314,7 @@
"bodySpecialWonderconBlackNotes": "Kerah ebony yang menarik! Tidak menambah status apapun. Item Edisi Spesial Konvensi",
"bodySpecialTakeThisText": "Take This Pauldrons",
"bodySpecialTakeThisNotes": "These pauldrons were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all attributes by <%= attrs %>.",
- "bodySpecialAetherAmuletText": "Aether Amulet",
+ "bodySpecialAetherAmuletText": "Kalung Aether",
"bodySpecialAetherAmuletNotes": "This amulet has a mysterious history. Increases Constitution and Strength by <%= attrs %> each.",
"bodySpecialSummerMageText": "Jubah Bersinar",
"bodySpecialSummerMageNotes": "Tidak ada air asin maupun air tawar yang bisa menodai benda metalik ini. Tidak menambah status apapun. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Jubah ini mempunyai banyak kantong rahasia untuk menyembunyikan semua Koin Emas yang kamu jarah dari Tugasmu. Tidak menambah status apapun. Item Pelanggan Juni 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Syal Nyaman",
+ "bodyArmoireCozyScarfNotes": "Syal halus ini akan menjagamu tetap hangat selagi kamu ergi untuk bisnis musim dinginmu. Tidak menambah status apapun.",
"headAccessory": "aksesoris kepala",
"headAccessoryCapitalized": "Aksesori Kepala",
"accessories": "Aksesori",
@@ -1349,13 +1399,13 @@
"headAccessoryMystery201502Text": "Sayap Kebijakan",
"headAccessoryMystery201502Notes": "Biarkan imajinasimu mengangkasa! Tidak menambah status apapun. Item Pelanggan Februari 2015.",
"headAccessoryMystery201510Text": "Tanduk Goblin",
- "headAccessoryMystery201510Notes": "Tanduk menakutkan ini sedikit berlendir. Tidak menambah status apapun. Item Pelanggan Oktober 2015.",
+ "headAccessoryMystery201510Notes": "Tanduk menakutkan ini agak berlendir. Tidak menambah status apapun. Item Pelanggan Oktober 2015.",
"headAccessoryMystery301405Text": "Kacamata Kepala",
"headAccessoryMystery301405Notes": "\"Kacamata untuk mata,\" kata mereka. \"Tidak ada yang pakai kacamata di kepala,\" kata mereka. Hah! Yang benar saja! Tidak menambah status apapun. Item Pelanggan Agustus 3015.",
"headAccessoryArmoireComicalArrowText": "Panah Kocak",
"headAccessoryArmoireComicalArrowNotes": "Item aneh ini tidak memberikan tambahan status, tetapi beneran bagus untuk melucu! Tidak menambah status apapun. Peti Harta Karun: Item Tersendiri.",
"eyewear": "Kacamata",
- "eyewearCapitalized": "Eyewear",
+ "eyewearCapitalized": "Kacamata",
"eyewearBase0Text": "Tidak Mengenakan Kacamata",
"eyewearBase0Notes": "Tidak Mengenakan Kacamata.",
"eyewearSpecialBlackTopFrameText": "Kacamata Hitam Standar",
@@ -1372,8 +1422,8 @@
"eyewearSpecialWhiteTopFrameNotes": "Kacamata dengan bingkai putih di atas lensa. Tidak menambah status apapun.",
"eyewearSpecialYellowTopFrameText": "Kacamata Kuning Standar",
"eyewearSpecialYellowTopFrameNotes": "Kacamata dengan bingkai kuning di atas lensa. Tidak menambah status apapun.",
- "eyewearSpecialAetherMaskText": "Aether Mask",
- "eyewearSpecialAetherMaskNotes": "This mask has a mysterious history. Increases Intelligence by <%= int %>.",
+ "eyewearSpecialAetherMaskText": "Topeng Aether",
+ "eyewearSpecialAetherMaskNotes": "Topeng ini mempunyai riwayat yang misterius. Meningkatkan Kecerdasan sebesar <%= int %>.",
"eyewearSpecialSummerRogueText": "Penutup Mata Sangar",
"eyewearSpecialSummerRogueNotes": "Tidak harus jadi perompak untuk tahu betapa gayanya benda ini! Tidak menambah status apapun. Perlengkapan Musim Panas 2014 Edisi Terbatas.",
"eyewearSpecialSummerWarriorText": "Penutup Mata Keren",
diff --git a/website/common/locales/id/generic.json b/website/common/locales/id/generic.json
index 07ffb729cc1..a8de3ebfa2b 100644
--- a/website/common/locales/id/generic.json
+++ b/website/common/locales/id/generic.json
@@ -63,7 +63,7 @@
"newSubscriberItem": "Item Misterius Baru",
"subscriberItemText": "Setiap bulan, pelanggan menerima item misterius. Biasanya dikeluarkan satu minggu sebelum akhir bulan. Lihat halaman wiki 'Mystery Item' untuk informasi lebih lanjut.",
"all": "Semua",
- "none": "Tidak satupun",
+ "none": "Tidak ada",
"more": "<%= count %> lagi",
"and": "dan",
"loginSuccess": "Login berhasil!",
@@ -107,8 +107,8 @@
"achievementDilatory": "Penyelamat dari Kelalaian",
"achievementDilatoryText": "Telah membantu mengalahkan Dread Drag'on dari Kelalaian selama Event Summer Splash 2014!",
"costumeContest": "Kontestan Kostum",
- "costumeContestText": "Telah berpartisipasi dalam Kontes Kostum Habitoween. Lihat karya peserta lain di blog Habitica!",
- "costumeContestTextPlural": "Telah berpartisipasi dalam <%= count %> Kontes Kostum Habitoween. Lihat beberapa karya peserta lain di blog Habitica!",
+ "costumeContestText": "Telah berpartisipasi dalam Kontes Kostum Habitoween. Lihat beberapa karya yang mengagumkan di blog.habitrpg.com!",
+ "costumeContestTextPlural": "Telah berpartisipasi dalam <%= count %> Kontes Kostum Habitoween. Lihat beberapa karya yang mengagumkan di blog.habitrpg.com!",
"memberSince": "- Anggota sejak",
"lastLoggedIn": "- Terakhir masuk",
"notPorted": "Fitur ini belum dipindahkan dari situs sebenarnya.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Tema Airu",
"audioTheme_beatscribeNesTheme": "Tema NES Beatscribe",
"audioTheme_arashiTheme": "Tema Arashi",
+ "audioTheme_maflTheme": "Tema MAFL",
+ "audioTheme_pizildenTheme": "Tema Pizilden",
"askQuestion": "Tanyakan sebuah Pertanyaan",
"reportBug": "Laporkan Bug",
"HabiticaWiki": "Habitica Wiki",
@@ -257,7 +259,7 @@
"self_care": "Perawatan Diri",
"habitica_official": "Habitica Official",
"academics": "Akademik",
- "advocacy_causes": "Advocacy + Causes",
+ "advocacy_causes": "Advokasi + Pergerakan",
"entertainment": "Hiburan",
"finance": "Keuangan",
"health_fitness": "Kesehatan + Kebugaran",
diff --git a/website/common/locales/id/groups.json b/website/common/locales/id/groups.json
index 1e0fecbb026..ed87d734c19 100644
--- a/website/common/locales/id/groups.json
+++ b/website/common/locales/id/groups.json
@@ -7,7 +7,7 @@
"innTextBroken": "Kamu beristirahat di dalam Penginapan, kurasa... Ketika menginap, kamu tidak akan dilukai oleh keseharianmu yang belum selesai, tapi mereka masih akan diperbarui setiap hari... Jika kamu sedang ikut misi melawan musuh, musuh masih bisa melukaimu karena tugas yang tidak diselesaikan teman party-mu... kecuali mereka ada di Penginapan juga... Selain itu kamu tidak akan bisa menyerang musuh (atau menemukan item misi) jika masih di dalam Penginapan... capek banget...",
"helpfulLinks": "Tautan Berguna",
"communityGuidelinesLink": "Pedoman Komunitas",
- "lookingForGroup": "Looking for Group (Party Wanted) Posts",
+ "lookingForGroup": "Kiriman Pencarian Kelompok (Party Wanted)",
"dataDisplayTool": "Alat Penampil Data",
"reportProblem": "Laporkan Bug",
"requestFeature": "Ajukan Fitur Baru",
@@ -70,7 +70,7 @@
"guildBankPop1": "Tabungan Guild",
"guildBankPop2": "Permata yang digunakan ketua guild untuk hadiah tantangan.",
"guildGems": "Permata Guild",
- "group": "Group",
+ "group": "Grup",
"editGroup": "Edit Grup",
"newGroupName": "<%= groupType %> Nama",
"groupName": "Nama Grup",
@@ -102,15 +102,16 @@
"optionalMessage": "Pesan opsional",
"yesRemove": "Ya, hapus mereka",
"foreverAlone": "Tidak bisa menyukai pesanmu sendiri. Jangan seperti itu.",
- "sortLevel": "Urutkan berdasarkan level",
- "sortRandom": "Urutkan secara acak",
- "sortPets": "Urutkan berdasarkan jumlah peliharaan",
- "sortName": "Urutkan berdasarkan nama",
- "sortBackgrounds": "Urutkan berdasarkan latar belakang",
- "sortHabitrpgJoined": "Urutkan berdasarkan tanggal mendaftar Habitica",
- "sortHabitrpgLastLoggedIn": "Urutkan menurut waktu terakhir masuk web",
- "ascendingSort": "Urutkan dari atas",
- "descendingSort": "Urutkan dari bawah",
+ "sortDateJoinedAsc": "Tanggal Paling Awal Bergabung",
+ "sortDateJoinedDesc": "Tanggal Paling Akhir Bergabung",
+ "sortLoginAsc": "Login Terawal",
+ "sortLoginDesc": "Login Terakhir",
+ "sortLevelAsc": "Level Paling Terendah",
+ "sortLevelDesc": "Level Tertinggi",
+ "sortNameAsc": "Nama (A - Z)",
+ "sortNameDesc": "Nama (Z - A)",
+ "sortTierAsc": "Tingkat Terendah",
+ "sortTierDesc": "Tingkat Tertinggi",
"confirmGuild": "Buat Guild seharga 4 Permata?",
"leaveGroupCha": "Tinggalkan tantangan Guild dan...",
"confirm": "Konfirmasi",
@@ -141,14 +142,14 @@
"report": "Laporkan",
"abuseFlag": "Laporkan pelanggaran Pedoman Komunitas",
"abuseFlagModalHeading": "Laporkan <%= name %> karena melanggar aturan?",
- "abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:
",
+ "abuseFlagModalBody": "Apakah kamu yakin ingin melaporkan postingan ini? Laporkan postingan HANYA JIKA postingan tersebut melanggar <%= firstLinkStart %>Pedoman Komunitas<%= linkEnd %> dan/atau <%= secondLinkStart %>Syarat dan Ketentuan<%= linkEnd %>. Pelaporan yang tidak tepat merupakan pelanggaran terhadap Pedoman Komunitas akan membuatmu mendapatkan peringatan. Alasan yang tepat untuk melaporkan postingan adalah termasuk tapi tidak terbatas pada:
",
"abuseFlagModalButton": "Laporkan Pelanggaran",
"abuseReported": "Terima kasih telah melaporkan pelanggaran ini. Moderator telah diberitahu.",
"abuseAlreadyReported": "Kamu telah melaporkan pesan ini.",
"needsText": "Tuliskan pesan.",
"needsTextPlaceholder": "Ketikkan pesan.",
"copyMessageAsToDo": "Salin pesan sebagai To-Do",
- "copyAsTodo": "Copy as To-Do",
+ "copyAsTodo": "Salin sebagai To-Do",
"messageAddedAsToDo": "Pesan tersalin sebagai To-Do.",
"messageWroteIn": "<%= user %> menulis di <%= group %>",
"taskFromInbox": "<%= from %> menulis '<%= message %>'",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Tidak berhak untuk menghapus pesan ini!",
"onlyGroupLeaderCanEditTasks": "Tidak berhak untuk mengatur tugas!",
"onlyGroupTasksCanBeAssigned": "Hanya tugas grup yang bisa ditentukan",
+ "assignedToUser": "Ditugaskan kepada <%= userName %>",
+ "assignedToMembers": "Ditugaskan kepada <%= userCount %> anggota",
+ "assignedToYouAndMembers": "Ditugaskan kepadamu dan <%= userCount %> anggota",
+ "youAreAssigned": "Kamu telah ditugaskan untuk mengerjakan tugas ini",
+ "taskIsUnassigned": "Tugas ini belum ditugaskan kepada siapa pun.",
+ "confirmClaim": "Apakah kamu yakin ingin mengambil tugas ini?",
+ "confirmUnClaim": "Apakah anda yakin untuk batal mengambil tugas ini?",
+ "confirmApproval": "Apakah kamu yakin ingin mengizinkan tugas ini?",
+ "userRequestsApproval": "<%= userName %> meminta izin",
+ "userCountRequestsApproval": "<%= userCount %> permintaan izin",
+ "youAreRequestingApproval": "Kamu sedang meminta izin",
"chatPrivilegesRevoked": "Hak obrolan kamu telah dicabut.",
"newChatMessagePlainNotification": "Ada pesan baru di <%= groupName %> oleh <%= authorName %>. Klik di sini untuk membuka halaman obrolan!",
"newChatMessageTitle": "Ada pesan baru di <%= groupName %>",
@@ -275,15 +287,14 @@
"groupBenefitMessageLimitTitle": "Tambahkan batasan pesan",
"groupBenefitMessageLimitDescription": "Batasan pesanmu telah didobel untuk menampung hingga 400 pesan sekaligus!",
"teamBasedTasks": "Tugas Kelompok",
- "specializedCommunication": "Specialized Communication",
- "funExtras": "Fun Extras",
- "enterprisePlansButton": "Ask about Enterprise Plans",
- "enterprisePlansDescription": "Looking for a larger install with custom needs? See if our enterprise plans are right for you.",
- "enterprisePlansEmailSubject": "Question regarding Enterprise Plans",
+ "specializedCommunication": "Komunikasi Spesial",
+ "funExtras": "Tambahan Seru",
+ "enterprisePlansButton": "Tanya tentang Rencana Perusahaan?",
+ "enterprisePlansDescription": "Mencari tambahan lebih besar dengan kebutuhan khusus? Coba lihat jika rencana perusahaan kami ada yang cocok untukmu.",
"familyPlansButton": "Sign Up for Family Plan Mailing List",
- "familyPlansDescription": "Want a cozier solution to manage your household? Family Plans are coming soon!",
+ "familyPlansDescription": "Mau solusi yang lebih nyaman untuk mengatur rumah tangga? Rencana Keluarga akan segera datang!",
"createAGroup": "Buat sebuah Grup",
- "getAGroupPlanToday": "Get a Group Plan Today",
+ "getAGroupPlanToday": "Dapatkan Rencana Grup Hari Ini",
"assignFieldPlaceholder": "Tuliskan nama profil anggota grup",
"cannotDeleteActiveGroup": "Kamu tidak bisa menghapus grup yang sedang berlangganan",
"groupTasksTitle": "Daftar Tugas Grup",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Kamu akan bergabung ke grup dengan rencana yang dibatalkan. Kamu TIDAK akan menerima gratis berlangganan.",
"cannotChangeLeaderWithActiveGroupPlan": "Kamu tidak bisa mengganti ketua saat grup memiliki rencana yang sedang aktif.",
"leaderCannotLeaveGroupWithActiveGroup": "Ketua tidak bisa meninggalkan grup saat grup memiliki rencana yang sedang aktif",
- "youHaveGroupPlan": "Kamu memiliki gratis berlangganan karena kamu adalah anggota dari grup yang memiliki Rencana Grup. Langganan akan berakhir saat kamu tidak lagi berada dalam grup yang memiliki rencana grup. Setiap bulan ekstra dari kredit langganan yang kamu punya akan diaplikasikan di akhir rencana grup.",
+ "youHaveGroupPlan": "Kamu memiliki gratis berlangganan karena kamu adalah anggota dari grup yang memiliki Rencana Grup. Langganan akan berakhir saat kamu tidak lagi berada dalam grup yang memiliki rencana grup. Setiap bulan ekstra dari kredit langganan yang kamu punya akan diaplikasikan di akhir Rencana Grup.",
"cancelGroupSub": "Batalkan Rencana Grup",
"confirmCancelGroupPlan": "Kamu yakin ingin membatalkan rencana grup dan menghapus seluruh keuntungannya dari semua anggota, termasuk gratis berlangganan?",
"canceledGroupPlan": "Rencana Grup Dibatalkan",
@@ -350,7 +361,7 @@
"privacySettings": "Pengaturan Privasi",
"onlyLeaderCreatesChallenges": "Hanya Pemimpin grup yang bisa membuat Tantangan",
"privateGuild": "Guild Pribadi",
- "charactersRemaining": "<%= characters %> characters remaining",
+ "charactersRemaining": "<%= characters %> karakter tersisa",
"guildSummary": "Ringkasan",
"guildSummaryPlaceholder": "Tulis deskripsi pendek yang mempromosikan Guild kamu kepada Habitican lain. Apa tujuan utama Guild kamu dan mengapa orang harus ikut? Coba sertakan kata-kata kunci di ringkasan sehingga Habitican dapat menemukannya dengan mudah!",
"groupDescription": "Deskripsi",
@@ -360,20 +371,20 @@
"guildGemCostInfo": "Permata yang harus dibayar menjamin Guild yang dibuat berkualitas tinggi dan akan dimasukkan ke bank Guild-mu.",
"noGuildsTitle": "Kamu belum menjadi anggota Guild apapun.",
"noGuildsParagraph1": "Guild ialah kelompok sosial yang dibuat oleh pemain lain yang menyediakan dukungan, rasa tanggung jawab, dan mendorong orang untuk mengobrol.",
- "noGuildsParagraph2": "Click the Discover tab to see recommended Guilds based on your interests, browse Habitica's public Guilds, or create your own Guild.",
+ "noGuildsParagraph2": "Tekan tab Temukan untuk melihat rekomendasi Guild berdasarkan minatmu, lihat-lihat Guild publik Habitica, atau buat Guild-mu sendiri.",
"privateDescription": "Guild pribadi tidak akan ditampilkan di daftar Guild Habitica. Anggota baru hanya dapat ditambahkan melalui undangan saja.",
"removeInvite": "Hapus Undangan",
- "removeMember": "Remove Member",
+ "removeMember": "Keluarkan Anggota",
"sendMessage": "Kirim Pesan",
- "removeManager2": "Remove Manager",
+ "removeManager2": "Keluarkan Manajer",
"promoteToLeader": "Promosikan menjadi Pemimpin",
"inviteFriendsParty": "Undang teman-temanmu ke party-mu dan dapatkan sebuah
Gulungan Misi eksklusif untuk melawan Basi-List bersama!",
- "upgradeParty": "Upgrade Party",
+ "upgradeParty": "Tingkatkan Party",
"createParty": "Buat Party",
"inviteMembersNow": "Apakah kamu mau mengundang anggota sekarang?",
"playInPartyTitle": "Mainkan Habitica dalam sebuah Party!",
"playInPartyDescription": "Hadapi misi-misi menakjubkan bersama temanmu atau sendirian. Lawan monster, buat Tantangan, dan bantu dirimu sendiri untuk menjadi bertanggung jawab melalui Party.",
- "startYourOwnPartyTitle": "Start your own Party",
+ "startYourOwnPartyTitle": "Buat Party-mu sendiri",
"startYourOwnPartyDescription": "Lawan monster sendirian atau undang temanmu sebanyak mungkin!",
"shartUserId": "Bagikan ID Pengguna",
"wantToJoinPartyTitle": "Mau bergabung dengan sebuah Party?",
@@ -383,10 +394,10 @@
"inviteInformation": "Dengan menekan \"Undang\" kamu akan mengirim undangan kepada semua anggota party-mu. Ketika mereka semua telah menerima ataupun menolak, Misinya dimulai.",
"questOwnerRewards": "Hadiah Pemilik Misi",
"updateParty": "Perbarui Party",
- "upgrade": "Upgrade",
+ "upgrade": "Tingkatkan",
"selectPartyMember": "Pilih Anggota Party",
"areYouSureDeleteMessage": "Apakah kamu yakin ingin menghapus pesan ini?",
- "reverseChat": "Reverse Chat",
+ "reverseChat": "Balikkan Urutan Obrolan",
"invites": "Undangan",
"details": "Detil",
"participantDesc": "Setelah semua anggota telah menerima ataupun menolak, Misinya dimulai. Hanya mereka yang memilih 'terima' dapat berpartisipasi dalam Misi dan menerima hadiah.",
@@ -394,8 +405,9 @@
"groupGemsDesc": "Permata Guild dapat digunakan untuk membuat Tantangan! Kedepannya, kamu akan dapat menambahkan lebih banyak Permata Guild. ",
"groupTaskBoard": "Papan Tugas",
"groupInformation": "Informasi Grup",
- "groupBilling": "Group Billing",
+ "groupBilling": "Tagihan Grup",
"wouldYouParticipate": "Apakah kamu mau berpartisipasi?",
"managerAdded": "Manajer berhasil ditambahkan",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manajer berhasil dikeluarkan",
+ "leaderChanged": "Pemimpin telah diganti"
}
\ No newline at end of file
diff --git a/website/common/locales/id/limited.json b/website/common/locales/id/limited.json
index 984c9d8acd7..fd943edc37d 100644
--- a/website/common/locales/id/limited.json
+++ b/website/common/locales/id/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Penyembuh Rumah Hantu (Penyembuh)",
"fall2017TrickOrTreatSet": "Pencuri Trick or Treat (Pencuri)",
+ "winter2018ConfettiSet": "Penyihir Confetti (Mage)",
+ "winter2018GiftWrappedSet": "Ksatria Bungkusan Hadiah (Warrior)",
+ "winter2018MistletoeSet": "Penyembuh Mistletoe (Healer)",
+ "winter2018ReindeerSet": "Rogue Rusa Kutub (Rogue)",
"eventAvailability": "Tersedia untuk dibeli hingga <%= date(locale) %>.",
"dateEndApril": "19 April",
"dateEndMay": "17 Mei",
@@ -120,5 +124,9 @@
"dateEndAugust": "31 Agustus",
"dateEndOctober": "31 Oktober",
"dateEndNovember": "30 November",
- "discountBundle": "bundel"
+ "dateEndJanuary": "31 Januari",
+ "discountBundle": "bundel",
+ "winterPromoGiftHeader": "HADIAHKAN LANGGANAN DAN DAPATKAN GRATIS SATU!",
+ "winterPromoGiftDetails1": "Hanya hingga 12 Januari, sewaktu kamu menghadiahkan orang lain dengan langganan, kamu akan mendapatkan paket langganan yang sama, gratis untuk dirimu sendiri!",
+ "winterPromoGiftDetails2": "Ingat saja kalau kamu atau penerima hadiah itu sudah mempunyai paket langganan yang berulang, hadiah langganan itu baru akan mulai setelah yang sekarang telah dibatalkan atau telah habis. Terima kasih untuk semua dukungan kalian! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/id/loadingscreentips.json b/website/common/locales/id/loadingscreentips.json
index 1322571d333..f4a1653e51b 100644
--- a/website/common/locales/id/loadingscreentips.json
+++ b/website/common/locales/id/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tips #<%= tipNumber %>",
"tip1": "Cek tugas di manapun dengan aplikasi seluler Habitica.",
- "tip2": "Capai level 100 untuk mendapatkan Orb of Rebirth secara gratis dan mulai petualangan baru!",
+ "tip2": "Klik perlengkapan apapun untuk melihat pratinjau, atau gunakan langsung dengan menekan bintang di pojok kiri atas!",
"tip3": "Gunakan emoji supaya mudah membedakan tugas-tugasmu.",
"tip4": "Gunakan simbol # sebelum mengetikkan nama tugas untuk membuat tulisan berukuran besar!",
- "tip5": "Waktu terbaik untuk memakai buff adalah di pagi hari, efeknya bertahan lebih lama!",
- "tip6": "Sering-seringlah mengevaluasi kembali tugas-tugasmu untuk memastikan mereka selalu up-to-date!",
- "tip7": "Beberapa gambar latar bisa saling sambung-menyambung ketika digunakan bersama-sama dengan anggota party. Contohnya: Mountain Lake, Pagodas, dan Rolling Hills.",
- "tip8": "Kirim PM pada orang lain dengan cara mengeklik gambar amplop di dekat nama mereka di obrolan!",
- "tip9": "Kunjungi Guild Leaders & Challenge Creators Guild untuk tips memulai sebuah Perkumpulan.",
+ "tip5": "Waktu terbaik untuk menggunakan skill untuk memberikan buff adalah pagi hari sehingga mereka bertahan lebih lama.",
+ "tip6": "Arahkan mouse kamu di atas sebuah tugas dan klik titik-titik yang muncul untuk membuka pengaturan tugas lanjutan, seperti untuk memindahkan tugas ke atas atau bawah dari daftarmu.",
+ "tip7": "Beberapa latar belakang menyambung dengan sempurna jika anggota Party menggunakan latar belakang yang sama. Contoh: Danau Pegunungan, Pagoda, dan Bukit Gelinding.",
+ "tip8": "Kirim sebuah Pesan kepada orang lain dengan menekan nama mereka di chat dan menekan ikon amplop di bagian atas profil mereka!",
+ "tip9": "Gunakan filter + kotak search di Inventori, Toko, Guild, dan Tantangan untuk mencari dengan cepat apa yang kamu mau.",
"tip10": "Kamu bisa memenangkan permata dengan berkompetisi di Tantangan. Tantangan-tantangan baru ditambahkan setiap harinya!",
- "tip11": "Jika kamu senang mendandani avatarmu, coba cek Costume Carnival Guild.",
- "tip12": "Ikuti Guild \"Challenge... Accepted\" untuk mendapatkan tantangan-tantangan random secara rutin.",
- "tip13": "Memiliki lebih dari empat anggota Party meningkatkan rasa tanggung jawab!",
+ "tip11": "Mempunyai lebih dari empat anggota Party meningkatkan rasa tanggung jawab!",
+ "tip12": "Tambahkan ceklis ke daftar To-Do untuk melipatgandakan hadiahnya!",
+ "tip13": "Klik \"Filter\" di laman tugasmu untuk membuat daftar tugas susah dilihatmu lebih mudah diatur!",
"tip14": "Kamu bisa menambahkan judul atau kata-kata mutiara ke daftar Habit-mu dengan tidak menyertakan tanda (+/-).",
- "tip15": "Tambahkan checklist di daftar To-Do kamu untuk meningkatkan hadiah yang kamu dapat!",
- "tip16": "Cek tab Data untuk mendapat wawasan akan perkembanganmu.",
- "tip17": "Menggunakan Tags bisa membuat daftar tugas yang berat menjadi lebih mudah diatur!",
+ "tip15": "Selesaikan semua Misi Berlanjut Masterclasser untuk mempelajari kisah terpendam Habitica.",
+ "tip16": "Klik tautan ke Alat Penampil Data di bagian bawah laman untuk melihat perkembanganmu dengan lebih teratur dan mendalam.",
+ "tip17": "Gunakan aplikasi ponsel untuk mengatur pengingat akan tugas-tugasmu.",
"tip18": "Kebiasaan yang hanya positif atau hanya negatif lambat laun \"memudar\" dan kembali berwarna kuning.",
- "tip19": "Tingkatkan status Kecerdasan untuk mendapatkan XP lebih ketika kamu menyelesaikan tugas.",
+ "tip19": "Tingkatkan Status Kecerdasanmu untuk mendapat lebih banyak pengalaman sewaktu menyelesaikan sebuah tugas.",
"tip20": "Tingkatkan status Persepsi untuk mendapatkan lebih banyak hadiah dan koin emas.",
"tip21": "Tingkatkan status Kekuatan untuk melakukan lebih banyak serangan kepada bos atau mendapatkan serangan kritis.",
"tip22": "Tingkatkan Status Ketahanan untuk mengurangi serangan dari Tugas Harian yang belum diselesaikan.",
- "tip23": "Klik pada ikon grafik pada tugasmu untuk melihat grafik yang menunjukkan perkembanganmu.",
- "tip24": "Habitica bersifat Open Source! Bertanyalah di guild Aspiring Legends jika kamu ingin berkontribusi.",
+ "tip23": "Capai level 100 untuk membuka Batu Kelahiran secara gratis dan memulai petualangan baru!",
+ "tip24": "Punya pertanyaan? Tanyakan di guild Bantuan Habitica!",
"tip25": "Empat Grand Gala musiman dimulai dekat dengan waktu titik balik matahari (solstice) dan ekuinoks (equinox).",
- "tip26": "Tanda panah di kiri angka level seseorang menunjukkan mereka sedang dalam buff.",
+ "tip26": "Tanda panah di kanan nama seseorang berarti mereka sedang di-buff.",
"tip27": "Lupa mencentang Tugasan Harian yang dilakukan kemarin? Jangan khawatir! Dengan menggunakan Catat Aktifitas Kemarin, kamu akan mendapat kesempatan untuk memasukkan apa yang kamu lakukan sebelum hari barumu dimulai.",
- "tip28": "Atur Custom Day Start di Pengaturan > Site untuk mengatur kapan harimu dimulai.",
+ "tip28": "Atur Awal Hari Kustom di bawah Ikon Pengguna > Pengaturan untuk mengatur kapan harimu mengulang.",
"tip29": "Selesaikan Tugas Harian untuk mendapatkan Perfect Day Buff yang meningkatkan stat kamu!",
"tip30": "Kamu dapat mengundang orang ke dalam Guild, bukan hanya Party.",
"tip31": "Cek daftar yang tersedia di Perpustakaan Tugas dan Guild Tantangan untuk melihat contoh-contoh tugas.",
- "tip32": "Banyak kode, ilustrasi dan kisah di Habitica yang ditulis oleh kontributor secara sukarela! Siapapun bisa membantu.",
- "tip33": "Cek Papan Pengumuman guild untuk membaca berita tentang guild, tantangan, serta acara-acara buatan pemain lain - dan juga umumkan tantangan buatanmu disana!"
+ "tip32": "Banyak kode, ilustrasi dan kisah di Habitica yang ditulis oleh kontributor secara sukarela! Pergi ke Guild Aspiring Legends untuk membantu.",
+ "tip33": "Cek Papan Pengumuman guild untuk membaca berita tentang Guild, Tantangan, serta acara-acara buatan pemain lain - dan umumkan buatanmu disana juga!",
+ "tip34": "Sesekali evaluasi ulang tugas-tugasmu untuk memastikan tugasmu masih relevan!",
+ "tip35": "Pengguna yang merupakan bagian dari Rencana Grup bisa menugaskan tugas kepada pengguna lain di Grup itu untuk akuntabilitas dan manajemen tugas tambahan."
}
diff --git a/website/common/locales/id/messages.json b/website/common/locales/id/messages.json
index 6a808a7677f..fc55779215a 100644
--- a/website/common/locales/id/messages.json
+++ b/website/common/locales/id/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Kamu menemukan misi \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Kamu pernah membeli perlengkapan ini, tetapi sekarang tidak memilikinya. Kamu bisa membelinya lagi di kolom hadiah dalam halaman tugas.",
"messageAlreadyOwnGear": "Kamu sudah memiliki item ini. Kamu bisa memakainya dengan pergi ke halaman perlengkapan.",
+ "previousGearNotOwned": "Kamu perlu membeli perlengkapan yang berlevel lebih rendah dari yang ini.",
"messageHealthAlreadyMax": "Kamu sudah punya nyawa maksimum.",
"messageHealthAlreadyMin": "Oh tidak! Kamu sudah kehabisan nyawa, jadi sudah telat untuk membeli ramuan kesehatan, tetapi jangan khawatir - kamu bisa bangkit lagi!",
"armoireEquipment": "<%= image %> Kamu menemukan bagian dari perlengkapan yang langka di Armoire: <%= dropText %>! Keren!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Kamu telah melaporkan pesan ini",
"messageGroupChatNotFound": "Pesan tidak ditemukan!",
"messageGroupChatAdminClearFlagCount": "Hanya admin yang bisa menghapus jumlah tanda!",
+ "messageCannotFlagSystemMessages": "Kamu tidak dapat melaporkan sebuah pesan sistem. Jika kamu perlu melaporkan pelanggaran dari Pedoman Komunitas terkait dengan pesan ini, harap email screenshot itu beserta penjelasan kepada Lemoness di <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ups, sepertinya kamu mengirim terlalu banyak pesan! Cobalah tunggu beberapa menit dan coba lagi. Ruang obrolan Kedai Minuman hanya dapat menampung 200 pesan sekaligus, jadi Habitica menyarankan agar kamu mengirim pesan yang lebih panjang dan terpikir matang serta balasan yang membantu. Kami tak sabar menunggu apa yang ingin kamu katakan. :)",
"messageUserOperationProtected": "jalur `<%= operation %>` tidak disimpan, karena terproteksi.",
"messageUserOperationNotFound": "<%= operation %> operasi tidak ditemukan",
diff --git a/website/common/locales/id/noscript.json b/website/common/locales/id/noscript.json
index f3bde2c3180..cc414ac1300 100644
--- a/website/common/locales/id/noscript.json
+++ b/website/common/locales/id/noscript.json
@@ -1,6 +1,6 @@
{
- "jsDisabledHeading": "Duh! Perambanmu tidak memiliki JavaScript aktif",
- "jsDisabledHeadingFull": "Duh! Perambanmu tidak memiliki JavaScript aktif, tanpanya Habitica tidak bisa bekerja sebagaimana mestinya",
+ "jsDisabledHeading": "Duh! Browser-mu tidak memiliki JavaScript aktif",
+ "jsDisabledHeadingFull": "Duh! Browser-mu tidak memiliki JavaScript aktif dan tanpa itu, Habitica tidak bisa bekerja sebagaimana mestinya",
"jsDisabledText": "Habitica tidak bisa menampilkan situs ini dengan baik tanpanya!",
"jsDisabledLink": "Aktifkan JavaScript untuk melanjutkan!"
}
\ No newline at end of file
diff --git a/website/common/locales/id/pets.json b/website/common/locales/id/pets.json
index 3c1a3849612..aa62917c0fc 100644
--- a/website/common/locales/id/pets.json
+++ b/website/common/locales/id/pets.json
@@ -28,7 +28,7 @@
"phoenix": "Phoenix",
"magicalBee": "Lebah Ajaib",
"royalPurpleJackalope": "Jackalope Ungu Kerajaan",
- "invisibleAether": "Eter Tembus Pandang",
+ "invisibleAether": "Aether Tembus Pandang",
"rarePetPop1": "Klik tapak emas untuk mengetahui lebih lanjut bagaimana kamu bisa mendapatkan peliharaan langka ini dengan berkontribusi ke Habitica!",
"rarePetPop2": "Cara Mendapatkan Peliharaan ini!",
"potion": "Ramuan <%= potionType %>",
@@ -123,5 +123,5 @@
"clickOnPetToFeed": "Klik seekor Peliharaan untuk memberinya makan <%= foodName %> dan lihat ia bertumbuh!",
"dragThisPotion": "Tarik <%= potionName %> ini ke sebuah Telur dan tetaskan peliharaan baru!",
"clickOnEggToHatch": "Klik sebuah Telur untuk menggunakan ramuan penetas <%= potionName %>-mu dan tetaskan peliharaan baru!",
- "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
+ "hatchDialogText": "Tuangkan ramuan penetas <%= potionName %>-mu diatas telur <%= eggName %>-mu, dan ia akan menetas menjadi seekor <%= petName %>."
}
\ No newline at end of file
diff --git a/website/common/locales/id/quests.json b/website/common/locales/id/quests.json
index 9d76380da53..a6d0f2447e1 100644
--- a/website/common/locales/id/quests.json
+++ b/website/common/locales/id/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> item misi telah ditemukan",
"questDamage": "+ <%= val %> damage kepada boss",
"begin": "Mulai",
- "bossHP": "Nyawa Boss",
+ "bossHP": "HP Boss",
"bossStrength": "Kekuatan Boss",
"rage": "Kemarahan",
"collect": "Kumpulkan",
@@ -49,7 +49,7 @@
"bossDmg1Broken": "Setiap Keseharian dan To-Do yang diselesaikan serta Kebiasaan positif akan menyerang musuh... Serang lagi dengan melakukan tugas-tugas warna merah atau Serangan Brutal dan Semburan Api... Musuh akan menyerangmu dan teman-temanmu sesuai jumlah Keseharian yang belum dikerjakan (dikalikan dengan Kekuatan musuh), jadi jaga teman-temanmu tetap selamat dengan mengerjakan Keseharianmu... Semua serangan akan dilakukan pada saat cron (pergantian hari)...",
"bossDmg2Broken": "Hanya partisipan yang akan melawan monster dan mendapatkan hadiah...",
"tavernBossInfo": "Kerjakan Keseharian dan To-Do serta lakukan Kebiasaan positif untuk menyerang World Boss! Keseharian yang tidak dikerjakan akan mengisi Tingkat Kemarahan. Ketika tingkat Kemarahan penuh, World Boss akan menyerang seorang NPC. World Boss tidak akan pernah melukai pemain secara individual. Hanya akun aktif yang tidak beristirahat dalam Penginapan yang tugasnya akan dihitung.",
- "tavernBossInfoBroken": "Kerjakan Keseharian dan To-Do serta lakukan Kebiasaan positif untuk menyerang World Boss... Keseharian yang tidak dikerjakan akan mengisi Tingkat Serangan Kelelahan... Ketika tingkat Serangan Kelelahan penuh, World Boss akan menyerang seorang NPC... World Boss tidak akan pernah melukai pemain secara individual... Hanya akun aktif yang tidak beristirahat dalam Penginapan yang tugasnya akan dihitung...",
+ "tavernBossInfoBroken": "Kerjakan Keseharian dan To-Do serta lakukan Kebiasaan positif untuk menyerang World Boss... Keseharian yang tidak dikerjakan akan mengisi Tingkat Serangan Kelelahan... Ketika tingkat Serangan Kelelahan penuh, World Boss akan menyerang seorang NPC... World Boss tidak akan pernah melukai pemain atau akun dengan cara apapun ... Hanya akun aktif yang tidak beristirahat dalam Penginapan yang tugasnya akan dihitung...",
"bossColl1": "Untuk mengumpulkan item, kerjakan tugas positifmu. Item misi muncul sebagaimana item normal; kamu dapat melihat item misi yang kamu dapatkan pada ikon perkembangan misi.",
"bossColl2": "Hanya partisipan yang dapat mengumpulkan item dan membagi barang jarahan.",
"bossColl1Broken": "Untuk mengumpulkan item, kerjakan tugas positifmu... Item misi muncul sebagaimana item normal; kamu dapat melihat item misi yang kamu dapatkan di ikon perkembangan misi...",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Kamu harus mencapai level <%= level %> untuk membeli misi ini!",
"mustInviteFriend": "Untuk mendapatkan misi ini, undang seorang teman ke dalam Party-mu. Undang teman sekarang?",
"unlockByQuesting": "Untuk membuka misi ini, selesaikan <%= title %>.",
+ "questConfirm": "Apakah kamu yakin? Hanya <%= questmembers %> dari <%= totalmembers %> anggota party-mu yang telah bergabung untuk misi ini! Misi akan mulai secara otomatis apabila semua pemain telah bergabung atau menolak undangannya.",
"sureCancel": "Apakah kamu yakin ingin membatalkan misi ini? Semua undangan yang diterima akan dihapus. Pemilik misi tidak akan kehilangan gulungan misi.",
"sureAbort": "Apakah kamu yakin ingin membatalkan misi ini? Semua yang bergabung dari party juga ikut batal dan semua perkembangan akan hilang. Gulungan misi akan dikembalikan kepada pemiliknya.",
"doubleSureAbort": "Apakah kamu super yakin? Pastikan bahwa mereka nggak akan membenci kamu selamanya!",
diff --git a/website/common/locales/id/questscontent.json b/website/common/locales/id/questscontent.json
index 499444268c1..747d7ea7e2a 100644
--- a/website/common/locales/id/questscontent.json
+++ b/website/common/locales/id/questscontent.json
@@ -105,7 +105,7 @@
"questGoldenknight3DropHoney": "Madu (Makanan)",
"questGoldenknight3DropGoldenPotion": "Ramuan Penetas Emas",
"questGoldenknight3DropWeapon": "Morning Star Penghancur Mustaine (Senjata di Tangan Lain)",
- "questGroupEarnable": "Earnable Quests",
+ "questGroupEarnable": "Misi yang Dapat Didapatkan",
"questBasilistText": "Basi-List",
"questBasilistNotes": "Ada sebuah pengumuman di papan--mungkin orang lain bakal tunggang langgang. Kamu adalah seorang petualang yang pemberani, jadi kamu memilih untuk menerimanya, dan menghadapi Basi-list, monster yang tersusun atas tugas-tugas yang tidak diselesaikan! Penduduk biasa akan ketakutan melihat betapa panjangnya Basi-list, membuat mereka malah tidak mulai mengerjakan tugasnya. Saat kamu menghadapi monster itu, kamu mendengar @Arcosine berteriak: \"Cepat! Selesaikan tugasmu untuk membuat monster itu lemah, sebelum seseorang diserang si monster!\" Bergeraklah cepat, sang petualang, dan selesaikan tugasmu - tapi hati-hati! Jika kamu tidak mengerjakan tugas, Basi-list akan menyerangmu dan teman-temanmu!",
"questBasilistCompletion": "Basi-list langsung robek menjadi potongan-potongan kecil, yang berkilauan dalam warna-warna pelangi. \"Leganya!\" seru @Arcosine. \"Aku beruntung kalian ada disini!\" Merasa lebih berpengalaman dari sebelumnya, kamu mengumpulkan beberapa koin emas yang berjatuhan di antara robekan kertas.",
@@ -143,7 +143,7 @@
"questAtom2Drop": "Sang Laundromancer (Gulungan)",
"questAtom3Text": "Serangan Mundane, Bagian 3: Sang Laundromancer",
"questAtom3Notes": "Dengan tangisan yang memekakkan telinga, lima tipe keju yang berbeda meleleh keluar dari mulutnya, monster SnackLess hancur berkeping-keping. \"BERANI-BERANINYA KAU!\" Jerit sebuah suara dari bawah air. Sosok berjubah biru bangkit dari air, membawa sebuah sikat toilet ajaib. Baju-baju kotor mulai mengambang di permukaan danau. \"Akulah Laundromancer!\" Jeritnya. \"Kalian punya keberanian juga - mencuci baju-baju kotorku yang indah, membunuh peliharaanku, dan masuk ke wilayahku dengan baju kalian yang bersih. Bersiaplah menerima kemarahan dari sihir anti-baju bersih milikku!\"",
- "questAtom3Completion": "Laundromancer yang jahat udah dikalahkan! Baju yang bersih berjatuhan di sekelilingmu. Sekarang semuanya terlihat lebih baik. Sat kamu mengamati baju-baju itu, ada kilatan logam yang terlihat di matamu, dan kamu melihat helm yang menarik. Pemilik aslinya tidak diketahui, tapi saat kamu mengenakannya, kamu merasakan kehadiran pemiliknya yang dermawan. Sayang sekali mereka tidak menjahit nama mereka di benda itu,",
+ "questAtom3Completion": "Laundromancer yang jahat sudah dikalahkan! Baju yang bersih berjatuhan di sekelilingmu. Sekarang semuanya terlihat lebih baik. Saat kamu mengamati baju-baju itu, matamu menangkap sebuah kilatan logam, dan kamu melihat helm yang menarik. Pemilik aslinya tidak diketahui, tapi saat kamu mengenakannya, kamu merasakan kehadiran pemiliknya yang dermawan. Sayang sekali mereka tidak menjahit nama mereka di benda itu.",
"questAtom3Boss": "Laundromancer",
"questAtom3DropPotion": "Ramuan Penetas Biasa",
"questOwlText": "Burung Hantu Malam",
@@ -220,13 +220,13 @@
"questWhaleCompletion": "Setelah kerja keras, sang paus akhirnya menghentikan raungannya yang memekakkan telinga. \"Kelihatannya dia tenggelam di arus kebiasaan buruk,\" @zoebeagle menjelaskan. \"Terimakasih untuk kerja kerasmu, kita bisa menenangkannya!\" Saat kamu baru akan memasuki kapal selam, kamu melihat telur-telur ikan paus yang mengapung ke arahmu, kamu pun mengambilnya.",
"questWhaleDropWhaleEgg": "Ikan Paus (Telur)",
"questWhaleUnlockText": "Dapatkan telur Paus yang dapat dibeli di Pasar",
- "questGroupDilatoryDistress": "Dilatory Distress",
+ "questGroupDilatoryDistress": "Penderitaan Dilatory",
"questDilatoryDistress1Text": "Dilatory Distress, Bagian 1: Pesan dalam Botol",
"questDilatoryDistress1Notes": "Sebuah pesan dalam botol sampai dari kota Dilatory yang baru selesai dibangun! Surat itu bertuliskan: \"Habiticans, kami membutuhkan bantuanmu sekali lagi. Putri raja telah hilang dan kota ini terancam oleh serangan monster air! Udang mantis sedang menahan serangan di dermaga. Tolong bantu kami!\" Untuk memulai perjalanan ke kota terbenam itu, kita harus mampu bernafas dalam air. Untungnya, alkemis @Benga dan @Hazel bisa membuat itu menjadi mungkin! Kamu hanya perlu menemukan bahan-bahan yang dibutuhkan.",
"questDilatoryDistress1Completion": "Kamu mengenakan baju bersirip dan berenang ke Dilatory secepat yang kamu bisa. Manusia duyung dan udang mantis mereka dapat bertahan untuk mejaga monster di perbatasan selama yang mereka bisa, tetapi mereka mulai kewalahan. Kamu langsung masuk ke dalam kastil sebelum prajurit berikutnya diturunkan!",
"questDilatoryDistress1CollectFireCoral": "Koral Api",
"questDilatoryDistress1CollectBlueFins": "Sirip Biru",
- "questDilatoryDistress1DropArmor": "Baju Samudra Bersiri (Baju)",
+ "questDilatoryDistress1DropArmor": "Baju Zirah Samudra Bersirip (Armor)",
"questDilatoryDistress2Text": "Dilatory Distress, Bagian 2: Makhluk dari Palung Laut",
"questDilatoryDistress2Notes": "Pasukan musuh dapat terlihat dari nun jauhnya: ribuan tengkorak berebut memasuki portal di dinding pembatas dan menuju Dilatory.
Saat kamu bertemu Raja Manta di ruangannya, matanya terlihat begitu dalam, dan wajahnya terlihat begitu khawatir. \"Anakku Adva menghilang ke dalam goa yang gelap sebelum terjadi penyerangan ini. Tolong temukan dia dan bawa dia kembali! Aku akan meminjamkanmu Mahkota Koral Api untuk membantumu. Jika kamu berhasil, itu akan menjadi milikmu.\"",
"questDilatoryDistress2Completion": "Kamu mengalahkan gerombolan tengkorak yang menakutkan, tetapi rasanya kamu tidak juga menemukan Adva. Kamu minta nasihat kepada @Kiwibot, sang penemu dari kerajaan, barangkali dia memiliki pendapat. \"Udang mantis yang melindungi kota ini mungkin melihat ke mana perginya Adva,\" ujar @Kiwibot. \"Coba ikuti mereka masuk ke dalam goa yang gelap.\"",
@@ -239,13 +239,13 @@
"questDilatoryDistress2DropHeadgear": "Mahkota Koral Api (Aksesori Kepala)",
"questDilatoryDistress3Text": "Dilatory Distress, Bagian 3: Bukan Duyung Biasa",
"questDilatoryDistress3Notes": "Kamu mengikuti udang mantis jauh ke dalam goa, dan mendapatkan benteng bawah air. Putri Adva, diiringi oleh banyak tengkorak air, menunggumu di aula. \"Ayahanda telah mengirim dirimu, benar begitu? Katakan kepadanya aku menolak untuk kembali. Aku bahagia berada di sini dan berlatih sihirku. Tinggalkan aku sekarang, atau kau akan merasakan kemarahan dari ratu samudra yang baru!\" Adva terlihat begitu kukuh, tetapi saat dia berbicara, kamu menyadari ada kalung batu rubi yang berpendar aneh... Mungkin dia terkena hipnotis dan kamu harus memastikannya dengan menghancurkan batu itu!",
- "questDilatoryDistress3Completion": "Akhirnya, kamu berhasil merebut liontin kalung yang sudah dimantrai itu dari leher Adva dan membuangnya jauh-jauh. Adva mencengkeram kepalanya. \"Dimana aku? Apa yang terjadi?\" Setelah mendengarkan penjelasanmu, dia terlihat muram. \"Kalung itu diberikan kepadaku oleh wanita aneh bernama 'Tzina'. Aku tidak bisa mengingat apapun selain itu!\"
Sekembalinya ke Dilatory, Manta sangat senang dengan keberhasilan misimu. \"Aku akan memberikanmu hadiah trisula dan perisai ini! Aku memesannya dari @aiseant dan @starsystemic sebagai hadiah untuk Adva, tapi... kurasa akan lebih aman untuk tidak memberikannya senjata apapun untuk saat ini.\"",
+ "questDilatoryDistress3Completion": "Akhirnya, kamu berhasil merebut liontin terkutuk itu dari leher Adva dan membuangnya jauh-jauh. Adva mencengkeram kepalanya. \"Dimana aku? Apa yang terjadi?\" Setelah mendengarkan penjelasanmu, dia terlihat muram. \"Kalung itu diberikan kepadaku oleh seorang duta besar aneh - seorang wanita bernama 'Tzina'. Aku tidak ingat apapun selain itu!\"
Sekembalinya ke Dilatory, Manta kesenangan atas keberhasilanmu. \"Aku hadiahkan trisula dan perisai ini! Kupesan dari @aiseant dan @starsystemic sebagai hadiah untuk Adva, tapi... kurasa akan lebih aman untuk tidak memberinya senjata apapun untuk saat ini.\"",
"questDilatoryDistress3Boss": "Adva, sang Duyung Pencuri Kekuasaan",
"questDilatoryDistress3DropFish": "Ikan (Makanan)",
"questDilatoryDistress3DropWeapon": "Trisula Pemecah Ombak (Senjata)",
- "questDilatoryDistress3DropShield": "Moonpearl Shield (Off-Hand Item)",
+ "questDilatoryDistress3DropShield": "Perisai Moonpearl (Item Tangan Lain)",
"questCheetahText": "Seperti Cheetah",
- "questCheetahNotes": "Saat kamu berjalan mengarungi Savana Sloensteadi dengan temanmu @PainterProphet, @tivaquinn, @Unruly Hyena, dan @Crawford, kamu kaget melihat Cheetah lewat dengan menjepit Habitican baru di antara rahangnya. Di bawah tapak kakinya yang berkobar, tugas-tugas terbakar seolah terselesaikan -- padahal tidak seorangpun yang benar-benar menyelesaikannya! Habitican melihatmu dan berteriak, \"Tolong aku! Cheetah ini membuatku naik level terlalu cepat, tetapi aku tidak menyelesaikan apapun. Aku ingin bersabar dan menikmati permainannya. Hentikan dia!\" Kamu mengenang masa-masa di saat kamu baru mulai petualanganmu, dan kini kamu tahu kamu harus menolong pemula di hadapanmu dengan menghentikan sang Cheetah!",
+ "questCheetahNotes": "Saat kamu berjalan mengarungi Sabana Sloensteadi dengan temanmu @PainterProphet, @tivaquinn, @Unruly Hyena, dan @Crawford, kamu kaget melihat seekor Cheetah lewat selagi seorang Habitican baru terjepit di antara rahangnya. Di bawah tapak kakinya yang berkobar, tugas-tugas terbakar seolah terselesaikan -- padahal tidak ada yang benar-benar menyelesaikannya! Habitican itu melihatmu dan berteriak, \"Tolong aku! Cheetah ini membuatku naik level terlalu cepat, tetapi aku tidak menyelesaikan apapun. Aku ingin bersabar dan menikmati permainannya. Hentikan dia!\" Kamu mengenang masa-masa di saat kamu baru mulai petualanganmu, dan kini kamu tahu kamu harus menolong pemula di hadapanmu dengan menghentikan sang Cheetah!",
"questCheetahCompletion": "Habitican pemula itu terengah-engah setelah perjalanannya yang melelahkan, tetapi terimakasih kepada dirimu dan teman-temanmu atas pertolongan yang kalian berikan. \"Aku lega Cheetah itu tidak sempat menyeret korban lain. Dia meninggalkan beberapa telur Cheetah untuk kita, jadi kita dapat membesarkan mereka menjadi peliharaan yang dapat dipercaya!\"",
"questCheetahBoss": "Cheetah",
"questCheetahDropCheetahEgg": "Cheetah (Telur)",
@@ -287,15 +287,15 @@
"questUnicornDropUnicornEgg": "Unicorn (Telur)",
"questUnicornUnlockText": "Dapatkan telur Unicorn yang dapat dibeli di Pasar",
"questSabretoothText": "Kucing Sabre Zombie",
- "questSabretoothNotes": "A roaring monster is terrorizing Habitica! The creature stalks through the wilds and woods, then bursts forth to attack before vanishing again. It's been hunting innocent pandas and frightening the flying pigs into fleeing their pens to roost in the trees. @Inventrix and @icefelis explain that the Zombie Sabre Cat was set free while they were excavating in the ancient, untouched ice-fields of the Stoïkalm Steppes. \"It was perfectly friendly at first – I don't know what happened. Please, you have to help us recapture it! Only a champion of Habitica can subdue this prehistoric beast!\"",
+ "questSabretoothNotes": "Monster yang meraung sedang meneror Habitica! Makhluk itu mengendap di alam liar dan di pepohonan, lalu menyerang sebelum kembali menghilang. Dia telah memburu banyak panda yang malang dan menakuti babi terbang hingga melarikan diri dari sarang pohon mereka. @Inventrix dan @icefelis menjelaskan bahwa Kucing Sabre Zombie terlepas ketika mereka melakukan penggalian di padang es kuno yang tak terjamah di Stepa Stoïkalm. \"Dia sangat bersahabat pada awalnya - aku tidak tahu apa yang terjadi. Tolong, kau harus membantu kami menangkapnya kembali! Hanya seorang jagoan dari Habiticalah yang dapat menjinakkan monster prasejarah ini!\"",
"questSabretoothCompletion": "Setelah pertarungan yang panjang dan melelahkan, kamu menjatuhkan Harimau Bergigi Pedang di atas tanah. Saat kamu mampu meihat lebih dekat, kamu menyadari lubang yang ada di salah satu gigi taring sang harimau. Kamu akhirnya memahami apa yang membuatnya begitu marah, kemudian kamu pergi ke @Fandeskap untuk mengobati gigi sang harimau, dan menyarankan semuanya untuk seterusnya menghindari memberi makanan manis kepada teman-teman mereka. Harimau Bergigi Pedang bangkit, dan pemiliknya berterimakasih kepadamu dengan memberikan hadiah – telur Harimau Bergigi Pedang!",
"questSabretoothBoss": "Kucing Sabre Zombie",
"questSabretoothDropSabretoothEgg": "Sabretooth (Telur)",
"questSabretoothUnlockText": "Dapatkan telur Sabretooth yang dapat dibeli di Pasar",
- "questMonkeyText": "Mandrill Raksasa dan Monyet Jahil",
- "questMonkeyNotes": "Sloensteadi Savannah sedang dihancurkan oleh Monstrous Mandrill dan Mischief Monkeysnya! Teriakannya sangat keras untuk menenggelamkan suara dari batas waktu yang mendekat, membuat semuanya menghindari kewajiban mereka dan tetap bertingkah seperti monyet. Aduh, banyak orang meniru tingkah laku buruk ini. Jika tidak ada yang menghentikan primata ini, secepatnya semua tugas akan menjadi semerah wajah Monstrous Mandrill!
\"Akan membutuhkan penjelajah berdedikasi untuk menahan mereka,\" ujar @yamato.
\"Cepatlah, lepaskan monyet ini dari punggung semua orang!\" teriak @Oneironaut, dan kamu maju ke pertempuran.",
+ "questMonkeyText": "Mandril Raksasa dan Monyet Jahil",
+ "questMonkeyNotes": "Sabana Sloensteadi sedang dirusakkan oleh Mandril Raksasa dan Monyet Jahil-nya! Teriakannya sangat keras untuk menenggelamkan suara dari batas waktu yang mendekat, mendorong orang untuk menghindari kewajiban mereka dan tetap bertingkah seperti monyet. Aduh, banyak orang meniru tingkah laku buruk ini. Jika tidak ada yang menghentikan primata ini, semua tugas akan menjadi semerah wajah Mandril Raksasa!
\"Hanya seorang penjelajah berdedikasi yang dapat menahan mereka,\" ujar @yamato.
\"Cepatlah, lepaskan monyet-monyet ini dari punggung semua orang!\" teriak @Oneironaut, dan kamu maju ke pertempuran.",
"questMonkeyCompletion": "Kamu berhasil! Tidak ada pisang untuk musuh-musuh itu sekarang. Takut dengan kedisiplinanmu, para monyet kabur dengan panik. \"Lihat\" ujar @Misceo. \"Mereka meninggalkan beberapa telur di belakang.\"
@Leephon menyeringai. \"Mungkin peliharaan monyet yang terlatih bisa menolongmu, tidak seperti monyet liar yang menghalangimu!\" ",
- "questMonkeyBoss": "Mandrill Raksasa",
+ "questMonkeyBoss": "Mandril Raksasa",
"questMonkeyDropMonkeyEgg": "Monyet (Telur)",
"questMonkeyUnlockText": "Dapatkan telur Monyet yang dapat dibeli di Pasar",
"questSnailText": "Siput Drudgery Sludge",
@@ -305,7 +305,7 @@
"questSnailDropSnailEgg": "Siput (Telur)",
"questSnailUnlockText": "Dapatkan telur Siput yang dapat dibeli di Pasar",
"questBewilderText": "Sang Be-Wilder",
- "questBewilderNotes": "Pesta itu dimulai seperti biasanya.
Makanan pembuka yang sangat enak, musik yang indah, dan bahkan gajah yang menari menjadi sebuah rutinitas. Penduduk Habitica tertawa dan bersenang-senang di antara bunga-bunga, senang mendapatkan pengalih perhatian dari tugas mereka yang paling dienci, dan April Fool berputar di antara mereka, bersemangat untuk menunjukkan beberapa trik dan kejahilan.
Seiring menara jam Mistiflying menunjukkan waktu tengah malam, April Fool melompat ke arah panggung untuk memberikan pidato.
\"Teman-teman! Musuh-musuh! Rekan-rekan yang toleran! Pinjamkan aku telinga.\" Penonton tertawa kecil saat telinga binatang tumbuh dari kepala mereka, dan mereka berpose dengan aksesori baru mereka.
\"Seperti yang kalian tahu,\" Sang Fool melanjutkan, \"Ilusiku yang membingungkan biasanya bertahan hanya satu hari. Tetapi aku senang untuk mengumumkan bahwa aku menemukan jalan pintas yang menjamin kita mendapatkan kesenangan tak terbatas, tanpa harus mengurus beratnya tanggung jawab kita. Penduduk Habitica yang berbahagia, kuperkenalkan teman baruku yang ajaib... Sang Be-Wilder!\"
Lemoness langsung memucat, menjatuhkan hors d'oeuvres-nya. \"Tunggu! Jangan percaya--\"
Namun tiba-tiba kabut menutupi ruangan, berkilauan dan tebal, dan mereka berputar di sekeliling April Fool, membentuk bulu-bulu dan leher yang panjang. Penonton tidak bisa berkata-kata saat monster burung itu muncul tepat di hadapan mereka, sayapnya berkilau dengan ilusi. Dia mengeluarkan tawa melengking yang menakutkan.
\"Oh, sudah bertahun-tahun sejak seorang Habitica cukup konyol untuk memanggilku! Betapa senangnya, akhirnya mendapatkan bentuk tubuh.\"
Berdengung dengan teror, lebah ajaib dari Mistiflying kabur dari kota mengambang, yang turun dari langit. Satu persatu, bunga musim semi yang indah mulai mengering dan beterbangan.
\"Sahabatku, mengapa kalian begitu panik?\" ujar Be-Wilder, mengepakkan sayapnya. \"Tidak perlu lagi bekerja keras untuk hadiah kalian. Aku akan memberikan semua yang kalian inginkan!\"
Hujan koin jatuh dari langit, membentur bumi dengan kekuatan luar biasa, dan para penduduk berteriak dan kabur untuk mendapat perlindungan. \"Apa ini lelucon?\" Baconsaur berteriak, saat emas berjatuhan dari jendela dan memecahkan atap.
PainterProphet menunduk saat petir menyambar di atas kepala, dan kabut menutupi matahari. \"Tidak! Saat ini, kurasa ini bukan lelucon!\"
Cepat, Penduduk Habitica, jangan biarkan Musuh Dunia ini mengalihkan perhatian kita dari tujuan kita! Tetaplah fokus pada tugas yang harus kau selesaikan sehingga kita bisa menyelamatkan Mistiflying -- dan semoga, kita sendiri.",
+ "questBewilderNotes": "Pesta itu dimulai seperti biasanya.
Makanan pembuka yang sangat enak, musik yang indah, dan bahkan gajah yang menari menjadi sebuah rutinitas. Penduduk Habitica tertawa dan bersenang-senang di antara bunga-bunga, senang mendapatkan pengalih perhatian dari tugas mereka yang paling dienci, dan April Fool berputar di antara mereka, bersemangat untuk menunjukkan beberapa trik dan kejahilan.
Seiring menara jam Mistiflying menunjukkan waktu tengah malam, April Fool melompat ke arah panggung untuk memberikan pidato.
Teman-teman! Musuh-musuh! Rekan-rekan yang toleran! Pinjamkan aku telinga.\" Penonton tertawa kecil saat telinga binatang tumbuh dari kepala mereka, dan mereka berpose dengan aksesori baru mereka.
\"Seperti yang kalian tahu,\" Sang Fool melanjutkan, \"Ilusiku yang membingungkan biasanya bertahan hanya satu hari. Tetapi aku senang untuk mengumumkan bahwa aku menemukan jalan pintas yang menjamin kita mendapatkan kesenangan tak terbatas, tanpa harus mengurus beratnya tanggung jawab kita. Penduduk Habitica yang berbahagia, kuperkenalkan teman baruku yang ajaib... Sang Be-Wilder!\"
Lemoness langsung memucat, menjatuhkan hors d'oeuvres-nya. \"Tunggu! Jangan percaya--\"
Namun tiba-tiba kabut menutupi ruangan, berkilauan dan tebal, dan mereka berputar di sekeliling April Fool, membentuk bulu-bulu dan leher yang panjang. Penonton tidak bisa berkata-kata saat monster burung itu muncul tepat di hadapan mereka, sayapnya berkilau dengan ilusi. Dia mengeluarkan tawa melengking yang menakutkan.
\"Oh, sudah bertahun-tahun sejak seorang Habitica cukup konyol untuk memanggilku! Betapa senangnya, akhirnya mendapatkan bentuk tubuh.\"
Berdengung dengan teror, lebah ajaib dari Mistiflying kabur dari kota mengambang, yang turun dari langit. Satu persatu, bunga musim semi yang indah mulai mengering dan beterbangan.
\"Sahabatku, mengapa kalian begitu panik?\" ujar Be-Wilder, mengepakkan sayapnya. \"Tidak perlu lagi bekerja keras untuk hadiah kalian. Aku akan memberikan semua yang kalian inginkan!\"
Hujan koin jatuh dari langit, membentur bumi dengan kekuatan luar biasa, dan para penduduk berteriak dan kabur untuk mendapat perlindungan. \"Apa ini lelucon?\" Baconsaur berteriak, saat emas berjatuhan dari jendela dan memecahkan atap.
PainterProphet menunduk saat petir menyambar di atas kepala, dan kabut menutupi matahari. \"Tidak! Saat ini, kurasa ini bukan lelucon!\"
Cepat, Penduduk Habitica, jangan biarkan Musuh Dunia ini mengalihkan perhatian kita dari tujuan kita! Tetaplah fokus pada tugas yang harus kau selesaikan sehingga kita bisa menyelamatkan Mistiflying -- dan semoga, kita sendiri.",
"questBewilderCompletion": "Be-Wilder DIKALAHKAN!
Kita telah berhasil! Be-Wilder berteriak kesakitan saat ia berputar di udara, merontokkan bulu-bulunya seperti hujan. Lambat laun, ia bergulung ke awan berkabut cemerlang. Saat matahari yang baru tampak menerobos kabut itu, ia terbakar, menampakkan manusia berbentuk Bailey, Matt, Alex.... yang terbatuk-batuk dan merasa beruntung, dan April Fool itu sendiri.
Mistiflying terselamatkan!
April Fool menjadi malu hingga terlihat agak dungu. \"Oh, hm,\" dia berkata. \"Mungkin aku jadi agak.... terbawa suasana.\"
Para kerumunan bergumam. Bunga-bunga basah di pinggir jalan. Di suatu tempat di kejauhan, sebuah atam runtuh dengan ceburan yang luar biasa.
\"Er, yes,\" si April Fool berkata. \"Itulah. Apa yang aku maksudkan adalah, aku amat menyesal.\" Dia mendesah. \"Sepertinya memang tidak bisa semuanya berupa kesenangan dan permainan. Mungkin tidak ada salahnya untuk fokus kadang-kadang. Mungkin aku akan menyiapkan gurauan untuk tahun depan.\"
Redphoenix terbatuk penuh makna.
\"Maksudku, menyiapkan bersih-bersih musim semi tahun ini!\" kata April Fool. \"Tidak ada yang ditakutkan, aku akan mempunyai Kota Kebiasaan yang hebat segera. Untungnya tidak ada yang lebih baik daripada aku dengan alat pel dobel\"
Merasa tersemangati, marching band mulai berjalan.
Belum lama sebelum semuanya kembali normal di Kota Kebiasaan. Ditambah lagi, sekarang Be-Wilder itu telah menguap, lebah-lebah magis Mistiflying yang sibuk kembali bekerja, dan bunga-bunga akan segera bermekaran dan kota bisa mengambang sekali lagi.
Saat para Habitican memeluk para lebah magis yang kebingungan, mata April Fool berbinar. \"Oho, aku punya ide! Mengapa tidak kamu tangkap beberapa Lebah sebagai Peliharaan dan Tunggangan? Itu adalah hadiah yang melambangkan keseimbangan antara kerja keras dan ganjaran, jika aku akan memberikan semua alegori dan yang membosankan untukmu.\" Dia berkedip. \"Di samping itu, mereka tidak punya sengatan! Kebijakan dari Fool.”",
"questBewilderCompletionChat": "Be-Wilder DIKALAHKAN!\n\nKita telah berhasil! Be-Wilder berteriak kesakitan saat ia berputar di udara, merontokkan bulu-bulunya seperti hujan. Lambat laun, ia bergulung ke awan berkabut cemerlang. Saat matahari yang baru tampak menerobos kabut itu, ia terbakar, menampakkan manusia berbentuk Bailey, Matt, Alex.... yang terbatuk-batuk dan merasa beruntung, dan April Fool itu sendiri.\n\n`Mistiflying terselamatkan!`\n\nApril Fool menjadi malu hingga terlihat agak dungu. \"Oh, hm,\" dia berkata. \"Mungkin aku jadi agak.... terbawa suasana.\"\n\nPara kerumunan bergumam. Bunga-bunga basah di pinggir jalan. Di suatu tempat di kejauhan, sebuah atap runtuh dengan ceburan yang luar biasa.\n\n\"Er, ya,\" si April Fool berkata. \"Itulah. Apa yang aku maksudkan adalah, aku amat menyesal.\" Dia mendesah. \"Sepertinya memang tidak bisa semuanya berupa kesenangan dan permainan. Mungkin tidak ada salahnya untuk fokus kadang-kadang. Mungkin aku akan menyiapkan gurauan untuk tahun depan.\"\n\nRedphoenix terbatuk penuh makna.\n\n\"Maksudku, menyiapkan bersih-bersih musim semi tahun ini!\" kata April Fool. \"Tidak ada yang ditakutkan, aku akan mempunyai Kota Kebiasaan yang hebat segera. Untungnya tidak ada yang lebih baik daripada aku dengan alat pel dobel\"\n\nMerasa tersemangati, marching band mulai berjalan.\n\nBelum lama sebelum semuanya kembali normal di Kota Kebiasaan. Ditambah lagi, sekarang Be-Wilder itu telah menguap, lebah-lebah magis Mistiflying yang sibuk kembali bekerja, dan bunga-bunga akan segera bermekaran dan kota bisa mengambang sekali lagi.\n\nSaat para Habitican memeluk para lebah magis yang kebingungan, mata April Fool berbinar. \"Oho, aku punya ide! Mengapa tidak kamu tangkap beberapa Lebah sebagai Peliharaan dan Tunggangan? Itu adalah hadiah yang melambangkan keseimbangan antara kerja keras dan ganjaran, jika aku akan memberikan semua alegori dan yang membosankan untukmu.\" Dia berkedip. \"Di samping itu, mereka tidak punya sengatan! Kebijakan dari Fool.”",
"questBewilderBossRageTitle": "Serangan Tipu Daya",
@@ -322,38 +322,38 @@
"questFalconDropFalconEgg": "Falcon (Telur)",
"questFalconUnlockText": "Dapatkan telur Falcon yang dapat dibeli di Pasar",
"questTreelingText": "Pohon Pembelit",
- "questTreelingNotes": "It's the annual Garden Competition, and everyone is talking about the mysterious project which @aurakami has promised to unveil. You join the crowd on the day of the big announcement, and marvel at the introduction of a moving tree. @fuzzytrees explains that the tree will help with garden maintenance, showing how it can mow the lawn, trim the hedge and prune the roses all at the same time – until the tree suddenly goes wild, turning its secateurs on its creator! The crowd panics as everyone tries to flee, but you aren't afraid – you leap forward, ready to do battle.",
- "questTreelingCompletion": "You dust yourself off as the last few leaves drift to the floor. In spite of the upset, the Garden Competition is now safe – although the tree you just reduced to a heap of wood chips won't be winning any prizes! \"Still a few kinks to work out there,\" @PainterProphet says. \"Perhaps someone else would do a better job of training the saplings. Do you fancy a go?\"",
+ "questTreelingNotes": "Ini Kompetisi Taman tahunan, dan semua orang sedang membicarakan proyek misterius yang dijanjikan @aurakami akan diperlihatkan. Kamu bergabung dengan orang banyak pada hari pengumuman besar itu, dan terkagum-kagum kepada pertunjukan sebuah pohon bergerak. @fuzzytrees menjelaskan bahwa pohon ini akan membantu merawat taman, menunjukkan bahwa dia bisa memotong rumput, menggunting pagar tanaman dan memangkas bunga mawar sekaligus - hingga tersebut tiba-tiba menjadi liar, mengarahkan gunting rumputnya ke arah pembuatnya! Para penonton pun panik sewaktu semua orang mencoba untuk melarikan diri, tapi kamu tidak takut - kamu melompat maju, siap untuk bertarung.",
+ "questTreelingCompletion": "Kamu mengusap debu di dirimu selagi beberapa helai daun terkahir jatuh ke lantai. Terlepas dari kekacauan ini, Kompetisi Taman pun sekarang aman - meskipun pohon yang kamu hancurkan jadi setumpuk potongan kayu tidak akan memenangi hadiah apapun! \"Masih ada beberapa kekusutan yang harus dibetulkan,\" ujar @PainterProphet. \"Mungkin orang lain dapat melatih bibit pohon ini dengan lebih baik. Tertarik untuk mencoba?\"",
"questTreelingBoss": "Pohon Pembelit",
"questTreelingDropTreelingEgg": "Pohon (Telur)",
"questTreelingUnlockText": "Dapatkan telur pohon yang dapat dibeli di Pasar",
"questAxolotlText": "Sang Axolotl Ajaib",
- "questAxolotlNotes": "From the depths of Washed-Up Lake you see rising bubbles and... fire? A little axolotl rises from the murky water spewing streaks of colors. Suddenly it begins to open its mouth and @streak yells, \"Look out!\" as the Magical Axolotl starts to gulp up your willpower!
The Magical Axolotl swells with spells, taunting you. \"Have you heard of my powers of regeneration? You'll tire before I do!\"
\"We can defeat you with the good habits we've built!\" @PainterProphet defiantly shouts. You steel yourself to be productive to defeat the Magical Axolotl and regain your stolen willpower!",
- "questAxolotlCompletion": "After defeating the Magical Axolotl, you realize that you regained your willpower all on your own.
\"The willpower? The regeneration? It was all just an illusion?\" @Kiwibot asks.
\"Most magic is,\" the Magical Axolotl replies. \"I'm sorry for tricking you. Please take these eggs as an apology. I trust you to raise them to use their magic for good habits and not evil!\"
You and @hazel40 clutch your new eggs in one hand and wave goodbye with the other as the Magical Axolotl returns to the lake.",
+ "questAxolotlNotes": "Dari kedalaman Danau Washed-Up kamu melihat gelembung-gelembung naik dan... api? Seekor axolotl kecil naik dari air keruh itu sambil memuntahkan cairan warna-warni. Tiba-tiba dia mulai membuka mulutnya dan @streak berteriak, \"Awas!\" selagi Axolotl Ajaib itu mulai menelan tekadmu!
Sang Axolotl Ajaib melembung dengan mantra, mengejekmu. \"Pernah dengar tentang kekuatan regenerasi-ku? Kamu akan kelelahan sebelum aku!\"
\"Kita dapat mengalahkanmu dengan kebiasaan baik yang telah kita bangun!\" @PainterProphet berseru menantang. Kamu meneguhkan dirimu untuk menjadi produktif demi mengalahkan sang Axolotl Ajaib dan mengambil kembali tekadmu!",
+ "questAxolotlCompletion": "Setelah mengalahkan sang Axolotl Ajaib, kamu sadar bahwa kamu telah mendapatkan kembali tekadmu dengan sendirinya.
\"Kekuatan tekad? Regenerasi? Semua itu hanyalah sebuah ilusi?\" tanya @Kiwibot.
\"Kebanyakan sihir, iya\" balas Axolotl Ajaib. \"Aku minta maaf telah menipumu. Silahkan ambil telur ini sebagai tanda permintaan maaf. Aku percaya kamu akan membesarkan mereka untuk menggunakan sihir mereka untuk kebiasaan baik dan bukan yang jahat!\"
Kamu dan @hazel40 menggenggam telur baru itu di satu tangan dan melambaikan tangan yang lain sewaktu Sang Axolotl Ajaib kembali ke danau.",
"questAxolotlBoss": "Axolotl Ajaib",
"questAxolotlDropAxolotlEgg": "Axolotl (Telur)",
"questAxolotlUnlockText": "Dapatkan telur Axolotl yang dapat dibeli di Pasar",
"questAxolotlRageTitle": "Regenerasi Axolotl",
- "questAxolotlRageDescription": "This bar fills when you don't complete your Dailies. When it is full, the Magical Axolotl will heal 30% of its remaining health!",
- "questAxolotlRageEffect": "`Magical Axolotl uses AXOLOTL REGENERATION!`\n\n`A curtain of colorful bubbles obscures the monster for a moment, and when it clears, some of its wounds have vanished!`",
- "questTurtleText": "Pandu sang Kura-kura",
- "questTurtleNotes": "Help! This giant sea turtle cannot find her way to her nesting beach. She returns there every year to lay her eggs, but this year Inkomplete Bay is filled with toxic Task Flotsam made of red dailies and unchecked to-dos. \"She's thrashing in a panic!\" @JessicaChase says.
@UncommonCriminal nods. \"It's because her guiding senses are fogged and confused.\"
@Scarabsi grabs your arm. \"Can you help clear the Task Flotsam blocking her path? It may be hazardous, but we have to help her!\"",
- "questTurtleCompletion": "Your valiant work has cleared the waters for our sea turtle to find her beach. You, @Bambin, and @JaizakAripaik watch as she buries her brood of eggs deep in the sand so they can grow and hatch into hundreds of little sea turtles. Ever the lady, she gives you three eggs each, asking that you feed and nurture them so one day they become big sea turtles themselves.",
+ "questAxolotlRageDescription": "Bar ini terisi jika kamu tidak menyelesaikan tugas harianmu. Ketika penuh, Axolotl Ajaib akan mendapatkan kembali 30% dari sisa nyawanya!",
+ "questAxolotlRageEffect": "`Axolotl Ajaib menggunakan REGENERASI AXOLOTL!`\n\n`Sebuah tabir gelembung penuh warna mengaburkan monster itu untuk sementara, dan sewaktu sudah jernih, beberapa lukanya telah menghilang!`",
+ "questTurtleText": "Pandu sang Penyu",
+ "questTurtleNotes": "Tolong! Penyu laut raksasa ini tidak dapat menemukan jalan ke pantai tempat ia bersarang. Dia kembali ke sana setiap tahun untuk bertelur, tetapi tahun ini Teluk Inkomplete dipenuhi dengan Task Flotsam beracun yang terbuat dari keseharian merah dan to-do yang belum dikerjakan. \"Dia meronta-ronta panik!\" kata @JessicaChase.
@UncommonCriminal mengangguk. \"Ini karena indra pemandunya terselubung dan kebingungan.\"
@Scarabsi menarik lenganmu, \"Apakah kamu dapat membantu membersihkan Task Flotsam yang menghalangi jalannya? Ini mungkin berbahaya, tapi kita harus membantunya!\"",
+ "questTurtleCompletion": "Tindakan gagah beranimu telah membersihkan perairan tersebut sehingga penyu kita dapat menemukan pantainya. Kamu, @Bambin, dan @JaizakAripaik menyaksikan sewaktu dia menguburkan sekumpulan telurnya di dalam pasir sehingga mereka dapat tumbuh dan menetas menjadi ratusan penyu laut kecil. Sang nyonya penyu pun, memberimu masing-masing tiga telur, memintamu untuk mengasuh dan memberi mereka makan sehingga suatu hari mereka juga dapat menjadi penyu laut besar.",
"questTurtleBoss": "Flotsam Tugas",
- "questTurtleDropTurtleEgg": "Kura-kura (Telur)",
- "questTurtleUnlockText": "Dapatkan telur Kura-kura yang dapat dibeli di Pasar",
- "questArmadilloText": "The Indulgent Armadillo",
- "questArmadilloNotes": "It's time to get outside and start your day. You swing open your door only to be met with what looks like a sheet of rock. \"I'm just giving you the day off!\" says a muffled voice through the blocked door. \"Don't be such a bummer, just relax today!\"
Suddenly, @Beffymaroo and @PainterProphet knock on your window. \"Looks like the Indulgent Armadillo has taken a liking to you! C'mon, we'll help you get her out of your way!\"",
- "questArmadilloCompletion": "Finally, after a long morning of convincing the Indulgent Armadillo that you do, in fact, want to work, she caves. \"I'm sorry!\" She apologizes. \"I just wanted to help. I thought everyone liked lazy days!\"
You smile, and let her know that next time you've earned a day off you'll invite her over. She grins back at you. Passers-by @Tipsy and @krajzega congratulate you on the good work as she rolls away, leaving a few eggs as an apology.",
- "questArmadilloBoss": "Indulgent Armadillo",
- "questArmadilloDropArmadilloEgg": "Armadillo (Egg)",
- "questArmadilloUnlockText": "Unlocks purchasable Armadillo eggs in the Market",
- "questCowText": "The Mootant Cow",
- "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
- "questCowCompletion": "You milk your good habits for all they are worth until the cow reverts to its original form. The cow looks over at you with her pretty brown eyes and nudges over three eggs.
@fuzzytrees laughs and hands you the eggs, \"Maybe it still is mootated if there are baby cows in these eggs. But I trust you to stick to your good habits when you raise them!\"",
- "questCowBoss": "Mootant Cow",
- "questCowDropCowEgg": "Cow (Egg)",
- "questCowUnlockText": "Unlocks purchasable Cow eggs in the Market",
+ "questTurtleDropTurtleEgg": "Penyu (Telur)",
+ "questTurtleUnlockText": "Dapatkan telur Penyu yang dapat dibeli di Pasar",
+ "questArmadilloText": "Sang Armadillo Kemanjaan",
+ "questArmadilloNotes": "Ini waktunya untuk keluar rumah dan memulai harimu. Kamu membuka pintu hanya untuk bertemu dengan sesuatu yang terlihat seperti selembar batu. \"Aku hanya memberimu hari libur!\" kata suara redam dari pintu yang terhalang itu. \"Jangan terlalu kecewa, rileks saja!\"
Tiba-tiba, @Beffymaroo dan @PainterProphet mengetuk jendelamu. \"Kelihatannya sang Armadillo Kemanjaan menyukaimu! Ayo, kami akan membantumu menggesernya dari pintumu!\"",
+ "questArmadilloCompletion": "Akhirnya, setelah pagi yang panjang meyakinkan sang Armadillo Kemanjaan bahwa kamu, kenyataannya, mau bekerja, dia bergeser. \"Maafkan saya!\" katanya meminta maaf. \"Aku hanya mau memebantu. Aku pikir semua orang suka hari malas!\"
Kamu tersenyum, dan berseru kepadanya kalau kapan-kapan kalau kamu ada hari istirahat kamu akan mengundangnya datang. Dia tersenyum kembali kepadamu. Orang lewat @Tipsy dan @krajzega mengucapkan selamat kepadamu atas keberhasilanmu sewaktu dia bergulung dan pergi, meninggalkan beberapa telur sebagai tanda minta maaf.",
+ "questArmadilloBoss": "Armadillo Kemanjaan",
+ "questArmadilloDropArmadilloEgg": "Armadillo (Telur)",
+ "questArmadilloUnlockText": "Dapatkan telur Armadillo yang dapat dibeli di Pasar",
+ "questCowText": "Sapi Mootan",
+ "questCowNotes": "Hari ini adalah hari yang panjang dan panas di Sawah Sparring, dan tak ada lagi yang kamu inginkan selain seteguk penuh air dan tidur sebentar. Kamu berdiri di sana sambil melamun ketika @Soloana tiba-tiba berteriak, \"Semuanya lari! Sapi hadiahnya telah bermutasi!\"
@eevachu menelan ludah. \"Ini pasti karena kebiasaan buruk kita yang menginfeksi dia.\"
\"Cepat!\" seru @Feralem Tau. \"Ayo lakukan sesuatu sebelum para sapi perah ikut termutasi juga.\"
Kamu sudah mengerti apa yang terjadi. Tidak boleh melamun lagi -- ini waktunya mengatur kebiasaan buruk itu dengan baik!",
+ "questCowCompletion": "Kamu berhasil memerah kebiasaan baikmu yang berharga hingga sapi itu kembali ke bentuk awalnya. Sang sapi melihat ke arahmu dengan mata coklat cantiknya dan mendorong tiga butir telur.
@fuzzytrees tertawa dan memberimu telur itu, \"Mungkin ini masih termutasi juka ada bayi sapi di dalam telur itu. Tapi aku percaya kamu akan tetap melakukan kebiasaan baikmu sewaktu membesarkannya!\"",
+ "questCowBoss": "Sapi Mootant",
+ "questCowDropCowEgg": "Sapi (Telur)",
+ "questCowUnlockText": "Dapatkan telur Sapi yang dapat dibeli di Pasar",
"questBeetleText": "The CRITICAL BUG",
"questBeetleNotes": "Something in the domain of Habitica has gone awry. The Blacksmiths' forges have extinguished, and strange errors are appearing everywhere. With an ominous tremor, an insidious foe worms from the earth... a CRITICAL BUG! You brace yourself as it infects the land, and glitches begin to overtake the Habiticans around you. @starsystemic yells, \"We need to help the Blacksmiths get this Bug under control!\" It looks like you'll have to make this programmer's pest your top priority.",
"questBeetleCompletion": "With a final attack, you crush the CRITICAL BUG. @starsystemic and the Blacksmiths rush up to you, overjoyed. \"I can't thank you enough for smashing that bug! Here, take these.\" You are presented with three shiny beetle eggs. Hopefully these little bugs will grow up to help Habitica, not hurt it.",
@@ -362,7 +362,7 @@
"questBeetleUnlockText": "Dapatkan telur Kumbang yang dapat dibeli di Pasar",
"questGroupTaskwoodsTerror": "Teror di Taskwoods",
"questTaskwoodsTerror1Text": "Teror di Taskwoods, Bagian 1: Kebakaran di Taskwoods",
- "questTaskwoodsTerror1Notes": "You have never seen the Joyful Reaper so agitated. The ruler of the Flourishing Fields lands her skeleton gryphon mount right in the middle of Productivity Plaza and shouts without dismounting. \"Lovely Habiticans, we need your help! Something is starting fires in the Taskwoods, and we still haven't fully recovered from our battle against Burnout. If it's not halted, the flames could engulf all of our wild orchards and berry bushes!\"
You quickly volunteer, and hasten to the Taskwoods. As you creep into Habitica’s biggest fruit-bearing forest, you suddenly hear clanking and cracking voices from far ahead, and catch the faint smell of smoke. Soon enough, a horde of cackling, flaming skull-creatures flies by you, biting off branches and setting the treetops on fire!",
+ "questTaskwoodsTerror1Notes": "Kamu tidak pernah melihat Joyful Reaper begitu gelisah. Penguasa Padang Bermekaran mendaratkan tungangan gryphon tengoraknya di tengah Plaza Produktivitas dan berteriak tanpa turun. \"Habitican yang tercinta, kami berlu bantuanmu! Sesuatu sedang membakar Taskwoods, dan kami belum sepenuhnya pulih dari pertarungan melawan Burnout. Jika tidak dihentikan, apinya akan menelan semua kebun liar dan semak buah beri kita!\"
Dengan cepat kamu mengajukan diri, dan bergegas ke Taskwoods. Selagi kamu bergerak perlahan ke dalam hutan penghasil buah terbesar Habitica, tiba-tiba kamu mendengar bunyi dentang dan retakan dari jauh di depan, lalu samar-samar tercium bau asap. Dengan cepat sekumpulan tengkorak berapi, terbang ke arahmu sambil terkekeh, mengigit ranting-ranting dan membakar puncak pohon!",
"questTaskwoodsTerror1Completion": "Dengan bantuan Joyful Reaper dan @Beffymaroo sang pyromancer ternama, kamu berhasil memaksa gerombolan itu mundur. Sebagai tanda solidaritas, Beffymaroo menawarkan kamu Turban Pyromancer-nya sewaktu kamu berjalan lebih jauh ke dalam hutan.",
"questTaskwoodsTerror1Boss": "Gerombolan Tengkorak Api",
"questTaskwoodsTerror1RageTitle": "Bangkitnya Gerombolan",
@@ -372,56 +372,56 @@
"questTaskwoodsTerror1DropRedPotion": "Ramuan Penetas Merah",
"questTaskwoodsTerror1DropHeadgear": "Turban Pyromancer (Perlengkapan Kepala)",
"questTaskwoodsTerror2Text": "Teror di Taskwoods, Bagian 2: Mencari para Peri Flourishing",
- "questTaskwoodsTerror2Notes": "Having fought through the swarm of burning skulls, you reach a large group of refugee farmers at the forest's edge. \"Their village was burnt down by a renegade autumn spirit,\" says a familiar voice. It's @Kiwibot, the legendary tracker! \"I managed to gather the survivors, but there's no sign of the Flourishing Fairies who help to grow the wild fruit of the Taskwoods. Please, you have to help me rescue them!\"",
- "questTaskwoodsTerror2Completion": "You manage to locate the last dryad and lead her away from the monsters. When you return to the refugee farmers, you are greeted by the thankful faeries, who give you a robe woven of shining magic and silk. Suddenly, a deep rumbling sound echoes through the trees, shaking the very earth. \"That must be the renegade spirit,\" the Joyful Reaper says. \"Let's hurry!\"",
+ "questTaskwoodsTerror2Notes": "Setelah bertarung melalui segerombolan tengkorak berapi, kamu mencapai sebuah kelompok besar dari petani pengungsi di tepian hutan. \"Desa mereka dibakar habis oleh sebuah roh musim gugur pemberontak,\" kata sebuah suara familiar. Ternyata itu @Kiwibot, sang pelacak legendaris! \"Aku berhasil mengumpulkan orang yang masih selamat, tapi tidak ada tanda-tanda dari para Peri Flourishing yang membantu menumbuhkan buah liar di Taskwoods. Tolong, kamu harus bantu menyelamatkan mereka!\"",
+ "questTaskwoodsTerror2Completion": "Kamu berhasil menemukan peri pohon terakhir dan menjauhkannya dari para monster. Sewaktu kamu kembali ke petani pengungsi, kamu disambut oleh para peri yang berterima kasih, lalu memberimu sebuah jubah yang ditenun dengan sihir yang bersinar dan sutra. Tiba-tiba, sebuah suara gemuruh bergema di pepohonan, menggoncang bumi. \"Itu pasti sang roh pemberontak,\" seru Joyful Reaper. \"Ayo cepat!\"",
"questTaskwoodsTerror2CollectPixies": "Peri",
"questTaskwoodsTerror2CollectBrownies": "Brownies",
"questTaskwoodsTerror2CollectDryads": "Peri Pohon",
"questTaskwoodsTerror2DropArmor": "Jubah Pyromancer (Armor)",
"questTaskwoodsTerror3Text": "Teror di Taskwoods, Bagian 3: Jacko of the Lantern",
- "questTaskwoodsTerror3Notes": "Ready for battle, your group marches to the heart of the forest, where the renegade spirit is trying to destroy an ancient apple tree surrounded by fruitful berry bushes. His pumpkin-like head radiates a terrible light wherever it turns, and in his left hand he holds a long rod, with a lantern hanging from its tip. Instead of fire or flame, however, the lantern contains a dark crystal that chills you to the very bone.
The Joyful Reaper raises a bony hand to her mouth. \"That's -- that's Jacko, the Lantern Spirit! But he's a helpful harvest ghost who guides our farmers. What could possibly drive the dear soul to act this way?\"
\"I don't know,\" says @bridgetteempress. \"But it looks like that 'dear soul' is about to attack us!\"",
- "questTaskwoodsTerror3Completion": "After a long battle, you manage to land a well-aimed blow at the lantern that Jacko carries, and the crystal within shatters. Jacko suddenly snaps back to his senses and bursts into glowing tears. \"Oh, my beautiful forest! What have I done?!\" he wails. His tears extinguish the remaining fires, and the apple tree and wild berries are saved.
After you help him relax, he explains, \"I met this charming lady named Tzina, and she gave me this glowing crystal as a gift. At her urging, I put it in my lantern... but that's the last thing I recall.\" He turns to you with a golden smile. \"Perhaps you should take it for safekeeping while I help the wild orchards to regrow.\"",
+ "questTaskwoodsTerror3Notes": "Siap untuk bertempur, kelompokmu bergerak ke tengah hutan, di mana sang roh pemberontak sedang mencoba menghancurkan sebuah pohon apel kuno yang dikelilingi semak penuh buah beri. Kepalanya yang seperti labu memancarkan sinar menakutkan ke mana pun ia berputar, dan di tangan kirinya ada sebuah tongkat panjang, dengan sebuah lentera bergantung di ujungnya. Bukannya berisi lilin atau lampu, lenteranya malah berisi kristal gelap yang membuatmu gemetaran hingga ke tulang.
Sang Joyful Reaper mengangkat tangan bertulangnya ke mulut. \"Itu -- itu Jacko, sang Roh Lentera!\" Tapi dia hantu panen penolong yang membimbing petani kami. Apa yang mungkin mendorong jiwa baiknya untuk bertindak seperti ini?\"
\"Aku tidak tahu,\" eru @bridgetteempress. \"Tapi kelihatannya 'jiwa baik' itu akan menyerang kita!\"",
+ "questTaskwoodsTerror3Completion": "Setelah pertarungan panjang, kamu berhasil mendaratkan pukulan akurat ke lentera yang dibawa Jacko, dan kristal di dalamnya remuk. Jacko tiba-tiba kembali kesadarannya dan mengeluarkan butiran tangis yang bercahaya. \"Oh, hutan cantikku! Apa yang telah kuperbuat?!\" ratapnya. Tangisannya memadamkan sisa api yang menyala, dan pohon apel dan beri liar jadi terselamatkan.
Setelah kamu menenangkannya, dia menjelaskan, \"Aku bertemu wanita menawan bernama Tzina, dan ia memberiku kristal bersinar ini sebagai hadiah. Setelah didesak, aku menaruhnya di lenteraku... tapi itu hal terakhir yang aku ingat.\" Ia menoleh kepadamu dengan senyuman emas. \"Mungkin kamu harus menyimpannya agar aman selagi aku menolong kebun-kebun liar untuk tumbuh kembali.\"",
"questTaskwoodsTerror3Boss": "Jacko of the Lantern",
"questTaskwoodsTerror3DropStrawberry": "Stroberi (Makanan)",
"questTaskwoodsTerror3DropWeapon": "Lentera Taskwood (Senjata Dua Tangan)",
- "questFerretText": "The Nefarious Ferret",
- "questFerretNotes": "Walking through Habit City, you see an unhappy crowd surrounding a red-robed Ferret.
\"That productivity potion you sold me is useless!\" @Beffymaroo complains. \"I watched three hours of TV last night instead of doing my chores!\"
\"Yeah!\" shouts @Pandah. \"And today I spent an hour rearranging my books instead of reading them!\"
The Nefarious Ferret spreads his hands innocently. \"That's more TV watching and book organizing than you'd normally get done, isn't it?\"
The crowd erupts in anger.
\"No refunds!\" crows the Nefarious Ferret. He fires a bolt of magic into the crowd, preparing to escape in the smoke.
\"Please, Habitican!\" @Faye says, grabbing your arm. \"Defeat the ferret and make him refund his dishonest earnings!\"",
- "questFerretCompletion": "You defeat the soft-furred swindler and @UncommonCriminal gives the crowd their refunds. There's even a little gold left over for you. Plus, it looks like the Nefarious Ferret dropped some eggs in his hurry to get away!",
- "questFerretBoss": "Nefarious Ferret",
- "questFerretDropFerretEgg": "Ferret (Egg)",
- "questFerretUnlockText": "Unlocks purchasable Ferret eggs in the Market",
- "questDustBunniesText": "The Feral Dust Bunnies",
- "questDustBunniesNotes": "It's been a while since you've done any dusting in here, but you're not too worried—a little dust never hurt anyone, right? It's not until you stick your hand into one of the dustiest corners and feel something bite that you remember @Inventrix's warning: leaving harmless dust sit too long causes it to turn into vicious dust bunnies! You'd better defeat them before they cover all of Habitica in fine particles of dirt!",
- "questDustBunniesCompletion": "The dust bunnies vanish into a puff of... well, dust. As it clears, you look around. You'd forgotten how nice this place looks when it's clean. You spy a small pile of gold where the dust used to be. Huh, you'd been wondering where that was!",
- "questDustBunniesBoss": "Feral Dust Bunnies",
+ "questFerretText": "Musang Licik",
+ "questFerretNotes": "Selagi kamu berjalan melalui Kota Habit, kamu melihat orang ramai yang dengan geram mengerumuni seekor Musang bermantel merah.
\"Ramuan produktivitas yang kau jual itu tidak berguna!\" keluh @Beffymaroo. \"Aku malah menonton TV tiga jam semalam bukannya mengerjakan kerjaan rumah!\"
\"Ya!\" teriak @Pandah. \"Dan hari ini aku bukannya membaca buku tapi malahan menghabiskan satu jam hanya untuk menyusunnya!\"
Sang Musang Licik membentangkan tangannya seakan tak bersalah. \"Itu lebih banyak waktu menonton TV dan menyusun buku daripada yang biasa kalian kerjakan, betul kan?\"
Orang ramai langsung meledak marah.
\"Tidak ada pengembalian uang!\" kokok sang Musang Licik. Dia mengeluarkan ledakan sihir ke arah orang ramai, bersiap untuk kabur di tengah asap.
\"Kumohon, Habitican!\" kata @Faye, menarik lenganmu. \"Kalahkan musang itu dan buat dia mengembalikan uang hasil ketidakjujurannya itu!\"",
+ "questFerretCompletion": "Kamu mengalahkan sang penipu berbulu lembut dan @UncommonCriminal mengembalikan uang orang ramai itu. Bahkan ada sedikit koin emas untukmu. Selain itu, kelihatannya sang Musang Licik meninggalkan beberapa telur sewaktu bergegas kabur!",
+ "questFerretBoss": "Musang Licik",
+ "questFerretDropFerretEgg": "Musang (Telur)",
+ "questFerretUnlockText": "Dapatkan telur Musang yang dapat dibeli di Pasar",
+ "questDustBunniesText": "Kelinci Debu Liar",
+ "questDustBunniesNotes": "Sudah lama kamu tidak membersihkan debu di sini, tapi kamu tidak terlalu khawatir—sedikit debu tidak akan menyakiti siapapun, kan? Memang betul hingga kamu menggapai pojok paling berdebu dan sesuatu menggigit tanganmu yang membuatmu mengingat peringatan @Inventrix: membiarkan debu tidak berbahaya terlalu lama menyebabkannya untuk berubah menjadi kelinci debu ganas! Sebaiknya kamu mengalahkan mereka sebelum mereka menutupi seluruh Habitica dengan butiran debu halus!",
+ "questDustBunniesCompletion": "Kelinci-kelinci debu menghilang dalam sebuah embusan... debu. Selagi itu debu itu menipis, kamu melihat sekelilingmu. Kamu sudah lupa betapa bagusnya tempat ini sewaktu bersih. Kamu melihat setumpuk koin emas di tempat bekas debu-debu itu berada. Hah, pantas kamu bingung ke mana hilangnya koin-koin itu!",
+ "questDustBunniesBoss": "Kelinci Debu Liar",
"questGroupMoon": "Pertempuran Lunar",
"questMoon1Text": "Pertempuran Lunar, Bagian 1: Cari Pecahan Misterius",
- "questMoon1Notes": "Habiticans have been distracted from their tasks by something strange: twisted shards of stone are appearing across the land. Worried, @Starsystemic the Seer summons you to her tower. She says, \"I've been reading alarming omens about these shards, which have been blighting the land and driving hardworking Habiticans to distraction. I can track the source, but first I'll need to examine the shards. Can you bring some to me?\"",
- "questMoon1Completion": "@Starsystemic disappears into her tower to examine the shards you gathered. \"This may be more complicated than we feared,\" says @Beffymaroo, her trusted assistant. \"It will take us some time to discover the cause. Keep checking in every day, and when we know more, we'll send you the next quest scroll.\"",
+ "questMoon1Notes": "Habitican sedang teralihkan perhatiannya dari tugas mereka oleh sesuatu yang aneh: pecahan batu melengkung bermunculan sepanjang negeri ini. Cemas, @Starsystemic sang Peramal memanggilmu ke menaranya. Dia berkata, \"Aku membaca pertanda mengkhawatirkan tentang pecahan ini, yang mungkin mengutuk negeri ini dan mengalihkan Habitican yang rajin kepada banyak gangguan. Aku dapat melacak sumbernya, tapi aku harus memeriksanya terlebih dahulu. Dapatkah kamu bawakan beberapa kepadaku?\"",
+ "questMoon1Completion": "@Starsystemic menghilang kembali ke menaranya untuk memeriksa pecahan-pecahan yang kamu kumpulkan. \"Ini mungkin lebih ribet dari yang kita takutkan,\" kata @Beffymaroo, asisten kepercayaannya. \"Akan butuh waktu untuk menemukan penyebabnya. Tetap cek in setiap hari, dan sewaktu kami tahu lebih banyak, kami akan mengirimkan gulungan misi selanjutnya kepadamu.\"",
"questMoon1CollectShards": "Pecahan Lunar",
"questMoon1DropHeadgear": "Helm Prajurit Lunar (Perlengkapan Kepala)",
"questMoon2Text": "Pertempuran Lunar, Bagian 2: Hentikan Overshadowing Stress",
- "questMoon2Notes": "After studying the shards, @Starsystemic the Seer has some bad news. \"An ancient monster is approaching Habitica, and it is causing terrible stress to befall the citizens. I can draw the shadow out of people's hearts and into this tower, where it will take physical form, but you’ll need to defeat it before it breaks loose and spreads again.\" You nod, and she starts to chant. Dancing shadows fill the room, pressing tightly together. The cold wind swirls, the darkness deepens. The Overshadowing Stress rises from the floor, grins like a nightmare made real... and strikes!",
- "questMoon2Completion": "The shadow explodes in a puff of dark air, leaving the room brighter and your hearts lighter. The stress blanketing Habitica is diminished, and you can all breathe a sigh of relief. Still, as you look up at the sky, you sense that this is not over: the monster knows someone destroyed its shadow. \"We'll keep careful watch in the coming weeks,\" says @Starsystemic, \"and I'll send you a quest scroll when it manifests.\"",
+ "questMoon2Notes": "Setelah mempelajari pecahan itu, @Starsystemic sang Peramal punya kabar buruk. \"Seekor monster kuno sedang mendekati Habitica, dan menyebabkan stress yang parah kepada para penduduk. Aku dapat menarik bayangan itu dari hati orang-orang dan ke dalam menara ini, dimana fisiknya dapat mewujud, tapi kamu harus mengalahkannya sebelum dia lepas dan menyebar lagi.\" Kamu mengangguk, dan ia mulai membaca mantra. Bayangan menari-nari memenuhi ruangan, saling berdesak-desakan dengan rapat. Angin dingin bertiup, kegelapan bertambah kelam. Sang Overshadowing Stress bangkit dari tanah, menyeringai bagaikan mimpi buruk yang menjadi nyata... dan menyerangmu!",
+ "questMoon2Completion": "Bayangan itu meledak menjadi gumpalan udara hitam, menginggalkan ruangan itu menjadi lebih terang dan hatimu lebih ringan. Stress yang menyelimuti Habitica berkurang, dan kamu semua bisa menghembuskan nafas lega. Tetap, selagi kamu mendongak ke langit, kamu merasaan ini semua belum berakhir: monster itu tahu seseorang telah menghancurkan bayangannya. \"Kami akan berjaga-jaga dengan waspada beberapa minggu ke depan,\" kata @Starsystemic, \"dan aku akan mengirimimu gulungan misi sewaktu dia muncul.\"",
"questMoon2Boss": "Overshadowing Stress",
"questMoon2DropArmor": "Armor Prajurit Lunar (Armor)",
"questMoon3Text": "Pertempuran Lunar, Bagian 3: Bulan Raksasa",
- "questMoon3Notes": "You get @Starsystemic's urgent scroll at the stroke of midnight and gallop to her tower. \"The monster is using the full moon to try to cross over to our realm,\" she says. \"If it succeeds, the shockwave of stress will be overwhelming!\"
To your dismay, you see that the monster is indeed using the moon to manifest. A glowing eye opens in its rocky surface, and a long tongue rolls from a gaping, fanged mouth. There's no way you'll let it fully emerge!",
- "questMoon3Completion": "The emerging monster bursts into shadow, and the moon turns silver as the danger passes. The dragons start singing again, and the stars sparkle with a soothing light. @Starsystemic the Seer bends down and picks up a lunar shard. It shines silver in her hand, before changing into a magnificent crystal scythe.",
- "questMoon3Boss": "Monstrous Moon",
+ "questMoon3Notes": "Kamu menerima gulungan urgen @Starsystemic pada tengah malam dan bergegas ke menaranya. \"Monster itu menggunakan bulan purnama untuk mencomba menyeberang ke dunia kita,\" katanya. \"Jika dia berhasil, gelombang stressnya akan menjadi sangat tak tertahankan!\"
Mencemaskannya, kamu melihat monster itu memang menggunakan bulan untuk mewujud. Sebuah mata bersinar terbuka di permukaan berbatunya, dan lidah panjang menjulur dari sebuah mulut bertaring yang terbuka. Tak mungkin kamu akan membiarkannya muncul sepenuhnya!",
+ "questMoon3Completion": "Monster yang sedang muncul itu meledak menjadi bayangan, dan bulan kembali berwarna perak setelah bahaya tersebut lewat. Naga-naga mulai bernyanyi lagi, dan bintang bergemerlap dengan cahaya yang menenangkan. @Starsytemic sang Peramal membungkuk dan mengambil sebuah pecahan lunar. Pecahan itu bersinar perak di tangannya, sebelum berubah menjadi sebuah sabit kristal yang indah.",
+ "questMoon3Boss": "Bulan Raksasa",
"questMoon3DropWeapon": "Sabit Lunar (Senjata Dua Tangan)",
"questSlothText": "The Somnolent Sloth",
"questSlothNotes": "As you and your party venture through the Somnolent Snowforest, you're relieved to see a glimmering of green among the white snowdrifts... until an enormous sloth emerges from the frosty trees! Green emeralds shimmer hypnotically on its back.
\"Hello, adventurers... why don't you take it slow? You've been walking for a while... so why not... stop? Just lie down, and rest...\"
You feel your eyelids grow heavy, and you realize: It's the Somnolent Sloth! According to @JaizakAripaik, it got its name from the emeralds on its back which are rumored to... send people to... sleep...
You shake yourself awake, fighting drowsiness. In the nick of time, @awakebyjava and @PainterProphet begin to shout spells, forcing your party awake. \"Now's our chance!\" @Kiwibot yells.",
"questSlothCompletion": "You did it! As you defeat the Somnolent Sloth, its emeralds break off. \"Thank you for freeing me of my curse,\" says the sloth. \"I can finally sleep well, without those heavy emeralds on my back. Have these eggs as thanks, and you can have the emeralds too.\" The sloth gives you three sloth eggs and heads off for warmer climates.",
- "questSlothBoss": "Somnolent Sloth",
+ "questSlothBoss": "Kungkang Ngantuk",
"questSlothDropSlothEgg": "Kungkang (Telur)",
- "questSlothUnlockText": "Unlocks purchasable Sloth eggs in the Market",
- "questTriceratopsText": "The Trampling Triceratops",
- "questTriceratopsNotes": "The snow-capped Stoïkalm Volcanoes are always bustling with hikers and sight-seers. One tourist, @plumilla, calls over a crowd. \"Look! I enchanted the ground to glow so that we can play field games on it for our outdoor activity Dailies!\" Sure enough, the ground is swirling with glowing red patterns. Even some of the prehistoric pets from the area come over to play.
Suddenly, there's a loud snap -- a curious Triceratops has stepped on @plumilla's wand! It's engulfed in a burst of magic energy, and the ground starts shaking and growing hot. The Triceratops' eyes shine red, and it roars and begins to stampede!
\"That's not good,\" calls @McCoyly, pointing in the distance. Each magic-fueled stomp is causing the volcanoes to erupt, and the glowing ground is turning to lava beneath the dinosaur's feet! Quickly, you must hold off the Trampling Triceratops until someone can reverse the spell!",
- "questTriceratopsCompletion": "With quick thinking, you herd the creature towards the soothing Stoïkalm Steppes so that @*~Seraphina~* and @PainterProphet can reverse the lava spell without distraction. The calming aura of the Steppes takes effect, and the Triceratops curls up as the volcanoes go dormant once more. @PainterProphet passes you some eggs that were rescued from the lava. \"Without you, we wouldn't have been able to concentrate to stop the eruptions. Give these pets a good home.\"",
- "questTriceratopsBoss": "Trampling Triceratops",
- "questTriceratopsDropTriceratopsEgg": "Triceratops (Egg)",
- "questTriceratopsUnlockText": "Unlocks purchasable Triceratops eggs in the Market",
+ "questSlothUnlockText": "Dapatkan telur Kungkang yang dapat dibeli di Pasar",
+ "questTriceratopsText": "Triceratops Penginjak",
+ "questTriceratopsNotes": "Puncak es Gunung Berapi Stoikalm selalu dipenuhi oleh pendaki dan pelancong. Satu turis, @plumilla, berseru kepada orang banyak. \"Lihat! Aku menyihir tanah ini untuk bercahaya sehingga kita bisa bermain di lapangan ini untuk kegiatan Keseharian kita!\" Tetunya, tanah itu terisi dengan pola-pola merah yang menyala. Bahkan beberapa peliharaan prasejarah dari daerah itu datang untuk bermain.
Tiba-tiba, ada derakan keras -- seekor Triceratops yang penasaran telah menginjak tongkat sihir @plumilla! Triceratops itu diselubungi oleh semburan energi ajaib, dan tanah mulai bergoncang dan menjadi panas. Mata Triceratops itu menyala merah, dan dia meraung dan mulai menerjang segala hal!
\"Itu tidak bagus,\" seru @McCoyly, menunjuk ke arah kejauhan. Setiap injakan yang dipenuhi sihir itu membuat gunung meletus, dan tanah bersinar itu berubah menjadi laba dibawah kaki dinosaurus itu! Cepat, kamu harus menahan sang Triceratops Penginjak hingga seseorang bisa membalikkan sihirnya!",
+ "questTriceratopsCompletion": "Dengan pemikiran cepat, kamu menggiring makhluk itu ke Stepa Stoikalm yang tenang sehingga @*~Sepraphina~* dan @PainterProphet dapat membalikkan mantra lava tersebut tanpa gangguan. Aura penenang dari Stepa tersebut mulai berpengaruh, dan sang Triceratops menggulung diri sewaktu gunung berapi itu menjadi tidak aktif sekali lagi. @PainterProphet memberimu beberapa telur yang diselamatkan dari lava. \"Tanpamu, kami tidak mungkin dapat berkonsentrasi menghentikan letusan itu. Berikan peliharaan ini rumah yang baik.\"",
+ "questTriceratopsBoss": "Triceratops Penginjak",
+ "questTriceratopsDropTriceratopsEgg": "Triceratops (Telur)",
+ "questTriceratopsUnlockText": "Dapatkan telur Triceratops yang dapat dibeli di Pasar",
"questGroupStoikalmCalamity": "Malapetaka Stoïkalm",
"questStoikalmCalamity1Text": "Malapetaka Stoikalm, Bagian 1: Musuh dari Tanah",
"questStoikalmCalamity1Notes": "A terse missive arrives from @Kiwibot, and the frost-crusted scroll chills your heart as well as your fingertips. \"Visiting Stoïkalm Steppes -- monsters bursting from earth -- send help!\" You gather your party and ride north, but as soon as you venture down from the mountains, the snow beneath your feet explodes and gruesomely grinning skulls surround you!
Suddenly, a spear sails past, burying itself in a skull that was burrowing through the snow in an attempt to catch you unawares. A tall woman in finely-crafted armor gallops into the fray on the back of a mastodon, her long braid swinging as she yanks the spear unceremoniously from the crushed beast. It's time to fight off these foes with the help of Lady Glaciate, the leader of the Mammoth Riders!",
@@ -432,122 +432,130 @@
"questStoikalmCalamity1RageEffect": "`Earth Skull Swarm uses SWARM RESPAWN!`\n\nMore skulls break free from the ground, their teeth chattering in the cold!",
"questStoikalmCalamity1DropSkeletonPotion": "Ramuan Penetas Tengkorak",
"questStoikalmCalamity1DropDesertPotion": "Ramuan Penetas Gurun",
- "questStoikalmCalamity1DropArmor": "Armor Pengendara Mammoth",
+ "questStoikalmCalamity1DropArmor": "Armor Penunggang Mammoth",
"questStoikalmCalamity2Text": "Malapetaka Stoïkalm, Bagian 2: Temukan Gua Penuh Es",
"questStoikalmCalamity2Notes": "The stately hall of the Mammoth Riders is an austere masterpiece of architecture, but it is also entirely empty. There's no furniture, the weapons are missing, and even the columns were picked clean of their inlays.
\"Those skulls scoured the place,\" Lady Glaciate says, and there is a blizzard brewing in her tone. \"Humiliating. Not a soul is to mention this to the April Fool, or I will never hear the end of it.\"
\"How mysterious!\" says @Beffymaroo. \"But where did they--\"
\"The icicle drake caverns.\" Lady Glaciate gestures at shining coins spilled in the snow outside. \"Sloppy.\"
\"But aren't icicle drakes honorable creatures with their own treasure hoards?\" @Beffymaroo asks. \"Why would they possibly--\"
\"Mind control,\" says Lady Glaciate, utterly unfazed. \"Or something equally melodramatic and inconvenient.\" She begins to stride from the hall. \"Why are you just standing there?\"
Quickly, go follow the trail of Icicle Coins!",
- "questStoikalmCalamity2Completion": "The Icicle Coins lead you straight to the buried entrance of a cleverly hidden cavern. Though the weather outside is calm and lovely, with the sunlight sparkling across the expanse of snow, there is a howling within like a fierce winter wind. Lady Glaciate grimaces and hands you a Mammoth Rider helm. \"Wear this,\" she says. \"You'll need it.\"",
+ "questStoikalmCalamity2Completion": "Koin Es itu menuntunmu tepat ke pintu masuk terkubur dari sebuah gua yang disembunyikan dengan pandai. Meskipun cuaca di luar tenang dan menyenangkan, dengan sinar matahari menyinari bentangan penuh salju, ada sebuah lolongan di dalam layaknya angin musim dingin yang ganas. Nona Glaciate meringis dan memberimu sebuah helm Penunggang Mamut. \"Pakai ini,\" katanya. \"Kamu akan memerlukannya.\"",
"questStoikalmCalamity2CollectIcicleCoins": "Koin Es",
- "questStoikalmCalamity2DropHeadgear": "Helm Pengendara Mammoth (Perlengkapan Kepala)",
+ "questStoikalmCalamity2DropHeadgear": "Helm Penunggang Mamut (Perlengkapan Kepala)",
"questStoikalmCalamity3Text": "Malapetaka Stoïkalm, Bagian 3: Gempa Naga Es",
"questStoikalmCalamity3Notes": "The twining tunnels of the icicle drake caverns shimmer with frost... and with untold riches. You gape, but Lady Glaciate strides past without a glance. \"Excessively flashy,\" she says. \"Obtained admirably, though, from respectable mercenary work and prudent banking investments. Look further.\" Squinting, you spot a towering pile of stolen items hidden in the shadows.
A sibilant voice hisses as you approach. \"My delicious hoard! You shall not steal it back from me!\" A sinuous body slides from the heap: the Icicle Drake Queen herself! You have just enough time to note the strange bracelets glittering on her wrists and the wildness glinting in her eyes before she lets out a howl that shakes the earth around you.",
"questStoikalmCalamity3Completion": "You subdue the Icicle Drake Queen, giving Lady Glaciate time to shatter the glowing bracelets. The Queen stiffens in apparent mortification, then quickly covers it with a haughty pose. \"Feel free to remove these extraneous items,\" she says. \"I'm afraid they simply don't fit our decor.\"
\"Also, you stole them,\" @Beffymaroo says. \"By summoning monsters from the earth.\"
The Icicle Drake Queen looks miffed. \"Take it up with that wretched bracelet saleswoman,\" she says. \"It's Tzina you want. I was essentially unaffiliated.\"
Lady Glaciate claps you on the arm. \"You did well today,\" she says, handing you a spear and a horn from the pile. \"Be proud.\"",
"questStoikalmCalamity3Boss": "Ratu Naga Es",
"questStoikalmCalamity3DropBlueCottonCandy": "Permen Kapas Biru (Makanan)",
- "questStoikalmCalamity3DropShield": "Terompet Pengendara Mammoth (Item Tangan Lain)",
- "questStoikalmCalamity3DropWeapon": "Tombak Pengendara Mammoth (Senjata)",
- "questGuineaPigText": "The Guinea Pig Gang",
- "questGuineaPigNotes": "You're casually strolling through Habit City's famous Market when @Pandah waves you down. \"Hey, check these out!\" They're holding up a brown and beige egg you don't recognize.
Alexander the Merchant frowns at it. \"I don't remember putting that out. I wonder where it came--\" A small paw cuts him off.
\"Guinea all your gold, merchant!\" squeaks a tiny voice brimming with evil.
\"Oh no, the egg was a distraction!\" @mewrose exclaims. \"It's the gritty, greedy Guinea Pig Gang! They never do their Dailies, so they constantly steal gold to buy health potions.\"
\"Robbing the Market?\" says @emmavig. \"Not on our watch!\" Without further prompting, you leap to Alexander's aid.",
- "questGuineaPigCompletion": "\"We submit!\" The Guinea Pig Gang Boss waves his paws at you, fluffy head hanging in shame. From underneath his hat falls a list, and @snazzyorange quickly swipes it for evidence. \"Wait a minute,\" you say. \"It's no wonder you've been getting hurt! You've got way too many Dailies. You don't need health potions -- you just need help organizing.\"
\"Really?\" squeaks the Guinea Pig Gang Boss. \"We've robbed so many people because of this! Please take our eggs as an apology for our crooked ways.\"",
- "questGuineaPigBoss": "Guinea Pig Gang",
- "questGuineaPigDropGuineaPigEgg": "Guinea Pig (Egg)",
- "questGuineaPigUnlockText": "Unlocks purchasable Guinea Pig eggs in the Market",
+ "questStoikalmCalamity3DropShield": "Terompet Penunggang Mamut (Item Tangan Lain)",
+ "questStoikalmCalamity3DropWeapon": "Tombak Penunggang Mamut (Senjata)",
+ "questGuineaPigText": "Geng Marmot",
+ "questGuineaPigNotes": "Kamu sedang berjalan santai melalui Pasar terkenal Kota Habit sewaktu @Pandah melambaikan tangannya. \"Hei, coba lihat ini!\" Dia sedang memegang sebuah telur berwarna coklat tua dan muda yang tidak kamu kenali.
Alexander sang Saudagar mengerutkan dahinya. \"Aku tidak ingat menaruh itu. Dari mana ya datangny--\" Sebuah cakar kecil melukainya.
\"Serahkan semua koin emasmu, saudagar!\" cicit sebuah suara kecil penuh rasa jahat.
\"Oh tidak, telurnya hanya sebuah pengalih perhatian!\" seru @mewrose. \"Itu Geng Marmot yang kasar dan serakah! Mereka tidak pernah menyelesaikan Keseharian, jadi mereka mencuri koin emas untuk membeli Ramuan Kesehatan.\"
\"Merampok Pasar ini?\" kata @emmavig. \"Tidak akan terjadi dalam pengawasan kami!\" Tanpa diberitahu, kamu melompat ke sisi Alexander untuk membantunya.",
+ "questGuineaPigCompletion": "\"Kami menyerah!\" Bos Geng Marmot melambaikan cakarnya ke arahmu, kepala lembutnya menunduk malu. Dari bawah topinay jatuh sebuah kertas, dan dengan cepat @snazzyorange mengambilnya sebagai bukti. \"Tunggu sebentar,\" katamu. \"Tidak heran kamu terus terlukai! Kamu punya terlalu banyak Keseharian. Kamu tidak perlu ramuan kesehatan -- hanya perlu bantuan mengatur beberapa hal.\"
\"Betulkan?\" cicit sang Bos Geng Marmot. \"Kami telah merampok sekian banyak orang hanya untuk ini! Ambillah telur kami sebagai tanda minta maaf atas cara kami yang menyimpang.\"",
+ "questGuineaPigBoss": "Geng Marmot",
+ "questGuineaPigDropGuineaPigEgg": "Marmot (Telur)",
+ "questGuineaPigUnlockText": "Dapatkan telur Marmot yang dapat dibeli di Pasar",
"questPeacockText": "The Push-and-Pull Peacock",
"questPeacockNotes": "You trek through the Taskwoods, wondering which of the enticing new goals you should pick. As you go deeper into the forest, you realize that you're not alone in your indecision. \"I could learn a new language, or go to the gym...\" @Cecily Perez mutters. \"I could sleep more,\" muses @Lilith of Alfheim, \"or spend time with my friends...\" It looks like @PainterProphet, @Pfeffernusse, and @Draayder are equally paralyzed by the overwhelming options.
You realize that these ever-more-demanding feelings aren't really your own... you've stumbled straight into the trap of the pernicious Push-and-Pull Peacock! Before you can run, it leaps from the bushes. With each head pulling you in conflicting directions, you start to feel burnout overcoming you. You can't defeat both foes at once, so you only have one option -- concentrate on the nearest task to fight back!",
"questPeacockCompletion": "The Push-and-Pull Peacock is caught off guard by your sudden conviction. Defeated by your single-minded drive, its heads merge back into one, revealing the most beautiful creature you've ever seen. \"Thank you,\" the peacock says. \"I’ve spent so long pulling myself in different directions that I lost sight of what I truly wanted. Please accept these eggs as a token of my gratitude.\"",
- "questPeacockBoss": "Push-and-Pull Peacock",
- "questPeacockDropPeacockEgg": "Peacock (Egg)",
- "questPeacockUnlockText": "Unlocks purchasable Peacock eggs in the Market",
- "questButterflyText": "Bye, Bye, Butterfry",
+ "questPeacockBoss": "Merak Tarik Dorong",
+ "questPeacockDropPeacockEgg": "Merak (Telur)",
+ "questPeacockUnlockText": "Dapatkan telur Merak yang dapat dibeli di Pasar",
+ "questButterflyText": "Sampai Jumpa, Butterfry",
"questButterflyNotes": "Your gardener friend @Megan sends you an invitation: “These warm days are the perfect time to visit Habitica’s butterfly garden in the Taskan countryside. Come see the butterflies migrate!” When you arrive, however, the garden is in shambles -- little more than scorched grass and dried-out weeds. It’s been so hot that the Habiticans haven’t come out to water the flowers, and the dark-red Dailies have turned it into a dry, sun-baked, fire-hazard. There's only one butterfly there, and there's something odd about it...
“Oh no! This is the perfect hatching ground for the Flaming Butterfry,” cries @Leephon.
“If we don’t catch it, it’ll destroy everything!” gasps @Eevachu.
Time to say bye, bye to Butterfry!",
"questButterflyCompletion": "After a blazing battle, the Flaming Butterfry is captured. “Great job catching the that would-be arsonist,” says @Megan with a sigh of relief. “Still, it’s hard to vilify even the vilest butterfly. We’d better free this Butterfry someplace safe…like the desert.”
One of the other gardeners, @Beffymaroo, comes up to you, singed but smiling. “Will you help raise these foundling chrysalises we found? Perhaps next year we’ll have a greener garden for them.”",
- "questButterflyBoss": "Flaming Butterfry",
- "questButterflyDropButterflyEgg": "Caterpillar (Egg)",
- "questButterflyUnlockText": "Unlocks purchasable Caterpillar eggs in the Market",
- "questGroupMayhemMistiflying": "Mayhem in Mistiflying",
- "questMayhemMistiflying1Text": "Mayhem in Mistiflying, Part 1: In Which Mistiflying Experiences a Dreadful Bother",
+ "questButterflyBoss": "Butterfry Berapi",
+ "questButterflyDropButterflyEgg": "Ulat (Telur)",
+ "questButterflyUnlockText": "Dapatkan telur Ulat yang dapat dibeli di Pasar",
+ "questGroupMayhemMistiflying": "Huru-hara di Mistiflying",
+ "questMayhemMistiflying1Text": "Huru-hara di Mistiflying, Bagian 1: Di Mana Mistiflying Mengalami Gangguan yang Mengerikan",
"questMayhemMistiflying1Notes": "Although local soothsayers predicted pleasant weather, the afternoon is extremely breezy, so you gratefully follow your friend @Kiwibot into their house to escape the blustery day.
Neither of you expects to find the April Fool lounging at the kitchen table.
“Oh, hello,” he says. “Fancy seeing you here. Please, let me offer you some of this delicious tea.”
“That’s…” @Kiwibot begins. “That’s MY—“
“Yes, yes, of course,” says the April Fool, helping himself to some cookies. “Just thought I’d pop indoors and get a nice reprieve from all the tornado-summoning skulls.” He takes a casual sip from his teacup. “Incidentally, the city of Mistiflying is under attack.”
Horrified, you and your friends race to the Stables and saddle your fastest winged mounts. As you soar towards the floating city, you see that a swarm of chattering, flying skulls are laying siege to the city… and several turn their attentions towards you!",
"questMayhemMistiflying1Completion": "The final skull drops from the sky, a shimmering set of rainbow robes clasped in its jaws, but the steady wind has not slackened. Something else is at play here. And where is that slacking April Fool? You pick up the robes, then swoop into the city.",
- "questMayhemMistiflying1Boss": "Air Skull Swarm",
+ "questMayhemMistiflying1Boss": "Gerombolan Tengkorak Udara",
"questMayhemMistiflying1RageTitle": "Swarm Respawn",
"questMayhemMistiflying1RageDescription": "Swarm Respawn: This bar fills when you don't complete your Dailies. When it is full, the Air Skull Swarm will heal 30% of its remaining health!",
"questMayhemMistiflying1RageEffect": "`Air Skull Swarm uses SWARM RESPAWN!`\n\nEmboldened by their victories, more skulls come whirling out of the clouds!",
- "questMayhemMistiflying1DropSkeletonPotion": "Skeleton Hatching Potion",
- "questMayhemMistiflying1DropWhitePotion": "White Hatching Potion",
- "questMayhemMistiflying1DropArmor": "Roguish Rainbow Messenger Robes (Armor)",
- "questMayhemMistiflying2Text": "Mayhem in Mistiflying, Part 2: In Which the Wind Worsens",
+ "questMayhemMistiflying1DropSkeletonPotion": "Ramuan Penetas Tengkorak",
+ "questMayhemMistiflying1DropWhitePotion": "Ramuan Penetas Putih",
+ "questMayhemMistiflying1DropArmor": "Jubah Kurir Pelangi Nakal (Armor)",
+ "questMayhemMistiflying2Text": "Huru-hara di Mistiflying, Bagian 2: Di Mana Anginnya Memburuk",
"questMayhemMistiflying2Notes": "Mistiflying dips and rocks as the magical bees keeping it afloat are buffeted by the gale. After a desperate search for the April Fool, you find him inside a cottage, blithely playing cards with an angry, trussed-up skull.
@Katy133 raises their voice over the whistling wind. “What’s causing this? We defeated the skulls, but it’s getting worse!”
“That is a pickle,” the April Fool agrees. “Please be a dear and don’t mention it to Lady Glaciate. She’s always threatening to call off our courtship on the grounds that I am ‘catastrophically irresponsible,’ and I fear that she might misread this situation.” He shuffles the deck. “Perhaps you might follow the Mistiflies? They’re immaterial, so the wind can’t blow them away, and they tend to swarm around threats.” He nods out the window, where several of the city’s patron creatures are fluttering towards the east. “Now let me concentrate — my opponent has quite the poker face.”",
"questMayhemMistiflying2Completion": "You follow the Mistiflies to the site of a tornado, too stormy for you to enter.
“This should help,” says a voice directly in your ear, and you nearly fall off of your mount. The April Fool is somehow sitting directly behind you in the saddle. “I hear these messenger hoods emit an aura that guards against inclement weather — very useful to avoid losing missives as you fly around. Perhaps give it a try?”",
- "questMayhemMistiflying2CollectRedMistiflies": "Red Mistiflies",
- "questMayhemMistiflying2CollectBlueMistiflies": "Blue Mistiflies",
- "questMayhemMistiflying2CollectGreenMistiflies": "Green Mistiflies",
- "questMayhemMistiflying2DropHeadgear": "Roguish Rainbow Messenger Hood (Headgear)",
- "questMayhemMistiflying3Text": "Mayhem in Mistiflying, Part 3: In Which a Mailman is Extremely Rude",
+ "questMayhemMistiflying2CollectRedMistiflies": "Mistifly Merah",
+ "questMayhemMistiflying2CollectBlueMistiflies": "Mistifly Biru",
+ "questMayhemMistiflying2CollectGreenMistiflies": "Mistifly Hijau",
+ "questMayhemMistiflying2DropHeadgear": "Tudung Kurir Pelangi Nakal (Armor)",
+ "questMayhemMistiflying3Text": "Huru-hara di Mistiflying, Bagian 3: Di Mana si Kurir itu Sangat Kasar",
"questMayhemMistiflying3Notes": "The Mistiflies are whirling so thickly through the tornado that it’s hard to see. Squinting, you spot a many-winged silhouette floating at the center of the tremendous storm.
“Oh, dear,” the April Fool sighs, nearly drowned out by the howl of the weather. “Looks like Winny went and got himself possessed. Very relatable problem, that. Could happen to anybody.”
“The Wind-Worker!” @Beffymaroo hollers at you. “He’s Mistiflying’s most talented messenger-mage, since he’s so skilled with weather magic. Normally he’s a very polite mailman!”
As if to counteract this statement, the Wind-Worker lets out a scream of fury, and even with your magic robes, the storm nearly rips you from your mount.
“That gaudy mask is new,” the April Fool remarks. “Perhaps you should relieve him of it?”
It’s a good idea… but the enraged mage isn’t going to give it up without a fight.",
"questMayhemMistiflying3Completion": "Just as you think you can’t withstand the wind any longer, you manage to snatch the mask from the Wind-Worker’s face. Instantly, the tornado is sucked away, leaving only balmy breezes and sunshine. The Wind-Worker looks around in bemusement. “Where did she go?”
“Who?” your friend @khdarkwolf asks.
“That sweet woman who offered to deliver a package for me. Tzina.” As he takes in the wind-swept city below him, his expression darkens. “Then again, maybe she wasn’t so sweet…”
The April Fool pats him on the back, then hands you two shimmering envelopes. “Here. Why don’t you let this distressed fellow rest, and take charge of the mail for a bit? I hear the magic in those envelopes will make them worth your while.”",
- "questMayhemMistiflying3Boss": "The Wind-Worker",
- "questMayhemMistiflying3DropPinkCottonCandy": "Pink Cotton Candy (Food)",
- "questMayhemMistiflying3DropShield": "Roguish Rainbow Message (Off-Hand Item)",
- "questMayhemMistiflying3DropWeapon": "Roguish Rainbow Message (Main-Hand Item)",
- "featheredFriendsText": "Feathered Friends Quest Bundle",
- "featheredFriendsNotes": "Contains 'Help! Harpy!,' 'The Night-Owl,' and 'The Birds of Preycrastination.' Available until May 31.",
- "questNudibranchText": "Infestation of the NowDo Nudibranches",
- "questNudibranchNotes": "You finally get around to checking your To-dos on a lazy day in Habitica. Bright against your deepest red tasks are a gaggle of vibrant blue sea slugs. You are entranced! Their sapphire colors make your most intimidating tasks look as easy as your best Habits. In a feverish stupor you get to work, tackling one task after the other in a ceaseless frenzy...
The next thing you know, @LilithofAlfheim is pouring cold water over you. “The NowDo Nudibranches have been stinging you all over! You need to take a break!”
Shocked, you see that your skin is as bright red as your To-Do list was. \"Being productive is one thing,\" @beffymaroo says, \"but you've also got to take care of yourself. Hurry, let's get rid of them!\"",
- "questNudibranchCompletion": "You see the last of the NowDo Nudibranches sliding off of a pile of completed tasks as @amadshade washes them away. One leaves behind a cloth bag, and you open it to reveal some gold and a few little ellipsoids you guess are eggs.",
- "questNudibranchBoss": "NowDo Nudibranch",
- "questNudibranchDropNudibranchEgg": "Nudibranch (Egg)",
- "questNudibranchUnlockText": "Unlocks purchasable Nudibranch eggs in the Market",
- "splashyPalsText": "Splashy Pals Quest Bundle",
- "splashyPalsNotes": "Contains 'The Dilatory Derby', 'Guide the Turtle', and 'Wail of the Whale'. Available until July 31.",
+ "questMayhemMistiflying3Boss": "Sang Pekerja Angin",
+ "questMayhemMistiflying3DropPinkCottonCandy": "Permen Kapas Pink (Makanan)",
+ "questMayhemMistiflying3DropShield": "Surat Pelangi Nakal (Item Tangan Lain)",
+ "questMayhemMistiflying3DropWeapon": "Surat Pelangi Nakal (Item Tangan Utama)",
+ "featheredFriendsText": "Bundel Misi Teman Berbulu",
+ "featheredFriendsNotes": "Berisi 'Tolong! Harpy!,' 'Burung Hantu Malam,' dan 'Burung Preycrastination.' Tersedia hingga 31 Mei.",
+ "questNudibranchText": "Wabah Nudibranchia NowDo",
+ "questNudibranchNotes": "Kamu akhirnya selesai menyelesaikan To-do pada hari yang malas di Habitica. Terlihat terang di atas tugas paling merah tuamu ada sekawanan siput laut berwarna biru cerah. Kamu terpesona! Warna safir mereka membuat tugas paling susah terlihat semudah kebiasaan terbaikmu. Sembari demam dan nyaris pingsan kamu mulai bekerja, mengalahkan satu per satu tugas tanpa henti...
Hal selanjutnya yang kamu tahu, @LilithofAlfheim sedang menuang air dingin ke atasmu. \"Sang Nudibranchia NowDo telah menyengat seluruh tubuhmu! Kamu perlu istirahat!\"
Terkejut, kamu melihat kulitmu berwarna semerah warna daftar To-Do kamu dulu. \"Menjadi produktif itu penting,\" nasihat @beffymaroo, \"tapi kamu harus ingat untuk mengurus dirimu sendiri. Cepat, ayo usir mereka!\"",
+ "questNudibranchCompletion": "Kamu melihat Nudibranchia NowDo terakhir tergelincir turun dari tumpukan tugas yang terselesaikan selagi @amadshade membasuh mereka semua. Ada yang meninggalkan sebuah tas kain, dan kamu membukanya untuk menemukan koin emas dan beberapa bentuk oval kecil yang kamu tebak adalah telur.",
+ "questNudibranchBoss": "Nudibranchia NowDo",
+ "questNudibranchDropNudibranchEgg": "Nudibranchia (Telur)",
+ "questNudibranchUnlockText": "Dapatkan telur Nudibranchia yang dapat dibeli di Pasar",
+ "splashyPalsText": "Bundel Misi Teman Cebar-cebur",
+ "splashyPalsNotes": "Berisi 'Derby Dilatory', 'Pandu sang Penyu', dan 'Ratapan Ikan Paus'. Tersedia hingga 31 Juli.",
"questHippoText": "What a Hippo-Crite",
"questHippoNotes": "You and @awesomekitty collapse into the shade of a palm tree, exhausted. The sun beats down over the Sloensteadi Savannah, scorching the ground below. It’s been a productive day so far, conquering your Dailies, and this oasis looks like a nice place to take a break and refresh. Stooping near the water to get a drink, you stumble back in shock as a massive hippopotamus rises. “Resting so soon? Don’t be so lazy, get back to work.” You try and protest that you’ve been working hard and need a break, but the hippo isn’t having any of it.
@khdarkwolf whispers to you, “Notice how it’s lounging around all day but has the nerve to call you lazy? It’s the Hippo-Crite!”
Your friend @jumorales nods. “Let’s show it what hard work looks like!”",
"questHippoCompletion": "The hippo bows in surrender. “I underestimated you. It seems you weren’t being lazy. My apologies. Truth be told, I may have been projecting a bit. Perhaps I should get some work done myself. Here, take these eggs as a sign of my gratitude.” Grabbing them, you settle down by the water, ready to relax at last.",
"questHippoBoss": "The Hippo-Crite",
- "questHippoDropHippoEgg": "Hippo (Egg)",
- "questHippoUnlockText": "Unlocks purchasable Hippo eggs in the Market",
- "farmFriendsText": "Farm Friends Quest Bundle",
- "farmFriendsNotes": "Contains 'The Mootant Cow', 'Ride the Night-Mare', and 'The Thunder Ram'. Available until September 30.",
- "witchyFamiliarsText": "Witchy Familiars Quest Bundle",
- "witchyFamiliarsNotes": "Contains 'The Rat King', 'The Icy Arachnid', and 'Swamp of the Clutter Frog'. Available until October 31.",
- "questGroupLostMasterclasser": "Mystery of the Masterclassers",
- "questUnlockLostMasterclasser": "To unlock this quest, complete the final quests of these quest chains: 'Dilatory Distress', 'Mayhem in Mistiflying', 'Stoïkalm Calamity', and 'Terror in the Taskwoods'.",
- "questLostMasterclasser1Text": "The Mystery of the Masterclassers, Part 1: Read Between the Lines",
+ "questHippoDropHippoEgg": "Kuda Nil (Telur)",
+ "questHippoUnlockText": "Dapatkan telur Kuda Nil yang dapat dibeli di Pasar",
+ "farmFriendsText": "Bundel Misi Teman di Ladang",
+ "farmFriendsNotes": "Berisi 'Sapi Mootan', 'Tunggangi Kuda Mimpi Buruk', dan 'Sang Domba Petir'. Tersedia hingga 30 September.",
+ "witchyFamiliarsText": "Bundel Misi Anggota Keluarga Penyihir",
+ "witchyFamiliarsNotes": "Berisi 'Sang Raja Tikus', 'Sang Laba-Laba Es', dan 'Rawa sang Katak Kekacauan'. Tersedia hingga 31 Oktober.",
+ "questGroupLostMasterclasser": "Misteri para Masterclasser",
+ "questUnlockLostMasterclasser": "Untuk membuka misi ini, selesaikan misi terakhir dari rangkaian misi berikut: 'Penderitaan Dilatory', 'Huru-hara di Mistiflying', 'Malapetaka Stoïkalm', dan 'Teror di Taskwoods'.",
+ "questLostMasterclasser1Text": "Misteri para Masterclasser, Bagian 1: Baca Hal yang Tidak Tersurat",
"questLostMasterclasser1Notes": "You’re unexpectedly summoned by @beffymaroo and @Lemoness to Habit Hall, where you’re astonished to find all four of Habitica’s Masterclassers awaiting you in the wan light of dawn. Even the Joyful Reaper looks somber.
“Oho, you’re here,” says the April Fool. “Now, we would not rouse you from your rest without a truly dire—”
“Help us investigate the recent bout of possessions,” interrupts Lady Glaciate. “All the victims blamed someone named Tzina.”
The April Fool is clearly affronted by the summary. “What about my speech?” he hisses to her. “With the fog and thunderstorm effects?”
“We’re in a hurry,” she mutters back. “And my mammoths are still soggy from your incessant practicing.”
“I’m afraid that the esteemed Master of Warriors is correct,” says King Manta. “Time is of the essence. Will you aid us?”
When you nod, he waves his hands to open a portal, revealing an underwater room. “Swim down with me to Dilatory, and we will scour my library for any references that might give us a clue.” At your look of confusion, he adds, “Don’t worry, the paper was enchanted long before Dilatory sank. None of the books are the slightest bit damp!” He winks.“Unlike Lady Glaciate’s mammoths.”
“I heard that, Manta.”
As you dive into the water after the Master of Mages, your legs magically fuse into fins. Though your body is buoyant, your heart sinks when you see the thousands of bookshelves. Better start reading…",
"questLostMasterclasser1Completion": "After hours of poring through volumes, you still haven’t found any useful information.
“It seems impossible that there isn’t even the tiniest reference to anything relevant,” says head librarian @Tuqjoi, and their assistant @stefalupagus nods in frustration.
King Manta’s eyes narrow. “Not impossible…” he says. “Intentional.” For a moment, the water glows around his hands, and several of the books shudder. “Something is obscuring information,” he says. “Not just a static spell, but something with a will of its own. Something… alive.” He swims up from the table. “The Joyful Reaper needs to hear about this. Let’s pack a meal for the road.”",
- "questLostMasterclasser1CollectAncientTomes": "Ancient Tomes",
- "questLostMasterclasser1CollectForbiddenTomes": "Forbidden Tomes",
- "questLostMasterclasser1CollectHiddenTomes": "Hidden Tomes",
- "questLostMasterclasser2Text": "The Mystery of the Masterclassers, Part 2: Assembling the a'Voidant",
+ "questLostMasterclasser1CollectAncientTomes": "Buku Kuno",
+ "questLostMasterclasser1CollectForbiddenTomes": "Buku Terlarang",
+ "questLostMasterclasser1CollectHiddenTomes": "Buku Tersembunyi",
+ "questLostMasterclasser2Text": "Misteri para Masterclasser, Bagian 2: Merakit sang a'Voidant",
"questLostMasterclasser2Notes": "The Joyful Reaper drums her bony fingers on some of the books that you brought. “Oh, dear,” the Master of Healers says. “There is a malevolent life essence at work. I might have guessed, considering the attacks by reanimated skulls during each incident.” Her assistant @tricksy.fox brings in a chest, and you are startled to see the contents that @beffymaroo unloads: the very same objects once used by this mysterious Tzina to possess people.
“I’m going to use resonant healing magic to try to make this creature manifest,” the Joyful Reaper says, reminding you that the skeleton is a somewhat unconventional Healer. “You’ll need to read the revealed information quickly, in case it breaks loose.”
As she concentrates, a twisting mist begins to siphon from the books and twine around the objects. Quickly, you flip through the pages, trying to read the new lines of text that are writhing into view. You catch only a few snippets: “Sands of the Timewastes” — “the Great Disaster” —“split into four”— “permanently corrupted”— before a single name catches your eye: Zinnya.
Abruptly, the pages wrench free from your fingers and shred themselves as a howling creature explodes into being, coalescing around the possessed objects.
“It’s an a’Voidant!” the Joyful Reaper shouts, throwing up a protection spell. “They’re ancient creatures of confusion and obscurity. If this Tzina can control one, she must have a frightening command over life magic. Quickly, attack it before it escapes back into the books!”
",
"questLostMasterclasser2Completion": "The a’Voidant succumbs at last, and you share the snippets that you read.
“None of those references sound familiar, even for someone as old as I,” the Joyful Reaper says. “Except… the Timewastes are a distant desert at the most hostile edge of Habitica. Portals often fail nearby, but swift mounts could get you there in no time. Lady Glaciate will be glad to assist.” Her voice grows amused. “Which means that the enamored Master of Rogues will undoubtedly tag along.” She hands you the glimmering mask. “Perhaps you should try to track the lingering magic in these items to its source. I’ll go harvest some sustenance for your journey.”",
- "questLostMasterclasser2Boss": "The a'Voidant",
- "questLostMasterclasser2DropEyewear": "Aether Mask (Eyewear)",
- "questLostMasterclasser3Text": "The Mystery of the Masterclassers, Part 3: City in the Sands",
+ "questLostMasterclasser2Boss": "Sang a'Voidant",
+ "questLostMasterclasser2DropEyewear": "Topeng Aether (Aksesori Mata)",
+ "questLostMasterclasser3Text": "Misteri para Masterclasser, Bagian 3: Kota di Tengah Pasir",
"questLostMasterclasser3Notes": "As night unfurls over the scorching sands of the Timewastes, your guides @AnnDeLune, @Kiwibot, and @Katy133 lead you forward. Some bleached pillars poke from the shadowed dunes, and as you approach them, a strange skittering sound echoes across the seemingly-abandoned expanse.
“Invisible creatures!” says the April Fool, clearly covetous. “Oho! Just imagine the possibilities. This must be the work of a truly stealthy Rogue.”
“A Rogue who could be watching us,” says Lady Glaciate, dismounting and raising her spear. “If there’s a head-on attack, try not to irritate our opponent. I don’t want a repeat of the volcano incident.”
He beams at her. “But it was one of your most resplendent rescues.”
To your surprise, Lady Glaciate turns very pink at the compliment. She hastily stomps away to examine the ruins.
“Looks like the wreck of an ancient city,” says @AnnDeLune. “I wonder what…”
Before she can finish her sentence, a portal roars open in the sky. Wasn’t that magic supposed to be nearly impossible here? The hoofbeats of the invisible animals thunder as they flee in panic, and you steady yourself against the onslaught of shrieking skulls that flood the skies.",
"questLostMasterclasser3Completion": "The April Fool surprises the final skull with a spray of sand, and it blunders backwards into Lady Glaciate, who smashes it expertly. As you catch your breath and look up, you see a single flash of someone’s silhouette moving on the other side of the closing portal. Thinking quickly, you snatch up the amulet from the chest of previously-possessed items, and sure enough, it’s drawn towards the unseen person. Ignoring the shouts of alarm from Lady Glaciate and the April Fool, you leap through the portal just as it snaps shut, plummeting into an inky swath of nothingness.",
- "questLostMasterclasser3Boss": "Void Skull Swarm",
+ "questLostMasterclasser3Boss": "Gerombolan Tengkorak Kehampaan",
"questLostMasterclasser3RageTitle": "Swarm Respawn",
"questLostMasterclasser3RageDescription": "Swarm Respawn: This bar fills when you don't complete your Dailies. When it is full, the Void Skull Swarm will heal 30% of its remaining health!",
"questLostMasterclasser3RageEffect": "`Void Skull Swarm uses SWARM RESPAWN!`\n\nEmboldened by their victories, more skulls scream down from the heavens, bolstering the swarm!",
- "questLostMasterclasser3DropBodyAccessory": "Aether Amulet (Body Accessory)",
- "questLostMasterclasser3DropBasePotion": "Base Hatching Potion",
+ "questLostMasterclasser3DropBodyAccessory": "Kalung Aether (Aksesoris Tubuh)",
+ "questLostMasterclasser3DropBasePotion": "Ramuan Penetas Biasa",
"questLostMasterclasser3DropGoldenPotion": "Ramuan Penetas Keemasan",
- "questLostMasterclasser3DropPinkPotion": "Cotton Candy Pink Hatching Potion",
- "questLostMasterclasser3DropShadePotion": "Shade Hatching Potion",
- "questLostMasterclasser3DropZombiePotion": "Zombie Hatching Potion",
- "questLostMasterclasser4Text": "The Mystery of the Masterclassers, Part 4: The Lost Masterclasser",
+ "questLostMasterclasser3DropPinkPotion": "Ramuan Penetas Permen Kapas Pink",
+ "questLostMasterclasser3DropShadePotion": "Ramuan Penetas Bayangan",
+ "questLostMasterclasser3DropZombiePotion": "Ramuan Penetas Mayat Hidup",
+ "questLostMasterclasser4Text": "Misteri para Masterclasser, Bagian 4: Masterclasser yang Hilang",
"questLostMasterclasser4Notes": "You surface from the portal, but you’re still suspended in a strange, shifting netherworld. “That was bold,” says a cold voice. “I have to admit, I hadn’t planned for a direct confrontation yet.” A woman rises from the churning whirlpool of darkness. “Welcome to the Realm of Void.”
You try to fight back your rising nausea. “Are you Zinnya?” you ask.
“That old name for a young idealist,” she says, mouth twisting, and the world writhes beneath you. “No. If anything, you should call me the Anti’zinnya now, given all that I have done and undone.”
Suddenly, the portal reopens behind you, and as the four Masterclassers burst out, bolting towards you, Anti’zinnya’s eyes flash with hatred. “I see that my pathetic replacements have managed to follow you.”
You stare. “Replacements?”
“As the Master Aethermancer, I was the first Masterclasser — the only Masterclasser. These four are a mockery, each possessing only a fragment of what I once had! I commanded every spell and learned every skill. I shaped your very world to my whim — until the traitorous aether itself collapsed under the weight of my talents and my perfectly reasonable expectations. I have been trapped for millennia in this resulting void, recuperating. Imagine my disgust when I learned how my legacy had been corrupted.” She lets out a low, echoing laugh. “My plan was to destroy their domains before destroying them, but I suppose the order is irrelevant.” With a burst of uncanny strength, she charges forward, and the Realm of Void explodes into chaos.",
"questLostMasterclasser4Completion": "Under the onslaught of your final attack, the Lost Masterclasser screams in frustration, her body flickering into translucence. The thrashing void stills around her as she slumps forward, and for a moment, she seems to change, becoming younger, calmer, with an expression of peace upon her face… but then everything melts away with scarcely a whisper, and you’re kneeling once more in the desert sand.
“It seems that we have much to learn about our own history,” King Manta says, staring at the broken ruins. “After the Master Aethermancer grew overwhelmed and lost control of her abilities, the outpouring of void must have leached the life from the entire land. Everything probably became deserts like this.”
“No wonder the ancients who founded Habitica stressed a balance of productivity and wellness,” the Joyful Reaper murmurs. “Rebuilding their world would have been a daunting task requiring considerable hard work, but they would have wanted to prevent such a catastrophe from happening again.”
“Oho, look at those formerly possessed items!” says the April Fool. Sure enough, all of them shimmer with a pale, glimmering translucence from the final burst of aether released when you laid Anti’zinnya’s spirit to rest. “What a dazzling effect. I must take notes.”
“The concentrated remnants of aether in this area probably caused these animals to go invisible, too,” says Lady Glaciate, scratching a patch of emptiness behind the ears. You feel an unseen fluffy head nudge your hand, and suspect that you’ll have to do some explaining at the Stables back home. As you look at the ruins one last time, you spot all that remains of the first Masterclasser: her shimmering cloak. Lifting it onto your shoulders, you head back to Habit City, pondering everything that you have learned.
",
"questLostMasterclasser4Boss": "Anti'zinnya",
"questLostMasterclasser4RageTitle": "Siphoning Void",
"questLostMasterclasser4RageDescription": "Siphoning Void: This bar fills when you don't complete your Dailies. When it is full, Anti'zinnya will remove the party's Mana!",
"questLostMasterclasser4RageEffect": "`Anti'zinnya uses SIPHONING VOID!` In a twisted inversion of the Ethereal Surge spell, you feel your magic drain away into the darkness!",
- "questLostMasterclasser4DropBackAccessory": "Aether Cloak (Back Accessory)",
- "questLostMasterclasser4DropWeapon": "Aether Crystals (Two-Handed Weapon)",
- "questLostMasterclasser4DropMount": "Invisible Aether Mount",
+ "questLostMasterclasser4DropBackAccessory": "Jubah Aether (Aksesoris Punggung)",
+ "questLostMasterclasser4DropWeapon": "Kristal Aether (Senjata Dua Tangan)",
+ "questLostMasterclasser4DropMount": "Tunggangan Aether Tembus Pandang",
"questYarnText": "Gulungan Benang Kusut",
"questYarnNotes": "Hari ini cuacanya sangat nyaman dan kamu memutuskan untuk berjalan-jalan di Pedesaan Taskan. Selagi kamu melewati toko rajutan terkenal, sebuah jeritan tajam mengejutkan burung-burung dan membuat para kupu-kupu bersembunyi. Kamu berlari ke arah sumbernya dan melihat @Arcosine berlari melalui jalur yang mengarah kepadamu. Di belakangnya, sebuah makhluk mengerikan yang terbuat dari peniti, jarum dan benang rajut sedang merayap mendekat.
Sang penjaga toko berlari ke arahnya, dan @stefalupagus menarik lenganmu, tersengal-sengal. \"Terlihat seperti tugasnya yang tidak selesai\" hosh hosh \"telah mengubah benang rajut dari Toko Benang kami\" hosh hosh \"menjadi gulungan kusut Yarnghetti!\"
\"Terkadang, hidup menyibukkan kita dan tugas jadi ditelantarkan, menjadi semakin kusut dan tercampur aduk,\" kata @khdarkwolf. \"Kekusutan ini akan menyebar ke tugas lain, hingga terlalu banyak kerjaan setengah jadi di sekitar sini dan tidak ada yang bisa menyelesaikan apapun!\"
Ini saatnya kamu membuat keputusan: selesaikan semua tugas yang tertunda... atau uraikan kekusutannya. Bagaimanapun juga, kamu harus meningkatkan produktivitas dengan cepat sebelum sang Yarnghetti yang mengerikan menyebarkan kekusutan dan kekacauan ke seluruh Habitica!",
- "questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
+ "questYarnCompletion": "Dengan sebuah ayunan tak bertenaga dari lengan berjarumnya dan raungan lemah, Yarnghetti yang mengerikan akhirnya terurai kekusutannya menjadi setumpuk gulungan benang rajut.
\"Jaga baik-baik benang rajut ini,\" ujar penjaga toko @JinjooHat, sambil memberikannya kepadamu. \"Jika kamu memberinya makan dan merawatnya dengan baik, mereka akan tumbuh menjadi proyek baru dan menarik yang mungkin dapat membawa hatimu terbang tinggi...\"",
"questYarnBoss": "Sang Yarnghetti yang Mengerikan",
"questYarnDropYarnEgg": "Benang Rajut (Telur)",
- "questYarnUnlockText": "Dapatkan telur Benang Rajut yang dapat dibeli di Pasar"
+ "questYarnUnlockText": "Dapatkan telur Benang Rajut yang dapat dibeli di Pasar",
+ "winterQuestsText": "Bundel Misi Musim Dingin",
+ "winterQuestsNotes": "Berisi 'Trapper Santa', 'Temukan Anak Beruang Kutub', dan 'Sang Burung Musim Dingin'. Tersedia hingga 31 Desember.",
+ "questPterodactylText": "Sang Pteror-daktil",
+ "questPterodactylNotes": "Kamu sedang berjalan sepanjang Tebing Stoikalm yang tenteram sewaktu mendengar jeritan jahat membelah udara. Kamu berbalik untuk menemukan sebuah makhluk mengerikan terbang ke arahmu dan kamu dipenuhi dengan teror dahsyat. Sewaktu kamu melarikan diri, @Lilith of Alfheim menarikmu. \"Jangan panik! Itu hanya sang Pteror-daktil.\"
@Procyon P mengangguk. \"Mereka berarang di dekat sini, tapi mereka tertarik dengan bau Kebiasaan buruk dan Kesehariaan yang belum selesai.\"
\"Jangan ragu,\" kata @Katy133. \"Kita hanya perlu menjadi sangat produktif untuk mengalahkannya!\" Kamu dipenuhi dengan tujuan baru dan berbalik untuk menghadapi musuhmu.",
+ "questPterodactylCompletion": "Dengan satu jeritan terakhir sang Pteror-daktil terjatuh dari ujung tebing. Kamu berlari maju untuk melihatnya terbang jauh ke stepa yang jauh. \"Fiuh, aku senang semuanya sudah berlalu,' kamu berkata. \"Aku juga,\" balas @GeraldThePixel. \"Tapi lihat! Ada beberapa telur tersisa untuk kita.\" @Edge memberimu tiga telur, dan kamu berjanji untuk membesarkan mereka dalam ketenteraman, dikelilingi dengan Kebiasaan positif dan Keseharian biru.",
+ "questPterodactylBoss": "Pteror-daktil",
+ "questPterodactylDropPterodactylEgg": "Pterodaktil (Telur)",
+ "questPterodactylUnlockText": "Dapatkan telur Pterodaktil yang dapat dibeli di Pasar"
}
\ No newline at end of file
diff --git a/website/common/locales/id/rebirth.json b/website/common/locales/id/rebirth.json
index a5fc3ae9cfb..bf9bf31e79f 100644
--- a/website/common/locales/id/rebirth.json
+++ b/website/common/locales/id/rebirth.json
@@ -21,7 +21,7 @@
"rebirthOrb": "Telah menggunakan Batu Kelahiran untuk memulai kembali setelah mencapai Level <%= level %>.",
"rebirthOrb100": "Telah menggunakan Batu Kelahiran untuk memulai kembali setelah mencapai Level 100 atau lebih.",
"rebirthOrbNoLevel": "Telah menggunakan Batu Kelahiran untuk memulai kembali dari awal.",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
+ "rebirthPop": "Mengembalikan karaktermu ke Level 1 dengan tetap menyimpan pencapaian, barang-barang, perlengkapan, dan tugas-tugas dengan riwayat. Efeknya akan berlaku seketika itu juga.",
"rebirthName": "Batu Kelahiran",
"reborn": "Lahir kembali, level maksimal <%= reLevel %>",
"confirmReborn": "Apakah kamu yakin?",
diff --git a/website/common/locales/id/settings.json b/website/common/locales/id/settings.json
index 159d5d12585..b7d5659e2ed 100644
--- a/website/common/locales/id/settings.json
+++ b/website/common/locales/id/settings.json
@@ -65,7 +65,7 @@
"resetText1": "PERINGATAN! Ini me-reset banyak hal dari akunmu. Hal ini sangat tidak disarankan, tetapi bagi beberapa orang ini berguna di awal setelah mencoba bermain di situs ini dalam waktu yang singkat.",
"resetText2": "Kamu akan kehilangan semua levelmu, koin emasmu, dan poin pengalamanmu. Semua tugasmu (kecuali tugas dari tantangan) akan dihapus secara permanen dan kamu akan kehilangan data riwayat mereka. Kamu akan kehilangan semua perlengkapanmu tapi kamu masih bisa membelinya lagi, termasuk semua perlengkapan edisi terbatas atau item pelanggan Misteri yang sudah kamu miliki (kamu harus mengambil pekerjaan yang sesuai untuk membeli ulang perlengkapan khusus pekerjaan). Kamu akan tetap memiliki pekerjaanmu yang sekarang serta peliharaan dan tungganganmu. Kamu mungkin lebih memilih untuk menggunakan Batu Kelahiran, yang merupakan pilihan lebih aman yang akan mempertahankan tugas-tugas dan perlengkapanmu.",
"deleteLocalAccountText": "Apakah kamu yakin? Pilihan ini akan menghapus akun selamanya, dan tidak akan dapat dikembalikan! Kamu harus mendaftar menggunakan akun yang baru untuk dapat kembali menggunakan Habitica. Permata yang telah dibeli atau telah disimpan tidak akan dikembalikan. Jika kamu benar-benar yakin, ketikkan kata sandi pada kotak teks di bawah ini.",
- "deleteSocialAccountText": "Apakah kamu yakin? Ini akan menghapus akunmu selamanya, dan tidak bisa diundur! Kamu harus mendaftar akun baru agar bisa menggunakan Habitica lagi. Permata yang terkumpul atau terpakai tidak akan dikembalikan. Jika kamu sangat yakin, ketik \"DELETE\" di kotak teks di bawah.",
+ "deleteSocialAccountText": "Apakah kamu yakin? Ini akan menghapus akunmu untuk selamanya, dan tidak akan bisa dikembalikan! Kamu perlu mendaftar akun baru untuk menggunakan Habitica lagi. Permata yang disimpan di Bank atau telah digunakan tidak akan dikembalikan. Jika kamu betul-betul yakin, ketik \"<%= magicWord %>\" ke dalam kotak teks di bawah.",
"API": "API",
"APIv3": "API v3",
"APIText": "Salin kode ini untuk digunakan dalam aplikasi pihak ketiga. Namun, perlakukan Token API seperti kata sandi, dan jangan dipublikasikan secara terbuka. Kamu mungkin kadang-kadang akan diminta untuk mengisi ID Pengguna, tetapi jangan pernah posting Token API di mana orang lain bisa melihatnya, termasuk di Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Langganan yang dihadiahkan",
"giftedSubscriptionInfo": "<%= name %> menghadiahimu <%= months %> bulan berlangganan",
"giftedSubscriptionFull": "Halo <%= username %>, <%= sender %> telah mengirimimu <%= monthCount %> bulan berlangganan!",
+ "giftedSubscriptionWinterPromo": "Halo <%= username %>, kamu mendapat <%= monthCount %> bulan langganan sebagai bagian dari promosi memberi hadiah liburan kami!",
"invitedParty": "Diundang ke dalam Party",
"invitedGuild": "Diundang ke dalam Guild",
"importantAnnouncements": "Pengingat untuk masuk untuk menyelesaikan tugas dan menerima hadiah",
diff --git a/website/common/locales/id/spells.json b/website/common/locales/id/spells.json
index 14737fdec29..7c14af7cc7a 100644
--- a/website/common/locales/id/spells.json
+++ b/website/common/locales/id/spells.json
@@ -9,7 +9,7 @@
"spellWizardFrostNotes": "Dengan satu kali merapal mantra, es membekukan semua rentetan kamu sehingga angkanya tidak menghilang besok!",
"spellWizardFrostAlreadyCast": "Kamu telah merapal mantra ini hari ini. Penghitung harimu sudah membeku, dan tidak perlu merapal mantra ini lagi.",
"spellWarriorSmashText": "Hantaman Brutal",
- "spellWarriorSmashNotes": "You make a task more blue/less red and deal extra damage to Bosses! (Based on: STR)",
+ "spellWarriorSmashNotes": "Kamu membuat sebuah tugas lebih biru/tidak terlalu merah dan memberikan damage ekstra kepada Boss! (Berdasarkan: KEK)",
"spellWarriorDefensiveStanceText": "Pose Bertahan",
"spellWarriorDefensiveStanceNotes": "Kamu merunduk rendah dan mendapatkan peningkatan Ketahanan! (Berdasarkan: KET)",
"spellWarriorValorousPresenceText": "Kehadiran yang gagah",
diff --git a/website/common/locales/id/subscriber.json b/website/common/locales/id/subscriber.json
index 0c082a82819..9b313c88f5e 100644
--- a/website/common/locales/id/subscriber.json
+++ b/website/common/locales/id/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Batalkan Langganan",
"cancelSubInfoGoogle": "Silakan pergi ke bagian \"Akun\" > \"Berlangganan\" di aplikasi Google Play Store untuk batal berlangganan atau untuk melihat tanggal penghentian langgananmu jika kamu sudah membatalkannya. Layar ini tidak dapat menampilkan apakah kamu sudah batal berlangganan atau belum.",
"cancelSubInfoApple": "Silakan ikuti instruksi resmi dari Apple untuk batal berlangganan atau untuk melihat tanggal berhenti berlangganan jika kamu sudah membatalkannya. Layar ini tidak dapat menampilkan apakah kamu sudah batal berlangganan atau belum.",
+ "cancelSubInfoGroupPlan": "Karena kamu berlangganan gratis dari Rencana Grup, kamu tidak bisa membatalkannya. Ini akan berakhir sewaktu kamu sudah tidak di dalam grup itu. Jika kamu adalah pemimpin Grup dan mau membatalkan seluruh Rencana Grup, kamu dapat melakukannya dari tab \"Detil Pembayaran\" grup.",
"canceledSubscription": "Langganan Batal",
"cancelingSubscription": "Membatalkan langganan",
"adminSub": "Berlangganan Administrator",
@@ -113,8 +114,8 @@
"mysterySet201510": "Set Goblin Bertanduk",
"mysterySet201511": "Set Prajurit Kayu",
"mysterySet201512": "Set Api Musim Dingin",
- "mysterySet201601": "Pemenang Set Resolusi",
- "mysterySet201602": "Set Penghancur Hati",
+ "mysterySet201601": "Set Juara Resolusi",
+ "mysterySet201602": "Set Pematah Hati",
"mysterySet201603": "Set Semanggi Keberuntungan",
"mysterySet201604": "Set Prajurit Daun",
"mysterySet201605": "Set Marching Bard",
@@ -132,42 +133,42 @@
"mysterySet201705": "Set Petarung Berbulu",
"mysterySet201706": "Set Pelopor Bajak Laut",
"mysterySet201707": "Set Jellymancer",
- "mysterySet201708": "Set Prajurit Lahar",
- "mysterySet201709": "Set Mahasiswa Sihir",
+ "mysterySet201708": "Set Prajurit Lava",
+ "mysterySet201709": "Set Siswa Sekolah Sihir",
"mysterySet201710": "Set Imp Angkuh",
- "mysterySet201711": "Carpet Rider Set",
- "mysterySet301404": "Set Standar Steampunk",
+ "mysterySet201711": "Set Pengendara Karpet",
+ "mysterySet201712": "Set Candlemancer",
+ "mysterySet301404": "Set Steampunk Standard",
"mysterySet301405": "Set Aksesoris Steampunk",
"mysterySet301703": "Set Merak Steampunk",
"mysterySet301704": "Set Burung Pegar Steampunk",
- "mysterySetwondercon": "Konferensi Wondercon",
+ "mysterySetwondercon": "Wondercon",
"subUpdateCard": "Update Kartu",
"subUpdateTitle": "Update",
"subUpdateDescription": "Update kartu untuk dapat ditagih",
- "notEnoughHourglasses": "Kamu tidak punya cukup Jam Pasir Mistik",
- "hourglassBuyEquipSetConfirm": "Beli set item seharga 1 Jam Pasir Mistik?",
- "hourglassBuyItemConfirm": "Beli item ini seharga 1 Jam Pasir Mistik?",
+ "notEnoughHourglasses": "Kamu tidak punya cukup Jam Pasir Mistis.",
+ "hourglassBuyEquipSetConfirm": "Beli set item seharga 1 Jam Pasir Mistis?",
+ "hourglassBuyItemConfirm": "Beli item ini seharga 1 Jam Pasir Mistis?",
"petsAlreadyOwned": "Peliharaan telah dimiliki.",
- "mountsAlreadyOwned": "Tunggangan telah dimiliki",
- "typeNotAllowedHourglass": "Tipe item tidak didukung untuk dibeli dengan Jam Pasir Mistik. Tipe yang diperbolehkan: <%= allowedTypes %>",
- "petsNotAllowedHourglass": "Peliharaan tidak dapat dibeli dengan Jam Pasir Mistik.",
- "mountsNotAllowedHourglass": "Tunggangan tidak dapat dibeli dengan Jam Pasir Mistik",
- "hourglassPurchase": "Item telah dibeli menggunakan Jam Pasir Mistik!",
- "hourglassPurchaseSet": "Set item telah dibeli menggunakan Jam Pasir Mistik!",
- "missingUnsubscriptionCode": "Kode batalkan berlangganan hilang.",
- "missingSubscription": "Pengguna tidak memiliki rencana berlangganan",
+ "mountsAlreadyOwned": "Tunggangan telah dimiliki.",
+ "typeNotAllowedHourglass": "Jenis item tidak didukung untuk dibeli dengan Jam Pasir Mistis. Jenis yang diperbolehkan: <%= allowedTypes %>",
+ "petsNotAllowedHourglass": "Peliharaan tidak dapat dibeli dengan Jam Pasir Mistis.",
+ "mountsNotAllowedHourglass": "Tunggangan tidak dapat dibeli dengan Jam Pasir Mistis.",
+ "hourglassPurchase": "Item telah dibeli menggunakan Jam Pasir Mistis!",
+ "hourglassPurchaseSet": "Set item telah dibeli menggunakan Jam Pasir Mistis!",
+ "missingUnsubscriptionCode": "Kode membatalkan langganan hilang.",
+ "missingSubscription": "Pengguna tidak memiliki langganan rencana",
"missingSubscriptionCode": "Kode berlangganan hilang. Nilai yang mungkin: basic_earned, basic_3mo, basic_6mo, google_6mo, basic_12mo.",
- "missingReceipt": "Tanda penerimaan tidak dapat ditemukan.",
- "cannotDeleteActiveAccount": "Kamu memiliki status langganan aktif, berhenti berlangganan sebelum menghapus akun anda.",
+ "missingReceipt": "Tanda terima tidak dapat ditemukan.",
+ "cannotDeleteActiveAccount": "Kamu memiliki status langganan aktif, batalkan rencana sebelum menghapus akunmu.",
"paymentNotSuccessful": "Pembayaran tidak berhasil",
- "planNotActive": "Pembayaran ini belum di aktifkan (karena bug di paypal). Ini akan di mulai lagi <%= nextBillingDate %>, setelah itu dapat anda batalkan untuk mendapatkan keuntungan penuh anda.",
- "notAllowedHourglass": "Peliharaan/Tunggangan tidak tersedia untuk dibeli dengan Jam Pasir Mistik.",
+ "planNotActive": "Rencana belum diaktifkan (karena gangguan pada paypal). Rencana akan dimulai <%= nextBillingDate %>, setelah itu kamu dapat membatalkannya untuk menyimpan semua keuntunganmu.",
+ "notAllowedHourglass": "Peliharaan/Tunggangan tidak dapat dibeli dengan Jam Pasir Mistis.",
"readCard": "<%= cardType %> telah dibaca",
"cardTypeRequired": "Tipe kartu dibutuhkan",
"cardTypeNotAllowed": "Tipe kartu tidak diketahui.",
"invalidCoupon": "Kode kupon tidak valid.",
"couponUsed": "Kode kupon telah digunakan.",
- "noSudoAccess": "Anda tidak memiliki akses sudo.",
"couponCodeRequired": "Kode kupon dibutuhkan.",
"eventRequired": "\"req.params.event\" dibutuhkan.",
"countRequired": "\"req.query.count\" dibutuhkan.",
@@ -175,7 +176,7 @@
"missingCustomerId": "req.query.customerId tidak dapat ditemukan",
"missingPaypalBlock": "req.session.paypalBlock tidak dapat ditemukan",
"missingSubKey": "req.query.sub tidak dapat ditemukan",
- "paypalCanceled": "Langganan kamu telah dibatalkan",
+ "paypalCanceled": "Langgananmu telah dibatalkan",
"earnGemsMonthly": "Dapatkan hingga **<%= cap %> Permata** per bulan",
"receiveMysticHourglass": "Dapatkan sebuah Jam Pasir Mistis!",
"receiveMysticHourglasses": "Dapatkan **<%= amount %> Jam Pasir Mistis**!",
@@ -186,23 +187,23 @@
"subscribeSupportsDevs": "Berlangganan mendukung para developer dan membantu menjaga Habitica tetap berjalan",
"buyGemsSupportsDevs": "Membeli Permata mendukung para developer dan membantu menjaga Habitica tetap berjalan",
"support": "DUKUNG",
- "gemBenefitLeadin": "Permata membuat kamu dapat membeli barang-barang tambahan yang seru untuk akunmu, termasuk:",
+ "gemBenefitLeadin": "Permata membuatmu dapat membeli barang-barang tambahan yang seru untuk akunmu, termasuk:",
"gemBenefit1": "Kostum unik dan modis untuk avatarmu.",
"gemBenefit2": "Latar Belakang untuk menaruh avatarmu di dunia Habitica!",
"gemBenefit3": "Rangkaian Misi menarik yang memberikan telur peliharaan.",
"gemBenefit4": "Reset poin atribut avatarmu dan ganti Profesinya.",
"subscriptionBenefitLeadin": "Dukung Habitica dengan menjadi seorang pelanggan dan kamu akan menerima keuntungan-keuntungan ini!",
"subscriptionBenefit1": "Alexander sang Saudagar akan menjual kepadamu Permata, seharga 20 Koin Emas masing-masing!",
- "subscriptionBenefit2": "To-do yang telah diselesaikan dan riwayat tugas akan tersedia lebih lama.",
- "subscriptionBenefit3": "Temukan lebih banyak barang di Habitica dengan batas drop harian yang didobel.",
+ "subscriptionBenefit2": "Riwayat To-Do dan tugas yang telah diselesaikan akan tersedia lebih lama.",
+ "subscriptionBenefit3": "Temukan lebih banyak item di Habitica dengan batas drop harian yang dilipatgandakan.",
"subscriptionBenefit4": "Barang kosmetik unik untuk avatarmu setiap bulan.",
"subscriptionBenefit5": "Dapatkan peliharaan Jackalope Ungu Kerajaan eksklusif!",
"subscriptionBenefit6": "Dapatkan Jam Pasir Mistis untuk digunakan di Toko Penjelajah Waktu!",
"haveCouponCode": "Apakah kamu mempunyai kode kupon?",
"subscriptionAlreadySubscribedLeadIn": "Terima kasih sudah berlangganan!",
- "subscriptionAlreadySubscribed1": "Untuk melihat detail berlangganan kamu dan batalkan, perbarui atau ubah pengaturan berlangganan kamu, silahkan klik Ikon Pengguna > Pengaturan > Berlangganan.",
+ "subscriptionAlreadySubscribed1": "Untuk melihat detail berlanggananmu dan membatalkan, memperbarui atau mengubah pengaturan berlanggananmu, silakan klik Ikon Pengguna > Pengaturan > Berlangganan.",
"purchaseAll": "Beli Semuanya",
- "gemsPurchaseNote": "Pelanggan dapat membeli permata dengan koin emas di Pasar! Untuk akses mudah, kamu dapat pin permata tersebut ke bagian Hadiah-mu.",
+ "gemsPurchaseNote": "Pelanggan dapat membeli permata dengan koin emas di Pasar! Untuk akses mudah, kamu dapat juga menaruh permata ke kolom Hadiah-mu.",
"gemsRemaining": "permata tersisa",
- "notEnoughGemsToBuy": "Kamu tidak dapat membeli permata sebanyak itu."
+ "notEnoughGemsToBuy": "Kamu tidak dapat membeli permata sebanyak itu"
}
\ No newline at end of file
diff --git a/website/common/locales/id/tasks.json b/website/common/locales/id/tasks.json
index e46e3a738af..30912229b08 100644
--- a/website/common/locales/id/tasks.json
+++ b/website/common/locales/id/tasks.json
@@ -1,9 +1,9 @@
{
"clearCompleted": "Hapus yang Telah Selesai",
- "lotOfToDos": "30 tugas terakhir yang Anda selesaikan ditampilkan di sini. Anda dapat melihat tugas lama yang telah Anda selesaikan dari Data > Data Display Tool or Data > Export Data > User Data.",
+ "lotOfToDos": "30 To-Do terakhir yang kamu selesaikan ditampilkan di sini. Kamu dapat melihat To-Do lama yang telah kamu selesaikan dari Data > Data Display Tool atau Data > Ekspor Data > Data Pengguna.",
"deleteToDosExplanation": "Jika kamu menekan tombol di bawah, semua To-Do yang sudah kamu selesaikan dan To-Do di arsip akan dihapus secara permanen, kecuali To-Do dari tantangan yang aktif dan Rencana Grup. Silakan ekspor terlebih dahulu jika kamu mau menyimpan catatan mengenai tugasmu.",
- "addMultipleTip": "Tips: Untuk menambahkan beberapa Tugas sekaligus, pisahkan masing-masing tugas dengan mengganti deretannya (Shift + Enter) dan lalu tekan \"Enter.\"",
- "addsingle": "Tambah satu",
+ "addMultipleTip": "Tips: Untuk menambahkan beberapa Tugas sekaligus, pisahkan baris masing-masing tugas (Shift + Enter) lalu tekan \"Enter.\"",
+ "addsingle": "Tambah Satu",
"addATask": "Tambahkan sebuah <%= type %>",
"editATask": "Edit sebuah <%= type %>",
"createTask": "Buat sebuah <%= type %>",
@@ -19,56 +19,56 @@
"negative": "Negatif",
"yellowred": "Lemah",
"greenblue": "Kuat",
- "edit": "Ubah",
+ "edit": "Edit",
"save": "Simpan",
"addChecklist": "Tambah Daftar Cek",
"checklist": "Daftar Cek",
"checklistText": "Buat sebuah tugas berat menjadi daftar tugas-tugas kecil! Daftar cek meningkatkan Pengalaman dan Koin Emas yang bisa didapat dari sebuah tugas, dan akan mengurangi serangan dari tugas yang terlewat",
- "newChecklistItem": "Item Ceklis Baru",
- "expandChecklist": "Lihat Ceklis",
- "collapseChecklist": "Sembunyikan Ceklis",
+ "newChecklistItem": "Tambah daftar cek",
+ "expandChecklist": "Lihat Daftar Cek",
+ "collapseChecklist": "Sembunyikan Daftar Cek",
"text": "Judul",
"extraNotes": "Catatan",
"notes": "Catatan",
"direction/Actions": "Arah/Aksi",
"advancedOptions": "Pengaturan lebih lanjut",
"taskAlias": "Nama Alias Tugas",
- "taskAliasPopover": "Nama alias tugas ini dapat digunakan untuk integrasi dengan pihak ketiga. Hanya tanda strip, garis bawah, dan karakter alfanumerik yang didukung. Nama alias tugas harus unik dari semua tugas-tugasmu.",
+ "taskAliasPopover": "Nama alias tugas ini dapat digunakan untuk integrasi dengan pihak ketiga. Hanya tanda strip, garis bawah, dan karakter alfanumerik yang diperbolehkan. Nama alias tugas harus unik dari semua tugas-tugasmu.",
"taskAliasPlaceholder": "nama-alias-tugasmu-disini",
"taskAliasPopoverWarning": "PERINGATAN: Mengganti nilai ini akan memutuskan integrasi pihak ketiga yang bergantung kepada nama alias tugas.",
"difficulty": "Tingkat kesulitan",
"difficultyHelpTitle": "Seberapa sulit pekerjaan ini?",
- "difficultyHelpContent": "Lebih sulit sebuah tugas, lebih banyak Pengalaman dan Koin Emas yang tersedia setelah kamu menyelesaikannya. Tapi itu bakal lebih menyakitkan jika kamu melewatkannya atau jika itu adalah sebuah kebiasaan buruk!",
- "trivial": "Sangat Mudah",
+ "difficultyHelpContent": "Semakin sulit sebuah tugas, semakin banyak Pengalaman dan Koin Emas yang kamu dapatkan ketika kamu menyelesaikannya... tapi semakin menyakitkan pula jika kamu melewatkannya atau jika itu adalah sebuah kebiasaan buruk!",
+ "trivial": "Trivial",
"easy": "Mudah",
"medium": "Sedang",
"hard": "Susah",
"attributes": "Atribut",
"progress": "Perkembangan",
- "daily": "Keseharian",
+ "daily": "Harian",
"dailies": "Keseharian",
"newDaily": "Keseharian baru",
"newDailyBulk": "Keseharian baru (satu per baris)",
"dailysDesc": "Keseharian berulang setiap waktu tertentu. Pilih jadwal yang cocok untukmu!",
- "streakCounter": "Penghitung Urutan",
+ "streakCounter": "Penghitung Runtunan",
"repeat": "Ulangi",
"repeats": "Pengulangan",
"repeatEvery": "Ulangi Setiap",
"repeatHelpTitle": "Seberapa sering tugas ini diulang?",
- "dailyRepeatHelpContent": "Tugas ini akan memiliki batas setiap X hari. Kamu dapat mengeset nilai hari di bawah ini.",
- "weeklyRepeatHelpContent": "Tugas ini akan memiliki batas pada hari yang ditandai di bawah ini. Klik pada hari untuk mengaktifkan/menonaktifkan.",
+ "dailyRepeatHelpContent": "Tugas ini akan muncul setiap X hari. Kamu dapat mengaturnya di bawah ini.",
+ "weeklyRepeatHelpContent": "Tugas ini akan muncul pada hari yang ditandai di bawah ini. Klik pada hari untuk mengaktifkan/menonaktifkan.",
"repeatDays": "Setiap X Hari",
"repeatWeek": "Pada Hari Tertentu dalam Seminggu",
"day": "Hari",
"days": "Hari",
- "restoreStreak": "Kembalikan Penghitung",
- "resetStreak": "Ulang Rentetan",
- "todo": "Daftar Tugas",
+ "restoreStreak": "Kembalikan Runtunan",
+ "resetStreak": "Ulang Runtunan",
+ "todo": "To-Do",
"todos": "To-Do",
- "newTodo": "Tugas Baru",
- "newTodoBulk": "Tambah Tugas (satu per baris)",
- "todosDesc": "To-Do hanya perlu diselesaikan sekali. Tambahkan daftar tugas di dalam To-Do untuk meningkatkan harganya.",
- "dueDate": "Tenggat waktu",
+ "newTodo": "To-Do Baru",
+ "newTodoBulk": "Tambah To-Do (satu per baris)",
+ "todosDesc": "To-Do hanya perlu diselesaikan sekali. Tambahkan daftar tugas di dalam To-Do untuk meningkatkan nilainya.",
+ "dueDate": "Tenggat Waktu",
"remaining": "Aktif",
"complete": "Selesai",
"complete2": "Selesai",
@@ -77,7 +77,7 @@
"dueIn": "Batas waktu <%= dueIn %>",
"due": "Tenggat Waktu",
"notDue": "Tidak memiliki Tenggat Waktu",
- "grey": "Kelabu",
+ "grey": "Abu-Abu",
"score": "Skor",
"reward": "Hadiah",
"rewards": "Hadiah",
@@ -89,7 +89,7 @@
"newRewardBulk": "Hadiah baru (satu per baris)",
"price": "Harga",
"tags": "Label",
- "editTags": "Ubah",
+ "editTags": "Edit",
"newTag": "Label Baru",
"clearTags": "Hapus",
"hideTags": "Sembunyikan",
@@ -98,63 +98,63 @@
"toRequired": "Kamu harus memasukkan \"ke\"",
"startDate": "Tanggal Mulai",
"startDateHelpTitle": "Kapan tugas ini dimulai?",
- "startDateHelp": "Tentukan tanggal di mana tugas ini memiliki efek. Tidak akan bisa menentukan tenggat waktu pada hari yang telah lewat.",
- "streaks": "Pencapaian Rentetan",
+ "startDateHelp": "Tentukan tanggal di mana tugas ini dimulai. Tidak akan muncul sebelum tanggal tersebut.",
+ "streaks": "Pencapaian Runtunan",
"streakName": "Pencapaian <%= count %>Beruntun",
"streakText": "Telah melakukan <%= count %> 21 hari beruntun di Keseharian",
"streakSingular": "Streaker",
"streakSingularText": "Telah melakukan Kegiatan Harian 21 hari berturut-turut",
"perfectName": "<%= count %> Hari Sempurna",
- "perfectText": "Menyelesaikan semua Keseharian pada <%= count %> hari. Dengan pencapaian ini kamu akan mendapatkan buff +level/2 untuk semua kemampuanmu. Level diatas 100 tidak akan memberimu efek tambahan lagi.",
- "perfectSingular": "Hari yang sempurna",
- "perfectSingularText": "Menyelesaikan semua tugas dalam satu hari. Dengan pencapaian ini kamu akan mendapatkan +level/2 tambahan untuk semua kemampuan keesokan harinya. Level di atas 100 tidak terkena efek ini.",
- "streakerAchievement": "Kamu mendapat penghargaan 'Streaker'! Pembentukan kebiasaan biasanya terjadi dalam 21 hari. Kamu bisa menambah lebih banyak lagi jenis penghargaan ini dengan melakukan tugas lainnya selama 21 hari berturut-turut!",
+ "perfectText": "Menyelesaikan semua Keseharian pada <%= count %> hari. Dengan pencapaian ini kamu akan mendapatkan buff +level/2 untuk semua atribut pada hari berikutnya. Level di atas 100 tidak akan memberimu efek tambahan lagi.",
+ "perfectSingular": "Hari Sempurna",
+ "perfectSingularText": "Menyelesaikan semua Keseharian dalam satu hari. Dengan pencapaian ini kamu akan mendapatkan buff +level/2 untuk semua atribut keesokan harinya. Level di atas 100 tidak terkena efek ini.",
+ "streakerAchievement": "Kamu mendapat penghargaan 'Streaker'! Pembentukan kebiasaan biasanya terjadi dalam 21 hari. Kamu bisa menumpuk penghargaan ini dengan melakukan tugas ini lagi atau tugas lain setiap 21 hari berturut-turut!",
"fortifyName": "Ramuan Penguat",
- "fortifyPop": "Mengembalikan nilai tugas (warna kuning), dan mengembalikan kesehatan yang berkurang.",
- "fortify": "Lindungi",
- "fortifyText": "Fortify akan mengembalikan semua tugasmu, kecuali tugas tantangan, menjadi normal (kuning), seolah kamu baru menambahkan mereka, dan membuat Kesehatanmu kembali penuh. Ini cocok digunakan jika tugas-tugasmu yang berwarna merah membuat permainan terlalu susah, atau semua tugas-tugasmu yang biru membuat permainan terlalu mudah. Jika mulai dari awal terdengar memotivasi dirimu, gunakan Permata untuk membeli dan memulai hari yang baru!",
+ "fortifyPop": "Mengembalikan tugas ke netral (warna kuning), dan membuat Kesehatan kembali penuh.",
+ "fortify": "Penguat",
+ "fortifyText": "Fortify akan mengembalikan semua tugasmu, kecuali tugas tantangan, menjadi normal (kuning), seolah kamu baru menambahkan mereka, dan membuat Kesehatanmu kembali penuh. Ini cocok digunakan jika tugas-tugasmu yang berwarna merah membuat permainan terlalu susah, atau semua tugas-tugasmu yang berwarna biru membuat permainan terlalu mudah. Jika kamu termotivasi dengan mengulang dari awal, gunakan Permata untuk membelinya dan mulai hari yang baru!",
"confirmFortify": "Apakah kamu yakin?",
- "fortifyComplete": "Fortify selesai!",
+ "fortifyComplete": "Penguatan selesai!",
"sureDelete": "Apakah kamu yakin ingin membuang tugas ini?",
- "sureDeleteCompletedTodos": "Apakah kamu yakin kamu ingin menghapus tugas yang sudah selesai?",
- "streakCoins": "Bonus Urutan!",
+ "sureDeleteCompletedTodos": "Apakah kamu yakin kamu ingin menghapus todo yang sudah selesai?",
+ "streakCoins": "Bonus Runtunan!",
"taskToTop": "Ke atas",
"taskToBottom": "Ke bawah",
"emptyTask": "Masukkan judul tugas terlebih dahulu.",
- "dailiesRestingInInn": "Kamu menginap! Tugasmu tak akan menyakitimu malam ini, tetapi mereka tetap akan diperbaharui setiap hari. Jika kamu masih ikut dalam sayembara, kamu tidak akan bisa menyerang/mendapatkan item sebelum kamu keluar dari Penginapan, tapi kamu masih bisa dilukai oleh musuh gara-gara tugas yang belum diselesaikan temanmu.",
+ "dailiesRestingInInn": "Kamu menginap! Keseharianmu TIDAK akan menyakitimu malam ini, tetapi mereka TETAP akan diperbarui setiap hari. Jika kamu masih ikut dalam misi, kamu tidak akan bisa menyerang/mendapatkan item sebelum kamu keluar dari Penginapan, tapi kamu masih bisa dilukai oleh musuh gara-gara tugas yang belum diselesaikan temanmu.",
"habitHelp1": "Kebiasaan Baik adalah hal yang seharusnya sering kamu lakukan. Hadiah Koin Emas dan Pengalaman akan kamu dapatkan setiap kamu klik <%= plusIcon %>.",
- "habitHelp2": "Kebiasaan Buruk adalah hal yang seharusnya kamu hindari. Kesehatan akan berkurang setiap kali kamu klik <%= minusIcon %>.",
+ "habitHelp2": "Kebiasaan Buruk adalah hal yang seharusnya kamu hindari. Nyawa akan berkurang setiap kali kamu klik <%= minusIcon %>.",
"habitHelp3": "Untuk inspirasi, cek contoh Kebiasaan!",
"newbieGuild": "Ada pertanyaan? Tanyakan di <%= linkStart %>guild Bantuan Habitica<%= linkEnd %>!",
- "dailyHelp1": "Keseharian berulang <%= emphasisStart %>setiap hari<%= emphasisEnd %> saat aktif. Klik pada <%= pencilIcon %> untuk mengganti hari aktif tugas.",
- "dailyHelp2": "Jika kamu tidak menyelesaikan tugas harian, kamu kehilangan Kesehatan saat pergantian hari.",
- "dailyHelp3": "Keseharian berubah <%= emphasisStart %>semakin merah<%= emphasisEnd %> jika kamu melewatkannya, dan <%= emphasisStart %>semkain biru<%= emphasisEnd %> saat kamu menyelesaikannya. Semakin merah tugas harian, semakin besar hadiah... dan serangannya kepadamu.",
- "dailyHelp4": "Untuk mengganti akhir hari, buka <%= linkStart %>Pengaturan > Situs<%= linkEnd %> > Kustomisasi Awal Hari.",
+ "dailyHelp1": "Keseharian berulang <%= emphasisStart %>setiap hari<%= emphasisEnd %> saat aktif. Klik pada <%= pencilIcon %> untuk mengganti hari aktif Keseharian.",
+ "dailyHelp2": "Jika kamu tidak menyelesaikan Keseharian yang aktif, kamu kehilangan Nyawa saat pergantian hari.",
+ "dailyHelp3": "Keseharian berubah <%= emphasisStart %>semakin merah<%= emphasisEnd %> jika kamu melewatkannya, dan <%= emphasisStart %>semakin biru<%= emphasisEnd %> saat kamu menyelesaikannya. Semakin merah tugas harian, semakin besar hadiah... dan serangannya kepadamu.",
+ "dailyHelp4": "Untuk mengganti pergantian hari, buka <%= linkStart %>Pengaturan > Situs<%= linkEnd %> > Mengatur Awal Hari.",
"dailyHelp5": "Untuk inspirasi, cek contoh Keseharian!",
- "toDoHelp1": "Daftar tugas berawal dari warna kuning, dan akan berubah merah (menjadi lebih bernilai) jika butuh waktu yang lama untuk menyelesaikannya.",
- "toDoHelp2": "Daftar tugas yang harus dilakukan ini tidak akan menyakitimu! Mereka akan memberimu hadiah Koin Emas dan Pengalaman.",
- "toDoHelp3": "Membuat sebuah tugas menjadi ceklis tugas yang lebih rinci akan membuat tugas itu menjadi tidak menakutkan, dan akan meningkatkan poinmu!",
- "toDoHelp4": "Untuk inspirasi, cek contoh Tugas!",
+ "toDoHelp1": "To-Do berawal dari warna kuning, dan akan berubah merah (menjadi lebih bernilai) jika butuh waktu yang lama untuk menyelesaikannya.",
+ "toDoHelp2": "To-Do tidak akan menyakitimu! Mereka hanya akan memberimu hadiah Koin Emas dan Pengalaman.",
+ "toDoHelp3": "Membagi sebuah To-Do menjadi daftar cek yang lebih rinci akan membuat tugas itu menjadi tidak menakutkan, dan akan meningkatkan poinmu!",
+ "toDoHelp4": "Untuk inspirasi, cek contoh To-Do!",
"rewardHelp1": "Perlengkapan yang kamu beli untuk avatarmu disimpan di dalam <%= linkStart %>Inventori > Perlengkapan<%= linkEnd %>.",
- "rewardHelp2": "Perlengkapan mempengaruhi statusmu (<%= linkStart %>Avatar > Status<%= linkEnd %>).",
+ "rewardHelp2": "Perlengkapan memengaruhi statusmu (<%= linkStart %>Avatar > Status<%= linkEnd %>).",
"rewardHelp3": "Perlengkapan Khusus akan muncul di sini selama Acara Sedunia.",
- "rewardHelp4": "Jangan takut untuk menentukan Hadiah Pribadi! Cekbeberapa contoh disini.",
+ "rewardHelp4": "Jangan takut untuk menentukan Hadiah Pribadi! Cek beberapa contoh disini.",
"clickForHelp": "Klik untuk bantuan",
"taskIdRequired": "\"taskId\" harus merupakan UUID yang valid.",
- "taskAliasAlreadyUsed": "Nama alias tugas telah digunakan oleh tugas lain",
+ "taskAliasAlreadyUsed": "Nama alias tugas telah digunakan pada tugas lain.",
"taskNotFound": "Tugas tidak ditemukan.",
"invalidTaskType": "Tipe tugas harus merupakan salah satu dari \"habit\", \"daily\", \"todo\", \"reward\".",
"cantDeleteChallengeTasks": "Tugas yang termasuk dalam tantangan tidak dapat dihapus.",
"checklistOnlyDailyTodo": "Daftar Cek hanya tersedia di Keseharian dan To-Do",
- "checklistItemNotFound": "Tidak ada item ceklis yang ditemukan dengan id yang diberikan.",
+ "checklistItemNotFound": "Tidak ada item daftar cek yang ditemukan dengan id yang diberikan.",
"itemIdRequired": "\"itemId\" harus merupakan UUID yang valid.",
"tagNotFound": "Tidak ada label item yang ditemukan dengan id yang diberikan.",
"tagIdRequired": "\"tagId\" harus berupa UUID valid yang berhubungan dengan label yang dimiliki pengguna.",
"positionRequired": "\"position\" dibutuhkan dan harus berupa angka.",
- "cantMoveCompletedTodo": "Tidak dapat memindahkan tugas yang telah diselesaikan.",
+ "cantMoveCompletedTodo": "Tidak dapat memindahkan todo yang telah diselesaikan.",
"directionUpDown": "\"direction\" dibutuhkan dan harus berupa 'up' atau 'down'.",
"alreadyTagged": "Tugas telah memiliki label yang sama dengan yang diberikan.",
- "strengthExample": "Berhubungan dengan latihan dan aktivitas",
+ "strengthExample": "Berhubungan dengan olahraga dan aktivitas",
"intelligenceExample": "Berhubungan dengan akademik atau pekerjaan yang menantang otak",
"perceptionExample": "Berhubungan dengan pekerjaan dan tugas finansial",
"constitutionExample": "Berhubungan dengan kesehatan dan interaksi sosial",
@@ -169,10 +169,10 @@
"taskApprovalHasBeenRequested": "Izin telah diminta",
"approvals": "Izin",
"approvalRequired": "Izin diperlukan",
- "repeatZero": "Keseharian tidak membunyai batas waktu",
+ "repeatZero": "Keseharian tidak mempunyai batas waktu",
"repeatType": "Tipe Pengulangan",
"repeatTypeHelpTitle": "Apa jenis pengulangan ini?",
- "repeatTypeHelp": "Pilih \"Harian\" jika kamu mau tugas ini untuk diulang setiap harinya atau setiap hari ketiga, dell/ Pilih \"Mingguan\" jika kamu mau untuk mengulangnya pada hari tertentu dalam seminggu. Jika kamu memilih \"Bulanan\" atau \"Tahunan\", ubah Tanggal Mulai untuk mengatur hari apa pada bulan atau tahun itu tenggat waktu tugas kamu akan berakhir.",
+ "repeatTypeHelp": "Pilih \"Harian\" jika kamu mau tugas ini diulang setiap hari, atau setiap tiga hari, dst. Pilih \"Mingguan\" jika kamu mau untuk mengulangnya pada hari tertentu dalam seminggu. Jika kamu memilih \"Bulanan\" atau \"Tahunan\", ubah Tanggal Mulai untuk mengatur hari apa pada bulan atau tahun itu tugas kamu akan muncul.",
"weekly": "Mingguan",
"monthly": "Bulanan",
"yearly": "Tahunan",
@@ -200,7 +200,8 @@
"yesterDailiesTitle": "Kamu meninggalkan Keseharian ini tidak terselesaikan kemarin! Apakah ada yang kamu mau centang sekarang?",
"yesterDailiesCallToAction": "Mulai Hari Baruku!",
"yesterDailiesOptionTitle": "Pastikan Keseharian ini belum diselesaikan sebelum mendapat damage",
- "yesterDailiesDescription": "Jika pengaturan ini dipilih, Habitica akan bertanya kepadamu jika kamu memang tidak selesai sebelum avatar kamu mendapat damage. Ini dapat melindungimu dari damage yang tidak disengaja.",
- "repeatDayError": "Pastikan bahwa setidaknya ada satu hari dari minggu itu dipilih.",
- "searchTasks": "Cari judul dan deskripsi..."
+ "yesterDailiesDescription": "Jika pengaturan ini dipilih, Habitica akan bertanya kepadamu apakah kamu memang tidak menyelesaikan Keseharian sebelum avatar kamu mendapat damage. Ini dapat melindungimu dari damage yang tidak disengaja.",
+ "repeatDayError": "Pastikan bahwa setidaknya ada satu hari dipilih dari minggu tersebut.",
+ "searchTasks": "Cari judul dan deskripsi...",
+ "sessionOutdated": "Sesi kamu sudah tidak berlaku. Silakan muat ulang laman atau pilih sinkronkan."
}
\ No newline at end of file
diff --git a/website/common/locales/it/backgrounds.json b/website/common/locales/it/backgrounds.json
index 3383f723959..dcf4727814e 100644
--- a/website/common/locales/it/backgrounds.json
+++ b/website/common/locales/it/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Castello di mezzanotte",
"backgroundMidnightCastleNotes": "Passeggiata nei pressi del Castello di mezzanotte",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Vola attraverso un Tornado"
+ "backgroundTornadoNotes": "Vola attraverso un Tornado.",
+ "backgrounds122017": "SERIE 43: Dicembre 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Laboratorio del giocattolaio",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SERIE 44: Gennaio 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Slitta",
+ "backgroundDrivingASleighNotes": "Guida una slitta sui campi ricoperti di neve.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/it/challenge.json b/website/common/locales/it/challenge.json
index 4a4a169c371..5c239982d7a 100644
--- a/website/common/locales/it/challenge.json
+++ b/website/common/locales/it/challenge.json
@@ -1,6 +1,6 @@
{
"challenge": "Sfida",
- "challengeDetails": "Le sfide sono eventi della Community nelle quali i giocatori competono per aggiudicarsi dei premi completando un gruppo di attività correlate.",
+ "challengeDetails": "Le sfide sono eventi della comunità nei quali i giocatori competono per aggiudicarsi dei premi, completando un gruppo di attività correlate.",
"brokenChaLink": "Collegamento ad una sfida mancante",
"brokenTask": "Collegamento ad una sfida mancante: questa attività era parte di una sfida, ma è stata rimossa dalla stessa. Cosa vorresti farne?",
"keepIt": "Tienila",
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "Una o più categorie devono essere selezionate",
"viewProgressOf": "Vedi i progressi di",
- "selectMember": "Seleziona Partecipante"
+ "selectMember": "Seleziona Partecipante",
+ "confirmKeepChallengeTasks": "Vuoi tenere le attività della sfida?",
+ "selectParticipant": "Seleziona un partecipante"
}
\ No newline at end of file
diff --git a/website/common/locales/it/character.json b/website/common/locales/it/character.json
index 491da3c001c..6c93d377399 100644
--- a/website/common/locales/it/character.json
+++ b/website/common/locales/it/character.json
@@ -163,6 +163,7 @@
"dieText": "Hai perso un livello, tutto il tuo oro, e un pezzo casuale dell'equipaggiamento. Risorgi, Habiteer, e provaci ancora! Metti un freno alle cattive abitudini, sii attento al completamento delle Daily, e tieni la morte a debita distanza con una Pozione di Salute se stai vacillando!",
"sureReset": "Sei sicuro/a? Questo resetterà la Classe e i punti allocati del tuo personaggio (ti verranno restituiti per poter essere ri-allocati), e ti costerà 3 gemme.",
"purchaseFor": "Comprare per <%= cost %> Gemme?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Non hai abbastanza Mana.",
"invalidTarget": "Non puoi usare un'abilità su quello.",
"youCast": "Hai usato l'abilità <%= spell %>.",
diff --git a/website/common/locales/it/content.json b/website/common/locales/it/content.json
index d4dfbfbbded..c40d3eb622e 100644
--- a/website/common/locales/it/content.json
+++ b/website/common/locales/it/content.json
@@ -158,9 +158,12 @@
"questEggHippoText": "Ippopotamo",
"questEggHippoMountText": "Ippopotamo",
"questEggHippoAdjective": "un felice",
- "questEggYarnText": "Yarn",
- "questEggYarnMountText": "Flying Carpet",
- "questEggYarnAdjective": "woolen",
+ "questEggYarnText": "Gomitolo",
+ "questEggYarnMountText": "Tappeto Volante",
+ "questEggYarnAdjective": "un lanoso",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Trova una pozione per far schiudere questo uovo, e nascerà <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
"hatchingPotionWhite": "Bianco",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupido",
"hatchingPotionShimmer": "Scintillante",
"hatchingPotionFairy": "Fatato",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Versa questa pozione su un uovo, e nascerà un animale <%= potText(locale) %>.",
"premiumPotionAddlNotes": "Non utilizzabile su uova di animali ottenute dalle missioni.",
"foodMeat": "Carne",
@@ -218,5 +222,6 @@
"foodCandyRed": "Caramella alla Cannella",
"foodSaddleText": "Sella",
"foodSaddleNotes": "Rende immediatamente cavalcabile uno dei tuoi animali.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Dai questo ad un animale e potrà diventare un possente destriero."
}
\ No newline at end of file
diff --git a/website/common/locales/it/contrib.json b/website/common/locales/it/contrib.json
index b73240e0341..f4f63e571ce 100644
--- a/website/common/locales/it/contrib.json
+++ b/website/common/locales/it/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, sei una persona fantastica! Ora sei un sostenitore di grado <%= level %> per aver aiutato Habitica. Scopri",
"contribLink": "che premi hai guadagnato grazie al tuo contributo!",
"contribName": "Contribuente",
- "contribText": "Ha contribuito a migliorare Habitica (codice, design, pixel art, consigli legali, documentazione, ecc). Desideri questa onoreficenza? Maggiori informazioni.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Maggiori informazioni",
"kickstartName": "Sostenitore Kickstarter - Grado <%= key %>$",
"kickstartText": "Ha sostenuto il progetto Kickstarter",
diff --git a/website/common/locales/it/front.json b/website/common/locales/it/front.json
index 1d0102df11f..8932f6c1b7e 100644
--- a/website/common/locales/it/front.json
+++ b/website/common/locales/it/front.json
@@ -1,6 +1,6 @@
{
"FAQ": "FAQ",
- "termsAndAgreement": "Cliccando il bottone qui sotto, affermi di aver letto e approvato i Termini del servizio e la Privacy Policy.",
+ "termsAndAgreement": "Cliccando il bottone qui sotto, affermi di aver letto e approvato i Termini del servizio e l' Informativa sulla Privacy.",
"accept1Terms": "Cliccando il bottone qui sotto, accetto i",
"accept2Terms": "e l'",
"alexandraQuote": "Non ho potuto NON parlare di [Habitica] durante la mia presentazione a Madrid. È uno strumento indispensabile per tutti i freelancer che hanno ancora bisogno di un capo.",
@@ -30,6 +30,7 @@
"companyAbout": "Come funziona",
"companyBlog": "Blog",
"devBlog": "Blog sviluppatori",
+ "companyContribute": "Contribute",
"companyDonate": "Fai una donazione",
"companyPrivacy": "Privacy",
"companyTerms": "Termini di utilizzo",
@@ -252,7 +253,7 @@
"missingNewPassword": "Manca la nuova password.",
"invalidEmailDomain": "Non puoi registrarti usando e-mail con i seguenti domini: <%= domains %>",
"wrongPassword": "Password errata.",
- "incorrectDeletePhrase": "Scrivi DELETE tutto in maiuscolo per cancellare il tuo account.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Indirizzo e-mail non valido.",
"emailTaken": "L'indirizzo email è già stato utilizzato per un altro account.",
"newEmailRequired": "Manca il nuovo indirizzo e-mail.",
diff --git a/website/common/locales/it/gear.json b/website/common/locales/it/gear.json
index a5edb2d72e1..296a4e37500 100644
--- a/website/common/locales/it/gear.json
+++ b/website/common/locales/it/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "Gli occhi del teschio luminoso su questo bastone emanano magia e mistero. Aumenta l'Intelligenza di <%= int %> e la Percezione di <%= per %>. Edizione limitata, autunno 2017.",
"weaponSpecialFall2017HealerText": "Candelabro Raccapricciante",
"weaponSpecialFall2017HealerNotes": "Questa luce disperde la paura e fa sapere agli altri che sei qui per aiutare. Aumenta l'Intelligenza di <%= int %>. Edizione limitata, autunno 2017.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Forcone dei festeggiamenti",
"weaponMystery201411Notes": "Infilza i tuoi nemici o inforca i tuoi cibi preferiti - questo versatile forcone può fare di tutto! Non conferisce alcun bonus. Oggetto per abbonati, novembre 2014.",
"weaponMystery201502Text": "Scintillante Scettro Alato dell'Amore e anche della Verità",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Spunta gli zoccoli delle tue cavalcature diligenti per aiutarle a restare in salute mentre ti trasportano verso l'avventura! Aumenta la Forza, l'Intelligenza e la Costituzione ciascuna di <%= attrs %>. Scrigno Incantato, set del Maniscalco (Oggetto 1 di 3). ",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armatura",
"armorCapitalized": "Armatura",
"armorBase0Text": "Vestiti semplici",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "Quale completo da Festa in Maschera sarebbe completo senza delle drammatiche vesti che svolazzano? Aumentano l'Intelligenza di <%= int %>. Edizione limitata, autunno 2017.",
"armorSpecialFall2017HealerText": "Armatura della Casa Infestata",
"armorSpecialFall2017HealerNotes": "Il tuo cuore è una porta aperta. E le tue spalle sono tegole! Aumenta la Costituzione di <%= con %>. Edizione limitata, autunno 2017.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Vesti del Messaggero",
"armorMystery201402Notes": "Lucenti e robuste, queste vesti hanno diverse tasche per trasportare le lettere. Non conferisce alcun bonus. Oggetto per abbonati, febbraio 2014.",
"armorMystery201403Text": "Armatura del Proteggiforeste",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Completo Steampunk",
"armorMystery301404Notes": "Raffinato, a dir poco impeccabile! Non conferisce alcun bonus. Oggetto per abbonati, febbraio 3015.",
"armorMystery301703Text": "Vestito da Pavone Steampunk",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "elmo",
"headgearCapitalized": "Copricapo",
"headBase0Text": "Nessun elmo",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "Quando compari con questo cappello piumato, lascerai tutti a domandarsi l'identità di quel magico sconosciuto nella stanza! Aumenta la Percezione di <%= per %>. Edizione limitata, autunno 2017.",
"headSpecialFall2017HealerText": "Elmo della Casa Infestata",
"headSpecialFall2017HealerNotes": "Invita spiriti spaventosi e creature amichevoli a cercare i tuoi poteri da guaritore in questo elmo! Aumenta l'Intelligenza di <%= int %>. Edizione limitata, autunno 2017.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Elmo del Guerriero Arcobaleno",
"headSpecialGaymerxNotes": "Per celebrare il GaymerX, questo speciale elmo è decorato con un raggiante e colorato tema arcobaleno! Il GaymerX è un evento dedicato al gaming e alla comunità LGBTQ, ed è aperto a tutti.",
"headMystery201402Text": "Elmo Alato",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Hai bisogno di qualche mano in più per le tue attività? Questo gelatinoso elmo traslucido ha un bel po' di tentacoli che possono aiutarti! Non conferisce alcun bonus. Oggetto per abbonati, luglio 2017.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Cilindro Elegante",
"headMystery301404Notes": "Un cilindro per i più fini gentiluomini! Oggetto per abbonati, gennaio 3015. Non conferisce alcun bonus.",
"headMystery301405Text": "Cilindro Base",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "Questo potente elmo di acciaio ti aiuterà a vincere la lotta per essere sano, felice e produttivo! Aumenta la Percezione di <%= per %>. Scrigno Incantato: Set Anti-Temporeggiamento (Oggetto 1 di 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "oggetto mano secondaria",
"offhandCapitalized": "Oggetto mano secondaria",
"shieldBase0Text": "Nessun oggetto mano secondaria",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "Questo scudo-caramella ha dei notevoli poteri protettivi, quindi non tentare di sgranocchiarlo! Aumenta la Costituzione di <%= con %>. Edizione limitata, autunno 2017.",
"shieldSpecialFall2017HealerText": "Sfera Infestata",
"shieldSpecialFall2017HealerNotes": "Questa sfera di tanto in tanto strilla. Siamo spiacenti, non siamo sicuri del perché. Ma di certo sembra alla moda! Aumenta la Costituzione di <%= con %>. Edizione limitata, autunno 2017.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Risoluzione dell'Assassino",
"shieldMystery201601Notes": "Questa lama può essere usata per parare ogni distrazione. Non conferisce alcun bonus. Oggetto per abbonati, gennaio 2016.",
"shieldMystery201701Text": "Scudo ferma-tempo",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Questo mantello ha delle tasche segrete per nascondere tutto l'Oro che rubi alle tue Attività. Non conferisce alcun beneficio. Oggetto per abbonati, giugno 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "accessorio da testa",
"headAccessoryCapitalized": "Accessorio da testa",
"accessories": "Accessori",
diff --git a/website/common/locales/it/generic.json b/website/common/locales/it/generic.json
index ac281ddf066..389bc691ae9 100644
--- a/website/common/locales/it/generic.json
+++ b/website/common/locales/it/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Eroe di Dilatoria",
"achievementDilatoryText": "Ha contribuito alla sconfitta del Drago Terrore di Dilatoria durante l'evento Summer Splash 2014!",
"costumeContest": "Costume da Concorrente",
- "costumeContestText": "Ha partecipato alla gara in costume di Habitoween. Puoi trovare alcune foto sul blog di Habitica!",
- "costumeContestTextPlural": "Ha partecipato a <%= count %> gare in costume di Habitoween. Puoi guardare cos'hanno fatto i partecipanti sul blog di Habitica!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Membro dal:",
"lastLoggedIn": "- Ultimo accesso:",
"notPorted": "Questa funzionalità non è ancora stata trasposta dal sito originale.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Tema di Airu",
"audioTheme_beatscribeNesTheme": "Tema NES di Beatscribe",
"audioTheme_arashiTheme": "Tema di Arashi",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Fai una domanda",
"reportBug": "Segnala un bug",
"HabiticaWiki": "La wiki di Habitica",
diff --git a/website/common/locales/it/groups.json b/website/common/locales/it/groups.json
index 94833cc8697..f07d0a22d1f 100644
--- a/website/common/locales/it/groups.json
+++ b/website/common/locales/it/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Messaggio opzionale",
"yesRemove": "Sì, rimuovili",
"foreverAlone": "Non puoi mettere 'mi piace' ai tuoi stessi messaggi. Non essere quel tipo di persona.",
- "sortLevel": "Ordina per livello",
- "sortRandom": "Ordina casualmente",
- "sortPets": "Ordina per numero di animali",
- "sortName": "Ordina per nome avatar",
- "sortBackgrounds": "Ordina per sfondo",
- "sortHabitrpgJoined": "Ordina per data di registrazione ad Habitica",
- "sortHabitrpgLastLoggedIn": "Ordine per data dell'ultimo accesso",
- "ascendingSort": "Ordine crescente",
- "descendingSort": "Ordine decrescente",
+ "sortDateJoinedAsc": "Iscrizione meno recente",
+ "sortDateJoinedDesc": "Iscrizione più recente",
+ "sortLoginAsc": "Accesso meno recente",
+ "sortLoginDesc": "Accesso più recente",
+ "sortLevelAsc": "Livello più basso",
+ "sortLevelDesc": "Livello più alto",
+ "sortNameAsc": "Nome (A - Z)",
+ "sortNameDesc": "Nome (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Creare una Gilda per 4 Gemme?",
"leaveGroupCha": "Abbandona la sfida e...",
"confirm": "Conferma",
@@ -207,7 +208,7 @@
"groupTypesRequired": "È necessario fornire un \"tipo\" stringa di richiesta valido.",
"questLeaderCannotLeaveGroup": "Non puoi lasciare la squadra quando hai iniziato una missione. Devi interrompere prima la missione",
"cannotLeaveWhileActiveQuest": "Non puoi lasciare la squadra durante una missione. Per favore prima abbandona la missione.",
- "onlyLeaderCanRemoveMember": "Solo il leader del gruppo può rimuovere un membro",
+ "onlyLeaderCanRemoveMember": "Solo il leader del gruppo può rimuovere un membro!",
"cannotRemoveCurrentLeader": "Non puoi rimuovere il leader del gruppo. Devi prima nominare un nuovo leader.",
"memberCannotRemoveYourself": "Non puoi rimuovere te stesso!",
"groupMemberNotFound": "Utente non trovato tra i membri del gruppo.",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Non autorizzato a rimuovere questo messaggio!",
"onlyGroupLeaderCanEditTasks": "Non autorizzato a modificare i compiti!",
"onlyGroupTasksCanBeAssigned": "Solo le attività del gruppo possono essere assegnate",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "I tuoi privilegi legati alle chat sono stati revocati.",
"newChatMessagePlainNotification": "Nuovo messaggio in <%= groupName %> da <%= authorName %>. Clicca qui per aprire la pagina della chat!",
"newChatMessageTitle": "Nuovo messaggio in <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Extra Divertenti",
"enterprisePlansButton": "Domanda riguardo ai Piani per aziende",
"enterprisePlansDescription": "Cerchi una soluzione più ampia con esigenze personalizzate? Prova a vedere se i nostri piani enterprise fanno al caso tuo.",
- "enterprisePlansEmailSubject": "Domande riguardo ai Piani per aziende",
"familyPlansButton": "Iscriviti alla Mailing List per i Piani Famigliari",
"familyPlansDescription": "Vuoi una soluzione più comoda per gestire la tua famiglia? I Piani Famigliari arriveranno presto!",
"createAGroup": "Crea un gruppo",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Stai per unirti ad un gruppo con un piano per gruppi disdetto. NON riceverai un abbonamento gratuito.",
"cannotChangeLeaderWithActiveGroupPlan": "Non puoi cambiare il leader quando il gruppo ha un piano attivo.",
"leaderCannotLeaveGroupWithActiveGroup": "Il leader non può lasciare il gruppo quando esso ha un piano attivo.",
- "youHaveGroupPlan": "Hai un abbonamento gratuito perchè sei membro di un gruppo che ha un Piano per Gruppi. L'abbonamento gratuito terminerà quando non sarai più nel gruppo che ha un piano per gruppi. Se hai dei mesi di abbonamento non ancora utlizzati, essi verranno usati al termine del piano per gruppi.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancella il piano per gruppi",
"confirmCancelGroupPlan": "Vuoi davvero cancellare il piano per gruppi e privare tutti i membri dei suoi benefici, inclusi i loro abbonamenti gratuiti?",
"canceledGroupPlan": "Piano per gruppi disdetto",
@@ -324,11 +335,11 @@
"groupPolicyCannotGetGems": "La politica di uno dei gruppi a cui appartieni impedisce ai propri membri di ottenere gemme.",
"viewParty": "Visualizza Squadra",
"newGuildPlaceholder": "Inserisci il nome della tua gilda.",
- "guildMembers": "Membri gilda.",
+ "guildMembers": "Membri gilda",
"guildBank": "Banca Gilda",
"chatPlaceholder": "Scrivi qui il tuo messaggio ai membri della Gilda.",
"partyChatPlaceholder": "Scrivi qui il tuo messaggio ai membri della Squadra.",
- "fetchRecentMessages": "Mostra Messaggi Recenti.",
+ "fetchRecentMessages": "Mostra messaggi recenti",
"like": "Mi piace",
"liked": "Ti piace",
"joinGuild": "Unisciti alla Gilda",
@@ -350,7 +361,7 @@
"privacySettings": "Impostazioni privacy",
"onlyLeaderCreatesChallenges": "Solo il Leader può creare delle Sfide",
"privateGuild": "Gilda privata",
- "charactersRemaining": "<%= characters %> characters remaining",
+ "charactersRemaining": "<%= characters %> caratteri rimasti",
"guildSummary": "Riassunto",
"guildSummaryPlaceholder": "Scrivi una breve traduzione per pubblicizzare la tua Gilda con gli altri abitanti di Habitica. Qual è l'obbiettivo principale della tua Gilda e perché le persone dovrebbero aggiungersi? Prova a inserire parole chiavi utili nella descrizione facendo in modo che gli abitanti di Habitica possano trovarla facilmente quando fanno una ricerca!",
"groupDescription": "Descrizione",
@@ -362,7 +373,7 @@
"noGuildsParagraph1": "Guilds are social groups created by other players that can offer you support, accountability, and encouraging chat.",
"noGuildsParagraph2": "Click the Discover tab to see recommended Guilds based on your interests, browse Habitica's public Guilds, or create your own Guild.",
"privateDescription": "A private Guild will not be displayed in Habitica's Guild directory. New members can be added by invitation only.",
- "removeInvite": "Remove Invitation",
+ "removeInvite": "Rimuovi invito",
"removeMember": "Rimuovi membro",
"sendMessage": "Invia messaggio",
"removeManager2": "Rimuivi Amministratore",
@@ -374,7 +385,7 @@
"playInPartyTitle": "Play Habitica in a Party!",
"playInPartyDescription": "Take on amazing quests with friends or on your own. Battle monsters, create Challenges, and help yourself stay accountable through Parties.",
"startYourOwnPartyTitle": "Crea la tua Squadra",
- "startYourOwnPartyDescription": "Battle monsters solo or invite as many of your friends as you'd like!",
+ "startYourOwnPartyDescription": "Combatti i mostri per conto tuo o invita tutti gli amici che vuoi!",
"shartUserId": "Condividi ID Utente",
"wantToJoinPartyTitle": "Vuoi unirti ad una squadra?",
"wantToJoinPartyDescription": "Give your User ID to a friend who already has a Party, or head to the Party Wanted Guild to meet potential comrades!",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Vuoi partecipare?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/it/limited.json b/website/common/locales/it/limited.json
index ac75ede3df9..3bbe64f0c85 100644
--- a/website/common/locales/it/limited.json
+++ b/website/common/locales/it/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Mago Mascherato (Mago)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Dolcetto o scasseggio (Assassino)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Disponibile fino al <%= date(locale) %>.",
"dateEndApril": "19 aprile",
"dateEndMay": "17 maggio",
@@ -119,6 +123,10 @@
"dateEndJuly": "29 luglio",
"dateEndAugust": "31 agosto",
"dateEndOctober": "31 ottobre",
- "dateEndNovember": "November 30",
- "discountBundle": "pacchetto"
+ "dateEndNovember": "30 novembre",
+ "dateEndJanuary": "31 gennaio",
+ "discountBundle": "pacchetto",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/it/loadingscreentips.json b/website/common/locales/it/loadingscreentips.json
index 02ea37d1724..b30444cc5a0 100644
--- a/website/common/locales/it/loadingscreentips.json
+++ b/website/common/locales/it/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Suggerimento #<%= tipNumber %>",
"tip1": "Controlla le tue attività ovunque tu sia, con le applicazioni di Habitica per cellulare.",
- "tip2": "Raggiungi il livello 100 per sbloccare la Sfera della Rinascita gratuitamente e cominciare una nuova avventura!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Usa gli emoji per riconoscere velocemente le tue attività.",
"tip4": "Inserisci il segno # prima del titolo di un'attività per renderla davvero grande!",
- "tip5": "È meglio usare le abilità di mattina, così durano di più.",
- "tip6": "Ricontrolla le tue attività di tanto in tanto, per assicurarti che siano aggiornate!",
- "tip7": "Alcuni sfondi si fondono perfettamente se sono utilizzati da due o più membri della squadra. Per esempio: \"Lago di montagna\", \"Pagode\" e \"Colline ondulanti\".",
- "tip8": "Manda un messaggio privato a qualcuno cliccando sulla busta vicino al suo nome nella chat!",
- "tip9": "Visita la Gilda \"Guild Leaders & Challenge Creators\" per avere consigli su come avviare una Gilda.",
+ "tip5": "È meglio usare di mattina le abilità che applicano dei bonus, così durano di più.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Manda un messaggio privato a qualcuno cliccando sul suo nome nella chat e sulla busta nella parte alta del suo profilo!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Puoi vincere delle gemme partecipando alle Sfide. Ce ne sono di nuove ogni giorno!",
- "tip11": "Se ti piace vestire il tuo avatar, fai un salto nella gilda \"Costume Carnival\".",
- "tip12": "Unisciti alla gilda “Challenge... Accepted” per sfide casuali rinnovate regolarmente.",
- "tip13": "Avere più di quattro compagni di Squadra aumenta la responsabilità!",
+ "tip11": "Avere più di quattro compagni di Squadra aumenta la responsabilità!",
+ "tip12": "Aggiungi una checklist alle tue To-Do per moltiplicare la ricompensa!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Puoi aggiungere delle intestazioni (o delle citazioni per ispirarti) alla tua lista come delle Abitudini senza (+/-).",
- "tip15": "Aggiungi una checklist alle tue To-Do per aumentarne la ricompensa!",
- "tip16": "Dai un'occhiata alla scheda \"Dati utente\" per informazioni dettagliate sui tuoi progressi.",
- "tip17": "Le etichette possono rendere un'intricata lista di attività molto più gestibile!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Le abitudini solo positive o solo negative \"sbiadiscono\" gradualmente e tornano gialle.",
- "tip19": "Aumenta la tua Intelligenza per ottenere più esperienza quando completi un'attività.",
+ "tip19": "Aumenta il tuo attributo Intelligenza per ottenere più esperienza quando completi un'attività.",
"tip20": "Aumenta la tua Percezione per ottenere più drop e oro.",
"tip21": "Aumenta la tua Forza per infliggere più danni ai boss o ottenere colpi critici.",
"tip22": "Aumenta la tua Costituzione per ridurre i danni subiti dalle Daily incomplete.",
- "tip23": "Clicca sull'icona col grafico a barre che trovi sulle tue attività per vedere un grafico con i tuoi progressi.",
- "tip24": "Habitica è open source! Chiedi nella gilda \"Aspiring Legends\" se vuoi contribuire.",
+ "tip23": "Raggiungi il livello 100 per sbloccare la Sfera della Rinascita gratuitamente e cominciare una nuova avventura!",
+ "tip24": "Hai una domanda? Vieni a chiedere nella gilda Habitica Help!",
"tip25": "I quattro Gran Galà stagionali iniziano nei pressi dei solstizi e degli equinozi.",
- "tip26": "Una piccola freccia a sinistra del livello di qualcuno indica che ha dei bonus attivi.",
+ "tip26": "Una piccola freccia a destra del nome di qualcuno indica che ha dei bonus attivi.",
"tip27": "Hai fatto una Daily ieri ma hai dimenticato di metterci la spunta? Non preoccuparti! Grazie a una nuova funzione potrai segnare cosa hai fatto ieri prima di cominciare la tua nuova giornata.",
- "tip28": "Imposta un \"inizio giorno personalizzato\" nella pagina Impostazioni > Sito per decidere quando la tua giornata ricomincia.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Completa tutte le tue Daily per ottenere un bonus Giorno Perfetto che aumenta le tue statistiche!",
"tip30": "Puoi invitare persone nelle Gilde, non solo nelle Squadre.",
"tip31": "Dai un'occhiata alle liste pre-compilate della gilda \"Library of Tasks and Challenges\" per delle attività di esempio.",
- "tip32": "Gran parte della programmazione, della grafica e dei testi di Habitica sono realizzati da volontari! Chiunque può dare una mano.",
- "tip33": "Controlla la gilda \"The Bulletin Board\" per le novità su gilde, sfide ed altri eventi creati dagli utenti - puoi anche annunciare i tuoi!"
+ "tip32": "Gran parte della programmazione, della grafica e dei testi di Habitica sono realizzati da volontari! Vai nella gilda Aspiring Legends se vuoi dare una mano.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Ogni tanto ricontrolla le tue attività per assicurarti che siano aggiornate!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/it/messages.json b/website/common/locales/it/messages.json
index c2714495973..87dba39acf5 100644
--- a/website/common/locales/it/messages.json
+++ b/website/common/locales/it/messages.json
@@ -29,11 +29,12 @@
"messageFoundQuest": "Hai trovato la missione \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Hai già acquistato questo oggetto in passato, ma al momento non lo possiedi. Puoi comprarlo di nuovo nella colonna delle Ricompense, nella pagina delle attività.",
"messageAlreadyOwnGear": "Possiedi già questo oggetto. Equipaggialo andando in Inventario > Equipaggiamento.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Hai già la salute massima.",
"messageHealthAlreadyMin": "Oh no! Hai già finito la tua Salute, quindi è troppo tardi comprare una Pozione della Salute, ma non preoccuparti - puoi resuscitare!",
"armoireEquipment": "<%= image %> Hai trovato dell'equipaggiamento raro nello Scrigno: <%= dropText %>! Fantastico!",
"armoireFood": "<%= image %> Frughi nello Scrigno e trovi <%= dropArticle %><%= dropText %>. Cosa ci fa qui dentro?",
- "armoireExp": "Fai a botte con lo Scrigno e ottieni Esperienza. Prendi questo!",
+ "armoireExp": "Fai a botte con lo Scrigno e ottieni dell'Esperienza. Prendi questo!",
"messageInsufficientGems": "Non hai abbastanza gemme!",
"messageAuthPasswordMustMatch": ":password e :confirmPassword non corrispondono",
"messageAuthCredentialsRequired": "sono necessari :username, :email, :password, :confirmPassword",
@@ -52,10 +53,11 @@
"messageGroupChatFlagAlreadyReported": "Hai già segnalato questo messaggio.",
"messageGroupChatNotFound": "Messaggio non trovato!",
"messageGroupChatAdminClearFlagCount": "Solo un amministratore può azzerare il conteggio flag!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ops, sembra che tu stia pubblicando troppi messaggi! Per favore, aspetta un minuto e poi prova di nuovo. La chat della Taverna contiene solo 200 messaggi contemporaneamente, quindi Habitica incoraggia l'uso di messaggi più lunghi e ragionati e di risposte unificate in un unico messaggio. Non vediamo l'ora di sentire quello che devi dire. :)",
"messageUserOperationProtected": "Il percorso `<%= operation %>` non è stato salvato, perchè è un percorso protetto.",
"messageUserOperationNotFound": "Operazione <%= operation %> non trovata",
"messageNotificationNotFound": "Notifica non trovata.",
"notificationsRequired": "Sono necessari gli id delle notifiche.",
- "beginningOfConversation": "Stai iniziando una conversazione con <%= userName %>. Ricorda di scrivere con gentilezza e rispetto, e segui le Linee guida della community!"
+ "beginningOfConversation": "Stai iniziando una conversazione con <%= userName %>. Ricorda di scrivere con gentilezza e rispetto, seguendo le Linee guida della community!"
}
\ No newline at end of file
diff --git a/website/common/locales/it/npc.json b/website/common/locales/it/npc.json
index e20c92dc069..c021503b409 100644
--- a/website/common/locales/it/npc.json
+++ b/website/common/locales/it/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Gemma",
"typeNotSellable": "L'oggetto non è in vendita. deve essere uno dei seguenti <%= acceptedTypes %>",
"userItemsKeyNotFound": "Non trovata la chiave per user.items <%= type %>",
- "userItemsNotEnough": "Non sono stati trovati abbastanza oggetti per user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "È richiesta la stringa guida",
"unlocked": "Sono disponibili nuovi oggetti",
"alreadyUnlocked": "Set completo già sbloccato.",
diff --git a/website/common/locales/it/pets.json b/website/common/locales/it/pets.json
index e0305e79aaf..4da2748e462 100644
--- a/website/common/locales/it/pets.json
+++ b/website/common/locales/it/pets.json
@@ -41,7 +41,7 @@
"hatchingPotion": "pozione di schiusura",
"noHatchingPotions": "Non hai nessuna pozione di schiusura.",
"inventoryText": "Clicca su un uovo per vedere le pozioni utilizzabili (che verranno evidenziate in verde) e scegline una con cui far comparire il tuo animale. Se nessuna pozione viene evidenziata, clicca di nuovo sull'uovo per deselezionarlo, e questa volta clicca prima su una pozione, in modo da evidenziare le uova su cui poterla utilizzare. Se lo desideri, puoi anche vendere gli oggetti che ti avanzano ad Alexander il Mercante.",
- "haveHatchablePet": "Hai una Pozione <%= potion %> e un uovo di <%= egg %> per far nascere questo animale! Clicca l'orma per far schiudere l'uovo.",
+ "haveHatchablePet": "Hai una Pozione <%= potion %> e un uovo di <%= egg %> per far nascere questo animale! Clicca sull'orma per far schiudere l'uovo.",
"quickInventory": "Inventario veloce",
"foodText": "cibo",
"food": "Cibo e Selle",
@@ -75,7 +75,7 @@
"hatchAPot": "Vuoi far nascere <%= potion %><%= egg %>?",
"hatchedPet": "È nato un <%= egg %> <%= potion %>!",
"hatchedPetGeneric": "Hai fatto nascere un nuovo animale!",
- "hatchedPetHowToUse": "Visit the [Stable](/inventory/stable) to feed and equip your newest pet!",
+ "hatchedPetHowToUse": "Vai alla [Scuderia](/inventory/stable) per nutrire ed equipaggiare il tuo nuovo animale!",
"displayNow": "Mostra ora",
"displayLater": "Mostra più tardi",
"petNotOwned": "Non possiedi questo animale.",
@@ -110,7 +110,7 @@
"welcomeStable": "Benvenuto nella Scuderia!",
"welcomeStableText": "Io sono Matt, il Domatore di Bestie. Iniziando dal livello 3 puoi far nascere degli Animali dalle Uova utilizzando le Pozioni che trovi! Quando fai schiudere un Animale dal tuo Inventario, apparirà qui! Clicca sull'immagine dell'Animale per aggiungerlo al tuo avatar. Nutrili qui con il Civo che trovi dopo il livello 3 e cresceranno in potenti Cavalcature.",
"petLikeToEat": "Cosa piace mangiare al mio animale?",
- "petLikeToEatText": "Pets will grow no matter what you feed them, but they'll grow faster if you feed them the one food that they like best. Experiment to find out the pattern, or see the answers here:
http://habitica.wikia.com/wiki/Food_Preferences",
+ "petLikeToEatText": "Gli animali cresceranno indipendentemente da cosa gli dai da mangiare, ma cresceranno più velocemente mangiando il loro cibo preferito. Sperimenta per trovare un pattern, oppure leggi la risposta qui:
http://habitica.wikia.com/wiki/Food_Preferences",
"filterByStandard": "Base",
"filterByMagicPotion": "Pozione Magica",
"filterByQuest": "Missione",
@@ -121,7 +121,7 @@
"foodTitle": "Cibo",
"dragThisFood": "Trascina questo <%= foodName %> su un Animale e guardalo crescere!",
"clickOnPetToFeed": "Clicca su un Animale per dargli <%= foodName %> e guardalo crescere!",
- "dragThisPotion": "Trascina questo <%= potionName %> su un uovo e fai nascere un nuovo animale!",
+ "dragThisPotion": "Trascina questo <%= potionName %> su un Uovo e fai nascere un nuovo animale!",
"clickOnEggToHatch": "Clicca su un Uovo per usare la tua Pozione <%= potionName %> e far nascere un nuovo animale!",
- "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
+ "hatchDialogText": "Versa la tua Pozione <%= potionName %> sul tuo uovo di <%= eggName %>, e nascerà <%= petName %>."
}
\ No newline at end of file
diff --git a/website/common/locales/it/quests.json b/website/common/locales/it/quests.json
index 38c8a6ea0ea..657cab48162 100644
--- a/website/common/locales/it/quests.json
+++ b/website/common/locales/it/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> oggetto/i missione trovati",
"questDamage": "+ <%= val %> danno al boss",
"begin": "Inizia",
- "bossHP": "Salute del Boss",
+ "bossHP": "Boss HP",
"bossStrength": "Forza del Boss",
"rage": "Furia",
"collect": "Raccogli",
@@ -60,9 +60,9 @@
"questOwner": "Capomissione",
"questTaskDamage": "+<%= damage %> danno in sospeso al boss",
"questTaskCollection": "<%= items %> oggetti raccolti oggi",
- "questOwnerNotInPendingQuest": "Il Capomissione ha abbandonato la missione e non può più cominciarla. Suggeriamo anche a te di abbandonarla ora. Il Capomissione rimarrà in possesso della Pergamena.",
+ "questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "Il Capomissione ha abbandonato la missione. Se necessario puoi annullare la missione. Puoi anche lasciare che continui e tutti i restanti partecipanti riceveranno le ricompense della missione una volta completata.",
- "questOwnerNotInPendingQuestParty": "Il Capomissione ha lasciato la squadra e non può più cominciare la missione. Ti suggeriamo di annullarla subito. La Pergamena verrà restituita al Capomissione.",
+ "questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "Il Capomissione ha lasciato la squadra. Se necessario puoi annullare la missione, ma puoi anche lasciare che continui e tutti i restanti partecipanti riceveranno le ricompense della missione una volta completata.",
"questParticipants": "Partecipanti",
"scrolls": "Pergamene",
@@ -78,7 +78,8 @@
"mustLvlQuest": "Devi essere almeno di livello <%= level %> per comprare questa missione!",
"mustInviteFriend": "Per ottenere questa missione, invita un amico nella tua squadra. Invitare qualcuno ora?",
"unlockByQuesting": "Per sbloccare questa missione, completa <%= title %>.",
- "sureCancel": "Vuoi davvero annullare questa missione? Tutti gli inviti accettati andranno perduti. Il Capomissione resterà in possesso della Pergamena.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
+ "sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Vuoi davvero annullare questa missione? Questo causerà l'annullamento della missione anche per tutti i membri della tua squadra ed ogni progresso andrà perduto. La Pergamena verrà restituita al Capomissione.",
"doubleSureAbort": "Sei veramente sicuro? Assicurati che non ti odieranno per sempre!",
"questWarning": "Se altri giocatori si uniscono alla squadra prima che la missione abbia inizio, anche loro riceveranno un invito. Tuttavia, una volta che la missione sarà iniziata, nessun altro membro della squadra potrà unirsi ai partecipanti.",
diff --git a/website/common/locales/it/questscontent.json b/website/common/locales/it/questscontent.json
index ab056ee02c2..09bfcddca33 100644
--- a/website/common/locales/it/questscontent.json
+++ b/website/common/locales/it/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Armadillo (uovo)",
"questArmadilloUnlockText": "Sblocca l'acquisto delle uova di armadillo nel Mercato",
"questCowText": "La Mucca Muutante",
- "questCowNotes": "È stato un lungo, caldo giorno alle Fattorie Allenamento, e non c'è niente che tu voglia di più di un lungo sorso d'acqua e un po' di riposo. Mentre sei fermo in piedi a sognare ad occhi aperti, @Soloana urla all'improvviso, \"Correte! La mucca premiata è muutata!\"
@eevachu deglutisce nervosamente. \"Deve essere stata infettata dalle nostre cattive abitudini.\"
\"Veloci!\" dice Feralem Tau. \"Dobbiamo fare qualcosa prima che anche le altre mucche muutino.\"
Hai sentito abbastanza. Niente più sogni ad occhi aperti -- è ora di mettere un freno a queste cattive abitudini!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "Mungi le tue buone abitudini fino all'ultima goccia, fino a quando la mucca torna alla sua forma originale. La mucca ti guarda attentamente con i suoi graziosi occhi marroni e spinge verso di te tre uova.
@fuzzytrees ride e ti da le uova, \"Forse è ancora muutata se in queste uova ci sono delle piccole mucche. Ma sono fiducioso che ti atterrai alle tue buone abitudini mentre le farai crescere!\"",
"questCowBoss": "Mucca Muutante",
"questCowDropCowEgg": "Mucca (uovo)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/it/rebirth.json b/website/common/locales/it/rebirth.json
index 04f30e8611d..6e11ed99058 100644
--- a/website/common/locales/it/rebirth.json
+++ b/website/common/locales/it/rebirth.json
@@ -21,7 +21,7 @@
"rebirthOrb": "Ha utilizzato una Sfera della Rinascita per ricominciare dopo aver raggiunto il livello <%= level %>.",
"rebirthOrb100": "Ha utilizzato una Sfera della Rinascita per ricominciare dopo aver raggiunto il livello 100+.",
"rebirthOrbNoLevel": "Ha utilizzato una Sfera della Rinascita per ricominciare da capo.",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
+ "rebirthPop": "Fai ripartire subito il tuo personaggio dal Livello 1 mantenendo medaglie, oggetti collezionabili, equipaggiamento, attività e cronologia delle attività.",
"rebirthName": "Sfera della Rinascita",
"reborn": "Rinascita, livello massimo <%= reLevel %>",
"confirmReborn": "Sei sicuro/a?",
diff --git a/website/common/locales/it/settings.json b/website/common/locales/it/settings.json
index 71ec064c984..d1a03c547c5 100644
--- a/website/common/locales/it/settings.json
+++ b/website/common/locales/it/settings.json
@@ -65,7 +65,7 @@
"resetText1": "ATTENZIONE! Questo resetterà diversi aspetti del tuo account. È altamente sconsigliato, ma qualcuno trova questa opzione utile all'inizio, dopo aver provato il sito per un po' di tempo.",
"resetText2": "Perderai tutti i tuoi livelli, l'oro e i punti esperienza. Tutte le tue attività (eccetto quelle delle sfide) verranno cancellate in modo permanente, insieme alla loro cronologia dei progressi. Perderai inoltre tutto il tuo equipaggiamento, ma potrai recuperare ogni cosa, compresi gli oggetti in edizione limitata e gli Oggetti Misteriosi che già possiedi (alcuni oggetti potrebbero richiedere l'appartenenza ad una determinata classe per essere acquistati). Manterrai la tua classe, i tuoi animali e le cavalcature. Potresti forse preferire la Sfera della Rinascita, un'alternativa molto più sicura che ti permette di tenere le tue attività e il tuo equipaggiamento.",
"deleteLocalAccountText": "Sei sicuro/a? Questo cancellerà per sempre il tuo account, e non potrà mai essere ripristinato! Dovrai registrarti con un nuovo account per usare ancora Habitica. Le Gemme che possiedi e quelle spese non verranno rimborsate. Se sei assolutamente certo/a, digita la tua password nella casella di testo qui sotto.",
- "deleteSocialAccountText": "Sei sicuro/a? Questa azione eliminerà il tuo account per sempre, e non potrà mai più essere ripristinato! Dovrai registrarti nuovamente per usare ancora Habitica. Le Gemme accumulate o spese non saranno rimborsate. Se sei assolutamente certo/a, digita \"DELETE\" nella casella di testo qui sotto.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copia questi valori per utilizzarli in applicazioni di terze parti. Ad ogni modo, pensa alla tua Chiave API come ad una password: tienila segreta. Occasionalmente potrebbe venirti richiesto l'ID Utente, ma non scrivere mai la tua Chiave API dove può essere vista da altre persone, nemmeno su GitHub.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Ti viene regalato un abbonamento",
"giftedSubscriptionInfo": "<%= name %> ti ha regalato un abbonamento di <%= months %> mesi",
"giftedSubscriptionFull": "Ciao <%= username %>, <%= sender %> ti ha inviato <%= monthCount %> mesi di abbonamento!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Ricevuto invito a unirti ad una squadra",
"invitedGuild": "Ricevuto invito da una Gilda",
"importantAnnouncements": "Promemoria per l'accesso, per completare attività e ricevere premi",
diff --git a/website/common/locales/it/spells.json b/website/common/locales/it/spells.json
index 258f24a32f0..dcf8a25f7f3 100644
--- a/website/common/locales/it/spells.json
+++ b/website/common/locales/it/spells.json
@@ -9,7 +9,7 @@
"spellWizardFrostNotes": "Il ghiaccio congela i contatori serie di tutte le tue attività, così non torneranno a zero domani!",
"spellWizardFrostAlreadyCast": "Hai già usato questa abilità oggi. Le tue serie sono congelate e non c'è bisogno di usarla di nuovo.",
"spellWarriorSmashText": "Attacco Brutale",
- "spellWarriorSmashNotes": "You make a task more blue/less red and deal extra damage to Bosses! (Based on: STR)",
+ "spellWarriorSmashNotes": "Rendi un'attività più blu/meno rossa e infliggi danni extra ai Boss! (Dipende da: FOR)",
"spellWarriorDefensiveStanceText": "Posizione Difensiva",
"spellWarriorDefensiveStanceNotes": "Ti prepari all'attacco delle tue attività e guadagni un bonus di Costituzione! (Dipende da: COS senza bonus)",
"spellWarriorValorousPresenceText": "Presenza Valorosa",
diff --git a/website/common/locales/it/subscriber.json b/website/common/locales/it/subscriber.json
index 9acc057fa2f..c34aebcf932 100644
--- a/website/common/locales/it/subscriber.json
+++ b/website/common/locales/it/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Annulla abbonamento",
"cancelSubInfoGoogle": "Vai nella sezione \"Account\" > \"Abbonamenti\" dell'app Google Play Store per annullare il tuo abbonamento, o per vedere la data di termine del tuo abbonamento se lo hai già annullato. Questa schermata non è in grado di mostrarti se il tuo abbonamento è stato annullato.",
"cancelSubInfoApple": "Per favore segui le istruzioni ufficiali di Appleper cancellare il tuo abbonamento o se lo hai già cancellato per vedere la data in cui il tuo abbonamento termina. Questa schermata non può mostrarti se il tuo abbonamento è stato cancellato.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Abbonamento annullato",
"cancelingSubscription": "Annullamento dell'abbonamento",
"adminSub": "Abbonamento per amministratori",
@@ -136,6 +137,7 @@
"mysterySet201709": "Set studente di magia",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Set steampunk standard",
"mysterySet301405": "Set accessori steampunk",
"mysterySet301703": "Set Pavone Steampunk",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Tipo di carta sconosciuto.",
"invalidCoupon": "Codice coupon non valido.",
"couponUsed": "Codice coupon già utilizzato.",
- "noSudoAccess": "Non hai accesso sudo.",
"couponCodeRequired": "Il codice coupon è richiesto.",
"eventRequired": "\"req.params.event\" è richiesto.",
"countRequired": "\"req.query.count\" è richiesto.",
@@ -197,7 +198,7 @@
"subscriptionBenefit3": "Discover more items in Habitica with a doubled daily drop cap.",
"subscriptionBenefit4": "Ogni mese costumi unici e alla moda per il tuo avatar.",
"subscriptionBenefit5": "Ricevi l'esclusivo animale Lepronte Viola Reale!",
- "subscriptionBenefit6": "Earn Mystic Hourglasses for use in the Time Travelers' Shop!",
+ "subscriptionBenefit6": "Ottieni Clessidre Mistiche da usare nel negozio dei Viaggiatori del Tempo!",
"haveCouponCode": "Hai un codice coupon?",
"subscriptionAlreadySubscribedLeadIn": "Grazie per esserti abbonato/a!",
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to User icon > Settings > Subscription.",
diff --git a/website/common/locales/it/tasks.json b/website/common/locales/it/tasks.json
index 47ed71d53ef..24384533e38 100644
--- a/website/common/locales/it/tasks.json
+++ b/website/common/locales/it/tasks.json
@@ -6,7 +6,7 @@
"addsingle": "Aggiungi singola",
"addATask": "Aggiungi una <%= type %>",
"editATask": "Modifica una <%= type %>",
- "createTask": "Crea <%= type %>",
+ "createTask": "Crea una <%= type %>",
"addTaskToUser": "Aggiungi attività",
"scheduled": "Pianificate",
"theseAreYourTasks": "Queste sono le tue <%= taskType %>",
@@ -15,8 +15,8 @@
"newHabit": "Nuova abitudine",
"newHabitBulk": "Nuove abitudini (una per riga)",
"habitsDesc": "Abitudini non hanno una programmazione rigida. Puoi completarle più volte al giorno.",
- "positive": "Positive",
- "negative": "Negative",
+ "positive": "Positiva",
+ "negative": "Negativa",
"yellowred": "Deboli",
"greenblue": "Forti",
"edit": "Modifica",
@@ -62,7 +62,7 @@
"day": "Giorno",
"days": "Giorni",
"restoreStreak": "Ripristina Serie",
- "resetStreak": "Reset Seire",
+ "resetStreak": "Reset serie",
"todo": "Cosa Da Fare",
"todos": "Cose Da Fare",
"newTodo": "Nuova Cosa Da Fare",
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Conferma che questa Daily non era stata completata prima di applicare il danno",
"yesterDailiesDescription": "Se questa opzione è attiva, Habitica ti chiederà se era tua intenzione lasciare delle Daily incomplete prima di calcolare ed applicare il danno al tuo avatar. Questa funzione può proteggerti da danni involontari.",
"repeatDayError": "Assicurati di aver selezionato almeno un giorno della settimana.",
- "searchTasks": "Cerca titoli e descrizioni..."
+ "searchTasks": "Cerca titoli e descrizioni...",
+ "sessionOutdated": "La tua sessione è obsoleta. Ricarica la pagina o sincronizza."
}
\ No newline at end of file
diff --git a/website/common/locales/ja/backgrounds.json b/website/common/locales/ja/backgrounds.json
index 7843f5bfd15..9e2a9c4eaca 100644
--- a/website/common/locales/ja/backgrounds.json
+++ b/website/common/locales/ja/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "真夜中のお城",
"backgroundMidnightCastleNotes": "真夜中のお城を散策しましょう。",
"backgroundTornadoText": "竜巻",
- "backgroundTornadoNotes": "竜巻の中を飛びましょう。"
+ "backgroundTornadoNotes": "竜巻の中を飛びましょう。",
+ "backgrounds122017": "セット43:2017年12月リリース",
+ "backgroundCrosscountrySkiTrailText": "クロスカントリースキーコース",
+ "backgroundCrosscountrySkiTrailNotes": "クロスカントリースキーのコースを滑走しましょう。",
+ "backgroundStarryWinterNightText": "冬の星空",
+ "backgroundStarryWinterNightNotes": "冬の星空を見上げましょう。",
+ "backgroundToymakersWorkshopText": "おもちゃ工房",
+ "backgroundToymakersWorkshopNotes": "おもちゃ工房の驚異を満喫しましょう。",
+ "backgrounds012018": "セット44: 2018年1月リリース",
+ "backgroundAuroraText": "オーロラ",
+ "backgroundAuroraNotes": "冬に輝くオーロラを堪能しましょう。",
+ "backgroundDrivingASleighText": "そり",
+ "backgroundDrivingASleighNotes": "雪原をそりで走りましょう。",
+ "backgroundFlyingOverIcySteppesText": "氷の大平原",
+ "backgroundFlyingOverIcySteppesNotes": "氷の大平原上空を飛びましょう。"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/challenge.json b/website/common/locales/ja/challenge.json
index 9d078f48fd8..5d9888b97fa 100644
--- a/website/common/locales/ja/challenge.json
+++ b/website/common/locales/ja/challenge.json
@@ -29,7 +29,7 @@
"either": "どちらも",
"createChallenge": "チャレンジを作成する",
"createChallengeAddTasks": "チャレンジのタスクを追加",
- "createChallengeCloneTasks": "Clone Challenge Tasks",
+ "createChallengeCloneTasks": "チャレンジのタスクをコピー",
"addTaskToChallenge": "タスクを追加",
"discard": "処分する",
"challengeTitle": "チャレンジのタイトル",
@@ -101,31 +101,33 @@
"addTask": "タスクを追加",
"editChallenge": "チャレンジを編集",
"challengeDescription": "チャレンジの説明",
- "selectChallengeWinnersDescription": "Select winners from the Challenge participants",
- "awardWinners": "Award Winners",
- "doYouWantedToDeleteChallenge": "Do you want to delete this Challenge?",
+ "selectChallengeWinnersDescription": "チャレンジ参加者の中から優勝者を選ぶ",
+ "awardWinners": "賞品を贈る",
+ "doYouWantedToDeleteChallenge": "このチャレンジを削除しますか?",
"deleteChallenge": "チャレンジを削除する",
"challengeNamePlaceholder": "チャレンジの名前は何ですか?",
"challengeSummary": "概要",
- "challengeSummaryPlaceholder": "Write a short description advertising your Challenge to other Habiticans. What is the main purpose of your Challenge and why should people join it? Try to include useful keywords in the description so that Habiticans can easily find it when they search!",
- "challengeDescriptionPlaceholder": "Use this section to go into more detail about everything that Challenge participants should know about your Challenge.",
- "challengeGuild": "Add to",
- "challengeMinimum": "Minimum 1 Gem for public Challenges (helps prevent spam, it really does).",
+ "challengeSummaryPlaceholder": "他のHabiticanにあなたのチャレンジを宣伝する簡単な紹介文を書きましょう。何がチャレンジの主な目的で、なぜ参加する必要があるのでしょうか? Habiticanたちが探すときに見つけやすいように、有用なキーワードを入れてみましょう!",
+ "challengeDescriptionPlaceholder": "この欄は、参加者が知っておくべき全てのことについて、より詳細に説明するのに使いましょう。",
+ "challengeGuild": "チャレンジを登録する場所",
+ "challengeMinimum": "公共のチャレンジは最小でジェムが1個必要です(スパムを減らすために助かる)。",
"participantsTitle": "参加者",
- "shortName": "Short Name",
- "shortNamePlaceholder": "What short tag should be used to identify your Challenge?",
- "updateChallenge": "Update Challenge",
- "haveNoChallenges": "This group has no Challenges",
+ "shortName": "短縮名",
+ "shortNamePlaceholder": "あなたのチャレンジを特定するのにどのような短いタグを使うべきですか?",
+ "updateChallenge": "チャレンジを更新",
+ "haveNoChallenges": "チャレンジはありません。",
"loadMore": "もっと読み込む",
- "exportChallengeCsv": "Export Challenge",
- "editingChallenge": "Editing Challenge",
- "nameRequired": "Name is required",
+ "exportChallengeCsv": "エクスポート",
+ "editingChallenge": "チャレンジを編集",
+ "nameRequired": "チャレンジ名が必要です",
"tagTooShort": "タグの名称が短すぎます",
- "summaryRequired": "Summary is required",
- "summaryTooLong": "Summary is too long",
- "descriptionRequired": "Description is required",
- "locationRequired": "Location of challenge is required ('Add to')",
+ "summaryRequired": "概要が必要です",
+ "summaryTooLong": "概要が長すぎます",
+ "descriptionRequired": "チャレンジの説明が必要です",
+ "locationRequired": "チャレンジの場所が必要です(「チャレンジを登録する場所」)",
"categoiresRequired": "1つ以上のカテゴリーを選択する必要があります",
- "viewProgressOf": "View Progress Of",
- "selectMember": "Select Member"
+ "viewProgressOf": "進捗を見る",
+ "selectMember": "メンバーを選択",
+ "confirmKeepChallengeTasks": "チャレンジのタスクをそのままにしておきますか?",
+ "selectParticipant": "参加者を選ぶ"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/character.json b/website/common/locales/ja/character.json
index fd961354246..3756214425f 100644
--- a/website/common/locales/ja/character.json
+++ b/website/common/locales/ja/character.json
@@ -70,12 +70,12 @@
"costumeText": "装備中のアイテムより、ほかのアイテムの方が見た目だけがいい場合、「衣装に使う」にチェックを入れてください。身に着けている武装の上に、見た目の衣装としてはおる感じです。",
"useCostume": "衣装を使用する",
"useCostumeInfo1": "「衣装を使用する」をクリックすると、武装による能力値への効果を変えないで、アバターに着せることができます! これは、左側でもっとも効果の高いアイテムを装備して、右側でアバターの見た目をコーディネートできる、ということです。",
- "useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.
Got more questions? Check out the Costume page on the wiki. Find the perfect ensemble? Show it off in the Costume Carnival guild or brag in the Tavern!",
+ "useCostumeInfo2": "一度「衣装に使う」をクリックして、アバターがカワいくなるのを確かめて...心配ありません! 左側で確認できるように、武装はそのまま着けています。次に、カッコよくしましょう! 右側でどんなアイテムを装備していても、能力値は変わらず見た目だけを超イケてる感じにできます。セットをミックスしたり、ペットや山、背景と衣装をコーディネートしたりと、いろんな組み合わせを試してみましょう。\n
質問がありますか? Wikiの 衣装のページ をご覧ください。完璧な衣装ができた? 衣装祭りギルドやキャンプ場でつぶやいてください!",
"costumePopoverText": "「衣装を使用する」を選択すると、武装の能力値に影響を与えずに、アイテムをアバターに着せることができます! つまり、もっとも効果の高いアイテムを装備しながらも、あなたのアバターは自由にオシャレができるということです。",
"autoEquipPopoverText": "購入した装備を自動的に身につけたい場合は、このオプションを選択してください。",
"costumeDisabled": "衣装を無効にしました。",
"gearAchievement": "もっとも上位のクラス装備セットを入手し、「究極のアイテム」の実績を解除しました! あなたは以下の完全なセットを手に入れています: ",
- "moreGearAchievements": "To attain more Ultimate Gear badges, change classes on the Settings > Site page and buy your new class's gear!",
+ "moreGearAchievements": "他の「究極のアイテム」のバッジを手にするには、設定>サイトのページでクラスを変えて、新しいクラスのアイテムを買いましょう!",
"armoireUnlocked": "もっと装備品がほしい? ラッキー宝箱をチェックしましょう! ごほうびの「ラッキー宝箱」をクリックすると、ランダムで特別な装備が当たります! 経験値やえさが当たることもあります。",
"ultimGearName": "究極のアイテム - <%= ultClass %>",
"ultimGearText": " <%= ultClass %>のクラスにおいて最強の武器防具を揃えました。",
@@ -143,7 +143,7 @@
"distributePoints": "未割り当てのポイントをふりわける",
"distributePointsPop": "選択した方法にもとづいて、すべての未割り当てポイントをふりわけます。",
"warriorText": "戦士はタスクを完了したときに、「会心の一撃」が出やすく、その効果も高い。「会心の一撃」が出ると、ゴールド、経験値、アイテムドロップの確率にボーナスがつきます。また、戦士はボスに大きなダメージを与えます。予測できない一攫千金タイプの報酬でやる気が出る、もしくはボス クエストで活躍したいなら、戦士でプレーしましょう!",
- "wizardText": "Mages learn swiftly, gaining Experience and Levels faster than other classes. They also get a great deal of Mana for using special abilities. Play a Mage if you enjoy the tactical game aspects of Habitica, or if you are strongly motivated by leveling up and unlocking advanced features!",
+ "wizardText": "魔道士は学習スピードが速く、他のクラスよりも多く経験値を得てレベルが早く上がります。また、特殊能力を使うためのマナを大量に得ます。Habiticaの戦略ゲーム的な側面を楽しみたいなら、あるいはレベルアップと追加要素をアンロックしていくのがあなたにとって強い動機付けになるならば、魔道士を選びましょう!",
"mageText": "魔道士は他のクラスよりも速く経験値を獲得してレベルアップしていきます。特殊スキルを使ってマナを多く獲得することもできます。Habiticaの戦術的側面を楽しみたい、あるいはレベルアップしてもっと進んだ機能を使うことへのモチベーションが高いなら、魔道士を選んでプレイしましょう。",
"rogueText": "盗賊は富を集めることを愛するのです。ほかのどのクラスよりもゴールドを稼ぎ、アイテムを見つける確率が高いのです。盗賊の特徴、忍びの術をもってすれば、日課をやらなかったとしても、性格的に傷つかない。戦利品や勲章――Habitica では、ごほうびと実績に強く心動かされるなら、盗賊でプレーしましょう!",
"healerText": "治療師は痛みに耐え、他人を守るのです。やらなかった日課や悪い習慣にも治療師は動揺せず、失敗から体力を回復させる能力を持っています。パーティーの他のメンバーを助けることに喜びを感じる、困難な仕事による死をも恐れぬ理想があるのなら、治療師でプレーしましょう!",
@@ -151,7 +151,7 @@
"optOutOfPMs": "やめる",
"chooseClass": "クラスを選んでください",
"chooseClassLearnMarkdown": "[Habiticaのクラス・システムについて詳しく知る](http://habitica.wikia.com/wiki/Class_System)",
- "optOutOfClassesText": "Can't be bothered with classes? Want to choose later? Opt out - you'll be a warrior with no special abilities. You can read about the class system later on the wiki and enable classes at any time under User Icon > Settings.",
+ "optOutOfClassesText": "クラスなんてめんどくさい? 後で選びたい? 選ばなくても構いません。スキルのない戦士になります。クラスのしくみについてwiki を参照し、いつでも ユーザーアイコン > 設定で有効にできます。",
"selectClass": "<%= heroClass %>を選択",
"select": "選択",
"stealth": "ステルス",
@@ -161,8 +161,9 @@
"respawn": "生き返った!",
"youDied": "あなたは死にました!",
"dieText": "レベルが1下がり、すべてのゴールドといくつかの装備品を失ってしまいました。Habitica の民よ、復活せよ! 悪い習慣をひかえ、日課をこなすことに気を配り、つまずいても体力回復の薬を使って、死の手が届かぬよう、もちこたえましょう!",
- "sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
+ "sureReset": "本当によろしいですか?キャラクターのクラスと割り当てたポイントをリセットします。(ポイントは全て割り当て前の状態に戻ります)。リセットには3 ジェムが必要です。",
"purchaseFor": "<%= cost %> ジェムで購入しますか?",
+ "purchaseForHourglasses": "神秘の砂時計を<%= cost %>購入しますか?",
"notEnoughMana": "マナが足りません。",
"invalidTarget": "その対象にスキルを唱えることはできません。",
"youCast": "<%= spell %>をかけました。",
@@ -173,17 +174,17 @@
"gainedMana": "マナを獲得しました",
"gainedHealth": "体力が回復しました",
"gainedExperience": "経験を獲得しました",
- "lostGold": "You spent some Gold",
- "lostMana": "You used some Mana",
- "lostHealth": "You lost some Health",
- "lostExperience": "You lost some Experience",
+ "lostGold": "ゴールドを支払いました",
+ "lostMana": "マナを消費しました",
+ "lostHealth": "体力を失いました",
+ "lostExperience": "経験値を失いました。",
"displayNameDescription1": "この名前が、キャンプ場、ギルド、パーティでのチャットへの投稿などのメッセージで表示され、またアバター上にも表示されます。変更するには、上の編集ボタンをクリック。ログイン名を変更したいのなら、",
"displayNameDescription2": "設定 -> サイト",
"displayNameDescription3": "。「登録」のブロックにあります。",
"unequipBattleGear": "武装を外す",
"unequipCostume": "衣装を脱ぐ",
- "equip": "Equip",
- "unequip": "Unequip",
+ "equip": "装備",
+ "unequip": "はずす",
"unequipPetMountBackground": "ペットと乗騎と背景をはずす",
"animalSkins": "動物柄",
"chooseClassHeading": "クラスを選びましょう! あとで選ぶこともできます。",
@@ -198,25 +199,25 @@
"int": "知能",
"showQuickAllocation": "割り当てを表示",
"hideQuickAllocation": "割り当てを非表示",
- "quickAllocationLevelPopover": "Each level earns you one point to assign to an attribute of your choice. You can do so manually, or let the game decide for you using one of the Automatic Allocation options found in User Icon > Stats.",
+ "quickAllocationLevelPopover": "レベルが上がるたびに、能力値のどれかに割り当てできる1ポイントを得ることができます。手動で好きなように割り当てることもできますし、ユーザーアイコン > 設定の「自動割り当て」設定でシステムに任せることもできます。",
"invalidAttribute": "<%= attr %> は無効な能力値です。",
"notEnoughAttrPoints": "能力値ポイントが足りません。",
- "style": "Style",
- "facialhair": "Facial",
- "photo": "Photo",
+ "style": "体型",
+ "facialhair": "顔",
+ "photo": "写真",
"info": "Info",
- "joined": "Joined",
- "totalLogins": "Total Check Ins",
- "latestCheckin": "Latest Check In",
- "editProfile": "Edit Profile",
- "challengesWon": "Challenges Won",
+ "joined": "開始日",
+ "totalLogins": "合計チェックイン回数",
+ "latestCheckin": "最新チェックイン",
+ "editProfile": "プロフィールを編集",
+ "challengesWon": "優勝したチャレンジ",
"questsCompleted": "完了済みのクエスト",
- "headAccess": "Head Access.",
- "backAccess": "Back Access.",
- "bodyAccess": "Body Access.",
- "mainHand": "Main-Hand",
- "offHand": "Off-Hand",
- "pointsAvailable": "Points Available",
- "pts": "pts",
- "statsObjectRequired": "Stats update is required"
+ "headAccess": "頭部アクセ",
+ "backAccess": "背のアクセ",
+ "bodyAccess": "胴のアクセ",
+ "mainHand": "利き手",
+ "offHand": "反対の手",
+ "pointsAvailable": "利用可能なポイント",
+ "pts": "ポイント",
+ "statsObjectRequired": "ステータスの更新が必要です"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/communityguidelines.json b/website/common/locales/ja/communityguidelines.json
index a2ba2d8be22..5fc0573a5b2 100644
--- a/website/common/locales/ja/communityguidelines.json
+++ b/website/common/locales/ja/communityguidelines.json
@@ -1,6 +1,6 @@
{
"iAcceptCommunityGuidelines": "コミュニティガイドラインに従うことに同意します",
- "tavernCommunityGuidelinesPlaceholder": "Friendly reminder: this is an all-ages chat, so please keep content and language appropriate! Consult the Community Guidelines in the sidebar if you have questions.",
+ "tavernCommunityGuidelinesPlaceholder": "利用の注意: これは全年齢対応のチャットです。ですので気持ちのよい言葉と態度を心がけましょう!質問がある場合は、サイドバーのコミュニティガイドラインをで助言を求めましょう。",
"commGuideHeadingWelcome": "Habiticaへようこそ!",
"commGuidePara001": "冒険者みんなこんにちは!豊かな土地、健康な生活と時折暴れまわるグリフォンのいるHabiticaへようこそ。ここには、お互い支えあって自己改善する人でいっぱいの元気なコミュニティーがあります。",
"commGuidePara002": "誰もが、コミュニティーで安全で幸せな、そして実りの多い状態を保つために、いくつかのガイドラインがあります。フレンドリーな文章で読みやすくなるように考えて作りました。じっくり読んでください。",
@@ -13,7 +13,7 @@
"commGuideList01C": "支え合う姿勢。Habitica人は互いの勝利のために応援しあい、苦しい時は、互いを元気付けます。互いに力を貸し、互いに支えあって、互いに学びます。パーティでは、お互いの呪文で助け合い、チャットルームでは、親切で支えとなる言葉を掛け合っています。",
"commGuideList01D": "敬うマナー.私達には異なる背景、異なる技術、そして異なる意見があります。それが私たちのコミュニティーをとても素晴らしいものにしてくれます!Habitica人は、これらの違いを尊重し、それらを賛美します。ここにいれば、あなたはすぐに様々な背景や職業を持つ友達ができるでしょう。",
"commGuideHeadingMeet": "スタッフとモデレーターに会おう!",
- "commGuidePara006": "Habitica has some tireless knights-errant who join forces with the staff members to keep the community calm, contented, and free of trolls. Each has a specific domain, but will sometimes be called to serve in other social spheres. Staff and Mods will often precede official statements with the words \"Mod Talk\" or \"Mod Hat On\".",
+ "commGuidePara006": "Habiticaには、コミュニティを静かに保ち、満足させ、騒ぎをなくす作業をスタッフとともにしてくれている義侠の士がいます。彼らは各々のドメインを所持していますが、しばしばその立場を表明する必要があります。このような場合、スタッフやモデレータの公式な発言の前に\"Mod Talk\", \"Mod Hat On\"といった記述が追加されます。",
"commGuidePara007": "スタッフは王冠のマークが付いた紫色のタグがあります。彼らの肩書は「Heroic」です。",
"commGuidePara008": "モデレーターは星印が付いた濃青色のタグが付いています。彼らの肩書は「Guardian」です。唯一例外のBaileyは、NPCとして、星印が付いた黒と緑のタグがあります。",
"commGuidePara009": "現在のスタッフメンバーは次のとおりです(左から右へ):",
@@ -90,7 +90,7 @@
"commGuideList04H": "wikiコンテンツはHabiticaのサイト全体に関係しており、特定のギルドやパーティに関係していないようにすること(そのような情報をフォーラムに移動できます)",
"commGuidePara049": "以下の人々は現在のwiki管理者です:",
"commGuidePara049A": "以下のモデレーターは、上記の管理者が不在の時、モデレーターが必要とされる事態において緊急の編集を行うことができます:",
- "commGuidePara018": "Wiki Administrators Emeritus are:",
+ "commGuidePara018": "Wiki管理の名誉退職者:",
"commGuideHeadingInfractionsEtc": "違反行為、罰、回復",
"commGuideHeadingInfractions": "違反行為",
"commGuidePara050": "圧倒的にHabiticanはお互いに助け合い、敬意を表し、全てのコミュニティを楽しく親しくするよう働いています。しかしながら、長い間に一度だけ、ガイドラインのひとつに違反することがあります。それがおこると、モデレーターはHabiticaを全ての人にとって安全で快適に維持するために必要と考えるどんな対応でも行うでしょう。",
@@ -184,5 +184,5 @@
"commGuideLink07description": "ピクセルアートの提出。",
"commGuideLink08": "クエストTrello",
"commGuideLink08description": "クエストライティングの提出。",
- "lastUpdated": "Last updated:"
+ "lastUpdated": "最終更新:"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/content.json b/website/common/locales/ja/content.json
index 536856dfe61..43adc637df8 100644
--- a/website/common/locales/ja/content.json
+++ b/website/common/locales/ja/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "毛糸",
"questEggYarnMountText": "空飛ぶカーペット",
"questEggYarnAdjective": "ウールの",
+ "questEggPterodactylText": "翼竜",
+ "questEggPterodactylMountText": "翼竜",
+ "questEggPterodactylAdjective": "疑うことを知らない",
"eggNotes": "たまごがえしの薬を見つけて、たまごにかけると、<%= eggAdjective(locale) %> <%= eggText(locale) %>が生まれます。",
"hatchingPotionBase": "普通の",
"hatchingPotionWhite": "白い",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "キューピッドの",
"hatchingPotionShimmer": "きらきらの",
"hatchingPotionFairy": "フェアリーの",
+ "hatchingPotionStarryNight": "星降る夜の",
"hatchingPotionNotes": "これをたまごにかけると、<%= potText(locale) %> ペットが生まれます。",
"premiumPotionAddlNotes": "クエスト ペットのたまごには使えません。",
"foodMeat": "肉",
@@ -218,5 +222,6 @@
"foodCandyRed": "シナモンキャンディー",
"foodSaddleText": "くら",
"foodSaddleNotes": "ペットの 1 匹をすぐに乗騎に成長させます。",
+ "foodSaddleSellWarningNote": "ちょっと待って! これはとっても役に立つアイテムだよ! ペットにくらを使う方法は知ってるかな?",
"foodNotes": "これをペットにあげて、丈夫に育てましょう。"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/contrib.json b/website/common/locales/ja/contrib.json
index f170a9073d3..c4f27c9ec6b 100644
--- a/website/common/locales/ja/contrib.json
+++ b/website/common/locales/ja/contrib.json
@@ -1,14 +1,14 @@
{
- "playerTiersDesc": "The colored usernames you see in chat represent a person's contributor tier. The higher the tier, the more the person has contributed to habitica through art, code, the community, or more!",
- "tier1": "Tier 1 (Friend)",
- "tier2": "Tier 2 (Friend)",
- "tier3": "Tier 3 (Elite)",
- "tier4": "Tier 4 (Elite)",
- "tier5": "Tier 5 (Champion)",
- "tier6": "Tier 6 (Champion)",
- "tier7": "Tier 7 (Legendary)",
- "tierModerator": "Moderator (Guardian)",
- "tierStaff": "Staff (Heroic)",
+ "playerTiersDesc": "チャットで見られる色のついたユーザー名は、その人の貢献者段位を表わしています。段位が高いほど、その人がHabiticaのピクセルアート、コード、コミュニティなどに貢献していることを示します!",
+ "tier1": "初段 (友人)",
+ "tier2": "2段 (友人)",
+ "tier3": "3段 (エリート)",
+ "tier4": "4段 (エリート)",
+ "tier5": "5段 (チャンピオン)",
+ "tier6": "6段 (チャンピオン)",
+ "tier7": "7段 (伝説)",
+ "tierModerator": "モデレータ (守護神)",
+ "tierStaff": "スタッフ (英雄)",
"tierNPC": "NPC",
"friend": "友達",
"friendFirst": "あなたが 最初に 提出したセットが配置された時に、あなたは Habitica 貢献者のバッジを受け取ります。キャンプ場チャットに表示されるあなたの名前が、あなたが貢献者であることを誇らしげに示します。あなたの仕事の報奨金として、あなたは、3 ジェム 受け取ることにもなります。",
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>、あなたは素晴らしい人です! Habitica へのご支援を表し、<%= level %> 段の貢献者とします。",
"contribLink": "どんな景品が当たったか覗いてみてね!",
"contribName": "貢献者",
- "contribText": "(例えばプログラム、デザイン、ドット絵、法的アドバイス、文章などで)Habiticaに貢献した証です。このバッジがほしいですか?こちらを参照して下さい。",
+ "contribText": "Habiticaにプログラム、ピクセルアート、音楽、文章、またはそれ以外の方法で貢献した証です。詳しく知るには、Aspiring Legends ギルドに参加してください!",
"readMore": "続きを読む",
"kickstartName": "Kickstarter での資金協力 - $<%= key %> 段",
"kickstartText": "Kickstarter プロジェクトでの資金提供",
diff --git a/website/common/locales/ja/faq.json b/website/common/locales/ja/faq.json
index de7fa9a14d6..c6fca931dba 100644
--- a/website/common/locales/ja/faq.json
+++ b/website/common/locales/ja/faq.json
@@ -31,27 +31,27 @@
"faqQuestion7": "どうすれば戦士、魔道士、盗賊、治療師になれるの?",
"iosFaqAnswer7": "レベル10になると、戦士、魔道士、盗賊、治療師のクラスを選べるようになります。( 標準では、すべてのプレイヤーは戦士でスタートします。) クラスによって、装備や、レベル11以降に使えるようになるスキル、そして長所が異なります。戦士はボスにダメージを与えるのがうまく、タスクからのダメージへの耐久力も高いので、パーティーがタフになります。魔道士もボスへのダメージを与えるのがうまく、レベルアップが速く、パーティーのマナを回復します。盗賊がいちばんゴールドと落ちているアイテムを獲得でき、パーティーにも同様の効果をもたらします。最後に、治療師は、自分自身とパーティーの仲間の体力を回復することができます。\n\nすぐにクラスを選びたくなければ――たとえば、いまのクラスの装備を買い集めている最中――「後で決める」をクリックし、後から選ぶときは メニュー > クラスを選ぶ で行います。",
"androidFaqAnswer7": "レベルが10になると、戦士、魔道士、盗賊、治療師になるための選択ができます。(すべてのプレーヤーは、標準で戦士としてスタートします。) それぞれのクラスは、異なった装備、異なるスキル(レベル11以降、使えるようになります)、異なる特技をもっています。戦士はボスにダメージを与えやすく、タスクからのダメージへの耐性も強いので、戦士がいるパーティはタフになります。魔道士も戦士と同様、ボスへのダメージが与えやすいですが、レベルアップが早く、マナを回復してパーティーに貢献します。盗賊は、もっともゴールドを稼ぎ、もっとも「落とし物」を見つけます。所属するパーティーが同じようにできるよう貢献します。最後に治療師は、自分とパーティーのメンバーの体力を回復できます。\n\nすぐにクラスを選びたくなければ——例えば、現在のクラスの装備をすべて買い集めたいなど——「辞退する」をクリックし、後で メニュー > クラス選択 で選択してください。",
- "webFaqAnswer7": "At level 10, you can choose to become a Warrior, Mage, Rogue, or Healer. (All players start as Warriors by default.) Each Class has different equipment options, different Skills that they can cast after level 11, and different advantages. Warriors can easily damage Bosses, withstand more damage from their tasks, and help make their party tougher. Mages can also easily damage Bosses, as well as level up quickly and restore Mana for their party. Rogues earn the most Gold and find the most item drops, and they can help their party do the same. Finally, Healers can heal themselves and their party members. If you don't want to choose a Class immediately -- for example, if you are still working to buy all the gear of your current class -- you can click \"Opt Out\" and re-enable it later under Settings.",
+ "webFaqAnswer7": "レベル10になると、戦士、魔道士、盗賊、治療師のクラスを選べるようになります。( 標準では、すべてのプレイヤーは戦士でスタートします。) クラスによって、装備や、レベル11以降に使えるようになるスキル、そして長所が異なります。戦士はボスにダメージを与えるのがうまく、タスクからのダメージへの耐久力も高いので、パーティーがタフになります。魔道士もボスへのダメージを与えるのがうまく、レベルアップが速く、パーティーのマナを回復します。盗賊がいちばんゴールドと落ちているアイテムを獲得でき、パーティーにも同様の効果をもたらします。最後に、治療師は、自分自身とパーティーの仲間の体力を回復することができます。すぐにクラスを選びたくなければ――たとえば、いまのクラスの装備を買い集めている最中――「後で決める」をクリックし、後から選ぶときは設定画面で行います。",
"faqQuestion8": "レベル10以降、ヘッダーに表示される青いバーは何ですか?",
"iosFaqAnswer8": "レベル10になってクラスを選択すると表示される青いバーは、マナ バーです。レベルアップを続けると、マナを使うスキルの機能がアンロックされます。それぞれのクラスは異なった特殊能力をもっており、レベル11以降、メニュー > 特殊能力を使う に表示されます。体力バーと違って、マナ バーはレベルを上げてもリセットされません。マナは、いい習慣、日課、To-Do を達成することで増え、悪い習慣を行うと減ります。夜が明けたときにも少し回復しますが、それはより多くの日課を完了すると、より回復します。",
"androidFaqAnswer8": "レベル10になってクラスを選択すると表示される青いバーは、マナ バーです。レベルアップを続けると、マナを使うスキルの機能がアンロックされます。それぞれのクラスは異なったスキルをもっており、レベル11以降、メニュー > スキルを使う に表示されます。体力バーと違って、マナ バーはレベルを上げても全回復しません。マナは、いい習慣、日課、To-Do を達成することで増え、悪い習慣を行うと減ります。夜が明けたときにも少し回復しますが、それはより多くの日課を完了すると、より回復します。",
- "webFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 in the action bar at the bottom of the screen. Unlike your Health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You'll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.",
+ "webFaqAnswer8": "レベル10になってクラスを選択すると表示される青いバーは、マナ バーです。レベルアップを続けると、マナを使うスキルの機能がアンロックされます。それぞれのクラスは異なった特殊能力をもっており、レベル11以降、画面下のアクションバーに表示されます。体力バーと違って、マナ バーはレベルを上げてもリセットされません。マナは、いい習慣、日課、To-Do を達成することで増え、悪い習慣を行うと減ります。また、夜が明けたときにもいくらか回復します ―― より多くの日課を完了させているほど、より多くのマナが得られるでしょう。",
"faqQuestion9": "モンスターと戦ったり、クエストを始めるにはどうしたらいいですか?",
- "iosFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party, you'll be rewarded with the Basi-List Scroll!\n - You can buy Quests from the Quests Shop for Gold and Gems.\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
- "androidFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party, you'll be rewarded with the Basi-List Scroll!\n - You can buy Quests from the Quests Shop for Gold and Gems.\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
- "webFaqAnswer9": "First, you need to join or start a Party by clicking \"Party\" in the navigation bar. Although you can battle monsters alone, we recommend playing in a group, because this will make quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating! Next, you need a Quest Scroll, which are stored under Inventory > Quests. There are four ways to get a scroll:\n * When you invite people to your Party, you'll be rewarded with the Basi-List Scroll!\n * At level 15, you get a Quest-line, i.e., three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively.\n * You can buy Quests from the Quests Shop (Shops > Quests) for Gold and Gems.\n * When you check in to Habitica a certain number of times, you'll be rewarded with Quest Scrolls. You earn a Scroll during your 1st, 7th, 22nd, and 40th check-ins.\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading may be required to see the Boss's Health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
+ "iosFaqAnswer9": "まず、パーティーに加わるか、新しいパーティーを作るか(上述) する必要があります。一人でモンスターと戦うこともできますが、クエストをずっと簡単にしてくれるので、グループでプレーすることをお勧めします。加えて、タスクを達成するようあなたを応援してくれる友達がいることで、とてもやる気になるからです!\n\n次に、クエストの巻物が必要です。 所持品 > アイテム に保管されています。巻物を入手するには3通りの方法があります : \n\n- レベル15 で、3 リンク クエスト として知られる、シリーズ クエストにたどり着きます。その後、レベル 30、40、そして60 のそれぞれで、シリーズ クエストがアンロックされます。\n- だれかをあなたのパーティーに招待すると、バシ・リストの巻物が手に入ります。\n- クエストショップで、ゴールドまたはジェムを使ってクエストを購入できます。\n\nボスと戦ったり、コレクション クエストでアイテムを集めたりするには、タスクを通常通り完了するだけです。日付が改められるたびに、ダメージとして計算されます( ボスの体力バーが減るのを見るには、スクリーンをプルダウンして、リロードする必要があるでしょう)。 ボスと戦っている間に日課をやり残すと、ボスへのダメージが発生するタイミングで、ボスからあなた方パーティーへの攻撃によるダメージが発生します。\n\nレベル11以降、魔道士と戦士は、ボスへの追加ダメージを発生させるスキルを覚えるので、もしダメージディーラーになりたいのなら、この2つはレベル10で選択するのにすばらしいクラスです。",
+ "androidFaqAnswer9": "まず、パーティーに加わるか、新しいパーティーを作るか(上述) する必要があります。一人でモンスターと戦うこともできますが、クエストをずっと簡単にしてくれるので、グループでプレーすることをお勧めします。加えて、タスクを達成するようあなたを応援してくれる友達がいることで、とてもやる気になるからです!\n\n次に、クエストの巻物が必要です。 所持品 > アイテム に保管されています。巻物を入手するには3通りの方法があります : \n\n- レベル15 で、3 リンク クエスト として知られる、シリーズ クエストにたどり着きます。その後、レベル 30、40、そして60 のそれぞれで、シリーズ クエストがアンロックされます。\n- だれかをあなたのパーティーに招待すると、バシ・リストの巻物が手に入ります。\n- クエストショップで、ゴールドまたはジェムを使ってクエストを購入できます。\n\nボスと戦ったり、コレクション クエストでアイテムを集めたりするには、タスクを通常通り完了するだけです。日付が改められるたびに、ダメージとして計算されます( ボスの体力バーが減るのを見るには、スクリーンをプルダウンして、リロードする必要があるでしょう)。 ボスと戦っている間に日課をやり残すと、ボスへのダメージが発生するタイミングで、ボスからあなた方パーティーへの攻撃によるダメージが発生します。\n\nレベル11以降、魔道士と戦士は、ボスへの追加ダメージを発生させるスキルを覚えるので、もしダメージディーラーになりたいのなら、この2つはレベル10で選択するのにすばらしいクラスです。",
+ "webFaqAnswer9": "まずパーティーに加わるか、ナビゲーションバーの「パーティー」をクリックして新しいパーティを作る必要があります。一人でモンスターと戦うこともできますが、クエストをずっと簡単にしてくれるので、グループでプレーすることをお勧めします。加えて、タスクを達成するようあなたを応援してくれる友達がいることで、とてもやる気になるからです! 次に、クエストの巻物が必要です。 所持品 > アイテム に保管されています。巻物を入手するには4通りの方法があります : \n* レベル15 で、3 リンク クエスト として知られる、シリーズ クエストにたどり着きます。その後、レベル 30、40、そして60 のそれぞれで、シリーズ クエストがアンロックされます。\n* だれかをあなたのパーティーに招待すると、バシ・リストの巻物が手に入ります。\n* クエストショップで、ゴールドまたはジェムを使ってクエストを購入できます。\n* Habiticaに一定回数ログインすると、クエストの巻物がもらえます。1回目、7回目、14回目、22回目、40回目に巻物が手に入るでしょう。\nボスと戦ったり、コレクション クエストでアイテムを集めたりするには、タスクを通常通り完了するだけです。日付が改められるたびに、ダメージとして計算されます( ボスの体力バーが減るのを見るにはリロードする必要があるでしょう)。 ボスと戦っている間に日課をやり残すと、ボスへのダメージが発生するタイミングで、ボスからあなた方パーティーへの攻撃によるダメージが発生します。レベル11以降、魔道士と戦士は、ボスへの追加ダメージを発生させるスキルを覚えるので、もしダメージディーラーになりたいのなら、この2つはレベル10で選択するのにすばらしいクラスです。",
"faqQuestion10": "ジェムってなに? どうやって手に入れるの?",
- "iosFaqAnswer10": "Gems are purchased with real money by tapping on the Gem icon in the header. When people buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying Gems directly, there are three other ways players can gain Gems:\n\n * Win a Challenge that has been set up by another player. Go to Social > Challenges to join some.\n * Subscribe and unlock the ability to buy a certain number of Gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the app without them!",
- "androidFaqAnswer10": "Gems are purchased with real money by tapping on the Gem icon in the header. When people buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying Gems directly, there are three other ways players can gain Gems:\n\n * Win a Challenge that has been set up by another player. Go to Social > Challenges to join some.\n * Subscribe and unlock the ability to buy a certain number of Gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the app without them!",
- "webFaqAnswer10": "Gems are purchased with real money, although [subscribers](https://habitica.com/user/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support! In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n* Win a Challenge that has been set up by another player. Go to Challenges > Discover Challenges to join some.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica). Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!",
+ "iosFaqAnswer10": "ジェムは、ヘッダのジェムアイコンをクリックすることで、現実のお金で買うことができます。みなさんにジェムを買っていただくことで、サイト運営の資金協力となります。私たちはとてもありがたいことだと思っています!\n\nジェムは直接購入するのに加えて、以下の 3 通りの方法でジェムを増やすことができます : \n\n* 他のプレイヤーが作ったチャレンジで優勝する。ソーシャル > チャレンジ から参加しましょう。\n* 寄付会員になると、毎月決まった数のジェムをゴールドで購入できるようになります。\n* あなたの特技で Habitica プロジェクトに貢献する。詳しくは wiki ページをご覧ください : [Habiticaへの貢献](http://ja.habitica.wikia.com/wiki/Habitica%E3%81%B8%E3%81%AE%E8%B2%A2%E7%8C%AE)\n\nおぼえておいてほしいことは、ジェムで購入したアイテムには数値的に有利になるわけではなく、プレーヤーはジェムなしでも、Habitica を楽しむことができるということです!",
+ "androidFaqAnswer10": "ジェムは、ヘッダのジェムアイコンをクリックすることで、現実のお金で買うことができます。みなさんにジェムを買っていただくことで、サイト運営の資金協力となります。私たちはとてもありがたいことだと思っています!\n\nジェムは直接購入するのに加えて、以下の 3 通りの方法でジェムを増やすことができます : \n\n* 他のプレイヤーが作ったチャレンジで優勝する。ソーシャル > チャレンジ から参加しましょう。\n* 寄付会員になると、毎月決まった数のジェムをゴールドで購入できるようになります。\n* あなたの特技で Habitica プロジェクトに貢献する。詳しくは wiki ページをご覧ください : [Habiticaへの貢献](http://ja.habitica.wikia.com/wiki/Habitica%E3%81%B8%E3%81%AE%E8%B2%A2%E7%8C%AE)\n\nおぼえておいてほしいことは、ジェムで購入したアイテムには数値的に有利になるわけではなく、プレーヤーはジェムなしでも、Habitica を楽しむことができるということです!",
+ "webFaqAnswer10": "ジェムは現実のお金で買うことができ、[寄付会員](https://habitica.com/#/options/settings/subscription)はゴールドで買うことができます。寄付するか、現実のお金でジェムを買うことは、サイトを運営する資金協力となります。私たちはとてもありがたいことだと思っています! ジェムは直接購入するか寄付会員になるかに加え、以下の 2 通りの方法で増やすことができます : \n* 他のプレイヤーが作ったチャレンジで優勝する。チャレンジ > チャレンジを探す から参加してみましょう。\n* あなたの特技で Habitica プロジェクトに貢献する。詳しくは wiki ページをご覧ください : [Habiticaへの貢献](http://ja.habitica.wikia.com/wiki/Habitica%E3%81%B8%E3%81%AE%E8%B2%A2%E7%8C%AE)\nおぼえておいてほしいのは、ジェムで購入したアイテムは数値的な有利さをもたらすものではなく、プレイヤーはジェムなしでもHabitica を楽しむことができるということです!",
"faqQuestion11": "バグを報告したりや機能を要望したりするには、どうしたらいい?",
- "iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > About > Report a Bug and Menu > About > Send Feedback! We'll do everything we can to assist you.",
+ "iosFaqAnswer11": "バグの報告、新機能の要望したりフィードバック送信したりする場合は、それぞれ ヘルプ > バグを報告する 、ヘルプ > 機能を要望する で私たちに送ってください! あなたの手助けのためにできる限りのことをします。",
"androidFaqAnswer11": "バグの報告、新機能の要望やフィードバックを送信する場合は、それぞれ ヘルプ > バグを報告する 、または ヘルプ > 機能を要望する で私たちに送ってください! あなたの手助けのためにできる限りのことをします。",
- "webFaqAnswer11": "To report a bug, go to [Help > Report a Bug](https://habitica.com/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac) and read the points above the chat box. If you're unable to log in to Habitica, send your login details (not your password!) to [<%= techAssistanceEmail %>](<%= wikiTechAssistanceEmail %>). Don't worry, we'll get you fixed up soon! Feature requests are collected on Trello. Go to [Help > Request a Feature](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) and follow the instructions. Ta-da!",
+ "webFaqAnswer11": "バグを報告するには [ ヘルプ > バグを報告する ](https://habitica.com/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac) でチャットボックスの上に表示される要点に従ってください。もし、Habitica にログインできない場合は、ログインの詳細 ( パスワードは送らないで! ) を [<%= techAssistanceEmail %>](<%= wikiTechAssistanceEmail %>) に送ってください。ご心配なく、すぐに対応します。機能の要望は Trello で受け付けています。[ヘルプ > 機能を要望する](https://trello.com/c/odmhIqyW/440-read-first-how-to-request-a-feature-table-of-contents) で表示される説明に従ってください。ジャジャーン!",
"faqQuestion12": "ワールドボスと戦うには?",
- "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and Skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and Skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
- "androidFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and Skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and Skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
- "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and Skills will damage the Boss as usual. You can also be in a normal Quest at the same time. Your tasks and Skills will count towards both the World Boss and the Boss/Collection Quest in your party. A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change. You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
+ "iosFaqAnswer12": "ワールドボスはキャンプ場に現れる特別なモンスターです。すべてのユーザーは自動的にこのボスと戦うことになっており、すべてのユーザーが達成した日課やスキルで、常にボスにダメージを与えます。\n\n通常のクエストに参加しながらでもワールドボスと戦うことができます。あなたのタスクやスキルの効果は、ワールドボスと、ボスまたはコレクション クエストとの両方にカウントされます。\n\nワールドボスは、あなたにもあなたのアカウントにも一切ダメージを与えません。その代わり、ユーザーたちが消化しそこねた日課に応じて「消耗の一撃」ゲージがたまっていきます。このゲージがいっぱいになると、ワールドボスはサイト内のNPCのうち一人に攻撃を加え、そのキャラクターの姿が変わってしまいます。\n\n詳しくは [過去のワールドボス](http://habitica.wikia.com/wiki/World_Bosses) をお読みください。",
+ "androidFaqAnswer12": "ワールドボスはキャンプ場に現れる特別なモンスターです。すべてのユーザーは自動的にこのボスと戦うことになっており、すべてのユーザーが達成した日課やスキルで、常にボスにダメージを与えます。\n\n通常のクエストに参加しながらでもワールドボスと戦うことができます。あなたのタスクやスキルの効果は、ワールドボスと、ボスまたはコレクション クエストとの両方にカウントされます。\n\nワールドボスは、あなたにもあなたのアカウントにも一切ダメージを与えません。その代わり、ユーザーたちが消化しそこねた日課に応じて「消耗の一撃」ゲージがたまっていきます。このゲージがいっぱいになると、ワールドボスはサイト内のNPCのうち一人に攻撃を加え、そのキャラクターの姿が変わってしまいます。\n\n詳しくは [過去のワールドボス](http://habitica.wikia.com/wiki/World_Bosses) をお読みください。",
+ "webFaqAnswer12": "ワールドボスはキャンプ場に現れる特別なモンスターです。すべてのユーザーは自動的にこのボスと戦うことになっており、すべてのユーザーが達成した日課やスキルで、常にボスにダメージを与えます。\n\n通常のクエストに参加しながらでもワールドボスと戦うことができます。あなたのタスクやスキルの効果は、ワールドボスと、ボスまたはコレクション クエストとの両方にカウントされます。\n\nワールドボスは、あなたにもあなたのアカウントにも一切ダメージを与えません。その代わり、ユーザーたちが消化しそこねた日課に応じて「消耗の一撃」ゲージがたまっていきます。このゲージがいっぱいになると、ワールドボスはサイト内のNPCのうち一人に攻撃を加え、そのキャラクターの姿が変わってしまいます。\n\n詳しくは [過去のワールドボス](http://habitica.wikia.com/wiki/World_Bosses) をお読みください。",
"iosFaqStillNeedHelp": "この中や [Wiki FAQ] (http://ja.habitica.wikia.com/wiki/FAQ) にない質問は、ソーシャル > キャンプ場チャット で聞いてみてください。喜んで手助けします。",
"androidFaqStillNeedHelp": "ここや [Wiki FAQ] (http://habitica.wikia.com/wiki/FAQ) にない質問があれば、ソーシャル > キャンプ場チャット で聞いてください。喜んで手助けします。",
"webFaqStillNeedHelp": "この中や [Wiki FAQ] (http://ja.habitica.wikia.com/wiki/FAQ) にない質問は、 [Habitica Help guild](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a)で聞いてみてください。喜んで手助けします。"
diff --git a/website/common/locales/ja/front.json b/website/common/locales/ja/front.json
index 7044daa5db2..adcaae99779 100644
--- a/website/common/locales/ja/front.json
+++ b/website/common/locales/ja/front.json
@@ -1,6 +1,6 @@
{
"FAQ": "よくある質問",
- "termsAndAgreement": "By clicking the button below, you are indicating that you have read and agree to the Terms of Service and Privacy Policy.",
+ "termsAndAgreement": "下のボタンをクリックすることで、利用規約とプライバシーポリシーの\n内容に同意したものとみなします。",
"accept1Terms": "私は以下のことを承諾し、ボタンをクリックします : ",
"accept2Terms": "そして",
"alexandraQuote": "マドリードのスピーチでは、[Habitica]のことを話さずにはいられませんでした。まだ上司が必要なフリーランスの方々には必需品です。",
@@ -30,6 +30,7 @@
"companyAbout": "機能説明",
"companyBlog": "ブログ",
"devBlog": "開発者ブログ",
+ "companyContribute": "Contribute",
"companyDonate": "寄付",
"companyPrivacy": "プライバシー",
"companyTerms": "利用規約",
@@ -252,7 +253,7 @@
"missingNewPassword": "新しいパスワードがありません。",
"invalidEmailDomain": "以下のドメインのメールアドレスは登録できません : <%= domains %>",
"wrongPassword": "パスワードが間違っています。",
- "incorrectDeletePhrase": "アカウントを削除するには、全て大文字でDELETEと入力してください。",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "メールアドレスが無効です。",
"emailTaken": "このメールアドレスは、すでに登録されています。",
"newEmailRequired": "新しいメールアドレスがありません。",
@@ -264,7 +265,7 @@
"passwordResetEmailSubject": "パスワードのリセット",
"passwordResetEmailText": "Habiticaで <%= username %> のパスワードのリセットを頼んだのなら、新しいパスワードを設定するために <%= passwordResetLink %> に行ってください。このリンクは24時間後に無効になります。パスワードのリセットを頼んでいない場合、このメールを無視しても結構です。",
"passwordResetEmailHtml": "Habiticaで <%= username %> のパスワードのリセットを頼んだのなら、新しいパスワードを設定するために \"> ここ にクリックしてください。このリンクは24時間後に無効になります。
パスワードのリセットを頼んでいない場合、このメールを無視しても結構です。",
- "invalidLoginCredentialsLong": "Uh-oh - your email address / login name or password is incorrect.\n- Make sure they are typed correctly. Your login name 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": "ああ…。ユーザー名/メールアドレスまたはパスワードが不正です。\n- ユーザー名またはメールアドレスが正しく入力されているかを確認してください。大文字と小文字は区別されます。\n- メールアドレスではなくGoogleや Facebook を通じて登録した場合は、ログインを再確認してください。\n- パスワードを忘れてしまったのなら、「パスワード忘れ」をクリックしてください。",
"invalidCredentials": "この認証情報を使ったアカウントはありません。",
"accountSuspended": "アカウントは停止しています。参考としてユーザーID 、「<%= userId %>」を添えて、<%= communityManagerEmail %>へご連絡ください。",
"unsupportedNetwork": "このネットワークは現在対応していません。",
@@ -288,29 +289,29 @@
"motivateYourself": "自分自身でやる気を引き上げましょう。",
"timeToGetThingsDone": "さあ、仕事を片付ける今が楽しむときです! 250万人ものHabiticaの民とともにあなたの人生もタスクも一気に改善しましょう。",
"singUpForFree": "無料で登録する",
- "or": "OR",
+ "or": "あるいは",
"gamifyYourLife": "あなたの人生がゲームに",
- "aboutHabitica": "Habitica is a free habit-building and productivity app that treats your real life like a game. With in-game rewards and punishments to motivate you and a strong social network to inspire you, Habitica can help you achieve your goals to become healthy, hard-working, and happy.",
- "trackYourGoals": "Track Your Habits and Goals",
- "trackYourGoalsDesc": "Stay accountable by tracking and managing your Habits, Daily goals, and To-Do list with Habitica’s easy-to-use mobile apps and web interface.",
- "earnRewards": "Earn Rewards for Your Goals",
- "earnRewardsDesc": "Check off tasks to level up your Avatar and unlock in-game features such as battle armor, mysterious pets, magic skills, and even quests!",
- "battleMonsters": "Battle Monsters with Friends",
- "battleMonstersDesc": "Fight monsters with other Habiticans! Use the Gold that you earn to buy in-game or custom rewards, like watching an episode of your favorite TV show.",
- "playersUseToImprove": "Players Use Habitica to Improve",
- "healthAndFitness": "Health and Fitness",
- "healthAndFitnessDesc": "Never motivated to floss? Can't seem to get to the gym? Habitica finally makes it fun to get healthy.",
- "schoolAndWork": "School and Work",
- "schoolAndWorkDesc": "Whether you're preparing a report for your teacher or your boss, it's easy to keep track of your progress as you tackle your toughest tasks.",
- "muchmuchMore": "And much, much more!",
- "muchmuchMoreDesc": "Our fully customizable task list means that you can shape Habitica to fit your personal goals. Work on creative projects, emphasize self-care, or pursue a different dream -- it's all up to you.",
- "levelUpAnywhere": "Level Up Anywhere",
- "levelUpAnywhereDesc": "Our mobile apps make it simple to keep track of your tasks on-the-go. Accomplish your goals with a single tap, no matter where you are.",
- "joinMany": "Join over 2,000,000 people having fun while accomplishing their goals!",
- "joinToday": "Join Habitica Today",
- "signup": "Sign Up",
- "getStarted": "Get Started",
+ "aboutHabitica": "Habitica はあなたの実生活をゲームのように見ることで、習慣を身につけ生産的にする無料のアプリケーションです。やる気につながるゲーム内の報酬・懲罰システム、励ましとなる強力なソーシャルネットワークによって、Habitica は健康になりたい、しっかり働きたい、そして幸せになりたいというあなたのゴールを実現するお手伝いをします。",
+ "trackYourGoals": "習慣と目標をトラッキングしよう",
+ "trackYourGoalsDesc": "Habiticaの使いやすいモバイルアプリやWebインターフェイスであなたの習慣や日々の目標、To-Doリストを管理し、責任感を維持しましょう。",
+ "earnRewards": "目標に対する報酬を手に入れよう",
+ "earnRewardsDesc": "タスクをチェックして自分のアバターをレベルアップさせ、戦闘用の装備や不思議なペット、魔法のスキル、クエストなどのゲーム内要素をアンロックしましょう!",
+ "battleMonsters": "友達と一緒にモンスターと戦おう!",
+ "battleMonstersDesc": "他のHabiticanたちと一緒に戦いましょう! ゲーム内の、もしくは好きなテレビ番組を一話分見ると言った自分用のごほうびを買うため、手に入れたゴールドを使いましょう。",
+ "playersUseToImprove": "ユーザーはHabiticaをこんなふうに使っています",
+ "healthAndFitness": "健康やフィットネスで",
+ "healthAndFitnessDesc": "デンタルフロスを使う気が起きませんか? ジムに行きたくないですか? Habiticaは最終的にそれらを楽しみに変えて、健康にしてくれます。",
+ "schoolAndWork": "学校や仕事で",
+ "schoolAndWorkDesc": "先生や上司へのレポートを用意する時でも、手ごわいタスクに取り組んでいる間の進捗を記録するのは簡単です。",
+ "muchmuchMore": "そして他にもたくさん!",
+ "muchmuchMoreDesc": "完全にカスタム可能なタスクリストで、あなたの個人的な目標に合わせてHabiticaをカスタマイズできます。クリエイティブなプロジェクトに取り組んだり、セルフケアに力を入れたり、違う夢を追いかけたり -- 全てはあなた次第です。",
+ "levelUpAnywhere": "どこでもレベルアップ",
+ "levelUpAnywhereDesc": "モバイルアプリで出先でも簡単にタスクを記録できます。タップ一つでどこでも目標を達成しましょう。",
+ "joinMany": "200万人以上のユーザーが目標達成しながら楽しんでいます! 一緒に参加しましょう!",
+ "joinToday": "今日からHabiticaを始める",
+ "signup": "登録する",
+ "getStarted": "今すぐ始める",
"mobileApps": "モバイルアプリ",
- "learnMore": "Learn More",
- "useMobileApps": "Habitica is not optimized for a mobile browser. We recommend downloading our mobile apps."
+ "learnMore": "もっと詳しく知る",
+ "useMobileApps": "Habiticaはモバイルブラウザ用に最適化はされていません。モバイルアプリのご利用をお勧めします。"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/gear.json b/website/common/locales/ja/gear.json
index df32d4911d4..e38daab530c 100644
--- a/website/common/locales/ja/gear.json
+++ b/website/common/locales/ja/gear.json
@@ -239,9 +239,17 @@
"weaponSpecialFall2017WarriorText": "キャンディーコーンの槍",
"weaponSpecialFall2017WarriorNotes": "All your foes will cower before this tasty-looking lance, regardless of whether they're ghosts, monsters, or red To-Dos. Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017MageText": "不気味な杖",
- "weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialFall2017MageNotes": "この杖についた頭蓋骨の輝く眼は、謎と魔法を放ちます。 知能が <%= int %>、知覚が <%= per %> 上がります。2017年秋の限定装備。",
"weaponSpecialFall2017HealerText": "気味の悪い燭台",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "ごちそうの熊手",
"weaponMystery201411Notes": "敵を突き刺したり、好きな食べ物を掘り出したり - この何にでも使える熊手なら両方できます! 効果なし。2014年11月寄付会員アイテム。",
"weaponMystery201502Text": "キラキラ輝く羽のついた愛と真実のつえ",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "あなたを冒険に連れて行く際に健康を維持できるよう、働き者の乗騎たちのひづめを整えましょう! 力と知能、体質が<%= attrs %>ずつ上がります。ラッキー宝箱 : 装蹄師セット(3個中1つ目のアイテム)。",
"weaponArmoireWeaversCombText": "織物師のくし",
"weaponArmoireWeaversCombNotes": "このくしでよこ糸をまとめ、きっちりと編み上がった布に仕上げます。知覚が<%= per %>、力が<%= str %>上がります。ラッキー宝箱: 織物師セット(3個中2個目のアイテム)",
+ "weaponArmoireLamplighterText": "街灯ライター",
+ "weaponArmoireLamplighterNotes": "この長い棒の端にはランプをともすための芯が、反対側の端には消すためのフックがついています。体質が<%= con %>、知覚が<%= per %>増加します。",
+ "weaponArmoireCoachDriversWhipText": "御者の鞭",
+ "weaponArmoireCoachDriversWhipNotes": "馬たちはすべきことを分かっているので、この鞭は見せる(そして小気味いい音を出す!)だけです。知能が<%= int %>、力が<%= str %>上がります。ラッキー宝箱:御者セット(3個中3個目のアイテム)",
"armor": "よろい",
"armorCapitalized": "よろい",
"armorBase0Text": "無地の服",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "幽霊屋敷のよろい",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "メッセンジャーのローブ",
"armorMystery201402Notes": "かすかに光って、力強い。このローブは、手紙を運ぶために多くのポケットがついています。効果なし。2014年2月寄付会員アイテム。",
"armorMystery201403Text": "森の散策者のよろい",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "ウロコがあって、ピッカピカで、つよいぞ! 効果なし。2017年10月寄付会員アイテム。",
"armorMystery201711Text": "カーペット乗りの衣装",
"armorMystery201711Notes": "この着心地の良いセーターはじゅうたんで空を飛んでいる間も暖かさを保ってくれます! 効果なし。2017年11月寄付会員アイテム。",
+ "armorMystery201712Text": "ろうそく術士のよろい",
+ "armorMystery201712Notes": "この魔法のよろいが生み出す光と熱はあなたの心を温めてくれますが、やけどすることはありません! 効果なし。2017年12月寄付会員アイテム。",
"armorMystery301404Text": "スチームパンクスーツ",
"armorMystery301404Notes": "なんて小粋で最先端! 効果なし。3015年2月寄付会員アイテム。",
"armorMystery301703Text": "スチームパンクなクジャクのガウン",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "この丈夫な服一式は、あなたが仕事に精を出している間、こぼれた熱いロウから身を守ってくれます。体質が<%= con %>上がります。ラッキー宝箱: ロウソク職人セット(3個中1個目のアイテム)。",
"armorArmoireWovenRobesText": "織物師のローブ",
"armorArmoireWovenRobesNotes": "このカラフルなローブを着て、誇りを持ってあなたの織物を見てもらいましょう! 体質が<%= con %>、知能が<%= int %>上がります。ラッキー宝箱: 織物師セット(1個中3つ目のアイテム)",
+ "armorArmoireLamplightersGreatcoatText": "点灯士の外套",
+ "armorArmoireLamplightersGreatcoatNotes": "この分厚いウール製のコートは厳寒の夜も耐えてみせます! 知覚が<%= per %>上がります。",
+ "armorArmoireCoachDriverLiveryText": "御者の制服",
+ "armorArmoireCoachDriverLiveryNotes": "この分厚い外套は走行中の外気からあなたを守ってくれるでしょう。加えて、とっても素敵に見えます! 力が<%= str %>上がります。ラッキー宝箱:御者セット( 3 個中 1 個目のアイテム )",
"headgear": "帽子・兜",
"headgearCapitalized": "帽子・ヘルメット",
"headBase0Text": "頭装備なし",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "幽霊屋敷の兜",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "レインボーの戦士のヘルメット",
"headSpecialGaymerxNotes": "GaymerX カンファレンスを記念し、この特別なヘルメットは晴れやかでカラフルなレインボー柄で彩られています。GaymerX とは、LGTBQ (性的マイノリティー)とゲームを祝う見本市で、だれにでも開かれています。",
"headMystery201402Text": "羽かぶと",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "タスクを片付けるための余分な腕がほしくないですか?この半透明のクラゲ型ヘルメットには、あなたに手を貸すたくさんの触手が付いています!効果なし。2017年7月寄付会員アイテム。",
"headMystery201710Text": "いばりんぼの小鬼ヘルム",
"headMystery201710Notes": "このヘルメットはあなたを威圧的に見せてくれます…でも、あなたの奥行き知覚能力には何の恩恵ももたらしません! 効果なし。2017年10月寄付会員アイテム。",
+ "headMystery201712Text": "ろうそく術師の冠",
+ "headMystery201712Notes": "一番暗い冬の夜でも、この冠が光とぬくもりをもたらしてくれます。効果なし。2017年12月寄付会員アイテム。",
"headMystery301404Text": "かわいいシルクハット",
"headMystery301404Notes": "良家中の良家の方々のためのかわいいシルクハット! 3015年1月寄付会員アイテム。効果なし。",
"headMystery301405Text": "ベーシックなシルクハット",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "この強大な鋼鉄の兜はあなたが戦いに勝ち、健康で、しあわせで、生産的になるのを助けてくれます! 知覚が <%= per %> 上がります。ラッキー宝箱 : 先延ばし防止セット ( 3 個中 1 個目のアイテム)。",
"headArmoireCandlestickMakerHatText": "ロウソク職人の帽子",
"headArmoireCandlestickMakerHatNotes": "粋な帽子はいつもの仕事をより楽しくしてくれます。それはロウソク作りも例外ではありません! 知覚と知能が<%= attrs %>ずつ上がります。ラッキー宝箱: ロウソク職人セット(3個中2個目のアイテム)",
+ "headArmoireLamplightersTopHatText": "点灯士のシルクハット",
+ "headArmoireLamplightersTopHatNotes": "この気取った黒い帽子が、あなたの点灯作業をカンペキにしてくれます! 体質が<%= con %>上がります。",
+ "headArmoireCoachDriversHatText": "御者の帽子",
+ "headArmoireCoachDriversHatNotes": "この帽子はしゃれていますが、シルクハットほど格式ばってはいません。早駆け中になくさないようご注意を! 知能が<%= int %>上がります。ラッキー宝箱:御者セット( 3 個中 2 個めのアイテム )",
"offhand": "利き手と反対の手のアイテム",
"offhandCapitalized": "利き手と反対の手のアイテム",
"shieldBase0Text": "利き手と反対の手の装備はありません",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "このキャンディーの盾は強大な防御力を持っています、囓ろうとしないでください!体質が <%= con %> 上がります。2017年冬の限定装備。",
"shieldSpecialFall2017HealerText": "幽霊のオーブ",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "決意の剣",
"shieldMystery201601Notes": "この剣はすべての破壊を退けてくれるでしょう。効果なし。2016年寄付会員アイテム。",
"shieldMystery201701Text": "タイムフリーザー シールド",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "このマントには秘密のポケットがあり、あなたがタスクから巻き上げたゴールドを全部隠すことができます。効果なし。2017年6月寄付会員アイテム。",
"bodyMystery201711Text": "カーペット乗りのスカーフ",
"bodyMystery201711Notes": "ふんわり編まれたこのスカーフは、風になびいてとても堂々として見えます! 効果なし。2017年11月寄付会員アイテム。",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "頭部のアクセサリー",
"headAccessoryCapitalized": "頭部のアクセサリー",
"accessories": "アクセサリー",
diff --git a/website/common/locales/ja/generic.json b/website/common/locales/ja/generic.json
index ca57161bdca..c5282df5cf3 100644
--- a/website/common/locales/ja/generic.json
+++ b/website/common/locales/ja/generic.json
@@ -4,7 +4,7 @@
"titleIndex": "Habitica | あなたの人生のロールプレイングゲーム",
"habitica": "Habitica",
"habiticaLink": "Habitica",
- "onward": "Onward!",
+ "onward": "やった!",
"done": "完了",
"gotIt": "了解!",
"titleTasks": "タスク",
@@ -107,8 +107,8 @@
"achievementDilatory": "サキノバシティーの救世主",
"achievementDilatoryText": "2014年夏のスプラッシュイベントで「サキノバシティーのドレッド・ドラゴン」打倒に協力しました!",
"costumeContest": "衣装コンテスト",
- "costumeContestText": "Habitween (Habitica ハロウィン)の衣装コンテストに出場しました。一部のエントリーは、Habitica ブログでご覧いただけます!",
- "costumeContestTextPlural": "<%= count %> 回Habitween (Habitica ハロウィン)の衣装コンテストに出場しました。エントリーの一部は、Habitica ブログでご覧いただけます!",
+ "costumeContestText": "Habitween (Habitica ハロウィン)の衣装コンテストに出場しました。一部のエントリーは、blog.habitrpg.comでご覧いただけます!",
+ "costumeContestTextPlural": "<%= count %> 回Habitoween (Habitica ハロウィン)の衣装コンテストに出場しました。エントリーの一部は、blog.habitrpg.comでご覧いただけます!",
"memberSince": "メンバー登録日",
"lastLoggedIn": "- 最後のログイン",
"notPorted": "この機能はオリジナルサイトからまだ移植されていません",
@@ -122,7 +122,7 @@
"error": "エラー",
"menu": "メニュー",
"notifications": "通知",
- "noNotifications": "You have no notifications.",
+ "noNotifications": "新しいメッセージはありません",
"clear": "クリア",
"endTour": "ツアーを終える",
"audioTheme": "BGMテーマ",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu のテーマ",
"audioTheme_beatscribeNesTheme": "Beatscribeのファミコン音源テーマ",
"audioTheme_arashiTheme": "Arashiのテーマ",
+ "audioTheme_maflTheme": "MAFL テーマ",
+ "audioTheme_pizildenTheme": "Pizildenのテーマ",
"askQuestion": "質問する",
"reportBug": "バグを報告する",
"HabiticaWiki": "Habitica Wiki",
@@ -274,6 +276,6 @@
"emptyMessagesLine2": "メッセージを送って会話を始めましょう!",
"letsgo": "Let's Go!",
"selected": "選択中",
- "howManyToBuy": "How many would you like to buy?",
- "habiticaHasUpdated": "There is a new Habitica update. Refresh to get the latest version!"
+ "howManyToBuy": "いくつ買いますか?",
+ "habiticaHasUpdated": "新しいバージョンがあります。ページを再読み込みして更新してください!"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/groups.json b/website/common/locales/ja/groups.json
index ba1e04eca24..a6987cd5f28 100644
--- a/website/common/locales/ja/groups.json
+++ b/website/common/locales/ja/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "必須でないメッセージ",
"yesRemove": "はい、削除してください。",
"foreverAlone": "自作のメッセージの「いいね」はできません。そんな人にならないで。",
- "sortLevel": "レベルで並べ替え",
- "sortRandom": "ランダムで並べ替え",
- "sortPets": "ペット数で並べ替え",
- "sortName": "アバターの名前順で並べ替え",
- "sortBackgrounds": "バックグラウンドで並べ替え",
- "sortHabitrpgJoined": "Habiticaの登録日順に並べ替え",
- "sortHabitrpgLastLoggedIn": "最後にログインした時間順で並べ替え",
- "ascendingSort": "昇順に並べ替え",
- "descendingSort": "降順に並べ替え",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "ジェム4個でギルドを作成しますか?",
"leaveGroupCha": "ギルドのチャレンジをやめて...",
"confirm": "確認",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "このメッセージを削除する権限がありません。",
"onlyGroupLeaderCanEditTasks": "タスクを管理する権限がありません。",
"onlyGroupTasksCanBeAssigned": "グループのタスクのみ、割り当てできます",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "あなたのチャットの特権は取り消されました。",
"newChatMessagePlainNotification": "<%= groupName %> に <%= authorName %> からの新着メッセージがあります。ここをクリックするとチャットページが開きます!",
"newChatMessageTitle": "<%= groupName %> に 新着メッセージ",
@@ -279,7 +291,6 @@
"funExtras": "楽しいおまけ",
"enterprisePlansButton": "企業向けプランについて質問する",
"enterprisePlansDescription": "個別のニーズに対応できる、大規模な導入を検討していますか? 私たちの企業向けプランが合うかどうか試してみてください。",
- "enterprisePlansEmailSubject": "企業向けプランに関する質問",
"familyPlansButton": "ファミリープランのメーリングリストに登録する",
"familyPlansDescription": "家庭を切り盛りするのに、もっと親しみやすいやり方をお探しですか? ファミリープランがもうすぐ登場します!",
"createAGroup": "グループの作成",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "あなたはプランが中止されたグループに参加しようとしています。無料の寄付者特典を得ることはできません。",
"cannotChangeLeaderWithActiveGroupPlan": "グループにアクティブなプランがある間はリーダーを変更できません。",
"leaderCannotLeaveGroupWithActiveGroup": "リーダーはアクティブなプランを持つグループから脱退することはできません。",
- "youHaveGroupPlan": "あなたはグループプランに加入しているグループのメンバーなので、寄付の特典を無料で得ることができます。これはグループプランに加入しているグループから脱退しない限り続きます。あなたの寄付の継続月数は、グループプランの終了から反映されます。",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "グループプランを中止",
"confirmCancelGroupPlan": "本当にグループプランを中止し、メンバー全員から無料の寄付者特典を含むすべての特典を削除しますか?",
"canceledGroupPlan": "キャンセルされたグループプラン",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/limited.json b/website/common/locales/ja/limited.json
index 7835afed596..2884fb419b3 100644
--- a/website/common/locales/ja/limited.json
+++ b/website/common/locales/ja/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "仮面舞踏会の魔導士(魔道士)",
"fall2017HauntedHouseSet": "幽霊屋敷の治療師(治療師)",
"fall2017TrickOrTreatSet": "トリックオア盗賊(盗賊)",
+ "winter2018ConfettiSet": "紙吹雪の魔道士(魔道士)",
+ "winter2018GiftWrappedSet": "ギフトラッピングの戦士 (戦士)",
+ "winter2018MistletoeSet": "ヤドリギの治療師(治療師)",
+ "winter2018ReindeerSet": "トナカイ盗賊(盗賊)",
"eventAvailability": "<%= date(locale) %>まで購入できます。",
"dateEndApril": "4月19日",
"dateEndMay": "5月17日",
@@ -119,6 +123,10 @@
"dateEndJuly": "7月29日",
"dateEndAugust": "8月31日",
"dateEndOctober": "10月31日",
- "dateEndNovember": "November 30",
- "discountBundle": "パック"
+ "dateEndNovember": "11月30日",
+ "dateEndJanuary": "1月31日",
+ "discountBundle": "パック",
+ "winterPromoGiftHeader": "寄付を誰かに贈って、無料で寄付会員になろう!",
+ "winterPromoGiftDetails1": "1月12日までの間に限り、誰かに寄付会員の権利を贈ると、同じだけの期間分、無料で寄付会員になれます!",
+ "winterPromoGiftDetails2": "もしあなたやギフトの相手がすでに寄付会員の権利を持っている場合、ギフトによる寄付権は、既存の寄付の期限が切れるかキャンセルされた後に有効になります。ご注意ください。皆様のサポートに感謝します! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/loadingscreentips.json b/website/common/locales/ja/loadingscreentips.json
index cb3018e16a7..78dfa495c86 100644
--- a/website/common/locales/ja/loadingscreentips.json
+++ b/website/common/locales/ja/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "ヒント #<%= tipNumber %>",
"tip1": "Habitica のスマホ アプリで、外出中もタスクをチェックしましょう。",
- "tip2": "レベル 100 に達すると、無料で「転生のオーブ」がアンロックされます。新しい冒険をはじめましょう!",
+ "tip2": "任意の装備をクリックするとプレビューが表示されます。あるいは、左上の星マークをクリックすると瞬時に装備できます!",
"tip3": "タスクをパッと区別できるように、絵文字を使いましょう。",
"tip4": "# 記号をタスク名の前につけると、すごくデカくなります!",
- "tip5": "「勢いボーナス」は朝に唱えるのがベスト。長く効果を発揮します。",
- "tip6": "今の自分にふさわしい状態に設定されているか、ときどきタスクを再チェックしましょう。",
+ "tip5": "スキルは朝に使うのが一番。その方が勢いボーナスの効果が長く持続します。",
+ "tip6": "タスクにマウスカーソルを合わせて三点ドットをクリックし、より高度なタスク操作を行いましょう。たとえば、タスクをリストの一番上/下に移動させたりできます。",
"tip7": "背景の中には、パーティーメンバーが同じものを使うことでぴったりつながるものがあります。例 : 「山の湖」、「仏塔」、「ゆるやかな丘」",
- "tip8": "だれかにプライベート メッセージを送ってみましょう! チャット画面の名前のそばにある封筒をクリックします。",
- "tip9": "「ギルドリーダー (Guild Leaders)」と「チャレンジ クリエイター(Challenge Creators)」のギルドで、ギルドを開く際のアドバイスを受けられます。",
+ "tip8": "だれかにメッセージを送ってみましょう! チャット画面の名前をクリックし、プロフィール画面の一番上にある封筒マークをクリックします。",
+ "tip9": "所持品やショップ、ギルド、チャレンジで必要なものを探すため、フィルター機能と検索バーを使ってみましょう。",
"tip10": "チャレンジで競って優勝するとジェムがもらえます。毎日新しいチャレンジがリリースされています!",
- "tip11": "アバターでおしゃれするのが好きなら、「Costume Carnival (ファッションの祭典) 」ギルドをチェックしてみましょう。",
- "tip12": "「Challenge...Accepted ( チャレンジ...承認 )」ギルドに参加しましょう。さまざまなチャレンジを定期的に開催しています。",
- "tip13": "4人以上のパーティーに加わると、責任感が増します!",
+ "tip11": "4人以上でパーティーを組むと、責任感が増します!",
+ "tip12": "To-Do にチェックリストをくわえると、獲得ポイントが増えます!",
+ "tip13": "タスクページの「フィルター」ボタンをクリックすると、散らかったタスク一覧を整理しやすくなります!",
"tip14": "標語や名言を +・- をつけた習慣に入れるといいですよ。",
- "tip15": "To-Do にチェックリストをくわえると、獲得ポイントが増えます!",
- "tip16": "データ タブは、進行状況を確認する価値ある視点になります。チェックしてみましょう。",
- "tip17": "タグを使うと、散らかったタスク一覧を整理しやすくなります!",
+ "tip15": "「クラス・マスターの謎」クエストシリーズをコンプリートし、Habiticaの秘められた伝承を学びましょう。",
+ "tip16": "フッター部分にあるデータ表示ツールへのリンクをクリックしてみましょう。進捗状況を確認する上で重要な示唆を得ることができます。",
+ "tip17": "モバイルアプリ版では、タスクにリマインダを設定できます。",
"tip18": "いい (+) だけ、悪い(-) だけの習慣は、だんだんと「色があせたり」、黄色に戻ったりします。",
"tip19": "知能の能力値を上げましょう。タスクを完了したときに得られる経験値が増えます。",
"tip20": "知覚の能力値を上げましょう。よりたくさんの落し物やゴールドを拾うことができます。",
"tip21": "力の能力値を上げましょう。ボスへのダメージが大きくなり、会心の一撃の確率が上がります。",
"tip22": "体質の能力値を上げましょう。達成できなかった日課から受けるダメージが小さくなります。",
- "tip23": "タスクについている棒グラフのアイコンをクリックして、とりくみを確認しましょう。",
- "tip24": "Habitica はオープンソースです! お手伝いしてくれるなら「Aspiring Legends ( 意欲的な伝説の英雄 )」ギルドで声をかけてください。",
+ "tip23": "レベル 100 に達すると、無料で「転生のオーブ」がアンロックされます。新しい冒険をはじめましょう!",
+ "tip24": "質問がありますか? Habitica Help ギルドで聞いてみてください!",
"tip25": "四季に合わせた大祭は、夏至・冬至、春分・秋分近くに開催されます。",
"tip26": "レベルの表示の左についている矢印は、「勢いボーナス」がついていることを表します。",
"tip27": "昨日日課を済ませたのに、チェックを入れるのを忘れてしまいましたか? ご心配なく! 昨日の活動を記録する機能によって、新しい1日を始める前に、した事を記録するチャンスが得られるでしょう!",
- "tip28": "設定 > サイト の「日付更新の時間」を設定すれば、好みの時間を 1 日の終わり・はじまりにできます。",
+ "tip28": "ユーザーアイコン > 設定 の「日付更新の時間」を設定すれば、好みの時間を 1 日の終わり・はじまりにできます。",
"tip29": "すべての日課を完了すると、「パーフェクトな日」の「勢いボーナス」がついて能力値が上がります。",
"tip30": "パーティーではなく、ギルドにも人を招待ができます。",
"tip31": "タスクの例として「Library of Tasks and Challenges」( タスクとチャレンジのライブラリー )」ギルドの既成のリストをチェックしてみましょう。",
- "tip32": "Habitica のコードの多くや、画像、それにクエストなどのシナリオはボランティアの貢献者がつくったものです。だれでも参加できます。",
- "tip33": "「掲示板 (The Bulletin Board)」ギルドをチェックしましょう。ギルド、チャレンジ、その他プレーヤーが作ったイベントのニュースが載っています。自分のを紹介することもできますよ!"
+ "tip32": "Habitica のコードの多くや、画像、それにクエストなどのシナリオはボランティアの貢献者がつくったものです! 「Aspiring Legends ( 意欲的な伝説の英雄 )」ギルドで声をかけてください。",
+ "tip33": "「掲示板 (The Bulletin Board)」ギルドをチェックしましょう。ギルド、チャレンジ、その他プレーヤーが作ったイベントのニュースが載っています。自分のを紹介することもできますよ!",
+ "tip34": "今の自分にふさわしい状態に設定されているか、ときどきタスクを再チェックしましょう。",
+ "tip35": "グループプランに参加しているユーザーは、グループ内の他のユーザーにタスクを割り当て、追加されたタスクの管理を任せることができます。"
}
diff --git a/website/common/locales/ja/messages.json b/website/common/locales/ja/messages.json
index a5d30b9ec1f..95da7e926a7 100644
--- a/website/common/locales/ja/messages.json
+++ b/website/common/locales/ja/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "\"<%= questText %>\" のクエストを見つけました!",
"messageAlreadyPurchasedGear": "以前にこの装備を購入しましたが、いまはもっていません。タスク ページの「ごほうび」からもう一度買えます。",
"messageAlreadyOwnGear": "このアイテムをすでに持っています。所持品のページに行って装備して下さい。",
+ "previousGearNotOwned": "この装備を手に入れるには、先に下のレベルの装備を買う必要があります。",
"messageHealthAlreadyMax": "体力はすでに最大です。",
"messageHealthAlreadyMin": "ああ、なんてこと! すでに体力が尽きているので、今から体力回復の薬を買っても仕方ありません。でも心配しないでください ー あなたは復活できます!",
"armoireEquipment": "<%= image %>宝箱に貴重な装備を見つけました : <%= dropText %>! 素晴らしい!",
@@ -52,10 +53,11 @@
"messageGroupChatFlagAlreadyReported": "このメッセージは報告済みです。",
"messageGroupChatNotFound": "メッセージが見つかりません!",
"messageGroupChatAdminClearFlagCount": "フラグ数をクリアーできるのは管理者だけです!",
+ "messageCannotFlagSystemMessages": "システムメッセージを報告することはできません。このメッセージに関してコミュニティガイドラインの違反を報告する必要がある場合は、スクリーンショットと説明をLemoness(<%= communityManagerEmail %>)にメールで送ってください。",
"messageGroupChatSpam": "おおっと!たくさんのメッセージを投稿しすぎたようです!少しだけ待ってから再度お試しください。キャンプ場では200個のメッセージまでしか一度に表示されませんので,Habiticaでは熟慮と吟味がなされた返信を奨励しています。あなたが言いかけたことを楽しみにしています。:)",
"messageUserOperationProtected": "「<%= operation %>」パスは、保護されたパスなので保存できません。",
"messageUserOperationNotFound": "<%= operation %> の操作は見つかりません",
"messageNotificationNotFound": "通知はありません。",
"notificationsRequired": "通知 ID が必要です。",
- "beginningOfConversation": "This is the beginning of your conversation with <%= userName %>. Remember to be kind, respectful, and follow the Community Guidelines!"
+ "beginningOfConversation": "<%= userName %>との会話の始まりです。相手に対して思いやりと敬意を持ち、コミュニティガイドラインを守ることを忘れないでください!"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/npc.json b/website/common/locales/ja/npc.json
index a7b2067bdb5..e0088ff6d2a 100644
--- a/website/common/locales/ja/npc.json
+++ b/website/common/locales/ja/npc.json
@@ -2,15 +2,15 @@
"npc": "NPC",
"npcAchievementName": "<%= key %> NPC",
"npcAchievementText": "Kickstarter プロジェクトへ最高レベルで資金提供!",
- "welcomeTo": "Welcome to",
+ "welcomeTo": "ようこそ",
"welcomeBack": "おかえりなさい!",
"justin": "Justin",
- "justinIntroMessage1": "Hello there! You must be new here. My name is Justin, your guide to Habitica.",
+ "justinIntroMessage1": "こんにちは!あなたは新しくここに来た人ですね。私の名前はジャスティン、Habiticaの案内人です。",
"justinIntroMessage2": "まず、アバターを作る必要があります。",
"justinIntroMessage3": "素晴らしい!さて、あなたはこの旅路で何をしてみたいですか?",
"introTour": "Here we are! I've filled out some Tasks for you based on your interests, so you can get started right away. Click a Task to edit or add new Tasks to fit your routine!",
- "prev": "Prev",
- "next": "Next",
+ "prev": "前へ",
+ "next": "次へ",
"randomize": "Randomize",
"mattBoch": "Matt Boch",
"mattShall": "<%= name %>、馬をお連れしましょうか? ペットに十分なエサを与えると乗騎となり、ここに現れます。さあ、またがりましょう!",
@@ -38,35 +38,35 @@
"displayEggForGold": "<%= itemType %>のたまごを売りますか?",
"displayPotionForGold": "<%= itemType %>薬を売りますか?",
"sellForGold": " <%= gold %> ゴールドで売る",
- "howManyToSell": "How many would you like to sell?",
+ "howManyToSell": "いくつ売ってくれますか?",
"yourBalance": "Your balance",
- "sell": "Sell",
+ "sell": "売る",
"buyNow": "Buy Now",
"sortByNumber": "Number",
"featuredItems": "Featured Items!",
- "hideLocked": "Hide locked",
- "hidePinned": "Hide pinned",
- "amountExperience": "<%= amount %> Experience",
- "amountGold": "<%= amount %> Gold",
+ "hideLocked": "ロックされたアイテムを隠す",
+ "hidePinned": "ピン留めされたアイテムを隠す",
+ "amountExperience": "<%= amount %> 経験値",
+ "amountGold": "<%= amount %> ゴールド",
"namedHatchingPotion": "<%= type %> たまごがえしの薬",
"buyGems": "ジェムを買う",
"purchaseGems": "ジェムを購入する",
"items": "アイテム",
"AZ": "A-Z",
- "sort": "Sort",
+ "sort": "ソート",
"sortBy": "Sort By",
"groupBy2": "Group By",
"sortByName": "名前",
"quantity": "数量",
- "cost": "Cost",
+ "cost": "価格",
"shops": "ショップ",
"custom": "カスタム",
"wishlist": "ほしい物",
"wrongItemType": "The item type \"<%= type %>\" is not valid.",
"wrongItemPath": "The item path \"<%= path %>\" is not valid.",
"unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.",
- "cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.",
- "purchasedItem": "You bought <%= itemName %>",
+ "cannotUnpinArmoirPotion": "体力回復の薬とラッキー宝箱のピンを外すことはできません。",
+ "purchasedItem": "<%= itemName %>を購入しました",
"ian": "Ian",
"ianText": "クエスト ショップへようこそ! ここでは友達といっしょにモンスターと戦うクエストの巻物を開くことができます。この美しい品ぞろえを確認して、右側でお買い上げください!",
"ianTextMobile": "クエストの巻物はいかがですか? 巻物を使って、パーティの仲間と共にモンスターと戦いましょう!",
@@ -88,7 +88,7 @@
"plusOneGem": "+ 1 ジェム",
"typeNotSellable": "その種類は売れません。<%= acceptedTypes %> のうちのいずれか 1 つでなくてはいけません。",
"userItemsKeyNotFound": "user.Items <%= type %> の中には、キーが見つかりません",
- "userItemsNotEnough": "user.items <%= type %> に十分な数のアイテムがありません",
+ "userItemsNotEnough": "<%= type %>が足りません",
"pathRequired": "パス文字列が必要",
"unlocked": "アイテムがアンロックされました",
"alreadyUnlocked": "フルセットはすでにアンロックされています",
@@ -112,7 +112,7 @@
"autoAllocate": "自動割り当て",
"autoAllocateText": "「自動割り当て」をチェックすると、タスクの属性をもとにアバターに自動的にステータスを割り当てます。タスクの属性は タスク > 編集 > 詳細設定 > 属性 で確認できます。例えば、「スポーツジム」の日課に「肉体的」が設定されていて、あなたがよく「スポーツジム」のタスクを達成すれば、自動的に「力」が増えていきます。",
"spells": "スキル",
- "spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed To-Do.",
+ "spellsText": "クラス固有のスキルをアンロックできるようになりました。最初のスキルはレベル 11 で獲得できます。マナは1日ごとに10 ポイントと、To-Do の完了ごとに 1 ポイント回復します。",
"skillsTitle": "スキル",
"toDo": "To-Do",
"moreClass": "クラス・システムの詳細な情報は Wikia をお読みください。",
@@ -128,7 +128,7 @@
"tourScrollDown": "一番下までスクロールして、すべてのオプションを見てください! アバターをもう一度クリックしてタスクのページに戻りましょう。",
"tourMuchMore": "タスクをこなしたら、友達とパーティーを組んだり、共通の趣味のギルドでチャットしたり、チャレンジに参加したりといったことができます!",
"tourStatsPage": "これはあなたのステータスページです! タスクを完了して実績を解除しましょう。",
- "tourTavernPage": "Welcome to the Tavern, an all-ages chat room! You can keep your Dailies from hurting you in case of illness or travel by clicking \"Pause Damage\". Come say hi!",
+ "tourTavernPage": "キャンプ場へようこそ! 年齢に関わらず参加できるチャットルームです。「ロッジで休む」をクリックすると、病気や旅行などの間に日課のダメージから身を守ることができます。よかったら一言あいさつしていってください!",
"tourPartyPage": "パーティーに入ると責任感が生まれます。友達を招待してクエストの巻き物をアンロックしましょう!",
"tourGuildsPage": "ギルドは共通の興味を持つプレイヤー同士のためのチャットグループです。リストから興味のあるグループを探して参加しましょう!誰でもHabiticaについて質問することができる Ask a Question guildもぜひチェックしてみて下さい!",
"tourChallengesPage": "チャレンジは、ユーザーが作成したテーマをもった一連のタスクです。チャレンジに加わると、あなたにそのタスクが加わります。賞金のジェムをかけて、他のユーザーと競争しましょう!",
diff --git a/website/common/locales/ja/pets.json b/website/common/locales/ja/pets.json
index 74052e1b262..1307b49f980 100644
--- a/website/common/locales/ja/pets.json
+++ b/website/common/locales/ja/pets.json
@@ -75,7 +75,7 @@
"hatchAPot": "新しい<%= potion %><%= egg %>をかえしますか?",
"hatchedPet": "<%= potion %><%= egg %> が生まれました!",
"hatchedPetGeneric": "新しいペットが生まれました!",
- "hatchedPetHowToUse": "Visit the [Stable](/inventory/stable) to feed and equip your newest pet!",
+ "hatchedPetHowToUse": "[動物小屋](/所持品/動物小屋)へ行って新しいペットを装備し、えさをやりましょう!",
"displayNow": "いますぐ表示",
"displayLater": "あとで表示",
"petNotOwned": "このペットをもっていません。",
@@ -123,5 +123,5 @@
"clickOnPetToFeed": "ペットをクリックして<%= foodName %>をあげます。あとは成長を見守りましょう!",
"dragThisPotion": "この<%= potionName %>をたまごにドラッグして、たまごをかえしましょう!",
"clickOnEggToHatch": "たまごをクリックして<%= potionName %>をたまごに使い、たまごをかえしましょう!",
- "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
+ "hatchDialogText": "<%= potionName %>たまごがえしの薬を<%= eggName %>のたまごにかけると、<%= petName %>が生まれます。"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/quests.json b/website/common/locales/ja/quests.json
index 71dfbadb860..fdddfd523c2 100644
--- a/website/common/locales/ja/quests.json
+++ b/website/common/locales/ja/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> 個のクエスト アイテムを発見",
"questDamage": "+ <%= val %> のボスへのダメージ",
"begin": "はじめる",
- "bossHP": "ボスの体力",
+ "bossHP": "Boss HP",
"bossStrength": "ボスの強さ",
"rage": "激怒",
"collect": "獲得",
@@ -78,6 +78,7 @@
"mustLvlQuest": "このクエストを購入するためにはレベルが<%= level %>以上でなければなりません!",
"mustInviteFriend": "このクエストを入手するには、友人をパーティーに招待しなくてはいけません。いま招待しますか?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "このクエストを中止します。よろしいですか? 招待への承認は全て無効になります。クエストの巻物は、クエストの所有者の手に戻ります。",
"sureAbort": "このミッションを中断します。よろしいですか? パーティの全員が中断になり、すべての進行状況は失われます。クエストの巻物はクエスト所有者の手に戻ります。",
"doubleSureAbort": "クエストを中断します。本当によろしいですか? パーティーの仲間から永遠に憎まれることのないように!",
diff --git a/website/common/locales/ja/questscontent.json b/website/common/locales/ja/questscontent.json
index 2554c01955a..b4a1fd7cddd 100644
--- a/website/common/locales/ja/questscontent.json
+++ b/website/common/locales/ja/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "アルマジロ( たまご )",
"questArmadilloUnlockText": "市場でアルマジロのたまごを買えるようにする",
"questCowText": "モー変異した牛",
- "questCowNotes": "トックミアイ牧場は長く暑い 1 日でした。1 すじの水を飲んで眠る以外に何もいらない、そんな 1 日でした。あなたが白日夢を見るようにつったっていると、@Soloana が突然叫びました。「みんな、走って! 賞品の牛がモー変異した!」
@eevachu はかたずを飲んで「みんなの悪い習慣が影響を与えたに違いない。」
「急いで!」とフェラレム・タウ。「乳牛たちまでモー変異するまでに、何とかしましょう」
しかと聞きました。ボーっとするのはおしまい。悪い習慣をまとめるべきときです!",
+ "questCowNotes": "トックミアイ牧場は長く暑い 1 日でした。1 すじの水を飲んで眠る以外に何もいらない、そんな 1 日でした。あなたが白日夢を見るようにつったっていると、@Soloana が突然叫びました。「みんな、走って! 賞品の牛がモー変異した!」
@eevachu はかたずを飲んで「みんなの悪い習慣が影響を与えたに違いない。」
「急いで!」と@Feralem Tau。「乳牛たちまでモー変異するまでに、何とかしましょう」
しかと聞きました。ボーっとするのはおしまい。悪い習慣をまとめるべきときです!",
"questCowCompletion": "価値あるいい習慣をしぼり出しつづけ、ついに牛は元の姿を取り戻しました。牛はかわいい茶色い目であなたを見つめ、3 つのたまごを突き出しました。
@fuzzytrees は笑って、たまごをあなたに手渡しながら、「このたまごにベビーがいたとしてら、モー変異してるかもしれないよ。でも、あなたを信頼してる。いい習慣にこだわって、いい牛たちを育てくれるだろうってね!」",
"questCowBoss": "モー変異した牛",
"questCowDropCowEgg": "牛 ( たまご )",
@@ -549,5 +549,13 @@
"questYarnCompletion": "刺さった編み棒状の器官をかすかに震わせ、弱々しく吠えると、ついに恐怖のスパ毛ッティモンスターはほどけて毛糸の山になりました。
「この子たちの面倒をみてほしいんだ」店主の@JinjooHat は両手に毛糸を抱えて言います。「えさを与えて適切に世話をすれば、心を飛び立たせてくれるような、新しくてエキサイティングなプロジェクトに成長するだろうよ」",
"questYarnBoss": "恐怖のスパ毛ッティモンスター",
"questYarnDropYarnEgg": "毛糸(たまご)",
- "questYarnUnlockText": "市場での毛糸のたまご購入をアンロック"
+ "questYarnUnlockText": "市場での毛糸のたまご購入をアンロック",
+ "winterQuestsText": "冬のクエストセット",
+ "winterQuestsNotes": "「猟師のサンタ」「クマの子を見つけて」「霜の鳥」のセット。12月31日まで購入できます。",
+ "questPterodactylText": "テラー・ダクティル",
+ "questPterodactylNotes": "邪悪な叫び声が空気を切り裂いたその時、あなたは平穏なオダヤカニ断崖を散策しているところでした。恐ろしい生き物がこちらに向かって飛んでくるのを見て、あなたはすさまじい恐怖に圧倒されます。逃げ出しそうになったとき、@Lilith of Alfheim があなたを引き止めました。「落ち着いて! あれはただのテラー・ダクティル(怖がらせ竜)だよ」
@Procyon Pがうなずき、「近くに巣を作っているんだけど、悪い習慣や終わらせていない日課の匂いに引き寄せられてきたんだ」
「心配ご無用」@Katy133 は言います。「私たちがより生産的になって打ち負かせばいいだけさ!」新たな目的意識があなたの全身を満たし、敵に立ち向かう時が来ました。",
+ "questPterodactylCompletion": "最後の金切り声とともにテラー・ダクティルは崖からまっさかさまに落ちます。あなたはそれが遠い大平原まで飛び去るのを走って見届けました。「ふぅ、終わってよかったよ」あなたが言うと、「そうだね」 @GeraldThePixelが答えます。「でも見て! 後にたまごが残ってる!」@Edge が3つのたまごを投げてよこし、あなたは彼らを静かな、良い習慣と青色のタスクに囲まれた環境で育てることを誓うのでした。",
+ "questPterodactylBoss": "テラー・ダクティル",
+ "questPterodactylDropPterodactylEgg": "翼竜(たまご)",
+ "questPterodactylUnlockText": "市場での翼竜のたまご購入をアンロック"
}
\ No newline at end of file
diff --git a/website/common/locales/ja/settings.json b/website/common/locales/ja/settings.json
index efbe4cec50f..4e16657c615 100644
--- a/website/common/locales/ja/settings.json
+++ b/website/common/locales/ja/settings.json
@@ -65,7 +65,7 @@
"resetText1": "警告‼ この操作で、あなたのアカウントの多くの部分をリセットします。とてもがっかりすることです。しかし、お試しで短時間プレーした初心者ユーザーの一部には便利だと思われます。",
"resetText2": "すべてのレベル、ゴールド、経験値を失います。すべてのタスク ( チャレンジ関連のものを除く ) は完全に削除され、履歴データもすべて削除されます。所持品のすべてを失いますが、限定装備や寄付会員むけのミステリーアイテムなど現在あなたがもっている物はすべて買い戻すことができます(クラス固有の装備は、該当するクラスにならなくてはいけません)。現在のクラスと、ペットと乗騎は維持されます。「転生のオーブ」を使のはいかがでしょうか? タスクと所持品も維持される、より安全な選択肢です。",
"deleteLocalAccountText": "本当にいいのですか? この操作であなたのアカウントは完全に削除され、復元はできません! もう一度 Habitica を使うには、新しいアカウントを登録しなくてはなりません。貯めているジェム、使ったジェムは、返金できません。本当にアカウントを削除するのなら、下のテキストボックスにパスワードを入力してください。",
- "deleteSocialAccountText": "本当によろしいですか? あなたのアカウントは永久に削除され、復活させることはできません! 再びHabiticaを利用するには新しいアカウント登録が必要となります。ジェムは使用済み・未使用を問わず返金できません。あなたが本当にそれでいいことを確認できたら、下のテキストボックスに\"DELETE\"と入力してください。",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "サードパーティのアプリケーションで使用する際にこちらをコピーしてください。しかし、APIトークンはパスワードのようなもので、公開しないでください。ユーザーIDを求められる場合はありますが、GitHub など他人から見える場所には、APIトークンは絶対に投稿しないでください。",
@@ -118,6 +118,7 @@
"giftedSubscription": "贈られた寄付(有料利用)",
"giftedSubscriptionInfo": "<%= name %> から <%= months %> カ月分の寄付(有料)利用のプレゼントが届きました!",
"giftedSubscriptionFull": "こんにちは、<%= userName %>。<%= sender %> から <%= monthCount %> カ月分の寄付(有料)利用のプレゼントが届きました!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "パーティへ招待されました",
"invitedGuild": "ギルドへ招待されました",
"importantAnnouncements": "タスクの完了し、賞を受けるために、チェックインを通知します。",
diff --git a/website/common/locales/ja/spells.json b/website/common/locales/ja/spells.json
index 1669c784b47..397183dd5e0 100644
--- a/website/common/locales/ja/spells.json
+++ b/website/common/locales/ja/spells.json
@@ -1,55 +1,55 @@
{
"spellWizardFireballText": "火炎爆破",
- "spellWizardFireballNotes": "You summon XP and deal fiery damage to Bosses! (Based on: INT)",
+ "spellWizardFireballNotes": "経験値を手に入れ、燃え盛る炎でボスに追加のダメージを与えます!(基準 : 知能)",
"spellWizardMPHealText": "エーテル波動",
- "spellWizardMPHealNotes": "You sacrifice mana so the rest of your Party gains MP! (Based on: INT)",
+ "spellWizardMPHealNotes": "あなたのマナと引き換えに、他のパーティーメンバー全員がマナを獲得します! (基準 : 知能)",
"spellWizardEarthText": "地震",
- "spellWizardEarthNotes": "Your mental power shakes the earth and buffs your Party's Intelligence! (Based on: Unbuffed INT)",
+ "spellWizardEarthNotes": "精神の力で大地を揺らします。パーティー全員の知能に勢いボーナスがつきます! ( 基準 : 勢いなしの知能 )",
"spellWizardFrostText": "酷寒の霜",
- "spellWizardFrostNotes": "With one cast, ice freezes all your streaks so they won't reset to zero tomorrow!",
+ "spellWizardFrostNotes": "これを一度唱えると、あなたのタスクはすべて凍りつき、唱えた次の日はタスクの連続実行がリセットされなくなります!",
"spellWizardFrostAlreadyCast": "今日、すでにこの魔法を唱えました。連続実行は凍結されているので、再度唱える必要はありません。",
"spellWarriorSmashText": "強烈なスマッシュ",
- "spellWarriorSmashNotes": "You make a task more blue/less red and deal extra damage to Bosses! (Based on: STR)",
+ "spellWarriorSmashNotes": "任意のタスクの色を青に近づけて、ボスに追加ダメージを与えます!(基準 : 力)",
"spellWarriorDefensiveStanceText": "守勢の体勢",
- "spellWarriorDefensiveStanceNotes": "You crouch low and gain a buff to Constitution! (Based on: Unbuffed CON)",
+ "spellWarriorDefensiveStanceNotes": "体を低くして構えます。体質に勢いボーナスがつきます! ( 基準 : 勢いなしの体質値 )",
"spellWarriorValorousPresenceText": "勇烈な貫禄",
- "spellWarriorValorousPresenceNotes": "Your boldness buffs your whole Party's Strength! (Based on: Unbuffed STR)",
+ "spellWarriorValorousPresenceNotes": "あなたの勇敢さにより、パーティの全員の力に勢いボーナスがつきます! ( 基準 : 勢いなしの力値 )",
"spellWarriorIntimidateText": "威嚇的な視線",
- "spellWarriorIntimidateNotes": "Your fierce stare buffs your whole Party's Constitution! (Based on: Unbuffed CON)",
+ "spellWarriorIntimidateNotes": "敵を猛然とにらみつけます。パーティ全員の体質に勢いのボーナスがつきます! ( 体質: 勢いなしの体質値 )",
"spellRoguePickPocketText": "スリ",
- "spellRoguePickPocketNotes": "You rob a nearby task and gain gold! (Based on: PER)",
+ "spellRoguePickPocketNotes": "近くのタスクにスリをはたらきます。ゴールドを獲得!(基準 : 知覚)",
"spellRogueBackStabText": "背後から一突き",
- "spellRogueBackStabNotes": "You betray a foolish task and gain gold and XP! (Based on: STR)",
+ "spellRogueBackStabNotes": "愚かなタスクを裏切ります。ゴールドと経験値を獲得! (基準 : 力)",
"spellRogueToolsOfTradeText": "商売道具",
- "spellRogueToolsOfTradeNotes": "Your tricky talents buff your whole Party's Perception! (Based on: Unbuffed PER)",
+ "spellRogueToolsOfTradeNotes": "あなたの巧みな才能により、パーティ全員の知覚に勢いボーナスがつきます! ( 基準 : 勢いなしの知覚値 )",
"spellRogueStealthText": "ステルス",
- "spellRogueStealthNotes": "With each cast, a few of your undone Dailies won't cause damage tonight. Their streaks and colors won't change. (Based on: PER)",
+ "spellRogueStealthNotes": "唱えるたびに、日課のいくつかをやり残しても、今夜はダメージを受けずに済むようになります。連続実行やタスクの色にも影響を与えません。(基準:知覚)",
"spellRogueStealthDaliesAvoided": "<%= originalText %> のがれた日課 : <%= number %> 件",
"spellRogueStealthMaxedOut": "すべての日課をのがれています。再度唱える必要はありません。",
"spellHealerHealText": "ヒール",
- "spellHealerHealNotes": "Shining light restores your health! (Based on: CON and INT)",
+ "spellHealerHealNotes": "まばゆい光が体力を回復します! (基準 : 体質と知能)",
"spellHealerBrightnessText": "焼けるような輝き",
- "spellHealerBrightnessNotes": "A burst of light makes your tasks more blue/less red! (Based on: INT)",
+ "spellHealerBrightnessNotes": "炸裂する光が、あなたのタスクの色を青に近づけます。(基準 : 知能 )",
"spellHealerProtectAuraText": "守りのオーラ",
- "spellHealerProtectAuraNotes": "You shield your Party by buffing their Constitution! (Based on: Unbuffed CON)",
+ "spellHealerProtectAuraNotes": "ダメージからパーティを守ります。パーティの全員の体質に勢いのボーナスがつきます! ( 基準 : 勢いなしの体質値 )",
"spellHealerHealAllText": "おまじない",
- "spellHealerHealAllNotes": "Your soothing spell restores your whole Party's health! (Based on: CON and INT)",
+ "spellHealerHealAllNotes": "あなたの癒しの魔法により、パーティーメンバー全員の体力が回復します!( 基準 : 体質と知能 )",
"spellSpecialSnowballAuraText": "雪玉",
- "spellSpecialSnowballAuraNotes": "Turn a friend into a frosty snowman!",
+ "spellSpecialSnowballAuraNotes": "友達を真っ白なゆきだるまに変えよう!",
"spellSpecialSaltText": "塩",
- "spellSpecialSaltNotes": "Reverse the spell that made you a snowman.",
+ "spellSpecialSaltNotes": "雪玉の効果を取り消す。",
"spellSpecialSpookySparklesText": "不気味な光",
- "spellSpecialSpookySparklesNotes": "Turn your friend into a transparent pal!",
+ "spellSpecialSpookySparklesNotes": "友達を透明に変えよう!",
"spellSpecialOpaquePotionText": "不透明の薬",
- "spellSpecialOpaquePotionNotes": "Reverse the spell that made you transparent.",
+ "spellSpecialOpaquePotionNotes": "不気味な光の効果を取り消す。",
"spellSpecialShinySeedText": "輝く種",
"spellSpecialShinySeedNotes": "友達を楽しそうな花に変えよう!",
"spellSpecialPetalFreePotionText": "花びら消しポーション",
- "spellSpecialPetalFreePotionNotes": "Reverse the spell that made you a flower.",
+ "spellSpecialPetalFreePotionNotes": "輝く種の効果を取り消す。",
"spellSpecialSeafoamText": "海の泡",
"spellSpecialSeafoamNotes": "友達を海の生き物に変えよう!",
"spellSpecialSandText": "砂",
- "spellSpecialSandNotes": "Reverse the spell that made you a sea star.",
+ "spellSpecialSandNotes": "海の泡の効果を取り消す。",
"spellNotFound": "スキル\"<%= spellId %>\" が見つかりません。",
"partyNotFound": "パーティが見つかりません。",
"targetIdUUID": "\"targetId\" のUserIDが無効です。",
diff --git a/website/common/locales/ja/subscriber.json b/website/common/locales/ja/subscriber.json
index 8217994187d..eec3e7b9988 100644
--- a/website/common/locales/ja/subscriber.json
+++ b/website/common/locales/ja/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "寄付の中止",
"cancelSubInfoGoogle": "寄付を中止する場合や、すでに中止した寄付の終了日を確認する際には、Google Play ストア アプリの「アカウント」 > \"Subscriptions\" セクションへ進んでください。この画面ではあなたの寄付が中止されたかどうかを示すことはできません。",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "中止した寄付",
"cancelingSubscription": "寄付の中止処理をしています",
"adminSub": "管理者の寄付",
@@ -136,6 +137,7 @@
"mysterySet201709": "魔法術の学徒セット",
"mysterySet201710": "いばりんぼの小鬼セット",
"mysterySet201711": "カーペット乗りセット",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "スチームパンク標準 セット",
"mysterySet301405": "スチームパンク アクセサリー セット",
"mysterySet301703": "クジャクのスチームパンク セット",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "カードの種類が不明です。",
"invalidCoupon": "無効なクーポン コードです。",
"couponUsed": "すでに使われたクーポン コードです。",
- "noSudoAccess": "sudo アクセス権がありません。",
"couponCodeRequired": "クーポン コードが必要です。",
"eventRequired": "\"req.params.event\" が必要です。",
"countRequired": "\"req.query.count\" が必要です。",
diff --git a/website/common/locales/ja/tasks.json b/website/common/locales/ja/tasks.json
index 410ed1f470f..9af007a6804 100644
--- a/website/common/locales/ja/tasks.json
+++ b/website/common/locales/ja/tasks.json
@@ -2,12 +2,12 @@
"clearCompleted": "完了済みを削除",
"lotOfToDos": "最近完了した 30 件の「To-Do」をここに表示します。より古いものは、「データ > データ表示ツール」または「データ > データをエクスポート > ユーザーデータ」で確認できます。",
"deleteToDosExplanation": "下のボタンをクリックすると、進行中のチャレンジやグループプランの「To-Do」を除いて、すべての完了した「To-Do」とアーカイブ済の「To-Do」が完全に削除されます。記録を保存しておきたい場合は、まずエクスポートしてください。",
- "addMultipleTip": "Tip: To add multiple Tasks, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
+ "addMultipleTip": "Tip:1複数のタスクを追加するには、(Shift + Enter)でタスクを分割し、\"Enter\"キーで確定して下さい。",
"addsingle": "1件追加",
- "addATask": "Add a <%= type %>",
+ "addATask": "<%= type %>の追加",
"editATask": "<%= type %>の編集",
"createTask": "<%= type %>の作成",
- "addTaskToUser": "Add Task",
+ "addTaskToUser": "タスクを追加",
"scheduled": "期限付き",
"theseAreYourTasks": "ここには、あなたの<%= taskType %>が表示されます。",
"habit": "習慣",
@@ -25,8 +25,8 @@
"checklist": "チェックリスト",
"checklistText": "タスクをより小さく分割しましょう! To-Do から得られる経験値とゴールドを増やし、日課を実行しなかった場合のダメージを減らすことができます。",
"newChecklistItem": "新しいチェックリストを追加",
- "expandChecklist": "Expand Checklist",
- "collapseChecklist": "Collapse Checklist",
+ "expandChecklist": "チェックリストを開く",
+ "collapseChecklist": "チェックリストを閉じる",
"text": "タイトル",
"extraNotes": "メモ",
"notes": "メモ",
@@ -115,11 +115,11 @@
"fortifyText": "防御は、チャレンジ関連のものを除くすべてのタスクを中間状態 (黄色) に戻し、追加した直後の状態にします。体力を満タンにします。これは、赤いタスクがゲームを難しくしていたり、青いタスクがゲームを簡単にしていたりする場合に効果的です。もし、新しく始めることでやる気が出るなら、ジェムを使ってこの救済措置を手に入れましょう!",
"confirmFortify": "本当によろしいですか?",
"fortifyComplete": "防御を完了しました。",
- "sureDelete": "Are you sure you want to delete this task?",
+ "sureDelete": "このタスクを削除します。よろしいですか?",
"sureDeleteCompletedTodos": "完了した To-Do を削除します。よろしいですか?",
"streakCoins": "連続実行ボーナス!",
- "taskToTop": "To top",
- "taskToBottom": "To bottom",
+ "taskToTop": "上へ",
+ "taskToBottom": "下へ",
"emptyTask": "まずタスクのタイトルを入力してください。",
"dailiesRestingInInn": "あなたはロッジに泊まっています! 今夜は日課が未実施でもダメージを受けません。しかし日課は毎日リフレッシュされます。クエスト中の場合、ロッジを出るまでダメージをうけたりアイテムを集めたりできませんが、パーティの仲間が日課をさぼったら、ボスキャラからのダメージを受けます。",
"habitHelp1": "いい習慣は、あなたがよく行うべきものです。<%= plusIcon %> をクリックするとゴールドと経験値が得られます。",
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "この日課が未完了のときは、ダメージを確定する前に確認する",
"yesterDailiesDescription": "この設定が適用されていると、Habiticaはあなたのアバターに与えるダメージを確定する前に、未完了になっている日課があなたの意思によるものか質問します。こうすることで、意図せぬダメージからあなたを守ることができます。",
"repeatDayError": "曜日を最低1つは選択してください。",
- "searchTasks": "Search titles and descriptions..."
+ "searchTasks": "タイトルや内容で検索…",
+ "sessionOutdated": "セッションが古くなっています。ページを更新するか、syncボタンを押して下さい。"
}
\ No newline at end of file
diff --git a/website/common/locales/nl/backgrounds.json b/website/common/locales/nl/backgrounds.json
index a61d2031a09..c164d645753 100644
--- a/website/common/locales/nl/backgrounds.json
+++ b/website/common/locales/nl/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Middernacht Kasteel",
"backgroundMidnightCastleNotes": "Wandel langs het Middernacht Kasteel.",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Vlieg door een tornado."
+ "backgroundTornadoNotes": "Vlieg door een tornado.",
+ "backgrounds122017": "SET 43: uitgebracht in december 2017",
+ "backgroundCrosscountrySkiTrailText": "Cross-Country Ski Trail",
+ "backgroundCrosscountrySkiTrailNotes": "Glide along a Cross-Country Ski Trail.",
+ "backgroundStarryWinterNightText": "Starry Winter Night",
+ "backgroundStarryWinterNightNotes": "Admire a Starry Winter Night.",
+ "backgroundToymakersWorkshopText": "Toymaker's Workshop",
+ "backgroundToymakersWorkshopNotes": "Bask in the wonder of a Toymaker's Workshop.",
+ "backgrounds012018": "SET 44: Released January 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Bask in the wintry glow of an Aurora.",
+ "backgroundDrivingASleighText": "Sleigh",
+ "backgroundDrivingASleighNotes": "Drive a Sleigh over snow-covered fields.",
+ "backgroundFlyingOverIcySteppesText": "Icy Steppes",
+ "backgroundFlyingOverIcySteppesNotes": "Fly over Icy Steppes."
}
\ No newline at end of file
diff --git a/website/common/locales/nl/challenge.json b/website/common/locales/nl/challenge.json
index 4ac1c5da042..f6a7391e938 100644
--- a/website/common/locales/nl/challenge.json
+++ b/website/common/locales/nl/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "Er moeten één of meerdere categorieën zijn geselecteerd",
"viewProgressOf": "Bekijk vooruitgang van",
- "selectMember": "Lid selecteren"
+ "selectMember": "Lid selecteren",
+ "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
+ "selectParticipant": "Select a Participant"
}
\ No newline at end of file
diff --git a/website/common/locales/nl/character.json b/website/common/locales/nl/character.json
index 5e34a1e5050..3a183e6a2f3 100644
--- a/website/common/locales/nl/character.json
+++ b/website/common/locales/nl/character.json
@@ -163,6 +163,7 @@
"dieText": "Je hebt een niveau, al je goud, en een willekeurig onderdeel van je uitrusting verloren. Herrijs, Habiteer, en probeer het opnieuw! Bedwing die slechte gewoontes, let erop je dagelijkse taken bij te houden en houd de dood van je af met een gezondheidsdrankje als je wankelt!",
"sureReset": "Are you sure? This will reset your character's class and allocated points (you'll get them all back to re-allocate), and costs 3 Gems.",
"purchaseFor": "Kopen voor <%= cost %> edelstenen?",
+ "purchaseForHourglasses": "Purchase for <%= cost %> Hourglasses?",
"notEnoughMana": "Niet genoeg mana.",
"invalidTarget": "Je kan daar geen vaardigheid op uitspreken.",
"youCast": "Je hebt <%= spell %> uitgesproken.",
diff --git a/website/common/locales/nl/content.json b/website/common/locales/nl/content.json
index a308bd9797c..729618ec263 100644
--- a/website/common/locales/nl/content.json
+++ b/website/common/locales/nl/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Yarn",
"questEggYarnMountText": "Flying Carpet",
"questEggYarnAdjective": "wollen",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Vind een uitbroeddrank om over dit ei te gieten en er zal een <%= eggAdjective(locale) %> <%= eggText(locale) %> uitkomen.",
"hatchingPotionBase": "Normale",
"hatchingPotionWhite": "Witte",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cupido",
"hatchingPotionShimmer": "Flikkering",
"hatchingPotionFairy": "Fee",
+ "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionNotes": "Giet dit over een ei, en er zal een <%= potText(locale) %> dierlijke metgezel uitkomen.",
"premiumPotionAddlNotes": "Niet te gebruiken op eieren van queeste-huisdieren.",
"foodMeat": "Vlees",
@@ -218,5 +222,6 @@
"foodCandyRed": "Kaneelsnoep",
"foodSaddleText": "Zadel",
"foodSaddleNotes": "Laat één van je dieren direct opgroeien tot een rijdier.",
+ "foodSaddleSellWarningNote": "Hey! This is a pretty useful item! Are you familiar with how to use a Saddle with your Pets?",
"foodNotes": "Voer dit aan een huisdier om het op te laten groeien tot een robuust ros."
}
\ No newline at end of file
diff --git a/website/common/locales/nl/contrib.json b/website/common/locales/nl/contrib.json
index 84956ddb26f..2c546f7c843 100644
--- a/website/common/locales/nl/contrib.json
+++ b/website/common/locales/nl/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, jij geweldig persoon! Je bent nu een bijdrager van rang <%= level %> omdat je Habitica geholpen hebt. Zie",
"contribLink": "welke prijzen je hebt verdiend voor je bijdrage!",
"contribName": "Bijdrager",
- "contribText": "Heeft een bijdrage geleverd aan Habitica (code, ontwerp, pixelkunst, juridisch advies, documenten, etc). Wil je deze insigne? Lees meer.",
+ "contribText": "Has contributed to Habitica, whether via code, art, music, writing, or other methods. To learn more, join the Aspiring Legends Guild!",
"readMore": "Lees meer",
"kickstartName": "Kickstarter-helper - $<%= key %> rang",
"kickstartText": "Heeft het Kickstarterproject gesteund",
diff --git a/website/common/locales/nl/front.json b/website/common/locales/nl/front.json
index 0a52f1957de..7eab5a37e57 100644
--- a/website/common/locales/nl/front.json
+++ b/website/common/locales/nl/front.json
@@ -30,6 +30,7 @@
"companyAbout": "Hoe het werkt",
"companyBlog": "Blog",
"devBlog": "Ontwikkelaarsblog",
+ "companyContribute": "Contribute",
"companyDonate": "Doneer",
"companyPrivacy": "Privacy",
"companyTerms": "Voorwaarden",
@@ -252,7 +253,7 @@
"missingNewPassword": "Ontbrekend nieuw wachtwoord.",
"invalidEmailDomain": "Je kunt je niet registreren met e-mailadressen met de volgende domeinnamen: <%= domains %>",
"wrongPassword": "Verkeerd wachtwoord.",
- "incorrectDeletePhrase": "Gelieve DELETE in hoofdletters te typen om je account te verwijderen.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Ongeldig e-mailadres.",
"emailTaken": "E-mailadres is al in gebruik door een account.",
"newEmailRequired": "Ontbrekend nieuw e-mailadres.",
diff --git a/website/common/locales/nl/gear.json b/website/common/locales/nl/gear.json
index 0a7499b17d5..0ade00716bb 100644
--- a/website/common/locales/nl/gear.json
+++ b/website/common/locales/nl/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Creepy Candelabra",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Feestmaal Hooivork",
"weaponMystery201411Notes": "Steek je vijanden neer of neem een schep van je favoriete eten - met deze hooivork kan het allemaal! Verleent geen voordelen. Abonnee-uitrusting november 2014.",
"weaponMystery201502Text": "Glimmende Gevleugelde Staff der Liefde alsook Wijsheid",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "wapenrusting",
"armorCapitalized": "Pantser",
"armorBase0Text": "Eenvoudige kleding",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Haunted House Armor",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Boodschappersgewaden",
"armorMystery201402Notes": "Het gewaad is glinsterend en sterk en heeft vele zakken om brieven te dragen. Verleent geen voordelen. Abonnee-uitrusting februari 2014.",
"armorMystery201403Text": "Woudlopersharnas",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunkpak",
"armorMystery301404Notes": "Net en zwierig, niet? Verleent geen voordelen. Abonnee-uitrusting februari 3015.",
"armorMystery301703Text": "Steampunk pauw jurk",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "helm",
"headgearCapitalized": "Hoofdbescherming",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Haunted House Helm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Helm van de Regenboogkrijger",
"headSpecialGaymerxNotes": "Om de GaymerX conferentie te vieren, is deze speciale helm gedecoreerd met een stralend, kleurrijk, regenboogpatroon! GaymerX is een game-conventie die LGTBQ en gamen viert en open is voor iedereen.",
"headMystery201402Text": "Gevleugelde helm",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Heb je wat extra handen nodig voor je taken? Deze transparante geleihelm heeft een aantal tentakels om je te helpen! Verleent geen voordelen. Abonnee-artikel juli 2017.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Chique hoge hoed",
"headMystery301404Notes": "Een chique hoge hoed voor lieden van deftigen huize! Abonnee-uitrusting januari 3015. Verleent geen voordelen.",
"headMystery301405Text": "Standaard hoge hoed",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "\nDit machtige stalen roer zal u helpen de strijd te winnen om gezond, gelukkig en productief te zijn! Verhoogt perceptie met <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
"shieldBase0Text": "No Off-Hand Equipment",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Haunted Orb",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Slachter van Voornemens",
"shieldMystery201601Notes": "Dit zwaard kan gebruikt worden om alle afleidingen af te weren. Verleent geen voordelen. Abonnee-uitrusting januari 2016.",
"shieldMystery201701Text": "Tijd-Stoppers-Schild",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Deze mantel heeft geheime zakken om al het goud te verstoppen dat je steelt van je taken. Verleent geen voordelen. Abonnee uitrusting juni 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "hoofdaccessoire",
"headAccessoryCapitalized": "Hoofdaccessoire",
"accessories": "Accessoires",
diff --git a/website/common/locales/nl/generic.json b/website/common/locales/nl/generic.json
index 76c9e81a021..4b50df2747e 100644
--- a/website/common/locales/nl/generic.json
+++ b/website/common/locales/nl/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Redder van Dralen",
"achievementDilatoryText": "Heeft geholpen de Donkere Draak van Dralen te verslaan tijdens het Zomerse Spetterevenement 2014!",
"costumeContest": "Deelnemer verkleedwedstrijd",
- "costumeContestText": "Heeft meegedaan aan de verkleedwedstrijd voor Halloween. Bekijk enkele van de inzendingen op de blog van Habitica!",
- "costumeContestTextPlural": "Heeft meegedaan aan <%= count %> verkleedwedstrijden voor Halloween. Bekijk enkele van de inzendingen op de blog van Habitica!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Lid sinds",
"lastLoggedIn": "- Laatst ingelogd op",
"notPorted": "Deze functie is nog niet overgedragen van de originele site.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Airu's thema",
"audioTheme_beatscribeNesTheme": "Beatscribe's NES-thema",
"audioTheme_arashiTheme": "Arashi's thema",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Vraag stellen",
"reportBug": "Fout melden",
"HabiticaWiki": "De Wiki van Habitica",
diff --git a/website/common/locales/nl/groups.json b/website/common/locales/nl/groups.json
index bb47551a295..1b5c85b3f73 100644
--- a/website/common/locales/nl/groups.json
+++ b/website/common/locales/nl/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Optioneel bericht",
"yesRemove": "Ja, verwijder ze",
"foreverAlone": "Je kunt je eigen bericht geen +1 geven. Zo iemand wil je niet zijn.",
- "sortLevel": "Sorteer op niveau",
- "sortRandom": "Sorteer willekeurig",
- "sortPets": "Sorteer op aantal huisdieren",
- "sortName": "Sorteer op avatarnaam",
- "sortBackgrounds": "Sorteer op achtergrond",
- "sortHabitrpgJoined": "Sorteer op aanmeldingsdatum Habitica",
- "sortHabitrpgLastLoggedIn": "Sorteer op laatste keer ingelogd",
- "ascendingSort": "Sorteer oplopend",
- "descendingSort": "Sorteer aflopend",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Gilde creëren voor 4 edelstenen?",
"leaveGroupCha": "Uitdagingen van dit gilde verlaten en...",
"confirm": "Bevestigen",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Niet gemachtigd om dit bericht te verwijderen!",
"onlyGroupLeaderCanEditTasks": "Niet gemachtigd om taken te beheren!",
"onlyGroupTasksCanBeAssigned": "Enkel groepstaken kunnen toegewezen worden.",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Je chatbevoegdheden zijn ingetrokken.",
"newChatMessagePlainNotification": "Nieuw bericht in <%= groupName %> door <%= authorName %>. Klik hier om de chat pagina te openen!",
"newChatMessageTitle": "Nieuw bericht in <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Leuke extra's",
"enterprisePlansButton": "Vraag naar bedrijfsplannen",
"enterprisePlansDescription": "Op zoek naar een grotere installatie met aangepaste wensen? Bekijk of onze bedrijfsabonnementen geschikt voor je zijn.",
- "enterprisePlansEmailSubject": "Vragen over bedrijfsabonnementen",
"familyPlansButton": "Inschrijven voor de mailinglijst over familieabonnementen",
"familyPlansDescription": "Wil je een gezelligere oplossingen om je huishouden te beheren? Familieabonnementen komen eraan!",
"createAGroup": "Maak een groep",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Je staat op het punt lid te worden van een groep met een geannuleerd plan. Je zult GEEN gratis abonnement ontvangen.",
"cannotChangeLeaderWithActiveGroupPlan": "Je kunt de leider niet veranderen zolang de groep een actief plan heeft.",
"leaderCannotLeaveGroupWithActiveGroup": "Een leider kan een groep niet verlaten zolang de groep een actief plan heeft",
- "youHaveGroupPlan": "Je hebt een gratis abonnement omdat je lid bent van een groep met een groepsplan. Dit eindigt wanneer je niet langer in de groep zit die een groepsplan heeft.. Elke maand van extra abonnementskrediet die je hebt zal toegepast worden aan het einde van het groepsplan.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Annuleer groepsplan",
"confirmCancelGroupPlan": "Weet je zeker dat je het groepsplan wilt annuleren en de voordelen van alle leden wilt verwijderen, inclusief hun gratis abonnementen?",
"canceledGroupPlan": "Geannuleerd groepsplan",
@@ -397,5 +408,6 @@
"groupBilling": "Groepsfacturering",
"wouldYouParticipate": "Wil je deelnemen?",
"managerAdded": "Manager succesvol toegevoegd",
- "managerRemoved": "Manager succesvol verwijderd"
+ "managerRemoved": "Manager succesvol verwijderd",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/nl/limited.json b/website/common/locales/nl/limited.json
index 3fb391e7856..e353eccf061 100644
--- a/website/common/locales/nl/limited.json
+++ b/website/common/locales/nl/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Verkrijgbaar voor aankoop tot <%=date(locale) %>.",
"dateEndApril": "19 april",
"dateEndMay": "17 mei",
@@ -120,5 +124,9 @@
"dateEndAugust": "31 augustus",
"dateEndOctober": "31 oktober",
"dateEndNovember": "30 november",
- "discountBundle": "bundel"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundel",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/nl/loadingscreentips.json b/website/common/locales/nl/loadingscreentips.json
index 14350861312..a56fbf1f2de 100644
--- a/website/common/locales/nl/loadingscreentips.json
+++ b/website/common/locales/nl/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Tip #<%= tipNumber %>",
"tip1": "Houd je taken overal in de gaten met de Habitica mobiele app. ",
- "tip2": "Bereik niveau 100 om de Bol der Hergeboorte gratis vrij te spelen en een nieuw avontuur te beginnen.",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Gebruik emoticons om snel onderscheid te maken tussen je taken.",
"tip4": "Gebruik het # teken voor de naam van een taak om het heel groot te maken!",
- "tip5": "Het beste is het om versterkingen 's morgens uit te spreken, zodat ze zo lang mogelijk effectief zijn. ",
- "tip6": "Herevalueer je taken van tijd tot tijd om te zorgen dat ze up-to-date zijn!",
- "tip7": "Sommige achtergronden verbinden zich perfect met elkaar als groepsleden dezelfde achtergrond gebruiken. Bv: Bergmeer, Pagodas en Rollende heuvels.",
- "tip8": "Stuur een persoonlijk bericht naar iemand door te klikken op het envelopje bij zijn of haar naam in de chat!",
- "tip9": "Bezoek het 'Guild Leaders & Challenge Creators'-gilde voor advies over het starten van een gilde.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Je kan edelstenen winnen door deel te nemen aan uitdagingen. Dagelijks worden er nieuwe toegevoegd!",
- "tip11": "Als je het leuk vindt om je avatar aan te kleden, neem dan een kijkje in het 'Costume Carnival'-gilde.",
- "tip12": "Word lid van het \"Challenge... Accepted\"-gilde voor regelmatig geplande willekeurige uitdagingen.",
- "tip13": "Het hebben van meer dan vier groepsleden verhoogt de verantwoordelijkheid!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Je kan titels of inspirerende uitspraken zonder (+/-) toevoegen aan je lijst van gewoontes .",
- "tip15": "Voeg checklijsten aan je to-do lijst toe om je beloningen te verhogen!",
- "tip16": "Bekijk de Data-knop voor waardevolle inzichten in jouw vooruitgang. ",
- "tip17": "Het gebruik van labels kan een haast onmogelijke takenlijst toch handelbaar maken. ",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Gewoontes die positief of negatief zijn, \"vervagen\" en worden weer langzaam geel.",
- "tip19": "Verhoog je intelligentie-eigenschap om meer EP te krijgen wanneer je een taak volbrengt.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Verhoog je perceptie-eigenschap om meer vondsten en goud te krijgen.",
"tip21": "Verhoog je kracht-eigenschap om meer schade toe te brengen aan eindbazen en meer voltreffers te krijgen.",
"tip22": "Verhoog je lichaam-eigenschap om de schade van onvoltooide dagelijkse taken te minderen.",
- "tip23": "klik op het grafiek icoon van een van je taken om de grafiek te zien van je voortgang.",
- "tip24": "Habitica is open-source! Stel vragen in de \"Aspiring Legends\"-gilde als je wilt bijdragen",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "De vier seizoengebonden Grote Gala's beginnen dicht bij de zonnewendes en de nachteveningen.",
- "tip26": "Een pijltje links van iemand's niveau nummer betekent dat ze momenteel versterkt zijn. ",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Gisteren een dagelijkse taak gedaan, maar vergeten het te controleren? Maak je geen zorgen! Met Registreer Activiteit van Gisteren, heb je de kans om te registreren wat je deed voordat je je nieuwe dag begint.",
- "tip28": "Stel een aangepast dagbegin in onder Instellingen > Site om te bepalen wanneer een nieuwe dag begint.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Voltooi al je dagelijkse taken om een 'perfecte dag versterking' te krijgen die je eigenschappen verhoogt!",
"tip30": "Je kan mensen uitnodigen voor gilden, niet enkel voor groepen. ",
"tip31": "Bekijk de voorgemaakte lijsten in de \"Library of Tasks and Challenges\" gilde voor voorbeeldtaken.",
- "tip32": "Veel van Habitica's code, afbeeldingen en teksten zijn gemaakt door vrijwilligers! Iedereen kan helpen.",
- "tip33": "Neem een kijkje in de \"Bulletin Board\" gilde voor nieuws over gilden, uitdagingen en andere door spelers gemaakte evenementen - en kondig die van jou daar aan!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/nl/messages.json b/website/common/locales/nl/messages.json
index f603724f8fd..ee5b9018ceb 100644
--- a/website/common/locales/nl/messages.json
+++ b/website/common/locales/nl/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Je hebt de queeste \"<%= questText %>\" gevonden!",
"messageAlreadyPurchasedGear": "Je hebt dit stuk uitrusting in het verleden al eens gekocht, maar hebt het nu niet in je bezit. Je kunt het opnieuw aanschaffen in de beloningenkolom op de Takenpagina.",
"messageAlreadyOwnGear": "Je hebt dit uitrustingsstuk al. Je kunt het aantrekken op de uitrustingspagina.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Je hebt de maximale gezondheid al.",
"messageHealthAlreadyMin": "Oh nee! Je gezondheidspunten zijn al op, dus het is te laat om nog een gezondheidsdrankje te kopen, maar geen zorgen - je kan jezelf tot leven wekken!",
"armoireEquipment": "<%= image %> Je hebt een zeldzaam uitrustingsstuk gevonden in het kabinet: <%= dropText %>! Super!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Je hebt dit bericht al gerapporteerd.",
"messageGroupChatNotFound": "Bericht niet gevonden.",
"messageGroupChatAdminClearFlagCount": "Alleen een admin kan de flag-telling leegmaken!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Oeps, het ziet er naar uit dat je te veel berichten plaatst! Wacht alsjeblieft een minuut en probeer het dan nog eens. De herberg chat kan slechts 200 berichten tonen, dus Habitica moedigt spelers aan om langere berichten en verstevigde reacties te plaatsen. We kunnen niet wachten om te horen wat je te zeggen hebt. :)",
"messageUserOperationProtected": "path `<%= operation %>` is niet opgeslagen, omdat het een beschermd path is.",
"messageUserOperationNotFound": "<%= operation %> operatie niet gevonden",
diff --git a/website/common/locales/nl/npc.json b/website/common/locales/nl/npc.json
index ebc84a9002f..ef70719b448 100644
--- a/website/common/locales/nl/npc.json
+++ b/website/common/locales/nl/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Edelsteen",
"typeNotSellable": "Type is niet te verkopen. Het moet een van de volgende zijn <%= acceptedTypes %>.",
"userItemsKeyNotFound": "Sleutel is niet gevonden voor user.items <%= type %>",
- "userItemsNotEnough": "Je hebt niet genoeg <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Padstring is noodzakelijk.",
"unlocked": "Voorwerpen zijn ontgrendeld",
"alreadyUnlocked": "Volledige set is al ontgrendeld.",
diff --git a/website/common/locales/nl/quests.json b/website/common/locales/nl/quests.json
index 2a6ca72d9b2..44de1e8c1df 100644
--- a/website/common/locales/nl/quests.json
+++ b/website/common/locales/nl/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> queestevoorwerp(en) gevonden",
"questDamage": "+ <%= val %> schade aan baas",
"begin": "Starten",
- "bossHP": "Gezondheid eindbaas",
+ "bossHP": "Boss HP",
"bossStrength": "Kracht eindbaas",
"rage": "Furie",
"collect": "Verzamel",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Je moet niveau <%= level %> zijn om deze queeste te kunnen kopen!",
"mustInviteFriend": "Om deze queeste te ontvangen moet je een vriend uitnodigen in je groep. Wil je nu iemand uitnodigen?",
"unlockByQuesting": "Om deze queeste vrij te spelen moet je eerst <%= title %> voltooien.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Weet je zeker dat je deze queeste af wilt breken? Alle geaccepteerde uitnodigingen gaan verloren. De eigenaar van de queeste houdt de queeste-perkamentrol.",
"sureAbort": "Weet je zeker dat je deze missie wilt afbreken? De missie wordt afgebroken voor iedereen in jouw groep; alle vorderingen gaan verloren. De queeste-perkamentrol wordt teruggegeven aan de eigenaar van de queeste.",
"doubleSureAbort": "Weet je het echt heel zeker? Zorg ervoor dat ze niet voor altijd een hekel aan je krijgen!",
diff --git a/website/common/locales/nl/questscontent.json b/website/common/locales/nl/questscontent.json
index 9b03157cf6f..3b47b38d6b4 100644
--- a/website/common/locales/nl/questscontent.json
+++ b/website/common/locales/nl/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Gordeldier (Ei)",
"questArmadilloUnlockText": "Maakt het kopen van gordeldiereieren op de markt mogelijk",
"questCowText": "De Moetante Koe",
- "questCowNotes": "Het was een lange, hete dag op de Sparrende Boerderij en er is niets liever dat je wilt dan een grote slok water nemen en wat slapen. Je staat te dagdromen wanneer @Soloana opeens schreeuwt, \"Iedereen, ren! De prijskoe is gemoeteerd!\"
@eevachu slikt. \"Onze slechte gewoontes zullen het besmet hebben.\"
\"Snel!\" zegt Feralem Tau. \"We moeten iets doen voordat de andere koeien ook moeteren.\"
Je hebt genoeg gehoord. Niet meer dagdromen -- tijd om die slechte gewoontes onder controle te krijgen!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "Je melkt je goede gewoontes voor wat ze waard zijn tot de koe haar oorspronkelijke vorm aanneemt. De koe kijkt naar je met haar mooie bruine ogen en duwt drie eieren naar jullie .
@fuzzytrees lacht en geeft je de eieren, \"Misschien is het nog steeds gemoeteerd als er baby koetjes in deze eieren zitten. Maar ik vertrouw erop dat jij je aan je goede gewoontes houdt wanneer je ze opvoedt!\" ",
"questCowBoss": "Moetante Koe",
"questCowDropCowEgg": "Koe (Ei)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/nl/settings.json b/website/common/locales/nl/settings.json
index cb431e52a1d..9cb10e575a0 100644
--- a/website/common/locales/nl/settings.json
+++ b/website/common/locales/nl/settings.json
@@ -65,7 +65,7 @@
"resetText1": "WAARSCHUWING! Deze functie reset veel onderdelen van je account. Hoewel we niet aanraden om dit te doen, vinden sommige mensen het handig na een tijdje geëxperimenteerd te hebben met de site.",
"resetText2": "Je zult al je niveaus, goud en ervaringspunten verliezen. Al je taken (behalve die van uitdagingen) zullen permanent verwijderd worden en je zult al hun data uit het verleden verliezen. Je zult al je uitrusting verliezen, maar je kunt dat allemaal terug kopen, inclusief alle uitrusting van beperkte editie uitrusting of verrassingsvoorwerpen voor abonnees die je al hebt (je moet wel in de juiste klasse zitten om klasse-specifieke uitrusting terug te kopen). Je zult je huidige klasse en je huisdieren en rijdieren behouden. Misschien wil je liever een Bol der Hergeboorte gebruiken, wat een veel veiligere optie is en wat je taken en uitrusting bewaart.",
"deleteLocalAccountText": "Weet je het zeker? Dit verwijdert je account voorgoed en het kan nooit meer hersteld worden! Je zult een nieuw account moeten registreren om Habitica weer te gebruiken. Gespaarde of uitgegeven edelstenen zullen niet vergoed worden, Als je het absoluut zeker weet, typ dan je wachtwoord in het tekstvak hieronder.",
- "deleteSocialAccountText": "Weet je het zeker? Dit zal je account voor altijd verwijderen en het kan niet meer hersteld worden! Je zult een nieuw account moeten aanmaken om Habitica opnieuw te gebruiken. Edelstenen die je bezit of hebt uitgegeven worden niet vergoed. Als je helemaal zeker bent van dit besluit, typ dan \"DELETE\" in het onderstaande tekstveld.",
+ "deleteSocialAccountText": "Are you sure? This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type \"<%= magicWord %>\" into the text box below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Kopieer deze codes om ze in applicaties van derde partijen te gebruiken. Beschouw de codes echter als een soort wachtwoord en deel ze niet met anderen. Je kunt soms gevraagd worden naar je gebruikers-ID maar we raden aan nooit je API-sleutel op een openbare plek te delen, ook niet op Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Geschonken abonnement",
"giftedSubscriptionInfo": "<%= name%> heeft je een abonnement van <%= months %> maanden cadeau gedaan",
"giftedSubscriptionFull": "Hallo <%= username %>, <%= sender %> heeft je een abonnement van <%= monthCount %> maanden gestuurd!",
+ "giftedSubscriptionWinterPromo": "Hello <%= username %>, you received <%= monthCount %> months of subscription as part of our holiday gift-giving promotion!",
"invitedParty": "Uitgenodigd voor groep",
"invitedGuild": "Uitgenodigd voor gilde",
"importantAnnouncements": "Herinnering om in te checken om taken te voltooien en prijzen te ontvangen.",
diff --git a/website/common/locales/nl/subscriber.json b/website/common/locales/nl/subscriber.json
index aa09ccbaeef..fcc2b980b44 100644
--- a/website/common/locales/nl/subscriber.json
+++ b/website/common/locales/nl/subscriber.json
@@ -40,6 +40,7 @@
"cancelSub": "Abonnement stopzetten",
"cancelSubInfoGoogle": "Ga naar \"Mijn apps & games\" > \"Abonnementen\" in de Google Play Store app om je abonnement te annuleren of om de einddatum van je abonnement te zien als je die al geannuleerd hebt. Dit scherm laat niet zien of je abonnement geannuleerd is.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Beëindigd abonnement",
"cancelingSubscription": "Het abonnement stopzetten",
"adminSub": "Beheerdersabonnementen",
@@ -136,6 +137,7 @@
"mysterySet201709": "Sorcery Student Set",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Standaard Steampunkset",
"mysterySet301405": "Opgesmukte Steampunkset",
"mysterySet301703": "Pauw steampunkset",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Onbekend kaarttype.",
"invalidCoupon": "Ongeldige couponcode.",
"couponUsed": "Couponcode is al in gebruik",
- "noSudoAccess": "Je hebt geen sudo-toegang.",
"couponCodeRequired": "De couponcode is vereist.",
"eventRequired": "\"req.params.event\" is vereist.",
"countRequired": "\"req.query.count\" is vereist.",
diff --git a/website/common/locales/nl/tasks.json b/website/common/locales/nl/tasks.json
index 652650cb441..2e213f54995 100644
--- a/website/common/locales/nl/tasks.json
+++ b/website/common/locales/nl/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Bevestig dat deze dagelijkse taak niet was gedaan voordat er schade is gedaan",
"yesterDailiesDescription": "Als deze instelling is toegepast zal Habitica je vragen of je expres de dagelijkse taak ongedaan hebt gelaten voordat schade wordt berekend en toegepast wordt op je avatar. Dit kan je beschermen tegen onbedoelde schade.",
"repeatDayError": "Er moet minstens één dag van de week geselecteerd zijn.",
- "searchTasks": "Zoek op titels en beschrijvingen..."
+ "searchTasks": "Zoek op titels en beschrijvingen...",
+ "sessionOutdated": "Your session is outdated. Please refresh or sync."
}
\ No newline at end of file
diff --git a/website/common/locales/pl/backgrounds.json b/website/common/locales/pl/backgrounds.json
index d5a901bd956..f229be54fa9 100644
--- a/website/common/locales/pl/backgrounds.json
+++ b/website/common/locales/pl/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Zamek o północy",
"backgroundMidnightCastleNotes": "Spaceruj przy zamku o północy",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Przeleć przez tornado"
+ "backgroundTornadoNotes": "Przeleć przez tornado",
+ "backgrounds122017": "ZESTAW 43: Opublikowany w grudniu 2017",
+ "backgroundCrosscountrySkiTrailText": "Trasa narciarska przez kraj",
+ "backgroundCrosscountrySkiTrailNotes": "Prześlizgnij się trasą narciarską przez kraj.",
+ "backgroundStarryWinterNightText": "Gwieździsta Zimowa Noc",
+ "backgroundStarryWinterNightNotes": "Podziwiaj gwieździstą zimową noc",
+ "backgroundToymakersWorkshopText": "Pracownia Zabawkarza",
+ "backgroundToymakersWorkshopNotes": "Rozkoszuj się cudem Warsztatu Zabawkarza",
+ "backgrounds012018": "ZESTAW 44: Opublikowany w Styczniu 2018",
+ "backgroundAuroraText": "Zorza Polarna",
+ "backgroundAuroraNotes": "Rozgrzej się przy zimowym blasku Zorzy Polarnej.",
+ "backgroundDrivingASleighText": "Sanie",
+ "backgroundDrivingASleighNotes": "Przejedź saniami pola pokryte śniegiem.",
+ "backgroundFlyingOverIcySteppesText": "Lodowe Stepy",
+ "backgroundFlyingOverIcySteppesNotes": "Lataj nad Lodowymi Stepami"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/challenge.json b/website/common/locales/pl/challenge.json
index d7ab4109c60..700a6cb8c5a 100644
--- a/website/common/locales/pl/challenge.json
+++ b/website/common/locales/pl/challenge.json
@@ -127,5 +127,7 @@
"locationRequired": "Lokalizacja Wyzwania jest wymagana (\"Dodaj do\")",
"categoiresRequired": "Co najmniej jedna kategoria musi zostać wybrana",
"viewProgressOf": "Zobacz postęp",
- "selectMember": "Wybierz Członka"
+ "selectMember": "Wybierz Członka",
+ "confirmKeepChallengeTasks": "Czy chcesz zachować zadania z wyzwania?",
+ "selectParticipant": "Wybierz Uczestnika"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/character.json b/website/common/locales/pl/character.json
index 59616556fca..f95d6c6250a 100644
--- a/website/common/locales/pl/character.json
+++ b/website/common/locales/pl/character.json
@@ -163,6 +163,7 @@
"dieText": "Straciłeś jeden Poziom, losowo wybrany przedmiot z Ekwipunku oraz całe Złoto. A teraz powstań, dzielny Habitaninie, i jeszcze raz spróbuj sił w walce! Okiełznaj złe Nawyki, czujnie dopełniaj Codzienne, a jeśli zasłabniesz, wymknij się śmierci zażywając Eliksiru Zdrowia!",
"sureReset": "Na pewno? Ta opcja zresetuje klasę twojej postaci oraz przydzielone punkty (dostaniesz je z powrotem do ponownego przydzielenia) oraz kosztuje 3 Klejnoty.",
"purchaseFor": "Kupić za <%= cost %> klejnoty?",
+ "purchaseForHourglasses": "Kupić za <%= cost %> Mistycznych Klepsydr?",
"notEnoughMana": "Masz za mało many.",
"invalidTarget": "Nie możesz rzucić na to zaklęcia",
"youCast": "Rzucasz <%= spell %>.",
diff --git a/website/common/locales/pl/communityguidelines.json b/website/common/locales/pl/communityguidelines.json
index 48cbc53b9de..b5fa5212380 100644
--- a/website/common/locales/pl/communityguidelines.json
+++ b/website/common/locales/pl/communityguidelines.json
@@ -1,6 +1,6 @@
{
"iAcceptCommunityGuidelines": "Zgadzam się na przestrzeganie Regulaminu Społeczności",
- "tavernCommunityGuidelinesPlaceholder": "Friendly reminder: this is an all-ages chat, so please keep content and language appropriate! Consult the Community Guidelines in the sidebar if you have questions.",
+ "tavernCommunityGuidelinesPlaceholder": "Życzliwe przypomnienie: to czat dla ludzi w każdym wieku, więc uważaj na język oraz treść swoich wypowiedzi! Jeśli masz jakieś pytania, zajrzyj do Regulaminu społeczności dostępnego na pasku bocznym.",
"commGuideHeadingWelcome": "Witamy w Habitice!",
"commGuidePara001": "Witaj, poszukiwaczu przygód! Witaj w Habitice, krainie produktywności, zdrowego stylu życia i sporadycznych wściekłych gryfów. Mamy tu radosną społeczność pełną pomocnych ludzi wspierających się nawzajem w swej drodze do samodoskonalenia.",
"commGuidePara002": "By utrzymać społeczność w atmosferze bezpieczeństwa, radości i produktywności, mamy kilka wskazówek. Sporządziliśmy je z rozwagą, by były tak przyjazne i łatwe w rozumieniu, jak to tylko możliwe. Prosimy o poświęcenie czasu na ich przeczytanie.",
@@ -13,7 +13,7 @@
"commGuideList01C": "Wspierająca PostawaHabitanie gratulują sobie zwycięstw oraz pocieszają w trudnych okresach. Użyczamy sobie nawzajem siły i wspieramy, a także uczymy się od siebie. W drużynach robimy to za pomocą zaklęć, na chatach dzięki serdecznym i życzliwym słowom.",
"commGuideList01D": "Postawa Pełna Szacunku.Wszyscy pochodzimy z różnych środowisk, mamy różne umiejętności i opinie. To część tego, co czyni tę społeczność wyjątkową! Habitanie szanują te różnice i cieszą się z nich. Zostań na chwilę, a wkrótce będziesz mieć przyjaciół na wszystkich ścieżkach życia.",
"commGuideHeadingMeet": "Poznaj Zespół i Modów!",
- "commGuidePara006": "Habitica has some tireless knights-errant who join forces with the staff members to keep the community calm, contented, and free of trolls. Each has a specific domain, but will sometimes be called to serve in other social spheres. Staff and Mods will often precede official statements with the words \"Mod Talk\" or \"Mod Hat On\".",
+ "commGuidePara006": "Habitica ma w swoich szeregach niezmordowanych rycerzy-pomocników, którzy łączą siły z personelem, by utrzymać społeczność w spokoju, zadowoleniu i wolności od trolli. Każdy z nich ma swój sektor, ale czasem mogą zostać wezwani, by służyć w innych kręgach. Personel i Moderatorzy będą często poprzedzać oficjalne komunikaty słowami \"Mówi Mod\" (ang. Mod Talk) lub \"Czapka Moda Założona\" (ang. Mod Hat On).",
"commGuidePara007": "Personel ma fioletowe tagi z koroną. Ich tytuł to \"Heroiczny\".",
"commGuidePara008": "Moderatorzy mają granatowe tagi z gwiazdkami. Ich tytułem jest \"Strażnik\". Jedynym wyjątkiem jest Bailey, która, jako NPC, ma czarno-zielony tag z gwiazdką.",
"commGuidePara009": "Obecni członkowie Personelu to (od lewej do prawej):",
@@ -61,9 +61,9 @@
"commGuidePara037": "Wszystkie wyzwania Karczemne i \nPublicznych Gildii również muszą być zgodne z zasadami.",
"commGuideHeadingBackCorner": "Zaplecze",
"commGuidePara038": "Czasem rozmowa się przedłuża, zbacza z tematu lub porusza zbyt wrażliwe kwestie, by można ją było kontynuować na forum publicznym bez krępowania innych użytkowników. W takim wypadku zostaje ona przekierowana na Zaplecze. Uwaga: nie jest to wcale kara! Przeciwnie, wielu Habitanów lubi tam przebywać i prowadzić długie dyskusje o różnych zagadnieniach.",
- "commGuidePara039": "The Back Corner Guild is a free public space to discuss sensitive subjects, and it is carefully moderated. It is not a place for general discussions or conversations. The Public Space Guidelines still apply, as do all of the Terms and Conditions. Just because we are wearing long cloaks and clustering in a corner doesn't mean that anything goes! Now pass me that smoldering candle, will you?",
+ "commGuidePara039": "Gildia na Zapleczu to wolna przestrzeń publiczna do dyskusji drażliwych kwestii lub prowadzenia rozmowy przez dłuższy czas, i jest dokładnie moderowana. Zasady Przestrzeni Publicznej nadal obowiązują, tak jak i Zasady Użytkowania. Tylko dlatego, że nosimy długie płaszcze i tłoczymy się w kącie nie oznacza, że wszystko wolno! A teraz podaj mi, proszę, tę tlącą się świecę.",
"commGuideHeadingTrello": "Tablice Trello",
- "commGuidePara040": "Trello serves as an open forum for suggestions and discussion of site features. Habitica is ruled by the people in the form of valiant contributors -- we all build the site together. Trello lends structure to our system. Out of consideration for this, try your best to contain all your thoughts into one comment, instead of commenting many times in a row on the same card. If you think of something new, feel free to edit your original comments. Please, take pity on those of us who receive a notification for every new comment. Our inboxes can only withstand so much.",
+ "commGuidePara040": "Trello służy jako otwarte forum przeznaczone do dzielenia się sugestiami i prowadzenia dyskusji na temat funkcji strony. Habitiką zarządzają ludzie poprzez różnego rodzaju wkład - wszyscy razem budujemy tę stronę. Trello to system, który nadaje temu systemowi strukturę. Przez wzgląd na dobro strony starajcie się streszczać swoje myśli w pojedynczych komentarzach, zamiast pisać parę razy z rzędu na tej samej karcie. Jeśli wpadniecie na coś nowego, nie krępujcie się edytować Waszych poprzednich komentarzy. Prosimy, miejcie litość nad tymi z nas, którzy otrzymują powiadomienie za każdym razem, gdy ktoś doda nowy komentarz. Wytrzymałość naszych skrzynek odbiorczych ma swoje granice.",
"commGuidePara041": "Habitica używa czterech różnych tablic Trello:",
"commGuideList03A": "Main Board (Tablica Główna) koncentruje się na nowych funkcjach Habitiki. Można na nią wpisywać prośby ich dotyczące oraz głosować w ankietach.",
"commGuideList03B": "Mobile Board (Tablica Urządzeń Przenośnych) to miejsce poświęcone funkcjom aplikacji mobilnych. Tutaj przedstawiamy własne pomysły dotyczące tych funkcji i głosujemy na cudze.",
@@ -108,7 +108,7 @@
"commGuideHeadingModerateInfractions": "Średnie wykroczenia",
"commGuidePara054": "Umiarkowane wykroczenia nie narażają naszej społeczności na niebezpieczeństwo, lecz raczej na nieprzyjemności. Mają umiarkowane konsekwencje. Jeśli występują w połączeniu z innymi wykroczeniami, pociągają za sobą surowsze kary.",
"commGuidePara055": "Oto przykłady średnich wykroczeń. To nie jest kompletna lista.",
- "commGuideList06A": "Ignoring or Disrespecting a Mod. This includes publicly complaining about moderators or other users/publicly glorifying or defending banned users. If you are concerned about one of the rules or Mods, please contact Lemoness via email (<%= hrefCommunityManagerEmail %>).",
+ "commGuideList06A": "Ignorowanie lub Znieważanie Moderatorów. Zawiera się w tym także publiczne narzekanie na moderatorów lub innych użytkowników oraz publiczne chwalenie lub bronienie zbanowanych użytkowników. Jeśli masz wątpliwości wobec którejś z zasad lub kogoś z Moderatorów, prosimy o kontakt mailowy z Lemoness pod adresem <%= hrefCommunityManagerEmail %>.",
"commGuideList06B": "Nieupoważnione moderatorstwo. Szybkie wyjaśnienie w czym rzecz: przyjazne wspomnienie o zasadach jest w porządku. Nieupoważnione moderatorstwo to mówienie innym, żądanie i/lub naleganie, żeby zrobili coś, co Wy opisujecie jako naprawienie błędu. Możecie ostrzegać ludzi, którzy naruszają zasady, ale nie wymagajcie od nich żadnych działań. Przykładowo, powiedzenie: \"dla twojej wiadomości, nie wolno przeklinać w Karczmie, więc chyba lepiej byłoby to usunąć\" jest lepsze, niż \"muszę Cię prosić, byś usunął ten post\".",
"commGuideList06C": "Wielokrotne Łamanie Zasad Przestrzeni Publicznej",
"commGuideList06D": "Wielokrotne Popełnianie Drobnych Wykroczeń",
@@ -125,14 +125,14 @@
"commGuideList08B": "co jest konsekwencją",
"commGuideList08C": "co zrobić, by naprawić sytuację i odzyskać swój status, jeśli to możliwe.",
"commGuidePara060A": "Jeśli będzie taka potrzeba, otrzymasz Prywatną Wiadomość lub e-mail jako uzupełnienie lub zamiast wpisu na forum, w którym wystąpiło naruszenie.",
- "commGuidePara060B": "If your account is banned (a severe consequence), you will not be able to log into Habitica and will receive an error message upon attempting to log in. If you wish to apologize or make a plea for reinstatement, please email Lemoness at <%= hrefCommunityManagerEmail %> with your UUID (which will be given in the error message). It is your responsibility to reach out if you desire reconsideration or reinstatement.",
+ "commGuidePara060B": "Jeśli Twoje konto zostaje zbanowane (za ciężkie wykroczenie), nie będziesz mógł się zalogować do Habitiki i podczas próby logowania otrzymasz otrzymasz wiadomość o błędzie. Jeśli chcesz przeprosić lub poprosić o przywrócenie napisz wiadomość do Lemoness na adres mailowy <%= hrefCommunityManagerEmail %> wraz ze swoim UUID (będzie podany w wiadomości o błędzie). To w twojej gestii jest wyciągnięcie ręki kiedy chcesz pogodzenia lub przywrócenia. ",
"commGuideHeadingSevereConsequences": "Przykłady Poważnych Konsekwencji",
"commGuideList09A": "Zablokowanie konta (spójrz powyżej)",
"commGuideList09B": "Usunięcie konta",
"commGuideList09C": "Permanentne uniemożliwienie zwiększenia (\"zamrożenie\") Rangi Pomocnika",
"commGuideHeadingModerateConsequences": "Przykłady Średnich Konsekwencji",
"commGuideList10A": "Ograniczenie przywilejów w chatach publicznych",
- "commGuideList10A1": "If your actions result in revocation of your chat privileges, a Moderator or Staff member will PM you and/or post in the forum in which you were muted to notify you of the reason for your muting and the length of time for which you will be muted. At the end of that period, you will receive your chat privileges back, provided you are willing to correct the behavior for which you were muted and comply with the Community Guidelines.",
+ "commGuideList10A1": "Jeśli twoje działania spowodują unieważnienie twojego dostępu do czatu Moderator lub członek personelu wyśle do Ciebie wiadomość i / lub opublikuje na forum, na którym zostałeś wyciszony, aby powiadomić Cię o przyczynie twojego wyciszenia i czasie, przez który będziesz wyciszony. Po upływie tego czasu otrzymasz zwrot dostępu do czatu, pod warunkiem, że wyrazisz chęć poprawy zachowania, z powodu którego zostałeś wyciszony i będziesz przestrzegać Wytycznych dla Społeczności.",
"commGuideList10B": "Ograniczenie przywilejów w chatach prywatnych",
"commGuideList10C": "Ograniczenie przywilejów tworzenia gildii/wyzwań",
"commGuideList10D": "Tymczasowe uniemożliwienie zwiększenia (\"zamrożenie\") Rangi Pomocnika",
@@ -146,7 +146,7 @@
"commGuideList11E": "Edycja (Modzi/Personel mogą zmieniać problematyczną zawartość)",
"commGuideHeadingRestoration": "Przywrócenie",
"commGuidePara061": "Habitica to miejsce poświęcone samorozwojowi, więc wierzymy w drugie szanse. Jeśli popełnicie wykroczenie i zostaną na Was nałożone konsekwencje, spójrzcie na to jak na bodziec do zmiany swoich zachowań na lepsze, wskazówkę, jak możecie lepiej współtworzyć społeczność.",
- "commGuidePara062": "The announcement, message, and/or email that you receive explaining the consequences of your actions (or, in the case of minor consequences, the Mod/Staff announcement) is a good source of information. Cooperate with any restrictions which have been imposed, and endeavor to meet the requirements to have any penalties lifted.",
+ "commGuidePara062": "Ogłoszenie, wiadomość lub e-mail wysłany osobie, która naruszyła zasady, wyjaśniający konsekwencje jej działania (lub, w przypadku niewielkich kar, wypowiedź Moda/Personelu na ten temat) to dobre źródło informacji. Taka osoba powinna poddać się jakimkolwiek nałożonym na nią ograniczeniom i starać się sprostać postawionym jej wymaganiom, by karę zniesiono.",
"commGuidePara063": "Jeśli nie rozumiecie, jakie lub dlaczego ponieśliście konsekwencje, albo jakiego rodzaju było Wasze wykroczenie, poproście Personel/Moderatorów o pomoc, żeby móc uniknąć łamania zasad w przyszłości.",
"commGuideHeadingContributing": "Współpraca przy tworzeniu Habitiki",
"commGuidePara064": "Habitica to projekt open-source, więc wszyscy Habitanie mogą przyłożyć do niego rękę! Ci, którzy to zrobią, zostaną nagrodzeni w następujący sposób:",
@@ -184,5 +184,5 @@
"commGuideLink07description": "to dodawania grafik pikselowych.",
"commGuideLink08": "Misjowe Trello",
"commGuideLink08description": "do dodawania opisów misji.",
- "lastUpdated": "Last updated:"
+ "lastUpdated": "Ostatnio zaktualizowano:"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/content.json b/website/common/locales/pl/content.json
index b1f95e6a050..f1050211285 100644
--- a/website/common/locales/pl/content.json
+++ b/website/common/locales/pl/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Przędza",
"questEggYarnMountText": "Latający Dywan",
"questEggYarnAdjective": "wełniany",
+ "questEggPterodactylText": "Pterodactyl",
+ "questEggPterodactylMountText": "Pterodactyl",
+ "questEggPterodactylAdjective": "trusting",
"eggNotes": "Znajdź eliksir wyklucia i wylej go na to jajo, a wykluje się z niego <%= eggAdjective(locale) %> <%= eggText(locale) %>. ",
"hatchingPotionBase": "Zwyczajny",
"hatchingPotionWhite": "Biały",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Amor",
"hatchingPotionShimmer": "Migoczący",
"hatchingPotionFairy": "Bajeczny",
+ "hatchingPotionStarryNight": "Gwiezdna Noc",
"hatchingPotionNotes": "Wylej go na jajko, a wykluje się z niego <%=potText(locale)%>.",
"premiumPotionAddlNotes": "Nie nadaje się do użytku na jajach otrzymanych za misje.",
"foodMeat": "Mięso",
@@ -218,5 +222,6 @@
"foodCandyRed": "Cynamonowy cukierek",
"foodSaddleText": "Siodło",
"foodSaddleNotes": "Natychmiastowo zmienia jednego z Twoich chowańców w wierzchowca.",
+ "foodSaddleSellWarningNote": "Hej! To całkiem użyteczny przedmiot! Czy jesteś zaznajomiony z tym, jak używać siodła wraz z twoimi chowańcami?",
"foodNotes": "Nakarm tym chowańca, a wyrośnie z niego wytrzymały wierzchowiec."
}
\ No newline at end of file
diff --git a/website/common/locales/pl/contrib.json b/website/common/locales/pl/contrib.json
index 01518d71d19..82944f36464 100644
--- a/website/common/locales/pl/contrib.json
+++ b/website/common/locales/pl/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, jesteś niesamowity! Zdobywasz <%= level %> poziom pomocnika za wsparcie przy rozwijaniu Habitica. Zobacz",
"contribLink": "jakie nagrody uzyskałeś za swój wkład!",
"contribName": "Pomocnik",
- "contribText": "Przyczynił się do rozwoju Habitica (kod, design, grafika pikselowa, porady prawne, dokumentacja, itd.). Chcesz taką odznakę? Dowiedz się więcej.",
+ "contribText": "Przyczynił się do rozwoju Habitica poprzez kod, grafikę, muzykę, pisanie lub poprzez inne metody. Aby dowiedzieć się więcej dołącz do gildii Aspiring Legends!",
"readMore": "Dowiedz się więcej",
"kickstartName": "Wspieracz z Kickstartera - ranga <%= key %>$",
"kickstartText": "Wspomógł projekt na Kickstarterze",
diff --git a/website/common/locales/pl/faq.json b/website/common/locales/pl/faq.json
index 983bebfea03..d86d595204a 100644
--- a/website/common/locales/pl/faq.json
+++ b/website/common/locales/pl/faq.json
@@ -17,7 +17,7 @@
"androidFaqAnswer3": "Twoje zadania zmieniają kolor w zależności od tego, jak dobrze idzie ci ich wypełnianie! Każde nowe zadanie ma na początku kolor żółty. Wypełniaj Codzienne albo dobre Nawyki częściej, a będą coraz bardziej niebieskie. Opuść Codzienne lub poddaj się złemu Nawykowi, a zadanie będzie coraz bardziej czerwone. Im więcej czerwieni, tym większą nagrodę zdobędziesz za to zadanie, ale jeśli to Codzienne albo zły Nawyk, tym bardziej cię zrani! To pomaga motywować cię do wypełniania zadań, które sprawiają ci kłopot.",
"webFaqAnswer3": "Twoje zadania zmieniają kolor w zależności od tego, jak dobrze idzie ci ich wypełnianie! Każde nowe zadanie ma na początku kolor żółty. Wypełniaj Codzienne albo dobre Nawyki częściej, a będą coraz bardziej niebieskie. Opuść Codzienne lub poddaj się złemu Nawykowi, a zadanie będzie coraz bardziej czerwone. Im więcej czerwieni, tym większą nagrodę zdobędziesz za to zadanie, ale jeśli to Codzienne albo zły Nawyk, tym bardziej cię zrani! To pomaga motywować cię do wypełniania zadań, które sprawiają ci kłopot.",
"faqQuestion4": "Dlaczego mój awatar stracił zdrowie i jak je odzyskać?",
- "iosFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight and didn't check them off in the screen that popped up the next morning, those unfinished Dailies will damage you. Second, if you tap a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your Party and one of your Party mates did not complete all their Dailies, the Boss will attack you.\n\n The main way to heal is to gain a level, which restores all your health. You can also buy a Health Potion with gold from the Rewards column. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a Party with a Healer, they can heal you as well.",
+ "iosFaqAnswer4": "Jest wiele rzeczy, które mogą zadać Ci obrażenia. Po pierwsze, jeżeli nie wykonasz zadań z zakładki \"Codzienne\" przez noc i nie oznaczysz ich jako wykonane następnego ranka, te zadania zadadzą Ci obrażenia. Po drugie, jeżeli naciśniesz na zły nawyk, zada Ci on obrażenia. W reszcie, jeśli walczysz w Bitwie z Bossem wraz ze swoją Drużyną i jedna osoba z Twojej drużyny nie ukończy zdania codziennego, Boss zaatakuje Cię.\n\nNajlepszym sposobem by się uleczyć jest zdobywanie poziomów, które odnawiają całe Twoje brakujące zdrowie. Możesz też kupić Miksturę Zdrowia za złoto z wykonanych zadań. Dodatkowo, od 10. poziomu możesz stać się Medykiem i nauczyć się leczenia. Jeżeli jesteś w drużynie z Medykiem, ten również będzie mógł Cię uleczyć. ",
"androidFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight and didn't check them off in the screen that popped up the next morning, those unfinished Dailies will damage you. Second, if you tap a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your Party and one of your Party mates did not complete all their Dailies, the Boss will attack you.\n\n The main way to heal is to gain a level, which restores all your health. You can also buy a Health Potion with gold from the Rewards tab on the Tasks page. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a Party with a Healer, they can heal you as well.",
"webFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight and didn't check them off in the screen that popped up the next morning, those unfinished Dailies will damage you. Second, if you click a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your party and one of your party mates did not complete all their Dailies, the Boss will attack you. The main way to heal is to gain a level, which restores all your Health. You can also buy a Health Potion with Gold from the Rewards column. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. Other Healers can heal you as well if you are in a Party with them. Learn more by clicking \"Party\" in the navigation bar.",
"faqQuestion5": "Jak grać w Habitikę z przyjaciółmi?",
diff --git a/website/common/locales/pl/front.json b/website/common/locales/pl/front.json
index 7449e236320..88f49efd14a 100644
--- a/website/common/locales/pl/front.json
+++ b/website/common/locales/pl/front.json
@@ -30,6 +30,7 @@
"companyAbout": "Jak to działa",
"companyBlog": "Blog",
"devBlog": "Blog twórców.",
+ "companyContribute": "Wspomóż",
"companyDonate": "Dotacja",
"companyPrivacy": "Prywatność",
"companyTerms": "Warunki",
@@ -195,7 +196,7 @@
"unlockHeadline": "Gdy pozostajesz produktywny, odblokowujesz nowe możliwości!",
"useUUID": "Wykorzystaj UUID / Token API (opcja dla użytkowników Facebook'a)",
"username": "Nazwa użytkownika",
- "emailOrUsername": "Email or Login Name (case-sensitive)",
+ "emailOrUsername": "Email lub Login (Zależnie od przypadku)",
"watchVideos": "Obejrzyj wideo",
"work": "Pracą",
"zelahQuote": "Z [Habitiką], myśl o zdobytych punktach (za dłuższy sen) lub straconym zdrowiu (za zarwanie nocy), skłania mnie do wcześniejszego pójścia do łóżka!",
@@ -252,7 +253,7 @@
"missingNewPassword": "Brakuje nowego hasła.",
"invalidEmailDomain": "Nie możesz zarejestrować się używając adresów z podanych domen: <%= domains %>",
"wrongPassword": "Nieprawidłowe hasło.",
- "incorrectDeletePhrase": "Wpisz DELETE wielkimi literami, aby usunąć konto.",
+ "incorrectDeletePhrase": "Napisz <%= magicWord %> wielkimi literami by usunąć swoje konto.",
"notAnEmail": "Nieprawidłowy adres e-mail. ",
"emailTaken": "Adres e-mail jest już używany.",
"newEmailRequired": "Brakuje nowego adresu e-mail.",
@@ -290,20 +291,20 @@
"singUpForFree": "Dołącz za darmo",
"or": "LUB",
"gamifyYourLife": "Zgrywalizuj swoje życie",
- "aboutHabitica": "Habitica is a free habit-building and productivity app that treats your real life like a game. With in-game rewards and punishments to motivate you and a strong social network to inspire you, Habitica can help you achieve your goals to become healthy, hard-working, and happy.",
+ "aboutHabitica": "Habitica to darmowa aplikacja do budowania nawyków i poprawiania produktywności, która traktuje twoje prawdziwe życie jak grę. Dzięki zdobywanym w grze nagrodom i karom oraz silnej sieci społecznej, która Cię zainspiruje, Habitica może pomóc Ci osiągnąć cele, aby być bardziej zdrowym, pracowitym i szczęśliwym.",
"trackYourGoals": "Śledź swoje nawyki oraz cele",
"trackYourGoalsDesc": "Pozostań odpowiedzialny poprzez śledzenie i zarządzanie twoimi Nawykami, Codziennymi i listą Do-Zrobienia z prostymi w użyciu aplikacjami mobilnymi i stroną Habitica.",
"earnRewards": "Zdobywaj nagrody za swoje cele",
- "earnRewardsDesc": "Check off tasks to level up your Avatar and unlock in-game features such as battle armor, mysterious pets, magic skills, and even quests!",
+ "earnRewardsDesc": "Odznaczaj zadania, aby podwyższyć poziom swojego awatara i odblokować funkcje w grze, takie jak zbroja bojowa, tajemnicze zwierzaki, umiejętności magiczne, a nawet questy!",
"battleMonsters": "Zwalczaj potwory z przyjaciółmi",
- "battleMonstersDesc": "Fight monsters with other Habiticans! Use the Gold that you earn to buy in-game or custom rewards, like watching an episode of your favorite TV show.",
+ "battleMonstersDesc": "Pokonuj potwory wraz z innymi mieszkańcami Habitiki! Wykorzystaj zarobione złoto, żeby kupować nagrody w grze, lub ustawiać własne, jak np. oglądanie odcinka ulubionego serialu. ",
"playersUseToImprove": "Gracze korzystają z Habitica, aby się doskonalić",
"healthAndFitness": "Zdrowie i sprawność fizyczna",
"healthAndFitnessDesc": "Nie czujesz się zmotywowany do mycia zębów? Nie możesz się wybrać na siłownię? Habitica sprawia, że dbanie o zdrowie staje się zabawą.",
"schoolAndWork": "Szkoła i praca",
- "schoolAndWorkDesc": "Whether you're preparing a report for your teacher or your boss, it's easy to keep track of your progress as you tackle your toughest tasks.",
+ "schoolAndWorkDesc": "Niezależnie od tego, czy przygotowujesz raport dla swojego nauczyciela czy szefa, możesz łatwo śledzić swoje postępy kiedy wykonujesz nawet najtrudniejsze zadania.",
"muchmuchMore": "I dużo, dużo więcej!",
- "muchmuchMoreDesc": "Our fully customizable task list means that you can shape Habitica to fit your personal goals. Work on creative projects, emphasize self-care, or pursue a different dream -- it's all up to you.",
+ "muchmuchMoreDesc": "Nasza w pełni konfigurowalna lista zadań oznacza, że możesz kształtować Habitikę tak, aby pasowała do Twoich osobistych celów. Pracuj nad kreatywnymi projektami, wspieraj swój rozwój osobisty lub realizuj inne marzenia - wszystko zależy od Ciebie.",
"levelUpAnywhere": "Wbijaj poziomy gdziekolwiek jesteś",
"levelUpAnywhereDesc": "Nasze aplikacje mobilne sprawiają, że być na bieżąco z twoimi zadaniami w drodze. Osiągaj swoje cele jednym kliknięciem bez względu na to, gdzie się znajdujesz.",
"joinMany": "Dołącz do 2,000,000 osób, które bawią się osiągając cele!",
diff --git a/website/common/locales/pl/gear.json b/website/common/locales/pl/gear.json
index 554fae4046a..444b5912966 100644
--- a/website/common/locales/pl/gear.json
+++ b/website/common/locales/pl/gear.json
@@ -4,7 +4,7 @@
"klass": "Klasa",
"groupBy": "Pogrupuj według <%= type %>",
"classBonus": "(Ten przedmiot pasuje do Twojej klasy, więc otrzymuje dodatkowy mnożnik 1.5 do statystyk)",
- "classArmor": "Class Armor",
+ "classArmor": "Zbroja Klasowa",
"featuredset": "Featured Set <%= name %>",
"mysterySets": "Tajemnicze zestawy",
"gearNotOwned": "Nie posiadasz tego przedmiotu.",
@@ -19,7 +19,7 @@
"sortByStr": "SIŁ",
"sortByInt": "INT",
"weapon": "broń",
- "weaponCapitalized": "Main-Hand Item",
+ "weaponCapitalized": "Przedmiot w Głównej ręce",
"weaponBase0Text": "Bez broni",
"weaponBase0Notes": "Bez broni.",
"weaponWarrior0Text": "Miecz treningowy",
@@ -112,7 +112,7 @@
"weaponSpecialFencingFoilNotes": "Jeśli ktokolwiek zakwestionuje twój honor, z tym wspaniałym floretem jesteś gotów do walki! Zwiększa Siłę o <%= str %>.",
"weaponSpecialTachiText": "Tachi",
"weaponSpecialTachiNotes": "Ten lekki i zakrzywiony miecz potnie twoje zadania na kawałeczki! Zwiększa Siłę o <%= str %>.",
- "weaponSpecialAetherCrystalsText": "Aether Crystals",
+ "weaponSpecialAetherCrystalsText": "Eteryczne kryształy",
"weaponSpecialAetherCrystalsNotes": "These bracers and crystals once belonged to the Lost Masterclasser herself. Increases all attributes by <%= attrs %>.",
"weaponSpecialYetiText": "Włócznia poskramiacza yeti",
"weaponSpecialYetiNotes": "Ta włócznia pozwala używającemu jej na wydawanie rozkazów każdemu Yeti. Zwiększa Siłę o <%= str %>. Edycja Limitowana Zima 2013-2014.",
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "The eyes of the glowing skull on this staff radiate magic and mystery. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"weaponSpecialFall2017HealerText": "Przerażający świecznik",
"weaponSpecialFall2017HealerNotes": "This light dispels fear and lets others know you're here to help. Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "weaponSpecialWinter2018RogueText": "Miętowy Hak",
+ "weaponSpecialWinter2018RogueNotes": "Idealny do wspinania się po ścianach i rozpraszania wrogów słodziutkim cukierkiem. Zwiększa siłę o <%= str %>. Limitowana Edycja Zimowa 2017-2018.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Świąteczne Konfetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Widły Ucztowania",
"weaponMystery201411Notes": "Dźgaj swoich wrogów lub rzuć się na ulubione potrawy - te wielofunkcyjne widły nadają się do wszystkiego! Brak dodatkowych korzyści. Przedmiot Abonencki Listopad 2014.",
"weaponMystery201502Text": "Lśniąca Skrzydlata Laska Miłości oraz Prawdy",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Trim the hooves of your hard-working mounts to help them stay healthy as they carry you to adventure! Increases Strength, Intelligence, and Constitution by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 1 of 3).",
"weaponArmoireWeaversCombText": "Weaver's Comb",
"weaponArmoireWeaversCombNotes": "Use this comb to pack your weft threads together to make a tightly woven fabric. Increases Perception by <%= per %> and Strength by <%= str %>. Enchanted Armoire: Weaver Set (Item 2 of 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "zbroja",
"armorCapitalized": "Zbroja",
"armorBase0Text": "Zwykłe ubranie",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "What masquerade ensemble would be complete without dramatic and sweeping robes? Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
"armorSpecialFall2017HealerText": "Nawiedzony Dom Pancerz",
"armorSpecialFall2017HealerNotes": "Your heart is an open door. And your shoulders are roofing tiles! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Szaty posłańca",
"armorMystery201402Notes": "Połyskujące i wytrzymałe, te szaty mają wiele kieszeni na listy. Brak dodatkowych korzyści. Przedmiot Abonencki, luty 2014.",
"armorMystery201403Text": "Zbroja przemierzania lasów",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Scaly, shiny, and strong! Confers no benefit. October 2017 Subscriber Item.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Steampunkowy garnitur",
"armorMystery301404Notes": "Elegancki i stylowy! Brak dodatkowych korzyści. Przedmiot Abonencki, luty 2015.",
"armorMystery301703Text": "Steampunkowa pawia suknia",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "This sturdy set of clothes will protect you from hot wax spills as you ply your craft! Increases Constitution by <%= con %>. Enchanted Armoire: Candlestick Maker Set (Item 1 of 3).",
"armorArmoireWovenRobesText": "Woven Robes",
"armorArmoireWovenRobesNotes": "Display your weaving work proudly by wearing this colorful robe! Increases Constitution by <%= con %> and Intelligence by <%= int %>. Enchanted Armoire: Weaver Set (Item 1 of 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "hełm",
"headgearCapitalized": "Nakrycie głowy",
"headBase0Text": "No Headgear",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.",
"headSpecialFall2017HealerText": "Nawiedzony Dom Hełm",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Hełm tęczowego wojownika",
"headSpecialGaymerxNotes": "Aby uczcić porę dumy i konwent GaymerX, ten specjalny hełm jest przyozdobiony lśniącym, kolorowym wzorem tęczy! GaymerX to konwent poświęcony środowisku LGBTQ oraz grom komputerowym i jest otwarty dla wszystkich.",
"headMystery201402Text": "Skrzydlaty hełm",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Potrzebujesz pomocnej dłoni podczas wykonywania zadań ? Ten przezroczysty,galaretowaty hełm posiada kilka macek chętnych do pomocy! Hełm nie ma wpływu na statystki postaci. Przedmiot abonencki, lipiec 2017.",
"headMystery201710Text": "Imperious Imp Helm",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Szykowny cylinder",
"headMystery301404Notes": "Fantazyjny cylinder dla najwyżej urodzonych. Przedmiot Abonencki, styczeń 2015. Brak dodatkowych korzyści.",
"headMystery301405Text": "Klasyczny cylinder",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "This mighty steel helm will help you win the fight to be healthy, happy, and productive! Increases Perception by <%= per %>. Enchanted Armoire: Anti-Procrastination Set (Item 1 of 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "przedmiot w drugiej ręce",
"offhandCapitalized": "Przedmiot w drugiej ręce",
"shieldBase0Text": "Brak wyposażenia w drugiej ręce",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
"shieldSpecialFall2017HealerText": "Nawiedzona kula",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Pogromca postanowień",
"shieldMystery201601Notes": "To ostrze jest w stanie odbić wszystko, co rozprasza uwagę. Brak dodatkowych korzyści. Przedmiot Abonencki, styczeń 2016.",
"shieldMystery201701Text": "Tarcza zamrażająca czas",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Ta peleryna posiada ukryte kieszenie, w których możesz schować całe swoje złoto zdobyte z Zadań. Brak dodatkowych korzyści. Przedmiot Abonencki, czerwiec 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "Dodatki na głowę",
"headAccessoryCapitalized": "Dodatki na głowę",
"accessories": "Akcesoria",
diff --git a/website/common/locales/pl/generic.json b/website/common/locales/pl/generic.json
index ef46ab38b2c..c4ed233b1d1 100644
--- a/website/common/locales/pl/generic.json
+++ b/website/common/locales/pl/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Zbawca Atleńtydy",
"achievementDilatoryText": "Pomógł pokonać Straszliwego Smoka Atleńtydy podczas Obchodów Letniego Plusku 2014!",
"costumeContest": "Zawodnik konkursu kostiumowego",
- "costumeContestText": "Udział w Konkursie Kostiumów Habitoweenowych. Przejrzyj niektóre zgłoszenia na blogu Habitiki!",
- "costumeContestTextPlural": "Udział w <%= count %> Konkursach Kostiumów Habitoweenowych. Przejrzyj niektóre zgłoszenia na blogu Habitiki!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Członek od",
"lastLoggedIn": "- Ostatnio zalogowany",
"notPorted": "Ta funkcja nie jest jeszcze zaimportowana z oryginalnej strony.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Motyw dźwiękowy Airu",
"audioTheme_beatscribeNesTheme": "Motyw dźwiękowy Beatscribe NES",
"audioTheme_arashiTheme": "Motyw dźwiękowy Arashi",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Zadaj pytanie",
"reportBug": "Zgłoś błąd",
"HabiticaWiki": "Wiki Habitiki",
diff --git a/website/common/locales/pl/groups.json b/website/common/locales/pl/groups.json
index 6f7278ac4aa..6d5de098f5e 100644
--- a/website/common/locales/pl/groups.json
+++ b/website/common/locales/pl/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Wiadomość opcjonalna",
"yesRemove": "Tak, usuń je",
"foreverAlone": "Nie możesz polubić własnej wiadomości. Nie bądź taki.",
- "sortLevel": "Sortuj wg poziomu",
- "sortRandom": "Sortuj losowo",
- "sortPets": "Sortuj wg. liczby chowańców",
- "sortName": "Sortuj wg nazwy awatara",
- "sortBackgrounds": "Sortuj wg tła",
- "sortHabitrpgJoined": "Sortuj wg daty dołączenia do Habitica",
- "sortHabitrpgLastLoggedIn": "Sortuj wg czasu ostatniego logowania",
- "ascendingSort": "Sortuj rosnąco",
- "descendingSort": "Sortuj malejąco",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Ostatnio aktywny",
+ "sortLoginDesc": "Najdłużej nieaktywny",
+ "sortLevelAsc": "Najniższy poziom",
+ "sortLevelDesc": "Najwyższy poziom",
+ "sortNameAsc": "Nazwa (A - Z)",
+ "sortNameDesc": "Nazwa (Z - A)",
+ "sortTierAsc": "Najniższa ranga",
+ "sortTierDesc": "Najwyższa Ranga",
"confirmGuild": "Stworzyć Gildię za 4 Klejnoty?",
"leaveGroupCha": "Opuść wyzwania Gildii i...",
"confirm": "Potwierdź",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Nie masz uprawnień do usunięcia tej wiadomości!",
"onlyGroupLeaderCanEditTasks": "Nie masz uprawnień do zarządzania zadaniami!",
"onlyGroupTasksCanBeAssigned": "Tylko zadania grupy mogą być przypisane.",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Twoje uprawnienia do czatu zostały wycofane.",
"newChatMessagePlainNotification": "Nowa wiadomość w <%= groupName %> od <%= authorName %>. Kliknij tu by otworzyć stronę czatu.",
"newChatMessageTitle": "Nowa wiadomość w <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Zabawne dodatki",
"enterprisePlansButton": "Zapytaj o Plany Firmowe",
"enterprisePlansDescription": "Potrzebujesz dużej instalacji spersonalizowanej do Twoich potrzeb? Sprawdź czy nasze Plany Firmowe są tym czego szukasz. ",
- "enterprisePlansEmailSubject": "Pytanie dotyczące Planów Firmowych",
"familyPlansButton": "Zapisz się do listy mailingowej Planów Rodzinnych. ",
"familyPlansDescription": "Potrzebujesz wygodniejszego sposobu zarządzania swoim domem? Plany Rodzinne nadchodzą wkrótce!",
"createAGroup": "Stwórz grupę",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Zamierzasz dołączyć do grupy z anulowanym planem. NIE będziesz mógł otrzymać darmowego abonamentu.",
"cannotChangeLeaderWithActiveGroupPlan": "Nie możesz zmienić lidera grupy, dopóki posiada ona aktywny plan",
"leaderCannotLeaveGroupWithActiveGroup": "Lider nie może opuścić grupy, dopóki posiada ona aktywny plan",
- "youHaveGroupPlan": "Otrzymujesz darmowy abonament, ponieważ jesteś członkiem grupy posiadającej swój Plan Grupowy. Zostanie on zakończony, kiedy nie będziesz już przynależał do grupy posiadającej Plan Grupowy. Wszystkie miesiące dodatkowego abonamentu, które posiadasz zostaną zużyte z końcem planu grupowego. ",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Anuluj plan grupowy",
"confirmCancelGroupPlan": "Czy jesteś pewien, że chcesz anulować Plan Grupowy i pozbawić wszystkich członków płynących z niego korzyści, łącznie z ich darmowym abonamentem ?",
"canceledGroupPlan": "Anulowano plan grupowy",
@@ -370,7 +381,7 @@
"inviteFriendsParty": "Inviting friends to your party will grant you an exclusive
Quest Scroll to battle the Basi-List together!",
"upgradeParty": "Upgrade Party",
"createParty": "Stwórz Drużynę",
- "inviteMembersNow": "Would you like to invite members now?",
+ "inviteMembersNow": "Czy chciałbyś teraz zaprosić członków?",
"playInPartyTitle": "Graj w Habitikę w Drużynie!",
"playInPartyDescription": "Take on amazing quests with friends or on your own. Battle monsters, create Challenges, and help yourself stay accountable through Parties.",
"startYourOwnPartyTitle": "Utwórz swoją własną drużynę",
@@ -383,19 +394,20 @@
"inviteInformation": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the Quest begins.",
"questOwnerRewards": "Quest Owner Rewards",
"updateParty": "Update Party",
- "upgrade": "Upgrade",
+ "upgrade": "Ulepsz",
"selectPartyMember": "Wybierz Członka Drużyny",
"areYouSureDeleteMessage": "Are you sure you want to delete this message?",
"reverseChat": "Reverse Chat",
"invites": "Zaproszenia",
- "details": "Details",
+ "details": "Szczegóły",
"participantDesc": "Once all members have either accepted or declined, the Quest begins. Only those who clicked 'accept' will be able to participate in the Quest and receive the rewards.",
- "groupGems": "Group Gems",
+ "groupGems": "Klejnoty Drużyny",
"groupGemsDesc": "Guild Gems can be spent to make Challenges! In the future, you will be able to add more Guild Gems.",
"groupTaskBoard": "Task Board",
"groupInformation": "Group Information",
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/limited.json b/website/common/locales/pl/limited.json
index 26399401d7c..67551a32e5d 100644
--- a/website/common/locales/pl/limited.json
+++ b/website/common/locales/pl/limited.json
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Balowy Mag (Mag)",
"fall2017HauntedHouseSet": "Uzdrowiciel z Nawiedzonego Domu (Uzdrowiciel)",
"fall2017TrickOrTreatSet": "Łotrzyk Cukierek albo Psikus (Łotrzyk)",
+ "winter2018ConfettiSet": "Mag Konfetti (Mag)",
+ "winter2018GiftWrappedSet": "Zapakowany Wojownik (Wojownik)",
+ "winter2018MistletoeSet": "Jemiołowy Uzdrowiciel (Uzdrowiciel)",
+ "winter2018ReindeerSet": "Reniferowy Łotrzyk (Łotrzyk)",
"eventAvailability": "Dostępny w sprzedaży do <%= date(locale) %>.",
"dateEndApril": "19 kwietnia",
"dateEndMay": "17 Maja",
@@ -120,5 +124,9 @@
"dateEndAugust": "Sierpień 31",
"dateEndOctober": "31 października",
"dateEndNovember": "30 listopada",
- "discountBundle": "pakiet"
+ "dateEndJanuary": "31 stycznia",
+ "discountBundle": "pakiet",
+ "winterPromoGiftHeader": "DAJ KOMUŚ ABONAMENT W PREZENCIE I ODBIERZ TAKI SAM DLA SIEBIE!",
+ "winterPromoGiftDetails1": "Tylko do 12 stycznia, gdy podarujesz komuś subskrypcję, otrzymasz za darmo taką samą subskrypcję!",
+ "winterPromoGiftDetails2": "Zauważ, że w przypadku gdy Ty, lub osoba dla której wykupujesz subskrypcję posiada już podobny abonament, subskrypcja wykupiona jako prezent rozpocznie się dopiero po anulowaniu subskrypcji lub jej wygaśnięciu. Dziękujemy bardzo za wsparcie! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/loadingscreentips.json b/website/common/locales/pl/loadingscreentips.json
index 9afaffc117f..2c413d3b855 100644
--- a/website/common/locales/pl/loadingscreentips.json
+++ b/website/common/locales/pl/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Wskazówka #<%= tipNumber %>",
"tip1": "Sprawdzaj zadania na bieżąco w aplikacjach mobilnych Habitiki.",
- "tip2": "Osiągnij poziom 100, żeby odblokować Kulę Odrodzenia i zacząć nową przygodę!",
+ "tip2": "Naciśnij na część wyposażenia lub załóż ją natychmiastowo naciskając na gwiazdkę znajdującą się w lewym górnym rogu.",
"tip3": "Używaj emoji, by łatwiej rozróżniać zadania.",
"tip4": "Użyj znaku # przed nazwą zadania, żeby ją powiększyć!",
- "tip5": "Umiejętności najlepiej wykorzystać rano, żeby bonusy trwały dłużej.",
- "tip6": "Sprawdź co jakiś czas swoje zadania, żeby upewnić się, że są aktualne!",
- "tip7": "Niektóre tła łączą się ze sobą idealnie jeżeli członkowie drużyny używają tego samego. Np: Górskie jezioro, Pagody lub Faliste wzgórza",
- "tip8": "Wyślij wiadomość do kogoś, klikając kopertę obok jego nazwy na czacie!",
- "tip9": "Odwiedź gildię „Guild Leaders & Challenge Creators” po porady dotyczące tworzenia Gildii.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Możesz wygrać klejnoty w Wyzwaniach. Nowe Wyzwania są dodawane każdego dnia!",
- "tip11": "Jeśli lubisz przebierać swojego awatara, odwiedź gildię „Costume Carnival”.",
- "tip12": "Dołącz do gildii „Challenge... Accepted” dla regularnie dodawanych losowych wyzwań.",
- "tip13": "Posiadanie w drużynie więcej niż czterech członków nakłada większą odpowiedzialność!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Możesz dodać do swojej listy nagłówki i inspirujące cytaty jako Nawyki bez (+/−).",
- "tip15": "Dodaj podpunkty do swoich zadań Do-Zrobienia, żeby zwiększyć nagrodę!",
- "tip16": "Odwiedź zakładkę Dane, by uzyskać cenne informacje o swoich postępach.",
- "tip17": "Używanie tagów może pomóc uporządkować chaotyczną listę zadań!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Nawyki tylko pozytywne lub tylko negatywne będą z czasem wracać do koloru żółtego.",
- "tip19": "Zwiększ swoją Inteligencję, by zdobywać więcej PD po zakończeniu zadania.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Zwiększ swoją Percepcję, by zgarniać więcej zdobyczy i złota.",
"tip21": "Zwiększ swoją Siłę, by zadawać więcej obrażeń Bossom i zdobywać trafienia krytyczne.",
"tip22": "Zwiększ swoją Kondycję, by złagodzić obrażenia za nieukończone Codzienne.",
- "tip23": "Kliknij w ikonę diagramu przy zadaniu, by zobaczyć wykres obrazujący Twój postęp.",
- "tip24": "Habitica jest Open Source! Jeśli chcesz przyczynić się do jej rozwoju, odezwij się w gildii „Aspiring Legends”.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "Sezonowe Wielkie Gale zaczynają się w okolicach równonocy i przesileń.",
- "tip26": "Strzałka po lewej od numeru poziomu oznacza, że dany gracz jest aktualnie wzmocniony.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Wykonałeś Codzienne poprzedniego dnia, ale zapomniałeś je odznaczyć? Nie martw się! Używając opcji sprawdzania wczorajszej aktywności masz szansę na odznaczenie tych zadań, zanim zaczniesz nowy dzień.",
- "tip28": "Ustaw własny początek dnia w Ustawienia > Strona, aby kontrolować, kiedy resetują się Twoje Codzienne.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Ukończ wszystkie Codzienne, aby otrzymać wzmocnienie za doskonały dzień, które podwyższy Twoje atrybuty.",
"tip30": "Możesz zapraszać innych graczy nie tylko do drużyn, ale także do gildii.",
"tip31": "Sprawdź gotowe listy w Bibliotece Gildii Zadań i Wyzwań i znajdź przykładowe zadania.",
- "tip32": "Duża część kodu, ilustracji oraz tekstów Habitiki jest tworzona przez wolontariuszy! Każdy z Was może pomóc.",
- "tip33": "Sprawdź gildię The Bulletin Board aby zobaczyć nowe informacje na temat gildii, wyzwań i innych wydarzeń stworzonych przez graczy oraz ogłosić własne wydarzenia!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/pl/messages.json b/website/common/locales/pl/messages.json
index cb33b025c2b..e6c0d868109 100644
--- a/website/common/locales/pl/messages.json
+++ b/website/common/locales/pl/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Znalazłeś misję: \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Ten element wyposażenia został zakupiony, ale już go nie posiadasz. Możesz kupić go ponownie w sekcji nagród na stronie z zadaniami.",
"messageAlreadyOwnGear": "Już posiadasz ten przedmiot. Przejdź do strony z wyposażeniem, aby zacząć go używać.",
+ "previousGearNotOwned": "Musisz zakupić wyposażenie niższego poziomu przed zakupem tego.",
"messageHealthAlreadyMax": "Już masz maksymalny poziom zdrowia.",
"messageHealthAlreadyMin": "O nie! Skończyły ci sie punkty życia, więc jest już za późno, aby kupić eliksir uzdrawiający, ale nie martw się - możesz się odrodzić!",
"armoireEquipment": "<%= image %> Znalazłeś część rzadkiego wyposażenia w Zaczarowanej Szafie: <%= dropText %>! Fantastycznie!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Już zgłosiłeś tę wiadomość.",
"messageGroupChatNotFound": "Nie znaleziono wiadomości!",
"messageGroupChatAdminClearFlagCount": "Tylko administrator może wyczyścić licznik flag!",
+ "messageCannotFlagSystemMessages": "Nie możesz zgłosić wiadomości systemowej. Jesli potrzebujesz zgłosić naruszenie Wytycznych Społeczności związane z tą wiadomością, proszę wyślij e-mailem zrzut ekranu i wyjaśnienie do <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Ups, zdaje się, że wysyłasz zbyt wiele wiadomości! Poczekaj minutę i spróbuj ponownie. Pogaduszki w Karczmie mieszczą równocześnie tylko 200 wiadomości, więc Habitica zaleca wysyłanie dłuższych i bardziej przemyślanych wiadomości oraz łączenie odpowiedzi. Nie możemy się doczekać żeby usłyszeć co masz do powiedzenia. :)",
"messageUserOperationProtected": "Ścieżka `<%= operation %>` nie została zapisana, gdyż jest chronniona przed zapisem.",
"messageUserOperationNotFound": "Operacja <%= operation %> nie znaleziona",
diff --git a/website/common/locales/pl/npc.json b/website/common/locales/pl/npc.json
index 636573021dd..1eda6ac42f7 100644
--- a/website/common/locales/pl/npc.json
+++ b/website/common/locales/pl/npc.json
@@ -5,18 +5,18 @@
"welcomeTo": "Welcome to",
"welcomeBack": "Witaj ponownie!",
"justin": "Justin",
- "justinIntroMessage1": "Hello there! You must be new here. My name is Justin, your guide to Habitica.",
- "justinIntroMessage2": "To start, you'll need to create an avatar.",
- "justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
+ "justinIntroMessage1": "Witaj! Chyba jesteś tu nowy. Nazywam się Justin i będę Twoim przewodnikiem po świecie Habitiki.",
+ "justinIntroMessage2": "Na początku musisz stworzyć swój awatar.",
+ "justinIntroMessage3": "Świetnie! Teraz powiedz: nad czym chcesz pracować podczas swojej podróży? ",
"introTour": "Here we are! I've filled out some Tasks for you based on your interests, so you can get started right away. Click a Task to edit or add new Tasks to fit your routine!",
- "prev": "Prev",
- "next": "Next",
+ "prev": "Poprzedni",
+ "next": "Następny",
"randomize": "Randomize",
"mattBoch": "Matt Boch",
"mattShall": "Mam przyprowadzić wierzchowca, <%= name %>? Gdy nakarmisz chowańca wystarczającą ilością jedzenia, by zamienił się w wierzchowca, pojawi się tutaj. Kliknij wierzchowca, by go osiodłać!",
"mattBochText1": "Witaj w stajni! Mam na imię Matt i jestem władcą chowańców. Od poziomu 3 możesz za pomocą jaj i eliksirów wykluwać chowańce. Gdy na Targu wyklujesz chowańca, to pojawi się on tutaj! Kliknij na obrazek jednego z nich, by pojawił się na twoim awatarze. Karm chowańce jedzeniem znajdowanym od poziomu 3, by wyrosły z nich potężne wierzchowce.",
"welcomeToTavern": "Witaj w Karczmie!",
- "sleepDescription": "Need a break? Check into Daniel's Inn to pause some of Habitica's more difficult game mechanics:",
+ "sleepDescription": "Potrzebujesz przerwy? Odwiedź Gospodę Daniela by zatrzymać bardziej skomplikowane elementy Habitiki.",
"sleepBullet1": "Pominięte Codziennie nie zadadzą Ci obrażeń",
"sleepBullet2": "Tasks won't lose streaks or decay in color",
"sleepBullet3": "Bosses won't do damage for your missed Dailies",
@@ -42,8 +42,8 @@
"yourBalance": "Your balance",
"sell": "Sprzedaj",
"buyNow": "Kup",
- "sortByNumber": "Number",
- "featuredItems": "Featured Items!",
+ "sortByNumber": "Numer",
+ "featuredItems": "Wyróżnione Przedmioty!",
"hideLocked": "Ukryj niedostępne",
"hidePinned": "Ukryj przypięte",
"amountExperience": "<%= amount %> Doświadzenia",
@@ -88,7 +88,7 @@
"plusOneGem": "+1 klejnot",
"typeNotSellable": "Gatunek nie jest na sprzedaż. Musi być jednym z <%= acceptedTypes %>",
"userItemsKeyNotFound": "Klawisz nie został znaleziony dla user.items <%= type %>",
- "userItemsNotEnough": "Nie wystarczająca ilość <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Ścieżka jest wymagana",
"unlocked": "Przedmioty zostały odblokowane",
"alreadyUnlocked": "Pełen zestaw jest już odblokowany.",
@@ -112,7 +112,7 @@
"autoAllocate": "Automatyczne rozlokowanie",
"autoAllocateText": "Jeśli 'automatyczna alokacja' jest zaznaczona, twój awatar zyskuje statystyki automatycznie w oparciu o atrybuty zadań, które możesz znaleźć w ZADANIE > Edycja > Zaawansowane > Atrybuty. Na przykład, jeśli często odwiedzasz siłownię oraz twoje Codzienne 'Siłownia' jest ustawione na 'Fizyczne', twoja Siła zwiększy się automatycznie.",
"spells": "Umiejętności",
- "spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed To-Do.",
+ "spellsText": "Od teraz możesz odblokować umiejętności klasowe. Pierwszą z nich zobaczysz na poziomie 11. Twoja mana odnawia się w tempie 10 punktów dziennie. Za każde wykonanie (zadanie) Do-Zrobienia otrzymujesz dodatkowo po 1 punkt.",
"skillsTitle": "Umiejętności",
"toDo": "Do-Zrobienia",
"moreClass": "Więcej informacji na temat systemu klas na Wiki.",
diff --git a/website/common/locales/pl/overview.json b/website/common/locales/pl/overview.json
index 5ad7f536628..7bdf5c627e1 100644
--- a/website/common/locales/pl/overview.json
+++ b/website/common/locales/pl/overview.json
@@ -2,13 +2,13 @@
"needTips": "Potrzebujesz wskazówek jak zacząć? Tutaj jest prosty poradnik!",
"step1": "Krok 1: Wprowadź Zadania",
- "webStep1Text": "Habitica is nothing without real-world goals, so enter a few tasks. You can add more later as you think of them! All tasks can be added by clicking the green \"Create\" button.\n* **Set up [To-Dos](http://habitica.wikia.com/wiki/To-Dos):** Enter tasks you do once or rarely in the To-Dos column, one at a time. You can click on the tasks to edit them and add checklists, due dates, and more!\n* **Set up [Dailies](http://habitica.wikia.com/wiki/Dailies):** Enter activities you need to do daily or on a particular day of the week, month, or year in the Dailies column. Click task to edit when it will be due and/or set a start date. You can also make it due on a repeating basis, for example, every 3 days.\n* **Set up [Habits](http://habitica.wikia.com/wiki/Habits):** Enter habits you want to establish in the Habits column. You can edit the Habit to change it to just a good habit :heavy_plus_sign: or a bad habit :heavy_minus_sign:\n* **Set up [Rewards](http://habitica.wikia.com/wiki/Rewards):** In addition to the in-game Rewards offered, add activities or treats which you want to use as a motivation to the Rewards column. It's important to give yourself a break or allow some indulgence in moderation!\n* If you need inspiration for which tasks to add, you can look at the wiki's pages on [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits), [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies), [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos), and [Sample Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards).",
+ "webStep1Text": "Habitica nie ma sensu, jeśli nie połączysz jej z prawdziwym życiem, dlatego dodaj kilka zadań. Jeśli przypomnisz sobie więcej, możesz dodać je później!Wszystkie zadania mozna dodać przez kliknięcie zielonego przycisku \"Utwórz\".\n* **Ustaw [Do-Zrobienia](http://habitica.wikia.com/wiki/To-Dos):**Zadania, które chcesz wykonywać raz lub rzadko umieść pojedynczo w kolumnie Do-Zrobienia. Kliknij ikonę ołówka, żeby edytować je, dodać listę, termin lub inne szczegóły!\n* **Ustaw [Codzienne](http://habitica.wikia.com/wiki/Dailies):**Zadania, które chcesz wykonywać codziennie lub konkretnego dnia tygodnia umieść w kolumnie Codziennych. Kliknij ikonę ołówka, żeby wybrać dni tygodnia, w których chcesz je wykonywać lub ustaw datę startową. Możesz również wybrać, żeby zadanie powtarzało się, przykładowo, co 3 dni.\n* **Ustaw [Nawyki](http://habitica.wikia.com/wiki/Habits):**Nawyki, które chcesz utrzymać, umieść w kolumnie Nawyków. Możesz zmienić nawyk na tylko pozytywny :heavy_plus_sign:lub tylko negatywny :heavy_minus_sign:\n* **Ustaw [Nagrody](http://habitica.wikia.com/wiki/Rewards):**Oprócz nagród przydatnych w grze, możesz w kolumnie Nagród dodać czynności lub przedmioty, które pomogą ci się zmotywować. Dobrze wyważona ilość przerw czy przyjemności jest ważna!\n* Jeśli szukasz podpowiedzi jakie zadania dodać, sprawdź strony wiki na temat [Przykładowych Nawyków](http://habitica.wikia.com/wiki/Sample_Habits), [Przykładowych Codziennych](http://habitica.wikia.com/wiki/Sample_Dailies), [Przykładowych Do-Zrobienia](http://habitica.wikia.com/wiki/Sample_To-Dos) oraz [Przykładowych Nagród](http://habitica.wikia.com/wiki/Sample_Custom_Rewards).",
"step2": "Krok 2: Zdobądź punkty za robienie rzeczy w prawdziwym życiu",
"webStep2Text": "Teraz możesz zacząć wykonywać swoje zadania! Gdy zrobisz jakieś i zaznaczysz to w Habitice, zyskasz [doświadczenie](http://habitica.wikia.com/wiki/Experience_Points), które pomoże ci zwiększyć poziom oraz [złoto](http://habitica.wikia.com/wiki/Gold_Points), za które możesz kupować Nagrody. Jeśli będziesz utrzymywać złe nawyki lub nie zrobisz któregoś z Codziennych, będziesz tracić [punkty życia](http://habitica.wikia.com/wiki/Health_Points). W ten sposób punkty doświadczenia i zdrowia staną się wyznacznikiem twoich postępów. W miarę jak twoja postać będzie się rozwijać, zauważysz też polepszenie twojego życia.",
"step3": "Krok 3: Dostosuj i eksploruj Habitikę",
- "webStep3Text": "Once you're familiar with the basics, you can get even more out of Habitica with these nifty features:\n * Organize your tasks with [tags](http://habitica.wikia.com/wiki/Tags) (edit a task to add them).\n * Customize your [avatar](http://habitica.wikia.com/wiki/Avatar) by clicking the user icon in the upper-right corner.\n * Buy your [Equipment](http://habitica.wikia.com/wiki/Equipment) under Rewards or from the [Shops](/shops/market), and change it under [Inventory > Equipment](/inventory/equipment).\n * Connect with other users via the [Tavern](http://habitica.wikia.com/wiki/Tavern).\n * Starting at Level 3, hatch [Pets](http://habitica.wikia.com/wiki/Pets) by collecting [eggs](http://habitica.wikia.com/wiki/Eggs) and [hatching potions](http://habitica.wikia.com/wiki/Hatching_Potions). [Feed](http://habitica.wikia.com/wiki/Food) them to create [Mounts](http://habitica.wikia.com/wiki/Mounts).\n * At level 10: Choose a particular [class](http://habitica.wikia.com/wiki/Class_System) and then use class-specific [skills](http://habitica.wikia.com/wiki/Skills) (levels 11 to 14).\n * Form a party with your friends (by clicking [Party](/party) in the navigation bar) to stay accountable and earn a Quest scroll.\n * Defeat monsters and collect objects on [quests](http://habitica.wikia.com/wiki/Quests) (you will be given a quest at level 15).",
+ "webStep3Text": "Jak już zaznajomisz się z podstawami, możesz skorzystać z wielu innych przydatnych właściwości Habitiki:\n*Uporządkuj swoje zadania za pomocą [tagów](http://habitica.wikia.com/wiki/Tags)(edytuj zadanie, aby je dodać).\n*Dostosuj swój [awatar](http://habitica.wikia.com/wiki/Avatar) pod [Użytkownik > Awatar](/#/options/profile/avatar)poprzez kliknięcie w ikonę użytkownika w prawym-górnym rogu.\n*Kup [wyposażenie](http://habitica.wikia.com/wiki/Equipment) z kolumny Nagród i zmień je pod [sklep](/shops/market) i zmień je pod [Inwentarz > Ekwipunek](/inventory/equipment).\n* Nawiąż kontakt z innymi użytkownikami w [Karczmie](http://habitica.wikia.com/wiki/Tavern).\n* Od poziomu 3, wykluwaj [chowańce](http://habitica.wikia.com/wiki/Pets)poprzez zbieranie [jaj](http://habitica.wikia.com/wiki/Eggs) oraz [eliksirów wyklucia](http://habitica.wikia.com/wiki/Hatching_Potions). [Karm](http://habitica.wikia.com/wiki/Food) je aby wyhodować [wierzchowce](http://habitica.wikia.com/wiki/Mounts).\n* Na poziomie 10: Wybierz dla swojej postaci [klasę](http://habitica.wikia.com/wiki/Class_System) a później używaj unikalnych dla twojej klasy [umiejętności](http://habitica.wikia.com/wiki/Skills) (poziomy 11 do 14).\n* Stwórz drużynę ze swoimi znajomymi (klikając na pasku [Drużyna](/party)) aby motywowała cię do sumienności. Otrzymasz również zwój Misji.\n* Zwalczaj potwory i zbieraj przedmioty w trakcie [misji](http://habitica.wikia.com/wiki/Quests) (dostaniesz zwój misji na poziomie 15).",
- "overviewQuestions": "Have questions? Check out the [FAQ](/static/faq/)! If your question isn't mentioned there, you can ask for further help in the [Habitica Help guild](/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a).\n\nGood luck with your tasks!"
+ "overviewQuestions": "Masz pytania? Sprawdź [FAQ](https://habitica.com/static/faq/)! Jeśli nie ma tam Twojego pytania, możesz zapytać o pomoc w [Gildii pomocy Habitiki - Habitica Help guild](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a).\n\nPowodzenia w wykonywaniu zadań!"
}
diff --git a/website/common/locales/pl/pets.json b/website/common/locales/pl/pets.json
index d4f7acb7609..60f4e1cb426 100644
--- a/website/common/locales/pl/pets.json
+++ b/website/common/locales/pl/pets.json
@@ -75,7 +75,7 @@
"hatchAPot": "Wykluć <%= potion %><%= egg %>?",
"hatchedPet": "Wyklułeś <%= potion %> <%= egg %>!",
"hatchedPetGeneric": "Wyklułeś nowego Chowańca!",
- "hatchedPetHowToUse": "Visit the [Stable](/inventory/stable) to feed and equip your newest pet!",
+ "hatchedPetHowToUse": "Odwiedź [stajnię] (/inventory/stable), żeby nakarmić i wyposażyć swojego nowego zwierzaka!",
"displayNow": "Wyświetl teraz",
"displayLater": "Wyświetl później",
"petNotOwned": "Nie posiadasz tego chowańca.",
@@ -123,5 +123,5 @@
"clickOnPetToFeed": "Kliknij na Chowańca, aby nakarmić go <%= foodName %> i patrz jak rośnie!",
"dragThisPotion": "Przeciągnij ten <%= potionName %> na jajo i wykluj nowego Chowańca!",
"clickOnEggToHatch": "Kliknij na jajo, aby użyć <%= potionName %> eliksir wyklucia i wykluć nowego Chowańca!",
- "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>."
+ "hatchDialogText": "Wylej swój <%= potionName %>eliksir wyklucia na jajo <%= eggName %>, a wykluje isę z niego <%= petName %>."
}
\ No newline at end of file
diff --git a/website/common/locales/pl/quests.json b/website/common/locales/pl/quests.json
index ac5e668a22e..b830053751b 100644
--- a/website/common/locales/pl/quests.json
+++ b/website/common/locales/pl/quests.json
@@ -6,7 +6,7 @@
"questsForSale": "Misje na sprzedaż",
"petQuests": "Misje z chowańcami i wierzchowcami",
"unlockableQuests": "Misje możliwe do odblokowania",
- "goldQuests": "Masterclasser Quest Lines",
+ "goldQuests": "Mistrzowie Klas - Cykl Misji",
"questDetails": "Szczegóły misji",
"questDetailsTitle": "Szczegóły misji",
"questDescription": "Misje pozwalają graczom skupić się na długoterminowych celach w grze wraz z członkami drużyny",
@@ -40,7 +40,7 @@
"bossHP": "Zdrowie Bossa",
"bossStrength": "Siła bossa",
"rage": "Furia",
- "collect": "Zebrać",
+ "collect": "Zbierz",
"collected": "Zebrano",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Przedmioty do zebrania",
@@ -48,7 +48,7 @@
"bossDmg2": "Tylko uczestnicy będą mogli walczyć z bossem i brać udział w podziale łupów.",
"bossDmg1Broken": "Każde zakończone zadanie Codzienne i Do-Zrobienia i każdy pozytywny Nawyk zadają obrażenia bossowi... Zrań go bardziej czerwieńszymi zadaniami lub Brutalnym uderzeniem i Eksplozją płomieni... Boss zada obrażenia każdemu uczestnikowi misji za każde zadanie Codzienne, którego nie ukończono (pomnożone przez siłę bossa) oprócz standardowych obrażeń, więc pilnuj stanu zdrowia swojej drużyny, wypełniając codzienne zadania... Wszystkie obrażenia zadane bossowi lub przez niego będą podsumowane przez crona (rozpoczęcie nowego dnia)...",
"bossDmg2Broken": "Tylko uczestnicy będą mogli walczyć z bossem i brać udział w podziale łupów...",
- "tavernBossInfo": "Wypełniaj swoje Codzienne i Do-Zrobienia, aby zadawać obrażenia światowemu bossowi. Niewypełnione Codzienne powodują wzrastanie Furii. Kiedy pasek Furii się zapełni, światowy boss zaatakuje NPCa. Światowy boss nigdy nie skrzywdzi indywidualnych graczy. Liczą się wyłącznie zadania aktywnych graczy, którzy aktualnie nie wypoczywają w Gospodzie.",
+ "tavernBossInfo": "Wypełniaj swoje Codzienne i Do-Zrobienia, aby zadawać obrażenia Globalnemu Bossowi. Niewypełnione Codzienne powodują wzrastanie Furii. Kiedy pasek Furii się zapełni, Globalny Boss zaatakuje NPC'a. Globalny Boss nigdy nie skrzywdzi indywidualnych graczy. Liczą się wyłącznie zadania aktywnych graczy, którzy aktualnie nie wypoczywają w Gospodzie.",
"tavernBossInfoBroken": "Wypełnij zadania Codzienne i Do-Zrobienia i zdobądź punkty za pozytywne Nawyki, aby zadać obrażenia Globalnemu Bossowi... Niedokończone Codzienne wypełniają pasek wzrastania Furii... Kiedy pasek Furii się wypełni, Globalny Boss zaatakuje bohatera niezależnego... Globalny Boss nigdy nie zada obrażeń indywidualnym graczom, ani ich kontom... Liczą się wyłącznie zadania aktywnych graczy, którzy nie wypoczywają w Gospodzie...",
"bossColl1": "Aby zbierać przedmioty, wykonuj pozytywne zadania. Przedmioty misyjne znajdujesz tak samo jak zwykłe; możesz sprawdzić zdobyte przedmioty misyjne najeżdżając na ikonę postępu zadania.",
"bossColl2": "Tylko uczestnicy mogą zbierać przedmioty i brać udział w podziale łupów.",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Musisz mieć co najmniej poziom <%= level %>, żeby kupić tę misję!",
"mustInviteFriend": "By zdobyć tę misję, zaproś przyjaciela do swojej drużyny. Zaprosić kogoś teraz?",
"unlockByQuesting": "By odblokować tę misję, ukończ <%= title %>.",
+ "questConfirm": "Jesteś pewien? Tylko <%= questmembers %> z <%= totalmembers %> członków drużyny dołączyło do zadania! Zadania rozpoczynają się automatycznie, kiedy wszyscy gracze przyjęli lub odrzucili zaproszenie.",
"sureCancel": "Czy na pewno chcesz zakończyć tę misję? Wszystkie zaakceptowane zaproszenia zostaną stracone. Właściciel misji zachowa zwój misji.",
"sureAbort": "Czy na pewno chcesz porzucić tę misję? Zostanie przerwana dla każdego członka twojej drużyny i cały postęp zostanie stracony. Zwój misji zostanie zwrócony właścicielowi.",
"doubleSureAbort": "Czy jesteś pewien? Drużyna się na Ciebie nie obrazi?",
diff --git a/website/common/locales/pl/questscontent.json b/website/common/locales/pl/questscontent.json
index d06275a75e9..1b4b891be71 100644
--- a/website/common/locales/pl/questscontent.json
+++ b/website/common/locales/pl/questscontent.json
@@ -349,7 +349,7 @@
"questArmadilloDropArmadilloEgg": "Pancernik (jajo)",
"questArmadilloUnlockText": "Odblokowuje dostęp do kupna jaj pancernika na Targu",
"questCowText": "Zmuutowana krowa",
- "questCowNotes": "To był długi, upalny dzień na Farmach Sparingowych i jedyne o czym marzysz, to porządny łyk wody i odrobina snu. Stoisz sobie śniąc na jawie, kiedy nagle @Soloana zaczyna krzyczeć, \"Wszyscy w nogi! Krowa nagrodowa zmuutowała!\"
@eevachu bierze głęboki wdech. \"Widocznie nasze złe nawyki ją zainfekowały.\"
\"Wymię ojca!\" mówi Feralem Tau. \"Zróbmy coś, zanim zmuutują też inne krowy.\"
Wystarczy tego. Dość snu na jawie -- już czas odzyskać kontrolę nad tymi złymi nawykami!",
+ "questCowNotes": "It’s been a long, hot day at Sparring Farms, and there is nothing more you want than a long sip of water and some sleep. You're standing there daydreaming when @Soloana suddenly screams, \"Everyone run! The prize cow has mootated!\"
@eevachu gulps. \"It must be our bad habits that infected it.\"
\"Quick!\" @Feralem Tau says. \"Let’s do something before the udder cows mootate, too.\"
You’ve herd enough. No more daydreaming -- it's time to get those bad habits under control!",
"questCowCompletion": "Doisz swoje dobre nawyki ze wszystkiego, co są warte, aż krowa wraca do swojej pierwotnej postaci. Krowa spogląda na ciebie swymi ślicznymi brązowymi oczami i szturcha w twoją stronę trzy jaja.
@fuzzytrees śmieje się i podaje ci jaja, \"Może jednak dalej jest zmuutowana, jeśli tych w jajach są cielaczki. Ale ufam, że wychowując je pozostaniesz przy swoich dobrych nawykach!\"",
"questCowBoss": "Zmuutowana krowa",
"questCowDropCowEgg": "Krowa (jajo)",
@@ -549,5 +549,13 @@
"questYarnCompletion": "With a feeble swipe of a pin-riddled appendage and a weak roar, the Dread Yarnghetti finally unravels into a pile of yarn balls.
\"Take care of this yarn,\" shopkeeper @JinjooHat says, handing them to you. \"If you feed them and care for them properly, they'll grow into new and exciting projects that just might make your heart take flight…\"",
"questYarnBoss": "The Dread Yarnghetti",
"questYarnDropYarnEgg": "Yarn (Egg)",
- "questYarnUnlockText": "Unlocks purchasable Yarn eggs in the Market"
+ "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",
+ "questPterodactylDropPterodactylEgg": "Pterodactyl (Egg)",
+ "questPterodactylUnlockText": "Unlocks purchasable Pterodactyl eggs in the Market"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/rebirth.json b/website/common/locales/pl/rebirth.json
index 4928c194d74..91a89e8a92e 100644
--- a/website/common/locales/pl/rebirth.json
+++ b/website/common/locales/pl/rebirth.json
@@ -21,7 +21,7 @@
"rebirthOrb": "Wykorzystał Kulę Odrodzenia aby rozpocząć grę od nowa po osiągnięciu Poziomu <%= level %>.",
"rebirthOrb100": "Wykorzystano Kulę Odrodzenia aby rozpocząć grę od nowa po osiągnięciu Poziomu 100 lub wyższego",
"rebirthOrbNoLevel": "Wykorzystał Kulę Odrodzenia aby rozpocząć grę od nowa",
- "rebirthPop": "Instantly restart your character at Level 1 while retaining achievements, collectibles, equipment, and tasks with history. This will take effect immediately.",
+ "rebirthPop": "Rozpocznij grę od nowa na poziomie 1 zachowując odznaki, przedmioty kolekcjonerskie, wyposażenie oraz wszystkie zadania wraz z historią.",
"rebirthName": "Kula Odrodzenia",
"reborn": "Odrodzony, najwyższy poziom <%= reLevel %>",
"confirmReborn": "Na pewno?",
diff --git a/website/common/locales/pl/settings.json b/website/common/locales/pl/settings.json
index cde2c738663..c263926a729 100644
--- a/website/common/locales/pl/settings.json
+++ b/website/common/locales/pl/settings.json
@@ -65,7 +65,7 @@
"resetText1": "UWAGA! Ta opcja zresetuje wiele części twojego konta. Odradzamy taki krok, jednak niektórzy gracze mogą uznać tę funkcję za przydatną po wstępnym wypróbowaniu strony.",
"resetText2": "Stracisz wszystkie poziomy, całe złoto i punkty doświadczenia. Wszystkie Twoje zadania (z wyjątkiem tych z Wyzwań) zostaną na zawsze usunięte, razem z historią ich wypełnienia. Stracisz także wyposażenie, choć będziesz mógł je kupić ponownie, włączając w to przedmioty limitowane i tylko dla subskrybentów, które już posiadasz (aby odkupić wyposażenie przeznaczone dla konkretnej klasy, musisz do niej przynależeć). Zachowasz swoją klasę, chowańce i wierzchowce. Być może lepiej będzie jeśli użyjesz Kuli Odrodzenia – to bezpieczniejsze i zachowa wszystkie Twoje zadania oraz ekwipunek.",
"deleteLocalAccountText": "Jesteś pewny? Usuniesz swoje konto bez możliwości powrotu! By ponownie używać Habitica, będziesz musiał zarejestrować nowe konto. Posiadane oraz wydane diamenty nie zostaną zwrócone. Jeśli jesteś pewny, wpisz poniżej swoje hasło.",
- "deleteSocialAccountText": "Jesteś pewny? Usuniesz swoje konto na zawsze - bez możliwości powrotu! By ponownie używać Habitica, będziesz musiał zarejestrować nowe konto. Posiadane oraz wydane Klejnoty nie zostaną zwrócone. Jeśli jesteś absolutnie pewny, wpisz DELETE w oknie poniżej.",
+ "deleteSocialAccountText": "Jesteś pewny? Usuniesz swoje konto na zawsze - bez możliwości powrotu! By ponownie używać Habitikę, będziesz musiał zarejestrować nowe konto. Posiadane oraz wydane Klejnoty nie zostaną zwrócone. Jeśli jesteś absolutnie pewny, wpisz <%= magicWord %>w oknie poniżej.",
"API": "API",
"APIv3": "API v3",
"APIText": "Skopiuj, by używać w innych aplikacjach. Traktuj jednak swój token API jak hasło i nie dziel się nim z innymi. Czasem możesz zostać poproszony o swoje ID użytkownika, ale nigdy nie publikuj swojego tokenu API tam, gdzie mogą go zobaczyć inne osoby, włączając w to Github.",
@@ -118,6 +118,7 @@
"giftedSubscription": "Podarowane abonamenty",
"giftedSubscriptionInfo": "<%= name %> podarował Ci <%= months %> miesięczną subskrypcję ",
"giftedSubscriptionFull": "Hej <%= username %>, <%= sender %> podarował Ci <%= monthCount %> miesięcy subskrypcji!",
+ "giftedSubscriptionWinterPromo": "Cześć <%= username %>, otrzymałeś <%= monthCount %> miesięcy subskrybcji w ramach naszej promocji świątecznego rozdawania prezentów!",
"invitedParty": "Zaproszony do Drużyny",
"invitedGuild": "Zaproszony do Gildii",
"importantAnnouncements": "Przypomnienia o meldowaniu, aby wykonywać zadania i otrzymywać nagrody.",
diff --git a/website/common/locales/pl/spells.json b/website/common/locales/pl/spells.json
index bc28bd4d0a8..9249ce5d8fc 100644
--- a/website/common/locales/pl/spells.json
+++ b/website/common/locales/pl/spells.json
@@ -9,9 +9,9 @@
"spellWizardFrostNotes": "Lód pokrywa twoje zadania. Jutro żadna z twoich serii nie ulegnie wyzerowaniu!",
"spellWizardFrostAlreadyCast": "Dzisiaj rzuciłeś już ten czar. Twoje serie są zamrożone, dlatego nie ma potrzeby ponownego rzucania tego czaru.",
"spellWarriorSmashText": "Brutalne uderzenie",
- "spellWarriorSmashNotes": "You make a task more blue/less red and deal extra damage to Bosses! (Based on: STR)",
+ "spellWarriorSmashNotes": "Uderzasz zadanie całą swoją mocą. Stają się bardziej niebieskie/mniej czerwone i zadajesz Bossom dodatkowe obrażenia! Aby rzucić, kliknij na zadanie. (Bazuje na: SIŁ)",
"spellWarriorDefensiveStanceText": "Pozycja obronna",
- "spellWarriorDefensiveStanceNotes": "You crouch low and gain a buff to Constitution! (Based on: Unbuffed CON)",
+ "spellWarriorDefensiveStanceNotes": "Przygotowujesz się do ataku na swoje zadania. Zyskujesz wzmocnienie do Kondycji! (Bazuje na: Niewzmocnionej KON)",
"spellWarriorValorousPresenceText": "Bohaterska obecność",
"spellWarriorValorousPresenceNotes": "Twoja obecność ośmiela twoją drużynę. Cała drużyna zyskuje wzmocnienie do Siły! (Bazuje na: Niewzmocniona SIŁ)",
"spellWarriorIntimidateText": "Zastraszające spojrzenie",
@@ -23,33 +23,33 @@
"spellRogueToolsOfTradeText": "Narzędzia fachu",
"spellRogueToolsOfTradeNotes": "Dzielisz się talentem z drużyną. Cała twoja drużyna zyskuje wzmocnienie do Percepcji! (Bazuje na: Niewzmocnionej PER)",
"spellRogueStealthText": "Ukrycie",
- "spellRogueStealthNotes": "With each cast, a few of your undone Dailies won't cause damage tonight. Their streaks and colors won't change. (Based on: PER)",
+ "spellRogueStealthNotes": "Rzucasz zaklęcie i kilka z Twoich nie wykonanych codziennych nie zadaje Ci dzisiaj obrażeń. Serie i kolory nie ulegną zmianie. (Bazuje na: PER) ",
"spellRogueStealthDaliesAvoided": "<%= originalText %> Liczba unikniętych Codziennych: <%= number %>.",
"spellRogueStealthMaxedOut": "Uniknąłeś już wszystkich codziennych. Nie ma potrzeby rzucania zaklęcia jeszcze raz.",
"spellHealerHealText": "Leczące światło",
- "spellHealerHealNotes": "Shining light restores your health! (Based on: CON and INT)",
+ "spellHealerHealNotes": "Światło spowija twoje ciało, lecząc rany. Odzyskujesz zdrowie! (Bazuje na: KON i INT)",
"spellHealerBrightnessText": "Parząca Jasność",
- "spellHealerBrightnessNotes": "A burst of light makes your tasks more blue/less red! (Based on: INT)",
+ "spellHealerBrightnessNotes": "Błysk światła oślepia twoje zadania. Stają się bardziej niebieskie i mniej czerwone! (Bazuje na: INT)",
"spellHealerProtectAuraText": "Aura ochronna",
- "spellHealerProtectAuraNotes": "You shield your Party by buffing their Constitution! (Based on: Unbuffed CON)",
+ "spellHealerProtectAuraNotes": "Osłaniasz swoją drużynę przez obrażeniami. Cała drużyna zyskuje wzmocnienie do Kondycji! (Bazuje na: Niewzmocnionej KON)",
"spellHealerHealAllText": "Błogosławieństwo",
- "spellHealerHealAllNotes": "Your soothing spell restores your whole Party's health! (Based on: CON and INT)",
+ "spellHealerHealAllNotes": "Otacza ciebie kojąca aura. Cała twoja drużyna odzyskuje zdrowie! (Bazuje na: KON i INT)",
"spellSpecialSnowballAuraText": "Kula Śnieżna",
"spellSpecialSnowballAuraNotes": "Zmień członka drużyny w mroźnego bałwana!",
"spellSpecialSaltText": "Sól",
"spellSpecialSaltNotes": "Cofnij zaklęcie, które zmieniło cię w bałwana.",
"spellSpecialSpookySparklesText": "Straszne iskierki",
- "spellSpecialSpookySparklesNotes": "Turn your friend into a transparent pal!",
+ "spellSpecialSpookySparklesNotes": "Zamień swojego przyjaciela w przeźroczystego towarzysza!",
"spellSpecialOpaquePotionText": "Nieprzejrzysty eliksir",
- "spellSpecialOpaquePotionNotes": "Reverse the spell that made you transparent.",
+ "spellSpecialOpaquePotionNotes": "Cofnij zaklęcie, które uczyniło Cię niewidzialnym.",
"spellSpecialShinySeedText": "Lśniące nasiono",
"spellSpecialShinySeedNotes": "Zamień przyjaciela w radosnego kwiatka!",
"spellSpecialPetalFreePotionText": "Eliksir antypłatkowy",
- "spellSpecialPetalFreePotionNotes": "Reverse the spell that made you a flower.",
+ "spellSpecialPetalFreePotionNotes": "Cofnij zaklęcie, które zamieniło cię w kwiatek.",
"spellSpecialSeafoamText": "Piana morska",
"spellSpecialSeafoamNotes": "Zamień przyjaciela w morskie stworzenie!",
"spellSpecialSandText": "Piasek",
- "spellSpecialSandNotes": "Reverse the spell that made you a sea star.",
+ "spellSpecialSandNotes": "Cofnij zaklęcie, które zamieniło Cię w rozgwiazdę.",
"spellNotFound": "Nie znaleziono umiejętności „<%= spellId %>”.",
"partyNotFound": "Nie znaleziono drużyny.",
"targetIdUUID": "\"targetId\" musi być prawidłowym ID użytkownika.",
diff --git a/website/common/locales/pl/subscriber.json b/website/common/locales/pl/subscriber.json
index 6a4be7965af..77b4ad72a8b 100644
--- a/website/common/locales/pl/subscriber.json
+++ b/website/common/locales/pl/subscriber.json
@@ -2,7 +2,7 @@
"subscription": "Abonament",
"subscriptions": "Abonamenty",
"subDescription": "Kupuj Klejnoty za złoto, otrzymuj co miesiąc tajemnicze przedmioty, zachowaj historię postępu, powiększ dwukrotnie limit znajdowanych przedmiotów, wspieraj twórców. Kliknij, żeby dowiedzieć się więcej.",
- "sendGems": "Send Gems",
+ "sendGems": "Wyślij Klejnoty",
"buyGemsGold": "Kup Klejnoty za Złoto",
"buyGemsGoldText": "Kupiec Alexander sprzeda ci Klejnoty w cenie 20 punktów złota za Klejnot. Jego miesięczne dostawy są początkowo ograniczone do 25 Klejnotów na miesiąc, ale za każde 3 miesiące subskrybcji z rzędu, jego zasoby rosną o 5 Klejnotów, aż do 50 Klejnotów za miesiąc!",
"mustSubscribeToPurchaseGems": "Musisz mieć abonament żeby kupić klejnoty za złoto",
@@ -19,7 +19,7 @@
"exclusiveJackalopePetText": "Zdobądź Purpurowego Królewskiego Jackalope dostępnego jedynie dla subskrybentów!",
"giftSubscription": "Chcesz komuś dać abonament w prezencie?",
"giftSubscriptionText1": "Otwórz ich profil. Możesz to zrobić klikając na awatar w swoim nagłówku drużyny lub klikając na nazwę w chacie.",
- "giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
+ "giftSubscriptionText2": "Naciśnij na ikonę podarunktu w prawym górnym rogu ich profilu.",
"giftSubscriptionText3": "Wybierz \"abonament\" i podaj swoje informacje dotyczące płatności.",
"giftSubscriptionText4": "Dzięki za wsparcie Habitiki!",
"monthUSD": "USD / Miesiąc",
@@ -40,6 +40,7 @@
"cancelSub": "Anuluj abonament",
"cancelSubInfoGoogle": "Proszę udaj się do zakładki \"Konto\" > \"Subskrypcje\" w Sklepie Google Play, aby anulować subskrybcję, bądź zobaczyć datę ważności twojej subskrybcji, jeśli już ją anulowałeś. Zakładka ta nie oferuje możliwości sprawdzenia, czy twoja subskrybcja została anulowana.",
"cancelSubInfoApple": "Please follow Apple's official instructions to cancel your subscription or to see your subscription's termination date if you have already cancelled it. This screen is not able to show you whether your subscription has been cancelled.",
+ "cancelSubInfoGroupPlan": "Because you have a free subscription from a Group Plan, you cannot cancel it. It will end when you are no longer in the Group. If you are the Group leader and want to cancel the entire Group Plan, you can do that from the group's \"Payment Details\" tab.",
"canceledSubscription": "Anulowany Abonament",
"cancelingSubscription": "Anulowanie abonamentu",
"adminSub": "Abonament administratora",
@@ -70,7 +71,7 @@
"subCanceled": "Subskrypcja wygaśnie",
"buyGemsGoldTitle": "Aby kupić Klejnoty za Złoto",
"becomeSubscriber": "Zostań Abonentem",
- "subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
+ "subGemPop": "Dzięki abonamentowi możesz kupować klejnoty używając złota",
"subGemName": "Klejnoty dla abonentów",
"freeGemsTitle": "Zdobądź Klejnoty za Darmo",
"maxBuyGems": "Wykupiłeś/aś już wszystkie możliwe klejnoty w tym miesiącu. Kolejne są udostępniane w ciągu pierwszych trzech dni każdego miesiąca. Dziękujemy za wykupienie abonamentu!",
@@ -136,6 +137,7 @@
"mysterySet201709": "Zestaw ucznia magii",
"mysterySet201710": "Imperious Imp Set",
"mysterySet201711": "Carpet Rider Set",
+ "mysterySet201712": "Candlemancer Set",
"mysterySet301404": "Standardowy zestaw steampunkowy",
"mysterySet301405": "Zestaw steampunkowych akcesoriów",
"mysterySet301703": "Zestaw steampunkowego pawia",
@@ -167,7 +169,6 @@
"cardTypeNotAllowed": "Nieznany typ karty.",
"invalidCoupon": "Nieprawidłowy kod kuponu",
"couponUsed": "Kod promocyjny został wcześniej wykorzystany",
- "noSudoAccess": "Nie masz dostępu administratora.",
"couponCodeRequired": "Kod promocyjny jest wymagany.",
"eventRequired": "\"req.params.event\" jest wymagane.",
"countRequired": "\"req.params.event\" jest wymagane.",
@@ -179,30 +180,30 @@
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
- "everyMonth": "Every Month",
+ "everyMonth": "Co Miesiąc",
"everyXMonths": "Every <%= interval %> Months",
- "everyYear": "Every Year",
- "choosePaymentMethod": "Choose your payment method",
+ "everyYear": "Co roku",
+ "choosePaymentMethod": "Wybierz metodę płatności",
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
- "buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
+ "buyGemsSupportsDevs": "Kupowanie klejnotów wspiera deweloperów i pomaga Habitice działać.",
"support": "SUPPORT",
- "gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
- "gemBenefit1": "Unique and fashionable costumes for your avatar.",
- "gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
- "gemBenefit3": "Exciting Quest chains that drop pet eggs.",
- "gemBenefit4": "Reset your avatar's attribute points and change its Class.",
- "subscriptionBenefitLeadin": "Support Habitica by becoming a subscriber and you'll receive these useful benefits!",
- "subscriptionBenefit1": "Alexander the Merchant will sell you Gems, for 20 Gold each!",
+ "gemBenefitLeadin": "Klejnoty pozwalają Ci kupować dodatkowe atrybuty takie jak:",
+ "gemBenefit1": "Unikalne i modne kostiumy dla Twojego awatara.",
+ "gemBenefit2": "Tła, by zaaklimatyzować Twoją postać w świecie Habitiki.",
+ "gemBenefit3": "Ekscytujące misje, które pozwalają zdobyć jaja z chowańcami.",
+ "gemBenefit4": "Reset Punktów Atrybutów Twojego awatara i zmiana jego klasy.",
+ "subscriptionBenefitLeadin": "Wspieraj Habitikę zostając subskrybentem, aby dostać te wspaniałe nagrody!",
+ "subscriptionBenefit1": "Kupiec Alexander sprzeda Ci klejnoty, każdy za 20 złota.",
"subscriptionBenefit2": "Completed To-Dos and task history are available for longer.",
"subscriptionBenefit3": "Discover more items in Habitica with a doubled daily drop cap.",
"subscriptionBenefit4": "Unique cosmetic items for your avatar each month.",
"subscriptionBenefit5": "Receive the exclusive Royal Purple Jackalope pet!",
- "subscriptionBenefit6": "Earn Mystic Hourglasses for use in the Time Travelers' Shop!",
+ "subscriptionBenefit6": "Zdobądź Mistyczną Klepsydrę do użycia w Sklepie Podróżnika w Czasie",
"haveCouponCode": "Do you have a coupon code?",
- "subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
+ "subscriptionAlreadySubscribedLeadIn": "Dziękujemy za subskrybcję!",
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to User icon > Settings > Subscription.",
"purchaseAll": "Purchase All",
"gemsPurchaseNote": "Subscribers can buy gems for gold in the Market! For easy access, you can also pin the gem to your Rewards column.",
- "gemsRemaining": "gems remaining",
+ "gemsRemaining": "Pozostałe Klejnoty",
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
}
\ No newline at end of file
diff --git a/website/common/locales/pl/tasks.json b/website/common/locales/pl/tasks.json
index d1274ce6b3d..c355790f5c2 100644
--- a/website/common/locales/pl/tasks.json
+++ b/website/common/locales/pl/tasks.json
@@ -202,5 +202,6 @@
"yesterDailiesOptionTitle": "Zanim otrzymasz obrażenia potwierdź, że \"Codzienne\" nie zostało wykonany",
"yesterDailiesDescription": "Jeśli ta opcja jest zaznaczona, Habitica zapyta cię, czy chcesz zostawić Codzienne jako niewykonane zanim zada ci obrażenia. To może ochronić cie przed niezamierzonymi obrażeniami.",
"repeatDayError": "Proszę upewnij się, że chociaż jeden dzień w tygodniu jest wybrany.",
- "searchTasks": "Szukaj po tytule lub opisie..."
+ "searchTasks": "Szukaj po tytule lub opisie...",
+ "sessionOutdated": "Twoja sesja jest przedawniona. Prosimy o odświeżenie lub zsynchronizowanie."
}
\ No newline at end of file
diff --git a/website/common/locales/pt/backgrounds.json b/website/common/locales/pt/backgrounds.json
index cfa6366a505..ce96ae6f4ec 100644
--- a/website/common/locales/pt/backgrounds.json
+++ b/website/common/locales/pt/backgrounds.json
@@ -310,5 +310,19 @@
"backgroundMidnightCastleText": "Castelo da Meia-Noite",
"backgroundMidnightCastleNotes": "Caminhe pelo Castelo da Meia-Noite",
"backgroundTornadoText": "Tornado",
- "backgroundTornadoNotes": "Voe através de um Tornado."
+ "backgroundTornadoNotes": "Voe através de um Tornado.",
+ "backgrounds122017": "Conjunto 43: Lançado em Dezembro de 2017",
+ "backgroundCrosscountrySkiTrailText": "Trilha de Esqui de Fundo",
+ "backgroundCrosscountrySkiTrailNotes": "Deslize por um trilho de Esqui de Fundo.",
+ "backgroundStarryWinterNightText": "Céu Noturno de Inverno Estrelado",
+ "backgroundStarryWinterNightNotes": "Admire um céu estrelado noturno no Inverno.",
+ "backgroundToymakersWorkshopText": "Oficina do Fabricante de Brinquedos",
+ "backgroundToymakersWorkshopNotes": "Delicie-se com a maravilha da oficina de um fabricante de brinquedos.",
+ "backgrounds012018": "Conjunto 44: Lançado em Janeiro de 2018",
+ "backgroundAuroraText": "Aurora",
+ "backgroundAuroraNotes": "Aprecie o brilho invernal de uma Aurora.",
+ "backgroundDrivingASleighText": "Trenó",
+ "backgroundDrivingASleighNotes": "Conduza um trenó sobre campos cobertos de neve.",
+ "backgroundFlyingOverIcySteppesText": "Estepes Geladas",
+ "backgroundFlyingOverIcySteppesNotes": "Voe sobre estepes geladas."
}
\ No newline at end of file
diff --git a/website/common/locales/pt/challenge.json b/website/common/locales/pt/challenge.json
index 0ae56993061..05d523c0928 100644
--- a/website/common/locales/pt/challenge.json
+++ b/website/common/locales/pt/challenge.json
@@ -29,7 +29,7 @@
"either": "Ambos",
"createChallenge": "Criar Desafio",
"createChallengeAddTasks": "Adicionar Tarefas de Desafio",
- "createChallengeCloneTasks": "Clone Challenge Tasks",
+ "createChallengeCloneTasks": "Copiar Tarefas do Desafio",
"addTaskToChallenge": "Adicionar Tarefa",
"discard": "Descartar",
"challengeTitle": "Título do Desafio",
@@ -127,5 +127,7 @@
"locationRequired": "É necessária a Localização do Desafio ('Adicionar a')",
"categoiresRequired": "Uma ou mais categorias devem ser escolhidas",
"viewProgressOf": "Ver o Progresso de",
- "selectMember": "Escolher Membro"
+ "selectMember": "Escolher Membro",
+ "confirmKeepChallengeTasks": "Deseja manter as tarefas do desafio?",
+ "selectParticipant": "Escolha um Participante"
}
\ No newline at end of file
diff --git a/website/common/locales/pt/character.json b/website/common/locales/pt/character.json
index 1a637a90381..ce465327597 100644
--- a/website/common/locales/pt/character.json
+++ b/website/common/locales/pt/character.json
@@ -163,6 +163,7 @@
"dieText": "Você perdeu um nível, todo seu Ouro, e uma peça aleatória de Equipamento. Erga-se, Habiteer, e tente novamente! Acabe com esses Hábitos negativos, esteja atento a realização de suas Tarefas Diárias, e afaste a morte com uma Poção de Vida caso vacilar!",
"sureReset": "Tem a certeza? Isto irá reinicializar a classe da sua personagem bem como pontos de atributos (irá recebê-los de volta para redistribuir) ao custo de 3 Gemas.",
"purchaseFor": "Comprar por <%= cost %> Gemas?",
+ "purchaseForHourglasses": "Comprar por <%= cost %> Ampulhetas?",
"notEnoughMana": "Mana insuficiente.",
"invalidTarget": "Não pode lançar uma habilidade nisso.",
"youCast": "Você conjurou <%= spell %>.",
diff --git a/website/common/locales/pt/content.json b/website/common/locales/pt/content.json
index 7ef235f13e4..7180b92f11a 100644
--- a/website/common/locales/pt/content.json
+++ b/website/common/locales/pt/content.json
@@ -161,6 +161,9 @@
"questEggYarnText": "Fio de Lã",
"questEggYarnMountText": "Tapete Voador",
"questEggYarnAdjective": "lanudo",
+ "questEggPterodactylText": "Pterodáctilo",
+ "questEggPterodactylMountText": "Pterodáctilo",
+ "questEggPterodactylAdjective": "trusting",
"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",
"hatchingPotionWhite": "Branco",
@@ -184,6 +187,7 @@
"hatchingPotionCupid": "Cúpido",
"hatchingPotionShimmer": "Cintilante",
"hatchingPotionFairy": "Fada",
+ "hatchingPotionStarryNight": "Noite de Estrelas",
"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",
@@ -218,5 +222,6 @@
"foodCandyRed": "Bala de Canela",
"foodSaddleText": "Sela",
"foodSaddleNotes": "Eleve instantaneamente um dos seus mascotes para uma montada.",
+ "foodSaddleSellWarningNote": "Hey! Este objeto é bastante útil! Está familiarizado com a utilização de uma Sela com as suas Mascotes?",
"foodNotes": "Alimente um mascote com isto e ele poderá transformar-se num corcel forte."
}
\ No newline at end of file
diff --git a/website/common/locales/pt/contrib.json b/website/common/locales/pt/contrib.json
index bc3abbc1ffa..1464df982c7 100644
--- a/website/common/locales/pt/contrib.json
+++ b/website/common/locales/pt/contrib.json
@@ -32,7 +32,7 @@
"contribModal": "<%= name %>, você é pessoa fantástica! Agora está no nível <%= level %> de colaborador por ajudar o Habitica. Consulte",
"contribLink": "os prêmios que você ganhou por sua contribuição!",
"contribName": "Colaborador",
- "contribText": "Contribuiu para o Habitica (código, design, arte em pixel, conselhos legais, documentos, etc). Quer esta medalha? Leia mais.",
+ "contribText": "Contribuiu para Habitica, seja via código, arte, música, escrita ou outras formas. Para aprender mais, junte-se à Corporação de Aspirantes a Lenda!",
"readMore": "Saber Mais",
"kickstartName": "Apoiador de Kickstarted - nível $<%= key %>",
"kickstartText": "Apoiou o Projeto do Kickstarter",
diff --git a/website/common/locales/pt/front.json b/website/common/locales/pt/front.json
index 2a2bce60a73..80bfcdff8af 100644
--- a/website/common/locales/pt/front.json
+++ b/website/common/locales/pt/front.json
@@ -30,6 +30,7 @@
"companyAbout": "Como Funciona",
"companyBlog": "Blogue",
"devBlog": "Blogue do Programador",
+ "companyContribute": "Contribute",
"companyDonate": "Doar",
"companyPrivacy": "Privacidade",
"companyTerms": "Termos",
@@ -252,7 +253,7 @@
"missingNewPassword": "Nova palavra-passe em falta.",
"invalidEmailDomain": "Não pode registar com e-mails com os seguintes domínios : <%= domains %>",
"wrongPassword": "Palavra-passe incorreta.",
- "incorrectDeletePhrase": "Por favor escreva DELETE em maiúsculas para apagar a sua conta.",
+ "incorrectDeletePhrase": "Please type <%= magicWord %> in all caps to delete your account.",
"notAnEmail": "Endereço de e-mail inválido.",
"emailTaken": "Endereço de email já está sendo usado em uma conta.",
"newEmailRequired": "Novo endereço de e-mail em falta.",
diff --git a/website/common/locales/pt/gear.json b/website/common/locales/pt/gear.json
index 603061e289e..2ac211343a2 100644
--- a/website/common/locales/pt/gear.json
+++ b/website/common/locales/pt/gear.json
@@ -242,6 +242,14 @@
"weaponSpecialFall2017MageNotes": "Os olhos da caveira brilhante deste cajado irradiam magia e mistério. Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento de Edição Limitada do Outono de 2017.",
"weaponSpecialFall2017HealerText": "Candelabro Arrepiante",
"weaponSpecialFall2017HealerNotes": "Esta luz desfaz o medo e deixa outros saberem que está ali para ajudar. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2017.",
+ "weaponSpecialWinter2018RogueText": "Peppermint Hook",
+ "weaponSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018WarriorText": "Holiday Bow Hammer",
+ "weaponSpecialWinter2018WarriorNotes": "The sparkly appearance of this bright weapon will dazzle your enemies as you swing it! Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018MageText": "Holiday Confetti",
+ "weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "weaponSpecialWinter2018HealerText": "Mistletoe Wand",
+ "weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"weaponMystery201411Text": "Forcado de Banquete",
"weaponMystery201411Notes": "Apunhale seus inimigos ou cave pelas suas comidas favoritas - esse garfo versátil faz de tudo! Não confere benefícios. Item de Assinante de Novembro 2014.",
"weaponMystery201502Text": "Cajado Brilhante Alado do Amor e Também Verdade.",
@@ -310,6 +318,10 @@
"weaponArmoireHoofClippersNotes": "Corte os cascos das montadas trabalhadoras para as ajudar a manterem-se saudáveis para que o possam levar até à aventura! Aumenta Força, Inteligência e Constituição em <%= attrs %> cada. Armário Encantado: Conjunto de Ferrador (Item 1 de 3).",
"weaponArmoireWeaversCombText": "Pente de Tecelão",
"weaponArmoireWeaversCombNotes": "Use este pente para agrupar os seus fios cruzados de forma a tecer um tecido forte. Aumenta Percepção em <%= per %> e Força em <%= str %>. Armário Encantado: Conjunto de Tecelão (Item 2 de 3).",
+ "weaponArmoireLamplighterText": "Lamplighter",
+ "weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>.",
+ "weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
+ "weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"armor": "armadura",
"armorCapitalized": "Armadura",
"armorBase0Text": "Roupas Modestas",
@@ -386,8 +398,8 @@
"armorSpecialDandySuitNotes": "Está inegavelmente vestido para o sucesso! Aumenta Percepção em <%= per %>.",
"armorSpecialSamuraiArmorText": "Armadura de Samurai",
"armorSpecialSamuraiArmorNotes": "Esta armadura forte, é feita de escamas unidas por elegantes fios de seda. Aumenta Percepção em <%= per %>.",
- "armorSpecialTurkeyArmorBaseText": "Turkey Armor",
- "armorSpecialTurkeyArmorBaseNotes": "Keep your drumsticks warm and cozy in this feathery armor! Confers no benefit.",
+ "armorSpecialTurkeyArmorBaseText": "Armadura de Peru",
+ "armorSpecialTurkeyArmorBaseNotes": "Mantenha as suas coxas quentes e confortáveis com esta armadura de penas! Não confere benefícios.",
"armorSpecialYetiText": "Túnica de Domador de Ieti",
"armorSpecialYetiNotes": "Felpudo e feroz. Aumenta Constituição em <%= con %>. Equipamento Edição Limitada de Inverno 2013-2014.",
"armorSpecialSkiText": "Parca Assa-ski-na",
@@ -526,6 +538,14 @@
"armorSpecialFall2017MageNotes": "Que conjunto de mascarada estaria completo sem túnicas arrebatadoras e dramáticas? Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2017",
"armorSpecialFall2017HealerText": "Armadura de Casa Assombrada",
"armorSpecialFall2017HealerNotes": "O seu coração é uma porta aberta. E os seus ombros são telhas de telhado! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2017.",
+ "armorSpecialWinter2018RogueText": "Reindeer Costume",
+ "armorSpecialWinter2018RogueNotes": "You look so cute and fuzzy, who could suspect you are after holiday loot? Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018WarriorText": "Wrapping Paper Armor",
+ "armorSpecialWinter2018WarriorNotes": "Don't let the papery feel of this armor fool you. It's nearly impossible to rip! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018MageText": "Sparkly Tuxedo",
+ "armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
+ "armorSpecialWinter2018HealerText": "Mistletoe Robes",
+ "armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"armorMystery201402Text": "Túnicas do Mensageiro",
"armorMystery201402Notes": "Cintilantes e resistentes, essas túnicas tem vários bolsos para carregar cartas. Não concede benefícios. Item de Assinante de Fevereiro 2014.",
"armorMystery201403Text": "Armadura do Andador da Floresta",
@@ -586,6 +606,8 @@
"armorMystery201710Notes": "Escamado, brilhante e forte! Não Confere Benefícios. Item de Assinante de Outubro de 2017.",
"armorMystery201711Text": "Carpet Rider Outfit",
"armorMystery201711Notes": "This cozy sweater set will help keep you warm as you ride through the sky! Confers no benefit. November 2017 Subscriber Item.",
+ "armorMystery201712Text": "Candlemancer Armor",
+ "armorMystery201712Notes": "The heat and light generated by this magic armor will warm your heart but never burn your skin! Confers no benefit. December 2017 Subscriber Item.",
"armorMystery301404Text": "Fantasia Steampunk",
"armorMystery301404Notes": "Elegante e distinto. Não concede benefícios. Item de Assinante de Fevereiro 3015.",
"armorMystery301703Text": "Vestido do Pavão Steampunk",
@@ -662,6 +684,10 @@
"armorArmoireCandlestickMakerOutfitNotes": "Este robusto conjunto de roupas irá protegê-lo de pingas de cera quente enquanto executa a sua arte! Aumenta Constituição em <%= con %>. Armário Encantado: Conjunto do Fabricante de Velas (Item 1 de 3).",
"armorArmoireWovenRobesText": "Túnicas Tecidas",
"armorArmoireWovenRobesNotes": "Exponha o seu trabalho de tecelagem usando esta túnica colorida com orgulho! Aumenta Constituição em <%= con %> e Inteligência em <%= int %>. Armário Encantado: Conjunto de Tecelão (Item 1 de 3).",
+ "armorArmoireLamplightersGreatcoatText": "Lamplighter's Greatcoat",
+ "armorArmoireLamplightersGreatcoatNotes": "This heavy woolen coat can stand up to the harshest wintry night! Increases Perception by <%= per %>.",
+ "armorArmoireCoachDriverLiveryText": "Coach Driver's Livery",
+ "armorArmoireCoachDriverLiveryNotes": "This heavy overcoat will protect you from the weather as you drive. Plus it looks pretty snazzy, too! Increases Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 1 of 3).",
"headgear": "elmo",
"headgearCapitalized": "Capacete",
"headBase0Text": "Nenhum equipamento de cabeça",
@@ -878,6 +904,16 @@
"headSpecialFall2017MageNotes": "Quando aparecer com este chapéu emplumado, toda a gente irá tentar adivinhar a identidade do desconhecido mágico na sala! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada do Outono de 2017.",
"headSpecialFall2017HealerText": "Elmo de Casa Assombrada",
"headSpecialFall2017HealerNotes": "Convide espíritos assustadores e criaturas amigáveis a procurar os seus poderes curativos neste elmo! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2017.",
+ "headSpecialNye2017Text": "Fanciful Party Hat",
+ "headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
+ "headSpecialWinter2018RogueText": "Reindeer Helm",
+ "headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018WarriorText": "Giftbox Helm",
+ "headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018MageText": "Sparkly Top Hat",
+ "headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
+ "headSpecialWinter2018HealerText": "Mistletoe Hood",
+ "headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
"headSpecialGaymerxText": "Elmo do Guerreiro Arco-Íris",
"headSpecialGaymerxNotes": "Para celebrar a Conferência GaymerX, este elmo especial foi decorado com uma colorida e radiante estampa. A GaymerX é uma conferência de games que celebra a comunidade LGTBQ e jogos, sendo aberta para todo mundo.",
"headMystery201402Text": "Elmo Alado",
@@ -940,6 +976,8 @@
"headMystery201707Notes": "Precisa de mãos extra para as suas tarefas? Este elmo translúcido tem alguns tentáculos que o podem ajudar! Não confere benefícios. Item de Assinante de Julho de 2017.",
"headMystery201710Text": "Elmo de Diabinho Arrogante",
"headMystery201710Notes": "Este elmo fá-lo parecer intimidante...but não lhe fará quaisquer favores para a sua percepção de profundidade! Não confere benefícios. Item de Assinante de Outubro de 2017.",
+ "headMystery201712Text": "Candlemancer Crown",
+ "headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.",
"headMystery301404Text": "Cartola Chique",
"headMystery301404Notes": "Uma cartola chique para as damas e cavalheiros mais finos! Item de Assinante de Janeiro 3015. Não concede benefícios.",
"headMystery301405Text": "Cartola Básica",
@@ -1024,6 +1062,10 @@
"headArmoireAntiProcrastinationHelmNotes": "Este poderoso elmo de aço ajudá-lo-á a ganhar a luta para ser saudável, feliz e produtivo! Aumenta Percepção em <%= per %>. Armário Encantado: Conjunto Anti Procrastinação (Item 1 de 3).",
"headArmoireCandlestickMakerHatText": "Chapéu de Fabricante de Velas",
"headArmoireCandlestickMakerHatNotes": "Um chapéu colorido que torna todos os trabalhos mais divertidos, com fabrico de velas não sendo uma excepção! Aumenta Percepção e Inteligência em <%= attrs %> cada. Armário Encantado: Conjunto do Fabricante de Velas (Item 2 de 3).",
+ "headArmoireLamplightersTopHatText": "Lamplighter's Top Hat",
+ "headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.",
+ "headArmoireCoachDriversHatText": "Coach Driver's Hat",
+ "headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).",
"offhand": "item de mão oposta",
"offhandCapitalized": "Item de mão oposta",
"shieldBase0Text": "Nenhum Equipamento de Mão Oposta",
@@ -1164,6 +1206,12 @@
"shieldSpecialFall2017WarriorNotes": "Este escudo feito de doce tem poderes mágicos de proteção, por isso não tente dar-lhe uma dentada! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2017.",
"shieldSpecialFall2017HealerText": "Orbe Assombrada",
"shieldSpecialFall2017HealerNotes": "Esta orbe ocasionalmente guincha. Pedimos desculpa, não sabemos porquê. Mas tem um aspecto jeitoso! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2017.",
+ "shieldSpecialWinter2018RogueText": "Peppermint Hook",
+ "shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018WarriorText": "Magic Gift Bag",
+ "shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
+ "shieldSpecialWinter2018HealerText": "Mistletoe Bell",
+ "shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
"shieldMystery201601Text": "Destruidor de Resoluções",
"shieldMystery201601Notes": "Essa lâmina pode ser usada para bloquear todas as distrações. Não concede benefícios. Item de Assinante de Janeiro 2016",
"shieldMystery201701Text": "Escudo Congelador de Tempo",
@@ -1286,6 +1334,8 @@
"bodyMystery201706Notes": "Esta capa possui bolsos secretos para esconder todo o Ouro que roubar às suas Tarefas. Não confere benefícios. Item de Assinante de Julho de 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.",
+ "bodyArmoireCozyScarfText": "Cozy Scarf",
+ "bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.",
"headAccessory": "acessório para cabeça",
"headAccessoryCapitalized": "Acessório de Cabeça",
"accessories": "Acessórios",
diff --git a/website/common/locales/pt/generic.json b/website/common/locales/pt/generic.json
index 19b06f76d52..a4513dab98b 100644
--- a/website/common/locales/pt/generic.json
+++ b/website/common/locales/pt/generic.json
@@ -107,8 +107,8 @@
"achievementDilatory": "Salvador de Dilatory",
"achievementDilatoryText": "Ajudou a derrotar o Dread Drag'on de Dilatory durante o Evento Summer Splash 2014!",
"costumeContest": "Participante do Concurso de Fantasia",
- "costumeContestText": "Participou no Concurso de Traje Habitoween. Veja algumas das participações no blogue do Habitica!",
- "costumeContestTextPlural": "Participou em <%= count %> Concursos de Traje Habitoween. Veja algumas das participações no blogue do Habitica!",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the awesome entries at blog.habitrpg.com!",
+ "costumeContestTextPlural": "Participated in <%= count %> Habitoween Costume Contests. See some of the awesome entries at blog.habitrpg.com!",
"memberSince": "- Membro desde",
"lastLoggedIn": "- Última sessão em",
"notPorted": "Esta funcionalidade ainda não consta do site original.",
@@ -136,6 +136,8 @@
"audioTheme_airuTheme": "Tema Airu",
"audioTheme_beatscribeNesTheme": "Tema da NES do Beatscribe",
"audioTheme_arashiTheme": "Tema de Arashi",
+ "audioTheme_maflTheme": "MAFL Theme",
+ "audioTheme_pizildenTheme": "Pizilden's Theme",
"askQuestion": "Fazer uma Pergunta",
"reportBug": "Reportar um Erro",
"HabiticaWiki": "A Wiki Habitica",
diff --git a/website/common/locales/pt/groups.json b/website/common/locales/pt/groups.json
index a8c1329a364..58e724210f1 100644
--- a/website/common/locales/pt/groups.json
+++ b/website/common/locales/pt/groups.json
@@ -102,15 +102,16 @@
"optionalMessage": "Mensagem Opcional",
"yesRemove": "Sim, remova-os",
"foreverAlone": "Não é possível curtir a própria mensagem. Não seja aquela pessoa.",
- "sortLevel": "Ordenar por nível",
- "sortRandom": "Organizar aleatoriamente",
- "sortPets": "Ordenar por número de mascotes",
- "sortName": "Ordenar por nome do avatar",
- "sortBackgrounds": "Ordenar por plano de fundo",
- "sortHabitrpgJoined": "Ordenar por data de registo no Habitica",
- "sortHabitrpgLastLoggedIn": "Ordenar por último login do usuário",
- "ascendingSort": "Ordenar crescentemente",
- "descendingSort": "Ordenar decrescentemente",
+ "sortDateJoinedAsc": "Earliest Date Joined",
+ "sortDateJoinedDesc": "Latest Date Joined",
+ "sortLoginAsc": "Earliest Login",
+ "sortLoginDesc": "Latest Login",
+ "sortLevelAsc": "Lowest Level",
+ "sortLevelDesc": "Highest Level",
+ "sortNameAsc": "Name (A - Z)",
+ "sortNameDesc": "Name (Z - A)",
+ "sortTierAsc": "Lowest Tier",
+ "sortTierDesc": "Highest Tier",
"confirmGuild": "Criar Guilda por 4 Gemas?",
"leaveGroupCha": "Deixar os desafios da Guilda e...",
"confirm": "Confirmar",
@@ -233,6 +234,17 @@
"onlyCreatorOrAdminCanDeleteChat": "Não autorizado a deletar essa mensagem!",
"onlyGroupLeaderCanEditTasks": "Não está autorizado para gerir as tarefas!",
"onlyGroupTasksCanBeAssigned": "Apenas tarefas de grupo podem ser escolhidas!",
+ "assignedToUser": "Assigned to <%= userName %>",
+ "assignedToMembers": "Assigned to <%= userCount %> members",
+ "assignedToYouAndMembers": "Assigned to you and <%= userCount %> members",
+ "youAreAssigned": "You are assigned to this task",
+ "taskIsUnassigned": "This task is unassigned",
+ "confirmClaim": "Are you sure you want to claim this task?",
+ "confirmUnClaim": "Are you sure you want to unclaim this task?",
+ "confirmApproval": "Are you sure you want to approve this task?",
+ "userRequestsApproval": "<%= userName %> requests approval",
+ "userCountRequestsApproval": "<%= userCount %> request approval",
+ "youAreRequestingApproval": "You are requesting approval",
"chatPrivilegesRevoked": "Foi-lhe retirados os seus privilégios de chat.",
"newChatMessagePlainNotification": "Nova mensagem em <%= groupName %> por <%= authorName %>. Carregue aqui para abrir a página de chat!",
"newChatMessageTitle": "Nova mensagem em <%= groupName %>",
@@ -279,7 +291,6 @@
"funExtras": "Extras Divertidos",
"enterprisePlansButton": "Perguntar acerca de Planos de Empresa",
"enterprisePlansDescription": "Está à procura de uma instalação maior com necessidades customizadas? Veja se os nossos planos de empresa são o que precisa.",
- "enterprisePlansEmailSubject": "Pergunta relacionada com Planos de Empresa",
"familyPlansButton": "Registe-se na Lista de Distribuição de Plano de Família",
"familyPlansDescription": "Quer uma solução mais confortável para gerir o seu lar? Planos de Família estão a caminho!",
"createAGroup": "Criar um Grupo",
@@ -303,7 +314,7 @@
"aboutToJoinCancelledGroupPlan": "Está prestes a juntar-se a um grupo cujo plano está cancelado. Não receberá uma subscrição gratuita.",
"cannotChangeLeaderWithActiveGroupPlan": "Não pode mudar o líder do grupo enquanto este tiver um plano ativo.",
"leaderCannotLeaveGroupWithActiveGroup": "Um líder não pode sair do grupo enquanto este tem um plano ativo.",
- "youHaveGroupPlan": "Tem uma subscrição gratuita porque é membro de um grupo que tem um Plano de Grupo. Isto terminará quando deixar de fazer parte desse mesmo grupo. Quaisquer meses de crédito extra de subscrição que tenha será aplicado no final do plano de grupo.",
+ "youHaveGroupPlan": "You have a free subscription because you are a member of a group that has a Group Plan. This will end when you are no longer in the group that has a Group Plan. Any months of extra subscription credit you have will be applied at the end of the Group Plan.",
"cancelGroupSub": "Cancelar Plano de Grupo",
"confirmCancelGroupPlan": "Tem a certeza que quer cancelar o plano de grupo e remover os benefícios associados a todos os membros, incluindo as suas subscrições gratuitas?",
"canceledGroupPlan": "Plano de Grupo Cancelado",
@@ -397,5 +408,6 @@
"groupBilling": "Group Billing",
"wouldYouParticipate": "Would you like to participate?",
"managerAdded": "Manager added successfully",
- "managerRemoved": "Manager removed successfully"
+ "managerRemoved": "Manager removed successfully",
+ "leaderChanged": "Leader has been changed"
}
\ No newline at end of file
diff --git a/website/common/locales/pt/limited.json b/website/common/locales/pt/limited.json
index b0bba7c6268..3c986a061e7 100644
--- a/website/common/locales/pt/limited.json
+++ b/website/common/locales/pt/limited.json
@@ -5,11 +5,11 @@
"annoyingFriends": "Amigos Irritantes",
"annoyingFriendsText": "Levou bolas de neve <%= count %> vezes dos membros do grupo.",
"alarmingFriends": "Amigos Alarmantes",
- "alarmingFriendsText": "Got spooked <%= count %> times by party members.",
+ "alarmingFriendsText": "Foi assustado <%= count %> vezes por membros da equipa.",
"agriculturalFriends": "Amigos Agrícolas",
- "agriculturalFriendsText": "Got transformed into a flower <%= count %> times by party members.",
+ "agriculturalFriendsText": "Foi transformado numa flor <%= count %> vezes por membros da equipa.",
"aquaticFriends": "Amigos Aquáticos",
- "aquaticFriendsText": "Got splashed <%= count %> times by party members.",
+ "aquaticFriendsText": "Foi ensopado <%= count %> vezes por membros da equipa.",
"valentineCard": "Cartão do Dia dos Namorados",
"valentineCardExplanation": "Por aguentar um poema tão água com açucar, ambos receberam a medalha \"Amigos Adoráveis\"!",
"valentineCardNotes": "Envie um cartão do Dia dos Namorados para um membro da sua equipa.",
@@ -28,7 +28,7 @@
"seasonalShop": "Loja Sazonal",
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
"seasonalShopTitle": "<%= linkStart %>Feiticeira Sazonal<%= linkEnd %>",
- "seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
+ "seasonalShopClosedText": "A Loja Sazonal está correntemente fechada! Só abre durante as quatro Grande Galas de Habitica.",
"seasonalShopText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? They’ll only be available until July 31st!",
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? They’ll only be available until October 31st!",
@@ -43,7 +43,7 @@
"icicleDrakeSet": "Dragão de Gelo (Ladino)",
"soothingSkaterSet": "Patinador Calmante (Curandeiro)",
"gingerbreadSet": "Guerreiro de Gengibre (Guerreiro)",
- "snowDaySet": "Snow Day Warrior (Warrior)",
+ "snowDaySet": "Guerreiro de Dia de Neve (Guerreiro)",
"snowboardingSet": "Snowboarding Sorcerer (Mage)",
"festiveFairySet": "Festive Fairy (Healer)",
"cocoaSet": "Cocoa Rogue (Rogue)",
@@ -112,6 +112,10 @@
"fall2017MasqueradeSet": "Masquerade Mage (Mage)",
"fall2017HauntedHouseSet": "Haunted House Healer (Healer)",
"fall2017TrickOrTreatSet": "Trick or Treat Rogue (Rogue)",
+ "winter2018ConfettiSet": "Confetti Mage (Mage)",
+ "winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
+ "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
+ "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Disponível para comprar até <%= date(locale) %>.",
"dateEndApril": "19 de abril",
"dateEndMay": "May 17",
@@ -120,5 +124,9 @@
"dateEndAugust": "August 31",
"dateEndOctober": "October 31",
"dateEndNovember": "November 30",
- "discountBundle": "bundle"
+ "dateEndJanuary": "January 31",
+ "discountBundle": "bundle",
+ "winterPromoGiftHeader": "GIFT A SUBSCRIPTION AND GET ONE FREE!",
+ "winterPromoGiftDetails1": "Until January 12th only, when you gift somebody a subscription, you get the same subscription for yourself for free!",
+ "winterPromoGiftDetails2": "Please note that if you or your gift recipient already have a recurring subscription, the gifted subscription will only start after that subscription is cancelled or has expired. Thanks so much for your support! <3"
}
\ No newline at end of file
diff --git a/website/common/locales/pt/loadingscreentips.json b/website/common/locales/pt/loadingscreentips.json
index 7480aa2d99b..b123deac518 100644
--- a/website/common/locales/pt/loadingscreentips.json
+++ b/website/common/locales/pt/loadingscreentips.json
@@ -1,36 +1,38 @@
{
"tipTitle": "Dica #<%= tipNumber %>",
"tip1": "Marque tarefas em qualquer lugar com os aplicativos móveis do Habitica.",
- "tip2": "Atinja o nível 100 para desbloquear gratuitamente a Orbe de Renascimento e começar uma nova aventura!",
+ "tip2": "Click any equipment to see a preview, or equip it instantly by clicking the star in its upper-left corner!",
"tip3": "Utilize o emoji para diferenciar rapidamente entre as suas tarefas.",
"tip4": "Use o sinal # antes do nome da tarefa para ampliá-lo!",
- "tip5": "É melhor lançar buffs de manhã para eles durarem mais.",
- "tip6": "Ocasionalmente reavaliamos as suas tarefas para ter certeza que estas estão atualizadas!",
- "tip7": "Alguns planos de fundo se encaixam perfeitamente se os membros da equipe usarem o mesmo plano de fundo. Ex.: Lago da Montanha, Pagodas e Colinas.",
- "tip8": "Envie uma mensagem privada para alguém clicando no envelope ao lado do nome da pessoa no chat!",
- "tip9": "Visite os Líderes Corporativos e Corporação de Criadores de Desafios para conselho em como começar uma Corporação.",
+ "tip5": "It’s best to use skills that cause buffs in the morning so they last longer.",
+ "tip6": "Hover over a task and click the dots to access advanced task controls, such as the ability to push tasks to the top/bottom of your list.",
+ "tip7": "Some backgrounds connect perfectly if Party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
+ "tip8": "Send a Message to someone by clicking their name in chat and then clicking the envelope icon at the top of their profile!",
+ "tip9": "Use the filters + search bar in the Inventories, Shops, Guilds, and Challenges to quickly find what you want.",
"tip10": "Pode ganhar gemas competindo nos Desafios. São adicionados novos desafios diariamente!",
- "tip11": "Se gosta de vestir o seu avatar, verifique a Corporação \"Traje de Carnaval\".",
- "tip12": "Junte-se à Guilda \"Desafio... Aceite\" para agendar regularmente desafios aleatórios.",
- "tip13": "Ter mais de quatro membros na equipa aumenta a responsabilidade!",
+ "tip11": "Having more than four Party members increases accountability!",
+ "tip12": "Add checklists to your To-Dos to multiply your rewards!",
+ "tip13": "Click “Filters” on your task page to make an unwieldy task list very manageable!",
"tip14": "Você pode adicionar cabeçalhos ou frases inspiradoras na sua lista como Hábitos sem (+/-).",
- "tip15": "Adicione listas de verificação aos seus Afazeres para aumentar as suas recompensas!",
- "tip16": "Confira a aba Dados para insights valiosos sobre o seu progresso.",
- "tip17": "Usar Etiquetas pode tornar uma lista de tarefas complicada bastante manejável!",
+ "tip15": "Complete all the Masterclasser Quest-lines to learn about Habitica’s secret lore.",
+ "tip16": "Click the link to the Data Display Tool in the footer for valuable insights on your progress.",
+ "tip17": "Use the mobile apps to set reminders for your tasks.",
"tip18": "Hábitos que são só positivos ou só negativos gradualmente \"enfraquecem\" e voltam para amarelo.",
- "tip19": "Aumente seus Pontos de Inteligência para ganhar mais EXP quando você completar uma tarefa.",
+ "tip19": "Boost your Intelligence Stat to gain more experience when you complete a task.",
"tip20": "Aumente seus Pontos de Percepção para ganhar mais drops e ouro.",
"tip21": "Aumente seus Pontos de Força para fazer mais dano ao chefão ou ganhar golpes críticos.",
"tip22": "Aumente sua Constituição para reduzir o dano de Tarefas Diárias Incompletas.",
- "tip23": "Clique no ícone do gráfico de barras nas suas tarefas para ver um gráfico mostrando o seu progresso.",
- "tip24": "Habitica é de Código Aberto! Pergunte na Corporação de Ambição de Lendas, se pretender contribuir.",
+ "tip23": "Reach level 100 to unlock the Orb of Rebirth for free and start a new adventure!",
+ "tip24": "Have a question? Ask in the Habitica Help Guild!",
"tip25": "As quatro Grande Galas sazonais começam próximo do início de cada estação do ano.",
- "tip26": "Uma seta no lado esquerdo do nível de alguém significa que ele atualmente está buffado.",
+ "tip26": "An arrow to the right of someone’s name means they’re currently buffed.",
"tip27": "Completou uma Tarefa Diária ontem mas esqueceu-se de a verificar? Não se preocupe! Com Gravar Atividade de Ontem, terá a oportunidade de gravar o que fez antes de começar um novo dia.",
- "tip28": "Determine um Início de Dia Personalizado em Configurações > Site para controlar quando seu dia começa.",
+ "tip28": "Set a Custom Day Start under User Icon > Settings to control when your day restarts.",
"tip29": "Complete todas as suas Tarefas Diárias para ganhar um Buff Dia Perfeito que aumenta seus atributos!",
"tip30": "Pode convidar pessoas para os Grupos, não só para Equipas.",
"tip31": "Veja as listas pré-fabricadas na Corporação Biblioteca de Tarefas e Desafios para ver tarefas de exemplo.",
- "tip32": "Muito do código do Habitica, arte e escrita é feito por contribuidores voluntários! Qualquer pessoa pode ajudar.",
- "tip33": "Veja a corporação de Quadro de Notícias para notícias acerda de corporações, desafios e outros eventos criados por jogadores - e anuncie o seu aí!"
+ "tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Head to the Aspiring Legends Guild to help.",
+ "tip33": "Check out The Bulletin Board Guild for news about Guilds, Challenges, and other player-created events - and announce your own there!",
+ "tip34": "Occasionally re-evaluate your tasks to make sure they’re up-to-date!",
+ "tip35": "Users who are part of a Group Plan gain the ability to assign tasks to other users in that Group for extra task management and accountability."
}
diff --git a/website/common/locales/pt/messages.json b/website/common/locales/pt/messages.json
index 44ed997f7da..9a2948dee34 100644
--- a/website/common/locales/pt/messages.json
+++ b/website/common/locales/pt/messages.json
@@ -29,6 +29,7 @@
"messageFoundQuest": "Você encontrou a missão \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Você comprou este equipamento no passado, mas não possuí mais o mesmo. Você pode comprá-lo novamente na coluna de recompensas na página de tarefas.",
"messageAlreadyOwnGear": "Você já possui este item. Vista-o indo até a página de equipamentos.",
+ "previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "Já tem a saúde máxima.",
"messageHealthAlreadyMin": "Oh no! You have already run out of health so it's too late to buy a health potion, but don't worry - you can revive!",
"armoireEquipment": "<%= image %> Encontrou uma peça de Equipamento raro no Armário: <%= dropText %>! Fantástico!",
@@ -52,6 +53,7 @@
"messageGroupChatFlagAlreadyReported": "Já reportou esta mensagem.",
"messageGroupChatNotFound": "Mensagem não encontrada!",
"messageGroupChatAdminClearFlagCount": "Somente um administrador pode remover o contador de bandeira!",
+ "messageCannotFlagSystemMessages": "You cannot flag a system message. If you need to report a violation of the Community Guidelines related to this message, please email a screenshot and explanation to Lemoness at <%= communityManagerEmail %>.",
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageUserOperationProtected": "caminho `<%= operation %>` não foi salvo, já que é um caminho protegido.",
"messageUserOperationNotFound": "<%= operation %> operação não encontrada",
diff --git a/website/common/locales/pt/npc.json b/website/common/locales/pt/npc.json
index 0c7f753d551..aca6b3ae095 100644
--- a/website/common/locales/pt/npc.json
+++ b/website/common/locales/pt/npc.json
@@ -88,7 +88,7 @@
"plusOneGem": "+1 Gema",
"typeNotSellable": "Tipo não é vendível. Precisa ser um dos seguintes <%= acceptedTypes %>",
"userItemsKeyNotFound": "Chave não encontrada para user.items <%= type %>",
- "userItemsNotEnough": "Not enough items found for user.items <%= type %>",
+ "userItemsNotEnough": "You do not have enough <%= type %>",
"pathRequired": "Texto do caminho é necessário",
"unlocked": "Itens foram destravados",
"alreadyUnlocked": "Conjunto completo já destravado.",
diff --git a/website/common/locales/pt/quests.json b/website/common/locales/pt/quests.json
index 03c5efb0df2..9f5ed68b921 100644
--- a/website/common/locales/pt/quests.json
+++ b/website/common/locales/pt/quests.json
@@ -37,7 +37,7 @@
"questCollection": "+ <%= val %> item(ns) de missão encontrado(s)",
"questDamage": "+ <%= val %> dano ao Chefão",
"begin": "Começar",
- "bossHP": "Vida do Chefão",
+ "bossHP": "Boss HP",
"bossStrength": "Força do Chefão",
"rage": "Ira",
"collect": "Coletar",
@@ -78,6 +78,7 @@
"mustLvlQuest": "Você precisa ser nível <%= level %> para comprar essa missão!",
"mustInviteFriend": "Para adquirir esta missão, convide um amigo para seu Grupo. Convidar alguém agora?",
"unlockByQuesting": "Para desbloquear esta missão, complete <%= title %>.",
+ "questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Você tem certeza que deseja cancelar esta missão? Todos os convites aceitos serão perdidos. O dono da missão manterá a posse do pergaminho de missão.",
"sureAbort": "Você tem certeza que deseja abortar esta missão? Ela abortará para todos em sua equipe e todo progresso será perdido. O pergaminho de missão retornará para o dono da missão.",
"doubleSureAbort": "Tem certeza mesmo? Certifique-se de que eles não o detestarão para sempre!",
diff --git a/website/common/locales/pt/questscontent.json b/website/common/locales/pt/questscontent.json
index 903bb580421..82a5e19dc80 100644
--- a/website/common/locales/pt/questscontent.json
+++ b/website/common/locales/pt/questscontent.json
@@ -58,7 +58,7 @@
"questSpiderBoss": "Aranha",
"questSpiderDropSpiderEgg": "Aranha (Ovo)",
"questSpiderUnlockText": "Desbloqueia ovos de Aranha para compra no Mercado",
- "questGroupVice": "Vice the Shadow Wyrm",
+ "questGroupVice": "Vício, o Dragão Sombrio",
"questVice1Text": "Vício, Parte 1: Liberte-se do Controle do Dragão",
"questVice1Notes": "Os rumores dizem que um mal horrível vive nas cavernas da montanha Habitica. Um monstro cuja presença corrompe a mente dos heróis mais fortes da terra, levando-os a maus hábitos e preguiça! A besta é um grande dragão de poder imenso e composto pelas próprias sombras: Vício, o traiçoeiro Dragão das Sombras. Bravos Habiticanos, se crêem que podem sobreviver a este poder imenso, peguem as suas armas e derrotem esta besta imunda de uma vez por todas.
Como podem pensar que podem lutar contra a besta se ela já tem controle sobre vocês? Não sejam vítimas da preguiça e do vício! Trabalhem arduamente contra a influência negra do dragão e libertem-se da influência que ele tem sobre vocês!
", "questVice1Boss": "A Sombra do Vício", @@ -69,12 +69,12 @@ "questVice2DropVice3Quest": "Vício Parte 3 (Pergaminho)", "questVice3Text": "Vício, Parte 3: O Despertar do Vício", "questVice3Notes": "Depois de muito esforço, sua equipe descobriu o covil do Vício. O poderoso monstro olha sua equipe à distância. Conforme a escuridão o cerca, uma voz sussurra na sua cabeça, \"Mais cidadãos tolos de Habitica vieram me parar? Que fofo. Teria sido inteligente não virem.\" O titã escamoso recua sua cabeça e se prepara para atacar. Essa é sua chance! Dê tudo de si e derrote o Vício de uma vez por todas!", - "questVice3Completion": "The shadows dissipate from the cavern and a steely silence falls. My word, you've done it! You have defeated Vice! You and your party may finally breathe a sigh of relief. Enjoy your victory, brave Habiteers, but take the lessons you've learned from battling Vice and move forward. There are still Habits to be done and potentially worse evils to conquer!", + "questVice3Completion": "As sombras dissipam-se da caverna e um silêncio metálico surge. Não acredito, você conseguiu! Vício foi derrotado! Você e sua equipe podem finalmente suspirar em alívio. Aproveite sua vitória, bravos Habiticanos, mas tomem a lição que aprenderam batalhando Vício e sigam em frente. Ainda há hábitos a serem feitos e potencialmente piores males para serem conquistados!", "questVice3Boss": "Vício, o Dragão Sombrio", "questVice3DropWeaponSpecial2": "Mastro do Dragão de Stephen Weber", "questVice3DropDragonEgg": "Dragão (Ovo)", "questVice3DropShadeHatchingPotion": "Poção de Eclosão de Sombra", - "questGroupMoonstone": "Recidivate Rising", + "questGroupMoonstone": "Recaída Transformada", "questMoonstone1Text": "Recidivar, Parte 1: A Corrente de Pedras da Lua", "questMoonstone1Notes": "Uma doença terrível abateu-se sobre os Habiticanos. Maus hábitos que se pensavam ter sido extintos à muito tempo estão a voltar com intensidade redobrada. Pratos ficam por ser lavados, manuais de estudo não são lidos e preguiça parece estar em toda a parte!