Files
13303b247e v0.3.9 milestone (#283)
* Run the end-to-end suite on pull requests into milestone and wip branches

A release's work is now collected on a milestone branch (milestone/v0.4.0)
before it reaches main, and the suite only ran on pull requests into main,
so nothing proposed for the milestone was tested. `milestone/**` joins
`main`, and `wip/**` comes along from wip/28, where it already runs the
suite on the phases of #28 — the same block on both, so they merge
without a conflict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit d009ff72ad)

* linked-issue: read the description of a pull request into a milestone branch (#254)

GitHub links an issue from "Closes #N" only in a pull request into the
default branch. Into milestone/v0.3.8 or a wip/ branch the closing
references stay empty, so the check failed on every such pull request
however its description named the issue (#252 was the first). For a pull
request into another branch, the description is now read for the same
keywords GitHub accepts.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* The release pull request is the suite run behind a tag (#252)

Releasing asked for the E2E workflow to be started by hand on main before
a tag. Since main became protected, the Release vX.Y.Z pull request cannot
merge until that workflow is green on it, and its commit is what is tagged,
so a manual run only ran the same jobs twice. Releasing now says so, and to
update the branch if main moved after its checks ran, since the protection
does not ask for up-to-date branches.

The paragraph in CONTRIBUTING and the header of e2e.yml that said main is
not verified commit by commit describe main before it was protected; both
now describe it as it is.

Closes #251

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Calendar on a phone: a readable month, a toolbar and top bar that fit, a live now line (#256)

The month chip is its title first, on up to two lines, then its time range
and place; a narrower day drops the end and the place for a third line of
title, long words are hyphenated, and an unanswered invitation has a
dashed bar. Below 39rem, where a day is bars, the grid shrinks and the
chosen day is listed in full under it: today at first, any tapped day
after, with a + for that day that the toolbar's + follows too. On a wider
touch screen the first tap opens a day's card and the second its entry
(calendar--month-tap, and a day-open: variant that the hover and the tap
share).

The calendar toolbar fits below 37rem with icons, a short date label and
smaller buttons, and under 22rem today's date in a box for Today. English
writes a same-month week as "Oct 20-26" (range_short_month). The top bar
tightens below 640px and moves Sync now, What's new and Send feedback into
the user menu. Dialogs are the whole screen below 768px, as compose is.

calendar--now moves the now line every minute on the view's clock and
redraws a view that shows the old day or the new one when the date
changes, which also moves the month's circle on today.

And a + on a day that has gone opened the editor on today:
DefaultEventStart::onDay pulled any past day to the next hour. A past day
now keeps its date.

Closes #253

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Close an issue when its pull request is merged into a milestone branch (#260)

GitHub acts on "Closes #N" only for merges into the default branch, so
issues fixed on a milestone branch stayed open until the release reached
main. A workflow on merged pull requests into milestone/** now closes the
issues the description names, with a comment linking the pull request.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Preview the reply, not the quote, and send replies with their quote visible (#258)

The list preview flattened the whole body and skipped short blocks to find
the first long one, so a one-line reply previewed as its attribution line or
the quoted mail. The quoted history (same seam as the reading view's "···")
and a "-- " signature are cut off first now, in HTML and plain text, and the
chrome skip only applies to bulk mail. The JMAP preview uses the same code.

The composer folded the quote with an inline display: none and its clean-up
removed only the toggle, so replies went out with an invisible quote. The
fold is removed in the editor and again on the server, and the reading view
reveals a folded quote in mail already received.

Closes #257

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Move a thread's unread count when JMAP marks a message read or unread (#267)

EmailPatchApplier wrote seenAt for $seen and left MessageThread::$unreadCount alone, so the web list (which draws bold from that counter) disagreed with the phone app. $seen now goes through ThreadStatusUpdater::markRead(), the web UI's own path, and markRead() counts the whole thread rather than the messages passed in.

Closes #266

Co-authored-by: Philippe Delodder <7259755+phdelodder@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Leave a message that is already in the destination folder where it is (#270)

Trashing a conversation with a message already in the bin queued that message as a move from Trash into Trash. webklex's move() then left the connection in EXAMINE and the server refused it ("NO Not permitted in EXAMINE state"), and the row had already lost its UID. ApplyImapFlagsHandler no longer sends a move into the folder a message is in (and gives the row its UID back), and ThreadStatusUpdater's trash(), archive() and restore() leave such messages out of the move.

Closes #269

Co-authored-by: Philippe Delodder <7259755+phdelodder@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Hide a conversation from the lists only when all of it is in the bin (#272)

A thread's labels are the union of its messages', so one deleted message put Trash on the thread and took the whole conversation out of the Inbox, its tab, label lists, All Mail, Unread, the badges and search, along with any reply threaded into it afterwards. The bin rule is now "carries Trash and has no message outside it", written once (binnedThreads()) for every list and badge and spelled out the same way in the search SQL. Option (b) of the issue.

Closes #268

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Let a long message scroll in the expanded compose window (#273)

expandedValueChanged() used closest('div') to reach the editor's wrapper, but closest() starts at the element itself and the editor is a div, so the wrapper never became a flex container and the editor stayed 170px tall, clipped by [contain:paint]. The wrapper is now the flex column and the editor grows (1 0 auto) to fill the window or its content; the plain-text field fills the expanded window too.

Closes #262

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Write each changelog entry as a file of its own, collected at release (#275)

Every pull request added its paragraph under ## Unreleased in CHANGELOG.md at the same place, so the second of any two conflicted with the first once it merged, and each conflict fix re-ran the whole E2E suite. A pull request now adds changelog.d/<issue>-<words>.md; bin/changelog-release.sh, run in the Release vX.Y.Z pull request, collects the fragments (highlights first) and anything still under ## Unreleased into the release's section and deletes them. CHANGELOG.md stays the one file What's new, bin/release-notes.sh and GitHub read.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Say which step failed when notifications can't be turned on (#278)

Every failure in the enable path (registering the service worker, the
browser's push subscription, the server's answer) ended in the same
"Something went wrong" and the exception was dropped, so a report from a
Pixel 8 could not say which. The pane now names the step and the
DOMException name or HTTP status, and logs the exception to the console.

Closes #277

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Contacts: one address book, with Google, Outlook, Nextcloud and CardDAV contacts in it (#282)

A contacts page and pane for plMail's own contacts and the ones on a server:
Google and Outlook on the mail account's own sign-in, Nextcloud through the
Nextcloud connection, any CardDAV server through Settings -> Contacts. Every
field a phone keeps, the photo included, syncs both ways. Duplicates merge
with 90 days to undo; vCard and CSV import and export; contacts suggested
while composing; JMAP Contact/get, /query and /set. Nextcloud calendars come
with the Nextcloud connection too.

Replaces #237 and #109 by @jo2904 and #244 by @DanversKara.

Closes #157
Closes #236

Co-authored-by: jo2904 <jo2904@users.noreply.github.com>
Co-authored-by: DanversKara <DanversKara@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Install APCu and Xdebug with PIE instead of from PECL (#286)

PECL is deprecated in favour of PIE and was down for most of an evening on 2026-10-21, failing every image build. PIE 1.5.2 now installs APCu (and Xdebug in the dev image) from the extensions' own releases; it is mounted for that one step and not left in the image. Nothing changes at runtime.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Keep contact photos where the web container can serve them (#287)

Contact photos were stored in var/contacts, outside the volumes the web and worker containers share, so synced photos answered 404. They now live under APP_STORAGE_DIR/uploads/contacts; a migration clears the lost paths and has synced books read again so the photos come back.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Match a contact's email addresses in any case (#288)

Addresses are stored lower-cased but were matched as the provider spelled them, so a pull removed and re-inserted the same address and broke the unique key (prod sync failure). They are now matched in their stored form.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Open a contact's reference email in the mail pane (#294)

A click on one of a contact's reference emails in the docked contacts
pane was a Turbo visit inside the contacts frame, which blanked the mail
pane. The click is now offered to the mail pane as a mail-pane:open
event; the pane opens the message beside the contact. Without a mail
pane (the full contacts page) it stays an ordinary visit.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Open mail beside the full Contacts page without a reload (#297)

The full Contacts page was a page of its own, so a reference email
clicked there was a visit: the contact was gone, and on a notebook the
mailbox came back on the calendar it remembered.

The full page is now the mailbox with data-contacts-full on the shell:
the mail column put away and the contacts dock given the row, with the
page's own content in the dock's frame. Opening a message from it loads
the message into the existing mail pane, then contacts--pane#reveal
drops the state in a view transition: the mail slides in from the left
and the dock narrows to its width, the same DOM throughout. On a
notebook the calendar gives way; on a wide screen it stays.

The reference links lose data-turbo-frame="_top", which made ui--split
stash a calendar position for a visit that never came.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Preview image and video attachments on click, like PDFs (#295) (#298)

Clicking an image or video attachment chip opens a viewer in the modal
instead of downloading. Previewable chips (PDF included) get a download
half on the right. Images load from the existing attachment route; videos
from a new /mail/attachment/{id}/video route that serves a fixed video
type inline under the sandbox CSP and answers Range requests.

Closes #295

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Erase a message's parts with it, and delete mail one way (#300)

MessageEraser loaded a message's parts to delete their files, then removed
only the message. After the delete Doctrine forgot the message but kept the
parts managed, so the next flush in the same unit of work failed with "a new
entity was found through the relationship MessagePart#message". Every sync
that removed server-deleted mail with an attachment failed that way.

The eraser now removes the parts, removes a thread it empties (announced to
JMAP as destroyed), and logs file-delete failures instead of keeping the row.
MessagePurger hands its local delete to the eraser, so "delete forever" gains
the thread-label re-sync it lacked. ImapAccountSyncer clears an entity manager
a failed folder left open, so one folder's refused flush no longer fails the
rest.

Closes #299

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Rework the contact editor: quick add, paste details and Improve with AI (#305) (#306)

New contacts start in quick add: paste a name, signature, address line or
vCard and the details it finds are listed, each with a one-click type. The
editor shows the name as one field whose parts fill themselves (titles and
degrees included), rows that appear as you type, Paste details for existing
contacts and a Save to picker. Contact help is a new AI feature, off by
default, that rereads pasted text and suggests updates from the signature
of a contact's newest mail. Phones are read with libphonenumber.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Keep spam off the radar and out of search; add a Not spam button (#308)

Cards read out of mail in Spam are left off the Happening Soon panel and
the mailbox strip (read-time filter, so moving the mail out brings them
back), and a spam conversation no longer shows its cards above the
message. The bin keeps its cards. Search and the type-ahead leave Spam
out unless asked with in:spam, as they already did for the bin. A spam
conversation's toolbar gets a Not spam button that moves it to the inbox.

Closes #304

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Add to contacts asks new or existing; contacts button gets the calendar's three positions (#312)

Closes #309
Closes #311

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Show the pictures a review request hid, dropped or never asked for (#274)

* Show the pictures a review request hid, dropped or never asked for

A BAUHAUS review request, sent through Bazaarvoice, showed neither its
logo nor its product photos, with images allowed. The image proxy was
fine; three steps around it were not.

- The logo is linked as http://. The sanitizer keeps http sources and
  leaves them to render time, the fetcher only connects over TLS, and
  nothing in between upgraded the URL, so every http image became the
  placeholder. RemoteContentBlocker now signs the https:// form. The
  fetcher's own rules also say in the log which one refused a target;
  until now that refusal was the one silent path.
- The first product card sits inside a <form>, and dropElement('form')
  took the photo, the name and the star links with it. The form is
  unwrapped now; textarea and select still go with their content.
- Each card is class="d" style="display:none", switched on with
  .d {display:block !important}. CssToInlineStyles keeps an inline
  property whatever the rule says, so the card stayed hidden next to its
  Outlook twin. Html5CssInliner now lets a stylesheet !important beat a
  plain inline style, and matches selectors against forms as the divs
  the reader will see, so `form .a` rules take the sender's fallback
  for clients without forms.

  app:backfill safe-html-hidden-cards

re-sanitizes stored mail with a form or a stylesheet !important. One
task for both, because neither fix brings the card back alone.

Closes #271

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Mark the German mail page as translated from the current English one

Both pages gained the same two paragraphs in the previous commit, but
the translated-from hash still named the English page before them, so
DocumentationCoverageTest reported the translation as stale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Credit the image proxy entry and keep it as a changelog fragment

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Paul Lützner <karatektus@gmail.com>

* Swipe a mail row, choose what each swipe does, and long-press for its actions on a phone (#314)

On a phone, below md and by touch only: a row swipes right for read/unread and left for archive, each direction set under Settings → Mail → Swipe actions (read/unread, archive, star, nothing; never trash), and holding a row opens an action sheet with every action its strip offers. Mouse, trackpad and wider windows are unchanged.

Takes over #117, #118 and #119, whose fork was archived. Also gives the Contacts settings' two cards their gap.

Co-authored-by: Flouss <15911342+Flouss@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Admin → Integrations lists the calendar services, so a pinned CalDAV address can be changed later (#279)

CalDAV and Calendar feed get their own group below the file services, with the shared provider row and Configure form; Nextcloud stays with the file services. Calendar services are offered to everyone, so their rows say so and the form has no switch. The server address accepts only http or https, up to 512 characters.

Once people have connected, the CalDAV form says how many connections a changed or cleared pin reaches. A calendar feed offers its address only while one is stored, so it can be cleared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Offer an address book another connection already mirrors locked, not as new (#319)

Two connections to the same server, a Nextcloud one and a CardDAV one made by hand, reach the same address book under the same remote id. Settings → Contacts now offers such a book locked, saying which connection has it, and refuses a posted tick, as it does for calendars. Otherwise every contact in it showed twice.

Closes #317

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Gmailify: the IMAP folder places a sibling's mail, Gmail deletions detach, and a switch to turn it off (#204)

Closes #203
Closes #205

- A sibling's IMAP copy keeps the placement its folder gives it; Gmail's INBOX/SENT/DRAFT/TRASH/SPAM no longer move it (by @phdelodder).
- Gmail deleting its copy detaches the sibling's IMAP copy instead of erasing it.
- app:backfill gmailify-placement repairs copies the old merge had moved.
- Settings → Aliases: a Gmailify switch per Gmail account. Off detaches carried copies in a background job and declines mail Gmail still collects for another account (Bcc'd mail excepted, as documented).

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Gmail sync: look up only the listed ids, not every stored one (#321)

Part of #223: newGmailIds() asks only about the ids Gmail just listed, and nothing when none were.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Store whether a conversation is in the bin, kept by triggers (#322)

Part of #223: message_thread.binned holds #268's rule, kept by triggers on message_label, thread_label and message; lists, badges and search read the column. Identical results on 41 compared queries, most 5-100x faster on a 67k-thread mailbox.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* Account sync: wait out a provider that can't be reached, quietly (#333)

When the worker couldn't connect to the Gmail or Graph API at all, the
account sync went up Messenger's retry ladder: a WARNING with three nested
stack traces per attempt, then CRITICAL and a parked job if the outage
lasted. That job resumes from a cursor and is asked for again every
quarter hour, so nothing was ever lost.

WaitOutConnectionFailures now puts a SyncAccountMessage that failed only
with an HttpClient TransportException back on its own queue, on the
ingest ladder's delays, with one info line per attempt. After five waits
it is dropped with a single warning. Message batches and every other
failure keep the normal path.

Closes #332

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Sven Joder <sj@pmdevelopment.de>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Philippe Delodder <7259755+phdelodder@users.noreply.github.com>
Co-authored-by: jo2904 <jo2904@users.noreply.github.com>
Co-authored-by: DanversKara <DanversKara@users.noreply.github.com>
Co-authored-by: Flouss <15911342+Flouss@users.noreply.github.com>
2026-10-23 11:18:21 +02:00

4993 lines
265 KiB
YAML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
account:
add_title: Konto hinzufügen
added: Konto wurde hinzugefügt
colour_set: Kontofarbe geändert
disabled: Konto deaktiviert
enabled: Konto aktiviert
form:
email: E-Mail-Adresse
encryption: Verschlüsselung
imap:
heading: Eingehend — IMAP
host: Server
password: Passwort
port: Port
preset:
label: Anbieter
placeholder: Anbieter wählen…
smtp:
heading: Ausgehend — SMTP
host: Server
password: Passwort zum Senden
same: Zum Senden dasselbe Passwort verwenden
separate: Zum Senden ein anderes Passwort verwenden
username: Benutzername
oauth:
calendar_declined: Das Konto ist verbunden, aber der Kalenderzugriff wurde nicht erteilt — seine Kalender werden also nicht synchronisiert. Verbinde es neu und hak auf Googles Zustimmungsseite den Kalenderzugriff an.
google: Weiter mit Google
info: Melde dich bei deinem Anbieter an — es wird kein Passwort gespeichert.
microsoft: Weiter mit Microsoft
primary_set: Primäres Konto geändert
removed: Konto entfernt
tabs:
imap: IMAP / SMTP
oauth: OAuth
test:
button: Verbindung testen
hint:
expects_ssl: 'Port %port% erwartet normalerweise direktes SSL/TLS.'
expects_starttls: 'Port %port% erwartet normalerweise STARTTLS, nicht direktes SSL/TLS.'
no_encryption: 'Die Verschlüsselung steht auf „Keine“ — die meisten Anbieter verlangen SSL/TLS oder STARTTLS.'
imap: IMAP
request_failed: 'Der Test konnte nicht laufen (%status%).'
result:
auth: 'Der Server hat Benutzername oder Passwort abgelehnt.'
failed: 'Die Verbindung hat nicht geklappt. Prüf Host, Port und Verschlüsselung.'
host_invalid: 'Gib nur einen Hostnamen oder eine IP-Adresse ein — ohne Schrägstriche, Fragezeichen oder @.'
imap_ok: 'Verbunden — %count% Ordner sichtbar.'
missing_fields: 'Gib zuerst mindestens eine E-Mail-Adresse und einen IMAP-Host ein.'
missing_password: 'Kein Passwort zum Testen. Gib oben eins ein — beim Bearbeiten behält ein leeres Feld das gespeicherte Passwort, und das kann der Test erst nutzen, wenn das Konto gespeichert ist.'
smtp_none: 'Kein SMTP-Host eingetragen — Senden ist für dieses Konto aus.'
smtp_ok: 'Verbunden und angemeldet.'
timeout: 'Der Server hat nicht rechtzeitig geantwortet. Prüf Host und Port und ob eine Firewall dazwischen ist.'
tls: 'Die sichere Verbindung ist gescheitert — das Zertifikat wurde nicht akzeptiert, oder die Verschlüsselung passt nicht zum Port.'
unreachable: 'Der Server war nicht erreichbar. Prüf Hostnamen und Port.'
smtp: SMTP
updated: Konto aktualisiert
admin:
accounts:
account: 'Konto'
heading: 'Konten'
last_activity: 'Letzte Aktivität'
messages: 'Nachrichten'
threads: 'Konversationen'
address:
field:
public_url: Öffentliche Adresse
public_url_help: >-
Unter dieser Adresse ist plMail von außen erreichbar, mit http:// oder
https:// davor und ohne Pfad. Gmail und Outlook schicken
Push-Benachrichtigungen dorthin zurück, dafür muss sie aus dem Internet
über https erreichbar sein.
follow_up: >-
Was woanders eingetragen ist, zieht nicht von selbst mit: die
Weiterleitungsadressen in den Konsolen von Google und Microsoft, ein
Pub/Sub-Push-Endpunkt für Gmail und die Serveradresse in Mail- und
Kalender-Apps. Browser-Benachrichtigungen musst du auf jedem Gerät neu
einschalten.
heading: Öffentliche Adresse
in_use: Derzeit verwendet
intro: >-
Aus dieser Adresse baut plMail seine eigenen Links: wohin sich Browser für
Live-Aktualisierungen verbinden und wohin Google und Microsoft
zurückrufen sollen. Ändere sie, wenn die Installation auf eine andere
Domain, einen anderen Port oder hinter einen anderen Proxy zieht, oder
nachdem du eine Sicherung von einer anderen Maschine eingespielt hast.
none: keine
on_file: Gespeichert
pending: >-
Die gespeicherte Adresse ist nicht die verwendete. Eine Änderung greift,
sobald die Container neu starten. Weichen die beiden nach einem Neustart
immer noch voneinander ab, ist APP_PUBLIC_URL in der Compose-Datei
gesetzt, und das hat Vorrang.
restart_help: >-
Für Live-Aktualisierungen reicht es, plMail hier neu zu starten. Starte
zusätzlich den ganzen Stack neu, damit die Worker Push unter der neuen
Adresse anmelden.
save: Adresse speichern
saved: 'Gespeichert — greift beim nächsten Neustart.'
ago: 'vor %age%'
ai:
backfill:
chip:
complete: 'Fertig'
failed: 'Abgebrochen'
idle: 'Läuft nicht'
paused: 'Pausiert'
running: 'Läuft'
stalled: 'Bewegt sich nicht'
eta: 'Etwa %duration%, bei dem Tempo'
eta_label: 'Rest'
eta_settling: 'Für eine Schätzung zu früh'
failed_body: 'Der Modell-Host hat mehrmals hintereinander nichts geliefert, deshalb wurde der Durchlauf beendet. Es ist nichts verloren: Fortsetzen macht dort weiter, wo es war.'
failures: '%count% Nachrichten, für die das Modell nichts geliefert hat. Der nächste Durchlauf holt sie nach.'
failures_label: 'Übersprungen'
finished_label: 'Fertig'
heading: 'Suchindex'
intro: 'Die Suche nach Bedeutung sieht nur indexierte Mail. Das hier geht einmal durch alle Postfächer; danach wird neue Mail kurz nach einer Suche indexiert und einmal pro Nacht zur Sicherheit.'
last_activity_label: 'Zuletzt gemeldet'
model_label: 'Indexiert mit'
no_mail: 'Es gibt noch keine Mail zum Indexieren.'
outcome:
already_running: 'Es läuft bereits ein Durchlauf.'
no_mailboxes: 'Es gibt keine Postfächer, die durchlaufen werden könnten.'
not_running: 'Es läuft nichts.'
nothing_to_resume: 'Es gibt nichts mehr fortzusetzen.'
resumes_itself: 'Es kommt von selbst wieder.'
search_off: 'Die Suche nach Bedeutung ist aus, es gibt also nichts zu indexieren.'
pause: 'Pausieren'
paused:
feature_off: 'Angehalten, weil die Suche nach Bedeutung ausgeschaltet wurde.'
host_unreachable: 'Wartet darauf, dass der Modell-Host wieder antwortet. Es versucht es von selbst erneut.'
interactive: 'Pausiert, solange die Schreibhilfe gerade benutzt wird. Kurz danach läuft es von selbst weiter.'
operator: 'Pausiert. Es geht dort weiter, wo es aufgehört hat.'
progress: '%embedded% von %eligible% Nachrichten indexiert'
rate: '%rate% Nachrichten pro Sekunde, über die letzten fünf Minuten'
rate_label: 'Tempo'
resume: 'Fortsetzen'
search_off: 'Die Suche nach Bedeutung ist aus, es gibt also nichts zu indexieren. Schalte sie oben zuerst ein.'
stalled_body: 'Seit einer Weile bewegt sich nichts — der Worker, der das gemacht hat, ist vermutlich weg. Fortsetzen nimmt es dort wieder auf, wo es aufgehört hat.'
start: 'Starten'
started_label: 'Gestartet'
tuning: '%batch% Nachrichten pro Durchgang, %delay% s Pause dazwischen, und es hält sich %cooldown% s zurück, nachdem jemand die Schreibhilfe benutzt hat.'
duration:
hours: '%count% Std.'
minutes: '%count% Min.'
seconds: '%count% s'
embedding_preset:
heading: 'Gemessene Voreinstellungen — ein Klick setzt Modell, Anweisung und Schwelle gemeinsam:'
all-minilm: 'Klein und schnell: 45 MB und 384 Dimensionen, für Maschinen mit wenig Speicher. Vor allem Englisch — auf deutscher Mail also das schwächste hier. Braucht keine Anweisung.'
nomic-embed-text: 'Was plMail früher empfohlen hat, für Installationen, die schon darauf laufen. Ehrlich gesagt nur halb unterstützt: es will auch seine Dokumente beschriftet haben, nicht nur die Anfragen, und das macht plMail nicht — gemessen bringt die Anweisung allein nichts.'
qwen3-embedding_0_6b: 'Die Voreinstellung, und ohne besonderen Grund die richtige Wahl. Mehrsprachig, was für ein Postfach, das nicht nur eine Sprache spricht, mehr zählt als jeder Benchmark — und das einzige hier, das im Test perfekte Präzision erreicht hat. 639 MB.'
field:
base_url: 'Modell-Host'
contact_help: 'Kontakthilfe'
contact_help_help: 'Liest einen Kontakt aus eingefügtem Text und schlägt Korrekturen anhand der Signatur der letzten Mail vor. Nutzt das Schreibmodell und schickt ihm diesen Text.'
embedding_base_url: 'Such-Host'
embedding_own: 'Die Suche nutzt einen anderen Modell-Host'
embedding_own_help: 'Wenn das Such-Modell woanders laufen soll als das Schreib-Modell: ein gehostetes Modell zum Schreiben und ein kleines zu Hause für die Suche, oder umgekehrt. Jede Nachricht geht einmal an den Such-Host, um indiziert zu werden. Heißt das Such-Modell dort gleich, bleibt der vorhandene Index erhalten.'
embedding_provider: 'Anbieter des Such-Hosts'
headers: 'Zusätzliche Header'
headers_clear: 'Gespeicherte Header entfernen'
headers_help: 'Einer pro Zeile, geschrieben Name: Wert. Gehen mit jeder Anfrage an den Modell-Host, für einen Proxy oder ein Gateway, das mehr als ein Token verlangt. Verschlüsselt gespeichert und nie wieder angezeigt.'
headers_help_set: 'Hinterlegt: %names%. Leer lassen, um sie zu behalten. Was du hier eintippst, ersetzt alle; die gespeicherten Werte werden nie angezeigt.'
provider: 'Anbieter'
provider_help: 'Welche API der Modell-Host spricht. Über Ollama weiß plMail am meisten: Es kann ein Modell geladen halten und eines vorab laden. OpenAI-kompatibel deckt fast alles andere ab, im eigenen Netz oder gehostet.'
base_url_help: 'Bei Ollama die Adresse des Containers in deinem Netz, mit Port. Bei einem OpenAI-kompatiblen Endpunkt die Wurzel der API samt Version, etwa https://api.example.com/v1.'
categorisation: 'Mail in Tabs einsortieren'
categorisation_help: 'Läuft bei jeder eingehenden Nachricht. Immer nur als Stichentscheid — zuerst entscheiden die normalen Regeln.'
chat_keep_alive: 'Schreib-Modell geladen lassen für'
chat_keep_alive_help: '5m, 30m, 4h oder einfach eine Zahl in Sekunden. -1 lässt es dauerhaft geladen, 0 entlädt es nach jeder Anfrage. Je länger, desto schneller kommt die erste Antwort — der Host hält den Speicher aber die ganze Zeit belegt. Leer lassen, um das zu nehmen, was am Host selbst eingestellt ist.'
chat_model: 'Schreib-Modell'
chat_model_help: 'Für Antworten, Zusammenfassungen und das Einsortieren. Nimm ein instruction-tuned Modell.'
embedding_keep_alive: 'Such-Modell geladen lassen für'
embedding_keep_alive_help: 'Gleiches Format wie oben. Dieses Modell ist klein und wird ständig gebraucht, deshalb kostet -1 — dauerhaft geladen — meist kaum etwas und spart bei jeder Suche eine Wartezeit; wenn der Host den Speicher übrig hat, lohnt es sich. Leer lassen, um das zu nehmen, was am Host selbst eingestellt ist.'
embedding_model: 'Such-Modell'
embedding_model_help: 'Wandelt Mail in Vektoren um, damit die Suche Bedeutung statt Wörter findet.'
hold: 'Auf den Assistenten warten, bevor neue Mail in einem Tab erscheint'
hold_help: 'Für alle, die ihre Mail vom Assistenten sortieren lassen. Neue Mail bleibt für den Moment, den der Assistent braucht, aus den Posteingangs-Tabs heraus — sie erscheint dann einmal, im richtigen Tab, statt in einem aufzutauchen und in einen anderen zu wandern. Mail aus dem ersten Import wird nie zurückgehalten.'
hold_max_seconds: 'Höchstens warten (Sekunden)'
hold_max_seconds_help: 'Danach wird die Mail dort angezeigt, wo die normalen Regeln sie einordnen — egal, was der Assistent gerade tut — und verschoben, falls der Assistent später antwortet. Zwischen 2 und 300.'
search_query_instruction: 'Anweisung für die Suchanfrage'
search_query_instruction_help: 'Wird vor den Suchtext gesetzt, bevor er in einen Vektor umgewandelt wird. Die meisten Modelle brauchen eine und antworten ohne sie schlecht; für Modelle ohne lässt du das Feld leer. Betrifft nur Suchanfragen — du musst deine Mail dafür nie neu indexieren.'
semantic_min_similarity: 'Mindest-Ähnlichkeit'
semantic_min_similarity_help: 'Wie nah ein Treffer sein muss, von 0 bis 1. Jedes Modell hat seine eigene Skala, deshalb gehört der Wert zum Modell darüber: zu hoch findet nichts, zu niedrig liefert das ganze Postfach.'
enabled: 'Sprachmodell verwenden'
enabled_help: 'Standardmäßig aus. Solange das aus ist, wird alles darunter ignoriert.'
search: 'Nach Bedeutung suchen'
search_help: 'Ergänzt Treffer, die zu dem passen, was du gemeint hast. Die normale Suche bleibt unverändert.'
summary: 'Zusammenfassungen von Gesprächen'
summary_help: 'Nutzt das Schreibmodell. Eine kalte Anfrage dauert etwa eine Minute und belegt so lange die GPU.'
token: 'Token'
token_help: 'Nur nötig, wenn du den Host hinter etwas gestellt hast, das danach fragt. Geht als Bearer-Token mit jeder Anfrage.'
token_help_set: 'Ein Token ist hinterlegt. Leer lassen, um es zu behalten. Änderst du oben die Adresse, ohne eines einzutippen, wird es verworfen.'
writing_help: 'Beim Schreiben helfen'
writing_help_help: 'Bietet im Editor Entwürfe und Umformulierungen an, wenn du danach fragst.'
heading: 'Sprachmodell'
headers:
summary: 'Zusätzliche Header für einen Proxy oder ein Gateway'
hold:
details: 'Jede Nachricht ansehen'
measured: 'Letzte 7 Tage: %count% Nachrichten zurückgehalten, typischerweise %median% s (95 % innerhalb von %p95% s). %timeout% wurden ohne Antwort angezeigt, weil die Wartezeit abgelaufen war.'
no_data: 'In den letzten 7 Tagen wurde keine Mail zurückgehalten — es gibt noch keine Verzögerung zu berichten.'
intro: 'plMail kann ein Sprachmodell benutzen, auf einer Maschine, die du selbst betreibst, oder an einem Endpunkt deiner Wahl. Mails gehen an die Adresse, die du hier einträgst, und sonst nirgendwohin. Nichts wird eingeschaltet, bis du es sagst, und solange das aus ist, funktioniert der Mail-Client genau wie bisher.'
perf:
by_model: 'Nach Modell'
chip:
cold: 'Nichts geladen'
off: 'Aus'
answering: 'Antwortet'
split: 'Teils auf der CPU'
unreachable: 'Keine Antwort'
warm: 'Geladen'
feature:
thread_summary: 'Zusammenfassungen'
categorise: 'Mail einsortieren'
mail_index: 'Mail indexieren'
search_query: 'Suche'
writing_help: 'Schreibhilfe'
heading: 'Modell-Host'
latest: 'Letzte Anfrage: %feature% mit %model%'
model:
chat: 'Schreib-Modell'
embedding: 'Such-Modell'
missing: 'nicht auf diesem Host'
missing_body: 'Ein hier eingetragenes Modell ist auf dem Host nicht installiert. Zieh es dort, oder trag eines ein, das vorhanden ist — bis dahin scheitert jede Anfrage dafür.'
none: 'nicht gesetzt'
resident: 'im Speicher'
no_history: 'In diesem Zeitraum hat nichts ein Modell gefragt. Die Zahlen erscheinen, sobald etwas es tut.'
no_host: 'Es ist noch kein Modell-Host eingetragen. Trag oben seine Adresse ein.'
off_body: 'Die KI ist aus, es wird also kein Modell gefragt. Hier ist nichts kaputt.'
resident:
cold_cost: 'Zuletzt hat das etwa %duration% gedauert.'
full: '%size% im Speicher, vollständig auf der GPU.'
heading: 'Gerade im Speicher'
none: 'Es ist kein Modell geladen. Die nächste Anfrage lädt eines.'
split: '%vram% von %size% auf der GPU — %percent% %. Die übrigen %cpu% liegen auf der CPU.'
split_body: 'Solange das Modell geteilt ist, ist alles um ein Vielfaches langsamer. Gib GPU-Speicher frei oder nimm ein kleineres Modell und lade es neu.'
unloading: 'Wird gerade entladen.'
unloads_in: 'Wird in %duration% entladen, falls nichts danach fragt.'
retrying: 'Wird alle paar Sekunden erneut geprüft.'
table:
calls: 'Anfragen'
cold: 'Kaltstarts'
errors: 'Fehler'
feature: 'Aufgabe'
gen: 'Token/s (p50 / p95)'
hint: 'p50 ist die mittlere Anfrage, p95 die langsame: die Hälfte war schneller als p50, jede zwanzigste langsamer als p95. Ein Kaltstart ist eine Anfrage, die warten musste, bis das Modell von der Platte gelesen war.'
load: 'Ladezeit'
throughput:
heading: 'Was die Anfragen gekostet haben'
tokens_per_second: '%rate% Token pro Sekunde'
unreachable_body: 'Unter %host% antwortet nichts. plMail läuft weiter; die Funktionen, die ein Modell brauchen, tun einfach nichts.'
version: 'Ollama %version%'
window:
day: '24 Stunden'
hour: 'Stunde'
week: '7 Tage'
provider:
ollama: 'Ollama'
openai: 'OpenAI-kompatibel'
probe:
missing_model: 'Der Host hat geantwortet, hat aber nicht: %models%. Zieh sie dort erst.'
host:
search: 'Such-Host'
writing: 'Modell-Host'
no_host: 'Trag zuerst eine Adresse ein.'
no_model_list: 'Unter der Adresse antwortet etwas, aber es gibt keine Modell-Liste (HTTP %status%). Prüf, ob die Adresse auf die API-Version endet, meist /v1. Manche Server haben keine Liste und funktionieren trotzdem; speichere und probier einen Entwurf aus.'
not_an_api: 'Unter der Adresse antwortet etwas, aber nicht mit JSON. Das ist meist eine Anmeldeseite oder ein Proxy, nicht die API.'
refused: 'Der Host hat geantwortet und die Anfrage abgelehnt (HTTP %status%). Prüf das Token.'
ok: 'Der Host hat geantwortet und hält %count% Modelle bereit.'
models: 'Die %count% vorhandenen Modelle anzeigen'
status: 'Der Host hat mit HTTP %status% geantwortet.'
unreachable: 'Unter der Adresse hat nichts geantwortet. (%error%)'
prompt:
categorise:
hint: 'Läuft bei eingehender Mail, die keine Regel erkannt hat. Es muss EIN EINZELNES WORT verlangen, aus primary, social, promotions, updates, forums — plMail gleicht die Antwort genau gegen diese fünf ab; alles andere lässt die Mail stillschweigend dort, wo die normalen Regeln sie hingelegt haben.'
label: 'Mail in Tabs einsortieren'
formal:
hint: 'Wird benutzt, wenn jemand dieselbe Nachricht in förmlicherem Ton will.'
label: 'Förmlicher machen'
language:
hint: 'Wird an jeden Prompt oben angehängt, außer ans Einsortieren. Das ist der Grund, warum eine deutsche Mail eine deutsche Antwort bekommt — ohne das folgt das Modell dem Englisch, in dem diese Anweisungen geschrieben sind, und beim Korrekturlesen übersetzt es deinen deutschen Entwurf. Du kannst es umformulieren, aber nicht entfernen: Wenn du das Feld leerst, gilt wieder der mitgelieferte Text.'
label: 'Immer in der Sprache der Mail antworten'
proofread:
hint: 'Wird benutzt, wenn jemand nur Rechtschreibung und Grammatik korrigiert haben will. Lass "sonst nichts ändern" drin — ohne das schreibt das Modell Sätze um, die schon richtig waren.'
label: 'Korrektur lesen'
reply:
hint: 'Wird von "Beim Schreiben helfen" benutzt, wenn jemand einen ersten Entwurf will.'
label: 'Antwort entwerfen'
shorten:
hint: 'Wird benutzt, wenn jemand dieselbe Nachricht in weniger Worten will.'
label: 'Kürzen'
summary:
hint: 'Wird vom Zusammenfassen-Knopf im Lesebereich benutzt. Wenn du das änderst, gelten alle schon geschriebenen Zusammenfassungen als veraltet — gelöscht wird nichts, sie werden beim nächsten Mal neu geschrieben.'
label: 'Gespräch zusammenfassen'
prompts:
changed: '%count% geändert'
heading: 'System-Prompts'
intro: 'Das sind die Anweisungen, die plMail dem Modell gibt. Lass ein Feld leer, dann gilt der mitgelieferte Text — so kann ein späteres Update ihn noch verbessern. Was du einträgst, ersetzt den mitgelieferten Text vollständig.'
reset: 'Auf den mitgelieferten Text zurücksetzen'
save: 'Prompts speichern'
saved: 'Gespeichert. Neue Zusammenfassungen nutzen das hier; schon geschriebene sind jetzt veraltet.'
show_shipped: 'Mitgelieferten Text anzeigen'
untouched: 'Wie ausgeliefert'
save: 'Speichern'
saved: 'Gespeichert.'
status:
incomplete: 'Host fehlt'
off: 'Aus'
on: 'An'
paused: 'Pausiert'
test: 'Testen'
warmup:
button: 'Jetzt vorladen'
failed: 'Keine Antwort. Versuch es noch einmal.'
loaded_ms: 'Modell in %count% ms geladen — es war schon im Speicher.'
loaded_seconds: 'Modell in %count% s geladen.'
loading: 'Modell wird geladen …'
model_missing: 'Auf dem Host gibt es kein Modell namens „%model%“. Zieh es dort, oder trag eines ein, das da ist. (%error%)'
no_host: 'Trag zuerst einen Modell-Host ein und speichere.'
no_model: 'Trag zuerst ein Schreib-Modell ein und speichere.'
not_ollama: 'Nur ein Ollama-Host lässt sich bitten, ein Modell vorab zu laden.'
status: 'Der Host hat mit HTTP %status% abgelehnt. (%error%)'
timeout: 'Der Host hat nach vier Minuten immer noch geladen, plMail hat aufgehört zu warten. Gut möglich, dass er fertig wird — vermutlich ist das Modell aber zu groß für seinen Speicher.'
unexpected: 'Etwas ist schiefgegangen, bevor der Host antworten konnte. (%error%)'
unreachable: 'Unter der Adresse hat nichts geantwortet. (%error%)'
client_errors:
browser: 'Browser'
clear: 'Leeren'
clear_confirm: 'Wirklich alle Browser-Fehler löschen? Sie kommen von allein wieder, wenn sie noch auftreten.'
count: '{0}nichts gemeldet|{1}1 Fehler|]1,Inf[ %count% Fehler'
empty: 'Keine Browser-Fehler.'
empty_hint: 'Hier landen nicht abgefangene Fehler aus plMails eigenen Skripten, nach Fehler gruppiert. Fehler aus Browser-Erweiterungen werden herausgefiltert — das meiste, was ein Browser meldet, kommt nicht von dieser Anwendung.'
first_seen: 'Zuerst gesehen'
heading: 'Browser-Fehler'
kind:
csp: 'Blockiert'
error: 'Fehler'
unhandledrejection: 'Rejection'
occurrences: '{1}bei 1 Seitenaufruf|]1,Inf[ bei %count% Seitenaufrufen'
page: 'Letzte Seite'
config_backup:
change:
absent: 'hier noch nicht gesetzt'
differs: 'ersetzt einen anderen Wert'
unchanged: 'bereits identisch'
disposition:
applied: 'Geschrieben und ab sofort wirksam.'
applied-on-restart: 'wirkt nach dem nächsten Neustart'
external: >-
plMail ist hier Client des Systems und nicht sein Eigentümer. Die
Datenbankrolle wurde mit dem Passwort angelegt, das Postgres bereits hält,
und nur eine Neuinitialisierung liest ein anderes ein — den Wert allein
hier zu ändern ergibt also eine Installation, die sich nicht mehr mit ihrer
eigenen Datenbank verbinden kann. Ändere ihn zuerst in Postgres, dann hier.
kept-deliberately: >-
Bleibt bewusst so, wie er hier ist. Die Zugangsdaten aus dieser Sicherung
wurden beim Schreiben mit dem Schlüssel dieser Installation neu
verschlüsselt; den Schlüssel aus der Sicherung einzusetzen würde sie — und
alles andere bereits Gespeicherte — beim nächsten Start unlesbar machen.
Die Zeile unten ist nur für den Fall gedacht, dass du auch die alte
Datenbank wiederherstellst, deren Zeilen damit verschlüsselt sind; dann
muss sie eingetragen sein, bevor irgendetwas gespeichert wird.
not-writable: >-
Dieser Prozess konnte diesen Pfad nicht schreiben. Schreibgeschütztes
Secrets-Volume, falsche UID oder ein Dienst, der das Volume nie bekommen
hat. Der Wert steckt in der Sicherung, die du gerade hochgeladen hast —
lege ihn selbst dort ab.
shadowed-by-compose: >-
Geschrieben, aber dieser Name ist auch in der Prozessumgebung gesetzt, und
der Entrypoint lässt einen ausdrücklich konfigurierten Wert über den
erzeugten siegen. Entferne oder aktualisiere ihn in deiner Compose-Datei —
oder in der `.env` daneben — und starte neu; der wiederhergestellte Wert
liegt bereits darunter bereit.
error:
malformed-document: >-
Das Passwort hat die Datei geöffnet, aber ihr Inhalt ist keine
Konfigurationssicherung, die diese plMail-Version lesen kann. Es wurde
nichts geändert.
not-a-backup: >-
Das ist keine plMail-Konfigurationssicherung. Es wurde nichts geändert.
unsupported-version: >-
Diese Sicherung stammt aus einer neueren plMail-Version und liegt in einem
Format vor, das diese Version nicht lesen kann. Aktualisiere zuerst, dann
importiere sie.
collision: >-
Die Datei beschreibt jemanden, von dem diese Installation noch Reste hat — ein
App-Passwort, einen Freigabe-Link oder eine Buchungsseite, deren Token hier noch
registriert ist, meist von einem entfernten Konto übrig geblieben. Es wurde
nichts geändert. Entferne diese Reste, oder importiere auf eine Installation
ohne sie.
wrong-password: >-
Mit diesem Passwort lässt sich die Datei nicht öffnen — oder die Datei
wurde seit dem Schreiben verändert. Es wurde nichts geändert.
export:
error:
mismatch: 'Die beiden Passwörter stimmten nicht überein, es wurde nichts exportiert.'
too_short: 'Dieses Passwort ist zu kurz, es wurde nichts exportiert.'
heading: 'Konfiguration exportieren'
intro: >-
Alle Einstellungen und Zugangsdaten, mit denen diese Installation läuft, in
einer passwortverschlüsselten Datei: die Umgebungswerte, die Dateien im
Secrets-Volume, die Anbieter- und Firebase-Zugangsdaten aus der Datenbank
sowie die Personen — jede mit Passwort, zweitem Faktor, Postfächern und
allem anderen, was sie eingerichtet hat. Keine E-Mails, keine
Kalendereinträge, keine Kontakte — dafür ist `app:backup` da.
generate: 'Eins erzeugen'
generated_copied: 'In die Zwischenablage kopiert — bewahre es an einem Ort auf, der diese Maschine überlebt.'
generated_shown: 'Dein Browser gibt die Zwischenablage nicht frei, das Passwort steht deshalb oben im Feld — sichere es jetzt.'
password: 'Passwort'
password_help: >-
Mindestens %length% Zeichen. Es wird nirgends gespeichert, und ohne es
lässt sich die Datei nicht öffnen.
password_repeat: 'Passwort wiederholen'
submit: 'Sicherung herunterladen'
warning: >-
Die entstehende Datei enthält jedes Geheimnis dieser Installation, geschützt
durch nichts als das Passwort, das du hier eingibst. Bewahre sie so auf, wie
du den Verschlüsselungsschlüssel selbst aufbewahren würdest.
import:
error:
no_file: 'Es kam keine Datei an, oder sie war weit größer, als eine Konfigurationssicherung sein kann.'
no_password: 'Gib das Passwort ein, mit dem diese Sicherung versiegelt wurde.'
file: 'Sicherungsdatei'
heading: 'Konfiguration importieren'
intro: >-
Lade eine Sicherung hoch und gib ihr Passwort ein. Es wird nichts
geschrieben, bevor du gesehen und bestätigt hast, was passieren würde.
password: 'Passwort'
submit: 'Sicherung prüfen'
review:
already_matching: '%count% weitere stimmen bereits mit dieser Umgebung überein, dabei ist also nichts zu tun.'
apply: 'Diese Sicherung anwenden'
applied: 'Was geschrieben wurde'
confirm_password: 'Passwort, noch einmal'
exported_at: 'Exportiert'
from: 'Von'
heading: 'Sicherung prüfen'
instructed: 'Das musst du selbst erledigen'
instructed_lead: >-
Alles Übrige steht bereits. Diese wenigen Punkte lassen sich von hier aus
nicht abschließen, und jeder sagt warum — etwas anderes zu behaupten wäre
eine Lüge, die ein Betreiber erst an dem Tag bemerkt, an dem es darauf
ankommt.
kept_users: 'Schon vorhanden — unverändert gelassen'
kept_users_lead: >-
Diese Personen gibt es in dieser Installation bereits, erkannt an der
E-Mail-Adresse. An ihnen wurde nichts angerührt: weder Passwort noch
zweiter Faktor, weder Postfächer noch sonst etwas, das sie eingerichtet
hatten. Eine Sicherung ist die Momentaufnahme eines vergangenen Zeitpunkts,
und sie über ein lebendes Konto zu schreiben ist der Weg, auf dem jemand
ohne ein Wort irgendwo aus seiner eigenen Mail ausgesperrt wird.
old_key_summary: 'Spielst du auch die alte Datenbank ein? Dann brauchst du ihren alten Verschlüsselungsschlüssel.'
restart: >-
Das meiste davon wird beim Start des Stacks gelesen, deshalb schreibt es
plMail in die erzeugten Geheimnisse, und es wirkt ab dem nächsten Neustart.
Das ist ein Neustart für die ganze Liste, nicht einer pro Wert.
restart_applied: >-
Geschrieben. Die beim Containerstart gelesenen Werte liegen bereit, sind
aber noch nicht in Kraft — starte den Stack einmal neu, und diese
Installation kommt als die hoch, von der die Sicherung stammt.
unknown_instance: 'nicht vermerkt'
written: 'Das schreibt plMail'
written_applied: 'Geschrieben'
written_none: 'In dieser Sicherung ist nichts, was plMail schreiben müsste.'
section:
database: 'Datenbank'
env: 'Umgebungsvariablen'
files: 'Dateien im Secrets-Volume'
users: 'Personen und alles, was sie eingerichtet haben'
db:
active:
empty: 'Zurzeit keine aktiven Abfragen.'
heading: 'Live-Aktivität'
cache_hit: 'Cache-Trefferquote'
col:
calls: 'Aufrufe'
hit: 'Cache'
max: 'Max. ms'
mean: 'Ø ms'
query: 'Abfrage'
rows: 'Zeilen'
total: 'Gesamt'
connections: 'Verbindungen'
deadlocks: 'Deadlocks'
extension_missing: 'pg_stat_statements ist nicht aktiviert — die Auswertung langsamer Abfragen steht nicht zur Verfügung. Einmalig aktivieren:'
extension_enable: "Jetzt aktivieren"
extension_enable_hint: "Die Statistik beginnt, sobald die Erweiterung angelegt wird; fruehere Abfragen erscheinen nicht."
extension_enable_failed: "Erweiterung konnte nicht aktiviert werden - die Datenbankrolle darf sie nicht anlegen."
heavy_total:
heading: 'Aufwendigste Abfragen (nach Gesamtzeit)'
hint: 'Kumulierte Zeit über alle Aufrufe — wofür die Datenbank ihre Zeit insgesamt aufwendet.'
reset: 'Statistik zurücksetzen'
reset_confirm: 'Alle gesammelten Abfragestatistiken zurücksetzen?'
rollback_ratio: 'Rollback-Quote'
slow_mean:
empty: 'Noch keine Abfragen oberhalb des Schwellwerts.'
heading: 'Langsamste Abfragen (nach Durchschnittszeit)'
hint: 'Abfragen mit durchschnittlich ≥ 5 ms, aktuelle Datenbank.'
demo_stats:
active: 'Gerade offen: %count%'
col:
period: 'Zeitraum'
sessions: 'Gestartete Sitzungen'
visitors: 'Verschiedene Besucher'
heading: 'Demo-Besucher'
intro: 'Wie viele Demo-Sitzungen diese Instanz vergeben hat. Eine Sitzung ist ein Postfach, das über /demo angelegt wurde; wer nach Ablauf wiederkommt, startet eine neue.'
privacy: 'Es wird keine Adresse gespeichert. Jede Sitzung behält einen Hashwert mit geheimem Schlüssel über das Netz des Besuchers (die Adresse ohne ihren letzten Teil), damit jemand, der wiederkommt, einmal zählt; wer sich ein Netz teilt, zählt als einer. Der Hashwert wird nach %days% Tagen gelöscht, deshalb hat die Gesamtzahl keine Besucherzahl.'
window:
day: 'Letzte 24 Stunden'
hour: 'Letzte Stunde'
month: 'Letzte 30 Tage'
total: 'Insgesamt'
week: 'Letzte 7 Tage'
failed:
delete: 'Löschen'
delete_confirm: 'Diese fehlgeschlagene Nachricht endgültig verwerfen?'
empty: 'Der Failure-Transport ist leer. 🎉'
heading: 'Fehlgeschlagene Nachrichten'
purge: 'Alle verwerfen'
purge_confirm: 'Alle fehlgeschlagenen Nachrichten endgültig verwerfen? Danach lassen sie sich nicht mehr wiederholen.'
retry: 'Wiederholen'
retry_all: 'Alle wiederholen'
retry_all_confirm: 'Alle fehlgeschlagenen Nachrichten erneut zustellen?'
insight_reports:
clear_handled:
button: 'Erledigte Meldungen löschen'
confirm: '%count% als erledigt markierte Meldung(en) löschen? Die Kopien der Mails verschwinden mit ihnen.'
heading: 'Erledigtes aufräumen'
lead: '%count% Meldung(en) hast du als erledigt markiert. Was noch wartet, bleibt liegen.'
copy: 'Auswahl kopieren'
copy_hint: 'Die ausgewählten Meldungen als Textzeilen, zum Einfügen in eine Anweisung oder ein Ticket.'
delete: 'Diese Meldung löschen'
delete_confirm: 'Diese Meldung löschen? Die Kopie der Mail verschwindet mit ihr.'
download: 'Als Text sichern'
download_hint: 'Dieselben Zeilen, als Textdatei.'
empty: 'Es wurde nichts gemeldet.'
empty_hint: 'Hier sammelt sich, was jemand plMail als falsch gemeldet hat — eine Mail, die eine Info hätte liefern sollen, oder eine, die im falschen Tab lag.'
export:
intro: 'Eine JSON-Datei mit den ausgewählten Meldungen, vollständig: alle Urteile, die Header, auf denen sie beruhen, und der Mailtext, wo es einen gibt. Daraus schreibst du eine Regel oder eine neue Auswertung. Wählst du nichts aus, bekommst du alles.'
not_handled: 'Der Download ändert hier nichts — erledigt ist eine Meldung, wenn du das sagst.'
submit: 'Auswahl exportieren'
warning: 'Diese Datei enthält fremde Mails. Bewahre sie so auf, wie du das Postfach selbst aufbewahren würdest.'
filter: 'Zeigen'
filter_handled: 'Erledigt'
filter_pending: 'Offen'
handled: 'Erledigt'
handled_at: 'Erledigt seit %when%'
heading: 'Gemeldete Mails'
kind:
category: 'Falscher Tab'
insight: 'Keine Info'
mark_handled: 'Als erledigt markieren'
no_body: 'Zu dieser Meldung gibt es keinen Mailtext.'
no_sender: 'kein Absender gespeichert'
no_subject: '(kein Betreff)'
pending: '{0}Nichts offen|{1}1 offen|]1,Inf[ %count% offen'
pending_badge: 'Offen'
problem:
no_insight: 'Keine Info'
received_at: 'Mail kam am %when%'
reported_by: 'Gemeldet von %who%'
reporter_gone: 'einem gelöschten Konto'
select_all: 'Alles Gezeigte auswählen'
selected: '%count% ausgewählt'
verdict:
body: 'Text für das Modell'
body_none: 'keiner — nur HTML'
body_text: 'ja'
gmail: 'Gmail sagt'
headers: 'Massenmail-Header'
model: 'Das Modell sagt'
none: 'keine'
not_asked: 'nicht gefragt'
rules: 'Die Regeln sagen'
integrations:
base_url_exempt: 'nimmt nur Feeds auf diesem Host von der Prüfung auf private Netze aus'
base_url_per_user: 'Jede Person gibt ihre eigene Serveradresse ein.'
base_url_pinned: 'für alle festgelegt'
calendar:
connected_warning: 'Bereits verbunden: %count%. Eine geänderte oder entfernte Adresse gilt für jede dieser Verbindungen, sobald ihre Kalender das nächste Mal gesucht werden. Wer mit einem anderen Server verbunden ist, etwa iCloud, wird dann mit dem eigenen Passwort bei diesem angefragt. Bereits gespiegelte Kalender behalten die Adresse, unter der sie gefunden wurden; lag eine entfernte Adresse in einem privaten Netz, synchronisieren sie nicht mehr, bis ihr Host in INTEGRATIONS_ALLOWED_HOSTS steht.'
heading: 'Kalender'
intro: 'Server und Feeds, aus denen unter Einstellungen → Kalender Kalender gespiegelt werden. Beide stehen allen zur Verfügung; hier lässt sich eine Serveradresse für alle festlegen. Nextcloud wird oben bei den Dateidiensten eingerichtet, seine Kalender kommen mit.'
clear_secret: 'Gespeichertes Client-Secret entfernen'
configure: 'Konfigurieren'
connected_users: '%count% verbunden'
copy_redirect_uri: 'Redirect-URI kopieren'
inherit_toggle: 'Diese Zugangsdaten auch für Dateidienste verwenden'
inherit_toggle_help: 'Ein Google-Projekt deckt auch Drive und Fotos ab, eine Microsoft-App auch OneDrive. Angeschaltet lassen und für diese ist nichts weiter einzurichten.'
field:
base_url: 'Serveradresse'
base_url_help_ics: 'Leer lassen. Jeder Feed hat seine eigene Adresse, ein Eintrag hier ändert also nichts daran, welche Feeds abonniert werden. Eine hier gespeicherte Adresse nimmt nur Feeds auf ihrem Host von der Prüfung auf private Netze aus.'
base_url_help_saas: 'Leer lassen. Dieser Dienst hat eine feste Adresse.'
base_url_help_selfhosted: 'Optional. Festlegen, um alle auf einen Server zu binden; leer lassen, damit jede Person ihre eigene Adresse einträgt.'
client_id: 'Client-ID'
client_secret: 'Client-Secret'
enabled: 'Diesen Dienst anbieten'
enabled_help: 'Ausgeschaltet kann sich niemand verbinden und der Dienst bleibt in den Verfassen- und Speichern-Menüs verborgen.'
pubsub_topic: 'Pub/Sub-Topic'
pubsub_topic_help: 'Vollständiger Topic-Name, in den Gmail Änderungen veröffentlicht. Ohne ihn bleiben Konten beim Abrufen statt Push. Leer lassen, um auf GMAIL_PUBSUB_TOPIC zurückzufallen.'
push_token: 'Push-Verifizierungstoken'
push_token_help: 'Gemeinsames Geheimnis, das Google jedem Pub/Sub-Push beilegt; der Webhook weist Benachrichtigungen ohne es ab. Leer lassen, um auf GMAIL_PUBSUB_VERIFICATION_TOKEN zurückzufallen.'
redirect_uri: 'Redirect-URI'
redirect_uri_help: 'Genau so in die Konsole des Anbieters eintragen. Eine spätere Änderung bricht alle bestehenden Verbindungen.'
tenant: 'Tenant'
tenant_help: 'common für private und Geschäftskonten, organizations nur für Geschäftskonten, oder eine Tenant-ID zur Beschränkung auf die eigene Organisation. Muss zu den unterstützten Kontotypen der App-Registrierung passen.'
inherit: 'Zugangsdaten von %name% übernehmen'
inherit_help: 'Kopiert Client-ID und Secret serverseitig — das Secret wird nie angezeigt. Die zusätzlich benötigte Berechtigung wird damit nicht erteilt; diese ist beim Anbieter wie in der Einrichtung beschrieben hinzuzufügen.'
inherited: 'Zugangsdaten kopiert'
mail:
calendar_heading: 'Die Kalender-Synchronisation nutzt dieselbe App'
calendar_google: >-
Hier ist nichts einzurichten. Aktiviere die Google Calendar API
für dieses Projekt und ergänze den Scope .../auth/calendar im
Zustimmungsbildschirm — die Kalender kommen dann mit derselben
Anmeldung wie die E-Mails. Ohne das funktioniert E-Mail weiter,
die Kalender erscheinen einfach nicht.
calendar_microsoft: >-
Hier ist nichts einzurichten. Ergänze die delegierte Berechtigung
Calendars.ReadWrite in dieser App-Registrierung — die Kalender
kommen dann mit derselben Anmeldung wie die E-Mails. Ohne das
funktioniert E-Mail weiter, die Kalender erscheinen einfach nicht.
consent_heading: 'Wenn deine Organisation Apps für ihre Benutzer freigibt'
consent_microsoft: 'Manche Microsoft-365-Organisationen lassen Benutzer Apps nicht selbst freigeben: Ein Administrator hat plMail einmal freigegeben, für die Berechtigungen, die es damals verlangt hat. plMail fragt jetzt zusätzlich nach Contacts.ReadWrite, und das deckt diese Freigabe nicht ab. Microsoft lehnt deshalb jede Anmeldung bei plMail ab, auch für Mail, bis die Freigabe erneuert ist. Bevor sich jemand neu anmeldet: Öffne das Microsoft Entra Admin Center → Unternehmensanwendungen → plMail → Berechtigungen und wähle „Administratorzustimmung erteilen“. Private Microsoft-Konten und Organisationen, in denen Benutzer Apps selbst freigeben, sind nicht betroffen.'
contacts_google: >-
Aktiviere die Google People API für dieses Projekt und füge den
Scope .../auth/contacts zum Zustimmungsbildschirm hinzu — dann
bekommen Nutzer ihre Kontakte mit derselben Anmeldung. Konten,
die schon vorher verbunden waren, werden in ihren Einstellungen
einmal gebeten, sich neu anzumelden. Ohne das funktionieren Mail
und Kalender weiter, und Kontakte erscheinen einfach nicht.
contacts_heading: 'Die Kontakt-Synchronisation nutzt dieselbe App'
contacts_microsoft: >-
Füge dieser App-Registrierung die delegierte Berechtigung
Contacts.ReadWrite hinzu — dann bekommen Nutzer ihre
Outlook-Kontakte mit derselben Anmeldung. Konten, die schon
vorher verbunden waren, werden in ihren Einstellungen einmal
gebeten, sich neu anzumelden. Ohne das funktionieren Mail und
Kalender weiter, und Kontakte erscheinen einfach nicht.
env_note: 'Bleiben diese Felder leer, greifen GOOGLE_OAUTH_* / MICROSOFT_OAUTH_* aus der Umgebung — eine so konfigurierte Installation läuft unverändert weiter.'
from_env: 'Aus der Umgebung'
google: 'Gmail-Anmeldung'
heading: 'Mail-Anmeldung'
intro: 'Die OAuth-App, über die sich Personen beim Hinzufügen eines Mailkontos anmelden. Google- und Microsoft-Dateidienste können dieselben Zugangsdaten nutzen.'
microsoft: 'Microsoft-Mail-Anmeldung'
saved: 'Mail-Anmeldung gespeichert'
intro: 'Dienste, aus denen Dateien angehängt und in die Anhänge gespeichert werden können. Alle Dienste stehen hier, auch die, die plMail noch nicht ansprechen kann.'
not_set: 'Nicht gesetzt'
saved: 'Integrationseinstellungen gespeichert'
secret_none: 'Kein Secret gespeichert'
secret_stored: 'Gespeichert'
secret_unchanged: 'Leer lassen, um das gespeicherte Secret zu behalten'
status:
always_offered: 'Für alle verfügbar'
disabled: 'Deaktiviert'
enabled: 'Aktiviert'
incomplete: 'Zugangsdaten fehlen'
unimplemented: 'Noch nicht verfügbar'
tutorial:
caldav:
intro: 'CalDAV meldet sich mit einem App-Passwort pro Person am eigenen Server an — hier ist nichts zu registrieren.'
not_for_cloud_mail: 'Kalender von Gmail und Outlook kommen nicht so herein. Sie hängen an der E-Mail-Anmeldung oben und brauchen dort nur das Kalenderrecht in der App-Registrierung.'
security: 'Nutzerinnen und Nutzer sollten ein App-Passwort anlegen statt ihr Anmeldepasswort zu verwenden: App-Passwörter lassen sich einzeln widerrufen und funktionieren mit Zwei-Faktor-Anmeldung. iCloud und Fastmail akzeptieren nichts anderes.'
step_app_password: 'Jede Person legt auf ihrem Server ein App-Passwort an — Nextcloud unter Einstellungen → Sicherheit, iCloud auf appleid.apple.com, Fastmail unter Settings → Password & Security — und trägt es in den eigenen Kalendereinstellungen ein.'
step_base_url: 'Optional die Serveradresse festlegen, etwa https://cloud.example.com, wenn hier alle denselben Server nutzen.'
step_url: 'Einzutragen ist die CalDAV-Adresse, nicht die der Weboberfläche: Nextcloud zeigt sie unter Kalender → Einstellungen → „Primäre CalDAV-Adresse kopieren“, sie endet meist auf /remote.php/dav. Eine bloße Domain reicht auch — plMail fragt dort nach, wo die Kalender liegen.'
dropbox:
intro: 'Dropbox benötigt eine App in der Dropbox-Entwicklerkonsole.'
refresh_note: 'Den App-Typ „scoped access“ wählen und Offline-Zugriff anfordern, sonst brechen Verbindungen nach wenigen Stunden ab.'
step_app: 'Unter dropbox.com/developers/apps eine App mit scoped access auf die gesamte Dropbox anlegen.'
step_paste: 'App-Key und App-Secret oben eintragen.'
step_permissions: 'Unter Permissions files.metadata.read, files.content.read und files.content.write aktivieren.'
step_redirect: 'Unter Settings die oben gezeigte Redirect-URI zu den OAuth-2-Redirect-URIs hinzufügen.'
google:
separate_from_gmail: 'Diese Zugangsdaten sind unabhängig von den Gmail-Daten in der Umgebungsdatei. Dasselbe Cloud-Projekt kann verwendet werden, der Zustimmungsbildschirm muss aber die zusätzlichen Scopes aufführen.'
step_consent: 'Den OAuth-Zustimmungsbildschirm einrichten und die unten genannten Scopes hinzufügen.'
step_credentials: 'Eine OAuth-2.0-Client-ID vom Typ Webanwendung anlegen.'
step_paste: 'Client-ID und Client-Secret oben eintragen.'
step_project: 'console.cloud.google.com öffnen und ein Projekt auswählen oder anlegen.'
step_redirect: 'Die oben gezeigte Redirect-URI zu den autorisierten Redirect-URIs hinzufügen.'
google_drive:
intro: 'Google Drive nutzt OAuth, plMail muss also vor der ersten Verbindung bei Google registriert werden.'
scopes: 'Benötigter Scope: der vollständige drive-Scope. drive.file wäre enger, sieht aber nur von plMail selbst erstellte Dateien — ein Browser würde ein leeres Drive zeigen, und Freigabelinks brauchen Schreibzugriff auf die Datei. Es ist ein eingeschränkter Scope: Google verlangt eine App-Überprüfung, bevor Personen außerhalb der Testliste zustimmen können.'
step_api: 'Die Google-Drive-API für das Projekt aktivieren.'
google_photos:
intro: 'Google Photos nutzt OAuth und eine eigene API, getrennt von Drive.'
scope_warning: 'Google hat die Photos-Lesescopes im März 2025 eingeschränkt. Eine neu registrierte App erhält meist nur appcreateddata und sieht damit ausschließlich von plMail hochgeladene Medien — zum Durchsuchen einer bestehenden Bibliothek braucht es photoslibrary.readonly, das Google im Einzelfall gewährt. Das Speichern von Anhängen funktioniert unabhängig davon.'
step_api: 'Die Photos-Library-API für das Projekt aktivieren.'
ics:
intro: 'Ein Kalender-Feed braucht hier keine Einrichtung. Jede Person fügt die Adresse, unter der ein Kalender veröffentlicht ist (meist auf .ics endend), unter Einstellungen → Kalender → „Adresse abonnieren“ ein.'
security: 'Bei einem veröffentlichten Kalender wirkt die Adresse wie ein Passwort: Wer sie kennt, kann den Kalender lesen.'
immich:
intro: 'Immich authentifiziert sich über einen API-Schlüssel pro Person, hier ist also nichts zu registrieren.'
no_share_links: 'Immich kann keinen öffentlichen Link für ein einzelnes Foto erzeugen — geteilt werden nur Alben. Fotos über der Anhangsgrenze lassen sich daher gar nicht anhängen.'
step_base_url: 'Optional die Serveradresse festlegen, etwa https://photos.example.com.'
step_enable: 'Oben „Diesen Dienst anbieten“ einschalten.'
step_key: 'Jede Person erzeugt in Immich unter Account Settings → API Keys einen Schlüssel und trägt ihn in ihre eigenen Integrationseinstellungen ein.'
nextcloud:
intro: 'Nextcloud authentifiziert sich über ein App-Passwort pro Person, hier ist also nichts zu registrieren.'
security: 'Es sollte ein App-Passwort verwendet werden, nicht das Anmeldepasswort: App-Passwörter lassen sich einzeln widerrufen und funktionieren mit Zwei-Faktor-Authentifizierung.'
step_base_url: 'Optional die Serveradresse festlegen, etwa https://cloud.example.com.'
step_enable: 'Oben „Diesen Dienst anbieten“ einschalten.'
step_user: 'Jede Person erzeugt in Nextcloud unter Einstellungen → Sicherheit → Geräte & Sitzungen ein App-Passwort und trägt es in ihre eigenen Integrationseinstellungen ein.'
one_drive:
intro: 'OneDrive nutzt Microsoft Graph, dieselbe API wie Microsoft-Mailkonten, benötigt aber Files-Berechtigungen, die die Mail-Registrierung nicht abdeckt.'
step_paste: 'Anwendungs-ID (Client) und Secret-Wert oben eintragen.'
step_permissions: 'Unter API-Berechtigungen die delegierten Microsoft-Graph-Berechtigungen Files.ReadWrite und offline_access hinzufügen.'
step_redirect: 'Unter Authentifizierung die oben gezeigte Redirect-URI als Web-Plattform-Redirect hinzufügen.'
step_register: 'Im Azure-Portal unter Microsoft Entra ID → App-Registrierungen eine Anwendung registrieren.'
step_secret: 'Unter Zertifikate & Geheimnisse ein Client-Secret erstellen und den Wert sofort kopieren — er wird nur einmal angezeigt.'
tenant_note: 'Für private Microsoft-Konten den Tenant „common“ verwenden, oder die eigene Tenant-ID, um den Zugriff auf die Organisation zu beschränken.'
paperless:
asynchronous: 'Beim Speichern übergibt plMail den Anhang an den Paperless-Consumer, der ihn ein paar Sekunden später ablegt. Gemeldet wird die Übergabe, nicht das fertige Dokument — ein Testdokument taucht also kurz nach der Erfolgsmeldung in Paperless auf, und eine Datei, die Paperless als Dublette ablehnt, gar nicht.'
intro: 'Paperless-ngx authentifiziert sich mit einem API-Token pro Benutzer, hier ist also nichts zu registrieren.'
no_share_links: 'plMail legt keine Paperless-Freigabelinks an. Freigaben sind dort eine eigene, rechtegesteuerte Funktion mit eigenem Ablaufdatum, und ein Dokument zu veröffentlichen ist ein größerer Schritt als es anzuhängen — Dokumente über der Anhangsgrenze lassen sich deshalb gar nicht anhängen.'
step_base_url: 'Optional die Serveradresse festlegen, etwa https://paperless.example.com.'
step_enable: 'Oben „Diesen Dienst anbieten“ einschalten.'
step_token: 'Jede Person kopiert ihr API-Token in Paperless unter My Profile → API Auth Token und trägt es in ihren eigenen Integrationseinstellungen ein.'
tutorial_heading: 'Einrichtung'
unimplemented_notice: 'plMail kann diesen Dienst noch nicht ansprechen. Die Zugangsdaten können jetzt hinterlegt werden — sie greifen, sobald die Unterstützung erscheint.'
loading: 'Wird geladen…'
maintenance:
heading: Wartung
heartbeats_help: 'Entfernt Einträge von Prozessen, die ohne sauberes Herunterfahren beendet wurden.'
heartbeats_prune: 'Alte Heartbeats entfernen'
heartbeats_title: 'Veraltete Heartbeats'
restart: 'Worker neu starten'
restart_app: 'Jetzt neu starten'
restart_app_help: >-
Beendet den Prozess, der diese Seite ausliefert, damit compose ihn neu
erstellt. Nötig, nachdem die generierten Geheimnisse erneuert wurden: das
Entrypoint-Skript exportiert sie als Umgebungsvariablen und der Kernel
startet im Worker-Modus nur ein einziges Mal, ein laufender Web-Container
übernimmt neue Werte also nie. Etwa zwei Sekunden Ausfall, danach kommt
diese Seite von selbst zurück.
restart_app_title: 'Web-Container neu starten'
restart_confirm: 'Worker, Scheduler und IMAP-Supervisor neu starten? Laufende Arbeit wird zuerst abgeschlossen.'
restart_help: 'Beendet Worker, Scheduler und IMAP-Supervisor, damit sie frisch neu starten. Langlaufende Prozesse halten das Datenbank-Mapping über ihre gesamte Laufzeit im Speicher und brauchen das deshalb nach einer Migration.'
restart_pending: 'Neustart vor %seconds%s angefordert — die Prozesse beenden ihre laufende Arbeit und erscheinen ein bis zwei Minuten später wieder hier.'
restart_title: 'Langlaufende Prozesse neu starten'
run_help: 'Wird für einen Worker eingereiht, nicht hier ausgeführt. Es sind dieselben Läufe, die der Scheduler automatisch startet.'
run_title: 'Wartungsaufgabe jetzt ausführen'
task:
mail_sync: 'Mail synchronisieren'
monitoring_prune: 'Monitoring-Daten aufräumen'
prune_blobs: 'Blobs aufräumen'
push_renew: 'Push-Abos erneuern'
logs:
reference: 'Referenz'
all_channels: 'Alle Kanäle'
capture:
from_env: 'aus der Umgebung (%level%)'
hint: 'Alles darunter wird gar nicht erst festgehalten.'
label: 'Einträge behalten ab'
clear: 'Leeren'
clear_confirm: 'Die %count% Einträge dieses Filters löschen?'
copied: 'Kopiert'
copy: 'Eintrag kopieren'
copy_failed: 'Kopieren vom Browser blockiert'
empty: 'Auf dieser Stufe wurde nichts protokolliert.'
entries: 'Einträge'
heading: 'Protokolle'
newer: 'Neuer'
older: 'Älter'
page: 'Seite'
refresh: 'Aktualisieren'
nav:
address: Adresse
ai: KI
backup: Sicherung
database: Datenbank
demo_stats: 'Demo-Besucher'
insight_reports: Gemeldete Mails
integrations: Integrationen
logs: Protokolle
performance: Leistung
push: Push
reset: Zurücksetzen
sso: 'SSO'
system: System
updates: Aktualisierungen
users: Benutzer
performance:
hold:
col:
account: 'Konto'
arrived: 'Eingegangen'
call: 'Modellaufruf'
call_hint: 'Der Weg zum Modell-Host und zurück, vom Start bis zur Antwort.'
filed: 'Einsortiert unter'
load: 'davon Laden'
load_hint: 'Der Teil des Aufrufs, den der Host mit dem Laden des Modells in den Speicher verbracht hat. Nahe null, wenn das Modell schon geladen war.'
outcome: 'Was passiert ist'
queued: 'Gewartet'
queued_hint: 'Vom Speichern der Mail bis zur Frage an den Assistenten. Auf die Sekunde gerundet.'
shown_after: 'Angezeigt nach'
empty: 'In diesem Zeitraum wurde keine Mail zurückgehalten.'
footnote: 'Die neuesten %limit% zurückgehaltenen Nachrichten. Für Mail, die einsortiert wurde, bevor es diese Seite gab, fehlen die Zeiten. Was in der Mail stand, wird hier nicht gezeigt — und nirgends sonst in diesem Bereich.'
heading: 'Neue Mail, die auf den Assistenten wartet'
lead: 'Für alle, die vom Assistenten sortieren lassen, bleibt neue Mail aus den Posteingangs-Tabs heraus, bis sie einsortiert ist — höchstens %ceiling% Sekunden. Jede Zeile ist eine Nachricht und zeigt, wohin ihre Wartezeit ging.'
lead_off: 'Das Zurückhalten neuer Mail für den Assistenten ist unter KI abgeschaltet, hier kommt also nichts Neues hinzu. Was vorher zurückgehalten wurde, steht weiterhin hier.'
outcome:
answered: 'Einsortiert, dann angezeigt'
cold: 'Einsortiert, dann angezeigt — das Modell musste erst geladen werden'
moved: 'Zuerst angezeigt, mit der Antwort verschoben'
no_answer: 'Ohne Antwort angezeigt'
unusable: 'Die Antwort war nicht verwendbar; angezeigt, wo die Regeln sie einordnen'
waiting: 'Wartet noch'
stat:
held: 'Zurückgehalten'
max: 'Längste'
median: 'Übliche Wartezeit'
p95: '95 % innerhalb'
shown_first: 'Vor dem Einsortieren angezeigt'
lag:
col:
account: 'Konto'
arrives_by: 'Kommt an über'
elsewhere: 'Nicht im Posteingang'
elsewhere_hint: 'Spam und Mail, die ein Filter woanders abgelegt hat: wie viele, und ihre übliche Verzögerung. Anbieter melden nur Mail im Posteingang, der Rest wartet auf den Takt.'
max: 'Längste'
median: 'Übliche Verzögerung'
messages: 'Mail im Posteingang'
p95: '95 % innerhalb'
footnote: 'Von dem Moment, in dem der Anbieter eine Nachricht angenommen hat, bis plMail sie gespeichert hat – für Mail, die im Posteingang gelandet ist. Mail aus einem Import und Mail, die aus plMail selbst verschickt wurde, zählt nicht mit.'
heading: 'Wie spät Mail ankommt'
lead: 'Sekunden heißt: Der Anbieter meldet plMail neue Mail, sobald sie eintrifft. Minuten heißt: Das Konto wird stattdessen im Viertelstundentakt abgefragt.'
no_accounts: 'Keine aktiven Konten.'
provider:
google: 'Gmail'
imap: 'IMAP'
microsoft: 'Outlook'
push: 'Push an'
slowest:
by:
idle: 'IDLE'
manual: 'Sync-Knopf'
poll: 'Takt'
push: 'Push'
unknown: '—'
col:
accepted: 'Beim Anbieter angekommen'
account: 'Konto'
by: 'Geholt durch'
in: 'Abgelegt in'
lag: 'Danach bis plMail sie hatte'
lag_hint: 'Von der Annahme durch den Anbieter bis zum Speichern in plMail. Hervorgehoben, wenn Mail im Posteingang fünf Minuten oder länger gebraucht hat.'
underway: 'Schon unterwegs seit'
underway_hint: 'Vom Datum, das die Nachricht trägt, bis zur Annahme durch den Anbieter: ein Absender, der sie zurückgehalten oder zu früh datiert hat. Daran hätte plMail nichts verkürzen können.'
empty: 'In diesem Zeitraum ist keine Mail angekommen.'
footnote: 'Die langsamsten zuerst. Mail außerhalb des Posteingangs meldet der Anbieter nie, bis zu fünfzehn Minuten sind dort also der Takt, wie er gedacht ist. Wodurch eine Nachricht geholt wurde, wird ab dieser Version festgehalten.'
heading: 'Die langsamsten in diesem Zeitraum'
in:
elsewhere: 'Woanders'
inbox: 'Posteingang'
spam: 'Spam'
window:
day: '24 Stunden'
hour: '1 Stunde'
label: 'Zeitraum'
week: '7 Tage'
workers:
col:
in_hand: 'In Arbeit'
oldest: 'Älteste wartet'
queue: 'Warteschlange'
running_for: 'Seit'
waiting: 'Wartend'
worker: 'Worker'
footnote: 'Ein Stand von diesem Moment, nicht vom Zeitraum oben: Wie lange ein Job gewartet hat, wird nicht aufbewahrt, sobald er erledigt ist. Ein Worker mit zwei Warteschlangen arbeitet die erste ab, bevor er in die zweite schaut.'
heading: 'Was bei jedem Worker wartet'
lead: 'Welcher Prozess im Rückstand ist, und um wie viel. Jeder Worker nimmt einen Job nach dem anderen.'
refresh: 'Aktualisieren'
processes:
empty: 'Noch keine Heartbeats — Prozesse melden sich hier nach ihrem ersten Lebenszeichen.'
heading: 'Prozesse'
key: 'Instanz'
last_beat: 'Letztes Lebenszeichen'
pid: 'PID'
type: 'Typ'
push:
calendar_domain_verification: >-
Google öffnet einen Watch-Kanal nur, wenn die Callback-Domain in dem
Cloud-Projekt verifiziert ist, dem der OAuth-Client gehört: erst in
der Search Console verifizieren, dann in der Cloud Console unter
„Domain verification" eintragen. Bei Microsoft entfällt dieser
Schritt.
calendar_routes: >-
Kalender-Push wird getrennt zugestellt, an %google% und %graph%, und
braucht kein Pub/Sub-Topic.
calendar_without_public_address: >-
Ohne öffentlich erreichbare HTTPS-Adresse bleiben verbundene
Kalender einfach beim Viertelstunden-Abruf.
deliveries:
all_outcomes: 'Beliebiges Ergebnis'
all_transports: 'Beide Transportwege'
all_users: 'Alle Benutzer'
attempts: 'Versuche'
empty_ever: >-
Es wurde noch nichts zugestellt. Entweder hat kein Gerät den
Bestätigungs-Handshake abgeschlossen, oder es ist kein
Transportweg konfiguriert — welches davon, steht oben.
empty_filter: 'Keine Zustellung passt zu diesem Filter.'
heading: 'Letzte Zustellungen'
newer: 'Neuer'
older: 'Älter'
outcome:
accepted: 'Angenommen'
failed: 'Fehlgeschlagen'
skipped: 'Übersprungen'
subscription-destroyed: 'Gerät entfernt'
page: 'Seite'
refresh: 'Aktualisieren'
transport:
fcm: 'Firebase'
webpush: 'Web Push'
fcm:
android_package: 'Android-Paket'
application_id: 'Application ID'
clear_key: 'Hinterlegten Schlüssel verwerfen'
clear_key_help: 'Entfernt den Dienstkonto-Schlüssel und schaltet FCM ab. Bereits registrierte Geräte erhalten keine Benachrichtigungen mehr, bis ein neuer Schlüssel gespeichert ist.'
client_email: 'Dienstkonto'
enable_without_client: 'Es ist keine google-services.json hinterlegt — die Android-App hätte nichts, womit sie Firebase initialisieren könnte. Füge unten eine ein oder lass FCM abgeschaltet.'
enable_without_key: 'Es ist kein Dienstkonto-Schlüssel hinterlegt — füge unten einen ein oder lass FCM abgeschaltet.'
field:
enabled: 'Benachrichtigungen über FCM zustellen'
enabled_help: 'Clients sehen das als „fcm“ in der Session-Capability und bieten Firebase nur an, wenn es eingeschaltet ist.'
google_services: 'google-services.json'
google_services_help: 'Firebase-Konsole → Projekteinstellungen → Deine Apps → die Android-App → google-services.json. Die App ist ein Build für alle Installationen und initialisiert Firebase zur Laufzeit aus diesen Werten — sie sind öffentlich und werden in der JMAP-Session veröffentlicht.'
service_account: 'Firebase-Dienstkonto-Schlüssel (JSON)'
service_account_help: 'Firebase-Konsole → Projekteinstellungen → Dienstkonten → Neuen privaten Schlüssel erzeugen. Füge die ganze Datei ein. Sie wird verschlüsselt gespeichert und nie wieder angezeigt. Sie muss zum selben Projekt gehören wie die google-services.json darunter.'
heading: 'Firebase Cloud Messaging'
intro: 'FCM ist der Weg, auf dem eine native Android-App im Hintergrund Benachrichtigungen empfängt. Es ist optional — ein Gerät mit einem UnifiedPush-Distributor braucht nichts davon, die Browser-App ebenso wenig.'
paste_none: 'Ganze JSON-Datei hier einfügen'
paste_unchanged: 'Eine ist hinterlegt — leer lassen, um sie zu behalten'
project: 'Firebase-Projekt'
save: 'Speichern'
saved: 'Firebase-Einstellungen gespeichert.'
sender_id: 'Sender-ID'
status:
incomplete: 'Halb eingerichtet'
key_only: 'Eingerichtet, abgeschaltet'
live: 'Aktiv'
unconfigured: 'Nicht eingerichtet'
webpush_note: 'Web Push braucht hier nichts. Seine VAPID-Schlüssel sind Umgebungsvariablen, einmalig erzeugt von app:push:generate-vapid-keys, und bedienen Browser, die installierte PWA und UnifiedPush-Distributoren gleichermaßen.'
queues:
due_in: 'fällig in %duration%'
empty: 'Keine wartenden Nachrichten.'
filter_placeholder: 'Ganze Warteschlange filtern — Handler, Nutzdaten, Name'
heading: 'Messenger-Warteschlangen'
in_flight: 'Läuft gerade'
loading: 'Wird geladen…'
showing: '%shown% von %total%'
none_running: 'Kein Worker bearbeitet gerade eine Nachricht.'
oldest: 'Am längsten wartend'
pending: 'Ausstehend'
queue: 'Warteschlange'
queued_for: 'seit %duration% in der Warteschlange'
retries: 'Versuch %count%'
running: 'Läuft'
running_for: 'seit %duration%'
waiting_since: 'Wartet seit'
refresh_hint: 'Live-Bereiche aktualisieren sich alle 10 s'
sso:
clear_secret: 'Gespeichertes Client-Secret vergessen'
clear_secret_help: 'Leere dazu auch den Issuer und die Client-ID. Die Anmeldung fällt dann auf die OIDC_*-Variablen der Umgebung zurück oder schaltet sich aus, wenn es keine gibt.'
env_note: 'Lass Issuer, Client-ID und Secret alle leer, und die Anmeldung fällt auf OIDC_ISSUER, OIDC_CLIENT_ID und OIDC_CLIENT_SECRET aus der Umgebung zurück — eine so eingerichtete Installation läuft also weiter. Was hier gespeichert ist, hat Vorrang.'
field:
auto_create: 'Konto für Personen anlegen, die plMail noch nicht kennt'
auto_create_help: 'An, und jede Person, die der Anbieter durchlässt, bekommt hier ein gewöhnliches Konto — begrenz also beim Anbieter, wer das ist. Aus, und die Administration legt jedes Konto vorher mit derselben Adresse an.'
button_label: 'Name auf dem Button'
button_label_help: 'Auf dem Login-Button steht „Mit … anmelden“ und dieser Name. Leer heißt es „Single Sign-on“.'
client_id: 'Client-ID'
client_secret: 'Client-Secret'
issuer: 'Issuer'
issuer_help: 'Die Issuer-URL des Anbieters, genau so, wie sein Discovery-Dokument sie angibt. In Authentik ist das der „OpenID Configuration Issuer“ auf der Seite des Providers.'
password_login_disabled: 'Nur Single Sign-on'
password_login_disabled_help: 'Blendet das Passwortformular aus und weist Passwort-Anmeldungen ab, sodass alle über den Anbieter hereinkommen. Gilt nur, solange hier ein Anbieter eingerichtet ist. Du kannst es erst ankreuzen, nachdem du dich selbst über den Anbieter angemeldet hast, und fällt der Anbieter einmal aus, holt bin/console app:sso:allow-password-login das Formular zurück. Passwörter für Mail-Programme (App-Passwörter) sind nicht betroffen.'
require_verified_email: 'Nur eine Adresse verknüpfen, die der Anbieter bestätigt hat'
require_verified_email_help: 'Eine erste Anmeldung findet ihr Konto über die E-Mail-Adresse. Schalt das nur aus, wenn man die eigene Adresse beim Anbieter nicht selbst ändern kann: Ist es aus, kann jede Person, die das darf, jedes Konto übernehmen, das sich noch nicht über den Anbieter angemeldet hat.'
scopes: 'Scopes'
scopes_help: 'Durch Leerzeichen getrennt. „openid“ wird immer ergänzt, und ohne „email“ findet eine erste Anmeldung ihr Konto nicht. Leer fragt openid, email und profile an.'
heading: 'Single Sign-on'
intro: 'Lass Menschen sich über einen OpenID-Connect-Anbieter anmelden, den du ohnehin betreibst: Authentik, Keycloak, Authelia und ähnliche. Die Login-Seite zeigt dann einen Button über dem Passwortformular, das bleibt.'
redirect_uri_help: 'Trag das beim Anbieter als Redirect-URI ein, genau so, wie es hier steht.'
save: 'Speichern'
saved: 'Single Sign-on gespeichert.'
status:
environment: 'An, aus der Umgebung'
'off': 'Aus'
'on': 'An'
summary:
accounts: '%count% Konten'
active: '%count% aktiv'
armed: '%active%/%total% scharf'
down: '%count% ausgefallen'
failed: '%count% fehlgeschlagen'
failing: '%count% fehlerhaft'
healthy: '%count% in Ordnung'
idle: 'im Leerlauf'
none: 'keine'
ok: '%count% in Ordnung'
queries: '%count% Abfragen'
queue: '%running% laufend · %waiting% wartend'
tables: '%count% Tabellen'
reset:
button: 'Zurücksetzen'
confirm_label: 'Zum Bestätigen %name% eingeben'
confirm_mismatch: 'Das ist nicht %name%, es wurde nichts gelöscht. Bitte den Instanznamen genau so eingeben, wie er angezeigt wird.'
done:
continue: 'Ersten Administrator anlegen'
footnote: 'plMail ist wieder in dem Zustand, in dem eine frische Installation startet.'
heading: 'plMail wurde zurückgesetzt'
lead: 'Alle %count% Tabellen wurden geleert, dazu die gespeicherten Anhänge, Rohnachrichten und Uploads. Es gibt keine Benutzer mehr, diese Sitzung wurde daher abgemeldet.'
page_title: 'Zurücksetzen abgeschlossen'
restart_failed: 'Der Web-Container konnte von hier aus NICHT neu gestartet werden — führe den Befehl oben selbst aus, bevor du plMail wieder benutzt.'
restart_sent: 'Der Web-Container wurde zum Neustart aufgefordert und kommt von selbst zurück. Der Rest des Stacks braucht weiterhin den Befehl oben.'
secrets_heading: 'Die generierten Geheimnisse wurden verworfen'
tagline: 'Hier ist niemand mehr, der sich anmelden könnte'
workers_failed: 'Auch die Worker konnten nicht benachrichtigt werden; sie verwenden den alten Verschlüsselungsschlüssel weiter, bis sie neu gestartet werden.'
heading: 'Daten zurücksetzen'
intro: 'Löscht synchronisierte Daten endgültig aus der Datenbank. Jede Stufe löscht alles, was die Stufe darüber löscht, und mehr.'
monitoring_kept: 'Monitoring-Daten bleiben erhalten. Die gesammelten Protokolle leerst du unter Protokolle, veraltete Heartbeats unter Wartung.'
postgres_password: >-
POSTGRES_PASSWORD wird nicht erneuert. Postgres wurde damit initialisiert und
hält es in seinem eigenen Datenverzeichnis; ein neues Passwort würde plMail
also die Anmeldung an genau der Datenbank verwehren, die es gerade
zurückgesetzt hat. Dafür muss das Datenbank-Volume gelöscht werden — docker
compose down -v — und das kann diese Funktion nicht.
restart_required: 'Danach sofort den gesamten Stack neu starten, bevor du plMail wieder benutzt:'
self_restart: 'Der Web-Container fordert sich selbst zum Beenden auf, sobald diese Seite ausgeliefert ist; compose startet ihn direkt neu. Die Worker werden ebenfalls benachrichtigt, der Befehl oben deckt den Rest des Stacks ab.'
self_restart_unavailable: 'Dieser Prozess kann sich hier nicht selbst neu starten, der Befehl oben ist also der einzige Weg. Von allein passiert nichts.'
stage:
accounts:
confirm: 'Auch die Konten löschen? Jedes Postfach-Passwort und jede OAuth-Verbindung muss danach neu eingetragen werden.'
deletes: 'Das Obige, dazu die Konten selbst samt Alias-Adressen. Jedes Postfach-Passwort und jede OAuth-Verbindung muss neu eingerichtet werden. Deine eigene Anmeldung bleibt unberührt.'
title: 'Mail, Struktur, Kontakte und Konten'
contacts:
confirm: 'Alle synchronisierten Nachrichten, Ordner, Labels und gesammelten Kontakte löschen?'
deletes: 'Das Obige, dazu die gesammelten Kontakte. Sie werden aus eintreffender Mail neu gesammelt, die Adress-Vervollständigung startet also leer.'
title: 'Mail, Struktur und Kontakte'
full:
button: 'Diese Installation löschen'
deletes: >-
Alles, nicht nur synchronisierte Mail: jeden Benutzer (dich
eingeschlossen), jedes Konto samt gespeichertem Passwort und die
Dateien auf der Platte. Die Installation fragt danach wieder nach ihrem
ersten Administrator. Du wirst abgemeldet und kannst dich nicht wieder
anmelden.
title: 'Vollständig zurücksetzen'
full_secrets:
button: 'Installation löschen und Geheimnisse erneuern'
deletes: >-
Alles vom Obigen, dazu die generierten Geheimnisse. Jeder Dienst hält
den alten APP_ENCRYPTION_KEY weiter im Speicher und benutzt ihn bis zum
Neustart. Alles, was du vor dem Neustart des Stacks speicherst, ist für
die Hälfte davon unlesbar.
title: 'Vollständig zurücksetzen und Geheimnisse erneuern'
structure:
confirm: 'Alle synchronisierten Nachrichten, Threads, Ordner und Labels löschen? Die nächste Synchronisierung baut sie neu auf.'
deletes: 'Das Obige, dazu die Postfachstruktur — Ordner und Labels. Die nächste Synchronisierung baut beides neu auf.'
title: 'Mail und Postfachstruktur'
synced_mail:
confirm: 'Alle synchronisierten Nachrichten und Threads löschen? Konten und Ordner bleiben, die nächste Synchronisierung holt die Mail erneut.'
deletes: 'Nachrichten, Threads, Nachrichtenteile und alles in der Warteschlange. Konten, Ordner und Labels bleiben; die Sync-Marker werden zurückgesetzt, damit die nächste Synchronisierung alles erneut holt.'
title: 'Synchronisierte Mail'
unrecoverable:
heading: 'Nicht rückgängig zu machen'
lead: 'Beides lässt sich nicht durch erneutes Synchronisieren wiederherstellen: es löscht die Benutzer, die gespeicherten Postfach-Passwörter und die Dateien auf der Platte. Gib zur Bestätigung den Instanznamen ein — ein Klick allein genügt hier nicht.'
restarting:
back: 'Zurück zur Administration'
continue: 'Weiter'
heading: 'plMail startet neu'
lead: 'Der Web-Container wurde zum Beenden aufgefordert, compose startet ihn direkt neu. Diese Seite lädt sich in wenigen Sekunden selbst neu.'
page_title: 'Neustart'
unavailable_heading: 'Es wurde nichts neu gestartet'
unavailable_lead: 'Dieser Prozess ist nicht der Hauptprozess des Containers und kann ihn daher nicht beenden. Führe stattdessen das hier aus:'
tables:
heading: 'Tabellengrößen'
title: 'Administration'
tokens:
empty: 'Noch keine Token-Erneuerungen erfasst.'
heading: 'Zustand der OAuth-Token'
webhooks:
armed: 'Scharf'
delivery:
endpoint: 'Push-Endpunkt'
endpoint_hint: >-
Das Cloud-Pub/Sub-Push-Abonnement muss exakt an diese URL
senden, inklusive Token. Eine Abweichung wird mit 403
beantwortet und erscheint unten.
heading: 'Zustellweg'
info_logs_off: >-
Erfolgreiche Zustellungen werden auf Info-Level protokolliert
und nicht gespeichert. Setze APP_DB_LOG_LEVEL=info, um sie hier
zu sehen.
no_public_url: >-
APP_PUBLIC_URL ist keine https://-Adresse, daher kann Pub/Sub
diesen Server nicht erreichen.
no_token: >-
GMAIL_PUBSUB_VERIFICATION_TOKEN ist nicht gesetzt. Der Endpunkt
lehnt im Zweifel ab, daher wird jede Benachrichtigung mit 403
zurückgewiesen.
topic: 'Pub/Sub-Thema'
empty: 'Keine Gmail-Konten mit Watch-Status.'
health: 'Zustand'
health_state:
active: 'stellt zu'
degraded: 'registriert, stellt nicht zu'
inactive: 'aus'
lapsed: 'abgelaufen'
heading: 'Gmail-Webhooks'
history_id: 'History-ID'
last_push: 'Letzter Push'
never: 'nie'
none: 'nicht registriert'
resource: 'Ressource'
state:
account_active: 'Konto aktiv'
account_inactive: 'Konto deaktiviert'
push_off: 'Push aus'
push_on: 'Push an'
watch_expiry: 'Watch läuft ab'
updates:
heading: 'Aktualisierungen'
header: '%version% ist verfügbar'
intro: 'plMail prüft jede Stunde, ob der Kanal, dem du folgst, einen neueren Build veröffentlicht hat, und sagt es den Administratoren einmal pro Build: mit einer Benachrichtigung auf jedem Gerät, das sie für Push angemeldet haben, und mit einem Hinweis oben in diesem Bereich.'
saved: 'Kanal gespeichert.'
channel:
label: 'Folgen'
save: 'Speichern'
follows_build: ' Noch hat niemand gewählt, deshalb folgt die Installation dem Build, der gerade läuft.'
releases:
name: 'Veröffentlichungen'
hint: 'Jede getaggte Veröffentlichung: das Image mit dem Tag latest. Für die meisten Installationen das Richtige.'
main:
name: 'Main'
hint: 'Jeder Build des main-Zweigs, sobald er veröffentlicht ist: das Image mit dem Tag main. Das ist, woran gerade gearbeitet wird, und das Änderungsprotokoll beschreibt es noch nicht.'
'off':
name: 'Aus'
hint: 'Keine Prüfung. Dafür wird nichts irgendwohin gesendet.'
state:
available: 'Aktualisierung verfügbar'
current: 'Aktuell'
failed: 'Keine Antwort'
incomparable: 'Nicht vergleichbar'
'off': 'Aus'
unknown: 'Noch nicht geprüft'
running: 'Diese Installation'
newest:
releases: 'Neueste Veröffentlichung'
main: 'Neuester main-Build'
built_at: 'gebaut %when%'
not_yet: 'Noch nicht geprüft'
incomparable: 'In diesen Build ist kein Commit eingestempelt (ein Checkout oder ein Image, das nicht der Release-Workflow gebaut hat), deshalb gibt es nichts, womit sich der neueste Build des Kanals vergleichen ließe.'
checked: 'Zuletzt geprüft'
never: 'nie'
check_now: 'Jetzt prüfen'
error: 'Die letzte Prüfung hat keine Antwort bekommen: %error%.'
error_kept: ' Angezeigt wird, was die letzte beantwortete Prüfung gefunden hat.'
changes:
heading: 'Was neu ist'
count: '{1}Eine Änderung seit diesem Build|]1,Inf[%count% Änderungen seit diesem Build'
all: 'Alle Änderungen auf GitHub'
changelog: 'Änderungsprotokoll'
how:
heading: 'Aktualisieren'
body: 'Hol das neue Image und erstelle die Container neu; auf einem NAS stellst du die App neu bereit. plMail migriert seine Datenbank beim Start, lies also vorher im Änderungsprotokoll, was unter „Before you upgrade“ steht.'
privacy: 'Eine Prüfung fragt die Registry nach dem neuesten Image von %image% und api.github.com, was sich seit diesem Build geändert hat. Über diese Installation wird dabei nichts gesendet außer den Anfragen selbst.'
push:
title: 'plMail %version% ist verfügbar'
body: 'Du verwendest %running%. Öffne Admin → Aktualisierungen, um zu sehen, was sich geändert hat.'
users:
add: Benutzer hinzufügen
console_note: 'Passwörter und die Wiederherstellung der Zwei-Faktor-Authentifizierung laufen über die Server-Konsole, nicht hier — `app:user:password` und `app:user:2fa-disable`. Wer beides im Browser ändern könnte, hätte einen zweiten Weg in jedes Postfach dieser Installation.'
deactivate: Abschalten
deactivate_confirm: '%name% abschalten? Eine Anmeldung ist dann nicht mehr möglich, und schon verbundene Mail-Programme hören ebenfalls auf. Gelöscht wird nichts, und du kannst das Konto hier wieder einschalten.'
deactivated: 'Abgeschaltet'
deactivated_since: 'Abgeschaltet seit %when%'
delete: Benutzer entfernen
delete_confirm: '%name% entfernen? Die Mails bleiben in der Datenbank, eine Anmeldung ist aber nicht mehr möglich.'
edit: Benutzer bearbeiten
field:
email: E-Mail-Adresse
is_admin: Administrator
is_admin_help: 'Erreicht diesen Bereich, verwaltet Benutzer und konfiguriert Anbieter. Kann keine fremden Mails lesen.'
name_first: Vorname
name_last: Nachname
password: Erstes Passwort
password_help: 'Wird einmalig beim Anlegen gesetzt. Danach lässt es sich hier nicht mehr ändern: Ein vergessenes Passwort setzt du auf der Server-Konsole mit `app:user:password` zurück.'
flash:
deactivated: 'Abgeschaltet. Eine Anmeldung ist erst wieder möglich, wenn du das Konto einschaltest.'
demote_last_refused: 'Das ist die letzte Person mit Administratorrechten — das Häkchen blieb, wie es war. Ernenne zuerst jemand anderen.'
demote_self_refused: 'Du kannst dir die Administratorrechte nicht selbst entziehen. Alles andere im Formular wurde gespeichert.'
reactivated: 'Wieder eingeschaltet. Eine Anmeldung ist wieder möglich.'
heading: Benutzer
last_login: 'Zuletzt gesehen %when%'
never_signed_in: Noch nie angemeldet
no_password_edit: 'Passwörter lassen sich hier nicht ändern. Ein fremdes Passwort zu setzen würde eine Admin-Sitzung zum Weg in dieses Postfach machen — aus demselben Grund ist das Entfernen eines zweiten Faktors ein Konsolenbefehl.'
none: Noch keine Benutzer.
reactivate: Wieder einschalten
role:
admin: Admin
search: Benutzer suchen…
two_factor_on: Zwei-Faktor-Authentifizierung ist aktiv
two_factor_short: 2FA
version:
hint: Der Build, den diese Installation ausführt — die Version und der Commit, aus dem sie gebaut wurde.
# The All Mail lists — every conversation outside Spam and the bin
# (LabelRole::AllMail). Their heading is sidebar.nav.all_mail.
all_mail:
empty: "Keine Mail außerhalb von Spam und Papierkorb."
alias:
added: 'Adresse hinzugefügt.'
catch_all_added: 'Catch-all-Domain hinzugefügt.'
catch_all_duplicate: 'Diese Domain ist in diesem Konto bereits als Catch-all eingetragen.'
catch_all_invalid: 'Das sieht nicht nach einer Domain aus. Gib sie so ein: example.com.'
catch_all_removed: 'Catch-all-Domain entfernt.'
catch_all_unsupported: 'Gmail und Outlook senden nur über Adressen, die der Anbieter kennt. Eine Catch-all-Domain lässt sich in diesem Konto deshalb nicht nutzen.'
deleted: 'Adresse entfernt.'
duplicate: 'Diese Adresse ist bereits in diesem Konto vorhanden.'
gmailify_off: 'Gmailify ist aus. Dieses Gmail-Konto behält nur Mail, die an es gerichtet ist, und die Kopien der anderen Konten folgen Gmail nicht mehr.'
gmailify_on: 'Gmailify ist an. Mail, die dieses Gmail-Konto für deine anderen Konten abholt, wird unter diesen abgelegt.'
gmailify_unsupported: 'Gmailify ist eine Einstellung von Gmail-Konten.'
invalid: 'Das sieht nicht nach einer gültigen E-Mail-Adresse aus.'
name_cleared: 'Absendername entfernt. Diese Adresse sendet wieder unter dem Namen des Kontos.'
name_set: 'Absendername gespeichert.'
primary_set: 'Hauptadresse aktualisiert.'
refreshed: 'Vom Anbieter aktualisiert.'
status_blocked: 'Die Hauptadresse kann nicht deaktiviert werden — lege zuerst eine andere als Hauptadresse fest.'
status_set: 'Adresse aktualisiert.'
app:
name: Mail
attachment:
download_named: '%name% herunterladen'
sign:
action: Unterschreiben
draw: Zeichne deine Unterschrift und setze sie dann auf die Seite.
clear: Neu zeichnen
cancel: Abbrechen
place: Auf die Seite setzen
hint: Zieh sie an die richtige Stelle und häng sie dann an eine Antwort.
download: Unterschriebene Kopie herunterladen
reply: Mit unterschriebener Kopie antworten
protected: Dieses PDF ist geschützt und kann hier nicht unterschrieben werden. Lesen geht weiterhin.
unreadable: Dieses PDF lässt sich hier nicht bearbeiten. Lesen geht weiterhin.
use_saved: Gespeicherte Unterschrift verwenden
preview:
download: Herunterladen
failed: Dieses PDF konnte nicht geöffnet werden. Du kannst es trotzdem herunterladen.
loading: Wird geöffnet…
media_failed: Diese Datei kann hier nicht angezeigt werden. Du kannst sie trotzdem herunterladen.
untitled: Anhang
zoom_in: Vergrößern
zoom_out: Verkleinern
calendar:
# plMail's date-and-time picker; see calendar--when.
when:
previous_month: 'Vorheriger Monat'
next_month: 'Nächster Monat'
send_at: 'Senden am'
group: 'Beginn und Ende'
today: 'Heute'
tomorrow: 'Morgen'
same_day: 'Am selben Tag'
same_short: 'Selber'
another_day: 'Anderer Tag'
back_to_week: 'Zurück zu dieser Woche'
hour: 'Stunde'
minute: 'Minute'
half: 'Vormittag oder Nachmittag'
another_minute: 'Andere Minute'
quarter_hours: 'Viertelstunden'
exact_minute: 'Genaue Minute'
minutes: '%count% Min.'
hours: '%count% Std.'
day_one: '1 Tag'
days: '%count% Tage'
length: 'Dauer'
default_name: Persönlich
alert:
mail:
subject: 'Erinnerung: %title%'
untitled: Termin ohne Titel
booking:
action:
delete: 'Buchungsseite "%name%" löschen'
disable: 'Buchungsseite "%name%" abschalten'
edit: 'Buchungsseite "%name%" bearbeiten'
enable: 'Buchungsseite "%name%" einschalten'
regenerate: 'Buchungsseite "%name%" eine neue Adresse geben'
badge: Über deine Buchungsseite gebucht
booked:
body: 'Dein Termin "%name%" steht im Kalender.'
mail: Eine Bestätigung mit Kalenderdatei ist zu dir unterwegs.
title: Termin gebucht
confirm: Buchung bestätigen
count: '{0}Keine Buchungsseiten|{1}1 Buchungsseite|]1,Inf[ %count% Buchungsseiten'
day_none: Nichts frei
delete_confirm: '"%name%" löschen? Die bereits gebuchten Termine gehen mit.'
disabled: Aus
duration: '{1} 1 Minute|]1,Inf[ %count% Minuten'
empty_list: Noch keine Buchungsseiten.
error:
no_calendar: >-
Wähle einen Kalender, der Änderungen annimmt, damit Buchungen
dort landen können.
taken: Diese Zeit wurde gerade vergeben. Bitte wähle eine andere.
too_many: >-
Das sind viele Buchungen von einem Ort. Bitte warte etwas, bevor
du es erneut versuchst.
form:
add: Neue Buchungsseite
buffer_help: Ruhezeit, die vor und nach bestehenden Terminen frei bleibt.
buffer_minutes: Puffer (Minuten)
busy: Diese Kalender auf Überschneidungen prüfen
busy_help: >-
Eine Zeit wird nur angeboten, wenn nichts in diesen Kalendern sie
überschneidet. Der Kalender, in dem Buchungen landen, wird immer
geprüft — auch ohne Häkchen.
calendar: Buchungen landen in
calendar_help: >-
Wohin der Termin geschrieben wird. Synchronisiert dieser Kalender
irgendwohin, geht die Buchung mit.
day_end: Bis
day_start: Von
description: Worum es geht
edit: Buchungsseite bearbeiten
horizon_days: Buchbar bis (Tage im Voraus)
name: Wie der Termin heißt
name_help: >-
Wird auf der Seite gezeigt und als Titel in deinem Kalender
verwendet.
notice_minutes: Kürzeste Vorlaufzeit (Minuten)
slot_minutes: Termindauer (Minuten)
time_zone: Deine Zeiten gelten in
time_zone_help: >-
Die Zeiten oben sind Uhrzeiten in dieser Zone — 09:00 bleibt neun
Uhr morgens, auch wenn die Uhren umgestellt werden.
weekdays: Tage, an denen du buchbar bist
lands_on: 'landet in %calendar%'
no_slots: Zurzeit sind keine Zeiten frei. Versuche es später noch einmal.
no_slots_this_week: Diese Woche ist nichts frei. Schau eine Woche vor oder zurück.
note: Noch etwas? (optional)
pick_a_time: Zeit wählen
toast:
created: >-
Buchungsseite erstellt. Kopiere die Adresse jetzt — sie wird nicht
noch einmal gezeigt.
deleted: Buchungsseite gelöscht.
disabled: Buchungsseite abgeschaltet.
enabled: Buchungsseite eingeschaltet.
regenerated: Neue Adresse. Die alte funktioniert nicht mehr.
updated: Buchungsseite aktualisiert.
weekday:
1: Mo
2: Di
3: Mi
4: Do
5: Fr
6: Sa
7: So
your_email: Deine E-Mail-Adresse
your_email_help: Bestätigung und Kalenderdatei gehen hierhin.
your_name: Dein Name
zone: 'Zeiten in %zone%'
chip:
on_calendars: 'In %calendars%'
delete_confirm: '"%name%" mit allen Terminen löschen? Das lässt sich nicht rückgängig machen.'
empty: Nichts in nächster Zeit
empty_day: Nichts an diesem Tag
details:
description: Beschreibung
edit: Bearbeiten
extracted_hint: plMail hat diesen Termin aus dieser Nachricht gelesen. Eingetragen hat ihn niemand.
participants: Teilnehmende
provenance: Aus dieser E-Mail
recurring: Wiederkehrender Termin
status: Status
until: bis %date%
your_answer: Deine Antwort
error:
instance_create: >-
Ein einzelner Termin lässt sich nicht allein in einen Kalender
legen. Wähle „Alle Termine“, um diesen Termin in einen weiteren
Kalender zu legen.
invalid_times: 'Diese Zeiten gehen nicht — das Ende muss nach dem Beginn liegen.'
no_copies: 'Nichts ausgewählt, also nichts geändert. Wähle mindestens einen Kalender.'
read_only: >-
Dieser Termin steht nur in Kalendern, die keine Änderungen annehmen —
er bleibt, wo er war.
event:
alert:
action:
display: Benachrichtigung
email: E-Mail
amount:
days: '{1} 1 Tag|]1,Inf[ %count% Tagen'
hours: '{1} 1 Stunde|]1,Inf[ %count% Stunden'
minutes: '{1} 1 Minute|]1,Inf[ %count% Minuten'
at_absolute: 'Am %when%'
at_time: Zum Beginn des Termins
custom: Etwas anderes, in Minuten
custom_action: Wie die zusätzliche Erinnerung ankommt
day_1: 1 Tag vorher
hour_1: 1 Stunde vorher
legend: Erinnerungen
minutes_10: 10 Minuten vorher
minutes_30: 30 Minuten vorher
minutes_5: 5 Minuten vorher
relation:
after_end: '%amount% nach dem Ende'
after_start: '%amount% nach dem Beginn'
before_end: '%amount% vor dem Ende'
before_start: '%amount% vor dem Beginn'
series_note: >-
Erinnerungen gehören zum ganzen Termin, die Auswahl darunter
gilt also nicht für sie.
unreadable: Erinnerung anderswo gesetzt
all_day: Ganztägig
calendar: Kalender
cancel: Abbrechen
copies:
help: >-
Angehakte Kalender bekommen diesen Termin und jede Änderung, die
du speicherst. Einen Haken zu entfernen löscht nichts: Dieser
Kalender behält die Fassung, die er jetzt hat, und bekommt keine
Aktualisierungen mehr — sobald beide sich unterscheiden,
erscheint er als eigener Eintrag.
hidden: Dieser Kalender ist ausgeblendet — der Termin erscheint erst, wenn du ihn einblendest
legend: Kalender
mirrored: 'Dieser Kalender wird mit seinem Anbieter synchronisiert — der Termin landet auch auf deinen anderen Geräten'
read_only: Dieser Kalender nimmt keine Änderungen an
same_remote: 'Schon abgedeckt: Dieser Kalender spiegelt denselben wie einer weiter oben'
delete: Löschen
description: Beschreibung
details_heading: 'Termin'
dismiss: Kein Termin
dismiss_confirm: >-
Diesen Termin entfernen und nicht wieder anlegen? Spätere E-Mails zur
selben Buchung tragen ihn nicht erneut in den Kalender ein.
ends: Ende
error:
end_before_start: Das Ende muss nach dem Beginn liegen.
summary: Dieser Termin konnte nicht gespeichert werden.
title_required: Gib dem Termin einen Titel.
extracted_note: >-
Dieser Termin stammt aus einer E-Mail. Wenn du ihn bearbeitest,
überschreiben spätere Nachrichten zur selben Buchung deine
Änderungen nicht mehr.
location: Ort
new: Neuer Termin
new_on: Neuer Termin am %date%
repeat: Wiederholung
repeats: Wiederholung
save: Speichern
scope:
instance: Diesen Termin
instance_note: >-
„Diesen Termin“ ändert nur den geöffneten Einzeltermin und kann
ihn deshalb nicht in einen Kalender legen, in dem er noch nicht
steht.
legend: Ändern
series: Alle Termine
starts: Beginn
title: Titel
form:
add: Neuer Kalender
color: Farbe
edit: Kalender bearbeiten
name: Name
time_zone: Zeitzone
time_zone_help: >-
Die Zone, in der dieser Kalender gelesen wird — und in der ein
Termin ohne eigene Zone angezeigt wird.
grid:
all_day: Ganztägig
continues_after: Geht in den nächsten Tag hinein
continues_before: Hat am Vortag begonnen
keyboard_hint: >-
Mit Alt und den Pfeiltasten verschiebst du diesen Termin, mit Alt und
Umschalt änderst du seine Dauer. Enter speichert, Escape nimmt es
zurück.
pending: >-
Verschoben auf %start% – %end%. Enter speichert, Escape nimmt es
zurück.
read_only: Dieser Kalender nimmt keine Änderungen an — der Termin lässt sich nicht verschieben.
reverted: Bleibt, wo er war.
until: bis %when%
ics:
error:
no_calendar: Wähle einen Kalender für die Termine.
no_file: >-
Wähle eine .ics-Datei. Falls du eine gewählt hast, ist
sie womöglich größer, als plMail einliest.
no_url: Gib die Adresse ein, unter der der Kalender
veröffentlicht ist.
export:
calendar: '"%name%" als Kalenderdatei herunterladen'
calendar_title: Als .ics herunterladen
event: .ics herunterladen
import:
calendar: Hinzufügen zu
dedup_note: >-
Ein Termin, der schon in diesem Kalender steht, wird
aktualisiert statt doppelt angelegt; einer, der bereits in einem
anderen deiner Kalender steht — aus einer Einladung oder aus
einem gespiegelten Kalender — bleibt, wo er ist.
file: Kalenderdatei
file_help: Eine .ics-Datei, bis zu %size% MB.
intro: >-
Liest eine .ics-Datei — einen Export aus einem anderen Kalender
oder eine zugesandte Einladung — in einen deiner Kalender ein.
no_calendars: >-
Keiner deiner Kalender nimmt neue Termine an. Ein gespiegelter
Kalender ist eine schreibgeschützte Kopie; leg zuerst
einen eigenen an.
submit: Importieren
title: Kalenderdatei importieren
subscribe:
address: Kalenderadresse
address_help: >-
Die Adresse, unter der ein Kalender veröffentlicht ist, endend
auf .ics. Ein webcal://-Link geht ebenso — das ist dieselbe
Adresse unter anderem Namen.
connect: Adresse abonnieren
intro: >-
Folge einem veröffentlichten Kalender: Feiertage, ein
Spielplan oder die geheime Adresse deines eigenen Google- oder
Outlook-Kalenders. plMail liest ihn im Hintergrund neu ein und
zeigt ihn neben deinen eigenen Kalendern.
name: Name
name_help: >-
Wie er hier heißen soll. Leer gelassen, benennt sich der
Kalender selbst.
read_only_note: >-
Ein abonnierter Kalender ist schreibgeschützt — er ist die Kopie
einer veröffentlichten Datei, Änderungen hier erreichten sie
also nie. Wer diese Adresse hat, kann den Kalender lesen;
behandle eine geheime Adresse wie ein Passwort.
submit: Abonnieren
title: Kalenderadresse abonnieren
toast:
import_empty: >-
Diese Datei enthält keine Termine, die plMail lesen kann. Prüf
nach, ob es wirklich ein Kalenderexport ist.
import_nothing_new: >-
Nichts hinzuzufügen — jeder Termin aus dieser Datei steht schon
in deinen Kalendern.
imported: '%added% hinzugefügt, %updated% aktualisiert, %skipped% übersprungen.'
subscribed: >-
Abonniert — der Kalender füllt sich binnen einer Minute.
invite:
action:
accepted: Zusagen
declined: Absagen
needs_action: Keine Antwort
tentative: Vielleicht
attendees: '%count% eingeladen'
cancelled: Dieser Termin wurde abgesagt.
held:
applied: 'Änderung übernommen.'
apply: 'Änderung übernehmen'
hint: 'Diese Nachricht will diesen Termin ändern, kommt aber nicht von dem Absender, von dem der Termin stammt (%sender%). Es wurde nichts geändert.'
not_applied: 'Die Änderung ließ sich nicht übernehmen — eine neuere ist schon eingetragen, oder du hast den Termin selbst bearbeitet.'
offer:
accepted: In den Kalender
declined: Nein danke
hint: "An diese Nachricht angehängt — in deinem Kalender wurde nichts eingetragen."
status:
accepted: In deinem Kalender
declined: Nicht eingetragen
organiser: Eingeladen von %name%
organiser_tag: Organisation
placed: '%title% steht jetzt in deinem Kalender: %when%.'
reply:
body: '%name% hat auf diese Einladung mit %status% geantwortet.'
status:
accepted: Zugesagt
declined: Abgesagt
needs_action: Keine Antwort
tentative: Vielleicht
toast:
added: In deinen Kalender eingetragen.
not_added: Nicht in deinen Kalender eingetragen.
not_sent: >-
Deine Antwort wurde hier gespeichert, konnte aber nicht an die
Organisation gesendet werden.
sent: Deine Antwort wurde gesendet.
kind:
call: Anruf
delivery: Lieferung
dining: Reservierung
event: Termin
flight: Flug
lodging: Übernachtung
meeting: Termin
order: Bestellung
rental: Mietwagen
ticket: Ticket
train: Zug
more_count: '%count% weitere'
nav:
next: Weiter
previous: Zurück
open_day: 'Alles am %date%'
pane:
mode:
calendar: Kalender in voller Breite zeigen
mail: Mail zeigen
split: Kalender neben der Mail zeigen
resize: Kalender in der Breite ändern
proposal:
action:
add: In den Kalender
dismiss: Kein Termin
explain: >-
In dieser E-Mail gefunden — im Kalender steht noch nichts.
toast:
added: Im Kalender eingetragen.
dismissed: >-
Verworfen — dieses Datum wird nicht noch einmal vorgeschlagen,
egal wie oft diese Nachricht gelesen wird.
no_calendar: >-
Es gibt keinen Kalender dafür, es wurde nichts gespeichert.
untitled: (kein Betreff)
repeat:
daily: Täglich
keep: Aktuelle Regel beibehalten
monthly: Monatlich
none: Wiederholt sich nicht
weekly: Wöchentlich
yearly: Jährlich
share:
action:
delete: 'Link "%name%" löschen'
edit: 'Link "%name%" bearbeiten'
regenerate: 'Link "%name%" eine neue Adresse geben'
revoke: 'Link "%name%" widerrufen'
all_day: Ganztägig
busy: Belegt
busy_free_only: Dieser Link zeigt nur, wann der Kalender belegt ist — sonst nichts.
count: '{0}Keine geteilten Links|{1}1 geteilter Link|]1,Inf[ %count% geteilte Links'
covers: '{0}keine Kalender|{1}1 Kalender|]1,Inf[ %count% Kalender'
day_free: An diesem Tag nichts.
delete_confirm: '"%name%" löschen? Wer die Adresse noch hat, verliert sie.'
detail:
description: Beschreibung
location: Ort
participants: Wer dabei ist
title: Titel
empty: In diesem Zeitraum nichts.
empty_list: Noch keine geteilten Links.
footer: Geteilter Kalender
form:
add: Neuer geteilter Link
calendars: Welche Kalender
days: Tage im Voraus
edit: Geteilten Link bearbeiten
ends_on: Letzter Tag
name: Wie du ihn nennst
name_help: >-
Nur du siehst das. So findest du den Link wieder, um ihn zu ändern
oder zu widerrufen.
reveals: Was dieser Link preisgibt
reveals_help: >-
Ohne Häkchen zeigt der Link nur, wann der Kalender belegt ist.
Jedes Häkchen fügt eine Angabe hinzu. Ein als privat markierter
Termin bleibt ein reiner Belegt-Block, egal was hier angehakt ist.
rolling_days: Tage im Voraus
starts_on: Erster Tag
token_note: >-
Die Adresse wird einmal gezeigt, beim Anlegen. Sie wird nicht
gespeichert und kann nicht erneut gezeigt werden — geht sie
verloren, gib dem Link eine neue.
window: Wie weit er reicht
heading: Geteilter Kalender
minted:
heading: Die Adresse für diesen Link
once: >-
Kopiere sie jetzt. Sie wird nirgends gespeichert, also ist dies
die einzige Gelegenheit.
not_shared: Nicht geteilt
outside_window: Tage außerhalb des geteilten Zeitraums
page_title: Geteilter Kalender
reveals: 'Zeigt %details%'
reveals_busy_free: Nur belegt/frei
revoked: Widerrufen
subscribe: Zu deinem Kalender hinzufügen
toast:
created: >-
Link erstellt. Kopiere die Adresse jetzt — sie wird nicht noch
einmal gezeigt.
deleted: Link gelöscht.
regenerated: Neue Adresse. Die alte funktioniert nicht mehr.
revoked: Link widerrufen.
updated: Link aktualisiert.
window:
fixed: Zwischen zwei Daten
rolling: Ein rollendes Fenster ab heute
window_label: '%from% – %to%'
zone: 'Zeiten in %zone%'
soon:
next: 'Als Nächstes'
empty: Nichts in Sicht
empty_hint: >-
Termine aus deinem Kalender und die Flüge, Lieferungen,
Reservierungen und Tickets aus deinen E-Mails erscheinen hier für
die nächsten zwei Wochen.
from: 'Aus %subject%'
open: Was demnächst ansteht
title: Demnächst
untitled: (kein Betreff)
title: Kalender
status:
cancelled: Abgesagt
confirmed: Bestätigt
tentative: Vorläufig
toast:
created: Kalender angelegt
default_set: Neue Termine landen jetzt hier
deleted: Kalender gelöscht
disconnected: Server getrennt
disconnected_kept: >-
Server getrennt — %count% Termin(e), die aus E-Mails stammen und
nicht von einem Kalender, sind in deinen Standardkalender umgezogen.
event_saved: Termin gespeichert
hidden: Kalender ausgeblendet
saved_on_hidden: >-
Termin in %calendars% gespeichert — dieser Kalender ist
ausgeblendet. Blende ihn ein, um den Termin zu sehen.
shown: Kalender eingeblendet
subscriptions_saved: Auswahl gespeichert
subscriptions_saved_kept: >-
Auswahl gespeichert — %count% Termin(e), die aus E-Mails stammen und
nicht vom Kalender, sind in deinen Standardkalender umgezogen.
subscriptions_unchanged: Nichts geändert
sync_queued: Wird abgeglichen — dieser Kalender ist gleich aktuell.
updated: Kalender gespeichert
today: Heute
toolbar:
range: '%start%–%end%'
range_day: '%day%.'
range_short: '%start%–%end%'
range_short_month: '%start%.–%end%. %month%'
upcoming:
imminent: Beginnt innerhalb einer Stunde
later: Heute noch
soon: In wenigen Stunden
view:
agenda: Agenda
day: Tag
monday_week: Woche
month: Monat
week: '7 Tage'
clipboard:
copied: Kopiert
copy_failed: Kopieren fehlgeschlagen
compose:
# Wird im Dock gezeigt, wenn ein Klick auf „Schreiben“ kein Fenster
# hervorbringt — ein 5xx, eine abgelaufene Sitzung, eine tote Verbindung.
ai:
accept: 'Einfügen'
disabled: 'Die Schreibhilfe ist ausgeschaltet.'
discard: 'Verwerfen'
disclaimer: 'Von einem Modell geschrieben. Lies es, bevor du es abschickst.'
error:
not_pulled: 'Der Modell-Host hat dieses Modell nicht. Ein Administrator muss es zuerst laden.'
refused: 'Der Modell-Host hat die Anfrage abgelehnt.'
timeout: 'Der Modell-Host hat zu lange gebraucht.'
failed: 'Die Anfrage konnte nicht gesendet werden.'
label: 'Beim Schreiben helfen'
no_answer: 'Der Modell-Host hat nicht geantwortet.'
preview: 'Vorgeschlagener Text, noch nicht in deiner Nachricht'
prompt:
toggle: 'Anweisungen'
title: 'Die Anweisungen für den nächsten Versuch ändern'
label: 'Wie für dich geschrieben werden soll'
placeholder: 'z. B. Höchstens drei Sätze, und fang nie mit „ich hoffe, es geht dir gut“ an.'
retry: 'Damit noch mal versuchen'
hint: 'Nur in diesem Fenster. Dauerhaft änderst du das unter Einstellungen → KI.'
rate: '%count% Tokens · %rate% pro Sekunde'
regenerate: 'Nochmal versuchen'
slow_hint: 'Die erste Anfrage nach einer Weile dauert etwa fünfzehn Sekunden, solange das Modell lädt.'
state:
done: 'Fertig. In deiner Nachricht steht noch nichts davon.'
sent: 'An das Modell geschickt…'
stopped: 'Angehalten. Behalte, was angekommen ist, oder wirf es weg.'
stop: 'Anhalten'
task:
formal: 'Förmlicher formulieren'
proofread: 'Rechtschreibung und Grammatik korrigieren'
reply: 'Antwort entwerfen'
shorten: 'Kürzer fassen'
timing: 'Modell laden %load% s · %count% Tokens in %seconds% s · insgesamt %total% s'
working: 'Schreibt…'
open_failed:
dismiss: Schließen
failed: Das Schreibfenster konnte nicht geöffnet werden. Bitte versuche es erneut.
offline: Das Schreibfenster konnte nicht geöffnet werden — du scheinst offline zu sein.
signed_out: Deine Sitzung ist abgelaufen. Lade die Seite neu und melde dich erneut an.
no_account:
body: Richte zuerst ein Postfach ein, dann kannst du sofort davon schreiben.
cta: Mail-Konto hinzufügen
heading: Noch kein Mail-Konto
font_family:
label: Schriftart
monospace: Monospace
sans: Serifenlos
serif: Serif
font_size:
huge: Sehr groß
label: Schriftgröße
large: Gross
normal: Normal
small: Klein
align:
center: Zentriert ausrichten
left: Linksbündig ausrichten
right: Rechtsbündig ausrichten
confirm:
no_body: Diese Nachricht hat keinen Text.
no_subject: Diese Nachricht hat keinen Betreff.
send_anyway: Trotzdem senden?
plain_text: Der Wechsel zu Nur-Text entfernt jede Formatierung aus dieser Nachricht. Fortfahren?
open_variables: 'Ein Platzhalter aus einer Vorlage ist noch nicht ausgefüllt.'
emoji:
activities: Aktivitäten
animals_nature: Tiere und Natur
categories: Kategorien
custom: Eigene
favorites: Häufig verwendet
flags: Flaggen
food_drink: Essen und Trinken
loading: "Wird geladen…"
network_error: Die Emoji konnten nicht geladen werden.
objects: Objekte
people_body: Menschen und Körper
region: Emoji-Auswahl
search: Suchen
search_description: Wenn Ergebnisse erscheinen, wähle mit Pfeil hoch oder runter aus und bestätige mit Enter.
search_results: Suchergebnisse
skin_tone: "Hautton wählen (aktuell {skinTone})"
skin_tone_description: Wenn geöffnet, wähle mit Pfeil hoch oder runter aus und bestätige mit Enter.
skin_tones: Hauttöne
smileys_emotion: Smileys und Emotionen
symbols: Symbole
tone_dark: Dunkel
tone_default: Standard
tone_light: Hell
tone_medium: Mittel
tone_medium_dark: Mitteldunkel
tone_medium_light: Mittelhell
travel_places: Reisen und Orte
unsupported: Dieser Browser kann keine farbigen Emoji darstellen.
list:
ordered: Nummerierte Liste
unordered: Aufzählung
priority:
high: Hoch
label: Priorität
low: Niedrig
none: Keine Priorität
normal: Normal
quote:
hide: zitierten Text ausblenden
show: zitierten Text anzeigen
schedule:
cancel: Geplanten Versand abbrechen
confirm: Versand planen
custom: Datum und Uhrzeit wählen
error:
past: Dieser Zeitpunkt liegt bereits in der Vergangenheit.
too_far: Nachrichten lassen sich höchstens %days% Tage zurückhalten.
too_soon: Wähle einen Zeitpunkt mindestens eine Minute in der Zukunft.
unreadable: Das ist kein gültiges Datum mit Uhrzeit.
heading: Später senden
monday_morning: Montagmorgen
scheduled_for: Geplanter Versand
timezone_hint: Alle Zeiten in %zone%.
toast: Geplant für %when%
toast_cancel: Versand abbrechen
tomorrow_afternoon: Morgen Nachmittag
tomorrow_morning: Morgen früh
when: '%date%, %time%'
status:
pending_many: "noch %count% Zeichen bis zum Speichern"
pending_one: noch ein Zeichen bis zum Speichern
save_failed: Entwurf konnte nicht gespeichert werden
saved: Entwurf gespeichert
saving: "Wird gespeichert…"
uploading: "Wird hochgeladen…"
upload:
failed: Hochladen fehlgeschlagen
images_only: In den Nachrichtentext lassen sich nur Bilder einfügen
over_limit: "Datei zu groß (max. %limit% MB)"
post_too_large: Upload zu groß
too_large: Datei zu groß
add_bcc: Bcc-Empfänger hinzufügen
add_cc: Cc-Empfänger hinzufügen
attach: Dateien anhängen
attach_failed: Anhängen fehlgeschlagen
attach_remove_failed: Anhang konnte nicht entfernt werden
attach_too_large: "%name% ist größer als %limit% MB"
bcc: Bcc
bold: Fett
cc: Cc
click_to_cancel: zum Abbrechen klicken
continue_editing: Weiter bearbeiten
discard: Entwurf löschen
empty_draft: (leerer Entwurf)
encrypt: Nachricht verschlüsseln
encrypt_unavailable: Verschlüsselung ist noch nicht verfügbar.
expand: Fenster vergrößern
formatting: Formatierung
forward: Weiterleiten
from: Von
image: Bild einfügen
image_insert_failed: Das Bild konnte nicht in die Nachricht eingefügt werden
indent: Einzug vergrößern
insert_emoji: Emoji einfügen
insert_link: Link einfügen
invalid_address: "„%address%“ ist keine gültige E-Mail-Adresse"
italic: Kursiv
link:
add: Link einfügen
apply: Übernehmen
cancel: Abbrechen
change: Ändern
dialog: Link
edit: Link bearbeiten
heading: Link
invalid: Bitte eine Webadresse eingeben.
open: Öffnen
remove: Link entfernen
text_label: Anzuzeigender Text
text_placeholder: Die Wörter, die den Link tragen
unsafe: Nur Web-, Mail- und Telefonadressen lassen sich verlinken.
url_label: Webadresse
url_placeholder: "beispiel.de"
minimize: Minimieren
more_fields: Absender, Cc, Bcc und Betreff anzeigen
more_options: Weitere Optionen
new_message: Neue Nachricht
outdent: Einzug verkleinern
plain_text: Nur-Text-Modus
plain_warning:
cancel: Formatierung behalten
continue: Fortfahren
title: Formatierung entfernen?
pop_out: In eigenem Fenster öffnen
send_warning:
cancel: Weiter bearbeiten
continue: Trotzdem senden
title: Diese Nachricht senden?
read_receipt: Lesebestätigung anfordern
recipient_required: Füge mindestens einen Empfänger hinzu, bevor du sendest.
redo: Wiederholen
reply: Antworten
reply_all: Allen antworten
save_and_close: Entwurf speichern und schließen
send: Senden
send_options: Sendeoptionen
sending: "Wird gesendet…"
signature: Signatur einfügen
signature_none: Für diese Adresse ist keine Signatur hinterlegt
subject_label: Betr
subject_placeholder: Betreff
text_color: Textfarbe
to: An
underline: Unterstrichen
undo: Rückgängig
body_placeholder: "Schreibe deine Nachricht…"
attachment_remove: Anhang entfernen
# The template picker in the compose window. The templates themselves
# are written in Settings → Templates (settings.templates).
template:
all_accounts: 'Alle Konten'
empty: 'Noch keine Vorlagen. Schreib eine in den Einstellungen oder speichere diese Nachricht als Vorlage.'
failed: 'Die Vorlage konnte nicht geladen werden.'
insert: 'Vorlage einfügen'
loading: 'Vorlagen werden geladen…'
manage: 'Vorlagen verwalten'
no_match: 'Keine Vorlage mit diesem Namen.'
nothing_to_save: 'Hier steht kein Text, der sich als Vorlage speichern ließe.'
save_draft: 'Diese Nachricht als Vorlage speichern'
saved: 'Als Vorlage „%name%“ gespeichert. Umbenennen oder verschieben kannst du sie in den Einstellungen.'
search: 'Vorlage suchen'
untitled: 'Unbenannte Vorlage'
demo:
bar:
title: Demo
blurb: Ein Wegwerf-Postfach. Nichts davon ist echt, und was du schreibst, verlässt den Server nicht.
next: 'Als Nächstes: %subject%'
receive: Mail empfangen
flash:
blocked: Ein echtes Postfach zu verbinden ist in der Demo abgeschaltet.
login:
blurb: Sieh dich in plMail um — mit einem eigenen Postfach, ohne Anmeldung und ohne Adresse.
start: Demo starten
disclaimer: Dein Demo-Postfach wird nach ein paar Stunden automatisch gelöscht.
privacy:
account: >-
Beim Start der Demo wird ein Wegwerf-Konto mit einer zufällig erzeugten
Adresse angelegt. Du wirst nicht nach Namen, E-Mail-Adresse oder Passwort
gefragt, und es wird nichts davon gespeichert. Alles, was du dort eingibst —
Nachrichten, Entwürfe, Kalendereinträge — existiert nur in diesem Konto und
wird zusammen mit ihm automatisch gelöscht, etwa %ttl% nach dem Anlegen. In
der Demo geschriebene Mail wird nie versendet: Es besteht keine Verbindung zu
einem Mailserver.
account_title: Das Demo-Konto
complaint: >-
Außerdem steht dir ein Beschwerderecht bei einer Datenschutz-Aufsichtsbehörde
zu.
controller_intro: Verantwortlich für die hier beschriebene Verarbeitung:
controller_title: Verantwortlicher
controller_unset: 'Nicht gesetzt. Eine Datenschutzerklärung muss den Verantwortlichen nennen — setz diese Werte, bevor du die Instanz öffentlich machst.'
cookie_mercure: hält die Verbindung für Live-Aktualisierungen offen, solange du angemeldet bist.
cookie_session: hält dich in deinem Demo-Konto angemeldet. Wird beim Schließen des Browsers gelöscht.
cookie_ui: merkt sich das gewählte Design und die Sprache.
cookies: >-
Es werden drei Cookies gesetzt, alle technisch notwendig für den Betrieb.
Es gibt kein Tracking-, Werbe- oder Analyse-Cookie und deshalb auch kein
Cookie-Banner.
cookies_title: Cookies
host: Der Server wird in unserem Auftrag von %host% betrieben, als Auftragsverarbeiter auf Grundlage eines Auftragsverarbeitungsvertrags.
host_unset: 'Nicht gesetzt. Das Unternehmen, das den Server betreibt, ist Auftragsverarbeiter und muss hier genannt werden.'
logs: >-
Wie jeder Webserver protokolliert auch dieser jeden Abruf: die IP-Adresse,
von der er kam, den Zeitpunkt, die angeforderte Seite, die verweisende Seite
und die Browserkennung. Das ist für den Betrieb und die Absicherung des
Dienstes erforderlich (Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse).
Diese Protokolle werden rotiert und nicht zur Profilbildung verwendet.
logs_title: Server-Logfiles
processing_title: Was verarbeitet wird, und auf welcher Grundlage
rights: >-
Du hast das Recht auf Auskunft über die zu dir gespeicherten Daten sowie auf
deren Berichtigung, Löschung oder Einschränkung der Verarbeitung, außerdem
ein Widerspruchsrecht und ein Recht auf Datenübertragbarkeit. Wende dich
dafür an die oben genannte Adresse.
rights_title: Deine Rechte
stats: >-
Um zu sehen, wie stark die Demo genutzt wird, wird jede gestartete Demo-Sitzung
gezählt. Gespeichert werden der Zeitpunkt und ein mit einem geheimen Schlüssel
gebildeter Hashwert der um ihren letzten Teil gekürzten IP-Adresse (bei IPv4 das
letzte Oktett, bei IPv6 die letzten 80 Bit) — nie die Adresse selbst. Der Hashwert
zeigt nur, dass zwei Sitzungen aus demselben Netz kamen, und wird nach %days% Tagen
gelöscht (Art. 6 Abs. 1 lit. f DSGVO — berechtigtes Interesse daran zu wissen,
wie stark die Demo genutzt wird).
stats_title: 'Nutzungsstatistik'
third_parties: >-
Es werden keine Daten an Dritte weitergegeben. Diese Seite lädt keine
externen Schriftarten, Skripte, Karten oder Analysedienste — ihre Content
Security Policy erlaubt Verbindungen ausschließlich zu diesem Server.
third_parties_title: Weitergabe an Dritte
title: Datenschutzerklärung
unavailable:
title: In der Demo nicht verfügbar
body: >-
Ein echtes Postfach zu verbinden ist hier abgeschaltet. Diese Demo
läuft auf einem Server, der dir nicht gehört, und niemand sollte
dort sein Mail-Passwort eintippen. Alles andere — Themes, Filter,
Kalender, Mail schreiben — funktioniert wie auf deiner eigenen
Installation.
dismiss: Zurück zur Demo
impressum:
link: Impressum
title: Impressum
heading: Angaben gemäß § 5 TMG
operator: Betreiber
unset: 'Nicht gesetzt. Diese Seite muss von Gesetzes wegen einen echten Betreiber nennen — setz diese Werte in der Umgebung, bevor du die Instanz öffentlich machst.'
contact: Kontakt
contact_email: 'E-Mail:'
disclaimer_title: Über diese Demo
disclaimer: >-
Dies ist eine Demonstration von plMail. Die gezeigten Postfächer,
Absender und Nachrichten sind erfunden; nichts davon ist echte
Korrespondenz. Hier geschriebene Mail verlässt den Server nie, und
Demo-Konten werden nach einigen Stunden automatisch gelöscht.
privacy_title: Daten
privacy: >-
Ein Demo-Besuch legt ein Wegwerf-Konto ohne persönliche Daten an.
Was du dort eingibst, wird mit dem Konto gelöscht. Server-Logs
speichern IP-Adressen aus den üblichen Betriebsgründen und werden
rotiert.
source_title: Quellcode
source: 'plMail ist freie Software unter der AGPL-3.0:'
dnd:
dragging: '%count% Unterhaltungen'
drafts:
empty: Keine Entwürfe.
heading: Entwürfe
errors:
page:
back: Zurück zu deiner Mail
not_found:
body: Die aufgerufene Seite gibt es hier nicht. Vielleicht ist der Link vertippt, vielleicht wurde das Ziel verschoben oder gelöscht.
heading: Unter dieser Adresse ist nichts
title: Seite nicht gefunden
server:
body: Bei uns ist etwas schiefgelaufen, nicht bei dir. Der Fehler wurde protokolliert; ein neuer Versuch gleich hilft meistens.
heading: Da ist etwas schiefgelaufen
title: Serverfehler
form:
file:
choose: Bild auswählen …
hint: PNG, JPEG, GIF oder WebP
select:
no_results: Keine Treffer
cancel: Abbrechen
submit: Speichern
confirm_dialog:
heading: Bist du sicher?
cancel: Abbrechen
confirm: Weiter
discarded:
actions:
purge: Endgültig löschen
purge_confirm: 'Diese Unterhaltung endgültig löschen? Sie lässt sich nicht zurückholen und wird auch vom Mailserver entfernt.'
restore: In den Posteingang
header:
search:
close: Suche schließen
live:
status: '%count% passende Unterhaltungen'
status_none: Keine passende Mail
status_one: 1 passende Unterhaltung
title: Mail
open: Mails durchsuchen
placeholder: E-Mails durchsuchen…
recents:
clear: Leeren
title: Zuletzt gesucht
suggestions:
title: Vorschläge
user_menu:
account_attention: '%count% Dinge an deinen Konten brauchen Aufmerksamkeit'
admin: Administration
label: Benutzermenü für %email%
profile: Profil
rerun_setup: Einrichtung erneut starten
unseen_logs:
danger: '%count% neue Fehler im Protokoll'
warn: '%count% neue Warnungen im Protokoll'
settings: Einstellungen
sign_out: Abmelden
signed_in_as: Angemeldet als
inbox:
empty: Keine Nachrichten in diesem Tab.
empty_account: In diesem Konto ist noch nichts angekommen.
insights:
card:
heading: In dieser Konversation gefunden
kind:
flight: Flug
github-issue: Issue
github-pr: Pull Request
invoice: Rechnung
otp: Anmeldecode
parcel: Paket
subscription: Abo
ticket: Ticket
pane:
dismiss: Ausblenden
dismiss_all: Leiste ausblenden
heading: Steht bald an
more: Weitere Aktionen
when:
today: Heute
tomorrow: Morgen
panel:
dismiss: Ausblenden
heading: Auf deinem Radar
open_mail: Zur Mail
track: Verfolgen
undated_heading: Außerdem gefunden
report:
already_reported: Du hast diese Mail bereits gemeldet.
cancel: Abbrechen
disclosure: "Du meldest diese Mail, damit plMail daraus künftig ein Insight lesen kann. Inhalt und Absender der Mail werden dabei an deine Administration weitergegeben."
heading: Fehlendes Insight melden
note_label: Was hätte hier stehen sollen?
note_placeholder: "Zum Beispiel: Das ist eine Rechnung, fällig am 3."
submit: Mail melden
success: "Danke — deine Meldung liegt bei deiner Administration."
status:
announced: Angekündigt
delivered: Zugestellt
in_transit: Unterwegs
ordered: Bestellt
out_for_delivery: In Zustellung
ready_for_pickup: Abholbereit
integration:
save_failed: 'Speichern fehlgeschlagen: %reason%'
saved_to: 'In %name% gespeichert'
destination:
album_name: 'Albumname'
choose_album: 'Album für %file% wählen'
choose_folder: 'Ordner für %file% wählen'
# Der Picker ohne Anhang in der Hand: ein Filter benennt den Ordner, in
# den er später speichert — für Mail, die noch gar nicht da ist.
choose_for_filter: 'Wähle, wohin dieser Filter Anhänge speichert.'
choose_here: 'Diesen Ordner wählen'
choose_tag: 'Tag für %file% wählen'
choose_this: Wählen
create: Erstellen
folder_name: 'Ordnername'
library: 'Mediathek (kein Album)'
new_album: 'Neues Album'
new_folder: 'Neuer Ordner'
new_tag: 'Neuer Tag'
no_albums: 'Noch keine Alben.'
no_subfolders: 'Keine Ordner hier.'
no_tag: 'Kein Tag'
no_tags: 'Noch keine Tags.'
save_here: 'Hier speichern'
start_over: 'Von vorn beginnen'
tag_name: 'Tag-Name'
picker:
attach: Anhängen
attach_from: 'Aus %name% anhängen'
attach_from_service: 'Aus einem Dienst anhängen'
empty: 'Dieser Ordner ist leer.'
link: Link
more: 'Mehr anzeigen'
no_results: 'Nichts gefunden für „%query%“.'
not_an_image: 'Keine Bilddatei'
search: Suchen
search_placeholder:
dropbox: 'Dropbox durchsuchen'
googleDrive: 'Drive durchsuchen'
googlePhotos: 'Photos durchsuchen'
immich: 'Ein Foto beschreiben, z. B. Strand bei Sonnenuntergang'
nextcloud: 'Nextcloud durchsuchen'
oneDrive: 'OneDrive durchsuchen'
paperless: 'Titel und gescannten Text durchsuchen'
status:
attach_failed: 'Anhängen fehlgeschlagen'
attaching: 'Wird angehängt …'
load_failed: 'Mehr konnte nicht geladen werden'
loading: 'Wird geladen …'
nothing_selected: 'Nichts ausgewählt'
save_draft_first: 'Speichere zuerst den Entwurf'
skipped: 'Übersprungen: %files%'
timeline: 'Zu einem Datum springen'
too_big: 'Zu groß zum Anhängen'
use_as_avatar: 'Als Profilbild verwenden'
jobs:
button:
failed: "Etwas ist fehlgeschlagen"
importing: "Import läuft"
importing_percent: "Import · %percent% %"
working: "Arbeitet …"
heading: Hintergrundarbeit
import:
folder: "Gerade: %folder%"
heading: "%account% wird importiert"
newest_first: "Neueste Mail zuerst"
quota: "Gmail-Kontingent: etwa %used% von %limit% Einheiten in dieser Minute"
quota_assumed: "Gmail-Kontingent: etwa %used% von %limit% Einheiten in dieser Minute (Limit angenommen, bis Google es nennt)"
quota_paused: "Pausiert durch Gmails Kontingent · weiter in %seconds% s"
quota_refused: "Gmail hat bei etwa %used% von %limit% Einheiten pro Minute abgelehnt"
rate: "Etwa %count% Nachrichten pro Minute"
remaining_hours: "Noch etwa %hours% Std. %minutes% Min."
remaining_minutes: "Noch etwa %minutes% Min."
waiting: "Wartet darauf, weiterzumachen"
started: '%action% gestartet — das läuft im Hintergrund.'
failure:
abandoned: 'Unterbrochen — das ist auf halber Strecke stehen geblieben; was schon erledigt war, bleibt erledigt.'
kind:
mark_read: Als gelesen markieren
mark_unread: Als ungelesen markieren
archive: Archivieren
trash: In den Papierkorb verschieben
restore: Wiederherstellen
snooze: Zurückstellen
wake: Zurückholen
move_to: Verschieben
purge: Endgültig löschen
reclassify: Sortiert neueste Mail neu
delete_label: Löscht ein Label
state:
done: '%count% erledigt'
failed: fehlgeschlagen
queued: wartet
label:
all_accounts: Alle Konten
color:
amber: Bernstein
blue: Blau
gray: Grau
green: Grün
orange: Orange
pink: Rosa
red: Rot
teal: Petrol
violet: Violett
empty: Keine Konversationen mit diesem Label.
created: Label erstellt.
delete:
already_running: '"%name%" wird schon gelöscht.'
destination: Mail verschieben nach
destination_placeholder: '— wähle ein Ziel —'
destination_required: 'Wähle, wohin die Mail soll. Der Ordner wird nicht gelöscht, solange Mail darin liegt.'
failed_destination_create: 'Der Mailserver hat den Ordner %name%, in den die Mail sollte, nicht angelegt. Es wurde nichts verschoben oder gelöscht.'
failed_destination_gone: 'Das Ziel, das du für die Mail gewählt hast, gibt es nicht mehr. Lösche das Label noch einmal und wähle ein anderes.'
failed_new_mail: 'Nachdem du auf Löschen gedrückt hast, ist neue Mail im Ordner angekommen. Lösche das Label noch einmal, um zu wählen, wohin sie soll.'
failed_not_empty: 'Im Ordner "%name%" liegt auf dem Server noch Mail, deshalb wurde er nicht gelöscht. Verschiebe diese Mail in deinem Mailprogramm und lösche das Label dann noch einmal.'
failed_server: 'Der Mailserver hat "%name%" nicht gelöscht: %error%'
mail_count: 'Darin liegen %count% Nachricht(en). Sie werden an das Ziel verschoben, das du unten wählst, bevor der Ordner gelöscht wird.'
on_server: 'Es ist ein Ordner auf deinem Mailserver, deshalb wird der Ordner dort auch gelöscht.'
still_importing: 'plMail importiert die Mail in "%name%" noch vom Server. Lösche es, sobald der Import fertig ist, damit nichts davon zurückbleibt.'
title: '"%name%" löschen'
waiting: 'Wartet, bis "%name%" auf dem Mailserver leer ist, und löscht den Ordner dann.'
delete_confirm: 'Das Label "%name%" löschen? Es verschwindet aus allen Konten. Nachrichten behalten ihre übrigen Labels und werden nicht gelöscht.'
delete_confirm_children: '"%name%" und die %count% untergeordneten Label(s) löschen? Sie verschwinden aus allen Konten. Nachrichten werden nicht gelöscht.'
deleted: Label gelöscht.
error:
duplicate: Hier gibt es bereits ein Label mit diesem Namen. Groß- und Kleinschreibung macht daraus keinen anderen.
form:
color: Farbe
delete: Label löschen
delete_hint: 'Beim Löschen verschwindet das Label aus allen Konten, zusammen mit allen darunter eingeordneten Labels. Nachrichten damit behalten ihre übrigen Labels und werden nicht gelöscht.'
edit_title: Label bearbeiten
name: Name
no_color: '— keine —'
no_parent: '— oberste Ebene —'
parent: Einordnen unter
menu:
create: Neu erstellen
empty: Noch keine Labels.
updated: Label aktualisiert.
visibility:
hidden: Label ist jetzt ausgeblendet.
shown: Label ist jetzt sichtbar.
list:
sort:
newest: Neueste zuerst
oldest: Älteste zuerst
login:
form:
email: E-Mail-Adresse
forgot_password: Passwort vergessen?
forgot_password_hint: 'Die Wiederherstellung läuft über die Server-Konsole: bin/console und ein neues Passwort, gesetzt von einer Administratorin oder einem Administrator.'
password: Passwort
remember_me: Angemeldet bleiben
submit: Anmelden
oidc:
button: Mit Single Sign-on anmelden
button_named: Mit %provider% anmelden
or: oder
page_title: Anmelden
register:
coming_soon: Registrierung folgt in Kürze.
link: Konto erstellen
prompt: Noch kein Konto?
tagline: Melde dich bei deinem Konto an
message:
actions:
archive: Archivieren
delete: Diese Nachricht löschen
collapse: Diese Nachricht zuklappen
expand: Diese Nachricht aufklappen
mark_unread: Als ungelesen markieren
more: Mehr
print: Drucken
report_insight: Fehlendes Insight melden
show_original: Original anzeigen
star: Markieren
unstar: Markierung entfernen
attachments: Anhänge
back: Zurück
body_frame: Nachrichteninhalt
bounce:
failed: 'Diese Nachricht wurde nicht zugestellt.'
failed_for: 'Nicht zugestellt an %recipient%.'
reported_at: 'Gemeldet %datetime%'
details:
categorised:
ai: 'ein Sprachmodell, weil keine Regel gegriffen hat: '
ai_differs: 'die Regeln sehen das anders'
awaiting_resort: 'Wird neu einsortiert — du hast geändert, wie Mail sortiert wird, und diese hier ist noch nicht umgezogen.'
own_filter: 'dort von einem deiner Filter abgelegt'
gmail_overruled: 'wird nicht benutzt — du hast plMail gebeten, selbst zu sortieren'
in_force: 'das hier entscheidet'
ai_no_answer: 'gefragt, keine brauchbare Antwort'
ai_not_asked: 'nicht gefragt'
correspondent: 'Du hast diesem Absender geschrieben'
default: 'nichts wies auf Massenmail hin'
forum: 'ein Mailinglisten-Header: '
gmail: 'laut Gmail: '
pinned: 'du hast sie hierher verschoben'
promotion: 'ein Massenmail-Header: '
social: 'die Absenderdomain '
switched_off: "es wäre %category%, und das hast du ausgeschaltet"
thread_differs: 'Diese Nachricht allein wäre %category% — eine Unterhaltung übernimmt die Kategorie ihrer neuesten Nachricht.'
update: 'ein Hinweis auf automatischen Versand: '
category: Kategorie
category_ai: 'das Modell'
category_gmail: 'Gmail sagt'
category_rules: 'die Regeln'
bcc: BCC
cc: CC
copy_address: 'Adresse %address% kopieren'
copy_headers: Kopfzeilen kopieren
report:
failed: 'Konnte nicht gemeldet werden'
label: 'Falscher Tab? Gehört nach'
send: Melden
stale: 'Liegt schon da — neu laden'
sent: Gemeldet
date: Datum
from: von
hide_all_headers: Alle Kopfzeilen ausblenden
label: Details
mailed_by: gesendet über
reply_to: Antwort an
show_all_headers: Alle Kopfzeilen anzeigen
signed_by: signiert von
subject: Betreff
to: "an %name%"
to_label: an
undisclosed: unbekannte Empfänger
draft: "Entwurf"
images:
always: 'Bilder von %sender% immer anzeigen'
blocked: '{1}1 Bild wurde blockiert, damit dieser Aufruf privat bleibt|]1,Inf[ %count% Bilder wurden blockiert, damit dieser Aufruf privat bleibt'
show_once: Bilder anzeigen
stop_trusting: Nicht mehr anzeigen
trusted: 'Bilder von %sender% werden immer angezeigt'
original:
copied: Kopiert
copy: In die Zwischenablage kopieren
copy_failed: Kopieren fehlgeschlagen
fields:
created_at: Erstellt am
from: Von
message_id: Nachrichten-ID
subject: Betreff
to: An
heading: Originalnachricht
reconstructed: 'Die Originalbytes dieser Nachricht wurden nicht aufbewahrt. Du siehst eine Rekonstruktion aus den gespeicherten Headern und dem Textteil — die MIME-Struktur und ein etwaiger HTML-Teil fehlen, und gegen eine DKIM-Signatur lässt sie sich nicht prüfen.'
quote:
hide: Zitierten Text ausblenden
show: Zitierten Text anzeigen
read_receipt:
dismiss: 'Nein, danke'
mdn:
body: "Ihre Nachricht an %recipient% mit dem Betreff „%subject%“ wurde am %date% angezeigt. Das ist keine Bestätigung dafür, dass sie gelesen oder verstanden wurde."
subject: 'Gelesen: %subject%'
mismatch: 'Die Bestätigung soll an %notifyTo% gehen – das ist nicht die Adresse, von der diese Nachricht gesendet wurde (%sender%).'
read_at: 'Gelesen am %datetime%'
requested: '%sender% möchte benachrichtigt werden, wenn du diese Nachricht liest.'
send: 'Bestätigung senden'
save_to: 'Speichern in'
security:
mismatch:
brand_in_name: "Der Name lautet „%claimed%“, gesendet wurde die Nachricht aber von %actual%."
domain_in_name: "Der Name gibt %claimed% an, gesendet wurde die Nachricht aber von %actual%."
title: "Der Absendername passt nicht zur Absenderadresse"
spam:
body: "Diese Nachricht wurde als Spam eingestuft. Ihre Links und Bilder sind riskant — behandle jede Aufforderung darin wie die eines Fremden."
title: Diese Nachricht ist im Spam
mercure:
status:
connected: Live-Aktualisierung aktiv
connecting: Verbindung zur Live-Aktualisierung wird wiederhergestellt…
offline: Keine Live-Aktualisierung — der Posteingang ist möglicherweise nicht aktuell
modal:
close: Schließen
loading: Wird geladen…
oauth:
error:
generic: Dieses Konto konnte nicht verbunden werden. Bitte versuche es erneut.
microsoft:
admin_consent_required: 'Deine Organisation verlangt, dass ein Administrator plMail freigibt, bevor du dieses Konto verbinden kannst. Hat es vorher funktioniert, fragt plMail jetzt zusätzlich nach Zugriff auf deine Kontakte, und auch das muss freigegeben werden. Bitte deinen Microsoft-Administrator, den Zugriff zu erteilen.'
app_not_found: >-
plMail ist in deiner Microsoft-Organisation nicht registriert.
bad_credentials: >-
Die Microsoft-Zugangsdaten von plMail sind ungültig oder
abgelaufen. Das ist ein Problem der Serverkonfiguration und
nichts, was du selbst beheben kannst.
blocked_by_policy: >-
Eine Sicherheitsrichtlinie deiner Organisation hat diese
Anmeldung blockiert.
consent_declined: >-
Verbindung abgebrochen — plMail wurde kein Zugriff gewährt.
tenant_mismatch: >-
Dieser Kontotyp kann sich mit der aktuellen Konfiguration nicht
bei plMail anmelden. Prüfe die Einstellung
MICROSOFT_OAUTH_TENANT.
onboarding:
action:
back: Zurück
finish: Fertig
next: Weiter
skip: Schritt überspringen
skip_all: Einrichtung überspringen
done:
body: >-
Alles Übersprungene findest du in den Einstellungen, und du kannst die
Einrichtung jederzeit über das Benutzermenü erneut starten.
cta: Zu meinen Mails
heading: Fertig eingerichtet
aside:
account:
body: >-
plMail braucht die Adressen für Posteingang (IMAP) und Postausgang (SMTP).
Die stehen meist in der Hilfe deines Anbieters unter "IMAP-Einstellungen".
heading: Wo finde ich das?
oauth: >-
Für Gmail und Outlook nimm stattdessen die Anmelde-Buttons unter
Einstellungen → Mail-Konten — dort brauchst du keine Serveradressen.
admin_ai:
body: 'Die Adresse eines Ollama-Containers in deinem Netz oder eines beliebigen OpenAI-kompatiblen Endpunkts, und die Namen zweier Modelle, die es dort gibt — eines zum Schreiben, eines für die Suche. Mails gehen an diese Adresse und sonst nirgendwohin.'
heading: 'Was du brauchst'
skip_body: 'Klick auf Weiter, ohne etwas auszufüllen. plMail ist auch ohne das ein vollständiger Mail-Client, und du kannst später jederzeit unter Administration → KI zurückkommen.'
skip_heading: 'Kein Interesse?'
admin_integrations:
body: Registriere plMail beim Dienst und trage die erhaltenen Zugangsdaten hier ein.
heading: So richtest du das ein
admin_mail:
google:
heading: Gmail-Anmeldung einrichten
step1: console.cloud.google.com öffnen und ein Projekt anlegen oder ein bestehendes wählen.
step2: 'Unter APIs und Dienste → Bibliothek die Gmail API aktivieren.'
step3: 'Unter OAuth-Zustimmungsbildschirm "Intern" wählen, wenn du Workspace hast, sonst "Extern", und App-Name sowie Support-E-Mail eintragen.'
step4: 'Unter Anmeldedaten eine OAuth-Client-ID vom Typ "Webanwendung" erstellen.'
step5: Die untenstehende Redirect-URI bei "Autorisierte Weiterleitungs-URIs" eintragen und speichern.
step6: Client-ID und Client-Secret in die Felder links kopieren.
microsoft:
heading: Microsoft-Anmeldung einrichten
step1: 'portal.azure.com öffnen und zu Microsoft Entra ID → App-Registrierungen → Neue Registrierung gehen.'
step2: 'Auswählen, wer sich anmelden darf. "Konten in einem beliebigen Organisationsverzeichnis und persönliche Microsoft-Konten" passt zur Tenant-Voreinstellung "common".'
step3: 'Als Redirect-URI-Typ "Web" wählen und die Adresse unten eintragen.'
step4: 'Nach der Registrierung die Anwendungs-ID (Client) in das Feld links kopieren.'
step5: 'Unter Zertifikate und Geheimnisse ein neues Client-Secret anlegen und dessen Wert — nicht die ID — sofort kopieren; er wird nur einmal angezeigt.'
step6: 'Unter API-Berechtigungen diese delegierten Microsoft-Graph-Berechtigungen hinzufügen: Mail.ReadWrite, Mail.Send, MailboxSettings.ReadWrite, Calendars.ReadWrite, User.Read und offline_access. Ohne MailboxSettings.ReadWrite oder Calendars.ReadWrite funktioniert die Anmeldung weiterhin — es fehlen dann nur Kategorien und Kalender, und ein bereits ausgestelltes Token wird nicht nachträglich erweitert.'
profile:
body: Das sehen Empfänger in der Absenderzeile. Jederzeit änderbar.
heading: Wo das erscheint
security:
body: >-
Stell dir vor, jemand hat dein E-Mail-Passwort. Der liest nicht nur
mit — der klickt bei deiner Bank, deinem Domain-Anbieter und deinem
Cloud-Speicher auf "Passwort vergessen" und fängt die Links dafür
hier ab.
body_two: >-
Ein zweiter Faktor ist ein Code auf deinem Handy, der sich alle 30
Sekunden ändert. Ein gestohlenes Passwort allein reicht dann nicht
mehr.
heading: Warum ausgerechnet dieses Konto
account:
add: Konto hinzufügen
or_manual: 'Oder von Hand einrichten:'
sign_in_with: 'Mit %provider% anmelden'
add_another: Weiteres Konto hinzufügen
cancel: Abbrechen
integrations:
cancel: Abbrechen
connect: Verbinden
connected: Verbunden
progress: 'Schritt %index% von %total%'
security:
body: >-
Dein Postfach ist der Schlüssel zu allen deinen anderen Konten, denn
dort landen die Links zum Zurücksetzen von Passwörtern. Mit einem Code
von deinem Handy reicht ein gestohlenes Passwort allein nicht mehr.
done_body: >-
Beim Anmelden wirst du nach einem Code aus deiner App gefragt. Bewahre
die Wiederherstellungscodes dort auf, wo du ohne dein Handy herankommst.
done_heading: Zwei-Faktor-Authentifizierung ist an
skip_hint: Du kannst das später unter Einstellungen → Sicherheit einrichten.
switch_blocked: Es wurde nicht gewechselt — korrigiere zuerst die Felder unten, deine Eingaben bleiben erhalten.
step:
account:
lead: Verbinde das Postfach, das du wirklich liest — plMail beginnt dann zu synchronisieren.
title: Mail-Konto
admin-ai:
intro: 'plMail kann ein Sprachmodell benutzen — eines, das du selbst betreibst, oder einen Endpunkt deiner Wahl — zum Suchen nach Bedeutung, zum Einsortieren und als Hilfe beim Schreiben. Das ist völlig optional, du darfst hier alles leer lassen.'
lead: 'Optional. Lass es leer, wenn du es nicht willst.'
title: 'Sprachmodell'
admin-integrations:
lead: Zugangsdaten für die Dienste, aus denen hier alle Dateien anhängen können.
title: Integrations-Zugangsdaten
admin-mail:
lead: Anmeldedaten für Gmail und Outlook — einmal für diese ganze Instanz.
title: Mail-Anbieter
appearance:
lead: Wie plMail aussieht. Nichts davon ist endgültig, ändere es jederzeit.
title: Darstellung
integrations:
lead: Verbinde die Dienste, in denen deine Dateien und Fotos liegen.
title: Deine Integrationen
profile:
lead: Der Name, der auf deinen gesendeten Mails steht.
title: Über dich
security:
lead: Das eine Konto, das sich richtig abzuschließen lohnt. Dauert etwa eine Minute.
title: Konto schützen
title: plMail einrichten
profile:
avatar_current: Aktuelles Bild
avatar_from:
not_an_image: 'Diese Datei ist kein Bild, das plMail verwenden kann. Wähle ein PNG, JPEG, GIF oder WebP.'
too_large: 'Das Bild ist größer als 4 MB. Wähle ein kleineres.'
unavailable: 'Der Dienst hat das Bild nicht geliefert. Versuch es gleich noch einmal.'
empty: Von diesem Dienst gibt es nichts anzuzeigen.
heading: Oder eins aus einem verbundenen Dienst wählen
field:
avatar: Bild
avatar_help: PNG, JPEG, GIF oder WebP, bis 4 MB.
avatar_remove: Aktuelles Bild entfernen
name_first: Vorname
name_last: Nachname
# The reading pane beside the message list (Settings → Reading pane turns it on).
# `handle` is what a screen reader calls the divider between the two; the
# placeholder stands where the message will be until one is opened.
reading_pane:
handle: Größe des Nachrichtenbereichs ändern
placeholder: Wähle eine Unterhaltung aus, um sie hier zu lesen
# Said in a toast when a request fails and there is no better place to say it;
# see request_errors.js.
request_error:
copy_reference: 'Referenz kopieren'
server: 'Das hat nicht geklappt – bei uns ist etwas schiefgegangen. Versuch es gleich noch einmal.'
not_found: 'Das gibt es nicht mehr. Vielleicht wurde es verschoben oder gelöscht.'
refused: 'Das konnte plMail nicht erledigen. Lade die Seite neu und versuch es noch einmal.'
offline: 'plMail ist nicht erreichbar. Prüf deine Verbindung und versuch es noch einmal.'
reference: 'Ref. %id%'
sync_now:
label: 'Jetzt synchronisieren'
syncing_one: '1 Konto wird synchronisiert …'
syncing_other: '%count% Konten werden synchronisiert …'
still_running: 'Die Synchronisierung läuft im Hintergrund weiter.'
complete: 'Synchronisierung abgeschlossen.'
session_expired: 'Deine Sitzung ist abgelaufen – lade die Seite neu, um dich wieder anzumelden.'
pull_to_refresh:
pull: 'Zum Synchronisieren nach unten ziehen'
release: 'Loslassen zum Synchronisieren'
search:
empty:
or_keyword: oder tippe einfach ein Stichwort.
title: Durchsuche deine Mail
try: Probiere
heading:
results: Suchergebnisse für
no_results:
hint: Probiere andere Stichwörter oder entferne Filter.
title: Keine Treffer für „%query%“
pill:
after: Nach
attachment: Anhang
before: Vor
cc: Cc
from: Von
has: Hat
in: In
is: Ist
label: Label
read: gelesen
starred: markiert
subject: Betreff
to: An
unread: ungelesen
results:
count: '%count% Treffer'
count_one: 1 Treffer
semantic:
admin_link: 'Fortschritt ansehen'
indexing: 'Bedeutung wird über %embedded% von %total% Nachrichten durchsucht — zu %percent%% fertig.'
model_changed: 'Das Such-Modell hat sich geändert. Die %count% Nachrichten, die mit dem vorherigen indexiert wurden, werden nicht nach Bedeutung durchsucht, bis sie neu indexiert sind.'
nothing_extra: 'Die Suche nach Bedeutung hat nichts gefunden, was die Wörter nicht schon hatten.'
skipped:
bad_answer: 'Das Modell hat etwas geantwortet, das sich nicht verwenden lässt — deshalb wurde nur nach Wörtern gesucht.'
host_unreachable: 'Der Modell-Host hat nicht geantwortet — deshalb wurde nur nach Wörtern gesucht.'
model_missing: 'Der Modell-Host hat das Such-Modell nicht — deshalb wurde nur nach Wörtern gesucht.'
not_configured: 'Die Suche nach Bedeutung ist an, aber es ist kein Modell-Host eingerichtet — deshalb wurde nur nach Wörtern gesucht.'
query_too_short: 'Schreib etwas mehr, dann wird auch nach Bedeutung gesucht.'
search_failed: 'Die Suche nach Bedeutung konnte nicht abgeschlossen werden — deshalb wurde nur nach Wörtern gesucht. Warum, steht im Server-Log.'
search_too_slow: 'Die Suche nach Bedeutung hat hier zu lange gebraucht — deshalb wurde nur nach Wörtern gesucht.'
timed_out: 'Das Modell hat zu lange gebraucht — deshalb wurde nur nach Wörtern gesucht.'
sort:
label: Sortieren nach
recent: Neueste zuerst
relevance: Relevanteste zuerst
title: Suche
title_query: 'Suche: %query%'
sent:
empty: Keine gesendeten Nachrichten.
heading: Gesendet
setup:
install:
field:
email: E-Mail-Adresse
email_help: Mit dieser Adresse meldest du dich an.
locale: Sprache
name_first: Vorname
name_last: Nachname
password: Passwort
password_repeat: Passwort wiederholen
public_url: Öffentliche Adresse
public_url_help: >-
Unter dieser Adresse ist plMail von außen erreichbar. Gmail und Outlook
schicken Push-Benachrichtigungen dorthin zurück, sie muss also aus dem
Internet erreichbar sein und sollte https sein. Später änderbar.
footnote: Postfächer und alles Weitere kannst du einrichten, sobald du drin bist.
heading: Konto anlegen
lead: Das ist das erste Konto auf dieser plMail-Instanz und bekommt daher volle Administratorrechte.
page_title: plMail einrichten
restore_link: Stelle zuerst eine Konfigurationssicherung wieder her.
restore_prompt: Kommst du von einer anderen plMail-Instanz?
submit: Konto anlegen und anmelden
tagline: Hier hat sich noch niemand angemeldet
restore:
applied_lead: >-
Die Konfiguration steht. Diese Sicherung enthielt keine Benutzerkonten, deshalb
hat diese Installation noch keine — lege das Administratorkonto an, um fertig
zu werden. Falls oben ein Neustart vermerkt ist, kann er bis danach warten.
applied_lead_users: >-
Die Konfiguration und ihre Personen stehen — %count% wiederhergestellt,
darunter %admins%. Melde dich mit dem Passwort an, das du schon hattest; daran
hat sich nichts geändert.
back: 'Zurück zum Anlegen des Administrators'
continue: 'Weiter — Administrator anlegen'
footnote: >-
Eine Konfigurationssicherung enthält Einstellungen, Zugangsdaten und die
Personen, die sie benutzen — niemals E-Mails, Kalendereinträge oder Kontakte.
heading: 'Konfigurationssicherung wiederherstellen'
lead: >-
Bring die Einstellungen, Zugangsdaten und Konten einer anderen plMail-Instanz
hierher, bevor du irgendetwas anlegst. Datei hochladen, Passwort eingeben — den
Rest schreibt plMail selbst in diese Installation.
nothing_to_do: 'Hier bleibt nichts mehr für dich zu tun.'
page_title: 'Konfiguration wiederherstellen'
sign_in: 'Anmelden'
submit: 'Sicherung öffnen'
session:
expired:
heading: Du bist abgemeldet worden
body: Deine Sitzung wurde woanders beendet. Melde dich erneut an, um weiterzumachen.
body_writing: Deine Sitzung wurde woanders beendet. Melde dich in einem neuen Tab an und komm zurück — was du hier geschrieben hast, steht noch da.
sign_in: Erneut anmelden
sign_in_new_tab: In neuem Tab anmelden
reload: Seite neu laden
settings:
ai:
context:
heading: 'Wie viel der Assistent liest'
message: 'Die Mail'
message_hint: 'Der Assistent liest die Mail, auf die du antwortest. So war es bisher schon.'
none: 'Nichts'
none_hint: 'Der Assistent sieht nur, was du getippt hast. Am schnellsten — und „Antwort entwerfen“ hat in einem leeren Fenster nichts, womit es arbeiten könnte, und meldet, dass es nicht antworten konnte. Kürzen, Förmlicher und Korrekturlesen sind davon nicht betroffen.'
subheading: 'Mehr vom Gesprächsverlauf bedeutet eine bessere Antwort und eine längere Wartezeit. Das Modell läuft auf diesem Rechner — es kostet also vor allem Zeit.'
thread: 'Das ganze Gespräch'
thread_hint: 'Der Assistent liest das ganze Gespräch, ältestes zuerst, so viel davon wie hineinpasst. Bessere Antworten in langen Verläufen — und längeres Warten.'
feature:
admin_off: 'Für diese Installation nicht aktiviert'
categorise: 'Mails in Tabs einsortieren'
categorise_hint: 'Lässt das Modell entscheiden, wenn die normalen Regeln eine Mail nicht einordnen können. Aus lässt diese Mails dort, wo die Regeln sie abgelegt haben.'
contact_help: 'Kontakthilfe'
contact_help_hint: 'Füllt einen Kontakt aus einer eingefügten Signatur oder Visitenkarte aus und schlägt Änderungen anhand der Signatur der letzten Mail vor, wenn du darum bittest.'
search: 'Suche nach Bedeutung'
search_hint: 'Findet Mails, die meinen, wonach du gefragt hast — nicht nur solche, die es genauso schreiben. Aus bedeutet: Deine Mails werden weder durchsucht noch indiziert.'
summary: 'Zusammenfassungen'
summary_hint: 'Fasst ein langes Gespräch zusammen, wenn du darum bittest. Von allein passiert nichts.'
writing_help: 'Schreibhilfe'
writing_help_hint: 'Entwirft Antworten, kürzt, formuliert förmlicher, liest Korrektur — im Schreibfenster, wenn du danach fragst.'
features:
heading: 'Assistent-Funktionen'
subheading: 'Welche Funktionen des Assistenten du nutzen willst. Dein Administrator legt fest, was verfügbar ist — du entscheidest, was du davon verwendest.'
notes:
about_me_hint: 'Dein Beruf, an wen du normalerweise schreibst — alles, was jemand Fremdes wissen müsste, um deine Mails gut zu beantworten.'
about_me_label: 'Wer du bist'
about_me_placeholder: 'Ich betreibe eine Fahrradwerkstatt, und die meisten Mails kommen von Kunden, die Reparaturen buchen.'
heading: 'Über dich'
save: 'Speichern'
saved: 'Gespeichert.'
subheading: 'Was der Assistent wissen sollte, bevor er für dich schreibt. Beide Notizen werden mit jedem Entwurf mitgeschickt und sonst für nichts verwendet.'
system_prompt_hint: 'Vorlieben, keine Anweisungen — die Regeln der App gehen vor, unter anderem die, in der Sprache der Mail zu schreiben. Halte es kurz: Lange Notizen verdrängen die eigentliche Mail aus der Aufmerksamkeit des Modells.'
system_prompt_label: 'Wie für dich geschrieben werden soll'
system_prompt_placeholder: 'Kurze Sätze. Keine Ausrufezeichen. Als Grußformel nur mein Vorname.'
reads:
categorise: 'Einsortieren: Absender, Betreff und der Anfang der Mail.'
contact_help: 'Kontakte: der Text, den du einfügst, oder ein Kontakt und die Signatur seiner letzten Mail, wenn du darum bittest.'
heading: 'Was der Assistent bekommt'
search: 'Indizierung: Betreff, Absender und der Anfang jeder Mail.'
summary: 'Die Nachrichten eines Gesprächs, das du zusammenfassen lässt'
writing_help: 'Schreiben: deine Betreffzeile, was du getippt hast, und so viel vom Gespräch, wie die Einstellung oben zulässt.'
seg:
off: 'Aus'
on: 'An'
accounts:
colour:
change: 'Farbe von %account% ändern'
swatch:
'0': Orange
'1': Grün
'2': Blau
'3': Violett
'4': Bernstein
'5': Pink
'6': Petrol
'7': Oliv
delete: Konto entfernen
delete_confirm: '%account% entfernen? Dadurch werden alle synchronisierten Nachrichten dieses Kontos endgültig gelöscht. Das lässt sich nicht rückgängig machen.'
disable: Konto deaktivieren
edit: Konto bearbeiten
empty: Noch keine Konten. Füge eines hinzu, um E-Mails zu synchronisieren.
enable: Konto aktivieren
folders:
always_synced: Der Posteingang wird immer synchronisiert
button: Zu synchronisierende Ordner wählen
empty: Noch keine Ordner. Nach der ersten Synchronisation erscheinen sie hier.
intro: >-
Schalte einen Ordner aus, und plMail ruft ihn nicht mehr ab.
Bereits gespeicherte Nachrichten bleiben, wo sie sind, und wenn
du den Ordner wieder einschaltest, geht es dort weiter, wo es
aufgehört hat.
placeholder: 'Ein Platzhalter, der nur andere Ordner zusammenfasst — darin gibt es nichts zu synchronisieren'
start_sync: 'Synchronisierung von %folder% starten'
stop_sync: 'Synchronisierung von %folder% beenden'
title: 'Ordner — %account%'
heading: E-Mail-Konten
make_primary: Als primär festlegen
make_primary_explained: 'Neue Nachrichten standardmäßig von %account% senden'
reconnect: Neu verbinden
reconnect_explained: 'Melde dich erneut bei %account% an — um eine abgelehnte Berechtigung doch noch zu erteilen oder nach einer Passwortänderung'
move_down: '%account% in der Liste nach unten schieben'
move_up: '%account% in der Liste nach oben schieben'
order_hint: >-
Ziehen, um diese Liste zu ordnen. Die Reihenfolge bestimmt nur die
Anzeige — das Konto, von dem neue Nachrichten gesendet werden, ist
das mit „Primär“ markierte.
password_help: Leer lassen, um das aktuelle Passwort zu behalten.
primary: Primär
primary_explained: Neue Nachrichten werden standardmäßig von diesem Konto gesendet.
push:
lapsed_hint: >-
Die Push-Registrierung ist abgelaufen und wurde nicht erneuert,
es wird also nichts zugestellt. Die Erneuerung läuft täglich von
selbst — passiert das öfter, steht der Worker für geplante
Aufgaben still. Die Post wird weiterhin nach Zeitplan
abgerufen.
degraded_hint:
gmail: >-
Push ist registriert, aber es kam zuletzt nichts an. Das
Pub/Sub-Push-Abonnement in Google Cloud fehlt möglicherweise
oder zeigt woanders hin. E-Mails werden weiterhin nach
Zeitplan synchronisiert.
microsoft: >-
Das Push-Abonnement ist abgelaufen und es kommt nichts mehr
an. Registriere es neu, um die sofortige Zustellung
fortzusetzen. E-Mails werden weiterhin nach Zeitplan
synchronisiert.
failed:
gmail: >-
Push konnte nicht aktiviert werden — Google hat die
Watch-Registrierung abgelehnt. Prüfe, ob GMAIL_PUBSUB_TOPIC
ein vorhandenes Pub/Sub-Thema benennt und ob dieses Thema
gmail-api-push@system.gserviceaccount.com die Rolle
„Pub/Sub Publisher“ gewährt. Das Konto wird weiterhin nach
Zeitplan synchronisiert.
microsoft: >-
Push konnte nicht aktiviert werden — Microsoft muss diesen
Server über HTTPS erreichen. Prüfe deinen Reverse Proxy und
APP_PUBLIC_URL. Das Konto wird weiterhin nach Zeitplan
synchronisiert.
health:
active: Push
degraded: Push (liefert nicht)
inactive: Nach Zeitplan
lapsed: Push (abgelaufen)
not_configured: >-
Push ist auf diesem Server nicht verfügbar — dafür werden eine
öffentliche HTTPS-Adresse und, für Gmail, ein Cloud-Pub/Sub-Topic
benötigt.
off_hint: E-Mails werden nach Zeitplan abgerufen. Aktiviere Push für sofortige Zustellung.
on_hint:
gmail: Neue E-Mails kommen sofort per Gmail-Push-Benachrichtigung an.
microsoft: Neue E-Mails kommen sofort per Microsoft-Push-Benachrichtigung an.
title: Sofortige Zustellung
reorder: Zum Umsortieren ziehen
status:
active: Aktiv
disabled: Deaktiviert
subheading: Postfächer hinzufügen, bearbeiten, aktivieren oder entfernen.
type:
imap: IMAP
oauth: '%provider% (OAuth)'
aliases:
add: 'Hinzufügen'
add_placeholder: 'Weitere Adresse hinzufügen…'
catch_all:
add: 'Als Catch-all eintragen'
hint: 'Wenn jede Adresse einer Domain in diesem Postfach ankommt, trage die Domain hier ein. Eine Antwort geht dann von der Adresse aus, an die die Mail gerichtet war, ohne dass du jede einzeln oben hinzufügst.'
label: 'Catch-all-Domains'
placeholder: 'example.com'
remove: '%domain% entfernen'
delete: 'Entfernen'
disable: 'Deaktivieren'
empty: 'Noch keine Adressen.'
enable: 'Aktivieren'
gmailify:
hint: 'Für ein Gmail-Konto, das Mail von einer anderen Adresse abholt, die du hier verbunden hast. An: Diese Mail wird unter dem anderen Konto abgelegt, und ihre Kopie dort folgt dem, was du in Gmail tust. Aus: Dieses Konto behält nur Mail an sich selbst, und die Kopien des anderen Kontos folgen Gmail nicht mehr. Am besten schaltest du es aus, sobald Gmail diese Mail nicht mehr abholt: Solange es das noch tut, nennt Mail, die per Bcc an die andere Adresse ging, niemanden und landet deshalb hier und dort.'
label: 'Mail für meine anderen Konten unter diesen ablegen (Gmailify)'
'off': 'Aus'
'on': 'An'
heading: 'E-Mail-Adressen'
make_primary: 'Als Hauptadresse festlegen'
ms_sender_hint: 'Outlook versendet unabhängig von der hier gewählten Adresse immer über den primären Alias deines Kontos — ändere ihn in deinen'
ms_sender_hint_link: 'Microsoft-Kontoeinstellungen'
name_for: 'Absendername für %alias%'
name_placeholder: 'Absendername'
name_save: 'Namen speichern'
primary: 'Primär'
refresh: 'Vom Anbieter aktualisieren'
subheading: 'Adressen, unter denen dieses Konto sendet und empfängt.'
system: 'System'
clock:
heading: Uhrzeitformat
subheading: Ob Zeiten im 12- oder 24-Stunden-Format geschrieben werden und wo die aktuelle Uhrzeit steht. Gespeichert wird nichts anders — es ändern sich nur die Ziffern.
label: Uhrzeitformat
follow_language: 'Der Sprache folgen (%sample%)'
option:
'12': '12 Stunden (%sample%)'
'24': '24 Stunden (%sample%)'
placement:
label: 'Uhrzeit anzeigen'
option:
topbar: 'Auf dem Demnächst-Knopf in der oberen Leiste'
brand: 'Unter dem plMail-Namen'
sidebar: 'Unten in der Seitenleiste'
'off': 'Nirgends'
device_pairing:
pair_device: "Gerät koppeln"
scan_title: "Mit der plMail-App scannen"
scan_hint: "Der Code funktioniert einmal und läuft in zwei Minuten ab. Er enthält nicht dein App-Passwort — die App tauscht ihn gegen ein neues ein."
qr_alt: "Kopplungscode"
expires: "Läuft um %time% ab."
open_in_app: "In der App öffnen"
app_passwords:
copy: Kopieren
copy_now: Hier ist dein neues App-Passwort
copy_now_hint: >-
Kopiere es jetzt — es wird nicht gespeichert und kann nicht erneut
angezeigt werden. Wenn du es verlierst, widerrufe es und erzeuge ein
neues.
empty: Noch keine App-Passwörter. Erzeuge eines, um eine Mail-App zu verbinden.
generate: Erzeugen
heading: App-Passwörter
last_used: 'Zuletzt verwendet %date%'
name_placeholder: 'Wofür ist es? z. B. iPhone — Sterna'
never_used: Nie verwendet
revoke: Widerrufen
revoke_confirm: '"%name%" widerrufen? Jede App, die es verwendet, wird sofort abgemeldet.'
setup_heading: Eine App verbinden
setup_hint: >-
Verwende deine E-Mail-Adresse als Benutzernamen und das App-Passwort
als Passwort. Fragt die App nach einem Server oder einer JMAP-URL,
gib diese an — nicht die Adresse /jmap/api, die nur POST annimmt.
subheading: >-
Melde dich bei Mail-Apps von Drittanbietern an, die JMAP sprechen.
Jede App bekommt ein eigenes Passwort, das du einzeln widerrufen
kannst.
appearance:
accent:
heading: Akzentfarbe
background:
heading: Hintergrund
solid: Einfarbig
theme: Theme-Standard
upload: Bild hochladen
density:
comfortable: Komfortabel
compact: Kompakt
cosy: Gemütlich
follow: Übernehmen
heading: Dichte
subheading: Wie viel Platz jede Zeile bekommt. Einmal für alles, oder pro Bereich eigens festgelegt.
surface:
list: Nachrichtenliste
reading: Lesebereich
sidebar: Seitenleiste
motion:
full: Voll
heading: Bewegung
minimal: Dezent
none: Keine
reduced: Wenn dein System weniger Bewegung verlangt, hält sich plMail daran — egal, was hier steht.
subheading: Wie stark sich die Oberfläche bewegt, wenn etwas erscheint. Dezent blendet ein, ohne etwas zu verschieben.
export: Theme exportieren
glass:
heading: Glas
paneAlpha: Deckkraft der Flächen
paneAlphaHint: Seitenleiste, Kopfleiste, Hauptbereich und Kalender — der Rahmen, in dem die App liegt. Dahinter liegt nichts außer dem Hintergrund.
paneBlur: Weichzeichnen
popoverAlpha: Deckkraft von Fenstern und Menüs
popoverAlphaHint: Das Schreibfenster, Dialoge und Menüs. Jedes davon liegt auf einer Fläche, also scheinen beide Schichten gleichzeitig durch. Nahezu deckend bleiben sie lesbar.
radius: Eckenradius
scrimAlpha: Hintergrundabdunklung
subheading: Wie viel vom Hintergrund durch deine Flächen scheint.
heading: Darstellung
import: Theme importieren
layout:
boxed: Kacheln
flat: Flach
heading: Layout
subheading: Wie die Oberfläche gerahmt ist. „Kacheln“ zeigt jede Fläche als eigene Karte; „Flach“ setzt Kopf- und Seitenleiste direkt auf den Hintergrund und lässt nur den Hauptbereich als Karte stehen.
list:
accountCorner: Konto-Ecke
accountCornerHint: Das farbige Dreieck in der Ecke einer Zeile, das zeigt, über welches Konto sie eingegangen ist. Wird nur in Listen gezeichnet, die mehrere Konten mischen.
heading: Nachrichtenliste
listAvatars: Absenderkreise
listAvatarsHint: Der farbige Kreis mit der Initiale des Absenders. Ausgeschaltet wird daraus ein schlichter Kreis, statt zu verschwinden — er ist zugleich das Auswahlkästchen der Zeile.
tabUnreadCount: 'Ungelesen-Zahl auf den Posteingangs-Tabs'
tabUnreadCountHint: 'Die Zahl neben dem Namen jedes Tabs: in wie vielen Unterhaltungen dieser Kategorie Ungelesenes liegt. Zusammen ergeben die Tabs den Posteingangs-Badge der Seitenleiste. Das Fähnchen „3 neu“ ist davon getrennt und bleibt.'
previewLines: Vorschauzeilen
previewLines0: Keine
previewLines1: Eine Zeile
previewLines2: Zwei Zeilen
subheading: Was jede Zeile der Liste zeigt.
unread:
standard: Standard
strong: Stark
subtle: Dezent
unreadEmphasis: Ungelesene Zeilen
logo:
colour: 'Farbe'
heading: Logo
icon: 'Symbol'
independent: 'Selbst wählen'
linked: 'Dem Theme folgen'
# U+00AD, a soft hyphen, where the long compounds may break: a tile
# has 72px for its name at its narrowest, and "Klammeraffenhorn"
# does not fit in it. Invisible whenever the word does fit.
motif:
airmail: 'Luftpost'
at-horn: "Klammer\u00ADaffen\u00ADhorn"
blue-horn: 'Das blaue Horn'
happy-mail: 'Fröhliche Post'
love-letter: "Liebes\u00ADbrief"
mailbox: "Brief\u00ADkasten"
pl: 'Klassisch'
pl-stamp: "Brief\u00ADmarke"
snail-mail: "Schnecken\u00ADpost"
wax-seal: 'Siegel'
original: 'Original'
style:
aurora: 'Polarlicht'
berry: 'Beere'
blue-tonal: 'Blau in Blau'
bronze-flick: 'Bronzener Schwung'
bronze-ink: 'Bronze & Tinte'
burgundy: 'Burgunder'
charcoal-amber: 'Anthrazit & Bernstein'
cobalt-coral: 'Kobalt & Koralle'
copper: 'Kupfer'
deep-violet: 'Tiefviolett'
ember: 'Glut'
espresso-cream: 'Espresso & Sahne'
forest: 'Wald'
forest-lime: 'Wald & Limette'
graphite-red: 'Graphit & Rot'
indigo-violet: 'Indigo–Violett'
ink: 'Tinte'
midnight-gold: 'Mitternacht & Gold'
navy-sky: 'Marine & Himmel'
ocean: 'Ozean'
petrol-copper: 'Petrol & Kupfer'
plum-rose: 'Pflaume & Rosé'
postal: 'Post'
product-blue: 'Produktblau'
red-flick: 'Roter Schwung'
sky-flick: 'Blauer Schwung'
slate: 'Schiefer'
sunset: 'Abendrot'
teal-gold: 'Türkis & Gold'
tricolore: 'Tricolore'
twilight: 'Dämmerung'
violet-flick: 'Violetter Schwung'
subheading: 'Dein Symbol, dann seine Farben. Topbar und Tab-Symbol tragen sie.'
main:
heading: Hauptbereich
matchGlass: An Glas-Deckkraft angleichen
subheading: Farbton und Deckkraft des Hauptbereichs, unabhängig von der Seitenleiste.
tint: Hintergrundfarbton
preview:
body: Eine kurze Nachricht, damit der Lesebereich etwas zu zeigen hat. Nichts davon ist echte Post — die Vorschau lädt keine.
heading: Vorschau
hide: Vorschau ausblenden
resize: Vorschau in der Breite ändern
compose_body: Eine halb geschriebene Antwort, damit im Fenster etwas steht. Hier wird nichts verschickt.
compose_heading: Neue Nachricht
compose_send: Senden
compose_subject: 'Re: Notizen zur Analytical Engine'
compose_to: ada@plmail.test
field_date: Datum
field_from: Von
field_subject: Betreff
field_to: An
reply: Antworten
sender1: Ada Lovelace
sender2: Grace Hopper
sender3: Kathleen Booth
sender4: Margaret Hamilton
sender5: Barbara Liskov
sender6: Karen Spärck Jones
sender7: Radia Perlman
sender8: Frances Allen
show: Vorschau anzeigen
snippet: So sieht eine Vorschauzeile aus, und so viel davon passt hinein, bevor der Platz in der Zeile ausgeht.
subheading: Deine Einstellungen an einer Beispielliste. Hier wird nichts aus deinen Nachrichten geladen.
to: an dich
value_from: Ada Lovelace <ada@plmail.test>
value_to: du@plmail.test
subject1: Notizen zur Analytical Engine
subject2: 'Re: Entwurf des Compilers'
subject3: Assembler-Notizen, wie versprochen
subject4: Steuerungssoftware — die Prioritätenliste
subject5: 'Re: Abstraktion und die Typhierarchie'
subject6: Termgewichtung, und warum sie zählt
subject7: Entwurf für den Spanning Tree
subject8: 'Die innere Schleife optimieren: Ergebnisse'
reset: Auf Standard zurücksetzen
subheading: Farbschema, Dichte, Schrift und Hintergrund — das ganze Erscheinungsbild der App an einem Ort.
seg:
custom: 'Eigene'
default: 'Theme-Vorgabe'
hidden: 'Ausgeblendet'
shown: 'Sichtbar'
text:
autoDerive: Automatisch ableiten
color: Textfarbe
faint: Sehr blass
heading: Text
muted: Gedämpft
subheading: Passe die Textfarbe für bessere Lesbarkeit auf deinem Hintergrund an.
theme:
dark: Dunkel
dusk: Dämmerung
heading: Theme
more: 'Mehr Themes'
light: Hell
nord: Nord
paper: Papier
solar: Solar
subheading: Farbschema für die gesamte Oberfläche.
system: System
typography:
family: Schriftart
font:
grotesk: Grotesk
monospace: Dickengleich
serif: Serif
system: System
heading: Typografie
scale: Textgröße
scaleHint: Gilt für die gesamte Oberfläche. Das Verfassen-Fenster behält seine eigene Schrift und Größe — die gehen mit der Nachricht hinaus.
subheading: Schriftart und Größe, in der die Oberfläche gezeichnet wird.
compose_defaults:
heading: 'Standards fürs Verfassen'
invalid: 'Diese Einstellung konnte nicht gespeichert werden.'
read_receipt:
for_alias: 'Lesebestätigungen für %alias%'
hint: 'Wenn ein Absender benachrichtigt werden möchte, sobald du seine Nachricht gelesen hast.'
inherit: 'Konto-Standard (%mode%)'
label: 'Lesebestätigungen'
mode:
always: 'Immer senden'
ask: 'Jedes Mal fragen'
never: 'Nie senden'
saved: 'Gespeichert.'
subheading: 'Was jede deiner Adressen beim Senden und Empfangen standardmäßig tut.'
filters:
account: Account
action:
applyLabel: Label vergeben
archive: Posteingang überspringen
fileInCategory: In Kategorie ablegen
markRead: Als gelesen markieren
markSpam: Als Spam markieren
removeLabel: Label entfernen
saveToIntegration: Anhänge speichern in
star: Markieren
trash: In den Papierkorb
add: Neuer Filter
add_action: Aktion hinzufügen
add_condition: Bedingung hinzufügen
add_group: Gruppe hinzufügen
all_accounts: Alle Konten
count: '%count% Filter'
count_capped: 'Trifft auf %count%+ vorhandene Nachrichten zu'
count_error: Noch kein verwendbarer Filter
count_exact: 'Trifft auf %count% vorhandene Nachricht zu|Trifft auf %count% vorhandene Nachrichten zu'
delete: Filter "%name%" löschen
delete_confirm: 'Den Filter "%name%" löschen? Bereits einsortierte Mail bleibt, wo sie ist.'
delete_title: Filter löschen
deleted: Filter gelöscht.
disable: Filter deaktivieren
disabled: Aus
edit: 'Filter "%name%" bearbeiten'
edit_title: Filter bearbeiten
empty: Noch keine Filter
empty_hint: Filter sortieren Mail beim Eintreffen — Label vergeben, Posteingang überspringen, markieren oder direkt in den Papierkorb.
enable: Filter aktivieren
error:
action_required: Füge mindestens eine Aktion hinzu, sonst tut der Filter nichts.
name_required: Gib dem Filter einen Namen.
field:
after: Empfangen nach
bcc: Bcc enthält
before: Empfangen vor
body: Text enthält
cc: Cc enthält
filename: Anhang heißt
from: Von enthält
fromAddress: 'Von ist genau'
fromDomain: 'Absender-Domain ist'
hasAttachment: Hat einen Anhang
hasKeyword: Ist
hasLabel: Hat Label
listId: Mailingliste ist
maxSize: Kleiner als (Bytes)
minSize: Größer als (Bytes)
notKeyword: Ist nicht
notLabel: Hat Label nicht
subject: Betreff enthält
text: Irgendwo in der Nachricht
to: An enthält
folder:
choose: Ordner wählen
# Steht da, solange eine "Anhänge speichern in"-Aktion keinen
# eigenen Ordner nennt. Dann speichert die Regel keinen, und der
# Upload landet dort, wo die Verbindung ihn standardmäßig ablegt —
# dasselbe kommt zurück, wenn im Picker die oberste Ebene gewählt
# wird.
default: Standardordner
heading: Filter
join:
and: und
none: 'keines von: %list%'
or: oder
keyword:
answered: beantwortet
draft: ein Entwurf
flagged: markiert
seen: gelesen
category_missing: '(gelöschte Kategorie)'
integration_missing: '(getrennter Dienst)'
label_missing: '(gelöschtes Label)'
move_down: '"%name%" nach hinten'
move_up: '"%name%" nach vorne'
name: Name
name_placeholder: z. B. Rechnungen von Acme
new_title: Neuer Filter
no: Nein
no_actions: Noch keine Aktionen
no_categories: 'Noch keine Kategorien — leg zuerst eine an.'
no_integrations: 'Keine Dienste verbunden — zuerst unter Integrationen einrichten.'
of_the_following: der folgenden
op:
all: Alle
any: Beliebige
none: Keine
placeholder:
date: Datum wählen
number: 0
text: Wert eingeben…
already_running: Dieser Filter läuft bereits.
queued: Eingereiht — wird im Hintergrund auf vorhandene Mail angewendet.
remove_action: Aktion entfernen
empty_group: 'Diese Gruppe ist leer — sie trifft auf nichts zu, bis eine Bedingung hinzukommt.'
no_conditions: 'Keine Bedingungen: Diese Regel gilt für jede Nachricht in ihrem Geltungsbereich.'
remove_condition: Bedingung entfernen
remove_group: Gruppe entfernen
reorder: Zum Umsortieren ziehen
run: Auf vorhandene Mail anwenden
run_state:
completed: 'Auf %count% Nachrichten angewendet'
failed: 'Lauf vorzeitig gestoppt — %count% Nachrichten waren erledigt'
queued: 'In der Warteschlange…'
running: 'Wird angewendet… bisher %count%'
run_confirm: '"%name%" auf vorhandene Mail anwenden? Das kann viele Nachrichten auf einmal verschieben und neu beschriften.'
saved: Filter gespeichert.
spam_rule_name: 'Spam: %sender%'
stop: Nach diesem Filter aufhören
stop_help: Für Nachrichten, auf die dieser Filter zutrifft, werden spätere Filter übersprungen.
subheading: Mail automatisch beim Eintreffen sortieren.
summary:
every_message: 'es sich um irgendeine Nachricht handelt'
every_message_in: 'es sich um irgendeine Nachricht in %account% handelt'
full: 'Wenn %conditions% → %actions%'
in_account: '%conditions%, in %account%'
# Ohne das lesen sich zwei Regeln, die in dieselbe Verbindung
# speichern, exakt gleich — und genau dafür wählt man einen Ordner.
into_folder: '%action% nach %folder%'
no_actions: 'Wenn %conditions% → (noch keine Aktionen)'
then: Dann
when: Wenn
yes: Ja
handwriting:
heading: Handschriftliche Unterschrift
subheading: Einmal zeichnen und danach auf jedes PDF setzen, ohne sie neu zu zeichnen. Das ist ein Bild deines Namens, kein digitales Zertifikat.
saved: Deine gespeicherte Unterschrift
save: Unterschrift speichern
clear: Löschen
remove: Gespeicherte Unterschrift entfernen
health:
awaiting:
calendar_resync: >-
Synchronisierung gestartet. Das Ergebnis steht noch aus — diese
Karte sagt Bescheid, sobald es da ist.
confirm:
destructive: >-
Damit werden die wartenden Aufgaben endgültig verworfen. Nichts
wird erneut versucht, und es lässt sich nicht rückgängig
machen. Fortfahren?
fact:
granted_at: 'Angemeldet am'
last_full_resync: 'Postfach komplett neu gelistet (%count%×)'
never: 'nie'
never_delivered: 'es kam noch nie etwas an'
never_run: 'kein Lauf aufgezeichnet'
not_recorded: 'nicht erfasst'
not_registered: 'nicht registriert'
push_expires: 'Registrierung läuft ab'
push_last_delivered: 'Letzte Benachrichtigung erhalten'
push_last_renewal: 'Erneuerung lief zuletzt'
flash:
calendar_resync: >-
%calendar% wurde zur Synchronisierung angemeldet. Sie läuft
jetzt im Hintergrund, und die Karte unten meldet das Ergebnis.
push_repair_failed: >-
Die Sofortzustellung für %account% konnte nicht neu registriert
werden. Sie bleibt beim Abruf nach Zeitplan, deine Post kommt
also weiter an. Die Karte unten zeigt, was bekannt ist.
push_repaired: >-
Sofortzustellung für %account% neu registriert.
queue_discarded: '%count% liegen gebliebene Aufgaben verworfen.'
queue_retried: '%count% liegen gebliebene Aufgaben wieder eingereiht.'
heading: 'Zustand deiner Konten'
healthy:
body: >-
Deine Konten sind angemeldet, deine Kalender synchronisieren,
und es wartet nichts auf dich. Sollte einmal keine Post mehr
ankommen, erscheint „Zustand der Konten“ wieder in der
Einstellungsliste, und hier steht dann, woran es liegt.
title: 'Alles funktioniert'
issue:
account_grant_weekly_expiry:
body: >-
Mail kommt weiterhin an. Aber die letzte Anmeldung dieses
Kontos hat %days% Tage gehalten, bevor Google sie nicht mehr
akzeptiert hat, und die aktuelle ist inzwischen ungefähr
genauso alt — sie wird also wahrscheinlich in ein bis zwei
Tagen aufhören.
Dieses Muster macht Google bei OAuth-Apps, deren
Zustimmungsbildschirm noch auf „Testing‟ steht: deren
Refresh-Token laufen nach etwa einer Woche ab, egal wie die
App sie anfragt. Eine neue Anmeldung kauft dir eine weitere
Woche und behebt nichts. Die Lösung liegt in der Google
Cloud Console — stell den Veröffentlichungsstatus des
Zustimmungsbildschirms auf „In production‟. Veröffentlichen
ist nicht dasselbe wie Verifizieren; eine unverifizierte App
funktioniert, sie zeigt beim ersten Mal nur einen Warnhinweis.
Wenn du sie nicht auf Testing stehen hast, ignorier das —
dann hat etwas anderes die Anmeldung früh beendet, und es
passiert vielleicht nicht wieder.
title: '%account% braucht wahrscheinlich in ein bis zwei Tagen eine neue Anmeldung'
account_reconnect_weekly:
body: >-
Für dieses Konto kommt keine neue Mail mehr an, und alles,
was daran hängt, steht ebenfalls still — Kalender-Sync,
Filter beim Empfang und das Senden von dieser Adresse. Die
bereits geladene Mail ist sicher und weiterhin da.
Diese Anmeldung hat %days% Tage gehalten, und genau das
macht Google mit OAuth-Apps, deren Zustimmungsbildschirm
noch auf „Testing‟ steht: deren Refresh-Token laufen nach
etwa einer Woche ab. Wenn das auf diese Installation
zutrifft, bringt eine neue Anmeldung die Mail wieder ins
Laufen — und nächste Woche passiert dasselbe. Was es
abstellt, liegt in der Google Cloud Console: stell den
Veröffentlichungsstatus des Zustimmungsbildschirms auf
„In production‟. Veröffentlichen ist nicht dasselbe wie
Verifizieren; eine unverifizierte App funktioniert, sie
zeigt beim ersten Mal nur einen Warnhinweis.
title: '%account% braucht eine neue Anmeldung — und nächste Woche wieder'
account_reconnect:
body: >-
Für dieses Konto kommt keine neue Post mehr an, und mit ihr
steht alles still, was daran hängt: die Kalender­synchroni­
sierung, Filter, die beim Empfang laufen, und das Senden
über diese Adresse. Die bereits geladene Post ist sicher
und weiterhin da. Das passiert, wenn ein Passwort geändert
oder die Zwei-Faktor-Anmeldung eingeschaltet wurde, oder
wenn die Anmeldung beim Anbieter widerrufen wurde.
title: '%account% muss sich neu anmelden'
account_contacts_scope_missing:
body: >-
plMail kann jetzt die Kontakte dieses Kontos
synchronisieren, aber %account% wurde verbunden, bevor
plMail danach gefragt hat. Mail und Kalender sind nicht
betroffen. Melde dich einmal neu an und erlaube den Zugriff
auf Kontakte, dann erscheint sein Adressbuch unter Kontakte.
title: '%account% erneut verbinden, um seine Kontakte zu synchronisieren'
account_scope_missing:
body: >-
Einige Rechte, die plMail beim Verbinden dieses Kontos
angefragt hat, wurden nicht erteilt — deshalb funktionieren
Teile davon nicht und können es auch nicht. Kalender werden
womöglich nicht synchronisiert, und Änderungen, die du hier
machst — als gelesen markieren, archivieren, markieren —
werden vielleicht auf diesem Bildschirm übernommen, vom
Anbieter abgelehnt und beim nächsten Abgleich wieder
zurückgesetzt. Verbinde das Konto neu und erlaube alles,
wonach du gefragt wirst.
title: '%account% hat nicht alle Rechte bekommen'
account_sync_failing:
body: >-
Mehrere Versuche hintereinander sind fehlgeschlagen — für
dieses Konto kommt also keine neue Mail an, und alles, was
davon abhängt, steht still: Filter, die beim Empfang laufen,
und die Ungelesen-Zähler. Die Mail, die schon da ist, bleibt
unverändert. Die Anmeldung ist in Ordnung, es liegt also am
Mailserver — er lehnt ab oder ist nicht erreichbar. Prüf, ob
er läuft und ob sich an Host, Port oder Passwort etwas
geändert hat.
title: '%account% scheitert immer wieder beim Abgleich'
server_alert:
body: >-
Dein Mailserver hat diese Nachricht für dich geschickt, hier
Wort für Wort: „%alert%“. plMail kann nichts daran ändern —
ein volles Postfach, ein bald ablaufendes Passwort oder ein
Server, der umzieht, lassen sich nur von dir oder deinem
Anbieter klären. Sie bleibt hier stehen, bis der Server sie
nicht mehr schickt.
title: '%account% — eine Nachricht von deinem Mailserver'
calendar_sync_failing:
body: >-
Dieser Kalender übernimmt keine Änderungen mehr und zeigt
den Stand von seiner letzten erfolgreichen Synchroni­
sierung. Termine, die seither anderswo angelegt oder
verschoben wurden, fehlen hier — und deine Änderungen
werden nicht nach außen übertragen.
title: '%calendar% synchronisiert nicht mehr'
calendars_blocked:
body: >-
Alle aus demselben Grund stehengeblieben — dem Grund in der
Karte darüber. Wenn du den behebst, laufen sie wieder,
alle zusammen. Sie zeigen, was sie beim letzten
funktionierenden Abgleich wussten, und es wurde nichts
gelöscht.
title: '%count% Kalender werden nicht synchronisiert: %calendars%'
integration_reconnect:
body: >-
Anhänge in %connection% zu speichern und Dateien von dort
anzuhängen funktioniert erst wieder nach einer neuen
Verbindung. Deine Post ist davon nicht betroffen — es geht
nur um die Verbindung zu diesem Dienst. An den dort
abgelegten Dateien wurde nichts verändert.
title: '%connection% muss neu verbunden werden'
integration_scope_missing:
body: >-
Diese Verbindung funktioniert, aber einige der Rechte, die
plMail angefragt hat, wurden nicht erteilt — Teile davon
funktionieren deshalb nicht und können es auch nicht.
Vielleicht bleibt das Durchsuchen leer, während Speichern
klappt, oder umgekehrt. Verbinde sie neu und erlaube alles,
wonach du gefragt wirst.
title: '%connection% hat nicht alle Rechte bekommen'
push_degraded:
body: >-
Die Registrierung ist aktiv und nicht abgelaufen, aber es
ist Post angekommen, die sie nie angekündigt hat — die
Benachrichtigungen gehen also zwischen Anbieter und dieser
Installation verloren, sie werden nicht etwa gar nicht
angefordert. Bei Gmail deutet das auf das Pub/Sub-Abo in
der Google Cloud: Prüfe, ob es dein Topic noch an diese
Adresse weiterleitet. Deine Post kommt inzwischen weiter
über den Abruf nach Zeitplan an, ein paar Minuten später
als sie sollte.
title: 'Sofortzustellung ist für %account% registriert, kommt aber nicht an'
push_lapsed:
body: >-
Die Registrierung ist abgelaufen und wurde nicht erneuert,
es wird also gar nichts mehr zugestellt. Die Erneuerung
läuft einmal täglich von selbst; liegt der letzte Lauf
unten Tage zurück, steht der Worker für geplante Aufgaben
still — dann ist das zu reparieren, nicht dieses Konto.
Deine Post kommt weiter über den Abruf nach Zeitplan an,
ein paar Minuten später als sie sollte.
title: 'Sofortzustellung für %account% ist abgelaufen'
queue_work_abandoned:
body: >-
%count% Hintergrund­aufgaben sind wiederholt gescheitert
und wurden beiseitegelegt, damit sie es nicht endlos weiter
versuchen. Meist ist das die Folge eines der Probleme
darüber und keine eigene Störung — behebe erst dieses und
reihe sie danach wieder ein.
title: '%count% Hintergrund­aufgaben wurden aufgegeben'
outcome:
calendar_failed_again: >-
Es hat wieder nicht geklappt. Was diesmal gemeldet wurde, steht
unten — die Synchronisierung lief, sie war nur nicht erfolgreich.
calendar_still_waiting: >-
Die Synchronisierung wurde gestartet, aber es kam noch nichts
zurück. Versuch es noch einmal oder lade die Seite neu.
calendar_synced: 'Synchronisiert. Dieser Kalender ist wieder auf dem neuesten Stand.'
pending:
calendar_resync: 'Synchronisierung wird gestartet …'
push_resubscribe: 'Wird wieder eingeschaltet …'
queue_discard: 'Wird verworfen …'
queue_retry: 'Werden zurückgestellt …'
reconnect: 'Weiterleitung zu %provider% …'
reconnect_generic: 'Weiterleitung zur Anmeldung …'
repair:
calendar_resync:
label: 'Jetzt synchronisieren'
promise: >-
Fordert diesen Kalender sofort zu einer neuen
Synchronisierung auf und setzt ihn zurück auf den normalen
Zeitplan. Es wird nichts gelöscht.
integration_grant:
label: 'Alle Rechte erteilen'
promise: >-
Bringt dich zurück zu %connection%, um dich neu anzumelden
und alles zu erteilen, wonach plMail fragt. Was dort liegt,
wird nicht angefasst.
integration_reconnect:
label: 'Neu verbinden'
promise: >-
Führt dich zur erneuten Anmeldung und stellt danach die
bestehende Verbindung wieder her. Deine Filter und
gespeicherten Ablageorte bleiben erhalten.
push_resubscribe:
label: 'Sofortzustellung wieder einschalten'
promise: >-
Meldet dieses Konto erneut für die Sofortzustellung an.
Deine Post kommt in der Zwischenzeit ohnehin weiter an.
queue_discard:
label: 'Verwerfen'
promise: >-
Wirft die liegen gebliebenen Aufgaben weg, ohne sie
auszuführen. Das lässt sich nicht rückgängig machen, und
was sie nicht erledigt haben, bleibt unerledigt.
queue_retry:
label: 'Wieder einreihen'
promise: >-
Versucht die liegen gebliebenen Aufgaben noch einmal.
Unbedenklich — was erneut scheitert, landet einfach wieder
hier.
grant_contacts:
label: 'Kontakte erlauben'
promise: >-
Bringt dich zurück zum Anbieter, um dich als %account%
anzumelden und den Zugriff auf Kontakte zu erlauben. An
deiner Mail ändert sich nichts, und keine Mail wird neu
heruntergeladen.
grant_calendar:
label: 'Alle Rechte erteilen'
promise: >-
Bringt dich zurück zum Anbieter, um dich als %account%
anzumelden und alles zu erteilen, wonach plMail fragt. An
deiner Mail ändert sich nichts, und es wird nichts neu
geladen.
reconnect_early:
label: 'Jetzt neu anmelden'
promise: >-
Meldet dich neu an, bevor die aktuelle Anmeldung ausläuft,
damit zwischendurch nichts stehen bleibt. Mail, Ordner,
Labels, Filter, Kalender und Einstellungen bleiben genau so,
wie sie sind. Du musst dich als %account% anmelden. Das
kauft dir eine weitere Woche — es verhindert nicht, dass es
wieder passiert; das tut nur das Veröffentlichen des
Zustimmungsbildschirms.
reconnect:
label: 'Konto neu verbinden'
promise: >-
Führt dich zur erneuten Anmeldung und hinterlegt die neue
Anmeldung an genau diesem Konto. Deine Post, Ordner,
Labels, Filter, Kalender und Einstellungen bleiben
unverändert — es wird nichts erneut geladen und nichts
gelöscht. Du musst dich als %account% anmelden; eine andere
Adresse wird abgelehnt und nicht stillschweigend
übernommen.
reconnect:
done: '%account% ist wieder verbunden. Post und Kalender holen in den nächsten Minuten auf.'
wrong_account: >-
Damit hast du dich als %actual% angemeldet, dieses Konto ist
aber %expected%. Es wurde nichts verändert. Melde dich beim
Anbieter von %actual% ab und versuche es erneut — die Adresse
zu tauschen hätte ein fremdes Postfach unter dieses gemischt.
subheading: >-
Was nicht mehr funktioniert, was das für deine Post bedeutet, und
der kleinste Schritt, der es behebt.
technical_detail: 'Technische Einzelheiten'
compose_behavior:
folded: 'Eingeklappt'
forward_quote: 'Zitierter Text beim Weiterleiten'
forward_quote_hint: 'Öffne eine Weiterleitung mit dem Original hinter der Kapsel — oder gleich ausgeklappt.'
send_feedback: Beim Senden
send_feedback_hint: 'Fenster sofort schließen und den Rückgängig-Countdown in einer Einblendung zeigen — oder das Fenster offen lassen, sodass sein eigener Senden-Knopf der Abbruch ist.'
send_optimistic: Schließen
send_hold: Offen lassen
heading: 'Verfassen'
open: 'Ausgeklappt'
subheading: 'Wie sich das Verfassen-Fenster für dich verhält, über alle Konten.'
insights:
extractor:
flight: Flüge
flight_hint: Flugnummern und Abflüge aus Airline-Buchungen und Check-in-Mails.
github: GitHub
github_hint: Issues und Pull Requests aus GitHub-Benachrichtigungen.
invoice: Rechnungen
invoice_hint: Beträge und Fälligkeiten aus Rechnungen und Zahlungserinnerungen.
otp: Anmeldecodes
otp_hint: Einmalcodes aus Anmelde- und Bestätigungsmails, mit der Gültigkeit, die die Mail nennt.
parcel: Pakete
parcel_hint: Sendungsnummern und Zustellstatus aus Versandbestätigungen.
subscription: Abos
subscription_hint: Automatische Verlängerungen und endende Testphasen, mit dem Datum dazu.
ticket: Tickets
ticket_hint: Veranstaltungstickets und Buchungen mit Datum.
heading: Radar
pane: Streifen über der Mailliste
pane_hint: >-
Zeigt dein nächstes Paket, deinen nächsten Flug oder dein
nächstes Ticket in einem Band über dem Posteingang. Schaltest
du ihn aus, verschwindet nur das Band — plMail liest diese
Angaben weiterhin aus deinen Mails, und du findest sie im
Radar und an der Mail selbst.
seg:
'off': 'Aus'
'on': 'An'
subheading: >-
Was plMail aus deinen Mails herausliest — Pakete, Flüge, Tickets,
GitHub-Aktivität — lokal und nach festen Regeln statt Cloud oder
Modell; schaltest du eine Quelle aus, entstehen daraus keine neuen
Karten mehr.
integrations:
ask_admin: 'Deine Administration hat diesen Dienst nicht freigeschaltet.'
auth:
appPassword: 'App-Passwort'
oauth2: 'Anmeldung'
available_heading: 'Dienst verbinden'
badge:
ask_admin: 'nicht freigeschaltet'
soon: 'bald verfügbar'
checked: 'geprüft %date%'
connect: Verbinden
disabled: 'Verbindung pausiert'
disconnect: Trennen
disconnect_confirm: '%name% trennen? Bereits angehängte Dateien bleiben unberührt.'
disconnect_confirm_mirrored: '%name% trennen? %calendars% Kalender und %books% Adressbuch/Adressbücher, die von dort gespiegelt werden, werden hier ebenfalls entfernt; Termine aus deinen E-Mails kommen vorher in deinen Standardkalender. Bereits angehängte Dateien bleiben unberührt.'
disconnected: 'Dienst getrennt'
edit: Bearbeiten
empty: 'Noch keine Dienste verbunden.'
enabled: 'Verbindung fortgesetzt'
field:
base_url: 'Serveradresse'
base_url_fixed: 'Verbindung zu %url%, von der Administration festgelegt.'
name: Name
name_help: 'Nur für dich sichtbar, um zwei Verbindungen auseinanderzuhalten.'
permissions:
immich: 'asset.read — Fotos und Videos sehen|asset.download — die Originaldatei anhängen|asset.view — Vorschauen im Dialog anzeigen|asset.upload — Anhänge in Immich speichern|album.read — Alben auflisten und durchsehen|albumAsset.create — gespeicherte Anhänge einem Album zuordnen'
permissions_heading: 'Berechtigungen für diesen Schlüssel'
permissions_note: 'Ein Schlüssel mit allen Berechtigungen funktioniert ebenfalls und ist einfacher, wenn du nicht einzeln auswählen möchtest.'
secret:
dropbox: 'Zugriffstoken'
googleDrive: 'Zugriffstoken'
googlePhotos: 'Zugriffstoken'
immich: 'API-Schlüssel'
nextcloud: 'App-Passwort'
oneDrive: 'Zugriffstoken'
paperless: 'API-Token'
secret_help:
dropbox: ''
googleDrive: ''
googlePhotos: ''
immich: 'In Immich unter Account Settings → API Keys erzeugen.'
nextcloud: 'In Nextcloud unter Einstellungen → Sicherheit → Geräte & Sitzungen erzeugen. Nicht das Anmeldepasswort verwenden.'
oneDrive: ''
paperless: 'In Paperless unter My Profile → API Auth Token kopieren.'
secret_unchanged: 'Leer lassen, um die gespeicherten Zugangsdaten zu behalten'
username: Benutzername
heading: Integrationen
not_implemented: 'plMail kann diesen Dienst noch nicht ansprechen.'
oauth_no_code: 'Der Dienst hat keinen Autorisierungscode zurückgegeben. Bitte erneut versuchen.'
oauth_state_mismatch: 'Diese Anmeldung konnte nicht überprüft werden. Bitte neu beginnen.'
not_oauth: 'Dieser Dienst nutzt diese Anmeldeart nicht.'
pause: Pausieren
paused: pausiert
resume: Fortsetzen
save_tests: 'Beim Speichern wird die Verbindung sofort geprüft.'
saved: 'Dienst verbunden'
saved_with_error: 'Gespeichert, aber der Verbindungstest ist fehlgeschlagen'
subheading: 'Dateien aus anderen Diensten anhängen und Anhänge dorthin speichern.'
test: Testen
test_failed: 'Verbindungstest fehlgeschlagen'
test_ok: 'Verbindung funktioniert'
unavailable_heading: 'Hier nicht verfügbar'
calendar_behaviour:
button: Kalenderschaltfläche
button_hint: 'Welche Ansichten die Schaltfläche in der Kopfleiste durchläuft. Eine ausgelassene Ansicht wird nicht entfernt: Mit dem Ziehgriff erreichst du sie weiterhin.'
heading: Verhalten
option_calendar: Nur geteilt
option_none: Alle drei
option_split: Nur volle Breite
subheading: 'Wie die Kalenderschaltfläche in der Kopfleiste zwischen den Ansichten wechselt.'
contacts_behaviour:
button: 'Kontakte-Knopf'
button_hint: 'Durch welche Ansichten der Knopf in der oberen Leiste schaltet. Eine ausgelassene Ansicht ist nicht weg: Der Ziehgriff erreicht sie weiterhin.'
heading: 'Verhalten'
option_contacts: 'Nur neben der Mail'
option_none: 'Alle drei'
option_split: 'Nur volle Breite'
subheading: 'Wie der Kontakte-Knopf in der oberen Leiste zwischen den Ansichten wechselt.'
contacts:
allow_contacts: 'Kontakte erlauben'
allow_contacts_hint: 'Verbunden, bevor plMail nach Kontakten gefragt hat. Melde dich einmal neu an und erlaube sie, dann erscheint das Adressbuch dieses Kontos hier.'
allow_contacts_microsoft: 'Gibt deine Organisation Apps für ihre Benutzer frei, bitte zuerst deinen Administrator, plMails Berechtigung für Kontakte freizugeben. Bis dahin lehnt Microsoft diese Anmeldung ab.'
carddav:
connect: CardDAV-Server verbinden
disconnect: '"%name%" trennen'
disconnect_confirm: >-
"%name%" trennen? Jedes von dort gespiegelte Adressbuch wird
hier entfernt, samt Änderungen, die noch nicht an den Server
gegangen sind. Die Kontakte auf dem Server bleiben unberührt.
field:
address: Serveradresse
address_help: >-
Die CardDAV-Adresse, die dein Server anzeigt — oder einfach
die Domain: plMail fragt die Domain, wo ihre Adressbücher
liegen, bevor es aufgibt.
name: Name
name_help: Wie diese Verbindung in deinen Einstellungen heißen soll.
reuse: Das Passwort eines meiner E-Mail-Konten verwenden
reuse_account: Das Passwort welchen Kontos
reuse_account_none: Konto wählen…
reuse_help: >-
Standardmäßig aus, und das aus gutem Grund: Die meisten
Server wollen ein App-Passwort, und ein Haken hier schickt
ein Passwort, das du plMail für dein Postfach gegeben hast,
an die Adresse oben.
secret: App-Passwort
secret_help: >-
Lege eines auf deinem Server an, statt dein Anmeldepasswort
zu nehmen — iCloud und Fastmail akzeptieren nichts anderes.
username: Benutzername
username_help: Der Kontoname, unter dem dich dein Server kennt.
intro: >-
Jeder CardDAV-Server: Nextcloud, Radicale, Baïkal, Fastmail,
iCloud. Meist dieselbe Adresse und dasselbe App-Passwort wie
bei deinen Kalendern.
submit: Verbinden und Adressbücher suchen
title: CardDAV-Server verbinden
empty: Noch kein Kontakte-Server verbunden.
find: Adressbücher wählen
heading: Kontakte
intro: >-
Adressbücher, gespiegelt von einem CardDAV-Server. Ihre Kontakte
werden dir beim Schreiben vorgeschlagen, und was du hier änderst,
geht zurück an den Server.
never_synced: Noch nicht synchronisiert
no_books: Von diesem Server ist noch kein Adressbuch gewählt.
open: Kontakte öffnen
read_only: Schreibgeschützt
subheading: Woher deine Adressbücher kommen.
subscribe:
empty: '"%name%" bietet keine Adressbücher an.'
intro: Wähle, welche Adressbücher von "%name%" plMail spiegeln soll.
mirrored: Gespiegelt
mirrored_elsewhere: 'Wird bereits über %name% gespiegelt'
save: Speichern
title: Adressbücher wählen
unsubscribe_note: >-
Nimmst du den Haken bei einem Adressbuch weg, verschwindet seine
Kopie hier, samt Änderungen, die noch nicht gesendet sind. Der
Server behält seine eigene.
sync_now: '"%name%" jetzt synchronisieren'
synced: Synchronisiert %date%
toast:
disconnected: Kontakte-Server getrennt
saved: Adressbücher gespeichert
sync_queued: Synchronisierung eingereiht
unchanged: Nichts geändert
calendars:
account_hint: Hier landen Termine aus E-Mails von %address%.
caldav:
connect: CalDAV-Server verbinden
disconnect: '"%name%" trennen'
disconnect_confirm: >-
"%name%" trennen? Jeder von dort gespiegelte Kalender wird hier
entfernt. Was darauf aus deinen E-Mails stammt und nicht von
einem Kalender, zieht vorher in deinen Standardkalender um.
disconnect_title: Diesen Server trennen
field:
address: Serveradresse
address_help: >-
Die CalDAV-Adresse, die dein Server anzeigt — oder einfach
die Domain: plMail fragt die Domain, wo ihre Kalender
liegen, bevor es aufgibt.
name: Name
name_help: Wie diese Verbindung in deinen Einstellungen heißen soll.
reuse: Das Passwort eines meiner E-Mail-Konten verwenden
reuse_account: Das Passwort welchen Kontos
reuse_account_none: Konto wählen…
reuse_help: >-
Standardmäßig aus, und das aus gutem Grund: Die meisten
Server wollen ein App-Passwort, und ein Haken hier schickt
ein Passwort, das du plMail für dein Postfach gegeben hast,
an die Adresse oben.
secret: App-Passwort
secret_help: >-
Lege eines auf deinem Server an, statt dein Anmeldepasswort
zu nehmen — iCloud und Fastmail akzeptieren nichts anderes.
username: Benutzername
username_help: Der Kontoname, unter dem dich dein Server kennt.
intro: >-
Jeder CalDAV-Server: Nextcloud, Radicale, Baïkal, Fastmail,
iCloud, eine Kiste im Schrank. Kalender von Gmail und Outlook
kommen nicht so herein — die kommen mit dem E-Mail-Konto.
submit: Verbinden und Kalender suchen
title: CalDAV-Server verbinden
count: '%count% Kalender'
default: Standard
delete: Kalender "%name%" löschen
delete_title: Kalender löschen
edit: Kalender "%name%" bearbeiten
empty: Noch keine Kalender.
from: Von %name%
heading: Kalender
hide: Kalender ausblenden
last_synced: 'Zuletzt abgeglichen %when%'
make_default: '"%name%" zum Kalender für neue Termine machen'
make_default_title: Als Standard setzen
mirrored: Gespiegelt
mirrored_hint: Wird mit %name% abgeglichen.
never_synced: Noch nicht abgeglichen
read_only: Nur lesen
read_only_hint: Dieser Kalender nimmt von hier aus keine Änderungen an.
show: Kalender einblenden
sources:
empty: >-
Noch kein Konto und keine Verbindung hier führt Kalender.
Gmail- und Outlook-Konten tun das; für alles andere verbinde
einen CalDAV-Server.
find: Kalender auf %name% suchen
heading: Woher Kalender kommen
managed: 'Unter Integrationen eingerichtet'
managed_hint: '%name% enthält auch deine Dateien. Trenne die Verbindung unter Einstellungen → Integrationen.'
why_admin: >-
Vielleicht hat deine Administration der App-Registrierung, mit
der plMail sich anmeldet, keine Kalenderberechtigungen gegeben.
E-Mail funktioniert auch ohne sie; Kalender nicht.
why_consent: >-
Auf Googles Zustimmungsseite lässt sich der Kalenderzugriff
abwählen, während E-Mail erlaubt wird. Verbinde das Konto neu
und lass das Kalenderhäkchen gesetzt.
why_empty: Es erscheinen keine Kalender?
why_none: Vielleicht liegen auf dem Konto schlicht keine Kalender.
subheading: >-
Name, Farbe und Zeitzone, welche Kalender die Ansichten zeigen und
wo ein neuer Termin landet.
subscribe:
default_locked: >-
Hier landen neue Termine, deshalb bleibt dieser. Mach zuerst
einen anderen Kalender zum Standard.
empty: Auf %name% liegen keine Kalender.
intro: >-
Wähle die Kalender auf %name%, die plMail mitführen soll.
Termine erscheinen innerhalb einer Minute.
mirrored: Wird bereits gespiegelt
mirrored_elsewhere: 'Wird bereits über %name% gespiegelt'
primary: Haupt
save: Auswahl speichern
title: Meine Kalender finden
unsubscribe_note: >-
Ein abgewählter Kalender wird hier gelöscht. Was darauf aus
deinen E-Mails stammt und nicht vom Kalender, zieht vorher in
deinen Standardkalender um.
sync_now: '"%name%" jetzt abgleichen'
sync_now_title: Jetzt abgleichen
labels:
count: '%count% Labels'
delete: Label "%name%" löschen
edit: Label "%name%" bearbeiten
empty: Noch keine Labels — erstelle eines, oder sie erscheinen nach der ersten Synchronisierung.
heading: Labels
hide: Label ausblenden
show: Label anzeigen
subheading: Labels erstellen, umbenennen und ordnen — und wählen, welche in der Seitenleiste erscheinen.
system: System
profile:
heading: Dein Profil
save: Profil speichern
subheading: Name und Bild, die auf deinen gesendeten Mails erscheinen.
language:
heading: Sprache
subheading: Die Sprache der plMail-Oberfläche. Deine E-Mails bleiben so, wie sie geschrieben wurden.
disposal:
delete_now: Knöpfe zum sofortigen Löschen
delete_now_hint: >-
Zeigt „Endgültig löschen“ an einer Zeile im Spam und im Papierkorb und
über einer Auswahl dort. Die Mail wird auch vom Mailserver entfernt und
lässt sich nicht zurückholen, deshalb ist es aus, bis du es einschaltest.
heading: Entsorgen
'off': Aus
'on': An
subheading: Wie Mail endgültig weggeworfen wird.
images:
always_show: Externe Bilder immer anzeigen
always_show_hint: >-
Lädt die Bilder in jeder Mail, ohne vorher zu fragen. Absender können
dann sehen, dass und wann du ihre Mail geöffnet hast, aber nicht deine
Adresse: Die Bilder kommen weiterhin über plMail zu dir. Mail im Spam
bleibt so oder so blockiert. Aus, bis du es einschaltest.
heading: Bilder
'off': Aus
'on': An
subheading: Ob Bilder, die eine Mail von anderswo lädt, erst auf Nachfrage geladen werden.
swipe_actions:
heading: Wischgesten
hint: >-
Eine Wischbewegung wirkt, sobald du weit genug ziehst oder schnell
wischst. Gelesen/ungelesen und Stern nimmst du zurück, indem du noch
einmal wischst. Archivieren bietet „Rückgängig“ an. Den Papierkorb gibt
es hier nicht: Eine Wischbewegung, die Mail löscht, hätte nichts, womit
sie sich zurücknehmen ließe.
left:
label: Nach links wischen
option:
archive: Archivieren
none: Nichts
read_unread: Gelesen / ungelesen
star: Stern
right:
label: Nach rechts wischen
subheading: Was eine Wischbewegung über eine Zeile auf dem Telefon bewirkt.
whats_new:
heading: 'Was ist neu'
'off': 'Aus'
'on': 'An'
show: 'Nach einem Update zeigen, was neu ist'
show_hint: 'Aus: Nach einem Update öffnet sich nichts, und das ? oben zeigt keinen Punkt. Die Hinweise findest du weiter unter ? → Was ist neu.'
subheading: 'Was plMail dir zeigt, nachdem es aktualisiert wurde.'
nav:
accounts: E-Mail-Konten
ai: 'Assistent'
aliases: Aliase
app_passwords: App-Passwörter
appearance: Darstellung
calendar_behaviour: Verhalten
calendars: Kalender
categories: "Kategorien"
contacts: Kontakte
disposal: Entsorgen
filters: Filter
general: Allgemein
group:
access: Zugriff
calendar: Kalender
features: Funktionen
mail: E-Mail
personal: Persönlich
health: 'Zustand der Konten'
images: Bilder
insights: Radar
integrations: Integrationen
labels: Labels
notifications: Benachrichtigungen
profile: Profil
read_receipts: Lesebestätigungen
reading_pane: Lesebereich
security: Sicherheit
sharing: Teilen
shortcuts: Tastenkürzel
signature: Signaturen
swipe_actions: Wischgesten
templates: 'Vorlagen'
notifications:
devices:
empty: >-
Noch kein Gerät registriert. Mit dem Schalter oben registrierst
du diesen Browser; eine Handy-App registriert sich selbst.
heading: 'Registrierte Geräte'
never_delivered: 'Noch nichts gesendet'
outcome:
accepted: 'Zugestellt'
failed: 'Fehlgeschlagen'
skipped: 'Nicht gesendet'
subscription-destroyed: 'Entfernt'
remove: 'Entfernen'
remove_confirm: >-
%device% entfernen? Dorthin werden keine Benachrichtigungen mehr
geschickt. Auf dem Gerät selbst wird nichts deinstalliert oder
abgeschaltet, und wenn dessen App weiterhin Benachrichtigungen
möchte, registriert sie sich beim nächsten Start erneut.
removed: >-
Gerät entfernt — dorthin wird nichts mehr geschickt. Es
registriert sich von selbst wieder, wenn seine App weiterhin
Benachrichtigungen möchte.
transport:
fcm: 'Firebase'
webpush: 'Web Push'
unverified: 'Nicht bestätigt'
verified: 'Bestätigt'
error_server: 'Der Server hat dieses Gerät abgelehnt (%error%). Versuch es erneut; passiert es wieder, sag deiner Administration Bescheid.'
error_subscribe: 'Der Push-Dienst des Browsers hat diesem Gerät keine Adresse gegeben (%error%). In Brave schalte vorher „Google-Dienste für Push-Nachrichten verwenden“ ein.'
error_worker: 'Der Hintergrunddienst von plMail ist nicht gestartet (%error%). Versuch es erneut; passiert es wieder, sag deiner Administration Bescheid.'
heading: Benachrichtigungen
ios_hint: >-
Auf iPhone und iPad funktionieren Benachrichtigungen erst, wenn
plMail zum Home-Bildschirm hinzugefügt wurde: in Safari öffnen, auf
Teilen tippen, dann "Zum Home-Bildschirm", und dort
Benachrichtigungen aktivieren.
state_denied: >-
In deinen Browser-Einstellungen blockiert. Erlaube
Benachrichtigungen für diese Seite und versuche es erneut.
state_error: Etwas ist schiefgelaufen. Versuche es erneut.
state_off: 'Aus — dieses Gerät wird nicht benachrichtigt.'
state_on: An — dieses Gerät wird über neue E-Mails benachrichtigt.
state_pending: Warten auf die Bestätigung dieses Geräts…
state_unconfigured: Push ist auf diesem Server nicht konfiguriert.
state_unknown: Wird geprüft…
state_unsupported: >-
Dieser Browser kann keine Benachrichtigungen empfangen. Füge plMail
auf iPhone und iPad zuerst zum Home-Bildschirm hinzu.
state_working: Wird ausgeführt…
subheading: >-
Lass dich auf diesem Gerät über neue E-Mails benachrichtigen, auch
wenn plMail geschlossen ist.
this_device: Dieses Gerät
toggle: Benachrichtigungen aktivieren
toggle_off: Benachrichtigungen deaktivieren
unconfigured: >-
Push ist auf diesem Server nicht konfiguriert — es sind keine
VAPID-Schlüssel hinterlegt. Führe
"bin/console app:push:generate-vapid-keys" aus.
password:
field:
current: Aktuelles Passwort
new: Neues Passwort
new_help: 'Mindestens %count% Zeichen. Mehr wird nicht verlangt — etwas Langes, das du dir merken kannst, ist besser als etwas Kurzes, das du vergisst.'
repeat: Neues Passwort wiederholen
flash:
changed: 'Passwort geändert. Jedes Gerät, auf dem du „angemeldet bleiben“ gesetzt hattest, fragt wieder danach.'
refused: 'Es wurde nichts geändert — die Meldung steht unter dem Feld.'
heading: Passwort
remember_me_note: 'Ein Passwortwechsel meldet jeden gemerkten Browser ab, außer diesem. Genau deshalb lohnt er sich, wenn ein Gerät abhandenkommt.'
subheading: 'Womit du dich anmeldest. Nur du kannst es ändern — nicht einmal die Administration kann es für dich setzen.'
submit: Passwort ändern
reading_pane:
heading: Lesebereich
hint: '„Aus“ zeigt Liste und Nachricht nacheinander; „Rechts“ stellt die Nachricht neben die Liste, sobald das Fenster genug Platz für beide hat – am Trenner dazwischen stellst du ein, wie viel jede bekommt.'
label: 'Geöffnete Nachricht anzeigen'
off: Aus
right: Rechts
subheading: 'Wo eine Unterhaltung aufgeht: anstelle der Liste oder daneben.'
security:
codes:
copy: Codes kopieren
copy_now: Sichere jetzt deine Wiederherstellungscodes
copy_now_hint: >-
Sie werden nur dieses eine Mal angezeigt. Bewahre sie dort auf, wo
du ohne dein Handy herankommst — in einem Passwortmanager oder auf
Papier in einer Schublade. Jeder Code funktioniert genau einmal.
heading: Wiederherstellungscodes
hint: >-
Mit Wiederherstellungscodes kommst du wieder hinein, wenn du dein
Handy verlierst. Ein neuer Satz ersetzt den alten — was du vorher
notiert hast, funktioniert dann nicht mehr.
regenerate: Neue Codes erzeugen
remaining: '%count% unbenutzt'
confirm_with_code: Code aus deiner App
devices:
empty: >-
Es ist kein Gerät gemerkt. Du wirst bei jeder Anmeldung nach einem
Code gefragt.
expires: 'Läuft ab am %date%'
heading: Gemerkte Geräte
hint: >-
Geräte, die 30 Tage lang nicht nach einem Code fragen. Ein Widerruf
greift sofort — beim nächsten Seitenaufruf wird wieder gefragt.
last_used: 'Zuletzt verwendet %date% von %ip%'
revoke: Widerrufen
revoke_all: Alle gemerkten Geräte widerrufen
revoke_all_confirm: >-
Jedes gemerkte Gerät wird beim nächsten Mal wieder nach einem Code
gefragt, auch dieses. Fortfahren?
revoke_confirm: '%name% nicht mehr vertrauen? Beim nächsten Mal wird wieder nach einem Code gefragt.'
this_device: dieses Gerät
disable:
confirm: >-
Dein Konto ist dann nur noch durch dein Passwort geschützt.
Fortfahren?
heading: Zwei-Faktor-Authentifizierung ausschalten
hint: >-
Das löscht deine Wiederherstellungscodes und widerruft jedes
gemerkte Gerät.
submit: Ausschalten
enable: Zwei-Faktor-Authentifizierung einrichten
enrol:
cancel: Abbrechen
heading: Zwei-Faktor-Authentifizierung einrichten
manual_copy: Schlüssel kopieren
manual_toggle: Geht das Scannen nicht? Schlüssel eingeben
qr_alt: QR-Code zum Einrichten deiner Authenticator-App
step_app: >-
Installiere eine Authenticator-App, falls du noch keine hast —
Google Authenticator, Aegis, 1Password und Bitwarden gehen alle.
step_confirm: Gib den sechsstelligen Code ein, den deine App gerade anzeigt.
step_scan: Scanne das mit der App.
submit: Bestätigen
heading: Zwei-Faktor-Authentifizierung
pitch: >-
Dein Konto ist das, was am meisten Schutz verdient: Wer da
hineinkommt, kann bei allem anderen das Passwort zurücksetzen — denn
in deiner Mail landen die Links dafür. Ein zweiter Faktor sorgt
dafür, dass ein gestohlenes Passwort allein nicht reicht.
status:
off: Zwei-Faktor-Authentifizierung ist aus
on: Zwei-Faktor-Authentifizierung ist an
on_since: 'Aktiviert am %date%'
subheading: Wie du beim Anmelden nachweist, dass du es bist.
sharing:
heading: Teilen
subheading: >-
Links, die jemandem ohne Konto einen Teil deines Kalenders zeigen,
und Seiten, auf denen er eine Stunde davon buchen kann.
shortcuts:
heading: "Tastenkürzel"
hint: "c zum Schreiben, e zum Archivieren, j und k, um durch eine Liste zu gehen. Sie wirken nur, solange du nicht gerade irgendwo tippst, und was du so ablegst, lässt sich wie sonst auch rückgängig machen."
label: "Kürzel"
'off': "Aus"
'on': "An"
show: "Kürzel anzeigen"
subheading: "Einzelne Tasten für das, was du den ganzen Tag tust."
signature:
for_alias: 'Signatur für %alias%'
heading: Signaturen
hint: 'Steht am Ende jeder neuen Nachricht, oberhalb des zitierten Textes.'
label: Signatur
overriding: 'Diese Adresse hat jetzt eine eigene Signatur — unten bearbeiten.'
per_address:
count: 'Adressen mit eigener Signatur: %number%'
disclosure: 'Für einzelne Adressen eine andere Signatur verwenden'
inherits: 'Verwendet die Signatur des Kontos.'
override: 'Eigene verwenden'
override_for: '%alias% eine eigene Signatur geben'
revert: 'Signatur des Kontos verwenden'
revert_for: 'Für %alias% wieder die Signatur des Kontos verwenden'
signs_with_nothing: 'Leer — diese Adresse sendet ohne Signatur.'
placeholder: 'Keine Signatur'
reverted: 'Wieder die Signatur des Kontos.'
save: 'Signatur speichern'
saved: 'Gespeichert.'
source:
clean: 'Es wurde nichts entfernt.'
embedded: 'In der Signatur gespeicherte Bilder: %count%.'
failed: 'Die Signatur konnte nicht dargestellt werden. Dein HTML ist unverändert. Versuch es noch einmal.'
html: 'HTML'
label: '%label% als HTML'
placeholder: 'Füge das HTML deiner Signatur ein oder schreib es hier…'
remote: 'Bilder, die nicht gespeichert werden konnten und verlinkt bleiben: %count%. Sie werden hier nicht angezeigt, und manche Empfänger müssen sie erst erlauben.'
removed: 'Entfernt, weil Mailprogramme es nicht anzeigen würden oder es nicht sicher zu versenden ist: %items%.'
rendered: 'Darstellung'
toggle: 'Ansicht der Signatur'
subheading: 'Was am Ende der Nachrichten steht, die du schreibst.'
categories:
add: Hinzufügen
built_in: "Eingebaut"
built_in_off: "Eingebaut · ausgeschaltet — die Mail liegt in Allgemein"
created: 'Kategorie „%name%“ angelegt.'
delete: Kategorie löschen
delete_confirm: 'Kategorie „%name%“ löschen? Die dort abgelegte Mail kommt zurück in den Tab, in dem sie sonst wäre. Es wird keine Mail gelöscht.'
deleted: 'Kategorie „%name%“ gelöscht.'
error:
empty: 'Eine Kategorie braucht einen Namen.'
reserved: 'Dieser Name gehört zu einem der eingebauten Tabs.'
taken: 'Du hast bereits eine Kategorie mit diesem Namen.'
too_long: 'Dieser Name ist zu lang (höchstens 40 Zeichen).'
filters_link: 'Einstellungen → Filter.'
heading: "Tabs"
hint: "Ein eigener Tab erscheint im Posteingang, solange er Mail enthält. Mail kommt über einen Filter mit der Aktion „In Kategorie ablegen“ hinein — richte einen ein unter"
move_down: "%tab% nach unten"
move_up: "%tab% nach oben"
name_label: Name
off: "Aus"
on: "An"
placeholder: 'z. B. Sendungen'
primary_fixed: "Immer zuerst und immer an — Mail aus einem Tab, den du ausschaltest, landet hier."
rename: Umbenennen
renamed: 'Umbenannt in „%name%“.'
reorder: "Zum Umsortieren ziehen"
subheading: "Schalte die eingebauten Tabs ein oder aus, leg eigene an und zieh sie in die Reihenfolge, die du willst."
sorting:
account_tabs:
hint: Zeigt die Tabs auch im eigenen Posteingang eines Kontos, wenn du das Konto in der Seitenleiste anklickst. Aus zeigt den ganzen Posteingang dieses Kontos als eine Liste.
label: Tabs in jedem Konto
'off': Aus
'on': An
again:
button: Nochmal fragen
hint: Der Assistent antwortet einmal pro Nachricht und behält die Antwort. Frag noch einmal, wenn sich Modell, Anweisung oder eine plMail-Version geändert haben — es kostet einen Modell-Aufruf pro Nachricht und gilt deshalb nur für deine neueste Mail.
label: Neueste Mail neu einsortieren
applies_to_new: Wenn du hier etwas änderst, wird deine vorhandene Mail im Hintergrund neu einsortiert — bei einem großen Postfach dauert das ein paar Minuten, gib den Tabs also einen Moment. Gespräche, die du selbst in einen Tab geschoben hast, bleiben, wo sie sind.
heading: "Sortierung"
override:
hint: Ein Gmail-Konto kommt bereits von Google sortiert an. Hier entscheidest du, ob plMail das so lässt oder selbst antwortet.
label: Bei Gmail-Konten
plmail: Selbst sortieren
provider: Googles behalten
source:
assistant: Der Assistent
assistant_help: Der Assistent liest jede Nachricht und entscheidet, worum es geht. Besser bei Mail, die sich nicht selbst ankündigt — und gelegentlich selbstbewusst daneben. Was er noch nicht erreicht hat, übernehmen die Regeln.
label: Sortiert nach
rules: Regeln
rules_help: Nur Header — ein Mailinglisten-Header, ein Abmeldelink, ein bekannter Absender. Vorhersagbar und wörtlich, und es fragt nie ein Modell.
unavailable: Sortieren per Assistent setzt voraus, dass die Mail-Sortierung für diese Installation und für dich eingeschaltet ist.
subheading: Ob dein Posteingang Tabs hat, in welchem eine Nachricht landet — und wer das entscheidet.
tabs:
assistant_warning: Der Assistent liest weiterhin jede neue Nachricht, um zu entscheiden, in welchen Tab sie gehört — in Tabs, die du ausgeschaltet hast. Mail, für die er noch nicht geantwortet hat, kann dabei ein paar Sekunden zurückgehalten werden. Wähle unten „Regeln“, um das zu beenden.
hint: Allgemein, Soziale Netzwerke, Werbung und der Rest. Aus zeigt den Posteingang als eine Liste. Mail wird im Hintergrund weiter einsortiert, damit die Tabs stimmen, sobald du sie wieder einschaltest.
label: Tabs im Posteingang
'off': Eine Liste
'on': Tabs
timezone:
heading: Zeitzone
subheading: Die Uhr, nach der Zeiten und Daten angezeigt werden. Es wird nichts umgeschrieben — derselbe Zeitpunkt wird nur auf deiner Uhr gelesen.
label: Zeitzone
follow_default: 'Server-Standard (%timezone%)'
current_time: 'In dieser Zone ist es gerade %time%.'
title: Einstellungen
templates:
add: 'Neue Vorlage'
add_folder: 'Neuer Ordner'
body: 'Nachricht'
body_placeholder: 'Schreib die Nachricht. Für alles, was sich ändert, nimm „Variable einfügen“.'
copy_of: 'Kopie von %name%'
date:
after: 'nach heute'
before: 'vor heute'
direction: 'Vor oder nach heute'
example: 'Heute geschrieben, steht dort:'
format: 'Format'
heading: 'Datum'
offset: 'Abstand'
pattern: 'Muster'
pattern_hint: 'Im Muster steht d für den Tag, M für den Monat, y für das Jahr und E für den Wochentag: dd.MM.yyyy, EEEE, d. MMMM.'
unit: 'Einheit'
delete: 'Löschen'
delete_confirm: 'Die Vorlage „%name%“ löschen?'
deleted: 'Vorlage gelöscht.'
duplicate: 'Duplizieren'
duplicated: 'Vorlage dupliziert.'
editor_empty: 'Wähl eine Vorlage aus, um sie zu bearbeiten, oder leg eine neue an.'
empty: 'Noch keine Vorlagen. Eine Vorlage, die unter einem Konto liegt, wird dir zuerst angeboten, wenn du von dort schreibst.'
error:
folder_name_required: 'Gib dem Ordner einen Namen.'
name_required: 'Gib der Vorlage einen Namen.'
folder: 'Ordner'
folder_delete_confirm: 'Den Ordner „%folder%“ löschen? Seine Vorlagen rücken eine Ebene nach oben und bleiben erhalten.'
folder_deleted: 'Ordner gelöscht. Seine Vorlagen sind noch da.'
folder_heading_new: 'Neuer Ordner'
folder_heading_rename: 'Ordner umbenennen'
folder_in: 'In'
folder_name: 'Name'
folder_saved: 'Ordner gespeichert.'
format:
custom: 'Eigenes Muster'
full: 'Ausführlich'
iso: 'ISO'
long: 'Lang'
medium: 'Mittel'
short: 'Kurz'
weekday: 'Wochentag'
group:
date: 'Datum'
recipient: 'Empfänger'
sender: 'Absender'
heading: 'Vorlagen'
insert_variable: 'Variable einfügen'
name: 'Name'
name_placeholder: 'Zahlungserinnerung'
preview: 'Vorschau'
preview_heading: 'So würde sie heute eingefügt, für einen Beispielempfänger'
preview_no_subject: 'Kein Betreff'
preview_unavailable: 'Füg ein E-Mail-Konto hinzu, um eine Vorschau zu sehen.'
# "Name <address>" exactly: it is read by the same code that reads a
# recipient chip in the compose window, so the preview fills a first
# name the way a real message would.
sample_recipient: 'Dana Weber <dana@example.org>'
saved: 'Vorlage gespeichert.'
signature:
automatic: 'Automatisch — die Adresse, von der du schreibst'
heading: 'Signatur'
hint: 'Automatisch folgt der Absenderadresse und ersetzt die Signatur, die schon in der Nachricht steht. Eine ausgewählte Signatur bleibt, egal von welcher Adresse du schreibst.'
subheading: 'Nachrichten, die du einmal schreibst und beim Verfassen einfügst.'
subject: 'Betreff'
subject_hint: 'optional, füllt eine leere Betreffzeile'
subject_placeholder: 'Kein Betreff'
top_level: 'Kein Ordner'
tree:
add_folder_here: 'Neuer Ordner in %folder%'
add_here: 'Neue Vorlage in %folder%'
delete_folder: 'Den Ordner %folder% löschen'
rename: 'Den Ordner %folder% umbenennen'
unit:
d: 'Tage'
m: 'Monate'
w: 'Wochen'
shortcuts:
groups:
actions: "Auf Mail"
actions_hint: "Was ausgewählt ist; sonst die geöffnete Unterhaltung; sonst die hervorgehobene Zeile."
anywhere: "Überall"
conversation: "In einer Unterhaltung"
list: "In einer Liste"
keys:
archive: "Archivieren"
back: "Zurück zur Liste"
compose: "Neue Nachricht schreiben"
delete: "Löschen"
forward: "Weiterleiten"
go_archive: "Zum Archiv"
go_drafts: "Zu den Entwürfen"
go_inbox: "Zum Posteingang"
go_sent: "Zu Gesendet"
go_starred: "Zu Markiert"
help: "Diese Liste anzeigen"
label: "Label vergeben"
mark_read: "Als gelesen markieren"
mark_unread: "Als ungelesen markieren"
move: "Verschieben nach"
next: "Eine Unterhaltung nach unten"
next_conversation: "Nächste Unterhaltung öffnen"
open: "Hervorgehobene Unterhaltung öffnen"
previous: "Eine Unterhaltung nach oben"
previous_conversation: "Vorherige Unterhaltung öffnen"
reply: "Antworten"
reply_all: "Allen antworten"
search: "Suchen"
select: "Hervorgehobene Unterhaltung auswählen"
select_all: "Alle auf der Seite auswählen"
select_none: "Auswahl aufheben"
select_read: "Gelesene auswählen"
select_starred: "Markierte auswählen"
select_unread: "Ungelesene auswählen"
snooze: "Zurückstellen"
spam: "Als Spam markieren"
star: "Markieren oder Markierung entfernen"
undo: "Letzte Aktion rückgängig machen"
or: "oder"
switched_off: "Die Kürzel sind für dich ausgeschaltet. Schalte sie unter Einstellungen → Allgemein ein."
then: "dann"
title: "Tastenkürzel"
sidebar:
accounts:
add: Konto hinzufügen
heading: Konten
none: Noch keine Konten
colour: 'Farbmarkierung für %account%'
colour_disabled: 'Farbmarkierung für %account%, das deaktiviert ist'
open: '%account% öffnen'
toggle: 'Ordner in %account% ein-/ausklappen'
badge:
total: '%count% insgesamt'
unread: '%count% ungelesen'
unsent: Ein Entwurf konnte nicht gesendet werden
compose: Schreiben
labels:
add: Label erstellen
heading: Labels
none: Noch keine Labels
new_mail_here: 'Neue Nachrichten in %where%'
new_mail_here_count: '%count% neu in %where%'
nav:
all_mail: Alle E-Mails
archive: Archiv
calendar: Kalender
drafts: Entwürfe
inbox: Posteingang
more: Mehr
sent: Gesendet
snoozed: Zurückgestellt
spam: Spam
starred: Markiert
trash: Papierkorb
unread: Ungelesen
toggle: Seitenleiste ein-/ausblenden
snooze:
later_today: Später heute
next_week: Nächste Woche
pick_date: Datum und Uhrzeit wählen
this_weekend: Dieses Wochenende
tomorrow: Morgen
unsnooze: Zurückholen
snoozed:
empty: Nichts ist zurückgestellt.
starred:
empty: Keine markierten Nachrichten.
heading: Markiert
tabs:
forums: Foren
new_count: '%count% neu'
primary: Allgemein
promotions: Werbung
social: Soziale Netzwerke
updates: Benachrichtigungen
thread:
no_subject: (kein Betreff)
summary:
button: 'Gespräch zusammenfassen'
disclaimer: 'Von einem Modell aus den Nachrichten unten geschrieben. Lies sie, wenn es darauf ankommt.'
error:
connection_lost: 'Die Verbindung zu plMail ist abgerissen, während die Zusammenfassung geschrieben wurde. Am Modell-Host liegt es nicht — irgendetwas zwischen diesem Browser und dem Server hat die Verbindung geschlossen.'
disabled: 'Zusammenfassungen sind ausgeschaltet.'
generic: 'Die Zusammenfassung konnte nicht geschrieben werden.'
model_missing: 'Der Modell-Host hat das Schreib-Modell nicht. Jemand mit Admin-Rechten muss es erst ziehen.'
no_answer: 'Das Modell hat nichts geantwortet.'
refused: 'Der Modell-Host hat die Anfrage abgelehnt. Wenn das das ganze Gespräch war, ist es vielleicht mehr, als die Maschine auf einmal halten kann.'
timeout: 'Der Modell-Host hat zu lange gebraucht.'
unreachable: 'Der Modell-Host war nicht erreichbar.'
generated: 'Zusammengefasst %when%'
heading: 'Zusammenfassung'
regenerate: 'Neu zusammenfassen'
partial: 'Das Gespräch war zu lang, um es ganz zu schicken — die Zusammenfassung ist aus einem Teil davon geschrieben.'
send_full: 'Stattdessen das ganze Gespräch zusammenfassen — dauert länger und verlangt dem Modell-Host mehr ab.'
stale: 'Das Gespräch hat sich geändert, seit das hier geschrieben wurde.'
state:
sent: 'An das Modell geschickt …'
stopped: 'Angehalten. Nichts wurde gespeichert.'
waiting: 'Die erste Anfrage nach einer Weile dauert etwa eine Minute, solange das Modell lädt und das Gespräch liest.'
queued: 'In der Warteschlange. Das ganze Gespräch wird im Hintergrund zusammengefasst — du kannst das hier zumachen und später wiederkommen, dann ist es da.'
reading: 'Liest das Gespräch noch — %elapsed% bisher. Danach erscheint die Zusammenfassung Wort für Wort.'
waiting_full: 'Liest das ganze Gespräch. Bei einem langen Verlauf kann das mehrere Minuten dauern, und bis es fertig gelesen hat, passiert sichtbar nichts.'
working: 'Fasst zusammen …'
stop: 'Anhalten'
too_short: 'Eine Nachricht. Da gibt es nichts zusammenzufassen.'
thread_row:
account: 'Empfangen über %account%'
actions:
archive: Archivieren
cancel_schedule: Geplanten Versand abbrechen
delete: Löschen
mark_read: Als gelesen markieren
mark_unread: Als ungelesen markieren
snooze: Zurückstellen
answer: Neue Antwort auf deine Nachricht
answer_badge: Antwort
has_attachment: Enthält Anhang
me: ich
meaning: 'Über die Bedeutung gefunden, nicht über die eingegebenen Wörter'
meaning_badge: 'Bedeutung'
message_count: "({ count })"
new: Dir noch nie angezeigt
new_badge: Neu
no_recipient: (kein Empfänger)
no_subject: (kein Betreff)
send_failed:
failed: Nicht gesendet
may_have_sent: 'Vielleicht gesendet: schau unter Gesendet nach, bevor du sie noch einmal sendest'
rate_limited: 'Nicht gesendet: dein Mailanbieter hat das Senden begrenzt'
refused: 'Nicht gesendet: der Mailserver hat sie abgelehnt'
unavailable: 'Nicht gesendet: dein Mailanbieter war nicht erreichbar'
scheduled: 'Geplant %when%'
select: Auswählen
sheet:
label: Aktionen für diese Unterhaltung
select: Auswählen
star: Diese Nachricht markieren
to: 'An: %recipients%'
unread: Ungelesen
unstar: Markierung dieser Nachricht entfernen
toast:
archived: Unterhaltung archiviert.
categorised: 'Nach %category% verschoben'
dismiss: Schließen
labelled: 'Label %label% vergeben'
moved: 'Nach %folder% verschoben'
schedule_cancelled: Geplanter Versand abgebrochen.
send_too_late: Zu spät — diese Nachricht wurde bereits gesendet.
send_failed: 'Diese Nachricht konnte nicht gesendet werden: %subject%'
send_failed_may_have_sent: '%subject% wurde vielleicht gesendet, aber die Antwort ging verloren. Schau unter Gesendet nach, bevor du sie noch einmal sendest.'
send_failed_rate_limited: 'Diese Nachricht konnte nicht gesendet werden: %subject%. Dein Mailanbieter begrenzt gerade das Senden; versuch es in ein paar Minuten noch einmal.'
send_failed_refused: 'Diese Nachricht konnte nicht gesendet werden: %subject%. Der Mailserver hat sie abgelehnt.'
send_failed_unavailable: 'Diese Nachricht konnte nicht gesendet werden: %subject%. Dein Mailanbieter war nicht erreichbar.'
sent: Nachricht gesendet.
spam_filtered: 'In den Spam verschoben. Künftige Mail von %sender% landet auch dort.'
undo: Rückgängig
undo_expired: Das lässt sich nicht mehr rückgängig machen.
undone: Rückgängig gemacht.
unlabelled: 'Label %label% entfernt'
toolbar:
view_select:
offer: 'Es lassen sich alle %count% Unterhaltungen in dieser Ansicht auswählen.'
offer_action: 'Alle %count% auswählen'
selected: 'Alle %count% Unterhaltungen in dieser Ansicht sind ausgewählt.'
clear: 'Nur diese Seite auswählen'
actions:
archive: Archivieren
delete: Löschen
label: Label vergeben
mark_read: Als gelesen markieren
mark_unread: Als ungelesen markieren
more: Mehr
move_to: Verschieben nach
not_spam: 'Kein Spam'
purge: Endgültig löschen
snooze: Zurückstellen
spam: 'Als Spam markieren'
star: Markieren
# Asked before a selection in Spam is deleted for good. Two sentences rather
# than one with a number swapped in, because the singular reads differently.
purge_confirm:
one: 'Diese Unterhaltung endgültig löschen? Sie lässt sich nicht zurückholen und wird auch vom Mailserver entfernt.'
many: 'Diese %count% Unterhaltungen endgültig löschen? Sie lassen sich nicht zurückholen und werden auch vom Mailserver entfernt.'
filter:
show_all: Alle anzeigen
unread_only: Nur ungelesene
pagination:
next: Älter
of: von
prev: Neuer
select:
all: Alle
none: Keine
read: Gelesene
starred: Markierte
unread: Ungelesene
whole_view: 'Alle %count% in dieser Ansicht'
select_all: Alle Konversationen auswählen
select_menu: Weitere Auswahloptionen
spam:
empty: Keine Spam-Nachrichten.
heading: Spam
spam_menu:
confirm_body: 'Mail von jeder Adresse bei %domain% landet dann im Spam, auch von Leuten, die dir noch nie geschrieben haben.'
confirm_cancel: 'Abbrechen'
confirm_shared: 'Das ist ein Mail-Anbieter, den viele nutzen.'
confirm_yes: 'Ganze Domain filtern'
domain: 'Diese ganze Domain immer in den Spam'
filter_heading: 'Und künftige Mail filtern'
heading: 'Als Spam markieren'
more: 'Weitere Optionen'
move: 'In den Spam verschieben'
move_hint: 'Nur diese Unterhaltung.'
sender: 'Diesen Absender immer in den Spam'
trash:
empty: Keine gelöschten Nachrichten.
heading: Papierkorb
two_factor:
cancel: Als jemand anderes anmelden
flash:
code_rejected: Der Code stimmt nicht. Sieh in deiner App nach und versuch es nochmal.
codes_regenerated: Neue Wiederherstellungscodes erzeugt. Die alten funktionieren nicht mehr.
device_revoked: Dieses Gerät wird beim nächsten Mal wieder nach einem Code gefragt.
devices_revoked: Es ist kein Gerät mehr gemerkt.
disabled: Zwei-Faktor-Authentifizierung ist aus.
enabled: Zwei-Faktor-Authentifizierung ist an.
form:
code: Bestätigungscode
code_hint: >-
Der sechsstellige Code aus deiner Authenticator-App oder einer deiner
Wiederherstellungscodes.
submit: Weiter
submitting: Wird geprüft…
trust_device: Auf diesem Gerät nicht mehr fragen
trust_device_hint: Für 30 Tage. Du kannst das jederzeit unter Einstellungen → Sicherheit widerrufen.
page_title: Zwei-Faktor-Authentifizierung
recovery_hint: >-
Handy verloren? Nimm einen der Wiederherstellungscodes, die du beim
Einrichten gesichert hast.
tagline: Noch ein Schritt
unread:
empty: Keine ungelesenen Nachrichten.
heading: Alle ungelesenen Nachrichten
# The names of template variables, as they read on a chip in the editor and
# on a placeholder still open in a message. Top-level because both the
# settings page and the compose window use them.
templates:
variable:
date: 'Datum'
recipient_email: 'Adresse des Empfängers'
recipient_first_name: 'Vorname'
recipient_name: 'Voller Name'
sender_email: 'Deine Adresse'
sender_name: 'Dein Name'
signature: 'Signatur'
whats_new:
admin: 'Für Administratoren'
also: 'Außerdem in dieser Version'
changes: '{0}Keine Änderungen|{1}1 Änderung|]1,Inf[ %count% Änderungen'
changes_heading: 'Änderungen'
done: 'Fertig'
feedback:
back: 'Zurück zu den Änderungen'
error:
account: 'Wähle das Konto, von dem gesendet wird.'
empty: 'Schreib eine Nachricht oder sag, wie es mit plMail läuft.'
screenshot: 'Der Screenshot ließ sich nicht anhängen. Nimm den Haken heraus und sende noch einmal.'
send: 'Die Mail konnte nicht gesendet werden. Dein Text ist noch da; versuch es gleich noch einmal.'
transport: 'Nicht gesendet: Der Server hat mit %status% statt mit plMail geantwortet. Versuch es ohne den Screenshot oder frag, wer diese Installation betreibt.'
from: 'Senden von'
message:
label: 'Deine Nachricht'
placeholder: 'Was dir gefällt, was dir fehlt, was kaputt ist.'
nudge: 'Gefällt dir etwas, fehlt dir etwas oder ist etwas kaputt?'
rating:
better: 'Besser'
label: 'Seit dem Update ist plMail (optional)'
same: 'Wie vorher'
worse: 'Schlechter'
screenshot:
failed: 'Die Seite ließ sich nicht aufnehmen, also wird nichts angehängt.'
label: 'Screenshot der Seite anhängen, auf der du warst'
preview: 'Der Screenshot, der angehängt wird'
taking: 'Screenshot wird aufgenommen …'
send: 'Feedback senden'
sent:
body: 'Eine Kopie liegt in deinem Ordner „Gesendet“, und eine Antwort kommt an wie jede andere Mail.'
title: 'Feedback gesendet.'
title: 'Feedback senden'
where: 'Geht per Mail an %address%, mit deiner plMail-Version. Eine Kopie bleibt in deinem Ordner „Gesendet“.'
highlights: 'Highlights'
menu:
label: 'Hilfe und Feedback'
unseen: 'Es gibt Versionshinweise, die du noch nicht gesehen hast'
version: 'plMail %version%'
missing: 'Die Versionshinweise sind in dieser Installation nicht enthalten.'
nav:
current: 'Installiert'
history: 'Vollständiges Änderungsprotokoll'
label: 'Versionen'
new: 'Neu für dich'
quiet: 'Nach Updates nicht mehr anzeigen'
screenshot: 'Screenshot'
screenshot_close: 'Screenshot schließen'
screenshot_open: 'Screenshot in voller Größe öffnen'
title: 'Was ist neu'
contacts:
add_address: 'Adresse hinzufügen'
add_custom: 'Feld hinzufügen'
add_date: 'Datum hinzufügen'
add_email: 'E-Mail hinzufügen'
add_im: 'Chat-Adresse hinzufügen'
add_phone: 'Telefon hinzufügen'
add_relation: 'Person hinzufügen'
add_to_address_book: 'Zu Kontakten hinzufügen'
add_url: 'Website hinzufügen'
back: Zurück
book_all: 'Alle Bücher'
book_local: 'Nicht synchronisiert'
cancel: Abbrechen
check_carefully: 'Genau prüfen'
city: Ort
company: Firma
confidence: '%pct%% Übereinstimmung'
count: '{0}Keine Kontakte|{1}1 Kontakt|]1,Inf[ %count% Kontakte'
country: Land
created: 'Kontakt angelegt.'
custom_label_placeholder: 'Feldname'
custom_value_placeholder: 'Wert'
date_full: '%day%. %month% %year%'
date_no_year: '%day%. %month%'
day: 'Tag'
delete: Löschen
delete_confirm: '%name% löschen? Der Kontakt kommt in den Papierkorb und wird nach 90 Tagen endgültig entfernt.'
deleted_contact: '(gelöschter Kontakt)'
display_name: 'Vollständiger Name'
duplicates: Doppelte
duplicates_count: '{1}1 mögliches Paar|]1,Inf[ %count% mögliche Paare'
duplicates_none: 'Keine Doppelten gefunden. Neue Importe werden automatisch geprüft.'
edit: 'Kontakt bearbeiten'
email_placeholder: name@example.com
empty: 'Noch keine Kontakte. Leg den ersten an oder importiere eine vCard- oder CSV-Datei.'
empty_search: 'Kein Kontakt passt zu dieser Suche.'
export_vcf: 'Als vCard exportieren'
field:
birthday: 'Geburtstag'
company: 'Firma'
department: 'Abteilung'
familyName: 'Nachname'
givenName: 'Vorname'
jobTitle: 'Position'
middleName: 'Zweiter Vorname'
namePrefix: 'Anrede/Titel'
nameSuffix: 'Namenszusatz'
nickname: 'Spitzname'
officeLocation: 'Büro'
phoneticCompany: 'Firma (phonetisch)'
phoneticFamilyName: 'Nachname (phonetisch)'
phoneticGivenName: 'Vorname (phonetisch)'
phoneticMiddleName: 'Zweiter Vorname (phonetisch)'
im_placeholder: 'Name oder Adresse'
im_service:
aim: 'AIM'
googleTalk: 'Google Talk'
icq: 'ICQ'
matrix: 'Matrix'
msn: 'MSN'
other: 'Andere'
qq: 'QQ'
sip: 'SIP'
skype: 'Skype'
teams: 'Teams'
xmpp: 'XMPP (Jabber)'
yahoo: 'Yahoo'
im_service_label: 'Dienst'
import: Importieren
import_bad_format: 'Nur .vcf/.vcard- und .csv-Dateien lassen sich importieren.'
import_choose: 'Datei wählen'
import_confirm: '%count% Kontakte importieren'
import_dedupe_note: 'Nach dem Import landest du auf der Seite mit den Doppelten, um doppelt Importiertes zusammenzuführen.'
import_expired: 'Der vorbereitete Import ist abgelaufen. Bitte lade die Datei erneut hoch.'
import_formats: '.vcf, .vcard oder .csv'
import_hint: 'Ein .vcf/.vcard-Adressbuchexport oder eine .csv-Datei. Doppelte werden nach dem Import geprüft.'
import_no_file: 'Es wurde keine Datei hochgeladen.'
import_preview_count: '%count% Kontakte in der %format%-Datei gefunden. Die ersten davon:'
import_step1: 'Schritt 1 — Datei wählen'
import_step2: 'Schritt 2 — Vorschau'
import_upload: 'Hochladen & Vorschau'
import_uploading: 'Wird hochgeladen…'
imported: '%count% Kontakte importiert.'
in_address_book: 'In deinen Kontakten'
keep_this: 'Diesen behalten'
label: Bezeichnung
label_home: Privat
label_mobile: Mobil
label_other: Sonstige
label_work: Arbeit
labels:
anniversary: 'Jahrestag'
assistant: 'Assistenz'
blog: 'Blog'
brother: 'Bruder'
child: 'Kind'
father: 'Vater'
friend: 'Freund/in'
home: 'Privat'
manager: 'Vorgesetzte/r'
mobile: 'Mobil'
mother: 'Mutter'
other: 'Sonstige'
parent: 'Elternteil'
partner: 'Partner/in'
profile: 'Profil'
relative: 'Verwandte/r'
sibling: 'Geschwister'
sister: 'Schwester'
spouse: 'Ehepartner/in'
work: 'Arbeit'
merge: Zusammenführen
merge_pick_keep: 'Wähle zuerst, welcher Kontakt bleiben soll.'
merge_read_only: 'Ein Kontakt aus einem schreibgeschützten Adressbuch kann nicht zusammengeführt werden.'
merge_undo: Rückgängig
merge_undo_expired: 'Die 90-tägige Frist zum Rückgängigmachen ist abgelaufen.'
merge_undone: 'Zusammenführung rückgängig gemacht.'
merged: 'Kontakte zusammengeführt. Du kannst es in der Liste unten rückgängig machen.'
merged_into: '%count% in %name% zusammengeführt'
month: 'Monat'
months:
1: 'Januar'
2: 'Februar'
3: 'März'
4: 'April'
5: 'Mai'
6: 'Juni'
7: 'Juli'
8: 'August'
9: 'September'
10: 'Oktober'
11: 'November'
12: 'Dezember'
nav: Kontakte
new: 'Neuer Kontakt'
next: Weiter
no_details: 'Noch keine Kontaktdaten.'
no_subject: '(kein Betreff)'
notes: Notizen
page: 'Seite %page%'
pane:
close: 'Kontakte schließen'
mode:
contacts: 'Kontakte in voller Breite zeigen'
mail: 'Kontakte ausblenden'
split: 'Kontakte neben der Mail zeigen'
resize: 'Kontakte in der Breite ändern'
pending: 'Wartet darauf, an den Server zu gehen'
phone_placeholder: '+49 30 1234567'
phonetic: 'Phonetische Schreibweise'
photo_hint: 'JPG, PNG oder WebP, bis 5 MB.'
photo_invalid: 'Dieses Foto ließ sich nicht verwenden. JPG, PNG oder WebP bis 5 MB.'
photo_remove: 'Foto entfernen'
photo_removed: 'Foto entfernt.'
photo_upload: 'Foto hochladen'
photo_uploaded: 'Foto aktualisiert.'
postcode: PLZ
prev: Zurück
primary: Hauptadresse
primary_short: Haupt
recent_merges: 'Letzte Zusammenführungen'
reference_emails: Bezugs-E-Mails
reference_emails_empty: 'Noch keine E-Mails mit diesem Kontakt.'
reference_emails_hint: 'Jede nicht gelöschte E-Mail von oder an diesen Kontakt — Posteingang, Gesendet, Entwürfe, Papierkorb und Labels.'
region: Bundesland/Region
rel_assistant: Assistenz
rel_manager: Vorgesetzte(r)
rel_partner: Partner(in)
rel_related: Verwandt
related: 'Verknüpfte Kontakte'
relation_placeholder: 'Name'
remove: Entfernen
save: Speichern
save_to: 'Speichern in'
save_to_book_hint: 'Geht an %book% auf %server% und von dort auf jedes Gerät, das es synchronisiert.'
save_to_hint: 'Ein Kontakt in einem synchronisierten Adressbuch geht an dessen Server und von dort auf jedes Gerät, das es synchronisiert.'
save_to_local: 'plMail'
save_to_local_hint: 'Bleibt nur in plMail.'
search: 'Kontakte durchsuchen'
search_placeholder: 'Name, Firma oder E-Mail suchen…'
section_addresses: Adressen
section_custom: 'Eigene Felder'
section_dates: 'Daten'
section_details: Details
section_emails: E-Mail-Adressen
section_ims: 'Chat'
section_name: Name
section_notes: Notizen
section_phones: Telefonnummern
section_relations: 'Personen'
section_urls: 'Websites'
section_work: 'Arbeit'
street: Straße
synced_read_only: 'Schreibgeschützt, aus %book% auf %server%'
synced_with: 'Synchronisiert mit %book% auf %server%'
tag_all: Alle
tags: Schlagwörter
tags_placeholder: 'Durch Kommas getrennt, z. B. Familie, Lieferanten'
title: Kontakte
trashed: 'Kontakt in den Papierkorb verschoben.'
updated: 'Kontakt gespeichert.'
url_placeholder: 'https://'
validation:
name_required: 'Gib dem Kontakt einen Namen.'
year_optional: 'Jahr (optional)'
editor:
add: 'Hinzufügen'
add_email: 'E-Mail-Adresse hinzufügen'
add_phone: 'Telefonnummer hinzufügen'
address: 'Adresse'
adds: 'Neu'
ai_failed: 'Die KI hat nicht geantwortet. Versuch es gleich noch einmal.'
ai_nothing: 'Die KI hat keine Vorschläge.'
ai_running: 'Die KI wird gefragt. Dafür bekommt sie diesen Kontakt und die Signatur seiner letzten Mail.'
ai_sent: 'Diesen Kontakt und die Signatur seiner Mail vom %date% an den KI-Dienst geschickt, den deine Administration eingerichtet hat. Nichts ändert sich, bevor du es übernimmst.'
ai_sent_no_mail: 'Diesen Kontakt an den KI-Dienst geschickt, den deine Administration eingerichtet hat. Es gibt keine Mail von ihm mit Signatur. Nichts ändert sich, bevor du es übernimmst.'
ai_title: 'Vorschläge der KI'
applied: 'Ins Formular übernommen und markiert: %count%. Gespeichert wird erst, wenn du auf Speichern klickst.'
apply_many: '%count% Angaben übernehmen'
apply_none: 'Nichts zu übernehmen'
apply_one: '1 Angabe übernehmen'
auto_label: 'Typ aus deiner Eingabe erraten. Wähl einen aus, um ihn festzulegen.'
close_panel: 'Schließen'
dates: 'Daten'
dirty_many: '%count% ungespeicherte Änderungen'
dirty_one: '1 ungespeicherte Änderung'
discard: 'Verwerfen'
edit_parts: 'Teile bearbeiten'
email: 'E-Mail'
email_invalid: 'Das sieht noch nicht nach einer E-Mail-Adresse aus.'
fills: 'Füllt ein leeres Feld'
fix_emails: 'Korrigier die rot markierte E-Mail-Adresse, um zu speichern.'
hide_parts: 'Teile ausblenden'
improve: 'Mit KI verbessern'
more_work: 'Abteilung, Büro, phonetische Schreibweise'
name_placeholder: 'Vor- und Nachname'
new_hint: 'Ein neuer Kontakt. Speichere, wenn alles drin ist.'
note: 'Notiz'
nothing_found: 'In diesem Text sieht noch nichts nach Kontaktdaten aus.'
parts_stale: 'Name und Namensteile passen nicht mehr zusammen.'
paste: 'Details einfügen'
paste_placeholder: 'Füg eine Signatur, eine Adresse oder eine vCard ein. Nichts ändert sich, bevor du es übernimmst.'
paste_title: 'Signatur, vCard oder Adresse einfügen'
person: 'Person'
phone: 'Telefon'
preferred: 'Bevorzugt'
reading: 'Wird gelesen …'
relabels: 'Ändert den Typ von %from% zu %to%'
remove_what: '%what% entfernen'
replaces: 'Ersetzt „%value%“'
same: 'Schon vorhanden'
split_again: 'Namen neu aufteilen'
summary_conflict: '%count% weicht ab'
summary_new: '%count% neu'
summary_same: '%count% schon vorhanden'
website: 'Website'
from_mail:
add_to: 'Zu %name% hinzufügen'
existing: 'Zu einem bestehenden Kontakt hinzufügen'
more_details: 'Weitere Angaben'
name: 'Name'
new: 'Neuer Kontakt'
no_matches: 'Kein Kontakt passt.'
save: 'Speichern'
search: 'Kontakte durchsuchen'
title: 'Zu Kontakten hinzufügen'
quick:
ai_ask: 'Manches war nicht eindeutig. Solche Signaturen kann die KI meist sortieren.'
ai_ask_complete: 'Sieht vollständig aus. Du kannst die KI trotzdem drüberschauen lassen.'
ai_disclosure: 'Schickt nur diesen Text an den KI-Dienst, den deine Administration eingerichtet hat. Gespeichert wird erst, wenn du den Kontakt anlegst.'
ai_running: 'Die KI wird gefragt …'
ai_undo: 'KI-Änderungen rückgängig'
ai_undo_ask: 'Nicht, was du wolltest? Zurück zu dem, was die Regeln gefunden haben.'
all_fields: 'Alle Felder'
box_hint: 'Wird beim Tippen gelesen. Jede Zeile unten kannst du abwählen, neu tippen oder einem anderen Typ zuordnen.'
box_label: 'Tipp oder füg irgendetwas über die Person ein'
box_placeholder: 'Einen Namen, eine E-Mail-Signatur, eine Zeile wie Mia Hoffmann <mia@example.net> oder eine vCard'
change_type: 'Ändern, was das ist'
create: 'Kontakt anlegen'
detail_ai: 'Änderungen sind markiert. Nimm weg oder korrigier, was nicht passt, bevor du den Kontakt anlegst.'
detail_ai_same: 'Die KI hat nichts zu ändern gefunden.'
detail_rules: 'Jede Zeile wurde zugeordnet.'
detail_unsure: 'Noch nicht zugeordnet: %count%'
detail_vcard: 'Alle %count% Felder direkt gelesen. Nichts wurde geraten.'
done_parts: 'Fertig'
existing: '%name% hat schon %email%.'
fix_parts: 'Korrigieren'
ignore: 'Weglassen'
keep: 'Behalten'
no_name: 'Braucht einen Namen'
open_existing: 'Diesen Kontakt öffnen'
skipped: 'Als Grußformel weggelassen: %lines%'
source_ai: 'Von der KI verbessert'
source_rules: 'Nach Regeln gelesen'
source_vcard: 'vCard'
summary_many: '%name% mit %count% Angaben'
summary_name: '%name%, nur der Name'
summary_none: 'Tipp oder füg etwas über die Person ein, um anzufangen.'
summary_one: '%name% mit 1 Angabe'
unsure_many: 'Wohin gehören diese Zeilen?'
unsure_one: 'Wohin gehört diese Zeile?'
use_as: 'Verwenden als …'
you_placed: 'Von dir zugeordnet'