Compare commits
66 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6e49831ab3 | |||
| 81cd09d0f5 | |||
| dc558df0b1 | |||
| da6f275adc | |||
| 633961e8a7 | |||
| 284d67b385 | |||
| 78fe87055c | |||
| d47bd198ca | |||
| e82d532f58 | |||
| 34e87c4b3f | |||
| a3193c56c1 | |||
| bff7d9bab3 | |||
| 99d6ce5bdb | |||
| b0817d7f53 | |||
| 09622df94a | |||
| 7d0c97ae09 | |||
| ac64ad63bb | |||
| 166ed6e237 | |||
| 59d0ce1dfb | |||
| 1d44e0e6fa | |||
| 780c2857b1 | |||
| ca995648f4 | |||
| 0c03093173 | |||
| 4183cfb8a0 | |||
| 0837d17616 | |||
| 52667661c6 | |||
| 9adf5160fe | |||
| da796c305d | |||
| 953c84260f | |||
| c133445ff6 | |||
| f311fe201b | |||
| 5716b4eb72 | |||
| c89f66e4b8 | |||
| 503d79b320 | |||
| be58c8193e | |||
| 60ce16bf08 | |||
| 83ec53c614 | |||
| d7b251c5eb | |||
| 5fa140376e | |||
| 79b218ecf0 | |||
| e2442fe56d | |||
| 405ef7a3ba | |||
| b61162e475 | |||
| d7cc317208 | |||
| 7f67d5a8a6 | |||
| 731b241b46 | |||
| 912fef88a0 | |||
| 96d22e54f8 | |||
| 03bf7b7d59 | |||
| 78016c0aeb | |||
| b0786647ed | |||
| 1b25d30ac6 | |||
| 362677acb8 | |||
| d37c156fa0 | |||
| e5ccb634e0 | |||
| cea6cbad50 | |||
| 68584e25c1 | |||
| fbab46eab0 | |||
| 2740c02f35 | |||
| ffb51fc18b | |||
| d19fb4f489 | |||
| 49bfe386a6 | |||
| 93ee579bbf | |||
| f9ed36a9f2 | |||
| e965f6a28f | |||
| 5122d137b0 |
@@ -0,0 +1,73 @@
|
||||
import { model as User } from '../../website/server/models/user';
|
||||
|
||||
const MIGRATION_NAME = 'tag-challenge-field-string2bool';
|
||||
|
||||
const progressCount = 1000;
|
||||
let count = 0;
|
||||
|
||||
export default async function processUsers () {
|
||||
const query = {
|
||||
migration: { $ne: MIGRATION_NAME },
|
||||
tags: {
|
||||
$elemMatch: {
|
||||
challenge: {
|
||||
$exists: true,
|
||||
$type: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
while (true) { // eslint-disable-line no-constant-condition
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const users = await User.find(query)
|
||||
.sort({ _id: 1 })
|
||||
.limit(250)
|
||||
.select({ _id: 1, tags: 1 })
|
||||
.lean()
|
||||
.exec();
|
||||
|
||||
if (users.length === 0) {
|
||||
console.warn('All appropriate users found and modified.');
|
||||
console.warn(`\n${count} users processed\n`);
|
||||
break;
|
||||
} else {
|
||||
query._id = {
|
||||
$gt: users[users.length - 1],
|
||||
};
|
||||
}
|
||||
|
||||
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
|
||||
}
|
||||
}
|
||||
|
||||
async function updateUser (user) {
|
||||
count += 1;
|
||||
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
|
||||
let requiresUpdate = false;
|
||||
|
||||
if (user && user.tags) {
|
||||
user.tags.forEach(tag => {
|
||||
if (tag && typeof tag.challenge === 'string') {
|
||||
requiresUpdate = true;
|
||||
if (tag.challenge === 'true') {
|
||||
tag.challenge = true;
|
||||
} else if (tag.challenge === 'false') {
|
||||
tag.challenge = false;
|
||||
} else {
|
||||
tag.challenge = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (requiresUpdate) {
|
||||
const set = {
|
||||
migration: MIGRATION_NAME,
|
||||
tags: user.tags,
|
||||
};
|
||||
return User.update({ _id: user._id }, { $set: set }).exec();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"version": "4.156.1",
|
||||
"version": "4.157.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -23,18 +23,18 @@
|
||||
}
|
||||
},
|
||||
"@babel/core": {
|
||||
"version": "7.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz",
|
||||
"integrity": "sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==",
|
||||
"version": "7.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz",
|
||||
"integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.10.4",
|
||||
"@babel/generator": "^7.11.4",
|
||||
"@babel/generator": "^7.11.6",
|
||||
"@babel/helper-module-transforms": "^7.11.0",
|
||||
"@babel/helpers": "^7.10.4",
|
||||
"@babel/parser": "^7.11.4",
|
||||
"@babel/parser": "^7.11.5",
|
||||
"@babel/template": "^7.10.4",
|
||||
"@babel/traverse": "^7.11.0",
|
||||
"@babel/types": "^7.11.0",
|
||||
"@babel/traverse": "^7.11.5",
|
||||
"@babel/types": "^7.11.5",
|
||||
"convert-source-map": "^1.7.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.1",
|
||||
@@ -46,29 +46,15 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/generator": {
|
||||
"version": "7.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz",
|
||||
"integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==",
|
||||
"version": "7.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz",
|
||||
"integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.11.0",
|
||||
"@babel/types": "^7.11.5",
|
||||
"jsesc": "^2.5.1",
|
||||
"source-map": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz",
|
||||
"integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==",
|
||||
"requires": {
|
||||
"@babel/helper-module-imports": "^7.10.4",
|
||||
"@babel/helper-replace-supers": "^7.10.4",
|
||||
"@babel/helper-simple-access": "^7.10.4",
|
||||
"@babel/helper-split-export-declaration": "^7.11.0",
|
||||
"@babel/template": "^7.10.4",
|
||||
"@babel/types": "^7.11.0",
|
||||
"lodash": "^4.17.19"
|
||||
}
|
||||
},
|
||||
"@babel/helper-split-export-declaration": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
|
||||
@@ -78,30 +64,30 @@
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz",
|
||||
"integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA=="
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz",
|
||||
"integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q=="
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz",
|
||||
"integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz",
|
||||
"integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==",
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.10.4",
|
||||
"@babel/generator": "^7.11.0",
|
||||
"@babel/generator": "^7.11.5",
|
||||
"@babel/helper-function-name": "^7.10.4",
|
||||
"@babel/helper-split-export-declaration": "^7.11.0",
|
||||
"@babel/parser": "^7.11.0",
|
||||
"@babel/types": "^7.11.0",
|
||||
"@babel/parser": "^7.11.5",
|
||||
"@babel/types": "^7.11.5",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0",
|
||||
"lodash": "^4.17.19"
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
|
||||
"integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
|
||||
"integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==",
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.10.4",
|
||||
"lodash": "^4.17.19",
|
||||
@@ -183,11 +169,10 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-explode-assignable-expression": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz",
|
||||
"integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==",
|
||||
"version": "7.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz",
|
||||
"integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==",
|
||||
"requires": {
|
||||
"@babel/traverse": "^7.10.4",
|
||||
"@babel/types": "^7.10.4"
|
||||
}
|
||||
},
|
||||
@@ -234,17 +219,37 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-module-transforms": {
|
||||
"version": "7.10.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz",
|
||||
"integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==",
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz",
|
||||
"integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==",
|
||||
"requires": {
|
||||
"@babel/helper-module-imports": "^7.10.4",
|
||||
"@babel/helper-replace-supers": "^7.10.4",
|
||||
"@babel/helper-simple-access": "^7.10.4",
|
||||
"@babel/helper-split-export-declaration": "^7.10.4",
|
||||
"@babel/helper-split-export-declaration": "^7.11.0",
|
||||
"@babel/template": "^7.10.4",
|
||||
"@babel/types": "^7.10.5",
|
||||
"@babel/types": "^7.11.0",
|
||||
"lodash": "^4.17.19"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/helper-split-export-declaration": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz",
|
||||
"integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==",
|
||||
"requires": {
|
||||
"@babel/types": "^7.11.0"
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
|
||||
"integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==",
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.10.4",
|
||||
"lodash": "^4.17.19",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/helper-optimise-call-expression": {
|
||||
@@ -269,14 +274,13 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-remap-async-to-generator": {
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz",
|
||||
"integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==",
|
||||
"version": "7.11.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz",
|
||||
"integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==",
|
||||
"requires": {
|
||||
"@babel/helper-annotate-as-pure": "^7.10.4",
|
||||
"@babel/helper-wrap-function": "^7.10.4",
|
||||
"@babel/template": "^7.10.4",
|
||||
"@babel/traverse": "^7.10.4",
|
||||
"@babel/types": "^7.10.4"
|
||||
}
|
||||
},
|
||||
@@ -309,9 +313,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/types": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
|
||||
"integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
|
||||
"integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==",
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.10.4",
|
||||
"lodash": "^4.17.19",
|
||||
@@ -624,9 +628,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-block-scoping": {
|
||||
"version": "7.10.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz",
|
||||
"integrity": "sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg==",
|
||||
"version": "7.11.1",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz",
|
||||
"integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.10.4"
|
||||
}
|
||||
@@ -881,9 +885,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/preset-env": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz",
|
||||
"integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.5.tgz",
|
||||
"integrity": "sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA==",
|
||||
"requires": {
|
||||
"@babel/compat-data": "^7.11.0",
|
||||
"@babel/helper-compilation-targets": "^7.10.4",
|
||||
@@ -947,7 +951,7 @@
|
||||
"@babel/plugin-transform-unicode-escapes": "^7.10.4",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.10.4",
|
||||
"@babel/preset-modules": "^0.1.3",
|
||||
"@babel/types": "^7.11.0",
|
||||
"@babel/types": "^7.11.5",
|
||||
"browserslist": "^4.12.0",
|
||||
"core-js-compat": "^3.6.2",
|
||||
"invariant": "^2.2.2",
|
||||
@@ -956,9 +960,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/types": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz",
|
||||
"integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz",
|
||||
"integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==",
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.10.4",
|
||||
"lodash": "^4.17.19",
|
||||
@@ -968,9 +972,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/preset-modules": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz",
|
||||
"integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==",
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz",
|
||||
"integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==",
|
||||
"requires": {
|
||||
"@babel/helper-plugin-utils": "^7.0.0",
|
||||
"@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
|
||||
@@ -980,9 +984,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/register": {
|
||||
"version": "7.10.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/register/-/register-7.10.5.tgz",
|
||||
"integrity": "sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw==",
|
||||
"version": "7.11.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/register/-/register-7.11.5.tgz",
|
||||
"integrity": "sha512-CAml0ioKX+kOAvBQDHa/+t1fgOt3qkTIz0TrRtRAT6XY0m5qYZXR85k6/sLCNPMGhYDlCFHCYuU0ybTJbvlC6w==",
|
||||
"requires": {
|
||||
"find-cache-dir": "^2.0.0",
|
||||
"lodash": "^4.17.19",
|
||||
@@ -992,9 +996,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.0.tgz",
|
||||
"integrity": "sha512-qArkXsjJq7H+T86WrIFV0Fnu/tNOkZ4cgXmjkzAu3b/58D5mFIO8JH/y77t7C9q0OdDRdh9s7Ue5GasYssxtXw==",
|
||||
"version": "7.11.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
|
||||
"integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
}
|
||||
@@ -1154,9 +1158,9 @@
|
||||
}
|
||||
},
|
||||
"@sindresorhus/is": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.0.tgz",
|
||||
"integrity": "sha512-n4J+zu52VdY43kdi/XdI9DzuMr1Mur8zFL5ZRG2opCans9aiFwkPxHYFEb5Xgy7n1Z4K6WfI4FpqUqsh3E8BPQ=="
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz",
|
||||
"integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ=="
|
||||
},
|
||||
"@sinonjs/commons": {
|
||||
"version": "1.8.1",
|
||||
@@ -1399,9 +1403,9 @@
|
||||
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
|
||||
},
|
||||
"@types/mongodb": {
|
||||
"version": "3.5.25",
|
||||
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.5.25.tgz",
|
||||
"integrity": "sha512-2H/Owt+pHCl9YmBOYnXc3VdnxejJEjVdH+QCWL5ZAfPehEn3evygKBX3/vKRv7aTwfNbUd0E5vjJdQklH/9a6w==",
|
||||
"version": "3.5.27",
|
||||
"resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.5.27.tgz",
|
||||
"integrity": "sha512-1jxKDgdfJEOO9zp+lv43p8jOqRs02xPrdUTzAZIVK9tVEySfCEmktL2jEu9A3wOBEOs18yKzpVIKUh8b8ALk3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/bson": "*",
|
||||
@@ -2825,9 +2829,9 @@
|
||||
}
|
||||
},
|
||||
"bl": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
|
||||
"integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
|
||||
"integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
|
||||
"requires": {
|
||||
"readable-stream": "^2.3.5",
|
||||
"safe-buffer": "^5.1.1"
|
||||
@@ -3003,14 +3007,14 @@
|
||||
"dev": true
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.13.0",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.13.0.tgz",
|
||||
"integrity": "sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ==",
|
||||
"version": "4.14.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.1.tgz",
|
||||
"integrity": "sha512-zyBTIHydW37pnb63c7fHFXUG6EcqWOqoMdDx6cdyaDFriZ20EoVxcE95S54N+heRqY8m8IUgB5zYta/gCwSaaA==",
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30001093",
|
||||
"electron-to-chromium": "^1.3.488",
|
||||
"escalade": "^3.0.1",
|
||||
"node-releases": "^1.1.58"
|
||||
"caniuse-lite": "^1.0.30001124",
|
||||
"electron-to-chromium": "^1.3.562",
|
||||
"escalade": "^3.0.2",
|
||||
"node-releases": "^1.1.60"
|
||||
}
|
||||
},
|
||||
"bson": {
|
||||
@@ -3163,9 +3167,9 @@
|
||||
"integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs="
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001109",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz",
|
||||
"integrity": "sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ=="
|
||||
"version": "1.0.30001124",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001124.tgz",
|
||||
"integrity": "sha512-zQW8V3CdND7GHRH6rxm6s59Ww4g/qGWTheoboW9nfeMg7sUoopIfKCcNZUjwYRCOrvereh3kwDpZj4VLQ7zGtA=="
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
@@ -4624,9 +4628,9 @@
|
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.516",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.516.tgz",
|
||||
"integrity": "sha512-WDM5AAQdOrvLqSX8g3Zd5AujBXfMxf96oeZkff0U2HF5op3tjShE+on2yay3r1UD4M9I3p0iHpAS4+yV8U8A9A=="
|
||||
"version": "1.3.562",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.562.tgz",
|
||||
"integrity": "sha512-WhRe6liQ2q/w1MZc8mD8INkenHivuHdrr4r5EQHNomy3NJux+incP6M6lDMd0paShP3MD0WGe5R1TWmEClf+Bg=="
|
||||
},
|
||||
"emitter-listener": {
|
||||
"version": "1.1.2",
|
||||
@@ -6696,18 +6700,18 @@
|
||||
}
|
||||
},
|
||||
"got": {
|
||||
"version": "11.5.2",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-11.5.2.tgz",
|
||||
"integrity": "sha512-yUhpEDLeuGiGJjRSzEq3kvt4zJtAcjKmhIiwNp/eUs75tRlXfWcHo5tcBaMQtnjHWC7nQYT5HkY/l0QOQTkVww==",
|
||||
"version": "11.6.2",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-11.6.2.tgz",
|
||||
"integrity": "sha512-/21qgUePCeus29Jk7MEti8cgQUNXFSWfIevNIk4H7u1wmXNDrGPKPY6YsPY+o9CIT/a2DjCjRz0x1nM9FtS2/A==",
|
||||
"requires": {
|
||||
"@sindresorhus/is": "^3.0.0",
|
||||
"@sindresorhus/is": "^3.1.1",
|
||||
"@szmarczak/http-timer": "^4.0.5",
|
||||
"@types/cacheable-request": "^6.0.1",
|
||||
"@types/responselike": "^1.0.0",
|
||||
"cacheable-lookup": "^5.0.3",
|
||||
"cacheable-request": "^7.0.1",
|
||||
"decompress-response": "^6.0.0",
|
||||
"http2-wrapper": "^1.0.0-beta.5.0",
|
||||
"http2-wrapper": "^1.0.0-beta.5.2",
|
||||
"lowercase-keys": "^2.0.0",
|
||||
"p-cancelable": "^2.0.0",
|
||||
"responselike": "^2.0.0"
|
||||
@@ -7056,9 +7060,9 @@
|
||||
}
|
||||
},
|
||||
"habitica-markdown": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/habitica-markdown/-/habitica-markdown-2.0.2.tgz",
|
||||
"integrity": "sha512-GGzWuDKbFBMI+GqmQnSPUD5Zi/WPZDDuC2dC2La6uvu1zVNW7uHyQG0lxwCO43t5EdYXtOoOPin1rhhLdTuZfA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/habitica-markdown/-/habitica-markdown-3.0.0.tgz",
|
||||
"integrity": "sha512-rw1LJ5Vsjx8sfjNa4e2wFuZf5eqqyb5/kfZXPxqfMMgJCCgIhWStDqY3nIclnpGWpemlKd+qbdh2rLiLgm9kng==",
|
||||
"requires": {
|
||||
"habitica-markdown-emoji": "1.2.4",
|
||||
"markdown-it": "10.0.0",
|
||||
@@ -7422,9 +7426,9 @@
|
||||
}
|
||||
},
|
||||
"image-size": {
|
||||
"version": "0.8.3",
|
||||
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.8.3.tgz",
|
||||
"integrity": "sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==",
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.9.1.tgz",
|
||||
"integrity": "sha512-yBo6xGGjiWtApYroCGR9wTvaIgande5vmAfTYIld5ss5kN4tyDG5lrW1qGomOXgB05ss7GLXLpDYXEiFqSqkzg==",
|
||||
"requires": {
|
||||
"queue": "6.0.1"
|
||||
}
|
||||
@@ -9351,9 +9355,9 @@
|
||||
"integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is="
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.27.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
|
||||
"integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
|
||||
"version": "2.28.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz",
|
||||
"integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw=="
|
||||
},
|
||||
"moment-recur": {
|
||||
"version": "1.0.7",
|
||||
@@ -9364,9 +9368,9 @@
|
||||
}
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "3.5.9",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.9.tgz",
|
||||
"integrity": "sha512-vXHBY1CsGYcEPoVWhwgxIBeWqP3dSu9RuRDsoLRPTITrcrgm1f0Ubu1xqF9ozMwv53agmEiZm0YGo+7WL3Nbug==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.1.tgz",
|
||||
"integrity": "sha512-uH76Zzr5wPptnjEKJRQnwTsomtFOU/kQEU8a9hKHr2M7y9qVk7Q4Pkv0EQVp88742z9+RwvsdTw6dRjDZCNu1g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bl": "^2.2.0",
|
||||
@@ -9378,9 +9382,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"bl": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz",
|
||||
"integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==",
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
|
||||
"integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"readable-stream": "^2.3.5",
|
||||
@@ -9451,13 +9455,13 @@
|
||||
}
|
||||
},
|
||||
"mongoose": {
|
||||
"version": "5.10.2",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.2.tgz",
|
||||
"integrity": "sha512-VO5eZawEMFh2gx9XPg9ZafzFg5eIVs4R7PW6kK1MFqBq34YD7GomkalYWVt02HctvTPDI1mkXsm52LXNZR1NxA==",
|
||||
"version": "5.10.3",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.3.tgz",
|
||||
"integrity": "sha512-FLemltuzcsCHlFpEZ3bYOiNhJfHful+GoS+3uRgdEWGlY0HKfOjm9xsISM/tql8vRvhjr7qveuRfoBBGO3xNtw==",
|
||||
"requires": {
|
||||
"bson": "^1.1.4",
|
||||
"kareem": "2.3.1",
|
||||
"mongodb": "3.6.0",
|
||||
"mongodb": "3.6.1",
|
||||
"mongoose-legacy-pluralize": "1.0.2",
|
||||
"mpath": "0.7.0",
|
||||
"mquery": "3.2.2",
|
||||
@@ -9478,9 +9482,9 @@
|
||||
}
|
||||
},
|
||||
"mongodb": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.0.tgz",
|
||||
"integrity": "sha512-/XWWub1mHZVoqEsUppE0GV7u9kanLvHxho6EvBxQbShXTKYF9trhZC2NzbulRGeG7xMJHD8IOWRcdKx5LPjAjQ==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.1.tgz",
|
||||
"integrity": "sha512-uH76Zzr5wPptnjEKJRQnwTsomtFOU/kQEU8a9hKHr2M7y9qVk7Q4Pkv0EQVp88742z9+RwvsdTw6dRjDZCNu1g==",
|
||||
"requires": {
|
||||
"bl": "^2.2.0",
|
||||
"bson": "^1.1.4",
|
||||
@@ -9539,9 +9543,9 @@
|
||||
"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
|
||||
},
|
||||
"monk": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/monk/-/monk-7.3.1.tgz",
|
||||
"integrity": "sha512-09+K52A7vfdH7ZxyZyXS6E5C3LUMxXvd8ZLAYLJclXVbqxb6dsmA1ArIWGblhGFEgYOaTI9MOfWO3uE4b5IQkA==",
|
||||
"version": "7.3.2",
|
||||
"resolved": "https://registry.npmjs.org/monk/-/monk-7.3.2.tgz",
|
||||
"integrity": "sha512-rf44p/l4HRDnrQXWci9SOz5uFAEQsHERVmE0tgya8OjOwqzeztE1sIcZ7JdxqpVk0Y1QyzApZWyBFWfvFB6sfQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/mongodb": "^3.5.25",
|
||||
@@ -9925,9 +9929,9 @@
|
||||
"integrity": "sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
|
||||
"integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
|
||||
"version": "2.6.1",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.9.1",
|
||||
@@ -12987,9 +12991,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"bl": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz",
|
||||
"integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
|
||||
"integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer": "^5.5.0",
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.156.1",
|
||||
"version": "4.157.1",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.11.4",
|
||||
"@babel/preset-env": "^7.11.0",
|
||||
"@babel/register": "^7.10.3",
|
||||
"@babel/core": "^7.11.6",
|
||||
"@babel/preset-env": "^7.11.5",
|
||||
"@babel/register": "^7.11.5",
|
||||
"@google-cloud/trace-agent": "^5.1.0",
|
||||
"@slack/client": "^4.12.0",
|
||||
"accepts": "^1.3.5",
|
||||
@@ -30,15 +30,15 @@
|
||||
"express-basic-auth": "^1.1.5",
|
||||
"express-validator": "^5.2.0",
|
||||
"glob": "^7.1.6",
|
||||
"got": "^11.5.2",
|
||||
"got": "^11.6.2",
|
||||
"gulp": "^4.0.0",
|
||||
"gulp-babel": "^8.0.0",
|
||||
"gulp-imagemin": "^7.1.0",
|
||||
"gulp-nodemon": "^2.5.0",
|
||||
"gulp.spritesmith": "^6.9.0",
|
||||
"habitica-markdown": "^2.0.2",
|
||||
"habitica-markdown": "^3.0.0",
|
||||
"helmet": "^3.23.3",
|
||||
"image-size": "^0.8.3",
|
||||
"image-size": "^0.9.1",
|
||||
"in-app-purchase": "^1.11.3",
|
||||
"js2xmlparser": "^4.0.1",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
@@ -46,9 +46,9 @@
|
||||
"lodash": "^4.17.20",
|
||||
"merge-stream": "^2.0.0",
|
||||
"method-override": "^3.0.0",
|
||||
"moment": "^2.27.0",
|
||||
"moment": "^2.28.0",
|
||||
"moment-recur": "^1.0.7",
|
||||
"mongoose": "^5.10.2",
|
||||
"mongoose": "^5.10.3",
|
||||
"morgan": "^1.10.0",
|
||||
"nconf": "^0.10.0",
|
||||
"node-gcm": "^1.0.3",
|
||||
@@ -118,7 +118,7 @@
|
||||
"expect.js": "^0.3.1",
|
||||
"istanbul": "^1.1.0-alpha.1",
|
||||
"mocha": "^5.1.1",
|
||||
"monk": "^7.3.1",
|
||||
"monk": "^7.3.2",
|
||||
"require-again": "^2.0.0",
|
||||
"run-rs": "^0.6.2",
|
||||
"sinon": "^9.0.3",
|
||||
|
||||
@@ -6,8 +6,8 @@ import {
|
||||
|
||||
describe('GET challenges/user', () => {
|
||||
context('no official challenges', () => {
|
||||
let user; let member; let nonMember; let challenge; let challenge2; let
|
||||
publicGuild;
|
||||
let user; let member; let nonMember; let challenge; let challenge2;
|
||||
let publicGuild; let userData; let groupData;
|
||||
|
||||
before(async () => {
|
||||
const { group, groupLeader, members } = await createAndPopulateGroup({
|
||||
@@ -19,225 +19,197 @@ describe('GET challenges/user', () => {
|
||||
members: 1,
|
||||
});
|
||||
|
||||
user = groupLeader;
|
||||
publicGuild = group;
|
||||
groupData = {
|
||||
_id: publicGuild._id,
|
||||
categories: [],
|
||||
id: publicGuild._id,
|
||||
type: publicGuild.type,
|
||||
privacy: publicGuild.privacy,
|
||||
name: publicGuild.name,
|
||||
summary: publicGuild.name,
|
||||
leader: publicGuild.leader._id,
|
||||
};
|
||||
|
||||
user = groupLeader;
|
||||
userData = {
|
||||
_id: publicGuild.leader._id,
|
||||
id: publicGuild.leader._id,
|
||||
profile: { name: user.profile.name },
|
||||
auth: {
|
||||
local: {
|
||||
username: user.auth.local.username,
|
||||
},
|
||||
},
|
||||
flags: {
|
||||
verifiedUsername: true,
|
||||
},
|
||||
};
|
||||
|
||||
member = members[0]; // eslint-disable-line prefer-destructuring
|
||||
nonMember = await generateUser();
|
||||
|
||||
challenge = await generateChallenge(user, group);
|
||||
await user.post(`/challenges/${challenge._id}/join`);
|
||||
challenge2 = await generateChallenge(user, group);
|
||||
await user.post(`/challenges/${challenge2._id}/join`);
|
||||
});
|
||||
|
||||
it('should return challenges user has joined', async () => {
|
||||
await nonMember.post(`/challenges/${challenge._id}/join`);
|
||||
});
|
||||
context('all challenges', () => {
|
||||
it('should return challenges user has joined', async () => {
|
||||
const challenges = await nonMember.get('/challenges/user');
|
||||
|
||||
const challenges = await nonMember.get('/challenges/user');
|
||||
const foundChallenge = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge).to.exist;
|
||||
expect(foundChallenge.leader).to.eql(userData);
|
||||
expect(foundChallenge.group).to.eql(groupData);
|
||||
});
|
||||
|
||||
const foundChallenge = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge).to.exist;
|
||||
expect(foundChallenge.leader).to.eql({
|
||||
_id: publicGuild.leader._id,
|
||||
id: publicGuild.leader._id,
|
||||
profile: { name: user.profile.name },
|
||||
auth: {
|
||||
local: {
|
||||
username: user.auth.local.username,
|
||||
it('should not return challenges a non-member has not joined', async () => {
|
||||
const challenges = await nonMember.get('/challenges/user');
|
||||
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.not.exist;
|
||||
});
|
||||
|
||||
it('should return challenges user has created', async () => {
|
||||
const challenges = await user.get('/challenges/user');
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.exist;
|
||||
expect(foundChallenge1.leader).to.eql(userData);
|
||||
expect(foundChallenge1.group).to.eql(groupData);
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.exist;
|
||||
expect(foundChallenge2.leader).to.eql(userData);
|
||||
expect(foundChallenge2.group).to.eql(groupData);
|
||||
});
|
||||
|
||||
it('should return challenges in user\'s group', async () => {
|
||||
const challenges = await member.get('/challenges/user');
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.exist;
|
||||
expect(foundChallenge1.leader).to.eql(userData);
|
||||
expect(foundChallenge1.group).to.eql(groupData);
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.exist;
|
||||
expect(foundChallenge2.leader).to.eql(userData);
|
||||
expect(foundChallenge2.group).to.eql(groupData);
|
||||
});
|
||||
|
||||
it('should return newest challenges first', async () => {
|
||||
let challenges = await user.get('/challenges/user');
|
||||
|
||||
let foundChallengeIndex = _.findIndex(challenges, { _id: challenge2._id });
|
||||
expect(foundChallengeIndex).to.eql(0);
|
||||
|
||||
const newChallenge = await generateChallenge(user, publicGuild);
|
||||
await user.post(`/challenges/${newChallenge._id}/join`);
|
||||
|
||||
challenges = await user.get('/challenges/user');
|
||||
|
||||
foundChallengeIndex = _.findIndex(challenges, { _id: newChallenge._id });
|
||||
expect(foundChallengeIndex).to.eql(0);
|
||||
});
|
||||
|
||||
it('should not return challenges user doesn\'t have access to', async () => {
|
||||
const { group, groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: {
|
||||
name: 'TestPrivateGuild',
|
||||
summary: 'summary for TestPrivateGuild',
|
||||
type: 'guild',
|
||||
privacy: 'private',
|
||||
},
|
||||
},
|
||||
flags: {
|
||||
verifiedUsername: true,
|
||||
},
|
||||
});
|
||||
expect(foundChallenge.group).to.eql({
|
||||
_id: publicGuild._id,
|
||||
categories: [],
|
||||
id: publicGuild._id,
|
||||
type: publicGuild.type,
|
||||
privacy: publicGuild.privacy,
|
||||
name: publicGuild.name,
|
||||
summary: publicGuild.name,
|
||||
leader: publicGuild.leader._id,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should return challenges user has created', async () => {
|
||||
const challenges = await user.get('/challenges/user');
|
||||
const privateChallenge = await generateChallenge(groupLeader, group);
|
||||
await groupLeader.post(`/challenges/${privateChallenge._id}/join`);
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.exist;
|
||||
expect(foundChallenge1.leader).to.eql({
|
||||
_id: publicGuild.leader._id,
|
||||
id: publicGuild.leader._id,
|
||||
profile: { name: user.profile.name },
|
||||
auth: {
|
||||
local: {
|
||||
username: user.auth.local.username,
|
||||
const challenges = await nonMember.get('/challenges/user');
|
||||
|
||||
const foundChallenge = _.find(challenges, { _id: privateChallenge._id });
|
||||
expect(foundChallenge).to.not.exist;
|
||||
});
|
||||
|
||||
it('should not return challenges user doesn\'t have access to, even with query parameters', async () => {
|
||||
const { group, groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: {
|
||||
name: 'TestPrivateGuild',
|
||||
summary: 'summary for TestPrivateGuild',
|
||||
type: 'guild',
|
||||
privacy: 'private',
|
||||
},
|
||||
},
|
||||
flags: {
|
||||
verifiedUsername: true,
|
||||
},
|
||||
});
|
||||
expect(foundChallenge1.group).to.eql({
|
||||
_id: publicGuild._id,
|
||||
categories: [],
|
||||
id: publicGuild._id,
|
||||
type: publicGuild.type,
|
||||
privacy: publicGuild.privacy,
|
||||
name: publicGuild.name,
|
||||
summary: publicGuild.name,
|
||||
leader: publicGuild.leader._id,
|
||||
});
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.exist;
|
||||
expect(foundChallenge2.leader).to.eql({
|
||||
_id: publicGuild.leader._id,
|
||||
id: publicGuild.leader._id,
|
||||
profile: { name: user.profile.name },
|
||||
auth: {
|
||||
local: {
|
||||
username: user.auth.local.username,
|
||||
},
|
||||
},
|
||||
flags: {
|
||||
verifiedUsername: true,
|
||||
},
|
||||
});
|
||||
expect(foundChallenge2.group).to.eql({
|
||||
_id: publicGuild._id,
|
||||
categories: [],
|
||||
id: publicGuild._id,
|
||||
type: publicGuild.type,
|
||||
privacy: publicGuild.privacy,
|
||||
name: publicGuild.name,
|
||||
summary: publicGuild.name,
|
||||
leader: publicGuild.leader._id,
|
||||
});
|
||||
|
||||
const privateChallenge = await generateChallenge(groupLeader, group, {
|
||||
categories: [{
|
||||
name: 'academics',
|
||||
slug: 'academics',
|
||||
}],
|
||||
});
|
||||
await groupLeader.post(`/challenges/${privateChallenge._id}/join`);
|
||||
|
||||
const challenges = await nonMember.get('/challenges/user?categories=academics&owned=not_owned');
|
||||
|
||||
const foundChallenge = _.find(challenges, { _id: privateChallenge._id });
|
||||
expect(foundChallenge).to.not.exist;
|
||||
});
|
||||
});
|
||||
|
||||
it('should return challenges in user\'s group', async () => {
|
||||
const challenges = await member.get('/challenges/user');
|
||||
context('my challenges', () => {
|
||||
it('should return challenges user has joined', async () => {
|
||||
const challenges = await nonMember.get(`/challenges/user?member=${true}`);
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.exist;
|
||||
expect(foundChallenge1.leader).to.eql({
|
||||
_id: publicGuild.leader._id,
|
||||
id: publicGuild.leader._id,
|
||||
profile: { name: user.profile.name },
|
||||
auth: {
|
||||
local: {
|
||||
username: user.auth.local.username,
|
||||
},
|
||||
},
|
||||
flags: {
|
||||
verifiedUsername: true,
|
||||
},
|
||||
});
|
||||
expect(foundChallenge1.group).to.eql({
|
||||
_id: publicGuild._id,
|
||||
categories: [],
|
||||
id: publicGuild._id,
|
||||
type: publicGuild.type,
|
||||
privacy: publicGuild.privacy,
|
||||
name: publicGuild.name,
|
||||
summary: publicGuild.name,
|
||||
leader: publicGuild.leader._id,
|
||||
});
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.exist;
|
||||
expect(foundChallenge2.leader).to.eql({
|
||||
_id: publicGuild.leader._id,
|
||||
id: publicGuild.leader._id,
|
||||
profile: { name: user.profile.name },
|
||||
auth: {
|
||||
local: {
|
||||
username: user.auth.local.username,
|
||||
},
|
||||
},
|
||||
flags: {
|
||||
verifiedUsername: true,
|
||||
},
|
||||
});
|
||||
expect(foundChallenge2.group).to.eql({
|
||||
_id: publicGuild._id,
|
||||
categories: [],
|
||||
id: publicGuild._id,
|
||||
type: publicGuild.type,
|
||||
privacy: publicGuild.privacy,
|
||||
name: publicGuild.name,
|
||||
summary: publicGuild.name,
|
||||
leader: publicGuild.leader._id,
|
||||
});
|
||||
});
|
||||
|
||||
it('should not return challenges in user groups if we send member true param', async () => {
|
||||
const challenges = await member.get(`/challenges/user?member=${true}`);
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.not.exist;
|
||||
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.not.exist;
|
||||
});
|
||||
|
||||
it('should return newest challenges first', async () => {
|
||||
let challenges = await user.get('/challenges/user');
|
||||
|
||||
let foundChallengeIndex = _.findIndex(challenges, { _id: challenge2._id });
|
||||
expect(foundChallengeIndex).to.eql(0);
|
||||
|
||||
const newChallenge = await generateChallenge(user, publicGuild);
|
||||
await user.post(`/challenges/${newChallenge._id}/join`);
|
||||
|
||||
challenges = await user.get('/challenges/user');
|
||||
|
||||
foundChallengeIndex = _.findIndex(challenges, { _id: newChallenge._id });
|
||||
expect(foundChallengeIndex).to.eql(0);
|
||||
});
|
||||
|
||||
it('should not return challenges user doesn\'t have access to', async () => {
|
||||
const { group, groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: {
|
||||
name: 'TestPrivateGuild',
|
||||
summary: 'summary for TestPrivateGuild',
|
||||
type: 'guild',
|
||||
privacy: 'private',
|
||||
},
|
||||
const foundChallenge = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge).to.exist;
|
||||
expect(foundChallenge.leader).to.eql(userData);
|
||||
expect(foundChallenge.group).to.eql(groupData);
|
||||
});
|
||||
|
||||
const privateChallenge = await generateChallenge(groupLeader, group);
|
||||
await groupLeader.post(`/challenges/${privateChallenge._id}/join`);
|
||||
it('should return challenges user has created', async () => {
|
||||
const challenges = await user.get(`/challenges/user?member=${true}`);
|
||||
|
||||
const challenges = await nonMember.get('/challenges/user');
|
||||
|
||||
const foundChallenge = _.find(challenges, { _id: privateChallenge._id });
|
||||
expect(foundChallenge).to.not.exist;
|
||||
});
|
||||
|
||||
it('should not return challenges user doesn\'t have access to, even with query parameters', async () => {
|
||||
const { group, groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: {
|
||||
name: 'TestPrivateGuild',
|
||||
summary: 'summary for TestPrivateGuild',
|
||||
type: 'guild',
|
||||
privacy: 'private',
|
||||
},
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.exist;
|
||||
expect(foundChallenge1.leader).to.eql(userData);
|
||||
expect(foundChallenge1.group).to.eql(groupData);
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.exist;
|
||||
expect(foundChallenge2.leader).to.eql(userData);
|
||||
expect(foundChallenge2.group).to.eql(groupData);
|
||||
});
|
||||
|
||||
const privateChallenge = await generateChallenge(groupLeader, group, {
|
||||
categories: [{
|
||||
name: 'academics',
|
||||
slug: 'academics',
|
||||
}],
|
||||
it('should return challenges user has created if filter by owned', async () => {
|
||||
const challenges = await user.get(`/challenges/user?member=${true}&owned=owned`);
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.exist;
|
||||
expect(foundChallenge1.leader).to.eql(userData);
|
||||
expect(foundChallenge1.group).to.eql(groupData);
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.exist;
|
||||
expect(foundChallenge2.leader).to.eql(userData);
|
||||
expect(foundChallenge2.group).to.eql(groupData);
|
||||
});
|
||||
await groupLeader.post(`/challenges/${privateChallenge._id}/join`);
|
||||
|
||||
const challenges = await nonMember.get('/challenges/user?categories=academics&owned=not_owned');
|
||||
it('should not return challenges user has created if filter by not owned', async () => {
|
||||
const challenges = await user.get(`/challenges/user?owned=not_owned&member=${true}`);
|
||||
|
||||
const foundChallenge = _.find(challenges, { _id: privateChallenge._id });
|
||||
expect(foundChallenge).to.not.exist;
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.not.exist;
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.not.exist;
|
||||
});
|
||||
|
||||
it('should not return challenges in user groups', async () => {
|
||||
const challenges = await member.get(`/challenges/user?member=${true}`);
|
||||
|
||||
const foundChallenge1 = _.find(challenges, { _id: challenge._id });
|
||||
expect(foundChallenge1).to.not.exist;
|
||||
|
||||
const foundChallenge2 = _.find(challenges, { _id: challenge2._id });
|
||||
expect(foundChallenge2).to.not.exist;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ describe('POST /challenges/:challengeId/winner/:winnerId', () => {
|
||||
|
||||
expect(testTask.challenge.broken).to.eql('CHALLENGE_CLOSED');
|
||||
expect(testTask.challenge.winner).to.eql(winningUser.profile.name);
|
||||
expect(challengeTag.challenge).to.eql('false');
|
||||
expect(challengeTag.challenge).to.eql(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -14,7 +14,6 @@ import {
|
||||
TAVERN_ID,
|
||||
} from '../../../../../website/server/models/group';
|
||||
import { CHAT_FLAG_FROM_SHADOW_MUTE, MAX_MESSAGE_LENGTH } from '../../../../../website/common/script/constants';
|
||||
import guildsAllowingBannedWords from '../../../../../website/server/libs/guildsAllowingBannedWords';
|
||||
import * as email from '../../../../../website/server/libs/email';
|
||||
|
||||
const BASE_URL = nconf.get('BASE_URL');
|
||||
@@ -329,7 +328,8 @@ describe('POST /chat', () => {
|
||||
members: 1,
|
||||
});
|
||||
|
||||
guildsAllowingBannedWords[group._id] = true;
|
||||
// Update the bannedWordsAllowed property for the group
|
||||
group.update({ bannedWordsAllowed: true });
|
||||
|
||||
const message = await members[0].post(`/groups/${group._id}/chat`, { message: testBannedWordMessage });
|
||||
|
||||
@@ -503,8 +503,8 @@ describe('POST /chat', () => {
|
||||
const memberUsername = 'memberUsername';
|
||||
await member.update({ 'auth.local.username': memberUsername });
|
||||
|
||||
const messageWithMentions = `hi @${memberUsername} 123456789
|
||||
123456789 123456789 123456789 123456789 123456789 123456789 89 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345678 END.`;
|
||||
const messageWithMentions = `hi @${memberUsername} 123456789
|
||||
123456789 123456789 123456789 123456789 123456789 123456789 89 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 12345678 END.`;
|
||||
expect(messageWithMentions.length).to.equal(MAX_MESSAGE_LENGTH);
|
||||
const newMessage = await user.post(`/groups/${groupWithChat._id}/chat`, { message: messageWithMentions });
|
||||
const groupMessages = await user.get(`/groups/${groupWithChat._id}/chat`);
|
||||
|
||||
@@ -79,4 +79,56 @@ describe('PUT /group', () => {
|
||||
expect(updatedGroup.leader.profile.name).to.eql(nonLeader.profile.name);
|
||||
expect(updatedGroup.name).to.equal(groupUpdatedName);
|
||||
});
|
||||
|
||||
it('allows for an admin to update the bannedWordsAllow property for an existing guild', async () => {
|
||||
const { group, groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: {
|
||||
name: 'public guild',
|
||||
type: 'guild',
|
||||
privacy: 'public',
|
||||
},
|
||||
});
|
||||
|
||||
const updateGroupDetails = {
|
||||
id: group._id,
|
||||
name: 'public guild',
|
||||
type: 'guild',
|
||||
privacy: 'public',
|
||||
bannedWordsAllowed: true,
|
||||
};
|
||||
|
||||
// Make guild leader into admin
|
||||
await groupLeader.post('/debug/make-admin');
|
||||
await groupLeader.sync();
|
||||
|
||||
// Update the bannedWordsAllowed property for the group
|
||||
const response = await groupLeader.put(`/groups/${group._id}`, updateGroupDetails);
|
||||
|
||||
expect(groupLeader.contributor.admin).to.eql(true);
|
||||
expect(response.bannedWordsAllowed).to.eql(true);
|
||||
});
|
||||
|
||||
it('does not allow for a non-admin to update the bannedWordsAllow property for an existing guild', async () => {
|
||||
const { group, groupLeader } = await createAndPopulateGroup({
|
||||
groupDetails: {
|
||||
name: 'public guild',
|
||||
type: 'guild',
|
||||
privacy: 'public',
|
||||
},
|
||||
});
|
||||
|
||||
const updateGroupDetails = {
|
||||
id: group._id,
|
||||
name: 'public guild',
|
||||
type: 'guild',
|
||||
privacy: 'public',
|
||||
bannedWordsAllowed: true,
|
||||
};
|
||||
|
||||
// Update the bannedWordsAllowed property for the group
|
||||
const response = await groupLeader.put(`/groups/${group._id}`, updateGroupDetails);
|
||||
|
||||
expect(groupLeader.contributor.admin).to.eql(undefined);
|
||||
expect(response.bannedWordsAllowed).to.eql(undefined);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -18,31 +18,31 @@
|
||||
"@storybook/addon-links": "^5.3.19",
|
||||
"@storybook/addon-notes": "^5.3.21",
|
||||
"@storybook/vue": "^5.3.19",
|
||||
"@vue/cli-plugin-babel": "^4.5.4",
|
||||
"@vue/cli-plugin-eslint": "^4.5.4",
|
||||
"@vue/cli-plugin-router": "^4.5.4",
|
||||
"@vue/cli-plugin-unit-mocha": "^4.5.4",
|
||||
"@vue/cli-service": "^4.5.4",
|
||||
"@vue/cli-plugin-babel": "^4.5.6",
|
||||
"@vue/cli-plugin-eslint": "^4.5.6",
|
||||
"@vue/cli-plugin-router": "^4.5.6",
|
||||
"@vue/cli-plugin-unit-mocha": "^4.5.6",
|
||||
"@vue/cli-service": "^4.5.6",
|
||||
"@vue/test-utils": "1.0.0-beta.29",
|
||||
"amplitude-js": "^7.1.1",
|
||||
"axios": "^0.19.2",
|
||||
"axios-progress-bar": "^1.2.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"bootstrap": "^4.5.2",
|
||||
"bootstrap-vue": "^2.16.0",
|
||||
"bootstrap-vue": "^2.17.0",
|
||||
"chai": "^4.1.2",
|
||||
"core-js": "^3.6.5",
|
||||
"eslint": "^6.8.0",
|
||||
"eslint-config-habitrpg": "^6.2.0",
|
||||
"eslint-plugin-mocha": "^5.3.0",
|
||||
"eslint-plugin-vue": "^6.2.2",
|
||||
"habitica-markdown": "^2.0.2",
|
||||
"habitica-markdown": "^3.0.0",
|
||||
"hellojs": "^1.18.4",
|
||||
"inspectpack": "^4.5.2",
|
||||
"intro.js": "^2.9.3",
|
||||
"jquery": "^3.5.1",
|
||||
"lodash": "^4.17.20",
|
||||
"moment": "^2.27.0",
|
||||
"moment": "^2.28.0",
|
||||
"nconf": "^0.10.0",
|
||||
"sass": "^1.26.10",
|
||||
"sass-loader": "^8.0.2",
|
||||
|
||||
@@ -1,78 +1,90 @@
|
||||
.promo_armoire_backgrounds_202007 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -376px 0px;
|
||||
background-position: 0px -431px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_armoire_backgrounds_202008 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -376px -148px;
|
||||
background-position: -424px -431px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_armoire_backgrounds_202009 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -383px;
|
||||
background-position: 0px -579px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_golden_achievements {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -295px -531px;
|
||||
background-position: 0px -727px;
|
||||
width: 246px;
|
||||
height: 112px;
|
||||
}
|
||||
.promo_mystery_202008 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -531px;
|
||||
background-position: -532px -196px;
|
||||
width: 294px;
|
||||
height: 156px;
|
||||
}
|
||||
.promo_mystery_202009 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -424px -383px;
|
||||
background-position: -424px -579px;
|
||||
width: 282px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_take_this {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -800px -537px;
|
||||
background-position: -532px -353px;
|
||||
width: 96px;
|
||||
height: 69px;
|
||||
}
|
||||
.promo_time_travelers {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px 0px;
|
||||
background-position: 0px -244px;
|
||||
width: 375px;
|
||||
height: 186px;
|
||||
}
|
||||
.scene_CernyPie {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -688px;
|
||||
background-position: -376px -244px;
|
||||
width: 141px;
|
||||
height: 167px;
|
||||
}
|
||||
.scene_achievement {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -800px 0px;
|
||||
background-position: -878px 0px;
|
||||
width: 210px;
|
||||
height: 210px;
|
||||
}
|
||||
.scene_positivity {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px 0px;
|
||||
width: 531px;
|
||||
height: 243px;
|
||||
}
|
||||
.scene_public_space {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -187px;
|
||||
background-position: -532px 0px;
|
||||
width: 345px;
|
||||
height: 195px;
|
||||
}
|
||||
.scene_reading {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -800px -392px;
|
||||
background-position: -878px -392px;
|
||||
width: 171px;
|
||||
height: 144px;
|
||||
}
|
||||
.scene_rewards {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -800px -211px;
|
||||
background-position: -878px -211px;
|
||||
width: 207px;
|
||||
height: 180px;
|
||||
}
|
||||
.scene_squall {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -878px -537px;
|
||||
width: 141px;
|
||||
height: 169px;
|
||||
}
|
||||
|
||||
@@ -1080,7 +1080,7 @@
|
||||
}
|
||||
.body_armoire_cozyScarf {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -230px -819px;
|
||||
background-position: -345px -819px;
|
||||
width: 114px;
|
||||
height: 87px;
|
||||
}
|
||||
@@ -1260,9 +1260,9 @@
|
||||
}
|
||||
.broad_armor_armoire_guardiansGown {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -819px;
|
||||
background-position: -345px -273px;
|
||||
width: 114px;
|
||||
height: 87px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_heroicHerbalistRobe {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
@@ -1278,7 +1278,7 @@
|
||||
}
|
||||
.broad_armor_armoire_invernessCape {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -273px;
|
||||
background-position: 0px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1308,7 +1308,7 @@
|
||||
}
|
||||
.broad_armor_armoire_layerCakeArmor {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: 0px -364px;
|
||||
background-position: -115px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1320,7 +1320,7 @@
|
||||
}
|
||||
.broad_armor_armoire_matchMakersApron {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -115px -364px;
|
||||
background-position: -230px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1344,7 +1344,7 @@
|
||||
}
|
||||
.broad_armor_armoire_nephriteArmor {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -230px -364px;
|
||||
background-position: -345px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1356,13 +1356,13 @@
|
||||
}
|
||||
.broad_armor_armoire_pirateOutfit {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -364px;
|
||||
background-position: -460px 0px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_piraticalPrincessGown {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px 0px;
|
||||
background-position: -460px -91px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1392,13 +1392,13 @@
|
||||
}
|
||||
.broad_armor_armoire_robeOfDiamonds {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -91px;
|
||||
background-position: -460px -182px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_robeOfSpades {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -182px;
|
||||
background-position: -460px -273px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1410,13 +1410,13 @@
|
||||
}
|
||||
.broad_armor_armoire_scribesRobe {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -273px;
|
||||
background-position: -460px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_shadowMastersRobe {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -364px;
|
||||
background-position: 0px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1428,19 +1428,19 @@
|
||||
}
|
||||
.broad_armor_armoire_softBlueSuit {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: 0px -455px;
|
||||
background-position: -115px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_softGreenSuit {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -115px -455px;
|
||||
background-position: -230px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.broad_armor_armoire_softRedSuit {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -230px -455px;
|
||||
background-position: -345px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1452,7 +1452,7 @@
|
||||
}
|
||||
.broad_armor_armoire_swanDancerTutu {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -455px;
|
||||
background-position: -460px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1464,7 +1464,7 @@
|
||||
}
|
||||
.broad_armor_armoire_vernalVestment {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -455px;
|
||||
background-position: -575px 0px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1482,7 +1482,7 @@
|
||||
}
|
||||
.broad_armor_armoire_wovenRobes {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px 0px;
|
||||
background-position: -575px -91px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1512,13 +1512,13 @@
|
||||
}
|
||||
.headAccessory_armoire_gogglesOfBookbinding {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -230px -637px;
|
||||
background-position: -345px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_alchemistsHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -91px;
|
||||
background-position: -575px -182px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1530,7 +1530,7 @@
|
||||
}
|
||||
.head_armoire_astronomersHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -182px;
|
||||
background-position: -575px -273px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1542,7 +1542,7 @@
|
||||
}
|
||||
.head_armoire_baseballCap {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -273px;
|
||||
background-position: -575px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1584,7 +1584,7 @@
|
||||
}
|
||||
.head_armoire_boaterHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -364px;
|
||||
background-position: -575px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1602,13 +1602,13 @@
|
||||
}
|
||||
.head_armoire_coachDriversHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -455px;
|
||||
background-position: 0px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_crownOfDiamonds {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: 0px -546px;
|
||||
background-position: -115px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1626,7 +1626,7 @@
|
||||
}
|
||||
.head_armoire_deerstalkerCap {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -115px -546px;
|
||||
background-position: -230px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1638,7 +1638,7 @@
|
||||
}
|
||||
.head_armoire_earflapHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -230px -546px;
|
||||
background-position: -345px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1650,19 +1650,19 @@
|
||||
}
|
||||
.head_armoire_fiddlersCap {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -546px;
|
||||
background-position: -460px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_flutteryWig {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -546px;
|
||||
background-position: -575px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_frostedHelm {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -546px;
|
||||
background-position: -690px 0px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1674,7 +1674,7 @@
|
||||
}
|
||||
.head_armoire_glassblowersHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px 0px;
|
||||
background-position: -690px -91px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1746,7 +1746,7 @@
|
||||
}
|
||||
.head_armoire_matchMakersBeret {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -91px;
|
||||
background-position: -690px -182px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1770,7 +1770,7 @@
|
||||
}
|
||||
.head_armoire_nephriteHelm {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -182px;
|
||||
background-position: -690px -273px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1794,7 +1794,7 @@
|
||||
}
|
||||
.head_armoire_piraticalPrincessHeaddress {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -273px;
|
||||
background-position: -690px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1836,7 +1836,7 @@
|
||||
}
|
||||
.head_armoire_shadowMastersHood {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -364px;
|
||||
background-position: -690px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1854,19 +1854,19 @@
|
||||
}
|
||||
.head_armoire_toqueBlanche {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -455px;
|
||||
background-position: -690px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_tricornHat {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -546px;
|
||||
background-position: 0px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.head_armoire_veilOfSpades {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: 0px -637px;
|
||||
background-position: -115px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1878,7 +1878,7 @@
|
||||
}
|
||||
.head_armoire_vernalHennin {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -115px -637px;
|
||||
background-position: -230px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1908,7 +1908,7 @@
|
||||
}
|
||||
.shield_armoire_alchemistsScale {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -637px;
|
||||
background-position: -460px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1920,13 +1920,13 @@
|
||||
}
|
||||
.shield_armoire_baseballGlove {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -637px;
|
||||
background-position: -575px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_birthdayBanner {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -637px;
|
||||
background-position: -690px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1938,7 +1938,7 @@
|
||||
}
|
||||
.shield_armoire_fancyBlownGlassVase {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -637px;
|
||||
background-position: -805px 0px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1956,7 +1956,7 @@
|
||||
}
|
||||
.shield_armoire_fiddle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px 0px;
|
||||
background-position: -805px -91px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1968,7 +1968,7 @@
|
||||
}
|
||||
.shield_armoire_flutteryFan {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -91px;
|
||||
background-position: -805px -182px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -1992,7 +1992,7 @@
|
||||
}
|
||||
.shield_armoire_hobbyHorse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -182px;
|
||||
background-position: -805px -273px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2004,13 +2004,13 @@
|
||||
}
|
||||
.shield_armoire_lifeBuoy {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -273px;
|
||||
background-position: -805px -364px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_masteredShadow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -364px;
|
||||
background-position: -805px -455px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2022,13 +2022,13 @@
|
||||
}
|
||||
.shield_armoire_mightyPizza {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -455px;
|
||||
background-position: -805px -546px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_mightyQuill {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -546px;
|
||||
background-position: -805px -637px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2058,25 +2058,25 @@
|
||||
}
|
||||
.shield_armoire_perfectMatch {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -637px;
|
||||
background-position: 0px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_piratesCompanion {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: 0px -728px;
|
||||
background-position: -115px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_piraticalSkullShield {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -115px -728px;
|
||||
background-position: -230px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_polishedPocketwatch {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -230px -728px;
|
||||
background-position: -345px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2106,25 +2106,25 @@
|
||||
}
|
||||
.shield_armoire_shieldOfDiamonds {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -345px -728px;
|
||||
background-position: -460px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_softBluePillow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -460px -728px;
|
||||
background-position: -575px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_softGreenPillow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -575px -728px;
|
||||
background-position: -690px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_softRedPillow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -690px -728px;
|
||||
background-position: -805px -728px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2136,13 +2136,13 @@
|
||||
}
|
||||
.shield_armoire_trustyUmbrella {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -805px -728px;
|
||||
background-position: 0px -819px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.shield_armoire_unfinishedTome {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: 0px -819px;
|
||||
background-position: -115px -819px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
@@ -2154,7 +2154,7 @@
|
||||
}
|
||||
.shield_armoire_weaversShuttle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-6.png');
|
||||
background-position: -115px -819px;
|
||||
background-position: -230px -819px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
|
||||
@@ -2170,7 +2170,7 @@
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_set_mystery202009 {
|
||||
.shop_set_mystery_202009 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-9.png');
|
||||
background-position: -690px -1593px;
|
||||
width: 68px;
|
||||
|
||||
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 332 KiB After Width: | Height: | Size: 339 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 123 KiB |
@@ -202,6 +202,8 @@ $bg-disabled-control: #34303a;
|
||||
}
|
||||
|
||||
.custom-control-input {
|
||||
opacity: 0;
|
||||
|
||||
&:checked~.custom-control-label::before {
|
||||
background-color: $purple-400;
|
||||
border-color: $purple-400;
|
||||
|
||||
@@ -37,3 +37,4 @@
|
||||
@import './tiers';
|
||||
@import './payments';
|
||||
@import './spacing';
|
||||
@import './modal';
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
@mixin centeredModal() {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
|
||||
header, footer {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,5 @@
|
||||
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
|
||||
@mixin centeredModal() {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
|
||||
header, footer {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.modal {
|
||||
z-index: 1350;
|
||||
padding-left: 0px !important;
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#generic-achievement {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
<ul>
|
||||
<li>
|
||||
<a
|
||||
target="_blanck"
|
||||
target="_blank"
|
||||
href="/static/community-guidelines"
|
||||
>{{ $t('communityGuidelines') }}</a>
|
||||
</li>
|
||||
@@ -308,13 +308,13 @@
|
||||
<div class="col-12 col-md-5 text-right">
|
||||
<span class="ml-4">
|
||||
<a
|
||||
target="_blanck"
|
||||
target="_blank"
|
||||
href="/static/privacy"
|
||||
>{{ $t('privacy') }}</a>
|
||||
</span>
|
||||
<span class="ml-4">
|
||||
<a
|
||||
target="_blanck"
|
||||
target="_blank"
|
||||
href="/static/terms"
|
||||
>{{ $t('terms') }}</a>
|
||||
</span>
|
||||
|
||||
@@ -51,7 +51,8 @@ export default {
|
||||
groupPlans: 'groupPlans.data',
|
||||
}),
|
||||
currentGroup () {
|
||||
const groupFound = this.groupPlans.find(group => group._id === this.groupId);
|
||||
const groupFound = this.groupPlans
|
||||
&& this.groupPlans.find(group => group._id === this.groupId);
|
||||
|
||||
return groupFound;
|
||||
},
|
||||
|
||||
@@ -94,6 +94,46 @@ label.custom-control-label(v-once) {{ $t('allowGuildInvitationsFromNonMembers')
|
||||
// "allowGuildInvitationsFromNonMembers": "Allow Guild invitations from non-members",
|
||||
-->
|
||||
</div>
|
||||
<div
|
||||
v-if="isAdmin && workingGroup.id"
|
||||
class="form-group"
|
||||
>
|
||||
<label>
|
||||
<strong v-once>{{ $t('languageSettings') }}</strong>
|
||||
</label>
|
||||
<br>
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input
|
||||
id="bannedWordsAllowed"
|
||||
v-model="workingGroup.bannedWordsAllowed"
|
||||
class="custom-control-input"
|
||||
type="checkbox"
|
||||
>
|
||||
<label
|
||||
v-once
|
||||
class="custom-control-label"
|
||||
for="bannedWordsAllowed"
|
||||
>{{ $t('bannedWordsAllowed') }}</label>
|
||||
<div
|
||||
v-once
|
||||
id="groupBannedWordsAllowedDescription"
|
||||
class="icon"
|
||||
:title="$t('bannedWordsAllowedDetail')"
|
||||
>
|
||||
<div
|
||||
v-once
|
||||
class="svg-icon"
|
||||
v-html="icons.information"
|
||||
></div>
|
||||
</div>
|
||||
<b-tooltip
|
||||
v-once
|
||||
:title="$t('bannedWordsAllowedDetail')"
|
||||
target="groupBannedWordsAllowedDescription"
|
||||
/>
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
<div
|
||||
v-if="!isParty"
|
||||
class="form-group"
|
||||
@@ -367,6 +407,7 @@ export default {
|
||||
guildLeaderCantBeMessaged: true,
|
||||
privateGuild: true,
|
||||
allowGuildInvitationsFromNonMembers: true,
|
||||
bannedWordsAllowed: null,
|
||||
},
|
||||
categoryOptions: [
|
||||
{
|
||||
@@ -470,6 +511,9 @@ export default {
|
||||
isParty () {
|
||||
return this.workingGroup.type === 'party';
|
||||
},
|
||||
isAdmin () {
|
||||
return Boolean(this.user.contributor.admin);
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
editingGroup () {
|
||||
@@ -502,6 +546,8 @@ export default {
|
||||
|
||||
this.workingGroup.leader = editingGroup.leader;
|
||||
|
||||
this.workingGroup.bannedWordsAllowed = editingGroup.bannedWordsAllowed;
|
||||
|
||||
if (editingGroup._id) this.getMembers();
|
||||
},
|
||||
},
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<style lang="scss">
|
||||
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#equipgear-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
class="float-right align-with-tab"
|
||||
:label="$t(costumeMode ? 'useCostume' : 'autoEquipBattleGear')"
|
||||
:checked="user.preferences[drawerPreference]"
|
||||
:hover-text="$t(drawerPreference+'PopoverText')"
|
||||
:hover-text="$t(`${drawerPreference}PopoverText`)"
|
||||
@change="changeDrawerPreference"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<b-modal
|
||||
id="card"
|
||||
:title="$t(cardType + 'Card')"
|
||||
:title="$t(`${cardType}Card`)"
|
||||
size="md"
|
||||
:hide-footer="true"
|
||||
>
|
||||
@@ -10,7 +10,7 @@
|
||||
class="pull-right"
|
||||
:class="`inventory_special_${cardType}`"
|
||||
></div>
|
||||
<h4>{{ $t(cardType + 'Card') }}</h4>
|
||||
<h4>{{ $t(`${cardType}Card`) }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div style="padding:10px">
|
||||
@@ -20,7 +20,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<small class="pull-left">{{ $t(cardType + 'CardExplanation') }}</small>
|
||||
<small class="pull-left">{{ $t(`${cardType}CardExplanation`) }}</small>
|
||||
<button
|
||||
class="btn btn-secondary"
|
||||
@click="readCard()"
|
||||
|
||||
@@ -46,7 +46,8 @@
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
|
||||
#hatchedPet-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#hatching-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
.standard-page .clearfix .float-right {
|
||||
margin-right: 24px;
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#mount-raised-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#welcome-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#select-user-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#buy-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -326,18 +326,6 @@ export default {
|
||||
return mappedItems;
|
||||
}
|
||||
},
|
||||
hasOwnedItemsForType (type) {
|
||||
return this.ownedItems(type).length > 0;
|
||||
},
|
||||
inventoryDrawerErrorMessage (type) {
|
||||
if (!this.hasOwnedItemsForType(type)) {
|
||||
// @TODO: Change any places using similar locales
|
||||
// from `pets.json` and use these new locales from 'inventory.json'
|
||||
return this.$t('noItemsAvailableForType', { type: this.$t(`${type}ItemType`) });
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
itemSelected (item) {
|
||||
this.$root.$emit('buyModal::showItem', item);
|
||||
},
|
||||
|
||||
@@ -83,9 +83,8 @@
|
||||
</b-modal>
|
||||
</template>
|
||||
<style lang="scss">
|
||||
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#sell-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
<style lang="scss">
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
@import '~@/assets/scss/modal.scss';
|
||||
@import '~@/assets/scss/mixins.scss';
|
||||
|
||||
#buy-quest-modal {
|
||||
@include centeredModal();
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
role="tabpanel"
|
||||
>
|
||||
<div
|
||||
v-markdown="$t('webFaqAnswer' + index, replacements)"
|
||||
v-markdown="$t(`webFaqAnswer${index}`, replacements)"
|
||||
class="card-body"
|
||||
></div>
|
||||
</b-collapse>
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
v-for="step in stepsNum"
|
||||
:key="step"
|
||||
>
|
||||
<h3>{{ $t('step'+step) }}</h3>
|
||||
<p v-markdown="$t('webStep'+step+'Text', stepVars[step])"></p>
|
||||
<h3>{{ $t(`step${step}`) }}</h3>
|
||||
<p v-markdown="$t(`webStep${step}Text`, stepVars[step])"></p>
|
||||
<hr>
|
||||
</div>
|
||||
<p
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
v-for="(images, category) in imgs"
|
||||
:key="category"
|
||||
>
|
||||
<h2>{{ $t('pk' + category) }}</h2>
|
||||
<h2>{{ $t(`pk${category}`) }}</h2>
|
||||
<div v-if="Array.isArray(images)">
|
||||
<div
|
||||
v-for="img in images"
|
||||
@@ -29,7 +29,7 @@
|
||||
v-for="(images, secondaryCategory) in images"
|
||||
:key="secondaryCategory"
|
||||
>
|
||||
<h3>{{ $t('pk' + secondaryCategory) }}</h3>
|
||||
<h3>{{ $t(`pk${secondaryCategory}`) }}</h3>
|
||||
<div
|
||||
v-for="img in images"
|
||||
:key="img"
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
>
|
||||
{{ badgeCount }}
|
||||
</div>
|
||||
<div class="filters d-flex justify-content-end">
|
||||
<div
|
||||
v-if="typeFilters.length > 1"
|
||||
class="filters d-flex justify-content-end"
|
||||
>
|
||||
<div
|
||||
v-for="filter in typeFilters"
|
||||
:key="filter"
|
||||
@@ -353,6 +356,7 @@ import {
|
||||
getTypeLabel,
|
||||
getFilterLabels,
|
||||
getActiveFilter,
|
||||
sortAndFilterTasks,
|
||||
} from '@/libs/store/helpers/filterTasks';
|
||||
|
||||
import habitIcon from '@/assets/svg/habit.svg';
|
||||
@@ -433,7 +437,7 @@ export default {
|
||||
type: this.type,
|
||||
filterType: this.activeFilter.label,
|
||||
})
|
||||
: this.filterByLabel(this.taskListOverride, this.activeFilter.label);
|
||||
: this.filterByLabel(this.taskListOverride, this.type, this.activeFilter.label);
|
||||
|
||||
const taggedList = this.filterByTagList(filteredTaskList, this.selectedTags);
|
||||
const searchedList = this.filterBySearchText(taggedList, this.searchText);
|
||||
@@ -500,7 +504,7 @@ export default {
|
||||
// Set Task Column Label
|
||||
this.typeLabel = getTypeLabel(this.type);
|
||||
// Get Category Filter Labels
|
||||
this.typeFilters = getFilterLabels(this.type);
|
||||
this.typeFilters = getFilterLabels(this.type, this.challenge);
|
||||
// Set default filter for task column
|
||||
this.activateFilter(this.type);
|
||||
},
|
||||
@@ -604,7 +608,7 @@ export default {
|
||||
|
||||
const tasks = text.split('\n').reverse().filter(taskText => (!!taskText)).map(taskText => {
|
||||
const task = taskDefaults({ type: this.type, text: taskText }, this.user);
|
||||
task.tags = this.selectedTags;
|
||||
task.tags = this.selectedTags.slice();
|
||||
return task;
|
||||
});
|
||||
|
||||
@@ -633,11 +637,14 @@ export default {
|
||||
// as default filter for daily
|
||||
// and set the filter as 'due' only when the component first
|
||||
// loads and not on subsequent reloads.
|
||||
if (type === 'daily' && filter === '' && this.user.preferences.dailyDueDefaultView) {
|
||||
if (
|
||||
type === 'daily' && filter === '' && !this.challenge
|
||||
&& this.user.preferences.dailyDueDefaultView
|
||||
) {
|
||||
filter = 'due'; // eslint-disable-line no-param-reassign
|
||||
}
|
||||
|
||||
this.activeFilter = getActiveFilter(type, filter);
|
||||
this.activeFilter = getActiveFilter(type, filter, this.challenge);
|
||||
},
|
||||
setColumnBackgroundVisibility () {
|
||||
this.$nextTick(() => {
|
||||
@@ -665,14 +672,10 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
filterByLabel (taskList, filter) {
|
||||
filterByLabel (taskList, type, filter) {
|
||||
if (!taskList) return [];
|
||||
return taskList.filter(task => {
|
||||
if (filter === 'complete2') return task.completed;
|
||||
if (filter === 'due') return task.isDue;
|
||||
if (filter === 'notDue') return !task.isDue;
|
||||
return !task.completed;
|
||||
});
|
||||
const selectedFilter = getActiveFilter(type, filter, this.challenge);
|
||||
return sortAndFilterTasks(taskList, selectedFilter);
|
||||
},
|
||||
filterByTagList (taskList, tagList = []) {
|
||||
let filteredTaskList = taskList;
|
||||
|
||||
@@ -549,7 +549,7 @@ export default {
|
||||
createTask (type) {
|
||||
this.openCreateBtn = false;
|
||||
this.creatingTask = taskDefaults({ type, text: '' }, this.user);
|
||||
this.creatingTask.tags = this.selectedTags;
|
||||
this.creatingTask.tags = this.selectedTags.slice();
|
||||
|
||||
// Necessary otherwise the first time the modal is not rendered
|
||||
Vue.nextTick(() => {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<datepicker
|
||||
v-model="value"
|
||||
:calendarButton="true"
|
||||
:calendarButtonIconContent="icons.calendar"
|
||||
:bootstrapStyling="true"
|
||||
:calendar-button="true"
|
||||
:calendar-button-icon-content="icons.calendar"
|
||||
:bootstrap-styling="true"
|
||||
:clear-button="false"
|
||||
:today-button="false"
|
||||
:disabled-picker="disabled"
|
||||
|
||||
@@ -314,7 +314,7 @@
|
||||
class="row category-row"
|
||||
>
|
||||
<h3 class="col-12 text-center mb-3">
|
||||
{{ $t(key+'Achievs') }}
|
||||
{{ $t(`${key}Achievs`) }}
|
||||
</h3>
|
||||
<div class="col-12">
|
||||
<div class="row achievements-row justify-content-center">
|
||||
@@ -366,8 +366,8 @@
|
||||
@click="toggleAchievementsCategory(key)"
|
||||
>
|
||||
{{ achievementsCategories[key].open ?
|
||||
$t('hideAchievements', {category: $t(key+'Achievs')}) :
|
||||
$t('showAllAchievements', {category: $t(key+'Achievs')})
|
||||
$t('hideAchievements', {category: $t(`${key}Achievs`)}) :
|
||||
$t('showAllAchievements', {category: $t(`${key}Achievs`)})
|
||||
}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { shouldDo } from '@/../../common/script/cron';
|
||||
import sortBy from 'lodash/sortBy';
|
||||
|
||||
// Task filter data
|
||||
// @TODO find a way to include user preferences w.r.t sort and defaults
|
||||
@@ -15,8 +15,8 @@ const taskFilters = {
|
||||
label: 'dailies',
|
||||
filters: [
|
||||
{ label: 'all', filterFn: () => true, default: true },
|
||||
{ label: 'due', filterFn: userPrefs => t => !t.completed && shouldDo(new Date(), t, userPrefs) },
|
||||
{ label: 'notDue', filterFn: userPrefs => t => t.completed || !shouldDo(new Date(), t, userPrefs) },
|
||||
{ label: 'due', filterFn: t => !t.completed && t.isDue },
|
||||
{ label: 'notDue', filterFn: t => t.completed || !t.isDue },
|
||||
],
|
||||
},
|
||||
todo: {
|
||||
@@ -37,6 +37,34 @@ const taskFilters = {
|
||||
},
|
||||
};
|
||||
|
||||
const challengeFilters = {
|
||||
habit: {
|
||||
label: 'habits',
|
||||
filters: [
|
||||
{ label: 'all', filterFn: () => true, default: true },
|
||||
],
|
||||
},
|
||||
daily: {
|
||||
label: 'dailies',
|
||||
filters: [
|
||||
{ label: 'all', filterFn: () => true, default: true },
|
||||
],
|
||||
},
|
||||
todo: {
|
||||
label: 'todos',
|
||||
filters: [
|
||||
{ label: 'all', filterFn: () => true, default: true }, // active
|
||||
{ label: 'scheduled', filterFn: t => t.date, sort: t => t.date },
|
||||
],
|
||||
},
|
||||
reward: {
|
||||
label: 'rewards',
|
||||
filters: [
|
||||
{ label: 'all', filterFn: () => true, default: true },
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
function typeLabel (filterList) {
|
||||
return type => filterList[type].label;
|
||||
}
|
||||
@@ -53,7 +81,12 @@ function filterLabel (filterList) {
|
||||
};
|
||||
}
|
||||
|
||||
export const getFilterLabels = filterLabel(taskFilters);
|
||||
export function getFilterLabels (type, isChallenge) {
|
||||
if (isChallenge) {
|
||||
return filterLabel(challengeFilters)(type);
|
||||
}
|
||||
return filterLabel(taskFilters)(type);
|
||||
}
|
||||
|
||||
function activeFilter (filterList) {
|
||||
return (type, filterType = '') => {
|
||||
@@ -65,4 +98,17 @@ function activeFilter (filterList) {
|
||||
};
|
||||
}
|
||||
|
||||
export const getActiveFilter = activeFilter(taskFilters);
|
||||
export function getActiveFilter (type, filterType, isChallenge) {
|
||||
if (isChallenge) {
|
||||
return activeFilter(challengeFilters)(type, filterType);
|
||||
}
|
||||
return activeFilter(taskFilters)(type, filterType);
|
||||
}
|
||||
|
||||
export function sortAndFilterTasks (tasks, selectedFilter) {
|
||||
let sortedTasks = tasks.filter(selectedFilter.filterFn);
|
||||
if (selectedFilter.sort) {
|
||||
sortedTasks = sortBy(sortedTasks, selectedFilter.sort);
|
||||
}
|
||||
return sortedTasks;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import axios from 'axios';
|
||||
import Vue from 'vue';
|
||||
import compact from 'lodash/compact';
|
||||
import omit from 'lodash/omit';
|
||||
import { loadAsyncResource } from '@/libs/asyncResource';
|
||||
@@ -103,8 +104,11 @@ export async function create (store, createdTask) {
|
||||
const data = Array.isArray(response.data.data) ? response.data.data : [response.data.data];
|
||||
|
||||
data.forEach(taskRes => {
|
||||
const taskData = store.state.tasks.data[`${taskRes.type}s`].find(t => t._id === taskRes._id);
|
||||
Object.assign(taskData, taskRes);
|
||||
const tasksArr = store.state.tasks.data[`${taskRes.type}s`];
|
||||
const taskDataIndex = tasksArr.findIndex(t => t._id === taskRes._id);
|
||||
if (taskDataIndex !== -1) {
|
||||
Vue.set(tasksArr, taskDataIndex, { ...tasksArr[taskDataIndex], ...taskRes });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import sortBy from 'lodash/sortBy';
|
||||
import { shouldDo } from '@/../../common/script/cron';
|
||||
|
||||
// Library / Utility function
|
||||
import { orderSingleTypeTasks } from '@/libs/store/helpers/orderTasks';
|
||||
import { getActiveFilter } from '@/libs/store/helpers/filterTasks';
|
||||
import { getActiveFilter, sortAndFilterTasks } from '@/libs/store/helpers/filterTasks';
|
||||
|
||||
|
||||
// Return all the tags belonging to an user task
|
||||
@@ -232,30 +231,14 @@ export function getFilteredTaskList ({ state, getters }) {
|
||||
// check if task list has been passed as override props
|
||||
// assumption: type will always be passed as param
|
||||
let requestedTasks = getters['tasks:getUnfilteredTaskList'](type);
|
||||
|
||||
const userPreferences = state.user.data.preferences;
|
||||
const selectedFilter = getActiveFilter(type, filterType);
|
||||
const taskOrderForType = state.user.data.tasksOrder[type];
|
||||
|
||||
// order tasks based on user set task order
|
||||
// Still needs unit test for this..
|
||||
if (requestedTasks.length > 0 && ['scheduled', 'due'].indexOf(filterType.label) === -1) {
|
||||
if (requestedTasks.length > 0 && !selectedFilter.sort) {
|
||||
requestedTasks = orderSingleTypeTasks(requestedTasks, taskOrderForType);
|
||||
}
|
||||
|
||||
let selectedFilter = getActiveFilter(type, filterType);
|
||||
// Pass user preferences to the filter function which uses currying
|
||||
if (type === 'daily' && (filterType === 'due' || filterType === 'notDue')) {
|
||||
selectedFilter = {
|
||||
...selectedFilter,
|
||||
filterFn: selectedFilter.filterFn(userPreferences),
|
||||
};
|
||||
}
|
||||
|
||||
requestedTasks = requestedTasks.filter(selectedFilter.filterFn);
|
||||
if (selectedFilter.sort) {
|
||||
requestedTasks = sortBy(requestedTasks, selectedFilter.sort);
|
||||
}
|
||||
|
||||
return requestedTasks;
|
||||
return sortAndFilterTasks(requestedTasks, selectedFilter);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
||||
import User from '@/components/tasks/user.vue';
|
||||
import Store from '@/libs/store';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(Store);
|
||||
|
||||
describe('Tasks User', () => {
|
||||
describe('Computed Properties', () => {
|
||||
it('should render a challenge tag under challenge header in tag filter popup when the challenge is active', () => {
|
||||
const activeChallengeTag = {
|
||||
id: '1',
|
||||
name: 'Challenge1',
|
||||
challenge: true,
|
||||
};
|
||||
const state = {
|
||||
user: {
|
||||
data: {
|
||||
tags: [activeChallengeTag],
|
||||
},
|
||||
},
|
||||
};
|
||||
const getters = {};
|
||||
const store = new Store({ state, getters });
|
||||
const wrapper = shallowMount(User, {
|
||||
store,
|
||||
localVue,
|
||||
});
|
||||
|
||||
const computedTagsByType = wrapper.vm.tagsByType;
|
||||
|
||||
expect(computedTagsByType.challenges.tags.length).to.equal(1);
|
||||
expect(computedTagsByType.challenges.tags[0].id).to.equal(activeChallengeTag.id);
|
||||
expect(computedTagsByType.challenges.tags[0].name).to.equal(activeChallengeTag.name);
|
||||
});
|
||||
|
||||
it('should render a challenge tag under normal tag header in tag filter popup when the challenge is no longer active', () => {
|
||||
const inactiveChallengeTag = {
|
||||
id: '1',
|
||||
name: 'Challenge1',
|
||||
challenge: false,
|
||||
};
|
||||
const state = {
|
||||
user: {
|
||||
data: {
|
||||
tags: [inactiveChallengeTag],
|
||||
},
|
||||
},
|
||||
};
|
||||
const getters = {};
|
||||
const store = new Store({ state, getters });
|
||||
const wrapper = shallowMount(User, {
|
||||
store,
|
||||
localVue,
|
||||
});
|
||||
|
||||
const computedTagsByType = wrapper.vm.tagsByType;
|
||||
|
||||
expect(computedTagsByType.challenges.tags.length).to.equal(0);
|
||||
expect(computedTagsByType.user.tags.length).to.equal(1);
|
||||
expect(computedTagsByType.user.tags[0].id).to.equal(inactiveChallengeTag.id);
|
||||
expect(computedTagsByType.user.tags[0].name).to.equal(inactiveChallengeTag.name);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "Language",
|
||||
"americanEnglishGovern": "In the event of a discrepancy in the translations, the American English version governs.",
|
||||
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"https://trello.com/c/SvTsLdRF/12-translations\" target=\"_blank\">this</a> Trello card.",
|
||||
"showHeaderPop": "Show your avatar, Health/Experience bars, and party.",
|
||||
"stickyHeader": "Sticky header",
|
||||
"stickyHeaderPop": "Affix the header to the top of the screen. Unchecked means it scrolls out of view.",
|
||||
"newTaskEdit": "Open new tasks in edit mode",
|
||||
"newTaskEditPop": "With this option set, new tasks will immediately open for you to add details like notes and tags.",
|
||||
"dailyDueDefaultView": "Set Dailies default to 'due' tab",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "Show chat messages in reverse order",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
|
||||
"suppressStreakModal": "Don't show popup when attaining a Streak achievement",
|
||||
"showTour": "Show Tour",
|
||||
"restartTour": "Restart the introductory tour from when you first joined Habitica.",
|
||||
"showBailey": "Show Bailey",
|
||||
"showBaileyPop": "Bring Bailey the Town Crier out of hiding so you can review past news.",
|
||||
"fixVal": "Fix Character Values",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Invalid value: Level must be 1 or greater.",
|
||||
"enableClass": "Enable Class System",
|
||||
"enableClassPop": "You opted out of the class system initially. Would you like now to opt-in?",
|
||||
"classTourPop": "Show the tour for using the class system.",
|
||||
"resetAccount": "Reset Account",
|
||||
"resetAccPop": "Start over, removing all levels, gold, gear, history, and tasks.",
|
||||
"deleteAccount": "Delete Account",
|
||||
"deleteAccPop": "Cancel and remove your Habitica account.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "(JSON)",
|
||||
"customDayStart": "Custom Day Start",
|
||||
"sureChangeCustomDayStartTime": "Are you sure you want to change your Custom Day Start time? Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before then!",
|
||||
"changeCustomDayStart": "Change Custom Day Start?",
|
||||
"sureChangeCustomDayStart": "Are you sure you want to change your custom day start?",
|
||||
"customDayStartHasChanged": "Your custom day start has changed.",
|
||||
"nextCron": "Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before this time!",
|
||||
"customDayStartInfo1": "Habitica defaults to check and reset your Dailies at midnight in your own time zone each day. You can customize that time here.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "Fix Values",
|
||||
"fixValuesText1": "If you've encountered a bug or made a mistake that unfairly changed your character (damage you shouldn't have taken, Gold you didn't really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you'll sabotage your own habit-building!",
|
||||
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
|
||||
"disabledWinterEvent": "Disabled during Winter Wonderland Event Pt.4 (since the rewards are gold-purchaseable).",
|
||||
"fix21Streaks": "21-Day Streaks",
|
||||
"discardChanges": "Discard Changes",
|
||||
"deleteDo": "Do it, delete my account!",
|
||||
"enterNumber": "Please enter a number between 0 and 24",
|
||||
"fillAll": "Please fill out all fields",
|
||||
"invalidPasswordResetCode": "The supplied password reset code is invalid or has expired.",
|
||||
"passwordChangeSuccess": "Your password was successfully changed to the one you just chose. You can now use it to access your account.",
|
||||
"passwordSuccess": "Password successfully changed",
|
||||
"usernameSuccess": "Username successfully changed",
|
||||
"displayNameSuccess": "Display name successfully changed",
|
||||
"emailSuccess": "Email successfully changed",
|
||||
"detachSocial": "De-register <%= network %>",
|
||||
"detachedSocial": "Successfully removed <%= network %> authentication from your account",
|
||||
"addedLocalAuth": "Successfully added local authentication",
|
||||
"data": "Data",
|
||||
"exportData": "Export Data",
|
||||
"usernameOrEmail": "Username or Email",
|
||||
"email": "Email",
|
||||
"registerWithSocial": "Register with <%= network %>",
|
||||
"registeredWithSocial": "Registered with <%= network %>",
|
||||
"loginNameDescription": "This is what you use to log in to Habitica. To change it, use the form below. If instead you want to change the Display Name that appears on your avatar and in chat messages, go to the User Icon > Profile and click the Edit button.",
|
||||
"emailNotifications": "Email Notifications",
|
||||
"wonChallenge": "You won a Challenge!",
|
||||
"newPM": "Received Private Message",
|
||||
@@ -118,7 +102,6 @@
|
||||
"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",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "Invited to Quest",
|
||||
"kickedGroup": "Kicked from group",
|
||||
"remindersToLogin": "Reminders to check in to Habitica",
|
||||
"subscribeUsing": "Subscribe using",
|
||||
"unsubscribedSuccessfully": "Unsubscribed successfully!",
|
||||
"unsubscribedTextUsers": "You have successfully unsubscribed from all Habitica emails. You can enable only the emails you want to receive from <a href=\"/user/settings/notifications\">Settings > > Notifications</a> (requires login).",
|
||||
"unsubscribedTextOthers": "You won't receive any other email from Habitica.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications",
|
||||
"correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.",
|
||||
"subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months",
|
||||
"recurringText": "recurring",
|
||||
"benefits": "Benefits",
|
||||
"coupon": "Coupon",
|
||||
"couponPlaceholder": "Enter Coupon Code",
|
||||
"couponText": "We sometimes have events and give out coupon codes for special gear. (eg, those who stop by our Wondercon booth)",
|
||||
"apply": "Apply",
|
||||
"resubscribe": "Resubscribe",
|
||||
"promoCode": "Promo Code",
|
||||
"promoCodeApplied": "Promo Code Applied! Check your inventory",
|
||||
"promoPlaceholder": "Enter Promotion Code",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "Enabled",
|
||||
"webhookURL": "Webhook URL",
|
||||
"invalidUrl": "invalid url",
|
||||
"invalidEnabled": "the \"enabled\" parameter should be a boolean.",
|
||||
"invalidWebhookId": "the \"id\" parameter should be a valid UUID.",
|
||||
"missingWebhookId": "The webhook's id is required.",
|
||||
"invalidWebhookType": "\"<%= type %>\" is not a valid value for the parameter \"type\".",
|
||||
"webhookBooleanOption": "\"<%= option %>\" must be a Boolean value.",
|
||||
"webhookIdAlreadyTaken": "A webhook with the id <%= id %> already exists.",
|
||||
"noWebhookWithId": "There is no webhook with the id <%= id %>.",
|
||||
"regIdRequired": "RegId is required",
|
||||
"invalidPushClient": "Invalid client. Only Official Habitica clients can receive push notifications.",
|
||||
"pushDeviceAdded": "Push device added successfully",
|
||||
"pushDeviceAlreadyAdded": "The user already has the push device",
|
||||
"pushDeviceNotFound": "The user has no push device with this id.",
|
||||
"pushDeviceRemoved": "Push device removed successfully.",
|
||||
"buyGemsGoldCap": "Cap raised to <%= amount %>",
|
||||
"mysticHourglass": "<%= amount %> Mystic Hourglass",
|
||||
"mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.",
|
||||
"purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.",
|
||||
"consecutiveSubscription": "Consecutive Subscription",
|
||||
"consecutiveMonths": "Consecutive Months:",
|
||||
@@ -205,4 +177,4 @@
|
||||
"usernameNotVerified": "Please confirm your username.",
|
||||
"changeUsernameDisclaimer": "We will be transitioning login names to unique, public usernames soon. This username will be used for invitations, @mentions in chat, and messaging.",
|
||||
"verifyUsernameVeteranPet": "One of these Veteran Pets will be waiting for you after you've finished confirming!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "Subscription",
|
||||
"subscriptions": "Subscriptions",
|
||||
"subDescription": "Buy Gems with gold, get monthly mystery items, retain progress history, double daily drop-caps, support the devs. Click for more info.",
|
||||
"sendGems": "Send Gems",
|
||||
"buyGemsGold": "Buy Gems with Gold",
|
||||
"buyGemsGoldText": "Alexander the Merchant will sell you Gems at a cost of 20 Gold per Gem. His monthly shipments are initially capped at 25 Gems per month, but for every 3 consecutive months that you are subscribed, this cap increases by 5 Gems, up to a maximum of 50 Gems per month!",
|
||||
"mustSubscribeToPurchaseGems": "Must subscribe to purchase gems with GP",
|
||||
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"retainHistory": "Retain additional history entries",
|
||||
"retainHistoryText": "Makes completed To-Dos and task history available for longer.",
|
||||
"doubleDrops": "Daily drop caps doubled",
|
||||
"doubleDropsText": "Complete your stable faster!",
|
||||
"mysteryItem": "Exclusive monthly items",
|
||||
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
|
||||
"supportDevs": "Supports the developers",
|
||||
"supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!",
|
||||
"exclusiveJackalopePet": "Exclusive pet",
|
||||
"exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!",
|
||||
"giftSubscription": "Want to gift a subscription to someone?",
|
||||
"giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.",
|
||||
"giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
|
||||
"giftSubscriptionText3": "Select \"subscription\" and enter your payment information.",
|
||||
"giftSubscriptionText4": "Thanks for supporting Habitica!",
|
||||
"monthUSD": "USD / Month",
|
||||
"organization": "Organization",
|
||||
"groupPlans": "Group Plans",
|
||||
"indivPlan1": "For individuals, Habitica is free to play. Even for small interest groups, free (or cheap)",
|
||||
"indivPlan2": "can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more.",
|
||||
"groupText1": "But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of Habitica for your group or organization, secure and independent of",
|
||||
"groupText2": "See below for additional plan perks, and contact us for more information!",
|
||||
"planFamily": "Family (Coming Soon)",
|
||||
"planGroup": "Group (Coming Soon)",
|
||||
"dedicatedHost": "Dedicated Hosting",
|
||||
"dedicatedHostText": "Dedicated Hosting: you get your own database and server hosted by Habitica, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as Habitica proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",
|
||||
"individualSub": "Individual Subscription",
|
||||
"subscribe": "Subscribe",
|
||||
"subscribed": "Subscribed",
|
||||
"nowSubscribed": "You are now subscribed to Habitica!",
|
||||
"manageSub": "Click to manage subscription",
|
||||
"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 <a href=\"https://support.apple.com/en-us/HT202039\">Apple's official instructions</a> 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",
|
||||
"morePlans": "More Plans<br>Coming Soon",
|
||||
"organizationSub": "Private Organization",
|
||||
"organizationSubText": "Members of the organization participate outside of Habitica proper, providing focus for your participants.",
|
||||
"hostingType": "Hosting Type",
|
||||
"hostingTypeText": "Shared hosting means your organization uses the same database as Habitica proper even though you don't interact with Habitica. Dedicated means you get your own database and server. You can choose to have Habitica host your server/db, or we can install it on your own servers.",
|
||||
"dedicated": "Dedicated",
|
||||
"customDomain": "Custom Domain",
|
||||
"customDomainText": "We can optionally give you your own domain for the installation.",
|
||||
"maxPlayers": "Max Participants",
|
||||
"maxPlayersText": "The maximum number of players in your private organization.",
|
||||
"unlimited": "Unlimited",
|
||||
"priSupport": "Priority Support On Tickets & Hosting",
|
||||
"priSupportText": "First to be provided for with support.",
|
||||
"timeSupport": "Support Hours / Month",
|
||||
"timeSupportText": "We will provide support for training, bugs, installation, and feature requests.",
|
||||
"gameFeatures": "Game features",
|
||||
"gold2Gem": "Gems purchasable with gold",
|
||||
"gold2GemText": "Members will be able to purchase Gems with gold, meaning none of your participants need to buy anything with real money.",
|
||||
"infiniteGem": "Infinite leader Gems",
|
||||
"infiniteGemText": "We will provide the organization leaders with as many Gems as they need, for things like challenge prizes, guild-creation, etc.",
|
||||
"notYetPlan": "Plan not yet available, but click to contact us and we'll keep you updated.",
|
||||
"contactUs": "Contact Us",
|
||||
"checkout": "Checkout",
|
||||
"sureCancelSub": "Are you sure you want to cancel your subscription?",
|
||||
"subCanceled": "Subscription will become inactive on",
|
||||
"buyGemsGoldTitle": "To Buy Gems with Gold",
|
||||
"becomeSubscriber": "Become a Subscriber",
|
||||
"subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
|
||||
"subGemName": "Subscriber Gems",
|
||||
"freeGemsTitle": "Obtain Gems for Free",
|
||||
"maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!",
|
||||
"buyGemsAllow1": "You can buy",
|
||||
"buyGemsAllow2": "more Gems this month",
|
||||
"purchaseGemsSeparately": "Purchase Additional Gems",
|
||||
"subFreeGemsHow": "Habitica players can earn Gems for free by winning <a href=\"/challenges/findChallenges\">challenges</a> that award Gems as a prize, or as a <a href=\"http://habitica.wikia.com/wiki/Contributing_to_Habitica\">contributor reward by helping the development of Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Go to <a href='/user/settings/subscription'>Settings > Subscription</a> to see your subscription details!",
|
||||
"timeTravelers": "Time Travelers",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>Tyler<%= linkEnd %> and <%= linkStartVicky %>Vicky<%= linkEnd %>",
|
||||
"timeTravelersTitle": "Mysterious Time Travelers",
|
||||
"timeTravelersPopoverNoSub": "You'll need a Mystic Hourglass to summon the mysterious Time Travelers! <%= linkStart %>Subscribers<%= linkEnd %> earn one Mystic Hourglass for every three months of consecutive subscribing. Come back when you have a Mystic Hourglass, and the Time Travelers will fetch you a rare pet, mount, or Subscriber Item Set from the past... or maybe even the future.",
|
||||
"timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.",
|
||||
"timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.",
|
||||
"timeTravelersAlreadyOwned": "Congratulations! You already own everything the Time Travelers currently offer. Thanks for supporting the site!",
|
||||
"mysticHourglassPopover": "A Mystic Hourglass allows you to purchase certain limited-time items, such as monthly Mystery Item Sets and awards from world bosses, from the past!",
|
||||
"mysterySetNotFound": "Mystery set not found, or set already owned.",
|
||||
"mysteryItemIsEmpty": "Mystery items are empty",
|
||||
"mysteryItemOpened": "Mystery item opened.",
|
||||
@@ -161,13 +97,9 @@
|
||||
"subUpdateTitle": "Update",
|
||||
"subUpdateDescription": "Update the card to be charged.",
|
||||
"notEnoughHourglasses": "You don't have enough Mystic Hourglasses.",
|
||||
"hourglassBuyEquipSetConfirm": "Buy this full set of items for 1 Mystic Hourglass?",
|
||||
"hourglassBuyItemConfirm": "Buy this item for 1 Mystic Hourglass?",
|
||||
"petsAlreadyOwned": "Pet already owned.",
|
||||
"mountsAlreadyOwned": "Mount already owned.",
|
||||
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.",
|
||||
"mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.",
|
||||
"hourglassPurchase": "Purchased an item using a Mystic Hourglass!",
|
||||
"hourglassPurchaseSet": "Purchased an item set using a Mystic Hourglass!",
|
||||
"missingUnsubscriptionCode": "Missing unsubscription code.",
|
||||
@@ -185,14 +117,7 @@
|
||||
"couponUsed": "Coupon code already used.",
|
||||
"couponCodeRequired": "The coupon code is required.",
|
||||
"paypalCanceled": "Your subscription has been canceled",
|
||||
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
|
||||
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
|
||||
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
|
||||
"everyMonth": "Every Month",
|
||||
"everyXMonths": "Every <%= interval %> Months",
|
||||
"everyYear": "Every Year",
|
||||
"choosePaymentMethod": "Choose your payment method",
|
||||
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
|
||||
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
|
||||
"support": "SUPPORT",
|
||||
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
|
||||
@@ -200,18 +125,12 @@
|
||||
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
|
||||
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
|
||||
"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.",
|
||||
"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!",
|
||||
"haveCouponCode": "Do you have a coupon code?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
|
||||
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to <a href='/user/settings/subscription'>User icon > Settings > Subscription</a>.",
|
||||
"purchaseAll": "Purchase Set",
|
||||
"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",
|
||||
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "Delete Completed",
|
||||
"clearCompletedDescription": "Completed To-Dos are deleted after 30 days for non-subscribers and 90 days for subscribers.",
|
||||
"clearCompletedConfirm": "Are you sure you want to delete your completed To-Dos?",
|
||||
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed To-Dos?",
|
||||
"lotOfToDos": "Your most recent 30 completed To-Dos are shown here. You can see older completed To-Dos from Data > Data Display Tool or Data > Export Data > User Data.",
|
||||
"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": "<strong>Tip:</strong> To add multiple <%= taskType %>, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
|
||||
"addsingle": "Add Single",
|
||||
"addATask": "Add a <%= type %>",
|
||||
"editATask": "Edit a <%= type %>",
|
||||
"createTask": "Create <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "These are your <%= taskType %>",
|
||||
"habit": "Habit",
|
||||
"habits": "Habits",
|
||||
"newHabit": "New Habit",
|
||||
"newHabitBulk": "New Habits (one per line)",
|
||||
"habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
|
||||
"positive": "Positive",
|
||||
"negative": "Negative",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "Save",
|
||||
"addChecklist": "Add Checklist",
|
||||
"checklist": "Checklist",
|
||||
"checklistText": "Break a task into smaller pieces! Checklists increase the Experience and Gold gained from a To-Do, and reduce the damage caused by a Daily.",
|
||||
"newChecklistItem": "New checklist item",
|
||||
"expandChecklist": "Expand Checklist",
|
||||
"collapseChecklist": "Collapse Checklist",
|
||||
"text": "Title",
|
||||
"extraNotes": "Extra Notes",
|
||||
"notes": "Notes",
|
||||
"direction/Actions": "Direction/Actions",
|
||||
"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",
|
||||
"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",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "Medium",
|
||||
"hard": "Hard",
|
||||
"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. <br/><br/> You can set your Automatic Allocation method to Task Based in the Stats section of your profile.",
|
||||
"progress": "Progress",
|
||||
"daily": "Daily",
|
||||
"dailies": "Dailies",
|
||||
"newDaily": "New Daily",
|
||||
"newDailyBulk": "New Dailies (one per line)",
|
||||
"dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
|
||||
"streakCounter": "Streak Counter",
|
||||
"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.",
|
||||
"repeatDays": "Every X Days",
|
||||
"repeatWeek": "On Certain Days of the Week",
|
||||
"day": "Day",
|
||||
"days": "Days",
|
||||
"restoreStreak": "Adjust Streak",
|
||||
"resetStreak": "Reset Streak",
|
||||
"todo": "To-Do",
|
||||
"todos": "To-Dos",
|
||||
"newTodo": "New To-Do",
|
||||
"newTodoBulk": "New To-Dos (one per line)",
|
||||
"todosDesc": "To-Dos need to be completed once. Add checklists to your To-Dos to increase their value.",
|
||||
"dueDate": "Due Date",
|
||||
"remaining": "Active",
|
||||
"complete": "Done",
|
||||
"complete2": "Complete",
|
||||
"dated": "Dated",
|
||||
"today": "Today",
|
||||
"dueIn": "Due <%= dueIn %>",
|
||||
"due": "Due",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "Reward",
|
||||
"rewards": "Rewards",
|
||||
"rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
|
||||
"ingamerewards": "Equipment & Skills",
|
||||
"gold": "Gold",
|
||||
"silver": "Silver (100 silver = 1 gold)",
|
||||
"newReward": "New Reward",
|
||||
"newRewardBulk": "New Rewards (one per line)",
|
||||
"price": "Price",
|
||||
"tags": "Tags",
|
||||
"editTags": "Edit",
|
||||
"newTag": "New Tag",
|
||||
"clearTags": "Clear",
|
||||
"hideTags": "Hide",
|
||||
"showTags": "Show",
|
||||
"editTags2": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "Start Date",
|
||||
"startDateHelpTitle": "When should this task start?",
|
||||
"startDateHelp": "Set the date for which this task takes effect. Will not be due on earlier days.",
|
||||
"streaks": "Streak Achievements",
|
||||
"streakName": "<%= count %> Streak Achievements",
|
||||
"streakText": "Has performed <%= count %> 21-day streaks on Dailies",
|
||||
@@ -113,38 +80,15 @@
|
||||
"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 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.",
|
||||
"fortify": "Fortify",
|
||||
"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?",
|
||||
"streakCoins": "Streak Bonus!",
|
||||
"taskToTop": "To top",
|
||||
"taskToBottom": "To bottom",
|
||||
"emptyTask": "Enter the task's title first.",
|
||||
"dailiesRestingInInn": "You're Resting in the Inn! Your Dailies will NOT hurt you tonight, but they WILL still refresh every day. If you're in a quest, you won't deal damage/collect items until you check out of the Inn, but you can still be injured by a Boss if your Party mates skip their own Dailies.",
|
||||
"habitHelp1": "Good Habits are things that you do often. They award Gold and Experience every time you click the <%= plusIcon %>.",
|
||||
"habitHelp2": "Bad Habits are things you want to avoid doing. They remove Health every time you click the <%= minusIcon %>.",
|
||||
"habitHelp3": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Habits' target='_blank'>sample Habits</a>!",
|
||||
"newbieGuild": "More questions? Ask in the <%= linkStart %>Habitica Help guild<%= linkEnd %>!",
|
||||
"dailyHelp1": "Dailies repeat <%= emphasisStart %>every day<%= emphasisEnd %> that they are active. Click the <%= pencilIcon %> to change the days a Daily is active.",
|
||||
"dailyHelp2": "If you don't complete active Dailies, you lose Health when your day rolls over.",
|
||||
"dailyHelp3": "Dailies turn <%= emphasisStart %>redder<%= emphasisEnd %> when you miss them, and <%= emphasisStart %>bluer<%= emphasisEnd %> when you complete them. The redder the Daily, the more it will reward you... or hurt you.",
|
||||
"dailyHelp4": "To change when your day rolls over, go to <%= linkStart %> Settings > Site<%= linkEnd %> > Custom Day Start.",
|
||||
"dailyHelp5": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Dailies' target='_blank'>sample Dailies</a>!",
|
||||
"toDoHelp1": "To-Dos start yellow, and get redder (more valuable) the longer it takes to complete them.",
|
||||
"toDoHelp2": "To-Dos never hurt you! They only award Gold and Experience.",
|
||||
"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 <a href='http://habitica.wikia.com/wiki/Sample_To-Dos' target='_blank'>sample To-Dos</a>!",
|
||||
"rewardHelp1": "The Equipment you buy for your avatar is stored in <%= linkStart %>Inventory > Equipment<%= 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 <a href='http://habitica.wikia.com/wiki/Sample_Custom_Rewards' target='_blank'>some samples here</a>.",
|
||||
"clickForHelp": "Click for help",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "Can't move a completed todo.",
|
||||
"directionUpDown": "\"direction\" is required and must be 'up' or 'down'.",
|
||||
"alreadyTagged": "The task is already tagged with given tag.",
|
||||
"strengthExample": "Relating to exercise and activity",
|
||||
"intelligenceExample": "Relating to academic or mentally challenging pursuits",
|
||||
"perceptionExample": "Relating to work or financial tasks",
|
||||
"constitutionExample": "Relating to health, wellness, and social interaction",
|
||||
"counterPeriod": "Counter Resets Every",
|
||||
"counterPeriodDay": "Day",
|
||||
"counterPeriodWeek": "Week",
|
||||
"counterPeriodMonth": "Month",
|
||||
"habitCounter": "Counter (Resets <%= frequency %>)",
|
||||
"habitCounterUp": "Positive Counter (Resets <%= frequency %>)",
|
||||
"habitCounterDown": "Negative Counter (Resets <%= frequency %>)",
|
||||
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
|
||||
"taskApprovalHasBeenRequested": "Approval has been requested",
|
||||
"taskApprovalWasNotRequested": "Only a task waiting for approval can be marked as needing more work",
|
||||
"approvals": "Approvals",
|
||||
"approvalRequired": "Needs Approval",
|
||||
"repeatZero": "Daily is never due",
|
||||
"repeatType": "Repeat Type",
|
||||
"repeatTypeHelpTitle": "What kind of repeat is this?",
|
||||
"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": "Weekly",
|
||||
"monthly": "Monthly",
|
||||
"yearly": "Yearly",
|
||||
"onDays": "On Days",
|
||||
"summary": "Summary",
|
||||
"repeatsOn": "Repeats On",
|
||||
"dayOfWeek": "Day of the Week",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "Weeks",
|
||||
"year": "Year",
|
||||
"years": "Years",
|
||||
"groupTasksByChallenge": "Group tasks by challenge title",
|
||||
"taskNotes": "Task Notes",
|
||||
"monthlyRepeatHelpContent": "This task will be due every X months",
|
||||
"yearlyRepeatHelpContent": "This task will be due every X years",
|
||||
"resets": "Resets",
|
||||
"summaryStart": "Repeats <%= frequency %> every <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Next Due Dates",
|
||||
"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",
|
||||
"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...",
|
||||
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
|
||||
"errorTemporaryItem": "This item is temporary and cannot be pinned."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "Taal",
|
||||
"americanEnglishGovern": "In the event of a discrepancy in the translations, the American English version governs.",
|
||||
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"https://trello.com/c/SvTsLdRF/12-translations\" target=\"_blank\">this</a> Trello card.",
|
||||
"showHeaderPop": "Show your avatar, Health/Experience bars, and party.",
|
||||
"stickyHeader": "Sticky header",
|
||||
"stickyHeaderPop": "Affix the header to the top of the screen. Unchecked means it scrolls out of view.",
|
||||
"newTaskEdit": "Open new tasks in edit mode",
|
||||
"newTaskEditPop": "With this option set, new tasks will immediately open for you to add details like notes and tags.",
|
||||
"dailyDueDefaultView": "Set Dailies default to 'due' tab",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "Show chat messages in reverse order",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
|
||||
"suppressStreakModal": "Don't show popup when attaining a Streak achievement",
|
||||
"showTour": "Wys Toer",
|
||||
"restartTour": "Restart the introductory tour from when you first joined Habitica.",
|
||||
"showBailey": "Show Bailey",
|
||||
"showBaileyPop": "Bring Bailey the Town Crier out of hiding so you can review past news.",
|
||||
"fixVal": "Fix Character Values",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Invalid value: Level must be 1 or greater.",
|
||||
"enableClass": "Enable Class System",
|
||||
"enableClassPop": "You opted out of the class system initially. Would you like now to opt-in?",
|
||||
"classTourPop": "Show the tour for using the class system.",
|
||||
"resetAccount": "Reset Account",
|
||||
"resetAccPop": "Start over, removing all levels, gold, gear, history, and tasks.",
|
||||
"deleteAccount": "Delete Account",
|
||||
"deleteAccPop": "Cancel and remove your Habitica account.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "(JSON)",
|
||||
"customDayStart": "Custom Day Start",
|
||||
"sureChangeCustomDayStartTime": "Are you sure you want to change your Custom Day Start time? Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before then!",
|
||||
"changeCustomDayStart": "Change Custom Day Start?",
|
||||
"sureChangeCustomDayStart": "Are you sure you want to change your custom day start?",
|
||||
"customDayStartHasChanged": "Your custom day start has changed.",
|
||||
"nextCron": "Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before this time!",
|
||||
"customDayStartInfo1": "Habitica defaults to check and reset your Dailies at midnight in your own time zone each day. You can customize that time here.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "Fix Values",
|
||||
"fixValuesText1": "If you've encountered a bug or made a mistake that unfairly changed your character (damage you shouldn't have taken, Gold you didn't really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you'll sabotage your own habit-building!",
|
||||
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
|
||||
"disabledWinterEvent": "Disabled during Winter Wonderland Event Pt.4 (since the rewards are gold-purchaseable).",
|
||||
"fix21Streaks": "21-Day Streaks",
|
||||
"discardChanges": "Discard Changes",
|
||||
"deleteDo": "Do it, delete my account!",
|
||||
"enterNumber": "Please enter a number between 0 and 24",
|
||||
"fillAll": "Please fill out all fields",
|
||||
"invalidPasswordResetCode": "The supplied password reset code is invalid or has expired.",
|
||||
"passwordChangeSuccess": "Your password was successfully changed to the one you just chose. You can now use it to access your account.",
|
||||
"passwordSuccess": "Password successfully changed",
|
||||
"usernameSuccess": "Username successfully changed",
|
||||
"displayNameSuccess": "Display name successfully changed",
|
||||
"emailSuccess": "Email successfully changed",
|
||||
"detachSocial": "De-register <%= network %>",
|
||||
"detachedSocial": "Successfully removed <%= network %> authentication from your account",
|
||||
"addedLocalAuth": "Successfully added local authentication",
|
||||
"data": "Data",
|
||||
"exportData": "Export Data",
|
||||
"usernameOrEmail": "Username or Email",
|
||||
"email": "Email",
|
||||
"registerWithSocial": "Register with <%= network %>",
|
||||
"registeredWithSocial": "Registered with <%= network %>",
|
||||
"loginNameDescription": "This is what you use to log in to Habitica. To change it, use the form below. If instead you want to change the Display Name that appears on your avatar and in chat messages, go to the User Icon > Profile and click the Edit button.",
|
||||
"emailNotifications": "Email Notifications",
|
||||
"wonChallenge": "You won a Challenge!",
|
||||
"newPM": "Received Private Message",
|
||||
@@ -118,7 +102,6 @@
|
||||
"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",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "Invited to Quest",
|
||||
"kickedGroup": "Kicked from group",
|
||||
"remindersToLogin": "Reminders to check in to Habitica",
|
||||
"subscribeUsing": "Subscribe using",
|
||||
"unsubscribedSuccessfully": "Unsubscribed successfully!",
|
||||
"unsubscribedTextUsers": "You have successfully unsubscribed from all Habitica emails. You can enable only the emails you want to receive from <a href=\"/user/settings/notifications\">Settings > > Notifications</a> (requires login).",
|
||||
"unsubscribedTextOthers": "You won't receive any other email from Habitica.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications",
|
||||
"correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.",
|
||||
"subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months",
|
||||
"recurringText": "recurring",
|
||||
"benefits": "Benefits",
|
||||
"coupon": "Coupon",
|
||||
"couponPlaceholder": "Enter Coupon Code",
|
||||
"couponText": "We sometimes have events and give out coupon codes for special gear. (eg, those who stop by our Wondercon booth)",
|
||||
"apply": "Apply",
|
||||
"resubscribe": "Resubscribe",
|
||||
"promoCode": "Promo Code",
|
||||
"promoCodeApplied": "Promo Code Applied! Check your inventory",
|
||||
"promoPlaceholder": "Enter Promotion Code",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "Enabled",
|
||||
"webhookURL": "Webhook URL",
|
||||
"invalidUrl": "invalid url",
|
||||
"invalidEnabled": "the \"enabled\" parameter should be a boolean.",
|
||||
"invalidWebhookId": "the \"id\" parameter should be a valid UUID.",
|
||||
"missingWebhookId": "The webhook's id is required.",
|
||||
"invalidWebhookType": "\"<%= type %>\" is not a valid value for the parameter \"type\".",
|
||||
"webhookBooleanOption": "\"<%= option %>\" must be a Boolean value.",
|
||||
"webhookIdAlreadyTaken": "A webhook with the id <%= id %> already exists.",
|
||||
"noWebhookWithId": "There is no webhook with the id <%= id %>.",
|
||||
"regIdRequired": "RegId is required",
|
||||
"invalidPushClient": "Invalid client. Only Official Habitica clients can receive push notifications.",
|
||||
"pushDeviceAdded": "Push device added successfully",
|
||||
"pushDeviceAlreadyAdded": "The user already has the push device",
|
||||
"pushDeviceNotFound": "The user has no push device with this id.",
|
||||
"pushDeviceRemoved": "Push device removed successfully.",
|
||||
"buyGemsGoldCap": "Cap raised to <%= amount %>",
|
||||
"mysticHourglass": "<%= amount %> Mystic Hourglass",
|
||||
"mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.",
|
||||
"purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.",
|
||||
"consecutiveSubscription": "Consecutive Subscription",
|
||||
"consecutiveMonths": "Consecutive Months:",
|
||||
@@ -205,4 +177,4 @@
|
||||
"usernameNotVerified": "Please confirm your username.",
|
||||
"changeUsernameDisclaimer": "We will be transitioning login names to unique, public usernames soon. This username will be used for invitations, @mentions in chat, and messaging.",
|
||||
"verifyUsernameVeteranPet": "One of these Veteran Pets will be waiting for you after you've finished confirming!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "Subscription",
|
||||
"subscriptions": "Subscriptions",
|
||||
"subDescription": "Buy Gems with gold, get monthly mystery items, retain progress history, double daily drop-caps, support the devs. Click for more info.",
|
||||
"sendGems": "Send Gems",
|
||||
"buyGemsGold": "Buy Gems with Gold",
|
||||
"buyGemsGoldText": "Alexander the Merchant will sell you Gems at a cost of 20 Gold per Gem. His monthly shipments are initially capped at 25 Gems per month, but for every 3 consecutive months that you are subscribed, this cap increases by 5 Gems, up to a maximum of 50 Gems per month!",
|
||||
"mustSubscribeToPurchaseGems": "Must subscribe to purchase gems with GP",
|
||||
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"retainHistory": "Retain additional history entries",
|
||||
"retainHistoryText": "Makes completed To-Dos and task history available for longer.",
|
||||
"doubleDrops": "Daily drop caps doubled",
|
||||
"doubleDropsText": "Complete your stable faster!",
|
||||
"mysteryItem": "Exclusive monthly items",
|
||||
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
|
||||
"supportDevs": "Supports the developers",
|
||||
"supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!",
|
||||
"exclusiveJackalopePet": "Exclusive pet",
|
||||
"exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!",
|
||||
"giftSubscription": "Want to gift a subscription to someone?",
|
||||
"giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.",
|
||||
"giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
|
||||
"giftSubscriptionText3": "Select \"subscription\" and enter your payment information.",
|
||||
"giftSubscriptionText4": "Thanks for supporting Habitica!",
|
||||
"monthUSD": "USD / Month",
|
||||
"organization": "Organization",
|
||||
"groupPlans": "Group Plans",
|
||||
"indivPlan1": "For individuals, Habitica is free to play. Even for small interest groups, free (or cheap)",
|
||||
"indivPlan2": "can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more.",
|
||||
"groupText1": "But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of Habitica for your group or organization, secure and independent of",
|
||||
"groupText2": "See below for additional plan perks, and contact us for more information!",
|
||||
"planFamily": "Family (Coming Soon)",
|
||||
"planGroup": "Group (Coming Soon)",
|
||||
"dedicatedHost": "Dedicated Hosting",
|
||||
"dedicatedHostText": "Dedicated Hosting: you get your own database and server hosted by Habitica, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as Habitica proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",
|
||||
"individualSub": "Individual Subscription",
|
||||
"subscribe": "Subscribe",
|
||||
"subscribed": "Subscribed",
|
||||
"nowSubscribed": "You are now subscribed to Habitica!",
|
||||
"manageSub": "Click to manage subscription",
|
||||
"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 <a href=\"https://support.apple.com/en-us/HT202039\">Apple's official instructions</a> 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",
|
||||
"morePlans": "More Plans<br>Coming Soon",
|
||||
"organizationSub": "Private Organization",
|
||||
"organizationSubText": "Members of the organization participate outside of Habitica proper, providing focus for your participants.",
|
||||
"hostingType": "Hosting Type",
|
||||
"hostingTypeText": "Shared hosting means your organization uses the same database as Habitica proper even though you don't interact with Habitica. Dedicated means you get your own database and server. You can choose to have Habitica host your server/db, or we can install it on your own servers.",
|
||||
"dedicated": "Dedicated",
|
||||
"customDomain": "Custom Domain",
|
||||
"customDomainText": "We can optionally give you your own domain for the installation.",
|
||||
"maxPlayers": "Max Participants",
|
||||
"maxPlayersText": "The maximum number of players in your private organization.",
|
||||
"unlimited": "Unlimited",
|
||||
"priSupport": "Priority Support On Tickets & Hosting",
|
||||
"priSupportText": "First to be provided for with support.",
|
||||
"timeSupport": "Support Hours / Month",
|
||||
"timeSupportText": "We will provide support for training, bugs, installation, and feature requests.",
|
||||
"gameFeatures": "Game features",
|
||||
"gold2Gem": "Gems purchasable with gold",
|
||||
"gold2GemText": "Members will be able to purchase Gems with gold, meaning none of your participants need to buy anything with real money.",
|
||||
"infiniteGem": "Infinite leader Gems",
|
||||
"infiniteGemText": "We will provide the organization leaders with as many Gems as they need, for things like challenge prizes, guild-creation, etc.",
|
||||
"notYetPlan": "Plan not yet available, but click to contact us and we'll keep you updated.",
|
||||
"contactUs": "Contact Us",
|
||||
"checkout": "Checkout",
|
||||
"sureCancelSub": "Are you sure you want to cancel your subscription?",
|
||||
"subCanceled": "Subscription will become inactive on",
|
||||
"buyGemsGoldTitle": "To Buy Gems with Gold",
|
||||
"becomeSubscriber": "Become a Subscriber",
|
||||
"subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
|
||||
"subGemName": "Subscriber Gems",
|
||||
"freeGemsTitle": "Obtain Gems for Free",
|
||||
"maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!",
|
||||
"buyGemsAllow1": "You can buy",
|
||||
"buyGemsAllow2": "more Gems this month",
|
||||
"purchaseGemsSeparately": "Purchase Additional Gems",
|
||||
"subFreeGemsHow": "Habitica players can earn Gems for free by winning <a href=\"/challenges/findChallenges\">challenges</a> that award Gems as a prize, or as a <a href=\"http://habitica.wikia.com/wiki/Contributing_to_Habitica\">contributor reward by helping the development of Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Go to <a href='/user/settings/subscription'>Settings > Subscription</a> to see your subscription details!",
|
||||
"timeTravelers": "Time Travelers",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>Tyler<%= linkEnd %> and <%= linkStartVicky %>Vicky<%= linkEnd %>",
|
||||
"timeTravelersTitle": "Mysterious Time Travelers",
|
||||
"timeTravelersPopoverNoSub": "You'll need a Mystic Hourglass to summon the mysterious Time Travelers! <%= linkStart %>Subscribers<%= linkEnd %> earn one Mystic Hourglass for every three months of consecutive subscribing. Come back when you have a Mystic Hourglass, and the Time Travelers will fetch you a rare pet, mount, or Subscriber Item Set from the past... or maybe even the future.",
|
||||
"timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.",
|
||||
"timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.",
|
||||
"timeTravelersAlreadyOwned": "Congratulations! You already own everything the Time Travelers currently offer. Thanks for supporting the site!",
|
||||
"mysticHourglassPopover": "A Mystic Hourglass allows you to purchase certain limited-time items, such as monthly Mystery Item Sets and awards from world bosses, from the past!",
|
||||
"mysterySetNotFound": "Mystery set not found, or set already owned.",
|
||||
"mysteryItemIsEmpty": "Mystery items are empty",
|
||||
"mysteryItemOpened": "Mystery item opened.",
|
||||
@@ -161,13 +97,9 @@
|
||||
"subUpdateTitle": "Update",
|
||||
"subUpdateDescription": "Update the card to be charged.",
|
||||
"notEnoughHourglasses": "You don't have enough Mystic Hourglasses.",
|
||||
"hourglassBuyEquipSetConfirm": "Buy this full set of items for 1 Mystic Hourglass?",
|
||||
"hourglassBuyItemConfirm": "Buy this item for 1 Mystic Hourglass?",
|
||||
"petsAlreadyOwned": "Pet already owned.",
|
||||
"mountsAlreadyOwned": "Mount already owned.",
|
||||
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.",
|
||||
"mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.",
|
||||
"hourglassPurchase": "Purchased an item using a Mystic Hourglass!",
|
||||
"hourglassPurchaseSet": "Purchased an item set using a Mystic Hourglass!",
|
||||
"missingUnsubscriptionCode": "Missing unsubscription code.",
|
||||
@@ -185,14 +117,7 @@
|
||||
"couponUsed": "Coupon code already used.",
|
||||
"couponCodeRequired": "The coupon code is required.",
|
||||
"paypalCanceled": "Your subscription has been canceled",
|
||||
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
|
||||
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
|
||||
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
|
||||
"everyMonth": "Every Month",
|
||||
"everyXMonths": "Every <%= interval %> Months",
|
||||
"everyYear": "Every Year",
|
||||
"choosePaymentMethod": "Choose your payment method",
|
||||
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
|
||||
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
|
||||
"support": "SUPPORT",
|
||||
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
|
||||
@@ -200,18 +125,12 @@
|
||||
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
|
||||
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
|
||||
"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.",
|
||||
"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!",
|
||||
"haveCouponCode": "Do you have a coupon code?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
|
||||
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to <a href='/user/settings/subscription'>User icon > Settings > Subscription</a>.",
|
||||
"purchaseAll": "Purchase Set",
|
||||
"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",
|
||||
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "Delete Completed",
|
||||
"clearCompletedDescription": "Completed To-Dos are deleted after 30 days for non-subscribers and 90 days for subscribers.",
|
||||
"clearCompletedConfirm": "Are you sure you want to delete your completed To-Dos?",
|
||||
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed To-Dos?",
|
||||
"lotOfToDos": "Your most recent 30 completed To-Dos are shown here. You can see older completed To-Dos from Data > Data Display Tool or Data > Export Data > User Data.",
|
||||
"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": "<strong>Tip:</strong> To add multiple <%= taskType %>, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
|
||||
"addsingle": "Add Single",
|
||||
"addATask": "Add a <%= type %>",
|
||||
"editATask": "Edit a <%= type %>",
|
||||
"createTask": "Create <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "These are your <%= taskType %>",
|
||||
"habit": "Habit",
|
||||
"habits": "Habits",
|
||||
"newHabit": "New Habit",
|
||||
"newHabitBulk": "New Habits (one per line)",
|
||||
"habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
|
||||
"positive": "Positive",
|
||||
"negative": "Negative",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "Save",
|
||||
"addChecklist": "Add Checklist",
|
||||
"checklist": "Checklist",
|
||||
"checklistText": "Break a task into smaller pieces! Checklists increase the Experience and Gold gained from a To-Do, and reduce the damage caused by a Daily.",
|
||||
"newChecklistItem": "New checklist item",
|
||||
"expandChecklist": "Expand Checklist",
|
||||
"collapseChecklist": "Collapse Checklist",
|
||||
"text": "Title",
|
||||
"extraNotes": "Extra Notes",
|
||||
"notes": "Notes",
|
||||
"direction/Actions": "Direction/Actions",
|
||||
"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",
|
||||
"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",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "Medium",
|
||||
"hard": "Hard",
|
||||
"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. <br/><br/> You can set your Automatic Allocation method to Task Based in the Stats section of your profile.",
|
||||
"progress": "Progress",
|
||||
"daily": "Daily",
|
||||
"dailies": "Dailies",
|
||||
"newDaily": "New Daily",
|
||||
"newDailyBulk": "New Dailies (one per line)",
|
||||
"dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
|
||||
"streakCounter": "Streak Counter",
|
||||
"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.",
|
||||
"repeatDays": "Every X Days",
|
||||
"repeatWeek": "On Certain Days of the Week",
|
||||
"day": "Day",
|
||||
"days": "Days",
|
||||
"restoreStreak": "Adjust Streak",
|
||||
"resetStreak": "Reset Streak",
|
||||
"todo": "To-Do",
|
||||
"todos": "To-Dos",
|
||||
"newTodo": "New To-Do",
|
||||
"newTodoBulk": "New To-Dos (one per line)",
|
||||
"todosDesc": "To-Dos need to be completed once. Add checklists to your To-Dos to increase their value.",
|
||||
"dueDate": "Due Date",
|
||||
"remaining": "Active",
|
||||
"complete": "Done",
|
||||
"complete2": "Complete",
|
||||
"dated": "Dated",
|
||||
"today": "Today",
|
||||
"dueIn": "Due <%= dueIn %>",
|
||||
"due": "Due",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "Reward",
|
||||
"rewards": "Rewards",
|
||||
"rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
|
||||
"ingamerewards": "Equipment & Skills",
|
||||
"gold": "Gold",
|
||||
"silver": "Silver (100 silver = 1 gold)",
|
||||
"newReward": "New Reward",
|
||||
"newRewardBulk": "New Rewards (one per line)",
|
||||
"price": "Price",
|
||||
"tags": "Tags",
|
||||
"editTags": "Edit",
|
||||
"newTag": "New Tag",
|
||||
"clearTags": "Clear",
|
||||
"hideTags": "Hide",
|
||||
"showTags": "Show",
|
||||
"editTags2": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "Start Date",
|
||||
"startDateHelpTitle": "When should this task start?",
|
||||
"startDateHelp": "Set the date for which this task takes effect. Will not be due on earlier days.",
|
||||
"streaks": "Streak Achievements",
|
||||
"streakName": "<%= count %> Streak Achievements",
|
||||
"streakText": "Has performed <%= count %> 21-day streaks on Dailies",
|
||||
@@ -113,38 +80,15 @@
|
||||
"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 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.",
|
||||
"fortify": "Fortify",
|
||||
"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": "Is jy seker?",
|
||||
"fortifyComplete": "Fortify complete!",
|
||||
"deleteTask": "Delete this Task",
|
||||
"sureDelete": "Are you sure you want to delete this task?",
|
||||
"streakCoins": "Streak Bonus!",
|
||||
"taskToTop": "To top",
|
||||
"taskToBottom": "To bottom",
|
||||
"emptyTask": "Enter the task's title first.",
|
||||
"dailiesRestingInInn": "You're Resting in the Inn! Your Dailies will NOT hurt you tonight, but they WILL still refresh every day. If you're in a quest, you won't deal damage/collect items until you check out of the Inn, but you can still be injured by a Boss if your Party mates skip their own Dailies.",
|
||||
"habitHelp1": "Good Habits are things that you do often. They award Gold and Experience every time you click the <%= plusIcon %>.",
|
||||
"habitHelp2": "Bad Habits are things you want to avoid doing. They remove Health every time you click the <%= minusIcon %>.",
|
||||
"habitHelp3": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Habits' target='_blank'>sample Habits</a>!",
|
||||
"newbieGuild": "More questions? Ask in the <%= linkStart %>Habitica Help guild<%= linkEnd %>!",
|
||||
"dailyHelp1": "Dailies repeat <%= emphasisStart %>every day<%= emphasisEnd %> that they are active. Click the <%= pencilIcon %> to change the days a Daily is active.",
|
||||
"dailyHelp2": "If you don't complete active Dailies, you lose Health when your day rolls over.",
|
||||
"dailyHelp3": "Dailies turn <%= emphasisStart %>redder<%= emphasisEnd %> when you miss them, and <%= emphasisStart %>bluer<%= emphasisEnd %> when you complete them. The redder the Daily, the more it will reward you... or hurt you.",
|
||||
"dailyHelp4": "To change when your day rolls over, go to <%= linkStart %> Settings > Site<%= linkEnd %> > Custom Day Start.",
|
||||
"dailyHelp5": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Dailies' target='_blank'>sample Dailies</a>!",
|
||||
"toDoHelp1": "To-Dos start yellow, and get redder (more valuable) the longer it takes to complete them.",
|
||||
"toDoHelp2": "To-Dos never hurt you! They only award Gold and Experience.",
|
||||
"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 <a href='http://habitica.wikia.com/wiki/Sample_To-Dos' target='_blank'>sample To-Dos</a>!",
|
||||
"rewardHelp1": "The Equipment you buy for your avatar is stored in <%= linkStart %>Inventory > Equipment<%= 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 <a href='http://habitica.wikia.com/wiki/Sample_Custom_Rewards' target='_blank'>some samples here</a>.",
|
||||
"clickForHelp": "Click for help",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "Can't move a completed todo.",
|
||||
"directionUpDown": "\"direction\" is required and must be 'up' or 'down'.",
|
||||
"alreadyTagged": "The task is already tagged with given tag.",
|
||||
"strengthExample": "Relating to exercise and activity",
|
||||
"intelligenceExample": "Relating to academic or mentally challenging pursuits",
|
||||
"perceptionExample": "Relating to work or financial tasks",
|
||||
"constitutionExample": "Relating to health, wellness, and social interaction",
|
||||
"counterPeriod": "Counter Resets Every",
|
||||
"counterPeriodDay": "Day",
|
||||
"counterPeriodWeek": "Week",
|
||||
"counterPeriodMonth": "Month",
|
||||
"habitCounter": "Counter (Resets <%= frequency %>)",
|
||||
"habitCounterUp": "Positive Counter (Resets <%= frequency %>)",
|
||||
"habitCounterDown": "Negative Counter (Resets <%= frequency %>)",
|
||||
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
|
||||
"taskApprovalHasBeenRequested": "Approval has been requested",
|
||||
"taskApprovalWasNotRequested": "Only a task waiting for approval can be marked as needing more work",
|
||||
"approvals": "Approvals",
|
||||
"approvalRequired": "Needs Approval",
|
||||
"repeatZero": "Daily is never due",
|
||||
"repeatType": "Repeat Type",
|
||||
"repeatTypeHelpTitle": "What kind of repeat is this?",
|
||||
"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": "Weekly",
|
||||
"monthly": "Monthly",
|
||||
"yearly": "Yearly",
|
||||
"onDays": "On Days",
|
||||
"summary": "Summary",
|
||||
"repeatsOn": "Repeats On",
|
||||
"dayOfWeek": "Day of the Week",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "Weeks",
|
||||
"year": "Year",
|
||||
"years": "Years",
|
||||
"groupTasksByChallenge": "Group tasks by challenge title",
|
||||
"taskNotes": "Task Notes",
|
||||
"monthlyRepeatHelpContent": "This task will be due every X months",
|
||||
"yearlyRepeatHelpContent": "This task will be due every X years",
|
||||
"resets": "Resets",
|
||||
"summaryStart": "Repeats <%= frequency %> every <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Next Due Dates",
|
||||
"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",
|
||||
"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...",
|
||||
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
|
||||
"errorTemporaryItem": "This item is temporary and cannot be pinned."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "اللغة",
|
||||
"americanEnglishGovern": "في حالة تناقض الترجمات ستكون الأولوية للإنجليزية الأمريكية.",
|
||||
"helpWithTranslation": "هل تريد المساعدة فى ترجمة Habitica؟ عظيم! يمكنك زيارة <a href=\"https://trello.com/c/SvTsLdRF/12-translations\" target=\"_blank\">تلك</a> الصفحة.",
|
||||
"showHeaderPop": "اعرض صورتك الرمزية وشريط صحتك/خبرتك وفريقك.",
|
||||
"stickyHeader": "تثبيت الشريط العلوي",
|
||||
"stickyHeaderPop": "Affix the header to the top of the screen. Unchecked means it scrolls out of view.",
|
||||
"newTaskEdit": "فتح المهام الجديدة في وضع التحرير",
|
||||
"newTaskEditPop": "بتعيين هذا الخيار، ستنفتح المهام الجديدة لإضافة التفاصيل كالملاحظات والأوسمة مباشرة.",
|
||||
"dailyDueDefaultView": "وضع خيار \"مستحقة\" كافتراضي لعرض اليوميات",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "اعرض رسائل الدردشة في ترتيب زمني معاكس",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "لا تعرض الصفحة الظاهرة فجأة عند تطوير حيوان أليف إلى حيوان مطي",
|
||||
"suppressStreakModal": "Don't show popup when attaining a Streak achievement",
|
||||
"showTour": "إظهار الجولة التعريفية",
|
||||
"restartTour": "إعادة تشغيل الجولة التعريفية التى ظهرت لك عندما انضممت إلى Habitica.",
|
||||
"showBailey": "إظهار بايلي",
|
||||
"showBaileyPop": "إجلب بايلى مؤذنة البلدة حتى تتمكن من مراجعة الأخبار الفائتة.",
|
||||
"fixVal": "تعديل متغيرات الشخصية",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Invalid value: Level must be 1 or greater.",
|
||||
"enableClass": "تفعيل نظام الفئات",
|
||||
"enableClassPop": "You opted out of the class system initially. Would you like now to opt-in?",
|
||||
"classTourPop": "إظهار الجولة التعريفية لإستخدام نظام الفئات.",
|
||||
"resetAccount": "إعادة تعيين الحساب",
|
||||
"resetAccPop": "البدء من جديد. يتم حذف جميع المستويات، والذهب، والأمتعة، والسجلات، والمهام.",
|
||||
"deleteAccount": "حذف الحساب",
|
||||
"deleteAccPop": "إلغاء وحذف حساب Habitica الخاص بك.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "ملف (JSON)",
|
||||
"customDayStart": "بداية يوم مخصصة",
|
||||
"sureChangeCustomDayStartTime": "Are you sure you want to change your Custom Day Start time? Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before then!",
|
||||
"changeCustomDayStart": "تغيير بداية اليوم المخصصة؟",
|
||||
"sureChangeCustomDayStart": "هل أنت متأكد من تغيير بداية يومك المخصصة؟",
|
||||
"customDayStartHasChanged": "Your custom day start has changed.",
|
||||
"nextCron": "اليوميات سوف يعاد ضبطها عند استخدامك لHabitica بعد <%= time %> . تأكد من اتمامك لها قبل ذاك الوقت.",
|
||||
"customDayStartInfo1": "Habitica يفحص ويعيد ضبط اليوميات فى منتصف الليل حسب منطقتك الزمنية كل يوم. بإمكانك تخصيص ذاك الوقت هنا.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "تعديل المتغيرات",
|
||||
"fixValuesText1": "إذا قابلك عطل أو ارتكبت خطأ أدى الى تغير غير عادل لشخصيتك (ضرر لا ينبغى ان تاخذه، ذهب لم تكتسبه حقاً، إلخ.)، بإمكانك تصحيح أرقامك هنا. نعم، هذا يجعل الغش ممكناً: استخدم تلك الميزة بحكمة وإلا ستخرِّب بنائك للعادات!",
|
||||
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
|
||||
"disabledWinterEvent": "Disabled during Winter Wonderland Event Pt.4 (since the rewards are gold-purchaseable).",
|
||||
"fix21Streaks": "سلسلة 21-يوم متتالية",
|
||||
"discardChanges": "طرح التغييرات",
|
||||
"deleteDo": "هيا افعلها، احذف حسابي!",
|
||||
"enterNumber": "الرجاء ادخال رقم بين 0 و 24",
|
||||
"fillAll": "الرجاء تعبئة جميع الخانات",
|
||||
"invalidPasswordResetCode": "The supplied password reset code is invalid or has expired.",
|
||||
"passwordChangeSuccess": "Your password was successfully changed to the one you just chose. You can now use it to access your account.",
|
||||
"passwordSuccess": "تم تغيير كلمة المرور بنجاح",
|
||||
"usernameSuccess": "Username successfully changed",
|
||||
"displayNameSuccess": "Display name successfully changed",
|
||||
"emailSuccess": "تم تغيير الإيميل بنجاح",
|
||||
"detachSocial": "De-register <%= network %>",
|
||||
"detachedSocial": "Successfully removed <%= network %> authentication from your account",
|
||||
"addedLocalAuth": "تم إضافة التوثيق المحلي (اسم مستخدم وكلمة سر) بنجاح",
|
||||
"data": "بيانات",
|
||||
"exportData": "تصدير البيانات",
|
||||
"usernameOrEmail": "Username or Email",
|
||||
"email": "البريد الإلكتروني",
|
||||
"registerWithSocial": "Register with <%= network %>",
|
||||
"registeredWithSocial": "Registered with <%= network %>",
|
||||
"loginNameDescription": "This is what you use to log in to Habitica. To change it, use the form below. If instead you want to change the Display Name that appears on your avatar and in chat messages, go to the User Icon > Profile and click the Edit button.",
|
||||
"emailNotifications": "تنبيهات البريد الإلكتروني",
|
||||
"wonChallenge": "لقد فزت بتحدى!",
|
||||
"newPM": "استلام رسالة خاصة",
|
||||
@@ -118,7 +102,6 @@
|
||||
"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",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "دعي إلى مغامرة",
|
||||
"kickedGroup": "طرد من المجموعة",
|
||||
"remindersToLogin": "تذكير بالدخول إلى Habitica",
|
||||
"subscribeUsing": "Subscribe using",
|
||||
"unsubscribedSuccessfully": "تم إلغاء الاشتراك بنجاح!",
|
||||
"unsubscribedTextUsers": "You have successfully unsubscribed from all Habitica emails. You can enable only the emails you want to receive from <a href=\"/user/settings/notifications\">Settings > > Notifications</a> (requires login).",
|
||||
"unsubscribedTextOthers": "لن تستلم أي رسائل أخرى من Habitica.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications",
|
||||
"correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.",
|
||||
"subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months",
|
||||
"recurringText": "recurring",
|
||||
"benefits": "فوائد",
|
||||
"coupon": "قسيمة",
|
||||
"couponPlaceholder": "أدخل كود القسيمة",
|
||||
"couponText": "نحن فى بعض الأحيان نقيم أحداث ونعطى رموز كوبونات لعتاد مميز. (مثال: هؤلاء من توقفوا عند كشك الWondercon)",
|
||||
"apply": "تطبيق",
|
||||
"resubscribe": "إعادة الاشتراك",
|
||||
"promoCode": "كود ترويجي",
|
||||
"promoCodeApplied": "تم تطبيق الرمز الترويجى! انظر فى مخزنك.",
|
||||
"promoPlaceholder": "أدخل الكود الترويجي",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "مفعل",
|
||||
"webhookURL": "رابط Webhook",
|
||||
"invalidUrl": "invalid url",
|
||||
"invalidEnabled": "the \"enabled\" parameter should be a boolean.",
|
||||
"invalidWebhookId": "the \"id\" parameter should be a valid UUID.",
|
||||
"missingWebhookId": "The webhook's id is required.",
|
||||
"invalidWebhookType": "\"<%= type %>\" is not a valid value for the parameter \"type\".",
|
||||
"webhookBooleanOption": "\"<%= option %>\" must be a Boolean value.",
|
||||
"webhookIdAlreadyTaken": "A webhook with the id <%= id %> already exists.",
|
||||
"noWebhookWithId": "There is no webhook with the id <%= id %>.",
|
||||
"regIdRequired": "RegId is required",
|
||||
"invalidPushClient": "Invalid client. Only Official Habitica clients can receive push notifications.",
|
||||
"pushDeviceAdded": "Push device added successfully",
|
||||
"pushDeviceAlreadyAdded": "The user already has the push device",
|
||||
"pushDeviceNotFound": "The user has no push device with this id.",
|
||||
"pushDeviceRemoved": "Push device removed successfully.",
|
||||
"buyGemsGoldCap": "تم رفع الحد الأقصى إلى <%= amount %>",
|
||||
"mysticHourglass": "<%= amount %> ساعة رملية غامضة",
|
||||
"mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.",
|
||||
"purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.",
|
||||
"consecutiveSubscription": "اشتراك متتالي",
|
||||
"consecutiveMonths": "شهور متتالية:",
|
||||
@@ -205,4 +177,4 @@
|
||||
"usernameNotVerified": "Please confirm your username.",
|
||||
"changeUsernameDisclaimer": "We will be transitioning login names to unique, public usernames soon. This username will be used for invitations, @mentions in chat, and messaging.",
|
||||
"verifyUsernameVeteranPet": "One of these Veteran Pets will be waiting for you after you've finished confirming!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "الاشتراك",
|
||||
"subscriptions": "الاشتراكات",
|
||||
"subDescription": "Buy Gems with gold, get monthly mystery items, retain progress history, double daily drop-caps, support the devs. Click for more info.",
|
||||
"sendGems": "Send Gems",
|
||||
"buyGemsGold": "شراء الجواهر بالذهب",
|
||||
"buyGemsGoldText": "Alexander the Merchant will sell you Gems at a cost of 20 Gold per Gem. His monthly shipments are initially capped at 25 Gems per month, but for every 3 consecutive months that you are subscribed, this cap increases by 5 Gems, up to a maximum of 50 Gems per month!",
|
||||
"mustSubscribeToPurchaseGems": "Must subscribe to purchase gems with GP",
|
||||
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"retainHistory": "حفظ مدخلات تاريخية إضافية",
|
||||
"retainHistoryText": "يجعل المهام المكملة و تاريخ المهام متوفرين لفترة أطول.",
|
||||
"doubleDrops": "Daily drop caps doubled",
|
||||
"doubleDropsText": "أكمل اسطبلك بسرعة أكثر!",
|
||||
"mysteryItem": "أغراض شهرية حصرية",
|
||||
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
|
||||
"supportDevs": "دعم المطورين",
|
||||
"supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!",
|
||||
"exclusiveJackalopePet": "Exclusive pet",
|
||||
"exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!",
|
||||
"giftSubscription": "Want to gift a subscription to someone?",
|
||||
"giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.",
|
||||
"giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
|
||||
"giftSubscriptionText3": "Select \"subscription\" and enter your payment information.",
|
||||
"giftSubscriptionText4": "Thanks for supporting Habitica!",
|
||||
"monthUSD": "دولار أمريكي شهريًا",
|
||||
"organization": "للمؤسسات",
|
||||
"groupPlans": "Group Plans",
|
||||
"indivPlan1": "For individuals, Habitica is free to play. Even for small interest groups, free (or cheap)",
|
||||
"indivPlan2": "can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more.",
|
||||
"groupText1": "But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of Habitica for your group or organization, secure and independent of",
|
||||
"groupText2": "See below for additional plan perks, and contact us for more information!",
|
||||
"planFamily": "للعوائل (قريبًا)",
|
||||
"planGroup": "للمجموعات (قريبًا)",
|
||||
"dedicatedHost": "استضافة مخصصة",
|
||||
"dedicatedHostText": "Dedicated Hosting: you get your own database and server hosted by Habitica, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as Habitica proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",
|
||||
"individualSub": "اشتراك فردي",
|
||||
"subscribe": "اشتراك",
|
||||
"subscribed": "تم الاشتراك",
|
||||
"nowSubscribed": "You are now subscribed to Habitica!",
|
||||
"manageSub": "اضغط لإدارة الاشتراك",
|
||||
"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 <a href=\"https://support.apple.com/en-us/HT202039\">Apple's official instructions</a> 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": "اشتراكات المدير",
|
||||
"morePlans": "More Plans<br>Coming Soon",
|
||||
"organizationSub": "مؤسسة خاصة",
|
||||
"organizationSubText": "Members of the organization participate outside of Habitica proper, providing focus for your participants.",
|
||||
"hostingType": "نوع استضافة",
|
||||
"hostingTypeText": "Shared hosting means your organization uses the same database as Habitica proper even though you don't interact with Habitica. Dedicated means you get your own database and server. You can choose to have Habitica host your server/db, or we can install it on your own servers.",
|
||||
"dedicated": "مخصصة",
|
||||
"customDomain": "اسم نطاق",
|
||||
"customDomainText": "من الممكن أن نعطيك اسم نطاق للتنصيب خاص بك.",
|
||||
"maxPlayers": "أقصى عدد المشاركين",
|
||||
"maxPlayersText": "أقصى عدد للاعبين في مؤسستك الخاصة.",
|
||||
"unlimited": "غير محدود",
|
||||
"priSupport": "الأولوية لدعم التذاكر والإستضافة",
|
||||
"priSupportText": "أول من يتلقى الدعم.",
|
||||
"timeSupport": "ساعات / شهر دعم",
|
||||
"timeSupportText": "سنوفر الدعم للتدريب والأخطاء والتنصيب وطلبات ميزات جديدة.",
|
||||
"gameFeatures": "ميزات اللعبة",
|
||||
"gold2Gem": "إمكانية شراء الجواهر بالذهب",
|
||||
"gold2GemText": "Members will be able to purchase Gems with gold, meaning none of your participants need to buy anything with real money.",
|
||||
"infiniteGem": "Infinite leader Gems",
|
||||
"infiniteGemText": "We will provide the organization leaders with as many Gems as they need, for things like challenge prizes, guild-creation, etc.",
|
||||
"notYetPlan": "الخطة غير متوفرة بعد، اضغط على \"تواصل معنا\" وسوف نبقيك على اطلاع بالجديد.",
|
||||
"contactUs": "اتصل بنا",
|
||||
"checkout": "الدفع",
|
||||
"sureCancelSub": "تأكيد إلغاء الاشتراك؟",
|
||||
"subCanceled": "سيتم إيقاف الاشتراك في",
|
||||
"buyGemsGoldTitle": "To Buy Gems with Gold",
|
||||
"becomeSubscriber": "Become a Subscriber",
|
||||
"subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
|
||||
"subGemName": "جواهر مشترك",
|
||||
"freeGemsTitle": "Obtain Gems for Free",
|
||||
"maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!",
|
||||
"buyGemsAllow1": "You can buy",
|
||||
"buyGemsAllow2": "more Gems this month",
|
||||
"purchaseGemsSeparately": "Purchase Additional Gems",
|
||||
"subFreeGemsHow": "Habitica players can earn Gems for free by winning <a href=\"/challenges/findChallenges\">challenges</a> that award Gems as a prize, or as a <a href=\"http://habitica.wikia.com/wiki/Contributing_to_Habitica\">contributor reward by helping the development of Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Go to <a href='/user/settings/subscription'>Settings > Subscription</a> to see your subscription details!",
|
||||
"timeTravelers": "مسافرين عبر الزمن",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>تايلر<%= linkEnd %> و<%= linkStartVicky %>فيكي<%= linkEnd %>",
|
||||
"timeTravelersTitle": "مسافرون عبر الزمن غامضون",
|
||||
"timeTravelersPopoverNoSub": "You'll need a Mystic Hourglass to summon the mysterious Time Travelers! <%= linkStart %>Subscribers<%= linkEnd %> earn one Mystic Hourglass for every three months of consecutive subscribing. Come back when you have a Mystic Hourglass, and the Time Travelers will fetch you a rare pet, mount, or Subscriber Item Set from the past... or maybe even the future.",
|
||||
"timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.",
|
||||
"timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.",
|
||||
"timeTravelersAlreadyOwned": "Congratulations! You already own everything the Time Travelers currently offer. Thanks for supporting the site!",
|
||||
"mysticHourglassPopover": "A Mystic Hourglass allows you to purchase certain limited-time items, such as monthly Mystery Item Sets and awards from world bosses, from the past!",
|
||||
"mysterySetNotFound": "Mystery set not found, or set already owned.",
|
||||
"mysteryItemIsEmpty": "Mystery items are empty",
|
||||
"mysteryItemOpened": "Mystery item opened.",
|
||||
@@ -161,13 +97,9 @@
|
||||
"subUpdateTitle": "تحديث",
|
||||
"subUpdateDescription": "قم بتحديث البطاقة من أجل الدفع.",
|
||||
"notEnoughHourglasses": "لا تمتلك ساعات رملية غامضة كافية.",
|
||||
"hourglassBuyEquipSetConfirm": "اشتر مجموعة الأغراض الكاملة هذه مقابل 1 ساعة رملية غامضة؟",
|
||||
"hourglassBuyItemConfirm": "اشتر هذا الغرض مقابل 1 ساعة رملية غامضة؟",
|
||||
"petsAlreadyOwned": "حيوان أليف مملوك مسبقاً.",
|
||||
"mountsAlreadyOwned": "ممتطى مملوك مسبقاً.",
|
||||
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "حيوان أليف لا يمكن شرائه بساعة رملية غامضة.",
|
||||
"mountsNotAllowedHourglass": "ممتطى لا يمكن شرائه بساعة رملية غامضة.",
|
||||
"hourglassPurchase": "تم شراء غرض باستخدام ساعة رملية غامضة!",
|
||||
"hourglassPurchaseSet": "تم شراء مجموعة أغراض باستخدام ساعة رملية غامضة!",
|
||||
"missingUnsubscriptionCode": "Missing unsubscription code.",
|
||||
@@ -185,14 +117,7 @@
|
||||
"couponUsed": "Coupon code already used.",
|
||||
"couponCodeRequired": "The coupon code is required.",
|
||||
"paypalCanceled": "Your subscription has been canceled",
|
||||
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
|
||||
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
|
||||
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
|
||||
"everyMonth": "Every Month",
|
||||
"everyXMonths": "Every <%= interval %> Months",
|
||||
"everyYear": "Every Year",
|
||||
"choosePaymentMethod": "Choose your payment method",
|
||||
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
|
||||
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
|
||||
"support": "SUPPORT",
|
||||
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
|
||||
@@ -200,18 +125,12 @@
|
||||
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
|
||||
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
|
||||
"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.",
|
||||
"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!",
|
||||
"haveCouponCode": "Do you have a coupon code?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
|
||||
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to <a href='/user/settings/subscription'>User icon > Settings > Subscription</a>.",
|
||||
"purchaseAll": "Purchase Set",
|
||||
"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",
|
||||
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "إكتمل الحذف ",
|
||||
"clearCompletedDescription": "يتم حذف المهام التي تم إكمالها بعد ٣٠ يومًا لغير المشتركين وبعد ٩٠ يومًا للمشتركين.",
|
||||
"clearCompletedConfirm": "هل أنت متأكد من أنك تريد حذف المهام التي أنجزتها؟",
|
||||
"sureDeleteCompletedTodos": "هل أنت متأكد من أنك تريد حذف المهام التي أنجزتها؟",
|
||||
"lotOfToDos": "تظهر آخر ٣٠ مهمة تم إكمالها هنا. يمكنك الاطلاع على المهام القديمة المكتملة من البيانات> أداة عرض البيانات أو البيانات> بيانات التصدير> بيانات المستخدم.",
|
||||
"deleteToDosExplanation": "إذا قمت بالضغط على الزر أدناه، فسيتم حذف جميع المهام المكتملة والمهام المؤرشفة نهائياً، باستثناء مهام التحديات النشطة وخطط المجموعة. قم بتصديرهم أولاً إذا كنت تريد الاحتفاظ بسجل لهم.",
|
||||
"addMultipleTip": "<strong>نصيحة: </strong> لإضافة عدة <%= taskType %>، افصل كل منها باستخدام فاصل أسطر (Shift + Enter) ثم اضغط على \"Enter\".",
|
||||
"addsingle": "أضف مهمة واحدة",
|
||||
"addATask": "اضف <%= type %>",
|
||||
"editATask": "حرر <%= type %>",
|
||||
"createTask": "أنشئ <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "هذه <%= taskType %> التي تخصك",
|
||||
"habit": "عادة",
|
||||
"habits": "العادات",
|
||||
"newHabit": "عادة جديدة",
|
||||
"newHabitBulk": "عادات جديدة (واحدة لكل سطر)",
|
||||
"habitsDesc": "العادات ليس لها موعد صارم. تستطيع أن تشطبهم عدة مرات في اليوم.",
|
||||
"positive": "إيجابي",
|
||||
"negative": "سلبي",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "حفظ",
|
||||
"addChecklist": "إضافة قائمة",
|
||||
"checklist": "القائمة",
|
||||
"checklistText": "قسم المهام إلى أجزاء أصغر! القوائم المرجعية ترفع من نقاط الخبرة و الذهب الناتج من المهام، و تقلل ضرر اليوميات.",
|
||||
"newChecklistItem": "عنصر قائمة مراجعة جديد",
|
||||
"expandChecklist": "Expand Checklist",
|
||||
"collapseChecklist": "Collapse Checklist",
|
||||
"text": "العنوان",
|
||||
"extraNotes": "ملاحظات إضافية",
|
||||
"notes": "الملاحظات",
|
||||
"direction/Actions": "اتجاهات/أفعال",
|
||||
"advancedSettings": "إعدادات متقدمة",
|
||||
"taskAlias": "الإسم المستعار للمهمة ",
|
||||
"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": "الصعوبة",
|
||||
"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": "تافه",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "متوسط",
|
||||
"hard": "صعب",
|
||||
"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. <br/><br/> You can set your Automatic Allocation method to Task Based in the Stats section of your profile.",
|
||||
"progress": "تقدم",
|
||||
"daily": "مهمة يومية",
|
||||
"dailies": "اليوميات",
|
||||
"newDaily": "يومية جديدة",
|
||||
"newDailyBulk": "يوميات جديدة (واحدة لكل سطر)",
|
||||
"dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
|
||||
"streakCounter": "عداد الشريط",
|
||||
"repeat": "تكرار",
|
||||
"repeats": "يتكرر",
|
||||
"repeatEvery": "تكرار كل",
|
||||
"repeatOn": "Repeat On",
|
||||
"repeatHelpTitle": "كم مرة ينبغي تكرار هذه المهمة؟",
|
||||
"dailyRepeatHelpContent": "هذه المهمة ستكون مستحقة كل X يوم. يمكنك أن تحدد تلك الفترة في الأسفل.",
|
||||
"weeklyRepeatHelpContent": "هذه المهمة ستكون مستحقة في الأيام المبرزة في الأسفل. إضغط على يوم لتفعيله أو إيقافه.",
|
||||
"repeatDays": "كل س يوم",
|
||||
"repeatWeek": "في أيام معينة من الأسبوع",
|
||||
"day": "يوم",
|
||||
"days": "أيام",
|
||||
"restoreStreak": "Adjust Streak",
|
||||
"resetStreak": "Reset Streak",
|
||||
"todo": "مهمة",
|
||||
"todos": "المهام",
|
||||
"newTodo": "مهمة جديدة",
|
||||
"newTodoBulk": "مهام جديدة (واحدة كل سطر)",
|
||||
"todosDesc": "تُنجَز المهام مرة واحدة فقط. أضف قوائم إلى المهام الخصة بك لتزيد قيمتها.",
|
||||
"dueDate": "تاريخ الاستحقاق",
|
||||
"remaining": "متبقية",
|
||||
"complete": "منجزة",
|
||||
"complete2": "Complete",
|
||||
"dated": "بتاريخ",
|
||||
"today": "اليوم",
|
||||
"dueIn": "Due <%= dueIn %>",
|
||||
"due": "مستحقة",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "مكافأة",
|
||||
"rewards": "المكافآت",
|
||||
"rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
|
||||
"ingamerewards": "معدات ومهارات",
|
||||
"gold": "ذهب",
|
||||
"silver": "الفضة (100 فضة = 1 ذهب)",
|
||||
"newReward": "مكافأة جديدة",
|
||||
"newRewardBulk": "مكافآت جديدة (واحدة كل سطر)",
|
||||
"price": "السعر",
|
||||
"tags": "الأوسمة",
|
||||
"editTags": "تحرير",
|
||||
"newTag": "وسم جديد",
|
||||
"clearTags": "إزالة",
|
||||
"hideTags": "إخفاء",
|
||||
"showTags": "إظهار",
|
||||
"editTags2": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "تاريخ البداية",
|
||||
"startDateHelpTitle": "متى ينبغي أن تبدأ هذه المهمة؟",
|
||||
"startDateHelp": "حدد اليوم الذي تبدأ فيه هذه المهمة. لن تكون المهمة مستحقة في الأيام قبل ذلك التاريخ.",
|
||||
"streaks": "Streak Achievements",
|
||||
"streakName": "<%= count %> Streak Achievements",
|
||||
"streakText": "Has performed <%= count %> 21-day streaks on Dailies",
|
||||
@@ -113,38 +80,15 @@
|
||||
"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": "يوم مثالي",
|
||||
"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": "لقد حصلت على إنجاز \"أخصائي شرائط\"! هدف ال 21 يوم معلم هام لتكوين العادات. يمكن الاستمرار بالحصول على هذا الإنجاز لكل 21 يوم إضافي، على هذه اليومية أو غيرها!",
|
||||
"fortifyName": "جرعة تحصين",
|
||||
"fortifyPop": "إرجاع جميع المهام إلى القيمة المحايدة (اللون الأصفر)، وإسترجاع جميع نقاط الصحة المفقودة.",
|
||||
"fortify": "تحصين",
|
||||
"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": "هل أنت متأكد؟",
|
||||
"fortifyComplete": "Fortify complete!",
|
||||
"deleteTask": "احذف هذه المهمة",
|
||||
"sureDelete": "هل أنت متأكد من أنك تريد حذف هذه المهامة؟",
|
||||
"streakCoins": "إضافي شرائطي!",
|
||||
"taskToTop": "إلى الأعلى",
|
||||
"taskToBottom": "إلى الأسفل",
|
||||
"emptyTask": "أدخل عنوان المهمة أولاً.",
|
||||
"dailiesRestingInInn": "أنت تستريح في الفندق! يومياتك لن تؤذيك اليوم، ولكن سيتم تجديدهن في كل يوم. إذا كنت في مغامرة، فإنك لن تسبب ضرر أو تجمع أغراض إلى أن تسجل خروجك من الفندق، ولكن لا زال من الممكن أن يصيبك رئيس وحوش إذا لم ينفذ زملائك في الفريق يومياتهم الخاصة.",
|
||||
"habitHelp1": "العادات الجيدة هى الأشياء التى تفعلها انت غالباً. تمنحك ذهب وخبرة كل مرة تنقر فيها على <%= plusIcon %> .",
|
||||
"habitHelp2": "العادات السيئة هى الأشياء التى ينبغى أن تتجنبها. وهى تضر بصحتك كل مرة تنقر فيها على <%= minusIcon %> .",
|
||||
"habitHelp3": "للإلهام، فلترى <a href='http://habitica.wikia.com/wiki/Sample_Habits' target='_blank'>عينات للعادات</a> !",
|
||||
"newbieGuild": "المزيد من الأسئلة؟ اسأل في <%= linkStart %> نقابة Habitica Help <%= linkEnd %>!",
|
||||
"dailyHelp1": "اليوميات تتكرر <%= emphasisStart %>كل يوم<%= emphasisEnd %> فعالة فيه. اضغط على رمز <%= pencilIcon %> لتغيير الأيام التي تكون اليومية فعالة فيها.",
|
||||
"dailyHelp2": "إذا لم تكمل اليوميات الفعالة، ستخسر صحة عند نهاية يومك.",
|
||||
"dailyHelp3": "اليوميات تزداد <%= emphasisStart %>إحمراراً<%= emphasisEnd %> عندما تفوتك، و<%= emphasisStart %>زرقةً<%= emphasisEnd %> عندما تنجزها. كلما زادت اليومية إحمراراً، كلما كافأتك أكثر... أو آذتك.",
|
||||
"dailyHelp4": "لتغير متى يبدأ يومك، اذهب إلى <%= linkStart %> Settings > Site<%= linkEnd %> ثم إلى بداية يوم مخصصة. ",
|
||||
"dailyHelp5": "للإلهام، فلترى <a href='http://habitica.wikia.com/wiki/Sample_Dailies' target='_blank'>عينات للمهمات اليومية</a> !",
|
||||
"toDoHelp1": "المهام تبدأ باللون الأصفر ثم تصبح أكثر حمرةً (أكثر قيمة) كلما طالت مدة تنفيذها.",
|
||||
"toDoHelp2": "المهام لا تؤذيك أبداً! فقط تعطيك خبرة وذهب.",
|
||||
"toDoHelp3": "تقسيم المهمة إلى نقاط أصغر سيجعلها أقل ترويعاً وسيزيد نقاطك!",
|
||||
"toDoHelp4": "للإلهام، تحقق من نماذج المهمات، باللغة الانجليزية، الموجودة <a href='http://habitica.wikia.com/wiki/Sample_To-Dos' target='_blank'>هنا</a>!",
|
||||
"rewardHelp1": "المعدات التي تشتريها لشخصيتك يتم تخزينها في <%= linkStart %>Inventory > Equipment<%= linkEnd %>.",
|
||||
"rewardHelp2": "Equipment affects your Stats (<%= linkStart %>Avatar > Stats<%= linkEnd %>).",
|
||||
"rewardHelp3": "معدات خاصة ستظهر هنا أثناء الأحداث العالمية.",
|
||||
"rewardHelp4": "لا تخف أن تحدد مكافئات خاصة! انظر إلى هذه <a href='http://habitica.wikia.com/wiki/Sample_Custom_Rewards' target='_blank'> النماذح باللغة الانجليزية</a>.",
|
||||
"clickForHelp": "اضغط للمساعدة",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "لا يمكن نقل مهمة تم إكمالها.",
|
||||
"directionUpDown": "\"direction\" is required and must be 'up' or 'down'.",
|
||||
"alreadyTagged": "The task is already tagged with given tag.",
|
||||
"strengthExample": "متعلقاً بالممارسة والنشاط",
|
||||
"intelligenceExample": "Relating to academic or mentally challenging pursuits",
|
||||
"perceptionExample": "متعلقاً بالعمل أو المهام المالية .",
|
||||
"constitutionExample": "متعلقاً بالصحة والعافية والتفاعل الإجتماعى ",
|
||||
"counterPeriod": "Counter Resets Every",
|
||||
"counterPeriodDay": "Day",
|
||||
"counterPeriodWeek": "Week",
|
||||
"counterPeriodMonth": "Month",
|
||||
"habitCounter": "Counter (Resets <%= frequency %>)",
|
||||
"habitCounterUp": "Positive Counter (Resets <%= frequency %>)",
|
||||
"habitCounterDown": "Negative Counter (Resets <%= frequency %>)",
|
||||
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
|
||||
"taskApprovalHasBeenRequested": "Approval has been requested",
|
||||
"taskApprovalWasNotRequested": "Only a task waiting for approval can be marked as needing more work",
|
||||
"approvals": "Approvals",
|
||||
"approvalRequired": "Needs Approval",
|
||||
"repeatZero": "Daily is never due",
|
||||
"repeatType": "Repeat Type",
|
||||
"repeatTypeHelpTitle": "What kind of repeat is this?",
|
||||
"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": "أسبوعي",
|
||||
"monthly": "شهري",
|
||||
"yearly": "سنوي",
|
||||
"onDays": "في أيام",
|
||||
"summary": "Summary",
|
||||
"repeatsOn": "Repeats On",
|
||||
"dayOfWeek": "Day of the Week",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "أسابيع",
|
||||
"year": "سنة",
|
||||
"years": "سنوات",
|
||||
"groupTasksByChallenge": "Group tasks by challenge title",
|
||||
"taskNotes": "Task Notes",
|
||||
"monthlyRepeatHelpContent": "This task will be due every X months",
|
||||
"yearlyRepeatHelpContent": "This task will be due every X years",
|
||||
"resets": "Resets",
|
||||
"summaryStart": "Repeats <%= frequency %> every <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Next Due Dates",
|
||||
"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": "ابدأ يومي الجديد!",
|
||||
"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...",
|
||||
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
|
||||
"errorTemporaryItem": "This item is temporary and cannot be pinned."
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "Language",
|
||||
"americanEnglishGovern": "In the event of a discrepancy in the translations, the American English version governs.",
|
||||
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"/groups/guild/7732f64c-33ee-4cce-873c-fc28f147a6f7\">the Aspiring Linguists Guild</a>!",
|
||||
"showHeaderPop": "Show your avatar, Health/Experience bars, and party.",
|
||||
"stickyHeader": "Sticky header",
|
||||
"stickyHeaderPop": "Affix the header to the top of the screen. Unchecked means it scrolls out of view.",
|
||||
"newTaskEdit": "Open new tasks in edit mode",
|
||||
"newTaskEditPop": "With this option set, new tasks will immediately open for you to add details like notes and tags.",
|
||||
"dailyDueDefaultView": "Set Dailies default to 'due' tab",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "Show chat messages in reverse order",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
|
||||
"suppressStreakModal": "Don't show popup when attaining a Streak achievement",
|
||||
"showTour": "Show Tour",
|
||||
"restartTour": "Restart the introductory tour from when you first joined Habitica.",
|
||||
"showBailey": "Show Bailey",
|
||||
"showBaileyPop": "Bring Bailey the Town Crier out of hiding so you can review past news.",
|
||||
"fixVal": "Fix Character Values",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Invalid value: Level must be 1 or greater.",
|
||||
"enableClass": "Enable Class System",
|
||||
"enableClassPop": "You opted out of the class system initially. Would you like now to opt-in?",
|
||||
"classTourPop": "Show the tour for using the class system.",
|
||||
"resetAccount": "Reset Account",
|
||||
"resetAccPop": "Start over, removing all levels, gold, gear, history, and tasks.",
|
||||
"deleteAccount": "Delete Account",
|
||||
"deleteAccPop": "Cancel and remove your Habitica account.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "(JSON)",
|
||||
"customDayStart": "Custom Day Start",
|
||||
"sureChangeCustomDayStartTime": "Are you sure you want to change your Custom Day Start time? Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before then!",
|
||||
"changeCustomDayStart": "Change Custom Day Start?",
|
||||
"sureChangeCustomDayStart": "Are you sure you want to change your custom day start?",
|
||||
"customDayStartHasChanged": "Your custom day start has changed.",
|
||||
"nextCron": "Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before this time!",
|
||||
"customDayStartInfo1": "Habitica defaults to check and reset your Dailies at midnight in your own time zone each day. You can customize that time here.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "Fix Values",
|
||||
"fixValuesText1": "If you've encountered a bug or made a mistake that unfairly changed your character (damage you shouldn't have taken, Gold you didn't really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you'll sabotage your own habit-building!",
|
||||
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
|
||||
"disabledWinterEvent": "Disabled during Winter Wonderland Event Pt.4 (since the rewards are gold-purchaseable).",
|
||||
"fix21Streaks": "21-Day Streaks",
|
||||
"discardChanges": "Discard Changes",
|
||||
"deleteDo": "Do it, delete my account!",
|
||||
"enterNumber": "Please enter a number between 0 and 24",
|
||||
"fillAll": "Please fill out all fields",
|
||||
"invalidPasswordResetCode": "The supplied password reset code is invalid or has expired.",
|
||||
"passwordChangeSuccess": "Your password was successfully changed to the one you just chose. You can now use it to access your account.",
|
||||
"passwordSuccess": "Password successfully changed",
|
||||
"usernameSuccess": "Username successfully changed",
|
||||
"displayNameSuccess": "Display name successfully changed",
|
||||
"emailSuccess": "Email successfully changed",
|
||||
"detachSocial": "De-register <%= network %>",
|
||||
"detachedSocial": "Successfully removed <%= network %> authentication from your account",
|
||||
"addedLocalAuth": "Successfully added local authentication",
|
||||
"data": "Data",
|
||||
"exportData": "Export Data",
|
||||
"usernameOrEmail": "Username or Email",
|
||||
"email": "Email",
|
||||
"registerWithSocial": "Register with <%= network %>",
|
||||
"registeredWithSocial": "Registered with <%= network %>",
|
||||
"loginNameDescription": "This is what you use to log in to Habitica. To change it, use the form below. If instead you want to change the Display Name that appears on your avatar and in chat messages, go to the User Icon > Profile and click the Edit button.",
|
||||
"emailNotifications": "Email Notifications",
|
||||
"wonChallenge": "You won a Challenge!",
|
||||
"newPM": "Received Private Message",
|
||||
@@ -118,7 +102,6 @@
|
||||
"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",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "Invited to Quest",
|
||||
"kickedGroup": "Kicked from group",
|
||||
"remindersToLogin": "Reminders to check in to Habitica",
|
||||
"subscribeUsing": "Subscribe using",
|
||||
"unsubscribedSuccessfully": "Unsubscribed successfully!",
|
||||
"unsubscribedTextUsers": "You have successfully unsubscribed from all Habitica emails. You can enable only the emails you want to receive from <a href=\"/user/settings/notifications\">Settings > > Notifications</a> (requires login).",
|
||||
"unsubscribedTextOthers": "You won't receive any other email from Habitica.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications",
|
||||
"correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.",
|
||||
"subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months",
|
||||
"recurringText": "recurring",
|
||||
"benefits": "Benefits",
|
||||
"coupon": "Coupon",
|
||||
"couponPlaceholder": "Enter Coupon Code",
|
||||
"couponText": "We sometimes have events and give out coupon codes for special gear. (eg, those who stop by our Wondercon booth)",
|
||||
"apply": "Apply",
|
||||
"resubscribe": "Resubscribe",
|
||||
"promoCode": "Promo Code",
|
||||
"promoCodeApplied": "Promo Code Applied! Check your inventory",
|
||||
"promoPlaceholder": "Enter Promotion Code",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "Enabled",
|
||||
"webhookURL": "Webhook URL",
|
||||
"invalidUrl": "invalid url",
|
||||
"invalidEnabled": "the \"enabled\" parameter should be a boolean.",
|
||||
"invalidWebhookId": "the \"id\" parameter should be a valid UUID.",
|
||||
"missingWebhookId": "The webhook's id is required.",
|
||||
"invalidWebhookType": "\"<%= type %>\" is not a valid value for the parameter \"type\".",
|
||||
"webhookBooleanOption": "\"<%= option %>\" must be a Boolean value.",
|
||||
"webhookIdAlreadyTaken": "A webhook with the id <%= id %> already exists.",
|
||||
"noWebhookWithId": "There is no webhook with the id <%= id %>.",
|
||||
"regIdRequired": "RegId is required",
|
||||
"invalidPushClient": "Invalid client. Only Official Habitica clients can receive push notifications.",
|
||||
"pushDeviceAdded": "Push device added successfully",
|
||||
"pushDeviceAlreadyAdded": "The user already has the push device",
|
||||
"pushDeviceNotFound": "The user has no push device with this id.",
|
||||
"pushDeviceRemoved": "Push device removed successfully.",
|
||||
"buyGemsGoldCap": "Cap raised to <%= amount %>",
|
||||
"mysticHourglass": "<%= amount %> Mystic Hourglass",
|
||||
"mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.",
|
||||
"purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.",
|
||||
"consecutiveSubscription": "Consecutive Subscription",
|
||||
"consecutiveMonths": "Consecutive Months:",
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "Subscription",
|
||||
"subscriptions": "Subscriptions",
|
||||
"subDescription": "Buy Gems with gold, get monthly mystery items, retain progress history, double daily drop-caps, support the devs. Click for more info.",
|
||||
"sendGems": "Send Gems",
|
||||
"buyGemsGold": "Buy Gems with Gold",
|
||||
"buyGemsGoldText": "Alexander the Merchant will sell you Gems at a cost of 20 Gold per Gem. His monthly shipments are initially capped at 25 Gems per month, but for every 3 consecutive months that you are subscribed, this cap increases by 5 Gems, up to a maximum of 50 Gems per month!",
|
||||
"mustSubscribeToPurchaseGems": "Must subscribe to purchase gems with GP",
|
||||
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"retainHistory": "Retain additional history entries",
|
||||
"retainHistoryText": "Makes completed To-Dos and task history available for longer.",
|
||||
"doubleDrops": "Daily drop caps doubled",
|
||||
"doubleDropsText": "Complete your stable faster!",
|
||||
"mysteryItem": "Exclusive monthly items",
|
||||
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
|
||||
"supportDevs": "Supports the developers",
|
||||
"supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!",
|
||||
"exclusiveJackalopePet": "Exclusive pet",
|
||||
"exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!",
|
||||
"giftSubscription": "Want to gift a subscription to someone?",
|
||||
"giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.",
|
||||
"giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
|
||||
"giftSubscriptionText3": "Select \"subscription\" and enter your payment information.",
|
||||
"giftSubscriptionText4": "Thanks for supporting Habitica!",
|
||||
"monthUSD": "USD / Month",
|
||||
"organization": "Organization",
|
||||
"groupPlans": "Group Plans",
|
||||
"indivPlan1": "For individuals, Habitica is free to play. Even for small interest groups, free (or cheap)",
|
||||
"indivPlan2": "can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more.",
|
||||
"groupText1": "But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of Habitica for your group or organization, secure and independent of",
|
||||
"groupText2": "See below for additional plan perks, and contact us for more information!",
|
||||
"planFamily": "Family (Coming Soon)",
|
||||
"planGroup": "Group (Coming Soon)",
|
||||
"dedicatedHost": "Dedicated Hosting",
|
||||
"dedicatedHostText": "Dedicated Hosting: you get your own database and server hosted by Habitica, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as Habitica proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",
|
||||
"individualSub": "Individual Subscription",
|
||||
"subscribe": "Subscribe",
|
||||
"subscribed": "Subscribed",
|
||||
"nowSubscribed": "You are now subscribed to Habitica!",
|
||||
"manageSub": "Click to manage subscription",
|
||||
"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 <a href=\"https://support.apple.com/en-us/HT202039\">Apple's official instructions</a> 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",
|
||||
"morePlans": "More Plans<br>Coming Soon",
|
||||
"organizationSub": "Private Organization",
|
||||
"organizationSubText": "Members of the organization participate outside of Habitica proper, providing focus for your participants.",
|
||||
"hostingType": "Hosting Type",
|
||||
"hostingTypeText": "Shared hosting means your organization uses the same database as Habitica proper even though you don't interact with Habitica. Dedicated means you get your own database and server. You can choose to have Habitica host your server/db, or we can install it on your own servers.",
|
||||
"dedicated": "Dedicated",
|
||||
"customDomain": "Custom Domain",
|
||||
"customDomainText": "We can optionally give you your own domain for the installation.",
|
||||
"maxPlayers": "Max Participants",
|
||||
"maxPlayersText": "The maximum number of players in your private organization.",
|
||||
"unlimited": "Unlimited",
|
||||
"priSupport": "Priority Support On Tickets & Hosting",
|
||||
"priSupportText": "First to be provided for with support.",
|
||||
"timeSupport": "Support Hours / Month",
|
||||
"timeSupportText": "We will provide support for training, bugs, installation, and feature requests.",
|
||||
"gameFeatures": "Game features",
|
||||
"gold2Gem": "Gems purchasable with gold",
|
||||
"gold2GemText": "Members will be able to purchase Gems with gold, meaning none of your participants need to buy anything with real money.",
|
||||
"infiniteGem": "Infinite leader Gems",
|
||||
"infiniteGemText": "We will provide the organization leaders with as many Gems as they need, for things like challenge prizes, guild-creation, etc.",
|
||||
"notYetPlan": "Plan not yet available, but click to contact us and we'll keep you updated.",
|
||||
"contactUs": "Contact Us",
|
||||
"checkout": "Checkout",
|
||||
"sureCancelSub": "Are you sure you want to cancel your subscription?",
|
||||
"subCanceled": "Subscription will become inactive on",
|
||||
"buyGemsGoldTitle": "To Buy Gems with Gold",
|
||||
"becomeSubscriber": "Become a Subscriber",
|
||||
"subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
|
||||
"subGemName": "Subscriber Gems",
|
||||
"freeGemsTitle": "Obtain Gems for Free",
|
||||
"maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!",
|
||||
"buyGemsAllow1": "You can buy",
|
||||
"buyGemsAllow2": "more Gems this month",
|
||||
"purchaseGemsSeparately": "Purchase Additional Gems",
|
||||
"subFreeGemsHow": "Habitica players can earn Gems for free by winning <a href=\"/challenges/findChallenges\">challenges</a> that award Gems as a prize, or as a <a href=\"http://habitica.wikia.com/wiki/Contributing_to_Habitica\">contributor reward by helping the development of Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Go to <a href='/user/settings/subscription'>Settings > Subscription</a> to see your subscription details!",
|
||||
"timeTravelers": "Time Travelers",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>Tyler<%= linkEnd %> and <%= linkStartVicky %>Vicky<%= linkEnd %>",
|
||||
"timeTravelersTitle": "Mysterious Time Travelers",
|
||||
"timeTravelersPopoverNoSub": "You'll need a Mystic Hourglass to summon the mysterious Time Travelers! <%= linkStart %>Subscribers<%= linkEnd %> earn one Mystic Hourglass for every three months of consecutive subscribing. Come back when you have a Mystic Hourglass, and the Time Travelers will fetch you a rare pet, mount, or Subscriber Item Set from the past... or maybe even the future.",
|
||||
"timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.",
|
||||
"timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.",
|
||||
"timeTravelersAlreadyOwned": "Congratulations! You already own everything the Time Travelers currently offer. Thanks for supporting the site!",
|
||||
"mysticHourglassPopover": "A Mystic Hourglass allows you to purchase certain limited-time items, such as monthly Mystery Item Sets and awards from world bosses, from the past!",
|
||||
"mysterySetNotFound": "Mystery set not found, or set already owned.",
|
||||
"mysteryItemIsEmpty": "Mystery items are empty",
|
||||
"mysteryItemOpened": "Mystery item opened.",
|
||||
@@ -161,13 +97,9 @@
|
||||
"subUpdateTitle": "Update",
|
||||
"subUpdateDescription": "Update the card to be charged.",
|
||||
"notEnoughHourglasses": "You don't have enough Mystic Hourglasses.",
|
||||
"hourglassBuyEquipSetConfirm": "Buy this full set of items for 1 Mystic Hourglass?",
|
||||
"hourglassBuyItemConfirm": "Buy this item for 1 Mystic Hourglass?",
|
||||
"petsAlreadyOwned": "Pet already owned.",
|
||||
"mountsAlreadyOwned": "Mount already owned.",
|
||||
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.",
|
||||
"mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.",
|
||||
"hourglassPurchase": "Purchased an item using a Mystic Hourglass!",
|
||||
"hourglassPurchaseSet": "Purchased an item set using a Mystic Hourglass!",
|
||||
"missingUnsubscriptionCode": "Missing unsubscription code.",
|
||||
@@ -185,14 +117,7 @@
|
||||
"couponUsed": "Coupon code already used.",
|
||||
"couponCodeRequired": "The coupon code is required.",
|
||||
"paypalCanceled": "Your subscription has been canceled",
|
||||
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
|
||||
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
|
||||
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
|
||||
"everyMonth": "Every Month",
|
||||
"everyXMonths": "Every <%= interval %> Months",
|
||||
"everyYear": "Every Year",
|
||||
"choosePaymentMethod": "Choose your payment method",
|
||||
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
|
||||
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
|
||||
"support": "SUPPORT",
|
||||
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
|
||||
@@ -200,18 +125,12 @@
|
||||
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
|
||||
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
|
||||
"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.",
|
||||
"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!",
|
||||
"haveCouponCode": "Do you have a coupon code?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
|
||||
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to <a href='/user/settings/subscription'>User icon > Settings > Subscription</a>.",
|
||||
"purchaseAll": "Purchase Set",
|
||||
"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",
|
||||
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "Выдаліць завершаныя",
|
||||
"clearCompletedDescription": "Completed To-Dos are deleted after 30 days for non-subscribers and 90 days for subscribers.",
|
||||
"clearCompletedConfirm": "Are you sure you want to delete your completed To-Dos?",
|
||||
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed To-Dos?",
|
||||
"lotOfToDos": "Your most recent 30 completed To-Dos are shown here. You can see older completed To-Dos from Data > Data Display Tool or Data > Export Data > User Data.",
|
||||
"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": "<strong>Tip:</strong> To add multiple <%= taskType %>, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
|
||||
"addsingle": "Дадаць адзін",
|
||||
"addATask": "Add a <%= type %>",
|
||||
"editATask": "Edit a <%= type %>",
|
||||
"createTask": "Create <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "These are your <%= taskType %>",
|
||||
"habit": "Habit",
|
||||
"habits": "Звычкі",
|
||||
"newHabit": "Новая звычка",
|
||||
"newHabitBulk": "Новыя звычкі (па адной у радку)",
|
||||
"habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
|
||||
"positive": "Positive",
|
||||
"negative": "Negative",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "Захаваць",
|
||||
"addChecklist": "Дадаць спіс",
|
||||
"checklist": "Спіс",
|
||||
"checklistText": "Break a task into smaller pieces! Checklists increase the Experience and Gold gained from a To-Do, and reduce the damage caused by a Daily.",
|
||||
"newChecklistItem": "New checklist item",
|
||||
"expandChecklist": "Expand Checklist",
|
||||
"collapseChecklist": "Collapse Checklist",
|
||||
"text": "Title",
|
||||
"extraNotes": "Дадатковыя нататкі",
|
||||
"notes": "Notes",
|
||||
"direction/Actions": "Direction/Actions",
|
||||
"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": "Складанасць",
|
||||
"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",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "Нармальна",
|
||||
"hard": "Цяжка",
|
||||
"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. <br/><br/> You can set your Automatic Allocation method to Task Based in the Stats section of your profile.",
|
||||
"progress": "Прагрэс",
|
||||
"daily": "Daily",
|
||||
"dailies": "Штодзённыя",
|
||||
"newDaily": "Новае штодзённае заданне",
|
||||
"newDailyBulk": "Новыя штдзённыя заданні (па адным у радку)",
|
||||
"dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
|
||||
"streakCounter": "Лічыльнік серыі",
|
||||
"repeat": "Паўтор",
|
||||
"repeats": "Repeats",
|
||||
"repeatEvery": "Паўтараць кожныя",
|
||||
"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.",
|
||||
"repeatDays": "Кожныя Х дзён",
|
||||
"repeatWeek": "У пэўныя дні на тыдні",
|
||||
"day": "Дзень",
|
||||
"days": "Дні",
|
||||
"restoreStreak": "Adjust Streak",
|
||||
"resetStreak": "Reset Streak",
|
||||
"todo": "To-Do",
|
||||
"todos": "Задачы",
|
||||
"newTodo": "Новая задача",
|
||||
"newTodoBulk": "Новыя задачы (па адной у радку)",
|
||||
"todosDesc": "To-Dos need to be completed once. Add checklists to your To-Dos to increase their value.",
|
||||
"dueDate": "Выканаць да",
|
||||
"remaining": "Актыўныя",
|
||||
"complete": "Зробленыя",
|
||||
"complete2": "Complete",
|
||||
"dated": "З датай",
|
||||
"today": "Today",
|
||||
"dueIn": "Due <%= dueIn %>",
|
||||
"due": "Due",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "Reward",
|
||||
"rewards": "Узнагароды",
|
||||
"rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
|
||||
"ingamerewards": "Экипіроука і навыкі",
|
||||
"gold": "Золата",
|
||||
"silver": "Срэбра (100 срэбра = 1 золата)",
|
||||
"newReward": "Новая ўзнагарода",
|
||||
"newRewardBulk": "Новыя ўзнагароды (па адной у радку)",
|
||||
"price": "Кошт",
|
||||
"tags": "Tags",
|
||||
"editTags": "Рэдагаваць",
|
||||
"newTag": "New Tag",
|
||||
"clearTags": "Ачысціць",
|
||||
"hideTags": "Схаваць",
|
||||
"showTags": "Паказаць",
|
||||
"editTags2": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "Дата пачатку",
|
||||
"startDateHelpTitle": "When should this task start?",
|
||||
"startDateHelp": "Set the date for which this task takes effect. Will not be due on earlier days.",
|
||||
"streaks": "Streak Achievements",
|
||||
"streakName": "<%= count %> Streak Achievements",
|
||||
"streakText": "Has performed <%= count %> 21-day streaks on Dailies",
|
||||
@@ -113,38 +80,15 @@
|
||||
"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": "Выдатны дзень",
|
||||
"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": "Эликсір умацавання",
|
||||
"fortifyPop": "Return all tasks to neutral value (yellow color), and restore all lost Health.",
|
||||
"fortify": "Умацаванне",
|
||||
"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?",
|
||||
"streakCoins": "Бонус за серыю!",
|
||||
"taskToTop": "To top",
|
||||
"taskToBottom": "To bottom",
|
||||
"emptyTask": "Спачатку ўвядзіце назву задання.",
|
||||
"dailiesRestingInInn": "Вы адпачываеце ў гасцініцы! Прапушчаныя штодзённыя заданні НЕ зробяць вам шкоду ў канцы сённяшняга дня, але адзнакі аб іх выкананні БУДУЦЬ скідвацца кожны дзень. Калі ваша каманда ўдзельнічае у квэсце, вы не будзеце наносіць страты / знаходзіць прадметы, пакуль не пакінеце гасцініцу. У той жа час, Бос ўсё ж будзе наносіць страты вам за штодзённыя заданні, прапушчаныя вашымі таварышамі па камандзе.",
|
||||
"habitHelp1": "Добрыя звычкі - рэчы, якія вы робіце часта. Яны ўзнагароджваюцца золатам і вопытам кожны раз, калі вы націснёце <% = plusIcon%>.",
|
||||
"habitHelp2": "Дрэнныя звычкі - рэчы, якіх вы хочаце пазбегнуць. Яны адымаюць здароў'е кожны раз, націснеце <%= minusIcon %>.",
|
||||
"habitHelp3": "Для натхнення паглядзіце гэтыя <a href='http://habitica.wikia.com/wiki/Sample_Habits' target='_blank'>узоры Звычак</a>!",
|
||||
"newbieGuild": "More questions? Ask in the <%= linkStart %>Habitica Help guild<%= linkEnd %>!",
|
||||
"dailyHelp1": "Dailies repeat <%= emphasisStart %>every day<%= emphasisEnd %> that they are active. Click the <%= pencilIcon %> to change the days a Daily is active.",
|
||||
"dailyHelp2": "If you don't complete active Dailies, you lose Health when your day rolls over.",
|
||||
"dailyHelp3": "Dailies turn <%= emphasisStart %>redder<%= emphasisEnd %> when you miss them, and <%= emphasisStart %>bluer<%= emphasisEnd %> when you complete them. The redder the Daily, the more it will reward you... or hurt you.",
|
||||
"dailyHelp4": "To change when your day rolls over, go to <%= linkStart %> Settings > Site<%= linkEnd %> > Custom Day Start.",
|
||||
"dailyHelp5": "Для натхнення паглядзіце гэтыя <a href='http://habitica.wikia.com/wiki/Sample_Dailies' target='_blank'>узоры Штодзённых заданняў</a>!",
|
||||
"toDoHelp1": "To-Dos start yellow, and get redder (more valuable) the longer it takes to complete them.",
|
||||
"toDoHelp2": "Задачы ніколі не наносяць вам шкоду! Яны толькі узнагароджваюць золатам і вопытам.",
|
||||
"toDoHelp3": "Падзяленне задач на спіс малых заданняў зробіць іх меньш страшнымі і павялічыць узнагароду!",
|
||||
"toDoHelp4": "Для натхнення паглядзіце гэтыя <a href='http://habitica.wikia.com/wiki/Sample_To-Dos' target='_blank'>узоры Задач</a>!",
|
||||
"rewardHelp1": "The Equipment you buy for your avatar is stored in <%= linkStart %>Inventory > Equipment<%= 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 <a href='http://habitica.wikia.com/wiki/Sample_Custom_Rewards' target='_blank'>some samples here</a>.",
|
||||
"clickForHelp": "Націсніце, калі патрэбна дапамога",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "Can't move a completed todo.",
|
||||
"directionUpDown": "\"direction\" is required and must be 'up' or 'down'.",
|
||||
"alreadyTagged": "The task is already tagged with given tag.",
|
||||
"strengthExample": "Relating to exercise and activity",
|
||||
"intelligenceExample": "Relating to academic or mentally challenging pursuits",
|
||||
"perceptionExample": "Relating to work or financial tasks",
|
||||
"constitutionExample": "Relating to health, wellness, and social interaction",
|
||||
"counterPeriod": "Counter Resets Every",
|
||||
"counterPeriodDay": "Day",
|
||||
"counterPeriodWeek": "Week",
|
||||
"counterPeriodMonth": "Month",
|
||||
"habitCounter": "Counter (Resets <%= frequency %>)",
|
||||
"habitCounterUp": "Positive Counter (Resets <%= frequency %>)",
|
||||
"habitCounterDown": "Negative Counter (Resets <%= frequency %>)",
|
||||
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
|
||||
"taskApprovalHasBeenRequested": "Approval has been requested",
|
||||
"taskApprovalWasNotRequested": "Only a task waiting for approval can be marked as needing more work",
|
||||
"approvals": "Approvals",
|
||||
"approvalRequired": "Needs Approval",
|
||||
"repeatZero": "Daily is never due",
|
||||
"repeatType": "Repeat Type",
|
||||
"repeatTypeHelpTitle": "What kind of repeat is this?",
|
||||
"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": "Weekly",
|
||||
"monthly": "Monthly",
|
||||
"yearly": "Yearly",
|
||||
"onDays": "On Days",
|
||||
"summary": "Summary",
|
||||
"repeatsOn": "Repeats On",
|
||||
"dayOfWeek": "Day of the Week",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "Weeks",
|
||||
"year": "Year",
|
||||
"years": "Years",
|
||||
"groupTasksByChallenge": "Group tasks by challenge title",
|
||||
"taskNotes": "Task Notes",
|
||||
"monthlyRepeatHelpContent": "This task will be due every X months",
|
||||
"yearlyRepeatHelpContent": "This task will be due every X years",
|
||||
"resets": "Resets",
|
||||
"summaryStart": "Repeats <%= frequency %> every <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Next Due Dates",
|
||||
"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",
|
||||
"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...",
|
||||
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
|
||||
"errorTemporaryItem": "This item is temporary and cannot be pinned."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +227,6 @@
|
||||
"pts": "точки",
|
||||
"chatCastSpellUser": "<%= username %> използва заклинанието <%= spell %> върху <%= target %>.",
|
||||
"chatCastSpellParty": "<%= username %> използва заклинанието <%= spell %> върху групата.",
|
||||
"purchasePetItemConfirm": "Тази покупка би надвишила броя на предметите, които са ви нужни за да излюпите всички възможни <% = itemText%> любимци. Сигурни ли сте?",
|
||||
"purchasePetItemConfirm": "Тази покупка би надвишила броя на предметите, които са ви нужни за да излюпите всички възможни <% = itemText %> любимци. Сигурни ли сте?",
|
||||
"purchaseForGold": "Купуване за <%= cost %> Злато?"
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "Език",
|
||||
"americanEnglishGovern": "В случай на разминаване в превода, за правилна се счита версията на американски английски език.",
|
||||
"helpWithTranslation": "Искате ли да помогнете с превода на Habitica? Чудесно! Посетете <a href=\"/groups/guild/7732f64c-33ee-4cce-873c-fc28f147a6f7\">Aspiring Linguists Guild</a>!",
|
||||
"showHeaderPop": "Показва Вашия герой, лентите с точки здраве и опит и групата Ви.",
|
||||
"stickyHeader": "Лепкава горна част",
|
||||
"stickyHeaderPop": "Закача горната част с героя и неговото здраве и опит за горната част на екрана. Ако не е отбелязано, тази част ще се скрива при превъртане.",
|
||||
"newTaskEdit": "Новите задачи да се отварят в режим на редактиране",
|
||||
"newTaskEditPop": "Ако е зададено, новите задачи ще се отварят направо в режим за редактиране, където да добавите подробности като бележки и етикети.",
|
||||
"dailyDueDefaultView": "По подразбиране да се показва разделът с „чакащи“ ежедневни задачи",
|
||||
"dailyDueDefaultViewPop": "Ако е зададено, по подразбиране ще се показва разделът с „чакащи“ ежедневни задачи, вместо този с „всички“",
|
||||
"reverseChatOrder": "Съобщенията в чата да се показват в обратен ред",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "Да не се показва изскачащ прозорец, когато любимец се превърне в превоз",
|
||||
"suppressStreakModal": "Да не се показва изскачащ прозорец при спечелване на постижение за серия",
|
||||
"showTour": "Показване на обиколката",
|
||||
"restartTour": "Рестартиране на въвеждащата обиколка от присъединяването Ви към Хабитика.",
|
||||
"showBailey": "Показване на Бейли",
|
||||
"showBaileyPop": "Градският глашатай Бейли ще се покаже, за да можете да прегледате по-старите новини.",
|
||||
"fixVal": "Промяна на стойностите на героя",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Неправилна стойност: Нивото трябва да бъде 1 или по-голямо.",
|
||||
"enableClass": "Включване на класовата система",
|
||||
"enableClassPop": "Вие първоначално отказахте да се възползвате от класовата система. Искате ли да се включите сега?",
|
||||
"classTourPop": "Показване на обиколката на класовата система.",
|
||||
"resetAccount": "Нулиране на профила",
|
||||
"resetAccPop": "Започнете отначало, премахвайки всички нива, злато, екипировка, история и задачи.",
|
||||
"deleteAccount": "Изтриване на профила",
|
||||
"deleteAccPop": "Изтрива и премахва Вашия профил в Хабитика.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "(JSON)",
|
||||
"customDayStart": "Персонализирано начало на деня",
|
||||
"sureChangeCustomDayStartTime": "Наистина ли искате да промените персонализираното начало на деня си? Ежедневните Ви задачи ще бъдат подновени при първото влизане в Хабитика след <%= time %>. Уверете се, че сте изпълнили ежедневните си задачи преди това време!",
|
||||
"changeCustomDayStart": "Промяна на персонализираното начало на деня?",
|
||||
"sureChangeCustomDayStart": "Наистина ли искате да промените персонализираното си начало на деня?",
|
||||
"customDayStartHasChanged": "Вашето персонализирано начало на деня беше променено.",
|
||||
"nextCron": "Ежедневните Ви задачи ще бъдат подновени при първото влизане в Хабитика след <%= time %>. Уверете се, че сте изпълнили ежедневните си задачи преди това!",
|
||||
"customDayStartInfo1": "По подразбиране Хабитика проверява и нулира ежедневните Ви задачи в полунощ Ваше време, всеки ден. Можете да промените това време тук.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "Промяна на стойности",
|
||||
"fixValuesText1": "Ако сте попаднали на технически проблем или сте допуснали грешка, която смятате, че е променила героя Ви нечестно (получили сте щети, които не е трябвало да получавате, или злато, което не сте спечелили наистина и т.н.), можете ръчно да поправите числата си тук. Да, тук можете да мамите: използвайте тази функционалност разумно или ще саботирате собственото си изграждане на навици!",
|
||||
"fixValuesText2": "Имайте предвид, че тук не можете да възстановявате серии за конкретни ежедневни задачи. За да направите това, отворете самата задача в режим за редактиране и отворете разширените настройки, където ще намерите поле за възстановяване на серията.",
|
||||
"disabledWinterEvent": "Изключено по време на Приказното зимно събитие — част 4 (тъй като наградите могат да бъдат купени със злато).",
|
||||
"fix21Streaks": "21-дневни серии",
|
||||
"discardChanges": "Отказ от промените",
|
||||
"deleteDo": "Потвърждавам, изтрийте профила ми!",
|
||||
"enterNumber": "Въведете число между 0 и 24",
|
||||
"fillAll": "Моля, попълнете всички полета",
|
||||
"invalidPasswordResetCode": "Кодът за нулиране на паролата е неправилен или с изтекла давност.",
|
||||
"passwordChangeSuccess": "Паролата Ви беше успешно променена с новата, която избрахте. Вече можете да я използвате, за да влезете в профила си.",
|
||||
"passwordSuccess": "Паролата е променена успешно",
|
||||
"usernameSuccess": "Потребителското име е успешно променено",
|
||||
"displayNameSuccess": "Екранното име е успешно променено",
|
||||
"emailSuccess": "Е-пощата е променена успешно",
|
||||
"detachSocial": "Премахване на връзката с <%= network %>",
|
||||
"detachedSocial": "Връзката с <%= network %> беше премахната успешно от профила Ви",
|
||||
"addedLocalAuth": "Местното удостоверяване беше добавено успешно",
|
||||
"data": "Данни",
|
||||
"exportData": "Изнасяне на данни",
|
||||
"usernameOrEmail": "Потребителско име или е-поща",
|
||||
"email": "Е-поща",
|
||||
"registerWithSocial": "Регистриране чрез <%= network %>",
|
||||
"registeredWithSocial": "Вие сте се регистрирали чрез <%= network %>",
|
||||
"loginNameDescription": "Това е което използвате за влизане в Хабитика. За да го промените, използвайте формуляра по-долу. Ако вместо това искате да промените екранното си име – онова, което е изписано върху героя Ви и в съобщенията Ви, щракнете върху Потребителската иконка и изберете „Профил“, след което натиснете бутона за редактиране.",
|
||||
"emailNotifications": "Известия по е-поща",
|
||||
"wonChallenge": "Вие спечелихте предизвикателство!",
|
||||
"newPM": "Получихте лично съобщение",
|
||||
@@ -118,7 +102,6 @@
|
||||
"giftedSubscription": "Подарък — абонамент",
|
||||
"giftedSubscriptionInfo": "<%= name %> Ви подари <%= months %> месец(а) абонамент",
|
||||
"giftedSubscriptionFull": "Здравейте <%= username %>, <%= sender %> Ви изпрати <%= monthCount %> месец(а) абонамент!",
|
||||
"giftedSubscriptionWinterPromo": "Здравейте, <%= username %>, Вие получихте <%= monthCount %> месец(а) абонамент като част от нашата промоция за подаряване на подаръци за празниците!",
|
||||
"invitedParty": "Бяхте поканени в Група",
|
||||
"invitedGuild": "Бяхте поканени в Гилдия",
|
||||
"importantAnnouncements": "Напомняния да влезете, за да завършите задачите си и да получите награди",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "Покана за мисия",
|
||||
"kickedGroup": "Изритан от групата",
|
||||
"remindersToLogin": "Напомняния да влезете в Хабитика",
|
||||
"subscribeUsing": "Абониране чрез",
|
||||
"unsubscribedSuccessfully": "Вие се отписахте успешно!",
|
||||
"unsubscribedTextUsers": "Вие се отписахте успешно от всички е-писма на Хабитика. Можете да включите само е-писмата, които искате да получавате, от <a href=\"/user/settings/notifications\">Настройки > > Известия </a> (изисква да влезете в системата).",
|
||||
"unsubscribedTextOthers": "Няма да получавате повече е-писма от Хабитика.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Поставете отметка тук, за да се откажете от всички известия",
|
||||
"correctlyUnsubscribedEmailType": "Вие се отписахте успешно за получаването на е-писма за „<%= emailType %>“.",
|
||||
"subscriptionRateText": "Повтарящи се плащания <strong>$<%= price %> USD</strong> на всеки <strong><%= months %> месеца</strong>",
|
||||
"recurringText": "повтарящо се",
|
||||
"benefits": "Предимства",
|
||||
"coupon": "Купон",
|
||||
"couponPlaceholder": "Въведете код на купон",
|
||||
"couponText": "Понякога организираме събития и раздаваме кодове (купони) за специална екипировка (например за онези, които се отбият на нашия щанд на Wondercon)",
|
||||
"apply": "Прилагане",
|
||||
"resubscribe": "Повторно абониране",
|
||||
"promoCode": "Промоционален код",
|
||||
"promoCodeApplied": "Промоционалният код беше приложен! Проверете инвентара си",
|
||||
"promoPlaceholder": "Въведете промоционален код",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "Включено",
|
||||
"webhookURL": "Адрес на уеб-куката",
|
||||
"invalidUrl": "грешен адрес",
|
||||
"invalidEnabled": "параметърът „enabled“ (включено) трябва да има булева стойност.",
|
||||
"invalidWebhookId": "параметърът „id“ (идентификатор) трябва да бъде правилно форматиран идентификатор UUID.",
|
||||
"missingWebhookId": "Идентификаторът на уеб-куката е задължителен.",
|
||||
"invalidWebhookType": "„<%= type %>“ не е правилна стойност за параметъра „type“ (тип).",
|
||||
"webhookBooleanOption": "„<%= option %>“ трябва да има булева стойност.",
|
||||
"webhookIdAlreadyTaken": "Вече съществува уеб-кука с идентификатор „<%= id %>“.",
|
||||
"noWebhookWithId": "Няма уеб-кука с идентификатор „<%= id %>“.",
|
||||
"regIdRequired": "„RegId“ е задължително",
|
||||
"invalidPushClient": "Грешен клиент. Само официалните клиентски програми за Хабитика могат да получават известия.",
|
||||
"pushDeviceAdded": "Устройството за получаване на известия беше добавено успешно",
|
||||
"pushDeviceAlreadyAdded": "Потребителят вече има това устройство за известия",
|
||||
"pushDeviceNotFound": "Потребителят няма устройство за известия с този идентификатор.",
|
||||
"pushDeviceRemoved": "Устройството за известия беше премахнато успешно.",
|
||||
"buyGemsGoldCap": "Ограничението на Диаманти беше повишено до <%= amount %>",
|
||||
"mysticHourglass": "Тайнствени пясъчни часовници: <%= amount %>",
|
||||
"mysticHourglassText": "Тайнствените пясъчни часовници позволяват закупуването на комплект от тайнствени предмети от предходен месец.",
|
||||
"purchasedPlanId": "Плащане на <%= price %>$ всеки <%= months %> месец(а) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "Имате <strong><%= months %> допълнителни месеца</strong> към абонамента си.",
|
||||
"consecutiveSubscription": "Последователен абонамент",
|
||||
"consecutiveMonths": "Последователни месеци:",
|
||||
@@ -206,11 +178,6 @@
|
||||
"changeUsernameDisclaimer": "Потребителското ви име се ползва за покани, @споменавания в чата и съобщения, трябва да е от 1 до 20 символа, да съдържа само буквите от a до z, цифрите от 0 до 9, тирета или долни черти и не може да съдържа неприлични думи.",
|
||||
"verifyUsernameVeteranPet": "Един от тези любимци-ветерани ще Ви чака след като приключите с потвърждението!",
|
||||
"subscriptionReminders": "Абонаментни Напомняния",
|
||||
"onlyPrivateSpaces": "Само в лични пространства",
|
||||
"everywhere": "Навсякъде",
|
||||
"suggestMyUsername": "Предложи ми потребителско име",
|
||||
"mentioning": "Споменаване",
|
||||
"buyGemsGoldCapBase": "Ограничение на Диаманти на <%= amount %>",
|
||||
"newPMNotificationTitle": "Ново съобщение от <%= name %>",
|
||||
"chatExtensionDesc": "Чат Разширението за Habitica добавя интуитивен чат прозорец за цялата habitica.com. Позволява на потребителите да чатят в Кръчмата, групата им и в гилдиите, в които са членове.",
|
||||
"chatExtension": "<a target='blank' href='https://chrome.google.com/webstore/detail/habitrpg-chat-client/hidkdfgonpoaiannijofifhjidbnilbb'>Chrome Чат Разширение</a> и <a target='blank' href='https://addons.mozilla.org/en-US/firefox/addon/habitica-chat-client-2/'>Firefox Чат Разширение</a>"
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "Абонамент",
|
||||
"subscriptions": "Абонаменти",
|
||||
"subDescription": "Купете диаманти със злато, получете месечни тайнствени предмети, запазвате историята на напредъка си, удвоете максималния брой дневни награди, подкрепите разработчиците. Щракнете за повече информация.",
|
||||
"sendGems": "Изпратете Диаманти",
|
||||
"buyGemsGold": "Купете Диаманти със Злато",
|
||||
"buyGemsGoldText": "Александър Търговеца ще Ви продава Диаманти на цената от 20 Злато за Диамант. Месечните му доставки първоначално са ограничени до 25 диаманта на месец, но това ограничение се увеличава с 5 диаманта за всеки 3 месеца на непрекъснат абонамент, докато достигне 50 диаманта на месец!",
|
||||
"mustSubscribeToPurchaseGems": "Купуването на диаманти със злато изисква абонамент",
|
||||
"reachedGoldToGemCap": "Достигнахте месечното ограничение на златото, което може да бъде превърнато в диаманти: <%= convCap %>. Целта на това е да предотвратим злоупотребите. Ограничението се нулира през първите три дни на всеки месец.",
|
||||
"reachedGoldToGemCapQuantity": "Заявеното от Вас количество – <%= quantity %>, превишава количеството, което може да закупите за този месец.Ограничението се нулира през първите три дни на всеки месец. Благодарим Ви, че се абонирахте!",
|
||||
"retainHistory": "Запазете допълнителни откъси история",
|
||||
"retainHistoryText": "Завършените задачи за изпълнение остават по-дълго в историята.",
|
||||
"doubleDrops": "Ежедневното ограничение на дневни награди е два пъти по-голямо",
|
||||
"doubleDropsText": "Можете да запълните конюшнята си по-бързо!",
|
||||
"mysteryItem": "Изключителни месечни предмети",
|
||||
"mysteryItemText": "Всеки месец ще получавате уникален козметичен предмет за героя си! Освен това, за всеки три месеца непрекъснат абонамент, Тайнствените Пътешественици във Времето ще Ви дават достъп до исторически (и футуристични!) козметични предмети.",
|
||||
"supportDevs": "Подкрепя разработчиците",
|
||||
"supportDevsText": "Абонаментът Ви помага за поддръжката на Habitica и осигурява средства за разработката на нови функционалности. Благодарим Ви за щедростта!",
|
||||
"exclusiveJackalopePet": "Изключителен любимец",
|
||||
"exclusiveJackalopePetText": "Вземете Царствено Лилавия Рогат Заек, достъпен само за абонати!",
|
||||
"giftSubscription": "Искате ли да подарите предимствата на абонамент на някой друг?",
|
||||
"giftSubscriptionText1": "Отворете профила им! Можете да направите това като щракнете героя му в заглавната част на дружината, в която сте заедно, или като щракнете името им в чата.",
|
||||
"giftSubscriptionText2": "Натиснете иконката с подарък в горната дясна част на профила им.",
|
||||
"giftSubscriptionText3": "Изберете „абонамент“ и въведете своята платежна информация.",
|
||||
"giftSubscriptionText4": "Благодарим Ви за това, че подкрепяте Habitica!",
|
||||
"monthUSD": "$ / месец",
|
||||
"organization": "Организация",
|
||||
"groupPlans": "Групови планове",
|
||||
"indivPlan1": "Habitica е безплатна за отделните хора. Дори за малки групи по интереси, може да е безплатно (или на ниска цена)",
|
||||
"indivPlan2": "за мотивиране на участниците да променят поведението си. Това могат да бъдат например писателски групи, художнически предизвикателства, и други.",
|
||||
"groupText1": "Но някои водачи на групи искат да имат повече контрол, уединение, сигурност и поддръжка. Примери за такива групи са семейства, групи за взаимопомощ, работнически групи, и други. Тези планове осигуряват отделни работещи копия на Habitica за Вашата организация, безопасни и независими от",
|
||||
"groupText2": "Вижте отдолу предимствата на различните планове, и се свържете с нас за повече информация!",
|
||||
"planFamily": "Семейство (Очаквайте Скоро)",
|
||||
"planGroup": "Група (Очаквайте Скоро)",
|
||||
"dedicatedHost": "Собствен сървър",
|
||||
"dedicatedHostText": "Собствен сървър: получавате собствена база данни и сървър, поддържан от Habitica, но можем и да го инсталираме в мрежата на Вашата организация. Ако няма отметка, планът използва „Споделен сървър“: организацията Ви използва същата база данни като същинската Habitica, но работи отделено от нея. Членовете Ви не виждат същата Кръчма и Гилдии, но използват същия сървър и база данни.",
|
||||
"individualSub": "Индивидуален Абонамент",
|
||||
"subscribe": "Абонамент",
|
||||
"subscribed": "Абониран",
|
||||
"nowSubscribed": "Вече имате абонамент за Habitica!",
|
||||
"manageSub": "Щракнете за управление на абонамента",
|
||||
"cancelSub": "Прекратяване на абонамента",
|
||||
"cancelSubInfoGoogle": "Моля, идете в раздела „Профил > Абонаменти“ в магазина „Google Play“, за да прекратите абонамента си или да видите кога изтича той, ако вече сте го прекратили. Тук не можете да разберете дали абонаментът Ви е бил прекратен.",
|
||||
"cancelSubInfoApple": "Моля, следвайте <a href=\"https://support.apple.com/en-us/HT202039\" target=\"_blank\">официалните инструкции на Apple</a>, за да прекратите абонамента си, или да видите кога изтича той, ако вече сте го прекратили. Тук не можете да разберете дали абонаментът Ви е бил прекратен.",
|
||||
"cancelSubInfoGroupPlan": "Тъй като имате безплатен абонамент от Групов План, не можете да го прекратите. Той ще приключи когато спрете да бъдете член на Груповия План. Ако Вие сте лидера на Групата и искате да прекратите целия групов план, можете да го направите от раздела „Таксуване на Граупата“.",
|
||||
"canceledSubscription": "Прекратен абонамент",
|
||||
"cancelingSubscription": "Прекратяване на абонамента",
|
||||
"adminSub": "Администраторски абонаменти",
|
||||
"morePlans": "Още Повече Планове<br>Очаквайте скоро",
|
||||
"organizationSub": "Частна организация",
|
||||
"organizationSubText": "Членовете на организацията са отделени от същинската Habitica, като така фокусът пада само върху тях.",
|
||||
"hostingType": "Вид на хостинга",
|
||||
"hostingTypeText": "„Споделен“ означава, че организацията Ви използва същата база данни като същинската Habitica, въпреки че не си взаимодействате с нея. „Собствен“ означава, че получавате собствена база данни и сървър. Вие решавате дали искате Habitica да осигурите този сървър, или ние да го инсталираме на Вашия сървър.",
|
||||
"dedicated": "Собствен",
|
||||
"customDomain": "Собствен домейн",
|
||||
"customDomainText": "По желание, можем да Ви осигурим собствен домейн за инсталацията.",
|
||||
"maxPlayers": "Максимален брой участници",
|
||||
"maxPlayersText": "Максималният брой играчи във Вашата частна организация.",
|
||||
"unlimited": "Неограничен",
|
||||
"priSupport": "Приоритетна поддръжка на сървъра и проблеми със системата",
|
||||
"priSupportText": "Ще обръщаме внимание първо на Вашите проблеми.",
|
||||
"timeSupport": "Поддръжка — часове / месец",
|
||||
"timeSupportText": "Ще Ви помагаме с обучение, отстраняване на проблеми, инсталация и ще разглеждаме Вашите предложения, свързани с функционалностите на системата.",
|
||||
"gameFeatures": "Игрални функционалности",
|
||||
"gold2Gem": "Диаманти които могат да се купят със злато",
|
||||
"gold2GemText": "Членовете ще могат да купуват Диаманти със злато, което означава, че никой от Вашите участници ще има нужда да купува нещо с истински пари.",
|
||||
"infiniteGem": "Неограничен брой Диаманти за водачите",
|
||||
"infiniteGemText": "Ще осигурим че водачите на Вашата организация ще имат толкова Диаманти, от колкото имат нужда за неща като награди за предизвикателства, създаване на гилдии, и т.н.",
|
||||
"notYetPlan": "Планът все още не е наличен, но можете да щракнете тук, за да се свържете с нас и ще ви държим в течение.",
|
||||
"contactUs": "Свържете се с нас",
|
||||
"checkout": "Гише",
|
||||
"sureCancelSub": "Наистина ли искате да прекратите абонамента си?",
|
||||
"subCanceled": "Абонаментът Ви изтича на",
|
||||
"buyGemsGoldTitle": "За да можете да купувате Диаманти със Злато",
|
||||
"becomeSubscriber": "Станете Абонат",
|
||||
"subGemPop": "Тъй като сте абонат на Habitica, всеки месец можете да купувате определен брой Диаманти със Злато.",
|
||||
"subGemName": "Диаманти от абонамента",
|
||||
"freeGemsTitle": "Получете безплатни Диаманти",
|
||||
"maxBuyGems": "Не можете да купите повече диаманти този месец. Ограничението се премахва през първите три дни на всеки месец. Благодарим Ви за абонамента!",
|
||||
"buyGemsAllow1": "Можете да купите още",
|
||||
"buyGemsAllow2": "диамант(а) този месец",
|
||||
"purchaseGemsSeparately": "Купете още диаманти",
|
||||
"subFreeGemsHow": "Играчите в Habitica могат да получават безплатни диаманти, като печелят <a href=\"/challenges/findChallenges\">предизвикателства</a>, които дават диаманти като награда или като <a href=\"http://habitica.fandom.com/wiki/Contributing_to_Habitica\">награда за принос, ако помогнат за разработката на Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Идете на <a href='/user/settings/subscription'>Настройки > Абонамент</a>, където можете да видите подробностите за абонамента си!",
|
||||
"timeTravelers": "Пътешественици във Времето",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>Тайлър<%= linkEnd %> и <%= linkStartVicky %>Вики<%= linkEnd %>",
|
||||
"timeTravelersTitle": "Тайнствени Пътешественици във Времето",
|
||||
"timeTravelersPopoverNoSub": "За да призовете Тайнствените Пътешественици във Времето, се нуждаете от Тайнствен Пясъчен Часовник! <%= linkStart %>Абонатите<%= linkEnd %> получават един за всеки три месеца непрекъснат абонамент. Върнете се отново когато имате Тайнствен Пясъчен Часовник и Пътешествениците във Времето ще Ви дадат рядък любимец, оседлан звяр или комплект за абонати от миналото… или дори от бъдещето.",
|
||||
"timeTravelersPopoverNoSubMobile": "Изглежда ще Ви трябва Тайнствен Пясъчен Часовник, за да отворите портала на времето, и да призовете Тайнствените Пътешественици във Времето.",
|
||||
"timeTravelersPopover": "Вашият Тайнствен Пясъчен Часовник отвори нашия портал във времето! Изберете какво искате да Ви доставим от миналото или бъдещето.",
|
||||
"timeTravelersAlreadyOwned": "Поздравления! Вие притежавате всичко, което Пътешествениците във Времето предлагат в момента. Благодарим Ви, че подкрепяте уеб сайта!",
|
||||
"mysticHourglassPopover": "Тайнственият Пясъчен Часовник Ви позволява да купувате определени предмети с ограничено време на предлагане, като месечните Тайнствени Комплекти от Предмети или наградите от световни главатари от миналото!",
|
||||
"mysterySetNotFound": "Тайнственият комплект не е намерен, или потребителят вече го притежава.",
|
||||
"mysteryItemIsEmpty": "Тайнствени предмети са празни",
|
||||
"mysteryItemOpened": "Тайнственият предмет е отворен.",
|
||||
@@ -162,13 +98,9 @@
|
||||
"subUpdateTitle": "Обнови",
|
||||
"subUpdateDescription": "Обновете картата, която използвате за плащане.",
|
||||
"notEnoughHourglasses": "Нямате достатъчно Тайнствени Пясъчни Часовници.",
|
||||
"hourglassBuyEquipSetConfirm": "Искатели да купите целия комплект предмети за 1 Тайнствен Пясъчен Часовник?",
|
||||
"hourglassBuyItemConfirm": "Искатели да купите този предмет за 1 Тайнствен Пясъчен Часовник?",
|
||||
"petsAlreadyOwned": "Вече притежавате този любимец.",
|
||||
"mountsAlreadyOwned": "Вече притежавате този оседлан звяр.",
|
||||
"typeNotAllowedHourglass": "Този вид предмет не може да бъде купен с Тайнствен Пясъчен Часовник. Позволени видове: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "Този любимец не може да бъде купен с Тайнствен Пясъчен Часовник.",
|
||||
"mountsNotAllowedHourglass": "Този оседлан звяр не може да бъде купен с Тайнствен Пясъчен Часовник.",
|
||||
"hourglassPurchase": "Вие купихте предмет с Тайнствен Пясъчен Часовник!",
|
||||
"hourglassPurchaseSet": "Вие купихте комплект предмети с Тайнствен Пясъчен Часовник!",
|
||||
"missingUnsubscriptionCode": "Липсва код за прекратяване на абонамента.",
|
||||
@@ -186,14 +118,7 @@
|
||||
"couponUsed": "Този код от купон вече е използван.",
|
||||
"couponCodeRequired": "Кодът от купона е задължителен.",
|
||||
"paypalCanceled": "Абонаментът Ви е прекратен",
|
||||
"earnGemsMonthly": "Получавайте до **<%= cap %> Диаманта** на месец",
|
||||
"receiveMysticHourglass": "Получете Тайнствен Пясъчен Часовник!",
|
||||
"receiveMysticHourglasses": "Получете **<%= amount %> Тайнствени Пясъчни Часовника**!",
|
||||
"everyMonth": "Всеки месец",
|
||||
"everyXMonths": "Всеки <%= interval %> месеца",
|
||||
"everyYear": "Ежегодно",
|
||||
"choosePaymentMethod": "Изберете разплащателен метод",
|
||||
"subscribeSupportsDevs": "Абонаментът подкрепя разработчиците и помага на Habitica да продължи да съществува",
|
||||
"buyGemsSupportsDevs": "Купуването на Диаманти подкрепя разработчиците и помага на Habitica да продължи да съществува",
|
||||
"support": "ПОДКРЕПА",
|
||||
"gemBenefitLeadin": "Диамантите Ви позволяват да купувате забавни допълнителни неща за профила си, като:",
|
||||
@@ -201,18 +126,12 @@
|
||||
"gemBenefit2": "Фонови изображения, с които да потопите героя си в света на Habitica!",
|
||||
"gemBenefit3": "Вълнуващи свързани Мисии, от които могат да Ви се паднат яйца за любимци.",
|
||||
"gemBenefit4": "Нулиране на Показателите на героя Ви и промяна на Класът им.",
|
||||
"subscriptionBenefitLeadin": "Подкрепете Habitica като станете абонат, и ще получите тези страхотни предимства!",
|
||||
"subscriptionBenefit1": "Александър Търговеца сега ще Ви продава Диаманти от Пазара, по 20 Злато на брой!",
|
||||
"subscriptionBenefit2": "Завършените задачи за изпълнение остават за по-дълго в историята.",
|
||||
"subscriptionBenefit3": "Открийте още повече предмети в Habitica с 2x ограничение за дневни награди.",
|
||||
"subscriptionBenefit4": "Уникален козметичен предмет за да си декорирате Героя всеки месец.",
|
||||
"subscriptionBenefit5": "Получете Царствено Лилав Рогат Заек като станете абонат.",
|
||||
"subscriptionBenefit6": "Получете Тайнствени Пясъчни Часовници за да може да купувате предмети в магазина на Тайнствените Пътешественици във Времето!",
|
||||
"haveCouponCode": "Имате ли код от купон?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Благодарим Ви, че станахте абонат!",
|
||||
"subscriptionAlreadySubscribed1": "За да видите подробности за абонамента си или да го прекратите, подновите или промените, моля щракнете върху <a href='/user/settings/subscription'>Потребителската иконка и изберете Настройки > Абонамент</a>.",
|
||||
"purchaseAll": "Купете Комплект",
|
||||
"gemsPurchaseNote": "Абонатите могат да купуват Диаманти със Злато на Пазара! За по-лесен достъп можете също да закачите Диаманта към колоната си с Награди.",
|
||||
"gemsRemaining": "оставащи Диаманта",
|
||||
"notEnoughGemsToBuy": "Не можете да закупите толкова Диаманта",
|
||||
"subCanceledTitle": "Абонамент Анулиран",
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "Изтриване на завършените",
|
||||
"clearCompletedDescription": "Завършените задачи за изпълнение се изтриват след 30 дни за хората без абонамент и след 90 дни за абонатите.",
|
||||
"clearCompletedConfirm": "Наистина ли искате да изтриете завършените си задачи?",
|
||||
"sureDeleteCompletedTodos": "Наистина ли искате да изтриете завършените си задачи?",
|
||||
"lotOfToDos": "Тук можете да видите последните си 30 завършени задачи. Можете да видите по-старите си завършени задачи от „Данни > Инструмент за показване на данните“ или „Данни > Изнасяне на данни > Потребителски данни.",
|
||||
"deleteToDosExplanation": "Ако натиснете бутона по-долу, всички завършени и архивирани задачи ще бъдат изтрити завинаги, освен онези от протичащи в момента предизвикателства и от групови планове. Ако искате да запазите информацията за тях, първо ги изнесете.",
|
||||
"addMultipleTip": "<strong>Съвет:</strong> За да добавите няколко <%= taskType %>, разделете ги с нов ред (Shift + Enter) и след това натиснете „Enter.“",
|
||||
"addsingle": "Добавяне поотделно",
|
||||
"addATask": "Добавяне на <%= type %>",
|
||||
"editATask": "Редактиране на <%= type %>",
|
||||
"createTask": "Създаване на <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "Това са Вашите <%= taskType %>",
|
||||
"habit": "Навик",
|
||||
"habits": "Навици",
|
||||
"newHabit": "Нов навик",
|
||||
"newHabitBulk": "Нови навици (по един на ред)",
|
||||
"habitsDesc": "Навиците нямат график. Можете да ги щраквате много пъти през деня.",
|
||||
"positive": "Положителен",
|
||||
"negative": "Отрицателен",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "Запазване",
|
||||
"addChecklist": "Добавяне на подзадачи",
|
||||
"checklist": "Подзадачи",
|
||||
"checklistText": "Разделете задачата на по-малки части! Подзадачите увеличават получения опит и злато от задачата и намаляват щетите от ежедневните задачи.",
|
||||
"newChecklistItem": "Нова подзадача",
|
||||
"expandChecklist": "Показване на подзадачите",
|
||||
"collapseChecklist": "Скриване на подзадачите",
|
||||
"text": "Заглавие",
|
||||
"extraNotes": "Допълнителни бележки",
|
||||
"notes": "Бележки",
|
||||
"direction/Actions": "Посока/действия",
|
||||
"advancedSettings": "Разширени настройки",
|
||||
"taskAlias": "Псевдоним на задачата",
|
||||
"taskAliasPopover": "Псевдонимът на задачата може да бъде използван при интеграция с външни програми. Позволените знаци са само: тире, долно тире, цифрите 0-9 и буквите от английската азбука. Псевдонимът на задачата не може да се използва за повече от една задача.",
|
||||
"taskAliasPlaceholder": "псевдоним-на-задачата",
|
||||
"taskAliasPopoverWarning": "ВНИМАНИЕ: Ако промените тази стойност, може да нарушите работата на външните програми, които разчитат на псевдонима на тази задача.",
|
||||
"difficulty": "Ниво на трудност",
|
||||
"difficultyHelp": "Трудността описва колко Ви е трудно да се справите с определен навик, ежедневна задача или задача за изпълнение. Колкото по-голяма е трудността, толкова по-големи ще са и наградите за изпълнението на задачата, но и ще получавате повече щети, ако пропуснете ежедневна задача или щракнете върху отрицателен навик.",
|
||||
"trivial": "Елементарно",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "Средно",
|
||||
"hard": "Трудно",
|
||||
"attributes": "Показатели",
|
||||
"attributeAllocation": "Разпределение на показателните точки",
|
||||
"attributeAllocationHelp": "Разпределението на показателните точки е възможност, която позволява на Хабитика да разпределя автоматично спечелените показателни точки веднага при качване на ниво. <br/><br/> Можете да изберете автоматичното разпределение на точките да бъде според задачите, които изпълнявате, от раздела за показателите на профила си.",
|
||||
"progress": "Напредък",
|
||||
"daily": "Ежедневна",
|
||||
"dailies": "Ежедневни",
|
||||
"newDaily": "Нова ежедневна задача",
|
||||
"newDailyBulk": "Нови ежедневни задачи (по една на ред)",
|
||||
"dailysDesc": "Ежедневните трябва да се изпълняват по определен график. Изберете графика, който е най-подходящ за Вас!",
|
||||
"streakCounter": "Брояч на серията",
|
||||
"repeat": "Повтаряне",
|
||||
"repeats": "Повтаря се",
|
||||
"repeatEvery": "Повтаряне на всеки",
|
||||
"repeatOn": "Повтаряне",
|
||||
"repeatHelpTitle": "Колко често да бъде повтаряна тази задача?",
|
||||
"dailyRepeatHelpContent": "Тази задача ще бъде подновявана на всеки Х дни. Може да зададете тази стойност по-долу.",
|
||||
"weeklyRepeatHelpContent": "Тази задача ще бъде подновявана в избраните по-долу дни. Щракнете върху ден, за да го включите/изключите.",
|
||||
"repeatDays": "На всеки Х дни",
|
||||
"repeatWeek": "В определени дни от седмицата",
|
||||
"day": "Ден",
|
||||
"days": "Дни",
|
||||
"restoreStreak": "Настройване на серията",
|
||||
"resetStreak": "Нулиране на серията",
|
||||
"todo": "Задача",
|
||||
"todos": "Задачи",
|
||||
"newTodo": "Нова задача за изпълнение",
|
||||
"newTodoBulk": "Нови задачи за изпълнение (по една на ред)",
|
||||
"todosDesc": "Задачите за изпълнение трябва да се изпълнят само веднъж. Добавете подзадачи към тях, за да увеличите стойността им.",
|
||||
"dueDate": "Крайна дата",
|
||||
"remaining": "Незавършени",
|
||||
"complete": "Завършени",
|
||||
"complete2": "Завършени",
|
||||
"dated": "С краен срок",
|
||||
"today": "Днес",
|
||||
"dueIn": "Краен срок: <%= dueIn %>",
|
||||
"due": "За изпълнение",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "Награда",
|
||||
"rewards": "Награди",
|
||||
"rewardsDesc": "Наградите са чудесен начин да използвате Хабитика и да изпълнявате задачите си. Опитайте да добавите няколко още сега!",
|
||||
"ingamerewards": "Екипировка и умения",
|
||||
"gold": "Злато",
|
||||
"silver": "Сребро (100 сребро = 1 злато)",
|
||||
"newReward": "Нова награда",
|
||||
"newRewardBulk": "Нови награди (по една на ред)",
|
||||
"price": "Цена",
|
||||
"tags": "Етикети",
|
||||
"editTags": "Редактиране",
|
||||
"newTag": "Нов етикет",
|
||||
"clearTags": "Изчистване",
|
||||
"hideTags": "Скриване",
|
||||
"showTags": "Показване",
|
||||
"editTags2": "Редактиране на етикетите",
|
||||
"toRequired": "Трябва да зададете стойност „до“ („to“)",
|
||||
"startDate": "Начална дата",
|
||||
"startDateHelpTitle": "Кога да започне задачата?",
|
||||
"startDateHelp": "Настройте датата, на която задачата ще започне да бъде следена. Тя няма да бъде изисквана да се изпълнява преди тази дата.",
|
||||
"streaks": "Постигнати серии",
|
||||
"streakName": "<%= count %> постигнати серии",
|
||||
"streakText": "Постигнал(а) <%= count %> 21-дневни серии на изпълнение на ежедневни задачи",
|
||||
@@ -113,38 +80,15 @@
|
||||
"perfectText": "Изпълнил(а) всичките си ежедневни задачи за деня <%= count %> пъти. С това постижение получавате подсилка на всичките си показатели в размер +ниво/2 за следващия ден. Нивата над 100 не влияят на подсилките.",
|
||||
"perfectSingular": "Перфектен ден",
|
||||
"perfectSingularText": "Изпълнил(а) всичките си ежедневни задачи за деня веднъж. С това постижение получавате подсилка на всичките си показатели в размер +ниво/2 за следващия ден. Нивата над 100 не влияят на подсилките.",
|
||||
"streakerAchievement": "Спечелихте постижението „Човек на сериите“! 21 дни са ключови при формирането на навик. Това постижение може да се печели отново за всеки 21 дни непрекъснато изпълнение на тази или друга ежедневна задача!",
|
||||
"fortifyName": "Подсилваща отвара",
|
||||
"fortifyPop": "Връща всички задачи в неутрално състояние (жълт цвят) и възстановява напълно здравето.",
|
||||
"fortify": "Подсилване",
|
||||
"fortifyText": "Подсилването връща всички Ваши задачи (с изключение на задачите от предизвикателства) в неутрално състояние (жълт цвят), все едно току-що сте ги добавили, и възстановява напълно здравето Ви. Това е чудесно, ако червените задачи правят играта много трудна, или пък всички сини задачи я правят много лесна. Ако Ви се струва по-мотивиращо да започнете начисто, похарчете диамантите си за това и си отдъхнете малко!",
|
||||
"confirmFortify": "Сигурен/на ли сте?",
|
||||
"fortifyComplete": "Подсилването е изпълнено!",
|
||||
"deleteTask": "Изтриване на тази задача",
|
||||
"sureDelete": "Наистина ли искате да изтриете тази задача?",
|
||||
"streakCoins": "Бонус за серия!",
|
||||
"taskToTop": "Към началото",
|
||||
"taskToBottom": "Към края",
|
||||
"emptyTask": "Първо въведете името на задачата.",
|
||||
"dailiesRestingInInn": "В момента почивате в кръчмата! Ежедневните Ви задачи НЯМА да ви наранят тази нощ, но ЩЕ продължат да се подновяват всеки ден. Ако участвате в мисия, няма да нанасяте щети, нито ще получавате предмети, докато не излезете от кръчмата, но може да получавате щети, ако членовете на групата не изпълняват ежедневните си задачи.",
|
||||
"habitHelp1": "Добрите навици са неща, които правите често. Те Ви носят злато и опит всеки път, когато щракнете знака <%= plusIcon %>.",
|
||||
"habitHelp2": "Лошите навици са неща, които искате да избегнете. Те отнемат от здравето Ви всеки път, когато щракнете знака <%= minusIcon %>.",
|
||||
"habitHelp3": "Ако се нуждаете от вдъхновение, вижте тези <a href='http://habitica.fandom.com/wiki/Sample_Habits' target='_blank'>примерни навици</a>!",
|
||||
"newbieGuild": "Още въпроси? Попитайте в <%= linkStart %>Помощната гилдия на Хабитика<%= linkEnd %>!",
|
||||
"dailyHelp1": "Ежедневните задачи се повтарят <%= emphasisStart %>всеки ден<%= emphasisEnd %>, в който сте задали да бъдат изисквани. Щракнете върху <%= pencilIcon %> за промяна на дните, в които да бъде изисквана дадена ежедневна задача.",
|
||||
"dailyHelp2": "Ако не завършите ежедневните си задачи, ще загубите здраве, когато денят отмине.",
|
||||
"dailyHelp3": "Ежедневните задачи стават <%= emphasisStart %>по-червени<%= emphasisEnd %>, ако не ги изпълнявате, и <%= emphasisStart %>по-сини<%= emphasisEnd %>, ако ги изпълнявате. По-червените ежедневни задачи носят по-голяма награда… но и нанасят повече щети.",
|
||||
"dailyHelp4": "За да промените началния час на деня си, отидете в <%= linkStart %> Настройки > Уеб сайт<%= linkEnd %> > Персонализирано начало на деня.",
|
||||
"dailyHelp5": "Ако се нуждаете от вдъхновение, вижте тези <a href='http://habitica.fandom.com/wiki/Sample_Dailies' target='_blank'>примерни ежедневни задачи</a>!",
|
||||
"toDoHelp1": "Задачите за изпълнение първоначално имат жълт цвят, който става все по-червен (по-ценен) с напредване на времето.",
|
||||
"toDoHelp2": "Задачите за изпълнение никога няма да Ви наранят! Те само могат да дадат злато и опит.",
|
||||
"toDoHelp3": "Разбиването на задача за изпълнение на по-малки подзадачи ще я направи по-малко плашеща и ще увеличи точките Ви!",
|
||||
"toDoHelp4": "Ако се нуждаете от вдъхновение, вижте тези <a href='http://habitica.fandom.com/wiki/Sample_To-Dos' target='_blank'>примерни задачи за изпълнение</a>!",
|
||||
"rewardHelp1": "Екипировката, която купувате за героя си, се съхранява в <%= linkStart %>Инвентар > Екипировка<%= linkEnd %>.",
|
||||
"rewardHelp2": "Екипировката влияе на показателите Ви (<%= linkStart %>Герой > Показатели<%= linkEnd %>).",
|
||||
"rewardHelp3": "По време на световни събития, тук ще се появява специалната екипировка.",
|
||||
"rewardHelp4": "Не се притеснявайте да си създадете свои собствени награди! Вижте <a href='http://habitica.fandom.com/wiki/Sample_Custom_Rewards' target='_blank'>примерите тук</a>.",
|
||||
"clickForHelp": "Щракнете за помощ",
|
||||
"taskAliasAlreadyUsed": "Псевдонимът на задачата вече се използва за друга задача.",
|
||||
"taskNotFound": "Задачата не е намерена.",
|
||||
"invalidTaskType": "Типът на задачата трябва да бъде един от следните: „habit“, „daily“, „todo“, „reward“.",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "Завършена задача за изпълнение не може да бъде преместена.",
|
||||
"directionUpDown": "„direction“ е задължително и трябва да бъде „up“ или „down“.",
|
||||
"alreadyTagged": "Този етикет вече е приложен към задачата.",
|
||||
"strengthExample": "Отнася се за упражнения и дейности",
|
||||
"intelligenceExample": "Отнася се за академични или умствено предизвикателни цели",
|
||||
"perceptionExample": "Отнася се за работа и финансови задачи",
|
||||
"constitutionExample": "Отнася се за здраве, добро състояние на тялото и духа и социални контакти",
|
||||
"counterPeriod": "Броячът се нулира всеки",
|
||||
"counterPeriodDay": "Ден",
|
||||
"counterPeriodWeek": "Седмица",
|
||||
"counterPeriodMonth": "Месец",
|
||||
"habitCounter": "Брояч (Нулира се <%= frequency %>)",
|
||||
"habitCounterUp": "Положителен брояч (Нулира се <%= frequency %>)",
|
||||
"habitCounterDown": "Отрицателен брояч (Нулира се <%= frequency %>)",
|
||||
"taskRequiresApproval": "Тази задача трябва да бъде одобрена, преди да я изпълните. Одобрението вече беше поискано",
|
||||
"taskApprovalHasBeenRequested": "Одобрението беше поискано",
|
||||
"taskApprovalWasNotRequested": "Не е поискано одобрение за тази задача.",
|
||||
"approvals": "Одобрения",
|
||||
"approvalRequired": "Нужно е одобрение",
|
||||
"repeatZero": "Ежедневната задача не е задължителна",
|
||||
"repeatType": "Вид повторение",
|
||||
"repeatTypeHelpTitle": "Какъв вид повторение е това?",
|
||||
"repeatTypeHelp": "Изберете „Ежедневно“, ако искате тази задача да се повтаря всеки ден или например всеки трети ден и т.н. Изберете „Седмично“, ако искате тя да се повтаря в определени дни от седмицата. Ако изберете „Месечно“ или „Годишно“, настройте началната дата, за да определите в кой ден от месеца или годината ще се изисква задачата да бъде изпълнена.",
|
||||
"weekly": "Седмично",
|
||||
"monthly": "Месечно",
|
||||
"yearly": "Годишно",
|
||||
"onDays": "Определени дни",
|
||||
"summary": "Резюме",
|
||||
"repeatsOn": "Повтаряне",
|
||||
"dayOfWeek": "Ден от седмицата",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "Седмици",
|
||||
"year": "Година",
|
||||
"years": "Години",
|
||||
"groupTasksByChallenge": "Групиране на задачите по заглавие на предизвикателство",
|
||||
"taskNotes": "Бележки към задачата",
|
||||
"monthlyRepeatHelpContent": "Тази задача ще бъде подновявана на всеки Х месеца",
|
||||
"yearlyRepeatHelpContent": "Тази задача ще бъде подновявана на всеки Х години",
|
||||
"resets": "Нулира се",
|
||||
"summaryStart": "Повтаря се <%= frequency %> всеки <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Следващи крайни дати",
|
||||
"checkOffYesterDailies": "Отметнете ежедневните, които сте изпълнили вчера:",
|
||||
"yesterDailiesTitle": "Вчера оставихте тези ежедневни задачи неотметнати! Искате ли да отметнете някоя от тях сега?",
|
||||
"yesterDailiesCallToAction": "Начало на новия ми ден!",
|
||||
"yesterDailiesOptionTitle": "Потвърждаване, че тази ежедневна задача не е била свършена, преди нанасяне на щетите",
|
||||
"yesterDailiesDescription": "Ако това е включено, Хабитика ще ви пита дали наистина сте искали да оставите ежедневната задача несвършена, преди да изчисли и приложи щетите върху героя Ви. Това може да Ви предпази от нежелани щети по невнимание.",
|
||||
"repeatDayError": "Моля, уверете се, че сте избрали поне един ден от седмицата.",
|
||||
"searchTasks": "Търсене в заглавията и описанията…",
|
||||
"sessionOutdated": "Сесията Ви е изтекла. Моля, опреснете или синхронизирайте.",
|
||||
"errorTemporaryItem": "Този предмет е временен и не може да бъде закачен."
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "Language",
|
||||
"americanEnglishGovern": "In the event of a discrepancy in the translations, the American English version governs.",
|
||||
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"https://trello.com/c/SvTsLdRF/12-translations\" target=\"_blank\">this</a> Trello card.",
|
||||
"showHeaderPop": "Show your avatar, Health/Experience bars, and party.",
|
||||
"stickyHeader": "Sticky header",
|
||||
"stickyHeaderPop": "Affix the header to the top of the screen. Unchecked means it scrolls out of view.",
|
||||
"newTaskEdit": "Open new tasks in edit mode",
|
||||
"newTaskEditPop": "With this option set, new tasks will immediately open for you to add details like notes and tags.",
|
||||
"dailyDueDefaultView": "Set Dailies default to 'due' tab",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "Show chat messages in reverse order",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
|
||||
"suppressStreakModal": "Don't show popup when attaining a Streak achievement",
|
||||
"showTour": "Show Tour",
|
||||
"restartTour": "Restart the introductory tour from when you first joined Habitica.",
|
||||
"showBailey": "Show Bailey",
|
||||
"showBaileyPop": "Bring Bailey the Town Crier out of hiding so you can review past news.",
|
||||
"fixVal": "Fix Character Values",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Invalid value: Level must be 1 or greater.",
|
||||
"enableClass": "Enable Class System",
|
||||
"enableClassPop": "You opted out of the class system initially. Would you like now to opt-in?",
|
||||
"classTourPop": "Show the tour for using the class system.",
|
||||
"resetAccount": "Reset Account",
|
||||
"resetAccPop": "Start over, removing all levels, gold, gear, history, and tasks.",
|
||||
"deleteAccount": "Delete Account",
|
||||
"deleteAccPop": "Cancel and remove your Habitica account.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "(JSON)",
|
||||
"customDayStart": "Custom Day Start",
|
||||
"sureChangeCustomDayStartTime": "Are you sure you want to change your Custom Day Start time? Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before then!",
|
||||
"changeCustomDayStart": "Change Custom Day Start?",
|
||||
"sureChangeCustomDayStart": "Are you sure you want to change your custom day start?",
|
||||
"customDayStartHasChanged": "Your custom day start has changed.",
|
||||
"nextCron": "Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before this time!",
|
||||
"customDayStartInfo1": "Habitica defaults to check and reset your Dailies at midnight in your own time zone each day. You can customize that time here.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "Fix Values",
|
||||
"fixValuesText1": "If you've encountered a bug or made a mistake that unfairly changed your character (damage you shouldn't have taken, Gold you didn't really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you'll sabotage your own habit-building!",
|
||||
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
|
||||
"disabledWinterEvent": "Disabled during Winter Wonderland Event Pt.4 (since the rewards are gold-purchaseable).",
|
||||
"fix21Streaks": "21-Day Streaks",
|
||||
"discardChanges": "Discard Changes",
|
||||
"deleteDo": "Do it, delete my account!",
|
||||
"enterNumber": "Please enter a number between 0 and 24",
|
||||
"fillAll": "Please fill out all fields",
|
||||
"invalidPasswordResetCode": "The supplied password reset code is invalid or has expired.",
|
||||
"passwordChangeSuccess": "Your password was successfully changed to the one you just chose. You can now use it to access your account.",
|
||||
"passwordSuccess": "Password successfully changed",
|
||||
"usernameSuccess": "Username successfully changed",
|
||||
"displayNameSuccess": "Display name successfully changed",
|
||||
"emailSuccess": "Email successfully changed",
|
||||
"detachSocial": "De-register <%= network %>",
|
||||
"detachedSocial": "Successfully removed <%= network %> authentication from your account",
|
||||
"addedLocalAuth": "Successfully added local authentication",
|
||||
"data": "Data",
|
||||
"exportData": "Export Data",
|
||||
"usernameOrEmail": "Username or Email",
|
||||
"email": "Email",
|
||||
"registerWithSocial": "Register with <%= network %>",
|
||||
"registeredWithSocial": "Registered with <%= network %>",
|
||||
"loginNameDescription": "This is what you use to log in to Habitica. To change it, use the form below. If instead you want to change the Display Name that appears on your avatar and in chat messages, go to the User Icon > Profile and click the Edit button.",
|
||||
"emailNotifications": "Email Notifications",
|
||||
"wonChallenge": "You won a Challenge!",
|
||||
"newPM": "Received Private Message",
|
||||
@@ -118,7 +102,6 @@
|
||||
"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",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "Invited to Quest",
|
||||
"kickedGroup": "Kicked from group",
|
||||
"remindersToLogin": "Reminders to check in to Habitica",
|
||||
"subscribeUsing": "Subscribe using",
|
||||
"unsubscribedSuccessfully": "Unsubscribed successfully!",
|
||||
"unsubscribedTextUsers": "You have successfully unsubscribed from all Habitica emails. You can enable only the emails you want to receive from <a href=\"/user/settings/notifications\">Settings > > Notifications</a> (requires login).",
|
||||
"unsubscribedTextOthers": "You won't receive any other email from Habitica.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications",
|
||||
"correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.",
|
||||
"subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months",
|
||||
"recurringText": "recurring",
|
||||
"benefits": "Benefits",
|
||||
"coupon": "Coupon",
|
||||
"couponPlaceholder": "Enter Coupon Code",
|
||||
"couponText": "We sometimes have events and give out coupon codes for special gear. (eg, those who stop by our Wondercon booth)",
|
||||
"apply": "Apply",
|
||||
"resubscribe": "Resubscribe",
|
||||
"promoCode": "Promo Code",
|
||||
"promoCodeApplied": "Promo Code Applied! Check your inventory",
|
||||
"promoPlaceholder": "Enter Promotion Code",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "Enabled",
|
||||
"webhookURL": "Webhook URL",
|
||||
"invalidUrl": "invalid url",
|
||||
"invalidEnabled": "the \"enabled\" parameter should be a boolean.",
|
||||
"invalidWebhookId": "the \"id\" parameter should be a valid UUID.",
|
||||
"missingWebhookId": "The webhook's id is required.",
|
||||
"invalidWebhookType": "\"<%= type %>\" is not a valid value for the parameter \"type\".",
|
||||
"webhookBooleanOption": "\"<%= option %>\" must be a Boolean value.",
|
||||
"webhookIdAlreadyTaken": "A webhook with the id <%= id %> already exists.",
|
||||
"noWebhookWithId": "There is no webhook with the id <%= id %>.",
|
||||
"regIdRequired": "RegId is required",
|
||||
"invalidPushClient": "Invalid client. Only Official Habitica clients can receive push notifications.",
|
||||
"pushDeviceAdded": "Push device added successfully",
|
||||
"pushDeviceAlreadyAdded": "The user already has the push device",
|
||||
"pushDeviceNotFound": "The user has no push device with this id.",
|
||||
"pushDeviceRemoved": "Push device removed successfully.",
|
||||
"buyGemsGoldCap": "Cap raised to <%= amount %>",
|
||||
"mysticHourglass": "<%= amount %> Mystic Hourglass",
|
||||
"mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.",
|
||||
"purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.",
|
||||
"consecutiveSubscription": "Consecutive Subscription",
|
||||
"consecutiveMonths": "Consecutive Months:",
|
||||
@@ -205,4 +177,4 @@
|
||||
"usernameNotVerified": "Please confirm your username.",
|
||||
"changeUsernameDisclaimer": "We will be transitioning login names to unique, public usernames soon. This username will be used for invitations, @mentions in chat, and messaging.",
|
||||
"verifyUsernameVeteranPet": "One of these Veteran Pets will be waiting for you after you've finished confirming!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "Subscription",
|
||||
"subscriptions": "Subscriptions",
|
||||
"subDescription": "Buy Gems with gold, get monthly mystery items, retain progress history, double daily drop-caps, support the devs. Click for more info.",
|
||||
"sendGems": "Send Gems",
|
||||
"buyGemsGold": "Buy Gems with Gold",
|
||||
"buyGemsGoldText": "Alexander the Merchant will sell you Gems at a cost of 20 Gold per Gem. His monthly shipments are initially capped at 25 Gems per month, but for every 3 consecutive months that you are subscribed, this cap increases by 5 Gems, up to a maximum of 50 Gems per month!",
|
||||
"mustSubscribeToPurchaseGems": "Must subscribe to purchase gems with GP",
|
||||
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"retainHistory": "Retain additional history entries",
|
||||
"retainHistoryText": "Makes completed To-Dos and task history available for longer.",
|
||||
"doubleDrops": "Daily drop caps doubled",
|
||||
"doubleDropsText": "Complete your stable faster!",
|
||||
"mysteryItem": "Exclusive monthly items",
|
||||
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
|
||||
"supportDevs": "Supports the developers",
|
||||
"supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!",
|
||||
"exclusiveJackalopePet": "Exclusive pet",
|
||||
"exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!",
|
||||
"giftSubscription": "Want to gift a subscription to someone?",
|
||||
"giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.",
|
||||
"giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
|
||||
"giftSubscriptionText3": "Select \"subscription\" and enter your payment information.",
|
||||
"giftSubscriptionText4": "Thanks for supporting Habitica!",
|
||||
"monthUSD": "USD / Month",
|
||||
"organization": "Organization",
|
||||
"groupPlans": "Group Plans",
|
||||
"indivPlan1": "For individuals, Habitica is free to play. Even for small interest groups, free (or cheap)",
|
||||
"indivPlan2": "can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more.",
|
||||
"groupText1": "But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of Habitica for your group or organization, secure and independent of",
|
||||
"groupText2": "See below for additional plan perks, and contact us for more information!",
|
||||
"planFamily": "Family (Coming Soon)",
|
||||
"planGroup": "Group (Coming Soon)",
|
||||
"dedicatedHost": "Dedicated Hosting",
|
||||
"dedicatedHostText": "Dedicated Hosting: you get your own database and server hosted by Habitica, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as Habitica proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",
|
||||
"individualSub": "Individual Subscription",
|
||||
"subscribe": "Subscribe",
|
||||
"subscribed": "Subscribed",
|
||||
"nowSubscribed": "You are now subscribed to Habitica!",
|
||||
"manageSub": "Click to manage subscription",
|
||||
"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 <a href=\"https://support.apple.com/en-us/HT202039\">Apple's official instructions</a> 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",
|
||||
"morePlans": "More Plans<br>Coming Soon",
|
||||
"organizationSub": "Private Organization",
|
||||
"organizationSubText": "Members of the organization participate outside of Habitica proper, providing focus for your participants.",
|
||||
"hostingType": "Hosting Type",
|
||||
"hostingTypeText": "Shared hosting means your organization uses the same database as Habitica proper even though you don't interact with Habitica. Dedicated means you get your own database and server. You can choose to have Habitica host your server/db, or we can install it on your own servers.",
|
||||
"dedicated": "Dedicated",
|
||||
"customDomain": "Custom Domain",
|
||||
"customDomainText": "We can optionally give you your own domain for the installation.",
|
||||
"maxPlayers": "Max Participants",
|
||||
"maxPlayersText": "The maximum number of players in your private organization.",
|
||||
"unlimited": "Unlimited",
|
||||
"priSupport": "Priority Support On Tickets & Hosting",
|
||||
"priSupportText": "First to be provided for with support.",
|
||||
"timeSupport": "Support Hours / Month",
|
||||
"timeSupportText": "We will provide support for training, bugs, installation, and feature requests.",
|
||||
"gameFeatures": "Game features",
|
||||
"gold2Gem": "Gems purchasable with gold",
|
||||
"gold2GemText": "Members will be able to purchase Gems with gold, meaning none of your participants need to buy anything with real money.",
|
||||
"infiniteGem": "Infinite leader Gems",
|
||||
"infiniteGemText": "We will provide the organization leaders with as many Gems as they need, for things like challenge prizes, guild-creation, etc.",
|
||||
"notYetPlan": "Plan not yet available, but click to contact us and we'll keep you updated.",
|
||||
"contactUs": "Contact Us",
|
||||
"checkout": "Checkout",
|
||||
"sureCancelSub": "Are you sure you want to cancel your subscription?",
|
||||
"subCanceled": "Subscription will become inactive on",
|
||||
"buyGemsGoldTitle": "To Buy Gems with Gold",
|
||||
"becomeSubscriber": "Become a Subscriber",
|
||||
"subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
|
||||
"subGemName": "Subscriber Gems",
|
||||
"freeGemsTitle": "Obtain Gems for Free",
|
||||
"maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!",
|
||||
"buyGemsAllow1": "You can buy",
|
||||
"buyGemsAllow2": "more Gems this month",
|
||||
"purchaseGemsSeparately": "Purchase Additional Gems",
|
||||
"subFreeGemsHow": "Habitica players can earn Gems for free by winning <a href=\"/challenges/findChallenges\">challenges</a> that award Gems as a prize, or as a <a href=\"http://habitica.wikia.com/wiki/Contributing_to_Habitica\">contributor reward by helping the development of Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Go to <a href='/user/settings/subscription'>Settings > Subscription</a> to see your subscription details!",
|
||||
"timeTravelers": "Time Travelers",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>Tyler<%= linkEnd %> and <%= linkStartVicky %>Vicky<%= linkEnd %>",
|
||||
"timeTravelersTitle": "Mysterious Time Travelers",
|
||||
"timeTravelersPopoverNoSub": "You'll need a Mystic Hourglass to summon the mysterious Time Travelers! <%= linkStart %>Subscribers<%= linkEnd %> earn one Mystic Hourglass for every three months of consecutive subscribing. Come back when you have a Mystic Hourglass, and the Time Travelers will fetch you a rare pet, mount, or Subscriber Item Set from the past... or maybe even the future.",
|
||||
"timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.",
|
||||
"timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.",
|
||||
"timeTravelersAlreadyOwned": "Congratulations! You already own everything the Time Travelers currently offer. Thanks for supporting the site!",
|
||||
"mysticHourglassPopover": "A Mystic Hourglass allows you to purchase certain limited-time items, such as monthly Mystery Item Sets and awards from world bosses, from the past!",
|
||||
"mysterySetNotFound": "Mystery set not found, or set already owned.",
|
||||
"mysteryItemIsEmpty": "Mystery items are empty",
|
||||
"mysteryItemOpened": "Mystery item opened.",
|
||||
@@ -161,13 +97,9 @@
|
||||
"subUpdateTitle": "Update",
|
||||
"subUpdateDescription": "Update the card to be charged.",
|
||||
"notEnoughHourglasses": "You don't have enough Mystic Hourglasses.",
|
||||
"hourglassBuyEquipSetConfirm": "Buy this full set of items for 1 Mystic Hourglass?",
|
||||
"hourglassBuyItemConfirm": "Buy this item for 1 Mystic Hourglass?",
|
||||
"petsAlreadyOwned": "Pet already owned.",
|
||||
"mountsAlreadyOwned": "Mount already owned.",
|
||||
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.",
|
||||
"mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.",
|
||||
"hourglassPurchase": "Purchased an item using a Mystic Hourglass!",
|
||||
"hourglassPurchaseSet": "Purchased an item set using a Mystic Hourglass!",
|
||||
"missingUnsubscriptionCode": "Missing unsubscription code.",
|
||||
@@ -185,14 +117,7 @@
|
||||
"couponUsed": "Coupon code already used.",
|
||||
"couponCodeRequired": "The coupon code is required.",
|
||||
"paypalCanceled": "Your subscription has been canceled",
|
||||
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
|
||||
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
|
||||
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
|
||||
"everyMonth": "Every Month",
|
||||
"everyXMonths": "Every <%= interval %> Months",
|
||||
"everyYear": "Every Year",
|
||||
"choosePaymentMethod": "Choose your payment method",
|
||||
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
|
||||
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
|
||||
"support": "SUPPORT",
|
||||
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
|
||||
@@ -200,18 +125,12 @@
|
||||
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
|
||||
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
|
||||
"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.",
|
||||
"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!",
|
||||
"haveCouponCode": "Do you have a coupon code?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
|
||||
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to <a href='/user/settings/subscription'>User icon > Settings > Subscription</a>.",
|
||||
"purchaseAll": "Purchase Set",
|
||||
"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",
|
||||
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "সমাপ্ত কাজগুলো মুছুন",
|
||||
"clearCompletedDescription": "সমাপ্ত হওয়া কাজ গুলো নন-সাবস্ক্রাইবারদের ৩০ দিন এবং সাবস্ক্রাইবারদের ৯০ দিন পর মুছে ফেলা হয়।",
|
||||
"clearCompletedConfirm": "আপনি কি নিশ্চিত আপনি নিজের সম্পন্ন কাজগুলো মুছে ফেলতে চান?",
|
||||
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed To-Dos?",
|
||||
"lotOfToDos": "Your most recent 30 completed To-Dos are shown here. You can see older completed To-Dos from Data > Data Display Tool or Data > Export Data > User Data.",
|
||||
"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": "<strong>Tip:</strong> To add multiple <%= taskType %>, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
|
||||
"addsingle": "Add Single",
|
||||
"addATask": "Add a <%= type %>",
|
||||
"editATask": "Edit a <%= type %>",
|
||||
"createTask": "Create <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "These are your <%= taskType %>",
|
||||
"habit": "অভ্যাস",
|
||||
"habits": "অভ্যাস",
|
||||
"newHabit": "নতুন অভ্যাস",
|
||||
"newHabitBulk": "New Habits (one per line)",
|
||||
"habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
|
||||
"positive": "ইতিবাচক",
|
||||
"negative": "নেতিবাচক",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "Save",
|
||||
"addChecklist": "Add Checklist",
|
||||
"checklist": "Checklist",
|
||||
"checklistText": "Break a task into smaller pieces! Checklists increase the Experience and Gold gained from a To-Do, and reduce the damage caused by a Daily.",
|
||||
"newChecklistItem": "New checklist item",
|
||||
"expandChecklist": "Expand Checklist",
|
||||
"collapseChecklist": "Collapse Checklist",
|
||||
"text": "Title",
|
||||
"extraNotes": "Extra Notes",
|
||||
"notes": "Notes",
|
||||
"direction/Actions": "Direction/Actions",
|
||||
"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",
|
||||
"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",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "মধ্যম",
|
||||
"hard": "কঠিন",
|
||||
"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. <br/><br/> You can set your Automatic Allocation method to Task Based in the Stats section of your profile.",
|
||||
"progress": "Progress",
|
||||
"daily": "Daily",
|
||||
"dailies": "Dailies",
|
||||
"newDaily": "New Daily",
|
||||
"newDailyBulk": "New Dailies (one per line)",
|
||||
"dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
|
||||
"streakCounter": "Streak Counter",
|
||||
"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.",
|
||||
"repeatDays": "Every X Days",
|
||||
"repeatWeek": "On Certain Days of the Week",
|
||||
"day": "Day",
|
||||
"days": "Days",
|
||||
"restoreStreak": "Adjust Streak",
|
||||
"resetStreak": "Reset Streak",
|
||||
"todo": "To-Do",
|
||||
"todos": "To-Dos",
|
||||
"newTodo": "New To-Do",
|
||||
"newTodoBulk": "New To-Dos (one per line)",
|
||||
"todosDesc": "To-Dos need to be completed once. Add checklists to your To-Dos to increase their value.",
|
||||
"dueDate": "Due Date",
|
||||
"remaining": "Active",
|
||||
"complete": "Done",
|
||||
"complete2": "Complete",
|
||||
"dated": "Dated",
|
||||
"today": "Today",
|
||||
"dueIn": "Due <%= dueIn %>",
|
||||
"due": "Due",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "Reward",
|
||||
"rewards": "Rewards",
|
||||
"rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
|
||||
"ingamerewards": "Equipment & Skills",
|
||||
"gold": "Gold",
|
||||
"silver": "Silver (100 silver = 1 gold)",
|
||||
"newReward": "New Reward",
|
||||
"newRewardBulk": "New Rewards (one per line)",
|
||||
"price": "Price",
|
||||
"tags": "Tags",
|
||||
"editTags": "Edit",
|
||||
"newTag": "New Tag",
|
||||
"clearTags": "Clear",
|
||||
"hideTags": "Hide",
|
||||
"showTags": "Show",
|
||||
"editTags2": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "Start Date",
|
||||
"startDateHelpTitle": "When should this task start?",
|
||||
"startDateHelp": "Set the date for which this task takes effect. Will not be due on earlier days.",
|
||||
"streaks": "Streak Achievements",
|
||||
"streakName": "<%= count %> Streak Achievements",
|
||||
"streakText": "Has performed <%= count %> 21-day streaks on Dailies",
|
||||
@@ -113,38 +80,15 @@
|
||||
"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 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.",
|
||||
"fortify": "Fortify",
|
||||
"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?",
|
||||
"streakCoins": "Streak Bonus!",
|
||||
"taskToTop": "To top",
|
||||
"taskToBottom": "To bottom",
|
||||
"emptyTask": "Enter the task's title first.",
|
||||
"dailiesRestingInInn": "You're Resting in the Inn! Your Dailies will NOT hurt you tonight, but they WILL still refresh every day. If you're in a quest, you won't deal damage/collect items until you check out of the Inn, but you can still be injured by a Boss if your Party mates skip their own Dailies.",
|
||||
"habitHelp1": "Good Habits are things that you do often. They award Gold and Experience every time you click the <%= plusIcon %>.",
|
||||
"habitHelp2": "Bad Habits are things you want to avoid doing. They remove Health every time you click the <%= minusIcon %>.",
|
||||
"habitHelp3": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Habits' target='_blank'>sample Habits</a>!",
|
||||
"newbieGuild": "More questions? Ask in the <%= linkStart %>Habitica Help guild<%= linkEnd %>!",
|
||||
"dailyHelp1": "Dailies repeat <%= emphasisStart %>every day<%= emphasisEnd %> that they are active. Click the <%= pencilIcon %> to change the days a Daily is active.",
|
||||
"dailyHelp2": "If you don't complete active Dailies, you lose Health when your day rolls over.",
|
||||
"dailyHelp3": "Dailies turn <%= emphasisStart %>redder<%= emphasisEnd %> when you miss them, and <%= emphasisStart %>bluer<%= emphasisEnd %> when you complete them. The redder the Daily, the more it will reward you... or hurt you.",
|
||||
"dailyHelp4": "To change when your day rolls over, go to <%= linkStart %> Settings > Site<%= linkEnd %> > Custom Day Start.",
|
||||
"dailyHelp5": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Dailies' target='_blank'>sample Dailies</a>!",
|
||||
"toDoHelp1": "To-Dos start yellow, and get redder (more valuable) the longer it takes to complete them.",
|
||||
"toDoHelp2": "To-Dos never hurt you! They only award Gold and Experience.",
|
||||
"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 <a href='http://habitica.wikia.com/wiki/Sample_To-Dos' target='_blank'>sample To-Dos</a>!",
|
||||
"rewardHelp1": "The Equipment you buy for your avatar is stored in <%= linkStart %>Inventory > Equipment<%= 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 <a href='http://habitica.wikia.com/wiki/Sample_Custom_Rewards' target='_blank'>some samples here</a>.",
|
||||
"clickForHelp": "Click for help",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "Can't move a completed todo.",
|
||||
"directionUpDown": "\"direction\" is required and must be 'up' or 'down'.",
|
||||
"alreadyTagged": "The task is already tagged with given tag.",
|
||||
"strengthExample": "Relating to exercise and activity",
|
||||
"intelligenceExample": "Relating to academic or mentally challenging pursuits",
|
||||
"perceptionExample": "Relating to work or financial tasks",
|
||||
"constitutionExample": "Relating to health, wellness, and social interaction",
|
||||
"counterPeriod": "Counter Resets Every",
|
||||
"counterPeriodDay": "Day",
|
||||
"counterPeriodWeek": "Week",
|
||||
"counterPeriodMonth": "Month",
|
||||
"habitCounter": "Counter (Resets <%= frequency %>)",
|
||||
"habitCounterUp": "Positive Counter (Resets <%= frequency %>)",
|
||||
"habitCounterDown": "Negative Counter (Resets <%= frequency %>)",
|
||||
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
|
||||
"taskApprovalHasBeenRequested": "Approval has been requested",
|
||||
"taskApprovalWasNotRequested": "Only a task waiting for approval can be marked as needing more work",
|
||||
"approvals": "Approvals",
|
||||
"approvalRequired": "Needs Approval",
|
||||
"repeatZero": "Daily is never due",
|
||||
"repeatType": "Repeat Type",
|
||||
"repeatTypeHelpTitle": "What kind of repeat is this?",
|
||||
"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": "সাপ্তাহিক",
|
||||
"monthly": "মাসিক",
|
||||
"yearly": "বাত্সরিক",
|
||||
"onDays": "On Days",
|
||||
"summary": "সারাংশ",
|
||||
"repeatsOn": "Repeats On",
|
||||
"dayOfWeek": "সপ্তাহের দিন",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "সপ্তাহ",
|
||||
"year": "বছর",
|
||||
"years": "বছর",
|
||||
"groupTasksByChallenge": "Group tasks by challenge title",
|
||||
"taskNotes": "Task Notes",
|
||||
"monthlyRepeatHelpContent": "This task will be due every X months",
|
||||
"yearlyRepeatHelpContent": "This task will be due every X years",
|
||||
"resets": "Resets",
|
||||
"summaryStart": "Repeats <%= frequency %> every <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Next Due Dates",
|
||||
"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",
|
||||
"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...",
|
||||
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
|
||||
"errorTemporaryItem": "This item is temporary and cannot be pinned."
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
"language": "Language",
|
||||
"americanEnglishGovern": "In the event of a discrepancy in the translations, the American English version governs.",
|
||||
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"https://trello.com/c/SvTsLdRF/12-translations\" target=\"_blank\">this</a> Trello card.",
|
||||
"showHeaderPop": "Show your avatar, Health/Experience bars, and party.",
|
||||
"stickyHeader": "Sticky header",
|
||||
"stickyHeaderPop": "Affix the header to the top of the screen. Unchecked means it scrolls out of view.",
|
||||
"newTaskEdit": "Open new tasks in edit mode",
|
||||
"newTaskEditPop": "With this option set, new tasks will immediately open for you to add details like notes and tags.",
|
||||
"dailyDueDefaultView": "Set Dailies default to 'due' tab",
|
||||
"dailyDueDefaultViewPop": "With this option set, the Dailies tasks will default to 'due' instead of 'all'",
|
||||
"reverseChatOrder": "Show chat messages in reverse order",
|
||||
@@ -19,7 +16,6 @@
|
||||
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
|
||||
"suppressStreakModal": "Don't show popup when attaining a Streak achievement",
|
||||
"showTour": "Show Tour",
|
||||
"restartTour": "Restart the introductory tour from when you first joined Habitica.",
|
||||
"showBailey": "Show Bailey",
|
||||
"showBaileyPop": "Bring Bailey the Town Crier out of hiding so you can review past news.",
|
||||
"fixVal": "Fix Character Values",
|
||||
@@ -27,8 +23,6 @@
|
||||
"invalidLevel": "Invalid value: Level must be 1 or greater.",
|
||||
"enableClass": "Enable Class System",
|
||||
"enableClassPop": "You opted out of the class system initially. Would you like now to opt-in?",
|
||||
"classTourPop": "Show the tour for using the class system.",
|
||||
"resetAccount": "Reset Account",
|
||||
"resetAccPop": "Start over, removing all levels, gold, gear, history, and tasks.",
|
||||
"deleteAccount": "Delete Account",
|
||||
"deleteAccPop": "Cancel and remove your Habitica account.",
|
||||
@@ -46,8 +40,6 @@
|
||||
"json": "(JSON)",
|
||||
"customDayStart": "Custom Day Start",
|
||||
"sureChangeCustomDayStartTime": "Are you sure you want to change your Custom Day Start time? Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before then!",
|
||||
"changeCustomDayStart": "Change Custom Day Start?",
|
||||
"sureChangeCustomDayStart": "Are you sure you want to change your custom day start?",
|
||||
"customDayStartHasChanged": "Your custom day start has changed.",
|
||||
"nextCron": "Your Dailies will next reset the first time you use Habitica after <%= time %>. Make sure you have completed your Dailies before this time!",
|
||||
"customDayStartInfo1": "Habitica defaults to check and reset your Dailies at midnight in your own time zone each day. You can customize that time here.",
|
||||
@@ -86,28 +78,20 @@
|
||||
"fixValues": "Fix Values",
|
||||
"fixValuesText1": "If you've encountered a bug or made a mistake that unfairly changed your character (damage you shouldn't have taken, Gold you didn't really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you'll sabotage your own habit-building!",
|
||||
"fixValuesText2": "Note that you cannot restore Streaks on individual tasks here. To do that, edit the Daily and go to Advanced Settings, where you will find a Restore Streak field.",
|
||||
"disabledWinterEvent": "Disabled during Winter Wonderland Event Pt.4 (since the rewards are gold-purchaseable).",
|
||||
"fix21Streaks": "21-Day Streaks",
|
||||
"discardChanges": "Discard Changes",
|
||||
"deleteDo": "Do it, delete my account!",
|
||||
"enterNumber": "Please enter a number between 0 and 24",
|
||||
"fillAll": "Please fill out all fields",
|
||||
"invalidPasswordResetCode": "The supplied password reset code is invalid or has expired.",
|
||||
"passwordChangeSuccess": "Your password was successfully changed to the one you just chose. You can now use it to access your account.",
|
||||
"passwordSuccess": "Password successfully changed",
|
||||
"usernameSuccess": "Username successfully changed",
|
||||
"displayNameSuccess": "Display name successfully changed",
|
||||
"emailSuccess": "Email successfully changed",
|
||||
"detachSocial": "De-register <%= network %>",
|
||||
"detachedSocial": "Successfully removed <%= network %> authentication from your account",
|
||||
"addedLocalAuth": "Successfully added local authentication",
|
||||
"data": "Data",
|
||||
"exportData": "Export Data",
|
||||
"usernameOrEmail": "Username or Email",
|
||||
"email": "Email",
|
||||
"registerWithSocial": "Register with <%= network %>",
|
||||
"registeredWithSocial": "Registered with <%= network %>",
|
||||
"loginNameDescription": "This is what you use to log in to Habitica. To change it, use the form below. If instead you want to change the Display Name that appears on your avatar and in chat messages, go to the User Icon > Profile and click the Edit button.",
|
||||
"emailNotifications": "Email Notifications",
|
||||
"wonChallenge": "You won a Challenge!",
|
||||
"newPM": "Received Private Message",
|
||||
@@ -118,7 +102,6 @@
|
||||
"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",
|
||||
@@ -129,7 +112,6 @@
|
||||
"invitedQuest": "Invited to Quest",
|
||||
"kickedGroup": "Kicked from group",
|
||||
"remindersToLogin": "Reminders to check in to Habitica",
|
||||
"subscribeUsing": "Subscribe using",
|
||||
"unsubscribedSuccessfully": "Unsubscribed successfully!",
|
||||
"unsubscribedTextUsers": "You have successfully unsubscribed from all Habitica emails. You can enable only the emails you want to receive from <a href=\"/user/settings/notifications\">Settings > > Notifications</a> (requires login).",
|
||||
"unsubscribedTextOthers": "You won't receive any other email from Habitica.",
|
||||
@@ -138,13 +120,10 @@
|
||||
"unsubscribeAllPush": "Check to Unsubscribe from all Push Notifications",
|
||||
"correctlyUnsubscribedEmailType": "Correctly unsubscribed from \"<%= emailType %>\" emails.",
|
||||
"subscriptionRateText": "Recurring $<%= price %> USD every <%= months %> months",
|
||||
"recurringText": "recurring",
|
||||
"benefits": "Benefits",
|
||||
"coupon": "Coupon",
|
||||
"couponPlaceholder": "Enter Coupon Code",
|
||||
"couponText": "We sometimes have events and give out coupon codes for special gear. (eg, those who stop by our Wondercon booth)",
|
||||
"apply": "Apply",
|
||||
"resubscribe": "Resubscribe",
|
||||
"promoCode": "Promo Code",
|
||||
"promoCodeApplied": "Promo Code Applied! Check your inventory",
|
||||
"promoPlaceholder": "Enter Promotion Code",
|
||||
@@ -160,23 +139,16 @@
|
||||
"enabled": "Enabled",
|
||||
"webhookURL": "Webhook URL",
|
||||
"invalidUrl": "invalid url",
|
||||
"invalidEnabled": "the \"enabled\" parameter should be a boolean.",
|
||||
"invalidWebhookId": "the \"id\" parameter should be a valid UUID.",
|
||||
"missingWebhookId": "The webhook's id is required.",
|
||||
"invalidWebhookType": "\"<%= type %>\" is not a valid value for the parameter \"type\".",
|
||||
"webhookBooleanOption": "\"<%= option %>\" must be a Boolean value.",
|
||||
"webhookIdAlreadyTaken": "A webhook with the id <%= id %> already exists.",
|
||||
"noWebhookWithId": "There is no webhook with the id <%= id %>.",
|
||||
"regIdRequired": "RegId is required",
|
||||
"invalidPushClient": "Invalid client. Only Official Habitica clients can receive push notifications.",
|
||||
"pushDeviceAdded": "Push device added successfully",
|
||||
"pushDeviceAlreadyAdded": "The user already has the push device",
|
||||
"pushDeviceNotFound": "The user has no push device with this id.",
|
||||
"pushDeviceRemoved": "Push device removed successfully.",
|
||||
"buyGemsGoldCap": "Cap raised to <%= amount %>",
|
||||
"mysticHourglass": "<%= amount %> Mystic Hourglass",
|
||||
"mysticHourglassText": "Mystic Hourglasses allow purchasing a previous month's Mystery Item set.",
|
||||
"purchasedPlanId": "Recurring $<%= price %> USD each <%= months %> Month(s) (<%= plan %>)",
|
||||
"purchasedPlanExtraMonths": "You have <%= months %> months of extra subscription credit.",
|
||||
"consecutiveSubscription": "Consecutive Subscription",
|
||||
"consecutiveMonths": "Consecutive Months:",
|
||||
@@ -205,4 +177,4 @@
|
||||
"usernameNotVerified": "Please confirm your username.",
|
||||
"changeUsernameDisclaimer": "We will be transitioning login names to unique, public usernames soon. This username will be used for invitations, @mentions in chat, and messaging.",
|
||||
"verifyUsernameVeteranPet": "One of these Veteran Pets will be waiting for you after you've finished confirming!"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +1,31 @@
|
||||
{
|
||||
"subscription": "Subscription",
|
||||
"subscriptions": "Subscriptions",
|
||||
"subDescription": "Buy Gems with gold, get monthly mystery items, retain progress history, double daily drop-caps, support the devs. Click for more info.",
|
||||
"sendGems": "Send Gems",
|
||||
"buyGemsGold": "Buy Gems with Gold",
|
||||
"buyGemsGoldText": "Alexander the Merchant will sell you Gems at a cost of 20 Gold per Gem. His monthly shipments are initially capped at 25 Gems per month, but for every 3 consecutive months that you are subscribed, this cap increases by 5 Gems, up to a maximum of 50 Gems per month!",
|
||||
"mustSubscribeToPurchaseGems": "Must subscribe to purchase gems with GP",
|
||||
"reachedGoldToGemCap": "You've reached the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"reachedGoldToGemCapQuantity": "Your requested amount <%= quantity %> exceeds the Gold=>Gem conversion cap <%= convCap %> for this month. We have this to prevent abuse / farming. The cap resets within the first three days of each month.",
|
||||
"retainHistory": "Retain additional history entries",
|
||||
"retainHistoryText": "Makes completed To-Dos and task history available for longer.",
|
||||
"doubleDrops": "Daily drop caps doubled",
|
||||
"doubleDropsText": "Complete your stable faster!",
|
||||
"mysteryItem": "Exclusive monthly items",
|
||||
"mysteryItemText": "Each month you will receive a unique cosmetic item for your avatar! Plus, for every three months of consecutive subscription, the Mysterious Time Travelers will grant you access to historic (and futuristic!) cosmetic items.",
|
||||
"supportDevs": "Supports the developers",
|
||||
"supportDevsText": "Your subscription helps keep Habitica thriving and helps fund the development of new features. Thank you for your generosity!",
|
||||
"exclusiveJackalopePet": "Exclusive pet",
|
||||
"exclusiveJackalopePetText": "Get the Royal Purple Jackalope pet, available only to subscribers!",
|
||||
"giftSubscription": "Want to gift a subscription to someone?",
|
||||
"giftSubscriptionText1": "Open their profile! You can do this by clicking on their avatar in your party header or by clicking on their name in chat.",
|
||||
"giftSubscriptionText2": "Click on the gift icon in the top right of their profile.",
|
||||
"giftSubscriptionText3": "Select \"subscription\" and enter your payment information.",
|
||||
"giftSubscriptionText4": "Thanks for supporting Habitica!",
|
||||
"monthUSD": "USD / Month",
|
||||
"organization": "Organization",
|
||||
"groupPlans": "Group Plans",
|
||||
"indivPlan1": "For individuals, Habitica is free to play. Even for small interest groups, free (or cheap)",
|
||||
"indivPlan2": "can be used to motivate participants in behavioral modification. Think writing groups, art challenges, and more.",
|
||||
"groupText1": "But some group leaders will want more control, privacy, security, and support. Examples of such groups are families, health and wellness groups, employee groups, and more. These plans provide private instances of Habitica for your group or organization, secure and independent of",
|
||||
"groupText2": "See below for additional plan perks, and contact us for more information!",
|
||||
"planFamily": "Family (Coming Soon)",
|
||||
"planGroup": "Group (Coming Soon)",
|
||||
"dedicatedHost": "Dedicated Hosting",
|
||||
"dedicatedHostText": "Dedicated Hosting: you get your own database and server hosted by Habitica, or optionally we'll install it in your organization's network. If not checked, the plan uses \"Shared Hosting\": your organization uses the same database as Habitica proper while performing independently Habitica. Your members are shielded from Tavern & Guilds, but still on the same server/database.",
|
||||
"individualSub": "Individual Subscription",
|
||||
"subscribe": "Subscribe",
|
||||
"subscribed": "Subscribed",
|
||||
"nowSubscribed": "You are now subscribed to Habitica!",
|
||||
"manageSub": "Click to manage subscription",
|
||||
"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 <a href=\"https://support.apple.com/en-us/HT202039\">Apple's official instructions</a> 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",
|
||||
"morePlans": "More Plans<br>Coming Soon",
|
||||
"organizationSub": "Private Organization",
|
||||
"organizationSubText": "Members of the organization participate outside of Habitica proper, providing focus for your participants.",
|
||||
"hostingType": "Hosting Type",
|
||||
"hostingTypeText": "Shared hosting means your organization uses the same database as Habitica proper even though you don't interact with Habitica. Dedicated means you get your own database and server. You can choose to have Habitica host your server/db, or we can install it on your own servers.",
|
||||
"dedicated": "Dedicated",
|
||||
"customDomain": "Custom Domain",
|
||||
"customDomainText": "We can optionally give you your own domain for the installation.",
|
||||
"maxPlayers": "Max Participants",
|
||||
"maxPlayersText": "The maximum number of players in your private organization.",
|
||||
"unlimited": "Unlimited",
|
||||
"priSupport": "Priority Support On Tickets & Hosting",
|
||||
"priSupportText": "First to be provided for with support.",
|
||||
"timeSupport": "Support Hours / Month",
|
||||
"timeSupportText": "We will provide support for training, bugs, installation, and feature requests.",
|
||||
"gameFeatures": "Game features",
|
||||
"gold2Gem": "Gems purchasable with gold",
|
||||
"gold2GemText": "Members will be able to purchase Gems with gold, meaning none of your participants need to buy anything with real money.",
|
||||
"infiniteGem": "Infinite leader Gems",
|
||||
"infiniteGemText": "We will provide the organization leaders with as many Gems as they need, for things like challenge prizes, guild-creation, etc.",
|
||||
"notYetPlan": "Plan not yet available, but click to contact us and we'll keep you updated.",
|
||||
"contactUs": "Contact Us",
|
||||
"checkout": "Checkout",
|
||||
"sureCancelSub": "Are you sure you want to cancel your subscription?",
|
||||
"subCanceled": "Subscription will become inactive on",
|
||||
"buyGemsGoldTitle": "To Buy Gems with Gold",
|
||||
"becomeSubscriber": "Become a Subscriber",
|
||||
"subGemPop": "Because you subscribe to Habitica, you can purchase a number of Gems each month using Gold.",
|
||||
"subGemName": "Subscriber Gems",
|
||||
"freeGemsTitle": "Obtain Gems for Free",
|
||||
"maxBuyGems": "You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!",
|
||||
"buyGemsAllow1": "You can buy",
|
||||
"buyGemsAllow2": "more Gems this month",
|
||||
"purchaseGemsSeparately": "Purchase Additional Gems",
|
||||
"subFreeGemsHow": "Habitica players can earn Gems for free by winning <a href=\"/challenges/findChallenges\">challenges</a> that award Gems as a prize, or as a <a href=\"http://habitica.wikia.com/wiki/Contributing_to_Habitica\">contributor reward by helping the development of Habitica.</a>",
|
||||
"seeSubscriptionDetails": "Go to <a href='/user/settings/subscription'>Settings > Subscription</a> to see your subscription details!",
|
||||
"timeTravelers": "Time Travelers",
|
||||
"timeTravelersTitleNoSub": "<%= linkStartTyler %>Tyler<%= linkEnd %> and <%= linkStartVicky %>Vicky<%= linkEnd %>",
|
||||
"timeTravelersTitle": "Mysterious Time Travelers",
|
||||
"timeTravelersPopoverNoSub": "You'll need a Mystic Hourglass to summon the mysterious Time Travelers! <%= linkStart %>Subscribers<%= linkEnd %> earn one Mystic Hourglass for every three months of consecutive subscribing. Come back when you have a Mystic Hourglass, and the Time Travelers will fetch you a rare pet, mount, or Subscriber Item Set from the past... or maybe even the future.",
|
||||
"timeTravelersPopoverNoSubMobile": "Looks like you’ll need a Mystic Hourglass to open the time portal and summon the Mysterious Time Travelers.",
|
||||
"timeTravelersPopover": "Your Mystic Hourglass has opened our time portal! Choose what you’d like us to fetch from the past or future.",
|
||||
"timeTravelersAlreadyOwned": "Congratulations! You already own everything the Time Travelers currently offer. Thanks for supporting the site!",
|
||||
"mysticHourglassPopover": "A Mystic Hourglass allows you to purchase certain limited-time items, such as monthly Mystery Item Sets and awards from world bosses, from the past!",
|
||||
"mysterySetNotFound": "Mystery set not found, or set already owned.",
|
||||
"mysteryItemIsEmpty": "Mystery items are empty",
|
||||
"mysteryItemOpened": "Mystery item opened.",
|
||||
@@ -161,13 +97,9 @@
|
||||
"subUpdateTitle": "Update",
|
||||
"subUpdateDescription": "Update the card to be charged.",
|
||||
"notEnoughHourglasses": "You don't have enough Mystic Hourglasses.",
|
||||
"hourglassBuyEquipSetConfirm": "Buy this full set of items for 1 Mystic Hourglass?",
|
||||
"hourglassBuyItemConfirm": "Buy this item for 1 Mystic Hourglass?",
|
||||
"petsAlreadyOwned": "Pet already owned.",
|
||||
"mountsAlreadyOwned": "Mount already owned.",
|
||||
"typeNotAllowedHourglass": "Item type not supported for purchase with Mystic Hourglass. Allowed types: <%= allowedTypes %>",
|
||||
"petsNotAllowedHourglass": "Pet not available for purchase with Mystic Hourglass.",
|
||||
"mountsNotAllowedHourglass": "Mount not available for purchase with Mystic Hourglass.",
|
||||
"hourglassPurchase": "Purchased an item using a Mystic Hourglass!",
|
||||
"hourglassPurchaseSet": "Purchased an item set using a Mystic Hourglass!",
|
||||
"missingUnsubscriptionCode": "Missing unsubscription code.",
|
||||
@@ -185,14 +117,7 @@
|
||||
"couponUsed": "Coupon code already used.",
|
||||
"couponCodeRequired": "The coupon code is required.",
|
||||
"paypalCanceled": "Your subscription has been canceled",
|
||||
"earnGemsMonthly": "Earn up to **<%= cap %> Gems** per month",
|
||||
"receiveMysticHourglass": "Receive a Mystic Hourglass!",
|
||||
"receiveMysticHourglasses": "Receive **<%= amount %> Mystic Hourglasses**!",
|
||||
"everyMonth": "Every Month",
|
||||
"everyXMonths": "Every <%= interval %> Months",
|
||||
"everyYear": "Every Year",
|
||||
"choosePaymentMethod": "Choose your payment method",
|
||||
"subscribeSupportsDevs": "Subscribing supports the developers and helps keep Habitica running",
|
||||
"buyGemsSupportsDevs": "Purchasing Gems supports the developers and helps keep Habitica running",
|
||||
"support": "SUPPORT",
|
||||
"gemBenefitLeadin": "Gems allow you to buy fun extras for your account, including:",
|
||||
@@ -200,18 +125,12 @@
|
||||
"gemBenefit2": "Backgrounds to immerse your avatar in the world of Habitica!",
|
||||
"gemBenefit3": "Exciting Quest chains that drop pet eggs.",
|
||||
"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.",
|
||||
"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!",
|
||||
"haveCouponCode": "Do you have a coupon code?",
|
||||
"subscriptionAlreadySubscribedLeadIn": "Thanks for subscribing!",
|
||||
"subscriptionAlreadySubscribed1": "To see your subscription details and cancel, renew, or change your subscription, please go to <a href='/user/settings/subscription'>User icon > Settings > Subscription</a>.",
|
||||
"purchaseAll": "Purchase Set",
|
||||
"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",
|
||||
"notEnoughGemsToBuy": "You are unable to buy that amount of gems"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,7 @@
|
||||
"clearCompleted": "Delete Completed",
|
||||
"clearCompletedDescription": "Completed To-Dos are deleted after 30 days for non-subscribers and 90 days for subscribers.",
|
||||
"clearCompletedConfirm": "Are you sure you want to delete your completed To-Dos?",
|
||||
"sureDeleteCompletedTodos": "Are you sure you want to delete your completed To-Dos?",
|
||||
"lotOfToDos": "Your most recent 30 completed To-Dos are shown here. You can see older completed To-Dos from Data > Data Display Tool or Data > Export Data > User Data.",
|
||||
"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": "<strong>Tip:</strong> To add multiple <%= taskType %>, separate each one using a line break (Shift + Enter) and then press \"Enter.\"",
|
||||
"addsingle": "Add Single",
|
||||
"addATask": "Add a <%= type %>",
|
||||
"editATask": "Edit a <%= type %>",
|
||||
"createTask": "Create <%= type %>",
|
||||
@@ -15,8 +11,6 @@
|
||||
"theseAreYourTasks": "These are your <%= taskType %>",
|
||||
"habit": "Habit",
|
||||
"habits": "Habits",
|
||||
"newHabit": "New Habit",
|
||||
"newHabitBulk": "New Habits (one per line)",
|
||||
"habitsDesc": "Habits don't have a rigid schedule. You can check them off multiple times per day.",
|
||||
"positive": "Positive",
|
||||
"negative": "Negative",
|
||||
@@ -26,19 +20,12 @@
|
||||
"save": "Save",
|
||||
"addChecklist": "Add Checklist",
|
||||
"checklist": "Checklist",
|
||||
"checklistText": "Break a task into smaller pieces! Checklists increase the Experience and Gold gained from a To-Do, and reduce the damage caused by a Daily.",
|
||||
"newChecklistItem": "New checklist item",
|
||||
"expandChecklist": "Expand Checklist",
|
||||
"collapseChecklist": "Collapse Checklist",
|
||||
"text": "Title",
|
||||
"extraNotes": "Extra Notes",
|
||||
"notes": "Notes",
|
||||
"direction/Actions": "Direction/Actions",
|
||||
"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",
|
||||
"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",
|
||||
@@ -46,38 +33,26 @@
|
||||
"medium": "Medium",
|
||||
"hard": "Hard",
|
||||
"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. <br/><br/> You can set your Automatic Allocation method to Task Based in the Stats section of your profile.",
|
||||
"progress": "Progress",
|
||||
"daily": "Daily",
|
||||
"dailies": "Dailies",
|
||||
"newDaily": "New Daily",
|
||||
"newDailyBulk": "New Dailies (one per line)",
|
||||
"dailysDesc": "Dailies repeat on a regular basis. Choose the schedule that works best for you!",
|
||||
"streakCounter": "Streak Counter",
|
||||
"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.",
|
||||
"repeatDays": "Every X Days",
|
||||
"repeatWeek": "On Certain Days of the Week",
|
||||
"day": "Day",
|
||||
"days": "Days",
|
||||
"restoreStreak": "Adjust Streak",
|
||||
"resetStreak": "Reset Streak",
|
||||
"todo": "To-Do",
|
||||
"todos": "To-Dos",
|
||||
"newTodo": "New To-Do",
|
||||
"newTodoBulk": "New To-Dos (one per line)",
|
||||
"todosDesc": "To-Dos need to be completed once. Add checklists to your To-Dos to increase their value.",
|
||||
"dueDate": "Due Date",
|
||||
"remaining": "Active",
|
||||
"complete": "Done",
|
||||
"complete2": "Complete",
|
||||
"dated": "Dated",
|
||||
"today": "Today",
|
||||
"dueIn": "Due <%= dueIn %>",
|
||||
"due": "Due",
|
||||
@@ -87,23 +62,15 @@
|
||||
"reward": "Reward",
|
||||
"rewards": "Rewards",
|
||||
"rewardsDesc": "Rewards are a great way to use Habitica and complete your tasks. Try adding a few today!",
|
||||
"ingamerewards": "Equipment & Skills",
|
||||
"gold": "Gold",
|
||||
"silver": "Silver (100 silver = 1 gold)",
|
||||
"newReward": "New Reward",
|
||||
"newRewardBulk": "New Rewards (one per line)",
|
||||
"price": "Price",
|
||||
"tags": "Tags",
|
||||
"editTags": "Edit",
|
||||
"newTag": "New Tag",
|
||||
"clearTags": "Clear",
|
||||
"hideTags": "Hide",
|
||||
"showTags": "Show",
|
||||
"editTags2": "Edit Tags",
|
||||
"toRequired": "You must supply a \"to\" property",
|
||||
"startDate": "Start Date",
|
||||
"startDateHelpTitle": "When should this task start?",
|
||||
"startDateHelp": "Set the date for which this task takes effect. Will not be due on earlier days.",
|
||||
"streaks": "Streak Achievements",
|
||||
"streakName": "<%= count %> Streak Achievements",
|
||||
"streakText": "Has performed <%= count %> 21-day streaks on Dailies",
|
||||
@@ -113,38 +80,15 @@
|
||||
"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 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.",
|
||||
"fortify": "Fortify",
|
||||
"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?",
|
||||
"streakCoins": "Streak Bonus!",
|
||||
"taskToTop": "To top",
|
||||
"taskToBottom": "To bottom",
|
||||
"emptyTask": "Enter the task's title first.",
|
||||
"dailiesRestingInInn": "You're Resting in the Inn! Your Dailies will NOT hurt you tonight, but they WILL still refresh every day. If you're in a quest, you won't deal damage/collect items until you check out of the Inn, but you can still be injured by a Boss if your Party mates skip their own Dailies.",
|
||||
"habitHelp1": "Good Habits are things that you do often. They award Gold and Experience every time you click the <%= plusIcon %>.",
|
||||
"habitHelp2": "Bad Habits are things you want to avoid doing. They remove Health every time you click the <%= minusIcon %>.",
|
||||
"habitHelp3": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Habits' target='_blank'>sample Habits</a>!",
|
||||
"newbieGuild": "More questions? Ask in the <%= linkStart %>Habitica Help guild<%= linkEnd %>!",
|
||||
"dailyHelp1": "Dailies repeat <%= emphasisStart %>every day<%= emphasisEnd %> that they are active. Click the <%= pencilIcon %> to change the days a Daily is active.",
|
||||
"dailyHelp2": "If you don't complete active Dailies, you lose Health when your day rolls over.",
|
||||
"dailyHelp3": "Dailies turn <%= emphasisStart %>redder<%= emphasisEnd %> when you miss them, and <%= emphasisStart %>bluer<%= emphasisEnd %> when you complete them. The redder the Daily, the more it will reward you... or hurt you.",
|
||||
"dailyHelp4": "To change when your day rolls over, go to <%= linkStart %> Settings > Site<%= linkEnd %> > Custom Day Start.",
|
||||
"dailyHelp5": "For inspiration, check out these <a href='http://habitica.wikia.com/wiki/Sample_Dailies' target='_blank'>sample Dailies</a>!",
|
||||
"toDoHelp1": "To-Dos start yellow, and get redder (more valuable) the longer it takes to complete them.",
|
||||
"toDoHelp2": "To-Dos never hurt you! They only award Gold and Experience.",
|
||||
"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 <a href='http://habitica.wikia.com/wiki/Sample_To-Dos' target='_blank'>sample To-Dos</a>!",
|
||||
"rewardHelp1": "The Equipment you buy for your avatar is stored in <%= linkStart %>Inventory > Equipment<%= 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 <a href='http://habitica.wikia.com/wiki/Sample_Custom_Rewards' target='_blank'>some samples here</a>.",
|
||||
"clickForHelp": "Click for help",
|
||||
"taskAliasAlreadyUsed": "Task alias already used on another task.",
|
||||
"taskNotFound": "Task not found.",
|
||||
"invalidTaskType": "Task type must be one of \"habit\", \"daily\", \"todo\", \"reward\".",
|
||||
@@ -160,30 +104,14 @@
|
||||
"cantMoveCompletedTodo": "Can't move a completed todo.",
|
||||
"directionUpDown": "\"direction\" is required and must be 'up' or 'down'.",
|
||||
"alreadyTagged": "The task is already tagged with given tag.",
|
||||
"strengthExample": "Relating to exercise and activity",
|
||||
"intelligenceExample": "Relating to academic or mentally challenging pursuits",
|
||||
"perceptionExample": "Relating to work or financial tasks",
|
||||
"constitutionExample": "Relating to health, wellness, and social interaction",
|
||||
"counterPeriod": "Counter Resets Every",
|
||||
"counterPeriodDay": "Day",
|
||||
"counterPeriodWeek": "Week",
|
||||
"counterPeriodMonth": "Month",
|
||||
"habitCounter": "Counter (Resets <%= frequency %>)",
|
||||
"habitCounterUp": "Positive Counter (Resets <%= frequency %>)",
|
||||
"habitCounterDown": "Negative Counter (Resets <%= frequency %>)",
|
||||
"taskRequiresApproval": "This task must be approved before you can complete it. Approval has already been requested",
|
||||
"taskApprovalHasBeenRequested": "Approval has been requested",
|
||||
"taskApprovalWasNotRequested": "Only a task waiting for approval can be marked as needing more work",
|
||||
"approvals": "Approvals",
|
||||
"approvalRequired": "Needs Approval",
|
||||
"repeatZero": "Daily is never due",
|
||||
"repeatType": "Repeat Type",
|
||||
"repeatTypeHelpTitle": "What kind of repeat is this?",
|
||||
"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": "Weekly",
|
||||
"monthly": "Monthly",
|
||||
"yearly": "Yearly",
|
||||
"onDays": "On Days",
|
||||
"summary": "Summary",
|
||||
"repeatsOn": "Repeats On",
|
||||
"dayOfWeek": "Day of the Week",
|
||||
@@ -194,20 +122,10 @@
|
||||
"weeks": "Weeks",
|
||||
"year": "Year",
|
||||
"years": "Years",
|
||||
"groupTasksByChallenge": "Group tasks by challenge title",
|
||||
"taskNotes": "Task Notes",
|
||||
"monthlyRepeatHelpContent": "This task will be due every X months",
|
||||
"yearlyRepeatHelpContent": "This task will be due every X years",
|
||||
"resets": "Resets",
|
||||
"summaryStart": "Repeats <%= frequency %> every <%= everyX %> <%= frequencyPlural %>",
|
||||
"nextDue": "Next Due Dates",
|
||||
"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",
|
||||
"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...",
|
||||
"sessionOutdated": "Your session is outdated. Please refresh or sync.",
|
||||
"errorTemporaryItem": "This item is temporary and cannot be pinned."
|
||||
}
|
||||
}
|
||||
|
||||