();
+ instant(key: string): string {
+ return this.knownKeys.has(key) ? `TR(${key})` : key;
+ }
+}
+
+describe('LevelLabelPipe', () => {
+ let pipe: LevelLabelPipe;
+ let i18n: FakeI18n;
+
+ beforeEach(() => {
+ TestBed.resetTestingModule();
+ i18n = new FakeI18n();
+ // Seed with every key the canonical 19 levels rely on, plus ANY + CUSTOM.
+ for (let v = 1; v <= 19; v++) i18n.knownKeys.add(`RAIDS.LEVEL.RAID_${v}`);
+ i18n.knownKeys.add('RAIDS.LEVEL.ANY');
+ i18n.knownKeys.add('RAIDS.LEVEL.CUSTOM');
+ TestBed.configureTestingModule({
+ providers: [{ provide: I18nService, useValue: i18n }, LevelLabelPipe],
+ });
+ pipe = TestBed.inject(LevelLabelPipe);
+ });
+
+ it('translates every known level via its RAID_N key', () => {
+ for (let v = 1; v <= 19; v++) {
+ expect(pipe.transform(v)).toBe(`TR(RAIDS.LEVEL.RAID_${v})`);
+ }
+ });
+
+ it('translates 9000 as ANY', () => {
+ expect(pipe.transform(9000)).toBe('TR(RAIDS.LEVEL.ANY)');
+ });
+
+ it('formats custom levels with the CUSTOM key prefix + integer', () => {
+ expect(pipe.transform(42)).toBe('TR(RAIDS.LEVEL.CUSTOM) 42');
+ expect(pipe.transform(20)).toBe('TR(RAIDS.LEVEL.CUSTOM) 20');
+ });
+
+ it('falls back to the CUSTOM label when a known-level key is missing from i18n', () => {
+ // Simulate the future case where the canonical list grows to 20 but the
+ // locale file hasn't been updated yet — the model would surface RAID_20
+ // as a labelKey but the i18n returns the bare key.
+ i18n.knownKeys.delete('RAIDS.LEVEL.RAID_7');
+ expect(pipe.transform(7)).toBe('TR(RAIDS.LEVEL.CUSTOM) 7');
+ });
+});
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/pipes/level-label.pipe.ts b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/pipes/level-label.pipe.ts
new file mode 100644
index 00000000..12f46325
--- /dev/null
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/pipes/level-label.pipe.ts
@@ -0,0 +1,40 @@
+import { inject, Pipe, PipeTransform } from '@angular/core';
+
+import { resolveLevel } from '../../core/models/raid-level.models';
+import { I18nService } from '../../core/services/i18n.service';
+
+/**
+ * Resolve a stored raid/egg level integer to its display label.
+ *
+ * - Levels 1-19 → masterfile names ("1 Star", "Mega Legendary", "Elite", …)
+ * - 9000 (wildcard sentinel) → "Any"
+ * - Anything else → "Level {n}" (custom)
+ *
+ * Graceful degradation: if a translation key is missing for the level (e.g. a
+ * future raid_20 ships before the i18n files are updated), ngx-translate
+ * returns the literal key string. We detect that case and fall back to the
+ * generic "Level {n}" custom format so users see a number rather than
+ * "RAIDS.LEVEL.RAID_20".
+ */
+@Pipe({
+ name: 'levelLabel',
+ standalone: true,
+})
+export class LevelLabelPipe implements PipeTransform {
+ private readonly i18n = inject(I18nService);
+
+ transform(value: number): string {
+ const opt = resolveLevel(value);
+ if (opt.category === 'custom') {
+ return this.i18n.instant(opt.labelKey) + ' ' + opt.value;
+ }
+ const translated = this.i18n.instant(opt.labelKey);
+ // ngx-translate returns the key unchanged when the key isn't found —
+ // detect that and fall back to a useful generic label rather than leaking
+ // the raw translation key into the UI.
+ if (translated === opt.labelKey) {
+ return this.i18n.instant('RAIDS.LEVEL.CUSTOM') + ' ' + value;
+ }
+ return translated;
+ }
+}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/utils/clean-flags.spec.ts b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/utils/clean-flags.spec.ts
new file mode 100644
index 00000000..f6deaefc
--- /dev/null
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/utils/clean-flags.spec.ts
@@ -0,0 +1,80 @@
+import { ALL, AUTO_DELETE, compose, EDIT, isAutoDelete, isEdit, isSummary, preserve, SUMMARY } from './clean-flags';
+
+describe('clean-flags', () => {
+ it('constants match the PoracleNG bitmask', () => {
+ expect(AUTO_DELETE).toBe(1);
+ expect(EDIT).toBe(2);
+ expect(SUMMARY).toBe(4);
+ expect(ALL).toBe(7);
+ });
+
+ describe('isAutoDelete', () => {
+ it.each([
+ [0, false],
+ [1, true],
+ [2, false],
+ [3, true],
+ [5, true],
+ [7, true],
+ ])('isAutoDelete(%i) === %s', (clean, expected) => {
+ expect(isAutoDelete(clean)).toBe(expected);
+ });
+ });
+
+ describe('isEdit', () => {
+ it.each([
+ [0, false],
+ [1, false],
+ [2, true],
+ [3, true],
+ [6, true],
+ [7, true],
+ ])('isEdit(%i) === %s', (clean, expected) => {
+ expect(isEdit(clean)).toBe(expected);
+ });
+ });
+
+ describe('isSummary', () => {
+ it.each([
+ [0, false],
+ [1, false],
+ [4, true],
+ [5, true],
+ [6, true],
+ [7, true],
+ ])('isSummary(%i) === %s', (clean, expected) => {
+ expect(isSummary(clean)).toBe(expected);
+ });
+ });
+
+ describe('compose', () => {
+ it.each([
+ [false, false, false, 0],
+ [true, false, false, 1],
+ [false, true, false, 2],
+ [true, true, false, 3],
+ [false, false, true, 4],
+ [true, false, true, 5],
+ [true, true, true, 7],
+ ])('compose(%s, %s, %s) === %i', (autoDelete, edit, summary, expected) => {
+ expect(compose(autoDelete, edit, summary)).toBe(expected);
+ });
+ });
+
+ describe('preserve', () => {
+ it.each([
+ // Clearing auto-delete on clean=5 (auto-delete + summary) leaves summary intact.
+ [5, 1, 0, 4],
+ // Setting auto-delete on clean=4 (summary only) yields 5.
+ [4, 1, 1, 5],
+ // Replacing only the edit bit leaves auto-delete alone.
+ [1, 2, 2, 3],
+ // Changes outside the mask are ignored.
+ [0, 1, 4, 0],
+ // No-op when the mask is empty.
+ [5, 0, 7, 5],
+ ])('preserve(%i, %i, %i) === %i', (existing, mask, changes, expected) => {
+ expect(preserve(existing, mask, changes)).toBe(expected);
+ });
+ });
+});
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/utils/clean-flags.ts b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/utils/clean-flags.ts
new file mode 100644
index 00000000..615727b9
--- /dev/null
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/app/shared/utils/clean-flags.ts
@@ -0,0 +1,47 @@
+/**
+ * Helpers for the PoracleNG alarm `clean` column, which is a 3-bit bitmask:
+ * bit 1 = auto-delete, bit 2 = edit-in-place, bit 4 = summary. Mirrors PoracleNG's
+ * db.IsClean / db.IsEdit / db.IsSummary (processor/internal/db/clean.go) and the
+ * backend CleanFlags helper, so reads and writes preserve bits the web UI does not surface.
+ */
+
+/** Auto-delete bit (bit 1). PoracleNG db.IsClean. */
+export const AUTO_DELETE = 1;
+
+/** Edit-in-place bit (bit 2). PoracleNG db.IsEdit. */
+export const EDIT = 2;
+
+/** Summary bit (bit 4). PoracleNG db.IsSummary. */
+export const SUMMARY = 4;
+
+/** All known bits combined (7). */
+export const ALL = AUTO_DELETE | EDIT | SUMMARY;
+
+/** True when the auto-delete bit (bit 1) is set. */
+export function isAutoDelete(clean: number): boolean {
+ return (clean & AUTO_DELETE) !== 0;
+}
+
+/** True when the edit-in-place bit (bit 2) is set. */
+export function isEdit(clean: number): boolean {
+ return (clean & EDIT) !== 0;
+}
+
+/** True when the summary bit (bit 4) is set. */
+export function isSummary(clean: number): boolean {
+ return (clean & SUMMARY) !== 0;
+}
+
+/** Composes a clean bitmask from the three known flags. */
+export function compose(autoDelete: boolean, edit: boolean, summary: boolean): number {
+ return (autoDelete ? AUTO_DELETE : 0) | (edit ? EDIT : 0) | (summary ? SUMMARY : 0);
+}
+
+/**
+ * Returns `existing` with only the bits in `mask` replaced by the corresponding bits from
+ * `changes`. Bits outside the mask are left untouched, so bot-set bits the web UI does not
+ * edit survive a save.
+ */
+export function preserve(existing: number, mask: number, changes: number): number {
+ return (existing & ~mask) | (changes & mask);
+}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/da.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/da.json
index a9a70822..de2b453f 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/da.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/da.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Accenttema",
"LANGUAGE": "Sprog",
"LOGOUT": "Log ud",
+ "LOGOUT_EVERYWHERE": "Log ud overalt",
"ACCENT_DEFAULT": "Standard",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Standardindstillinger for advarsler"
},
"SHORTCUTS": {
"TITLE": "Tastaturgenveje",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Form og køn",
"LABEL_FORM": "Form",
"ALL_FORMS": "Alle former",
+ "FORM_MULTI_HINT": "Lad stå tomt for at matche alle former",
"LABEL_GENDER": "Køn",
"GENDER_ALL": "Alle",
"GENDER_MALE": "Han",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Fælles indstillinger"
},
"RAIDS": {
+ "RSVP_LABEL": "RSVP-notifikationer",
+ "RSVP_OFF": "Kun matches",
+ "RSVP_INCLUDE": "Matches + RSVP-opdateringer",
+ "RSVP_ONLY": "Kun RSVP-opdateringer",
+ "RSVP_OFF_DESC": "Kun standard raid-/æg-notifikationer.",
+ "RSVP_INCLUDE_DESC": "Giv også besked, når RSVP-antal ændres.",
+ "RSVP_ONLY_DESC": "Spring indledende matches over; giv kun besked om RSVP-ændringer. Uden en scanner der sender RSVP er alarmen stille.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Kun RSVP",
"PAGE_TITLE": "Raid- og æg-alarmer",
"PAGE_DESC": "Bliv notificeret om raid-bosser og æg-hatches på nærliggende gyms.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Er du sikker på, at du vil slette ALLE raid- og æg-alarmer? Denne handling kan ikke fortrydes.",
"CONFIRM_BULK_DELETE_TITLE": "Slet valgte alarmer",
"CONFIRM_BULK_DELETE_MSG": "Er du sikker på, at du vil slette {{count}} alarmer?",
- "CONFIRM_DELETE_SELECTED": "Slet valgte"
+ "CONFIRM_DELETE_SELECTED": "Slet valgte",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Quest-alarmer",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Alle quest-alarmer slettet",
"SNACK_FAILED_DELETE_ALL": "Kunne ikke slette alarmer",
"SNACK_FAILED_DISTANCE": "Kunne ikke opdatere afstande",
- "CONFIRM_DELETE_SELECTED": "Slet valgte"
+ "CONFIRM_DELETE_SELECTED": "Slet valgte",
+ "SUMMARY_MODE": "Daglig oversigt",
+ "SUMMARY_HINT": "Samler matchende opgaver i én oversigtsbesked i stedet for én notifikation pr. opgave. Kræver en konfigureret oversigtsplan på botten.",
+ "SUMMARY_BADGE": "Oversigt",
+ "SUMMARY_SCHEDULE": "Levering af opgaveoversigt",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Opgaveoversigt",
+ "SUMMARY_SCHEDULE_EMPTY": "Ingen oversigtsplan angivet. Opgaver leveres enkeltvis.",
+ "SUMMARY_SCHEDULE_EDIT": "Rediger plan",
+ "SUMMARY_SCHEDULE_CLEAR": "Fjern plan",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Send oversigt nu",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Leverer questmatch indsamlet siden din seneste oversigt. Hvis intet er bufret endnu, sendes der ingenting.",
+ "SUMMARY_SCHEDULE_SAVED": "Oversigtsplan gemt",
+ "SUMMARY_SCHEDULE_CLEARED": "Oversigtsplan fjernet",
+ "SUMMARY_SCHEDULE_SENT": "Oversigt sendt",
+ "SUMMARY_SCHEDULE_FAILED": "Kunne ikke opdatere oversigtsplanen",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "Oversigtslevering er midlertidigt utilgængelig. Prøv igen senere.",
+ "SUMMARY_DISABLED_HINT": "Planlægning af oversigter er ikke tilgængelig på denne server."
},
"INVASIONS": {
"PAGE_TITLE": "Invasionsalarmer",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnetisk",
"TYPE_RAINY": "Regnfuld",
"TYPE_GOLDEN": "Gylden",
- "TYPE_UNKNOWN": "Lokke #{{id}}"
+ "TYPE_UNKNOWN": "Lokke #{{id}}",
+ "EDIT_MODE": "Rediger beskeden på stedet",
+ "EDIT_HINT": "Opdaterer den eksisterende Discord-besked, når lokkemodulet ændres, i stedet for at sende en ny.",
+ "EDIT_BADGE": "Rediger"
},
"NESTS": {
"PAGE_TITLE": "Rede-alarmer",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Ændr",
"SET_LOCATION": "Angiv",
"METHOD_NOTE": "Hver alarm vælger én metode i sin Levering-fane.",
+ "NOTIFICATION_LANGUAGE": "Notifikationssprog",
+ "NOTIFICATION_LANGUAGE_DESC": "Det sprog Poracle bruger til dine alarmbeskeder og Pokémon-navne. Det er adskilt fra visningssproget i topmenuen.",
+ "SNACK_LANGUAGE_UPDATED": "Notifikationssprog opdateret",
+ "SNACK_LANGUAGE_FAILED": "Kunne ikke opdatere notifikationssprog",
"SELECT_AREAS": "Vælg områder",
"MAP_VIEW": "Kort",
"LIST_VIEW": "Liste",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, æg, quests, rockets, lokkemoduler, reder, gyms, fort-ændringer",
"SECTION_DELIVERY": "Leveringsindstillinger",
"SECTION_DELIVERY_SUB": "Områder vs afstand, skabeloner og oprydningstilstand",
+ "SECTION_QUEST_SUMMARY": "Levering af opgaveoversigt",
+ "SECTION_QUEST_SUMMARY_SUB": "Saml støjende opgaver i én planlagt oversigt",
"SECTION_TEST_ALERTS": "Test-alarmer",
"SECTION_TEST_ALERTS_SUB": "Send prøvenotifikationer for at forhåndsvise dine alarmer",
"SECTION_POKEMON_AVAILABILITY": "Pokemon-tilgængelighed",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Hvis de forhåndsdefinerede områder ikke dækker det sted du vil have alarmer fra, kan du tegne dine egne brugerdefinerede geofence-grænser på kortet.
Tegn en geofence
- Gå til Mine Geofences i sidepanelet.
- Klik på Tegn Geofence.
- Klik på kortet for at placere punkter af din polygongrænse. Klik på det første punkt igen for at lukke formen (minimum 3 punkter).
- Giv din geofence et navn og vælg hvilken region den tilhører. Regionen detekteres normalt automatisk.
- Klik på Gem.
Administrer geofences
- Rediger — Omdøb din geofence eller skift dens region.
- Slet — Fjern en geofence du ikke længere har brug for. Geofencen fjernes fra alle profiler automatisk.
Profilskift
Hvert geofence-kort har en skydekontakt til at aktivere eller deaktivere den for din aktive profil. Når du opretter en geofence, aktiveres den automatisk på den profil du bruger. Skift til en anden profil og kontakten viser \"Inaktiv\" — slå den til for også at modtage alarmer for den geofence på den profil. Det lader dig styre hvilke profiler der får notifikationer for hver geofence uden at genskabe den.
ℹ️Godkendte geofences (forfremmet til offentlige områder) viser ikke kontakten — administrer dem fra Områder-siden i stedet.
GeoJSON Import & Export
Du kan importere og eksportere geofences i standard GeoJSON-format, hvilket gør det nemt at dele grænser eller oprette dem i eksterne værktøjer som geojson.io.
- Import — Klik på upload-ikonet og indsæt eller upload en GeoJSON-fil. Hver polygon i filen bliver en ny geofence. Du kan gennemgå og omdøbe hver enkelt før du gemmer.
- Eksport — Klik på download-ikonet og vælg hvilke geofences der skal inkluderes. Den eksporterede GeoJSON-fil indeholder alle valgte polygoner og kan åbnes i ethvert GIS-værktøj eller korteditor.
💡GeoJSON-import er nyttig til at migrere geofences fra andre systemer eller tegne komplekse grænser i et desktop GIS-værktøj og derefter importere dem her.
Indsend til offentlig godkendelse
Hvis du mener din geofence ville være nyttig for hele communityet, kan du indsende den til admin-gennemgang. Hvis den godkendes, bliver den et offentligt område alle kan vælge. Din private geofence fortsætter med at virke mens gennemgangen er i gang.
Statusmærkater
- Aktiv — Din private geofence, virker kun for dig.
- Afventer gennemgang — Indsendt og venter på admin-gennemgang.
- Godkendt — Forfremmet til et offentligt område.
- Afvist — Ikke godkendt. Du kan se adminens feedback, og geofencen forbliver aktiv som en privat zone.
ℹ️Du kan have op til 10 brugerdefinerede geofences, hver med op til 500 grænsepunkter.
",
"CONTENT_POKEMON": "
Pokemon-alarmer giver dig besked når en vild Pokemon spawner der matcher dine filtre.
Tilføj en Pokemon-alarm

- Gå til Pokemon i sidepanelet og klik på +-knappen.
- Vælg Pokemon — Søg efter navn eller Pokedex-nummer, eller brug generations- og typefilterknapperne til at gennemse. Du kan vælge flere Pokemon på én gang.
- Indstil filtre — Vælg hvad der gør en spawn værd at få besked om:
- IV-interval — Minimum og maksimum IV-procent (0-100%)
- CP-interval — Filtrer efter kampstyrke
- Niveau-interval — Filtrer efter Pokemon-niveau (0-55)
- Individuelle stats — Filtrer efter ATK, DEF og STA værdier (0-15 hver)
- Form — Følg specifikke former (f.eks. Alolan, Galarian) eller alle former
- Køn — Han, hun, kønsløs eller alle
- Vægt — Filtrer efter vægtinterval
- Størrelse — Filtrer efter størrelseskategori: vælg ALL (intet filter) for at matche enhver størrelse, eller vælg specifikke størrelser fra XXS til XXL (XXS, XS, Normal, XL, XXL)
ℹ️Standard filterværdier er sat så alle Pokemon matcher når ingen filtre er eksplicit konfigureret. For eksempel er IV standard 0-100%, niveau 0-55 og størrelse ALL. Du behøver kun at justere de filtre du er interesseret i.
PVP-filtre
Få besked når en Pokemon har gode PVP IV'er. Vælg en liga (Great, Ultra eller Little Cup) og indstil det ranginterval du er interesseret i (f.eks. rang 1-50).
\"Alle Pokemon\"-alarm
💡Vælg \"All Pokemon\" (ID 0) for at oprette én alarm der dækker alle arter. Nyttigt med et højt IV-filter som 96-100% for at fange enhver værdifuld spawn.
Læs alarmkort
Hvert alarmkort viser farvede mærkater der opsummerer dine filtre:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Raid- og Æg-alarmer
Få besked når en raid boss eller et æg dukker op som du er interesseret i.
- Efter niveau — Vælg raid-niveauer (1-6) eller æg-niveauer for at følge alle raids på det niveau.
- Efter boss — Vælg specifikke Pokemon raid-bosser du vil jage.
- Holdfilter — Få kun besked om raids ved gyms kontrolleret af et bestemt hold (Mystic, Valor, Instinct).
- Gym-følgning — Følg raids ved specifikke gyms efter navn, så du kun får besked om dine favoritgyms.
- Angrebsfilter — Filtrer raid-bosser efter deres hurtige eller ladede angreb.
- RSVP-notifikationer — Få besked når andre trænere tilmelder sig et raid eller æg du følger.
Raid- og Æg-alarmer administreres på separate faner på Raids-siden. Æg understøtter også gym-specifik følgning og RSVP-notifikationer.
Max Battle (Dynamax)-alarmer
Få besked om Dynamax- og Gigantamax-kampe ved Power Spots.
- Efter niveau — Vælg kampniveauer for at følge alle Pokemon på de niveauer. Niveauer går fra 1 stjerne til 5 stjerner (Legendary) for Dynamax, plus Gigantamax og Legendary Gigantamax for de største kampe. Én alarm oprettes per valgt niveau.
- Efter Pokemon — Vælg specifikke Pokemon du vil kæmpe mod på alle Max Battle-niveauer. Hvis scannerdatabasen er konfigureret, filtreres vælgeren til kun at vise Pokemon der har optrådt i Max Battles.
- Kun Gigantamax — Når du følger efter Pokemon, slå dette til for kun at få notifikationer når den Pokemon optræder i Gigantamax-kampe (de højeste kampe med unikke G-Max-angreb). For niveaubaseret følgning håndteres Gigantamax ved at vælge Gigantamax- eller Legendary Gigantamax-niveauerne direkte.
- Vælg alle — Vælg hurtigt alle tilgængelige niveauer på én gang (svarer til bottens
!maxbattle everything kommando).
Quest-alarmer
Få besked om feltforskningsopgaver med specifikke belønninger.
- Pokemon-møder — Vælg Pokemon du vil have som quest-belønninger.
- Genstande — Følg quests der giver specifikke genstande.
- Mega Energi — Følg quests der giver mega-energi til specifikke Pokemon.
- Slik — Følg quests der giver slik til specifikke Pokemon.
Invasionsalarmer
Få besked om Team Rocket-invasioner.
- Følg alle — Én alarm for hver grunt-type og leder.
- Efter type — Vælg specifikke grunt-typer (Bug, Dragon, Fire osv.), Rocket Leaders eller Giovanni. Grunt-typenavne normaliseres automatisk (uden forskel på store/små bogstaver), så du behøver ikke bekymre dig om præcis stavning.
- Køn — Filtrer efter grunt-køn.
Lure-alarmer
Få besked når en bestemt lure-type placeres. Vælg mellem Normal, Glacial, Mossy, Magnetic, Rainy og Golden.
Rede-alarmer
Følg Pokemon-arter der har reder. Indstil en minimum spawns per time-tærskel, så du kun får besked om reder med nok aktivitet.
Gym-alarmer
Følg gym-holdskift. Vælg hvilke hold (Neutral, Mystic, Valor, Instinct) der skal overvåges. Aktiver Ændringer i pladser for at få besked når gym-pladser åbner sig, eller aktiver Ændringer i kampe for at få besked når et gym er under angreb.
Fortændringsalarmer
Følg ændringer i PokéStops og gyms selv — ikke aktiviteterne ved dem, men ændringer i selve interessepunkterne.
- Fort-type — Vælg at følge PokéStops, Gyms eller Alt.
- Ændringstyper — Vælg hvilke ændringer der skal overvåges: Navn ændret, Placering ændret, Billede ændret, Fjernelse eller Nyt fort tilføjet.
- Inkluder tomme — Inkluder forts uden navn.
💡Fortændringsalarmer er nyttige til at følge kortdatabaseopdateringer — nye PokéStops der dukker op, gyms der flyttes, eller POI'er der fjernes fra spillet.
Målret et bestemt gym
Når du opretter eller redigerer en Raid-, Æg- eller Gym-alarm, kan du valgfrit søge efter og vælge et bestemt gym. Det er nyttigt når du kun er interesseret i aktivitet ved dit favoritgym — som det på din frokosttur eller tæt på dit hjem.
- Sådan bruger du det — I tilføj- eller redigeringsdialogen, skriv et gym-navn i gym-søgefeltet. Resultaterne viser gymmets billede, navn og område så du kan identificere det rigtige.
- Når et gym er valgt — Alarmen udløses kun for begivenheder ved det specifikke gym. Gym-navnet vises på alarmkortet i din liste så du kan se hvilket gym den retter sig mod.
- Når intet gym er valgt — Det er standard. Alarmen virker normalt for alle gyms i dine valgte områder eller inden for din afstandsradius.
💡Du kan kombinere en gym-specifik alarm med en bredere alarm. Opret for eksempel én raid-alarm rettet mod dit lokale gym for alle niveauer, og en anden alarm for niveau 5-raids på tværs af alle dine områder.
",
- "CONTENT_DELIVERY": "
Hver alarm har leveringsindstillinger der styrer hvor du får notifikationer.
Områder vs Afstand
Hver alarm bruger en af to leveringstilstande:
🗺
Brug områderFå besked når begivenheder sker i dine valgte områder. Godt til at følge bestemte kvarterer.📏
Indstil afstandFå besked inden for en radius (km) fra din gemte placering. Godt til at følge alt i nærheden.Du kan bruge forskellige tilstande til forskellige alarmer — for eksempel områder til Pokemon og afstand til raids.
Notifikationsskabeloner
Hvis skabeloner er aktiveret, kan du vælge hvordan dine notifikationsbeskeder ser ud. Skabelonvælgeren viser en live forhåndsvisning af hvordan din Discord DM vil se ud, inklusive embed-format, felter og billeder.
Oprydningstilstand
Når den er aktiveret, sletter botten automatisk notifikationen fra Discord efter begivenheden udløber (f.eks. en Pokemon despawner eller en raid slutter). Det holder dine DM'er ryddelige. Du kan aktivere oprydningstilstand per alarm eller samlet fra Oprydning-siden.
Ping / Rolleomtaler
Hvis du bruger webhooks, kan du indstille en Discord-rolle til at nævne i notifikationen (f.eks. @Pokemon). Det er kun relevant for webhook-opsætninger.
",
+ "CONTENT_DELIVERY": "
Hver alarm har leveringsindstillinger der styrer hvor du får notifikationer.
Områder vs Afstand
Hver alarm bruger en af to leveringstilstande:
🗺
Brug områderFå besked når begivenheder sker i dine valgte områder. Godt til at følge bestemte kvarterer.📏
Indstil afstandFå besked inden for en radius (km) fra din gemte placering. Godt til at følge alt i nærheden.Du kan bruge forskellige tilstande til forskellige alarmer — for eksempel områder til Pokemon og afstand til raids.
Notifikationsskabeloner
Hvis skabeloner er aktiveret, kan du vælge hvordan dine notifikationsbeskeder ser ud. Skabelonvælgeren viser en live forhåndsvisning af hvordan din Discord DM vil se ud, inklusive embed-format, felter og billeder.
Oprydningstilstand
Når den er aktiveret, sletter botten automatisk notifikationen fra Discord efter begivenheden udløber (f.eks. en Pokemon despawner eller en raid slutter). Det holder dine DM'er ryddelige. Du kan aktivere oprydningstilstand per alarm eller samlet fra Oprydning-siden.
Ping / Rolleomtaler
Hvis du bruger webhooks, kan du indstille en Discord-rolle til at nævne i notifikationen (f.eks. @Pokemon). Det er kun relevant for webhook-opsætninger.
Rediger på stedet & oversigter
Nogle alarmer understøtter ekstra leveringstilstande. Slå Rediger besked på stedet til for et lokkemiddel for at opdatere den eksisterende Discord-besked, når lokkemidlet ændres, i stedet for at sende en ny, eller Daglig oversigt for en quest for at samle matchende quests i én oversigtsbesked (kræver en konfigureret oversigtsplan på botten). Raids og æg redigeres automatisk på stedet, når du vælger en RSVP-tilstand. Disse indstillinger bevares, selv hvis du angiver dem fra botten.
RSVP-opdateringer (raids & æg)
Raid- og ægalarmer tilføjer en RSVP-notifikationer-indstilling i tilføj-/redigeringsdialogen med tre valg: Kun matches sender standard raid-/ægnotifikationer; Matches + RSVP-opdateringer giver dig også besked, når RSVP-antal ændres (trænere der tilmelder sig); og Kun RSVP-opdateringer springer den indledende match over og giver dig kun besked om RSVP-ændringer. At vælge en af RSVP-tilstandene får botten til at redigere den eksisterende Discord-besked på stedet, når antallet ændres, i stedet for at sende nye, og kortet viser en "RSVP"- eller "Kun RSVP"-etiket. Bemærk at Kun RSVP-opdateringer bliver stille, medmindre dit fællesskabs scanner sender RSVP-begivenheder — vælg det kun, hvis du ved, at RSVP rapporteres.
",
+ "CONTENT_QUEST_SUMMARY": "Field Research-opgaver skifter dagligt og kan matche i store mængder, så et travlt opgavefilter kan oversvømme dine DM’er. Levering af opgaveoversigt samler matchende opgaver i én planlagt oversigt i stedet for mange separate notifikationer.
To dele, der arbejder sammen
- Daglig oversigt-knap — slå denne til for en opgavealarm (i dens opret/rediger-dialog) for at markere dens match til oversigten i stedet for øjeblikkelig levering.
- Leveringsplan — vælg hvornår de indsamlede opgaver sendes.
Begge dele er nødvendige: knappen bestemmer hvilke opgaver der skal samles, planen bestemmer hvornår de skal leveres.
Sådan opsætter du din plan
Åbn Opgaver-siden, derefter ⋮-menuen i værktøjslinjen, og vælg Levering af opgaveoversigt. Brug Rediger plan til at vælge dage og tidspunkter — samme editor som bruges til profilers aktive timer. Gemte tidspunkter vises som ravgule piller.
Planen er pr. bruger og deles på tværs af alle dine profiler — i modsætning til profilers aktive timer, som indstilles pr. profil.
Send oversigt nu
Send oversigt nu leverer med det samme alt, hvad der er indsamlet siden din seneste oversigt. Hvis der endnu ikke er indsamlet noget, sendes der intet — opgaver bufres efterhånden som de matcher, så giv det tid eller vent på, at planen udløses.
Godt at vide
- Menuen vises kun, når din servers bot har opgaveoversigter aktiveret.
- Leveringstidspunktet bruger din gemte placering til tidszonen — angiv en placering, ellers kan oversigter ankomme på det forkerte lokale tidspunkt (dialogen advarer dig, når der ikke er angivet nogen placering).
- Fjernelse af planen bevarer pr.-alarm-knappen; opgaver samles stadig, men falder tilbage til botens standardtidspunkt.
",
"CONTENT_TEST_ALERTS": "Hvert alarmkort har en Test-knap (papirflyikon) der sender en prøvenotifikation til din Discord eller Telegram, med alarmens præcise filtre og din aktuelle leveringsskabelon.
Sådan virker det
- Find et alarmkort på din liste (Pokemon, Raid, Quest osv.).
- Klik på send-ikonet i kortets handlingsrække.
- En simuleret begivenhed der matcher dine alarmfiltre genereres og sendes gennem notifikationspipelinen. Du modtager en DM ligesom en rigtig alert.
Hvad bliver testet
Testen bruger din alarms filterværdier (Pokemon ID, raid-niveau, quest-belønning osv.) og din gemte placering som de simulerede begivenhedskoordinater. Notifikationen formateres med din valgte skabelon, så du ser præcis hvordan en rigtig alert ville se ud.
Nedkøling
For at forhindre spam har hver alarm en 15-sekunders nedkølingsperiode mellem testforsendelser. Knappen er deaktiveret under nedkølingen, og en infobar viser feedback (succes, fejl eller resterende nedkøling).
💡Testalarmer er gode til at verificere at din skabelon ser rigtig ud, eller bekræfte at din webhook-levering virker, før du venter på en rigtig begivenhed.
",
"CONTENT_POKEMON_AVAILABILITY": "Når du tilføjer eller redigerer Pokemon-alarmer, kan Pokemon-vælgeren vise tilgængelighedsindikatorer — små mærkater der fortæller dig hvilke Pokemon der aktuelt spawner i naturen.
Sådan virker det
Hvis dit community har en Golbat-scanner konfigureret, viser vælgeren farvede prikker ved siden af Pokemon-navne:
- Grøn prik — Denne Pokemon er set spawne for nylig.
- Ingen prik — Ikke aktuelt rapporteret i scannerdataene.
Det hjælper dig med at undgå at oprette alarmer for Pokemon der ikke spawner i dit område lige nu (f.eks. sæsonbestemte eller event-eksklusive arter).
Opdatering af tilgængelighed
Dataene opdateres automatisk i baggrunden. Du behøver ikke gøre noget — kig bare efter prikkerne når du gennemser Pokemon-vælgeren.
ℹ️Denne funktion er kun synlig hvis din admin har konfigureret Golbat-scannerintegrationen. Hvis du ikke ser tilgængelighedsprikker, er funktionen ikke aktiveret for dit community.
",
"CONTENT_BULK": "
Alle alarmsider understøtter masseoperationer så du kan administrere mange alarmer på én gang.
Vælgetilstand
Klik på tjeklisteikonet i værktøjslinjen for at gå i vælgetilstand. Klik derefter på individuelle alarmkort for at vælge dem, eller brug Vælg alle til at tage alt synligt.
Massehandlinger
- Opdater afstand — Skift leveringstilstand (områder eller afstand) for alle valgte alarmer på én gang.
- Slet — Fjern alle valgte alarmer med én bekræftelse.
💡I bunden af hver alarmliste finder du også knapperne Opdater alle afstande og Slet alle der gælder for hver alarm af den type.
",
@@ -1075,6 +1153,9 @@
"SIGN_IN_DESC": "Log ind for at administrere dine Pokemon GO-notifikationsalarmer.",
"SIGN_IN_DISCORD": "Log ind med Discord",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Log ind med {{provider}}",
+ "SIGNED_OUT_TITLE": "Logget ud",
+ "SIGNED_OUT_DESC": "Du er blevet logget ud af DM Alerts.",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1171,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "Ekstern login er i øjeblikket deaktiveret.",
+ "ERR_OIDC_NO_IDENTITY": "Din eksterne login-udbyder returnerede ikke en konto, vi kan matche. Sørg for, at din Discord-konto er tilknyttet.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Ekstern login mislykkedes. Prøv venligst igen.",
+ "ERR_OIDC_USERINFO": "Kunne ikke hente din profil fra den eksterne login-udbyder. Prøv venligst igen.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Rediger",
"ADD": "Tilføj",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Bekræft",
"DELETE_ALL": "Slet alle",
"CLOSE": "Luk",
@@ -1388,6 +1474,14 @@
"SAVE_SUCCESS": "{{count}} setting(s) saved",
"SAVE_PARTIAL": "{{done}} saved, {{errors}} failed",
"ICONS_SELECTED": "Selected {{repo}} icons — click Save to apply",
+ "SEARCH_PLACEHOLDER": "Søg i indstillinger…",
+ "SEARCH_CLEAR": "Ryd søgning",
+ "UNSAVED_CHANGES": "{{count}} ikke gemt",
+ "SAVE_CHANGES": "Gem ændringer",
+ "DISCARD_CHANGES": "Kassér",
+ "COLLAPSE_SECTION": "Skjul sektion",
+ "EXPAND_SECTION": "Udvid sektion",
+ "SUMMARY_ENABLED": "{{count}} af {{total}} aktiveret",
"GROUP_BRANDING": "Branding",
"GROUP_ALARM_TYPES": "Alarmtyper",
"GROUP_FEATURES": "Funktioner",
@@ -1400,6 +1494,7 @@
"GROUP_DEBUG": "Fejlfinding",
"GROUP_ICON_REPO": "Ikon-repository",
"GROUP_OTHER": "Andet",
+ "GROUP_OIDC": "Ekstern SSO",
"CUSTOM_TITLE_LABEL": "Sidetitel",
"CUSTOM_TITLE_DESC": "Navn vist i browser-fanen og sidens overskrift.",
"HEADER_LOGO_URL_LABEL": "Header-logo-URL",
@@ -1417,37 +1512,39 @@
"CUSTOM_PAGE_URL_DESC": "URL, som det brugerdefinerede navigationslink peger på.",
"CUSTOM_PAGE_ICON_LABEL": "Navigationslink-ikon",
"CUSTOM_PAGE_ICON_DESC": "FontAwesome-klasse for navigationslink-ikonet (f.eks. \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Deaktiver Pokémon",
- "DISABLE_MONS_DESC": "Skjul administration af Pokémon-alarmer for alle brugere.",
- "DISABLE_RAIDS_LABEL": "Deaktiver Raids",
- "DISABLE_RAIDS_DESC": "Skjul administration af Raid-alarmer for alle brugere.",
- "DISABLE_QUESTS_LABEL": "Deaktiver Opgaver",
- "DISABLE_QUESTS_DESC": "Skjul administration af opgave-alarmer for alle brugere.",
- "DISABLE_INVASIONS_LABEL": "Deaktiver Invasioner",
- "DISABLE_INVASIONS_DESC": "Skjul administration af invasions-alarmer for alle brugere.",
- "DISABLE_LURES_LABEL": "Deaktiver Lokkemoduler",
- "DISABLE_LURES_DESC": "Skjul administration af lokke-alarmer for alle brugere.",
- "DISABLE_NESTS_LABEL": "Deaktiver Reder",
- "DISABLE_NESTS_DESC": "Skjul administration af rede-alarmer for alle brugere.",
- "DISABLE_GYMS_LABEL": "Deaktiver Gyms",
- "DISABLE_GYMS_DESC": "Skjul administration af gym-alarmer for alle brugere.",
- "DISABLE_FORT_CHANGES_LABEL": "Deaktiver fort-ændringer",
- "DISABLE_FORT_CHANGES_DESC": "Skjul administration af fort-ændringsalarmer for alle brugere.",
- "DISABLE_MAXBATTLES_LABEL": "Deaktiver Max Battles",
- "DISABLE_MAXBATTLES_DESC": "Skjul administration af Max Battle-alarmer for alle brugere.",
- "DISABLE_AREAS_LABEL": "Deaktiver områder",
- "DISABLE_AREAS_DESC": "Forhindr brugere i at administrere deres områdeabonnementer.",
- "DISABLE_PROFILES_LABEL": "Deaktiver profiler",
- "DISABLE_PROFILES_DESC": "Forhindr brugere i at oprette og skifte alarmprofiler.",
- "DISABLE_LOCATION_LABEL": "Deaktiver placering",
- "DISABLE_LOCATION_DESC": "Forhindr brugere i at angive en hjemmeplacering.",
- "DISABLE_NOMINATIM_LABEL": "Deaktiver geokodning",
- "DISABLE_NOMINATIM_DESC": "Deaktiver Nominatim-adressesøgning ved valg af placering.",
- "DISABLE_GEOMAP_LABEL": "Deaktiver kortvisning",
- "DISABLE_GEOMAP_DESC": "Skjul det interaktive geofence-kort helt.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Deaktiver områdevalg på kort",
- "DISABLE_GEOMAP_SELECT_DESC": "Forhindr brugere i at vælge områder ved at klikke på kortet.",
- "ENABLE_TEMPLATES_LABEL": "Aktiver skabeloner",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Lad brugere administrere Pokémon-alarmer.",
+ "DISABLE_RAIDS_LABEL": "Raids",
+ "DISABLE_RAIDS_DESC": "Lad brugere administrere Raid-alarmer.",
+ "DISABLE_QUESTS_LABEL": "Opgaver",
+ "DISABLE_QUESTS_DESC": "Lad brugere administrere opgave-alarmer.",
+ "DISABLE_INVASIONS_LABEL": "Invasioner",
+ "DISABLE_INVASIONS_DESC": "Lad brugere administrere invasions-alarmer.",
+ "DISABLE_LURES_LABEL": "Lokkemoduler",
+ "DISABLE_LURES_DESC": "Lad brugere administrere lokke-alarmer.",
+ "DISABLE_NESTS_LABEL": "Reder",
+ "DISABLE_NESTS_DESC": "Lad brugere administrere rede-alarmer.",
+ "DISABLE_GYMS_LABEL": "Gyms",
+ "DISABLE_GYMS_DESC": "Lad brugere administrere gym-alarmer.",
+ "DISABLE_FORT_CHANGES_LABEL": "Fort-ændringer",
+ "DISABLE_FORT_CHANGES_DESC": "Lad brugere administrere fort-ændringsalarmer.",
+ "DISABLE_MAXBATTLES_LABEL": "Max Battles",
+ "DISABLE_MAXBATTLES_DESC": "Lad brugere administrere Max Battle-alarmer.",
+ "DISABLE_AREAS_LABEL": "Områder",
+ "DISABLE_AREAS_DESC": "Lad brugere administrere deres områdeabonnementer.",
+ "DISABLE_PROFILES_LABEL": "Profiler",
+ "DISABLE_PROFILES_DESC": "Lad brugere oprette og skifte alarmprofiler.",
+ "DISABLE_LOCATION_LABEL": "Placering",
+ "DISABLE_LOCATION_DESC": "Lad brugere angive en hjemmeplacering.",
+ "DISABLE_NOMINATIM_LABEL": "Geokodning",
+ "DISABLE_NOMINATIM_DESC": "Tillad Nominatim-adressesøgning ved valg af placering.",
+ "DISABLE_GEOMAP_LABEL": "Kortvisning",
+ "DISABLE_GEOMAP_DESC": "Vis det interaktive geofence-kort.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Områdevalg på kort",
+ "DISABLE_GEOMAP_SELECT_DESC": "Lad brugere vælge områder ved at klikke på kortet.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Brugerdefinerede geofences",
+ "DISABLE_USER_GEOFENCES_DESC": "Lad brugere tegne, importere og indsende deres egne geofences. Eksisterende geofences fungerer fortsat.",
+ "ENABLE_TEMPLATES_LABEL": "Skabeloner",
"ENABLE_TEMPLATES_DESC": "Tillad brugere at vælge skabeloner for notifikationsbeskeder.",
"ALLOWED_LANGUAGES_LABEL": "Tilladte UI-sprog",
"ALLOWED_LANGUAGES_DESC": "Kommaseparerede sprogkoder, der skal vises i sprogvælgeren (f.eks. \"en,de,fr,es\"). Lad stå tomt for at vise alle 11 sprog.",
@@ -1455,8 +1552,6 @@
"ENABLE_ROLES_DESC": "Tillad kun brugere med specifikke Discord-roller at logge ind. Kræver Bot-token og Guild-ID.",
"ALLOWED_ROLE_IDS_LABEL": "Tilladte rolle-ID'er",
"ALLOWED_ROLE_IDS_DESC": "Kommaseparerede Discord-rolle-ID'er, der giver adgang (f.eks. \"123456789,987654321\"). Lad stå tomt for at tillade alle.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Tilladte sprog",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Kommasepareret liste over sprogkoder, som brugere kan vælge (f.eks. \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Registreringskommando",
"REGISTER_COMMAND_DESC": "Poracle-bot-kommando, som brugere kører for at registrere sig (f.eks. \"$!register\").",
"LOCATION_COMMAND_LABEL": "Placeringskommando",
@@ -1469,6 +1564,27 @@
"ENABLE_DISCORD_DESC": "Tillad Discord-login på dette site. Kræver Discord Client ID og Client Secret i .env (servergenstart kræves efter .env-ændringer). Påvirker ikke PoracleNG-bot-levering.",
"PROVIDER_URL_LABEL": "Kortflise-URL",
"PROVIDER_URL_DESC": "URL-skabelon til kortflise-udbyderen (bruges til statiske kort).",
+ "ENABLE_OIDC_LABEL": "Aktiver ekstern SSO-login",
+ "ENABLE_OIDC_DESC": "Tillad login via den konfigurerede eksterne OIDC/OAuth2-udbyder. Kræver OIDC_*-indstillinger (udbyder-URL'er, client ID og secret) i .env (servergenstart kræves efter .env-ændringer).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Alle brugere omdirigeres til den eksterne SSO-udbyder. Lokal login forbigås.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Skift til SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Skift til SSO-login?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Når du gemmer, omdirigeres alle brugere (inklusive administratorer) til {{provider}} for at logge ind — den lokale Discord/Telegram-loginside forbigås. Hvis udbyderen er utilgængelig, kan du blive låst ude; gendan ved at angive AUTH_FORCE_LOCAL=true i servermiljøet.",
+ "AUTH_OIDC_NOT_CONFIGURED": "SSO er utilgængeligt, indtil OIDC-udbyderen er konfigureret i servermiljøet (OIDC_*-miljøvariabler).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord og Telegram skjules, mens SSO er den aktive login-tilstand.",
+ "AUTH_SLO_LABEL": "Enkelt-logud",
+ "AUTH_SLO_DESC": "Når dette er aktiveret, afslutter \"Log ud overalt\" også udbyderens session (ikke kun dette site). Kræver udbyderens end-session-endpoint (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Enkelt-logud er utilgængeligt, indtil udbyderens end-session-endpoint er konfigureret (OIDC_END_SESSION_URL-miljøvariabel).",
+ "OIDC_SERVER_CONFIG": "OIDC-udbyderkonfiguration",
+ "OIDC_PROVIDER_LABEL": "Udbydernavn",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization-URL",
+ "OIDC_TOKEN_URL_LABEL": "Token-URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo-URL",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identitets-claim",
+ "OIDC_USE_PKCE_LABEL": "Brug PKCE",
"GANALYTICSID_LABEL": "Google Analytics-id",
"GANALYTICSID_DESC": "GA4-måle-id (lad stå tomt for at deaktivere).",
"PATREONURL_LABEL": "Patreon-URL",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Din placering",
"SELECTED_COUNT": "{{count}} valgt:",
"AREAS_SELECTED": "{{count}} område(r) valgt"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Standardindstillinger for advarsler",
+ "DESC": "Vælg, hvordan nye advarsler leveres som standard. Du kan stadig ændre dette for hver advarsel, når du opretter den.",
+ "DEFAULT_DISTANCE": "Standardafstand",
+ "DEFAULT_DISTANCE_HINT": "Bruges til at udfylde radius for nye afstandsbaserede advarsler på forhånd.",
+ "FOOTNOTE": "Gælder kun for nyoprettede advarsler — eksisterende ændres ikke."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/de.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/de.json
index 2d4fb0cf..6b05bcd0 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/de.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/de.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Akzentfarbe",
"LANGUAGE": "Sprache",
"LOGOUT": "Abmelden",
+ "LOGOUT_EVERYWHERE": "Überall abmelden",
"ACCENT_DEFAULT": "Standard",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Benachrichtigungs-Standards"
},
"SHORTCUTS": {
"TITLE": "Tastenkürzel",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Form & Geschlecht",
"LABEL_FORM": "Form",
"ALL_FORMS": "Alle Formen",
+ "FORM_MULTI_HINT": "Leer lassen, um alle Formen einzuschließen",
"LABEL_GENDER": "Geschlecht",
"GENDER_ALL": "Alle",
"GENDER_MALE": "Männlich",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Allgemeine Einstellungen"
},
"RAIDS": {
+ "RSVP_LABEL": "RSVP-Benachrichtigungen",
+ "RSVP_OFF": "Nur Treffer",
+ "RSVP_INCLUDE": "Treffer + RSVP-Updates",
+ "RSVP_ONLY": "Nur RSVP-Updates",
+ "RSVP_OFF_DESC": "Nur normale Raid-/Ei-Benachrichtigungen.",
+ "RSVP_INCLUDE_DESC": "Zusätzlich erneut benachrichtigen, wenn sich RSVP-Zahlen ändern.",
+ "RSVP_ONLY_DESC": "Erste Treffer überspringen; nur bei RSVP-Änderungen benachrichtigen. Ohne einen RSVP-fähigen Scanner bleibt dieser Alarm stumm.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Nur RSVP",
"PAGE_TITLE": "Raid- & Ei-Alarme",
"PAGE_DESC": "Werde über Raid-Bosse und schlüpfende Eier in nahen Arenen benachrichtigt.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Möchtest du wirklich ALLE Raid- und Ei-Alarme löschen? Diese Aktion kann nicht rückgängig gemacht werden.",
"CONFIRM_BULK_DELETE_TITLE": "Ausgewählte Alarme löschen",
"CONFIRM_BULK_DELETE_MSG": "Möchtest du wirklich {{count}} Alarme löschen?",
- "CONFIRM_DELETE_SELECTED": "Ausgewählte löschen"
+ "CONFIRM_DELETE_SELECTED": "Ausgewählte löschen",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Quest-Alarme",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Alle Quest-Alarme gelöscht",
"SNACK_FAILED_DELETE_ALL": "Alarme konnten nicht gelöscht werden",
"SNACK_FAILED_DISTANCE": "Entfernungen konnten nicht aktualisiert werden",
- "CONFIRM_DELETE_SELECTED": "Ausgewählte löschen"
+ "CONFIRM_DELETE_SELECTED": "Ausgewählte löschen",
+ "SUMMARY_MODE": "Tägliche Zusammenfassung",
+ "SUMMARY_HINT": "Fasst passende Quests in einer einzigen Zusammenfassung zusammen, statt jede einzeln zu melden. Erfordert einen konfigurierten Zusammenfassungszeitplan im Bot.",
+ "SUMMARY_BADGE": "Zusammenfassung",
+ "SUMMARY_SCHEDULE": "Zustellung der Quest-Zusammenfassung",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Quest-Zusammenfassung",
+ "SUMMARY_SCHEDULE_EMPTY": "Kein Zusammenfassungsplan festgelegt. Quests werden einzeln zugestellt.",
+ "SUMMARY_SCHEDULE_EDIT": "Plan bearbeiten",
+ "SUMMARY_SCHEDULE_CLEAR": "Plan entfernen",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Zusammenfassung jetzt senden",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Liefert die seit deiner letzten Zusammenfassung gesammelten Quest-Treffer. Ist noch nichts gepuffert, wird nichts gesendet.",
+ "SUMMARY_SCHEDULE_SAVED": "Zusammenfassungsplan gespeichert",
+ "SUMMARY_SCHEDULE_CLEARED": "Zusammenfassungsplan entfernt",
+ "SUMMARY_SCHEDULE_SENT": "Zusammenfassung gesendet",
+ "SUMMARY_SCHEDULE_FAILED": "Der Zusammenfassungsplan konnte nicht aktualisiert werden",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "Die Zusammenfassungszustellung ist vorübergehend nicht verfügbar. Bitte versuche es später erneut.",
+ "SUMMARY_DISABLED_HINT": "Die Planung von Zusammenfassungen ist auf diesem Server nicht verfügbar."
},
"INVASIONS": {
"PAGE_TITLE": "Invasions-Alarme",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnetisch",
"TYPE_RAINY": "Regnerisch",
"TYPE_GOLDEN": "Golden",
- "TYPE_UNKNOWN": "Modul #{{id}}"
+ "TYPE_UNKNOWN": "Modul #{{id}}",
+ "EDIT_MODE": "Nachricht direkt bearbeiten",
+ "EDIT_HINT": "Aktualisiert die vorhandene Discord-Nachricht bei Änderungen am Lockmodul, statt eine neue zu senden.",
+ "EDIT_BADGE": "Bearbeiten"
},
"NESTS": {
"PAGE_TITLE": "Nest-Alarme",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Ändern",
"SET_LOCATION": "Setzen",
"METHOD_NOTE": "Jeder Alarm wählt eine Methode im Zustellungs-Tab.",
+ "NOTIFICATION_LANGUAGE": "Benachrichtigungssprache",
+ "NOTIFICATION_LANGUAGE_DESC": "Die Sprache, die Poracle für deine Alarmtexte und Pokémon-Namen verwendet. Sie ist unabhängig von der Anzeigesprache im oberen Menü.",
+ "SNACK_LANGUAGE_UPDATED": "Benachrichtigungssprache aktualisiert",
+ "SNACK_LANGUAGE_FAILED": "Benachrichtigungssprache konnte nicht aktualisiert werden",
"SELECT_AREAS": "Gebiete auswählen",
"MAP_VIEW": "Karte",
"LIST_VIEW": "Liste",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, Eier, Quests, Rocket, Lockmodule, Nester, Arenen, Fort-Änderungen",
"SECTION_DELIVERY": "Zustellungseinstellungen",
"SECTION_DELIVERY_SUB": "Gebiete vs. Entfernung, Vorlagen und Aufräummodus",
+ "SECTION_QUEST_SUMMARY": "Zustellung der Quest-Zusammenfassung",
+ "SECTION_QUEST_SUMMARY_SUB": "Fasse laute Quests zu einer geplanten Zusammenfassung zusammen",
"SECTION_TEST_ALERTS": "Testbenachrichtigungen",
"SECTION_TEST_ALERTS_SUB": "Beispielbenachrichtigungen senden, um deine Alarme zu testen",
"SECTION_POKEMON_AVAILABILITY": "Pokemon-Verfügbarkeit",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Wenn die vordefinierten Gebiete nicht abdecken, wo du Benachrichtigungen möchtest, kannst du eigene Geofence-Grenzen auf der Karte zeichnen.
Geofence zeichnen
- Gehe über die Seitenleiste zu Meine Geofences.
- Klicke auf Geofence zeichnen.
- Klicke auf die Karte, um Punkte deines Polygons zu setzen. Klicke auf den ersten Punkt, um die Form zu schließen (mindestens 3 Punkte).
- Gib deinem Geofence einen Namen und wähle die zugehörige Region. Die Region wird normalerweise automatisch erkannt.
- Klicke Speichern.
Geofences verwalten
- Bearbeiten — Geofence umbenennen oder Region ändern.
- Löschen — Einen nicht mehr benötigten Geofence entfernen. Er wird automatisch aus allen Profilen entfernt.
Profil-Schalter
Jede Geofence-Karte hat einen Schieberegler zum Aktivieren oder Deaktivieren für dein aktuelles Profil. Wenn du einen Geofence erstellst, wird er automatisch im aktuellen Profil aktiviert. Wechsle zu einem anderen Profil und der Schalter zeigt \\\"Inaktiv\\\" — schalte ihn ein, um auch dort Benachrichtigungen für diesen Geofence zu erhalten. So kannst du steuern, welche Profile Benachrichtigungen für jeden Geofence erhalten, ohne ihn neu erstellen zu müssen.
ℹ️Genehmigte Geofences (zu öffentlichen Gebieten befördert) zeigen keinen Schalter — verwalte sie stattdessen auf der Gebiete-Seite.
GeoJSON Import & Export
Du kannst Geofences im Standard-GeoJSON-Format importieren und exportieren, um Grenzen einfach zu teilen oder in externen Tools wie geojson.io zu erstellen.
- Import — Klicke auf das Upload-Symbol und füge eine GeoJSON-Datei ein oder lade sie hoch. Jedes Polygon in der Datei wird ein neuer Geofence. Du kannst jeden einzelnen vor dem Speichern überprüfen und umbenennen.
- Export — Klicke auf das Download-Symbol und wähle die zu exportierenden Geofences. Die exportierte GeoJSON-Datei enthält alle ausgewählten Polygone und kann in jedem GIS-Tool oder Karteneditor geöffnet werden.
💡GeoJSON-Import ist nützlich zum Migrieren von Geofences aus anderen Systemen oder zum Zeichnen komplexer Grenzen in einem Desktop-GIS-Tool und anschließendem Import hier.
Zur öffentlichen Genehmigung einreichen
Wenn du denkst, dass dein Geofence für die ganze Community nützlich wäre, kannst du ihn zur Admin-Überprüfung einreichen. Bei Genehmigung wird er zu einem öffentlichen Gebiet, das jeder auswählen kann. Dein privater Geofence funktioniert weiterhin, während die Überprüfung aussteht.
Status-Badges
- Aktiv — Dein privater Geofence, nur für dich.
- Überprüfung ausstehend — Eingereicht und wartet auf Admin-Überprüfung.
- Genehmigt — Zu einem öffentlichen Gebiet befördert.
- Abgelehnt — Nicht genehmigt. Du kannst das Admin-Feedback sehen und der Geofence bleibt als private Zone aktiv.
ℹ️Du kannst bis zu 10 eigene Geofences haben, jeweils mit bis zu 500 Grenzpunkten.
",
"CONTENT_POKEMON": "
Pokemon-Alarme benachrichtigen dich, wenn ein wildes Pokemon spawnt, das deinen Filtern entspricht.
Pokemon-Alarm hinzufügen

- Gehe über die Seitenleiste zu Pokemon und klicke auf die +-Schaltfläche.
- Pokemon auswählen — Suche nach Name oder Pokedex-Nummer oder nutze die Generations- und Typ-Filterbuttons zum Durchsuchen. Du kannst mehrere Pokemon auf einmal auswählen.
- Filter setzen — Wähle, was einen Spawn meldungswürdig macht:
- IV-Bereich — Mindest- und Höchst-IV-Prozentsatz (0-100%)
- CP-Bereich — Nach Kampfstärke filtern
- Level-Bereich — Nach Pokemon-Level filtern (0-55)
- Einzelwerte — Nach ATK-, DEF- und STA-Werten filtern (je 0-15)
- Form — Bestimmte Formen verfolgen (z.B. Alolan, Galarian) oder alle Formen
- Geschlecht — Männlich, weiblich, geschlechtslos oder alle
- Gewicht — Nach Gewichtsbereich filtern
- Größe — Nach Größenkategorie filtern: ALLE (kein Filter) für beliebige Größe, oder bestimmte Größen von XXS bis XXL wählen (XXS, XS, Normal, XL, XXL)
ℹ️Standard-Filterwerte sind so gesetzt, dass alle Pokemon passen, wenn keine Filter explizit konfiguriert sind. IV ist z.B. standardmäßig 0-100%, Level 0-55 und Größe ALLE. Du musst nur die Filter anpassen, die dir wichtig sind.
PVP-Filter
Werde benachrichtigt, wenn ein Pokemon gute PVP-IVs hat. Wähle eine Liga (Super, Hyper oder Little Cup) und setze den gewünschten Rangbereich (z.B. Rang 1-50).
\\\"Alle Pokemon\\\"-Alarm
💡Wähle \\\"Alle Pokemon\\\" (ID 0), um einen Alarm für jede Art zu erstellen. Nützlich mit einem hohen IV-Filter wie 96-100%, um jeden wertvollen Spawn zu erwischen.
Alarmkarten lesen
Jede Alarmkarte zeigt farbige Kapseln, die deine Filter auf einen Blick zusammenfassen:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Raid- & Ei-Alarme
Werde benachrichtigt, wenn ein Raid-Boss oder Ei erscheint, der/das dich interessiert.
- Nach Level — Wähle Raid-Level (1-6) oder Ei-Level, um alle Raids dieser Stufe zu verfolgen.
- Nach Boss — Wähle bestimmte Pokemon-Raid-Bosse, die du jagen möchtest.
- Teamfilter — Nur bei Raids an Arenen eines bestimmten Teams benachrichtigen (Mystic, Valor, Instinct).
- Arena-Verfolgung — Raids an bestimmten Arenen nach Name verfolgen, sodass du nur über deine Lieblingsarenen benachrichtigt wirst.
- Attacken-Filter — Raid-Bosse nach ihren Sofort- oder Lade-Attacken filtern.
- RSVP-Benachrichtigungen — Werde benachrichtigt, wenn andere Trainer sich für einen Raid oder ein Ei anmelden, das du verfolgst.
Raid- und Ei-Alarme werden auf getrennten Tabs innerhalb der Raids-Seite verwaltet. Eier unterstützen ebenfalls arenenspezifische Verfolgung und RSVP-Benachrichtigungen.
Max-Kampf-Alarme (Dynamax)
Werde über Dynamax- und Gigantamax-Kämpfe an Power Spots benachrichtigt.
- Nach Level — Wähle Kampfstufen, um beliebige Pokemon auf diesen Stufen zu verfolgen. Stufen reichen von 1 Stern bis 5 Sterne (Legendär) für Dynamax, plus Gigantamax und Legendäres Gigantamax für die größten Kämpfe. Pro ausgewähltem Level wird ein Alarm erstellt.
- Nach Pokemon — Wähle bestimmte Pokemon, die du über alle Max-Kampf-Level bekämpfen möchtest. Wenn die Scanner-Datenbank konfiguriert ist, zeigt die Auswahl nur Pokemon, die bereits in Max-Kämpfen erschienen sind.
- Nur Gigantamax — Beim Verfolgen nach Pokemon aktiviere dies, um nur Benachrichtigungen zu erhalten, wenn dieses Pokemon in Gigantamax-Kämpfen erscheint (die höchststufigen Kämpfe mit einzigartigen G-Max-Attacken). Bei level-basierter Verfolgung wird Gigantamax durch direkte Auswahl der Gigantamax- oder Legendäres-Gigantamax-Level abgedeckt.
- Alle auswählen — Alle verfügbaren Level auf einmal auswählen (entspricht dem Bot-Befehl
!maxbattle everything).
Quest-Alarme
Werde über Feldforschungsaufgaben mit bestimmten Belohnungen benachrichtigt.
- Pokemon-Begegnungen — Wähle Pokemon, die du als Quest-Belohnungen möchtest.
- Items — Verfolge Quests, die bestimmte Items belohnen.
- Mega-Energie — Verfolge Quests, die Mega-Energie für bestimmte Pokemon geben.
- Bonbons — Verfolge Quests, die Bonbons für bestimmte Pokemon belohnen.
Invasions-Alarme
Werde über Team Rocket-Invasionen benachrichtigt.
- Alle verfolgen — Ein Alarm für jeden Rüpel-Typ und Anführer.
- Nach Typ — Wähle bestimmte Rüpel-Typen (Käfer, Drache, Feuer usw.), Rocket-Anführer oder Giovanni. Rüpel-Typnamen werden automatisch normalisiert (Groß-/Kleinschreibung egal), du musst dir also keine Sorgen um die exakte Schreibweise machen.
- Geschlecht — Nach Rüpel-Geschlecht filtern.
Lockmodul-Alarme
Werde benachrichtigt, wenn ein bestimmtes Lockmodul platziert wird. Wähle aus Normal, Gletscher, Moos, Magnet, Regen und Gold.
Nest-Alarme
Verfolge nistende Pokemon-Arten. Setze einen Mindest-Spawns pro Stunde-Schwellenwert, damit du nur über Nester mit ausreichend Aktivität benachrichtigt wirst.
Arena-Alarme
Verfolge Arena-Teamwechsel. Wähle die zu überwachenden Teams (Neutral, Mystic, Valor, Instinct). Aktiviere Platzänderungen, um benachrichtigt zu werden, wenn Arena-Plätze frei werden, oder aktiviere Kampfänderungen, um benachrichtigt zu werden, wenn eine Arena angegriffen wird.
Fort-Änderungs-Alarme
Verfolge Änderungen an PokéStops und Arenen selbst — nicht die Aktivitäten dort, sondern Änderungen an den eigentlichen Points of Interest.
- Fort-Typ — Wähle PokéStops, Arenen oder alles.
- Änderungstypen — Wähle zu überwachende Änderungen: Name geändert, Standort geändert, Bild geändert, Entfernung oder neues Fort hinzugefügt.
- Leere einschließen — Forts ohne gesetzten Namen einschließen.
💡Fort-Änderungs-Alarme sind nützlich, um Kartendatenbank-Aktualisierungen zu verfolgen — neue PokéStops, verlegte Arenen oder aus dem Spiel entfernte POIs.
Bestimmte Arena auswählen
Beim Erstellen oder Bearbeiten eines Raid-, Ei- oder Arena-Alarms kannst du optional nach einer bestimmten Arena suchen und sie auswählen. Das ist nützlich, wenn du dich nur für Aktivitäten an deiner Lieblingsarena interessierst — z.B. die auf deinem Weg zur Mittagspause oder in der Nähe deines Zuhauses.
- Verwendung — Gib im Hinzufügen- oder Bearbeiten-Dialog einen Arena-Namen in das Arena-Suchfeld ein. Ergebnisse zeigen Foto, Name und Gebiet der Arena, damit du die richtige identifizieren kannst.
- Wenn eine Arena ausgewählt ist — Der Alarm feuert nur bei Ereignissen an dieser bestimmten Arena. Der Arena-Name erscheint auf der Alarmkarte in deiner Liste, damit du auf einen Blick siehst, welche Arena er verfolgt.
- Wenn keine Arena ausgewählt ist — Das ist der Standard. Der Alarm funktioniert normal für alle Arenen in deinen ausgewählten Gebieten oder innerhalb deines Entfernungsradius.
💡Du kannst einen arenenspezifischen Alarm mit einem breiteren Alarm kombinieren. Erstelle z.B. einen Raid-Alarm für deine lokale Arena für alle Level und einen zweiten Alarm für Level-5-Raids in allen deinen Gebieten.
",
- "CONTENT_DELIVERY": "
Jeder Alarm hat Zustellungseinstellungen, die steuern, wo du benachrichtigt wirst.
Gebiete vs. Entfernung
Jeder Alarm nutzt einen von zwei Zustellungsmodi:
🗺
Gebiete verwendenBenachrichtigung bei Ereignissen in deinen ausgewählten Gebieten. Gut für bestimmte Viertel.📏
Entfernung festlegenBenachrichtigung innerhalb eines Radius (km) um deinen gespeicherten Standort. Gut für alles in deiner Nähe.Du kannst verschiedene Modi für verschiedene Alarme nutzen — z.B. Gebiete für Pokemon und Entfernung für Raids.
Benachrichtigungsvorlagen
Wenn Vorlagen aktiviert sind, kannst du das Aussehen deiner Benachrichtigungen wählen. Die Vorlagenauswahl zeigt eine Live-Vorschau, wie deine Discord-DM aussehen wird, einschließlich Embed-Format, Feldern und Bildern.
Aufräummodus
Wenn aktiviert, löscht der Bot die Benachrichtigung automatisch aus Discord, wenn das Ereignis abläuft (z.B. ein Pokemon despawnt oder ein Raid endet). Das hält deine DMs aufgeräumt. Du kannst den Aufräummodus pro Alarm oder in Masse auf der Aufräumen-Seite aktivieren.
Ping / Rollenerwähnungen
Wenn du Webhooks nutzt, kannst du eine Discord-Rolle festlegen, die in der Benachrichtigung erwähnt wird (z.B. @Pokemon). Das ist nur für Webhook-Setups relevant.
",
+ "CONTENT_DELIVERY": "
Jeder Alarm hat Zustellungseinstellungen, die steuern, wo du benachrichtigt wirst.
Gebiete vs. Entfernung
Jeder Alarm nutzt einen von zwei Zustellungsmodi:
🗺
Gebiete verwendenBenachrichtigung bei Ereignissen in deinen ausgewählten Gebieten. Gut für bestimmte Viertel.📏
Entfernung festlegenBenachrichtigung innerhalb eines Radius (km) um deinen gespeicherten Standort. Gut für alles in deiner Nähe.Du kannst verschiedene Modi für verschiedene Alarme nutzen — z.B. Gebiete für Pokemon und Entfernung für Raids.
Benachrichtigungsvorlagen
Wenn Vorlagen aktiviert sind, kannst du das Aussehen deiner Benachrichtigungen wählen. Die Vorlagenauswahl zeigt eine Live-Vorschau, wie deine Discord-DM aussehen wird, einschließlich Embed-Format, Feldern und Bildern.
Aufräummodus
Wenn aktiviert, löscht der Bot die Benachrichtigung automatisch aus Discord, wenn das Ereignis abläuft (z.B. ein Pokemon despawnt oder ein Raid endet). Das hält deine DMs aufgeräumt. Du kannst den Aufräummodus pro Alarm oder in Masse auf der Aufräumen-Seite aktivieren.
Ping / Rollenerwähnungen
Wenn du Webhooks nutzt, kannst du eine Discord-Rolle festlegen, die in der Benachrichtigung erwähnt wird (z.B. @Pokemon). Das ist nur für Webhook-Setups relevant.
Direkt bearbeiten & Zusammenfassungen
Einige Alarme unterstützen zusätzliche Zustellmodi. Aktiviere Nachricht direkt bearbeiten für einen Lockmodul-Alarm, damit die bestehende Discord-Nachricht aktualisiert wird, wenn sich das Lockmodul ändert, statt eine neue zu senden, oder Tägliche Zusammenfassung für eine Quest, um passende Quests in einer Sammelnachricht zu bündeln (erfordert einen Zusammenfassungsplan im Bot). Raids und Eier werden automatisch direkt bearbeitet, wenn du einen RSVP-Modus wählst. Diese Einstellungen bleiben erhalten, auch wenn du sie über den Bot setzt.
RSVP-Updates (Raids & Eier)
Raid- und Ei-Alarme ergänzen im Hinzufügen-/Bearbeiten-Dialog eine Einstellung RSVP-Benachrichtigungen mit drei Optionen: Nur Treffer sendet normale Raid-/Ei-Benachrichtigungen; Treffer + RSVP-Updates benachrichtigt zusätzlich erneut, wenn sich die RSVP-Zahlen ändern (Trainer melden sich an); und Nur RSVP-Updates überspringt den ersten Treffer und benachrichtigt dich nur bei RSVP-Änderungen. Wenn du einen der RSVP-Modi wählst, bearbeitet der Bot die bestehende Discord-Nachricht direkt, während sich die Zahlen ändern, statt neue zu senden, und auf der Karte erscheint eine "RSVP"- oder "Nur RSVP"-Plakette. Beachte, dass Nur RSVP-Updates stumm bleibt, sofern der Scanner deiner Community keine RSVP-Ereignisse aussendet — wähle diesen Modus nur, wenn du weißt, dass RSVPs gemeldet werden.
",
+ "CONTENT_QUEST_SUMMARY": "Feldforschungs-Quests wechseln täglich und können in großer Zahl zutreffen, sodass ein voller Quest-Filter deine DMs überfluten kann. Zustellung der Quest-Zusammenfassung sammelt passende Quests in einer geplanten Zusammenfassung statt vieler einzelner Benachrichtigungen.
Zwei Teile, die zusammenarbeiten
- Schalter „Tägliche Zusammenfassung“ — aktiviere ihn für einen Quest-Alarm (in dessen Hinzufügen/Bearbeiten-Dialog), um dessen Treffer für die Zusammenfassung zu markieren statt sie sofort zuzustellen.
- Zustellungsplan — lege fest, wann die gesammelten Quests gesendet werden.
Beides ist nötig: Der Schalter bestimmt, welche Quests gesammelt werden, der Plan bestimmt, wann sie zugestellt werden.
Plan einrichten
Öffne die Seite Quests, dann das Menü ⋮ in der Symbolleiste und wähle Zustellung der Quest-Zusammenfassung. Mit Plan bearbeiten wählst du Tage und Uhrzeiten — derselbe Editor wie für die aktiven Zeiten von Profilen. Gespeicherte Zeiten erscheinen als bernsteinfarbene Chips.
Der Plan gilt pro Benutzer und wird über alle deine Profile hinweg geteilt — anders als die aktiven Zeiten von Profilen, die pro Profil eingestellt werden.
Zusammenfassung jetzt senden
Zusammenfassung jetzt senden liefert sofort alles, was seit deiner letzten Zusammenfassung gesammelt wurde. Wurde noch nichts gesammelt, wird nichts gesendet — Quests werden gepuffert, sobald sie zutreffen, gib ihm also Zeit oder warte, bis der Plan ausgelöst wird.
Gut zu wissen
- Das Menü erscheint nur, wenn der Bot deines Servers Quest-Zusammenfassungen aktiviert hat.
- Der Zustellzeitpunkt nutzt deinen gespeicherten Standort für die Zeitzone — lege einen Standort fest, sonst können Zusammenfassungen zur falschen Ortszeit ankommen (der Dialog warnt dich, wenn kein Standort gesetzt ist).
- Das Entfernen des Plans behält den Schalter pro Alarm bei; Quests werden weiterhin gesammelt, fallen aber auf die Standardzeit des Bots zurück.
",
"CONTENT_TEST_ALERTS": "Jede Alarmkarte hat einen Test-Button (Papierflieger-Symbol), der eine Beispielbenachrichtigung an dein Discord oder Telegram sendet, basierend auf den genauen Filtern des Alarms und deiner aktuellen Zustellungsvorlage.
Funktionsweise
- Finde eine Alarmkarte in deiner Liste (Pokemon, Raid, Quest usw.).
- Klicke auf das Senden-Symbol in der Aktionszeile der Karte.
- Ein simuliertes Ereignis, das deinen Alarmfiltern entspricht, wird generiert und durch die Benachrichtigungspipeline gesendet. Du erhältst eine DM wie bei einem echten Alarm.
Was getestet wird
Der Test verwendet die Filterwerte deines Alarms (Pokemon-ID, Raid-Level, Quest-Belohnung usw.) und deinen gespeicherten Standort als Ereigniskoordinaten. Die Benachrichtigung wird mit deiner gewählten Vorlage formatiert, sodass du genau siehst, wie ein echter Alarm aussehen würde.
Abklingzeit
Um Spam zu vermeiden, hat jeder Alarm eine 15-Sekunden-Abklingzeit zwischen Testsendungen. Der Button ist während der Abklingzeit deaktiviert und eine Snackbar zeigt Feedback (Erfolg, Fehler oder verbleibende Abklingzeit).
💡Testalarme sind ideal, um zu überprüfen, ob deine Vorlage richtig aussieht oder ob deine Webhook-Zustellung funktioniert, bevor du auf ein echtes Ereignis wartest.
",
"CONTENT_POKEMON_AVAILABILITY": "Beim Hinzufügen oder Bearbeiten von Pokemon-Alarmen kann die Pokemon-Auswahl Verfügbarkeitsindikatoren anzeigen — kleine Badges, die zeigen, welche Pokemon gerade in der Wildnis spawnen.
Funktionsweise
Wenn deine Community einen Golbat-Scanner konfiguriert hat, zeigt die Auswahl farbige Punkte neben Pokemon-Namen:
- Grüner Punkt — Dieses Pokemon wurde kürzlich beim Spawnen gesehen.
- Kein Punkt — Derzeit nicht in den Scanner-Daten gemeldet.
Das hilft dir, Alarme für Pokemon zu vermeiden, die gerade nicht in deinem Gebiet spawnen (z.B. saisonale oder eventexklusive Arten).
Aktualisierung der Verfügbarkeit
Die Daten werden automatisch im Hintergrund aktualisiert. Du musst nichts tun — achte einfach auf die Punkte beim Durchsuchen der Pokemon-Auswahl.
ℹ️Diese Funktion ist nur sichtbar, wenn dein Admin die Golbat-Scanner-Integration konfiguriert hat. Wenn du keine Verfügbarkeitspunkte siehst, ist die Funktion für deine Community nicht aktiviert.
",
"CONTENT_BULK": "
Alle Alarmseiten unterstützen Massenoperationen, um viele Alarme gleichzeitig zu verwalten.
Auswahlmodus
Klicke auf das Checklisten-Symbol in der Symbolleiste, um den Auswahlmodus zu aktivieren. Klicke dann auf einzelne Alarmkarten, um sie auszuwählen, oder nutze Alle auswählen, um alles Sichtbare zu erfassen.
Massenaktionen
- Entfernung aktualisieren — Zustellungsmodus (Gebiete oder Entfernung) für alle ausgewählten Alarme gleichzeitig ändern.
- Löschen — Alle ausgewählten Alarme mit einer Bestätigung entfernen.
💡Am Ende jeder Alarmliste findest du auch Alle Entfernungen aktualisieren und Alle löschen-Buttons, die für jeden Alarm dieses Typs gelten.
",
@@ -1075,6 +1153,9 @@
"SIGN_IN_DESC": "Melde dich an, um deine Pokemon GO-Benachrichtigungsalarme zu verwalten.",
"SIGN_IN_DISCORD": "Mit Discord anmelden",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Mit {{provider}} anmelden",
+ "SIGNED_OUT_TITLE": "Abgemeldet",
+ "SIGNED_OUT_DESC": "Du wurdest von DM Alerts abgemeldet.",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1171,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "Die externe Anmeldung ist derzeit deaktiviert.",
+ "ERR_OIDC_NO_IDENTITY": "Dein externer Anmeldeanbieter hat kein Konto zurückgegeben, das wir zuordnen können. Stelle sicher, dass dein Discord-Konto verknüpft ist.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Die externe Anmeldung ist fehlgeschlagen. Bitte versuche es erneut.",
+ "ERR_OIDC_USERINFO": "Dein Profil konnte nicht vom externen Anmeldeanbieter abgerufen werden. Bitte versuche es erneut.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Bearbeiten",
"ADD": "Hinzufügen",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Bestätigen",
"DELETE_ALL": "Alle löschen",
"CLOSE": "Schließen",
@@ -1417,37 +1503,39 @@
"CUSTOM_PAGE_URL_DESC": "URL, auf die der benutzerdefinierte Navigationslink verweist.",
"CUSTOM_PAGE_ICON_LABEL": "Navigationslink-Symbol",
"CUSTOM_PAGE_ICON_DESC": "FontAwesome-Klasse für das Navigationslink-Symbol (z. B. „fas fa-map“).",
- "DISABLE_MONS_LABEL": "Pokémon deaktivieren",
- "DISABLE_MONS_DESC": "Pokémon-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_RAIDS_LABEL": "Raids deaktivieren",
- "DISABLE_RAIDS_DESC": "Raid-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_QUESTS_LABEL": "Aufgaben deaktivieren",
- "DISABLE_QUESTS_DESC": "Aufgaben-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_INVASIONS_LABEL": "Invasionen deaktivieren",
- "DISABLE_INVASIONS_DESC": "Invasions-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_LURES_LABEL": "Lockmodule deaktivieren",
- "DISABLE_LURES_DESC": "Lockmodul-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_NESTS_LABEL": "Nester deaktivieren",
- "DISABLE_NESTS_DESC": "Nest-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_GYMS_LABEL": "Arenen deaktivieren",
- "DISABLE_GYMS_DESC": "Arena-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_FORT_CHANGES_LABEL": "Fort-Änderungen deaktivieren",
- "DISABLE_FORT_CHANGES_DESC": "Verwaltung von Fort-Änderungsalarmen für alle Benutzer ausblenden.",
- "DISABLE_MAXBATTLES_LABEL": "Dynamax-Kämpfe deaktivieren",
- "DISABLE_MAXBATTLES_DESC": "Dynamax-Kampf-Alarmverwaltung für alle Benutzer ausblenden.",
- "DISABLE_AREAS_LABEL": "Gebiete deaktivieren",
- "DISABLE_AREAS_DESC": "Benutzer daran hindern, ihre Gebietsabonnements zu verwalten.",
- "DISABLE_PROFILES_LABEL": "Profile deaktivieren",
- "DISABLE_PROFILES_DESC": "Benutzer daran hindern, Alarmprofile zu erstellen und zu wechseln.",
- "DISABLE_LOCATION_LABEL": "Standort deaktivieren",
- "DISABLE_LOCATION_DESC": "Benutzer daran hindern, einen Heimatstandort festzulegen.",
- "DISABLE_NOMINATIM_LABEL": "Geocoding deaktivieren",
- "DISABLE_NOMINATIM_DESC": "Nominatim-Adresssuche für die Standortauswahl deaktivieren.",
- "DISABLE_GEOMAP_LABEL": "Kartenansicht deaktivieren",
- "DISABLE_GEOMAP_DESC": "Interaktive Geofence-Karte vollständig ausblenden.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Gebietsauswahl auf Karte deaktivieren",
- "DISABLE_GEOMAP_SELECT_DESC": "Benutzer daran hindern, Gebiete durch Klicken auf die Karte auszuwählen.",
- "ENABLE_TEMPLATES_LABEL": "Vorlagen aktivieren",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Benutzern erlauben, Pokémon-Alarme zu verwalten.",
+ "DISABLE_RAIDS_LABEL": "Raids",
+ "DISABLE_RAIDS_DESC": "Benutzern erlauben, Raid-Alarme zu verwalten.",
+ "DISABLE_QUESTS_LABEL": "Aufgaben",
+ "DISABLE_QUESTS_DESC": "Benutzern erlauben, Aufgaben-Alarme zu verwalten.",
+ "DISABLE_INVASIONS_LABEL": "Invasionen",
+ "DISABLE_INVASIONS_DESC": "Benutzern erlauben, Invasions-Alarme zu verwalten.",
+ "DISABLE_LURES_LABEL": "Lockmodule",
+ "DISABLE_LURES_DESC": "Benutzern erlauben, Lockmodul-Alarme zu verwalten.",
+ "DISABLE_NESTS_LABEL": "Nester",
+ "DISABLE_NESTS_DESC": "Benutzern erlauben, Nest-Alarme zu verwalten.",
+ "DISABLE_GYMS_LABEL": "Arenen",
+ "DISABLE_GYMS_DESC": "Benutzern erlauben, Arena-Alarme zu verwalten.",
+ "DISABLE_FORT_CHANGES_LABEL": "Fort-Änderungen",
+ "DISABLE_FORT_CHANGES_DESC": "Benutzern erlauben, Fort-Änderungsalarme zu verwalten.",
+ "DISABLE_MAXBATTLES_LABEL": "Dynamax-Kämpfe",
+ "DISABLE_MAXBATTLES_DESC": "Benutzern erlauben, Dynamax-Kampf-Alarme zu verwalten.",
+ "DISABLE_AREAS_LABEL": "Gebiete",
+ "DISABLE_AREAS_DESC": "Benutzern erlauben, ihre Gebietsabonnements zu verwalten.",
+ "DISABLE_PROFILES_LABEL": "Profile",
+ "DISABLE_PROFILES_DESC": "Benutzern erlauben, Alarmprofile zu erstellen und zu wechseln.",
+ "DISABLE_LOCATION_LABEL": "Standort",
+ "DISABLE_LOCATION_DESC": "Benutzern erlauben, einen Heimatstandort festzulegen.",
+ "DISABLE_NOMINATIM_LABEL": "Geocoding",
+ "DISABLE_NOMINATIM_DESC": "Nominatim-Adresssuche für die Standortauswahl erlauben.",
+ "DISABLE_GEOMAP_LABEL": "Kartenansicht",
+ "DISABLE_GEOMAP_DESC": "Die interaktive Geofence-Karte anzeigen.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Gebietsauswahl auf Karte",
+ "DISABLE_GEOMAP_SELECT_DESC": "Benutzern erlauben, Gebiete durch Klicken auf die Karte auszuwählen.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Eigene Geofences",
+ "DISABLE_USER_GEOFENCES_DESC": "Benutzern erlauben, eigene Geofences zu zeichnen, zu importieren und einzureichen. Bestehende Geofences bleiben aktiv.",
+ "ENABLE_TEMPLATES_LABEL": "Vorlagen",
"ENABLE_TEMPLATES_DESC": "Benutzern erlauben, Benachrichtigungsvorlagen auszuwählen.",
"ALLOWED_LANGUAGES_LABEL": "Erlaubte UI-Sprachen",
"ALLOWED_LANGUAGES_DESC": "Kommagetrennte Sprachcodes, die im Sprachauswahl-Menü angezeigt werden (z. B. „en,de,fr,es“). Leer lassen, um alle 11 Sprachen anzuzeigen.",
@@ -1455,8 +1543,6 @@
"ENABLE_ROLES_DESC": "Nur Benutzer mit bestimmten Discord-Rollen dürfen sich anmelden. Erfordert Bot-Token und Guild-ID.",
"ALLOWED_ROLE_IDS_LABEL": "Zulässige Rollen-IDs",
"ALLOWED_ROLE_IDS_DESC": "Kommagetrennte Discord-Rollen-IDs, die Zugriff gewähren (z. B. „123456789,987654321“). Leer lassen, um alle zuzulassen.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Erlaubte Sprachen",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Kommagetrennte Liste der Sprachcodes, die Benutzer auswählen können (z. B. „en,de,fr“).",
"REGISTER_COMMAND_LABEL": "Registrierungsbefehl",
"REGISTER_COMMAND_DESC": "Poracle-Bot-Befehl, den Benutzer zur Registrierung ausführen (z. B. „$!register“).",
"LOCATION_COMMAND_LABEL": "Standortbefehl",
@@ -1467,6 +1553,28 @@
"TELEGRAM_BOT_DESC": "Telegram-Bot-Benutzername (ohne @).",
"ENABLE_DISCORD_LABEL": "Discord-Anmeldung aktivieren",
"ENABLE_DISCORD_DESC": "Discord-Anmeldung auf dieser Website zulassen. Erfordert Discord Client ID und Client Secret in .env (Server-Neustart nach .env-Änderungen erforderlich). Betrifft nicht die PoracleNG-Bot-Zustellung.",
+ "ENABLE_OIDC_LABEL": "Externe SSO-Anmeldung aktivieren",
+ "ENABLE_OIDC_DESC": "Anmeldung über den konfigurierten externen OIDC/OAuth2-Anbieter zulassen. Erfordert OIDC_*-Einstellungen (Anbieter-URLs, Client ID und Secret) in .env (Server-Neustart nach .env-Änderungen erforderlich).",
+ "GROUP_OIDC": "Externes SSO",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Alle Benutzer werden zum externen SSO-Anbieter weitergeleitet. Die lokale Anmeldung wird übersprungen.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Zu SSO wechseln",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Zur SSO-Anmeldung wechseln?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Nach dem Speichern werden alle Benutzer (einschließlich Administratoren) zur Anmeldung an {{provider}} weitergeleitet — die lokale Discord-/Telegram-Anmeldeseite wird übersprungen. Wenn der Anbieter nicht erreichbar ist, kannst du ausgesperrt werden; stelle den Zugriff wieder her, indem du AUTH_FORCE_LOCAL=true in der Serverumgebung setzt.",
+ "AUTH_OIDC_NOT_CONFIGURED": "SSO ist nicht verfügbar, bis der OIDC-Anbieter in der Serverumgebung konfiguriert ist (OIDC_*-Umgebungsvariablen).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord und Telegram werden ausgeblendet, solange SSO der aktive Anmeldemodus ist.",
+ "AUTH_SLO_LABEL": "Einmalabmeldung",
+ "AUTH_SLO_DESC": "Wenn aktiviert, beendet „Überall abmelden“ auch die Anbietersitzung (nicht nur diese Website). Erfordert den End-Session-Endpunkt des Anbieters (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Die Einmalabmeldung ist nicht verfügbar, bis der End-Session-Endpunkt des Anbieters konfiguriert ist (OIDC_END_SESSION_URL-Umgebungsvariable).",
+ "OIDC_SERVER_CONFIG": "OIDC-Anbieterkonfiguration",
+ "OIDC_PROVIDER_LABEL": "Anbietername",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization-URL",
+ "OIDC_TOKEN_URL_LABEL": "Token-URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo-URL",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identitäts-Claim",
+ "OIDC_USE_PKCE_LABEL": "PKCE verwenden",
"PROVIDER_URL_LABEL": "Kartenkachel-URL",
"PROVIDER_URL_DESC": "URL-Vorlage für den Kartenkachel-Anbieter (für statische Karten).",
"GANALYTICSID_LABEL": "Google Analytics-ID",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "Admin-IDs",
"DISCORD_ADMIN_IDS_DESC": "Discord-Benutzer-IDs mit Admin-Zugriff (maskiert).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Geofence-Forumskanal",
- "DISCORD_GEOFENCE_FORUM_DESC": "Discord-Forumskanal für Geofence-Einreichungsthreads."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Discord-Forumskanal für Geofence-Einreichungsthreads.",
+ "SEARCH_PLACEHOLDER": "Einstellungen durchsuchen…",
+ "SEARCH_CLEAR": "Suche löschen",
+ "UNSAVED_CHANGES": "{{count}} ungespeichert",
+ "SAVE_CHANGES": "Änderungen speichern",
+ "DISCARD_CHANGES": "Verwerfen",
+ "COLLAPSE_SECTION": "Abschnitt einklappen",
+ "EXPAND_SECTION": "Abschnitt ausklappen",
+ "SUMMARY_ENABLED": "{{count}} von {{total}} aktiviert"
},
"GEOFENCE_DETAIL": {
"NAME": "Name",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Ihr Standort",
"SELECTED_COUNT": "{{count}} ausgewählt:",
"AREAS_SELECTED": "{{count}} Gebiet(e) ausgewählt"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Benachrichtigungs-Standards",
+ "DESC": "Lege fest, wie neue Benachrichtigungen standardmäßig zugestellt werden. Beim Erstellen jeder Benachrichtigung kannst du dies weiterhin ändern.",
+ "DEFAULT_DISTANCE": "Standard-Entfernung",
+ "DEFAULT_DISTANCE_HINT": "Wird verwendet, um den Radius für neue entfernungsbasierte Benachrichtigungen vorzubelegen.",
+ "FOOTNOTE": "Gilt nur für neu erstellte Benachrichtigungen – bestehende bleiben unverändert."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/en.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/en.json
index c8d7f005..de4ab4f7 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/en.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/en.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Accent Theme",
"LANGUAGE": "Language",
"LOGOUT": "Logout",
+ "LOGOUT_EVERYWHERE": "Sign out everywhere",
"ACCENT_DEFAULT": "Default",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Alert Defaults"
},
"SHORTCUTS": {
"TITLE": "Keyboard Shortcuts",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Form & Gender",
"LABEL_FORM": "Form",
"ALL_FORMS": "All Forms",
+ "FORM_MULTI_HINT": "Leave empty to match all forms",
"LABEL_GENDER": "Gender",
"GENDER_ALL": "All",
"GENDER_MALE": "Male",
@@ -255,6 +258,10 @@
"PVP_MIN_CP": "Min CP for League",
"PVP_MIN_CP_HINT": "Only alert if evolved CP meets this minimum",
"PVP_DISABLED_HINT": "Select a league to filter by PVP rank.",
+ "PVP_CAP": "Level Cap",
+ "PVP_CAP_ALL": "All",
+ "PVP_CAP_LEVEL": "L{{level}}",
+ "PVP_CAP_HINT_DEFAULT": "Default · from Poracle config",
"SNACK_CREATED": "{{count}} Pokemon alarm(s) created",
"SNACK_UPDATED": "Pokemon alarm updated",
"SNACK_DELETED": "Pokemon alarm deleted",
@@ -339,6 +346,15 @@
"COMMON_SETTINGS": "Common Settings"
},
"RAIDS": {
+ "RSVP_LABEL": "RSVP notifications",
+ "RSVP_OFF": "Matches only",
+ "RSVP_INCLUDE": "Matches + RSVP updates",
+ "RSVP_ONLY": "RSVP updates only",
+ "RSVP_OFF_DESC": "Standard raid/egg alerts only.",
+ "RSVP_INCLUDE_DESC": "Also re-notify when RSVP counts change.",
+ "RSVP_ONLY_DESC": "Skip initial matches; only notify on RSVP changes. Without an RSVP-emitting scanner this silences the alarm.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "RSVP only",
"PAGE_TITLE": "Raid & Egg Alarms",
"PAGE_DESC": "Get notified about raid bosses and egg hatches at nearby gyms.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +417,47 @@
"CONFIRM_DELETE_ALL_MSG": "Are you sure you want to delete ALL raid and egg alarms? This action cannot be undone.",
"CONFIRM_BULK_DELETE_TITLE": "Delete Selected Alarms",
"CONFIRM_BULK_DELETE_MSG": "Are you sure you want to delete {{count}} alarms?",
- "CONFIRM_DELETE_SELECTED": "Delete Selected"
+ "CONFIRM_DELETE_SELECTED": "Delete Selected",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Quest Alarms",
@@ -453,7 +509,23 @@
"SNACK_DELETED_ALL": "All quest alarms deleted",
"SNACK_FAILED_DELETE_ALL": "Failed to delete alarms",
"SNACK_FAILED_DISTANCE": "Failed to update distances",
- "CONFIRM_DELETE_SELECTED": "Delete Selected"
+ "CONFIRM_DELETE_SELECTED": "Delete Selected",
+ "SUMMARY_MODE": "Daily summary",
+ "SUMMARY_HINT": "Collect matching quests into a single summary message instead of one notification each. Requires a configured summary schedule on the bot.",
+ "SUMMARY_BADGE": "Summary",
+ "SUMMARY_SCHEDULE": "Quest summary delivery",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Quest summary",
+ "SUMMARY_SCHEDULE_EMPTY": "No summary schedule set. Quests are delivered individually.",
+ "SUMMARY_SCHEDULE_EDIT": "Edit schedule",
+ "SUMMARY_SCHEDULE_CLEAR": "Remove schedule",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Send summary now",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Delivers quest matches collected since your last summary. If none are buffered yet, nothing is sent.",
+ "SUMMARY_SCHEDULE_SAVED": "Summary schedule saved",
+ "SUMMARY_SCHEDULE_CLEARED": "Summary schedule removed",
+ "SUMMARY_SCHEDULE_SENT": "Summary sent",
+ "SUMMARY_SCHEDULE_FAILED": "Couldn't update the summary schedule",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "Summary delivery is temporarily unavailable. Please try again later.",
+ "SUMMARY_DISABLED_HINT": "Summary scheduling isn't available on this server."
},
"INVASIONS": {
"PAGE_TITLE": "Invasion Alarms",
@@ -561,7 +633,10 @@
"TYPE_MAGNETIC": "Magnetic",
"TYPE_RAINY": "Rainy",
"TYPE_GOLDEN": "Golden",
- "TYPE_UNKNOWN": "Lure #{{id}}"
+ "TYPE_UNKNOWN": "Lure #{{id}}",
+ "EDIT_MODE": "Edit message in place",
+ "EDIT_HINT": "Update the existing Discord message when the lure changes instead of sending a new one.",
+ "EDIT_BADGE": "Edit"
},
"NESTS": {
"PAGE_TITLE": "Nest Alarms",
@@ -699,6 +774,10 @@
"CHANGE_LOCATION": "Change",
"SET_LOCATION": "Set",
"METHOD_NOTE": "Each alarm chooses one method in its Delivery tab.",
+ "NOTIFICATION_LANGUAGE": "Notification language",
+ "NOTIFICATION_LANGUAGE_DESC": "The language Poracle uses for your alert messages and Pokémon names. This is separate from the display language in the top menu.",
+ "SNACK_LANGUAGE_UPDATED": "Notification language updated",
+ "SNACK_LANGUAGE_FAILED": "Failed to update notification language",
"SELECT_AREAS": "Select Areas",
"MAP_VIEW": "Map",
"LIST_VIEW": "List",
@@ -897,6 +976,7 @@
"NAME_WHITESPACE_ERROR": "Name cannot be only whitespace",
"NAME_INVALID_CHARS_ERROR": "Only letters, numbers, spaces, hyphens, apostrophes, and parentheses allowed",
"REGION_LABEL": "Region",
+ "REGION_OPTIONAL_HINT": "Optional — used only if an admin later approves this geofence as a public area.",
"CHANGE_REGION": "Change",
"SELECT_REGION": "Select Region",
"SEARCH_REGIONS": "Search regions...",
@@ -1032,6 +1112,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, eggs, quests, rockets, lures, nests, gyms, fort changes",
"SECTION_DELIVERY": "Delivery Settings",
"SECTION_DELIVERY_SUB": "Areas vs distance, templates, and clean mode",
+ "SECTION_QUEST_SUMMARY": "Quest Summary Delivery",
+ "SECTION_QUEST_SUMMARY_SUB": "Batch noisy quests into one scheduled digest",
"SECTION_TEST_ALERTS": "Test Alerts",
"SECTION_TEST_ALERTS_SUB": "Send sample notifications to preview your alarms",
"SECTION_POKEMON_AVAILABILITY": "Pokemon Availability",
@@ -1057,7 +1139,8 @@
"CONTENT_GEOFENCES": "
If the predefined areas don't cover where you want alerts, you can draw your own custom geofence boundaries on the map.
Drawing a Geofence
- Go to My Geofences from the sidebar.
- Click Draw Geofence.
- Click on the map to place points of your polygon boundary. Click the first point again to close the shape (minimum 3 points).
- Give your geofence a name and select which region it belongs to. The region is usually auto-detected for you.
- Click Save.
Managing Geofences
- Edit — Rename your geofence or change its region.
- Delete — Remove a geofence you no longer need. The geofence is removed from all profiles automatically.
Profile Toggle
Each geofence card has a slide toggle to activate or deactivate it for your current profile. When you create a geofence, it's automatically activated on the profile you're using. Switch to another profile and the toggle will show \"Inactive\" — flip it on to receive alerts for that geofence on that profile too. This lets you control which profiles get notifications for each geofence without recreating it.
ℹ️Approved geofences (promoted to public areas) don't show the toggle — manage them from the Areas page instead.
GeoJSON Import & Export
You can import and export geofences using the standard GeoJSON format, making it easy to share boundaries or create them in external tools like geojson.io.
- Import — Click the upload icon and paste or upload a GeoJSON file. Each polygon in the file becomes a new geofence. You can review and rename each one before saving.
- Export — Click the download icon and select which geofences to include. The exported GeoJSON file contains all selected polygons and can be opened in any GIS tool or map editor.
💡GeoJSON import is useful for migrating geofences from other systems or drawing complex boundaries in a desktop GIS tool and then importing them here.
Submitting for Public Approval
If you think your geofence would be useful for the whole community, you can submit it for admin review. If approved, it becomes a public area everyone can select. Your private geofence continues working while the review is pending.
Status Badges
- Active — Your private geofence, working for you only.
- Pending Review — Submitted and waiting for admin review.
- Approved — Promoted to a public area.
- Rejected — Not approved. You can see the admin's feedback and the geofence remains active as a private zone.
ℹ️You can have up to 10 custom geofences, each with up to 500 boundary points.
",
"CONTENT_POKEMON": "
Pokemon alarms notify you when a wild Pokemon spawns that matches your filters.
Adding a Pokemon Alarm

- Go to Pokemon from the sidebar and click the + button.
- Select Pokemon — Search by name or Pokedex number, or use the generation and type filter buttons to browse. You can select multiple Pokemon at once.
- Set Filters — Choose what makes a spawn worth notifying about:
- IV range — Minimum and maximum IV percentage (0-100%)
- CP range — Filter by combat power
- Level range — Filter by Pokemon level (0-55)
- Individual stats — Filter by ATK, DEF, and STA values (0-15 each)
- Form — Track specific forms (e.g. Alolan, Galarian) or all forms
- Gender — Male, female, genderless, or all
- Weight — Filter by weight range
- Size — Filter by size category: select ALL (no filter) to match any size, or pick specific sizes from XXS through XXL (XXS, XS, Normal, XL, XXL)
ℹ️Default filter values are set so that all Pokemon match when no filters are explicitly configured. For example, IV defaults to 0-100%, level to 0-55, and size to ALL. You only need to adjust the filters you care about.
PVP Filters
Get notified when a Pokemon has great PVP IVs. Select a league (Great, Ultra, or Little Cup) and set the rank range you care about (e.g. rank 1-50).
\"All Pokemon\" Alarm
💡Select \"All Pokemon\" (ID 0) to create one alarm that covers every species. Useful with a high IV filter like 96-100% to catch any valuable spawn.
Reading Alarm Cards
Each alarm card shows colored pills summarizing your filters at a glance:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Raid & Egg Alarms
Get notified when a raid boss or egg appears that you're interested in.
- By Level — Select raid levels (1-6) or egg levels to track all raids of that tier.
- By Boss — Select specific Pokemon raid bosses you want to hunt.
- Team filter — Only notify for raids at gyms controlled by a specific team (Mystic, Valor, Instinct).
- Gym tracking — Track raids at specific gyms by name so you only get notified about your favorite gyms.
- Move filter — Filter raid bosses by their fast or charged moves.
- RSVP notifications — Get notified when other trainers RSVP to a raid or egg you're tracking.
Raid and Egg alarms are managed on separate tabs within the Raids page. Eggs also support gym-specific tracking and RSVP notifications.
Max Battle (Dynamax) Alarms
Get notified about Dynamax and Gigantamax battles at Power Spots.
- By Level — Select battle tiers to track any Pokemon at those levels. Tiers range from 1 Star through 5 Star (Legendary) for Dynamax, plus Gigantamax and Legendary Gigantamax for the largest battles. One alarm is created per selected level.
- By Pokemon — Select specific Pokemon you want to battle across all Max Battle levels. If the scanner database is configured, the selector is filtered to only show Pokemon that have appeared in Max Battles.
- Gigantamax only — When tracking by Pokemon, toggle this to only receive notifications when that Pokemon appears in Gigantamax battles (the highest-tier battles with unique G-Max moves). For level-based tracking, Gigantamax is handled by selecting the Gigantamax or Legendary Gigantamax levels directly.
- Select All — Quickly select all available levels at once (equivalent to the bot's
!maxbattle everything command).
Quest Alarms
Get notified about field research tasks with specific rewards.
- Pokemon encounters — Select Pokemon you want as quest rewards.
- Items — Track quests that reward specific items.
- Mega Energy — Track quests that give mega energy for specific Pokemon.
- Candy — Track quests that reward candy for specific Pokemon.
Invasion Alarms
Get notified about Team Rocket invasions.
- Track All — One alarm for every grunt type and leader.
- By Type — Select specific grunt types (Bug, Dragon, Fire, etc.), Rocket Leaders, or Giovanni. Grunt type names are automatically normalized (case-insensitive), so you don't need to worry about exact capitalization.
- Gender — Filter by grunt gender.
Lure Alarms
Get notified when a specific lure type is placed. Choose from Normal, Glacial, Mossy, Magnetic, Rainy, and Golden lures.
Nest Alarms
Track nesting Pokemon species. Set a minimum spawns per hour threshold so you only get notified about nests with enough activity.
Gym Alarms
Track gym team changes. Select which teams (Neutral, Mystic, Valor, Instinct) to monitor. Enable Slot Changes tracking to get notified when gym slots open up, or enable Battle Changes tracking to get notified when a gym is under attack.
Fort Change Alarms
Track changes to pokestops and gyms themselves — not the activities at them, but changes to the actual points of interest.
- Fort Type — Choose to track Pokestops, Gyms, or Everything.
- Change Types — Select which changes to monitor: Name changed, Location changed, Image changed, Removal, or New fort added.
- Include Empty — Include forts that have no name set.
💡Fort change alarms are useful for tracking map database updates — new pokestops appearing, gyms being relocated, or POIs being removed from the game.
Targeting a Specific Gym
When creating or editing a Raid, Egg, or Gym alarm, you can optionally search for and select a specific gym. This is useful when you only care about activity at your favorite gym — like the one on your lunch route or near your house.
- How to use it — In the add or edit dialog, type a gym name into the gym search field. Results show the gym's photo, name, and area so you can identify the right one.
- When a gym is selected — The alarm only fires for events at that specific gym. The gym name appears on the alarm card in your list so you can see which gym it targets at a glance.
- When no gym is selected — This is the default. The alarm works normally for all gyms in your selected areas or within your distance radius.
💡You can combine a gym-specific alarm with a broader alarm. For example, create one raid alarm targeting your local gym for all levels, and a second alarm for level 5 raids across all your areas.
",
- "CONTENT_DELIVERY": "
Every alarm has delivery settings that control where you get notified.
Areas vs Distance
Each alarm uses one of two delivery modes:
🗺
Use AreasNotified when events happen inside your selected areas. Good for tracking specific neighborhoods.📏
Set DistanceNotified within a radius (km) of your saved location. Good for tracking everything near you.You can use different modes for different alarms — for example, use areas for Pokemon and distance for raids.
Notification Templates
If templates are enabled, you can choose how your notification messages look. The template selector shows a live preview of what your Discord DM will look like, including the embed format, fields, and images.
Clean Mode
When enabled, the bot automatically deletes the notification from Discord after the event expires (e.g. a Pokemon despawns or a raid ends). This keeps your DMs tidy. You can enable clean mode per-alarm or in bulk from the Cleaning page.
Ping / Role Mentions
If you use webhooks, you can set a Discord role to mention in the notification (e.g. @Pokemon). This is only relevant for webhook setups.
",
+ "CONTENT_DELIVERY": "
Every alarm has delivery settings that control where you get notified.
Areas vs Distance
Each alarm uses one of two delivery modes:
🗺
Use AreasNotified when events happen inside your selected areas. Good for tracking specific neighborhoods.📏
Set DistanceNotified within a radius (km) of your saved location. Good for tracking everything near you.You can use different modes for different alarms — for example, use areas for Pokemon and distance for raids.
Default for new alarms
New alarms open in Areas mode by default. To change that, open the user menu (your avatar, top-right) and choose Alert Defaults — pick whether new alarms default to Areas or Distance, and set a default radius. The preference is saved in your browser and also seeds the Quick Pick apply dialog. It only affects newly created alarms; existing ones are unchanged, and you can still override the mode and distance on any individual alarm.
Notification Templates
If templates are enabled, you can choose how your notification messages look. The template selector shows a live preview of what your Discord DM will look like, including the embed format, fields, and images.
Clean Mode
When enabled, the bot automatically deletes the notification from Discord after the event expires (e.g. a Pokemon despawns or a raid ends). This keeps your DMs tidy. You can enable clean mode per-alarm or in bulk from the Cleaning page.
Ping / Role Mentions
If you use webhooks, you can set a Discord role to mention in the notification (e.g. @Pokemon). This is only relevant for webhook setups.
Edit in place & summaries
Some alarms support extra delivery modes. Turn on Edit message in place for a lure to update the existing Discord message when the lure changes instead of sending a new one, or Daily summary for a quest to collect matching quests into one summary message (you choose when it is delivered in the Quest Summary Delivery section). Raids and eggs edit in place automatically when you pick an RSVP mode. These settings are remembered even if you set them from the bot — editing the alarm here will not clear them.
RSVP updates (raids & eggs)
Raid and egg alarms add an RSVP notifications setting in the add/edit dialog with three choices: Matches only sends standard raid/egg alerts; Matches + RSVP updates also re-notifies when RSVP counts change (trainers signing up); and RSVP updates only skips the initial match and notifies you only on RSVP changes. Choosing either RSVP mode makes the bot edit the existing Discord message in place as counts change instead of sending new ones, and the card shows an "RSVP" or "RSVP only" pill. Note that RSVP updates only goes silent unless your community’s scanner emits RSVP events — pick it only if you know RSVPs are reported.
",
+ "CONTENT_QUEST_SUMMARY": "Field Research quests rotate daily and can match in bulk, so a busy quest filter can flood your DMs. Quest summary delivery collects matching quests into one scheduled digest instead of many separate alerts.
Two parts that work together
- Daily summary toggle — turn this on for a quest alarm (in its add/edit dialog) to mark its matches for the digest instead of immediate delivery.
- Delivery schedule — choose when the collected quests are sent.
Both are needed: the toggle says which quests to collect, the schedule says when to deliver them.
Setting your schedule
Open the Quests page, then the ⋮ menu in the toolbar and choose Quest summary delivery. Use Edit schedule to pick days and times — the same editor used for profile active hours. Saved times appear as amber pills.
The schedule is per user and shared across all of your profiles — unlike profile active hours, which are configured per profile.
Send summary now
Send summary now delivers whatever has been collected since your last summary, immediately. If nothing has been collected yet, nothing is sent — quests are buffered as they match, so give it time or wait for the schedule to fire.
Good to know
- The menu only appears when your server’s bot has quest summaries enabled.
- Delivery timing uses your saved location for the timezone — set a location, or summaries may arrive at the wrong local time (the dialog warns you when no location is set).
- Removing the schedule keeps the per-alarm toggle; quests still collect but fall back to the bot’s default timing.
",
"CONTENT_TEST_ALERTS": "Every alarm card has a Test button (paper plane icon) that sends a sample notification to your Discord or Telegram, using the alarm's exact filters and your current delivery template.
How It Works
- Find any alarm card in your list (Pokemon, Raid, Quest, etc.).
- Click the send icon in the card's action row.
- A mock event matching your alarm's filters is generated and sent through the notification pipeline. You'll receive a DM just like a real alert.
What Gets Tested
The test uses your alarm's filter values (Pokemon ID, raid level, quest reward, etc.) and your saved location as the mock event coordinates. The notification is formatted using your selected template, so you see exactly what a real alert would look like.
Cooldown
To prevent spam, each alarm has a 15-second cooldown between test sends. The button is disabled during the cooldown and a snackbar shows feedback (success, error, or cooldown remaining).
💡Test alerts are great for verifying your template looks right or confirming your webhook delivery is working before waiting for a real event to trigger.
",
"CONTENT_POKEMON_AVAILABILITY": "When adding or editing Pokemon alarms, the Pokemon selector can show availability indicators — small badges that tell you which Pokemon are currently spawning in the wild.
How It Works
If your community has a Golbat scanner configured, the selector shows colored dots next to Pokemon names:
- Green dot — This Pokemon has been seen spawning recently.
- No dot — Not currently reported in the scanner data.
This helps you avoid creating alarms for Pokemon that aren't spawning in your area right now (e.g., seasonal or event-exclusive species).
Availability Refresh
The data refreshes automatically in the background. You don't need to do anything — just look for the dots when browsing the Pokemon selector.
ℹ️This feature is only visible if your admin has configured the Golbat scanner integration. If you don't see availability dots, the feature is not enabled for your community.
",
"CONTENT_BULK": "
All alarm pages support bulk operations so you can manage many alarms at once.
Select Mode
Click the checklist icon in the toolbar to enter select mode. Then click individual alarm cards to select them, or use Select All to grab everything visible.
Bulk Actions
- Update Distance — Change the delivery mode (areas or distance) for all selected alarms at once.
- Delete — Remove all selected alarms with one confirmation.
💡At the bottom of each alarm list, you'll also find Update All Distance and Delete All buttons that apply to every alarm of that type.
",
@@ -1075,6 +1158,10 @@
"SIGN_IN_DESC": "Sign in to manage your Pokemon GO notification alarms.",
"SIGN_IN_DISCORD": "Sign in with Discord",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Sign in with {{provider}}",
+ "SIGNED_OUT_TITLE": "Signed out",
+ "SIGNED_OUT_DESC": "You've been signed out of DM Alerts.",
+ "SIGN_IN_AGAIN": "Sign in again",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1177,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "External login is currently disabled.",
+ "ERR_OIDC_NO_IDENTITY": "Your external login provider did not return an account we can match. Make sure your Discord account is linked.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "External login failed. Please try again.",
+ "ERR_OIDC_USERINFO": "Could not retrieve your profile from the external login provider. Please try again.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1160,6 +1251,7 @@
"APPROVAL_PROMOTED_NAME": "Promoted name",
"APPROVAL_PROMOTED_NAME_PLACEHOLDER": "Name for the promoted geofence",
"APPROVAL_PROMOTED_NAME_HINT": "Optional. Defaults to the current display name.",
+ "APPROVAL_REGION_HINT": "Region this geofence is filed under once public. Leave as-is to keep the submitter's choice.",
"APPROVAL_REJECT_REASON": "Reason for rejection",
"APPROVAL_REJECT_PLACEHOLDER": "Explain why this geofence is being rejected...",
"USERS_DESC_FULL": "Manage registered Discord users. Stopped = user paused alerts or hit rate limits. Blocked = hard-blocked by admin.",
@@ -1296,6 +1388,7 @@
"EDIT": "Edit",
"ADD": "Add",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Confirm",
"DELETE_ALL": "Delete All",
"CLOSE": "Close",
@@ -1389,6 +1482,7 @@
"GROUP_COMMANDS": "Commands",
"GROUP_TELEGRAM": "Telegram",
"GROUP_DISCORD": "Discord",
+ "GROUP_OIDC": "External SSO",
"GROUP_MAPS_ASSETS": "Maps & Assets",
"GROUP_ANALYTICS_LINKS": "Analytics & Links",
"GROUP_DEBUG": "Debug",
@@ -1411,37 +1505,39 @@
"CUSTOM_PAGE_URL_DESC": "URL the custom nav link points to.",
"CUSTOM_PAGE_ICON_LABEL": "Nav Link Icon",
"CUSTOM_PAGE_ICON_DESC": "FontAwesome class for the nav link icon (e.g. \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Disable Pokemon",
- "DISABLE_MONS_DESC": "Hide Pokemon alarm management from all users.",
- "DISABLE_RAIDS_LABEL": "Disable Raids",
- "DISABLE_RAIDS_DESC": "Hide raid alarm management from all users.",
- "DISABLE_QUESTS_LABEL": "Disable Quests",
- "DISABLE_QUESTS_DESC": "Hide quest alarm management from all users.",
- "DISABLE_INVASIONS_LABEL": "Disable Invasions",
- "DISABLE_INVASIONS_DESC": "Hide invasion alarm management from all users.",
- "DISABLE_LURES_LABEL": "Disable Lures",
- "DISABLE_LURES_DESC": "Hide lure alarm management from all users.",
- "DISABLE_NESTS_LABEL": "Disable Nests",
- "DISABLE_NESTS_DESC": "Hide nest alarm management from all users.",
- "DISABLE_GYMS_LABEL": "Disable Gyms",
- "DISABLE_GYMS_DESC": "Hide gym alarm management from all users.",
- "DISABLE_FORT_CHANGES_LABEL": "Disable Fort Changes",
- "DISABLE_FORT_CHANGES_DESC": "Hide fort change alarm management from all users.",
- "DISABLE_MAXBATTLES_LABEL": "Disable Max Battles",
- "DISABLE_MAXBATTLES_DESC": "Hide max battle alarm management from all users.",
- "DISABLE_AREAS_LABEL": "Disable Areas",
- "DISABLE_AREAS_DESC": "Prevent users from managing their area subscriptions.",
- "DISABLE_PROFILES_LABEL": "Disable Profiles",
- "DISABLE_PROFILES_DESC": "Prevent users from creating and switching alarm profiles.",
- "DISABLE_LOCATION_LABEL": "Disable Location",
- "DISABLE_LOCATION_DESC": "Prevent users from setting a home location.",
- "DISABLE_NOMINATIM_LABEL": "Disable Geocoding",
- "DISABLE_NOMINATIM_DESC": "Disable Nominatim address search for location picking.",
- "DISABLE_GEOMAP_LABEL": "Disable Map View",
- "DISABLE_GEOMAP_DESC": "Hide the interactive geofence map entirely.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Disable Map Area Selection",
- "DISABLE_GEOMAP_SELECT_DESC": "Prevent users from selecting areas by clicking the map.",
- "ENABLE_TEMPLATES_LABEL": "Enable Templates",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Let users manage Pokémon alarms.",
+ "DISABLE_RAIDS_LABEL": "Raids",
+ "DISABLE_RAIDS_DESC": "Let users manage raid alarms.",
+ "DISABLE_QUESTS_LABEL": "Quests",
+ "DISABLE_QUESTS_DESC": "Let users manage quest alarms.",
+ "DISABLE_INVASIONS_LABEL": "Invasions",
+ "DISABLE_INVASIONS_DESC": "Let users manage invasion alarms.",
+ "DISABLE_LURES_LABEL": "Lures",
+ "DISABLE_LURES_DESC": "Let users manage lure alarms.",
+ "DISABLE_NESTS_LABEL": "Nests",
+ "DISABLE_NESTS_DESC": "Let users manage nest alarms.",
+ "DISABLE_GYMS_LABEL": "Gyms",
+ "DISABLE_GYMS_DESC": "Let users manage gym alarms.",
+ "DISABLE_FORT_CHANGES_LABEL": "Fort Changes",
+ "DISABLE_FORT_CHANGES_DESC": "Let users manage fort change alarms.",
+ "DISABLE_MAXBATTLES_LABEL": "Max Battles",
+ "DISABLE_MAXBATTLES_DESC": "Let users manage max battle alarms.",
+ "DISABLE_AREAS_LABEL": "Areas",
+ "DISABLE_AREAS_DESC": "Let users manage their area subscriptions.",
+ "DISABLE_PROFILES_LABEL": "Profiles",
+ "DISABLE_PROFILES_DESC": "Let users create and switch alarm profiles.",
+ "DISABLE_LOCATION_LABEL": "Location",
+ "DISABLE_LOCATION_DESC": "Let users set a home location.",
+ "DISABLE_NOMINATIM_LABEL": "Geocoding",
+ "DISABLE_NOMINATIM_DESC": "Allow Nominatim address search for location picking.",
+ "DISABLE_GEOMAP_LABEL": "Map View",
+ "DISABLE_GEOMAP_DESC": "Show the interactive geofence map.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Map Area Selection",
+ "DISABLE_GEOMAP_SELECT_DESC": "Let users select areas by clicking the map.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Custom Geofences",
+ "DISABLE_USER_GEOFENCES_DESC": "Let users draw, import, and submit their own geofences. Existing geofences keep working.",
+ "ENABLE_TEMPLATES_LABEL": "Templates",
"ENABLE_TEMPLATES_DESC": "Allow users to choose notification message templates.",
"ALLOWED_LANGUAGES_LABEL": "Allowed UI Languages",
"ALLOWED_LANGUAGES_DESC": "Comma-separated language codes to show in the UI language selector (e.g. \"en,de,fr,es\"). Leave empty to show all 11 languages.",
@@ -1449,8 +1545,6 @@
"ENABLE_ROLES_DESC": "Only allow users with specific Discord roles to log in. Requires Bot Token and Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "Allowed Role IDs",
"ALLOWED_ROLE_IDS_DESC": "Comma-separated Discord role IDs that grant access (e.g. \"123456789,987654321\"). Leave empty to allow all.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Allowed Languages",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Comma-separated list of language codes users can select (e.g. \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Register Command",
"REGISTER_COMMAND_DESC": "The Poracle bot command users run to register (e.g. \"$!register\").",
"LOCATION_COMMAND_LABEL": "Location Command",
@@ -1461,6 +1555,32 @@
"TELEGRAM_BOT_DESC": "Telegram bot username (without @).",
"ENABLE_DISCORD_LABEL": "Enable Discord Login",
"ENABLE_DISCORD_DESC": "Allow Discord login on this site. Requires Discord Client ID and Client Secret in .env (server restart required for .env changes). Does not affect PoracleNG bot delivery.",
+ "ENABLE_OIDC_LABEL": "Enable External SSO Login",
+ "ENABLE_OIDC_DESC": "Allow login via the configured external OIDC/OAuth2 provider. Requires OIDC_* settings (provider URLs, client ID, and secret) in .env (server restart required for .env changes).",
+ "GROUP_AUTH": "Authentication",
+ "AUTH_MODE_LABEL": "Sign-in mode",
+ "AUTH_MODE_LOCAL": "Local",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_LOCAL_DESC": "Users sign in with the Discord / Telegram methods configured below.",
+ "AUTH_MODE_OIDC_DESC": "All users are redirected to the external SSO provider. Local sign-in is bypassed.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Switch to SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Switch to SSO sign-in?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "After saving, all users (including admins) will be redirected to {{provider}} to sign in — the local Discord/Telegram login page is bypassed. If the provider is unreachable you can be locked out; recover by setting AUTH_FORCE_LOCAL=true in the server environment.",
+ "AUTH_OIDC_NOT_CONFIGURED": "SSO is unavailable until the OIDC provider is configured in the server environment (OIDC_* env vars).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord and Telegram are hidden while SSO is the active sign-in mode.",
+ "AUTH_FORCE_LOCAL_ACTIVE": "AUTH_FORCE_LOCAL is set in the server environment, so the local login page is being shown regardless of this mode (break-glass override).",
+ "AUTH_SLO_LABEL": "Single logout",
+ "AUTH_SLO_DESC": "When enabled, \"Sign out everywhere\" also ends the provider session (not just this site). Requires the provider's end-session endpoint (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Single logout is unavailable until the provider's end-session endpoint is configured (OIDC_END_SESSION_URL env var).",
+ "OIDC_SERVER_CONFIG": "OIDC Provider Configuration",
+ "OIDC_PROVIDER_LABEL": "Provider name",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization URL",
+ "OIDC_TOKEN_URL_LABEL": "Token URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo URL",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identity claim",
+ "OIDC_USE_PKCE_LABEL": "Use PKCE",
"PROVIDER_URL_LABEL": "Map Tile URL",
"PROVIDER_URL_DESC": "URL template for the map tile provider (used for static maps).",
"SIGNUP_URL_LABEL": "Signup URL",
@@ -1498,7 +1618,15 @@
"LOAD_FAILED": "Failed to load settings",
"SAVE_SUCCESS": "{{count}} setting(s) saved",
"SAVE_PARTIAL": "{{done}} saved, {{errors}} failed",
- "ICONS_SELECTED": "Selected {{repo}} icons — click Save to apply"
+ "ICONS_SELECTED": "Selected {{repo}} icons — click Save to apply",
+ "SEARCH_PLACEHOLDER": "Search settings…",
+ "SEARCH_CLEAR": "Clear search",
+ "UNSAVED_CHANGES": "{{count}} unsaved",
+ "SAVE_CHANGES": "Save changes",
+ "DISCARD_CHANGES": "Discard",
+ "COLLAPSE_SECTION": "Collapse section",
+ "EXPAND_SECTION": "Expand section",
+ "SUMMARY_ENABLED": "{{count}} of {{total}} enabled"
},
"GEOFENCE_DETAIL": {
"NAME": "Name",
@@ -1561,5 +1689,12 @@
"YOUR_LOCATION": "Your Location",
"SELECTED_COUNT": "{{count}} selected:",
"AREAS_SELECTED": "{{count}} area(s) selected"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Alert Defaults",
+ "DESC": "Choose how new alerts are delivered by default. You can still change this for each alert when you create it.",
+ "DEFAULT_DISTANCE": "Default distance",
+ "DEFAULT_DISTANCE_HINT": "Used to pre-fill the radius for new distance-based alerts.",
+ "FOOTNOTE": "Applies to newly created alerts only — existing alerts are unchanged."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/es.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/es.json
index 4a2f65b4..8c4f08bd 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/es.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/es.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Tema de acento",
"LANGUAGE": "Idioma",
"LOGOUT": "Cerrar sesión",
+ "LOGOUT_EVERYWHERE": "Cerrar sesión en todas partes",
"ACCENT_DEFAULT": "Predeterminado",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Valores predeterminados de alertas"
},
"SHORTCUTS": {
"TITLE": "Atajos de teclado",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Forma y género",
"LABEL_FORM": "Forma",
"ALL_FORMS": "Todas las formas",
+ "FORM_MULTI_HINT": "Déjalo vacío para incluir todas las formas",
"LABEL_GENDER": "Género",
"GENDER_ALL": "Todos",
"GENDER_MALE": "Macho",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Ajustes comunes"
},
"RAIDS": {
+ "RSVP_LABEL": "Notificaciones RSVP",
+ "RSVP_OFF": "Solo coincidencias",
+ "RSVP_INCLUDE": "Coincidencias + actualizaciones RSVP",
+ "RSVP_ONLY": "Solo actualizaciones RSVP",
+ "RSVP_OFF_DESC": "Solo alertas estándar de raids/huevos.",
+ "RSVP_INCLUDE_DESC": "También volver a notificar cuando cambien los recuentos de RSVP.",
+ "RSVP_ONLY_DESC": "Omitir coincidencias iniciales; solo notificar cambios de RSVP. Sin un escáner que emita RSVP esta alarma queda silenciada.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Solo RSVP",
"PAGE_TITLE": "Alarmas de Raid y Huevo",
"PAGE_DESC": "Recibe notificaciones sobre jefes de raid y eclosiones de huevos en gimnasios cercanos.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "¿Seguro que quieres eliminar TODAS las alarmas de raid y huevo? Esta acción no se puede deshacer.",
"CONFIRM_BULK_DELETE_TITLE": "Eliminar alarmas seleccionadas",
"CONFIRM_BULK_DELETE_MSG": "¿Seguro que quieres eliminar {{count}} alarmas?",
- "CONFIRM_DELETE_SELECTED": "Eliminar seleccionadas"
+ "CONFIRM_DELETE_SELECTED": "Eliminar seleccionadas",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Alarmas de Misión",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Todas las alarmas de misión eliminadas",
"SNACK_FAILED_DELETE_ALL": "Error al eliminar las alarmas",
"SNACK_FAILED_DISTANCE": "Error al actualizar las distancias",
- "CONFIRM_DELETE_SELECTED": "Eliminar seleccionadas"
+ "CONFIRM_DELETE_SELECTED": "Eliminar seleccionadas",
+ "SUMMARY_MODE": "Resumen diario",
+ "SUMMARY_HINT": "Agrupa las misiones coincidentes en un único mensaje de resumen en lugar de una notificación por cada una. Requiere una programación de resumen configurada en el bot.",
+ "SUMMARY_BADGE": "Resumen",
+ "SUMMARY_SCHEDULE": "Entrega del resumen de misiones",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Resumen de misiones",
+ "SUMMARY_SCHEDULE_EMPTY": "No hay ninguna programación de resumen. Las misiones se entregan de forma individual.",
+ "SUMMARY_SCHEDULE_EDIT": "Editar programación",
+ "SUMMARY_SCHEDULE_CLEAR": "Quitar programación",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Enviar resumen ahora",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Envía las coincidencias de misiones acumuladas desde tu último resumen. Si aún no hay nada en búfer, no se envía nada.",
+ "SUMMARY_SCHEDULE_SAVED": "Programación de resumen guardada",
+ "SUMMARY_SCHEDULE_CLEARED": "Programación de resumen eliminada",
+ "SUMMARY_SCHEDULE_SENT": "Resumen enviado",
+ "SUMMARY_SCHEDULE_FAILED": "No se pudo actualizar la programación del resumen",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "La entrega del resumen no está disponible temporalmente. Inténtalo de nuevo más tarde.",
+ "SUMMARY_DISABLED_HINT": "La programación de resúmenes no está disponible en este servidor."
},
"INVASIONS": {
"PAGE_TITLE": "Alarmas de Invasión",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnético",
"TYPE_RAINY": "Lluvioso",
"TYPE_GOLDEN": "Dorado",
- "TYPE_UNKNOWN": "Señuelo #{{id}}"
+ "TYPE_UNKNOWN": "Señuelo #{{id}}",
+ "EDIT_MODE": "Editar el mensaje en su lugar",
+ "EDIT_HINT": "Actualiza el mensaje de Discord existente cuando cambia el cebo en lugar de enviar uno nuevo.",
+ "EDIT_BADGE": "Editar"
},
"NESTS": {
"PAGE_TITLE": "Alarmas de Nido",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Cambiar",
"SET_LOCATION": "Establecer",
"METHOD_NOTE": "Cada alarma elige un método en su pestaña de Entrega.",
+ "NOTIFICATION_LANGUAGE": "Idioma de notificaciones",
+ "NOTIFICATION_LANGUAGE_DESC": "El idioma que Poracle usa para tus mensajes de alerta y los nombres de Pokémon. Es distinto del idioma de la interfaz en el menú superior.",
+ "SNACK_LANGUAGE_UPDATED": "Idioma de notificaciones actualizado",
+ "SNACK_LANGUAGE_FAILED": "No se pudo actualizar el idioma de notificaciones",
"SELECT_AREAS": "Seleccionar zonas",
"MAP_VIEW": "Mapa",
"LIST_VIEW": "Lista",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, huevos, misiones, rockets, señuelos, nidos, gimnasios, cambios de fort",
"SECTION_DELIVERY": "Ajustes de entrega",
"SECTION_DELIVERY_SUB": "Zonas vs distancia, plantillas y modo limpieza",
+ "SECTION_QUEST_SUMMARY": "Entrega del resumen de misiones",
+ "SECTION_QUEST_SUMMARY_SUB": "Agrupa las misiones ruidosas en un único resumen programado",
"SECTION_TEST_ALERTS": "Alertas de prueba",
"SECTION_TEST_ALERTS_SUB": "Enviar notificaciones de muestra para previsualizar tus alarmas",
"SECTION_POKEMON_AVAILABILITY": "Disponibilidad de Pokemon",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Si las áreas predefinidas no cubren donde quieres alertas, puedes dibujar tus propios límites de geofence personalizados en el mapa.
Dibujar un Geofence
- Ve a Mis Geofences desde la barra lateral.
- Haz clic en Dibujar Geofence.
- Haz clic en el mapa para colocar puntos del límite de tu polígono. Haz clic en el primer punto de nuevo para cerrar la forma (mínimo 3 puntos).
- Dale un nombre a tu geofence y selecciona a qué región pertenece. La región normalmente se detecta automáticamente.
- Haz clic en Guardar.
Gestionar Geofences
- Editar — Renombra tu geofence o cambia su región.
- Eliminar — Elimina un geofence que ya no necesitas. El geofence se elimina de todos los perfiles automáticamente.
Interruptor de perfil
Cada tarjeta de geofence tiene un interruptor deslizante para activar o desactivar para tu perfil actual. Cuando creas un geofence, se activa automáticamente en el perfil que estás usando. Cambia a otro perfil y el interruptor mostrará \\\"Inactivo\\\" — actívalo para recibir alertas de ese geofence en ese perfil también. Esto te permite controlar qué perfiles reciben notificaciones para cada geofence sin recrearlo.
ℹ️Los geofences aprobados (promovidos a áreas públicas) no muestran el interruptor — gestiónales desde la página de Áreas en su lugar.
GeoJSON Import & Export
Puedes importar y exportar geofences usando el formato estándar GeoJSON, facilitando compartir límites o crearlos en herramientas externas como geojson.io.
- Importar — Haz clic en el icono de subida y pega o sube un archivo GeoJSON. Cada polígono en el archivo se convierte en un nuevo geofence. Puedes revisar y renombrar cada uno antes de guardar.
- Exportar — Haz clic en el icono de descarga y selecciona qué geofences incluir. El archivo GeoJSON exportado contiene todos los polígonos seleccionados y puede abrirse en cualquier herramienta GIS o editor de mapas.
💡La importación GeoJSON es útil para migrar geofences de otros sistemas o dibujar límites complejos en una herramienta GIS de escritorio y luego importarlos aquí.
Enviar para aprobación pública
Si crees que tu geofence sería útil para toda la comunidad, puedes enviarlo para revisión de administradores. Si se aprueba, se convierte en un área pública que todos pueden seleccionar. Tu geofence privado sigue funcionando mientras la revisión está pendiente.
Insignias de estado
- Activo — Tu geofence privado, funcionando solo para ti.
- Revisión pendiente — Enviado y esperando revisión del administrador.
- Aprobado — Promovido a área pública.
- Rechazado — No aprobado. Puedes ver los comentarios del administrador y el geofence sigue activo como zona privada.
ℹ️Puedes tener hasta 10 geofences personalizados, cada uno con hasta 500 puntos de límite.
",
"CONTENT_POKEMON": "
Las alarmas de Pokemon te notifican cuando aparece un Pokemon salvaje que coincide con tus filtros.
Añadir una alarma de Pokemon

- Ve a Pokemon desde la barra lateral y haz clic en el botón +.
- Seleccionar Pokemon — Busca por nombre o número de Pokedex, o usa los botones de filtro de generación y tipo para explorar. Puedes seleccionar múltiples Pokemon a la vez.
- Establecer filtros — Elige qué hace que una aparición valga la pena notificar:
- Rango de IV — Porcentaje mínimo y máximo de IV (0-100%)
- Rango de CP — Filtrar por poder de combate
- Rango de nivel — Filtrar por nivel de Pokemon (0-55)
- Estadísticas individuales — Filtrar por valores de ATK, DEF y STA (0-15 cada uno)
- Forma — Rastrear formas específicas (ej. Alolan, Galarian) o todas las formas
- Género — Macho, hembra, sin género, o todos
- Peso — Filtrar por rango de peso
- Tamaño — Filtrar por categoría de tamaño: selecciona TODO (sin filtro) para cualquier tamaño, o elige tamaños específicos de XXS a XXL (XXS, XS, Normal, XL, XXL)
ℹ️Los valores de filtro por defecto están configurados para que todos los Pokemon coincidan cuando no se configuran filtros explícitamente. Por ejemplo, IV por defecto es 0-100%, nivel 0-55 y tamaño TODO. Solo necesitas ajustar los filtros que te importen.
Filtros PVP
Recibe notificaciones cuando un Pokemon tiene buenos IVs para PVP. Selecciona una liga (Grande, Ultra o Copa Pequeña) y establece el rango de clasificación que te interesa (ej. rango 1-50).
Alarma \\\"Todos los Pokemon\\\"
💡Selecciona \\\"Todos los Pokemon\\\" (ID 0) para crear una alarma que cubra todas las especies. Útil con un filtro de IV alto como 96-100% para captar cualquier aparición valiosa.
Leer las tarjetas de alarma
Cada tarjeta de alarma muestra píldoras coloreadas que resumen tus filtros de un vistazo:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Alarmas de Raid y Huevo
Recibe notificaciones cuando aparece un jefe de raid o huevo que te interesa.
- Por nivel — Selecciona niveles de raid (1-6) o niveles de huevo para rastrear todos los raids de ese nivel.
- Por jefe — Selecciona jefes de raid Pokemon específicos que quieras cazar.
- Filtro de equipo — Solo notificar para raids en gimnasios controlados por un equipo específico (Mystic, Valor, Instinct).
- Rastreo de gimnasio — Rastrea raids en gimnasios específicos por nombre para que solo recibas notificaciones de tus gimnasios favoritos.
- Filtro de movimientos — Filtra jefes de raid por sus movimientos rápidos o cargados.
- Notificaciones RSVP — Recibe notificaciones cuando otros entrenadores confirman asistencia a un raid o huevo que estás rastreando.
Las alarmas de Raid y Huevo se gestionan en pestañas separadas dentro de la página de Raids. Los Huevos también admiten rastreo específico de gimnasio y notificaciones RSVP.
Alarmas de Max Batalla (Dynamax)
Recibe notificaciones sobre batallas Dynamax y Gigantamax en Puntos de Poder.
- Por nivel — Selecciona niveles de batalla para rastrear cualquier Pokemon en esos niveles. Los niveles van de 1 Estrella a 5 Estrellas (Legendario) para Dynamax, más Gigantamax y Gigantamax Legendario para las batallas más grandes. Se crea una alarma por cada nivel seleccionado.
- Por Pokemon — Selecciona Pokemon específicos contra los que quieras luchar en todos los niveles de Max Batalla. Si la base de datos del escáner está configurada, el selector se filtra para mostrar solo Pokemon que han aparecido en Max Batallas.
- Solo Gigantamax — Al rastrear por Pokemon, activa esto para solo recibir notificaciones cuando ese Pokemon aparezca en batallas Gigantamax (las batallas de mayor nivel con movimientos G-Max únicos). Para rastreo por nivel, Gigantamax se maneja seleccionando los niveles Gigantamax o Gigantamax Legendario directamente.
- Seleccionar todo — Selecciona rápidamente todos los niveles disponibles a la vez (equivalente al comando
!maxbattle everything del bot).
Alarmas de Misiones
Recibe notificaciones sobre tareas de investigación de campo con recompensas específicas.
- Encuentros Pokemon — Selecciona Pokemon que quieras como recompensas de misiones.
- Objetos — Rastrea misiones que recompensan objetos específicos.
- Mega Energía — Rastrea misiones que dan mega energía para Pokemon específicos.
- Caramelos — Rastrea misiones que recompensan caramelos para Pokemon específicos.
Alarmas de Invasión
Recibe notificaciones sobre invasiones de Team Rocket.
- Rastrear todo — Una alarma para cada tipo de recluta y líder.
- Por tipo — Selecciona tipos específicos de reclutas (Bicho, Dragón, Fuego, etc.), Líderes Rocket o Giovanni. Los nombres de tipo de recluta se normalizan automáticamente (sin distinción de mayúsculas), así que no necesitas preocuparte por la capitalización exacta.
- Género — Filtrar por género del recluta.
Alarmas de Señuelo
Recibe notificaciones cuando se coloca un tipo específico de señuelo. Elige entre Normal, Glacial, Musgo, Magnético, Lluvioso y Dorado.
Alarmas de Nidos
Rastrea especies de Pokemon que anidan. Establece un umbral de apariciones mínimas por hora para que solo recibas notificaciones de nidos con suficiente actividad.
Alarmas de Gimnasio
Rastrea cambios de equipo en gimnasios. Selecciona qué equipos monitorear (Neutral, Mystic, Valor, Instinct). Activa el rastreo de Cambios de plaza para recibir notificaciones cuando se abren plazas en el gimnasio, o activa el rastreo de Cambios de batalla para recibir notificaciones cuando un gimnasio está siendo atacado.
Alarmas de Cambios de Fort
Rastrea cambios en PokéStops y gimnasios en sí — no las actividades en ellos, sino cambios en los propios puntos de interés.
- Tipo de fort — Elige rastrear PokéStops, Gimnasios, o Todo.
- Tipos de cambio — Selecciona qué cambios monitorear: Nombre cambiado, Ubicación cambiada, Imagen cambiada, Eliminación, o Nuevo fort añadido.
- Incluir vacíos — Incluir forts que no tienen nombre establecido.
💡Las alarmas de cambios de fort son útiles para rastrear actualizaciones de la base de datos del mapa — nuevos PokéStops apareciendo, gimnasios siendo reubicados, o POIs siendo eliminados del juego.
Seleccionar un gimnasio específico
Al crear o editar una alarma de Raid, Huevo o Gimnasio, puedes opcionalmente buscar y seleccionar un gimnasio específico. Esto es útil cuando solo te importa la actividad en tu gimnasio favorito — como el de tu ruta del almuerzo o cerca de tu casa.
- Cómo usarlo — En el diálogo de añadir o editar, escribe un nombre de gimnasio en el campo de búsqueda de gimnasio. Los resultados muestran la foto, nombre y área del gimnasio para que puedas identificar el correcto.
- Cuando se selecciona un gimnasio — La alarma solo se activa para eventos en ese gimnasio específico. El nombre del gimnasio aparece en la tarjeta de alarma en tu lista para que puedas ver qué gimnasio rastrea de un vistazo.
- Cuando no se selecciona ningún gimnasio — Es el valor por defecto. La alarma funciona normalmente para todos los gimnasios en tus áreas seleccionadas o dentro de tu radio de distancia.
💡Puedes combinar una alarma específica de gimnasio con una alarma más amplia. Por ejemplo, crea una alarma de raid para tu gimnasio local para todos los niveles, y una segunda alarma para raids de nivel 5 en todas tus áreas.
",
- "CONTENT_DELIVERY": "
Cada alarma tiene ajustes de entrega que controlan dónde recibes notificaciones.
Áreas vs Distancia
Cada alarma usa uno de dos modos de entrega:
🗺
Usar áreasNotificación cuando los eventos ocurren dentro de tus áreas seleccionadas. Bueno para rastrear vecindarios específicos.📏
Establecer distanciaNotificación dentro de un radio (km) de tu ubicación guardada. Bueno para rastrear todo cerca de ti.Puedes usar diferentes modos para diferentes alarmas — por ejemplo, usar áreas para Pokemon y distancia para raids.
Plantillas de notificación
Si las plantillas están habilitadas, puedes elegir cómo se ven tus mensajes de notificación. El selector de plantillas muestra una vista previa en vivo de cómo se verá tu DM de Discord, incluyendo el formato del embed, campos e imágenes.
Modo limpieza
Cuando está activado, el bot elimina automáticamente la notificación de Discord después de que el evento expire (ej. un Pokemon desaparece o un raid termina). Esto mantiene tus DMs ordenados. Puedes activar el modo limpieza por alarma o en masa desde la página de Limpieza.
Ping / Menciones de rol
Si usas webhooks, puedes establecer un rol de Discord para mencionar en la notificación (ej. @Pokemon). Esto solo es relevante para configuraciones de webhook.
",
+ "CONTENT_DELIVERY": "
Cada alarma tiene ajustes de entrega que controlan dónde recibes notificaciones.
Áreas vs Distancia
Cada alarma usa uno de dos modos de entrega:
🗺
Usar áreasNotificación cuando los eventos ocurren dentro de tus áreas seleccionadas. Bueno para rastrear vecindarios específicos.📏
Establecer distanciaNotificación dentro de un radio (km) de tu ubicación guardada. Bueno para rastrear todo cerca de ti.Puedes usar diferentes modos para diferentes alarmas — por ejemplo, usar áreas para Pokemon y distancia para raids.
Plantillas de notificación
Si las plantillas están habilitadas, puedes elegir cómo se ven tus mensajes de notificación. El selector de plantillas muestra una vista previa en vivo de cómo se verá tu DM de Discord, incluyendo el formato del embed, campos e imágenes.
Modo limpieza
Cuando está activado, el bot elimina automáticamente la notificación de Discord después de que el evento expire (ej. un Pokemon desaparece o un raid termina). Esto mantiene tus DMs ordenados. Puedes activar el modo limpieza por alarma o en masa desde la página de Limpieza.
Ping / Menciones de rol
Si usas webhooks, puedes establecer un rol de Discord para mencionar en la notificación (ej. @Pokemon). Esto solo es relevante para configuraciones de webhook.
Editar en el sitio y resúmenes
Algunas alarmas admiten modos de entrega adicionales. Activa Editar mensaje en el sitio en un señuelo para actualizar el mensaje de Discord existente cuando cambie el señuelo en lugar de enviar uno nuevo, o Resumen diario en una misión para agrupar las misiones coincidentes en un único mensaje de resumen (requiere un horario de resumen configurado en el bot). Las incursiones y los huevos se editan en el sitio automáticamente cuando eliges un modo RSVP. Estos ajustes se conservan aunque los establezcas desde el bot.
Actualizaciones RSVP (incursiones y huevos)
Las alarmas de incursión y de huevo añaden un ajuste de notificaciones RSVP en el diálogo de añadir/editar con tres opciones: Solo coincidencias envía alertas estándar de incursiones/huevos; Coincidencias + actualizaciones RSVP también vuelve a notificar cuando cambian los recuentos de RSVP (entrenadores que se apuntan); y Solo actualizaciones RSVP omite la coincidencia inicial y te notifica únicamente los cambios de RSVP. Al elegir cualquiera de los modos RSVP, el bot edita el mensaje de Discord existente en el sitio a medida que cambian los recuentos en lugar de enviar nuevos, y la tarjeta muestra una etiqueta "RSVP" o "Solo RSVP". Ten en cuenta que Solo actualizaciones RSVP queda en silencio a menos que el escáner de tu comunidad emita eventos RSVP — eliígelo solo si sabes que se informan los RSVP.
",
+ "CONTENT_QUEST_SUMMARY": "Las misiones de Investigación de campo rotan a diario y pueden coincidir en grandes cantidades, así que un filtro de misiones muy activo puede inundar tus MD. Entrega del resumen de misiones reúne las misiones coincidentes en un único resumen programado en lugar de muchas alertas separadas.
Dos partes que funcionan juntas
- Interruptor de resumen diario — actívalo en una alarma de misión (en su diálogo de añadir/editar) para marcar sus coincidencias para el resumen en lugar de entregarlas de inmediato.
- Programación de entrega — elige cuándo se envían las misiones recopiladas.
Ambas cosas son necesarias: el interruptor indica qué misiones recopilar, y la programación indica cuándo entregarlas.
Configurar tu programación
Abre la página Misiones, luego el menú ⋮ de la barra de herramientas y elige Entrega del resumen de misiones. Usa Editar programación para elegir días y horas — el mismo editor que se usa para las horas activas de los perfiles. Las horas guardadas aparecen como fichas ámbar.
La programación es por usuario y se comparte entre todos tus perfiles — a diferencia de las horas activas de los perfiles, que se configuran por perfil.
Enviar resumen ahora
Enviar resumen ahora entrega de inmediato todo lo que se haya recopilado desde tu último resumen. Si aún no se ha recopilado nada, no se envía nada — las misiones se almacenan en búfer a medida que coinciden, así que dale tiempo o espera a que se active la programación.
Bueno saberlo
- El menú solo aparece cuando el bot de tu servidor tiene los resúmenes de misiones activados.
- El momento de entrega usa tu ubicación guardada para la zona horaria — establece una ubicación, o los resúmenes podrían llegar a la hora local equivocada (el diálogo te avisa cuando no hay ninguna ubicación establecida).
- Quitar la programación conserva el interruptor por alarma; las misiones se siguen recopilando, pero vuelven al horario predeterminado del bot.
",
"CONTENT_TEST_ALERTS": "Cada tarjeta de alarma tiene un botón Test (icono de avión de papel) que envía una notificación de ejemplo a tu Discord o Telegram, usando los filtros exactos de la alarma y tu plantilla de entrega actual.
Cómo funciona
- Encuentra cualquier tarjeta de alarma en tu lista (Pokemon, Raid, Misión, etc.).
- Haz clic en el icono de enviar en la fila de acciones de la tarjeta.
- Se genera un evento simulado que coincide con los filtros de tu alarma y se envía a través del sistema de notificaciones. Recibirás un DM igual que una alerta real.
Qué se prueba
La prueba usa los valores de filtro de tu alarma (ID de Pokemon, nivel de raid, recompensa de misión, etc.) y tu ubicación guardada como coordenadas del evento simulado. La notificación se formatea usando tu plantilla seleccionada, así que ves exactamente cómo se vería una alerta real.
Tiempo de espera
Para evitar spam, cada alarma tiene un tiempo de espera de 15 segundos entre envíos de prueba. El botón se desactiva durante el tiempo de espera y una notificación muestra el resultado (éxito, error o tiempo restante).
💡Las alertas de prueba son ideales para verificar que tu plantilla se ve bien o confirmar que la entrega por webhook funciona antes de esperar a que un evento real se active.
",
"CONTENT_POKEMON_AVAILABILITY": "Al añadir o editar alarmas de Pokemon, el selector de Pokemon puede mostrar indicadores de disponibilidad — pequeñas insignias que te dicen qué Pokemon están apareciendo actualmente en estado salvaje.
Cómo funciona
Si tu comunidad tiene un escáner Golbat configurado, el selector muestra puntos coloreados junto a los nombres de Pokemon:
- Punto verde — Este Pokemon ha sido visto apareciendo recientemente.
- Sin punto — No reportado actualmente en los datos del escáner.
Esto te ayuda a evitar crear alarmas para Pokemon que no están apareciendo en tu área ahora mismo (ej. especies de temporada o exclusivas de eventos).
Actualización de disponibilidad
Los datos se actualizan automáticamente en segundo plano. No necesitas hacer nada — solo busca los puntos cuando explores el selector de Pokemon.
ℹ️Esta función solo es visible si tu administrador ha configurado la integración del escáner Golbat. Si no ves puntos de disponibilidad, la función no está habilitada para tu comunidad.
",
"CONTENT_BULK": "
Todas las páginas de alarmas admiten operaciones masivas para que puedas gestionar muchas alarmas a la vez.
Modo de selección
Haz clic en el icono de lista de verificación en la barra de herramientas para entrar en modo de selección. Luego haz clic en tarjetas de alarma individuales para seleccionarlas, o usa Seleccionar todo para abarcar todo lo visible.
Acciones masivas
- Actualizar distancia — Cambiar el modo de entrega (áreas o distancia) para todas las alarmas seleccionadas a la vez.
- Eliminar — Eliminar todas las alarmas seleccionadas con una confirmación.
💡Al final de cada lista de alarmas, también encontrarás botones de Actualizar toda la distancia y Eliminar todo que se aplican a cada alarma de ese tipo.
",
@@ -1075,6 +1153,9 @@
"SIGN_IN_DESC": "Inicia sesión para gestionar tus alarmas de notificación de Pokemon GO.",
"SIGN_IN_DISCORD": "Iniciar sesión con Discord",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Iniciar sesión con {{provider}}",
+ "SIGNED_OUT_TITLE": "Sesión cerrada",
+ "SIGNED_OUT_DESC": "Has cerrado sesión en DM Alerts.",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1171,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "El inicio de sesión externo está deshabilitado actualmente.",
+ "ERR_OIDC_NO_IDENTITY": "Tu proveedor de inicio de sesión externo no devolvió una cuenta que podamos asociar. Asegúrate de que tu cuenta de Discord esté vinculada.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "El inicio de sesión externo falló. Inténtalo de nuevo.",
+ "ERR_OIDC_USERINFO": "No se pudo obtener tu perfil del proveedor de inicio de sesión externo. Inténtalo de nuevo.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Editar",
"ADD": "Añadir",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Confirmar",
"DELETE_ALL": "Eliminar todo",
"CLOSE": "Cerrar",
@@ -1395,6 +1481,7 @@
"GROUP_COMMANDS": "Comandos",
"GROUP_TELEGRAM": "Telegram",
"GROUP_DISCORD": "Discord",
+ "GROUP_OIDC": "SSO externo",
"GROUP_MAPS_ASSETS": "Mapas y recursos",
"GROUP_ANALYTICS_LINKS": "Analítica y enlaces",
"GROUP_DEBUG": "Depuración",
@@ -1417,37 +1504,39 @@
"CUSTOM_PAGE_URL_DESC": "URL a la que apunta el enlace de navegación personalizado.",
"CUSTOM_PAGE_ICON_LABEL": "Icono del enlace de navegación",
"CUSTOM_PAGE_ICON_DESC": "Clase FontAwesome para el icono del enlace de navegación (ej. «fas fa-map»).",
- "DISABLE_MONS_LABEL": "Desactivar Pokémon",
- "DISABLE_MONS_DESC": "Oculta la gestión de alarmas de Pokémon para todos los usuarios.",
- "DISABLE_RAIDS_LABEL": "Desactivar Incursiones",
- "DISABLE_RAIDS_DESC": "Oculta la gestión de alarmas de incursión para todos los usuarios.",
- "DISABLE_QUESTS_LABEL": "Desactivar Misiones",
- "DISABLE_QUESTS_DESC": "Oculta la gestión de alarmas de misiones para todos los usuarios.",
- "DISABLE_INVASIONS_LABEL": "Desactivar Invasiones",
- "DISABLE_INVASIONS_DESC": "Oculta la gestión de alarmas de invasión para todos los usuarios.",
- "DISABLE_LURES_LABEL": "Desactivar Señuelos",
- "DISABLE_LURES_DESC": "Oculta la gestión de alarmas de señuelo para todos los usuarios.",
- "DISABLE_NESTS_LABEL": "Desactivar Nidos",
- "DISABLE_NESTS_DESC": "Oculta la gestión de alarmas de nido para todos los usuarios.",
- "DISABLE_GYMS_LABEL": "Desactivar Gimnasios",
- "DISABLE_GYMS_DESC": "Oculta la gestión de alarmas de gimnasio para todos los usuarios.",
- "DISABLE_FORT_CHANGES_LABEL": "Desactivar cambios de fortaleza",
- "DISABLE_FORT_CHANGES_DESC": "Oculta la gestión de alarmas de cambios de fortaleza para todos los usuarios.",
- "DISABLE_MAXBATTLES_LABEL": "Desactivar Combates Dinamax",
- "DISABLE_MAXBATTLES_DESC": "Oculta la gestión de alarmas de Combate Dinamax para todos los usuarios.",
- "DISABLE_AREAS_LABEL": "Desactivar áreas",
- "DISABLE_AREAS_DESC": "Impide que los usuarios gestionen sus suscripciones a áreas.",
- "DISABLE_PROFILES_LABEL": "Desactivar perfiles",
- "DISABLE_PROFILES_DESC": "Impide que los usuarios creen y cambien perfiles de alarma.",
- "DISABLE_LOCATION_LABEL": "Desactivar ubicación",
- "DISABLE_LOCATION_DESC": "Impide que los usuarios establezcan una ubicación de inicio.",
- "DISABLE_NOMINATIM_LABEL": "Desactivar geocodificación",
- "DISABLE_NOMINATIM_DESC": "Desactiva la búsqueda de direcciones de Nominatim para elegir ubicación.",
- "DISABLE_GEOMAP_LABEL": "Desactivar vista de mapa",
- "DISABLE_GEOMAP_DESC": "Oculta completamente el mapa interactivo de geocercas.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Desactivar selección de áreas en el mapa",
- "DISABLE_GEOMAP_SELECT_DESC": "Impide que los usuarios seleccionen áreas haciendo clic en el mapa.",
- "ENABLE_TEMPLATES_LABEL": "Activar plantillas",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Permite a los usuarios gestionar alarmas de Pokémon.",
+ "DISABLE_RAIDS_LABEL": "Incursiones",
+ "DISABLE_RAIDS_DESC": "Permite a los usuarios gestionar alarmas de incursión.",
+ "DISABLE_QUESTS_LABEL": "Misiones",
+ "DISABLE_QUESTS_DESC": "Permite a los usuarios gestionar alarmas de misiones.",
+ "DISABLE_INVASIONS_LABEL": "Invasiones",
+ "DISABLE_INVASIONS_DESC": "Permite a los usuarios gestionar alarmas de invasión.",
+ "DISABLE_LURES_LABEL": "Señuelos",
+ "DISABLE_LURES_DESC": "Permite a los usuarios gestionar alarmas de señuelo.",
+ "DISABLE_NESTS_LABEL": "Nidos",
+ "DISABLE_NESTS_DESC": "Permite a los usuarios gestionar alarmas de nido.",
+ "DISABLE_GYMS_LABEL": "Gimnasios",
+ "DISABLE_GYMS_DESC": "Permite a los usuarios gestionar alarmas de gimnasio.",
+ "DISABLE_FORT_CHANGES_LABEL": "Cambios de fortaleza",
+ "DISABLE_FORT_CHANGES_DESC": "Permite a los usuarios gestionar alarmas de cambios de fortaleza.",
+ "DISABLE_MAXBATTLES_LABEL": "Combates Dinamax",
+ "DISABLE_MAXBATTLES_DESC": "Permite a los usuarios gestionar alarmas de Combate Dinamax.",
+ "DISABLE_AREAS_LABEL": "Áreas",
+ "DISABLE_AREAS_DESC": "Permite a los usuarios gestionar sus suscripciones a áreas.",
+ "DISABLE_PROFILES_LABEL": "Perfiles",
+ "DISABLE_PROFILES_DESC": "Permite a los usuarios crear y cambiar perfiles de alarma.",
+ "DISABLE_LOCATION_LABEL": "Ubicación",
+ "DISABLE_LOCATION_DESC": "Permite a los usuarios establecer una ubicación de inicio.",
+ "DISABLE_NOMINATIM_LABEL": "Geocodificación",
+ "DISABLE_NOMINATIM_DESC": "Permite la búsqueda de direcciones de Nominatim para elegir ubicación.",
+ "DISABLE_GEOMAP_LABEL": "Vista de mapa",
+ "DISABLE_GEOMAP_DESC": "Muestra el mapa interactivo de geocercas.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Selección de áreas en el mapa",
+ "DISABLE_GEOMAP_SELECT_DESC": "Permite a los usuarios seleccionar áreas haciendo clic en el mapa.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Geocercas personalizadas",
+ "DISABLE_USER_GEOFENCES_DESC": "Permite a los usuarios dibujar, importar y enviar sus propias geocercas. Las geocercas existentes siguen funcionando.",
+ "ENABLE_TEMPLATES_LABEL": "Plantillas",
"ENABLE_TEMPLATES_DESC": "Permite a los usuarios elegir plantillas de mensaje de notificación.",
"ALLOWED_LANGUAGES_LABEL": "Idiomas de interfaz permitidos",
"ALLOWED_LANGUAGES_DESC": "Códigos de idioma separados por comas para mostrar en el selector (ej. «en,de,fr,es»). Deja en blanco para mostrar los 11 idiomas.",
@@ -1455,8 +1544,6 @@
"ENABLE_ROLES_DESC": "Permitir iniciar sesión solo a usuarios con roles de Discord específicos. Requiere Bot Token y Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "IDs de roles permitidos",
"ALLOWED_ROLE_IDS_DESC": "IDs de roles de Discord separados por comas que conceden acceso (ej. «123456789,987654321»). Deja en blanco para permitir todos.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Idiomas permitidos",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Lista de códigos de idioma separados por comas que los usuarios pueden seleccionar (ej. «en,de,fr»).",
"REGISTER_COMMAND_LABEL": "Comando de registro",
"REGISTER_COMMAND_DESC": "Comando del bot Poracle que los usuarios ejecutan para registrarse (ej. «$!register»).",
"LOCATION_COMMAND_LABEL": "Comando de ubicación",
@@ -1467,6 +1554,27 @@
"TELEGRAM_BOT_DESC": "Nombre de usuario del bot de Telegram (sin @).",
"ENABLE_DISCORD_LABEL": "Activar inicio de sesión con Discord",
"ENABLE_DISCORD_DESC": "Permite iniciar sesión con Discord en este sitio. Requiere Discord Client ID y Client Secret en .env (reinicio necesario tras cambios en .env). No afecta la entrega del bot PoracleNG.",
+ "ENABLE_OIDC_LABEL": "Habilitar inicio de sesión SSO externo",
+ "ENABLE_OIDC_DESC": "Permite iniciar sesión mediante el proveedor OIDC/OAuth2 externo configurado. Requiere los ajustes OIDC_* (URLs del proveedor, client ID y secreto) en .env (reinicio necesario tras cambios en .env).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Todos los usuarios son redirigidos al proveedor SSO externo. Se omite el inicio de sesión local.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Cambiar a SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "¿Cambiar al inicio de sesión SSO?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Tras guardar, todos los usuarios (incluidos los administradores) serán redirigidos a {{provider}} para iniciar sesión; se omite la página de inicio de sesión local de Discord/Telegram. Si el proveedor no está disponible podrías quedar bloqueado; recupera el acceso estableciendo AUTH_FORCE_LOCAL=true en el entorno del servidor.",
+ "AUTH_OIDC_NOT_CONFIGURED": "El SSO no está disponible hasta que el proveedor OIDC esté configurado en el entorno del servidor (variables de entorno OIDC_*).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord y Telegram se ocultan mientras el SSO sea el modo de inicio de sesión activo.",
+ "AUTH_SLO_LABEL": "Cierre de sesión único",
+ "AUTH_SLO_DESC": "Cuando está habilitado, \"Cerrar sesión en todas partes\" también finaliza la sesión del proveedor (no solo la de este sitio). Requiere el endpoint de fin de sesión del proveedor (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "El cierre de sesión único no está disponible hasta que se configure el endpoint de fin de sesión del proveedor (variable de entorno OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Configuración del proveedor OIDC",
+ "OIDC_PROVIDER_LABEL": "Nombre del proveedor",
+ "OIDC_AUTHORIZATION_URL_LABEL": "URL de autorización",
+ "OIDC_TOKEN_URL_LABEL": "URL de token",
+ "OIDC_USERINFO_URL_LABEL": "URL de UserInfo",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Claim de identidad",
+ "OIDC_USE_PKCE_LABEL": "Usar PKCE",
"PROVIDER_URL_LABEL": "URL de teselas de mapa",
"PROVIDER_URL_DESC": "Plantilla de URL del proveedor de teselas de mapa (para mapas estáticos).",
"GANALYTICSID_LABEL": "ID de Google Analytics",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "IDs de admin",
"DISCORD_ADMIN_IDS_DESC": "IDs de usuarios de Discord con acceso admin (oculto).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Canal del foro de geocercas",
- "DISCORD_GEOFENCE_FORUM_DESC": "Canal de foro de Discord para hilos de envío de geocercas."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Canal de foro de Discord para hilos de envío de geocercas.",
+ "SEARCH_PLACEHOLDER": "Buscar ajustes…",
+ "SEARCH_CLEAR": "Borrar búsqueda",
+ "UNSAVED_CHANGES": "{{count}} sin guardar",
+ "SAVE_CHANGES": "Guardar cambios",
+ "DISCARD_CHANGES": "Descartar",
+ "COLLAPSE_SECTION": "Contraer sección",
+ "EXPAND_SECTION": "Expandir sección",
+ "SUMMARY_ENABLED": "{{count}} de {{total}} activados"
},
"GEOFENCE_DETAIL": {
"NAME": "Nombre",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Tu ubicación",
"SELECTED_COUNT": "{{count}} seleccionado(s):",
"AREAS_SELECTED": "{{count}} área(s) seleccionada(s)"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Valores predeterminados de alertas",
+ "DESC": "Elige cómo se entregan las nuevas alertas de forma predeterminada. Podrás cambiarlo para cada alerta al crearla.",
+ "DEFAULT_DISTANCE": "Distancia predeterminada",
+ "DEFAULT_DISTANCE_HINT": "Se usa para rellenar el radio de las nuevas alertas basadas en distancia.",
+ "FOOTNOTE": "Solo se aplica a las alertas nuevas; las existentes no se modifican."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/fr.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/fr.json
index b39de4a9..8f142786 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/fr.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/fr.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Thème d'accent",
"LANGUAGE": "Langue",
"LOGOUT": "Déconnexion",
+ "LOGOUT_EVERYWHERE": "Se déconnecter partout",
"ACCENT_DEFAULT": "Par défaut",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Réglages par défaut des alertes"
},
"SHORTCUTS": {
"TITLE": "Raccourcis clavier",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Forme et genre",
"LABEL_FORM": "Forme",
"ALL_FORMS": "Toutes les formes",
+ "FORM_MULTI_HINT": "Laissez vide pour inclure toutes les formes",
"LABEL_GENDER": "Genre",
"GENDER_ALL": "Tous",
"GENDER_MALE": "Mâle",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Paramètres communs"
},
"RAIDS": {
+ "RSVP_LABEL": "Notifications RSVP",
+ "RSVP_OFF": "Correspondances uniquement",
+ "RSVP_INCLUDE": "Correspondances + mises à jour RSVP",
+ "RSVP_ONLY": "Mises à jour RSVP uniquement",
+ "RSVP_OFF_DESC": "Alertes raid/œuf standard uniquement.",
+ "RSVP_INCLUDE_DESC": "Notifier également lorsque les RSVP changent.",
+ "RSVP_ONLY_DESC": "Ignorer les correspondances initiales ; notifier uniquement les changements de RSVP. Sans un scanner émettant des RSVP, cette alerte est silencieuse.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "RSVP uniquement",
"PAGE_TITLE": "Alarmes Raid et Œuf",
"PAGE_DESC": "Sois notifié des boss de raid et des éclosions d'œufs dans les arènes proches.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Es-tu sûr de vouloir supprimer TOUTES les alarmes Raid et Œuf ? Cette action est irréversible.",
"CONFIRM_BULK_DELETE_TITLE": "Supprimer les alarmes sélectionnées",
"CONFIRM_BULK_DELETE_MSG": "Es-tu sûr de vouloir supprimer {{count}} alarmes ?",
- "CONFIRM_DELETE_SELECTED": "Supprimer la sélection"
+ "CONFIRM_DELETE_SELECTED": "Supprimer la sélection",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Alarmes Quête",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Toutes les alarmes Quête supprimées",
"SNACK_FAILED_DELETE_ALL": "Échec de la suppression des alarmes",
"SNACK_FAILED_DISTANCE": "Échec de la mise à jour des distances",
- "CONFIRM_DELETE_SELECTED": "Supprimer la sélection"
+ "CONFIRM_DELETE_SELECTED": "Supprimer la sélection",
+ "SUMMARY_MODE": "Résumé quotidien",
+ "SUMMARY_HINT": "Regroupe les quêtes correspondantes dans un seul message de résumé au lieu d’une notification par quête. Nécessite une planification de résumé configurée sur le bot.",
+ "SUMMARY_BADGE": "Résumé",
+ "SUMMARY_SCHEDULE": "Livraison du résumé des quêtes",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Résumé des quêtes",
+ "SUMMARY_SCHEDULE_EMPTY": "Aucune planification de résumé définie. Les quêtes sont livrées individuellement.",
+ "SUMMARY_SCHEDULE_EDIT": "Modifier la planification",
+ "SUMMARY_SCHEDULE_CLEAR": "Supprimer la planification",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Envoyer le résumé maintenant",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Envoie les quêtes correspondantes accumulées depuis votre dernier résumé. Si rien n'est encore en mémoire tampon, rien n'est envoyé.",
+ "SUMMARY_SCHEDULE_SAVED": "Planification du résumé enregistrée",
+ "SUMMARY_SCHEDULE_CLEARED": "Planification du résumé supprimée",
+ "SUMMARY_SCHEDULE_SENT": "Résumé envoyé",
+ "SUMMARY_SCHEDULE_FAILED": "Impossible de mettre à jour la planification du résumé",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "La livraison du résumé est temporairement indisponible. Veuillez réessayer plus tard.",
+ "SUMMARY_DISABLED_HINT": "La planification des résumés n'est pas disponible sur ce serveur."
},
"INVASIONS": {
"PAGE_TITLE": "Alarmes Invasion",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnétique",
"TYPE_RAINY": "Pluvieux",
"TYPE_GOLDEN": "Doré",
- "TYPE_UNKNOWN": "Module #{{id}}"
+ "TYPE_UNKNOWN": "Module #{{id}}",
+ "EDIT_MODE": "Modifier le message sur place",
+ "EDIT_HINT": "Met à jour le message Discord existant lorsque le leurre change au lieu d’en envoyer un nouveau.",
+ "EDIT_BADGE": "Modifier"
},
"NESTS": {
"PAGE_TITLE": "Alarmes Nid",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Modifier",
"SET_LOCATION": "Définir",
"METHOD_NOTE": "Chaque alarme choisit une méthode dans son onglet Livraison.",
+ "NOTIFICATION_LANGUAGE": "Langue des notifications",
+ "NOTIFICATION_LANGUAGE_DESC": "La langue utilisée par Poracle pour vos messages d'alerte et les noms de Pokémon. Elle est distincte de la langue d'affichage du menu en haut.",
+ "SNACK_LANGUAGE_UPDATED": "Langue des notifications mise à jour",
+ "SNACK_LANGUAGE_FAILED": "Échec de la mise à jour de la langue des notifications",
"SELECT_AREAS": "Sélectionner les zones",
"MAP_VIEW": "Carte",
"LIST_VIEW": "Liste",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, œufs, quêtes, Rocket, leurres, nids, arènes, changements de fort",
"SECTION_DELIVERY": "Paramètres de livraison",
"SECTION_DELIVERY_SUB": "Zones vs distance, modèles et mode nettoyage",
+ "SECTION_QUEST_SUMMARY": "Livraison du résumé des quêtes",
+ "SECTION_QUEST_SUMMARY_SUB": "Regroupez les quêtes bruyantes dans un seul résumé planifié",
"SECTION_TEST_ALERTS": "Alertes test",
"SECTION_TEST_ALERTS_SUB": "Envoyer des notifications test pour prévisualiser tes alarmes",
"SECTION_POKEMON_AVAILABILITY": "Disponibilité des Pokemon",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Si les zones prédéfinies ne couvrent pas l'endroit où tu veux des alertes, tu peux dessiner tes propres limites de geofence sur la carte.
Dessiner une geofence
- Va dans Mes Geofences depuis la barre latérale.
- Clique sur Dessiner une geofence.
- Clique sur la carte pour placer les points de ton polygone. Clique sur le premier point pour fermer la forme (minimum 3 points).
- Donne un nom à ta geofence et sélectionne la région. La région est généralement détectée automatiquement.
- Clique Enregistrer.
Gérer les geofences
- Modifier — Renommer ta geofence ou changer sa région.
- Supprimer — Supprimer une geofence dont tu n'as plus besoin. Elle est retirée de tous les profils automatiquement.
Bascule par profil
Chaque carte de geofence a un curseur pour l'activer ou la désactiver pour ton profil actuel. Quand tu crées une geofence, elle est automatiquement activée sur le profil en cours. Passe à un autre profil et le curseur affichera \"Inactive\" — active-le pour recevoir des alertes pour cette geofence sur ce profil aussi.
ℹ️Les geofences approuvées (promues en zones publiques) n'affichent pas le curseur — gère-les depuis la page Zones.
Import et export GeoJSON
Tu peux importer et exporter des geofences au format standard GeoJSON.
- Import — Clique sur l'icône d'envoi et charge un fichier GeoJSON. Chaque polygone du fichier devient une nouvelle geofence.
- Export — Clique sur l'icône de téléchargement et sélectionne les geofences à exporter.
💡L'import GeoJSON est utile pour migrer des geofences d'autres systèmes ou dessiner des limites complexes dans un outil SIG.
Soumettre pour approbation publique
Si tu penses que ta geofence serait utile pour toute la communauté, tu peux la soumettre pour révision admin. Si approuvée, elle devient une zone publique que tout le monde peut sélectionner.
Badges de statut
- Active — Ta geofence privée, fonctionnelle pour toi uniquement.
- En attente de révision — Soumise et en attente de révision admin.
- Approuvée — Promue en zone publique.
- Rejetée — Non approuvée. Tu peux voir les commentaires de l'admin et la geofence reste active en zone privée.
ℹ️Tu peux avoir jusqu'à 10 geofences personnalisées, chacune avec jusqu'à 500 points de limite.
",
"CONTENT_POKEMON": "
Les alarmes Pokemon te notifient quand un Pokemon sauvage apparaît et correspond à tes filtres.
Ajouter une alarme Pokemon

- Va dans Pokemon depuis la barre latérale et clique sur le bouton +.
- Sélectionner des Pokemon — Recherche par nom ou numéro Pokédex, ou utilise les boutons de filtre par génération et type. Tu peux sélectionner plusieurs Pokemon à la fois.
- Définir les filtres — Choisis ce qui rend un spawn digne de notification :
- Plage d'IV — Pourcentage d'IV minimum et maximum (0-100%)
- Plage de CP — Filtrer par puissance de combat
- Plage de niveau — Filtrer par niveau du Pokemon (0-55)
- Stats individuelles — Filtrer par valeurs ATK, DEF et STA (0-15 chacune)
- Forme — Suivre des formes spécifiques (ex. Alola, Galar) ou toutes les formes
- Genre — Mâle, femelle, asexué ou tous
- Poids — Filtrer par plage de poids
- Taille — Filtrer par catégorie de taille : TOUTES (pas de filtre) pour toute taille, ou des tailles spécifiques de XXS à XXL
ℹ️Valeurs de filtre par défaut sont réglées pour que tous les Pokemon correspondent quand aucun filtre n'est configuré. Par exemple, IV par défaut 0-100%, niveau 0-55 et taille TOUTES. Tu n'as qu'à ajuster les filtres qui t'intéressent.
Filtres PVP
Sois notifié quand un Pokemon a de bons IVs PVP. Sélectionne une ligue (Super, Hyper ou Coupe Junior) et définis la plage de rang (ex. rang 1-50).
Alarme \"Tous les Pokemon\"
💡Sélectionne \"Tous les Pokemon\" (ID 0) pour créer une seule alarme qui couvre chaque espèce. Utile avec un filtre IV élevé comme 96-100%.
Lire les cartes d'alarme
Chaque carte d'alarme affiche des pastilles colorées résumant tes filtres en un coup d'œil :
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Alarmes Raid et Œuf
Sois notifié quand un boss de raid ou un œuf apparaît qui t'intéresse.
- Par niveau — Sélectionne des niveaux de raid (1-6) ou d'œuf pour suivre tous les raids de ce palier.
- Par boss — Sélectionne des boss de raid Pokemon spécifiques.
- Filtre d'équipe — Ne notifier que pour les raids aux arènes contrôlées par une équipe spécifique (Mystic, Valor, Instinct).
- Suivi d'arène — Suivre les raids à des arènes spécifiques par nom.
- Filtre d'attaque — Filtrer les boss de raid par leurs attaques immédiates ou chargées.
Alarmes Combat Max (Dynamax)
Sois notifié des combats Dynamax et Gigantamax aux Power Spots.
- Par niveau — Sélectionne des paliers de combat de 1 Étoile à 5 Étoiles (Légendaire), plus Gigantamax et Gigantamax Légendaire.
- Par Pokemon — Sélectionne des Pokemon spécifiques à travers tous les niveaux de Combat Max.
- Gigantamax uniquement — Ne recevoir que les notifications pour les combats Gigantamax.
- Tout sélectionner — Sélectionner tous les niveaux disponibles d'un coup.
Alarmes Quête
Sois notifié des études de terrain avec des récompenses spécifiques.
- Rencontres Pokemon — Pokemon en récompense de quête.
- Objets — Quêtes avec des récompenses d'objets spécifiques.
- Méga-Énergie — Quêtes donnant de la méga-énergie pour des Pokemon spécifiques.
- Bonbons — Quêtes donnant des bonbons pour des Pokemon spécifiques.
Alarmes Invasion
Sois notifié des invasions Team Rocket.
- Tout suivre — Une alarme pour chaque type de sbire et chef.
- Par type — Sélectionne des types de sbires spécifiques (Insecte, Dragon, Feu, etc.), des chefs Rocket ou Giovanni.
- Genre — Filtrer par genre du sbire.
Alarmes Leurre
Sois notifié quand un type de leurre spécifique est placé. Choisis parmi Normal, Glacial, Mousse, Magnétique, Pluvieux et Doré.
Alarmes Nid
Suis les espèces Pokemon nidifiantes. Définis un seuil minimum de spawns par heure.
Alarmes Arène
Suis les changements d'équipe d'arène. Sélectionne les équipes (Neutre, Mystic, Valor, Instinct). Active le suivi des changements de place ou des changements de combat.
Alarmes Changement de fort
Suis les changements aux PokéStops et arènes eux-mêmes.
- Type de fort — PokéStops, Arènes ou Tout.
- Types de changement — Nom modifié, Emplacement modifié, Image modifiée, Suppression ou Nouveau fort.
- Inclure les vides — Inclure les forts sans nom.
💡Les alarmes de changement de fort sont utiles pour suivre les mises à jour de la carte — nouveaux PokéStops, arènes déplacées ou POIs supprimés.
Cibler une arène spécifique
Pour les alarmes Raid, Œuf ou Arène, tu peux rechercher et sélectionner une arène spécifique. Utile quand tu ne t'intéresses qu'à l'activité de ton arène préférée.
- Comment l'utiliser — Tape un nom d'arène dans le champ de recherche. Les résultats montrent la photo, le nom et la zone de l'arène.
- Arène sélectionnée — L'alarme ne se déclenche que pour les événements à cette arène.
- Aucune arène sélectionnée — Par défaut. L'alarme fonctionne pour toutes les arènes.
",
- "CONTENT_DELIVERY": "
Chaque alarme a des paramètres de livraison qui contrôlent où tu es notifié.
Zones vs Distance
Chaque alarme utilise l'un des deux modes de livraison :
🗺
Utiliser les zonesNotifié quand des événements se produisent dans tes zones sélectionnées. Bon pour suivre des quartiers spécifiques.📏
Définir la distanceNotifié dans un rayon (km) autour de ta position. Bon pour suivre tout ce qui est proche.Tu peux utiliser des modes différents pour des alarmes différentes — par exemple, zones pour Pokemon et distance pour les raids.
Modèles de notification
Si les modèles sont activés, tu peux choisir l'apparence de tes notifications. Le sélecteur de modèle montre un aperçu de ce que ton DM Discord ressemblera.
Mode nettoyage
Quand activé, le bot supprime automatiquement la notification de Discord après l'expiration de l'événement. Tu peux activer le mode nettoyage par alarme ou en masse depuis la page Nettoyage.
Ping / Mentions de rôle
Si tu utilises des webhooks, tu peux définir un rôle Discord à mentionner dans la notification (ex. @Pokemon).
",
+ "CONTENT_DELIVERY": "
Chaque alarme a des paramètres de livraison qui contrôlent où tu es notifié.
Zones vs Distance
Chaque alarme utilise l'un des deux modes de livraison :
🗺
Utiliser les zonesNotifié quand des événements se produisent dans tes zones sélectionnées. Bon pour suivre des quartiers spécifiques.📏
Définir la distanceNotifié dans un rayon (km) autour de ta position. Bon pour suivre tout ce qui est proche.Tu peux utiliser des modes différents pour des alarmes différentes — par exemple, zones pour Pokemon et distance pour les raids.
Modèles de notification
Si les modèles sont activés, tu peux choisir l'apparence de tes notifications. Le sélecteur de modèle montre un aperçu de ce que ton DM Discord ressemblera.
Mode nettoyage
Quand activé, le bot supprime automatiquement la notification de Discord après l'expiration de l'événement. Tu peux activer le mode nettoyage par alarme ou en masse depuis la page Nettoyage.
Ping / Mentions de rôle
Si tu utilises des webhooks, tu peux définir un rôle Discord à mentionner dans la notification (ex. @Pokemon).
Modifier sur place & résumés
Certaines alertes prennent en charge des modes de diffusion supplémentaires. Activez Modifier le message sur place pour un leurre afin de mettre à jour le message Discord existant lorsque le leurre change, au lieu d'en envoyer un nouveau, ou Résumé quotidien pour une quête afin de regrouper les quêtes correspondantes en un seul message récapitulatif (nécessite une planification de résumé configurée sur le bot). Les raids et les œufs sont modifiés sur place automatiquement lorsque vous choisissez un mode RSVP. Ces réglages sont conservés même si vous les définissez depuis le bot.
Mises à jour RSVP (raids & œufs)
Les alertes de raid et d'œuf ajoutent un réglage Notifications RSVP dans la boîte de dialogue d'ajout/modification avec trois choix : Correspondances uniquement envoie les alertes raid/œuf standard ; Correspondances + mises à jour RSVP notifie aussi à nouveau lorsque les RSVP changent (des dresseurs s'inscrivent) ; et Mises à jour RSVP uniquement ignore la correspondance initiale et ne vous notifie que les changements de RSVP. Le choix de l'un ou l'autre mode RSVP amène le bot à modifier sur place le message Discord existant au fur et à mesure que les chiffres changent au lieu d'en envoyer de nouveaux, et la carte affiche une pastille "RSVP" ou "RSVP uniquement". Notez que Mises à jour RSVP uniquement reste silencieux à moins que le scanner de votre communauté n'émette des événements RSVP — ne le choisissez que si vous savez que les RSVP sont reportés.
",
+ "CONTENT_QUEST_SUMMARY": "Les quêtes d’Étude de terrain changent chaque jour et peuvent correspondre en grand nombre ; un filtre de quêtes chargé peut donc inonder vos MP. Livraison du résumé des quêtes regroupe les quêtes correspondantes dans un seul résumé planifié au lieu de nombreuses alertes séparées.
Deux parties complémentaires
- Bouton Résumé quotidien — activez-le sur une alarme de quête (dans sa boîte de dialogue d’ajout/de modification) pour marquer ses correspondances pour le résumé au lieu d’une livraison immédiate.
- Planification de la livraison — choisissez quand les quêtes collectées sont envoyées.
Les deux sont nécessaires : le bouton indique quelles quêtes collecter, la planification indique quand les livrer.
Configurer votre planification
Ouvrez la page Quêtes, puis le menu ⋮ de la barre d’outils et choisissez Livraison du résumé des quêtes. Utilisez Modifier la planification pour choisir les jours et les heures — le même éditeur que pour les heures actives des profils. Les heures enregistrées apparaissent sous forme de pastilles ambre.
La planification est par utilisateur et partagée entre tous vos profils — contrairement aux heures actives des profils, qui se configurent par profil.
Envoyer le résumé maintenant
Envoyer le résumé maintenant livre immédiatement tout ce qui a été collecté depuis votre dernier résumé. Si rien n’a encore été collecté, rien n’est envoyé — les quêtes sont mises en mémoire tampon au fur et à mesure qu’elles correspondent, alors laissez-lui le temps ou attendez le déclenchement de la planification.
Bon à savoir
- Le menu n’apparaît que lorsque le bot de votre serveur a activé les résumés de quêtes.
- L’heure de livraison utilise votre position enregistrée pour le fuseau horaire — définissez une position, sinon les résumés risquent d’arriver à la mauvaise heure locale (la boîte de dialogue vous avertit lorsqu’aucune position n’est définie).
- Supprimer la planification conserve le bouton par alarme ; les quêtes continuent d’être collectées, mais reviennent à l’horaire par défaut du bot.
",
"CONTENT_TEST_ALERTS": "Chaque carte d'alarme a un bouton Test (icône avion en papier) qui envoie une notification test à ton Discord ou Telegram, en utilisant les filtres exacts de l'alarme et ton modèle de livraison actuel.
Comment ça marche
- Trouve une carte d'alarme dans ta liste (Pokemon, Raid, Quête, etc.).
- Clique sur l'icône envoyer dans la rangée d'actions de la carte.
- Un événement simulé correspondant aux filtres de ton alarme est généré et envoyé via le pipeline de notification. Tu recevras un DM comme pour une vraie alerte.
Ce qui est testé
Le test utilise les valeurs de filtre de ton alarme et ta localisation enregistrée comme coordonnées de l'événement. La notification est formatée avec ton modèle sélectionné.
Temps de recharge
Chaque alarme a un temps de recharge de 15 secondes entre les envois de test. Le bouton est désactivé pendant le temps de recharge.
💡Les alertes test sont idéales pour vérifier que ton modèle est correct ou que ta livraison webhook fonctionne.
",
"CONTENT_POKEMON_AVAILABILITY": "En ajoutant ou modifiant des alarmes Pokemon, le sélecteur de Pokemon peut afficher des indicateurs de disponibilité — de petits badges qui montrent quels Pokemon apparaissent actuellement à l'état sauvage.
Comment ça marche
Si ta communauté a un scanner Golbat configuré, le sélecteur affiche des points colorés à côté des noms de Pokemon :
- Point vert — Ce Pokemon a été vu récemment en train de spawner.
- Pas de point — Non signalé actuellement dans les données du scanner.
Cela t'aide à éviter de créer des alarmes pour des Pokemon qui n'apparaissent pas dans ta zone actuellement.
Rafraîchissement
Les données se rafraîchissent automatiquement en arrière-plan. Regarde simplement les points en parcourant le sélecteur de Pokemon.
ℹ️Cette fonctionnalité n'est visible que si ton admin a configuré l'intégration du scanner Golbat.
",
"CONTENT_BULK": "
Toutes les pages d'alarme supportent les opérations en masse pour gérer plusieurs alarmes à la fois.
Mode sélection
Clique sur l'icône de checklist dans la barre d'outils pour activer le mode sélection. Puis clique sur les cartes d'alarme individuelles ou utilise Tout sélectionner.
Actions en masse
- Mettre à jour la distance — Changer le mode de livraison pour toutes les alarmes sélectionnées à la fois.
- Supprimer — Supprimer toutes les alarmes sélectionnées avec une seule confirmation.
💡En bas de chaque liste d'alarme, tu trouveras aussi les boutons Mettre à jour toutes les distances et Tout supprimer.
",
@@ -1075,6 +1153,9 @@
"SIGN_IN_DESC": "Connecte-toi pour gérer tes alarmes de notification Pokemon GO.",
"SIGN_IN_DISCORD": "Se connecter avec Discord",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Se connecter avec {{provider}}",
+ "SIGNED_OUT_TITLE": "Déconnecté",
+ "SIGNED_OUT_DESC": "Tu as été déconnecté de Alertes DM.",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1171,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "La connexion externe est actuellement désactivée.",
+ "ERR_OIDC_NO_IDENTITY": "Ton fournisseur de connexion externe n'a pas renvoyé de compte que nous puissions associer. Assure-toi que ton compte Discord est lié.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Échec de la connexion externe. Réessaie.",
+ "ERR_OIDC_USERINFO": "Impossible de récupérer ton profil auprès du fournisseur de connexion externe. Réessaie.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Modifier",
"ADD": "Ajouter",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Confirmer",
"DELETE_ALL": "Tout supprimer",
"CLOSE": "Fermer",
@@ -1395,6 +1481,7 @@
"GROUP_COMMANDS": "Commandes",
"GROUP_TELEGRAM": "Telegram",
"GROUP_DISCORD": "Discord",
+ "GROUP_OIDC": "SSO externe",
"GROUP_MAPS_ASSETS": "Cartes et ressources",
"GROUP_ANALYTICS_LINKS": "Analytique et liens",
"GROUP_DEBUG": "Débogage",
@@ -1417,37 +1504,39 @@
"CUSTOM_PAGE_URL_DESC": "URL vers laquelle pointe le lien de navigation personnalisé.",
"CUSTOM_PAGE_ICON_LABEL": "Icône du lien de navigation",
"CUSTOM_PAGE_ICON_DESC": "Classe FontAwesome pour l'icône du lien de navigation (ex. « fas fa-map »).",
- "DISABLE_MONS_LABEL": "Désactiver les Pokémon",
- "DISABLE_MONS_DESC": "Masquer la gestion des alarmes Pokémon pour tous les utilisateurs.",
- "DISABLE_RAIDS_LABEL": "Désactiver les Raids",
- "DISABLE_RAIDS_DESC": "Masquer la gestion des alarmes Raid pour tous les utilisateurs.",
- "DISABLE_QUESTS_LABEL": "Désactiver les Études",
- "DISABLE_QUESTS_DESC": "Masquer la gestion des alarmes d'études pour tous les utilisateurs.",
- "DISABLE_INVASIONS_LABEL": "Désactiver les Invasions",
- "DISABLE_INVASIONS_DESC": "Masquer la gestion des alarmes d'invasion pour tous les utilisateurs.",
- "DISABLE_LURES_LABEL": "Désactiver les Modules Leurre",
- "DISABLE_LURES_DESC": "Masquer la gestion des alarmes Module Leurre pour tous les utilisateurs.",
- "DISABLE_NESTS_LABEL": "Désactiver les Nids",
- "DISABLE_NESTS_DESC": "Masquer la gestion des alarmes de nid pour tous les utilisateurs.",
- "DISABLE_GYMS_LABEL": "Désactiver les Arènes",
- "DISABLE_GYMS_DESC": "Masquer la gestion des alarmes d'arène pour tous les utilisateurs.",
- "DISABLE_FORT_CHANGES_LABEL": "Désactiver les changements de fortifications",
- "DISABLE_FORT_CHANGES_DESC": "Masquer la gestion des alarmes de changements de fortifications pour tous les utilisateurs.",
- "DISABLE_MAXBATTLES_LABEL": "Désactiver les Combats Dynamax",
- "DISABLE_MAXBATTLES_DESC": "Masquer la gestion des alarmes Combat Dynamax pour tous les utilisateurs.",
- "DISABLE_AREAS_LABEL": "Désactiver les zones",
- "DISABLE_AREAS_DESC": "Empêcher les utilisateurs de gérer leurs abonnements aux zones.",
- "DISABLE_PROFILES_LABEL": "Désactiver les profils",
- "DISABLE_PROFILES_DESC": "Empêcher les utilisateurs de créer des profils d'alarmes et d'en changer.",
- "DISABLE_LOCATION_LABEL": "Désactiver la localisation",
- "DISABLE_LOCATION_DESC": "Empêcher les utilisateurs de définir une position d'accueil.",
- "DISABLE_NOMINATIM_LABEL": "Désactiver le géocodage",
- "DISABLE_NOMINATIM_DESC": "Désactive la recherche d'adresse Nominatim pour le choix de la position.",
- "DISABLE_GEOMAP_LABEL": "Désactiver la vue carte",
- "DISABLE_GEOMAP_DESC": "Masquer entièrement la carte interactive des geofences.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Désactiver la sélection de zones sur la carte",
- "DISABLE_GEOMAP_SELECT_DESC": "Empêcher les utilisateurs de sélectionner des zones en cliquant sur la carte.",
- "ENABLE_TEMPLATES_LABEL": "Activer les modèles",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Autoriser les utilisateurs à gérer les alarmes Pokémon.",
+ "DISABLE_RAIDS_LABEL": "Raids",
+ "DISABLE_RAIDS_DESC": "Autoriser les utilisateurs à gérer les alarmes Raid.",
+ "DISABLE_QUESTS_LABEL": "Études",
+ "DISABLE_QUESTS_DESC": "Autoriser les utilisateurs à gérer les alarmes d'études.",
+ "DISABLE_INVASIONS_LABEL": "Invasions",
+ "DISABLE_INVASIONS_DESC": "Autoriser les utilisateurs à gérer les alarmes d'invasion.",
+ "DISABLE_LURES_LABEL": "Modules Leurre",
+ "DISABLE_LURES_DESC": "Autoriser les utilisateurs à gérer les alarmes Module Leurre.",
+ "DISABLE_NESTS_LABEL": "Nids",
+ "DISABLE_NESTS_DESC": "Autoriser les utilisateurs à gérer les alarmes de nid.",
+ "DISABLE_GYMS_LABEL": "Arènes",
+ "DISABLE_GYMS_DESC": "Autoriser les utilisateurs à gérer les alarmes d'arène.",
+ "DISABLE_FORT_CHANGES_LABEL": "Changements de fortifications",
+ "DISABLE_FORT_CHANGES_DESC": "Autoriser les utilisateurs à gérer les alarmes de changements de fortifications.",
+ "DISABLE_MAXBATTLES_LABEL": "Combats Dynamax",
+ "DISABLE_MAXBATTLES_DESC": "Autoriser les utilisateurs à gérer les alarmes Combat Dynamax.",
+ "DISABLE_AREAS_LABEL": "Zones",
+ "DISABLE_AREAS_DESC": "Autoriser les utilisateurs à gérer leurs abonnements aux zones.",
+ "DISABLE_PROFILES_LABEL": "Profils",
+ "DISABLE_PROFILES_DESC": "Autoriser les utilisateurs à créer des profils d'alarmes et à en changer.",
+ "DISABLE_LOCATION_LABEL": "Localisation",
+ "DISABLE_LOCATION_DESC": "Autoriser les utilisateurs à définir une position d'accueil.",
+ "DISABLE_NOMINATIM_LABEL": "Géocodage",
+ "DISABLE_NOMINATIM_DESC": "Autoriser la recherche d'adresse Nominatim pour le choix de la position.",
+ "DISABLE_GEOMAP_LABEL": "Vue carte",
+ "DISABLE_GEOMAP_DESC": "Afficher la carte interactive des geofences.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Sélection de zones sur la carte",
+ "DISABLE_GEOMAP_SELECT_DESC": "Autoriser les utilisateurs à sélectionner des zones en cliquant sur la carte.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Geofences personnalisées",
+ "DISABLE_USER_GEOFENCES_DESC": "Autoriser les utilisateurs à dessiner, importer et soumettre leurs propres geofences. Les geofences existantes continuent de fonctionner.",
+ "ENABLE_TEMPLATES_LABEL": "Modèles",
"ENABLE_TEMPLATES_DESC": "Autoriser les utilisateurs à choisir des modèles de messages de notification.",
"ALLOWED_LANGUAGES_LABEL": "Langues d'interface autorisées",
"ALLOWED_LANGUAGES_DESC": "Codes de langue séparés par des virgules à afficher dans le sélecteur de langue (ex. « en,de,fr,es »). Laissez vide pour afficher les 11 langues.",
@@ -1455,8 +1544,6 @@
"ENABLE_ROLES_DESC": "Autoriser uniquement les utilisateurs avec des rôles Discord spécifiques à se connecter. Nécessite un Bot Token et un Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "IDs de rôles autorisés",
"ALLOWED_ROLE_IDS_DESC": "IDs de rôles Discord séparés par des virgules qui accordent l'accès (ex. « 123456789,987654321 »). Laissez vide pour autoriser tous.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Langues autorisées",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Liste de codes de langue séparés par des virgules que les utilisateurs peuvent sélectionner (ex. « en,de,fr »).",
"REGISTER_COMMAND_LABEL": "Commande d'enregistrement",
"REGISTER_COMMAND_DESC": "Commande du bot Poracle que les utilisateurs exécutent pour s'enregistrer (ex. « $!register »).",
"LOCATION_COMMAND_LABEL": "Commande de localisation",
@@ -1467,6 +1554,27 @@
"TELEGRAM_BOT_DESC": "Nom d'utilisateur du bot Telegram (sans @).",
"ENABLE_DISCORD_LABEL": "Activer la connexion Discord",
"ENABLE_DISCORD_DESC": "Autoriser la connexion Discord sur ce site. Nécessite le Discord Client ID et Client Secret dans .env (redémarrage du serveur requis pour les changements .env). N'affecte pas la livraison du bot PoracleNG.",
+ "ENABLE_OIDC_LABEL": "Activer la connexion SSO externe",
+ "ENABLE_OIDC_DESC": "Autoriser la connexion via le fournisseur OIDC/OAuth2 externe configuré. Nécessite les paramètres OIDC_* (URLs du fournisseur, client ID et secret) dans .env (redémarrage du serveur requis pour les changements .env).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Tous les utilisateurs sont redirigés vers le fournisseur SSO externe. La connexion locale est contournée.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Passer en SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Passer à la connexion SSO ?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Après l'enregistrement, tous les utilisateurs (y compris les administrateurs) seront redirigés vers {{provider}} pour se connecter — la page de connexion locale Discord/Telegram est contournée. Si le fournisseur est injoignable, tu peux être bloqué ; récupère l'accès en définissant AUTH_FORCE_LOCAL=true dans l'environnement du serveur.",
+ "AUTH_OIDC_NOT_CONFIGURED": "Le SSO est indisponible tant que le fournisseur OIDC n'est pas configuré dans l'environnement du serveur (variables d'environnement OIDC_*).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord et Telegram sont masqués lorsque le SSO est le mode de connexion actif.",
+ "AUTH_SLO_LABEL": "Déconnexion unique",
+ "AUTH_SLO_DESC": "Lorsque cette option est activée, « Se déconnecter partout » met aussi fin à la session du fournisseur (pas seulement à celle de ce site). Nécessite le point de terminaison de fin de session du fournisseur (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "La déconnexion unique est indisponible tant que le point de terminaison de fin de session du fournisseur n'est pas configuré (variable d'environnement OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Configuration du fournisseur OIDC",
+ "OIDC_PROVIDER_LABEL": "Nom du fournisseur",
+ "OIDC_AUTHORIZATION_URL_LABEL": "URL d'autorisation",
+ "OIDC_TOKEN_URL_LABEL": "URL du jeton",
+ "OIDC_USERINFO_URL_LABEL": "URL UserInfo",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Claim d'identité",
+ "OIDC_USE_PKCE_LABEL": "Utiliser PKCE",
"PROVIDER_URL_LABEL": "URL des tuiles de carte",
"PROVIDER_URL_DESC": "Modèle d'URL du fournisseur de tuiles de carte (utilisé pour les cartes statiques).",
"GANALYTICSID_LABEL": "ID Google Analytics",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "IDs admin",
"DISCORD_ADMIN_IDS_DESC": "IDs d'utilisateurs Discord avec accès admin (masqué).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Canal de forum des geofences",
- "DISCORD_GEOFENCE_FORUM_DESC": "Canal de forum Discord pour les fils de discussion de soumission de geofences."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Canal de forum Discord pour les fils de discussion de soumission de geofences.",
+ "SEARCH_PLACEHOLDER": "Rechercher des paramètres…",
+ "SEARCH_CLEAR": "Effacer la recherche",
+ "UNSAVED_CHANGES": "{{count}} non enregistré(s)",
+ "SAVE_CHANGES": "Enregistrer les modifications",
+ "DISCARD_CHANGES": "Annuler",
+ "COLLAPSE_SECTION": "Réduire la section",
+ "EXPAND_SECTION": "Développer la section",
+ "SUMMARY_ENABLED": "{{count}} sur {{total}} activé(s)"
},
"GEOFENCE_DETAIL": {
"NAME": "Nom",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Votre position",
"SELECTED_COUNT": "{{count}} sélectionné(s) :",
"AREAS_SELECTED": "{{count}} zone(s) sélectionnée(s)"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Réglages par défaut des alertes",
+ "DESC": "Choisissez le mode de diffusion par défaut des nouvelles alertes. Vous pourrez toujours le modifier pour chaque alerte lors de sa création.",
+ "DEFAULT_DISTANCE": "Distance par défaut",
+ "DEFAULT_DISTANCE_HINT": "Utilisée pour préremplir le rayon des nouvelles alertes basées sur la distance.",
+ "FOOTNOTE": "S'applique uniquement aux nouvelles alertes — les alertes existantes ne sont pas modifiées."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/it.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/it.json
index 1e58d1fb..b2b54be6 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/it.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/it.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Tema Accento",
"LANGUAGE": "Lingua",
"LOGOUT": "Esci",
+ "LOGOUT_EVERYWHERE": "Esci ovunque",
"ACCENT_DEFAULT": "Predefinito",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raid",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Impostazioni predefinite avvisi"
},
"SHORTCUTS": {
"TITLE": "Scorciatoie da Tastiera",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Forma e Genere",
"LABEL_FORM": "Forma",
"ALL_FORMS": "Tutte le Forme",
+ "FORM_MULTI_HINT": "Lascia vuoto per includere tutte le forme",
"LABEL_GENDER": "Genere",
"GENDER_ALL": "Tutti",
"GENDER_MALE": "Maschio",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Impostazioni comuni"
},
"RAIDS": {
+ "RSVP_LABEL": "Notifiche RSVP",
+ "RSVP_OFF": "Solo corrispondenze",
+ "RSVP_INCLUDE": "Corrispondenze + aggiornamenti RSVP",
+ "RSVP_ONLY": "Solo aggiornamenti RSVP",
+ "RSVP_OFF_DESC": "Solo avvisi raid/uovo standard.",
+ "RSVP_INCLUDE_DESC": "Notifica di nuovo anche quando cambiano i conteggi RSVP.",
+ "RSVP_ONLY_DESC": "Salta le corrispondenze iniziali; notifica solo le modifiche RSVP. Senza uno scanner che emetta RSVP questo allarme è silenziato.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Solo RSVP",
"PAGE_TITLE": "Allarmi Raid e Uova",
"PAGE_DESC": "Ricevi notifiche sui boss dei raid e la schiusa delle uova nelle palestre vicine.",
"TAB_RAIDS": "Raid ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Sei sicuro di voler eliminare TUTTI gli allarmi raid e uova? Questa azione non può essere annullata.",
"CONFIRM_BULK_DELETE_TITLE": "Elimina Allarmi Selezionati",
"CONFIRM_BULK_DELETE_MSG": "Sei sicuro di voler eliminare {{count}} allarmi?",
- "CONFIRM_DELETE_SELECTED": "Elimina Selezionati"
+ "CONFIRM_DELETE_SELECTED": "Elimina Selezionati",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Allarmi Missioni",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Tutti gli allarmi missione eliminati",
"SNACK_FAILED_DELETE_ALL": "Eliminazione allarmi fallita",
"SNACK_FAILED_DISTANCE": "Aggiornamento distanze fallito",
- "CONFIRM_DELETE_SELECTED": "Elimina Selezionati"
+ "CONFIRM_DELETE_SELECTED": "Elimina Selezionati",
+ "SUMMARY_MODE": "Riepilogo giornaliero",
+ "SUMMARY_HINT": "Raccoglie le ricerche corrispondenti in un unico messaggio di riepilogo invece di una notifica per ciascuna. Richiede una pianificazione del riepilogo configurata sul bot.",
+ "SUMMARY_BADGE": "Riepilogo",
+ "SUMMARY_SCHEDULE": "Consegna del riepilogo delle missioni",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Riepilogo missioni",
+ "SUMMARY_SCHEDULE_EMPTY": "Nessuna pianificazione del riepilogo impostata. Le missioni vengono consegnate singolarmente.",
+ "SUMMARY_SCHEDULE_EDIT": "Modifica pianificazione",
+ "SUMMARY_SCHEDULE_CLEAR": "Rimuovi pianificazione",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Invia riepilogo ora",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Invia le corrispondenze delle missioni raccolte dall'ultimo riepilogo. Se non c'è ancora nulla in buffer, non viene inviato nulla.",
+ "SUMMARY_SCHEDULE_SAVED": "Pianificazione del riepilogo salvata",
+ "SUMMARY_SCHEDULE_CLEARED": "Pianificazione del riepilogo rimossa",
+ "SUMMARY_SCHEDULE_SENT": "Riepilogo inviato",
+ "SUMMARY_SCHEDULE_FAILED": "Impossibile aggiornare la pianificazione del riepilogo",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "La consegna del riepilogo è temporaneamente non disponibile. Riprova più tardi.",
+ "SUMMARY_DISABLED_HINT": "La pianificazione dei riepiloghi non è disponibile su questo server."
},
"INVASIONS": {
"PAGE_TITLE": "Allarmi Invasioni",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnetico",
"TYPE_RAINY": "Piovoso",
"TYPE_GOLDEN": "Dorato",
- "TYPE_UNKNOWN": "Esca #{{id}}"
+ "TYPE_UNKNOWN": "Esca #{{id}}",
+ "EDIT_MODE": "Modifica il messaggio sul posto",
+ "EDIT_HINT": "Aggiorna il messaggio Discord esistente quando il modulo esca cambia invece di inviarne uno nuovo.",
+ "EDIT_BADGE": "Modifica"
},
"NESTS": {
"PAGE_TITLE": "Allarmi Nidi",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Modifica",
"SET_LOCATION": "Imposta",
"METHOD_NOTE": "Ogni allarme sceglie un metodo nella scheda Consegna.",
+ "NOTIFICATION_LANGUAGE": "Lingua delle notifiche",
+ "NOTIFICATION_LANGUAGE_DESC": "La lingua che Poracle usa per i messaggi di avviso e i nomi dei Pokémon. È distinta dalla lingua di visualizzazione nel menu in alto.",
+ "SNACK_LANGUAGE_UPDATED": "Lingua delle notifiche aggiornata",
+ "SNACK_LANGUAGE_FAILED": "Impossibile aggiornare la lingua delle notifiche",
"SELECT_AREAS": "Seleziona Aree",
"MAP_VIEW": "Mappa",
"LIST_VIEW": "Lista",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raid, uova, missioni, rocket, esche, nidi, palestre, modifiche forte",
"SECTION_DELIVERY": "Impostazioni di Consegna",
"SECTION_DELIVERY_SUB": "Aree vs distanza, template e modalità pulizia",
+ "SECTION_QUEST_SUMMARY": "Consegna del riepilogo delle missioni",
+ "SECTION_QUEST_SUMMARY_SUB": "Raggruppa le missioni rumorose in un unico riepilogo pianificato",
"SECTION_TEST_ALERTS": "Avvisi di Prova",
"SECTION_TEST_ALERTS_SUB": "Invia notifiche di esempio per visualizzare i tuoi allarmi",
"SECTION_POKEMON_AVAILABILITY": "Disponibilità Pokemon",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Se le aree predefinite non coprono dove vuoi ricevere avvisi, puoi disegnare i tuoi confini geofence personalizzati sulla mappa.
Disegnare una geofence
- Vai a Le Mie Geofence dalla barra laterale.
- Clicca Disegna Geofence.
- Clicca sulla mappa per posizionare i punti del confine del tuo poligono. Clicca di nuovo sul primo punto per chiudere la forma (minimo 3 punti).
- Dai un nome alla tua geofence e seleziona a quale regione appartiene. La regione viene solitamente rilevata automaticamente.
- Clicca Salva.
Gestire le geofence
- Modifica — Rinomina la tua geofence o cambia la sua regione.
- Elimina — Rimuovi una geofence che non ti serve più. La geofence viene rimossa da tutti i profili automaticamente.
Interruttore profilo
Ogni scheda geofence ha un interruttore a scorrimento per attivarla o disattivarla per il tuo profilo attuale. Quando crei una geofence, viene automaticamente attivata sul profilo che stai usando. Passa a un altro profilo e l'interruttore mostrerà \"Inattiva\" — attivalo per ricevere avvisi per quella geofence anche su quel profilo. Questo ti permette di controllare quali profili ricevono notifiche per ogni geofence senza doverla ricreare.
ℹ️Le geofence approvate (promosse ad aree pubbliche) non mostrano l'interruttore — gestiscile dalla pagina Aree.
Importazione & Esportazione GeoJSON
Puoi importare ed esportare geofence usando il formato standard GeoJSON, rendendo facile condividere confini o crearli in strumenti esterni come geojson.io.
- Importa — Clicca l'icona di caricamento e incolla o carica un file GeoJSON. Ogni poligono nel file diventa una nuova geofence. Puoi revisionare e rinominare ciascuna prima di salvare.
- Esporta — Clicca l'icona di download e seleziona quali geofence includere. Il file GeoJSON esportato contiene tutti i poligoni selezionati e può essere aperto in qualsiasi strumento GIS o editor di mappe.
💡L'importazione GeoJSON è utile per migrare geofence da altri sistemi o disegnare confini complessi in uno strumento GIS desktop e poi importarli qui.
Invio per approvazione pubblica
Se pensi che la tua geofence possa essere utile per tutta la community, puoi inviarla per la revisione degli admin. Se approvata, diventa un'area pubblica che tutti possono selezionare. La tua geofence privata continua a funzionare mentre la revisione è in corso.
Badge di stato
- Attiva — La tua geofence privata, funzionante solo per te.
- In revisione — Inviata e in attesa di revisione da parte degli admin.
- Approvata — Promossa ad area pubblica.
- Rifiutata — Non approvata. Puoi vedere il feedback dell'admin e la geofence rimane attiva come zona privata.
ℹ️Puoi avere fino a 10 geofence personalizzate, ciascuna con un massimo di 500 punti di confine.
",
"CONTENT_POKEMON": "
Gli allarmi Pokemon ti avvisano quando un Pokemon selvatico appare e corrisponde ai tuoi filtri.
Aggiungere un allarme Pokemon

- Vai a Pokemon dalla barra laterale e clicca il pulsante +.
- Seleziona Pokemon — Cerca per nome o numero Pokedex, oppure usa i pulsanti filtro per generazione e tipo per sfogliare. Puoi selezionare più Pokemon contemporaneamente.
- Imposta i filtri — Scegli cosa rende uno spawn degno di notifica:
- Intervallo IV — Percentuale IV minima e massima (0-100%)
- Intervallo CP — Filtra per potenza di combattimento
- Intervallo livello — Filtra per livello Pokemon (0-55)
- Statistiche individuali — Filtra per valori ATK, DEF e STA (0-15 ciascuno)
- Forma — Traccia forme specifiche (es. Alolan, Galarian) o tutte le forme
- Genere — Maschio, femmina, senza genere, o tutti
- Peso — Filtra per intervallo di peso
- Taglia — Filtra per categoria di taglia: seleziona ALL (nessun filtro) per qualsiasi taglia, oppure scegli taglie specifiche da XXS a XXL (XXS, XS, Normal, XL, XXL)
ℹ️I valori predefiniti dei filtri sono impostati in modo che tutti i Pokemon corrispondano quando nessun filtro è configurato esplicitamente. Ad esempio, IV predefinito 0-100%, livello 0-55 e taglia ALL. Devi modificare solo i filtri che ti interessano.
Filtri PVP
Ricevi una notifica quando un Pokemon ha ottimi IV per il PVP. Seleziona una lega (Grande, Ultra o Coppa Piccoli) e imposta l'intervallo di ranking che ti interessa (es. rank 1-50).
Allarme \"Tutti i Pokemon\"
💡Seleziona \"Tutti i Pokemon\" (ID 0) per creare un unico allarme che copre ogni specie. Utile con un filtro IV alto come 96-100% per catturare qualsiasi spawn di valore.
Leggere le schede allarme
Ogni scheda allarme mostra pillole colorate che riassumono i tuoi filtri a colpo d'occhio:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Allarmi Raid e Uova
Ricevi una notifica quando appare un boss raid o un uovo che ti interessa.
- Per livello — Seleziona i livelli raid (1-6) o i livelli uovo per monitorare tutti i raid di quel livello.
- Per boss — Seleziona specifici boss raid Pokemon che vuoi affrontare.
- Filtro squadra — Avvisa solo per raid nelle palestre controllate da una squadra specifica (Mystic, Valor, Instinct).
- Monitoraggio palestra — Monitora i raid in palestre specifiche per nome, così vieni avvisato solo per le tue palestre preferite.
- Filtro mosse — Filtra i boss raid per le loro mosse veloci o caricate.
- Notifiche RSVP — Ricevi una notifica quando altri allenatori confermano la partecipazione a un raid o uovo che stai monitorando.
Gli allarmi Raid e Uova sono gestiti in schede separate nella pagina Raid. Le Uova supportano anche il monitoraggio di palestre specifiche e le notifiche RSVP.
Allarmi Max Battle (Dynamax)
Ricevi notifiche sulle battaglie Dynamax e Gigantamax ai Power Spot.
- Per livello — Seleziona i livelli di battaglia per monitorare qualsiasi Pokemon a quei livelli. I livelli vanno da 1 Stella a 5 Stelle (Leggendario) per Dynamax, più Gigantamax e Gigantamax Leggendario per le battaglie più grandi. Viene creato un allarme per ogni livello selezionato.
- Per Pokemon — Seleziona Pokemon specifici che vuoi affrontare in tutti i livelli Max Battle. Se il database scanner è configurato, il selettore mostra solo i Pokemon apparsi nelle Max Battle.
- Solo Gigantamax — Quando monitori per Pokemon, attiva questo per ricevere notifiche solo quando quel Pokemon appare nelle battaglie Gigantamax (le battaglie di livello più alto con mosse G-Max uniche). Per il monitoraggio per livello, il Gigantamax si gestisce selezionando direttamente i livelli Gigantamax o Gigantamax Leggendario.
- Seleziona tutto — Seleziona rapidamente tutti i livelli disponibili (equivalente al comando
!maxbattle everything del bot).
Allarmi Missioni
Ricevi notifiche sulle missioni di ricerca sul campo con ricompense specifiche.
- Incontri Pokemon — Seleziona i Pokemon che vuoi come ricompensa delle missioni.
- Strumenti — Monitora le missioni che ricompensano con strumenti specifici.
- Mega Energia — Monitora le missioni che danno mega energia per Pokemon specifici.
- Caramelle — Monitora le missioni che ricompensano con caramelle per Pokemon specifici.
Allarmi Invasioni
Ricevi notifiche sulle invasioni di Team Rocket.
- Monitora tutto — Un allarme per ogni tipo di recluta e leader.
- Per tipo — Seleziona tipi di reclute specifici (Coleottero, Drago, Fuoco, ecc.), Leader Rocket o Giovanni. I nomi dei tipi di recluta vengono normalizzati automaticamente (senza distinzione maiuscole/minuscole), quindi non devi preoccuparti della capitalizzazione esatta.
- Genere — Filtra per genere della recluta.
Allarmi Esche
Ricevi una notifica quando viene piazzata un'esca di un tipo specifico. Scegli tra esche Normali, Glaciali, Muschiate, Magnetiche, Piovose e Dorate.
Allarmi Nidi
Monitora le specie Pokemon nei nidi. Imposta una soglia di spawn minimi per ora per essere avvisato solo dei nidi con attività sufficiente.
Allarmi Palestre
Monitora i cambi di squadra nelle palestre. Seleziona quali squadre (Neutrale, Mystic, Valor, Instinct) monitorare. Attiva il monitoraggio Cambi Posti per essere avvisato quando si liberano posti in palestra, o attiva il monitoraggio Cambi Battaglia per essere avvisato quando una palestra è sotto attacco.
Allarmi Modifiche Forte
Monitora le modifiche ai pokestop e alle palestre stesse — non le attività che vi si svolgono, ma le modifiche ai punti di interesse effettivi.
- Tipo forte — Scegli se monitorare Pokestop, Palestre o Tutto.
- Tipi di modifica — Seleziona quali modifiche monitorare: Nome cambiato, Posizione cambiata, Immagine cambiata, Rimozione o Nuovo forte aggiunto.
- Includi vuoti — Includi i forti senza nome impostato.
💡Gli allarmi modifiche forte sono utili per monitorare gli aggiornamenti del database mappa — nuovi pokestop che appaiono, palestre che vengono spostate o POI rimossi dal gioco.
Puntare a una palestra specifica
Quando crei o modifichi un allarme Raid, Uovo o Palestra, puoi opzionalmente cercare e selezionare una palestra specifica. Questo è utile quando ti interessa solo l'attività alla tua palestra preferita — come quella sul percorso per pranzo o vicino a casa tua.
- Come usarlo — Nella finestra di aggiunta o modifica, digita il nome di una palestra nel campo di ricerca. I risultati mostrano la foto della palestra, il nome e l'area così puoi identificare quella giusta.
- Quando una palestra è selezionata — L'allarme scatta solo per eventi in quella palestra specifica. Il nome della palestra appare sulla scheda allarme nella tua lista così puoi vedere a colpo d'occhio quale palestra è il bersaglio.
- Quando nessuna palestra è selezionata — Questo è il comportamento predefinito. L'allarme funziona normalmente per tutte le palestre nelle tue aree selezionate o entro il tuo raggio di distanza.
💡Puoi combinare un allarme per palestra specifica con un allarme più ampio. Ad esempio, crea un allarme raid per la tua palestra locale per tutti i livelli e un secondo allarme per raid di livello 5 in tutte le tue aree.
",
- "CONTENT_DELIVERY": "
Ogni allarme ha impostazioni di consegna che controllano dove ricevi le notifiche.
Aree vs Distanza
Ogni allarme usa una di due modalità di consegna:
🗺
Usa AreeRicevi notifiche quando gli eventi accadono nelle tue aree selezionate. Ideale per monitorare quartieri specifici.📏
Imposta DistanzaRicevi notifiche entro un raggio (km) dalla tua posizione salvata. Ideale per monitorare tutto vicino a te.Puoi usare modalità diverse per allarmi diversi — ad esempio, usa le aree per i Pokemon e la distanza per i raid.
Template di notifica
Se i template sono abilitati, puoi scegliere l'aspetto dei tuoi messaggi di notifica. Il selettore di template mostra un'anteprima dal vivo di come apparirà il tuo DM Discord, incluso il formato embed, i campi e le immagini.
Modalità Pulizia
Quando attivata, il bot elimina automaticamente la notifica da Discord dopo la scadenza dell'evento (es. un Pokemon scompare o un raid finisce). Questo mantiene i tuoi DM ordinati. Puoi attivare la modalità pulizia per singolo allarme o in blocco dalla pagina Pulizia.
Ping / Menzioni ruolo
Se usi webhook, puoi impostare un ruolo Discord da menzionare nella notifica (es. @Pokemon). Questo è rilevante solo per le configurazioni webhook.
",
+ "CONTENT_DELIVERY": "
Ogni allarme ha impostazioni di consegna che controllano dove ricevi le notifiche.
Aree vs Distanza
Ogni allarme usa una di due modalità di consegna:
🗺
Usa AreeRicevi notifiche quando gli eventi accadono nelle tue aree selezionate. Ideale per monitorare quartieri specifici.📏
Imposta DistanzaRicevi notifiche entro un raggio (km) dalla tua posizione salvata. Ideale per monitorare tutto vicino a te.Puoi usare modalità diverse per allarmi diversi — ad esempio, usa le aree per i Pokemon e la distanza per i raid.
Template di notifica
Se i template sono abilitati, puoi scegliere l'aspetto dei tuoi messaggi di notifica. Il selettore di template mostra un'anteprima dal vivo di come apparirà il tuo DM Discord, incluso il formato embed, i campi e le immagini.
Modalità Pulizia
Quando attivata, il bot elimina automaticamente la notifica da Discord dopo la scadenza dell'evento (es. un Pokemon scompare o un raid finisce). Questo mantiene i tuoi DM ordinati. Puoi attivare la modalità pulizia per singolo allarme o in blocco dalla pagina Pulizia.
Ping / Menzioni ruolo
Se usi webhook, puoi impostare un ruolo Discord da menzionare nella notifica (es. @Pokemon). Questo è rilevante solo per le configurazioni webhook.
Modifica sul posto e riepiloghi
Alcuni allarmi supportano modalità di consegna aggiuntive. Attiva Modifica messaggio sul posto per un'esca per aggiornare il messaggio Discord esistente quando l'esca cambia invece di inviarne uno nuovo, oppure Riepilogo giornaliero per una missione per raccogliere le missioni corrispondenti in un unico messaggio di riepilogo (richiede una pianificazione del riepilogo configurata sul bot). Raid e uova vengono modificati sul posto automaticamente quando scegli una modalità RSVP. Queste impostazioni vengono mantenute anche se le imposti dal bot.
Aggiornamenti RSVP (raid e uova)
Gli allarmi raid e uova aggiungono un'impostazione Notifiche RSVP nella finestra di aggiunta/modifica con tre scelte: Solo corrispondenze invia gli avvisi raid/uovo standard; Corrispondenze + aggiornamenti RSVP notifica di nuovo anche quando cambiano i conteggi RSVP (allenatori che confermano la partecipazione); e Solo aggiornamenti RSVP salta la corrispondenza iniziale e ti notifica solo le modifiche RSVP. Scegliendo una delle modalità RSVP il bot modifica sul posto il messaggio Discord esistente man mano che i conteggi cambiano, invece di inviarne di nuovi, e la scheda mostra una pillola "RSVP" o "Solo RSVP". Nota che Solo aggiornamenti RSVP resta silenziosa a meno che lo scanner della tua community non emetta eventi RSVP — scegliela solo se sai che gli RSVP vengono segnalati.
",
+ "CONTENT_QUEST_SUMMARY": "Le missioni di Ricerca sul campo cambiano ogni giorno e possono corrispondere in gran numero, quindi un filtro missioni affollato può inondare i tuoi MP. Consegna del riepilogo delle missioni raccoglie le missioni corrispondenti in un unico riepilogo pianificato invece di tanti avvisi separati.
Due parti che lavorano insieme
- Interruttore Riepilogo giornaliero — attivalo su un allarme missione (nella sua finestra di aggiunta/modifica) per contrassegnarne le corrispondenze per il riepilogo invece della consegna immediata.
- Pianificazione della consegna — scegli quando vengono inviate le missioni raccolte.
Servono entrambe: l’interruttore indica quali missioni raccogliere, la pianificazione indica quando consegnarle.
Impostare la pianificazione
Apri la pagina Missioni, poi il menu ⋮ nella barra degli strumenti e scegli Consegna del riepilogo delle missioni. Usa Modifica pianificazione per scegliere giorni e orari — lo stesso editor usato per le ore attive dei profili. Gli orari salvati appaiono come pillole ambra.
La pianificazione è per utente ed è condivisa tra tutti i tuoi profili — a differenza delle ore attive dei profili, che si impostano per profilo.
Invia riepilogo ora
Invia riepilogo ora consegna immediatamente tutto ciò che è stato raccolto dall’ultimo riepilogo. Se non è ancora stato raccolto nulla, non viene inviato nulla — le missioni vengono memorizzate nel buffer man mano che corrispondono, quindi dai tempo o attendi che la pianificazione si attivi.
Buono a sapersi
- Il menu appare solo quando il bot del tuo server ha i riepiloghi delle missioni abilitati.
- L’orario di consegna usa la posizione salvata per il fuso orario — imposta una posizione, altrimenti i riepiloghi potrebbero arrivare all’ora locale sbagliata (la finestra ti avvisa quando non è impostata alcuna posizione).
- La rimozione della pianificazione mantiene l’interruttore per allarme; le missioni continuano a essere raccolte, ma tornano all’orario predefinito del bot.
",
"CONTENT_TEST_ALERTS": "Ogni scheda allarme ha un pulsante Test (icona aeroplanino di carta) che invia una notifica di esempio al tuo Discord o Telegram, usando i filtri esatti dell'allarme e il tuo template di consegna attuale.
Come funziona
- Trova qualsiasi scheda allarme nella tua lista (Pokemon, Raid, Missione, ecc.).
- Clicca l'icona invia nella riga azioni della scheda.
- Viene generato un evento fittizio corrispondente ai filtri del tuo allarme e inviato attraverso la pipeline di notifica. Riceverai un DM proprio come un avviso reale.
Cosa viene testato
Il test usa i valori dei filtri del tuo allarme (ID Pokemon, livello raid, ricompensa missione, ecc.) e la tua posizione salvata come coordinate dell'evento fittizio. La notifica viene formattata usando il template selezionato, così vedi esattamente come apparirebbe un avviso reale.
Tempo di attesa
Per prevenire lo spam, ogni allarme ha un tempo di attesa di 15 secondi tra un invio test e l'altro. Il pulsante è disabilitato durante l'attesa e una notifica mostra il feedback (successo, errore o tempo rimanente).
💡Gli avvisi di prova sono ottimi per verificare che il tuo template sia corretto o confermare che la consegna via webhook funzioni prima di aspettare che un evento reale lo attivi.
",
"CONTENT_POKEMON_AVAILABILITY": "Quando aggiungi o modifichi allarmi Pokemon, il selettore Pokemon può mostrare indicatori di disponibilità — piccoli badge che ti dicono quali Pokemon stanno attualmente spawnando in natura.
Come funziona
Se la tua community ha uno scanner Golbat configurato, il selettore mostra punti colorati accanto ai nomi dei Pokemon:
- Punto verde — Questo Pokemon è stato visto spawnare di recente.
- Nessun punto — Non attualmente segnalato nei dati dello scanner.
Questo ti aiuta a evitare di creare allarmi per Pokemon che non stanno spawnando nella tua zona in questo momento (es. specie stagionali o esclusive di eventi).
Aggiornamento disponibilità
I dati si aggiornano automaticamente in background. Non devi fare nulla — cerca semplicemente i punti quando sfogli il selettore Pokemon.
ℹ️Questa funzionalità è visibile solo se il tuo admin ha configurato l'integrazione dello scanner Golbat. Se non vedi i punti di disponibilità, la funzionalità non è abilitata per la tua community.
",
"CONTENT_BULK": "
Tutte le pagine allarmi supportano operazioni in blocco per gestire molti allarmi contemporaneamente.
Modalità selezione
Clicca l'icona checklist nella barra strumenti per entrare in modalità selezione. Poi clicca le singole schede allarme per selezionarle, oppure usa Seleziona tutto per prendere tutto ciò che è visibile.
Azioni in blocco
- Aggiorna distanza — Cambia la modalità di consegna (aree o distanza) per tutti gli allarmi selezionati contemporaneamente.
- Elimina — Rimuovi tutti gli allarmi selezionati con una sola conferma.
💡In fondo a ogni lista allarmi troverai anche i pulsanti Aggiorna Tutta la Distanza e Elimina Tutto che si applicano a ogni allarme di quel tipo.
",
@@ -1096,7 +1174,14 @@
"ERR_GENERIC": "Errore di autenticazione: {{error}}",
"ERR_NO_TOKEN": "Nessun token di autenticazione ricevuto.",
"SIGN_UP": "Sign Up",
- "SIGN_UP_DESC": "Don't have an account? Sign up to get started."
+ "SIGN_UP_DESC": "Don't have an account? Sign up to get started.",
+ "SIGN_IN_OIDC": "Accedi con {{provider}}",
+ "SIGNED_OUT_TITLE": "Disconnesso",
+ "SIGNED_OUT_DESC": "Sei stato disconnesso da DM Alerts.",
+ "ERR_OIDC_DISABLED": "L'accesso esterno è attualmente disabilitato.",
+ "ERR_OIDC_NO_IDENTITY": "Il tuo provider di accesso esterno non ha restituito un account che possiamo associare. Assicurati che il tuo account Discord sia collegato.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Accesso esterno non riuscito. Riprova.",
+ "ERR_OIDC_USERINFO": "Impossibile recuperare il tuo profilo dal provider di accesso esterno. Riprova."
},
"ERROR": {
"SESSION_EXPIRED": "Session expired. Please log in again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Modifica",
"ADD": "Aggiungi",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Conferma",
"DELETE_ALL": "Elimina Tutto",
"CLOSE": "Chiudi",
@@ -1417,37 +1503,39 @@
"CUSTOM_PAGE_URL_DESC": "URL a cui punta il link di navigazione personalizzato.",
"CUSTOM_PAGE_ICON_LABEL": "Icona del link di navigazione",
"CUSTOM_PAGE_ICON_DESC": "Classe FontAwesome per l'icona del link di navigazione (es. \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Disabilita Pokémon",
- "DISABLE_MONS_DESC": "Nascondi la gestione degli allarmi Pokémon a tutti gli utenti.",
- "DISABLE_RAIDS_LABEL": "Disabilita Raid",
- "DISABLE_RAIDS_DESC": "Nascondi la gestione degli allarmi Raid a tutti gli utenti.",
- "DISABLE_QUESTS_LABEL": "Disabilita Missioni",
- "DISABLE_QUESTS_DESC": "Nascondi la gestione degli allarmi missione a tutti gli utenti.",
- "DISABLE_INVASIONS_LABEL": "Disabilita Invasioni",
- "DISABLE_INVASIONS_DESC": "Nascondi la gestione degli allarmi invasione a tutti gli utenti.",
- "DISABLE_LURES_LABEL": "Disabilita Esche",
- "DISABLE_LURES_DESC": "Nascondi la gestione degli allarmi esca a tutti gli utenti.",
- "DISABLE_NESTS_LABEL": "Disabilita Nidi",
- "DISABLE_NESTS_DESC": "Nascondi la gestione degli allarmi nido a tutti gli utenti.",
- "DISABLE_GYMS_LABEL": "Disabilita Palestre",
- "DISABLE_GYMS_DESC": "Nascondi la gestione degli allarmi palestra a tutti gli utenti.",
- "DISABLE_FORT_CHANGES_LABEL": "Disabilita modifiche forte",
- "DISABLE_FORT_CHANGES_DESC": "Nascondi la gestione degli allarmi di modifica forte a tutti gli utenti.",
- "DISABLE_MAXBATTLES_LABEL": "Disabilita Lotte Dynamax",
- "DISABLE_MAXBATTLES_DESC": "Nascondi la gestione degli allarmi Lotta Dynamax a tutti gli utenti.",
- "DISABLE_AREAS_LABEL": "Disabilita aree",
- "DISABLE_AREAS_DESC": "Impedisce agli utenti di gestire le sottoscrizioni alle aree.",
- "DISABLE_PROFILES_LABEL": "Disabilita profili",
- "DISABLE_PROFILES_DESC": "Impedisce agli utenti di creare e cambiare profili di allarme.",
- "DISABLE_LOCATION_LABEL": "Disabilita posizione",
- "DISABLE_LOCATION_DESC": "Impedisce agli utenti di impostare una posizione di casa.",
- "DISABLE_NOMINATIM_LABEL": "Disabilita geocoding",
- "DISABLE_NOMINATIM_DESC": "Disabilita la ricerca di indirizzi Nominatim per la scelta della posizione.",
- "DISABLE_GEOMAP_LABEL": "Disabilita vista mappa",
- "DISABLE_GEOMAP_DESC": "Nascondi completamente la mappa interattiva dei geofence.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Disabilita selezione aree dalla mappa",
- "DISABLE_GEOMAP_SELECT_DESC": "Impedisce agli utenti di selezionare aree cliccando sulla mappa.",
- "ENABLE_TEMPLATES_LABEL": "Abilita modelli",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Consenti agli utenti di gestire gli allarmi Pokémon.",
+ "DISABLE_RAIDS_LABEL": "Raid",
+ "DISABLE_RAIDS_DESC": "Consenti agli utenti di gestire gli allarmi Raid.",
+ "DISABLE_QUESTS_LABEL": "Missioni",
+ "DISABLE_QUESTS_DESC": "Consenti agli utenti di gestire gli allarmi missione.",
+ "DISABLE_INVASIONS_LABEL": "Invasioni",
+ "DISABLE_INVASIONS_DESC": "Consenti agli utenti di gestire gli allarmi invasione.",
+ "DISABLE_LURES_LABEL": "Esche",
+ "DISABLE_LURES_DESC": "Consenti agli utenti di gestire gli allarmi esca.",
+ "DISABLE_NESTS_LABEL": "Nidi",
+ "DISABLE_NESTS_DESC": "Consenti agli utenti di gestire gli allarmi nido.",
+ "DISABLE_GYMS_LABEL": "Palestre",
+ "DISABLE_GYMS_DESC": "Consenti agli utenti di gestire gli allarmi palestra.",
+ "DISABLE_FORT_CHANGES_LABEL": "Modifiche forte",
+ "DISABLE_FORT_CHANGES_DESC": "Consenti agli utenti di gestire gli allarmi di modifica forte.",
+ "DISABLE_MAXBATTLES_LABEL": "Lotte Dynamax",
+ "DISABLE_MAXBATTLES_DESC": "Consenti agli utenti di gestire gli allarmi Lotta Dynamax.",
+ "DISABLE_AREAS_LABEL": "Aree",
+ "DISABLE_AREAS_DESC": "Consenti agli utenti di gestire le sottoscrizioni alle aree.",
+ "DISABLE_PROFILES_LABEL": "Profili",
+ "DISABLE_PROFILES_DESC": "Consenti agli utenti di creare e cambiare profili di allarme.",
+ "DISABLE_LOCATION_LABEL": "Posizione",
+ "DISABLE_LOCATION_DESC": "Consenti agli utenti di impostare una posizione di casa.",
+ "DISABLE_NOMINATIM_LABEL": "Geocoding",
+ "DISABLE_NOMINATIM_DESC": "Consenti la ricerca di indirizzi Nominatim per la scelta della posizione.",
+ "DISABLE_GEOMAP_LABEL": "Vista mappa",
+ "DISABLE_GEOMAP_DESC": "Mostra la mappa interattiva dei geofence.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Selezione aree dalla mappa",
+ "DISABLE_GEOMAP_SELECT_DESC": "Consenti agli utenti di selezionare aree cliccando sulla mappa.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Geofence personalizzate",
+ "DISABLE_USER_GEOFENCES_DESC": "Consenti agli utenti di disegnare, importare e inviare le proprie geofence. Le geofence esistenti continuano a funzionare.",
+ "ENABLE_TEMPLATES_LABEL": "Modelli",
"ENABLE_TEMPLATES_DESC": "Consenti agli utenti di scegliere modelli di messaggio di notifica.",
"ALLOWED_LANGUAGES_LABEL": "Lingue UI consentite",
"ALLOWED_LANGUAGES_DESC": "Codici lingua separati da virgole da mostrare nel selettore (es. \"en,de,fr,es\"). Lascia vuoto per mostrare tutte e 11 le lingue.",
@@ -1455,8 +1543,6 @@
"ENABLE_ROLES_DESC": "Consenti l'accesso solo agli utenti con specifici ruoli Discord. Richiede Bot Token e Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "ID ruoli consentiti",
"ALLOWED_ROLE_IDS_DESC": "ID ruoli Discord separati da virgole che concedono l'accesso (es. \"123456789,987654321\"). Lascia vuoto per consentirli tutti.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Lingue consentite",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Elenco separato da virgole di codici lingua selezionabili dagli utenti (es. \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Comando di registrazione",
"REGISTER_COMMAND_DESC": "Comando del bot Poracle che gli utenti eseguono per registrarsi (es. \"$!register\").",
"LOCATION_COMMAND_LABEL": "Comando di posizione",
@@ -1467,6 +1553,28 @@
"TELEGRAM_BOT_DESC": "Nome utente del bot Telegram (senza @).",
"ENABLE_DISCORD_LABEL": "Abilita accesso Discord",
"ENABLE_DISCORD_DESC": "Consenti l'accesso Discord su questo sito. Richiede Discord Client ID e Client Secret in .env (riavvio del server necessario dopo modifiche a .env). Non influenza la consegna del bot PoracleNG.",
+ "GROUP_OIDC": "SSO Esterno",
+ "ENABLE_OIDC_LABEL": "Abilita accesso SSO Esterno",
+ "ENABLE_OIDC_DESC": "Consenti l'accesso tramite il provider OIDC/OAuth2 esterno configurato. Richiede le impostazioni OIDC_* (URL del provider, client ID e secret) in .env (riavvio del server necessario dopo modifiche a .env).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Tutti gli utenti vengono reindirizzati al provider SSO esterno. L'accesso locale viene ignorato.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Passa a SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Passare all'accesso SSO?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Dopo il salvataggio, tutti gli utenti (inclusi gli amministratori) verranno reindirizzati a {{provider}} per accedere — la pagina di accesso locale Discord/Telegram viene ignorata. Se il provider non è raggiungibile potresti rimanere bloccato; per recuperare imposta AUTH_FORCE_LOCAL=true nell'ambiente del server.",
+ "AUTH_OIDC_NOT_CONFIGURED": "L'SSO non è disponibile finché il provider OIDC non viene configurato nell'ambiente del server (variabili OIDC_*).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord e Telegram sono nascosti quando l'SSO è la modalità di accesso attiva.",
+ "AUTH_SLO_LABEL": "Logout singolo",
+ "AUTH_SLO_DESC": "Se abilitato, \"Esci ovunque\" termina anche la sessione del provider (non solo questo sito). Richiede l'endpoint di fine sessione del provider (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Il logout singolo non è disponibile finché non viene configurato l'endpoint di fine sessione del provider (variabile OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Configurazione provider OIDC",
+ "OIDC_PROVIDER_LABEL": "Nome del provider",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization URL",
+ "OIDC_TOKEN_URL_LABEL": "Token URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo URL",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scope",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identity claim",
+ "OIDC_USE_PKCE_LABEL": "Usa PKCE",
"PROVIDER_URL_LABEL": "URL tasselli mappa",
"PROVIDER_URL_DESC": "Modello URL del fornitore di tasselli mappa (usato per mappe statiche).",
"GANALYTICSID_LABEL": "ID Google Analytics",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "ID admin",
"DISCORD_ADMIN_IDS_DESC": "ID utenti Discord con accesso admin (mascherato).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Canale forum geofence",
- "DISCORD_GEOFENCE_FORUM_DESC": "Canale forum Discord per thread di invio geofence."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Canale forum Discord per thread di invio geofence.",
+ "SEARCH_PLACEHOLDER": "Cerca impostazioni…",
+ "SEARCH_CLEAR": "Cancella ricerca",
+ "UNSAVED_CHANGES": "{{count}} non salvate",
+ "SAVE_CHANGES": "Salva modifiche",
+ "DISCARD_CHANGES": "Annulla",
+ "COLLAPSE_SECTION": "Comprimi sezione",
+ "EXPAND_SECTION": "Espandi sezione",
+ "SUMMARY_ENABLED": "{{count}} di {{total}} attive"
},
"GEOFENCE_DETAIL": {
"NAME": "Nome",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "La tua posizione",
"SELECTED_COUNT": "{{count}} selezionati:",
"AREAS_SELECTED": "{{count}} area/e selezionate"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Impostazioni predefinite avvisi",
+ "DESC": "Scegli come vengono recapitati i nuovi avvisi per impostazione predefinita. Potrai comunque modificarlo per ogni avviso al momento della creazione.",
+ "DEFAULT_DISTANCE": "Distanza predefinita",
+ "DEFAULT_DISTANCE_HINT": "Usata per precompilare il raggio dei nuovi avvisi basati sulla distanza.",
+ "FOOTNOTE": "Si applica solo agli avvisi appena creati: quelli esistenti restano invariati."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/nl.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/nl.json
index 7687dfb6..3d195951 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/nl.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/nl.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Accentthema",
"LANGUAGE": "Taal",
"LOGOUT": "Uitloggen",
+ "LOGOUT_EVERYWHERE": "Overal uitloggen",
"ACCENT_DEFAULT": "Standaard",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Standaardinstellingen meldingen"
},
"SHORTCUTS": {
"TITLE": "Sneltoetsen",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Vorm & Geslacht",
"LABEL_FORM": "Vorm",
"ALL_FORMS": "Alle Vormen",
+ "FORM_MULTI_HINT": "Laat leeg om alle vormen op te nemen",
"LABEL_GENDER": "Geslacht",
"GENDER_ALL": "Alle",
"GENDER_MALE": "Mannelijk",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Gemeenschappelijke Instellingen"
},
"RAIDS": {
+ "RSVP_LABEL": "RSVP-meldingen",
+ "RSVP_OFF": "Alleen overeenkomsten",
+ "RSVP_INCLUDE": "Overeenkomsten + RSVP-updates",
+ "RSVP_ONLY": "Alleen RSVP-updates",
+ "RSVP_OFF_DESC": "Alleen standaard raid-/ei-meldingen.",
+ "RSVP_INCLUDE_DESC": "Ook opnieuw melden wanneer RSVP-aantallen wijzigen.",
+ "RSVP_ONLY_DESC": "Sla initiële matches over; meld alleen RSVP-wijzigingen. Zonder een scanner die RSVP verstuurt blijft dit alarm stil.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Alleen RSVP",
"PAGE_TITLE": "Raid & Ei Alarmen",
"PAGE_DESC": "Ontvang meldingen over raidbazen en uitkomende eieren bij nabije gyms.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Weet je zeker dat je ALLE raid en ei alarmen wilt verwijderen? Dit kan niet ongedaan worden gemaakt.",
"CONFIRM_BULK_DELETE_TITLE": "Geselecteerde Alarmen Verwijderen",
"CONFIRM_BULK_DELETE_MSG": "Weet je zeker dat je {{count}} alarmen wilt verwijderen?",
- "CONFIRM_DELETE_SELECTED": "Geselecteerde Verwijderen"
+ "CONFIRM_DELETE_SELECTED": "Geselecteerde Verwijderen",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Quest Alarmen",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Alle quest alarmen verwijderd",
"SNACK_FAILED_DELETE_ALL": "Alarmen verwijderen mislukt",
"SNACK_FAILED_DISTANCE": "Afstanden bijwerken mislukt",
- "CONFIRM_DELETE_SELECTED": "Geselecteerde Verwijderen"
+ "CONFIRM_DELETE_SELECTED": "Geselecteerde Verwijderen",
+ "SUMMARY_MODE": "Dagelijkse samenvatting",
+ "SUMMARY_HINT": "Bundel overeenkomende quests in één samenvattingsbericht in plaats van een melding per stuk. Vereist een geconfigureerd samenvattingsschema op de bot.",
+ "SUMMARY_BADGE": "Samenvatting",
+ "SUMMARY_SCHEDULE": "Bezorging van questsamenvatting",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Questsamenvatting",
+ "SUMMARY_SCHEDULE_EMPTY": "Geen samenvattingsschema ingesteld. Quests worden afzonderlijk bezorgd.",
+ "SUMMARY_SCHEDULE_EDIT": "Schema bewerken",
+ "SUMMARY_SCHEDULE_CLEAR": "Schema verwijderen",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Samenvatting nu verzenden",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Levert de questmatches die sinds je laatste samenvatting zijn verzameld. Staat er nog niets in de buffer, dan wordt er niets verzonden.",
+ "SUMMARY_SCHEDULE_SAVED": "Samenvattingsschema opgeslagen",
+ "SUMMARY_SCHEDULE_CLEARED": "Samenvattingsschema verwijderd",
+ "SUMMARY_SCHEDULE_SENT": "Samenvatting verzonden",
+ "SUMMARY_SCHEDULE_FAILED": "Kan het samenvattingsschema niet bijwerken",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "Bezorging van samenvattingen is tijdelijk niet beschikbaar. Probeer het later opnieuw.",
+ "SUMMARY_DISABLED_HINT": "Het plannen van samenvattingen is niet beschikbaar op deze server."
},
"INVASIONS": {
"PAGE_TITLE": "Invasie Alarmen",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnetisch",
"TYPE_RAINY": "Regenachtig",
"TYPE_GOLDEN": "Gouden",
- "TYPE_UNKNOWN": "Lokmodule #{{id}}"
+ "TYPE_UNKNOWN": "Lokmodule #{{id}}",
+ "EDIT_MODE": "Bericht ter plekke bewerken",
+ "EDIT_HINT": "Werk het bestaande Discord-bericht bij wanneer de lokmodule verandert in plaats van een nieuw bericht te sturen.",
+ "EDIT_BADGE": "Bewerken"
},
"NESTS": {
"PAGE_TITLE": "Nest Alarmen",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Wijzigen",
"SET_LOCATION": "Instellen",
"METHOD_NOTE": "Elk alarm kiest één methode in het Bezorging tabblad.",
+ "NOTIFICATION_LANGUAGE": "Meldingstaal",
+ "NOTIFICATION_LANGUAGE_DESC": "De taal die Poracle gebruikt voor je meldingsteksten en Pokémon-namen. Dit staat los van de weergavetaal in het bovenste menu.",
+ "SNACK_LANGUAGE_UPDATED": "Meldingstaal bijgewerkt",
+ "SNACK_LANGUAGE_FAILED": "Bijwerken van meldingstaal mislukt",
"SELECT_AREAS": "Gebieden Selecteren",
"MAP_VIEW": "Kaart",
"LIST_VIEW": "Lijst",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, eggs, quests, rockets, lures, nests, gyms, fort changes",
"SECTION_DELIVERY": "Delivery Settings",
"SECTION_DELIVERY_SUB": "Areas vs distance, templates, and clean mode",
+ "SECTION_QUEST_SUMMARY": "Bezorging van questsamenvatting",
+ "SECTION_QUEST_SUMMARY_SUB": "Bundel drukke quests in één gepland overzicht",
"SECTION_TEST_ALERTS": "Test Alerts",
"SECTION_TEST_ALERTS_SUB": "Send sample notifications to preview your alarms",
"SECTION_POKEMON_AVAILABILITY": "Pokemon Availability",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Als de vooraf gedefinieerde gebieden niet dekken waar je meldingen wilt, kun je je eigen aangepaste geofence-grenzen op de kaart tekenen.
Een geofence tekenen
- Ga naar Mijn Geofences vanuit de zijbalk.
- Klik op Geofence Tekenen.
- Klik op de kaart om punten van je polygoongrens te plaatsen. Klik opnieuw op het eerste punt om de vorm te sluiten (minimaal 3 punten).
- Geef je geofence een naam en selecteer bij welke regio het hoort. De regio wordt meestal automatisch gedetecteerd.
- Klik op Opslaan.
Geofences beheren
- Bewerken — Hernoem je geofence of wijzig de regio.
- Verwijderen — Verwijder een geofence die je niet meer nodig hebt. De geofence wordt automatisch uit alle profielen verwijderd.
Profielschakelaar
Elke geofencekaart heeft een schuifschakelaar om het te activeren of deactiveren voor je huidige profiel. Wanneer je een geofence aanmaakt, wordt het automatisch geactiveerd op het profiel dat je gebruikt. Schakel naar een ander profiel en de schakelaar toont \"Inactief\" — zet hem aan om ook op dat profiel meldingen voor die geofence te ontvangen. Zo kun je bepalen welke profielen meldingen krijgen voor elke geofence zonder hem opnieuw aan te maken.
ℹ️Goedgekeurde geofences (gepromoveerd tot openbare gebieden) tonen de schakelaar niet — beheer ze vanaf de pagina Gebieden.
GeoJSON Importeren & Exporteren
Je kunt geofences importeren en exporteren met het standaard GeoJSON formaat, waardoor het makkelijk is om grenzen te delen of ze in externe tools te maken zoals geojson.io.
- Importeren — Klik op het uploadpictogram en plak of upload een GeoJSON bestand. Elke polygoon in het bestand wordt een nieuwe geofence. Je kunt ze allemaal bekijken en hernoemen voordat je opslaat.
- Exporteren — Klik op het downloadpictogram en selecteer welke geofences je wilt opnemen. Het geëxporteerde GeoJSON bestand bevat alle geselecteerde polygonen en kan in elke GIS-tool of kaarteditor worden geopend.
💡GeoJSON import is handig voor het migreren van geofences uit andere systemen of het tekenen van complexe grenzen in een desktop GIS-tool en ze vervolgens hier te importeren.
Indienen voor openbare goedkeuring
Als je denkt dat je geofence nuttig zou zijn voor de hele community, kun je het indienen voor beheerdersbeoordeling. Als het wordt goedgekeurd, wordt het een openbaar gebied dat iedereen kan selecteren. Je privégeofence blijft werken terwijl de beoordeling loopt.
Statusbadges
- Actief — Je privégeofence, alleen werkend voor jou.
- In beoordeling — Ingediend en wachtend op beheerdersbeoordeling.
- Goedgekeurd — Gepromoveerd tot een openbaar gebied.
- Afgewezen — Niet goedgekeurd. Je kunt de feedback van de beheerder bekijken en de geofence blijft actief als privézone.
ℹ️Je kunt maximaal 10 aangepaste geofences hebben, elk met maximaal 500 grenspunten.
",
"CONTENT_POKEMON": "
Pokemon alarmen waarschuwen je wanneer een wilde Pokemon verschijnt die aan je filters voldoet.
Een Pokemon alarm toevoegen

- Ga naar Pokemon vanuit de zijbalk en klik op de + knop.
- Selecteer Pokemon — Zoek op naam of Pokedex nummer, of gebruik de generatie- en typefilterknoppen om te bladeren. Je kunt meerdere Pokemon tegelijk selecteren.
- Stel filters in — Kies wat een spawn de moeite waard maakt om over gewaarschuwd te worden:
- IV bereik — Minimum en maximum IV percentage (0-100%)
- CP bereik — Filter op gevechtskracht
- Niveaubereik — Filter op Pokemon niveau (0-55)
- Individuele stats — Filter op ATK, DEF en STA waarden (0-15 elk)
- Vorm — Volg specifieke vormen (bijv. Alolan, Galarian) of alle vormen
- Geslacht — Mannelijk, vrouwelijk, geslachtloos of alle
- Gewicht — Filter op gewichtsbereik
- Grootte — Filter op groottecategorie: selecteer ALL (geen filter) om elke grootte te matchen, of kies specifieke groottes van XXS tot XXL (XXS, XS, Normal, XL, XXL)
ℹ️Standaard filterwaarden zijn zo ingesteld dat alle Pokemon overeenkomen wanneer er geen filters expliciet zijn geconfigureerd. Bijvoorbeeld, IV standaard 0-100%, niveau 0-55 en grootte ALL. Je hoeft alleen de filters aan te passen die je belangrijk vindt.
PVP Filters
Ontvang een melding wanneer een Pokemon geweldige PVP IV's heeft. Selecteer een competitie (Great, Ultra of Little Cup) en stel het rankbereik in dat je belangrijk vindt (bijv. rank 1-50).
Alarm \"Alle Pokemon\"
💡Selecteer \"Alle Pokemon\" (ID 0) om één alarm te maken dat elke soort dekt. Handig met een hoog IV filter zoals 96-100% om elke waardevolle spawn te vangen.
Alarmkaarten lezen
Elke alarmkaart toont gekleurde pillen die je filters in één oogopslag samenvatten:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Raid & Ei alarmen
Ontvang een melding wanneer een raidboss of ei verschijnt dat je interesseert.
- Op niveau — Selecteer raidniveaus (1-6) of einiveaus om alle raids van dat niveau te volgen.
- Op boss — Selecteer specifieke Pokemon raidbosses die je wilt bestrijden.
- Teamfilter — Waarschuw alleen voor raids bij gyms die door een specifiek team worden beheerst (Mystic, Valor, Instinct).
- Gymtracking — Volg raids bij specifieke gyms op naam, zodat je alleen wordt gewaarschuwd over je favoriete gyms.
- Movefilter — Filter raidbosses op hun snelle of geladen moves.
- RSVP meldingen — Ontvang een melding wanneer andere trainers zich aanmelden voor een raid of ei dat je volgt.
Raid en Ei alarmen worden beheerd op aparte tabs binnen de Raids pagina. Eieren ondersteunen ook gym-specifieke tracking en RSVP meldingen.
Max Battle (Dynamax) alarmen
Ontvang meldingen over Dynamax en Gigantamax gevechten bij Power Spots.
- Op niveau — Selecteer gevechtsniveaus om elke Pokemon op die niveaus te volgen. Niveaus lopen van 1 Ster tot 5 Sterren (Legendarisch) voor Dynamax, plus Gigantamax en Legendarisch Gigantamax voor de grootste gevechten. Er wordt één alarm aangemaakt per geselecteerd niveau.
- Op Pokemon — Selecteer specifieke Pokemon die je wilt bevechten op alle Max Battle niveaus. Als de scannerdatabase is geconfigureerd, toont de selector alleen Pokemon die in Max Battles zijn verschenen.
- Alleen Gigantamax — Bij tracking op Pokemon, schakel dit in om alleen meldingen te ontvangen wanneer die Pokemon in Gigantamax gevechten verschijnt (de gevechten van het hoogste niveau met unieke G-Max moves). Bij tracking op niveau wordt Gigantamax beheerd door direct de Gigantamax of Legendarisch Gigantamax niveaus te selecteren.
- Alles selecteren — Selecteer snel alle beschikbare niveaus tegelijk (equivalent aan het
!maxbattle everything commando van de bot).
Quest alarmen
Ontvang meldingen over veldonderzoekstaken met specifieke beloningen.
- Pokemon ontmoetingen — Selecteer Pokemon die je als questbeloning wilt.
- Items — Volg quests die specifieke items belonen.
- Mega Energie — Volg quests die mega-energie geven voor specifieke Pokemon.
- Snoepjes — Volg quests die snoepjes belonen voor specifieke Pokemon.
Invasie alarmen
Ontvang meldingen over Team Rocket invasies.
- Alles volgen — Eén alarm voor elk type grunt en leider.
- Op type — Selecteer specifieke grunttypes (Bug, Dragon, Fire, enz.), Rocket Leaders of Giovanni. Grunttypenamen worden automatisch genormaliseerd (niet hoofdlettergevoelig), dus je hoeft je geen zorgen te maken over exacte hoofdletters.
- Geslacht — Filter op gruntgeslacht.
Lokmiddel alarmen
Ontvang een melding wanneer een specifiek type lokmiddel wordt geplaatst. Kies uit Normal, Glacial, Mossy, Magnetic, Rainy en Golden lokmiddelen.
Nest alarmen
Volg nestende Pokemon soorten. Stel een drempel in voor minimum spawns per uur zodat je alleen wordt gewaarschuwd over nesten met voldoende activiteit.
Gym alarmen
Volg gymteamwisselingen. Selecteer welke teams (Neutraal, Mystic, Valor, Instinct) je wilt monitoren. Schakel Plekwijzigingen tracking in om gewaarschuwd te worden wanneer gymplekken vrijkomen, of schakel Gevechtswijzigingen tracking in om gewaarschuwd te worden wanneer een gym wordt aangevallen.
Fortwijziging alarmen
Volg wijzigingen aan pokestops en gyms zelf — niet de activiteiten erbij, maar wijzigingen aan de daadwerkelijke interessepunten.
- Forttype — Kies om Pokestops, Gyms of Alles te volgen.
- Wijzigingstypen — Selecteer welke wijzigingen je wilt monitoren: Naam gewijzigd, Locatie gewijzigd, Afbeelding gewijzigd, Verwijdering of Nieuw fort toegevoegd.
- Lege opnemen — Neem forten zonder naam op.
💡Fortwijziging alarmen zijn handig voor het volgen van kaartdatabase-updates — nieuwe pokestops die verschijnen, gyms die worden verplaatst of POI's die uit het spel worden verwijderd.
Een specifieke gym targeten
Bij het aanmaken of bewerken van een Raid, Ei of Gym alarm kun je optioneel een specifieke gym zoeken en selecteren. Dit is handig wanneer je alleen geeft om activiteit bij je favoriete gym — zoals die op je lunchroute of bij je huis.
- Hoe te gebruiken — In het toevoeg- of bewerkingsvenster, typ een gymnaam in het gymzoekveld. Resultaten tonen de foto, naam en het gebied van de gym zodat je de juiste kunt identificeren.
- Wanneer een gym is geselecteerd — Het alarm gaat alleen af voor gebeurtenissen bij die specifieke gym. De gymnaam verschijnt op de alarmkaart in je lijst zodat je in één oogopslag kunt zien welke gym het doel is.
- Wanneer geen gym is geselecteerd — Dit is de standaard. Het alarm werkt normaal voor alle gyms in je geselecteerde gebieden of binnen je afstandsstraal.
💡Je kunt een gym-specifiek alarm combineren met een breder alarm. Maak bijvoorbeeld één raidalarm gericht op je lokale gym voor alle niveaus, en een tweede alarm voor niveau 5 raids in al je gebieden.
",
- "CONTENT_DELIVERY": "
Elk alarm heeft bezorginstellingen die bepalen waar je meldingen ontvangt.
Gebieden vs Afstand
Elk alarm gebruikt een van twee bezorgmodi:
🗺
Gebruik GebiedenJe wordt gewaarschuwd wanneer gebeurtenissen plaatsvinden in je geselecteerde gebieden. Goed voor het volgen van specifieke wijken.📏
Stel Afstand inJe wordt gewaarschuwd binnen een straal (km) van je opgeslagen locatie. Goed voor het volgen van alles in je buurt.Je kunt verschillende modi gebruiken voor verschillende alarmen — bijvoorbeeld gebieden voor Pokemon en afstand voor raids.
Meldingstemplates
Als templates zijn ingeschakeld, kun je kiezen hoe je meldingsberichten eruitzien. De templateselector toont een live voorbeeld van hoe je Discord DM eruit zal zien, inclusief het embed-formaat, velden en afbeeldingen.
Opschoningsmodus
Wanneer ingeschakeld, verwijdert de bot automatisch de melding uit Discord nadat de gebeurtenis is verlopen (bijv. een Pokemon verdwijnt of een raid eindigt). Dit houdt je DM's opgeruimd. Je kunt de opschoningsmodus per alarm of in bulk inschakelen vanaf de pagina Opschoning.
Ping / Rolmeldingen
Als je webhooks gebruikt, kun je een Discord rol instellen om te vermelden in de melding (bijv. @Pokemon). Dit is alleen relevant voor webhook-configuraties.
",
+ "CONTENT_DELIVERY": "
Elk alarm heeft bezorginstellingen die bepalen waar je meldingen ontvangt.
Gebieden vs Afstand
Elk alarm gebruikt een van twee bezorgmodi:
🗺
Gebruik GebiedenJe wordt gewaarschuwd wanneer gebeurtenissen plaatsvinden in je geselecteerde gebieden. Goed voor het volgen van specifieke wijken.📏
Stel Afstand inJe wordt gewaarschuwd binnen een straal (km) van je opgeslagen locatie. Goed voor het volgen van alles in je buurt.Je kunt verschillende modi gebruiken voor verschillende alarmen — bijvoorbeeld gebieden voor Pokemon en afstand voor raids.
Meldingstemplates
Als templates zijn ingeschakeld, kun je kiezen hoe je meldingsberichten eruitzien. De templateselector toont een live voorbeeld van hoe je Discord DM eruit zal zien, inclusief het embed-formaat, velden en afbeeldingen.
Opschoningsmodus
Wanneer ingeschakeld, verwijdert de bot automatisch de melding uit Discord nadat de gebeurtenis is verlopen (bijv. een Pokemon verdwijnt of een raid eindigt). Dit houdt je DM's opgeruimd. Je kunt de opschoningsmodus per alarm of in bulk inschakelen vanaf de pagina Opschoning.
Ping / Rolmeldingen
Als je webhooks gebruikt, kun je een Discord rol instellen om te vermelden in de melding (bijv. @Pokemon). Dit is alleen relevant voor webhook-configuraties.
Ter plekke bewerken & samenvattingen
Sommige alarmen ondersteunen extra bezorgmodi. Schakel Bericht ter plekke bewerken in voor een lokmodule om het bestaande Discord-bericht bij te werken wanneer de lokmodule verandert in plaats van een nieuw bericht te sturen, of Dagelijkse samenvatting voor een quest om overeenkomende quests in één samenvattingsbericht te bundelen (vereist een samenvattingsschema op de bot). Raids en eieren worden automatisch ter plekke bewerkt wanneer je een RSVP-modus kiest. Deze instellingen blijven behouden, ook als je ze via de bot instelt.
RSVP-updates (raids & eieren)
Raid- en ei-alarmen voegen een RSVP-meldingen instelling toe in het toevoeg-/bewerkingsvenster met drie keuzes: Alleen overeenkomsten stuurt de standaard raid-/ei-meldingen; Overeenkomsten + RSVP-updates meldt ook opnieuw wanneer de RSVP-aantallen wijzigen (trainers die zich aanmelden); en Alleen RSVP-updates slaat de initiële overeenkomst over en meldt je alleen RSVP-wijzigingen. Bij het kiezen van een van beide RSVP-modi bewerkt de bot het bestaande Discord-bericht ter plekke naarmate de aantallen veranderen, in plaats van nieuwe te sturen, en de kaart toont een "RSVP" of "Alleen RSVP" pil. Let op dat Alleen RSVP-updates stil blijft tenzij de scanner van je community RSVP-gebeurtenissen verstuurt — kies dit alleen als je weet dat RSVP’s worden gerapporteerd.
",
+ "CONTENT_QUEST_SUMMARY": "Field Research-quests wisselen dagelijks en kunnen in grote aantallen overeenkomen, dus een druk questfilter kan je DM’s overspoelen. Bezorging van questsamenvatting bundelt overeenkomende quests in één gepland overzicht in plaats van veel losse meldingen.
Twee delen die samenwerken
- Schakelaar Dagelijkse samenvatting — zet deze aan voor een questalarm (in het toevoegen/bewerken-venster) om de overeenkomsten te markeren voor het overzicht in plaats van directe bezorging.
- Bezorgschema — kies wanneer de verzamelde quests worden verzonden.
Beide zijn nodig: de schakelaar bepaalt welke quests worden verzameld, het schema bepaalt wanneer ze worden bezorgd.
Je schema instellen
Open de pagina Quests, daarna het menu ⋮ in de werkbalk en kies Bezorging van questsamenvatting. Gebruik Schema bewerken om dagen en tijden te kiezen — dezelfde editor als voor de actieve uren van profielen. Opgeslagen tijden verschijnen als amberkleurige pillen.
Het schema is per gebruiker en wordt gedeeld over al je profielen — in tegenstelling tot de actieve uren van profielen, die per profiel worden ingesteld.
Samenvatting nu verzenden
Samenvatting nu verzenden bezorgt meteen alles wat sinds je laatste samenvatting is verzameld. Als er nog niets is verzameld, wordt er niets verzonden — quests worden gebufferd zodra ze overeenkomen, dus geef het tijd of wacht tot het schema wordt geactiveerd.
Goed om te weten
- Het menu verschijnt alleen wanneer de bot van je server questsamenvattingen heeft ingeschakeld.
- De bezorgtijd gebruikt je opgeslagen locatie voor de tijdzone — stel een locatie in, anders kunnen samenvattingen op de verkeerde lokale tijd aankomen (het venster waarschuwt je wanneer er geen locatie is ingesteld).
- Het verwijderen van het schema behoudt de schakelaar per alarm; quests worden nog steeds verzameld, maar vallen terug op de standaardtijd van de bot.
",
"CONTENT_TEST_ALERTS": "Elke alarmkaart heeft een Test knop (papiervliegtuigpictogram) die een voorbeeldmelding stuurt naar je Discord of Telegram, met de exacte filters van het alarm en je huidige bezorgtemplate.
Hoe het werkt
- Zoek een alarmkaart in je lijst (Pokemon, Raid, Quest, enz.).
- Klik op het verzend pictogram in de actierij van de kaart.
- Er wordt een namaakgebeurtenis gegenereerd die overeenkomt met de filters van je alarm en door de meldingspipeline gestuurd. Je ontvangt een DM net als een echt alarm.
Wat wordt getest
De test gebruikt de filterwaarden van je alarm (Pokemon ID, raidniveau, questbeloning, enz.) en je opgeslagen locatie als de namaakgebeurteniscoördinaten. De melding wordt opgemaakt met je geselecteerde template, zodat je precies ziet hoe een echt alarm eruit zou zien.
Afkoeltijd
Om spam te voorkomen heeft elk alarm een afkoeltijd van 15 seconden tussen testverzendingen. De knop is uitgeschakeld tijdens de afkoeltijd en een snackbar toont feedback (succes, fout of resterende afkoeltijd).
💡Testmeldingen zijn geweldig om te controleren of je template er goed uitziet of om te bevestigen dat je webhookbezorging werkt voordat je wacht op een echte gebeurtenis.
",
"CONTENT_POKEMON_AVAILABILITY": "Bij het toevoegen of bewerken van Pokemon alarmen kan de Pokemon selector beschikbaarheidsindicatoren tonen — kleine badges die aangeven welke Pokemon momenteel in het wild spawnen.
Hoe het werkt
Als je community een Golbat scanner geconfigureerd heeft, toont de selector gekleurde stippen naast Pokemon namen:
- Groene stip — Deze Pokemon is recent gezien bij het spawnen.
- Geen stip — Momenteel niet gerapporteerd in de scannerdata.
Dit helpt je om te voorkomen dat je alarmen maakt voor Pokemon die momenteel niet spawnen in je gebied (bijv. seizoensgebonden of evenement-exclusieve soorten).
Beschikbaarheid vernieuwen
De gegevens worden automatisch op de achtergrond vernieuwd. Je hoeft niets te doen — zoek gewoon naar de stippen wanneer je door de Pokemon selector bladert.
ℹ️Deze functie is alleen zichtbaar als je beheerder de Golbat scanner-integratie heeft geconfigureerd. Als je geen beschikbaarheidsstippen ziet, is de functie niet ingeschakeld voor je community.
",
"CONTENT_BULK": "
Alle alarmpagina's ondersteunen bulkbewerkingen zodat je veel alarmen tegelijk kunt beheren.
Selectiemodus
Klik op het checklistpictogram in de werkbalk om de selectiemodus te activeren. Klik vervolgens op individuele alarmkaarten om ze te selecteren, of gebruik Alles selecteren om alles dat zichtbaar is te pakken.
Bulkacties
- Afstand bijwerken — Wijzig de bezorgmodus (gebieden of afstand) voor alle geselecteerde alarmen tegelijk.
- Verwijderen — Verwijder alle geselecteerde alarmen met één bevestiging.
💡Onderaan elke alarmlijst vind je ook de knoppen Alle Afstand Bijwerken en Alles Verwijderen die van toepassing zijn op elk alarm van dat type.
",
@@ -1096,7 +1174,14 @@
"ERR_GENERIC": "Authenticatiefout: {{error}}",
"ERR_NO_TOKEN": "Geen authenticatietoken ontvangen.",
"SIGN_UP": "Sign Up",
- "SIGN_UP_DESC": "Don't have an account? Sign up to get started."
+ "SIGN_UP_DESC": "Don't have an account? Sign up to get started.",
+ "SIGN_IN_OIDC": "Inloggen met {{provider}}",
+ "SIGNED_OUT_TITLE": "Uitgelogd",
+ "SIGNED_OUT_DESC": "Je bent uitgelogd bij DM Alerts.",
+ "ERR_OIDC_DISABLED": "Externe login is momenteel uitgeschakeld.",
+ "ERR_OIDC_NO_IDENTITY": "Je externe loginprovider heeft geen account teruggegeven dat we kunnen koppelen. Zorg ervoor dat je Discord-account is gekoppeld.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Externe login mislukt. Probeer het opnieuw.",
+ "ERR_OIDC_USERINFO": "Kon je profiel niet ophalen van de externe loginprovider. Probeer het opnieuw."
},
"ERROR": {
"SESSION_EXPIRED": "Session expired. Please log in again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Bewerken",
"ADD": "Toevoegen",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Bevestigen",
"DELETE_ALL": "Alles Verwijderen",
"CLOSE": "Sluiten",
@@ -1400,6 +1486,7 @@
"GROUP_DEBUG": "Debug",
"GROUP_ICON_REPO": "Iconenrepository",
"GROUP_OTHER": "Overig",
+ "GROUP_OIDC": "Externe SSO",
"CUSTOM_TITLE_LABEL": "Sitetitel",
"CUSTOM_TITLE_DESC": "Naam die in het browsertabblad en de pagina-header wordt weergegeven.",
"HEADER_LOGO_URL_LABEL": "Header-logo-URL",
@@ -1417,37 +1504,39 @@
"CUSTOM_PAGE_URL_DESC": "URL waar de aangepaste navigatielink naartoe wijst.",
"CUSTOM_PAGE_ICON_LABEL": "Pictogram van navigatielink",
"CUSTOM_PAGE_ICON_DESC": "FontAwesome-klasse voor het pictogram van de navigatielink (bijv. \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Pokémon uitschakelen",
- "DISABLE_MONS_DESC": "Verberg het beheer van Pokémon-alarmen voor alle gebruikers.",
- "DISABLE_RAIDS_LABEL": "Raids uitschakelen",
- "DISABLE_RAIDS_DESC": "Verberg het beheer van Raid-alarmen voor alle gebruikers.",
- "DISABLE_QUESTS_LABEL": "Taken uitschakelen",
- "DISABLE_QUESTS_DESC": "Verberg het beheer van takenalarmen voor alle gebruikers.",
- "DISABLE_INVASIONS_LABEL": "Invasies uitschakelen",
- "DISABLE_INVASIONS_DESC": "Verberg het beheer van invasiealarmen voor alle gebruikers.",
- "DISABLE_LURES_LABEL": "Lokmodules uitschakelen",
- "DISABLE_LURES_DESC": "Verberg het beheer van lokmodule-alarmen voor alle gebruikers.",
- "DISABLE_NESTS_LABEL": "Nesten uitschakelen",
- "DISABLE_NESTS_DESC": "Verberg het beheer van nestalarmen voor alle gebruikers.",
- "DISABLE_GYMS_LABEL": "Gyms uitschakelen",
- "DISABLE_GYMS_DESC": "Verberg het beheer van Gym-alarmen voor alle gebruikers.",
- "DISABLE_FORT_CHANGES_LABEL": "Fort-wijzigingen uitschakelen",
- "DISABLE_FORT_CHANGES_DESC": "Verberg het beheer van fort-wijzigingsalarmen voor alle gebruikers.",
- "DISABLE_MAXBATTLES_LABEL": "Max Battles uitschakelen",
- "DISABLE_MAXBATTLES_DESC": "Verberg het beheer van Max Battle-alarmen voor alle gebruikers.",
- "DISABLE_AREAS_LABEL": "Gebieden uitschakelen",
- "DISABLE_AREAS_DESC": "Voorkom dat gebruikers hun gebiedsabonnementen beheren.",
- "DISABLE_PROFILES_LABEL": "Profielen uitschakelen",
- "DISABLE_PROFILES_DESC": "Voorkom dat gebruikers alarmprofielen maken en wisselen.",
- "DISABLE_LOCATION_LABEL": "Locatie uitschakelen",
- "DISABLE_LOCATION_DESC": "Voorkom dat gebruikers een thuislocatie instellen.",
- "DISABLE_NOMINATIM_LABEL": "Geocoding uitschakelen",
- "DISABLE_NOMINATIM_DESC": "Schakel Nominatim-adreszoekopdracht voor locatieselectie uit.",
- "DISABLE_GEOMAP_LABEL": "Kaartweergave uitschakelen",
- "DISABLE_GEOMAP_DESC": "Verberg de interactieve geofence-kaart volledig.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Gebiedsselectie op kaart uitschakelen",
- "DISABLE_GEOMAP_SELECT_DESC": "Voorkom dat gebruikers gebieden selecteren door op de kaart te klikken.",
- "ENABLE_TEMPLATES_LABEL": "Templates inschakelen",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Laat gebruikers Pokémon-alarmen beheren.",
+ "DISABLE_RAIDS_LABEL": "Raids",
+ "DISABLE_RAIDS_DESC": "Laat gebruikers raid-alarmen beheren.",
+ "DISABLE_QUESTS_LABEL": "Quests",
+ "DISABLE_QUESTS_DESC": "Laat gebruikers quest-alarmen beheren.",
+ "DISABLE_INVASIONS_LABEL": "Invasies",
+ "DISABLE_INVASIONS_DESC": "Laat gebruikers invasiealarmen beheren.",
+ "DISABLE_LURES_LABEL": "Lokmodules",
+ "DISABLE_LURES_DESC": "Laat gebruikers lokmodule-alarmen beheren.",
+ "DISABLE_NESTS_LABEL": "Nesten",
+ "DISABLE_NESTS_DESC": "Laat gebruikers nestalarmen beheren.",
+ "DISABLE_GYMS_LABEL": "Gyms",
+ "DISABLE_GYMS_DESC": "Laat gebruikers Gym-alarmen beheren.",
+ "DISABLE_FORT_CHANGES_LABEL": "Fort-wijzigingen",
+ "DISABLE_FORT_CHANGES_DESC": "Laat gebruikers fort-wijzigingsalarmen beheren.",
+ "DISABLE_MAXBATTLES_LABEL": "Max Battles",
+ "DISABLE_MAXBATTLES_DESC": "Laat gebruikers Max Battle-alarmen beheren.",
+ "DISABLE_AREAS_LABEL": "Gebieden",
+ "DISABLE_AREAS_DESC": "Laat gebruikers hun gebiedsabonnementen beheren.",
+ "DISABLE_PROFILES_LABEL": "Profielen",
+ "DISABLE_PROFILES_DESC": "Laat gebruikers alarmprofielen maken en wisselen.",
+ "DISABLE_LOCATION_LABEL": "Locatie",
+ "DISABLE_LOCATION_DESC": "Laat gebruikers een thuislocatie instellen.",
+ "DISABLE_NOMINATIM_LABEL": "Geocoding",
+ "DISABLE_NOMINATIM_DESC": "Sta Nominatim-adreszoekopdrachten toe voor locatieselectie.",
+ "DISABLE_GEOMAP_LABEL": "Kaartweergave",
+ "DISABLE_GEOMAP_DESC": "Toon de interactieve geofence-kaart.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Gebiedsselectie op kaart",
+ "DISABLE_GEOMAP_SELECT_DESC": "Laat gebruikers gebieden selecteren door op de kaart te klikken.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Eigen geofences",
+ "DISABLE_USER_GEOFENCES_DESC": "Laat gebruikers eigen geofences tekenen, importeren en indienen. Bestaande geofences blijven werken.",
+ "ENABLE_TEMPLATES_LABEL": "Templates",
"ENABLE_TEMPLATES_DESC": "Laat gebruikers meldingsberichttemplates kiezen.",
"ALLOWED_LANGUAGES_LABEL": "Toegestane UI-talen",
"ALLOWED_LANGUAGES_DESC": "Door komma's gescheiden taalcodes die in de taalkiezer worden getoond (bijv. \"en,de,fr,es\"). Laat leeg om alle 11 talen te tonen.",
@@ -1455,8 +1544,6 @@
"ENABLE_ROLES_DESC": "Laat alleen gebruikers met specifieke Discord-rollen inloggen. Vereist Bot Token en Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "Toegestane rol-ID's",
"ALLOWED_ROLE_IDS_DESC": "Door komma's gescheiden Discord-rol-ID's die toegang verlenen (bijv. \"123456789,987654321\"). Laat leeg om alle toe te staan.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Toegestane talen",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Door komma's gescheiden lijst met taalcodes die gebruikers kunnen selecteren (bijv. \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Registratiecommando",
"REGISTER_COMMAND_DESC": "Poracle-bot-commando dat gebruikers uitvoeren om zich te registreren (bijv. \"$!register\").",
"LOCATION_COMMAND_LABEL": "Locatiecommando",
@@ -1498,7 +1585,36 @@
"DISCORD_ADMIN_IDS_LABEL": "Admin-ID's",
"DISCORD_ADMIN_IDS_DESC": "Discord-gebruikers-ID's met admin-toegang (gemaskeerd).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Geofence-forumkanaal",
- "DISCORD_GEOFENCE_FORUM_DESC": "Discord-forumkanaal voor geofence-inzendingsthreads."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Discord-forumkanaal voor geofence-inzendingsthreads.",
+ "ENABLE_OIDC_LABEL": "Externe SSO-login inschakelen",
+ "ENABLE_OIDC_DESC": "Sta login toe via de geconfigureerde externe OIDC/OAuth2-provider. Vereist OIDC_*-instellingen (provider-URL's, client-ID en secret) in .env (serverherstart vereist bij .env-wijzigingen).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Alle gebruikers worden doorgestuurd naar de externe SSO-provider. Lokale aanmelding wordt overgeslagen.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Overschakelen naar SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Overschakelen naar SSO-aanmelding?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Na het opslaan worden alle gebruikers (inclusief beheerders) doorgestuurd naar {{provider}} om in te loggen — de lokale Discord/Telegram-loginpagina wordt overgeslagen. Als de provider onbereikbaar is, kun je buitengesloten raken; herstel dit door AUTH_FORCE_LOCAL=true in te stellen in de serveromgeving.",
+ "AUTH_OIDC_NOT_CONFIGURED": "SSO is niet beschikbaar totdat de OIDC-provider is geconfigureerd in de serveromgeving (OIDC_*-omgevingsvariabelen).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord en Telegram worden verborgen zolang SSO de actieve aanmeldmodus is.",
+ "AUTH_SLO_LABEL": "Single logout",
+ "AUTH_SLO_DESC": "Indien ingeschakeld beëindigt \"Overal uitloggen\" ook de providersessie (niet alleen deze site). Vereist het end-session-eindpunt van de provider (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Single logout is niet beschikbaar totdat het end-session-eindpunt van de provider is geconfigureerd (OIDC_END_SESSION_URL-omgevingsvariabele).",
+ "OIDC_SERVER_CONFIG": "OIDC-providerconfiguratie",
+ "OIDC_PROVIDER_LABEL": "Providernaam",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization URL",
+ "OIDC_TOKEN_URL_LABEL": "Token URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo URL",
+ "OIDC_CLIENT_ID_LABEL": "Client-ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identity claim",
+ "OIDC_USE_PKCE_LABEL": "PKCE gebruiken",
+ "SEARCH_PLACEHOLDER": "Instellingen zoeken…",
+ "SEARCH_CLEAR": "Zoekopdracht wissen",
+ "UNSAVED_CHANGES": "{{count}} niet opgeslagen",
+ "SAVE_CHANGES": "Wijzigingen opslaan",
+ "DISCARD_CHANGES": "Verwerpen",
+ "COLLAPSE_SECTION": "Sectie inklappen",
+ "EXPAND_SECTION": "Sectie uitklappen",
+ "SUMMARY_ENABLED": "{{count}} van {{total}} ingeschakeld"
},
"GEOFENCE_DETAIL": {
"NAME": "Naam",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Jouw locatie",
"SELECTED_COUNT": "{{count}} geselecteerd:",
"AREAS_SELECTED": "{{count}} gebied(en) geselecteerd"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Standaardinstellingen meldingen",
+ "DESC": "Kies hoe nieuwe meldingen standaard worden bezorgd. Je kunt dit nog steeds per melding aanpassen bij het aanmaken.",
+ "DEFAULT_DISTANCE": "Standaardafstand",
+ "DEFAULT_DISTANCE_HINT": "Wordt gebruikt om de straal voor nieuwe afstandsmeldingen vooraf in te vullen.",
+ "FOOTNOTE": "Geldt alleen voor nieuw aangemaakte meldingen — bestaande meldingen blijven ongewijzigd."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pl.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pl.json
index fc6c624b..9fc9668f 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pl.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pl.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Motyw akcentu",
"LANGUAGE": "Język",
"LOGOUT": "Wyloguj",
+ "LOGOUT_EVERYWHERE": "Wyloguj się wszędzie",
"ACCENT_DEFAULT": "Domyślny",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Rajdy",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Domyślne ustawienia alertów"
},
"SHORTCUTS": {
"TITLE": "Skróty klawiszowe",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Forma i płeć",
"LABEL_FORM": "Forma",
"ALL_FORMS": "Wszystkie formy",
+ "FORM_MULTI_HINT": "Pozostaw puste, aby uwzględnić wszystkie formy",
"LABEL_GENDER": "Płeć",
"GENDER_ALL": "Wszystkie",
"GENDER_MALE": "Samiec",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Wspólne ustawienia"
},
"RAIDS": {
+ "RSVP_LABEL": "Powiadomienia RSVP",
+ "RSVP_OFF": "Tylko dopasowania",
+ "RSVP_INCLUDE": "Dopasowania + aktualizacje RSVP",
+ "RSVP_ONLY": "Tylko aktualizacje RSVP",
+ "RSVP_OFF_DESC": "Tylko standardowe alerty rajdów/jaj.",
+ "RSVP_INCLUDE_DESC": "Powiadamiaj także, gdy zmienią się liczby RSVP.",
+ "RSVP_ONLY_DESC": "Pomiń początkowe dopasowania; powiadamiaj tylko o zmianach RSVP. Bez skanera emitującego RSVP alarm zostanie wyciszony.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Tylko RSVP",
"PAGE_TITLE": "Alarmy rajdów i jajek",
"PAGE_DESC": "Otrzymuj powiadomienia o bossach rajdowych i wylęgach jajek w pobliskich arenach.",
"TAB_RAIDS": "Rajdy ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Czy na pewno chcesz usunąć WSZYSTKIE alarmy rajdów i jajek? Tej akcji nie można cofnąć.",
"CONFIRM_BULK_DELETE_TITLE": "Usuń zaznaczone alarmy",
"CONFIRM_BULK_DELETE_MSG": "Czy na pewno chcesz usunąć {{count}} alarmów?",
- "CONFIRM_DELETE_SELECTED": "Usuń zaznaczone"
+ "CONFIRM_DELETE_SELECTED": "Usuń zaznaczone",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Alarmy zadań",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Wszystkie alarmy zadań usunięte",
"SNACK_FAILED_DELETE_ALL": "Nie udało się usunąć alarmów",
"SNACK_FAILED_DISTANCE": "Nie udało się zaktualizować odległości",
- "CONFIRM_DELETE_SELECTED": "Usuń zaznaczone"
+ "CONFIRM_DELETE_SELECTED": "Usuń zaznaczone",
+ "SUMMARY_MODE": "Codzienne podsumowanie",
+ "SUMMARY_HINT": "Łączy pasujące zadania w jedną wiadomość podsumowującą zamiast osobnego powiadomienia dla każdego. Wymaga skonfigurowanego harmonogramu podsumowań w bocie.",
+ "SUMMARY_BADGE": "Podsumowanie",
+ "SUMMARY_SCHEDULE": "Dostarczanie podsumowania zadań",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Podsumowanie zadań",
+ "SUMMARY_SCHEDULE_EMPTY": "Nie ustawiono harmonogramu podsumowania. Zadania są dostarczane pojedynczo.",
+ "SUMMARY_SCHEDULE_EDIT": "Edytuj harmonogram",
+ "SUMMARY_SCHEDULE_CLEAR": "Usuń harmonogram",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Wyślij podsumowanie teraz",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Wysyła dopasowania questów zebrane od ostatniego podsumowania. Jeśli nic nie jest jeszcze w buforze, nic nie zostanie wysłane.",
+ "SUMMARY_SCHEDULE_SAVED": "Harmonogram podsumowania zapisany",
+ "SUMMARY_SCHEDULE_CLEARED": "Harmonogram podsumowania usunięty",
+ "SUMMARY_SCHEDULE_SENT": "Podsumowanie wysłane",
+ "SUMMARY_SCHEDULE_FAILED": "Nie udało się zaktualizować harmonogramu podsumowania",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "Dostarczanie podsumowań jest chwilowo niedostępne. Spróbuj ponownie później.",
+ "SUMMARY_DISABLED_HINT": "Planowanie podsumowań nie jest dostępne na tym serwerze."
},
"INVASIONS": {
"PAGE_TITLE": "Alarmy inwazji",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnetyczny",
"TYPE_RAINY": "Deszczowy",
"TYPE_GOLDEN": "Złoty",
- "TYPE_UNKNOWN": "Wabik #{{id}}"
+ "TYPE_UNKNOWN": "Wabik #{{id}}",
+ "EDIT_MODE": "Edytuj wiadomość w miejscu",
+ "EDIT_HINT": "Aktualizuje istniejącą wiadomość na Discordzie przy zmianie wabika zamiast wysyłać nową.",
+ "EDIT_BADGE": "Edycja"
},
"NESTS": {
"PAGE_TITLE": "Alarmy gniazd",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Zmień",
"SET_LOCATION": "Ustaw",
"METHOD_NOTE": "Każdy alarm wybiera jedną metodę w zakładce Dostarczanie.",
+ "NOTIFICATION_LANGUAGE": "Język powiadomień",
+ "NOTIFICATION_LANGUAGE_DESC": "Język, którego Poracle używa w treści powiadomień i nazwach Pokémonów. Jest niezależny od języka interfejsu w górnym menu.",
+ "SNACK_LANGUAGE_UPDATED": "Zaktualizowano język powiadomień",
+ "SNACK_LANGUAGE_FAILED": "Nie udało się zaktualizować języka powiadomień",
"SELECT_AREAS": "Wybierz obszary",
"MAP_VIEW": "Mapa",
"LIST_VIEW": "Lista",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, eggs, quests, rockets, lures, nests, gyms, fort changes",
"SECTION_DELIVERY": "Delivery Settings",
"SECTION_DELIVERY_SUB": "Areas vs distance, templates, and clean mode",
+ "SECTION_QUEST_SUMMARY": "Dostarczanie podsumowania zadań",
+ "SECTION_QUEST_SUMMARY_SUB": "Połącz hałaśliwe zadania w jedno zaplanowane podsumowanie",
"SECTION_TEST_ALERTS": "Test Alerts",
"SECTION_TEST_ALERTS_SUB": "Send sample notifications to preview your alarms",
"SECTION_POKEMON_AVAILABILITY": "Pokemon Availability",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Jeśli predefiniowane obszary nie obejmują miejsca, z którego chcesz alerty, możesz narysować własne niestandardowe granice geofence na mapie.
Rysowanie geofence
- Przejdź do Moje Geofence w panelu bocznym.
- Kliknij Rysuj Geofence.
- Kliknij na mapie, aby umieszczać punkty granicy wielokąta. Kliknij ponownie pierwszy punkt, aby zamknąć kształt (minimum 3 punkty).
- Nadaj geofence nazwę i wybierz region, do którego należy. Region jest zwykle wykrywany automatycznie.
- Kliknij Zapisz.
Zarządzanie geofence
- Edytuj — Zmień nazwę geofence lub zmień jego region.
- Usuń — Usuń geofence, którego już nie potrzebujesz. Geofence jest usuwany ze wszystkich profili automatycznie.
Przełącznik profilu
Każda karta geofence ma suwak do aktywacji lub dezaktywacji dla twojego aktualnego profilu. Gdy tworzysz geofence, jest automatycznie aktywowany w profilu, którego używasz. Przełącz się na inny profil, a suwak pokaże \"Inactive\" — włącz go, aby otrzymywać alerty z tego geofence również w tym profilu. Pozwala to kontrolować, które profile otrzymują powiadomienia z każdego geofence bez jego ponownego tworzenia.
ℹ️Zatwierdzone geofence (awansowane do publicznych obszarów) nie pokazują suwaka — zarządzaj nimi ze strony Obszary.
GeoJSON Import & Export
Możesz importować i eksportować geofence w standardowym formacie GeoJSON, co ułatwia udostępnianie granic lub tworzenie ich w zewnętrznych narzędziach, takich jak geojson.io.
- Import — Kliknij ikonę przesyłania i wklej lub prześlij plik GeoJSON. Każdy wielokąt w pliku staje się nowym geofence. Możesz przejrzeć i zmienić nazwę każdego z nich przed zapisaniem.
- Eksport — Kliknij ikonę pobierania i wybierz, które geofence chcesz uwzględnić. Wyeksportowany plik GeoJSON zawiera wszystkie wybrane wielokąty i można go otworzyć w dowolnym narzędziu GIS lub edytorze map.
💡Import GeoJSON jest przydatny do migracji geofence z innych systemów lub rysowania złożonych granic w narzędziu GIS na komputerze, a następnie importowania ich tutaj.
Zgłaszanie do publicznego zatwierdzenia
Jeśli uważasz, że twój geofence byłby przydatny dla całej społeczności, możesz go zgłosić do przeglądu przez administratora. Jeśli zostanie zatwierdzony, stanie się publicznym obszarem, który każdy może wybrać. Twój prywatny geofence nadal działa, dopóki trwa przegląd.
Odznaki statusu
- Aktywny — Twój prywatny geofence, działający tylko dla ciebie.
- Oczekuje na przegląd — Zgłoszony i czekający na przegląd administratora.
- Zatwierdzony — Awansowany do publicznego obszaru.
- Odrzucony — Nie zatwierdzony. Możesz zobaczyć opinię administratora, a geofence pozostaje aktywny jako prywatna strefa.
ℹ️Możesz mieć maksymalnie 10 niestandardowych geofence, każdy z maksymalnie 500 punktami granicznymi.
",
"CONTENT_POKEMON": "
Alarmy Pokemon powiadamiają cię, gdy dziki Pokemon pojawi się i pasuje do twoich filtrów.
Dodawanie alarmu Pokemon

- Przejdź do Pokemon w panelu bocznym i kliknij przycisk +.
- Wybierz Pokemon — Szukaj po nazwie lub numerze Pokedex, albo użyj przycisków filtrów generacji i typów do przeglądania. Możesz wybrać wiele Pokemon naraz.
- Ustaw filtry — Wybierz, co sprawia, że spawn jest wart powiadomienia:
- Zakres IV — Minimalny i maksymalny procent IV (0-100%)
- Zakres CP — Filtruj po sile bojowej
- Zakres poziomu — Filtruj po poziomie Pokemon (0-55)
- Indywidualne statystyki — Filtruj po wartościach ATK, DEF i STA (0-15 każda)
- Forma — Śledź konkretne formy (np. Alolan, Galarian) lub wszystkie formy
- Płeć — Samiec, samica, bezpłciowy lub wszystkie
- Waga — Filtruj po zakresie wagi
- Rozmiar — Filtruj po kategorii rozmiaru: wybierz ALL (brak filtra), aby pasował każdy rozmiar, lub wybierz konkretne rozmiary od XXS do XXL (XXS, XS, Normal, XL, XXL)
ℹ️Domyślne wartości filtrów są ustawione tak, aby wszystkie Pokemon pasowały, gdy żadne filtry nie są jawnie skonfigurowane. Na przykład IV domyślnie to 0-100%, poziom to 0-55, a rozmiar to ALL. Musisz dostosować tylko te filtry, które cię interesują.
Filtry PVP
Otrzymuj powiadomienia, gdy Pokemon ma świetne IV do PVP. Wybierz ligę (Great, Ultra lub Little Cup) i ustaw zakres rangi, który cię interesuje (np. ranga 1-50).
Alarm \"Wszystkie Pokemon\"
💡Wybierz \"All Pokemon\" (ID 0), aby utworzyć jeden alarm obejmujący każdy gatunek. Przydatne z wysokim filtrem IV jak 96-100%, aby złapać każdy wartościowy spawn.
Czytanie kart alarmów
Każda karta alarmu pokazuje kolorowe etykiety podsumowujące twoje filtry:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Alarmy Rajdów i Jajek
Otrzymuj powiadomienia, gdy pojawi się boss rajdu lub jajko, które cię interesuje.
- Wg poziomu — Wybierz poziomy rajdów (1-6) lub poziomy jajek, aby śledzić wszystkie rajdy tego poziomu.
- Wg bossa — Wybierz konkretne Pokemon będące bossami rajdów, na które chcesz polować.
- Filtr drużyny — Powiadamiaj tylko o rajdach w salach kontrolowanych przez konkretną drużynę (Mystic, Valor, Instinct).
- Śledzenie sali — Śledź rajdy w konkretnych salach po nazwie, aby dostawać powiadomienia tylko o ulubionych salach.
- Filtr ruchów — Filtruj bossów rajdów po ich szybkich lub ładowanych atakach.
- Powiadomienia RSVP — Otrzymuj powiadomienia, gdy inni trenerzy zgłoszą się na rajd lub jajko, które śledzisz.
Alarmy Rajdów i Jajek są zarządzane na osobnych zakładkach na stronie Rajdy. Jajka również obsługują śledzenie konkretnych sal i powiadomienia RSVP.
Alarmy Max Battle (Dynamax)
Otrzymuj powiadomienia o walkach Dynamax i Gigantamax w Power Spots.
- Wg poziomu — Wybierz poziomy walki, aby śledzić dowolne Pokemon na tych poziomach. Poziomy wahają się od 1 gwiazdki do 5 gwiazdek (Legendary) dla Dynamax, plus Gigantamax i Legendary Gigantamax dla największych walk. Jeden alarm jest tworzony dla każdego wybranego poziomu.
- Wg Pokemon — Wybierz konkretne Pokemon, z którymi chcesz walczyć na wszystkich poziomach Max Battle. Jeśli baza danych skanera jest skonfigurowana, selektor jest filtrowany, aby pokazywać tylko Pokemon, które pojawiły się w Max Battles.
- Tylko Gigantamax — Podczas śledzenia wg Pokemon, włącz to, aby otrzymywać powiadomienia tylko gdy Pokemon pojawi się w walkach Gigantamax (walki najwyższego poziomu z unikalnymi ruchami G-Max). Dla śledzenia wg poziomu, Gigantamax obsługuje się przez wybranie poziomu Gigantamax lub Legendary Gigantamax bezpośrednio.
- Zaznacz wszystko — Szybko zaznacz wszystkie dostępne poziomy naraz (odpowiednik komendy bota
!maxbattle everything).
Alarmy zadań
Otrzymuj powiadomienia o zadaniach badawczych z konkretnymi nagrodami.
- Spotkania z Pokemon — Wybierz Pokemon, których chcesz jako nagrody za zadania.
- Przedmioty — Śledź zadania nagradzające konkretnymi przedmiotami.
- Mega Energia — Śledź zadania dające mega energię dla konkretnych Pokemon.
- Cukierki — Śledź zadania nagradzające cukierkami dla konkretnych Pokemon.
Alarmy inwazji
Otrzymuj powiadomienia o inwazjach Team Rocket.
- Śledź wszystko — Jeden alarm dla każdego typu grunta i lidera.
- Wg typu — Wybierz konkretne typy gruntów (Bug, Dragon, Fire itp.), Rocket Leaders lub Giovanni. Nazwy typów gruntów są automatycznie normalizowane (bez rozróżniania wielkości liter), więc nie musisz martwić się o dokładne pisanie.
- Płeć — Filtruj po płci grunta.
Alarmy przynęt
Otrzymuj powiadomienia, gdy zostanie umieszczona konkretna przynęta. Wybierz spośród Normal, Glacial, Mossy, Magnetic, Rainy i Golden.
Alarmy gniazd
Śledź gniazdujące gatunki Pokemon. Ustaw próg minimalnych spawnów na godzinę, aby dostawać powiadomienia tylko o gniazdach z wystarczającą aktywnością.
Alarmy sal
Śledź zmiany drużyn w salach. Wybierz, które drużyny (Neutral, Mystic, Valor, Instinct) monitorować. Włącz śledzenie Zmian miejsc, aby otrzymywać powiadomienia o wolnych miejscach w sali, lub włącz śledzenie Zmian bitew, aby otrzymywać powiadomienia, gdy sala jest atakowana.
Alarmy zmian fortów
Śledź zmiany w PokéStopach i salach — nie aktywności w nich, ale zmiany w samych punktach zainteresowania.
- Typ fortu — Wybierz śledzenie PokéStopów, Sal lub Wszystkiego.
- Typy zmian — Wybierz, które zmiany monitorować: Zmiana nazwy, Zmiana lokalizacji, Zmiana obrazu, Usunięcie lub Dodanie nowego fortu.
- Uwzględnij puste — Uwzględnij forty bez ustawionej nazwy.
💡Alarmy zmian fortów są przydatne do śledzenia aktualizacji bazy danych mapy — pojawianie się nowych PokéStopów, przenoszenie sal lub usuwanie POI z gry.
Celowanie w konkretną salę
Podczas tworzenia lub edycji alarmu Rajdu, Jajka lub Sali możesz opcjonalnie wyszukać i wybrać konkretną salę. Jest to przydatne, gdy interesuje cię tylko aktywność w ulubionej sali — np. tej na twojej trasie na lunch lub blisko domu.
- Jak używać — W oknie dodawania lub edycji wpisz nazwę sali w polu wyszukiwania sal. Wyniki pokazują zdjęcie sali, nazwę i obszar, abyś mógł zidentyfikować właściwą.
- Gdy sala jest wybrana — Alarm uruchamia się tylko dla wydarzeń w tej konkretnej sali. Nazwa sali pojawia się na karcie alarmu na liście, abyś widział, którą salę śledzi alarm.
- Gdy nie wybrano sali — To domyślne ustawienie. Alarm działa normalnie dla wszystkich sal w wybranych obszarach lub w promieniu odległości.
💡Możesz połączyć alarm dla konkretnej sali z szerszym alarmem. Na przykład utwórz jeden alarm rajdowy dla lokalnej sali na wszystkie poziomy i drugi alarm dla rajdów poziomu 5 we wszystkich obszarach.
",
- "CONTENT_DELIVERY": "
Każdy alarm ma ustawienia dostawy, które kontrolują gdzie dostajesz powiadomienia.
Obszary vs Odległość
Każdy alarm używa jednego z dwóch trybów dostawy:
🗺
Użyj obszarówPowiadamiany, gdy wydarzenia mają miejsce w twoich wybranych obszarach. Dobre do śledzenia konkretnych okolic.📏
Ustaw odległośćPowiadamiany w promieniu (km) od twojej zapisanej lokalizacji. Dobre do śledzenia wszystkiego w pobliżu.Możesz używać różnych trybów dla różnych alarmów — na przykład obszary dla Pokemon i odległość dla rajdów.
Szablony powiadomień
Jeśli szablony są włączone, możesz wybrać wygląd swoich powiadomień. Selektor szablonów pokazuje podgląd na żywo tego, jak będzie wyglądać twoja wiadomość DM na Discord, w tym format osadzenia, pola i obrazy.
Tryb czyszczenia
Po włączeniu bot automatycznie usuwa powiadomienie z Discord po wygaśnięciu wydarzenia (np. Pokemon znika lub rajd się kończy). To utrzymuje porządek w twoich DM. Możesz włączyć tryb czyszczenia dla pojedynczego alarmu lub zbiorczo na stronie Czyszczenie.
Ping / Wzmianki ról
Jeśli używasz webhooków, możesz ustawić rolę Discord do wzmiankowania w powiadomieniu (np. @Pokemon). Ma to znaczenie tylko dla konfiguracji z webhookami.
",
+ "CONTENT_DELIVERY": "
Każdy alarm ma ustawienia dostawy, które kontrolują gdzie dostajesz powiadomienia.
Obszary vs Odległość
Każdy alarm używa jednego z dwóch trybów dostawy:
🗺
Użyj obszarówPowiadamiany, gdy wydarzenia mają miejsce w twoich wybranych obszarach. Dobre do śledzenia konkretnych okolic.📏
Ustaw odległośćPowiadamiany w promieniu (km) od twojej zapisanej lokalizacji. Dobre do śledzenia wszystkiego w pobliżu.Możesz używać różnych trybów dla różnych alarmów — na przykład obszary dla Pokemon i odległość dla rajdów.
Szablony powiadomień
Jeśli szablony są włączone, możesz wybrać wygląd swoich powiadomień. Selektor szablonów pokazuje podgląd na żywo tego, jak będzie wyglądać twoja wiadomość DM na Discord, w tym format osadzenia, pola i obrazy.
Tryb czyszczenia
Po włączeniu bot automatycznie usuwa powiadomienie z Discord po wygaśnięciu wydarzenia (np. Pokemon znika lub rajd się kończy). To utrzymuje porządek w twoich DM. Możesz włączyć tryb czyszczenia dla pojedynczego alarmu lub zbiorczo na stronie Czyszczenie.
Ping / Wzmianki ról
Jeśli używasz webhooków, możesz ustawić rolę Discord do wzmiankowania w powiadomieniu (np. @Pokemon). Ma to znaczenie tylko dla konfiguracji z webhookami.
Edycja na miejscu i podsumowania
Niektóre alarmy obsługują dodatkowe tryby dostarczania. Włącz Edytuj wiadomość na miejscu dla wabika, aby aktualizować istniejącą wiadomość na Discordzie po zmianie wabika zamiast wysyłać nową, lub Dzienne podsumowanie dla zadania, aby zebrać pasujące zadania w jednej wiadomości zbiorczej (wymaga skonfigurowanego harmonogramu podsumowań w bocie). Rajdy i jaja są edytowane na miejscu automatycznie po wybraniu trybu RSVP. Te ustawienia są zachowywane, nawet jeśli ustawisz je z bota.
Aktualizacje RSVP (rajdy i jajka)
Alarmy rajdów i jajek dodają ustawienie Powiadomienia RSVP w oknie dodawania/edycji z trzema opcjami: Tylko dopasowania wysyła standardowe alerty rajdów/jajek; Dopasowania + aktualizacje RSVP powiadamia także ponownie, gdy zmienią się liczby RSVP (trenerzy zgłaszający się); a Tylko aktualizacje RSVP pomija początkowe dopasowanie i powiadamia cię tylko o zmianach RSVP. Wybór dowolnego trybu RSVP sprawia, że bot edytuje istniejącą wiadomość na Discordzie na miejscu w miarę zmiany liczb, zamiast wysyłać nowe, a karta pokazuje etykietę "RSVP" lub "Tylko RSVP". Pamiętaj, że Tylko aktualizacje RSVP milczy, chyba że skaner twojej społeczności emituje zdarzenia RSVP — wybierz to tylko, jeśli wiesz, że RSVP są zgłaszane.
",
+ "CONTENT_QUEST_SUMMARY": "Zadania Badań Terenowych zmieniają się codziennie i mogą pasować w dużych ilościach, więc ruchliwy filtr zadań może zalać twoje wiadomości prywatne. Dostarczanie podsumowania zadań zbiera pasujące zadania w jedno zaplanowane podsumowanie zamiast wielu osobnych powiadomień.
Dwie współpracujące części
- Przełącznik dziennego podsumowania — włącz go dla alarmu zadania (w jego oknie dodawania/edycji), aby oznaczyć jego dopasowania do podsumowania zamiast natychmiastowego dostarczenia.
- Harmonogram dostarczania — wybierz, kiedy zebrane zadania są wysyłane.
Oba są potrzebne: przełącznik określa, które zadania zbierać, a harmonogram określa, kiedy je dostarczyć.
Konfiguracja harmonogramu
Otwórz stronę Zadania, następnie menu ⋮ na pasku narzędzi i wybierz Dostarczanie podsumowania zadań. Użyj Edytuj harmonogram, aby wybrać dni i godziny — ten sam edytor, którego używa się do aktywnych godzin profili. Zapisane godziny pojawiają się jako bursztynowe plakietki.
Harmonogram jest przypisany do użytkownika i współdzielony przez wszystkie twoje profile — w przeciwieństwie do aktywnych godzin profili, które ustawia się dla każdego profilu osobno.
Wyślij podsumowanie teraz
Wyślij podsumowanie teraz natychmiast dostarcza wszystko, co zebrano od ostatniego podsumowania. Jeśli nic jeszcze nie zebrano, nic nie zostanie wysłane — zadania są buforowane w miarę dopasowywania, więc daj temu czas lub poczekaj na uruchomienie harmonogramu.
Warto wiedzieć
- Menu pojawia się tylko wtedy, gdy bot twojego serwera ma włączone podsumowania zadań.
- Czas dostarczenia wykorzystuje zapisaną lokalizację do określenia strefy czasowej — ustaw lokalizację, w przeciwnym razie podsumowania mogą dotrzeć o niewłaściwej godzinie lokalnej (okno ostrzega, gdy nie ustawiono lokalizacji).
- Usunięcie harmonogramu zachowuje przełącznik dla danego alarmu; zadania są nadal zbierane, ale wracają do domyślnego czasu bota.
",
"CONTENT_TEST_ALERTS": "Każda karta alarmu ma przycisk Test (ikona papierowego samolotu), który wysyła przykładowe powiadomienie na twojego Discord lub Telegram, używając dokładnych filtrów alarmu i twojego aktualnego szablonu dostawy.
Jak to działa
- Znajdź dowolną kartę alarmu na liście (Pokemon, Rajd, Zadanie itp.).
- Kliknij ikonę wyślij w wierszu akcji karty.
- Symulowane wydarzenie pasujące do filtrów twojego alarmu jest generowane i wysyłane przez system powiadomień. Otrzymasz DM tak jak prawdziwy alert.
Co jest testowane
Test używa wartości filtrów twojego alarmu (ID Pokemon, poziom rajdu, nagroda zadania itp.) i twojej zapisanej lokalizacji jako współrzędnych symulowanego wydarzenia. Powiadomienie jest formatowane przy użyciu wybranego szablonu, więc widzisz dokładnie, jak wyglądałby prawdziwy alert.
Czas odnowienia
Aby zapobiec spamowi, każdy alarm ma 15-sekundowy czas odnowienia między testowymi wysyłkami. Przycisk jest wyłączony podczas odnowienia, a pasek informacyjny pokazuje wynik (sukces, błąd lub pozostały czas odnowienia).
💡Testowe alerty są świetne do sprawdzenia, czy twój szablon wygląda dobrze, lub potwierdzenia, że dostawa przez webhook działa, zanim będziesz czekać na prawdziwe wydarzenie.
",
"CONTENT_POKEMON_AVAILABILITY": "Podczas dodawania lub edycji alarmów Pokemon selektor Pokemon może pokazywać wskaźniki dostępności — małe odznaki informujące, które Pokemon aktualnie spawnują się na dziko.
Jak to działa
Jeśli twoja społeczność ma skonfigurowany skaner Golbat, selektor pokazuje kolorowe kropki obok nazw Pokemon:
- Zielona kropka — Ten Pokemon był ostatnio widziany jako spawn.
- Brak kropki — Aktualnie nie zgłoszony w danych skanera.
Pomaga to uniknąć tworzenia alarmów dla Pokemon, które aktualnie nie spawnują się w twoim obszarze (np. sezonowe lub ekskluzywne dla eventów).
Odświeżanie dostępności
Dane odświeżają się automatycznie w tle. Nie musisz nic robić — po prostu szukaj kropek podczas przeglądania selektora Pokemon.
ℹ️Ta funkcja jest widoczna tylko wtedy, gdy twój administrator skonfigurował integrację skanera Golbat. Jeśli nie widzisz kropek dostępności, funkcja nie jest włączona dla twojej społeczności.
",
"CONTENT_BULK": "
Wszystkie strony alarmów obsługują operacje zbiorcze, dzięki czemu możesz zarządzać wieloma alarmami naraz.
Tryb zaznaczania
Kliknij ikonę listy kontrolnej na pasku narzędzi, aby wejść w tryb zaznaczania. Następnie kliknij poszczególne karty alarmów, aby je zaznaczyć, lub użyj Zaznacz wszystko, aby wybrać wszystko widoczne.
Akcje zbiorcze
- Aktualizuj odległość — Zmień tryb dostawy (obszary lub odległość) dla wszystkich zaznaczonych alarmów naraz.
- Usuń — Usuń wszystkie zaznaczone alarmy jednym potwierdzeniem.
💡Na dole każdej listy alarmów znajdziesz również przyciski Aktualizuj wszystkie odległości i Usuń wszystko, które dotyczą każdego alarmu danego typu.
",
@@ -1075,6 +1153,9 @@
"SIGN_IN_DESC": "Zaloguj się, aby zarządzać alarmami powiadomień Pokemon GO.",
"SIGN_IN_DISCORD": "Zaloguj się przez Discord",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Zaloguj się przez {{provider}}",
+ "SIGNED_OUT_TITLE": "Wylogowano",
+ "SIGNED_OUT_DESC": "Wylogowano Cię z DM Alerts.",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1171,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "Logowanie zewnętrzne jest obecnie wyłączone.",
+ "ERR_OIDC_NO_IDENTITY": "Twój zewnętrzny dostawca logowania nie zwrócił konta, które moglibyśmy dopasować. Upewnij się, że Twoje konto Discord jest połączone.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Logowanie zewnętrzne nie powiodło się. Spróbuj ponownie.",
+ "ERR_OIDC_USERINFO": "Nie udało się pobrać Twojego profilu od zewnętrznego dostawcy logowania. Spróbuj ponownie.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Edytuj",
"ADD": "Dodaj",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Potwierdź",
"DELETE_ALL": "Usuń wszystko",
"CLOSE": "Zamknij",
@@ -1395,6 +1481,7 @@
"GROUP_COMMANDS": "Komendy",
"GROUP_TELEGRAM": "Telegram",
"GROUP_DISCORD": "Discord",
+ "GROUP_OIDC": "Zewnętrzne SSO",
"GROUP_MAPS_ASSETS": "Mapy i zasoby",
"GROUP_ANALYTICS_LINKS": "Analityka i linki",
"GROUP_DEBUG": "Debugowanie",
@@ -1417,37 +1504,39 @@
"CUSTOM_PAGE_URL_DESC": "URL, do którego prowadzi niestandardowy link nawigacyjny.",
"CUSTOM_PAGE_ICON_LABEL": "Ikona linku nawigacyjnego",
"CUSTOM_PAGE_ICON_DESC": "Klasa FontAwesome dla ikony linku nawigacyjnego (np. „fas fa-map”).",
- "DISABLE_MONS_LABEL": "Wyłącz Pokémony",
- "DISABLE_MONS_DESC": "Ukryj zarządzanie alarmami Pokémon przed wszystkimi użytkownikami.",
- "DISABLE_RAIDS_LABEL": "Wyłącz raidy",
- "DISABLE_RAIDS_DESC": "Ukryj zarządzanie alarmami raidów przed wszystkimi użytkownikami.",
- "DISABLE_QUESTS_LABEL": "Wyłącz zadania",
- "DISABLE_QUESTS_DESC": "Ukryj zarządzanie alarmami zadań przed wszystkimi użytkownikami.",
- "DISABLE_INVASIONS_LABEL": "Wyłącz inwazje",
- "DISABLE_INVASIONS_DESC": "Ukryj zarządzanie alarmami inwazji przed wszystkimi użytkownikami.",
- "DISABLE_LURES_LABEL": "Wyłącz wabiki",
- "DISABLE_LURES_DESC": "Ukryj zarządzanie alarmami wabików przed wszystkimi użytkownikami.",
- "DISABLE_NESTS_LABEL": "Wyłącz gniazda",
- "DISABLE_NESTS_DESC": "Ukryj zarządzanie alarmami gniazd przed wszystkimi użytkownikami.",
- "DISABLE_GYMS_LABEL": "Wyłącz gymy",
- "DISABLE_GYMS_DESC": "Ukryj zarządzanie alarmami gymów przed wszystkimi użytkownikami.",
- "DISABLE_FORT_CHANGES_LABEL": "Wyłącz zmiany fortów",
- "DISABLE_FORT_CHANGES_DESC": "Ukryj zarządzanie alarmami zmian fortów przed wszystkimi użytkownikami.",
- "DISABLE_MAXBATTLES_LABEL": "Wyłącz Max Battles",
- "DISABLE_MAXBATTLES_DESC": "Ukryj zarządzanie alarmami Max Battle przed wszystkimi użytkownikami.",
- "DISABLE_AREAS_LABEL": "Wyłącz obszary",
- "DISABLE_AREAS_DESC": "Uniemożliw użytkownikom zarządzanie subskrypcjami obszarów.",
- "DISABLE_PROFILES_LABEL": "Wyłącz profile",
- "DISABLE_PROFILES_DESC": "Uniemożliw użytkownikom tworzenie profili alarmów i ich przełączanie.",
- "DISABLE_LOCATION_LABEL": "Wyłącz lokalizację",
- "DISABLE_LOCATION_DESC": "Uniemożliw użytkownikom ustawienie domowej lokalizacji.",
- "DISABLE_NOMINATIM_LABEL": "Wyłącz geokodowanie",
- "DISABLE_NOMINATIM_DESC": "Wyłącz wyszukiwanie adresów Nominatim przy wyborze lokalizacji.",
- "DISABLE_GEOMAP_LABEL": "Wyłącz widok mapy",
- "DISABLE_GEOMAP_DESC": "Całkowicie ukryj interaktywną mapę geofence.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Wyłącz wybór obszarów na mapie",
- "DISABLE_GEOMAP_SELECT_DESC": "Uniemożliw użytkownikom wybór obszarów kliknięciem na mapie.",
- "ENABLE_TEMPLATES_LABEL": "Włącz szablony",
+ "DISABLE_MONS_LABEL": "Pokémony",
+ "DISABLE_MONS_DESC": "Pozwól użytkownikom zarządzać alarmami Pokémon.",
+ "DISABLE_RAIDS_LABEL": "Raidy",
+ "DISABLE_RAIDS_DESC": "Pozwól użytkownikom zarządzać alarmami raidów.",
+ "DISABLE_QUESTS_LABEL": "Zadania",
+ "DISABLE_QUESTS_DESC": "Pozwól użytkownikom zarządzać alarmami zadań.",
+ "DISABLE_INVASIONS_LABEL": "Inwazje",
+ "DISABLE_INVASIONS_DESC": "Pozwól użytkownikom zarządzać alarmami inwazji.",
+ "DISABLE_LURES_LABEL": "Wabiki",
+ "DISABLE_LURES_DESC": "Pozwól użytkownikom zarządzać alarmami wabików.",
+ "DISABLE_NESTS_LABEL": "Gniazda",
+ "DISABLE_NESTS_DESC": "Pozwól użytkownikom zarządzać alarmami gniazd.",
+ "DISABLE_GYMS_LABEL": "Gymy",
+ "DISABLE_GYMS_DESC": "Pozwól użytkownikom zarządzać alarmami gymów.",
+ "DISABLE_FORT_CHANGES_LABEL": "Zmiany fortów",
+ "DISABLE_FORT_CHANGES_DESC": "Pozwól użytkownikom zarządzać alarmami zmian fortów.",
+ "DISABLE_MAXBATTLES_LABEL": "Max Battles",
+ "DISABLE_MAXBATTLES_DESC": "Pozwól użytkownikom zarządzać alarmami Max Battle.",
+ "DISABLE_AREAS_LABEL": "Obszary",
+ "DISABLE_AREAS_DESC": "Pozwól użytkownikom zarządzać subskrypcjami obszarów.",
+ "DISABLE_PROFILES_LABEL": "Profile",
+ "DISABLE_PROFILES_DESC": "Pozwól użytkownikom tworzyć i przełączać profile alarmów.",
+ "DISABLE_LOCATION_LABEL": "Lokalizacja",
+ "DISABLE_LOCATION_DESC": "Pozwól użytkownikom ustawić domową lokalizację.",
+ "DISABLE_NOMINATIM_LABEL": "Geokodowanie",
+ "DISABLE_NOMINATIM_DESC": "Zezwól na wyszukiwanie adresów Nominatim przy wyborze lokalizacji.",
+ "DISABLE_GEOMAP_LABEL": "Widok mapy",
+ "DISABLE_GEOMAP_DESC": "Pokaż interaktywną mapę geofence.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Wybór obszarów na mapie",
+ "DISABLE_GEOMAP_SELECT_DESC": "Pozwól użytkownikom wybierać obszary kliknięciem na mapie.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Własne geofence",
+ "DISABLE_USER_GEOFENCES_DESC": "Pozwól użytkownikom rysować, importować i zgłaszać własne geofence. Istniejące geofence nadal działają.",
+ "ENABLE_TEMPLATES_LABEL": "Szablony",
"ENABLE_TEMPLATES_DESC": "Pozwól użytkownikom wybierać szablony wiadomości powiadomień.",
"ALLOWED_LANGUAGES_LABEL": "Dozwolone języki UI",
"ALLOWED_LANGUAGES_DESC": "Kody języków oddzielone przecinkami do pokazania w selektorze (np. „en,de,fr,es”). Pozostaw puste, aby pokazać wszystkie 11 języków.",
@@ -1455,8 +1544,6 @@
"ENABLE_ROLES_DESC": "Zezwalaj na logowanie tylko użytkownikom z określonymi rolami Discord. Wymaga Bot Token i Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "Dozwolone ID ról",
"ALLOWED_ROLE_IDS_DESC": "ID ról Discord oddzielone przecinkami przyznające dostęp (np. „123456789,987654321”). Pozostaw puste, aby zezwolić wszystkim.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Dozwolone języki",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Lista oddzielonych przecinkami kodów języków, które użytkownicy mogą wybierać (np. „en,de,fr”).",
"REGISTER_COMMAND_LABEL": "Komenda rejestracji",
"REGISTER_COMMAND_DESC": "Komenda bota Poracle uruchamiana przez użytkowników w celu rejestracji (np. „$!register”).",
"LOCATION_COMMAND_LABEL": "Komenda lokalizacji",
@@ -1467,6 +1554,27 @@
"TELEGRAM_BOT_DESC": "Nazwa użytkownika bota Telegram (bez @).",
"ENABLE_DISCORD_LABEL": "Włącz logowanie Discord",
"ENABLE_DISCORD_DESC": "Zezwól na logowanie Discord na tej stronie. Wymaga Discord Client ID i Client Secret w .env (wymagany restart serwera po zmianach w .env). Nie wpływa na dostarczanie bota PoracleNG.",
+ "ENABLE_OIDC_LABEL": "Włącz logowanie przez zewnętrzne SSO",
+ "ENABLE_OIDC_DESC": "Zezwól na logowanie za pomocą skonfigurowanego zewnętrznego dostawcy OIDC/OAuth2. Wymaga ustawień OIDC_* (adresy URL dostawcy, client ID i secret) w .env (wymagany restart serwera po zmianach w .env).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Wszyscy użytkownicy są przekierowywani do zewnętrznego dostawcy SSO. Logowanie lokalne jest pomijane.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Przełącz na SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Przełączyć na logowanie SSO?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Po zapisaniu wszyscy użytkownicy (w tym administratorzy) zostaną przekierowani do {{provider}} w celu zalogowania — lokalna strona logowania Discord/Telegram jest pomijana. Jeśli dostawca jest nieosiągalny, możesz zostać zablokowany; odzyskaj dostęp, ustawiając AUTH_FORCE_LOCAL=true w środowisku serwera.",
+ "AUTH_OIDC_NOT_CONFIGURED": "SSO jest niedostępne, dopóki dostawca OIDC nie zostanie skonfigurowany w środowisku serwera (zmienne środowiskowe OIDC_*).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord i Telegram są ukryte, gdy SSO jest aktywnym trybem logowania.",
+ "AUTH_SLO_LABEL": "Pojedyncze wylogowanie",
+ "AUTH_SLO_DESC": "Gdy włączone, „Wyloguj się wszędzie” kończy także sesję u dostawcy (nie tylko na tej stronie). Wymaga punktu końcowego zakończenia sesji dostawcy (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Pojedyncze wylogowanie jest niedostępne, dopóki nie zostanie skonfigurowany punkt końcowy zakończenia sesji dostawcy (zmienna środowiskowa OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Konfiguracja dostawcy OIDC",
+ "OIDC_PROVIDER_LABEL": "Nazwa dostawcy",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization URL",
+ "OIDC_TOKEN_URL_LABEL": "Token URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo URL",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Zakresy",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Oświadczenie tożsamości",
+ "OIDC_USE_PKCE_LABEL": "Użyj PKCE",
"PROVIDER_URL_LABEL": "URL kafelków mapy",
"PROVIDER_URL_DESC": "Szablon URL dostawcy kafelków mapy (używany do map statycznych).",
"GANALYTICSID_LABEL": "ID Google Analytics",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "ID administratorów",
"DISCORD_ADMIN_IDS_DESC": "ID użytkowników Discord z dostępem administratora (zamaskowane).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Kanał forum geofence",
- "DISCORD_GEOFENCE_FORUM_DESC": "Kanał forum Discord dla wątków zgłoszeń geofence."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Kanał forum Discord dla wątków zgłoszeń geofence.",
+ "SEARCH_PLACEHOLDER": "Szukaj ustawień…",
+ "SEARCH_CLEAR": "Wyczyść wyszukiwanie",
+ "UNSAVED_CHANGES": "{{count}} niezapisanych",
+ "SAVE_CHANGES": "Zapisz zmiany",
+ "DISCARD_CHANGES": "Odrzuć",
+ "COLLAPSE_SECTION": "Zwiń sekcję",
+ "EXPAND_SECTION": "Rozwiń sekcję",
+ "SUMMARY_ENABLED": "Włączono {{count}} z {{total}}"
},
"GEOFENCE_DETAIL": {
"NAME": "Nazwa",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Twoja lokalizacja",
"SELECTED_COUNT": "Zaznaczono {{count}}:",
"AREAS_SELECTED": "Wybrano {{count}} obszar(ów)"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Domyślne ustawienia alertów",
+ "DESC": "Wybierz, jak domyślnie dostarczane są nowe alerty. Nadal możesz to zmienić dla każdego alertu podczas jego tworzenia.",
+ "DEFAULT_DISTANCE": "Domyślna odległość",
+ "DEFAULT_DISTANCE_HINT": "Używana do wstępnego wypełnienia promienia dla nowych alertów opartych na odległości.",
+ "FOOTNOTE": "Dotyczy tylko nowo utworzonych alertów — istniejące pozostają bez zmian."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt-BR.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt-BR.json
index fe575a29..e5b48df1 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt-BR.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt-BR.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Tema de Destaque",
"LANGUAGE": "Idioma",
"LOGOUT": "Sair",
+ "LOGOUT_EVERYWHERE": "Sair de todos os lugares",
"ACCENT_DEFAULT": "Padrão",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Padrões de alertas"
},
"SHORTCUTS": {
"TITLE": "Atalhos do Teclado",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Forma e Gênero",
"LABEL_FORM": "Forma",
"ALL_FORMS": "Todas as Formas",
+ "FORM_MULTI_HINT": "Deixe vazio para incluir todas as formas",
"LABEL_GENDER": "Gênero",
"GENDER_ALL": "Todos",
"GENDER_MALE": "Macho",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Configurações comuns"
},
"RAIDS": {
+ "RSVP_LABEL": "Notificações RSVP",
+ "RSVP_OFF": "Apenas correspondências",
+ "RSVP_INCLUDE": "Correspondências + atualizações RSVP",
+ "RSVP_ONLY": "Apenas atualizações RSVP",
+ "RSVP_OFF_DESC": "Apenas alertas padrão de raid/ovo.",
+ "RSVP_INCLUDE_DESC": "Também notificar novamente quando as contagens de RSVP mudarem.",
+ "RSVP_ONLY_DESC": "Pular correspondências iniciais; notificar apenas alterações de RSVP. Sem um scanner que emita RSVP, esse alarme fica em silêncio.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Apenas RSVP",
"PAGE_TITLE": "Alarmes de Raid e Ovo",
"PAGE_DESC": "Receba notificações sobre chefes de raid e eclosões de ovos em ginásios próximos.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Tem certeza que deseja excluir TODOS os alarmes de raid e ovo? Esta ação não pode ser desfeita.",
"CONFIRM_BULK_DELETE_TITLE": "Excluir Alarmes Selecionados",
"CONFIRM_BULK_DELETE_MSG": "Tem certeza que deseja excluir {{count}} alarmes?",
- "CONFIRM_DELETE_SELECTED": "Excluir Selecionados"
+ "CONFIRM_DELETE_SELECTED": "Excluir Selecionados",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Alarmes de Quest",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Todos os alarmes de quest excluídos",
"SNACK_FAILED_DELETE_ALL": "Falha ao excluir alarmes",
"SNACK_FAILED_DISTANCE": "Falha ao atualizar distâncias",
- "CONFIRM_DELETE_SELECTED": "Excluir Selecionados"
+ "CONFIRM_DELETE_SELECTED": "Excluir Selecionados",
+ "SUMMARY_MODE": "Resumo diário",
+ "SUMMARY_HINT": "Reúne as missões correspondentes em uma única mensagem de resumo em vez de uma notificação para cada uma. Requer um agendamento de resumo configurado no bot.",
+ "SUMMARY_BADGE": "Resumo",
+ "SUMMARY_SCHEDULE": "Entrega do resumo de missões",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Resumo de missões",
+ "SUMMARY_SCHEDULE_EMPTY": "Nenhum agendamento de resumo definido. As missões são entregues individualmente.",
+ "SUMMARY_SCHEDULE_EDIT": "Editar agendamento",
+ "SUMMARY_SCHEDULE_CLEAR": "Remover agendamento",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Enviar resumo agora",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Envia as correspondências de missões coletadas desde o seu último resumo. Se ainda não houver nada em buffer, nada é enviado.",
+ "SUMMARY_SCHEDULE_SAVED": "Agendamento de resumo salvo",
+ "SUMMARY_SCHEDULE_CLEARED": "Agendamento de resumo removido",
+ "SUMMARY_SCHEDULE_SENT": "Resumo enviado",
+ "SUMMARY_SCHEDULE_FAILED": "Não foi possível atualizar o agendamento do resumo",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "A entrega de resumos está temporariamente indisponível. Tente novamente mais tarde.",
+ "SUMMARY_DISABLED_HINT": "O agendamento de resumos não está disponível neste servidor."
},
"INVASIONS": {
"PAGE_TITLE": "Alarmes de Invasão",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnético",
"TYPE_RAINY": "Chuvoso",
"TYPE_GOLDEN": "Dourado",
- "TYPE_UNKNOWN": "Módulo #{{id}}"
+ "TYPE_UNKNOWN": "Módulo #{{id}}",
+ "EDIT_MODE": "Editar a mensagem no local",
+ "EDIT_HINT": "Atualiza a mensagem existente do Discord quando a isca muda em vez de enviar uma nova.",
+ "EDIT_BADGE": "Editar"
},
"NESTS": {
"PAGE_TITLE": "Alarmes de Ninho",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Alterar",
"SET_LOCATION": "Definir",
"METHOD_NOTE": "Cada alarme escolhe um método na aba Entrega.",
+ "NOTIFICATION_LANGUAGE": "Idioma das notificações",
+ "NOTIFICATION_LANGUAGE_DESC": "O idioma que o Poracle usa para suas mensagens de alerta e nomes de Pokémon. É diferente do idioma de exibição no menu superior.",
+ "SNACK_LANGUAGE_UPDATED": "Idioma das notificações atualizado",
+ "SNACK_LANGUAGE_FAILED": "Falha ao atualizar o idioma das notificações",
"SELECT_AREAS": "Selecionar Áreas",
"MAP_VIEW": "Mapa",
"LIST_VIEW": "Lista",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, ovos, quests, rockets, iscas, ninhos, ginásios, mudanças de forte",
"SECTION_DELIVERY": "Configurações de Entrega",
"SECTION_DELIVERY_SUB": "Áreas vs distância, templates e modo de limpeza",
+ "SECTION_QUEST_SUMMARY": "Entrega do resumo de missões",
+ "SECTION_QUEST_SUMMARY_SUB": "Agrupe missões barulhentas em um único resumo agendado",
"SECTION_TEST_ALERTS": "Alertas de Teste",
"SECTION_TEST_ALERTS_SUB": "Envie notificações de amostra para visualizar seus alarmes",
"SECTION_POKEMON_AVAILABILITY": "Disponibilidade de Pokemon",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Se as áreas predefinidas não cobrem onde você quer alertas, você pode desenhar seus próprios limites de geofence personalizados no mapa.
Desenhando um Geofence
- Vá para Meus Geofences no painel lateral.
- Clique em Desenhar Geofence.
- Clique no mapa para colocar pontos do limite do polígono. Clique no primeiro ponto novamente para fechar a forma (mínimo 3 pontos).
- Dê um nome ao seu geofence e selecione a qual região ele pertence. A região geralmente é detectada automaticamente.
- Clique em Salvar.
Gerenciando Geofences
- Editar — Renomeie seu geofence ou mude sua região.
- Excluir — Remova um geofence que você não precisa mais. O geofence é removido de todos os perfis automaticamente.
Alternância de Perfil
Cada cartão de geofence tem um interruptor deslizante para ativar ou desativar para o seu perfil atual. Quando você cria um geofence, ele é automaticamente ativado no perfil que você está usando. Mude para outro perfil e o interruptor mostrará \"Inativo\" — ative-o para receber alertas desse geofence nesse perfil também. Isso permite controlar quais perfis recebem notificações de cada geofence sem recriá-lo.
ℹ️Geofences aprovados (promovidos a áreas públicas) não mostram o interruptor — gerencie-os na página de Áreas.
GeoJSON Import & Export
Você pode importar e exportar geofences no formato padrão GeoJSON, facilitando o compartilhamento de limites ou a criação deles em ferramentas externas como geojson.io.
- Importar — Clique no ícone de upload e cole ou envie um arquivo GeoJSON. Cada polígono no arquivo se torna um novo geofence. Você pode revisar e renomear cada um antes de salvar.
- Exportar — Clique no ícone de download e selecione quais geofences incluir. O arquivo GeoJSON exportado contém todos os polígonos selecionados e pode ser aberto em qualquer ferramenta GIS ou editor de mapas.
💡A importação GeoJSON é útil para migrar geofences de outros sistemas ou desenhar limites complexos em uma ferramenta GIS no computador e depois importá-los aqui.
Enviando para Aprovação Pública
Se você acha que seu geofence seria útil para toda a comunidade, pode enviá-lo para revisão do administrador. Se aprovado, ele se torna uma área pública que todos podem selecionar. Seu geofence privado continua funcionando enquanto a revisão está pendente.
Selos de Status
- Ativo — Seu geofence privado, funcionando apenas para você.
- Em Revisão — Enviado e aguardando revisão do administrador.
- Aprovado — Promovido a uma área pública.
- Rejeitado — Não aprovado. Você pode ver o feedback do administrador e o geofence permanece ativo como uma zona privada.
ℹ️Você pode ter até 10 geofences personalizados, cada um com até 500 pontos de limite.
",
"CONTENT_POKEMON": "
Alarmes de Pokemon te notificam quando um Pokemon selvagem aparece e corresponde aos seus filtros.
Adicionando um Alarme de Pokemon

- Vá para Pokemon no painel lateral e clique no botão +.
- Selecionar Pokemon — Busque por nome ou número da Pokedex, ou use os botões de filtro de geração e tipo para navegar. Você pode selecionar vários Pokemon de uma vez.
- Definir Filtros — Escolha o que faz um spawn valer a notificação:
- Faixa de IV — Porcentagem mínima e máxima de IV (0-100%)
- Faixa de CP — Filtrar por poder de combate
- Faixa de nível — Filtrar por nível do Pokemon (0-55)
- Stats individuais — Filtrar por valores de ATK, DEF e STA (0-15 cada)
- Forma — Acompanhar formas específicas (ex. Alolan, Galarian) ou todas as formas
- Gênero — Macho, fêmea, sem gênero ou todos
- Peso — Filtrar por faixa de peso
- Tamanho — Filtrar por categoria de tamanho: selecione ALL (sem filtro) para corresponder a qualquer tamanho, ou escolha tamanhos específicos de XXS até XXL (XXS, XS, Normal, XL, XXL)
ℹ️Valores padrão dos filtros são definidos para que todos os Pokemon correspondam quando nenhum filtro é explicitamente configurado. Por exemplo, IV padrão é 0-100%, nível é 0-55 e tamanho é ALL. Você só precisa ajustar os filtros que te interessam.
Filtros PVP
Receba notificações quando um Pokemon tem ótimos IVs para PVP. Selecione uma liga (Great, Ultra ou Little Cup) e defina a faixa de ranking que te interessa (ex. ranking 1-50).
Alarme \"Todos os Pokemon\"
💡Selecione \"All Pokemon\" (ID 0) para criar um alarme que cobre todas as espécies. Útil com um filtro de IV alto como 96-100% para pegar qualquer spawn valioso.
Lendo Cartões de Alarme
Cada cartão de alarme mostra pílulas coloridas resumindo seus filtros:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Alarmes de Raid e Ovo
Receba notificações quando um boss de raid ou ovo aparece que te interessa.
- Por Nível — Selecione níveis de raid (1-6) ou níveis de ovo para acompanhar todas as raids daquele nível.
- Por Boss — Selecione Pokemon específicos como bosses de raid que você quer caçar.
- Filtro de time — Notificar apenas raids em gyms controlados por um time específico (Mystic, Valor, Instinct).
- Rastreamento de gym — Acompanhe raids em gyms específicos por nome para só receber notificações dos seus gyms favoritos.
- Filtro de golpe — Filtrar bosses de raid pelos seus golpes rápidos ou carregados.
- Notificações de RSVP — Receba notificações quando outros treinadores confirmam presença em um raid ou ovo que você acompanha.
Alarmes de Raid e Ovo são gerenciados em abas separadas na página de Raids. Ovos também suportam rastreamento de gym específico e notificações de RSVP.
Alarmes de Max Battle (Dynamax)
Receba notificações sobre batalhas Dynamax e Gigantamax em Power Spots.
- Por Nível — Selecione níveis de batalha para acompanhar qualquer Pokemon nesses níveis. Níveis vão de 1 Estrela até 5 Estrelas (Legendary) para Dynamax, mais Gigantamax e Legendary Gigantamax para as maiores batalhas. Um alarme é criado por nível selecionado.
- Por Pokemon — Selecione Pokemon específicos contra os quais você quer lutar em todos os níveis de Max Battle. Se o banco de dados do scanner estiver configurado, o seletor é filtrado para mostrar apenas Pokemon que apareceram em Max Battles.
- Apenas Gigantamax — Ao acompanhar por Pokemon, ative isso para receber notificações apenas quando aquele Pokemon aparece em batalhas Gigantamax (as batalhas de nível mais alto com golpes G-Max exclusivos). Para rastreamento por nível, Gigantamax é controlado selecionando os níveis Gigantamax ou Legendary Gigantamax diretamente.
- Selecionar Tudo — Selecione rapidamente todos os níveis disponíveis de uma vez (equivalente ao comando
!maxbattle everything do bot).
Alarmes de Quest
Receba notificações sobre tarefas de pesquisa de campo com recompensas específicas.
- Encontros com Pokemon — Selecione Pokemon que você quer como recompensas de quest.
- Itens — Acompanhe quests que recompensam itens específicos.
- Mega Energia — Acompanhe quests que dão mega energia para Pokemon específicos.
- Doces — Acompanhe quests que recompensam doces para Pokemon específicos.
Alarmes de Invasão
Receba notificações sobre invasões do Team Rocket.
- Acompanhar Tudo — Um alarme para cada tipo de recruta e líder.
- Por Tipo — Selecione tipos específicos de recrutas (Bug, Dragon, Fire etc.), Rocket Leaders ou Giovanni. Nomes de tipos de recrutas são normalizados automaticamente (sem distinção de maiúsculas), então você não precisa se preocupar com a grafia exata.
- Gênero — Filtrar por gênero do recruta.
Alarmes de Isca
Receba notificações quando um tipo específico de isca é colocado. Escolha entre Normal, Glacial, Mossy, Magnetic, Rainy e Golden.
Alarmes de Ninho
Acompanhe espécies de Pokemon que fazem ninho. Defina um limite de spawns mínimos por hora para só receber notificações de ninhos com atividade suficiente.
Alarmes de Gym
Acompanhe mudanças de time em gyms. Selecione quais times (Neutral, Mystic, Valor, Instinct) monitorar. Ative o rastreamento de Mudanças de Vaga para receber notificações quando vagas abrem no gym, ou ative o rastreamento de Mudanças de Batalha para receber notificações quando um gym está sob ataque.
Alarmes de Mudança de Fort
Acompanhe mudanças em PokéStops e gyms em si — não as atividades neles, mas mudanças nos próprios pontos de interesse.
- Tipo de Fort — Escolha acompanhar PokéStops, Gyms ou Tudo.
- Tipos de Mudança — Selecione quais mudanças monitorar: Nome alterado, Localização alterada, Imagem alterada, Remoção ou Novo fort adicionado.
- Incluir Vazios — Incluir forts sem nome definido.
💡Alarmes de mudança de fort são úteis para acompanhar atualizações do banco de dados do mapa — novos PokéStops aparecendo, gyms sendo realocados ou POIs sendo removidos do jogo.
Mirando um Gym Específico
Ao criar ou editar um alarme de Raid, Ovo ou Gym, você pode opcionalmente buscar e selecionar um gym específico. Isso é útil quando você só se importa com atividade no seu gym favorito — como aquele no caminho do almoço ou perto da sua casa.
- Como usar — No diálogo de adição ou edição, digite um nome de gym no campo de busca de gym. Os resultados mostram a foto do gym, nome e área para você identificar o correto.
- Quando um gym é selecionado — O alarme só dispara para eventos naquele gym específico. O nome do gym aparece no cartão de alarme na sua lista para você ver qual gym ele visa.
- Quando nenhum gym é selecionado — Esse é o padrão. O alarme funciona normalmente para todos os gyms nas suas áreas selecionadas ou dentro do seu raio de distância.
💡Você pode combinar um alarme específico de gym com um alarme mais amplo. Por exemplo, crie um alarme de raid mirando seu gym local para todos os níveis, e um segundo alarme para raids nível 5 em todas as suas áreas.
",
- "CONTENT_DELIVERY": "
Todo alarme tem configurações de entrega que controlam onde você recebe notificações.
Áreas vs Distância
Cada alarme usa um de dois modos de entrega:
🗺
Usar ÁreasNotificado quando eventos acontecem dentro das suas áreas selecionadas. Bom para acompanhar bairros específicos.📏
Definir DistânciaNotificado dentro de um raio (km) da sua localização salva. Bom para acompanhar tudo perto de você.Você pode usar modos diferentes para alarmes diferentes — por exemplo, áreas para Pokemon e distância para raids.
Modelos de Notificação
Se modelos estão ativados, você pode escolher como suas mensagens de notificação aparecem. O seletor de modelo mostra uma prévia ao vivo de como seu DM do Discord vai parecer, incluindo o formato de embed, campos e imagens.
Modo Limpeza
Quando ativado, o bot automaticamente deleta a notificação do Discord depois que o evento expira (ex. um Pokemon desaparece ou um raid termina). Isso mantém seus DMs organizados. Você pode ativar o modo limpeza por alarme ou em massa na página de Limpeza.
Ping / Menções de Cargo
Se você usa webhooks, pode definir um cargo do Discord para mencionar na notificação (ex. @Pokemon). Isso só é relevante para configurações com webhooks.
",
+ "CONTENT_DELIVERY": "
Todo alarme tem configurações de entrega que controlam onde você recebe notificações.
Áreas vs Distância
Cada alarme usa um de dois modos de entrega:
🗺
Usar ÁreasNotificado quando eventos acontecem dentro das suas áreas selecionadas. Bom para acompanhar bairros específicos.📏
Definir DistânciaNotificado dentro de um raio (km) da sua localização salva. Bom para acompanhar tudo perto de você.Você pode usar modos diferentes para alarmes diferentes — por exemplo, áreas para Pokemon e distância para raids.
Modelos de Notificação
Se modelos estão ativados, você pode escolher como suas mensagens de notificação aparecem. O seletor de modelo mostra uma prévia ao vivo de como seu DM do Discord vai parecer, incluindo o formato de embed, campos e imagens.
Modo Limpeza
Quando ativado, o bot automaticamente deleta a notificação do Discord depois que o evento expira (ex. um Pokemon desaparece ou um raid termina). Isso mantém seus DMs organizados. Você pode ativar o modo limpeza por alarme ou em massa na página de Limpeza.
Ping / Menções de Cargo
Se você usa webhooks, pode definir um cargo do Discord para mencionar na notificação (ex. @Pokemon). Isso só é relevante para configurações com webhooks.
Editar no local e resumos
Alguns alarmes oferecem modos de entrega adicionais. Ative Editar mensagem no local em uma isca para atualizar a mensagem existente do Discord quando a isca mudar, em vez de enviar uma nova, ou Resumo diário em uma missão para agrupar as missões correspondentes em uma única mensagem de resumo (requer um agendamento de resumo configurado no bot). Raids e ovos são editados no local automaticamente quando você escolhe um modo RSVP. Essas configurações são mantidas mesmo que você as defina pelo bot.
Atualizações de RSVP (raids & ovos)
Os alarmes de raid e ovo adicionam uma configuração de Notificações RSVP no diálogo de adição/edição com três opções: Apenas correspondências envia os alertas padrão de raid/ovo; Correspondências + atualizações RSVP também notifica novamente quando as contagens de RSVP mudam (treinadores confirmando presença); e Apenas atualizações RSVP pula a correspondência inicial e notifica você apenas sobre alterações de RSVP. Escolher qualquer um dos modos RSVP faz o bot editar a mensagem existente do Discord no local conforme as contagens mudam, em vez de enviar novas, e o cartão mostra uma pílula "RSVP" ou "Apenas RSVP". Observe que Apenas atualizações RSVP fica em silêncio a menos que o scanner da sua comunidade emita eventos RSVP — escolha-o apenas se souber que os RSVP são reportados.
",
+ "CONTENT_QUEST_SUMMARY": "As missões de Pesquisa de campo mudam diariamente e podem corresponder em grande quantidade, então um filtro de missões movimentado pode inundar suas DMs. Entrega do resumo de missões reúne as missões correspondentes em um único resumo agendado em vez de muitos alertas separados.
Duas partes que funcionam juntas
- Botão de resumo diário — ative-o em um alarme de missão (na janela de adicionar/editar) para marcar suas correspondências para o resumo em vez da entrega imediata.
- Agendamento de entrega — escolha quando as missões reunidas são enviadas.
Ambos são necessários: o botão indica quais missões reunir, e o agendamento indica quando entregá-las.
Configurando seu agendamento
Abra a página Missões, depois o menu ⋮ na barra de ferramentas e escolha Entrega do resumo de missões. Use Editar agendamento para escolher dias e horários — o mesmo editor usado para os horários ativos dos perfis. Os horários salvos aparecem como etiquetas âmbar.
O agendamento é por usuário e compartilhado entre todos os seus perfis — diferentemente dos horários ativos dos perfis, que são configurados por perfil.
Enviar resumo agora
Enviar resumo agora entrega imediatamente tudo o que foi reunido desde o seu último resumo. Se nada foi reunido ainda, nada é enviado — as missões são armazenadas em buffer conforme correspondem, então dê um tempo ou aguarde o agendamento ser acionado.
Bom saber
- O menu só aparece quando o bot do seu servidor tem os resumos de missões habilitados.
- O horário de entrega usa sua localização salva para o fuso horário — defina uma localização, ou os resumos podem chegar no horário local errado (a janela avisa quando nenhuma localização está definida).
- Remover o agendamento mantém o botão por alarme; as missões continuam sendo reunidas, mas voltam ao horário padrão do bot.
",
"CONTENT_TEST_ALERTS": "Todo cartão de alarme tem um botão Teste (ícone de avião de papel) que envia uma notificação de amostra para seu Discord ou Telegram, usando os filtros exatos do alarme e seu modelo de entrega atual.
Como Funciona
- Encontre qualquer cartão de alarme na sua lista (Pokemon, Raid, Quest etc.).
- Clique no ícone de enviar na linha de ações do cartão.
- Um evento simulado que corresponde aos filtros do seu alarme é gerado e enviado através do pipeline de notificações. Você receberá um DM igual a um alerta real.
O Que é Testado
O teste usa os valores de filtro do seu alarme (ID do Pokemon, nível do raid, recompensa da quest etc.) e sua localização salva como coordenadas do evento simulado. A notificação é formatada usando seu modelo selecionado, então você vê exatamente como um alerta real ficaria.
Tempo de Espera
Para evitar spam, cada alarme tem um tempo de espera de 15 segundos entre envios de teste. O botão fica desativado durante o tempo de espera e uma barra de informação mostra feedback (sucesso, erro ou tempo de espera restante).
💡Alertas de teste são ótimos para verificar se seu modelo está correto ou confirmar que sua entrega por webhook está funcionando antes de esperar por um evento real.
",
"CONTENT_POKEMON_AVAILABILITY": "Ao adicionar ou editar alarmes de Pokemon, o seletor de Pokemon pode mostrar indicadores de disponibilidade — pequenos selos que dizem quais Pokemon estão aparecendo na natureza atualmente.
Como Funciona
Se sua comunidade tem um scanner Golbat configurado, o seletor mostra pontos coloridos ao lado dos nomes dos Pokemon:
- Ponto verde — Este Pokemon foi visto aparecendo recentemente.
- Sem ponto — Não reportado atualmente nos dados do scanner.
Isso ajuda você a evitar criar alarmes para Pokemon que não estão aparecendo na sua área agora (ex. espécies sazonais ou exclusivas de eventos).
Atualização de Disponibilidade
Os dados são atualizados automaticamente em segundo plano. Você não precisa fazer nada — apenas procure os pontos ao navegar pelo seletor de Pokemon.
ℹ️Esta funcionalidade só é visível se seu administrador configurou a integração do scanner Golbat. Se você não vê pontos de disponibilidade, a funcionalidade não está ativada para sua comunidade.
",
"CONTENT_BULK": "
Todas as páginas de alarme suportam operações em massa para que você possa gerenciar muitos alarmes de uma vez.
Modo de Seleção
Clique no ícone de checklist na barra de ferramentas para entrar no modo de seleção. Depois clique em cartões de alarme individuais para selecioná-los, ou use Selecionar Tudo para pegar tudo visível.
Ações em Massa
- Atualizar Distância — Mudar o modo de entrega (áreas ou distância) para todos os alarmes selecionados de uma vez.
- Excluir — Remover todos os alarmes selecionados com uma confirmação.
💡Na parte inferior de cada lista de alarmes, você também encontrará os botões Atualizar Todas as Distâncias e Excluir Tudo que se aplicam a cada alarme daquele tipo.
",
@@ -1075,6 +1153,9 @@
"SIGN_IN_DESC": "Entre para gerenciar seus alarmes de notificação do Pokemon GO.",
"SIGN_IN_DISCORD": "Entrar com Discord",
"SIGN_IN_TELEGRAM": "Sign in with Telegram",
+ "SIGN_IN_OIDC": "Entrar com {{provider}}",
+ "SIGNED_OUT_TITLE": "Sessão encerrada",
+ "SIGNED_OUT_DESC": "Você saiu do Alertas DM.",
"PROVIDER_DISABLED_BY_ADMIN": "This login method has been disabled by an administrator.",
"PROVIDER_DISABLED_HINT": "This login method is currently disabled for non-admin users.",
"ERR_TELEGRAM_DISABLED": "Telegram login is currently disabled.",
@@ -1090,6 +1171,10 @@
"ERR_MISSING_ROLE": "You do not have the required Discord role to access this site.",
"ERR_NOT_IN_GUILD": "You must be a member of the Discord server to access this site.",
"ERR_NOT_REGISTERED": "Your account is not registered. Please sign up to get started.",
+ "ERR_OIDC_DISABLED": "O login externo está desativado no momento.",
+ "ERR_OIDC_NO_IDENTITY": "Seu provedor de login externo não retornou uma conta que possamos associar. Verifique se sua conta do Discord está vinculada.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Falha no login externo. Tente novamente.",
+ "ERR_OIDC_USERINFO": "Não foi possível obter seu perfil do provedor de login externo. Tente novamente.",
"ERR_ROLE_CHECK_FAILED": "Unable to verify your Discord roles. Please try again later.",
"ERR_TELEGRAM_FAILED": "Telegram authentication failed. Please try again.",
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
@@ -1296,6 +1381,7 @@
"EDIT": "Editar",
"ADD": "Adicionar",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Confirmar",
"DELETE_ALL": "Excluir Tudo",
"CLOSE": "Fechar",
@@ -1417,37 +1503,39 @@
"CUSTOM_PAGE_URL_DESC": "URL para onde o link de navegação personalizado aponta.",
"CUSTOM_PAGE_ICON_LABEL": "Ícone do link de navegação",
"CUSTOM_PAGE_ICON_DESC": "Classe FontAwesome para o ícone do link de navegação (ex.: \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Desativar Pokémon",
- "DISABLE_MONS_DESC": "Ocultar o gerenciamento de alarmes de Pokémon para todos os usuários.",
- "DISABLE_RAIDS_LABEL": "Desativar Raides",
- "DISABLE_RAIDS_DESC": "Ocultar o gerenciamento de alarmes de Raides para todos os usuários.",
- "DISABLE_QUESTS_LABEL": "Desativar Missões",
- "DISABLE_QUESTS_DESC": "Ocultar o gerenciamento de alarmes de missões para todos os usuários.",
- "DISABLE_INVASIONS_LABEL": "Desativar Invasões",
- "DISABLE_INVASIONS_DESC": "Ocultar o gerenciamento de alarmes de invasão para todos os usuários.",
- "DISABLE_LURES_LABEL": "Desativar Módulos Isca",
- "DISABLE_LURES_DESC": "Ocultar o gerenciamento de alarmes de isca para todos os usuários.",
- "DISABLE_NESTS_LABEL": "Desativar Ninhos",
- "DISABLE_NESTS_DESC": "Ocultar o gerenciamento de alarmes de ninho para todos os usuários.",
- "DISABLE_GYMS_LABEL": "Desativar Ginásios",
- "DISABLE_GYMS_DESC": "Ocultar o gerenciamento de alarmes de ginásio para todos os usuários.",
- "DISABLE_FORT_CHANGES_LABEL": "Desativar alterações de fortes",
- "DISABLE_FORT_CHANGES_DESC": "Ocultar o gerenciamento de alarmes de alterações de fortes para todos os usuários.",
- "DISABLE_MAXBATTLES_LABEL": "Desativar Batalhas Max",
- "DISABLE_MAXBATTLES_DESC": "Ocultar o gerenciamento de alarmes de Batalha Max para todos os usuários.",
- "DISABLE_AREAS_LABEL": "Desativar áreas",
- "DISABLE_AREAS_DESC": "Impedir que os usuários gerenciem suas inscrições em áreas.",
- "DISABLE_PROFILES_LABEL": "Desativar perfis",
- "DISABLE_PROFILES_DESC": "Impedir que os usuários criem e alternem perfis de alarme.",
- "DISABLE_LOCATION_LABEL": "Desativar localização",
- "DISABLE_LOCATION_DESC": "Impedir que os usuários definam um local de casa.",
- "DISABLE_NOMINATIM_LABEL": "Desativar geocodificação",
- "DISABLE_NOMINATIM_DESC": "Desativar a pesquisa de endereços Nominatim para escolha de localização.",
- "DISABLE_GEOMAP_LABEL": "Desativar visualização de mapa",
- "DISABLE_GEOMAP_DESC": "Ocultar completamente o mapa interativo de geofences.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Desativar seleção de áreas no mapa",
- "DISABLE_GEOMAP_SELECT_DESC": "Impedir que os usuários selecionem áreas clicando no mapa.",
- "ENABLE_TEMPLATES_LABEL": "Ativar modelos",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Permite que os usuários gerenciem alarmes de Pokémon.",
+ "DISABLE_RAIDS_LABEL": "Raides",
+ "DISABLE_RAIDS_DESC": "Permite que os usuários gerenciem alarmes de raide.",
+ "DISABLE_QUESTS_LABEL": "Missões",
+ "DISABLE_QUESTS_DESC": "Permite que os usuários gerenciem alarmes de missão.",
+ "DISABLE_INVASIONS_LABEL": "Invasões",
+ "DISABLE_INVASIONS_DESC": "Permite que os usuários gerenciem alarmes de invasão.",
+ "DISABLE_LURES_LABEL": "Módulos Isca",
+ "DISABLE_LURES_DESC": "Permite que os usuários gerenciem alarmes de isca.",
+ "DISABLE_NESTS_LABEL": "Ninhos",
+ "DISABLE_NESTS_DESC": "Permite que os usuários gerenciem alarmes de ninho.",
+ "DISABLE_GYMS_LABEL": "Ginásios",
+ "DISABLE_GYMS_DESC": "Permite que os usuários gerenciem alarmes de ginásio.",
+ "DISABLE_FORT_CHANGES_LABEL": "Alterações de fortes",
+ "DISABLE_FORT_CHANGES_DESC": "Permite que os usuários gerenciem alarmes de alterações de fortes.",
+ "DISABLE_MAXBATTLES_LABEL": "Batalhas Max",
+ "DISABLE_MAXBATTLES_DESC": "Permite que os usuários gerenciem alarmes de Batalha Max.",
+ "DISABLE_AREAS_LABEL": "Áreas",
+ "DISABLE_AREAS_DESC": "Permite que os usuários gerenciem suas inscrições em áreas.",
+ "DISABLE_PROFILES_LABEL": "Perfis",
+ "DISABLE_PROFILES_DESC": "Permite que os usuários criem e alternem perfis de alarme.",
+ "DISABLE_LOCATION_LABEL": "Localização",
+ "DISABLE_LOCATION_DESC": "Permite que os usuários definam um local de casa.",
+ "DISABLE_NOMINATIM_LABEL": "Geocodificação",
+ "DISABLE_NOMINATIM_DESC": "Permite a pesquisa de endereços Nominatim para escolha de localização.",
+ "DISABLE_GEOMAP_LABEL": "Visualização de mapa",
+ "DISABLE_GEOMAP_DESC": "Mostra o mapa interativo de geofences.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Seleção de áreas no mapa",
+ "DISABLE_GEOMAP_SELECT_DESC": "Permite que os usuários selecionem áreas clicando no mapa.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Geofences personalizadas",
+ "DISABLE_USER_GEOFENCES_DESC": "Permite que os usuários desenhem, importem e enviem suas próprias geofences. As geofences existentes continuam funcionando.",
+ "ENABLE_TEMPLATES_LABEL": "Modelos",
"ENABLE_TEMPLATES_DESC": "Permitir que os usuários escolham modelos de mensagens de notificação.",
"ALLOWED_LANGUAGES_LABEL": "Idiomas da UI permitidos",
"ALLOWED_LANGUAGES_DESC": "Códigos de idioma separados por vírgulas a mostrar no seletor (ex.: \"en,de,fr,es\"). Deixe em branco para mostrar os 11 idiomas.",
@@ -1455,8 +1543,6 @@
"ENABLE_ROLES_DESC": "Permitir apenas o login de usuários com funções Discord específicas. Requer Bot Token e Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "IDs de funções permitidas",
"ALLOWED_ROLE_IDS_DESC": "IDs de funções Discord separados por vírgulas que concedem acesso (ex.: \"123456789,987654321\"). Deixe em branco para permitir todos.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Idiomas permitidos",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Lista separada por vírgulas de códigos de idioma que os usuários podem selecionar (ex.: \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Comando de registro",
"REGISTER_COMMAND_DESC": "Comando do bot Poracle que os usuários executam para se registrarem (ex.: \"$!register\").",
"LOCATION_COMMAND_LABEL": "Comando de localização",
@@ -1467,6 +1553,28 @@
"TELEGRAM_BOT_DESC": "Nome de usuário do bot do Telegram (sem @).",
"ENABLE_DISCORD_LABEL": "Ativar login do Discord",
"ENABLE_DISCORD_DESC": "Permitir login do Discord neste site. Requer Discord Client ID e Client Secret em .env (reinicialização do servidor necessária após alterações em .env). Não afeta a entrega do bot PoracleNG.",
+ "ENABLE_OIDC_LABEL": "Ativar login SSO externo",
+ "ENABLE_OIDC_DESC": "Permitir login pelo provedor OIDC/OAuth2 externo configurado. Requer as configurações OIDC_* (URLs do provedor, client ID e secret) em .env (reinicialização do servidor necessária após alterações em .env).",
+ "GROUP_OIDC": "SSO externo",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Todos os usuários são redirecionados para o provedor SSO externo. O login local é ignorado.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Mudar para SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Mudar para login via SSO?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Após salvar, todos os usuários (incluindo administradores) serão redirecionados para {{provider}} para entrar — a página de login local do Discord/Telegram é ignorada. Se o provedor estiver inacessível, você pode ficar bloqueado; recupere o acesso definindo AUTH_FORCE_LOCAL=true no ambiente do servidor.",
+ "AUTH_OIDC_NOT_CONFIGURED": "O SSO fica indisponível até que o provedor OIDC seja configurado no ambiente do servidor (variáveis OIDC_*).",
+ "AUTH_OIDC_HIDES_LOCAL": "O Discord e o Telegram ficam ocultos enquanto o SSO é o modo de login ativo.",
+ "AUTH_SLO_LABEL": "Logout único",
+ "AUTH_SLO_DESC": "Quando ativado, \"Sair de todos os lugares\" também encerra a sessão do provedor (não apenas deste site). Requer o endpoint de fim de sessão do provedor (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "O logout único fica indisponível até que o endpoint de fim de sessão do provedor seja configurado (variável OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Configuração do provedor OIDC",
+ "OIDC_PROVIDER_LABEL": "Nome do provedor",
+ "OIDC_AUTHORIZATION_URL_LABEL": "URL de autorização",
+ "OIDC_TOKEN_URL_LABEL": "URL de token",
+ "OIDC_USERINFO_URL_LABEL": "URL de UserInfo",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Escopos",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Claim de identidade",
+ "OIDC_USE_PKCE_LABEL": "Usar PKCE",
"PROVIDER_URL_LABEL": "URL dos blocos do mapa",
"PROVIDER_URL_DESC": "Modelo de URL do provedor de blocos de mapa (usado para mapas estáticos).",
"GANALYTICSID_LABEL": "ID do Google Analytics",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "IDs de admin",
"DISCORD_ADMIN_IDS_DESC": "IDs de usuários Discord com acesso de admin (mascarado).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Canal de fórum de geofences",
- "DISCORD_GEOFENCE_FORUM_DESC": "Canal de fórum Discord para threads de envio de geofences."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Canal de fórum Discord para threads de envio de geofences.",
+ "SEARCH_PLACEHOLDER": "Pesquisar configurações…",
+ "SEARCH_CLEAR": "Limpar pesquisa",
+ "UNSAVED_CHANGES": "{{count}} não salva(s)",
+ "SAVE_CHANGES": "Salvar alterações",
+ "DISCARD_CHANGES": "Descartar",
+ "COLLAPSE_SECTION": "Recolher seção",
+ "EXPAND_SECTION": "Expandir seção",
+ "SUMMARY_ENABLED": "{{count}} de {{total}} ativadas"
},
"GEOFENCE_DETAIL": {
"NAME": "Nome",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Sua localização",
"SELECTED_COUNT": "{{count}} selecionados:",
"AREAS_SELECTED": "{{count}} área(s) selecionada(s)"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Padrões de alertas",
+ "DESC": "Escolha como os novos alertas são entregues por padrão. Você ainda pode alterar isso para cada alerta ao criá-lo.",
+ "DEFAULT_DISTANCE": "Distância padrão",
+ "DEFAULT_DISTANCE_HINT": "Usada para preencher previamente o raio de novos alertas baseados em distância.",
+ "FOOTNOTE": "Aplica-se apenas a alertas recém-criados — os existentes não são alterados."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt.json
index 47316704..4df02e07 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/pt.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Tema de Destaque",
"LANGUAGE": "Idioma",
"LOGOUT": "Sair",
+ "LOGOUT_EVERYWHERE": "Terminar sessão em todo o lado",
"ACCENT_DEFAULT": "Predefinição",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Padrões de alertas"
},
"SHORTCUTS": {
"TITLE": "Atalhos de Teclado",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Forma e Género",
"LABEL_FORM": "Forma",
"ALL_FORMS": "Todas as Formas",
+ "FORM_MULTI_HINT": "Deixe vazio para incluir todas as formas",
"LABEL_GENDER": "Género",
"GENDER_ALL": "Todos",
"GENDER_MALE": "Masculino",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Definições Comuns"
},
"RAIDS": {
+ "RSVP_LABEL": "Notificações RSVP",
+ "RSVP_OFF": "Apenas correspondências",
+ "RSVP_INCLUDE": "Correspondências + atualizações RSVP",
+ "RSVP_ONLY": "Apenas atualizações RSVP",
+ "RSVP_OFF_DESC": "Apenas alertas padrão de raid/ovo.",
+ "RSVP_INCLUDE_DESC": "Também notificar novamente quando as contagens de RSVP mudarem.",
+ "RSVP_ONLY_DESC": "Ignorar correspondências iniciais; notificar apenas alterações de RSVP. Sem um scanner que emita RSVP este alarme fica silenciado.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Apenas RSVP",
"PAGE_TITLE": "Alarmes de Raid e Ovos",
"PAGE_DESC": "Recebe notificações sobre chefes de raid e eclosão de ovos em ginásios próximos.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Tens a certeza de que queres eliminar TODOS os alarmes de raid e ovos? Esta ação não pode ser revertida.",
"CONFIRM_BULK_DELETE_TITLE": "Eliminar Alarmes Selecionados",
"CONFIRM_BULK_DELETE_MSG": "Tens a certeza de que queres eliminar {{count}} alarmes?",
- "CONFIRM_DELETE_SELECTED": "Eliminar Selecionados"
+ "CONFIRM_DELETE_SELECTED": "Eliminar Selecionados",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Alarmes de Missões",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Todos os alarmes de missões eliminados",
"SNACK_FAILED_DELETE_ALL": "Falha ao eliminar alarmes",
"SNACK_FAILED_DISTANCE": "Falha ao atualizar distâncias",
- "CONFIRM_DELETE_SELECTED": "Eliminar Selecionados"
+ "CONFIRM_DELETE_SELECTED": "Eliminar Selecionados",
+ "SUMMARY_MODE": "Resumo diário",
+ "SUMMARY_HINT": "Reúne as missões correspondentes numa única mensagem de resumo em vez de uma notificação por cada. Requer um agendamento de resumo configurado no bot.",
+ "SUMMARY_BADGE": "Resumo",
+ "SUMMARY_SCHEDULE": "Entrega do resumo de missões",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Resumo de missões",
+ "SUMMARY_SCHEDULE_EMPTY": "Nenhum agendamento de resumo definido. As missões são entregues individualmente.",
+ "SUMMARY_SCHEDULE_EDIT": "Editar agendamento",
+ "SUMMARY_SCHEDULE_CLEAR": "Remover agendamento",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Enviar resumo agora",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Envia as correspondências de missões recolhidas desde o teu último resumo. Se ainda não houver nada em buffer, nada é enviado.",
+ "SUMMARY_SCHEDULE_SAVED": "Agendamento de resumo guardado",
+ "SUMMARY_SCHEDULE_CLEARED": "Agendamento de resumo removido",
+ "SUMMARY_SCHEDULE_SENT": "Resumo enviado",
+ "SUMMARY_SCHEDULE_FAILED": "Não foi possível atualizar o agendamento do resumo",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "A entrega de resumos está temporariamente indisponível. Tente novamente mais tarde.",
+ "SUMMARY_DISABLED_HINT": "O agendamento de resumos não está disponível neste servidor."
},
"INVASIONS": {
"PAGE_TITLE": "Alarmes de Invasões",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnético",
"TYPE_RAINY": "Chuvoso",
"TYPE_GOLDEN": "Dourado",
- "TYPE_UNKNOWN": "Módulo #{{id}}"
+ "TYPE_UNKNOWN": "Módulo #{{id}}",
+ "EDIT_MODE": "Editar a mensagem no local",
+ "EDIT_HINT": "Atualiza a mensagem existente do Discord quando o engodo muda em vez de enviar uma nova.",
+ "EDIT_BADGE": "Editar"
},
"NESTS": {
"PAGE_TITLE": "Alarmes de Ninhos",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Alterar",
"SET_LOCATION": "Definir",
"METHOD_NOTE": "Cada alarme escolhe um método no separador Entrega.",
+ "NOTIFICATION_LANGUAGE": "Idioma das notificações",
+ "NOTIFICATION_LANGUAGE_DESC": "O idioma que o Poracle usa para as suas mensagens de alerta e nomes de Pokémon. É distinto do idioma de exibição no menu superior.",
+ "SNACK_LANGUAGE_UPDATED": "Idioma das notificações atualizado",
+ "SNACK_LANGUAGE_FAILED": "Falha ao atualizar o idioma das notificações",
"SELECT_AREAS": "Selecionar Áreas",
"MAP_VIEW": "Mapa",
"LIST_VIEW": "Lista",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, eggs, quests, rockets, lures, nests, gyms, fort changes",
"SECTION_DELIVERY": "Delivery Settings",
"SECTION_DELIVERY_SUB": "Areas vs distance, templates, and clean mode",
+ "SECTION_QUEST_SUMMARY": "Entrega do resumo de missões",
+ "SECTION_QUEST_SUMMARY_SUB": "Agrupa missões barulhentas num único resumo agendado",
"SECTION_TEST_ALERTS": "Test Alerts",
"SECTION_TEST_ALERTS_SUB": "Send sample notifications to preview your alarms",
"SECTION_POKEMON_AVAILABILITY": "Pokemon Availability",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Se as áreas predefinidas não cobrem onde queres alertas, podes desenhar os teus próprios limites de geofence personalizados no mapa.
Desenhar uma Geofence
- Vai a As Minhas Geofences na barra lateral.
- Clica em Desenhar Geofence.
- Clica no mapa para colocar pontos do limite do teu polígono. Clica novamente no primeiro ponto para fechar a forma (mínimo 3 pontos).
- Dá um nome à tua geofence e seleciona a que região pertence. A região é normalmente detetada automaticamente.
- Clica em Guardar.
Gerir Geofences
- Editar — Renomeia a tua geofence ou altera a sua região.
- Eliminar — Remove uma geofence que já não precisas. A geofence é removida de todos os perfis automaticamente.
Interruptor de Perfil
Cada cartão de geofence tem um interruptor deslizante para a ativar ou desativar para o teu perfil atual. Quando crias uma geofence, é automaticamente ativada no perfil que estás a usar. Muda para outro perfil e o interruptor mostrará \"Inativa\" — liga-o para receber alertas para essa geofence nesse perfil também. Isto permite-te controlar quais perfis recebem notificações para cada geofence sem a recriar.
ℹ️Geofences aprovadas (promovidas a áreas públicas) não mostram o interruptor — gere-as na página Áreas.
Importação & Exportação GeoJSON
Podes importar e exportar geofences usando o formato padrão GeoJSON, tornando fácil partilhar limites ou criá-los em ferramentas externas como geojson.io.
- Importar — Clica no ícone de upload e cola ou carrega um ficheiro GeoJSON. Cada polígono no ficheiro torna-se uma nova geofence. Podes rever e renomear cada uma antes de guardar.
- Exportar — Clica no ícone de download e seleciona quais geofences incluir. O ficheiro GeoJSON exportado contém todos os polígonos selecionados e pode ser aberto em qualquer ferramenta GIS ou editor de mapas.
💡A importação GeoJSON é útil para migrar geofences de outros sistemas ou desenhar limites complexos numa ferramenta GIS desktop e depois importá-los aqui.
Submeter para Aprovação Pública
Se achas que a tua geofence seria útil para toda a comunidade, podes submetê-la para revisão dos administradores. Se aprovada, torna-se uma área pública que todos podem selecionar. A tua geofence privada continua a funcionar enquanto a revisão está pendente.
Badges de Estado
- Ativa — A tua geofence privada, a funcionar apenas para ti.
- Em Revisão — Submetida e a aguardar revisão dos administradores.
- Aprovada — Promovida a área pública.
- Rejeitada — Não aprovada. Podes ver o feedback do administrador e a geofence permanece ativa como zona privada.
ℹ️Podes ter até 10 geofences personalizadas, cada uma com um máximo de 500 pontos de limite.
",
"CONTENT_POKEMON": "
Os alarmes Pokemon notificam-te quando um Pokemon selvagem aparece e corresponde aos teus filtros.
Adicionar um Alarme Pokemon

- Vai a Pokemon na barra lateral e clica no botão +.
- Seleciona Pokemon — Pesquisa por nome ou número Pokedex, ou usa os botões de filtro por geração e tipo para navegar. Podes selecionar vários Pokemon de uma vez.
- Define os filtros — Escolhe o que torna um spawn digno de notificação:
- Intervalo IV — Percentagem IV mínima e máxima (0-100%)
- Intervalo CP — Filtra por poder de combate
- Intervalo de nível — Filtra por nível Pokemon (0-55)
- Estatísticas individuais — Filtra por valores de ATK, DEF e STA (0-15 cada)
- Forma — Segue formas específicas (ex. Alolan, Galarian) ou todas as formas
- Género — Masculino, feminino, sem género, ou todos
- Peso — Filtra por intervalo de peso
- Tamanho — Filtra por categoria de tamanho: seleciona ALL (sem filtro) para qualquer tamanho, ou escolhe tamanhos específicos de XXS a XXL (XXS, XS, Normal, XL, XXL)
ℹ️Os valores predefinidos dos filtros estão configurados para que todos os Pokemon correspondam quando nenhum filtro é explicitamente configurado. Por exemplo, IV predefinido 0-100%, nível 0-55 e tamanho ALL. Só precisas de ajustar os filtros que te interessam.
Filtros PVP
Recebe uma notificação quando um Pokemon tem ótimos IV para PVP. Seleciona uma liga (Great, Ultra ou Little Cup) e define o intervalo de ranking que te interessa (ex. rank 1-50).
Alarme \"Todos os Pokemon\"
💡Seleciona \"Todos os Pokemon\" (ID 0) para criar um único alarme que cobre todas as espécies. Útil com um filtro IV alto como 96-100% para apanhar qualquer spawn valioso.
Ler os Cartões de Alarme
Cada cartão de alarme mostra pílulas coloridas que resumem os teus filtros num relance:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Alarmes de Raid e Ovo
Recebe uma notificação quando aparece um boss de raid ou ovo que te interessa.
- Por nível — Seleciona níveis de raid (1-6) ou níveis de ovo para seguir todos os raids desse nível.
- Por boss — Seleciona bosses de raid Pokemon específicos que queres enfrentar.
- Filtro de equipa — Notifica apenas para raids em gyms controlados por uma equipa específica (Mystic, Valor, Instinct).
- Seguimento de gym — Segue raids em gyms específicos por nome para seres notificado apenas sobre os teus gyms favoritos.
- Filtro de movimentos — Filtra bosses de raid pelos seus movimentos rápidos ou carregados.
- Notificações RSVP — Recebe uma notificação quando outros treinadores confirmam presença num raid ou ovo que estás a seguir.
Os alarmes de Raid e Ovo são geridos em separadores distintos na página Raids. Os Ovos também suportam seguimento de gym específico e notificações RSVP.
Alarmes Max Battle (Dynamax)
Recebe notificações sobre batalhas Dynamax e Gigantamax nos Power Spots.
- Por nível — Seleciona níveis de batalha para seguir qualquer Pokemon nesses níveis. Os níveis vão de 1 Estrela a 5 Estrelas (Lendário) para Dynamax, mais Gigantamax e Gigantamax Lendário para as maiores batalhas. É criado um alarme por cada nível selecionado.
- Por Pokemon — Seleciona Pokemon específicos que queres enfrentar em todos os níveis Max Battle. Se a base de dados do scanner estiver configurada, o seletor mostra apenas Pokemon que apareceram em Max Battles.
- Apenas Gigantamax — Ao seguir por Pokemon, ativa isto para receber notificações apenas quando esse Pokemon aparece em batalhas Gigantamax (as batalhas de nível mais alto com movimentos G-Max únicos). Para seguimento por nível, o Gigantamax é gerido selecionando diretamente os níveis Gigantamax ou Gigantamax Lendário.
- Selecionar tudo — Seleciona rapidamente todos os níveis disponíveis de uma vez (equivalente ao comando
!maxbattle everything do bot).
Alarmes de Quest
Recebe notificações sobre tarefas de investigação de campo com recompensas específicas.
- Encontros Pokemon — Seleciona Pokemon que queres como recompensa de quests.
- Itens — Segue quests que recompensam com itens específicos.
- Mega Energia — Segue quests que dão mega energia para Pokemon específicos.
- Doces — Segue quests que recompensam com doces para Pokemon específicos.
Alarmes de Invasão
Recebe notificações sobre invasões do Team Rocket.
- Seguir tudo — Um alarme para cada tipo de recruta e líder.
- Por tipo — Seleciona tipos de recrutas específicos (Bug, Dragon, Fire, etc.), Líderes Rocket ou Giovanni. Os nomes dos tipos de recruta são normalizados automaticamente (sem distinção de maiúsculas), por isso não precisas de te preocupar com a capitalização exata.
- Género — Filtra por género do recruta.
Alarmes de Isco
Recebe uma notificação quando um tipo específico de isco é colocado. Escolhe entre iscos Normal, Glacial, Mossy, Magnetic, Rainy e Golden.
Alarmes de Ninho
Segue espécies Pokemon em ninhos. Define um limite de spawns mínimos por hora para seres notificado apenas sobre ninhos com atividade suficiente.
Alarmes de Gym
Segue mudanças de equipa em gyms. Seleciona quais equipas (Neutro, Mystic, Valor, Instinct) monitorar. Ativa o seguimento de Mudanças de Lugar para seres notificado quando lugares ficam livres no gym, ou ativa o seguimento de Mudanças de Batalha para seres notificado quando um gym está a ser atacado.
Alarmes de Alteração de Forte
Segue alterações a pokestops e gyms em si — não as atividades neles, mas alterações aos pontos de interesse reais.
- Tipo de forte — Escolhe seguir Pokestops, Gyms ou Tudo.
- Tipos de alteração — Seleciona quais alterações monitorar: Nome alterado, Localização alterada, Imagem alterada, Remoção ou Novo forte adicionado.
- Incluir vazios — Inclui fortes que não têm nome definido.
💡Os alarmes de alteração de forte são úteis para seguir atualizações da base de dados do mapa — novos pokestops a aparecer, gyms a serem realocados ou POIs removidos do jogo.
Apontar a um Gym Específico
Ao criar ou editar um alarme de Raid, Ovo ou Gym, podes opcionalmente pesquisar e selecionar um gym específico. Isto é útil quando só te interessa a atividade no teu gym favorito — como o do teu percurso de almoço ou perto da tua casa.
- Como usar — Na janela de adição ou edição, escreve o nome de um gym no campo de pesquisa de gym. Os resultados mostram a foto, nome e área do gym para poderes identificar o correto.
- Quando um gym está selecionado — O alarme dispara apenas para eventos nesse gym específico. O nome do gym aparece no cartão de alarme na tua lista para veres num relance qual gym é o alvo.
- Quando nenhum gym está selecionado — Este é o comportamento predefinido. O alarme funciona normalmente para todos os gyms nas tuas áreas selecionadas ou dentro do teu raio de distância.
💡Podes combinar um alarme para gym específico com um alarme mais amplo. Por exemplo, cria um alarme de raid para o teu gym local para todos os níveis e um segundo alarme para raids de nível 5 em todas as tuas áreas.
",
- "CONTENT_DELIVERY": "
Cada alarme tem definições de entrega que controlam onde recebes notificações.
Áreas vs Distância
Cada alarme usa um de dois modos de entrega:
🗺
Usar ÁreasRecebes notificações quando eventos acontecem nas tuas áreas selecionadas. Bom para seguir bairros específicos.📏
Definir DistânciaRecebes notificações dentro de um raio (km) da tua localização guardada. Bom para seguir tudo perto de ti.Podes usar modos diferentes para alarmes diferentes — por exemplo, usar áreas para Pokemon e distância para raids.
Templates de Notificação
Se os templates estiverem ativados, podes escolher o aspeto das tuas mensagens de notificação. O seletor de templates mostra uma pré-visualização ao vivo de como o teu DM do Discord ficará, incluindo o formato embed, campos e imagens.
Modo de Limpeza
Quando ativado, o bot elimina automaticamente a notificação do Discord após o evento expirar (ex. um Pokemon desaparece ou um raid termina). Isto mantém os teus DMs arrumados. Podes ativar o modo de limpeza por alarme ou em massa na página Limpeza.
Ping / Menções de Cargo
Se usas webhooks, podes definir um cargo Discord para mencionar na notificação (ex. @Pokemon). Isto é relevante apenas para configurações de webhook.
",
+ "CONTENT_DELIVERY": "
Cada alarme tem definições de entrega que controlam onde recebes notificações.
Áreas vs Distância
Cada alarme usa um de dois modos de entrega:
🗺
Usar ÁreasRecebes notificações quando eventos acontecem nas tuas áreas selecionadas. Bom para seguir bairros específicos.📏
Definir DistânciaRecebes notificações dentro de um raio (km) da tua localização guardada. Bom para seguir tudo perto de ti.Podes usar modos diferentes para alarmes diferentes — por exemplo, usar áreas para Pokemon e distância para raids.
Templates de Notificação
Se os templates estiverem ativados, podes escolher o aspeto das tuas mensagens de notificação. O seletor de templates mostra uma pré-visualização ao vivo de como o teu DM do Discord ficará, incluindo o formato embed, campos e imagens.
Modo de Limpeza
Quando ativado, o bot elimina automaticamente a notificação do Discord após o evento expirar (ex. um Pokemon desaparece ou um raid termina). Isto mantém os teus DMs arrumados. Podes ativar o modo de limpeza por alarme ou em massa na página Limpeza.
Ping / Menções de Cargo
Se usas webhooks, podes definir um cargo Discord para mencionar na notificação (ex. @Pokemon). Isto é relevante apenas para configurações de webhook.
Editar no local e resumos
Alguns alarmes suportam modos de entrega adicionais. Ative Editar mensagem no local num engodo para atualizar a mensagem existente do Discord quando o engodo muda, em vez de enviar uma nova, ou Resumo diário numa missão para agrupar as missões correspondentes numa única mensagem de resumo (requer um agendamento de resumo configurado no bot). Raids e ovos são editados no local automaticamente quando escolhe um modo RSVP. Estas definições são mantidas mesmo que as defina a partir do bot.
Atualizações RSVP (raids & ovos)
Os alarmes de raid e ovo acrescentam uma definição de Notificações RSVP na janela de adição/edição com três opções: Apenas correspondências envia os alertas padrão de raid/ovo; Correspondências + atualizações RSVP também notifica novamente quando as contagens de RSVP mudam (treinadores a confirmar presença); e Apenas atualizações RSVP ignora a correspondência inicial e notifica-te apenas sobre alterações de RSVP. Escolher qualquer um dos modos RSVP faz o bot editar a mensagem existente do Discord no local à medida que as contagens mudam, em vez de enviar novas, e o cartão mostra uma pílula "RSVP" ou "Apenas RSVP". Repara que Apenas atualizações RSVP fica silenciado a menos que o scanner da tua comunidade emita eventos RSVP — escolhe-o apenas se souberes que os RSVP são reportados.
",
+ "CONTENT_QUEST_SUMMARY": "As missões de Pesquisa de campo mudam diariamente e podem corresponder em grande quantidade, por isso um filtro de missões movimentado pode inundar as tuas MD. Entrega do resumo de missões reúne as missões correspondentes num único resumo agendado em vez de muitos alertas separados.
Duas partes que funcionam em conjunto
- Botão de resumo diário — ativa-o num alarme de missão (na sua janela de adicionar/editar) para marcar as suas correspondências para o resumo em vez de entrega imediata.
- Agendamento de entrega — escolhe quando as missões reunidas são enviadas.
Ambos são necessários: o botão indica quais missões reunir, e o agendamento indica quando entregá-las.
Configurar o teu agendamento
Abre a página Missões, depois o menu ⋮ na barra de ferramentas e escolhe Entrega do resumo de missões. Usa Editar agendamento para escolher dias e horas — o mesmo editor usado para as horas ativas dos perfis. As horas guardadas aparecem como etiquetas âmbar.
O agendamento é por utilizador e partilhado por todos os teus perfis — ao contrário das horas ativas dos perfis, que se configuram por perfil.
Enviar resumo agora
Enviar resumo agora entrega imediatamente tudo o que foi reunido desde o teu último resumo. Se ainda nada foi reunido, nada é enviado — as missões são colocadas em buffer à medida que correspondem, por isso dá-lhe tempo ou espera que o agendamento seja acionado.
Bom saber
- O menu só aparece quando o bot do teu servidor tem os resumos de missões ativados.
- A hora de entrega usa a tua localização guardada para o fuso horário — define uma localização, ou os resumos podem chegar à hora local errada (a janela avisa-te quando não há localização definida).
- Remover o agendamento mantém o botão por alarme; as missões continuam a ser reunidas, mas voltam ao horário predefinido do bot.
",
"CONTENT_TEST_ALERTS": "Cada cartão de alarme tem um botão Teste (ícone de avião de papel) que envia uma notificação de exemplo para o teu Discord ou Telegram, usando os filtros exatos do alarme e o teu template de entrega atual.
Como Funciona
- Encontra qualquer cartão de alarme na tua lista (Pokemon, Raid, Quest, etc.).
- Clica no ícone enviar na linha de ações do cartão.
- É gerado um evento fictício que corresponde aos filtros do teu alarme e enviado através do pipeline de notificação. Recebes um DM tal como um alerta real.
O Que é Testado
O teste usa os valores dos filtros do teu alarme (ID Pokemon, nível de raid, recompensa de quest, etc.) e a tua localização guardada como coordenadas do evento fictício. A notificação é formatada usando o template selecionado, para que vejas exatamente como um alerta real ficaria.
Tempo de Espera
Para prevenir spam, cada alarme tem um tempo de espera de 15 segundos entre envios de teste. O botão fica desativado durante a espera e uma notificação mostra o feedback (sucesso, erro ou tempo restante).
💡Os alertas de teste são ótimos para verificar que o teu template está correto ou confirmar que a entrega via webhook está a funcionar antes de esperares por um evento real.
",
"CONTENT_POKEMON_AVAILABILITY": "Ao adicionar ou editar alarmes Pokemon, o seletor Pokemon pode mostrar indicadores de disponibilidade — pequenos badges que te dizem quais Pokemon estão atualmente a spawnar na natureza.
Como Funciona
Se a tua comunidade tem um scanner Golbat configurado, o seletor mostra pontos coloridos junto aos nomes dos Pokemon:
- Ponto verde — Este Pokemon foi visto a spawnar recentemente.
- Sem ponto — Não reportado atualmente nos dados do scanner.
Isto ajuda-te a evitar criar alarmes para Pokemon que não estão a spawnar na tua zona neste momento (ex. espécies sazonais ou exclusivas de eventos).
Atualização de Disponibilidade
Os dados atualizam-se automaticamente em segundo plano. Não precisas de fazer nada — procura simplesmente os pontos ao navegar no seletor Pokemon.
ℹ️Esta funcionalidade só é visível se o teu administrador configurou a integração do scanner Golbat. Se não vires pontos de disponibilidade, a funcionalidade não está ativada para a tua comunidade.
",
"CONTENT_BULK": "
Todas as páginas de alarmes suportam operações em massa para poderes gerir muitos alarmes de uma vez.
Modo de Seleção
Clica no ícone de checklist na barra de ferramentas para entrar no modo de seleção. Depois clica em cartões de alarme individuais para os selecionar, ou usa Selecionar Tudo para apanhar tudo o que está visível.
Ações em Massa
- Atualizar Distância — Altera o modo de entrega (áreas ou distância) para todos os alarmes selecionados de uma vez.
- Eliminar — Remove todos os alarmes selecionados com uma única confirmação.
💡No fundo de cada lista de alarmes encontrarás também os botões Atualizar Toda a Distância e Eliminar Tudo que se aplicam a todos os alarmes desse tipo.
",
@@ -1095,6 +1173,13 @@
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
"ERR_GENERIC": "Erro de autenticação: {{error}}",
"ERR_NO_TOKEN": "Nenhum token de autenticação recebido.",
+ "SIGN_IN_OIDC": "Iniciar sessão com {{provider}}",
+ "SIGNED_OUT_TITLE": "Sessão terminada",
+ "SIGNED_OUT_DESC": "A tua sessão nos Alertas DM foi terminada.",
+ "ERR_OIDC_DISABLED": "O início de sessão externo está atualmente desativado.",
+ "ERR_OIDC_NO_IDENTITY": "O teu fornecedor de início de sessão externo não devolveu uma conta que possamos associar. Certifica-te de que a tua conta do Discord está associada.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "O início de sessão externo falhou. Tenta novamente.",
+ "ERR_OIDC_USERINFO": "Não foi possível obter o teu perfil do fornecedor de início de sessão externo. Tenta novamente.",
"SIGN_UP": "Sign Up",
"SIGN_UP_DESC": "Don't have an account? Sign up to get started."
},
@@ -1296,6 +1381,7 @@
"EDIT": "Editar",
"ADD": "Adicionar",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Confirmar",
"DELETE_ALL": "Eliminar Tudo",
"CLOSE": "Fechar",
@@ -1382,6 +1468,28 @@
"PING_TOOLTIP": "Ping: {{ping}}"
},
"ADMIN_SETTINGS": {
+ "GROUP_OIDC": "SSO Externo",
+ "ENABLE_OIDC_LABEL": "Ativar início de sessão por SSO Externo",
+ "ENABLE_OIDC_DESC": "Permite o início de sessão através do fornecedor OIDC/OAuth2 externo configurado. Requer as definições OIDC_* (URLs do fornecedor, client ID e secret) no .env (é necessário reiniciar o servidor para aplicar alterações ao .env).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Todos os utilizadores são redirecionados para o fornecedor SSO externo. O início de sessão local é ignorado.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Mudar para SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Mudar para início de sessão por SSO?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Após guardar, todos os utilizadores (incluindo administradores) serão redirecionados para {{provider}} para iniciar sessão — a página de início de sessão local do Discord/Telegram é ignorada. Se o fornecedor estiver inacessível, podes ficar bloqueado; recupera definindo AUTH_FORCE_LOCAL=true no ambiente do servidor.",
+ "AUTH_OIDC_NOT_CONFIGURED": "O SSO está indisponível até o fornecedor OIDC ser configurado no ambiente do servidor (variáveis de ambiente OIDC_*).",
+ "AUTH_OIDC_HIDES_LOCAL": "O Discord e o Telegram ficam ocultos enquanto o SSO for o modo de início de sessão ativo.",
+ "AUTH_SLO_LABEL": "Terminar sessão única",
+ "AUTH_SLO_DESC": "Quando ativado, \"Terminar sessão em todo o lado\" também termina a sessão do fornecedor (não apenas neste site). Requer o endpoint de fim de sessão do fornecedor (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Terminar sessão única está indisponível até o endpoint de fim de sessão do fornecedor ser configurado (variável de ambiente OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Configuração do Fornecedor OIDC",
+ "OIDC_PROVIDER_LABEL": "Nome do fornecedor",
+ "OIDC_AUTHORIZATION_URL_LABEL": "URL de autorização",
+ "OIDC_TOKEN_URL_LABEL": "URL de token",
+ "OIDC_USERINFO_URL_LABEL": "URL de UserInfo",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identity claim",
+ "OIDC_USE_PKCE_LABEL": "Usar PKCE",
"SIGNUP_URL_LABEL": "Signup URL",
"SIGNUP_URL_DESC": "External signup/registration page URL. When set, non-registered users will see a sign-up button on the login page.",
"LOAD_FAILED": "Failed to load settings",
@@ -1417,37 +1525,39 @@
"CUSTOM_PAGE_URL_DESC": "URL para onde o link de navegação personalizado aponta.",
"CUSTOM_PAGE_ICON_LABEL": "Ícone do link de navegação",
"CUSTOM_PAGE_ICON_DESC": "Classe FontAwesome para o ícone do link de navegação (ex.: \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Desativar Pokémon",
- "DISABLE_MONS_DESC": "Ocultar a gestão de alarmes de Pokémon a todos os utilizadores.",
- "DISABLE_RAIDS_LABEL": "Desativar Raides",
- "DISABLE_RAIDS_DESC": "Ocultar a gestão de alarmes de Raides a todos os utilizadores.",
- "DISABLE_QUESTS_LABEL": "Desativar Missões",
- "DISABLE_QUESTS_DESC": "Ocultar a gestão de alarmes de missões a todos os utilizadores.",
- "DISABLE_INVASIONS_LABEL": "Desativar Invasões",
- "DISABLE_INVASIONS_DESC": "Ocultar a gestão de alarmes de invasão a todos os utilizadores.",
- "DISABLE_LURES_LABEL": "Desativar Módulos Engodo",
- "DISABLE_LURES_DESC": "Ocultar a gestão de alarmes de engodo a todos os utilizadores.",
- "DISABLE_NESTS_LABEL": "Desativar Ninhos",
- "DISABLE_NESTS_DESC": "Ocultar a gestão de alarmes de ninho a todos os utilizadores.",
- "DISABLE_GYMS_LABEL": "Desativar Ginásios",
- "DISABLE_GYMS_DESC": "Ocultar a gestão de alarmes de ginásio a todos os utilizadores.",
- "DISABLE_FORT_CHANGES_LABEL": "Desativar alterações de fortes",
- "DISABLE_FORT_CHANGES_DESC": "Ocultar a gestão de alarmes de alterações a fortes a todos os utilizadores.",
- "DISABLE_MAXBATTLES_LABEL": "Desativar Combates Max",
- "DISABLE_MAXBATTLES_DESC": "Ocultar a gestão de alarmes de Combate Max a todos os utilizadores.",
- "DISABLE_AREAS_LABEL": "Desativar áreas",
- "DISABLE_AREAS_DESC": "Impedir que os utilizadores giram as suas subscrições de áreas.",
- "DISABLE_PROFILES_LABEL": "Desativar perfis",
- "DISABLE_PROFILES_DESC": "Impedir que os utilizadores criem e mudem de perfis de alarme.",
- "DISABLE_LOCATION_LABEL": "Desativar localização",
- "DISABLE_LOCATION_DESC": "Impedir que os utilizadores definam uma localização de casa.",
- "DISABLE_NOMINATIM_LABEL": "Desativar geocodificação",
- "DISABLE_NOMINATIM_DESC": "Desativar a pesquisa de endereços Nominatim para escolha de localização.",
- "DISABLE_GEOMAP_LABEL": "Desativar vista de mapa",
- "DISABLE_GEOMAP_DESC": "Ocultar completamente o mapa interativo de geofences.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Desativar seleção de áreas no mapa",
- "DISABLE_GEOMAP_SELECT_DESC": "Impedir que os utilizadores selecionem áreas ao clicar no mapa.",
- "ENABLE_TEMPLATES_LABEL": "Ativar modelos",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Permitir que os utilizadores giram alarmes de Pokémon.",
+ "DISABLE_RAIDS_LABEL": "Raides",
+ "DISABLE_RAIDS_DESC": "Permitir que os utilizadores giram alarmes de raides.",
+ "DISABLE_QUESTS_LABEL": "Missões",
+ "DISABLE_QUESTS_DESC": "Permitir que os utilizadores giram alarmes de missões.",
+ "DISABLE_INVASIONS_LABEL": "Invasões",
+ "DISABLE_INVASIONS_DESC": "Permitir que os utilizadores giram alarmes de invasão.",
+ "DISABLE_LURES_LABEL": "Módulos Engodo",
+ "DISABLE_LURES_DESC": "Permitir que os utilizadores giram alarmes de engodo.",
+ "DISABLE_NESTS_LABEL": "Ninhos",
+ "DISABLE_NESTS_DESC": "Permitir que os utilizadores giram alarmes de ninho.",
+ "DISABLE_GYMS_LABEL": "Ginásios",
+ "DISABLE_GYMS_DESC": "Permitir que os utilizadores giram alarmes de ginásio.",
+ "DISABLE_FORT_CHANGES_LABEL": "Alterações de fortes",
+ "DISABLE_FORT_CHANGES_DESC": "Permitir que os utilizadores giram alarmes de alterações a fortes.",
+ "DISABLE_MAXBATTLES_LABEL": "Combates Max",
+ "DISABLE_MAXBATTLES_DESC": "Permitir que os utilizadores giram alarmes de Combate Max.",
+ "DISABLE_AREAS_LABEL": "Áreas",
+ "DISABLE_AREAS_DESC": "Permitir que os utilizadores giram as suas subscrições de áreas.",
+ "DISABLE_PROFILES_LABEL": "Perfis",
+ "DISABLE_PROFILES_DESC": "Permitir que os utilizadores criem e mudem de perfis de alarme.",
+ "DISABLE_LOCATION_LABEL": "Localização",
+ "DISABLE_LOCATION_DESC": "Permitir que os utilizadores definam uma localização de casa.",
+ "DISABLE_NOMINATIM_LABEL": "Geocodificação",
+ "DISABLE_NOMINATIM_DESC": "Permitir a pesquisa de endereços Nominatim para escolha de localização.",
+ "DISABLE_GEOMAP_LABEL": "Vista de mapa",
+ "DISABLE_GEOMAP_DESC": "Mostrar o mapa interativo de geofences.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Seleção de áreas no mapa",
+ "DISABLE_GEOMAP_SELECT_DESC": "Permitir que os utilizadores selecionem áreas ao clicar no mapa.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Geofences personalizadas",
+ "DISABLE_USER_GEOFENCES_DESC": "Permitir que os utilizadores desenhem, importem e submetam as suas próprias geofences. As geofences existentes continuam a funcionar.",
+ "ENABLE_TEMPLATES_LABEL": "Modelos",
"ENABLE_TEMPLATES_DESC": "Permitir que os utilizadores escolham modelos de mensagens de notificação.",
"ALLOWED_LANGUAGES_LABEL": "Idiomas de UI permitidos",
"ALLOWED_LANGUAGES_DESC": "Códigos de idioma separados por vírgulas a mostrar no seletor (ex.: \"en,de,fr,es\"). Deixe em branco para mostrar os 11 idiomas.",
@@ -1455,8 +1565,6 @@
"ENABLE_ROLES_DESC": "Permitir apenas o login de utilizadores com funções Discord específicas. Requer Bot Token e Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "IDs de funções permitidas",
"ALLOWED_ROLE_IDS_DESC": "IDs de funções Discord separados por vírgulas que concedem acesso (ex.: \"123456789,987654321\"). Deixe em branco para permitir todos.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Idiomas permitidos",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Lista separada por vírgulas de códigos de idioma que os utilizadores podem selecionar (ex.: \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Comando de registo",
"REGISTER_COMMAND_DESC": "Comando do bot Poracle que os utilizadores executam para se registarem (ex.: \"$!register\").",
"LOCATION_COMMAND_LABEL": "Comando de localização",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "IDs de admin",
"DISCORD_ADMIN_IDS_DESC": "IDs de utilizadores Discord com acesso de admin (mascarado).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Canal de fórum de geofences",
- "DISCORD_GEOFENCE_FORUM_DESC": "Canal de fórum Discord para threads de submissão de geofences."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Canal de fórum Discord para threads de submissão de geofences.",
+ "SEARCH_PLACEHOLDER": "Pesquisar definições…",
+ "SEARCH_CLEAR": "Limpar pesquisa",
+ "UNSAVED_CHANGES": "{{count}} por guardar",
+ "SAVE_CHANGES": "Guardar alterações",
+ "DISCARD_CHANGES": "Descartar",
+ "COLLAPSE_SECTION": "Recolher secção",
+ "EXPAND_SECTION": "Expandir secção",
+ "SUMMARY_ENABLED": "{{count}} de {{total}} ativos"
},
"GEOFENCE_DETAIL": {
"NAME": "Nome",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "A tua localização",
"SELECTED_COUNT": "{{count}} selecionados:",
"AREAS_SELECTED": "{{count}} área(s) selecionada(s)"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Padrões de alertas",
+ "DESC": "Escolha como os novos alertas são entregues por padrão. Ainda poderá alterar isto para cada alerta ao criá-lo.",
+ "DEFAULT_DISTANCE": "Distância padrão",
+ "DEFAULT_DISTANCE_HINT": "Usada para preencher previamente o raio de novos alertas baseados em distância.",
+ "FOOTNOTE": "Aplica-se apenas a alertas recém-criados — os existentes não são alterados."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/sv.json b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/sv.json
index 33defcee..f949b64a 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/sv.json
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/assets/i18n/sv.json
@@ -55,12 +55,14 @@
"ACCENT_THEME": "Accenttema",
"LANGUAGE": "Språk",
"LOGOUT": "Logga ut",
+ "LOGOUT_EVERYWHERE": "Logga ut överallt",
"ACCENT_DEFAULT": "Standard",
"ACCENT_POKEMON": "Pokemon",
"ACCENT_RAIDS": "Raids",
"ACCENT_MYSTIC": "Mystic",
"ACCENT_VALOR": "Valor",
- "ACCENT_INSTINCT": "Instinct"
+ "ACCENT_INSTINCT": "Instinct",
+ "ALERT_DEFAULTS": "Standardinställningar för aviseringar"
},
"SHORTCUTS": {
"TITLE": "Kortkommandon",
@@ -227,6 +229,7 @@
"FILTER_FORM_GENDER": "Form och kön",
"LABEL_FORM": "Form",
"ALL_FORMS": "Alla former",
+ "FORM_MULTI_HINT": "Lämna tomt för att matcha alla former",
"LABEL_GENDER": "Kön",
"GENDER_ALL": "Alla",
"GENDER_MALE": "Hane",
@@ -339,6 +342,15 @@
"COMMON_SETTINGS": "Gemensamma inställningar"
},
"RAIDS": {
+ "RSVP_LABEL": "RSVP-aviseringar",
+ "RSVP_OFF": "Endast träffar",
+ "RSVP_INCLUDE": "Träffar + RSVP-uppdateringar",
+ "RSVP_ONLY": "Endast RSVP-uppdateringar",
+ "RSVP_OFF_DESC": "Endast vanliga raid-/äggaviseringar.",
+ "RSVP_INCLUDE_DESC": "Meddela även när RSVP-antalet ändras.",
+ "RSVP_ONLY_DESC": "Hoppa över inledande träffar; meddela endast vid RSVP-ändringar. Utan en skanner som skickar RSVP blir larmet tyst.",
+ "RSVP_PILL_INCLUDE": "RSVP",
+ "RSVP_PILL_ONLY": "Endast RSVP",
"PAGE_TITLE": "Raid- och ägglarm",
"PAGE_DESC": "Få notiser om raid-bossar och ägg-kläckningar på närliggande gym.",
"TAB_RAIDS": "Raids ({{count}})",
@@ -401,7 +413,47 @@
"CONFIRM_DELETE_ALL_MSG": "Är du säker på att du vill radera ALLA raid- och ägglarm? Denna åtgärd kan inte ångras.",
"CONFIRM_BULK_DELETE_TITLE": "Radera valda larm",
"CONFIRM_BULK_DELETE_MSG": "Är du säker på att du vill radera {{count}} larm?",
- "CONFIRM_DELETE_SELECTED": "Radera valda"
+ "CONFIRM_DELETE_SELECTED": "Radera valda",
+ "LEVEL": {
+ "RAID_1": "1 Star",
+ "RAID_2": "2 Star",
+ "RAID_3": "3 Star",
+ "RAID_4": "4 Star",
+ "RAID_5": "Legendary",
+ "RAID_6": "Mega",
+ "RAID_7": "Mega Legendary",
+ "RAID_8": "Ultra Beast",
+ "RAID_9": "Elite",
+ "RAID_10": "Primal",
+ "RAID_11": "1 Shadow",
+ "RAID_12": "2 Shadow",
+ "RAID_13": "3 Shadow",
+ "RAID_14": "4 Shadow",
+ "RAID_15": "5 Shadow",
+ "RAID_16": "4 Super Mega",
+ "RAID_17": "5 Super Mega",
+ "RAID_18": "Coordinated 1",
+ "RAID_19": "Coordinated 2",
+ "ANY": "Any",
+ "CUSTOM": "Level",
+ "CATEGORY_STAR": "Star tiers",
+ "CATEGORY_MEGA": "Mega",
+ "CATEGORY_SPECIAL": "Special",
+ "CATEGORY_SHADOW": "Shadow",
+ "CATEGORY_SUPER_MEGA": "Super Mega",
+ "CATEGORY_COORDINATED": "Coordinated",
+ "SECTION_STANDARD": "Standard",
+ "SECTION_SPECIAL": "Special",
+ "SECTION_CUSTOM": "Custom",
+ "ADD": "Add level",
+ "ADD_PLACEHOLDER": "e.g. 42",
+ "ADD_HELP": "Any positive integer your server uses. 9000 means \"any level\".",
+ "INVALID": "Level must be 1 or higher.",
+ "DUPLICATE": "Level {{value}} is already in the list.",
+ "SR_REMOVE": "Remove custom level {{value}}",
+ "REMOVED": "Removed level {{value}}",
+ "MORE_RAID_TYPES": "More raid types…"
+ }
},
"QUESTS": {
"PAGE_TITLE": "Quest-larm",
@@ -453,7 +505,23 @@
"SNACK_DELETED_ALL": "Alla quest-larm raderade",
"SNACK_FAILED_DELETE_ALL": "Kunde inte radera larm",
"SNACK_FAILED_DISTANCE": "Kunde inte uppdatera avstånd",
- "CONFIRM_DELETE_SELECTED": "Radera valda"
+ "CONFIRM_DELETE_SELECTED": "Radera valda",
+ "SUMMARY_MODE": "Daglig sammanfattning",
+ "SUMMARY_HINT": "Samlar matchande uppdrag i ett enda sammanfattningsmeddelande i stället för en avisering per uppdrag. Kräver ett konfigurerat sammanfattningsschema i boten.",
+ "SUMMARY_BADGE": "Sammanfattning",
+ "SUMMARY_SCHEDULE": "Leverans av uppdragssammanfattning",
+ "SUMMARY_SCHEDULE_ALERT_LABEL": "Uppdragssammanfattning",
+ "SUMMARY_SCHEDULE_EMPTY": "Inget sammanfattningsschema angivet. Uppdrag levereras individuellt.",
+ "SUMMARY_SCHEDULE_EDIT": "Redigera schema",
+ "SUMMARY_SCHEDULE_CLEAR": "Ta bort schema",
+ "SUMMARY_SCHEDULE_SEND_NOW": "Skicka sammanfattning nu",
+ "SUMMARY_SCHEDULE_SEND_NOW_HINT": "Levererar questträffar som samlats sedan din senaste sammanfattning. Om inget har buffrats än skickas ingenting.",
+ "SUMMARY_SCHEDULE_SAVED": "Sammanfattningsschema sparat",
+ "SUMMARY_SCHEDULE_CLEARED": "Sammanfattningsschema borttaget",
+ "SUMMARY_SCHEDULE_SENT": "Sammanfattning skickad",
+ "SUMMARY_SCHEDULE_FAILED": "Det gick inte att uppdatera sammanfattningsschemat",
+ "SUMMARY_SCHEDULE_UNAVAILABLE": "Leverans av sammanfattningar är tillfälligt otillgänglig. Försök igen senare.",
+ "SUMMARY_DISABLED_HINT": "Schemaläggning av sammanfattningar är inte tillgänglig på den här servern."
},
"INVASIONS": {
"PAGE_TITLE": "Invasionslarm",
@@ -561,7 +629,10 @@
"TYPE_MAGNETIC": "Magnetisk",
"TYPE_RAINY": "Regnig",
"TYPE_GOLDEN": "Gyllene",
- "TYPE_UNKNOWN": "Lockbete #{{id}}"
+ "TYPE_UNKNOWN": "Lockbete #{{id}}",
+ "EDIT_MODE": "Redigera meddelandet på plats",
+ "EDIT_HINT": "Uppdaterar det befintliga Discord-meddelandet när betet ändras i stället för att skicka ett nytt.",
+ "EDIT_BADGE": "Redigera"
},
"NESTS": {
"PAGE_TITLE": "Nästlarm",
@@ -699,6 +770,10 @@
"CHANGE_LOCATION": "Ändra",
"SET_LOCATION": "Ange",
"METHOD_NOTE": "Varje larm väljer en metod i sin Leverans-flik.",
+ "NOTIFICATION_LANGUAGE": "Aviseringsspråk",
+ "NOTIFICATION_LANGUAGE_DESC": "Språket som Poracle använder för dina aviseringar och Pokémon-namn. Det är skilt från visningsspråket i toppmenyn.",
+ "SNACK_LANGUAGE_UPDATED": "Aviseringsspråk uppdaterat",
+ "SNACK_LANGUAGE_FAILED": "Det gick inte att uppdatera aviseringsspråket",
"SELECT_AREAS": "Välj områden",
"MAP_VIEW": "Karta",
"LIST_VIEW": "Lista",
@@ -1032,6 +1107,8 @@
"SECTION_OTHER_ALARMS_SUB": "Raids, ägg, quests, rockets, lockmoduler, nästen, gym, fort-ändringar",
"SECTION_DELIVERY": "Leveransinställningar",
"SECTION_DELIVERY_SUB": "Områden vs avstånd, mallar och städningsläge",
+ "SECTION_QUEST_SUMMARY": "Leverans av uppdragssammanfattning",
+ "SECTION_QUEST_SUMMARY_SUB": "Samla bullriga uppdrag i en schemalagd sammanfattning",
"SECTION_TEST_ALERTS": "Testlarm",
"SECTION_TEST_ALERTS_SUB": "Skicka provnotiser för att förhandsgranska dina larm",
"SECTION_POKEMON_AVAILABILITY": "Pokemon-tillgänglighet",
@@ -1057,7 +1134,8 @@
"CONTENT_GEOFENCES": "
Om de fördefinierade områdena inte täcker platsen du vill ha alarmer från kan du rita dina egna anpassade geofence-gränser på kartan.
Rita en geofence
- Gå till Mina Geofences i sidopanelen.
- Klicka på Rita Geofence.
- Klicka på kartan för att placera punkter för din polygongräns. Klicka på första punkten igen för att stänga formen (minst 3 punkter).
- Ge din geofence ett namn och välj vilken region den tillhör. Regionen detekteras vanligtvis automatiskt.
- Klicka på Spara.
Hantera geofences
- Redigera — Byt namn på din geofence eller ändra dess region.
- Ta bort — Ta bort en geofence du inte längre behöver. Geofencen tas bort från alla profiler automatiskt.
Profilväxling
Varje geofence-kort har en skjutkontroll för att aktivera eller avaktivera den för din aktiva profil. När du skapar en geofence aktiveras den automatiskt på profilen du använder. Växla till en annan profil och kontrollen visar \"Inaktiv\" — slå på den för att även få alarmer för den geofencen på den profilen. Det låter dig styra vilka profiler som får notifikationer för varje geofence utan att återskapa den.
ℹ️Godkända geofences (befordrade till offentliga områden) visar inte kontrollen — hantera dem från Områden-sidan istället.
GeoJSON Import & Export
Du kan importera och exportera geofences i standard GeoJSON-format, vilket gör det enkelt att dela gränser eller skapa dem i externa verktyg som geojson.io.
- Import — Klicka på uppladdningsikonen och klistra in eller ladda upp en GeoJSON-fil. Varje polygon i filen blir en ny geofence. Du kan granska och byta namn på var och en innan du sparar.
- Export — Klicka på nedladdningsikonen och välj vilka geofences som ska inkluderas. Den exporterade GeoJSON-filen innehåller alla valda polygoner och kan öppnas i valfritt GIS-verktyg eller kartredigerare.
💡GeoJSON-import är användbar för att migrera geofences från andra system eller rita komplexa gränser i ett GIS-verktyg på datorn och sedan importera dem här.
Skicka in för offentligt godkännande
Om du tycker att din geofence skulle vara användbar för hela communityn kan du skicka in den för admin-granskning. Om den godkänns blir den ett offentligt område som alla kan välja. Din privata geofence fortsätter fungera medan granskningen pågår.
Statusmärken
- Aktiv — Din privata geofence, fungerar bara för dig.
- Väntar på granskning — Inskickad och väntar på admin-granskning.
- Godkänd — Befordrad till ett offentligt område.
- Avvisad — Inte godkänd. Du kan se adminens feedback och geofencen förblir aktiv som en privat zon.
ℹ️Du kan ha upp till 10 anpassade geofences, var och en med upp till 500 gränspunkter.
",
"CONTENT_POKEMON": "
Pokemon-alarm meddelar dig när en vild Pokemon spawnar som matchar dina filter.
Lägga till ett Pokemon-alarm

- Gå till Pokemon i sidopanelen och klicka på +-knappen.
- Välj Pokemon — Sök efter namn eller Pokedex-nummer, eller använd generations- och typfilterknappar för att bläddra. Du kan välja flera Pokemon på en gång.
- Ställ in filter — Välj vad som gör en spawn värd att meddela om:
- IV-intervall — Minimum och maximum IV-procent (0-100%)
- CP-intervall — Filtrera efter stridsstyrka
- Nivåintervall — Filtrera efter Pokemon-nivå (0-55)
- Individuella stats — Filtrera efter ATK, DEF och STA värden (0-15 vardera)
- Form — Följ specifika former (t.ex. Alolan, Galarian) eller alla former
- Kön — Hane, hona, könslös eller alla
- Vikt — Filtrera efter viktintervall
- Storlek — Filtrera efter storlekskategori: välj ALL (inget filter) för att matcha alla storlekar, eller välj specifika storlekar från XXS till XXL (XXS, XS, Normal, XL, XXL)
ℹ️Standardfiltervärden är inställda så att alla Pokemon matchar när inga filter är explicit konfigurerade. Till exempel är IV standard 0-100%, nivå 0-55 och storlek ALL. Du behöver bara justera de filter du bryr dig om.
PVP-filter
Få notifikationer när en Pokemon har bra PVP IV. Välj en liga (Great, Ultra eller Little Cup) och ställ in det rangintervall du bryr dig om (t.ex. rang 1-50).
\"Alla Pokemon\"-alarm
💡Välj \"All Pokemon\" (ID 0) för att skapa ett alarm som täcker alla arter. Användbart med ett högt IV-filter som 96-100% för att fånga varje värdefull spawn.
Läsa alarmkort
Varje alarmkort visar färgade etiketter som sammanfattar dina filter:
IV 90-100%CP 2000+L30-35PVP GL♂XXL
",
"CONTENT_OTHER_ALARMS": "
Raid- och Ägg-alarm
Få notifikationer när en raidboss eller ett ägg dyker upp som du är intresserad av.
- Efter nivå — Välj raidnivåer (1-6) eller äggnivåer för att följa alla raids på den nivån.
- Efter boss — Välj specifika Pokemon raidbossar du vill jaga.
- Lagfilter — Få bara notifikationer om raids vid gym kontrollerade av ett specifikt lag (Mystic, Valor, Instinct).
- Gymföljning — Följ raids vid specifika gym efter namn så du bara får notifikationer om dina favoritgym.
- Attackfilter — Filtrera raidbossar efter deras snabba eller laddade attacker.
- RSVP-notifikationer — Få notifikationer när andra tränare anmäler sig till en raid eller ett ägg du följer.
Raid- och Ägg-alarm hanteras på separata flikar på Raids-sidan. Ägg stöder också gymspecifik följning och RSVP-notifikationer.
Max Battle (Dynamax)-alarm
Få notifikationer om Dynamax- och Gigantamax-strider vid Power Spots.
- Efter nivå — Välj stridsnivåer för att följa alla Pokemon på de nivåerna. Nivåer går från 1 stjärna till 5 stjärnor (Legendary) för Dynamax, plus Gigantamax och Legendary Gigantamax för de största striderna. Ett alarm skapas per vald nivå.
- Efter Pokemon — Välj specifika Pokemon du vill strida mot på alla Max Battle-nivåer. Om scannerdatabasen är konfigurerad filtreras väljaren till att bara visa Pokemon som har dykt upp i Max Battles.
- Bara Gigantamax — När du följer efter Pokemon, slå på detta för att bara få notifikationer när den Pokemon dyker upp i Gigantamax-strider (de högsta striderna med unika G-Max-attacker). För nivåbaserad följning hanteras Gigantamax genom att välja Gigantamax- eller Legendary Gigantamax-nivåerna direkt.
- Välj alla — Välj snabbt alla tillgängliga nivåer på en gång (motsvarar bottens
!maxbattle everything kommando).
Quest-alarm
Få notifikationer om fältforskningsuppgifter med specifika belöningar.
- Pokemon-möten — Välj Pokemon du vill ha som questbelöningar.
- Föremål — Följ quests som ger specifika föremål.
- Mega Energi — Följ quests som ger mega-energi för specifika Pokemon.
- Godis — Följ quests som ger godis för specifika Pokemon.
Invasionsalarm
Få notifikationer om Team Rocket-invasioner.
- Följ alla — Ett alarm för varje grunttyp och ledare.
- Efter typ — Välj specifika grunttyper (Bug, Dragon, Fire etc.), Rocket Leaders eller Giovanni. Grunttypnamn normaliseras automatiskt (skiftlägesokkänsligt), så du behöver inte oroa dig för exakt stavning.
- Kön — Filtrera efter gruntens kön.
Lure-alarm
Få notifikationer när en specifik lure-typ placeras. Välj mellan Normal, Glacial, Mossy, Magnetic, Rainy och Golden.
Bo-alarm
Följ Pokemon-arter som har bon. Ställ in en minsta spawns per timme-tröskel så du bara får notifikationer om bon med tillräcklig aktivitet.
Gym-alarm
Följ gymlagbyten. Välj vilka lag (Neutral, Mystic, Valor, Instinct) som ska övervakas. Aktivera Platsändringar för att få notifikationer när gymplatser öppnas, eller aktivera Stridsändringar för att få notifikationer när ett gym är under attack.
Fortändringsalarm
Följ ändringar i PokéStops och gym själva — inte aktiviteterna vid dem, utan ändringar i själva intressepunkterna.
- Forttyp — Välj att följa PokéStops, Gym eller Allt.
- Ändringstyper — Välj vilka ändringar som ska övervakas: Namn ändrat, Plats ändrad, Bild ändrad, Borttagning eller Nytt fort tillagt.
- Inkludera tomma — Inkludera fort utan namn.
💡Fortändringsalarm är användbara för att följa kartdatabasuppdateringar — nya PokéStops som dyker upp, gym som flyttas eller POI:er som tas bort från spelet.
Rikta in sig på ett specifikt gym
När du skapar eller redigerar ett Raid-, Ägg- eller Gym-alarm kan du valfritt söka efter och välja ett specifikt gym. Det är användbart när du bara bryr dig om aktivitet vid ditt favoritgym — som det på din lunchrutt eller nära ditt hem.
- Så här använder du det — I lägg till- eller redigeringsdialogen, skriv ett gymnamn i gymsökfältet. Resultaten visar gymmets foto, namn och område så du kan identifiera rätt gym.
- När ett gym är valt — Alarmet utlöses bara för händelser vid det specifika gymmet. Gymnamnet visas på alarmkortet i din lista så du kan se vilket gym det riktar sig mot.
- När inget gym är valt — Det är standard. Alarmet fungerar normalt för alla gym i dina valda områden eller inom din avståndsradie.
💡Du kan kombinera ett gymspecifikt alarm med ett bredare alarm. Skapa till exempel ett raidalarm riktat mot ditt lokala gym för alla nivåer, och ett andra alarm för nivå 5-raids över alla dina områden.
",
- "CONTENT_DELIVERY": "
Varje alarm har leveransinställningar som styr var du får notifikationer.
Områden vs Avstånd
Varje alarm använder ett av två leveranslägen:
🗺
Använd områdenFå notifikationer när händelser sker i dina valda områden. Bra för att följa specifika kvarter.📏
Ange avståndFå notifikationer inom en radie (km) från din sparade plats. Bra för att följa allt i närheten.Du kan använda olika lägen för olika alarm — till exempel områden för Pokemon och avstånd för raids.
Notifikationsmallar
Om mallar är aktiverade kan du välja hur dina notifikationsmeddelanden ser ut. Mallväljaren visar en live-förhandsgranskning av hur ditt Discord DM kommer att se ut, inklusive embed-format, fält och bilder.
Städningsläge
När det är aktiverat tar botten automatiskt bort notifikationen från Discord efter att händelsen löper ut (t.ex. en Pokemon despawnar eller en raid slutar). Det håller dina DM snygga. Du kan aktivera städningsläge per alarm eller i bulk från Städning-sidan.
Ping / Rollomnämnanden
Om du använder webhooks kan du ställa in en Discord-roll att nämna i notifikationen (t.ex. @Pokemon). Det är bara relevant för webhook-konfigurationer.
",
+ "CONTENT_DELIVERY": "
Varje alarm har leveransinställningar som styr var du får notifikationer.
Områden vs Avstånd
Varje alarm använder ett av två leveranslägen:
🗺
Använd områdenFå notifikationer när händelser sker i dina valda områden. Bra för att följa specifika kvarter.📏
Ange avståndFå notifikationer inom en radie (km) från din sparade plats. Bra för att följa allt i närheten.Du kan använda olika lägen för olika alarm — till exempel områden för Pokemon och avstånd för raids.
Notifikationsmallar
Om mallar är aktiverade kan du välja hur dina notifikationsmeddelanden ser ut. Mallväljaren visar en live-förhandsgranskning av hur ditt Discord DM kommer att se ut, inklusive embed-format, fält och bilder.
Städningsläge
När det är aktiverat tar botten automatiskt bort notifikationen från Discord efter att händelsen löper ut (t.ex. en Pokemon despawnar eller en raid slutar). Det håller dina DM snygga. Du kan aktivera städningsläge per alarm eller i bulk från Städning-sidan.
Ping / Rollomnämnanden
Om du använder webhooks kan du ställa in en Discord-roll att nämna i notifikationen (t.ex. @Pokemon). Det är bara relevant för webhook-konfigurationer.
Redigera på plats & sammanfattningar
Vissa larm stöder extra leveranslägen. Aktivera Redigera meddelandet på plats för ett lockbete så att det befintliga Discord-meddelandet uppdateras när lockbetet ändras i stället för att ett nytt skickas, eller Daglig sammanfattning för ett uppdrag för att samla matchande uppdrag i ett enda sammanfattningsmeddelande (kräver ett konfigurerat sammanfattningsschema på boten). Raider och ägg redigeras på plats automatiskt när du väljer ett RSVP-läge. Dessa inställningar behålls även om du anger dem från boten.
RSVP-uppdateringar (raider & ägg)
Raid- och äggalarm lägger till en inställning för RSVP-aviseringar i lägg till-/redigeringsdialogen med tre alternativ: Endast träffar skickar vanliga raid-/äggaviseringar; Träffar + RSVP-uppdateringar meddelar dig även när RSVP-antalet ändras (tränare som anmäler sig); och Endast RSVP-uppdateringar hoppar över den inledande träffen och meddelar dig endast vid RSVP-ändringar. Att välja något av RSVP-lägena gör att botten redigerar det befintliga Discord-meddelandet på plats när antalet ändras i stället för att skicka nya, och kortet visar en "RSVP"- eller "Endast RSVP"-etikett. Observera att Endast RSVP-uppdateringar blir tyst om inte din gemenskaps skanner skickar RSVP-händelser — välj det bara om du vet att RSVP rapporteras.
",
+ "CONTENT_QUEST_SUMMARY": "Fältforskningsuppdrag roterar dagligen och kan matcha i stora mängder, så ett fullt uppdragsfilter kan översvämma dina DM. Leverans av uppdragssammanfattning samlar matchande uppdrag i en schemalagd sammanfattning i stället för många separata aviseringar.
Två delar som samverkar
- Reglaget Daglig sammanfattning — slå på det för ett uppdragslarm (i dess lägg till-/redigeringsdialog) för att markera dess matchningar för sammanfattningen i stället för omedelbar leverans.
- Leveransschema — välj när de insamlade uppdragen skickas.
Båda behövs: reglaget anger vilka uppdrag som ska samlas in, schemat anger när de ska levereras.
Ställ in ditt schema
Öppna sidan Uppdrag, sedan menyn ⋮ i verktygsfältet och välj Leverans av uppdragssammanfattning. Använd Redigera schema för att välja dagar och tider — samma redigerare som används för profilers aktiva timmar. Sparade tider visas som bärnstensfärgade chips.
Schemat är per användare och delas mellan alla dina profiler — till skillnad från profilers aktiva timmar, som ställs in per profil.
Skicka sammanfattning nu
Skicka sammanfattning nu levererar omedelbart allt som samlats in sedan din senaste sammanfattning. Om inget har samlats in ännu skickas ingenting — uppdrag buffras allteftersom de matchar, så ge det tid eller vänta tills schemat utlöses.
Bra att veta
- Menyn visas bara när din servers bot har uppdragssammanfattningar aktiverade.
- Leveranstiden använder din sparade plats för tidszonen — ange en plats, annars kan sammanfattningar komma vid fel lokal tid (dialogen varnar dig när ingen plats är angiven).
- Att ta bort schemat behåller reglaget per larm; uppdrag samlas fortfarande in men återgår till botens standardtid.
",
"CONTENT_TEST_ALERTS": "Varje alarmkort har en Test-knapp (pappersflygplansikon) som skickar en provnotifikation till din Discord eller Telegram, med alarmets exakta filter och din nuvarande leveransmall.
Så här fungerar det
- Hitta ett alarmkort på din lista (Pokemon, Raid, Quest etc.).
- Klicka på skicka-ikonen i kortets åtgärdsrad.
- En simulerad händelse som matchar ditt alarms filter genereras och skickas genom notifikationspipelinen. Du får ett DM precis som en riktig alert.
Vad som testas
Testet använder ditt alarms filtervärden (Pokemon ID, raidnivå, questbelöning etc.) och din sparade plats som de simulerade händelsekoordinaterna. Notifikationen formateras med din valda mall, så du ser exakt hur en riktig alert skulle se ut.
Nedkylning
För att förhindra spam har varje alarm en 15-sekunders nedkylningsperiod mellan testutskick. Knappen är avaktiverad under nedkylningen och en infobar visar feedback (lyckad, fel eller återstående nedkylning).
💡Testalarm är bra för att verifiera att din mall ser rätt ut eller bekräfta att din webhook-leverans fungerar innan du väntar på en riktig händelse.
",
"CONTENT_POKEMON_AVAILABILITY": "När du lägger till eller redigerar Pokemon-alarm kan Pokemon-väljaren visa tillgänglighetsindikatorer — små märken som berättar vilka Pokemon som för närvarande spawnar i det vilda.
Så här fungerar det
Om din community har en Golbat-scanner konfigurerad visar väljaren färgade prickar bredvid Pokemon-namn:
- Grön prick — Denna Pokemon har setts spawna nyligen.
- Ingen prick — Inte rapporterad i scannerdatan just nu.
Det hjälper dig undvika att skapa alarm för Pokemon som inte spawnar i ditt område just nu (t.ex. säsongsbundna eller eventexklusiva arter).
Uppdatering av tillgänglighet
Datan uppdateras automatiskt i bakgrunden. Du behöver inte göra något — titta bara efter prickarna när du bläddrar i Pokemon-väljaren.
ℹ️Den här funktionen är bara synlig om din admin har konfigurerat Golbat-scannerintegrationen. Om du inte ser tillgänglighetsprickar är funktionen inte aktiverad för din community.
",
"CONTENT_BULK": "
Alla alarmsidor stöder massoperationer så du kan hantera många alarm på en gång.
Väljläge
Klicka på checklisteikonen i verktygsfältet för att gå in i väljläge. Klicka sedan på individuella alarmkort för att välja dem, eller använd Välj alla för att ta allt synligt.
Massåtgärder
- Uppdatera avstånd — Ändra leveransläge (områden eller avstånd) för alla valda alarm på en gång.
- Ta bort — Ta bort alla valda alarm med en bekräftelse.
💡Längst ner i varje alarmlista hittar du också knapparna Uppdatera alla avstånd och Ta bort alla som gäller för varje alarm av den typen.
",
@@ -1095,6 +1173,13 @@
"ERR_TOKEN_EXCHANGE": "Discord authentication failed. Please try again.",
"ERR_GENERIC": "Autentiseringsfel: {{error}}",
"ERR_NO_TOKEN": "Ingen autentiseringstoken mottagen.",
+ "SIGN_IN_OIDC": "Logga in med {{provider}}",
+ "SIGNED_OUT_TITLE": "Utloggad",
+ "SIGNED_OUT_DESC": "Du har loggats ut från DM Alerts.",
+ "ERR_OIDC_DISABLED": "Extern inloggning är för närvarande inaktiverad.",
+ "ERR_OIDC_NO_IDENTITY": "Din externa inloggningsleverantör returnerade inget konto som vi kan matcha. Kontrollera att ditt Discord-konto är länkat.",
+ "ERR_OIDC_TOKEN_EXCHANGE": "Extern inloggning misslyckades. Försök igen.",
+ "ERR_OIDC_USERINFO": "Kunde inte hämta din profil från den externa inloggningsleverantören. Försök igen.",
"SIGN_UP": "Sign Up",
"SIGN_UP_DESC": "Don't have an account? Sign up to get started."
},
@@ -1296,6 +1381,7 @@
"EDIT": "Redigera",
"ADD": "Lägg till",
"OK": "OK",
+ "UNDO": "Undo",
"CONFIRM": "Bekräfta",
"DELETE_ALL": "Radera alla",
"CLOSE": "Stäng",
@@ -1395,6 +1481,7 @@
"GROUP_COMMANDS": "Kommandon",
"GROUP_TELEGRAM": "Telegram",
"GROUP_DISCORD": "Discord",
+ "GROUP_OIDC": "Extern SSO",
"GROUP_MAPS_ASSETS": "Kartor & resurser",
"GROUP_ANALYTICS_LINKS": "Analys & länkar",
"GROUP_DEBUG": "Felsökning",
@@ -1417,37 +1504,39 @@
"CUSTOM_PAGE_URL_DESC": "URL som den anpassade navigeringslänken pekar på.",
"CUSTOM_PAGE_ICON_LABEL": "Ikon för navigeringslänk",
"CUSTOM_PAGE_ICON_DESC": "FontAwesome-klass för navigeringslänkens ikon (t.ex. \"fas fa-map\").",
- "DISABLE_MONS_LABEL": "Inaktivera Pokémon",
- "DISABLE_MONS_DESC": "Dölj hantering av Pokémon-larm för alla användare.",
- "DISABLE_RAIDS_LABEL": "Inaktivera Raider",
- "DISABLE_RAIDS_DESC": "Dölj hantering av Raid-larm för alla användare.",
- "DISABLE_QUESTS_LABEL": "Inaktivera Uppdrag",
- "DISABLE_QUESTS_DESC": "Dölj hantering av uppdragslarm för alla användare.",
- "DISABLE_INVASIONS_LABEL": "Inaktivera Invasioner",
- "DISABLE_INVASIONS_DESC": "Dölj hantering av invasionslarm för alla användare.",
- "DISABLE_LURES_LABEL": "Inaktivera Lockbeten",
- "DISABLE_LURES_DESC": "Dölj hantering av lockbete-larm för alla användare.",
- "DISABLE_NESTS_LABEL": "Inaktivera Bon",
- "DISABLE_NESTS_DESC": "Dölj hantering av bo-larm för alla användare.",
- "DISABLE_GYMS_LABEL": "Inaktivera Gym",
- "DISABLE_GYMS_DESC": "Dölj hantering av gymlarm för alla användare.",
- "DISABLE_FORT_CHANGES_LABEL": "Inaktivera fort-ändringar",
- "DISABLE_FORT_CHANGES_DESC": "Dölj hantering av fort-ändringslarm för alla användare.",
- "DISABLE_MAXBATTLES_LABEL": "Inaktivera Max Battles",
- "DISABLE_MAXBATTLES_DESC": "Dölj hantering av Max Battle-larm för alla användare.",
- "DISABLE_AREAS_LABEL": "Inaktivera områden",
- "DISABLE_AREAS_DESC": "Hindra användare från att hantera sina områdesprenumerationer.",
- "DISABLE_PROFILES_LABEL": "Inaktivera profiler",
- "DISABLE_PROFILES_DESC": "Hindra användare från att skapa och växla mellan larmprofiler.",
- "DISABLE_LOCATION_LABEL": "Inaktivera plats",
- "DISABLE_LOCATION_DESC": "Hindra användare från att ange en hemplats.",
- "DISABLE_NOMINATIM_LABEL": "Inaktivera geokodning",
- "DISABLE_NOMINATIM_DESC": "Inaktivera Nominatim-adressökning för platsval.",
- "DISABLE_GEOMAP_LABEL": "Inaktivera kartvy",
- "DISABLE_GEOMAP_DESC": "Dölj den interaktiva geofence-kartan helt.",
- "DISABLE_GEOMAP_SELECT_LABEL": "Inaktivera områdesval på karta",
- "DISABLE_GEOMAP_SELECT_DESC": "Hindra användare från att välja områden genom att klicka på kartan.",
- "ENABLE_TEMPLATES_LABEL": "Aktivera mallar",
+ "DISABLE_MONS_LABEL": "Pokémon",
+ "DISABLE_MONS_DESC": "Låt användare hantera Pokémon-larm.",
+ "DISABLE_RAIDS_LABEL": "Raider",
+ "DISABLE_RAIDS_DESC": "Låt användare hantera Raid-larm.",
+ "DISABLE_QUESTS_LABEL": "Uppdrag",
+ "DISABLE_QUESTS_DESC": "Låt användare hantera uppdragslarm.",
+ "DISABLE_INVASIONS_LABEL": "Invasioner",
+ "DISABLE_INVASIONS_DESC": "Låt användare hantera invasionslarm.",
+ "DISABLE_LURES_LABEL": "Lockbeten",
+ "DISABLE_LURES_DESC": "Låt användare hantera lockbete-larm.",
+ "DISABLE_NESTS_LABEL": "Bon",
+ "DISABLE_NESTS_DESC": "Låt användare hantera bo-larm.",
+ "DISABLE_GYMS_LABEL": "Gym",
+ "DISABLE_GYMS_DESC": "Låt användare hantera gymlarm.",
+ "DISABLE_FORT_CHANGES_LABEL": "Fort-ändringar",
+ "DISABLE_FORT_CHANGES_DESC": "Låt användare hantera fort-ändringslarm.",
+ "DISABLE_MAXBATTLES_LABEL": "Max Battles",
+ "DISABLE_MAXBATTLES_DESC": "Låt användare hantera Max Battle-larm.",
+ "DISABLE_AREAS_LABEL": "Områden",
+ "DISABLE_AREAS_DESC": "Låt användare hantera sina områdesprenumerationer.",
+ "DISABLE_PROFILES_LABEL": "Profiler",
+ "DISABLE_PROFILES_DESC": "Låt användare skapa och växla mellan larmprofiler.",
+ "DISABLE_LOCATION_LABEL": "Plats",
+ "DISABLE_LOCATION_DESC": "Låt användare ange en hemplats.",
+ "DISABLE_NOMINATIM_LABEL": "Geokodning",
+ "DISABLE_NOMINATIM_DESC": "Tillåt Nominatim-adressökning för platsval.",
+ "DISABLE_GEOMAP_LABEL": "Kartvy",
+ "DISABLE_GEOMAP_DESC": "Visa den interaktiva geofence-kartan.",
+ "DISABLE_GEOMAP_SELECT_LABEL": "Områdesval på karta",
+ "DISABLE_GEOMAP_SELECT_DESC": "Låt användare välja områden genom att klicka på kartan.",
+ "DISABLE_USER_GEOFENCES_LABEL": "Egna geofences",
+ "DISABLE_USER_GEOFENCES_DESC": "Låt användare rita, importera och skicka in egna geofences. Befintliga geofences fortsätter att fungera.",
+ "ENABLE_TEMPLATES_LABEL": "Mallar",
"ENABLE_TEMPLATES_DESC": "Låt användare välja mallar för notifieringsmeddelanden.",
"ALLOWED_LANGUAGES_LABEL": "Tillåtna UI-språk",
"ALLOWED_LANGUAGES_DESC": "Kommaseparerade språkkoder som ska visas i språkväljaren (t.ex. \"en,de,fr,es\"). Lämna tomt för att visa alla 11 språk.",
@@ -1455,8 +1544,6 @@
"ENABLE_ROLES_DESC": "Tillåt endast användare med specifika Discord-roller att logga in. Kräver Bot Token och Guild ID.",
"ALLOWED_ROLE_IDS_LABEL": "Tillåtna roll-ID:n",
"ALLOWED_ROLE_IDS_DESC": "Kommaseparerade Discord-roll-ID:n som ger åtkomst (t.ex. \"123456789,987654321\"). Lämna tomt för att tillåta alla.",
- "ADMIN_ALLOWED_LANGUAGES_LABEL": "Tillåtna språk",
- "ADMIN_ALLOWED_LANGUAGES_DESC": "Kommaseparerad lista över språkkoder som användare kan välja (t.ex. \"en,de,fr\").",
"REGISTER_COMMAND_LABEL": "Registreringskommando",
"REGISTER_COMMAND_DESC": "Poracle-bot-kommando som användare kör för att registrera sig (t.ex. \"$!register\").",
"LOCATION_COMMAND_LABEL": "Platskommando",
@@ -1467,6 +1554,27 @@
"TELEGRAM_BOT_DESC": "Telegram-bot-användarnamn (utan @).",
"ENABLE_DISCORD_LABEL": "Aktivera Discord-inloggning",
"ENABLE_DISCORD_DESC": "Tillåt Discord-inloggning på denna webbplats. Kräver Discord Client ID och Client Secret i .env (serveromstart krävs efter .env-ändringar). Påverkar inte PoracleNG-bot-leverans.",
+ "ENABLE_OIDC_LABEL": "Aktivera extern SSO-inloggning",
+ "ENABLE_OIDC_DESC": "Tillåt inloggning via den konfigurerade externa OIDC/OAuth2-leverantören. Kräver OIDC_*-inställningar (leverantörs-URL:er, client ID och secret) i .env (serveromstart krävs efter .env-ändringar).",
+ "AUTH_MODE_OIDC": "SSO (OIDC)",
+ "AUTH_MODE_OIDC_DESC": "Alla användare omdirigeras till den externa SSO-leverantören. Lokal inloggning förbigås.",
+ "AUTH_MODE_SWITCH_CONFIRM": "Byt till SSO",
+ "AUTH_MODE_OIDC_CONFIRM_TITLE": "Byta till SSO-inloggning?",
+ "AUTH_MODE_OIDC_CONFIRM_MSG": "Efter att du sparat omdirigeras alla användare (inklusive administratörer) till {{provider}} för att logga in — den lokala Discord/Telegram-inloggningssidan förbigås. Om leverantören är onåbar kan du bli utelåst; återställ genom att sätta AUTH_FORCE_LOCAL=true i serverns miljö.",
+ "AUTH_OIDC_NOT_CONFIGURED": "SSO är otillgängligt tills OIDC-leverantören har konfigurerats i serverns miljö (OIDC_*-miljövariabler).",
+ "AUTH_OIDC_HIDES_LOCAL": "Discord och Telegram döljs medan SSO är det aktiva inloggningsläget.",
+ "AUTH_SLO_LABEL": "Enkel utloggning",
+ "AUTH_SLO_DESC": "När detta är aktiverat avslutar \"Logga ut överallt\" även leverantörens session (inte bara denna webbplats). Kräver leverantörens end-session-endpoint (OIDC_END_SESSION_URL).",
+ "AUTH_SLO_UNAVAILABLE": "Enkel utloggning är otillgänglig tills leverantörens end-session-endpoint har konfigurerats (miljövariabeln OIDC_END_SESSION_URL).",
+ "OIDC_SERVER_CONFIG": "Konfiguration av OIDC-leverantör",
+ "OIDC_PROVIDER_LABEL": "Leverantörsnamn",
+ "OIDC_AUTHORIZATION_URL_LABEL": "Authorization URL",
+ "OIDC_TOKEN_URL_LABEL": "Token URL",
+ "OIDC_USERINFO_URL_LABEL": "UserInfo URL",
+ "OIDC_CLIENT_ID_LABEL": "Client ID",
+ "OIDC_SCOPES_LABEL": "Scopes",
+ "OIDC_IDENTITY_CLAIM_LABEL": "Identitetsanspråk",
+ "OIDC_USE_PKCE_LABEL": "Använd PKCE",
"PROVIDER_URL_LABEL": "URL för kartrutor",
"PROVIDER_URL_DESC": "URL-mall för kartrute-leverantören (används för statiska kartor).",
"GANALYTICSID_LABEL": "Google Analytics-ID",
@@ -1498,7 +1606,15 @@
"DISCORD_ADMIN_IDS_LABEL": "Admin-ID:n",
"DISCORD_ADMIN_IDS_DESC": "Discord-användar-ID:n med admin-åtkomst (maskerad).",
"DISCORD_GEOFENCE_FORUM_LABEL": "Geofence-forumkanal",
- "DISCORD_GEOFENCE_FORUM_DESC": "Discord-forumkanal för geofence-inlämningstrådar."
+ "DISCORD_GEOFENCE_FORUM_DESC": "Discord-forumkanal för geofence-inlämningstrådar.",
+ "SEARCH_PLACEHOLDER": "Sök inställningar…",
+ "SEARCH_CLEAR": "Rensa sökning",
+ "UNSAVED_CHANGES": "{{count}} osparade",
+ "SAVE_CHANGES": "Spara ändringar",
+ "DISCARD_CHANGES": "Ångra",
+ "COLLAPSE_SECTION": "Fäll ihop sektion",
+ "EXPAND_SECTION": "Expandera sektion",
+ "SUMMARY_ENABLED": "{{count}} av {{total}} aktiverade"
},
"GEOFENCE_DETAIL": {
"NAME": "Namn",
@@ -1561,5 +1677,12 @@
"YOUR_LOCATION": "Din plats",
"SELECTED_COUNT": "{{count}} valda:",
"AREAS_SELECTED": "{{count}} område(n) valda"
+ },
+ "ALERT_DEFAULTS": {
+ "TITLE": "Standardinställningar för aviseringar",
+ "DESC": "Välj hur nya aviseringar levereras som standard. Du kan fortfarande ändra detta för varje avisering när du skapar den.",
+ "DEFAULT_DISTANCE": "Standardavstånd",
+ "DEFAULT_DISTANCE_HINT": "Används för att förifylla radien för nya avståndsbaserade aviseringar.",
+ "FOOTNOTE": "Gäller endast nyskapade aviseringar — befintliga ändras inte."
}
}
diff --git a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/environments/environment.development.ts b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/environments/environment.development.ts
index 2da6115c..d0a4da50 100644
--- a/Applications/Pgan.PoracleWebNet.App/ClientApp/src/environments/environment.development.ts
+++ b/Applications/Pgan.PoracleWebNet.App/ClientApp/src/environments/environment.development.ts
@@ -1,4 +1,8 @@
+// Dev server runs Angular at :4200 with a proxy (see proxy.conf.json) that
+// forwards /api/* and /auth/* to the local API on :8082. Empty `apiUrl` means
+// all HTTP calls become same-origin from the browser's view — identical to
+// the production single-port setup.
export const environment = {
- apiUrl: `http://${window.location.hostname}:5048`,
+ apiUrl: '',
production: false,
};
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 304c582c..ae9d5a33 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,56 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Added
+- **Generic external SSO / OIDC login provider** ([#327](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/327)): PoracleWeb can now delegate login to any external OAuth2/OpenID Connect provider, in addition to the built-in Discord and Telegram methods. This enables single sign-on — e.g. pointing PoracleWeb (`alerts.pogoalerts.net`) at the PogoAlerts OAuth2 server so a user who is already signed into the main site lands in PoracleWeb without re-authenticating — but it is fully **provider-agnostic**: any self-hoster can configure their own IdP. The implementation is a configurable twin of the existing Discord flow. Two new endpoints (`GET /api/auth/oidc/login` and `GET /api/auth/oidc/callback`) handle the authorization-code exchange with **PKCE** (state + verifier persisted in HttpOnly cookies, same CSRF protection as the Discord path), then read a configurable **identity claim** (default `discord_id`, falling back to the standard `sub`) from the provider's UserInfo response and look it up in the Poracle `human` table exactly as a direct Discord login would — so existing admin resolution (`GetRolesAsync`), Discord guild-role gating, and the per-user enable/disable all apply unchanged, and PoracleWeb still mints and validates **its own** JWT (no change to token issuance). Provider config (provider name, authorize/token/userinfo URLs, client id/secret, scopes, claim mapping, PKCE flag) comes from `OIDC_*` env vars / `appsettings` — the secret is never stored in the database — and `OIDC_ENABLED` is auto-inferred when the client id and three URLs are all present (same first-time-setup safeguard as Telegram). A separate `enable_oidc` site setting gives admins a runtime on/off toggle (Features → *External SSO* group on the admin settings page; carried by `SettingsMigrationService`), while admins can always log in even when it's disabled so they can re-enable it. The login page renders a "Sign in with {provider}" button (with the same disabled-by-admin hint pattern as Discord/Telegram) whenever the provider is configured, driven by a new `oidc` block on `GET /api/auth/providers`; a new `/auth/oidc/callback` route reuses the existing token-fragment callback handler. New `OIDC_*` keys documented in `.env.example`, new `AUTH.SIGN_IN_OIDC` / `AUTH.ERR_OIDC_*` and `ADMIN_SETTINGS.*_OIDC` / `GROUP_OIDC` i18n keys added to English (other locales fall back to English until translated). Backend tests cover the `providers` oidc block (configured / not-configured / admin-disabled) and the `/oidc/login` redirect (state + PKCE cookies, provider URL + params); frontend tests cover the OIDC button visibility and click delegation. Wiring ReactMap and the PogoAlerts main site to the same provider, and PogoAlerts-side cross-subdomain session cookies, are separate follow-up work.
+- **OIDC refresh-token consumption — silent session renewal + revocation propagation** (opt-in, provider-agnostic): building on the OIDC login above, PoracleWeb can now optionally consume the provider's **refresh token** instead of discarding it, so an SSO session renews silently in the background (no 24-hour hard re-login) and a disable/logout at the provider propagates to PoracleWeb within one short access-token lifetime. It is **off by default** (`OIDC_USE_REFRESH_TOKENS=false`) — existing deployments and providers that don't issue refresh tokens are completely unaffected (the login cleanly falls back to a standard full-lifetime session). The provider refresh token is brokered **entirely server-side**: it's encrypted at rest with DataProtection in a new `oidc_sessions` table (added via EF migration `AddOidcSessions`) and **never sent to the browser**; the browser instead holds an opaque PoracleWeb token in `localStorage` that keys a rotation **family**. A new `POST /api/auth/oidc/refresh` endpoint redeems the stored refresh token against the provider, **re-validates the user live** (existence, `enable_oidc` gate, role access, admin-disable) on every refresh, rotates both tokens, and family-revokes on replay/reuse or when the provider rejects the refresh (revocation propagation); `POST /api/auth/oidc/refresh/revoke` ends a session on logout, and an `OidcSessionCleanupService` reaps expired/stale rows. Refresh-backed OIDC sessions get a short **per-login** JWT (`OIDC_ACCESS_TOKEN_MINUTES`, default 30) while Discord/Telegram/local logins keep the 24-hour JWT — the lifetime override is scoped so non-refresh logins aren't shortened. The implementation is **fully OIDC-provider-agnostic**: `OIDC_OFFLINE_ACCESS_SCOPE` (default `offline_access`) is appended to the authorize request so standards-compliant providers issue a refresh token; `OIDC_TOKEN_AUTH_METHOD` supports both `client_secret_post` and `client_secret_basic`; non-rotating providers (no new refresh token on refresh) are handled by carrying the prior token forward; and nothing relies on discovery/JWKS/`id_token`. The frontend adds a single-flight `TokenStoreService` + an `oidcRefreshInterceptor` (proactive pre-expiry refresh and reactive 401-retry, with a null-refresh-token guard so every non-refresh login keeps the existing "401 → logout" path). Refresh on/off is controlled solely by the `OIDC_USE_REFRESH_TOKENS` env flag — there is intentionally **no** runtime admin toggle, since refresh is coupled to the per-login JWT lifetime (disabling it mid-session would strand already-issued short-lived tokens); its active state is surfaced read-only on `GET /api/auth/providers` (`oidc.refresh`) and `GET /api/settings/oidc-config`. New `OIDC_*` keys documented in `.env.example` with a per-provider config matrix (PogoAlerts, Keycloak, Authentik, Auth0, Google, Azure AD/Entra, Okta), and a full **OIDC Refresh Tokens** documentation page (configuration reference, five Mermaid flow diagrams, the provider matrix, and the security model) added to the docs site. Backend tests cover the session rotation/replay/cap/cleanup mechanics and the provider-agnostic client (auth method, optional/non-rotating refresh tokens); frontend tests cover the token store's single-flight refresh and the interceptor's proactive/reactive/loop-guard behavior.
+
+### Changed
+- **Localized the external SSO / OIDC strings** across all bundled locales. The SSO login feature added 30 i18n keys to English only, so every non-English locale fell back to English for the "Sign in with {provider}" button, the signed-out panel, the OIDC error messages, and the admin Authentication / External SSO settings group. These are now translated into Danish, German, Spanish, French, Italian, Dutch, Polish, Portuguese (PT & BR), and Swedish. Translation-only — no code or behavior change.
+- **Admin Server Settings page UX overhaul.** Adds a live **search/filter** (sticky bar, match highlighting, `/` or Ctrl/Cmd+K to focus), a **sticky save + discard bar** so saving is always reachable on the long page, **sign-in providers grouped under Authentication** (Telegram/Discord moved up), and **collapsible sections** (persisted) with per-section "unsaved" chips and state summaries (e.g. "7 of 9 enabled"). Headline fix: the alarm-type/feature toggles were a confusing **double negative** ("Disable X", ON = feature off) mixed with positive `enable_*` toggles; they are now **uniformly positive** (ON = enabled, labels are the feature name, descriptions are "Let users …"). The stored `disable_*` keys are **unchanged** — a presentation-only inversion — so backend feature-gating is unaffected. New UX i18n keys and the reframed positive labels/descriptions are translated across all 11 locales.
+
+## [2.11.1] - 2026-06-05
+
+### Fixed
+- **Base/regional-default Pokémon forms (e.g. Unova Stunfisk) were missing from the form picker** ([#323](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/323)): the *Form & Gender* form picker in the Pokémon add/edit dialogs is built from the WatWowMap masterfile in `MasterDataService.loadForms()`, which discarded every form named `Normal` (alongside the synthetic id-0 "any" pseudo-form). For most Pokémon that's harmless, but for a species with a regional variant the `Normal` entry **is** the original/base form (Stunfisk lists `Normal` id `2246` for Unova and `Galarian` id `2345`), so dropping it left only "All Forms" and "Galarian" — there was no way to alert on Unova Stunfisk alone (e.g. for PVP) without also catching Galarian. The loader now keeps all real forms (`form.id !== 0`, including `Normal`) and only drops a `Normal` form when it's a species' **lone** form — where the existing "All Forms" option already covers it — so base regional forms become selectable when a sibling variant exists, while species with just a base form stay uncluttered. Combined with the multi-select picker (#318), users can now target the base form, a regional variant, or both. Unit tests cover the keep-when-sibling and drop-when-lone cases.
+
+## [2.11.0] - 2026-06-05
+
+### Added
+- **Multi-select Pokémon forms in the alarm add dialog** ([#318](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/318)): the *Form & Gender* form picker in the Pokémon add dialog only let users pick **one** specific form or "All Forms", so tracking (e.g.) Meowth's Alola **and** Galarian forms while ignoring Kanto meant adding each alarm by hand. The picker is now a **multi-select** — selecting two forms creates two alarms, one per form. Because PoracleNG models `form` as a single integer per tracking entry (no array support on the wire), the dialog reuses its existing per-Pokémon fan-out (`forkJoin`) and now emits one `MonsterCreate` per **(Pokémon × selected form)** combination; the success snackbar reports the correct total. An empty selection means "all forms" (form `0`), matching the previous default — there's no separate "All Forms" option to mis-toggle, and a "Leave empty to match all forms" hint makes that explicit. No backend, mapping, DB, or PoracleNG change was needed: each form remains its own independent alarm with its own UID, so editing/deleting per-form afterward works through the normal list. Scope is the **add** dialog only — the edit dialog stays single-form, since splitting one existing alarm into several on edit is a different (create-plus-delete) operation. A new dedicated `forms` form control backs the multi-select, leaving the manual numeric form-id fallback (shown when masterfile form data is unavailable) on the original single-value `form` control. New `POKEMON.FORM_MULTI_HINT` i18n key added and translated across all 11 locales. Unit tests cover the fan-out, the empty=all-forms default, the numeric fallback, and the success-count snackbar.
+
+### Fixed
+- **Unable to create a private geofence when Koji has no region hierarchy** ([#314](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/314)): the "Name Your Geofence" dialog forced the user to pick a **region** before the Save button enabled, but the region list is derived entirely from Koji's parent→child geofence structure (`KojiService.GetRegionsAsync` returns only geofences that are referenced as a `parent` by another geofence). On a *flat* Koji project (no nesting — common in simpler/newer setups) the list is empty, so the dropdown showed only the hardcoded "All Regions" sentinel; selecting it left `selectedRegionId` null and the field blank, an inescapable dead end. Region is in fact only needed when an admin later **promotes** a geofence to a public Koji area — a private geofence is stored in PoracleWeb's DB and served via `/api/geofence-feed` **without** a group, so PoracleNG never uses it. Fixes:
+ - **Region is now optional at creation.** The draw dialog's validation no longer requires a region; a region-less geofence saves with an empty group / `parentId 0`. The "All Regions" sentinel now clears the selector (instead of rendering a blank chip), and **when Koji defines no regions the picker is hidden entirely** rather than showing an empty dropdown.
+ - **Admins set the region at approval time.** The geofence-approval dialog gained an optional region selector (defaulting to the submission's existing region, hidden when no regions exist); `AdminGeofenceController` / `IUserGeofenceService.ApproveSubmissionAsync` now accept an optional `parentId`/`groupName` override that is applied before promotion and persisted. This moves the region decision to the person who actually manages the Koji project, and leaves it untouched when omitted.
+ - **Koji `__parent: 0` no longer 500s.** Probing the live Koji API revealed that `save-koji` with `__parent: 0` returns **HTTP 500 `[GEOFENCE]: Does not exist`** (Koji tries to resolve a non-existent parent id 0) even though it persists the row — which would have made *every* region-less promotion throw at `EnsureSuccessStatusCode`. `KojiService.SaveGeofenceAsync` now sends `__parent: null` (Koji's native "no parent" representation, confirmed to return HTTP 200) whenever `parentId <= 0`. Backend (`KojiServiceTests`, controller + service region-override tests) and frontend (dialog optional-region, hidden-when-empty, approval region override) tests added.
+
+## [2.10.0] - 2026-06-03
+
+### Added
+- **Notification-language selector on the Areas & Location page** ([#310](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/310)): the `LanguageSelectorComponent` — the only path from the web app to a user's Poracle DM language (`human.Language`, which controls the language of alert text and Pokémon names) — was imported into `app.ts` and styled in `app.scss` but **never placed in any template**, so it was dead code with no way to reach it. Users who wanted German alerts had only the toolbar language menu, which calls `i18n.use()` and changes the **Angular UI translations**, not the bot's DM language. The selector is now rendered in a labelled "Notification language" section on the **Areas & Location** page (where the reporter looked), clearly distinguished from the toolbar display-language menu. Its language list — previously a stale hardcode of 18 languages (incl. ja/ko/zh/ru/no/fi/th/tr) that didn't match the app's supported set — now reuses `I18nService.allLanguages` (the 11 supported locales), so it can't drift again. The component seeds its value from the persisted `human.Language` via a new `GET /api/location/language` endpoint (and reconciles against the bot, which can change the language out-of-band) instead of trusting only `localStorage`, and shows success/failure feedback on save. The dead import and the now-orphaned `app-language-selector` responsive style were removed from the app shell. New `AREAS.NOTIFICATION_LANGUAGE` / `NOTIFICATION_LANGUAGE_DESC` / `SNACK_LANGUAGE_UPDATED` / `SNACK_LANGUAGE_FAILED` i18n keys added and translated across all 11 locales. Whether German **Pokémon names** actually render still depends on the Poracle server having German name/master data loaded for that language — PoracleWeb's responsibility ends at writing `human.Language` correctly. Service and component tests cover the new GET endpoint and the load/save/revert behavior.
+
+### Fixed
+- **Duplicate `allowed_languages` admin setting** ([#308](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/308)): the admin settings page rendered two separate rows that both wrote to the same `allowed_languages` key — "Allowed UI Languages" in the Features group and "Allowed Languages" in the Administration group. Because `admin-settings.component.ts` keys its value map by the setting `key`, the two rows collapsed onto a single entry: editing one visibly changed the other, and on save one could silently clobber the other with an empty value. Removed the redundant Administration-group row (and its now-unused `ADMIN_SETTINGS.ADMIN_ALLOWED_LANGUAGES_LABEL` / `ADMIN_ALLOWED_LANGUAGES_DESC` keys across all 11 locales), keeping the single Features-group "Allowed UI Languages" control whose description matches the actual behavior (filtering the UI language selector).
+
+## [2.9.0] - 2026-06-03
+
+### Added
+- **Quest summary delivery schedule management UI** ([#300](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/300), follow-up to [#292](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/292)): the per-alarm quest "Daily summary" toggle (shipped in #292/#295, sets `clean` bit 4) was **inert** — there was no way to tell PoracleNG *when* to deliver the summary, so buffered quests never fired. A new **Quest summary delivery** dialog (launched from the Quests page toolbar menu) lets users view, edit, clear, and force-deliver ("Send summary now") their summary schedule, wired to PoracleNG's `/api/summaries` endpoints. The schedule is a per-user `active_hours` array (`[{day,hours,mins}]`) — the same shape as a profile's active hours — so the dialog **reuses** the existing `ActiveHoursEditorDialogComponent` and `LocationWarningComponent` (the 0,0 → default-timezone hazard applies identically). Backend adds `IPoracleSummaryProxy`/`PoracleSummaryProxy` (mirrors `PoracleHumanProxy`; raw-JSON `active_hours` pass-through; `404 → null`; `503 → SummaryBackendUnavailableException`, treated as a transient backend fault, **not** "feature off") and a `SummaryScheduleController` whose every action derives the user id from the JWT (`this.UserId`) with **no `{userId}` route segment** (IDOR-safe), gated by `[RequireFeatureEnabled(disable_quests)]`, with the trigger rate-limited (`test-alert`, 5/60s) since it delivers a real DM. Capability comes from PoracleNG's `tracking.quest_summary_enabled` config flag (surfaced as `questSummaryEnabled` on `auth/me`, Golbat-style 200 boolean, `IMemoryCache` 5-min; defaults to **off** when the flag is absent so the UI is only shown when PoracleNG will actually buffer and deliver summaries — avoiding a dead-end — and off on fault) — the menu entry is hidden when off, with a `SUMMARY_DISABLED_HINT` on the quest dialogs. "Send summary now" notes that it only flushes quest matches PoracleNG has buffered since the last summary. `ProfileController.ValidateActiveHours` was extracted into a shared `ActiveHoursValidator` reused by both controllers. New `QUESTS.SUMMARY_SCHEDULE_*` i18n keys added and translated across all 11 locales. Backend (proxy, controller, capability service, re-pointed validator) and frontend (service, dialog) tests included.
+- **Admin toggle to disable user-submitted geofences** ([#297](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/297), from discussion [#214](https://github.com/PGAN-Dev/PoracleWeb.NET/discussions/214)): a new `disable_user_geofences` site setting (Features group on the admin settings page) lets operators turn off the custom/user-drawn geofence feature entirely. Reuses the existing `disable_*` feature-gate pattern: the "provide a geofence" endpoints on `UserGeofenceController` (create, submit-for-review, GeoJSON import) are gated with `[RequireFeatureEnabled(DisableFeatureKeys.UserGeofences)]` and a defense-in-depth `IFeatureGate.EnsureEnabledAsync` guard in `UserGeofenceService.CreateAsync` (which also covers import, since `GeoJsonService.ImportAsync` funnels through it) and `SubmitForReviewAsync`. On the frontend both the user-facing *My Geofences* item and the admin *User Geofences* review-queue item are hidden (`disableKey`, with `adminNavItems` now honouring the disable flag like the other nav groups), and the `/geofences` and `/admin/geofence-submissions` routes are guarded (`disabledFeatureGuard`), redirecting to the dashboard with the existing `ERROR.FEATURE_DISABLED` toast; the 403 interceptor handles direct API hits the same way. **Existing user geofences keep working** — they continue to be served by `/api/geofence-feed`, and the read/manage/delete endpoints plus the admin review backend stay ungated, so enabling the toggle hides the whole feature and freezes new submissions without breaking in-flight alerts. Carried by `SettingsMigrationService` (`CategoryMap` + `BooleanKeys`); new `ADMIN_SETTINGS.DISABLE_USER_GEOFENCES_*` label/description keys added and translated across all 11 locales. Admins are also blocked while the toggle is on (consistent with the alarm gates) and re-enable it from Settings.
+- **Configurable default delivery scope for new alerts** ([#298](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/298), [discussion #217](https://github.com/PGAN-Dev/PoracleWeb.NET/discussions/217)): new alarms have always opened pre-set to **Areas** (geofence-based, `distance = 0`); users who track by radius had to switch the location mode and re-type a distance on every single add. A new **Alert Defaults** entry in the user menu opens a dialog (cohesive with the existing distance-dialog — selectable Areas/Distance mode cards, a km input, and a live delivery preview) where a user picks whether new alerts default to **Areas** or **Distance** and pins a default radius (0.1–100 km, clamped). The preference is stored client-side in `localStorage` (`poracle-default-alert-mode` / `poracle-default-alert-distance-km`), mirroring the theme/accent/language pattern, and is read by a new `AlertDefaultsService`. All nine add-alarm dialogs (Pokémon, Raids/Eggs, Quests, Invasions, Lures, Nests, Gyms, Fort Changes, Max Battles) **and the quick-pick apply dialog** now seed their `distanceMode`/`distanceKm` form controls from the service instead of the hard-coded `areas`/`1 km`. Applies to **newly created** alerts only — existing alerts and the per-alert override in each dialog are unchanged. New `ALERT_DEFAULTS.*` and `MENU.ALERT_DEFAULTS` i18n keys added and translated across all 11 locales. Unit tests cover the service (read/clamp/persist) and the dialog (init-from-pref, save, clamp).
+- **Discord server/category notes on the admin user list** ([#265](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/265)): channel-type users in the admin user list now show the Poracle `notes` value (which PoracleJS/PoracleNG can be configured to auto-fill with the Discord guild name and channel category) as a muted second line under the name, with a tooltip showing the full text. This disambiguates channels that share the same name across different servers. The `notes` column already existed on the `humans` table but was dropped at every layer — it's now surfaced through the existing PoracleNG human JSON (`HumanService.DeserializeHuman`) for single-user reads and through the existing admin bulk read (no new database queries, no live Discord API calls), mapped on the `Human` model and `EntityMappingExtensions`, and projected by both `GET /api/admin/users` and `GET /api/admin/users/by-id`. The admin search box now also matches against notes, so admins can filter channels by server name.
+- **Lure edit-in-place and quest daily-summary delivery modes** ([#292](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/292)): surfaces the two remaining meaningful `clean` bitmask bits as user controls (building on the PR1 preservation fix). Lure add/edit dialogs gain an **"Edit message in place"** toggle (sets `clean` bit 2) so a changed lure updates the existing Discord message instead of sending a new one; quest add/edit dialogs gain a **"Daily summary"** toggle (sets bit 4) to collect matching quests into one summary message (requires a configured summary schedule on the bot). Both default off, compose via the `CleanFlags`/`clean-flags` helper so they preserve the auto-delete and any sibling bit, and surface on cards as status badges (edit = `--mat-sys-secondary`, summary = `--mat-sys-tertiary`, mirroring the `.clean-tag` / RSVP-pill pattern). New `LURES.EDIT_*` and `QUESTS.SUMMARY_*` i18n keys added and translated across all 11 locales. Only lure (edit) and quest (summary) get new controls — they're the only types whose PoracleNG processor reads the respective bit, so no dead toggles. Dialog specs cover init-from-bit and save-composes-while-preserving.
+- **RSVP notification mode for raid and egg alarms** ([#233](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/233)): the `rsvpChanges` field is now selectable end-to-end via a three-option mode toggle in the raid/egg add and edit dialogs — "Matches only" (`0`, default), "Matches + RSVP updates" (`1`), or "RSVP updates only" (`2`). Surfaced through a new self-contained `` component, with a matching `` badge on raid/egg cards when the mode is non-default. The "RSVP updates only" option warns that the alarm will be silenced without an RSVP-emitting scanner. The server-side `[Range(0, 1)]` on `RsvpChanges` in `RaidCreate` / `RaidUpdate` / `EggCreate` / `EggUpdate` was rejecting the new mode `2` with HTTP 400 before it could reach PoracleNG — widened to `[Range(0, 2)]`. Adds Polish, Swedish, and Danish RSVP translations (previously English fallback). The field, mapping (`AlarmMappingExtensions`), and dialog form binding already existed on `main`; this wires the UI control and the third mode value. Selecting an RSVP mode (`1`/`2`) now also sets PoracleNG's edit-in-place bit (`clean` bit 2) so RSVP count changes **edit the existing alert in place** instead of sending a fresh message each time — matching PoracleNG's intended delivery for its first edit-tracking consumer. The card auto-delete badge now masks `clean` bit 1 so it still shows when the edit bit is also set. ([#237](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/237)): the Poracle wire field `pvp_ranking_cap` is now surfaced end-to-end. When Poracle's config advertises more than one cap via `pvp.levelCaps`, the Pokemon add/edit dialogs show a cap selector (`All` / `L40` / `L50` / `L51`) and new alarms pre-fill from `tracking.defaultUserTrackingLevelCap`. Previously every PvP alarm was tagged "all caps" server-side, which flooded new users with L51 noise when admins only cared about L50. Matches the PoracleWeb PHP passthrough pattern — no new admin setting required; the default lives in Poracle config where it already belongs. The cap field is wired through `Monster` / `MonsterCreate` / `MonsterUpdate` / `MonsterEntity` / `AlarmMappingExtensions`, `PoracleConfig` (`PvpCaps`, `DefaultPvpCap`), a small `PoracleConfigService` (Angular) that caches `/api/config`, and `QuickPickService.SafeMonsterFilterKeys` so quick-pick definitions can pin a cap too. A hint — italic "Default · from Poracle config" — appears under the toggle group on add-dialog until the user touches it; the hint is hidden once the user makes a selection. The picker is hidden entirely when Poracle offers only one cap.
+
+### Fixed
+- **Alarm `clean` bitmask was clobbered and validation-capped** ([#292](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/292)): PoracleNG reads `clean` as a 3-bit bitmask (bit 1 = auto-delete, bit 2 = edit-in-place, bit 4 = summary), but PoracleWeb treated it as a boolean for 8 of 10 alarm types. Two harms fixed: (1) the `[Range(0, 1)]` on `Clean` across 16 `Create`/`Update` models 400'd any bot-set value > 1 on a round-trip — widened to `[Range(0, 7)]` (Raid/Egg were already done by #233); (2) every dialog/card/service rebuilt `clean` from a boolean (`clean === 1` / `clean ? 1 : 0`), silently zeroing bits 2/4 a user never saw — worst at `CleaningService` which overwrote the whole value and mis-reported multi-bit alarms as "not clean". Added a `CleanFlags` helper (C#) + `clean-flags.ts` twin with a `Preserve(existing, mask, changes)` read-modify-write, and made every clean read/write across all 10 alarm types, the cleaning service, the quick-pick apply path, and the profile overview bit-aware so bot-set edit/summary bits survive a web edit. Also closes a latent gap where the raid/egg RSVP save dropped bit 4. This is the invisible correctness fix; the user-facing lure edit-in-place and quest summary controls follow in a separate change.
+- **Docker image build failed at `npm ci`**: the `Dockerfile`'s Angular stage uses `node:22-alpine`, which bundles npm 10.9.x. That npm rejects the npm-11-generated `package-lock.json` with `EUSAGE` (it strictly requires the nested `chokidar`/`readdirp` optional-peer entries that npm 11 prunes) — the same failure the frontend CI job hit and fixed by pinning npm 11. The Dockerfile never got the same treatment, so `docker build` / `docker compose up --build` failed for everyone building from source. Added `RUN npm install -g npm@11` before `npm ci` in the `angular-build` stage so the in-container install resolution matches the committed lockfile.
+- **Gym search failed with a MariaDB SQL syntax error** ([#260](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/260)): the `LikeEscape` helper added in #232 used `\` as the LIKE-escape character, and `ScannerService.SearchGymsAsync` passed `\` to `EF.Functions.Like(name, pattern, "\\")`. MariaDB's default mode (`NO_BACKSLASH_ESCAPES=OFF`) treats `\` as a string-literal escape too, so any escaped backslash in the pattern (which `LikeEscape` itself produced for user-supplied backslashes) left an unbalanced quote and broke the query with `near ''\')`. Switched the escape character to `|` (added `LikeEscape.EscapeChar` constant) — it has no special meaning in MariaDB string literals so the LIKE pattern can no longer interact with quote escaping. Tests updated to match the new escape sequences.
+- **Raid/Egg level selector hardcoded to 1–6** ([#259](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/259)): the raid/egg add dialog's three level-pickers (raid checkboxes, egg checkboxes, boss-level dropdown) were all driven by a hardcoded `levels = [1, 2, 3, 4, 5, 6]` array, even though PoracleNG accepts arbitrary positive integers and Pokémon GO actually defines 19 named raid types in the WatWowMap masterfile. Replaced the three sites with a new `` shared component (Material 3 chip listbox with `+ Add` and a "More raid types…" overflow menu) backed by a new `RaidLevelService` that fetches the canonical list from `GET /api/masterdata/raid-levels` on app load, with a baked-in fallback so the UI always works offline. Correctness: level 7 is **Mega Legendary Raid** (not "Elite" as the prior UI labeled it); Elite Raid is at level 9. All 19 masterfile-defined raid types are now surfaced (1–5 Star, Mega, Mega Legendary, Ultra Beast, Elite, Primal, 1–5 Shadow, 4–5 Super Mega, Coordinated 1–2). New API endpoint: `GET /api/masterdata/raid-levels` returns the canonical list with categories and English singular/plural names; future work can swap the baked-in source for a live WatWowMap masterfile fetch without changing the wire contract. Per-type custom palette (`raid`/`egg`/`boss`) backed by separate localStorage slots so adding a custom level on one picker doesn't leak into the others. Egg picker only surfaces star tiers (1–5) since Pokémon GO has no Mega/Shadow/Primal/Coordinated eggs; raid + boss pickers get the full list. Boss tab now defaults to the canonical `9000` "any" sentinel (was `0`). Server-side `[Range(0, 10)]` on `RaidCreate.Level`, `RaidUpdate.Level`, `EggCreate.Level`, `EggUpdate.Level` was rejecting custom integers (8+) and the 9000 wildcard with HTTP 400 before they could reach PoracleNG — relaxed to `[Range(0, int.MaxValue)]` matching PoracleNG's actual range. Card star icons capped to the literal 1–5 "N Star Raid" tier (was 1–7, rendering ~23 stars for custom-level alarms). Edit dialog adopts the same label resolver as the cards (an alarm at level 7 reads "Mega Legendary Raid" in both card and edit dialog, not "Level 7"). New i18n keys `RAIDS.LEVEL.RAID_1`–`RAID_19` (singular + `_PLURAL` variants) added to all 11 locales with English placeholders; volunteers can localize in a follow-up per discussion #211. Existing alarms saved with `level: 0` continue to render and edit fine; new alarms use the canonical sentinels.
+- **Dependabot auto-merge workflow never fired on PRs**: `auto-merge-deps.yml` listed both `pull_request_target` and `push` as triggers, but in practice the workflow only ever ran for `push` events — every PR-event run for the last 100+ workflow runs was a `push` event, none were `pull_request_target`. Result: Dependabot PRs were never auto-approved (each one needed manual approval), and every push recorded a `failure` conclusion because the job's `if: github.event_name == 'pull_request_target'` gate skipped all steps. Removed the `push` trigger (matching `pr-labeler.yml`, which fires correctly with `pull_request_target` alone), dropped the job-level `if:`, and added a sentinel "Workflow ran" first step so non-Dependabot PRs record as success rather than zero-step failure. Follow-up to #231: that fix moved the gate to job level on the assumption GitHub would record skipped runs as success, but it records 0-job runs as failure regardless.
+- **Frontend CI `npm ci` failures on Dependabot PRs**: CI used Node 22's bundled npm 10.9.7, which strictly requires nested `chokidar@4.0.3` / `readdirp@4.1.2` lockfile entries that `@angular-devkit/*` packages declare as optional peers. Dependabot regenerates `package-lock.json` with a newer npm that prunes those entries, producing lockfiles npm 10.9.7's `npm ci` rejected with `EUSAGE`. Pinned npm 11 in the `frontend` CI job so the install resolution matches what Dependabot produces. Affects PRs #248, #250, #256, #261, #262.
+
### Changed
- **Scanner types renamed from `Rdm*` to generic `Scanner*`** ([#232](https://github.com/PGAN-Dev/PoracleWeb.NET/issues/232)): the scanner DB context and entities were named `RdmScannerContext` / `Rdm{Gym,Pokestop,Station,Weather}Entity` / `RdmScannerService`, but the schema is backend-agnostic. Renamed to `ScannerDbContext` / `Scanner*Entity` / `ScannerService` and updated example connection strings and prose to reference **Golbat** (the currently supported scanner backend). No behavior change; `IScannerService` interface unchanged; no migrations or `[Table]` mappings affected. Impacts only consumers that reference the implementation types directly — standard DI registration uses the `IScannerService` interface and is unaffected.
- `IScannerService.PointInPolygon` (static) and `ScannerService.EscapeLikePattern` (static) were moved to dedicated `GeometryHelpers` and `LikeEscape` utility classes in `Core.Services`. The interface no longer carries unrelated geometry helpers; the LIKE-escape helper is reusable by any future repository that needs dialect-safe wildcard escaping.
@@ -543,38 +593,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Rate limiting (per-IP) on auth endpoints
- Docker deployment with Watchtower auto-updates
-[Unreleased]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.8.0...HEAD
-[2.8.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.6.0...v2.8.0
+[Unreleased]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.11.1...HEAD
+[2.11.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.11.0...v2.11.1
+[2.11.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.10.0...v2.11.0
+[2.10.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.9.0...v2.10.0
+[2.9.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.8.0...v2.9.0
+[2.8.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.7.0...v2.8.0
[2.7.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.6.0...v2.7.0
-[2.6.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.4.1...v2.6.0
-[2.5.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.4.0...v2.5.0
-[2.4.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.3.0...v2.4.1
+[2.6.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.5.0...v2.6.0
+[2.5.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.4.1...v2.5.0
+[2.4.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.4.0...v2.4.1
[2.4.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.3.0...v2.4.0
[2.3.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.2.0...v2.3.0
-[2.3.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.2.0...v2.3.0
[2.2.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.3...v2.2.0
[2.1.3]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.2...v2.1.3
-[2.1.3]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.2...v2.1.3
[2.1.2]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.1...v2.1.2
-[2.1.2]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.1...v2.1.2
-[2.1.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.0...v2.1.1
[2.1.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.1.0...v2.1.1
[2.1.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v2.0.0...v2.1.0
[2.0.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.3.1...v2.0.0
[1.3.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.3.0...v1.3.1
-[1.3.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.1.2...v1.3.0
-[1.2.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.1.1...v1.2.0
-[1.1.2]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.1.0...v1.1.2
-[1.1.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.0.2...v1.1.1
+[1.3.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.2.0...v1.3.0
+[1.2.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.1.2...v1.2.0
+[1.1.2]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.1.1...v1.1.2
+[1.1.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.1.0...v1.1.1
[1.1.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.0.2...v1.1.0
[1.0.2]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v1.0.0...v1.0.1
[1.0.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.4...v1.0.0
[0.6.4]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.3...v0.6.4
-[0.6.3]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.1...v0.6.3
+[0.6.3]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.2...v0.6.3
[0.6.2]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.1...v0.6.2
[0.6.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.0...v0.6.1
-[0.6.1]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.6.0...v0.6.1
[0.6.0]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.5.5...v0.6.0
[0.5.5]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.5.4...v0.5.5
[0.5.4]: https://github.com/PGAN-Dev/PoracleWeb.NET/compare/v0.5.3...v0.5.4
diff --git a/CLAUDE.md b/CLAUDE.md
index 67bff09e..20bb5806 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -253,6 +253,7 @@ The `disable_mons` / `disable_raids` / `disable_quests` / `disable_invasions` /
- `ActiveHoursEditorDialogComponent` is a shared dialog for editing profile schedule rules with day/time pickers and a weekly preview grid.
- `ActiveHoursChipComponent` renders compact amber schedule pills summarizing active hours on profile cards.
- `LocationWarningComponent` displays an inline warning when a profile has active hours but missing coordinates.
+- `AlertDefaultsService` (`core/services/alert-defaults.service.ts`) persists the user's preferred default delivery scope for **new** alarms -- mode (`areas`/`distance`) and default radius (km, clamped 0.1-100) -- to `localStorage` (`poracle-default-alert-mode` / `poracle-default-alert-distance-km`), mirroring the theme/accent/language pattern. All nine add-alarm dialogs and the quick-pick apply dialog seed their `distanceMode`/`distanceKm` form controls from it; the `AlertDefaultsDialogComponent` (user menu -> Alert Defaults) edits it. Client-side only -- no backend/API change; existing alarms are unaffected.
### UI Patterns
- **Alarm lists**: Card grid with filter pills showing IV/CP/Level/PVP/Gender at a glance. Test button in card actions sends a sample notification via PoracleNG.
@@ -330,6 +331,9 @@ On first startup after upgrade, the `SettingsMigrationStartupService` automatica
### Gym ID NULL vs Empty String
The `gym_id` column in Poracle alarm tables (gym, raid, egg) is a `NOT NULL` string that defaults to `""` (empty string) meaning "any gym". PoracleNG handles the null-to-empty normalization on its side. The `GymPickerComponent` emits `null` when cleared and the gym's `id` string when selected.
+### Clean Field Bitmask
+The alarm `clean` field is a **3-bit bitmask** in PoracleNG, not a boolean: bit 1 = auto-delete, bit 2 = edit-in-place, bit 4 = summary (`db.IsClean/IsEdit/IsSummary` in PoracleNG; quest summary is gated by `summary_schedules`). Use `CleanFlags` (`Core.Models/CleanFlags.cs`) and the frontend twin `shared/utils/clean-flags.ts` (`AUTO_DELETE`/`EDIT`/`SUMMARY`, `isAutoDelete/isEdit/isSummary`, `compose`, `preserve(existing, mask, changes)`) for all reads/writes so bits set elsewhere (e.g. via the bot) survive a web edit. Models cap `Clean` at `[Range(0, 7)]`. UI controls exist only where PoracleNG acts on the bit: auto-delete (all types), edit-in-place (lures + raids/eggs via RSVP `rsvpChanges`), and daily summary (quests). **Angular templates can't parse bitwise `&`** — gate card badges via a component method (e.g. `isAutoDelete(clean)`), not inline `clean & 1`. See #292.
+
### Monster Filter Defaults
PoracleNG applies `cleanRow` defaults (template, PVP ranking, size, max values, etc.) on every create/update, so PoracleWeb no longer needs to maintain its own set of `*Create` model defaults for alarm filter fields. The `*Create` models still exist for DTO mapping (via `AlarmMappingExtensions.To*()` methods) but their field defaults are no longer critical -- PoracleNG is the authoritative source for filter defaults.
diff --git a/Core/Pgan.PoracleWebNet.Core.Abstractions/Repositories/IOidcSessionRepository.cs b/Core/Pgan.PoracleWebNet.Core.Abstractions/Repositories/IOidcSessionRepository.cs
new file mode 100644
index 00000000..c388ffb9
--- /dev/null
+++ b/Core/Pgan.PoracleWebNet.Core.Abstractions/Repositories/IOidcSessionRepository.cs
@@ -0,0 +1,33 @@
+using Pgan.PoracleWebNet.Core.Models;
+
+namespace Pgan.PoracleWebNet.Core.Abstractions.Repositories;
+
+///
+/// Persistence for server-side OIDC refresh sessions (rotation families). All bulk revoke/cleanup
+/// methods commit immediately via EF Core's set-based ExecuteUpdateAsync/ExecuteDeleteAsync.
+///
+public interface IOidcSessionRepository
+{
+ /// Loads a session by the SHA-256 hash of the presented opaque token (no tracking).
+ public Task GetByHashAsync(string sessionTokenHash);
+
+ /// Inserts a new session row (issuance or rotation successor).
+ public Task AddAsync(OidcSession session);
+
+ ///
+ /// Atomic rotation guard: revokes the presented row only if it is currently active
+ /// (not revoked, not expired), stamping rotation + the successor hash. Returns the
+ /// number of rows affected — exactly 1 on success, 0 if it was already rotated/expired
+ /// (which the caller classifies as replay/expiry).
+ ///
+ public Task TryRevokeForRotationAsync(string sessionTokenHash, string newHash);
+
+ /// Revokes every still-active row in a family (replay/logout/cap/provider revoke).
+ public Task RevokeFamilyAsync(string familyId, string reason);
+
+ /// Revokes every still-active session for a user (admin disable / logout-everywhere).
+ public Task RevokeAllForUserAsync(string userId, string reason);
+
+ /// Set-based delete of expired rows and revoked rows older than the retention window.
+ public Task DeleteExpiredAndStaleAsync(TimeSpan revokedRetention);
+}
diff --git a/Core/Pgan.PoracleWebNet.Core.Abstractions/Services/IPoracleApiProxy.cs b/Core/Pgan.PoracleWebNet.Core.Abstractions/Services/IPoracleApiProxy.cs
index 37a4839e..dde9a710 100644
--- a/Core/Pgan.PoracleWebNet.Core.Abstractions/Services/IPoracleApiProxy.cs
+++ b/Core/Pgan.PoracleWebNet.Core.Abstractions/Services/IPoracleApiProxy.cs
@@ -4,18 +4,19 @@ namespace Pgan.PoracleWebNet.Core.Abstractions.Services;
public interface IPoracleApiProxy
{
- public Task GetConfigAsync();
- public Task GetAreasAsync(string userId);
- public Task GetTemplatesAsync();
- public Task GetAdminRolesAsync(string userId);
- public Task GetGruntsAsync();
- public Task GetGeofenceAsync();
- public Task GetAreasWithGroupsAsync(string userId);
- public Task GetAreaMapUrlAsync(string areaName);
- public Task