Compare commits

..

15 Commits

Author SHA1 Message Date
Kalista Payne d466e9bc5e 5.48.3 2026-06-09 12:18:52 -05:00
Weblate eb2660f606 Merge branch 'origin/develop' into Weblate. 2026-06-09 18:57:58 +02:00
Kalista Payne ab38ed4d2a Update README.md 2026-06-09 11:56:50 -05:00
Weblate d8c1bfc80a Translated using Weblate (Japanese)
Currently translated at 96.8% (3495 of 3607 strings)

Translated using Weblate (Japanese)

Currently translated at 99.3% (154 of 155 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (3607 of 3607 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (131 of 131 strings)

Co-authored-by: Nisa Hadisti <nisahadisti18@gmail.com>
Co-authored-by: Serhii <serzh.photograf@gmail.com>
Co-authored-by: Stelio Passaris <habitica@stelio.net>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/id/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/
Translation: Habitica/Gear
Translation: Habitica/Npc
Translation: Habitica/Settings
Translation: Habitica/Tasks
2026-06-09 17:29:06 +02:00
Kalista Payne 106ea68e31 fix(test): add expected CSP header 2026-06-04 11:25:40 -05:00
Fiz e6eda1bdaa fix(tasks): correct move route for challenge task reordering (#15660)
route challenge task moves to the user endpoint, not group-tasks
2026-06-04 11:20:36 -05:00
Kalista Payne bca081d7be fix(csp): do it ourself 2026-06-04 11:17:37 -05:00
Kalista Payne dcbb491bd2 5.48.2 2026-06-04 10:48:00 -05:00
Phillip Thelen 9bc9ce917f Correctly initialize rate limiter 2026-06-04 10:47:57 -05:00
Kalista Payne 7b7dc255df Merge commit from fork
Co-authored-by: YoyoChaud <yoan-degans-1337-yoyo@proton.me>
2026-06-04 10:46:31 -05:00
Kalista Payne 393b6f9e12 5.48.1 2026-06-02 14:02:13 -05:00
Weblate 8870c2b1ec Merge branch 'origin/develop' into Weblate. 2026-06-02 21:00:56 +02:00
Kalista Payne 2948969a4a fix(seo): revert some Google tweaking (#15658) 2026-06-02 10:12:05 -05:00
Weblate 9d70105c1a Translated using Weblate (French)
Currently translated at 100.0% (3607 of 3607 strings)

Translated using Weblate (French)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (952 of 952 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (3607 of 3607 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 80.8% (704 of 871 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Japanese)

Currently translated at 96.7% (3490 of 3607 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (281 of 282 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Japanese)

Currently translated at 96.5% (3482 of 3607 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (296 of 296 strings)

Translated using Weblate (Japanese)

Currently translated at 98.7% (153 of 155 strings)

Translated using Weblate (Japanese)

Currently translated at 89.8% (266 of 296 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (949 of 952 strings)

Translated using Weblate (Korean)

Currently translated at 99.1% (944 of 952 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (949 of 952 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 66.0% (2381 of 3607 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 99.1% (944 of 952 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 97.0% (3501 of 3607 strings)

Translated using Weblate (Portuguese)

Currently translated at 80.4% (238 of 296 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (202 of 202 strings)

Translated using Weblate (Portuguese)

Currently translated at 58.6% (2117 of 3607 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (247 of 247 strings)

Translated using Weblate (Korean)

Currently translated at 48.3% (1743 of 3607 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (282 of 282 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 100.0% (871 of 871 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (155 of 155 strings)

Translated using Weblate (Portuguese)

Currently translated at 79.0% (234 of 296 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (871 of 871 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.3% (154 of 155 strings)

Translated using Weblate (Ukrainian)

Currently translated at 96.3% (839 of 871 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (296 of 296 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (952 of 952 strings)

Translated using Weblate (German)

Currently translated at 98.7% (153 of 155 strings)

Translated using Weblate (Ukrainian)

Currently translated at 95.2% (830 of 871 strings)

Translated using Weblate (German)

Currently translated at 97.1% (3505 of 3607 strings)

Translated using Weblate (Ukrainian)

Currently translated at 95.1% (829 of 871 strings)

Co-authored-by: Candela Escudero <escuderogarayc@gmail.com>
Co-authored-by: Daniel Costa Carvalho <danielcostacarvalho@gmail.com>
Co-authored-by: Duggu Ghosh <duggu52d@gmail.com>
Co-authored-by: Emily Coper-Jones <leafshadowandbrightbriar@gmail.com>
Co-authored-by: Gabriel Carvalho Lemos <ogabrielclemos@gmail.com>
Co-authored-by: Maria Morant <luisa.morant@yahoo.com>
Co-authored-by: Marília Gabriela da Silva Hörnke <gabrielahornke@gmail.com>
Co-authored-by: Ming En Ho <as4696137@gmail.com>
Co-authored-by: Oblivionis <oblivionis.skk@gmail.com>
Co-authored-by: Serhii <serzh.photograf@gmail.com>
Co-authored-by: Sophie LE MASLE <sophiesuff@gmail.com>
Co-authored-by: Stelio Passaris <habitica@stelio.net>
Co-authored-by: Summer_GUI <heyang94@163.com>
Co-authored-by: Toro Mor <thomas.bizer@gmx.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: blanknoose <rowanberry.nil@gmail.com>
Co-authored-by: いんこ <ayakabooker@gmail.com>
Co-authored-by: ? <importantdata78@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/character/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/en_GB/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/de/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/zh_Hans/
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Limited
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2026-06-02 16:17:31 +02:00
Kalista Payne c375f825ee Redirect apidoc to offsite version (#15657)
* refactor(apidoc): redirect to offsite version

* fix(lint): string template, whitespace

* fix(router): fix bookmarked visit

* fix(lint): various

* fix(lint): more obj structure
2026-05-28 12:20:53 -05:00
73 changed files with 506 additions and 1903 deletions
-1
View File
@@ -8,7 +8,6 @@ website/client/
website/common/transpiled-babel/
dist/
dist-client/
apidoc/html/
content_cache/
i18n_cache/
node_modules/
+2 -23
View File
@@ -36,29 +36,7 @@ jobs:
CI: true
NODE_ENV: test
- run: npm run lint-no-fix
apidoc:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [21.x]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: sudo apt update
- run: sudo apt -y install libkrb5-dev
- run: cp config.json.example config.json
- name: npm install
run: |
npm i
env:
CI: true
NODE_ENV: test
- run: npm run apidoc
sanity:
runs-on: ubuntu-latest
strategy:
@@ -106,6 +84,7 @@ jobs:
CI: true
NODE_ENV: test
- run: npm run test:common
content:
runs-on: ubuntu-latest
strategy:
+3
View File
@@ -1,3 +1,6 @@
## ⚠️ **No AI-Generated Code Policy**
This repository prohibits the submission of code generated by large language models (LLMs), AI coding assistants, or automated generation tools. All code must be authored entirely by humans. AI-assisted commits will be rejected during pull request reviews.
Habitica ![Build Status](https://github.com/HabitRPG/habitica/workflows/Test/badge.svg)
===============
-14
View File
@@ -1,14 +0,0 @@
{
"name": "Habitica V3 API Documentation",
"title": "Habitica",
"url": "https://habitica.com",
"version": "3.0.0",
"sampleUrl": null,
"header": {
"title": "Introduction",
"filename": "apidoc/header.md"
},
"template": {
"withCompare": false
}
}
-5
View File
@@ -1,5 +0,0 @@
# Introduction
This webpage includes the documentation for version 3 of the [Habitica](https://habitica.com) API.
If you're developing a 3rd party tool that uses the Habitica API, read the [API Usage Guidelines](https://github.com/HabitRPG/habitica/wiki/API-Usage-Guidelines), which describe how to be a responsible user of our server resources!
-26
View File
@@ -1,26 +0,0 @@
import gulp from 'gulp';
import clean from 'rimraf';
import apidoc from 'apidoc';
const APIDOC_DEST_PATH = './apidoc/html';
const APIDOC_SRC_PATH = './website/server';
const APIDOC_CONFIG_PATH = './apidoc/apidoc.json';
gulp.task('apidoc:clean', done => {
clean(APIDOC_DEST_PATH, done);
});
gulp.task('apidoc', gulp.series('apidoc:clean', done => {
const result = apidoc.createDoc({
src: APIDOC_SRC_PATH,
dest: APIDOC_DEST_PATH,
config: APIDOC_CONFIG_PATH,
});
if (result === false) {
done(new Error('There was a problem generating apiDoc documentation.'));
} else {
done();
}
}));
gulp.task('apidoc:watch', gulp.series('apidoc', done => gulp.watch(`${APIDOC_SRC_PATH}/**/*.js`, gulp.series('apidoc', done))));
-1
View File
@@ -26,7 +26,6 @@ gulp.task('build:cache', gulp.parallel(
gulp.task('build:prod', gulp.series(
'build:babel',
'apidoc',
'build:cache',
done => done(),
));
-2
View File
@@ -12,11 +12,9 @@ require('@babel/register');
const gulp = require('gulp');
if (process.env.NODE_ENV === 'production') { // eslint-disable-line no-process-env
require('./gulp/gulp-apidoc'); // eslint-disable-line global-require
require('./gulp/gulp-cache'); // eslint-disable-line global-require
require('./gulp/gulp-build'); // eslint-disable-line global-require
} else {
require('./gulp/gulp-apidoc'); // eslint-disable-line global-require
require('./gulp/gulp-cache'); // eslint-disable-line global-require
require('./gulp/gulp-build'); // eslint-disable-line global-require
require('./gulp/gulp-console'); // eslint-disable-line global-require
+6 -1572
View File
File diff suppressed because it is too large Load Diff
+2 -4
View File
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "5.48.0",
"version": "5.48.3",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.22.10",
@@ -13,7 +13,6 @@
"accepts": "^1.3.8",
"amazon-payments": "^0.2.9",
"amplitude": "^6.0.0",
"apidoc": "^0.54.0",
"apple-auth": "^1.0.9",
"babel-preset-env": "^1.7.0",
"bcrypt": "^5.1.1",
@@ -90,7 +89,7 @@
"scripts": {
"lint": "eslint --ext .js --fix . && cd website/client && npm run lint",
"lint-no-fix": "eslint --ext .js . && cd website/client && npm run lint-no-fix",
"test": "npm run lint && gulp test && gulp apidoc",
"test": "npm run lint && gulp test",
"test:build": "gulp test:prepare:build",
"test:api-v3": "gulp test:api-v3",
"test:api:unit": "gulp test:api:unit",
@@ -115,7 +114,6 @@
"docker:mongo:test": "docker compose -f docker-compose.mongo-test-local.yml up",
"mongo:test": "node scripts/start-local-mongo.mjs --test-db",
"postinstall": "git config --global url.\"https://\".insteadOf git:// && gulp build && cd website/client && npm install",
"apidoc": "gulp apidoc",
"heroku-postbuild": ".heroku/report_deploy.sh"
},
"devDependencies": {
+1 -2
View File
@@ -236,9 +236,8 @@ describe('Google Payments', () => {
paymentMethod: googlePayments.constants.PAYMENT_METHOD_GOOGLE,
sub,
headers,
nextPaymentProcessing,
nextBillingDate: undefined,
additionalData: { data: receipt, signature },
nextPaymentProcessing,
});
});
});
+2
View File
@@ -23,6 +23,7 @@ describe('cors middleware', () => {
'Access-Control-Allow-Methods': 'OPTIONS,GET,POST,PUT,HEAD,DELETE',
'Access-Control-Allow-Headers': 'Authorization,Content-Type,Accept,Content-Encoding,X-Requested-With,x-api-user,x-api-key,x-client',
'Access-Control-Expose-Headers': 'X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,Retry-After',
'Content-Security-Policy': "default-src 'self' habitica.com *.habitica.com *.amazon.com *.amazonaws.com *.amplitude.com *.loggly.com *.payments-amazon.com *.stripe.com *.stripe.network; base-uri 'self'; font-src 'self' https: data:; form-action 'self'; frame-ancestors 'self'; img-src * data:; object-src 'none'; script-src-attr 'none'; style-src 'self' https: 'unsafe-inline'",
});
expect(res.sendStatus).to.not.have.been.called;
expect(next).to.have.been.calledOnce;
@@ -36,6 +37,7 @@ describe('cors middleware', () => {
'Access-Control-Allow-Methods': 'OPTIONS,GET,POST,PUT,HEAD,DELETE',
'Access-Control-Allow-Headers': 'Authorization,Content-Type,Accept,Content-Encoding,X-Requested-With,x-api-user,x-api-key,x-client',
'Access-Control-Expose-Headers': 'X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,Retry-After',
'Content-Security-Policy': "default-src 'self' habitica.com *.habitica.com *.amazon.com *.amazonaws.com *.amplitude.com *.loggly.com *.payments-amazon.com *.stripe.com *.stripe.network; base-uri 'self'; font-src 'self' https: data:; form-action 'self'; frame-ancestors 'self'; img-src * data:; object-src 'none'; script-src-attr 'none'; style-src 'self' https: 'unsafe-inline'",
});
expect(res.sendStatus).to.have.been.calledWith(200);
expect(next).to.not.have.been.called;
-22
View File
@@ -1,22 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Habitica - FAQ</title>
<meta name="description" content="Frequently Asked Questions about Habitica, the gamified task manager.">
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed:400,400i,700,700i|Roboto:400,400i,700,700i" rel="stylesheet">
<link rel="shortcut icon" sizes="48x48" href="/static/icons/favicon.ico">
<link rel="shortcut icon" sizes="192x192" href="/static/icons/favicon_192x192.png">
<link rel="mask-icon" href="/static/icons/favicon.ico">
<meta property="og:image" content="/static/emails/images/meta-image.png" />
<script type="module" src="/src/main.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/javascript" src="//cloudfront.loggly.com/js/loggly.tracker-latest.min.js" async></script>
<!-- Translations -->
<script type='text/javascript' src='/api/v4/i18n/core' vite-ignore></script>
</body>
</html>
+1 -1
View File
@@ -141,7 +141,7 @@
<ul>
<li>
<a
href="/apidoc"
href="https://apidoc.habitica.com"
target="_blank"
>{{ $t('APIv3') }}
</a>
@@ -582,7 +582,7 @@ export default {
const newPosition = where === 'top' ? 0 : list.length;
list.splice(newPosition, 0, moved[0]);
if (!this.isUser) {
if (task.group.id && !this.isUser) {
await this.$store.dispatch('tasks:moveGroupTask', {
taskId: taskIdToMove,
position: newPosition,
@@ -592,7 +592,7 @@ export default {
taskId: taskIdToMove,
position: newPosition,
});
this.user.tasksOrder[`${this.type}s`] = newOrder;
if (!this.taskListOverride) this.user.tasksOrder[`${this.type}s`] = newOrder;
}
},
async rewardSorted (data) {
+8
View File
@@ -7,6 +7,7 @@ import { PAGES } from '@/libs/consts';
import { STATIC_ROUTES } from './static-routes';
import { USER_ROUTES } from './user-routes';
import { DEPRECATED_ROUTES } from '@/router/deprecated-routes';
import { NotFoundPage } from './shared-route-imports';
// NOTE: when adding a page make sure to implement the `common:setTitle` action
@@ -259,6 +260,13 @@ const router = new VueRouter({
// Only used to handle some redirects
// See router.beforeEach
{ path: '/static/tavern-and-guilds', redirect: '/static/faq/tavern-and-guilds' },
{
path: '/apidoc',
component: NotFoundPage,
beforeEnter () {
window.location.href = 'https://apidoc.habitica.com';
},
},
{ path: '/redirect/:redirect', name: 'redirect' },
{ path: '*', redirect: { name: 'notFound' } },
],
@@ -237,5 +237,84 @@ describe('Task Column', () => {
});
});
});
// each board type should hit the right move route
describe('moveTo (task ordering route)', () => {
function makeStore (userData = {}, extraGetters = {}) {
return new Store({
getters: {
'tasks:getFilteredTaskList': () => () => [],
'tasks:getUnfilteredTaskList': () => () => [],
...extraGetters,
},
state: {
user: {
data: {
preferences: { tasks: { activeFilter: {} } },
tasksOrder: { habits: [] },
...userData,
},
},
},
});
}
function stubDispatch (vm) {
const calls = [];
vm.$store.dispatch = (action, payload) => {
calls.push({ action, payload });
return Promise.resolve(['b', 'a']);
};
return calls;
}
test('challenge tasks (no group.id) use tasks:move and keep the user order untouched', async () => {
wrapper = makeWrapper({ store: makeStore() });
wrapper.setProps({
isUser: false,
challenge: { _id: 'c1' },
taskListOverride: [{ _id: 'a', group: {} }, { _id: 'b', group: {} }],
});
const calls = stubDispatch(wrapper.vm);
await wrapper.vm.moveTo({ _id: 'a', group: {} }, 'bottom');
expect(calls).to.have.lengthOf(1);
expect(calls[0].action).to.eq('tasks:move');
// an overridden list must never overwrite the user's personal order
expect(wrapper.vm.user.tasksOrder.habits.join(',')).to.eq('');
});
test('group-plan tasks (with group.id) use tasks:moveGroupTask', async () => {
wrapper = makeWrapper({ store: makeStore() });
wrapper.setProps({
isUser: false,
group: { _id: 'g1' },
taskListOverride: [{ _id: 'a', group: { id: 'g1' } }, { _id: 'b', group: { id: 'g1' } }],
});
const calls = stubDispatch(wrapper.vm);
await wrapper.vm.moveTo({ _id: 'a', group: { id: 'g1' } }, 'bottom');
expect(calls).to.have.lengthOf(1);
expect(calls[0].action).to.eq('tasks:moveGroupTask');
});
test('user tasks use tasks:move and update the user order', async () => {
const store = makeStore(
{ tasksOrder: { habits: ['a', 'b'] } },
{ 'tasks:getUnfilteredTaskList': () => () => [{ _id: 'a', group: {} }, { _id: 'b', group: {} }] },
);
wrapper = makeWrapper({ store });
wrapper.setProps({ isUser: true });
const calls = stubDispatch(wrapper.vm);
await wrapper.vm.moveTo({ _id: 'a', group: {} }, 'bottom');
expect(calls).to.have.lengthOf(1);
expect(calls[0].action).to.eq('tasks:move');
expect(wrapper.vm.user.tasksOrder.habits.join(',')).to.eq('b,a');
});
});
});
});
-4
View File
@@ -121,10 +121,6 @@ export default defineConfig({
include: [/moment-recur/, /node_modules/]
},
rollupOptions: {
input: {
main: path.resolve(__dirname, 'index.html'),
faq: path.resolve(__dirname, 'index-faq.html'),
},
output: {
experimentalMinChunkSize: 20000
}
+3 -1
View File
@@ -3501,5 +3501,7 @@
"armorSpecialSpring2026WarriorText": "Froschrüstung",
"armorSpecialSpring2026WarriorNotes": "Hüpf in Aktion, sobald der Schnee taut. Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe Frühlingsausrüstung 2026.",
"armorSpecialSpring2026RogueText": "Birkenrinde Rüstung",
"armorSpecialSpring2026RogueNotes": "Trotze dem unvermeidlichen Frühlingsregen ebenso wie leichten Brisen. Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Frühlingsausrüstung 2026."
"armorSpecialSpring2026RogueNotes": "Trotze dem unvermeidlichen Frühlingsregen ebenso wie leichten Brisen. Erhöht Wahrnehmung um <%= per %>. Limitierte Ausgabe Frühlingsausrüstung 2026.",
"weaponMystery202608Notes": "Hell, wunderschön und gefährlich für deine unerledigte Tagesaufgaben. Gewährt keinen Attributbonus. August 2026 Abonnentengegenstand.",
"weaponMystery202608Text": "Leuchtende Magenta-Klinge"
}
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Erstelle",
"getCodes": "Codes erhalten",
"webhooks": "WebHooks",
"webhooksInfo": "WebHooks bieten Entwicklern die Möglichkeit, Benachrichtigungen zu erhalten, wenn eine bestimmte Aktion durchgeführt wird, z. B. das Bewerten oder Aktualisieren einer Aufgabe oder das Senden einer Nachricht in einer Gruppe. Indem du einen WebHook erstellst, kannst du Änderungen in Habitica wahrnehmen und Anwendungen entwickeln, die auf diese Änderungen reagieren. <br><br> Weitere Informationen und Beispiele findest Du bei den <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API Docs</a>.",
"webhooksInfo": "WebHooks bieten Entwicklern die Möglichkeit, Benachrichtigungen zu erhalten, wenn eine bestimmte Aktion durchgeführt wird, z. B. das Bewerten oder Aktualisieren einer Aufgabe oder das Senden einer Nachricht in einer Gruppe. Indem du einen WebHook erstellst, kannst du Änderungen in Habitica wahrnehmen und Anwendungen entwickeln, die auf diese Änderungen reagieren. <br><br> Weitere Informationen und Beispiele findest Du bei den <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API Docs</a>.",
"enabled": "Aktiviert",
"webhookURL": "WebHook-URL",
"invalidUrl": "Ungültige URL",
+9 -1
View File
@@ -143,5 +143,13 @@
"deleteXTasks": "<%= count %> Aufgaben löschen",
"confirmDeleteTasks": "Möchtest du diese Aufgaben löschen?",
"deleteType": "Lösche <%= type %>",
"brokenChallengeTaskCount": "Das ist eine von <%= count %> Aufgaben, die Teil einer Herausforderung sind, die nicht mehr existiert."
"brokenChallengeTaskCount": "Das ist eine von <%= count %> Aufgaben, die Teil einer Herausforderung sind, die nicht mehr existiert.",
"everyDay": "jeden Tag",
"everyXDays": "alle <%= count %> Tage",
"everyWeek": "jede Woche",
"everyXWeeks": "alle <%= count %> Wochen",
"everyMonth": "jeden Monat",
"everyYear": "jedes Jahr",
"everyXYears": "alle <%= count %> Jahre",
"everyXMonths": "alle <%= count %> Monate"
}
+1 -1
View File
@@ -163,7 +163,7 @@
"generate": "Generate",
"getCodes": "Get Codes",
"webhooks": "Webhooks",
"webhooksInfo": "Webhooks provide a way for developers to receive notifications when a particular action is performed, such as scoring or updating a Task, or sending a message in a Group. By creating a webhook, you will be able to listen to changes in Habitica and build apps that respond to these changes.<br><br>For additional information and examples on webhooks, please visit our <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API Docs</a>.",
"webhooksInfo": "Webhooks provide a way for developers to receive notifications when a particular action is performed, such as scoring or updating a Task, or sending a message in a Group. By creating a webhook, you will be able to listen to changes in Habitica and build apps that respond to these changes.<br><br>For additional information and examples on webhooks, please visit our <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API Docs</a>.",
"enabled": "Enabled",
"webhookURL": "Webhook URL",
"addWebhook": "Add Webhook",
+7 -7
View File
@@ -73,9 +73,9 @@
"weaponHealer3Notes": "Purifies poison at a touch. Increases Intelligence by <%= int %>.",
"weaponHealer4Text": "Physician Rod",
"weaponHealer4Notes": "As much a badge of office as a healing tool. Increases Intelligence by <%= int %>.",
"weaponHealer5Text": "Royal Scepter",
"weaponHealer5Text": "Royal Sceptre",
"weaponHealer5Notes": "Fit to grace the hand of a monarch, or of one who stands at a monarch's right hand. Increases Intelligence by <%= int %>.",
"weaponHealer6Text": "Golden Scepter",
"weaponHealer6Text": "Golden Sceptre",
"weaponHealer6Notes": "Soothes the pain of all who look upon it. Increases Intelligence by <%= int %>.",
"weaponSpecial0Text": "Dark Souls Blade",
"weaponSpecial0Notes": "Feasts upon foes' life essence to power its wicked strokes. Increases Strength by <%= str %>.",
@@ -151,8 +151,8 @@
"weaponSpecialWinter2015WarriorNotes": "This delicious sword probably attracts monsters… but youre up for the challenge! Increases Strength by <%= str %>. Limited Edition 2014-2015 Winter Gear.",
"weaponSpecialWinter2015MageText": "Winter-lit Staff",
"weaponSpecialWinter2015MageNotes": "The light of this crystal staff fills hearts with cheer. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2014-2015 Winter Gear.",
"weaponSpecialWinter2015HealerText": "Soothing Scepter",
"weaponSpecialWinter2015HealerNotes": "This scepter warms sore muscles and soothes away stress. Increases Intelligence by <%= int %>. Limited Edition 2014-2015 Winter Gear.",
"weaponSpecialWinter2015HealerText": "Soothing Sceptre",
"weaponSpecialWinter2015HealerNotes": "This sceptre warms sore muscles and soothes away stress. Increases Intelligence by <%= int %>. Limited Edition 2014-2015 Winter Gear.",
"weaponSpecialSpring2015RogueText": "Exploding Squeak",
"weaponSpecialSpring2015RogueNotes": "Dont let the sound fool you—these explosives pack a punch. Increases Strength by <%= str %>. Limited Edition 2015 Spring Gear.",
"weaponSpecialSpring2015WarriorText": "Bone Club",
@@ -355,8 +355,8 @@
"weaponArmoireLamplighterNotes": "This long pole has a wick on one end for lighting lamps, and a hook on the other end for putting them out. Increases Constitution by <%= con %> and Perception by <%= per %>. Enchanted Armoire: Lamplighter's Set (Item 1 of 4).",
"weaponArmoireCoachDriversWhipText": "Coach Driver's Whip",
"weaponArmoireCoachDriversWhipNotes": "Your steeds know what they're doing, so this whip is just for show (and the neat snapping sound!). Increases Intelligence by <%= int %> and Strength by <%= str %>. Enchanted Armoire: Coach Driver Set (Item 3 of 3).",
"weaponArmoireScepterOfDiamondsText": "Scepter of Diamonds",
"weaponArmoireScepterOfDiamondsNotes": "This scepter shines with a warm red glow as it grants you increased willpower. Increases Strength by <%= str %>. Enchanted Armoire: King of Diamonds Set (Item 3 of 4).",
"weaponArmoireScepterOfDiamondsText": "Sceptre of Diamonds",
"weaponArmoireScepterOfDiamondsNotes": "This sceptre shines with a warm red glow as it grants you increased willpower. Increases Strength by <%= str %>. Enchanted Armoire: King of Diamonds Set (Item 3 of 4).",
"weaponArmoireFlutteryArmyText": "Fluttery Army",
"weaponArmoireFlutteryArmyNotes": "This group of scrappy lepidopterans is ready to flap fiercely and cool down your reddest tasks! Increases Constitution, Intelligence, and Strength by <%= attrs %> each. Enchanted Armoire: Fluttery Frock Set (Item 3 of 4).",
"weaponArmoireCobblersHammerText": "Cobbler's Hammer",
@@ -1217,7 +1217,7 @@
"headArmoireGraduateCapNotes": "Congratulations! Your deep thoughts have earned you this thinking cap. Increases Intelligence by <%= int %>. Enchanted Armoire: Graduate Set (Item 3 of 3).",
"headArmoireGreenFloppyHatText": "Green Floppy Hat",
"headArmoireGreenFloppyHatNotes": "Many spells have been sewn into this simple hat, giving it a gorgeous green colour. Increases Constitution, Intelligence, and Perception by <%= attrs %> each. Enchanted Armoire: Green Loungewear Set (Item 1 of 3).",
"headArmoireCannoneerBandannaText": "Cannoneer Bandanna",
"headArmoireCannoneerBandannaText": "Cannoneer Bandana",
"headArmoireCannoneerBandannaNotes": "'Tis a cannoneer's life for me! Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Cannoneer Set (Item 3 of 3).",
"headArmoireFalconerCapText": "Falconer Cap",
"headArmoireFalconerCapNotes": "This jaunty cap helps you better understand birds of prey. Increases Intelligence by <%= int %>. Enchanted Armoire: Falconer Set (Item 2 of 3).",
+1 -1
View File
@@ -9,7 +9,7 @@
"titleSeasonalShop": "Seasonal Shop",
"saveEdits": "Save Edits",
"showMore": "Show More",
"showLess": "Show Less",
"showLess": "Show Fewer",
"markdownHelpLink": "Markdown formatting help",
"bold": "**Bold**",
"markdownImageEx": "![mandatory alt text](https://habitica.com/cake.png “optional mouseover title”)",
@@ -863,7 +863,7 @@
"questOpalUnlockText": "Unlocks Opal Hatching Potions for purchase in the Market",
"questAlienCompletion": "Youve managed to wrestle back the stolen motivation with your determination and the Fools magic power. As you feel your drive returning, the UFO descends, and a ramp slowly comes out along with a large, green, one-eyed creature. While strange-looking, it doesnt seem threatening.<br><br>“Looks like we went a little far trying to harvest a little extra encouragement from your fine city,” it says. “Apologies for that, and fantastic work on getting it back. The extra aura of your efforts actually charged up the ships engine enough to get us home! Please, take these with our thanks.”<br><br>“Ooh potions,” says the Fool, “How delightful, and how convenient for me that you have them all ready to go!”",
"questAlienText": "Invasion of the Motivation Snatchers",
"questAlienNotes": "Its been a strange few days in Habitica. The great flying saucer still hovers near the Flourishing Fields. It hums oddly. Why is it lingering? April Fools Day has passed, and the Master of Rogues time in the spotlight has ended.<br><br>You wander towards the light of the spaceship. You may as well check it out and get a few steps in while youre at it.<br><br>As you get closer you see the April Fool, looking a bit grim. His face appears greenish in the light of the ships beam.<br><br>“'Twas my plan to get some potions for everyone, a little gift so all could enjoy their little extraterrestrial pals again! But I just cant work up the enthusiasm… I do believe I know why,” the Fool says, nodding toward the beam.<br><br>Little symbols are being sucked up into the ship. Its all your checked off tasks! No wonder your motivations been lackluster.<br><br>“Our motivation is being abducted!” you exclaim. “We have to rescue it before it ends up in deep space somewhere!”<br><br>The Fool smiles. “Concentrate your thoughts on the tasks you know you need to finish! Ill do the rest with a bit of magic.”",
"questAlienNotes": "Its been a strange few days in Habitica. The great flying saucer still hovers near the Flourishing Fields. It hums oddly. Why is it lingering? April Fools Day has passed, and the Master of Rogues time in the spotlight has ended.<br><br>You wander towards the light of the spaceship. You may as well check it out and get a few steps in while youre at it.<br><br>As you get closer you see the April Fool, looking a bit grim. His face appears greenish in the light of the ships beam.<br><br>“Twas my plan to get some potions for everyone, a little gift so all could enjoy their little extraterrestrial pals again! But I just cant work up the enthusiasm… I do believe I know why,” the Fool says, nodding toward the beam.<br><br>Little symbols are being sucked up into the ship. Its all your checked off tasks! No wonder your motivations been lacklustre.<br><br>“Our motivation is being abducted!” you exclaim. “We have to rescue it before it ends up in deep space somewhere!”<br><br>The Fool smiles. “Concentrate your thoughts on the tasks you know you need to finish! Ill do the rest with a bit of magic.”",
"questAlienBoss": "Encouragement Thief, the Extraterrestrial",
"questAlienRageTitle": "Intergalactic Impediment",
"questAlienRageDescription": "This bar fills when you don't complete your Dailies. When it is full, the Extraterrestrial will discourage you by recovering some of its Health!",
+4 -4
View File
@@ -18,7 +18,7 @@
"resetAccPop": "Start over, removing all levels, gold, gear, history, and tasks.",
"deleteAccount": "Delete Account",
"deleteAccPop": "Cancel and remove your Habitica account.",
"feedback": "If youd like to give us feedback, please enter it below—wed love to hear your feedback! It will be anonymous unless you choose to enter your contact details. Dont speak English well? No problem! Use the language you prefer.",
"feedback": "Wed love to hear your feedback! If youd like to share any, enter it below. It will be anonymous unless you choose to include your contact details.",
"dataExport": "Data Export",
"saveData": "Here are a few options for saving your data.",
"habitHistory": "Habit History",
@@ -47,8 +47,8 @@
"dangerZone": "Danger Zone",
"resetText1": "<b>Be careful!</b> This resets many parts of your account. This is highly discouraged, but some people find it useful in the beginning after playing with the site for a short time.",
"resetText2": "Another option is using an <b>Orb of Rebirth</b>, which will reset everything else while preserving your Tasks and Equipment.",
"deleteLocalAccountText": "<b>Are you sure?</b> This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If you're absolutely certain, type your password into the text box below.",
"deleteSocialAccountText": "<b>Are you sure?</b> This will delete your account forever, and it can never be restored! You will need to register a new account to use Habitica again. Banked or spent Gems will not be refunded. If youre absolutely certain, type <b>“<%= magicWord %>”</b> into the text box below.",
"deleteLocalAccountText": "<b>Are you sure?</b> This action is permanent. Deleting your account will remove all of your data, and it cannot be recovered. Gems will not be refunded.<br><br>Please allow up to 24 hours for account deletion to complete, and up to 30 days for analytics data to be removed if you opted in. Once complete, youll be able to register for a new Habitica account using your previous login information.<br><br>To continue, type your password below.",
"deleteSocialAccountText": "<b>Are you sure?</b> This action is permanent. Deleting your account will remove all of your data, and it cannot be recovered. Gems will not be refunded.<br><br>Please allow up to 24 hours for account deletion to complete, and up to 30 days for analytics data to be removed if you opted in. Once complete, youll be able to register for a new Habitica account using your previous login information.<br><br>To continue, type <%= magicWord %> below.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copy these for use in third party applications. However, think of your API Token like a password, and do not share it publicly. You may occasionally be asked for your User ID, but never post your API Token where others can see it, including on Github.",
@@ -116,7 +116,7 @@
"generate": "Generate",
"getCodes": "Get Codes",
"webhooks": "Webhooks",
"webhooksInfo": "Webhooks provide a way for developers to receive notifications when a particular action is performed, such as scoring or updating a Task, or sending a message in a Group. By creating a webhook, you will be able to listen to changes in Habitica and build apps that respond to these changes.<br><br>For additional information and examples on webhooks, please visit our <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API Docs</a>.",
"webhooksInfo": "Webhooks provide a way for developers to receive notifications when a particular action is performed, such as scoring or updating a Task, or sending a message in a Group. By creating a webhook, you will be able to listen to changes in Habitica and build apps that respond to these changes.<br><br>For additional information and examples on webhooks, please visit our <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API Docs</a>.",
"enabled": "Enabled",
"webhookURL": "Webhook URL",
"invalidUrl": "invalid URL",
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Generar",
"getCodes": "Obtener Códigos",
"webhooks": "Webhooks",
"webhooksInfo": "Los webhooks ayudan a los desarrolladores a recibir una notificación cuando suceden ciertas acciones, como al completar o actualizar una Tarea o al enviar un mensaje a un Grupo. Al crear un webhook podrás estar al día de los cambios en Habitica y crear aplicaciones que respondan a esos cambios. En la wiki podrás encontrar más información y ejemplos de webhooks: consulta la página <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API Docs</a>.",
"webhooksInfo": "Los webhooks ayudan a los desarrolladores a recibir una notificación cuando suceden ciertas acciones, como al completar o actualizar una Tarea o al enviar un mensaje a un Grupo. Al crear un webhook podrás estar al día de los cambios en Habitica y crear aplicaciones que respondan a esos cambios. En la wiki podrás encontrar más información y ejemplos de webhooks: consulta la página <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API Docs</a>.",
"enabled": "Habilitado",
"webhookURL": "URL del Webhook",
"invalidUrl": "Url no válida",
+2 -2
View File
@@ -114,9 +114,9 @@
"unallocated": "Puntos de Atributo no asignados",
"autoAllocation": "Asignación Automática",
"autoAllocationPop": "Asigna Puntos a los Atributos de acuerdo a tus preferencias cuando subes de nivel.",
"evenAllocation": "Distribuir los Puntos de Atributo equitativamente",
"evenAllocation": "Distribuir equitativamente",
"evenAllocationPop": "Asigna el mismo número de Puntos a cada Atributo",
"classAllocation": "Distribuir Puntos de acuerdo a tu Clase",
"classAllocation": "Distribuir según la Clase",
"classAllocationPop": "Asigna más Puntos a los Atributos importantes para tu Clase",
"taskAllocation": "Distribuye los Puntos según la actividad de tus tareas",
"taskAllocationPop": "Asigna Puntos basándose en las categorías de Fuerza, Inteligencia, Constitución y Percepción asociadas a las tareas que completas",
+13 -1
View File
@@ -3593,5 +3593,17 @@
"armorSpecialSummer2026HealerNotes": "Glissez vous dans ce costume, , mais ne vous cachez pas de vos problèmes. Convoquez votre magie de macareux et attaquez vos tâches tel·le l·e·a macareux que vous êtes. Augmente la Constitution de <%= con %>. Équipement Édition Limitée Été 2026.",
"armorSpecialSummer2026MageNotes": "Glissez vous dans ce costume, mais ne vous cachez pas de vos problèmes. Montrez votre rayonnement de requin et nagez tout droit pour faire face à vos tâches tel·le l·e·a requin que vous êtes. Augmente l'Intelligence de <%= int %>. Équipement Édition Limitée Été 2026.",
"eyewearMystery202606Notes": "Vos yeux sont peut-être voilés mais votre apparence est toujours solaire ! Ne confère aucun bonus. Équipement d'Abonnement Juin 2026.",
"headMystery202606Notes": "Les vacances sont faites pour profiter du soleil... Mais ne cramez pas ! Ne confère aucun bonus. Équipement d'Abonnement Juin 2026."
"headMystery202606Notes": "Les vacances sont faites pour profiter du soleil... Mais ne cramez pas ! Ne confère aucun bonus. Équipement d'Abonnement Juin 2026.",
"headSpecialSummer2026HealerNotes": "En avant et soyez producti·f·ve ! Si vous faites face à des difficultés, réunissez-les dans votre bec coloré et déplacez les aillers. Augmente l'Intelligence de <%= int %>. Équipement Édition Limitée Été 2026.",
"headArmoireKendoMenNotes": "Vous serez surpris·e de voir si clairement à travers la grille en étudiant la voie de l'épée. Augmente la Perception de <%= per %>. Armoire Enchantée : Ensemble Kendo (Objet 1 sur 3).",
"shieldSpecialSummer2026WarriorNotes": "Déviez les challenges à venir avec ce beau et brillant bouclier. Lorsque vous aurez réussi à terminer votre liste, montez le son et faites la fête ! Augmente la Constitution de <%= con %>. Équipement Édition Limitée Été 2026.",
"shieldMystery202608Notes": "Découpez et tranchez toutes vos tâches en morceaux plus faciles à gérer ! Ne confère aucun bonus. Équipement d'Abonnement Août 2026.",
"shieldArmoireGardenHoseNotes": "Ce tuyau magique ne s'entortille jamais et peut s'étirer à l'infini dans le moindre recoin de votre environnement. Tou·te·s vos fleurs, arbres, arbrisseaux et familiers assoiffé·e·s pourront s'y désaltérer. Augmente la Perception de <%= per %>. Armoire Enchantée : Ensemble Jardinier 2 (Objet 2 sur 2).",
"armorArmoireKendoBoguNotes": "Bien que ce soit une armure d'entraînement, elle vous offre une protection suffisante pour le chemin à venir. Augmente la Constitution de <%= con %>. Armoire Enchantée : Ensemble Kendo (Objet 2 sur 3).",
"headSpecialSummer2026WarriorNotes": "En avant et soyez producti·f·ve ! Si vous rencontrez des obstacles, claquez juste la mâchoire et montrez vos grandes dents. Augmente la Force de <%= str %>. Équipement Édition Limitée Été 2026.",
"headSpecialSummer2026RogueNotes": "En avant et soyez producti·f·ve ! Si vous vous perdez, vous n'aurez qu'à suivre le courant. Augmente la Perception de <%= per %>. Équipement Édition Limitée Été 2026.",
"headSpecialSummer2026MageNotes": "En avant et soyez producti·f·ve ! Si un obstacle ose se mettre sur votre chemin, réduisez-le en poussière avec vos puissantes mâchoires. Augmente la Perception de <%= per %>. Équipement Édition Limitée Été 2026.",
"shieldSpecialSummer2026HealerNotes": "Protégez la santé de vos compagnon·ne·s macareu·x·ses avec cette potion. Un excellent ajout au poisson ! Augmente la Constitution de <%= con %>. Équipement Édition Limitée Été 2026.",
"shieldMystery202606Notes": "Entre vos tâches, sautez dans ce hamac, détendez-vous et profitez du décor ! Ne confère aucun bonus. Équipement d'Abonnement Juin 2026.",
"shieldMystery202607Notes": "Les eaux tumultueuses se plient à votre puissante force magique. Ne confère aucun bonus. Équipement d'Abonnement Juillet 2026."
}
+4 -4
View File
@@ -18,7 +18,7 @@
"resetAccPop": "Recommencez à zéro. Cela supprimera votre niveau, votre or, votre équipement, votre historique et vos tâches.",
"deleteAccount": "Supprimer le compte",
"deleteAccPop": "Annule et supprime votre compte Habitica.",
"feedback": "Si vous souhaitez nous faire part de vos impressions, n'hésitez pas à les saisir ci-dessous. Nous serions ravi·e·s d'avoir vos retours ! Ce sera posté de façon anonyme, sauf si vous décidez d'entrer vos détails de contact. Vous ne parlez pas bien anglais ? Aucun problème ! Utilisez le langage que vous préférez.",
"feedback": "Nous aimerions connaître votre avis ! Si vous souhaitez le partage avec nous, renseignez-le ci-dessous. Ce message sera anonyme à moins que vous ne décidiez d'ajouter vos infos de contact.",
"dataExport": "Export de Données",
"saveData": "Voici quelques options pour sauvegarder vos données.",
"habitHistory": "Historique Habitica",
@@ -47,8 +47,8 @@
"dangerZone": "Zone de Danger",
"resetText1": "<b>ATTENTION !</b> Cette action va réinitialiser une grand partie de votre compte. Ceci est fortement déconseillé, mais certaines personnes y trouvent une utilité dans les premiers temps, après une courte utilisation de l'application.",
"resetText2": "Une autre possibilité est d'utiliser une <b>Orbe de Renaissance</b>, qui vous permettra de tout réinitialiser tout en conservant vos Tâches et votre Équipement.",
"deleteLocalAccountText": "<b>Confirmez-vous ?</b> Cela va supprimer votre compte Habitica définitivement et il ne pourra pas être restauré ! Vous devrez créer un nouveau compte pour utiliser Habitica de nouveau. Les Gemmes sur votre compte ou celles dépensées ne seront pas remboursées. Si vous confirmez définitivement, tapez votre mot de passe dans le champ de texte ci-dessous.",
"deleteSocialAccountText": "<b>Confirmez-vous votre choix ?</b> Cela supprimera votre compte définitivement, et il ne pourra jamais être restauré ! Vous devrez créer un nouveau compte pour réutiliser Habitica. Vos gemmes restantes ou dépensées ne seront pas remboursées. Si votre décision est prise, écrivez <b>\"<%= magicWord %>\"</b> dans le champ ci-dessous.",
"deleteLocalAccountText": "<b>En êtes-vous certain·e ?</b> Cette action est permanente. Supprimer votre compte effacera toutes vos données, et celles-ci ne pourront être récupérées. Les Gemmes ne seront pas remboursées.<br><br>Votre compte sera supprimé après 24h, voire jusqu'à 30 jours si vous avez choisi de partager vos données analytiques. Une fois votre compte supprimé, vous pourrez vous connecter via un nouveau compte Habitica en utilisant vos précédentes informations de connexion.<br><br>Pour continuer, merci de renseigner votre mot de passe ci-dessous.",
"deleteSocialAccountText": "<b>En êtes-vous certain·e ?</b> Cette action est permanente. Supprimer votre compte effacera toutes vos données, et celles-ci ne pourront être récupérées. Les Gemmes ne seront pas remboursées.<br><br>Votre compte sera supprimé après 24h, voire jusqu'à 30 jours si vous avez choisi de partager vos données analytiques. Une fois votre compte supprimé, vous pourrez vous connecter via un nouveau compte Habitica en utilisant vos précédentes informations de connexion.<br><br>Pour continuer, merci d'entrer <%= magicWord %> ci-dessous.",
"API": "API",
"APIv3": "API v3",
"APIText": "Copiez ceci pour un usage dans des applications tierces. Considérez toutefois votre Jeton d'API comme l'équivalent d'un mot de passe, et ne le partagez pas publiquement. Votre ID d'utilisateur peut occasionnellement vous être demandé, mais ne publiez jamais votre Jeton d'API là où d'autres peuvent le voir, y compris sur Github.",
@@ -116,7 +116,7 @@
"generate": "Générer",
"getCodes": "Obtenir les Codes",
"webhooks": "Webhooks",
"webhooksInfo": "Webhooks propose aux Développeu·r·se·s de recevoir des notification quand une action en particulier est faite, tel que valider ou mettre à jour une Tâche, ou envoyé un message dans un Groupe. En créant un webhook, vous pourrez écouter les changements dans Habitica et mettre au point des applis qui répondent à ces changement. <br><br>Pour des informations complémentaires et des exemples de webhooks, merci de visiter nos<a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\"> Documents API</a>.",
"webhooksInfo": "Webhooks propose aux Développeu·r·se·s de recevoir des notification quand une action en particulier est faite, tel que valider ou mettre à jour une Tâche, ou envoyé un message dans un Groupe. En créant un webhook, vous pourrez écouter les changements dans Habitica et mettre au point des applis qui répondent à ces changement. <br><br>Pour des informations complémentaires et des exemples de webhooks, merci de visiter nos<a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\"> Documents API</a>.",
"enabled": "Activé",
"webhookURL": "URL du webhook",
"invalidUrl": "URL invalide",
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Generálás",
"getCodes": "Kódok megszerzése",
"webhooks": "Webhook",
"webhooksInfo": "A webhookok lehetőséget adnak a fejlesztőknek arra, hogy értesítést kapjanak, amikor valamilyen művelet történik például amikor pontozol vagy frissítesz egy feladatot vagy üzenetet küldesz egy csoportban. Ha létrehozol egy webhookot, figyelheted a változásokat a Habiticában, és olyan alkalmazásokat építhetsz, amik ezekre a változásokra reagálnak.<br><br>További információért és példákért látogasd meg az <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API dokumentációnkat</a>.",
"webhooksInfo": "A webhookok lehetőséget adnak a fejlesztőknek arra, hogy értesítést kapjanak, amikor valamilyen művelet történik például amikor pontozol vagy frissítesz egy feladatot vagy üzenetet küldesz egy csoportban. Ha létrehozol egy webhookot, figyelheted a változásokat a Habiticában, és olyan alkalmazásokat építhetsz, amik ezekre a változásokra reagálnak.<br><br>További információért és példákért látogasd meg az <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API dokumentációnkat</a>.",
"enabled": "Engedélyezve",
"webhookURL": "Webhook URL",
"invalidUrl": "érvénytelen url",
+2 -2
View File
@@ -5,14 +5,14 @@
"welcomeTo": "Selamat datang di",
"welcomeBack": "Selamat datang kembali!",
"justin": "Justin",
"justinIntroMessage1": "Halo! Kamu pasti baru di sini. Nama saya <strong>Justin</strong>, dan aku akan menjadi pemandumu di Habitica. Jadi, kamu ingin terlihat seperti apa sekarang? Jangan khawatir, kamu dapat mengganti penampilanmu nanti.",
"justinIntroMessage1": "Halo! Kamu pasti baru di sini. Nama saya <strong>Justin</strong>, dan aku akan menjadi pemandumu di Habitica. Jadi, kamu ingin terlihat seperti apa sekarang? Jangan khawatir, kamu dapat mengganti penampilanmu nanti.",
"justinIntroMessage3": "Bagus! Sekarang, apa yang kamu mau perbaiki selama perjalanan ini?",
"introTour": "Ini dia! Aku telah mengisi beberapa Tugas untukmu berdasarkan minatmu, jadi kamu dapat memulai langsung. Klik sebuah Tugas untuk mengedit atau tambahkan Tugas baru untuk menyesuaikan jadwalmu!",
"prev": "Sebelum",
"next": "Setelah",
"randomize": "Acak-acak",
"mattBoch": "Matt Boch",
"mattBochText1": "Selamat datang di kandang! Aku Matt, sang Penakluk Hewan. Setiap kali kamu menyelesaikan sebuah tugas, kamu akan mendapatkan sebuah kesempatan acak untuk mendapatkan sebuah Telur atau Ramuan Penetas untuk menetas seekor hewean peliharaan. Setelah kamu menetaskan seekor hewan peliharaan, peliharaanmu akan muncul disini! Klik gambar peliharaan untuk memasangnya pada avatarmu. Beri mereka makan dengan makanan yang kamu temukan, dan mereka akan tumbuh cukup besar untuk bisa ditunggangi.",
"mattBochText1": "Selamat datang di kandang! Aku Matt, sang Penakluk Hewan. Setiap kali kamu menyelesaikan sebuah tugas, kamu akan mendapatkan kesempatan acak untuk mendapatkan Telur atau Ramuan Penetas untuk menetas seekor hewean peliharaan. Setelah kamu menetaskan seekor hewan peliharaan, peliharaanmu akan muncul di sini! Klik gambar peliharaan untuk memasangnya pada avatarmu. Beri mereka makan dengan makanan yang kamu temukan, dan mereka akan tumbuh cukup besar untuk bisa ditunggangi.",
"welcomeToTavern": "Selamat datang di Kedai Minuman!",
"sleepDescription": "Perlu istirahat? Tunda Kerusakan (berlokasi di Pengaturan) untuk menunda beberapa permainan dalam Habitica yang lebih sulit:",
"sleepBullet1": "Keseharian yang terlewat tidak akan menyakitimu (monster bos masih akan mengakibatkan kerusakan yang disebabkan Keseharian yang terlewat oleh anggota Party yang lain)",
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Genera",
"getCodes": "Ottieni codici",
"webhooks": "Webhooks",
"webhooksInfo": "Habitica provvede webhook in modo tale che quando alcune azioni avvengono nel tuo account, le informazioni possono essere inviate a uno script su un altro sito. Puoi specificare questi script qui. Fai attenzione con questa funzione perché se specifichi un URL non corretto questo può causare errori e lentezza in Habitica. Per ulterioni informazioni vedi l'articolo in inglese sulla wiki <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">Webhooks</a>.",
"webhooksInfo": "Habitica provvede webhook in modo tale che quando alcune azioni avvengono nel tuo account, le informazioni possono essere inviate a uno script su un altro sito. Puoi specificare questi script qui. Fai attenzione con questa funzione perché se specifichi un URL non corretto questo può causare errori e lentezza in Habitica. Per ulterioni informazioni vedi l'articolo in inglese sulla wiki <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">Webhooks</a>.",
"enabled": "Abilitato",
"webhookURL": "URL Webhook",
"invalidUrl": "URL non valido",
+7 -1
View File
@@ -941,5 +941,11 @@
"backgroundElvenCitadelText": "エルフの城塞",
"backgroundElvenCitadelNotes": "エルフの城塞まで、景色のいい道を歩きましょう。",
"backgroundOnAStrangePlanetText": "不思議な惑星",
"backgroundOnAStrangePlanetNotes": "Habiticaの住民の行ったことない、不思議な惑星を冒険しましょう。"
"backgroundOnAStrangePlanetNotes": "Habiticaの住民の行ったことない、不思議な惑星を冒険しましょう。",
"backgrounds062026": "セット1452026年6月リリース",
"backgroundBeachWithVolcanoText": "海辺と火山",
"backgrounds072026": "セット1462026年7月リリース",
"backgrounds082026": "セット1472063年8月リリース",
"backgroundVegetableGardenText": "菜園",
"backgroundVegetableGardenNotes": "菜園でおいしい野菜を育てましょう。"
}
+22 -2
View File
@@ -1266,7 +1266,7 @@
"headArmoireJeweledArcherHelmText": "宝石で飾られたかぶと",
"headArmoireJeweledArcherHelmNotes": "このかぶとは飾り立てて見えるかもしれません。しかし、大変に軽く強力でもあるのです。知能が<%= int %>上がります。ラッキー宝箱:宝石飾りの弓使いセット(アイテム1/3 )。",
"headArmoireVeilOfSpadesText": "スペードのベール",
"headArmoireVeilOfSpadesNotes": "影になってミステリアスなベールは、あなたの密やかさを高めるでしょう。知覚が<%= per %>上がります。ラッキー宝箱:スペードのエースセット(アイテム1/3 )。",
"headArmoireVeilOfSpadesNotes": "影になってミステリアスなベールは、あなたの密やかさを高めるでしょう。知覚が<%= per %>上がります。ラッキー宝箱:スペードのエースセットアイテム1/3。",
"offhand": "反対の手のアイテム",
"shieldBase0Text": "利き手と反対の手の装備はありません",
"shieldBase0Notes": "盾や、利き手と反対の手の装備はありません。",
@@ -3473,5 +3473,25 @@
"headSpecialWinter2026WarriorText": "霜の死神のかぶと",
"backMystery202605Notes": "最も暗い夜でも照らす、月と星の光で輝く光輪。効果なし。2026年5月の有料会員アイテム。",
"backMystery202506Text": "陽光の光輪",
"weaponArmoirePrettyPinkParasolNotes": "見た目もよくて実用的、それがいちばんの組み合わせです。さらに印象的に見せるなら、このパラソルをくるっと回してみてください!すべての能力値がそれぞれ<%= attrs %>上がります。ラッキー宝箱:ピンクのおしゃれセット(アイテム1/2)"
"weaponArmoirePrettyPinkParasolNotes": "見た目もよくて実用的、それがいちばんの組み合わせです。さらに印象的に見せるなら、このパラソルをくるっと回してみてください!すべての能力値がそれぞれ<%= attrs %>上がります。ラッキー宝箱:ピンクのおしゃれセット(アイテム1/2)",
"weaponSpecialSummer2026RogueNotes": "曲線美が特徴のこの武器は海辺風コーデにぴったりです。力が<%= str %>上がります。2026年夏の限定装備。",
"weaponSpecialSummer2026RogueText": "津波の刀",
"weaponSpecialSummer2026WarriorText": "ワニのマチェテ",
"weaponSpecialSummer2026HealerNotes": "羽飾りのついたこの立派な武器は島風コーデにぴったりです。知能が<%= int %>上がります。2026年夏の限定装備。",
"weaponSpecialSummer2026HealerText": "ツノメドリの槍",
"armorArmoireKendoBoguText": "剣道の防具",
"armorArmoireKendoBoguNotes": "稽古用の防具ですが、これからの道のりには十分です。体質が<%= con %>上がります。ラッキー宝箱:剣道セット(アイテム2/3)。",
"armorSpecialSummer2026HealerNotes": "このスーツを身につけてもいいですが、困ったことから逃げてはいけません。ツノメドリみたいに力強くタスクを乗り越えましょう。体質が<%= con %>上がります。2026年夏の限定装備。",
"armorSpecialSummer2026MageNotes": "このスーツに滑り込んでもいいですが、困ったことから逃げてはいけません。サメみたいに輝きながら泳ぎ、タスクに立ち向かいましょう。知能が<%= int %>上がります。2026年夏の限定装備。",
"weaponArmoireKendoShinaiNotes": "軽くてしなやかな素振り用の竹刀です。成長を目指しながら使ってください。力が<%= str %>上がります。ラッキー宝箱:剣道セット(アイテム3/3)。",
"weaponArmoireKendoShinaiText": "剣道の竹刀",
"armorSpecialSummer2026RogueNotes": "このスーツに身に包めてもいいですが、困ったことから逃げてはいけません。探検家みたいに嵐を召喚してタスクに挑みましょう。知覚が<%= per %>上がります。2026年夏の限定装備。",
"armorSpecialSummer2026HealerText": "ツノメドリのスーツ",
"armorSpecialSummer2026MageText": "イタチザメのスーツ",
"armorSpecialSummer2026RogueText": "津波のスーツ",
"weaponSpecialSummer2026MageText": "イタチザメの槍",
"weaponSpecialSummer2026MageNotes": "この鋭い諸刃の剣は海洋風コーデにぴったりです。知能が<%= int %>、知覚が<%= per %>上がります。2026年夏の限定装備。",
"weaponSpecialSummer2026WarriorNotes": "この豪華できらびやかな武器は沼風コーデにぴったりです。力が<%= str %>上がります。2026年夏の限定装備。",
"weaponArmoireBrightRainbowKiteText": "虹色の凧",
"weaponArmoirePastelRainbowKiteText": "パステルカラーの凧"
}
+42 -38
View File
@@ -250,45 +250,49 @@
"anniversaryLimitations": "これは1月30日8:00 AM ET (13:00 UTC)から2月8日11:59 PM ET (04:59 UTC)までの期間限定イベントです。期間中、限定版「喜びに満ちたグリファトリス」と10個の「魔法のたまごがえしの薬」を購入することができます。4つで無料のギフトに記載されているその他のギフトは、ギフトが送られる日の前30日間にアクティブだったすべてのアカウントに自動的に配信されます。ギフトが送られた後に作成されたアカウントは、ギフトを受け取ることができません。",
"plentyOfPotionsText": "コミュニティで人気の魔法のたまごがえしの薬10種を復活させます。コレクションを充実させるために、市場に行きましょう!",
"fourForFreeText": "パーティーを盛り上げるために、パーティー・ローブ、ジェム20個、バースデー限定背景、さらにケープ、ショルダーガード、アイマスクのアイテム・セットをプレゼントします。",
"winter2024NarwhalWizardMageSet": "イッカククジラの魔術使いセット (魔道士)",
"winter2024NarwhalWizardMageSet": "イッカククジラの魔術使い魔道士",
"winter2024SnowyOwlRogueSet": "シロフクロウ (盗賊)",
"winter2024FrozenHealerSet": "氷漬け (治療師)",
"winter2024PeppermintBarkWarriorSet": "ペパーミントの樹皮セット (戦士)",
"spring2024FluoriteWarriorSet": "ホタル石のセット(戦士)",
"spring2024HibiscusMageSet": "ハイビスカスのセット(魔道士)",
"spring2024BluebirdHealerSet": "青い鳥のセット(治療師)",
"spring2024MeltingSnowRogueSet": "雪解けのセット(盗賊)",
"summer2024SeaSnailHealerSet": "巻貝のセット(治療師)",
"summer2024NudibranchRogueSet": "ウミウシのセット(盗賊)",
"summer2024WhaleSharkWarriorSet": "ジンベイザメのセット(戦士)",
"summer2024SeaAnemoneMageSet": "イソギンチャクのセット(魔道士)",
"fall2024FieryImpWarriorSet": "ファイアインプセット(戦士)",
"fall2024UnderworldSorcerorMageSet": "黄泉の国の魔術師セット(魔道士)",
"winter2024PeppermintBarkWarriorSet": "ペパーミントの樹皮戦士",
"spring2024FluoriteWarriorSet": "ホタル石(戦士)",
"spring2024HibiscusMageSet": "ハイビスカス(魔道士)",
"spring2024BluebirdHealerSet": "青い鳥(治療師)",
"spring2024MeltingSnowRogueSet": "雪解け(盗賊)",
"summer2024SeaSnailHealerSet": "巻貝(治療師)",
"summer2024NudibranchRogueSet": "ウミウシ(盗賊)",
"summer2024WhaleSharkWarriorSet": "ジンベイザメ(戦士)",
"summer2024SeaAnemoneMageSet": "イソギンチャク(魔道士)",
"fall2024FieryImpWarriorSet": "ファイアインプ(戦士)",
"fall2024UnderworldSorcerorMageSet": "黄泉の国の魔術師(魔道士)",
"gemSaleLimitationsText": "このプロモーションは期間限定イベント中のみ有効です。このイベントは<%= eventStartMonth %><%= eventStartOrdinal %> <%= eventStartTime %> <%= timeZone %>に始まり、<%= eventEndMonth %><%= eventEndOrdinal %><%= eventEndTime %> <%= timeZone %>に終了します。ジェムを自分で購入した方のみ対象です。",
"winter2025MooseWarriorSet": "ヘラジカセット(戦士)",
"winter2025AuroraMageSet": "オーロラセット(魔道士)",
"winter2025StringLightsHealerSet": "ストリングライトセット(治療師)",
"winter2025SnowRogueSet": "雪セット(盗賊)",
"fall2024SpaceInvaderHealerSet": "スペースインベーダーセット(治療師)",
"fall2024BlackCatRogueSet": "黒ネコセット(盗賊)",
"spring2025CrystalPointRogueSet": "水晶ポイントセット(盗賊)",
"spring2025PlumeriaHealerSet": "プルメリアセット(治療師)",
"spring2025MantisMageSet": "カマキリセット(魔道士)",
"spring2025SunshineWarriorSet": "陽光セット(戦士)",
"summer2025ScallopWarriorSet": "ホタテ貝セット(戦士)",
"summer2025SquidRogueSet": "イカセット(盗賊)",
"summer2025SeaAngelHealerSet": "クリオネセット(治療師)",
"summer2025FairyWrasseMageSet": "イトヒキベラセット(魔道士)",
"fall2025SasquatchWarriorSet": "サスクワッチセット(戦士)",
"fall2025SkeletonRogueSet": "ガイコツセット(盗賊)",
"fall2025KoboldHealerSet": "コボルドセット(治療師)",
"fall2025MaskedGhostMageSet": "マスクお化けセット(魔道士)",
"winter2026MidwinterCandleMageSet": "真冬のろうそくセット(魔道士)",
"winter2026SkiRogueSet": "スキーセット(盗賊)",
"winter2026PolarBearHealerSet": "ホッキョクグマセット(治療師)",
"winter2026RimeReaperWarriorSet": "霜の死神セット(戦士)",
"spring2026SnowdropHealerSet": "スノードロップセット(治療師)",
"spring2026MaypoleMageSet": "メイポールセット(魔道士)",
"spring2026FrogWarriorSet": "カエルセット(戦士)",
"spring2026BranchRogueSet": "春の枝セット(盗賊)"
"winter2025MooseWarriorSet": "ヘラジカ(戦士)",
"winter2025AuroraMageSet": "オーロラ(魔道士)",
"winter2025StringLightsHealerSet": "ストリングライト(治療師)",
"winter2025SnowRogueSet": "雪(盗賊)",
"fall2024SpaceInvaderHealerSet": "スペースインベーダー(治療師)",
"fall2024BlackCatRogueSet": "黒ネコ(盗賊)",
"spring2025CrystalPointRogueSet": "水晶ポイント(盗賊)",
"spring2025PlumeriaHealerSet": "プルメリア(治療師)",
"spring2025MantisMageSet": "カマキリ(魔道士)",
"spring2025SunshineWarriorSet": "陽光(戦士)",
"summer2025ScallopWarriorSet": "ホタテ貝(戦士)",
"summer2025SquidRogueSet": "イカ(盗賊)",
"summer2025SeaAngelHealerSet": "クリオネ(治療師)",
"summer2025FairyWrasseMageSet": "イトヒキベラ(魔道士)",
"fall2025SasquatchWarriorSet": "サスクワッチ(戦士)",
"fall2025SkeletonRogueSet": "ガイコツ(盗賊)",
"fall2025KoboldHealerSet": "コボルド(治療師)",
"fall2025MaskedGhostMageSet": "マスクお化け(魔道士)",
"winter2026MidwinterCandleMageSet": "真冬のろうそく(魔道士)",
"winter2026SkiRogueSet": "スキー(盗賊)",
"winter2026PolarBearHealerSet": "ホッキョクグマ(治療師)",
"winter2026RimeReaperWarriorSet": "霜の死神(戦士)",
"spring2026SnowdropHealerSet": "スノードロップ(治療師)",
"spring2026MaypoleMageSet": "メイポール(魔道士)",
"spring2026FrogWarriorSet": "カエル(戦士)",
"spring2026BranchRogueSet": "春の枝(盗賊)",
"summer2026AlligatorWarriorSet": "アリゲーター(戦士)",
"summer2026PuffinHealerSet": "ツノメドリ(治療師)",
"summer2026TigerSharkMageSet": "イタチザメ(魔道士)",
"summer2026TsunamiRogueSet": "津波(盗賊)"
}
+2 -2
View File
@@ -116,7 +116,7 @@
"generate": "生成する",
"getCodes": "コードを取得する",
"webhooks": "Webhook",
"webhooksInfo": "Webhookは、タスクの採点や更新、グループ内のメッセージ送信など、特定のアクションが実行されたときに通知を受け取る方法を開発者に提供します。Webhookを作成することで、Habiticaの変更を監視し、その変更に対応するアプリを構築することができます。<br><br>Webhookに関する追加情報や例については、<a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API Docs</a>をご覧ください。",
"webhooksInfo": "Webhookは、タスクの採点や更新、グループ内のメッセージ送信など、特定のアクションが実行されたときに通知を受け取る方法を開発者に提供します。Webhookを作成することで、Habiticaの変更を監視し、その変更に対応するアプリを構築することができます。<br><br>Webhookに関する追加情報や例については、<a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API Docs</a>をご覧ください。",
"enabled": "有効",
"webhookURL": "webフック URL",
"invalidUrl": "無効な Url",
@@ -183,7 +183,7 @@
"transaction_gift_receive": "<b>受け取った</b>相手",
"transaction_create_challenge": "<b>作成した</b>チャレンジ",
"transaction_create_guild": "<b>作成した</b>ギルド",
"transaction_rebirth": "転生のオーブの使用",
"transaction_rebirth": "転生のオーブを使いました",
"transaction_spend": "<b>使用</b>",
"transaction_reroll": "防御の薬の使用",
"addPasswordAuth": "パスワードを追加",
+3 -1
View File
@@ -277,5 +277,7 @@
"subscriptionBillingFYIShort": "有料プランは現在加入している期間が終了する24時間前までに解約しない限り、自動的に更新されます。あなたのアカウントは更新日の24時間以内に、最初にお支払った料金で、請求されます。",
"mysterySet202603": "藤の魔術師セット",
"mysterySet202604": "大胆な宇宙飛行士セット",
"mysterySet202605": "夜の帳セット"
"mysterySet202605": "夜の帳セット",
"mysterySet202606": "ホリデーハンモックセット",
"mysterySet202607": "海の魔術師セット"
}
+10 -1
View File
@@ -143,5 +143,14 @@
"deleteXTasks": "<%= count %>つのタスクを削除する",
"confirmDeleteTasks": "タスクを削除したいですか?",
"sureDeleteType": "本当にこのタスクを削除してもいいですか?",
"brokenChallengeTaskCount": "これは終了したチャレンジに関する<%= count %>つのタスクのうちの一つです。"
"brokenChallengeTaskCount": "これは終了したチャレンジに関する<%= count %>つのタスクのうちの一つです。",
"everyDay": "毎日",
"everyXDays": "<%= count %>日ごと",
"everyWeek": "毎週",
"everyXWeeks": "<%= count %>週間ごと",
"everyMonth": "毎月",
"everyXMonths": "<%= count %>ヶ月ごと",
"everyYear": "毎年",
"everyXYears": "<%= count %>年ごと",
"fifthWeekWarning": "このタスクは<%= day %>が少ない月には表示されません"
}
+2 -1
View File
@@ -941,5 +941,6 @@
"backgroundElvenCitadelText": "요정의 요새",
"backgroundElvenCitadelNotes": "요정의 요새로 이어지는 아름다운 길을 따라 여행을 시작하세요.",
"backgroundOnAStrangePlanetText": "낯선 행성에서",
"backgroundOnAStrangePlanetNotes": "미지의 낯선 행성, 해비티카 최초의 탐험가가 되어보세요."
"backgroundOnAStrangePlanetNotes": "미지의 낯선 행성, 해비티카 최초의 탐험가가 되어보세요.",
"backgrounds062026": "SET 145: 2026년 6월 출시"
}
+4 -1
View File
@@ -1808,5 +1808,8 @@
"weaponSpecialFall2020MageText": "3개의 비전",
"weaponSpecialFall2019RogueNotes": "지휘를 하든 아리아를 부르든, 이 유용한 장치가 당신의 손을 자유롭게 해 극적인 제스처를 취할 수 있게 해줍니다! 체력이 <%= str %>만큼 증가합니다. 2019년 가을 한정판 장비.",
"weaponSpecialFall2020HealerText": "누에고치 지팡이",
"weaponSpecialFall2020MageNotes": "무언가 마법사의 시야에서 벗어나더라도, 이 지팡이 위의 빛나는 수정들이 당신이 놓친 것을 비춰줄 것입니다. 지능이 <%=int%> 증가하고 지각이 <%=per%> 증가합니다. 2020년 가을 한정 장비."
"weaponSpecialFall2020MageNotes": "무언가 마법사의 시야에서 벗어나더라도, 이 지팡이 위의 빛나는 수정들이 당신이 놓친 것을 비춰줄 것입니다. 지능이 <%=int%> 증가하고 지각이 <%=per%> 증가합니다. 2020년 가을 한정 장비.",
"weaponSpecialSpring2021WarriorText": "태양의 망치",
"weaponSpecialSpring2021HealerText": "버드나무 가지",
"weaponSpecialSpring2021MageText": "백조 깃털"
}
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Genereren",
"getCodes": "Codes verkrijgen",
"webhooks": "Webhooks",
"webhooksInfo": "Webhooks bieden ontwikkelaars een manier om meldingen te ontvangen wanneer een bepaalde actie wordt uitgevoerd, zoals het beoordelen of bijwerken van een Taak, of het verzenden van een bericht in een Groep. Door een webhook te maken, kunt u luisteren naar wijzigingen in Habitica en apps bouwen die op deze wijzigingen reageren.<br><br>Voor meer informatie en voorbeelden over webhooks kunt u onze <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API-documentatie</a> raadplegen.",
"webhooksInfo": "Webhooks bieden ontwikkelaars een manier om meldingen te ontvangen wanneer een bepaalde actie wordt uitgevoerd, zoals het beoordelen of bijwerken van een Taak, of het verzenden van een bericht in een Groep. Door een webhook te maken, kunt u luisteren naar wijzigingen in Habitica en apps bouwen die op deze wijzigingen reageren.<br><br>Voor meer informatie en voorbeelden over webhooks kunt u onze <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API-documentatie</a> raadplegen.",
"enabled": "Ingeschakeld",
"webhookURL": "Webhook-URL",
"invalidUrl": "ongeldige url",
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Generuj",
"getCodes": "Zdobądź kody",
"webhooks": "Webhooki",
"webhooksInfo": "Habitica udostępnia webhooki, które umożliwiają przesyłanie informacji o pewnych działaniach występujących na twoim koncie do skryptów na innej stronie internetowej. Tutaj można wykazać te skrypty. Bądź ostrożny, gdyż wpisanie niepoprawnych URL może spowodować w Habitica błędy lub spowolnienia. Więcej informacji znajdziesz na stronie <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">Webhooki</a>.",
"webhooksInfo": "Habitica udostępnia webhooki, które umożliwiają przesyłanie informacji o pewnych działaniach występujących na twoim koncie do skryptów na innej stronie internetowej. Tutaj można wykazać te skrypty. Bądź ostrożny, gdyż wpisanie niepoprawnych URL może spowodować w Habitica błędy lub spowolnienia. Więcej informacji znajdziesz na stronie <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">Webhooki</a>.",
"enabled": "Włączone",
"webhookURL": "Link do webhooka",
"invalidUrl": "Nieprawidłowy url",
+12 -1
View File
@@ -939,5 +939,16 @@
"backgroundRidingACometNotes": "Viajem pelo espaço a bordo de um cometa!",
"backgroundElvenCitadelText": "Cidadela Élfica",
"backgroundElvenCitadelNotes": "Faça uma viagem panorâmica até uma cidadela élfica.",
"backgrounds052026": "SET 144: Lançado em Maio de 2026"
"backgrounds052026": "SET 144: Lançado em Maio de 2026",
"backgrounds062026": "SET 145: Lançado em Junho 2026",
"backgroundBeachWithVolcanoText": "Praia com Vulcão",
"backgroundBeachWithVolcanoNotes": "Observa as maravilhas da natureza em uma Praia com um Vulcão.",
"backgrounds072026": "SET 146: Lançado em Julho 2026",
"backgroundTropicalCoralGardenText": "Jardim de Corais Tropicais",
"backgroundTropicalCoralGardenNotes": "Mergulhe em um Jardim Tropical de Corais.",
"backgrounds082026": "SET 147: Lançado em Agosto 2026",
"backgroundVegetableGardenText": "Horta",
"backgroundVegetableGardenNotes": "Planta verduras gostosas em uma Horta.",
"backgroundOnAStrangePlanetText": "Em um Planeta Estranho",
"backgroundOnAStrangePlanetNotes": "Se aventure onde nenhum Habitican jamais esteve antes: Em um Planeta Estranho."
}
+25 -8
View File
@@ -530,7 +530,7 @@
"armorSpecialFall2015MageText": "Túnica Costurada",
"armorSpecialFall2015MageNotes": "Cada ponto de costura nesta armadura brilha com encanto. Aumenta a Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2015.",
"armorSpecialFall2015HealerText": "Túnica de Criador de Poções",
"armorSpecialFall2015HealerNotes": "O quê? Claro que era uma poção de constituição. Não, definitivamente não está se transformando num sapo! Não fique a coaxar por aí. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2015.",
"armorSpecialFall2015HealerNotes": "O quê? Claro que era uma poção de constituição. Não, definitivamente não está a transformar-se num sapo! Não fique a coaxar por aí. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2015.",
"armorSpecialWinter2016RogueText": "Armadura de Cacau",
"armorSpecialWinter2016RogueNotes": "Esta armadura de couro mantém você bonito e quentinho. Na verdade é feito de cacau? Você nunca vai saber. Aumenta a Percepção em <%= per %>. Equipamento de Inverno da Edição Limitada 2015-2016.",
"armorSpecialWinter2016WarriorText": "Traje de Boneco de Neve",
@@ -560,9 +560,9 @@
"armorSpecialFall2016WarriorText": "Armadura Lodosa",
"armorSpecialFall2016WarriorNotes": "Misteriosamente húmida e coberta de musgo! Aumenta a Constituição de <%= con %>. Equipamento de Edição Limitada do Outono de 2016.",
"armorSpecialFall2016MageText": "Capa de Maldade",
"armorSpecialFall2016MageNotes": "Quando a sua capa agita-se, ouve-se um som de um riso cacarejador. Aumenta a Inteligência de <%= int %>. Equipamento de Edição Limitada do Outono de 2016.",
"armorSpecialFall2016MageNotes": "Quando a sua capa agita-se, ouve-se um riso cacarejador. Aumenta a Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2016.",
"armorSpecialFall2016HealerText": "Túnica de Górgona",
"armorSpecialFall2016HealerNotes": "Esta túnica é realmente feita de pedra. Como é que pode ser confortável? Aumenta a Constituiçẫo de <%= con %>. Equipamento de Edição Limitada do Outono de 2016.",
"armorSpecialFall2016HealerNotes": "Esta túnica é realmente feita de pedra. Como é que pode ser confortável? Aumenta a Constituiçẫo em <%= con %>. Equipamento de Edição Limitada do Outono de 2016.",
"armorSpecialWinter2017RogueText": "Armadura Gelada",
"armorSpecialWinter2017RogueNotes": "Este fato furtivo reflete luz de forma a encandear tarefas inocentes conforme toma as suas recompensas de elas! Aumenta Perceção em <%= per %>. Equipamento de Edição Limitada de Inverno 2016-2017.",
"armorSpecialWinter2017WarriorText": "Armadura de Hóquei no Gelo",
@@ -590,7 +590,7 @@
"armorSpecialFall2017RogueText": "Túnicas de Canteiro de Abóboras",
"armorSpecialFall2017RogueNotes": "Precisa de se esconder? Agache-se entre as Lanternas de Halloween e estas túnicas o irão ocultar! Aumenta a Percepção em <%= per %>. Equipamento de Edição Limitada do Outono de 2017.",
"armorSpecialFall2017WarriorText": "Armadura Forte e Doce",
"armorSpecialFall2017WarriorNotes": "Esta armadura irá protegê-lo como uma cobertura de doce deliciosa. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2017.",
"armorSpecialFall2017WarriorNotes": "Esta armadura irá protegê-lo como uma casca de doce delicioso. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2017.",
"armorSpecialFall2017MageText": "Túnicas de Mascarada",
"armorSpecialFall2017MageNotes": "Que disfarce estaria completo sem túnicas arrebatadoras e dramáticas? Aumenta a Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2017.",
"armorSpecialFall2017HealerText": "Armadura de Casa Assombrada",
@@ -2233,11 +2233,28 @@
"weaponArmoireBlacksmithsHammerNotes": "Este martelo é para trabalhar o metal, mas também é perfeitamente adequado para brasas incandescentes e tarefas diárias árduas. Aumenta a Força em <%= str %>. Baú Encantado: Conjunto de Ferreiro (Item 3 de 3).",
"weaponArmoirePrettyPinkParasolNotes": "Bonito e prático é a combinação perfeita. E para uma apresentação particularmente impressionante, experimente este guarda-sol! Aumenta todos os atributos em <%= attrs %> cada. Baú Encantado: Conjunto Rosa Delicado (Item 1 de 2)",
"armorSpecialSummer2019WarriorNotes": "Os Guerreiros são conhecidos pelas suas defesas robustas. As tartarugas são conhecidas pelas suas carapaças resistentes. É uma combinação perfeita! Simplesmente... Tente nunca cair para trás. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Verão de 2019.",
"armorSpecialFall2020WarriorNotes": "Estas vestes outrora protegeram de qualquer mal um poderoso guerreiro. Dizem que o espírito desse guerreiro permanece no tecido para proteger um sucessor digno. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2020.",
"armorSpecialFall2019MageNotes": "O seu homónimo teve um destino terrível. Mas você não será tão facilmente enganado! Vista-se com este manto lendário e ninguém o superará. Aumenta a Inteligência em <%= int %>. Edição Limitada do Outono de 2019.",
"armorSpecialFall2020WarriorNotes": "Estas vestes outrora protegeram um poderoso guerreiro de qualquer mal. Dizem que o seu espírito permanece no tecido para proteger um digno sucessor. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Outono de 2020.",
"armorSpecialFall2019MageNotes": "O seu homónimo teve um destino terrível. Contudo você não será tão facilmente enganado! Vista-se com este manto lendário e ninguém o superará. Aumenta a Inteligência em <%= int %>. Edição Limitada do Outono de 2019.",
"armorSpecialSpring2020MageNotes": "Se não resiste à tentação de andar na lama após uma tempestade, esta armadura é para si! Transforme um impulso infantil numa demonstração de criatividade mística. Aumenta a Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2020.",
"armorSpecialSummer2020RogueNotes": "Um crocodilo é o Ladino perfeito, esperando o momento ideal para atacar. Aproveite as suas habilidades — e sua velocidade explosiva. Aumenta a Percepção em <%= por %>. Equipamento de Edição Limitada de Verão de 2020.",
"armorSpecialFall2020MageNotes": "Estas vestes de mangas largas dão a impressão de pairar ou voar, simbolizando a perspectiva abrangente concedida pelo vasto conhecimento. Aumenta a Inteligência em <%= int %>. Equipamento de Edição Limitada do Outono de 2020.",
"armorSpecialWinter2020RogueNotes": "Embora possa enfrentar tempestades certamente com a força interior, a sua determinação e dedicação, vestir-se adequadamente para o clima nunca é demais. Aumenta a Percepção em <%= por %>. Equipamento de Edição Limitada do Inverno de 2019-2020",
"armorSpecialFall2019RogueNotes": "Este traje inclui luvas brancas e é ideal para momentos de introspecção no seu camarote acima do palco ou para entradas triunfais por escadarias imponentes. Aumenta a Percepção em <%= por %>. Edição Limitada do Outono de 2019."
"armorSpecialWinter2020RogueNotes": "Embora confiadamente possa enfrentar tempestades com a sua força interior, determinação e dedicação, vestir-se adequadamente para o clima nunca é demais. Aumenta a Percepção em <%= por %>. Equipamento de Edição Limitada do Inverno de 2019-2020.",
"armorSpecialFall2019RogueNotes": "Este traje inclui luvas brancas e é ideal para momentos de introspecção no seu camarote acima do palco ou para entradas triunfais em escadarias imponentes. Aumenta a Percepção em <%= por %>. Edição Limitada do Outono de 2019.",
"armorSpecialWinter2021MageText": "Vestes Esvoaçantes ao Luar",
"armorSpecialWinter2021HealerNotes": "Desafie os ventos gelados com a melhor proteção possível no Ártico! Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Inverno de 2020-2021.",
"armorSpecialSpring2021RogueNotes": "Ninguém te vai ver, esperando na mata com esta armadura astuta; camufle-se como uma planta de todos os ângulos. Aumenta a Percepção em <%= por %>. Equipamento de Edição Limitada da Primavera de 2021.",
"armorSpecialSpring2021MageText": "O Esplendor do Cisne Branco",
"armorSpecialSpring2021HealerText": "Revestimento de Casca de Salgueiro",
"armorSpecialSpring2021WarriorNotes": "Cuidado para não se ofuscar, pois esta armadura de pedra solar reflete a luz! Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2021.",
"armorSpecialSpring2021MageNotes": "A sua transformação está completa! Lance voo ou vá para o lago, mas cante de alegria! Aumenta a Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2021.",
"armorSpecialSummer2021WarriorText": "Proteção Piscosa",
"armorSpecialSummer2021RogueNotes": "Quer ser encontrado? Estes itens chamam a atenção! Prefere não ser encontrado? Eles também ajudam a desaparecer nas profundezas! Aumenta a Percepção em <%= por %>. Edição Limitada do Verão de 2021.",
"armorSpecialSummer2021RogueText": "Barbatanas de Peixe-Palhaço",
"armorSpecialSpring2021WarriorText": "Armadura do Sol",
"armorSpecialSpring2021HealerNotes": "Esta armadura ajuda a se curvar em vez de quebrar quando atingido pelo vento ou por armas. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2021.",
"armorSpecialWinter2021WarriorText": "Impermeável Isolante",
"armorSpecialWinter2021WarriorNotes": "Se for sair neste clima, é melhor se agasalhar bem. Aumenta a Constituição em <%= con %>. Equipamento de Edição Limitada do Inverno de 2020-2021.",
"armorSpecialSpring2021RogueText": "Haste de Flor Gémea",
"armorSpecialWinter2021MageNotes": "Estes quentinhos Roupões de Inverno vão manter-te aquecido durante os dias mais frios do ano. O tecido leve e elegante de fora reflete o luar prateado e deixa-te fluir, sabes? Aumenta a Inteligência em <%= int %>. Edição Limitada do Inverno de 2020-2021.",
"armorSpecialWinter2021HealerText": "Casaco Ártico"
}
+11 -5
View File
@@ -203,8 +203,8 @@
"winter2022StockingWarriorSet": "Meia (Guerreiro)",
"winter2022PomegranateMageSet": "Romã (Mago)",
"winter2022IceCrystalHealerSet": "Cristal de Gelo (Curandeiro)",
"spring2024FluoriteWarriorSet": "Conjunto Fluorita (Guerreiro)",
"spring2024HibiscusMageSet": "Conjunto Fluorita (Guerreiro)",
"spring2024FluoriteWarriorSet": "Fluorita (Guerreiro)",
"spring2024HibiscusMageSet": "Hibisco (Mago)",
"spring2024BluebirdHealerSet": "Conjunto Bluebird (Curandeiro)",
"wantToPayWithGemsText": "Quer pagar com Gems?",
"spring2024MeltingSnowRogueSet": "Conjunto de neve derretida (Rogue)",
@@ -233,8 +233,8 @@
"birthdaySet": "Conjunto de aniversário",
"winter2024SnowyOwlRogueSet": "Coruja das Neves (Vampira)",
"winter2024FrozenHealerSet": "Congelado (Curandeiro)",
"winter2024PeppermintBarkWarriorSet": "Conjunto Casca de Hortelã (Guerreiro)",
"winter2024NarwhalWizardMageSet": "Conjunto de Mago de Narval (Mago)",
"winter2024PeppermintBarkWarriorSet": "Casca de Hortelã (Guerreiro)",
"winter2024NarwhalWizardMageSet": "Mago de Narval (Mago)",
"fourForFree": "Quatro de graça",
"fall2024FieryImpWarriorSet": "Conjunto Diabrete Ardente (Guerreiro)",
"fall2024UnderworldSorcerorMageSet": "Conjunto Feiticeiro do Submundo (Mago)",
@@ -285,5 +285,11 @@
"fall2023ScarletWarlockMageSet": "Feiticeiro Escarlate (Mago)",
"fall2023WitchsBrewRogueSet": "Cerveja da Bruxa (Rogue)",
"fall2023BogCreatureHealerSet": "Criatura do Pântano (Curandeiro)",
"fall2023ScaryMovieWarriorSet": "Filme de terror (Guerreiro)"
"fall2023ScaryMovieWarriorSet": "Filme de terror (Guerreiro)",
"summer2026PuffinHealerSet": "Papagaio-do-mar (Curandeiro)",
"summer2026TsunamiRogueSet": "Tsunami (Vampira)",
"summer2026AlligatorWarriorSet": "Jacaré (Guerreiro)",
"summer2026TigerSharkMageSet": "Tubarão-tigre (Mago)",
"celebrateBirthday": "Comemore o 10º aniversário da Habitica com presentes e itens exclusivos!",
"gemSaleHow": "Entre <%= eventStartOrdinal %> e <%= eventEndOrdinal %> de <%= eventStartMonth %>, na compra de qualquer Pacote de Gemas, como de costume, sua conta receberá a quantidade promocional de Gemas. Mais Gemas para gastar, compartilhar, ou guardar para o futuro!"
}
@@ -941,5 +941,11 @@
"backgroundElvenCitadelText": "Cidadela Élfica",
"backgroundElvenCitadelNotes": "Faça uma jornada cênica até uma Cidadela Élfica.",
"backgroundOnAStrangePlanetText": "Em um Planeta Estranho",
"backgroundOnAStrangePlanetNotes": "Aventure-se onde nenhum Habiticano jamais esteve: em um Planeta Estranho."
"backgroundOnAStrangePlanetNotes": "Aventure-se onde nenhum Habiticano jamais esteve: em um Planeta Estranho.",
"backgroundBeachWithVolcanoText": "Praia com Vulcão",
"backgroundBeachWithVolcanoNotes": "Contemple as maravilhas da natureza em uma Praia com um Vulcão.",
"backgroundVegetableGardenText": "Horta",
"backgroundVegetableGardenNotes": "Plante verduras saborosas em uma Horta.",
"backgroundTropicalCoralGardenText": "Jardim de Corais Tropicais",
"backgroundTropicalCoralGardenNotes": "Mergulhe em um Jardim de Corais Tropicais."
}
+3 -1
View File
@@ -3498,5 +3498,7 @@
"backArmoireHarpsichordNotes": "Pting! Ptiiing! Reúna seu grupo para um jantar ou piquenique e ouça uma melodia desafinada neste cravo. Aumenta a Percepção e a Inteligência em <%= attrs %> cada. Armário Encantado: Conjunto de Instrumentos Musicais 2 (Item 1 de 3)",
"weaponSpecialSpring2026WarriorNotes": "Uma oportunidade de duelar pode surgir a qualquer momento e, com este formidável florete, você estará pronto! Aumenta a Força em <%= str %>. Equipamento de edição limitada da primavera de 2026.",
"weaponSpecialSpring2026HealerText": "Cajado do floco de neve",
"weaponSpecialSpring2026RogueNotes": "Uma oportunidade de crescer está quase chegando e, com esses ramos em flor, você estará pronto! Aumenta a Força em <%= str %>. Equipamento de edição limitada da primavera de 2026."
"weaponSpecialSpring2026RogueNotes": "Uma oportunidade de crescer está quase chegando e, com esses ramos em flor, você estará pronto! Aumenta a Força em <%= str %>. Equipamento de edição limitada da primavera de 2026.",
"weaponSpecialSummer2026RogueText": "Lâmina Tsunami",
"weaponSpecialSummer2026MageText": "Lança Tubarão Tigre"
}
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Gerar",
"getCodes": "Obter Códigos",
"webhooks": "Webhooks",
"webhooksInfo": "Os webhooks fornecem uma maneira para os desenvolvedores receberem notificações quando uma ação específica é realizada, como marcar ou atualizar uma Tarefa, ou enviar uma mensagem em um Grupo. Ao criar um webhook, você poderá ouvir as mudanças no Habitica e construir aplicativos que respondam a essas mudanças. <br><br>Para informações adicionais e exemplos sobre webhooks, por favor visite nossa <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">Documentação da API</a>.",
"webhooksInfo": "Os webhooks fornecem uma maneira para os desenvolvedores receberem notificações quando uma ação específica é realizada, como marcar ou atualizar uma Tarefa, ou enviar uma mensagem em um Grupo. Ao criar um webhook, você poderá ouvir as mudanças no Habitica e construir aplicativos que respondam a essas mudanças. <br><br>Para informações adicionais e exemplos sobre webhooks, por favor visite nossa <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">Documentação da API</a>.",
"enabled": "Habilitado",
"webhookURL": "URL do Webhook",
"invalidUrl": "url inválida",
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Сгенерировать",
"getCodes": "Получить коды",
"webhooks": "Веб-хуки",
"webhooksInfo": "Веб-хуки — это способ для разработчиков получать уведомления при выполнении определенных действий, таких как выполнение задачи, её обновление или отправка сообщения в группу. Создав веб-хук, вы сможете отслеживать изменения в Habitica и создавать приложения, которые на них реагируют. <br><br>Для дополнительной информации и примеров использования веб-хуков посетите нашу <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">Документацию по API</a>.",
"webhooksInfo": "Веб-хуки — это способ для разработчиков получать уведомления при выполнении определенных действий, таких как выполнение задачи, её обновление или отправка сообщения в группу. Создав веб-хук, вы сможете отслеживать изменения в Habitica и создавать приложения, которые на них реагируют. <br><br>Для дополнительной информации и примеров использования веб-хуков посетите нашу <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">Документацию по API</a>.",
"enabled": "Включено",
"webhookURL": "Ссылка на веб-хук",
"invalidUrl": "неверный url",
+1 -1
View File
@@ -116,7 +116,7 @@
"generate": "Üret",
"getCodes": "Kod Al",
"webhooks": "Webhook'lar",
"webhooksInfo": "Webhooklar, geliştiricilerin belirli bir işlem gerçekleştiğinde — örneğin bir Görevin puanlanması veya güncellenmesi ya da bir Grupta mesaj gönderilmesi gibi — bildirim almasını sağlayan bir yöntem sunar. Bir webhook oluşturarak Habiticadaki değişiklikleri dinleyebilir ve bu değişikliklere tepki veren uygulamalar geliştirebilirsin.<br><br>Webhooks hakkında ek bilgi ve örnekler için lütfen <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API Dokümanlarımızı</a> ziyaret et.",
"webhooksInfo": "Webhooklar, geliştiricilerin belirli bir işlem gerçekleştiğinde — örneğin bir Görevin puanlanması veya güncellenmesi ya da bir Grupta mesaj gönderilmesi gibi — bildirim almasını sağlayan bir yöntem sunar. Bir webhook oluşturarak Habiticadaki değişiklikleri dinleyebilir ve bu değişikliklere tepki veren uygulamalar geliştirebilirsin.<br><br>Webhooks hakkında ek bilgi ve örnekler için lütfen <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API Dokümanlarımızı</a> ziyaret et.",
"enabled": "Aktif",
"webhookURL": "Webhook URL'si",
"invalidUrl": "geçersiz url",
+74 -1
View File
@@ -796,5 +796,78 @@
"questCatCompletion": "На щастя, вам удалося впіймати геть усе, що ця настирлива кішка скинула зі столу. Сидячи на підлозі, ви помічаєте яскраве світіння, яке виходить від предметів прямо перед вами. Підвівши погляд, ви бачите, що речі на столі теж реагують! Розміщення їх на різній висоті, схоже, стало справжнім проривом у вашому дослідженні!<br><br>«Знаєш, зрештою ти мені таки допомогла. Мабуть, мені просто потрібен був свіжий погляд на це завдання, щоб зрушити з мертвої точки. Хоча, звісно, хотілося б, аби ти якось попереджала, перш ніж починати скидати все підряд», — кажете ви кішці, ніжно гладячи її.<br><br>«Це мур-р-ркітливе й цілком слушне зауваження, тож прийми це як моє вибачення!» — муркоче вона, підштовхуючи у ваш бік кілька чудернацьких яєць. — «Я рада, що допомогла тобі поглянути на речі під іншим мур-р-ркурсом.»",
"questAlienCompletion": "Завдяки власній рішучості та магічній силі Дурня вам удалося вибороти викрадену мотивацію назад. Щойно ви відчуваєте, як до вас повертається наснага, НЛО опускається, і з нього повільно висувається трап, а разом із ним з'являється велика зелена одноока істота. Попри свій дивакуватий вигляд, вона не здається загрозливою.<br><br>«Схоже, ми трохи перегнули палицю, намагаючись запозичити декілька зайвих крапель натхнення у вашого чудового міста, — каже вона. — Просимо вибачення за це, і мушу визнати — ви блискуче повернули все назад. Додаткова аура від ваших зусиль насправді зарядила двигун корабля настільки, що тепер ми зможемо дістатися дому! Будь ласка, візьміть це на знак нашої вдячності».<br><br>«О, зіллячка! — вигукує Дурень. — Яка краса, і як же це мені зручно, що вони у вас уже повністю готові!»",
"questGiraffeUnlockText": "Розблоковує Яйця Жирафа, які можна купити на Ринку.",
"questChameleonUnlockText": "Розблоковує яйця Хамелеону, які можна купити на Ринку"
"questChameleonUnlockText": "Розблоковує яйця Хамелеону, які можна купити на Ринку",
"questCrabBoss": "Краб метушник",
"questCrabRageTitle": "Відволікаюче метушіння",
"questCrabRageEffect": "Краб-метушник відволікає вас декоруванням, сповільнюючи вашу роботу над копанням та виснажуючи частину вашої магії. Магічну енергію загону зменшено!",
"questCrabDropCrabEgg": "Краб (Яйце)",
"questDogText": "Потрійний виклик!",
"questDogCompletion": "Зібравши всі іграшки, яких вам (на щастя) вдалося уникнути, ви ніжно гладите Шиберуса по центральній голові.<br><br>«Чудово, коли берешся за велике завдання з ентузіазмом, але іноді допомагає мати план. Може, наступного разу спробуєш почати з входу й рухатися у зворотному порядку? Або робити це частинами по 30 хвилин із короткими ігровими перервами між ними».<br><br>«Це гарна ідея», — втручається ліва голова цуценяти. Права голова кладе біля вас кілька речей, серед яких, схоже, є яйця… «Я знайшов дещо, що тобі може сподобатися, поки ми гралися. Дякуємо за допомогу!»",
"questDogBoss": "Шиберус",
"questDogRageTitle": "Потрійний кидок іграшок",
"questDogRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Шиберус відбере частину магічної енергії у вашого загону!",
"questDogRageEffect": "Шиберус навперейми кидає в вас іграшки та блокує ваші магічні закляття! Магічна енергія загону зменшена!",
"questDogDropDogEgg": "Собака (Яйце)",
"questDogUnlockText": "Розблоковує Яйця Собака, які можна купити на Ринку.",
"questRaccoonText": "Єнот Багатій",
"questRaccoonCompletion": "«Насправді, я думаю, що тут вистачить гарного каміння на нас обох, — кажете ви, забираючи останні свої речі. — Ось дещо з того, що я назбирав, бери собі — мені не шкода поділитися!»<br><br>«Ов, це вельми мило з твого боку, — каже єнот. — Насправді, ось тобі кілька чудових призів і від мене!»",
"questRaccoonBoss": "Ненажерливий Єнот",
"questRaccoonRageTitle": "Цунамі Дрібничок",
"questRaccoonRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Єнот-багатій відновить частину свого здоров'я!",
"questRaccoonDropRaccoonEgg": "Єнот (Яйце)",
"questRaccoonUnlockText": "Розблоковує Яйця Єнота для покупки на Ринку.",
"questCrabRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Краб-метушник відбере частину МР (магічної енергії) у вашого загону!",
"questCrabUnlockText": "Розблоковує можливість придбання Яєць Краба на Ринку.",
"questRaccoonRageEffect": "Ненажерливий єнот забирає деякі речі, які ви врятували, і запхає їх назад у стовбур дерева. Бос відновлює 30% свого здоров'я!",
"questCrabCompletion": "Вам із крабом вдається порозумітися, і ви разом розставляєте все як слід, врешті-решт облаштувавши чудову піщану нору. Краб щасливо вмощується всередині.<br><br>«Дякую тобі! — каже краб, влаштовуючись зручніше. — Оце вже нора, зроблена саме для мене. Нарешті я можу насолоджуватися всіма своїми ідеально розставленими декораціями. Тримай цих малюків на знак моєї вдячності. Від такої пропозиції ти просто не зможеш відмовитися!»",
"questCatText": "Мур-р-рплутана Ситуація",
"questCatBoss": "Мур-р-рплутник",
"questCatRageTitle": "Лють Лап",
"questCatRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Мур-р-рплутник відбере частину магічної енергії вашої команди!",
"questCatRageEffect": "Мур-р-рплутник скидає зі столу магічні предмети, які ви назбирали! Магічну енергію команди зменшено!",
"questCatDropCatEgg": "Кіт (Яйце)",
"questCatUnlockText": "Розблоковує Яйця Кота для купівлі на Ринку.",
"questCrabText": "Краб-метушник",
"questOtterCompletion": "Зібравши шматочки свого списку, ви почали сортувати їх за важливістю і врешті-решт отримали цілком притомний план, з якого можна почати!<br><br>«Тепер зрозуміло! — кажете ви видрі. — Цей кумедний витівка справді допомогла мені подумати про те, які завдання варто пріоритезувати».<br><br>Видра плескається у воді, радісно потираючи щічки: «Я радий, що мій маленький план допоміг тобі поглянути на свої завдання під іншим кутом». Він пірнає під воду і виринає неподалік: «Пам'ятай, що списки мають бути реальними для виконання. Винагороди теж допомагають, тож тримай!»",
"questOtterBoss": "Видра-інтриганка",
"questOtterRageTitle": "Видрозривання справ!",
"questOtterRageEffect": "Видра-інтриганкам підкидає шматки вашого списку справ у повітря! Бос відновлює 30% свого здоров'я!",
"questOtterDropOtterEgg": "Видра (яйце)",
"questOtterUnlockText": "Розблокуйте Яйця Видри для купівлі на Ринку",
"questJadeText": "Втомо-напасть",
"questJadeBoss": "Втомлена Напасть",
"questOtterText": "Підступна Видра-інтриганка!",
"questOtterRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Видра-інтриганка відновить частину свого здоров'я!",
"questJadeDropJadePotion": "Нефритовий Інкубаційний еліксир",
"questJadeUnlockText": "Відкриває доступ до купівлі Нефритового Інкубаційного еліксиру на Ринку.",
"questAlpacaText": "Перевантажена Альпака",
"questAlpacaBoss": "Перевантажена Альпака",
"questAlpacaRageTitle": "Багажолетрус",
"questAlpacaRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Перевантажена Альпака відновить частину свого здоров'я!",
"questAlpacaRageEffect": "Перевантажена Альпака кидається у вас багажем! Бос відновлює 30% свого здоров'я!",
"questAlpacaDropAlpacaEgg": "Альпака (яйце)",
"questAlpacaUnlockText": "Відкриває доступ до купівлі Яєць Альпаки на Ринку",
"questAlpacaCompletion": "На щастя, жодна з сумок, які кинула вам альпака, не була важкою, але ваші руки точно зайняті. «Що це було?» — запитуєте ви з роздратуванням.<br><br>«Якщо ти плануєш подорож із друзями, ти не повинен нести свій тягар самотужки! Впевнена, друзі воліли б, щоб ти скинув частину речей на них, аніж бачити, як ти падаєш під власною вагою. У будь-якому разі, можеш повернути мені ці сумки. Я досвідчена в’ючна тварина, і я довела свою думку», — каже вона, підморгнувши. «Але залиш собі той синій пакунок як винагороду за засвоєний урок. Побачимося на вершині!»",
"questPlatypusCompletion": "Після виснажливого обміну струменями води та ваших підбадьорливих слів, качкодзьоб нарешті зупиняється і зітхаючи випливає на поверхню.<br><br>«Можливо, ти маєш рацію. Якщо я вимагатиму бездоганності, то ніколи нічого не закінчу! Я завжди можу вносити правки в процесі. Схоже, ти дещо знаєш про перфекціонізм».<br><br>Ви дивитеся на свій розмоклий аркуш: «Так...»<br><br>«Вибач за це, — каже качкодзьоб. — Ось, як вибачення за те, що я намочив твоє есе, візьми кілька яєць, які я знайшов у багнюці.»",
"questOpalCompletion": "Нарешті, втомлені та вкриті пилом, ви знаходите останні руни та опал, необхідні для створення Магічного Інкубаційного еліксиру.<br><br>Ви починаєте процес кування, щойно повертаєтеся до головного міста Habitica. Сила рун та опалів наповнює вашу лабораторію райдужним світлом! За мить у вас уже є три зілля, і ви з нетерпінням чекаєте, щоб вилупити нових барвистих друзів.",
"questPlatypusText": "Педантичний качкодзьоб",
"questPlatypusBoss": "Педантичний качкодзьоб",
"questPlatypusRageTitle": "Шокуючий сплеск",
"questPlatypusRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Педантичний качкодзьоб відбере частину магічної енергії у вашої команди!",
"questPlatypusRageEffect": "Педантичний качкодзьоб пірнає під воду і хлюпає на вас! Магічну енергію команди зменшено!",
"questPlatypusDropPlatypusEgg": "Качкодзьоб (яйце)",
"questPlatypusUnlockText": "Відкриває доступ до купівлі Яєць Качкодзьоба на Ринку",
"questOpalText": "Легенда прихованих опалів",
"questOpalCollectLibraRunes": "Руна Терезів",
"questOpalCollectMercuryRunes": "Руна Меркурія",
"questOpalCollectOpalGems": "Самоцвіт Опал",
"questOpalDropOpalPotion": "Інкубаційний еліксир Опалу",
"questOpalUnlockText": "Відкриває доступ до купівлі Опалового Інкубаційного еліксиру на Ринку",
"questAlienText": "Нашестя Викрадачів Мотивації",
"questAlienBoss": "Позаземний Викрадач підбадьорення",
"questAlienRageTitle": "Міжгалактична колотнеча",
"questAlienRageDescription": "Ця шкала заповнюється, коли ви не виконуєте свої Щоденні завдання. Коли вона заповниться, Позаземний Викрадач підбадьорення знеохотить вас, відновивши частину свого здоров’я!",
"questAlienRageEffect": "Викрадач Підбадьорення використовує «Міжгалактичну колотнечу»! Ви відкотилися назад крізь гіперпростір. Ваш супротивник відновлює здоров’я!",
"questAlienDropAlienPotion": "Інкубаційних еліксир Прибульця",
"questAlienUnlockText": "Відкриває доступ до купівлі Інкубаційного еліксиру прибульця на Ринку"
}
+4 -4
View File
@@ -18,7 +18,7 @@
"resetAccPop": "Почати заново, залишивши всі рівні, золото, спорядження, історію та завдання.",
"deleteAccount": "Видалити акаунт",
"deleteAccPop": "Видалити ваш акаунт Habitica.",
"feedback": "Якщо ви хочете залишити відгук, будь-ласка, введіть його нижче - ми будемо раді почути його. Він буде анонімним, хіба що ви самі вирішите залишити свої контактні дані! Не володієте англійською достатньо добре? Не проблема! Використовуйте мову, якій віддаєте перевагу.",
"feedback": "Ми будемо раді почути ваші відгуки! Якщо бажаєте поділитися ними, введіть їх нижче. Вони залишаться анонімними, якщо ви не вирішите вказати свої контактні дані.",
"dataExport": "Експортування даних",
"saveData": "Ось декілька варіантів для збереження ваших даних.",
"habitHistory": "Історія звичок",
@@ -47,8 +47,8 @@
"dangerZone": "Небезпечна зона",
"resetText1": "<b>Будьте обережні!</b> Це призведе до скидання багатьох частин вашого акаунта. Це вкрай небажано, але деякі люди вважають це корисним після гри з сайтом протягом короткого часу.",
"resetText2": "Іншим варіантом є використання <b>Кулі Переродження</b>, яка скине все інше, зберігаючи ваші Завдання та Спорядження.",
"deleteLocalAccountText": "<b>Ви впевнені?</b> Ваш акаунт буде видалено назавжди без можливості відновлення! Ви будете змушені створити новий акаунт, якщо захочете знову користуватись Habitica. Вартість витрачених самоцвітів та тих, що знаходяться у банку не буде компенсована. Якщо ви абсолютно впевнені, напишіть ваш пароль у текстовому полі нижче.",
"deleteSocialAccountText": "<b>Ви впевнені?</b> Ваш акаунт буде видалено назавжди без можливості відновлення! Ви будете змушені створити новий акаунт, якщо захочете знову користуватись Habitica. Вартість витрачених самоцвітів та тих, що знаходяться у банку не буде компенсована. Якщо ви абсолютно впевнені, напишіть \"<%= magicWord %>\" у текстовому полі нижче.",
"deleteLocalAccountText": "<b>Ви впевнені?</b> Ця дія є незворотною. Видалення вашого акаунта призведе до видалення всіх ваших даних, і їх неможливо буде відновити. Самоцвіти не підлягають поверненню. <br><br>Будь ласка, зачекайте до 24 годин для завершення видалення акаунта та до 30 днів для видалення аналітичних даних, якщо ви надавали на це згоду. Після завершення ви зможете зареєструвати новий акаунт у Habitica, використовуючи свої попередні облікові дані. <br><br>Щоб продовжити, введіть свій пароль нижче.",
"deleteSocialAccountText": "<b>Ви впевнені?</b> Ця дія є незворотною. Видалення вашого акаунта призведе до видалення всіх ваших даних, і їх неможливо буде відновити. Самоцвіти не підлягають поверненню.<br><br>Будь ласка, зачекайте до 24 годин для завершення видалення акаунта та до 30 днів для видалення аналітичних даних, якщо ви надавали на це згоду. Після завершення ви зможете зареєструвати новий акаунт у Habitica, використовуючи свої попередні облікові дані.<br><br>Щоб продовжити, введіть <%= magicWord %> нижче.",
"API": "API",
"APIv3": "API v3",
"APIText": "Скопіюйте це для використання в додатках сторонніх розробників. Але пам'ятайте, що API токен використовується як пароль, тож не поширюйте його публічно. Інколи вас питатимуть про ID користувача, але не публікуйте свій API Token там, де інші можуть побачити його, у тому числі на GitHub.",
@@ -116,7 +116,7 @@
"generate": "Згенерувати",
"getCodes": "Отримати коди",
"webhooks": "Веб-хуки",
"webhooksInfo": "Веб-гуки надають розробникам можливість отримувати сповіщення, коли виконується певна дія, наприклад, виконання або оновлення Задачі, або надсилання повідомлення в Групі. Створивши веб-гук, ви зможете відслідковувати зміни в Habitica та створювати додатки, які реагуватимуть на ці зміни.<br><br>Щоб отримати додаткову інформацію та приклади веб-гуків, відвідайте нашу <a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API документацію</a>.",
"webhooksInfo": "Веб-гуки надають розробникам можливість отримувати сповіщення, коли виконується певна дія, наприклад, виконання або оновлення Задачі, або надсилання повідомлення в Групі. Створивши веб-гук, ви зможете відслідковувати зміни в Habitica та створювати додатки, які реагуватимуть на ці зміни.<br><br>Щоб отримати додаткову інформацію та приклади веб-гуків, відвідайте нашу <a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API документацію</a>.",
"enabled": "Увімкнено",
"webhookURL": "Посилання на веб-хук",
"invalidUrl": "неправильне посилання",
+10 -1
View File
@@ -941,5 +941,14 @@
"backgroundRidingACometText": "彗星骑手",
"backgroundRidingACometNotes": "乘骑彗星,穿梭于浩瀚宇宙!",
"backgroundOnAStrangePlanetText": "异星之上",
"backgroundOnAStrangePlanetNotes": "探索那尚未有 Habitican居民涉足之地:异星之上。"
"backgroundOnAStrangePlanetNotes": "探索那尚未有 Habitican居民涉足之地:异星之上。",
"backgrounds062026": "第145组:2026年6月发布",
"backgroundBeachWithVolcanoText": "带有火山的沙滩",
"backgroundTropicalCoralGardenText": "热带珊瑚花园",
"backgrounds082026": "第147套:2026年8月发布",
"backgroundVegetableGardenText": "蔬菜种植园",
"backgroundVegetableGardenNotes": "在蔬菜种植园中种植美味的绿色蔬菜。",
"backgroundBeachWithVolcanoNotes": "在带有火山的沙滩上观赏自然奇迹。",
"backgrounds072026": "第146组:2026年7月发布",
"backgroundTropicalCoralGardenNotes": "在热带珊瑚花园中进行潜水。"
}
+38 -34
View File
@@ -248,47 +248,51 @@
"summer2023CoralMageSet": "珊瑚(法师)",
"winter2024SnowyOwlRogueSet": "雪鸮(盗贼)",
"winter2024FrozenHealerSet": "冰冻(医者)",
"winter2024PeppermintBarkWarriorSet": "薄荷巧克力套装(战士)",
"winter2024NarwhalWizardMageSet": "独角鲸巫师套装(法师)",
"winter2024PeppermintBarkWarriorSet": "薄荷巧克力(战士)",
"winter2024NarwhalWizardMageSet": "独角鲸巫师(法师)",
"fall2023ScaryMovieWarriorSet": "恐怖电影(战士)",
"fall2023ScarletWarlockMageSet": "猩红术士(法师)",
"fall2023WitchsBrewRogueSet": "女巫之酿(盗贼)",
"fall2023BogCreatureHealerSet": "沼泽生物(医者)",
"spring2024FluoriteWarriorSet": "萤石套装(战士)",
"spring2024HibiscusMageSet": "木槿套装(法师)",
"spring2024BluebirdHealerSet": "蓝鸲套装(医者)",
"spring2024MeltingSnowRogueSet": "融雪套装(盗贼)",
"spring2024FluoriteWarriorSet": "萤石(战士)",
"spring2024HibiscusMageSet": "木槿(法师)",
"spring2024BluebirdHealerSet": "蓝鸲(医者)",
"spring2024MeltingSnowRogueSet": "融雪(盗贼)",
"summer2024WhaleSharkWarriorSet": "鲸鲨(战士)",
"summer2024SeaSnailHealerSet": "海螺(医者)",
"summer2024SeaAnemoneMageSet": "海葵(法师)",
"summer2024NudibranchRogueSet": "海蛞蝓(盗贼)",
"gemSaleLimitationsText": "特惠只在活动限期内有效。本次活动始于<%= eventStartMonth %> <%= eventStartOrdinal %>的<%= eventStartTime %> <%= timeZone %>,活动将在 <%= eventEndMonth %> <%= eventEndOrdinal %>的<%= eventEndTime %> <%= timeZone %>结束。仅在为自己购买宝石时才能享有特惠。",
"fall2024BlackCatRogueSet": "黑猫套装(盗贼)",
"fall2024FieryImpWarriorSet": "火爆小鬼套装(战士)",
"fall2024UnderworldSorcerorMageSet": "冥界术士套装(法师)",
"fall2024SpaceInvaderHealerSet": "太空侵略者套装(医者)",
"winter2025SnowRogueSet": "冰雪套装(盗贼)",
"winter2025MooseWarriorSet": "驼鹿套装(战士)",
"winter2025AuroraMageSet": "极光套装(法师)",
"spring2025SunshineWarriorSet": "曙光套装(战士)",
"spring2025MantisMageSet": "螳螂套装(法师)",
"spring2025CrystalPointRogueSet": "晶芒套装(盗贼)",
"spring2025PlumeriaHealerSet": "缅栀套装(医者)",
"winter2025StringLightsHealerSet": "流光套装(医者)",
"summer2025ScallopWarriorSet": "扇贝套装(战士)",
"summer2025SeaAngelHealerSet": "海天使套装(医者)",
"summer2025FairyWrasseMageSet": "仙女龙套装(法师)",
"summer2025SquidRogueSet": "乌贼套装(盗贼)",
"fall2025SasquatchWarriorSet": "大脚怪套装(战士)",
"fall2025SkeletonRogueSet": "骸骨套装(盗贼)",
"fall2025KoboldHealerSet": "狗头人套装(医者)",
"fall2025MaskedGhostMageSet": "蒙面幽魂套装(法师)",
"winter2026RimeReaperWarriorSet": "冰霜死神套装(战士)",
"winter2026SkiRogueSet": "滑雪套装(盗贼)",
"winter2026PolarBearHealerSet": "北极熊套装(医者)",
"winter2026MidwinterCandleMageSet": "冬至烛光套装(法师)",
"spring2026FrogWarriorSet": "青蛙套装(战士)",
"spring2026BranchRogueSet": "春枝套装(盗贼)",
"spring2026SnowdropHealerSet": "雪钟花套装(医者)",
"spring2026MaypoleMageSet": "五朔节花柱套装(法师)"
"fall2024BlackCatRogueSet": "黑猫(盗贼)",
"fall2024FieryImpWarriorSet": "火爆小鬼(战士)",
"fall2024UnderworldSorcerorMageSet": "冥界术士(法师)",
"fall2024SpaceInvaderHealerSet": "太空侵略者(医者)",
"winter2025SnowRogueSet": "冰雪(盗贼)",
"winter2025MooseWarriorSet": "驼鹿(战士)",
"winter2025AuroraMageSet": "极光(法师)",
"spring2025SunshineWarriorSet": "曙光(战士)",
"spring2025MantisMageSet": "螳螂(法师)",
"spring2025CrystalPointRogueSet": "晶芒(盗贼)",
"spring2025PlumeriaHealerSet": "缅栀(医者)",
"winter2025StringLightsHealerSet": "流光(医者)",
"summer2025ScallopWarriorSet": "扇贝(战士)",
"summer2025SeaAngelHealerSet": "海天使(医者)",
"summer2025FairyWrasseMageSet": "仙女龙(法师)",
"summer2025SquidRogueSet": "乌贼(盗贼)",
"fall2025SasquatchWarriorSet": "大脚怪(战士)",
"fall2025SkeletonRogueSet": "骸骨(盗贼)",
"fall2025KoboldHealerSet": "狗头人(医者)",
"fall2025MaskedGhostMageSet": "蒙面幽魂(法师)",
"winter2026RimeReaperWarriorSet": "冰霜死神(战士)",
"winter2026SkiRogueSet": "滑雪(盗贼)",
"winter2026PolarBearHealerSet": "北极熊(医者)",
"winter2026MidwinterCandleMageSet": "冬至烛光(法师)",
"spring2026FrogWarriorSet": "青蛙(战士)",
"spring2026BranchRogueSet": "春枝(盗贼)",
"spring2026SnowdropHealerSet": "雪钟花(医者)",
"spring2026MaypoleMageSet": "五朔节花柱(法师)",
"summer2026AlligatorWarriorSet": "短吻鳄(战士)",
"summer2026PuffinHealerSet": "海鹦(医者)",
"summer2026TigerSharkMageSet": "鼬鲨(法师)",
"summer2026TsunamiRogueSet": "海啸(盗贼)"
}
+4 -4
View File
@@ -18,7 +18,7 @@
"resetAccPop": "重新开始,删除所有等级、金币、装备、历史记录和任务。",
"deleteAccount": "删除帐号",
"deleteAccPop": "注销并删除你的Habitica账号。",
"feedback": "如果您想给我们提供反馈意见,请在下方输入——我们非常乐意听取您的反馈!除非您选择输入您的详细联系方式,否则它将是匿名的。无法流畅地使用英语?没关系!使用您偏好的语言。",
"feedback": "我们非常乐意听取您的反馈!如果您愿意分享任何内容,请在下方输入。除非您选择提供联系方式,否则您的内容将保持匿名。",
"dataExport": "导出数据",
"saveData": "以下是几种备份数据的方法。",
"habitHistory": "习惯历史",
@@ -47,8 +47,8 @@
"dangerZone": "危险区域",
"resetText1": "<b>小心!</b>这将重置你账号的很多数值。我们强烈不建议你这样做。不过,在短暂的试玩一段时间后,进行重置或许会有所帮助。",
"resetText2": "另一种选择是使用<b>重生球</b>,它可以重置的同时保留你的任务和装备。",
"deleteLocalAccountText": "<b>您确定吗?</b>这将永久删除您的帐号,并且永远无法恢复!您需要注册一个新账号才能再次使用Habitica。已存入银行或已消费的宝石将不予退还。如果您已确定,请在下方的文本框中输入您的密码。",
"deleteSocialAccountText": "<b>您确定吗?</b>这将永久删除您的帐号,并且永远无法恢复!您需要注册一个新账号才能再次使用Habitica。已存入银行或已消费的宝石将不予退还。如果您已确定,请在下方的文本框中输入<b>\"<%= magicWord %>\"</b> 。",
"deleteLocalAccountText": "<b>您确定吗?</b> 此操作不可撤销。删除账户将清除您所有的数据,且无法恢复。宝石将不予退还。<br><br>账户删除过程最多需要 24 小时完成,如果您曾选择参与数据分析,相关数据的清除最多需要 30 天。完成后,您可以使用之前的登录信息注册一个新的 Habitica 账户。<br><br>如您确认删除,请在下方输入您的密码。",
"deleteSocialAccountText": "<b>您确定吗?</b> 此操作不可撤销。删除账户将清除您所有的数据,且无法恢复。宝石将不予退还。<br><br>账户删除过程最多需要 24 小时完成,如果您曾选择参与数据分析,相关数据的清除最多需要 30 天。完成后,您可以使用之前的登录信息注册一个新的 Habitica 账户。<br><br>如您确认删除,请在下方输入<%= magicWord %> 。",
"API": "API",
"APIv3": "API v3",
"APIText": "复制这些信息供第三方应用程序使用。不过,请将 API令牌视为密码,不要公开分享。您偶尔可能会被要求提供您的用户ID,可能需要提供您的用户 ID,但请勿将您的API令牌发布在其他人可以看到的地方,包括Github。",
@@ -116,7 +116,7 @@
"generate": "生成",
"getCodes": "获取代码",
"webhooks": "Webhook",
"webhooksInfo": "Webhook为开发人员提供了一种在执行特定操作时接收通知的方式,例如评分或更新任务,或在群组中发送消息。通过创建webhook,你将能够监听Habitica的变化,并构建响应这些变化的应用程序。<br><br>有关webhook的更多信息和示例,请访问我们的<a target=\"_blank\" href=\"https://habitica.com/apidoc/#api-Webhook-AddWebhook\">API 文档</a>。",
"webhooksInfo": "Webhook为开发人员提供了一种在执行特定操作时接收通知的方式,例如评分或更新任务,或在群组中发送消息。通过创建webhook,你将能够监听Habitica的变化,并构建响应这些变化的应用程序。<br><br>有关webhook的更多信息和示例,请访问我们的<a target=\"_blank\" href=\"https://apidoc.habitica.com/#api-Webhook-AddWebhook\">API 文档</a>。",
"enabled": "已启用",
"webhookURL": "Webhook链接",
"invalidUrl": "无效的url",
+4 -1
View File
@@ -277,5 +277,8 @@
"mysterySet202602": "樱之狐套装",
"mysterySet202603": "紫藤魔法师套装",
"mysterySet202605": "暮光云环套装",
"mysterySet202604": "无畏宇航员套装"
"mysterySet202604": "无畏宇航员套装",
"mysterySet202606": "假日吊床套装",
"mysterySet202607": "海潮术士套装",
"mysterySet202608": "光刃套装"
}
+11 -1
View File
@@ -143,5 +143,15 @@
"brokenChallengeTaskCount": "这项任务是某个已经失效的挑战中的 <%= count %> 项任务之一。",
"confirmDeleteTasks": "你要删除这些任务吗?",
"deleteType": "删除 <%= type %>",
"sureDeleteType": "确定要删除这项任务吗?"
"sureDeleteType": "确定要删除这项任务吗?",
"everyDay": "每天",
"everyXDays": "每<%= count %>天",
"everyWeek": "每周",
"everyXWeeks": "每<%= count %>周",
"everyMonth": "每月",
"everyYear": "每年",
"everyXYears": "每<%= count %>年",
"everyXMonths": "每<%= count %>个月",
"every": "每",
"fifthWeekWarning": "这个 <strong>任务不会在少于 <%= day %> 天的月份中出现"
}
+13 -1
View File
@@ -930,5 +930,17 @@
"backgroundWinterDesertWithSaguarosNotes": "在冬季沙漠裡感受冷冽的空氣,與仙人掌樹相伴。",
"backgrounds022026": "套裝 1412026 年 2 月發佈",
"backgroundElegantPalaceText": "華麗宮殿",
"backgroundElegantPalaceNotes": "欣賞華麗宮殿裡的繽紛彩牆。"
"backgroundElegantPalaceNotes": "欣賞華麗宮殿裡的繽紛彩牆。",
"backgrounds062026": "SET 1452026年6月發布",
"backgrounds072026": "SET 1462026年7月發布",
"backgroundTropicalCoralGardenText": "熱帶珊瑚花園",
"backgroundTropicalCoralGardenNotes": "潛入熱帶珊瑚花園。",
"backgrounds082026": "SET 1472026年8月發布",
"backgroundVegetableGardenText": "菜園",
"backgroundVegetableGardenNotes": "在菜園裡種植美味的蔬菜。",
"backgrounds032026": "SET 1422026年3月發布",
"backgrounds052026": "SET 1442026年5月發布",
"backgrounds042026": "SET 1432026年4月發布",
"backgroundElvenCitadelText": "精靈要塞",
"backgroundElvenCitadelNotes": "踏上前往精靈要塞的風景之旅。"
}
+3 -1
View File
@@ -2468,5 +2468,7 @@
"headSpecialSpring2026HealerNotes": "以這些美麗而堅韌的花瓣展現充滿希望的風采。增加 <%= int %> 點智力。2026 春季限定版裝備。",
"shieldSpecialSpring2026HealerText": "雪滴花葉",
"shieldSpecialSpring2026WarriorNotes": "這座燭台不僅能照亮你的道路,你還可以用它融化殘留的雪與冰。增加體質 <%= con %> 點。2026 春季限定版裝備。",
"shieldSpecialSpring2026WarriorText": "青蛙戰士燭台"
"shieldSpecialSpring2026WarriorText": "青蛙戰士燭台",
"weaponSpecialWinter2024RogueText": "雪鴞護腕",
"weaponSpecialWinter2024RogueNotes": "你裝備了羽毛和利爪!咕咕!增加<%= str %>點力量。2023-2024年冬季限定版裝備。"
}
@@ -744,5 +744,10 @@
"questCatBoss": "喵惑師",
"questCatRageEffect": "喵惑師把你收集的魔法物品通通從桌上拍飛了!全隊的魔法值被降低了!",
"questCatRageDescription": "怒氣條會在你沒有完成每日任務時逐漸填滿。填滿後,喵惑師會奪走你隊伍一部分的魔法值!",
"questCatRageTitle": "狂怒貓拳"
"questCatRageTitle": "狂怒貓拳",
"questSolarSystemNotes": "你的隊伍正乘坐一艘由傑出的太空工程師 @gawrone 設計的奇幻飛船,航行於宇宙之間,欣賞沿途景色。飛船的「冥想礦石」推進系統仰賴隊伍的平靜心境才能維持航向。<br><br>在前方閃耀銀河的雲海之中,你們看見一顆不祥地脈動著的恆星。@beffymaroo 警告道:「保持專注。如果我們經過那顆新星時太過分心,恆星與飛船之間的引力可能會讓我們偏離航道!」<br><br>當你們逐漸接近那顆恆星時,一波波奇異能量脈衝朝飛船襲來。<br><br>「那些是分心怪,牠們是試圖讓我們迷失方向的思緒生物。」@SabreCat 說道。「如果我們能任由牠們流過,而不被牠們帶走注意力,我們就能繼續朝目標前進!」",
"questSolarSystemCompletion": "經過謹慎的練習,你和船員們成功阻止分心怪把你們捲出船外——方法僅僅是察覺並接納牠們的存在,而不讓牠們掌控自己。當你們安全通過那顆脈動的恆星後,@gawrone 發現了一群漂浮在太空中的瓶子,並把它們撈上船。每個瓶子裡似乎都裝著一個微小的太陽系!<br><br>「看來,我們的努力為我們帶來了相當不錯的獎勵呢!」@beffymaroo 說道。「來看看用這些新的孵化藥水孵化寵物蛋後,會出現什麼樣的天體奇觀吧。」",
"questSolarSystemDropSolarSystemPotion": "太陽系孵化藥水",
"questSolarSystemBoss": "分心怪",
"questSolarSystemText": "星際專注之旅"
}
+1 -1
View File
@@ -333,7 +333,7 @@ function _getMembersForItem (type) {
const escapedSearch = escapeRegExp(req.query.search);
query.$or = [
{ 'profile.name': { $regex: new RegExp(escapedSearch, 'i') } },
{ 'auth.local.username': { $regex: new RegExp(req.query.search, 'i') } },
{ 'auth.local.username': { $regex: new RegExp(escapedSearch, 'i') } },
];
}
} else if (type === 'group-invites') {
@@ -16,15 +16,6 @@ api.getNewClient = {
},
};
api.getFAQEntryPoint = {
method: 'GET',
url: '/static/faq',
noLanguage: true,
async handler (req, res) {
return serveClient(res, 'index-faq.html');
},
};
api.robotsTxt = {
method: 'GET',
url: '/robots.txt',
@@ -52,7 +52,6 @@ api.iapSubscriptionAndroid = {
req.body.transaction.receipt,
req.body.transaction.signature,
req.headers,
req.body.deferredSku,
);
res.respond(200);
+2 -2
View File
@@ -2,6 +2,6 @@ const ROOT = `${__dirname}/../../../`;
const TEN_MINUTES = 1000 * 60 * 10;
export function serveClient (expressRes, file = 'index.html') { // eslint-disable-line import/prefer-default-export
return expressRes.sendFile(`./website/client/dist/${file}`, { root: ROOT, maxAge: TEN_MINUTES });
export function serveClient (expressRes) { // eslint-disable-line import/prefer-default-export
return expressRes.sendFile('./website/client/dist/index.html', { root: ROOT, maxAge: TEN_MINUTES });
}
+13 -43
View File
@@ -119,7 +119,15 @@ api.getSubscriptionPaymentDetails = async function getDetails (userId, subscript
};
};
function getSubCodeFromSku (sku) {
api.subscribe = async function subscribe (
sku,
user,
receipt,
signature,
headers,
nextPaymentProcessing = undefined,
) {
if (!sku) throw new BadRequest(shared.i18n.t('missingSubscriptionCode'));
let subCode;
switch (sku) { // eslint-disable-line default-case
case 'com.habitrpg.android.habitica.subscription.1month':
@@ -135,19 +143,6 @@ function getSubCodeFromSku (sku) {
subCode = 'basic_12mo';
break;
}
return subCode;
}
api.subscribe = async function subscribe (
sku,
user,
receipt,
signature,
headers,
deferredSku = undefined,
) {
if (!sku) throw new BadRequest(shared.i18n.t('missingSubscriptionCode'));
const subCode = getSubCodeFromSku(sku);
const sub = subCode ? shared.content.subscriptionBlocks[subCode] : false;
if (!sub) throw new NotAuthorized(this.constants.RESPONSE_INVALID_ITEM);
@@ -161,14 +156,6 @@ api.subscribe = async function subscribe (
const receiptObj = typeof receipt === 'string' ? JSON.parse(receipt) : receipt; // passed as a string
const token = receiptObj.token || receiptObj.purchaseToken;
let existingSub;
if (user && user.isSubscribed()) {
existingSub = shared.content.subscriptionBlocks[user.purchased.plan.planId];
if (existingSub === sub && user.purchased.plan.customerId === token) {
throw new NotAuthorized(this.constants.RESPONSE_ALREADY_USED);
}
}
const existingUser = await User.findOne({
'purchased.plan.customerId': token,
}).exec();
@@ -179,34 +166,17 @@ api.subscribe = async function subscribe (
const isValidated = iap.isValidated(googleRes);
if (!isValidated) throw new NotAuthorized(this.constants.RESPONSE_INVALID_RECEIPT);
let nextPaymentProcessing = moment.utc().add({ days: 2 }); // eslint-disable-line no-param-reassign, max-len
let nextBillingDate;
if (googleRes.expirationDate) {
nextBillingDate = new Date(Number(googleRes.expirationDate));
if (nextBillingDate < nextPaymentProcessing.toDate()) {
nextPaymentProcessing = moment(nextBillingDate);
}
}
const data = {
nextPaymentProcessing = nextPaymentProcessing || moment.utc().add({ days: 2 }); // eslint-disable-line no-param-reassign, max-len
await payments.createSubscription({
user,
customerId: token,
paymentMethod: this.constants.PAYMENT_METHOD_GOOGLE,
sub,
headers,
nextPaymentProcessing,
nextBillingDate,
additionalData: testObj,
};
if (existingSub) {
if (deferredSku) {
const deferredSubCode = getSubCodeFromSku(deferredSku);
data.updatedTo = shared.content.subscriptionBlocks[deferredSubCode];
} else {
data.updatedFrom = existingSub;
data.updatedFrom.logic = 'payFull';
}
}
await payments.createSubscription(data);
});
};
api.noRenewSubscribe = async function noRenewSubscribe (options) {
@@ -214,10 +214,6 @@ async function prepareSubscriptionValues (data) {
if (data.subscriptionId) {
plan.subscriptionId = data.subscriptionId;
}
if (data.updatingTo && data.updatingTo.key) {
// Subscription change is deferred until next payment processing
plan.deferredPlanId = data.updatingTo.key;
}
}
return {
+2
View File
@@ -5,6 +5,8 @@ export default function corsMiddleware (req, res, next) {
'Access-Control-Allow-Headers': 'Authorization,Content-Type,Accept,Content-Encoding,X-Requested-With,x-api-user,x-api-key,x-client',
// Expose rate limit headers to CORS requests
'Access-Control-Expose-Headers': 'X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset,Retry-After',
// Content-Security-Policy based on Helmet defaults
'Content-Security-Policy': "default-src 'self' habitica.com *.habitica.com *.amazon.com *.amazonaws.com *.amplitude.com *.loggly.com *.payments-amazon.com *.stripe.com *.stripe.network; base-uri 'self'; font-src 'self' https: data:; form-action 'self'; frame-ancestors 'self'; img-src * data:; object-src 'none'; script-src-attr 'none'; style-src 'self' https: 'unsafe-inline'",
});
if (req.method === 'OPTIONS') return res.sendStatus(200);
return next();
+7 -6
View File
@@ -1,5 +1,4 @@
import nconf from 'nconf';
import redis from 'ioredis';
import {
RateLimiterRedis,
RateLimiterMemory,
@@ -11,6 +10,7 @@ import {
import logger from '../libs/logger';
import { apiError } from '../libs/apiError';
import SERVER_STATUS from '../libs/serverStatus';
import setupRedis from '../libs/redis';
// Middleware to rate limit requests to the API
@@ -32,26 +32,27 @@ const IP_RATE_LIMIT_COST = nconf.get('RATE_LIMITER_IP_COST') || 5;
let redisClient;
if (RATE_LIMITER_ENABLED && !IS_TEST) {
redisClient = redis.createClient({
redisClient = setupRedis({
host: REDIS_HOST,
password: REDIS_PASSWORD,
port: REDIS_PORT,
enable_offline_queue: false,
}, {
enableOfflineQueue: false,
});
redisClient.on('ready', () => {
SERVER_STATUS.REDIS = true;
SERVER_STATUS.RATE_LIMITER = true;
});
redisClient.on('reconnecting', () => {
SERVER_STATUS.REDIS = false;
SERVER_STATUS.RATE_LIMITER = false;
});
redisClient.on('error', error => {
logger.error(error, 'Redis Error');
});
} else {
SERVER_STATUS.REDIS = true;
SERVER_STATUS.RATE_LIMITER = true;
}
function setResponseHeaders (res, points, rateLimiterRes) {
-3
View File
@@ -32,7 +32,4 @@ export default function staticMiddleware (expressApp) {
/* The remaining files are not cached yet. */
expressApp.use('/static', express.static(`${BASE_DIR}/website/client/dist/static`));
/* APIdoc files, not cached yet. */
expressApp.use('/apidoc', express.static(`${BASE_DIR}/apidoc/html`));
}
+1 -4
View File
@@ -2,17 +2,14 @@
// DEPRECATED AND INACTIVE
import express from 'express';
import nconf from 'nconf';
import {
NotFound,
} from '../libs/errors';
const router = express.Router(); // eslint-disable-line new-cap
const BASE_URL = nconf.get('BASE_URL');
router.all('*', (req, res, next) => {
const error = new NotFound(`API v1 is no longer supported, please use API v3 instead (${BASE_URL}/apidoc).`);
const error = new NotFound('API v1 is no longer supported, please use API v3 instead (https://apidoc.habitica.com).');
return next(error);
});
+1 -4
View File
@@ -2,17 +2,14 @@
// DEPRECATED AND INACTIVE
import express from 'express';
import nconf from 'nconf';
import {
NotFound,
} from '../libs/errors';
const router = express.Router(); // eslint-disable-line new-cap
const BASE_URL = nconf.get('BASE_URL');
router.all('*', (req, res, next) => {
const error = new NotFound(`API v2 is no longer supported, please use API v3 instead (${BASE_URL}/apidoc).`);
const error = new NotFound('API v2 is no longer supported, please use API v3 instead (https://apidoc.habitica.com).');
return next(error);
});
@@ -35,7 +35,6 @@ export const schema = new mongoose.Schema({
trinkets: { $type: Number, default: 0 },
lastHourglassReceived: Date,
},
deferredPlanId: String,
}, {
strict: true,
minimize: false, // So empty objects are returned