mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 22:27:26 +01:00
Compare commits
29 Commits
qa/frog
...
fiz/fix-or
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39cad77f7d | ||
|
|
9a1fb18959 | ||
|
|
876d5a67d6 | ||
|
|
3078af8f2a | ||
|
|
dad1440138 | ||
|
|
2ea0b64603 | ||
|
|
bd1aa1e417 | ||
|
|
7c49b845d6 | ||
|
|
1ee172139d | ||
|
|
6447b9ab4b | ||
|
|
5c414099d9 | ||
|
|
5e8e1179aa | ||
|
|
7e86a62624 | ||
|
|
1ba9dda0ed | ||
|
|
227e5ceaa8 | ||
|
|
f77ab5a3ab | ||
|
|
1916faf647 | ||
|
|
80ecb5cef1 | ||
|
|
75c36e6622 | ||
|
|
78330c975a | ||
|
|
95266f6cb3 | ||
|
|
e9b2c1b51a | ||
|
|
2a2bea07ab | ||
|
|
ea60ddbf4c | ||
|
|
1c2ca0e478 | ||
|
|
ef2b7eb928 | ||
|
|
3d16387a61 | ||
|
|
93b7770eaa | ||
|
|
a9f84d3307 |
Submodule habitica-images updated: 992d838120...aa72332019
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"version": "5.38.1",
|
||||
"version": "5.38.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "habitica",
|
||||
"version": "5.38.1",
|
||||
"version": "5.38.2",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.22.10",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "5.38.1",
|
||||
"version": "5.38.2",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.22.10",
|
||||
|
||||
@@ -117,6 +117,15 @@ describe('Blocker middleware', () => {
|
||||
|
||||
checkIPBlockedErrorThrown(next);
|
||||
});
|
||||
|
||||
it('throws when the ip is blocked', () => {
|
||||
req.ip = '192.168.1.1';
|
||||
sandbox.stub(nconf, 'get').withArgs('BLOCKED_IPS').returns('192.168.1.1');
|
||||
const attachBlocker = requireAgain(pathToBlocker).default;
|
||||
attachBlocker(req, res, next);
|
||||
|
||||
checkIPBlockedErrorThrown(next);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Blocking clients', () => {
|
||||
@@ -194,4 +203,4 @@ describe('Blocker middleware', () => {
|
||||
expect(calledWith[0] instanceof Forbidden).to.equal(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -209,6 +209,9 @@ export default {
|
||||
return response;
|
||||
}, error => { // Set up Error interceptors
|
||||
if (error.response.status >= 400) {
|
||||
if (!error.response) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
const isBanned = this.checkForBannedUser(error);
|
||||
if (isBanned === true) return null; // eslint-disable-line consistent-return
|
||||
|
||||
|
||||
@@ -130,4 +130,4 @@ export default {
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
@@ -851,7 +851,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
if (this.genericPurchase) {
|
||||
this.makeGenericPurchase(this.item, 'buyModal', this.selectedAmountToBuy);
|
||||
await this.makeGenericPurchase(this.item, 'buyModal', this.selectedAmountToBuy);
|
||||
await this.purchased(this.item.text);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,5 +182,6 @@
|
||||
"incorrectResetPhrase": "Bitte tippe <%= magicWord %> in Großbuchstaben um deinen Account zurückzusetzen.",
|
||||
"translateHabitica": "Habitica übersetzen",
|
||||
"marketing3Lead1Title": "Android & iOS Apps",
|
||||
"marketing4Lead3Button": "Starte noch heute"
|
||||
"marketing4Lead3Button": "Starte noch heute",
|
||||
"emailBlockedRegistration": "Diese E-Mail ist für die Registrierung blockiert. Wenn du denkst, dass das ein Fehler ist, kontaktiere uns bitte unter admin@habitica.com."
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
"newsroom": "Newsroom",
|
||||
"adminBlockerTypeDescription": "<b>IP-Address</b> - Block access for a specific IP-Address\n\nClient - Block access for a client based on the \"x-client\" header.\n\nE-Mail - Blocks e-mails from being used for signup.",
|
||||
"adminBlockerAreaDescription": "A blocker can either apply to the full site, completely blocking any access. Or it can apply to purchases, which still allows the site to be accessed."
|
||||
}
|
||||
}
|
||||
@@ -183,5 +183,6 @@
|
||||
"incorrectResetPhrase": "Por favor, teclea <%= magicWord %> en mayúsculas para reiniciar tu cuenta.",
|
||||
"marketing3Lead1Title": "Aplicaciones para Android y iOS",
|
||||
"marketing4Lead3Button": "Empieza Hoy Mismo",
|
||||
"missingClientHeader": "Faltan los encabezados x-client."
|
||||
"missingClientHeader": "Faltan los encabezados x-client.",
|
||||
"emailBlockedRegistration": "Esta cuenta de E-Mail está bloqueada desde el registro. Si crees que es un error, por favor contacta con nosotros por medio de admin@habitica.com."
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"backgroundHauntedHouseNotes": "幽霊屋敷をそっと通りぬけましょう。",
|
||||
"backgroundPumpkinPatchText": "カボチャ畑",
|
||||
"backgroundPumpkinPatchNotes": "カボチャ畑でジャック・オ・ランタンを作りましょう。",
|
||||
"backgrounds112014": "セット6: 2014年11月リリース",
|
||||
"backgrounds112014": "セット6:2014年11月リリース",
|
||||
"backgroundHarvestFeastText": "収穫祭",
|
||||
"backgroundHarvestFeastNotes": "収穫祭を楽しみましょう。",
|
||||
"backgroundStarrySkiesText": "星空",
|
||||
@@ -131,7 +131,7 @@
|
||||
"backgroundSunsetOasisNotes": "夕焼けの沃地で休もう。",
|
||||
"backgrounds122015": "セット19:2015年12月リリース",
|
||||
"backgroundAlpineSlopesText": "雪の山",
|
||||
"backgroundAlpineSlopesNotes": "雪の山にスキーする。",
|
||||
"backgroundAlpineSlopesNotes": "雪の山でスキーをしよう。",
|
||||
"backgroundSnowySunriseText": "雪の日出",
|
||||
"backgroundSnowySunriseNotes": "雪の日の出を見よう。",
|
||||
"backgroundWinterTownText": "都市の冬",
|
||||
@@ -206,7 +206,7 @@
|
||||
"backgroundStrangeSewersNotes": "奇妙な下水道で滑りましょう。",
|
||||
"backgroundRainyCityText": "雨の街",
|
||||
"backgroundRainyCityNotes": "雨の街をピチャピチャ歩きましょう。",
|
||||
"backgrounds112016": "セット30: 2016年11月リリース",
|
||||
"backgrounds112016": "セット30:2016年11月リリース",
|
||||
"backgroundMidnightCloudsText": "闇夜の雲海",
|
||||
"backgroundMidnightCloudsNotes": "闇夜の雲海を飛びまわろう。",
|
||||
"backgroundStormyRooftopsText": "嵐の屋上",
|
||||
@@ -252,8 +252,8 @@
|
||||
"backgroundMagicBeanstalkNotes": "魔法の豆の木を登ろう。",
|
||||
"backgroundMeanderingCaveText": "曲がりくねった洞窟",
|
||||
"backgroundMeanderingCaveNotes": "曲がりくねった洞窟を探検しよう。",
|
||||
"backgroundMistiflyingCircusText": "幻想的なサーカス",
|
||||
"backgroundMistiflyingCircusNotes": "幻想的なサーカスで酔い騒ごう。",
|
||||
"backgroundMistiflyingCircusText": "マドワシティーのサーカス",
|
||||
"backgroundMistiflyingCircusNotes": "マドワシティーのサーカスで酔い騒ごう。",
|
||||
"backgrounds042017": "セット35: 2017年4月リリース",
|
||||
"backgroundBugCoveredLogText": "虫だらけの丸太",
|
||||
"backgroundBugCoveredLogNotes": "虫だらけの丸太を調査しよう。",
|
||||
@@ -264,9 +264,9 @@
|
||||
"backgrounds052017": "セット36:2017年5月リリース",
|
||||
"backgroundGuardianStatuesText": "ガーディアンの像",
|
||||
"backgroundGuardianStatuesNotes": "ガーディアンの像の前で寝ずの番をしよう。",
|
||||
"backgroundHabitCityStreetsText": "Habit シティーの街並み",
|
||||
"backgroundHabitCityStreetsNotes": "Habit シティーの街並みを探検しましょう。",
|
||||
"backgroundOnATreeBranchText": "木の枝で",
|
||||
"backgroundHabitCityStreetsText": "ハビットシティの街並み",
|
||||
"backgroundHabitCityStreetsNotes": "ハビットシティの街並みを探検しましょう。",
|
||||
"backgroundOnATreeBranchText": "木の枝の上",
|
||||
"backgroundOnATreeBranchNotes": "木の枝の上にとまろう。",
|
||||
"backgrounds062017": "セット37:2017年6月リリース",
|
||||
"backgroundBuriedTreasureText": "埋もれた宝",
|
||||
@@ -357,7 +357,7 @@
|
||||
"backgroundDocksNotes": "造船ドックの上で魚釣りをしましょう。",
|
||||
"backgroundRowboatText": "小舟",
|
||||
"backgroundRowboatNotes": "小舟の上で輪唱しましょう。",
|
||||
"backgroundPirateFlagText": "海賊のフラッグ",
|
||||
"backgroundPirateFlagText": "海賊の旗",
|
||||
"backgroundPirateFlagNotes": "見る者に恐怖を与える海賊旗を掲げましょう。",
|
||||
"backgrounds072018": "セット50:2018年7月リリース",
|
||||
"backgroundDarkDeepText": "暗い深海",
|
||||
@@ -451,7 +451,7 @@
|
||||
"backgroundUnderwaterVentsText": "海底の熱水噴出孔",
|
||||
"backgroundSeasideCliffsNotes": "そびえる断崖の美観とともに海辺に立ちましょう。",
|
||||
"backgroundTreehouseText": "ツリーハウス",
|
||||
"backgroundTreehouseNotes": "あなた達だけの樹木のアジト、あなた達専用のツリーハウスに集まって遊びましょう。",
|
||||
"backgroundTreehouseNotes": "林の中に隠れた、自分専用のツリーハウスで遊びましょう。",
|
||||
"backgroundGiantDandelionsNotes": "巨大なタンポポに囲まれてのんびり時を過ごしましょう。",
|
||||
"backgroundGiantDandelionsText": "巨大なタンポポ",
|
||||
"backgroundAmidAncientRuinsText": "古代遺跡の真ん中",
|
||||
@@ -516,8 +516,8 @@
|
||||
"backgroundRainyBarnyardText": "雨降る納屋の前庭",
|
||||
"backgroundHabitCityRooftopsNotes": "ハビットシティーの屋根と屋根の間を大胆に跳ぼう。",
|
||||
"backgroundHabitCityRooftopsText": "ハビットシティーの屋上",
|
||||
"backgroundHotAirBalloonNotes": "熱気球で景色の上まで舞い上がろう。",
|
||||
"backgroundHotAirBalloonText": "熱気球",
|
||||
"backgroundHotAirBalloonNotes": "気球に乗って空から景色を眺めよう。",
|
||||
"backgroundHotAirBalloonText": "気球",
|
||||
"backgrounds062020": "セット73:2020年6月リリース",
|
||||
"backgroundStrawberryPatchNotes": "いちご畑から新鮮な喜びを摘もう。",
|
||||
"backgroundStrawberryPatchText": "いちご畑",
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
"challenge": "チャレンジ",
|
||||
"challengeDetails": "チャレンジはプレイヤー同士で競争し、一連の関連したタスクを完了させることによって賞品を獲得するコミュニティのイベントです。",
|
||||
"brokenChaLink": "チャレンジのリンク切れ",
|
||||
"brokenTask": "チャレンジのリンク切れ: このタスクはもともとチャレンジの一部でしたが、チャレンジから削除されました。どうしますか?",
|
||||
"brokenTask": "チャレンジのリンク切れ:このタスクはもともとチャレンジの一部でしたが、チャレンジから削除されました。どうしますか?",
|
||||
"keepIt": "このまま残す",
|
||||
"removeIt": "消す",
|
||||
"brokenChallenge": "チャレンジのリンク切れ:このタスクはもともとチャレンジの一部でしたが、チャレンジ(もしくはグループ)が削除されました。残されたタスクはどうしますか?",
|
||||
"challengeCompleted": "チャレンジ終了です! <span class=\"badge\"><%- user %></span>が優勝しました! 残ったタスクはどうしますか?",
|
||||
"challengeCompleted": "チャレンジ終了です!<span class=\"badge\"><%- user %></span>が優勝しました!残ったタスクはどうしますか?",
|
||||
"unsubChallenge": "チャレンジのリンク切れ:このタスクはもともとチャレンジの一部でしたが、あなたがチャレンジ登録を取り消しました。残されたタスクはどうしますか?",
|
||||
"challenges": "チャレンジ",
|
||||
"endDate": "終了日",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"playerTiersDesc": "チャットで見られる色のついたユーザー名は、その人の貢献者段位を表わしています。段位が高いほど、その人がHabiticaのピクセルアート、コード、コミュニティなどに貢献していることを示します!",
|
||||
"playerTiersDesc": "チャットで見られる色のついたユーザー名は、その人の貢献者段位を表しています。段位が高いほど、その人がHabiticaのピクセルアート、コード、コミュニティなどに貢献していることを示します!",
|
||||
"tier1": "初段 (友人)",
|
||||
"tier2": "2段 (友人)",
|
||||
"tier3": "3段 (エリート)",
|
||||
@@ -10,7 +10,7 @@
|
||||
"tierModerator": "モデレーター",
|
||||
"tierStaff": "スタッフ",
|
||||
"tierNPC": "NPC",
|
||||
"friend": "友達",
|
||||
"friend": "友人",
|
||||
"elite": "エリート",
|
||||
"champion": "チャンピオン",
|
||||
"legendary": "伝説",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"lostAllHealth": "体力がなくなった!",
|
||||
"dontDespair": "がっかりしないで!",
|
||||
"deathPenaltyDetails": "レベル、ゴールド、装備の一部を失ってしまいました。しかし、がんばればすべてを取り戻せます! あなたなら、きっとやれる――幸あらんことを。",
|
||||
"deathPenaltyDetails": "レベル、ゴールド、装備の一部を失ってしまいました。しかし、努力すればすべて取り戻せます! あなたなら、きっとできる!頑張って!",
|
||||
"refillHealthTryAgain": "体力を復活させて、もう一度やってみよう",
|
||||
"dyingOftenTips": "よく体力がなくなってしまいますか? <a href='https://habitica.fandom.com/ja/wiki/死のしくみ#生き残るための戦略' target='_blank'>ここにヒントがあります! </a>",
|
||||
"losingHealthWarning": "気をつけて - 体力が減っています!",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"defaultHabit1Text": "生産的な仕事 (鉛筆をクリックして編集)",
|
||||
"defaultHabit2Text": "ジャンクフードを食べる(鉛筆をクリックして編集)",
|
||||
"defaultHabit3Text": "階段・エレベーター(鉛筆をクリックして編集)",
|
||||
"defaultHabit1Text": "生産的な仕事 (鉛筆をクリックして編集)",
|
||||
"defaultHabit2Text": "ジャンクフードを食べる(鉛筆をクリックして編集)",
|
||||
"defaultHabit3Text": "階段・エレベーター(鉛筆をクリックして編集)",
|
||||
"defaultHabit4Text": "Habiticaにタスクを追加しましょう",
|
||||
"defaultHabit4Notes": "習慣、日課、To Doのどれでも",
|
||||
"defaultTodo1Text": "Habiticaに参加する(チェックして完了しましょう!)",
|
||||
"defaultTodo1Text": "Habiticaに参加する(チェックして完了しましょう!)",
|
||||
"defaultTodoNotes": "このTo Doを完了にする、または編集、削除できます。",
|
||||
"defaultReward1Text": "15分間の休憩",
|
||||
"defaultReward2Text": "自分へのごほうび",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"greeting0": "こんにちは!",
|
||||
"greeting1": "ちょっとあいさつしてみただけ (^_^)",
|
||||
"greeting2": "(遠くから手をブンブン振る)",
|
||||
"greeting3": "そこのあなた!",
|
||||
"greeting3": "ヤッホー!",
|
||||
"greetingCardAchievementTitle": "Kawaii",
|
||||
"greetingCardAchievementText": "やあ!よう!こんにちは!<%= count %> 通のあいさつカードをやりとりしました。",
|
||||
"thankyouCard": "ありがとうのカード",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"sunsetFaqList10": "Spelers worden tevens aangemoedigd te mailen naar <a href='mailto:admin@habitica.com'>admin@habitica.com</a>met de vragen waarop ze geen antwoord konden vinden in bovenstaande links.",
|
||||
"sunsetFaqPara20": "Habitica's Gemeenschapsrichtlijnen zullen bijgewerkt worden op het moment dat de service Herberg en Gilden ophouden te bestaan. Ze zullen de klemtoon leggen op gemeenschapsregels die in relatie staan tot het spelersprofiel, Uitdagingen en berichten in private ruimtes. Onze Gebruikersvoorwaarden waren steeds van toepassing op zowel publieke als private ruimtes, en vereisen niet meteen een update hierdoor.",
|
||||
"contentQuestion0": "Wat veranderd er?",
|
||||
"commonQuestions": "Veelvoorkomende vragen",
|
||||
"commonQuestions": "Veelvoorkomende Vragen",
|
||||
"faqQuestion25": "Wat zijn de verschillende type taken?",
|
||||
"faqQuestion40": "Wat zijn Edelstenen en hoe kan ik ze krijgen?",
|
||||
"faqQuestion48": "Kan ik Habitica spelen met anderen?",
|
||||
@@ -90,5 +90,13 @@
|
||||
"faqQuestion43": "Hoe kan ik Quests starten?",
|
||||
"webFaqAnswer43": "Om een Quest te starten, moet je lid zijn van een groep. Groepen kunnen solo-avonturen zijn waarin je Quests alleen aangaat, of je kunt andere Habitica-spelers uitnodigen om Quests sneller aan te pakken!\n\nKies een Quest-scroll uit je inventaris door op de knop “Quest starten” te klikken in je groep. Voltooi je taken zoals je normaal doet om voortgang te boeken in de Quest! Je bouwt schade op tegen een monster als je een Baas-Quest doet, of je maakt kans om voorwerpen te vinden als je een Verzamel-Quest doet. Alle opgebouwde voortgang wordt de volgende dag toegepast.\n\nWanneer je genoeg schade hebt aangericht of alle voorwerpen hebt verzameld, is de Quest voltooid en ontvang je je beloningen!",
|
||||
"faqQuestion44": "Hoe kan ik Challenge-taken verwijderen?",
|
||||
"webFaqAnswer44": "Je moet de Challenge verlaten of wachten tot de Challenge wordt afgesloten om de bijbehorende taken te kunnen verwijderen. Een rood megafoonpictogram betekent dat de Challenge is afgesloten, terwijl een grijze megafoon betekent dat de Challenge nog loopt.\n\nOm Challenge-taken te verwijderen in de Android-app:\n1. Tik op een taak die bij de Challenge hoort.\n2. Tik rechtsboven op het scherm op “Verwijderen”.\n3. Kies om de Challenge-taken van je takenlijst te verwijderen.\n\nOm Challenge-taken te verwijderen in de iOS-app:\n1. Zoek de Challenge-taak die je wilt verwijderen en kijk naar het megafoonpictogram.\n2. Als het megafoonpictogram rood is, tik op de taak en selecteer onderaan “Verwijderen”.\n3. Als het megafoonpictogram grijs is, moet je de Challenge opzoeken en deze verlaten om de taak te verwijderen.\n\nOm Challenge-taken te verwijderen op de website:\n1. Zoek de Challenge-taak die je wilt verwijderen en kijk naar het megafoonpictogram.\n2. Als het megafoonpictogram rood is, klik erop en kies om de taken van je takenlijst te verwijderen.\n3. Als het megafoonpictogram grijs is, moet je de Challenge opzoeken en deze verlaten om de taak te verwijderen."
|
||||
"webFaqAnswer44": "Je moet de Challenge verlaten of wachten tot de Challenge wordt afgesloten om de bijbehorende taken te kunnen verwijderen. Een rood megafoonpictogram betekent dat de Challenge is afgesloten, terwijl een grijze megafoon betekent dat de Challenge nog loopt.\n\nOm Challenge-taken te verwijderen in de Android-app:\n1. Tik op een taak die bij de Challenge hoort.\n2. Tik rechtsboven op het scherm op “Verwijderen”.\n3. Kies om de Challenge-taken van je takenlijst te verwijderen.\n\nOm Challenge-taken te verwijderen in de iOS-app:\n1. Zoek de Challenge-taak die je wilt verwijderen en kijk naar het megafoonpictogram.\n2. Als het megafoonpictogram rood is, tik op de taak en selecteer onderaan “Verwijderen”.\n3. Als het megafoonpictogram grijs is, moet je de Challenge opzoeken en deze verlaten om de taak te verwijderen.\n\nOm Challenge-taken te verwijderen op de website:\n1. Zoek de Challenge-taak die je wilt verwijderen en kijk naar het megafoonpictogram.\n2. Als het megafoonpictogram rood is, klik erop en kies om de taken van je takenlijst te verwijderen.\n3. Als het megafoonpictogram grijs is, moet je de Challenge opzoeken en deze verlaten om de taak te verwijderen.",
|
||||
"faqQuestion45": "Mijn personage is veranderd in een sneeuwpop, zeester, bloem of geest. Hoe kan ik terug veranderen?",
|
||||
"webFaqAnswer45": "Één van jouw groepsleden heeft een Seizoens Winkel transformatie voorwerp op jou gebruikt! Jouw personage zal de volgende dag weer normaal worden. Als je de transformatie eerder wilt verwijderen, kan je een tegengif (Zout, Zand, Bloemblaadjes-vrij of Ondoorzichtig drankje) kopen bij Beloningen.",
|
||||
"faqQuestion46": "Hoe meld ik een bug?",
|
||||
"webFaqAnswer46": "Als je denkt dat je een bug bent tegengekomen, laat het ons dan weten!\n\nOm een bug in de mobiele apps te melden:\n *In het menu, selecteer Ondersteuning en tik op ''Hulp krijgen'' en scroll omlaag naar ''Meld een bug''\n\nOm een bug op de website te melden:\n *In het menu, selecteer ''Meld een bug''",
|
||||
"faqQuestion47": "Kan ik gegevens zien om te bekijken hoe goed ik mijn taken en gewoontes heb gedaan?",
|
||||
"webFaqAnswer47": "Op dit moment heeft Habitica geen visuele weergave van je taak gegevens in de loop van de tijd. Echter kan je op de Habitica website je taak gegevens exporteren via het tabblad ''Site Gegevens'' in Instellingen.",
|
||||
"webFaqAnswer48": "Ja, met Groepen! Je kunt je eigen Groep starten of je aansluiten bij een bestaande Groep. Samen spelen met andere Habitica spelers is een geweldige manier om Queestes aan te gaan, versterking te ontvangen door de vaardigheden van Groepsleden en je motivatie een boost te geven door extra verantwoordelijkheid.",
|
||||
"faqQuestion49": "Hoe vind ik een Groep als ik niet bij een Groep ben aangesloten?"
|
||||
}
|
||||
|
||||
@@ -2601,5 +2601,48 @@
|
||||
"armorSpecialSummer2022WarriorNotes": "Maak je klaar voor een waterige strijd terwijl je jezelf omringt met deze wervelende, spiralerende kolom van lucht en mist. Verhoogt Constitutie met <%= con %>. Beperkte Editie 2022 Zomeruitrusting.",
|
||||
"armorSpecialSummer2022MageNotes": "Wanneer u dit pantser draagt, glijdt u gemakkelijk door uw werk zoals de mantarog door water glijdt. Verhoogt Intelligentie met <%= int %>. Beperkte Editie 2022 Zomeruitrusting.",
|
||||
"gearItemsCompleted": "Je bezit alle <%= klass %> uitrusting! Nieuwe uitrustingen worden uitgebracht tijdens de seizoensgebonden Gala's.",
|
||||
"moreArmoireGearAvailable": "Tot dan kan je <%= armoireCount %> stukken uitrusting in de Betoverde Kast vinden!"
|
||||
"moreArmoireGearAvailable": "Tot dan kan je <%= armoireCount %> stukken uitrusting in de Betoverde Kast vinden!",
|
||||
"headAccessoryMystery202307Notes": "Deze machtige Kroon roept cyclonen en stormachtig weer op! Verleent geen voordeel. Juli 2023 Item voor Abonnees.",
|
||||
"headAccessoryMystery202505Text": "Hoogvliegende zwaluwstaartantennes",
|
||||
"headAccessoryMystery202410Text": "Snoepmaïsoorjes",
|
||||
"eyewearMystery202312Text": "Winterse Blauwe Ogen",
|
||||
"headAccessoryMystery202212Notes": "Versterk je warmte en vriendschap tot nieuwe hoogten met deze sierlijke gouden tiara. Verleent geen voordeel. December 2022 Item voor Abonnees.",
|
||||
"headAccessoryMystery202310Text": "Kroon van spookachtige lichten",
|
||||
"eyewearArmoireRoseColoredGlassesText": "Roze bril",
|
||||
"headAccessoryMystery202305Text": "Eventide-hoorns",
|
||||
"headAccessoryMystery202405Text": "Vergulde drakenhoorns",
|
||||
"headAccessoryMystery202302Notes": "Het purr-fecte accessoire om je betoverende glimlach te accentueren. Verleent geen voordeel. Februari 2023 Item voor Abonnees.",
|
||||
"eyewearMystery202503Notes": "Deze doordringende blik zal elke vechter die je durft uit te dagen met angst vervullen! Geeft geen voordeel. Maart 2025 voorwerp voor Abonnees.",
|
||||
"eyewearMystery202503Text": "Jade Juggernaut Ogen",
|
||||
"eyewearMystery202406Text": "Spookpiratenmasker",
|
||||
"headAccessoryMystery202212Text": "Gletsjer Tiara",
|
||||
"headAccessoryMystery202205Text": "Schemervleugelige drakenhoorns",
|
||||
"headAccessoryMystery202203Text": "Onverschrokken Libelle Kroon",
|
||||
"headAccessoryMystery202203Notes": "Heb je een extra snelheidsboost nodig? De kleine decoratieve vleugeltjes op deze Kroon zijn krachtiger dan ze lijken! Verleent geen voordeel. Maart 2022 Item voor Abonnees.",
|
||||
"headAccessoryMystery202307Text": "Kraken's Kroon",
|
||||
"eyewearMystery202201Text": "Middernachtelijk feestvierdersmasker",
|
||||
"eyewearArmoireComedyMaskText": "Komedie Masker",
|
||||
"eyewearArmoireTragedyMaskText": "Tragedie Masker",
|
||||
"eyewearMystery202108Text": "Vurige Ogen",
|
||||
"eyewearMystery202208Text": "Sprankelende Ogen",
|
||||
"eyewearMystery202303Text": "Dromerige Ogen",
|
||||
"eyewearSpecialAnniversaryText": "Habitica Helden Masker",
|
||||
"headAccessorySpecialHeroicCircletText": "Heroïsche Kroon",
|
||||
"bodyArmoireKarateOrangeBeltText": "Oranje band",
|
||||
"headAccessoryMystery202305Notes": "Deze hoorns gloeien door het weerkaatste maanlicht. Verleent geen voordeel. Mei 2023 Item voor Abonnees.",
|
||||
"headAccessoryMystery202205Notes": "Deze schitterende hoorns zijn zo helder als een zonsondergang in de woestijn. Verleent geen voordeel. Mei 2022 Item voor Abonnees.",
|
||||
"eyewearMystery202202Text": "Turquoise Ogen met Blush",
|
||||
"eyewearMystery202204BText": "Virtueel Gezicht",
|
||||
"headAccessoryMystery202302Text": "Bedrieglijke tabbyoren",
|
||||
"bodyArmoireKarateGreenBeltText": "Groene band",
|
||||
"bodyArmoireKaratePurpleBeltText": "Paarse band",
|
||||
"bodyArmoireKarateBlueBeltText": "Blauwe band",
|
||||
"bodyArmoireKarateBrownBeltText": "Bruine band",
|
||||
"bodyArmoireKarateRedBeltText": "Rode band",
|
||||
"headAccessorySpecialHeroicCircletNotes": "Zwaar is het hoofd dat de kroon draagt, maar deze Kroon is zo licht als je genereuze geest. Verhoogt alle statistieken met <%= attrs %>.",
|
||||
"bodyArmoireKarateBlackBeltText": "Zwarte band",
|
||||
"eyewearArmoireJewelersEyeLoupeText": "Juweliersloep",
|
||||
"eyewearArmoireJewelersEyeLoupeNotes": "Deze oogloep vergroot wat je aan het doen bent, zodat je absoluut elk detail kunt zien. Verhoogt de waarneming met <%= per %>. Betoverd Kabinet: juweliersset (item 2 van 4).",
|
||||
"eyewearMystery202308Text": "Slaperige Ogen",
|
||||
"headAccessoryMystery202309Text": "Gigantische antennes van de kometenmot"
|
||||
}
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
"showTour": "Rondleiding starten",
|
||||
"showBailey": "Bailey laten zien",
|
||||
"showBaileyPop": "Breng Bailey de Stadsomroeper uit haar schuilplaats zodat je nieuws uit het verleden kunt nalezen.",
|
||||
"fixVal": "Personagewaarden bijstellen",
|
||||
"fixValPop": "Handmatig veranderen van waarden zoals gezondheidspunten, niveau en goud.",
|
||||
"invalidLevel": "Ongeldige waarde: Niveau moet 1 of groter zijn.",
|
||||
"fixVal": "Personage waarden bijstellen",
|
||||
"fixValPop": "Handmatig veranderen van waarden zoals Gezondheidspunten, Niveau en Goud.",
|
||||
"invalidLevel": "Ongeldige waarde: Niveau moet 1 of hoger zijn.",
|
||||
"enableClass": "Klassensysteem aanzetten",
|
||||
"enableClassPop": "Aanvankelijk had je geen klasse gekozen. Wil je er nu een kiezen?",
|
||||
"resetAccPop": "Opnieuw starten, en alle niveaus, goud, uitrusting, geschiedenis en taken verliezen.",
|
||||
@@ -195,12 +195,12 @@
|
||||
"passwordSuccess": "Wachtwoord succesvol aangepast",
|
||||
"transaction_admin_update_balance": "Door beheerder gegeven",
|
||||
"giftSubscriptionRateText": "<strong>$<%= price %> USD</strong> voor <strong><%= months %> maanden</strong>",
|
||||
"generalSettings": "Algemene instellingen",
|
||||
"taskSettings": "Taak instellingen",
|
||||
"generalSettings": "Algemene Instellingen",
|
||||
"taskSettings": "Taak Instellingen",
|
||||
"confirmCancelChanges": "Weet je het zeker? Je wijzigingen worden niet opgeslagen.",
|
||||
"loginMethods": "Inlog manieren",
|
||||
"loginMethods": "Inlog Methodes",
|
||||
"character": "Karakter",
|
||||
"siteData": "Website informatie",
|
||||
"siteData": "Website Informatie",
|
||||
"account": "Account",
|
||||
"siteLanguage": "Websitetaal"
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"userData": "Dane użytkownika",
|
||||
"exportUserData": "Eksportuj dane użytkownika:",
|
||||
"export": "Eksport",
|
||||
"xml": "(XML)",
|
||||
"xml": "XML",
|
||||
"json": "JSON",
|
||||
"customDayStart": "Własny początek dnia",
|
||||
"sureChangeCustomDayStartTime": "Jesteś pewien, że chcesz zmienić Czas Początku Dnia? Twoje Codzienne będą się resetować, kiedy pierwszy raz włączysz Habitikę po <%= time %>. Upewnij się, że wykonałeś wszystkie swoje Codzienne przed tym czasem!",
|
||||
@@ -97,9 +97,9 @@
|
||||
"unsubscribedSuccessfully": "Poprawnie zrezygnowano z subskrypcji!",
|
||||
"unsubscribedTextUsers": "Poprawnie zrezygnowałeś z subskrypcji wszystkich e-maili od Habitiki. W opcji <a href=\"/user/settings/notifications\">Ustawienia > > Powiadomienia</a> możesz włączyć przesyłanie wybranych powiadomień, które chcesz otrzymywać (wymaga zalogowania).",
|
||||
"unsubscribedTextOthers": "Nie otrzymasz więcej żadnych e-maili od Habitica.",
|
||||
"unsubscribeAllEmails": "Zaznacz by zrezygnować z subskrypcji e-maili",
|
||||
"unsubscribeAllEmails": "Zrezygnuj z subskrypcji e-maili",
|
||||
"unsubscribeAllEmailsText": "Przez zaznaczenie tego pola poświadczam, że rozumiem że po zrezygnowaniu z subskrypcji wszystkich e-maili, Habitica nie będzie w stanie powiadamiać mnie przez e-mail o ważnych zmianach na stronie lub na moim koncie.",
|
||||
"unsubscribeAllPush": "Zaznacz aby zrezygnować z subskrypcji wszystkich powiadomień",
|
||||
"unsubscribeAllPush": "Zrezygnuj z subskrypcji wszystkich powiadomień",
|
||||
"correctlyUnsubscribedEmailType": "Poprawnie zrezygnowano z subskrypcji e-maili \"<%= emailType %>\".",
|
||||
"subscriptionRateText": "Okresowa opłata <strong>$<%= price %> USD</strong> co <strong><%= months %> miesięcy</strong>",
|
||||
"benefits": "Korzyści",
|
||||
@@ -235,5 +235,6 @@
|
||||
"developerMode": "Tryb Dewelopera",
|
||||
"developerModeTooltip": "Habitica zapewnia tryb dewelopera w celu umożliwienia korzystania z dodatkowych funkcji współpracujących z API Habitica.",
|
||||
"resetDetail2": "Zachowasz swoją obecną klasę, osiągnięcia oraz swoje chowańce i wierzchowce.",
|
||||
"resetDetail3": "Wszystkie Twoje zadania (poza zadaniami z wyzwań) zostaną trwale usunięte, a Ty utracisz wszystkie dane dotyczące ich historii."
|
||||
"resetDetail3": "Wszystkie Twoje zadania (poza zadaniami z wyzwań) zostaną trwale usunięte, a Ty utracisz wszystkie dane dotyczące ich historii.",
|
||||
"contentRelease": "Publikacja treści + Wydarzenia"
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
"tavernCommunityGuidelinesPlaceholder": "Dostane bir uyarı: bu tüm yaş gruplarına açık bir sohbettir, bu yüzden mesajlarının içeriğini ve üslubunu uygun sınırlar içerisinde tutmaya özen göster! Aklına takılan bir şeyler olursa aşağıdan Topluluk Kuralları'na göz at.",
|
||||
"lastUpdated": "Son güncelleme:",
|
||||
"commGuideHeadingWelcome": "Habitica'ya hoş geldin!",
|
||||
"commGuidePara001": "Selamlar, maceracı! Habitica'ya hoş geldin, burası üretkenlik, sağlıklı yaşam ve zaman zaman deli gibi saldıran gryphon'ların diyarı.",
|
||||
"commGuidePara002": "Herkesi güvende, mutlu ve üretken tutmak için, Zorluklar, oyuncu profilleri, Parti sohbeti ve özel mesajlar için bazı yönergelerimiz bulunmaktadır. Bu Yönergeleri, olabildiğince dostça ve okunması kolay olacak şekilde dikkatlice hazırladık. Lütfen, diğer oyuncularla etkileşime başlamadan önce bunları okuma zaman ayırın.",
|
||||
"commGuidePara003": "Bu kurallar zaman zaman uyarlanabilir. Burada listelenen topluluk kurallarında önemli değişiklikler olduğunda, bunu Bailey duyurusunda ve/veya sosyal medya hesaplarımızda duyacaksınız!",
|
||||
"commGuidePara001": "Merhaba, maceracı! Üretkenliğin, sağlıklı yaşamın ve nadiren de olsa öfkeli griffonların diyarı Habitica'ya hoş geldin.",
|
||||
"commGuidePara002": "herkesi güvende, mutlu ve üretken olmasına yardım etmek amacıyla; Mücadeleler, Oyuncu Profilleri, Parti Sohbeti ve gizli mesajlar için bazı kurallarımız var. Bu kuralları içten olmaları ve kolaylıkla okunabilmeleri için özenerek hazırladık. Lütfen sohbet etmeye başlamadan önce kuralları okumaya vakit ayır.",
|
||||
"commGuidePara003": "Bu kurallar arada sırada uyarlanabilir. Burada listelenen topluluk kurallarında önemli değişiklikler olduğunda, bunu Bailey duyurusunda ve/veya sosyal medya hesaplarımızda duyacaksınız!",
|
||||
"commGuideHeadingInteractions": "Habitica'daki Etkileşimler",
|
||||
"commGuidePara015": "Habitica, diğer oyuncularla etkileşimde bulunabileceğiniz birkaç alana sahiptir. Bunlar, özel sohbet bağlamları (özel mesajlar ve Parti sohbeti) ile Looking for Party özelliği ve Zorluklar gibi alanlardır.",
|
||||
"commGuidePara016": "Habitica'nın sosyal bileşenlerinde gezinirken, herkesin güvende ve mutlu olmasını sağlamak için bazı genel kurallar vardır.",
|
||||
|
||||
@@ -183,5 +183,6 @@
|
||||
"incorrectResetPhrase": "请用大写字母输入 <%= magicWord %> 以重置你的账号。",
|
||||
"marketing3Lead1Title": "Android和iOS上的应用程序",
|
||||
"marketing4Lead3Button": "今日即刻启程",
|
||||
"missingClientHeader": "缺少 x-client 请求头。"
|
||||
"missingClientHeader": "缺少 x-client 请求头。",
|
||||
"emailBlockedRegistration": "该邮箱已被限制注册。若您认为此系误判,请发送邮件至 admin@habitica.com 联系我们。"
|
||||
}
|
||||
|
||||
@@ -88,5 +88,14 @@
|
||||
"webFaqAnswer42": "激勵自己去完成各種挑戰任務的最好的方法之一就是——去加入一個隊伍!和其他的Habitica玩家一起接收任務,贏得寵物和裝備,收穫隊伍成員技能加成,激發你的動力。\n\n另一種增加動力的方法是加入一個挑戰。挑戰會自動添加在您的任務和目標欄!挑戰也會添加一些競賽元素,可以給您動力去贏取寶石。這些挑戰既有Habitica官方創建的,也有其他玩家創建的。",
|
||||
"webFaqAnswer43": "如果想開啟副本,你需要加入一個隊伍。隊伍可以獨自展開冒險,也可以邀請其他的Habitica玩家一起組隊!\n\n點擊“開啟副本”並從你的物品中選擇一個副本捲軸。像平常一樣完成你的任務就能作用於副本!如果你開啟的是打Boss的副本就能給怪物造成傷害,如果開啟的是收集副本就能找到相應的物品。所有打副本的結果將在第二天結算。\n\n當你給予boss足夠的傷害或者收集到足夠的物品後,就能完成副本攻略並收穫你的報酬!",
|
||||
"webFaqAnswer44": "你需要離開挑戰或者等待挑戰被關閉才能刪除關聯的任務。紅色的喇叭圖標說明該挑戰已關閉,灰色的喇叭圖標說明挑戰還在進行中。\n\n在**Android**app中刪除挑戰任務需要:\n 1. 點擊任務所屬於的挑戰。\n 2. 點擊屏幕右上角的“刪除”按鈕。\n 3. 從任務欄中選擇並移除挑戰任務。\n\n在**iOS**app中刪除挑戰任務需要:\n 1. 通過喇叭圖標找到你希望刪除的挑戰任務。\n 2. 如果喇叭圖標是紅色的,點擊任務並選擇“刪除”按鈕\n 3. 如果喇叭圖標是灰色的,你需要找到該挑戰並離開挑戰來移除任務。\n\n在**網頁端**刪除挑戰任務需要:\n 1. 通過喇叭圖標找到你希望刪除的挑戰任務。\n 2. 如果喇叭圖標是紅色的,點擊並從你得任務欄中移除該任務。\n 3. 如果喇叭圖標是灰色的,你需要找到該挑戰並離開挑戰來移除任務。",
|
||||
"webFaqAnswer45": "可以對其中一名隊伍成員使用季節限定的變身道具!你的形象將在次日從變身恢復。你也可以購買解毒劑(鹽、沙子、無花瓣或不透明藥水)來更快地移除變身形象。"
|
||||
"webFaqAnswer45": "可以對其中一名隊伍成員使用季節限定的變身道具!你的形象將在次日從變身恢復。你也可以購買解毒劑(鹽、沙子、無花瓣或不透明藥水)來更快地移除變身形象。",
|
||||
"webFaqAnswer46": "如果你遇到了報錯,請讓我們知道!\n\n在移動端報告報錯:\n * 從菜單進入,選擇支持並點擊“尋求幫助”,滾動菜單到“報告錯誤”\n\n在網頁端報告報錯:\n * 從幫助菜單進入,選擇“報告錯誤”",
|
||||
"faqQuestion47": "我能查看有關我的任務和習慣完成情況的數據嗎?",
|
||||
"webFaqAnswer47": "目前,Habitica沒有展示你的任務數據進度的功能,在Habitica的網頁端,你可以通過設置中的網站數據按鈕導出你的任務數據。",
|
||||
"webFaqAnswer48": "是的,和隊伍一起!你可以建立自己的隊伍或者加入一個隊伍。和其他Habitica玩家一起參與副本,通過隊員技能得到增益加成來增強你打卡的動力。",
|
||||
"faqQuestion49": "我該在哪裡找到隊伍去加入?",
|
||||
"webFaqAnswer49": "如果你想要別人一起體驗Habitica但不認識其他玩家,搜索一個隊伍是最好的選擇!如果你已經知道某個已經在隊伍裡的玩家,你可以分享自己的@用戶名來獲取邀請。同樣,你也能創建一個新的隊伍,通過@用戶名或電郵地址來邀請別人。\n\n創建或搜索隊伍需要在導航欄選擇“隊伍”,然後選擇對應的選項。",
|
||||
"faqQuestion50": "該怎麼搜索隊伍?",
|
||||
"webFaqAnswer50": "在選擇“尋找隊伍”之後,你將被添加到想要加入隊伍的玩家清單中。隊長能夠看到這個清單並發送邀請。當你收到邀請,你就能在通知欄中選擇想要加入的隊伍!\n\n你也許會收到來自不同隊伍的多個邀請。但是,你只能成為其中一個隊伍的隊員。",
|
||||
"parties": "隊伍"
|
||||
}
|
||||
|
||||
@@ -151,9 +151,7 @@ api.loginSocial = {
|
||||
// Called by apple for web authentication.
|
||||
api.redirectApple = {
|
||||
method: 'POST',
|
||||
middlewares: [authWithHeaders({
|
||||
optional: true,
|
||||
})],
|
||||
middlewares: [],
|
||||
url: '/user/auth/apple',
|
||||
async handler (req, res) {
|
||||
if (req.body.id_token) {
|
||||
|
||||
@@ -187,5 +187,4 @@ api.deleteBlocker = {
|
||||
res.respond(200, savedBlocker);
|
||||
},
|
||||
};
|
||||
|
||||
export default api;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import nconf from 'nconf';
|
||||
import {
|
||||
Forbidden,
|
||||
} from '../libs/errors';
|
||||
@@ -9,7 +10,19 @@ import { model as Blocker } from '../models/blocker';
|
||||
// NOTE: it's meant to be used behind a proxy (for example a load balancer)
|
||||
// that uses the 'x-forwarded-for' header to forward the original IP addresses.
|
||||
|
||||
const blockedIps = [];
|
||||
// A list of comma separated IPs to block
|
||||
// It works fine as long as the list is short,
|
||||
// if the list becomes too long for an env variable we'll switch to Redis.
|
||||
const BLOCKED_IPS_RAW = nconf.get('BLOCKED_IPS');
|
||||
|
||||
const blockedIps = BLOCKED_IPS_RAW
|
||||
? BLOCKED_IPS_RAW
|
||||
.trim()
|
||||
.split(',')
|
||||
.map(blockedIp => blockedIp.trim())
|
||||
.filter(blockedIp => Boolean(blockedIp))
|
||||
: [];
|
||||
|
||||
const blockedClients = [];
|
||||
|
||||
Blocker.watchBlockers({
|
||||
@@ -53,4 +66,4 @@ export default function ipBlocker (req, res, next) {
|
||||
}
|
||||
|
||||
return next();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user