Take Dutch out of Beta with the native speaker's final review #14

Merged
jcoffey-dev merged 3 commits from i18n/dutch-native-review into main 2026-09-27 00:20:46 +00:00
8 changed files with 215 additions and 197 deletions

No files matched your search

+11 -7
View File
@@ -1035,16 +1035,20 @@ is why they are two settings and not one.
| | |
| --- | --- |
| English | the source language, and what every other catalog falls back to |
| Deutsch · Español · Français · Nederlands · Português (Brasil) | Beta |
| Nederlands | reviewed by a native speaker |
| Deutsch · Español · Français · Português (Brasil) | Beta |
| Русский · Українська · 简体中文 · 日本語 | Beta |
**All nine translations are marked Beta, and the label is not modesty.**
The catalogs were produced by AI against standard dictionaries and have not
been read by anybody who speaks the language. That is stated in Settings, next
to a link for reporting anything that reads wrongly, because the alternative —
**Eight of the nine translations are marked Beta, and the label is not
modesty.** The catalogs were produced by AI against standard dictionaries, and
apart from Dutch none has been read by anybody who speaks the language. That is
stated in Settings, next to a link for reporting anything that reads wrongly, because the alternative —
shipping them quietly — would ask people to trust text nobody has checked. A
language loses the Beta mark when a speaker has read it and said so, which is a
deliberate act by a person and not something a percentage earns.
deliberate act by a person and not something a percentage earns. Dutch was the
first: Michael ([mbjboon82](https://git.coffeylabs.org/mbjboon82), also
mbjboon-netizen), a native speaker, read every string, including the permission
labels, and his corrections shipped in September 2026.
Two things follow from the design rather than the translation:
@@ -1873,7 +1877,7 @@ worked on (the default, `oss`, shows only its notice). Two mailing lists round i
The full list with reasons is [ROADMAP.md](ROADMAP.md). In short: no snooze
(nothing in JMAP or Stalwart supports it, and ihasmail holds no password to act
on a mailbox while you are away), no language yet checked by a native speaker,
on a mailbox while you are away), only one language (Dutch) checked by a native speaker,
no two-factor sign-in without an app password, no sharing of mail folders (the
server stores the share and never delivers it), no public links (JMAP shares
with accounts on the same server, and ihasmail has no storage of its own to
+2 -2
View File
@@ -108,13 +108,13 @@ works the same way — and dropped where 0.15 was the whole subject. Support for
Still from source only: that only a caller outside every tenant may set `memberTenantId` (`set.rs` passes `can_set_tenant` only when the token has no tenant), and that a tenant administrator's queries are scoped to the tenant. On a server that does not report Enterprise the Tenants page is only its notice.
- **The permission labels in eight languages are machine translations awaiting native review.** 661 labels and 59 headings per language, written against each catalog's existing terms. The translators flagged the terms they were least sure of, which are the place to start: *principal* (JMAP/DAV), *throttles*, *listeners*, *lookups*, *milters*, *masked emails*, *samples* (spam training), *schedules* (MTA delivery), *email submission*, and the MTA stage settings. Several of Stalwart's own English labels are identical for different permissions (ARF, DMARC and TLS reports are all "Get reports"), and the translations inherit that; the heading above tells them apart.
- **The permission labels in eight languages are machine translations awaiting native review.** Dutch has been reviewed by a native speaker; the others have 661 labels and 59 headings per language, written against each catalog's existing terms. The translators flagged the terms they were least sure of, which are the place to start: *principal* (JMAP/DAV), *throttles*, *listeners*, *lookups*, *milters*, *masked emails*, *samples* (spam training), *schedules* (MTA delivery), *email submission*, and the MTA stage settings. Several of Stalwart's own English labels are identical for different permissions (ARF, DMARC and TLS reports are all "Get reports"), and the translations inherit that; the heading above tells them apart.
- **A refused password shows the server's reason in English.** Every other refusal from the registry is said in the reader's language: each error type has its own message, and a value one of Stalwart's validators refused — a domain name, an address, an empty field — is recognized by the validator's wording and explained again rather than shown. A password policy is the exception, on purpose. Its rule is the server's to set, so there is nothing to translate it from in advance, and its reason follows a translated sentence rather than being dropped, which would leave "not accepted" with no way to find out why.
- **Administration is off for a device not marked as your own, and for an installation that says so.** Both are enforced by the server rather than hidden by the menu: such a session is sent no permissions, and the JMAP proxy refuses registry methods beyond the account's own. That is worth stating because the proxy otherwise forwards whatever the browser sends, and before these gates an administrator's console could make any registry call their role allowed. For a session that may not administer, the proxy reads a request body only when it could name a registry method — a `"x:` in the text, or a `\u` escape that could spell one — so ordinary mail traffic is forwarded untouched.
- **All nine translations have never been read by anybody who speaks them.** They were produced by AI against standard dictionaries on 2026-08-31 — German, Spanish, French, Dutch, Portuguese (Brazil), Russian, Ukrainian, Simplified Chinese and Japanese, which with English makes ten languages in the picker — and every one of the nine is marked **Beta** in the picker, with that stated in Settings beside a link for reporting anything that reads wrongly. This is the entry that matters most on this page, because it is the one thing here that cannot be closed by testing: a translation can be complete, consistent, pass every check, and still read like a machine wrote it, and nobody on this project can tell which. What *is* verified is the machinery around them. A missing key renders its English source, so a bad line can simply be deleted; a stale key — one whose English no longer exists — is caught by `npm run i18n:check` rather than sitting in the file looking correct and never being looked up. Plurals are asked of `Intl.PluralRules` rather than assumed, which is why Russian and Ukrainian carry three forms and Japanese and Chinese carry one; supplying `one` for Japanese would have been filling in a distinction the language does not draw. Confirmed live on the deployed instance (2026-08-31) against a 6,289-message mailbox: role folders localize and the ~20 custom folders keep the names their owner gave them, dates and the calendar follow the language, and 6,289 renders as *6289 листувань* — the genitive plural a number ending in nine takes, which is the first time the plural machinery ran on anything but a hand-picked value.
- **Eight of the nine translations have never been read by anybody who speaks them.** They were produced by AI against standard dictionaries on 2026-08-31 — German, Spanish, French, Dutch, Portuguese (Brazil), Russian, Ukrainian, Simplified Chinese and Japanese, which with English makes ten languages in the picker. Dutch has since been read and corrected by a native speaker and left Beta in September 2026; the other eight are marked **Beta** in the picker, with that stated in Settings beside a link for reporting anything that reads wrongly. This is the entry that matters most on this page, because it is the one thing here that cannot be closed by testing: a translation can be complete, consistent, pass every check, and still read like a machine wrote it, and nobody on this project can tell which. What *is* verified is the machinery around them. A missing key renders its English source, so a bad line can simply be deleted; a stale key — one whose English no longer exists — is caught by `npm run i18n:check` rather than sitting in the file looking correct and never being looked up. Plurals are asked of `Intl.PluralRules` rather than assumed, which is why Russian and Ukrainian carry three forms and Japanese and Chinese carry one; supplying `one` for Japanese would have been filling in a distinction the language does not draw. Confirmed live on the deployed instance (2026-08-31) against a 6,289-message mailbox: role folders localize and the ~20 custom folders keep the names their owner gave them, dates and the calendar follow the language, and 6,289 renders as *6289 листувань* — the genitive plural a number ending in nine takes, which is the first time the plural machinery ran on anything but a hand-picked value.
- **`npm run i18n:coverage` reported 100% while about two hundred strings rendered English in every language.** It reads JSX text, and it was not wrong about what it measured — none of them were JSX text. They were `toast.error(...)` arguments, `confirmDialog({ title, confirmLabel })` props, `title=` and `aria-label=` attributes, and template literals: every one built from an expression a codemod cannot read. The calendar's own view switcher was the clearest case, spelling its labels `v[0].toUpperCase() + v.slice(1)` — correct English, untranslatable anywhere else, and galling because **Day**, **Week**, **Month** and **Agenda** were already in all nine catalogs and the buttons simply never asked for them. Reported from production, where the switcher stayed English in a Japanese interface. All of them are now wrapped, and `npm run i18n:check` grew a second half (`scripts/i18n-literals.mjs`) that accepts a string wrapped where it is written *or* present as a catalog key — the constant-table convention, where `SECTIONS` holds `label: "About"` and the render site calls `t(s.label)` — and refuses one that is neither, because that is a string no catalog can translate however many languages ship. It found twenty more than a hand sweep had. Worth recording as a general lesson rather than an i18n one: a coverage number measures the thing it can see, and the strings it cannot see are exactly the ones nobody is checking. **The check had the same blind spot one level down (2026-09-14).** It looked at `title=`, `aria-label=`, `placeholder=` and `alt=` on elements, but not at props passed to components, so `<MenuItem label={x ? "Collapse all" : "Expand all"}>` passed. It also accepted a JSX literal that was a catalog key, although no component here runs its props through `t()`, so 19 strings with translations in every catalog (Report spam, Mark as read, Add star, Save…) still rendered in English. And the script only exited non-zero with `--check`, which `npm run i18n:check` never passed, so it could print a finding without failing. Component props are checked now, a key no longer excuses a literal in an attribute, and both halves run with `--check`. That turned up 28 strings, all fixed: 19 wrapped, and 9 that needed new keys in all nine catalogs. English built with a template literal inside an attribute, such as ``aria-label={`Remove ${email}`}``, was the last gap. It can't be a catalog key as written. Since 2026-09-14 the check flags any template literal in one of these positions that has words between its values, and the twelve that existed are now keys with placeholders. They were the quota bar, the address menu, a folder's unread count, the recipient chips, the contact editor's title, shared calendars and address books, the date and time fields, the attachment fallback name, and the free/busy bar. That bar showed the raw JMAP value (`confirmed`) in every language.
+1 -1
View File
@@ -53,7 +53,7 @@ layout, on [ihasmail.org](https://ihasmail.org/#screenshots).
- **Settings that follow the account**, kept in the account's own storage on Stalwart
- **On a phone** — swipe to archive or delete, pull to refresh, hold to select
- **Administration** — a dashboard, accounts, groups, mailing lists, roles, tenants and domains, each shown only when the Stalwart role allows it
- **Ten interface languages and twelve themes** — the nine translations are marked Beta until a native speaker has read them
- **Ten interface languages and twelve themes** — Dutch has been read by a native speaker; the other eight translations are marked Beta until one has
- **Platform** — installable PWA, Web Push, `mailto:` handler, no credentials in the browser, strict CSP
The long version is [FEATURES.md](FEATURES.md) and
+1 -1
View File
@@ -13,7 +13,7 @@ See [KNOWN-ISSUES.md](KNOWN-ISSUES.md) for what is built but worth knowing about
- **A scheduling view of its own**, for asking "when is everyone free next week?" without an event in hand. The grid itself is built and lives in the event editor — a row per participant, steppable, and clickable to place the event — which is where the question gets asked while you are arranging something. What is not built is the same thing as a destination you can visit with nothing in progress. Came out of [#172](https://git.coffeylabs.org/coffey-labs/ihasmail-github-archive/issues/172), which asked for a separate view and is closed by the panel: the reasoning for putting it in the editor is that a separate surface can only ever tell you a time you then retype, whereas one beside the event can set it. It stays here rather than in the tracker because nobody has yet said they want to ask the question on its own.
- **Per-message actions from the message list on a touchscreen.** Reply, Forward and compose-as-new are on the list row's context menu, which is a right-click — and holding a row on a phone starts selection instead, so none of them are reachable there. They are all available inside a thread, which is where the actions on a single message belong; what is missing is the shortcut from the list. Fixing it means deciding what a long press should do when it already means something, which is a bigger question than the actions themselves.
- Snooze (nothing in JMAP or Stalwart supports it, and ihasmail never stores a password, so nothing could act on a mailbox while you are away)
- **A translation anybody has checked.** The translations themselves shipped on 2026-08-31 and are no longer on this page: nine of them, alongside English, and the extraction that had always been the hard half is done — see [FEATURES.md](FEATURES.md#interface-language). What is *not* done is the other half, and it is the half that cannot be bought or automated. All nine were produced by AI against standard dictionaries and **not one has been read by anybody who speaks the language**, which is exactly where a bad translation does harm rather than merely looking untidy. They ship marked Beta, with that said in Settings and a link for reporting anything wrong, because shipping them quietly would ask people to trust text nobody has checked. A language loses the Beta mark when a speaker reads it and says so — a deliberate act by a person, not something a coverage percentage earns. If you speak one of them and are willing to read a few hundred strings, that is the single most useful thing anyone could contribute right now.
- **A translation anybody has checked.** The translations themselves shipped on 2026-08-31 and are no longer on this page: nine of them, alongside English, and the extraction that had always been the hard half is done — see [FEATURES.md](FEATURES.md#interface-language). What is *not* done is the other half, and it is the half that cannot be bought or automated. All nine were produced by AI against standard dictionaries, and **only Dutch has been read by anybody who speaks the language** — Michael ([mbjboon82](https://git.coffeylabs.org/mbjboon82), also mbjboon-netizen) reviewed every string and it left Beta in September 2026. The other eight have not, which is exactly where a bad translation does harm rather than merely looking untidy. They ship marked Beta, with that said in Settings and a link for reporting anything wrong, because shipping them quietly would ask people to trust text nobody has checked. A language loses the Beta mark when a speaker reads it and says so — a deliberate act by a person, not something a coverage percentage earns. If you speak one of the other eight and are willing to read a few hundred strings, that is the single most useful thing anyone could contribute right now.
- **Right-to-left languages.** Arabic, Hebrew and Persian are held back deliberately, and not for want of translators. RTL is bidi and layout work throughout — mirrored panes, gesture directions, icon sides, the message list's own geometry — and a catalog without it produces a page that is translated and unusable. Adding one is not another entry in the picker.
- **Two-factor sign-in.** Today an account with 2FA must use an app password (see [Quick start](README.md#quick-start-docker)), and Settings › Security offers no way to switch 2FA *on* — only off, for an account that already has it. Supporting a TOTP code directly means implementing OAuth: Stalwart offers the authorization-code and device flows and no password grant, so ihasmail would hand sign-in to Stalwart's own login and come back with a token. That is a better security posture than the sealed password it holds now — a refresh token rather than a credential — but it replaces ihasmail's own sign-in page for those users and may need an OAuth client registered. Came out of [#75](https://git.coffeylabs.org/coffey-labs/ihasmail-github-archive/issues/75), which is closed: what was reported there was a sign-in refused with nothing but "Invalid credentials", and that was fixed by saying what is actually happening and pointing at app passwords. The OAuth work it uncovered is tracked here rather than as an open issue, so there is no ticket to watch for it.
- **Signing and encrypting mail.** *Reading* a signature is built: S/MIME signed mail is checked as it is read, and the signer is remembered so a change is called out — see [Checking a signature](FEATURES.md#checking-a-signature). What is not built is anything that produces a signature or touches ciphertext, and the reason is not Stalwart. This is client work over the message body: JMAP hands over the MIME blob and the rest is ours.
+4 -2
View File
@@ -32,10 +32,12 @@ describe("resolveUiLanguage", () => {
it("carries the Beta flag until a person has signed the language off", () => {
// Not a completeness measure. A catalog can be word-for-word finished
// and still read like a machine wrote it, which is what this marks.
// Every shipped language except English is unreviewed, and stays marked
// English is the source and Dutch was signed off by a native speaker in
// September 2026. Every other language is unreviewed, and stays marked
// until a person says otherwise.
const reviewed = new Set(["en", "nl"]);
for (const l of UI_LANGUAGES) {
if (l.tag === "en") expect(l.beta).toBeUndefined();
if (reviewed.has(l.tag)) expect(l.beta).toBeUndefined();
else expect(l.beta).toBe(true);
}
});
+1 -1
View File
@@ -40,7 +40,7 @@ export const UI_LANGUAGES: readonly UiLanguage[] = [
{ tag: "de", name: "Deutsch", beta: true },
{ tag: "es", name: "Español", beta: true },
{ tag: "fr", name: "Français", beta: true },
{ tag: "nl", name: "Nederlands", beta: true },
{ tag: "nl", name: "Nederlands" },
{ tag: "pt-BR", name: "Português (Brasil)", beta: true },
{ tag: "ja", name: "日本語", beta: true },
{ tag: "ru", name: "Русский", beta: true },
+61 -58
View File
@@ -1,13 +1,16 @@
import type { Catalog } from "@/lib/i18n";
/**
* Dutch — generated by AI, and not reviewed by a native speaker.
* Dutch — generated by AI, then read and corrected by a native speaker.
*
* Same standing as German and French: written against the terminology Dutch
* mail clients already use rather than invented, marked Beta in the picker,
* and carrying a report link that is the review process until somebody who
* speaks Dutch signs it off. A missing string renders its English source, so
* deleting a bad entry is a valid fix.
* Michael (mbjboon82, https://git.coffeylabs.org/mbjboon82; also
* mbjboon-netizen) reviewed the whole catalog, this one and permissions/nl.ts,
* and signed it off in September 2026, so Dutch is the first language out of
* Beta. The Dutch wording is his; where it differs from what an earlier draft
* or a style guide would choose, his call stands. The reviewer's notes below
* are kept where they were left. A missing string still renders its English
* source, and strings added after the review have not been read by a Dutch
* speaker yet.
*
* ── Decisions this file is consistent about ──────────────────────────────
* --- Native speaker note: i would keep the more formal "u" and "uw" ---
@@ -442,7 +445,7 @@ export const catalog: Catalog = {
"Move up": "Omhoog",
"Move down": "Omlaag",
"Drag to reorder": "Sleep om te herschikken",
"Right-click for options": "Rechtsklik voor opties",
"Right-click for options": "Rechtermuisknop voor opties",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "E-mail",
@@ -629,7 +632,7 @@ export const catalog: Catalog = {
"Working hours": "Werktijden",
"Working hours start": "Werktijd begint",
"Working hours end": "Werktijd eindigt",
"Color categories": "Kleurcategorieën",
"Color categories": "Kleur categorieën",
"Category": "Categorie",
"No category": "Geen categorie",
"New category": "Nieuwe categorie",
@@ -812,10 +815,10 @@ export const catalog: Catalog = {
"Huge": "Zeer groot",
"Sidebar": "Zijbalk",
"Show labels in the sidebar": "Labels in de zijbalk tonen",
"Collapse sidebar to icons": "Zijbalk inklappen tot pictogrammen",
"Collapse sidebar to icons": "Zijbalk inklappen en toon alleen pictogrammen",
"Apply the theme to messages too": "Thema ook op berichten toepassen",
"Apply it even to mail that styles itself": "Pas dit ook toe op e-mail met eigen vormgeving",
"Most marketing and receipt mail sets a color somewhere, so the setting above leaves nearly all of it on a white card. With this on, the theme is forced over the sender's own colors: backgrounds they laid the message on are dropped, while buttons and colored banners are kept so their text stays readable. Some mail will not survive it intact, which is why it is separate.": "Bijna alle reclame- en bonmail zet ergens een kleur, waardoor de instelling hierboven vrijwel alles op een witte kaart laat staan. Met deze optie wordt het thema over de kleuren van de afzender heen gelegd: achtergronden waarop het bericht is geplaatst vervallen, terwijl knoppen en gekleurde banners blijven staan zodat hun tekst leesbaar blijft. Sommige berichten overleven dat niet ongeschonden, en daarom is dit een aparte instelling.",
"Apply it even to mail that styles itself": "Pas dit ook toe op e-mails met eigen vormgeving",
"Most marketing and receipt mail sets a color somewhere, so the setting above leaves nearly all of it on a white card. With this on, the theme is forced over the sender's own colors: backgrounds they laid the message on are dropped, while buttons and colored banners are kept so their text stays readable. Some mail will not survive it intact, which is why it is separate.": "De meeste marketing- en ontvangst-/bevestigingsmails stellen ergens een kleur in, waardoor de instelling hierboven vrijwel alles op een witte kaart laat staan. Met deze optie wordt het thema over de kleuren van de afzender heen gelegd: achtergronden waarop het bericht is geplaatst vervallen, terwijl knoppen en gekleurde banners blijven staan zodat hun tekst leesbaar blijft. Sommige e-mails zullen hierdoor niet helemaal intact blijven. Daarom staat deze optie apart.",
"Swiping": "Vegen",
"Swipe left": "Naar links vegen",
"Swipe right": "Naar rechts vegen",
@@ -823,7 +826,7 @@ export const catalog: Catalog = {
"Export settings": "Instellingen exporteren",
"Import settings": "Instellingen importeren",
"Settings imported": "Instellingen geïmporteerd",
"Invalid settings file": "Ongeldig instellingenbestand",
"Invalid settings file": "Instellingenbestand is ongeldig",
"Reset to defaults": "Standaardwaarden herstellen",
"Default mail app": "Standaard e-mailprogramma",
"Documentation": "Documentatie",
@@ -835,7 +838,7 @@ export const catalog: Catalog = {
"Account": "Account",
"Max upload": "Maximale upload",
"{size} MB": "{size} MB",
"KB": "kB",
"KB": "KB",
"Image privacy proxy": "Privacyproxy voor afbeeldingen",
"enabled": "ingeschakeld",
"disabled": "uitgeschakeld",
@@ -844,7 +847,7 @@ export const catalog: Catalog = {
"hidden": "verborgen",
"connected": "verbonden",
"reconnecting…": "opnieuw verbinden…",
"AGPL-3.0 source": "AGPL-3.0-broncode",
"AGPL-3.0 source": "AGPL-3.0 broncode",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "Identiteiten en handtekeningen",
@@ -868,9 +871,9 @@ export const catalog: Catalog = {
"Insert template": "Sjabloon invoegen",
"Template text…": "Sjabloontekst…",
"Subject: {subject}": "Onderwerp: {subject}",
"Filters & rules": "Filters en regels",
"Filters & rules": "Filters en filterregels",
"Filters unavailable": "Filters niet beschikbaar",
"Rules": "Regels",
"Rules": "Filterregels",
"Rule name": "Naam van de regel",
"New rule": "Nieuwe regel",
"Delete rule": "Regel verwijderen",
@@ -893,7 +896,7 @@ export const catalog: Catalog = {
"does not exist": "bestaat niet",
"is larger than": "is groter dan",
"is smaller than": "is kleiner dan",
"Stop processing more rules": "Stoppen met verdere regels",
"Stop processing more rules": "Geen verdere filterregels verwerken",
"keep copy": "kopie bewaren",
"Forward to": "Doorsturen naar",
"Reject with message": "Weigeren met bericht",
@@ -904,8 +907,8 @@ export const catalog: Catalog = {
"Delete script": "Script verwijderen",
"Sieve source": "Sieve-broncode",
"Preview generated Sieve script": "Gegenereerd Sieve-script bekijken",
"Start with rules": "Beginnen met regels",
"Switch to rules?": "Overschakelen naar regels?",
"Start with rules": "Beginnen met filterregels",
"Switch to rules?": "Overschakelen naar filterregels?",
"Create filter": "Filter maken",
"Filter messages like this": "Berichten zoals dit filteren",
"Filter messages like this…": "Berichten zoals dit filteren…",
@@ -926,7 +929,7 @@ export const catalog: Catalog = {
"Code from your authenticator": "Code uit uw authenticator-app",
"Two-factor authentication": "Tweefactorauthenticatie",
"Turn off two-factor authentication": "Tweefactorauthenticatie uitschakelen",
"Your password alone will be enough to sign in again.": "Uw wachtwoord alleen volstaat dan weer om in te loggen.",
"Your password alone will be enough to sign in again.": "Met alleen uw wachtwoord kunt u opnieuw inloggen.",
"App passwords": "App-wachtwoorden",
"New app password for": "Nieuw app-wachtwoord voor",
"Your new app password": "Uw nieuwe app-wachtwoord",
@@ -950,19 +953,19 @@ export const catalog: Catalog = {
"Type": "Type",
"Email or username": "E-mail of gebruikersnaam",
"Use your usual address as the username.": "Gebruik uw gebruikelijke adres als gebruikersnaam.",
"Fast, friendly webmail. Your mailbox, your way.": "Snelle, prettige webmail. Uw postbus, op uw manier.",
"Fast, friendly webmail. Your mailbox, your way.": "Snelle, prettige webmail. Uw postvak, op uw manier.",
"Notifications": "Meldingen",
"Notifications are blocked in your browser settings.": "Meldingen zijn geblokkeerd in uw browserinstellingen.",
"Not supported in this browser.": "Niet ondersteund in deze browser.",
"Desktop notifications while {app} is open": "Systeemmeldingen terwijl {app} open is",
"Notify me even when {app} is closed": "Ook melden wanneer {app} gesloten is",
"Play a sound for new mail": "Geluid afspelen bij nieuwe post",
"Play a sound for new mail": "Geluid afspelen bij nieuwe e-mail",
"Test notification": "Testmelding",
"Background notifications are on": "Achtergrondmeldingen staan aan",
"The tab title and favicon always show your unread Inbox count.": "De tabbladtitel en het favicon tonen altijd het aantal ongelezen berichten in Postvak IN.",
"The tab title and favicon always show your unread Inbox count.": "De titel van het tabblad en het favicon tonen altijd het aantal ongelezen berichten in Postvak IN.",
"Live updates are delivered via JMAP push ({state}).": "Live-updates komen binnen via JMAP-push ({state}).",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "Toont een systeemmelding wanneer er nieuwe post in Postvak IN aankomt terwijl het tabblad op de achtergrond staat.",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "Toont een systeemmelding wanneer er een nieuwe e-mail in Postvak IN aankomt terwijl het tabblad op de achtergrond staat.",
// ── Editor, search, shortcuts, misc ────────────────────────────────
"Formatting": "Opmaak",
@@ -1026,20 +1029,20 @@ export const catalog: Catalog = {
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Afbeeldingen worden opgeslagen in uw bestanden (map “ihasmail”) en bij verzending ingesloten.",
"Thanks for your message. I'm away until … and will reply when I'm back.": "Bedankt voor uw bericht. Ik ben afwezig tot … en reageer zodra ik terug ben.",
"Automatically reply to people who email you while you're away. Each sender gets at most one reply.": "Automatisch antwoorden aan mensen die u mailen terwijl u weg bent. Elke afzender krijgt hoogstens één antwoord.",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "Inkomende post automatisch sorteren. De regels draaien op de server (Sieve) en gelden dus voor elke client die u gebruikt.",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "Inkomende e-mails automatisch sorteren. De filterregels staan op de server (Sieve) en gelden dus voor elke client die u gebruikt.",
"Canned responses you can insert into any message from the composer's template button.": "Kant-en-klare antwoorden die u via de sjabloonknop in elk bericht kunt invoegen.",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "Maak een regel om nieuwsbrieven naar een map te verplaatsen, belangrijke afzenders te markeren of post door te sturen.",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "Maak een filterregel om nieuwsbrieven naar een map te verplaatsen, belangrijke afzenders te markeren of een e-mail door te sturen.",
"Advanced: manage raw Sieve scripts. Only one script can be active at a time.": "Geavanceerd: Sieve-scripts rechtstreeks beheren. Er kan maar één script tegelijk actief zijn.",
"Only part of your filter script arrived.": "Slechts een deel van uw filterscript is aangekomen.",
"Your active script “{name}” was written by hand.": "Uw actieve script “{name}” is met de hand geschreven.",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "Een ander script (“{name}”) is actief. Als u hier regels opslaat, wordt in plaats daarvan het script “ihasmail” geactiveerd.",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "Een ander script (“{name}”) is actief. Als u hier filterregels opslaat, wordt in plaats daarvan het script “ihasmail” geactiveerd.",
"“{name}” will be deactivated (not deleted) and a new “ihasmail” script will take over.": "“{name}” wordt gedeactiveerd (niet verwijderd) en een nieuw script “ihasmail” neemt het over.",
"Sieve filtering is not available for this account.": "Sieve-filtering is niet beschikbaar voor dit account.",
"Sieve filtering is not enabled for this account.": "Sieve-filtering is niet ingeschakeld voor dit account.",
"Vacation responses are not available for this account.": "Afwezigheidsantwoorden zijn niet beschikbaar voor dit account.",
"This account does not have the JMAP calendars capability.": "Dit account beschikt niet over de JMAP-agendafunctie.",
"This account does not have the JMAP contacts capability.": "Dit account beschikt niet over de JMAP-contactenfunctie.",
"This account does not have the JMAP file storage capability.": "Dit account beschikt niet over de JMAP-bestandsopslagfunctie.",
"This account does not have the JMAP calendars capability.": "Dit account beschikt niet over de JMAP-agenda functie.",
"This account does not have the JMAP contacts capability.": "Dit account beschikt niet over de JMAP-contacten functie.",
"This account does not have the JMAP file storage capability.": "Dit account beschikt niet over de JMAP-bestandsopslag functie.",
// ── Labels held in constants, translated where they render ─────────
"Add": "Toevoegen",
@@ -1098,21 +1101,21 @@ export const catalog: Catalog = {
"share sheet\u0004Share…": "Delen…",
"folder": "map",
"“{name}” moved into “{parent}”": "“{name}” is verplaatst naar “{parent}”",
"“{name}” moved to the top level": "“{name}” is naar het hoogste niveau verplaatst",
"“{name}” moved to the top level": "“{name}” is naar het hoofdniveau verplaatst",
"Move “{name}” to…": "“{name}” verplaatsen naar…",
"Top level": "Hoogste niveau",
"Top level": "Hoofdniveau",
"Could not move “{name}”: {reason}": "Kon “{name}” niet verplaatsen: {reason}",
"Delete “{name}”?": "“{name}” verwijderen?",
"Rename folder": "Map hernoemen",
"Search: {query}": "Zoeken: {query}",
"No conversation selected": "Geen gesprek geselecteerd",
"No message selected": "Geen bericht geselecteerd",
"Drop here for the top level": "Hier neerzetten voor het hoogste niveau",
"Drop here for the top level": "Hier neerzetten voor het hoofdniveau",
// ── Longer prose ───────────────────────────────────────────────────
"Search mail (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)": "In e-mail zoeken (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)",
"Settings → Filters & rules": "Instellingen → Filters en regels",
"Open the Mail view to see all shortcuts.": "Open de E-mailweergave om alle sneltoetsen te zien.",
"Settings → Filters & rules": "Instellingen → Filters en filterregels",
"Open the Mail view to see all shortcuts.": "Open de e-mailweergave om alle sneltoetsen te zien.",
"Gmail-style shortcuts are always on. Press {key} anywhere to see this list.": "Sneltoetsen in Gmail-stijl staan altijd aan. Druk overal op {key} om deze lijst te zien.",
"Select a conversation to read it here · Press {key} for shortcuts": "Selecteer een gesprek om het hier te lezen · {key} voor sneltoetsen",
"Select a message to read it here · Press {key} for shortcuts": "Selecteer een bericht om het hier te lezen · {key} voor sneltoetsen",
@@ -1120,41 +1123,41 @@ export const catalog: Catalog = {
"A fast, friendly, open-source webmail for {server}, built on JMAP.": "Een snelle, prettige, opensource webmail voor {server}, gebouwd op JMAP.",
"Defaults for the calendar views and new events.": "Standaardwaarden voor de agendaweergaven en nieuwe afspraken.",
"Replies will go to this address instead of the From address": "Antwoorden gaan naar dit adres in plaats van naar het afzenderadres",
"Replies to mail sent from this identity go here instead of the From address.": "Antwoorden op post die vanaf deze identiteit is verzonden, komen hier aan in plaats van bij het afzenderadres.",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "Een nieuwe identiteit moet een adres gebruiken waarvandaan dit account mag verzenden (aliassen die op de server zijn ingesteld).",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "Wordt niet aangeboden bij het opstellen. Het adres ontvangt nog steeds post, en u kunt er weer vanaf verzenden door het opnieuw te tonen.",
"Replies to mail sent from this identity go here instead of the From address.": "Antwoorden op e-mails die vanaf deze identiteit is verzonden, komen hier aan in plaats van bij het afzenderadres.",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "Nieuwe identiteiten moeten een adres gebruiken waar dit account vanaf mag verzenden (aliassen die op de server zijn ingesteld).",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "Wordt niet aangeboden bij het opstellen. Het adres ontvangt nog steeds e-mails, en u kunt er weer vanaf verzenden door het opnieuw te tonen.",
"Each identity is a sender address with its own name, Reply-To and signature. The default identity is preselected when you compose; set a Reply-To when replies should go somewhere other than the From address.": "Elke identiteit is een afzenderadres met een eigen naam, antwoordadres en handtekening. De standaardidentiteit is voorgeselecteerd bij het opstellen; stel een antwoordadres in wanneer antwoorden ergens anders heen moeten dan naar het afzenderadres.",
"This signature is larger than the server's {limit}-byte limit. {app} will keep the full version in your Files and store a short text fallback on the server \u2014 other mail clients will see the plain-text version.": "Deze handtekening is groter dan de limiet van {limit} bytes van de server. {app} bewaart de volledige versie in uw Bestanden en zet een korte tekstversie op de server \u2014 andere e-mailprogramma's zien de platte-tekstversie.",
"Outlook-style categories you can assign to events from the right-click menu or the event editor. The category name is stored on the event, so it syncs to other clients.": "Categorieën in Outlook-stijl die u via het rechtsklikmenu of de afsprakeneditor aan afspraken kunt toewijzen. De categorienaam wordt in de afspraak opgeslagen en synchroniseert dus met andere clients.",
"This signature is larger than the server's {limit}-byte limit. {app} will keep the full version in your Files and store a short text fallback on the server \u2014 other mail clients will see the plain-text version.": "Deze handtekening is groter dan de limiet van {limit} bytes van de server. {app} bewaart de volledige versie in uw bestanden en zet een korte tekstversie op de server \u2014 andere e-mailprogramma's zien de platte-tekstversie.",
"Outlook-style categories you can assign to events from the right-click menu or the event editor. The category name is stored on the event, so it syncs to other clients.": "Categorieën in Outlook-stijl die u via het rechtermuisknop-menu of de afsprakeneditor aan afspraken kunt toewijzen. De categorienaam wordt in de afspraak opgeslagen en synchroniseert met andere clients.",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colors of its own does as well, instead of sitting on a white card. Messages that style themselves are left exactly as the sender designed them.": "Platte-tekstberichten volgen het thema al. Met deze optie doen HTML-berichten zonder eigen kleuren dat ook, in plaats van op een witte achtergrond te staan. Berichten met een eigen vormgeving blijven precies zoals de afzender ze heeft ontworpen.",
"This is separate from {setting} in General, which decides how dates, times and numbers are written. You can read an English interface with German dates, or the other way round.": "Dit staat los van {setting} onder Algemeen, waar wordt bepaald hoe datums, tijden en getallen worden geschreven. U kunt een Engelse interface met Nederlandse datums lezen, of andersom.",
"On a touchscreen, drag a message sideways to act on it. Each direction can do one thing, or nothing. These follow your account, so a phone and a tablet agree; a mouse ignores them and keeps dragging messages into folders instead.": "Sleep op een aanraakscherm een bericht opzij om er iets mee te doen. Elke richting kan één ding doen, of niets. Deze instelling volgt uw account, zodat telefoon en tablet overeenkomen; met een muis wordt ze genegeerd en blijft slepen naar mappen werken.",
"This is separate from {setting} in General, which decides how dates, times and numbers are written. You can read an English interface with German dates, or the other way round.": "Dit staat los van {setting} onder Algemeen, waar wordt bepaald hoe datums, tijden en getallen worden geschreven. U kunt bijvoorbeeld een Engelse interface met Nederlandse datums kiezen, of andersom.",
"On a touchscreen, drag a message sideways to act on it. Each direction can do one thing, or nothing. These follow your account, so a phone and a tablet agree; a mouse ignores them and keeps dragging messages into folders instead.": "Veeg op een touchscreen een bericht opzij om er een actie op uit te voeren. Elke richting kan een eigen actie uitvoeren, of helemaal niets doen. Deze instellingen worden aan uw account gekoppeld, zodat uw telefoon en tablet dezelfde instellingen gebruiken. Met een muis worden deze instellingen genegeerd en kunt u berichten gewoon naar mappen slepen.",
"This screen has no touchscreen, so nothing here changes what it does. Your phone or tablet will pick these up.": "Dit scherm heeft geen aanraakscherm, dus hier verandert niets. Uw telefoon of tablet neemt deze instellingen over.",
"Holding a message selects it, and holding a folder opens its menu. Pull the top of the message list down to check for new mail.": "Een bericht ingedrukt houden selecteert het, een map ingedrukt houden opent het menu. Trek de bovenkant van de berichtenlijst omlaag om nieuwe post op te halen.",
"A receipt tells whoever asked that this address is live and when the message was read, and the sender chooses where it goes — so there is no automatic option. Bulk mail, mailing lists and anything marked auto-submitted are never offered one at all.": "Een bevestiging vertelt de aanvrager dat dit adres actief is en wanneer het bericht is gelezen, en de afzender bepaalt waar die heen gaat — daarom is er geen automatische optie. Bij bulkpost, mailinglijsten en alles wat als automatisch verzonden is gemarkeerd, wordt er nooit een aangeboden.",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API \u2014 you can still make {app} the default from your operating system if you install it as an app.": "Deze browser kan geen programma's registreren voor {scheme}-links. Safari heeft daar in het bijzonder geen voorziening voor \u2014 u kunt {app} nog steeds als standaard instellen via uw besturingssysteem als u het als app installeert.",
"Holding a message selects it, and holding a folder opens its menu. Pull the top of the message list down to check for new mail.": "Houd een bericht ingedrukt om het te selecteren en houd een map ingedrukt om het menu ervan te openen. Trek de bovenkant van de berichtenlijst omlaag om nieuwe e-mails op te halen.",
"A receipt tells whoever asked that this address is live and when the message was read, and the sender chooses where it goes — so there is no automatic option. Bulk mail, mailing lists and anything marked auto-submitted are never offered one at all.": "Een bevestiging vertelt de aanvrager dat dit adres actief is en wanneer het bericht is gelezen, en de afzender bepaalt waar die heen gaat — daarom is er geen automatische optie. Bulkmail, mailinglijsten en alles wat als automatisch verzonden is gemarkeerd, krijgen nooit deze optie aangeboden.",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API \u2014 you can still make {app} the default from your operating system if you install it as an app.": "Deze browser kan geen programma's registreren voor {scheme}-links. Safari in het bijzonder heeft daar geen voorziening voor \u2014 u kunt {app} nog steeds als standaard instellen via uw besturingssysteem als u het als een app installeert.",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "Registreren voor {scheme}-links vereist een beveiligde (HTTPS-)verbinding.",
"Open {scheme} links \u2014 in web pages, documents and other apps \u2014 in {app} instead of a desktop mail client. Your browser will ask you to confirm, and you can change it later in its own settings (Chrome: Settings \u203a Privacy and security \u203a Site settings \u203a Protocol handlers; Firefox: Settings \u203a General \u203a Applications).": "{scheme}-links \u2014 op webpagina's, in documenten en in andere programma's \u2014 openen in {app} in plaats van in een lokaal e-mailprogramma. Uw browser vraagt om bevestiging, en u kunt dit later wijzigen in zijn eigen instellingen (Chrome: Instellingen \u203a Privacy en beveiliging \u203a Site-instellingen \u203a Protocol-handlers; Firefox: Instellingen \u203a Algemeen \u203a Programma's).",
"Requested in this browser. Whether it took effect is up to the browser — check its settings if mail links still open elsewhere.": "Aangevraagd in deze browser. Of het effect heeft gehad, bepaalt de browser — controleer zijn instellingen als e-mail links nog elders openen.",
"For a system-wide default, install {app} as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer {app} directly wherever it asks which mail app to use.": "Installeer {app} eerst als app voor een systeembrede standaard (in Chrome: het installatiepictogram in de adresbalk). Uw besturingssysteem kan {app} dan overal direct aanbieden waar het vraagt welk e-mailprogramma gebruikt moet worden.",
"Needs a browser with the Push API and a mail server that publishes a push key.": "Vereist een browser met de Push-API en een mailserver die een push-sleutel publiceert.",
"Your mail server delivers these straight to your browser, so they arrive with no {app} tab open, naming the sender and subject. Your browser still has to be running \u2014 if you quit it completely, notifications wait and arrive when you open it again.": "Uw mailserver levert deze rechtstreeks bij uw browser af, dus ze komen aan zonder geopend {app}-tabblad, met afzender en onderwerp erbij. Uw browser moet wel draaien \u2014 sluit u hem helemaal af, dan wachten de meldingen en komen ze binnen zodra u hem weer opent.",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "Uw mailserver kan deze browser wekken, maar vermeldt geen afzender of onderwerp. Uw browser moet wel draaien.",
"This is what a new-mail notification looks like.": "Zo ziet een melding van nieuwe post eruit.",
"Your mail server delivers these straight to your browser, so they arrive with no {app} tab open, naming the sender and subject. Your browser still has to be running \u2014 if you quit it completely, notifications wait and arrive when you open it again.": "Uw mailserver levert deze rechtstreeks bij uw browser af, dus ze komen aan zonder geopend {app}-tabblad, met afzender en onderwerp erbij. Uw browser moet wel open staan \u2014 sluit u hem helemaal af, dan wachten de meldingen en komen ze binnen zodra u hem weer opent.",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "Uw mailserver kan deze browser activeren, maar vermeldt daarbij geen afzender of onderwerp. Uw browser moet wel open staan.",
"This is what a new-mail notification looks like.": "Zo ziet een melding van nieuwe e-mails eruit.",
"You're signed in as {user}. Your password is never stored in the browser; the server keeps it encrypted per-session for talking to Stalwart.": "U bent ingelogd als {user}. Uw wachtwoord wordt nooit in de browser opgeslagen; de server bewaart het versleuteld per sessie om met Stalwart te communiceren.",
"App passwords are managed by your mail administrator.": "App-wachtwoorden worden beheerd door uw mailbeheerder.",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "Als u uw wachtwoord wijzigt, worden uw andere webmailsessies uitgelogd. App-wachtwoorden blijven werken.",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "Als u uw wachtwoord wijzigt, worden uw andere webmailsessies afgemeld. App-wachtwoorden blijven werken.",
"This account has two-factor authentication on. {app} can't sign you in with a code yet, so signing in on another device needs an app password \u2014 or you can turn two-factor authentication off here.": "Voor dit account staat tweefactorauthenticatie aan. {app} kan u nog niet met een code inloggen, dus inloggen op een ander apparaat vereist een app-wachtwoord \u2014 of u schakelt tweefactorauthenticatie hier uit.",
"A separate password for a mail app or device, which you can revoke on its own. App passwords skip two-factor codes, so they keep working in apps that can't ask for one.": "Een apart wachtwoord voor een e-mailprogramma of apparaat, dat u afzonderlijk kunt intrekken. App-wachtwoorden slaan tweefactorcodes over en blijven dus werken in programma's die er geen kunnen vragen.",
"A separate password for a mail app or device, which you can revoke on its own. App passwords skip two-factor codes, so they keep working in apps that can't ask for one.": "Een apart wachtwoord voor een e-mail app of apparaat, dat u afzonderlijk kunt intrekken. App-wachtwoorden omzeilen tweestapsverificatie, zodat ze blijven werken in apps die hier niet om kunnen vragen.",
"Copy it into {name} now — it isn't shown again.": "Neem het nu over in {name} — het wordt niet opnieuw getoond.",
"No other users found in the directory, so nobody new can be added. Sharing already in place is listed below and can still be removed.": "Geen andere gebruikers gevonden in de directory, dus er kan niemand nieuws worden toegevoegd. Bestaande gedeelde items staan hieronder en kunnen nog worden verwijderd.",
"Stalwart does not publish its version number to mail clients, so {app} reports the edition where the server gives one. {app} requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart geeft zijn versienummer niet door aan e-mailprogramma's, dus {app} noemt de editie als de server die opgeeft. {app} vereist 0.16 of nieuwer; inloggen weigert alles wat ouder is.",
"It {damage}, so the rules in it can't be shown or edited — saving what did arrive would write it back over the rest. Reload the page to try again. Your rules are still on the server; nothing here has changed them.": "Het {damage}, dus de regels erin kunnen niet worden getoond of bewerkt — wat wél is aangekomen opslaan zou de rest overschrijven. Laad de pagina opnieuw om het nog eens te proberen. Uw regels staan nog op de server; hier is er niets aan veranderd.",
"The visual rule editor only manages scripts it created. You can edit the script in the {tab} tab, or start fresh with rules (the existing script will be kept but deactivated).": "De visuele regeleditor beheert alleen scripts die hij zelf heeft gemaakt. U kunt het script bewerken op het tabblad {tab}, of opnieuw beginnen met regels (het bestaande script blijft bewaard maar wordt gedeactiveerd).",
"Your filter script {damage}, so only part of it arrived. Adding a rule would write that part back over the whole thing. Reload the page and try again.": "Uw filterscript {damage}, dus slechts een deel is aangekomen. Een regel toevoegen zou dat deel over het geheel heen schrijven. Laad de pagina opnieuw en probeer het nog eens.",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "Uw filterscript kon zojuist niet worden gelezen; een regel toevoegen zou het kunnen overschrijven. Laad de pagina opnieuw en probeer het nog eens.",
"Your active Sieve script was written by hand, so rules can't be added automatically. Open {where} to edit the script or switch to managed rules.": "Uw actieve Sieve-script is met de hand geschreven, dus regels kunnen niet automatisch worden toegevoegd. Open {where} om het script te bewerken of over te stappen op beheerde regels.",
"Only languages {app} has been translated into appear here, so this list grows as translations land rather than ahead of them \u2014 a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Hier verschijnen alleen talen waarin {app} is vertaald; de lijst groeit dus mee met de vertalingen en niet erop vooruit \u2014 een taal die wordt aangeboden zonder teksten erachter zou de pagina laten beweren dat ze in een taal is die ze niet is.",
"No other users found in the directory, so nobody new can be added. Sharing already in place is listed below and can still be removed.": "Er zijn geen andere gebruikers in de directory gevonden, dus er kunnen geen nieuwe gebruikers worden toegevoegd. Hieronder ziet u de bestaande gedeelde items. U kunt deze nog steeds verwijderen.",
"Stalwart does not publish its version number to mail clients, so {app} reports the edition where the server gives one. {app} requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart geeft zijn versienummer niet door aan e-mailprogramma's, dus {app} noemt de editie als de server die opgeeft. {app} vereist 0.16 of nieuwer; inloggen weigert alle oudere versies.",
"It {damage}, so the rules in it can't be shown or edited — saving what did arrive would write it back over the rest. Reload the page to try again. Your rules are still on the server; nothing here has changed them.": "Het {damage}, waardoor de filterregels hierin niet kunnen worden weergegeven of bewerkt. Als u opslaat wat wel is binnengekomen, wordt de rest overschreven. Laad de pagina opnieuw om het nogmaals te proberen. Uw filterregels staan nog steeds op de server; hier is niets aan gewijzigd.",
"The visual rule editor only manages scripts it created. You can edit the script in the {tab} tab, or start fresh with rules (the existing script will be kept but deactivated).": "De visuele filterregel-editor beheert alleen scripts die hij zelf heeft gemaakt. U kunt het script bewerken op het tabblad {tab}, of opnieuw beginnen met filterregels (het bestaande script blijft bewaard maar wordt gedeactiveerd).",
"Your filter script {damage}, so only part of it arrived. Adding a rule would write that part back over the whole thing. Reload the page and try again.": "Uw filterregel-script {damage}, dus slechts een deel is aangekomen. Als u een filterregel toevoegt, wordt dat deel over het volledige script heen geschreven. Laad de pagina opnieuw en probeer het nogmaals.",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "Uw filterregel-script kon niet worden gelezen; een regel toevoegen zou het kunnen overschrijven. Laad de pagina opnieuw en probeer het nog eens.",
"Your active Sieve script was written by hand, so rules can't be added automatically. Open {where} to edit the script or switch to managed rules.": "Uw actieve Sieve-script is met de hand geschreven, dus filterregels kunnen niet automatisch worden toegevoegd. Open {where} om het script te bewerken of over te stappen op beheerde filterregels.",
"Only languages {app} has been translated into appear here, so this list grows as translations land rather than ahead of them \u2014 a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Hier verschijnen alleen de talen waarin {app} is vertaald; de lijst wordt uitgebreid zodra vertalingen beschikbaar komen, in plaats van vooraf \u2014 een aangeboden taal zonder bijbehorende vertalingen zou ervoor zorgen dat de pagina beweert in een taal te zijn die niet beschikbaar is.",
"tell us about it": "laat het ons weten",
"This translation was generated by AI and has not been checked by a native speaker, so it is marked Beta until somebody who speaks it signs it off. Anything that reads wrongly is worth reporting — {report}.": "Deze vertaling is door AI gemaakt en niet gecontroleerd door iemand met Nederlands als moedertaal; ze is daarom als Beta gemarkeerd tot iemand haar goedkeurt. Alles wat verkeerd klinkt, is een melding waard — {report}.",
"{app}'s own version is the date of the commit it was built from, followed by where that commit came from: {example} was built from a commit dated the 30th of August 2026 that arrived through pull request 129. A commit that did not come through one carries its short SHA instead \u2014 {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "De eigen versie van {app} is de datum van de commit waaruit het is gebouwd, gevolgd door waar die commit vandaan kwam: {example} is gebouwd uit een commit van 30 augustus 2026 die via pull request 129 binnenkwam. Een commit die niet via zo'n verzoek kwam, draagt in plaats daarvan zijn korte SHA \u2014 {sha}. De versie zegt bewust niets over Stalwart; wat deze build van de server nodig heeft, staat op de regel hierboven.",
+134 -125
View File
@@ -1,71 +1,80 @@
import type { PermissionCatalog } from "@/lib/permissionLabels";
/** Stalwart 0.16.22's permission labels in Dutch, keyed by permission name. Checked against source.json. */
/**
* Stalwart 0.16.22's permission labels in Dutch, keyed by permission name. Checked against source.json.
* Reviewed and corrected by Michael (mbjboon82, also mbjboon-netizen), a native speaker, in September 2026: https://git.coffeylabs.org/mbjboon82
*/
// Dutch speaker note: For example “Cluster Nodes Management” is a bit difficult to translate naturally into Dutch.
// “Nodes” is plural, so the Dutch term should also be plural: “Clusterknooppunten”.
// A literal translation such as “Clusterknooppuntbeheer” sounds awkward and also loses the natural plural form.
// For a menu item, “Clusterknooppunten” is much more natural, or “Clusterknooppunten beheren” if the action needs to be explicit.
export const permissionCatalog: PermissionCatalog = {
categories: {
"AI models Management": "AI-modelbeheer",
"API keys Management": "API-sleutelbeheer",
"Accounts Management": "Accountbeheer",
"AI models Management": "AI-modellen beheren",
"API keys Management": "API-sleutels beheren",
"Accounts Management": "Accounts beheren",
"Action": "Actie",
"Actions Management": "Actiebeheer",
"Addresses Management": "Adresbeheer",
"Alerts Management": "Waarschuwingsbeheer",
"App passwords Management": "App-wachtwoordbeheer",
"Applications Management": "Applicatiebeheer",
"Archived items Management": "Beheer van gearchiveerde items",
"Actions Management": "Acties beheren",
"Addresses Management": "Adressen beheren",
"Alerts Management": "Waarschuwingen beheren",
"App passwords Management": "App-wachtwoorden beheren",
"Applications Management": "Applicaties beheren",
"Archived items Management": "Gearchiveerde items beheren",
"Calendar": "Agenda",
"Certificates Management": "Certificaatbeheer",
"Cluster nodes Management": "Clusterknooppuntbeheer",
"DNS servers Management": "DNS-serverbeheer",
"Directories Management": "Adreslijstbeheer",
"Domains Management": "Domeinbeheer",
"Certificates Management": "Certificaten beheren",
"Cluster nodes Management": "Clusterknooppunten beheren",
"DNS servers Management": "DNS-servers beheren",
"Directories Management": "Adreslijsten beheren",
"Domains Management": "Domeinen beheren",
"Email": "E-mail",
"Events Management": "Gebeurtenisbeheer",
"Extensions Management": "Extensiebeheer",
"Hooks Management": "Hookbeheer",
"Events Management": "Gebeurtenissen beheren",
"Extensions Management": "Extensies beheren",
"Hooks Management": "Hooks beheren",
"IMAP": "IMAP",
"JMAP": "JMAP",
"Keys Management": "Sleutelbeheer",
"Listeners Management": "Listenerbeheer",
"Lists Management": "Lijstbeheer",
"Log entries Management": "Logboekbeheer",
"Lookups Management": "Lookupbeheer",
"Mailing lists Management": "Mailinglijstbeheer",
"Keys Management": "Sleutels beheren",
"Listeners Management": "Listeners beheren",
"Lists Management": "Lijsten beheren",
"Log entries Management": "Logboeken beheren",
"Lookups Management": "Lookups beheren",
"Mailing lists Management": "Mailinglijsten beheren",
"ManageSieve": "ManageSieve",
"Masked emails Management": "Beheer van gemaskeerde e-mailadressen",
"Messages Management": "Berichtbeheer",
"Metrics Management": "Statistiekbeheer",
"Milters Management": "Milterbeheer",
"OAuth clients Management": "OAuth-clientbeheer",
"Masked emails Management": "Gemaskeerde e-mailadressen beheren",
"Messages Management": "Berichten beheren",
"Metrics Management": "Statistieken beheren",
"Milters Management": "Milters beheren",
"OAuth clients Management": "OAuth-clients beheren",
"POP3": "POP3",
"Providers Management": "Providerbeheer",
"Public keys Management": "Beheer van openbare sleutels",
"Queues Management": "Wachtrijbeheer",
"Quotas Management": "Quotabeheer",
"Reports Management": "Rapportbeheer",
"Roles Management": "Rolbeheer",
"Routes Management": "Routebeheer",
"Rules Management": "Regelbeheer",
"Samples Management": "Voorbeeldbeheer",
"Schedules Management": "Schemabeheer",
"Scripts Management": "Scriptbeheer",
"Servers Management": "Serverbeheer",
"Providers Management": "Providers beheren",
"Public keys Management": "Openbare sleutels beheren",
"Queues Management": "Wachtrijen beheren",
"Quotas Management": "Quotas beheren",
"Reports Management": "Rapporten beheren",
"Roles Management": "Rollen beheren",
"Routes Management": "Routes beheren",
"Rules Management": "Filterregels beheren",
"Samples Management": "Voorbeelden beheren",
"Schedules Management": "Schema's beheren",
"Scripts Management": "Scripts beheren",
"Servers Management": "Servers beheren",
"Settings": "Instellingen",
"Signatures Management": "Handtekeningbeheer",
"Strategies Management": "Strategiebeheer",
"Tags Management": "Tagbeheer",
"Signatures Management": "Handtekeningen beheren",
"Strategies Management": "Strategieën beheren",
"Tags Management": "Tags beheren",
"Task": "Taak",
"Tasks Management": "Takenbeheer",
"Tenants Management": "Tenantbeheer",
"Throttles Management": "Beheer van snelheidsbeperkingen",
"Tracers Management": "Tracerbeheer",
"Traces Management": "Tracebeheer",
"Tasks Management": "Taken beheren",
"Tenants Management": "Tenants beheren",
"Throttles Management": "Snelheidsbeperkingen beheren",
"Tracers Management": "Tracers beheren",
"Traces Management": "Traces beheren",
"WebDAV": "WebDAV",
"Webhooks Management": "Webhookbeheer",
"Webhooks Management": "Webhooks beheren",
},
labels: {
authenticate: "Inloggen op de server",
authenticateWithAlias: "Inloggen met e-mailaliasadressen",
authenticateWithAlias: "Inloggen met e-mailalias-adressen",
interactAi: "AI-modellen gebruiken",
impersonate: "Namens een andere gebruiker handelen",
unlimitedRequests: "Snelheidslimieten voor verzoeken omzeilen",
@@ -283,23 +292,23 @@ export const permissionCatalog: PermissionCatalog = {
oAuthClientOverride: "Registratievereisten voor OAuth-clients omzeilen",
liveTracing: "Realtime traces van servergebeurtenissen bekijken",
liveMetrics: "Realtime prestatiestatistieken van de server bekijken",
liveDeliveryTest: "Test-e-mails verzenden om de bezorgconfiguratie te controleren",
liveDeliveryTest: "Test e-mails verzenden om de bezorgconfiguratie te controleren",
scimAccess: "Gebruikers en groepen inrichten via het SCIM-eindpunt",
sysAccountGet: "Accounts ophalen",
sysAccountCreate: "Accounts aanmaken",
sysAccountUpdate: "Accounts bijwerken",
sysAccountDestroy: "Accounts verwijderen",
sysAccountQuery: "Accounts opvragen",
sysAccountPasswordGet: "Wachtwoordinstellingen van accounts ophalen",
sysAccountPasswordUpdate: "Wachtwoordinstellingen van accounts bijwerken",
sysAccountSettingsGet: "Accountinstellingen ophalen",
sysAccountSettingsUpdate: "Accountinstellingen bijwerken",
sysAccountPasswordGet: "Wachtwoord instellingen van accounts ophalen",
sysAccountPasswordUpdate: "Wachtwoord instellingen van accounts bijwerken",
sysAccountSettingsGet: "Account instellingen ophalen",
sysAccountSettingsUpdate: "Account instellingen bijwerken",
sysAcmeProviderGet: "Providers ophalen",
sysAcmeProviderCreate: "Providers aanmaken",
sysAcmeProviderUpdate: "Providers bijwerken",
sysAcmeProviderDestroy: "Providers verwijderen",
sysAcmeProviderQuery: "Providers opvragen",
actionReloadSettings: "Opnieuw laden: serverinstellingen",
actionReloadSettings: "Opnieuw laden: server instellingen",
actionReloadTlsCertificates: "Opnieuw laden: TLS-certificaten",
actionReloadLookupStores: "Opnieuw laden: lookup-opslag",
actionReloadBlockedIps: "Opnieuw laden: lijst met geblokkeerde IP's",
@@ -315,8 +324,8 @@ export const permissionCatalog: PermissionCatalog = {
sysActionUpdate: "Acties bijwerken",
sysActionDestroy: "Acties verwijderen",
sysActionQuery: "Acties opvragen",
sysAddressBookGet: "Adresboekinstellingen ophalen",
sysAddressBookUpdate: "Adresboekinstellingen bijwerken",
sysAddressBookGet: "Adresboek instellingen ophalen",
sysAddressBookUpdate: "Adresboek instellingen bijwerken",
sysAiModelGet: "AI-modellen ophalen",
sysAiModelCreate: "AI-modellen aanmaken",
sysAiModelUpdate: "AI-modellen bijwerken",
@@ -357,23 +366,23 @@ export const permissionCatalog: PermissionCatalog = {
sysArfExternalReportUpdate: "Rapporten bijwerken",
sysArfExternalReportDestroy: "Rapporten verwijderen",
sysArfExternalReportQuery: "Rapporten opvragen",
sysAsnGet: "ASN-instellingen ophalen",
sysAsnUpdate: "ASN-instellingen bijwerken",
sysAuthenticationGet: "Authenticatie-instellingen ophalen",
sysAuthenticationUpdate: "Authenticatie-instellingen bijwerken",
sysBlobStoreGet: "Blob-opslaginstellingen ophalen",
sysBlobStoreUpdate: "Blob-opslaginstellingen bijwerken",
sysAsnGet: "ASN instellingen ophalen",
sysAsnUpdate: "ASN instellingen bijwerken",
sysAuthenticationGet: "Authenticatie instellingen ophalen",
sysAuthenticationUpdate: "Authenticatie instellingen bijwerken",
sysBlobStoreGet: "Blob-opslag instellingen ophalen",
sysBlobStoreUpdate: "Blob-opslag instellingen bijwerken",
sysBlockedIpGet: "Adressen ophalen",
sysBlockedIpCreate: "Adressen aanmaken",
sysBlockedIpUpdate: "Adressen bijwerken",
sysBlockedIpDestroy: "Adressen verwijderen",
sysBlockedIpQuery: "Adressen opvragen",
sysBootstrapGet: "Bootstrap-instellingen ophalen",
sysBootstrapUpdate: "Bootstrap-instellingen bijwerken",
sysCacheGet: "Cache-instellingen ophalen",
sysCacheUpdate: "Cache-instellingen bijwerken",
sysCalendarGet: "Agenda-instellingen ophalen",
sysCalendarUpdate: "Agenda-instellingen bijwerken",
sysBootstrapGet: "Bootstrap instellingen ophalen",
sysBootstrapUpdate: "Bootstrap instellingen bijwerken",
sysCacheGet: "Cache instellingen ophalen",
sysCacheUpdate: "Cache instellingen bijwerken",
sysCalendarGet: "Agenda instellingen ophalen",
sysCalendarUpdate: "Agenda instellingen bijwerken",
sysCalendarAlarmGet: "Instellingen voor agendaherinneringen ophalen",
sysCalendarAlarmUpdate: "Instellingen voor agendaherinneringen bijwerken",
sysCalendarSchedulingGet: "Instellingen voor agendaplanning ophalen",
@@ -393,19 +402,19 @@ export const permissionCatalog: PermissionCatalog = {
sysClusterRoleUpdate: "Rollen bijwerken",
sysClusterRoleDestroy: "Rollen verwijderen",
sysClusterRoleQuery: "Rollen opvragen",
sysCoordinatorGet: "Coördinatorinstellingen ophalen",
sysCoordinatorUpdate: "Coördinatorinstellingen bijwerken",
sysCoordinatorGet: "Coördinator instellingen ophalen",
sysCoordinatorUpdate: "Coördinator instellingen bijwerken",
sysDataRetentionGet: "Instellingen voor gegevensbewaring ophalen",
sysDataRetentionUpdate: "Instellingen voor gegevensbewaring bijwerken",
sysDataStoreGet: "Gegevensopslaginstellingen ophalen",
sysDataStoreUpdate: "Gegevensopslaginstellingen bijwerken",
sysDataStoreGet: "Gegevensopslag instellingen ophalen",
sysDataStoreUpdate: "Gegevensopslag instellingen bijwerken",
sysDirectoryGet: "Adreslijsten ophalen",
sysDirectoryCreate: "Adreslijsten aanmaken",
sysDirectoryUpdate: "Adreslijsten bijwerken",
sysDirectoryDestroy: "Adreslijsten verwijderen",
sysDirectoryQuery: "Adreslijsten opvragen",
sysDkimReportSettingsGet: "DKIM-rapportinstellingen ophalen",
sysDkimReportSettingsUpdate: "DKIM-rapportinstellingen bijwerken",
sysDkimReportSettingsGet: "DKIM-rapport instellingen ophalen",
sysDkimReportSettingsUpdate: "DKIM-rapport instellingen bijwerken",
sysDkimSignatureGet: "Handtekeningen ophalen",
sysDkimSignatureCreate: "Handtekeningen aanmaken",
sysDkimSignatureUpdate: "Handtekeningen bijwerken",
@@ -421,10 +430,10 @@ export const permissionCatalog: PermissionCatalog = {
sysDmarcInternalReportUpdate: "Rapporten bijwerken",
sysDmarcInternalReportDestroy: "Rapporten verwijderen",
sysDmarcInternalReportQuery: "Rapporten opvragen",
sysDmarcReportSettingsGet: "DMARC-rapportinstellingen ophalen",
sysDmarcReportSettingsUpdate: "DMARC-rapportinstellingen bijwerken",
sysDnsResolverGet: "DNS-resolverinstellingen ophalen",
sysDnsResolverUpdate: "DNS-resolverinstellingen bijwerken",
sysDmarcReportSettingsGet: "DMARC-rapport instellingen ophalen",
sysDmarcReportSettingsUpdate: "DMARC-rapport instellingen bijwerken",
sysDnsResolverGet: "DNS-resolver instellingen ophalen",
sysDnsResolverUpdate: "DNS-resolver instellingen bijwerken",
sysDnsServerGet: "DNS-servers ophalen",
sysDnsServerCreate: "DNS-servers aanmaken",
sysDnsServerUpdate: "DNS-servers bijwerken",
@@ -435,34 +444,34 @@ export const permissionCatalog: PermissionCatalog = {
sysDomainUpdate: "Domeinen bijwerken",
sysDomainDestroy: "Domeinen verwijderen",
sysDomainQuery: "Domeinen opvragen",
sysDsnReportSettingsGet: "DSN-rapportinstellingen ophalen",
sysDsnReportSettingsUpdate: "DSN-rapportinstellingen bijwerken",
sysEmailGet: "E-mailinstellingen ophalen",
sysEmailUpdate: "E-mailinstellingen bijwerken",
sysEnterpriseGet: "Enterprise-instellingen ophalen",
sysEnterpriseUpdate: "Enterprise-instellingen bijwerken",
sysDsnReportSettingsGet: "DSN-rapport instellingen ophalen",
sysDsnReportSettingsUpdate: "DSN-rapport instellingen bijwerken",
sysEmailGet: "E-mail instellingen ophalen",
sysEmailUpdate: "E-mail instellingen bijwerken",
sysEnterpriseGet: "Enterprise instellingen ophalen",
sysEnterpriseUpdate: "Enterprise instellingen bijwerken",
sysEventTracingLevelGet: "Gebeurtenissen ophalen",
sysEventTracingLevelCreate: "Gebeurtenissen aanmaken",
sysEventTracingLevelUpdate: "Gebeurtenissen bijwerken",
sysEventTracingLevelDestroy: "Gebeurtenissen verwijderen",
sysEventTracingLevelQuery: "Gebeurtenissen opvragen",
sysFileStorageGet: "Bestandsopslaginstellingen ophalen",
sysFileStorageUpdate: "Bestandsopslaginstellingen bijwerken",
sysHttpGet: "HTTP-instellingen ophalen",
sysHttpUpdate: "HTTP-instellingen bijwerken",
sysHttpFormGet: "HTTP-formulierinstellingen ophalen",
sysHttpFormUpdate: "HTTP-formulierinstellingen bijwerken",
sysFileStorageGet: "Bestandsopslag instellingen ophalen",
sysFileStorageUpdate: "Bestandsopslag instellingen bijwerken",
sysHttpGet: "HTTP instellingen ophalen",
sysHttpUpdate: "HTTP instellingen bijwerken",
sysHttpFormGet: "HTTP-formulier instellingen ophalen",
sysHttpFormUpdate: "HTTP-formulier instellingen bijwerken",
sysHttpLookupGet: "Lijsten ophalen",
sysHttpLookupCreate: "Lijsten aanmaken",
sysHttpLookupUpdate: "Lijsten bijwerken",
sysHttpLookupDestroy: "Lijsten verwijderen",
sysHttpLookupQuery: "Lijsten opvragen",
sysImapGet: "IMAP-instellingen ophalen",
sysImapUpdate: "IMAP-instellingen bijwerken",
sysImapGet: "IMAP instellingen ophalen",
sysImapUpdate: "IMAP instellingen bijwerken",
sysInMemoryStoreGet: "Instellingen voor in-memory-opslag ophalen",
sysInMemoryStoreUpdate: "Instellingen voor in-memory-opslag bijwerken",
sysJmapGet: "JMAP-instellingen ophalen",
sysJmapUpdate: "JMAP-instellingen bijwerken",
sysJmapGet: "JMAP instellingen ophalen",
sysJmapUpdate: "JMAP instellingen bijwerken",
sysLogGet: "Logboekvermeldingen ophalen",
sysLogCreate: "Logboekvermeldingen aanmaken",
sysLogUpdate: "Logboekvermeldingen bijwerken",
@@ -493,8 +502,8 @@ export const permissionCatalog: PermissionCatalog = {
sysMetricUpdate: "Statistieken bijwerken",
sysMetricDestroy: "Statistieken verwijderen",
sysMetricQuery: "Statistieken opvragen",
sysMetricsGet: "Statistiekinstellingen ophalen",
sysMetricsUpdate: "Statistiekinstellingen bijwerken",
sysMetricsGet: "Statistiek instellingen ophalen",
sysMetricsUpdate: "Statistiek instellingen bijwerken",
sysMetricsStoreGet: "Instellingen voor statistiekopslag ophalen",
sysMetricsStoreUpdate: "Instellingen voor statistiekopslag bijwerken",
sysMtaConnectionStrategyGet: "Strategieën ophalen",
@@ -507,8 +516,8 @@ export const permissionCatalog: PermissionCatalog = {
sysMtaDeliveryScheduleUpdate: "Schema's bijwerken",
sysMtaDeliveryScheduleDestroy: "Schema's verwijderen",
sysMtaDeliveryScheduleQuery: "Schema's opvragen",
sysMtaExtensionsGet: "MTA-extensie-instellingen ophalen",
sysMtaExtensionsUpdate: "MTA-extensie-instellingen bijwerken",
sysMtaExtensionsGet: "MTA-extensie instellingen ophalen",
sysMtaExtensionsUpdate: "MTA-extensie instellingen bijwerken",
sysMtaHookGet: "Hooks ophalen",
sysMtaHookCreate: "Hooks aanmaken",
sysMtaHookUpdate: "Hooks bijwerken",
@@ -555,8 +564,8 @@ export const permissionCatalog: PermissionCatalog = {
sysMtaStageMailUpdate: "Instellingen voor MTA-fase MAIL bijwerken",
sysMtaStageRcptGet: "Instellingen voor MTA-fase RCPT ophalen",
sysMtaStageRcptUpdate: "Instellingen voor MTA-fase RCPT bijwerken",
sysMtaStsGet: "MTA-STS-instellingen ophalen",
sysMtaStsUpdate: "MTA-STS-instellingen bijwerken",
sysMtaStsGet: "MTA-STS instellingen ophalen",
sysMtaStsUpdate: "MTA-STS instellingen bijwerken",
sysMtaTlsStrategyGet: "Strategieën ophalen",
sysMtaTlsStrategyCreate: "Strategieën aanmaken",
sysMtaTlsStrategyUpdate: "Strategieën bijwerken",
@@ -577,8 +586,8 @@ export const permissionCatalog: PermissionCatalog = {
sysOAuthClientUpdate: "OAuth-clients bijwerken",
sysOAuthClientDestroy: "OAuth-clients verwijderen",
sysOAuthClientQuery: "OAuth-clients opvragen",
sysOidcProviderGet: "OIDC-providerinstellingen ophalen",
sysOidcProviderUpdate: "OIDC-providerinstellingen bijwerken",
sysOidcProviderGet: "OIDC-provider instellingen ophalen",
sysOidcProviderUpdate: "OIDC-provider instellingen bijwerken",
sysPublicKeyGet: "Openbare sleutels ophalen",
sysPublicKeyCreate: "Openbare sleutels aanmaken",
sysPublicKeyUpdate: "Openbare sleutels bijwerken",
@@ -589,19 +598,19 @@ export const permissionCatalog: PermissionCatalog = {
sysQueuedMessageUpdate: "Berichten bijwerken",
sysQueuedMessageDestroy: "Berichten verwijderen",
sysQueuedMessageQuery: "Berichten opvragen",
sysReportSettingsGet: "Rapportinstellingen ophalen",
sysReportSettingsUpdate: "Rapportinstellingen bijwerken",
sysReportSettingsGet: "Rapport instellingen ophalen",
sysReportSettingsUpdate: "Rapport instellingen bijwerken",
sysRoleGet: "Rollen ophalen",
sysRoleCreate: "Rollen aanmaken",
sysRoleUpdate: "Rollen bijwerken",
sysRoleDestroy: "Rollen verwijderen",
sysRoleQuery: "Rollen opvragen",
sysSearchGet: "Zoekinstellingen ophalen",
sysSearchUpdate: "Zoekinstellingen bijwerken",
sysSearchGet: "Zoek instellingen ophalen",
sysSearchUpdate: "Zoek instellingen bijwerken",
sysSearchStoreGet: "Instellingen voor zoekopslag ophalen",
sysSearchStoreUpdate: "Instellingen voor zoekopslag bijwerken",
sysSecurityGet: "Beveiligingsinstellingen ophalen",
sysSecurityUpdate: "Beveiligingsinstellingen bijwerken",
sysSecurityGet: "Beveiliging instellingen ophalen",
sysSecurityUpdate: "Beveiliging instellingen bijwerken",
sysSenderAuthGet: "Instellingen voor afzenderauthenticatie ophalen",
sysSenderAuthUpdate: "Instellingen voor afzenderauthenticatie bijwerken",
sysSharingGet: "Instellingen voor delen ophalen",
@@ -634,17 +643,17 @@ export const permissionCatalog: PermissionCatalog = {
sysSpamFileExtensionUpdate: "Extensies bijwerken",
sysSpamFileExtensionDestroy: "Extensies verwijderen",
sysSpamFileExtensionQuery: "Extensies opvragen",
sysSpamLlmGet: "Spam-LLM-instellingen ophalen",
sysSpamLlmUpdate: "Spam-LLM-instellingen bijwerken",
sysSpamPyzorGet: "Spam-Pyzor-instellingen ophalen",
sysSpamPyzorUpdate: "Spam-Pyzor-instellingen bijwerken",
sysSpamLlmGet: "Spam-LLM instellingen ophalen",
sysSpamLlmUpdate: "Spam-LLM instellingen bijwerken",
sysSpamPyzorGet: "Spam-Pyzor instellingen ophalen",
sysSpamPyzorUpdate: "Spam-Pyzor instellingen bijwerken",
sysSpamRuleGet: "Regels ophalen",
sysSpamRuleCreate: "Regels aanmaken",
sysSpamRuleUpdate: "Regels bijwerken",
sysSpamRuleDestroy: "Regels verwijderen",
sysSpamRuleQuery: "Regels opvragen",
sysSpamSettingsGet: "Spaminstellingen ophalen",
sysSpamSettingsUpdate: "Spaminstellingen bijwerken",
sysSpamSettingsGet: "Spam instellingen ophalen",
sysSpamSettingsUpdate: "Spam instellingen bijwerken",
sysSpamTagGet: "Tags ophalen",
sysSpamTagCreate: "Tags aanmaken",
sysSpamTagUpdate: "Tags bijwerken",
@@ -655,15 +664,15 @@ export const permissionCatalog: PermissionCatalog = {
sysSpamTrainingSampleUpdate: "Voorbeelden bijwerken",
sysSpamTrainingSampleDestroy: "Voorbeelden verwijderen",
sysSpamTrainingSampleQuery: "Voorbeelden opvragen",
sysSpfReportSettingsGet: "SPF-rapportinstellingen ophalen",
sysSpfReportSettingsUpdate: "SPF-rapportinstellingen bijwerken",
sysSpfReportSettingsGet: "SPF-rapport instellingen ophalen",
sysSpfReportSettingsUpdate: "SPF-rapport instellingen bijwerken",
sysStoreLookupGet: "Lookups ophalen",
sysStoreLookupCreate: "Lookups aanmaken",
sysStoreLookupUpdate: "Lookups bijwerken",
sysStoreLookupDestroy: "Lookups verwijderen",
sysStoreLookupQuery: "Lookups opvragen",
sysSystemSettingsGet: "Systeeminstellingen ophalen",
sysSystemSettingsUpdate: "Systeeminstellingen bijwerken",
sysSystemSettingsGet: "Systeem instellingen ophalen",
sysSystemSettingsUpdate: "Systeem instellingen bijwerken",
taskIndexDocument: "Document indexeren",
taskUnindexDocument: "Document uit de index verwijderen",
taskIndexTrace: "Telemetrietrace indexeren",
@@ -704,8 +713,8 @@ export const permissionCatalog: PermissionCatalog = {
sysTlsInternalReportUpdate: "Rapporten bijwerken",
sysTlsInternalReportDestroy: "Rapporten verwijderen",
sysTlsInternalReportQuery: "Rapporten opvragen",
sysTlsReportSettingsGet: "TLS-rapportinstellingen ophalen",
sysTlsReportSettingsUpdate: "TLS-rapportinstellingen bijwerken",
sysTlsReportSettingsGet: "TLS-rapport instellingen ophalen",
sysTlsReportSettingsUpdate: "TLS-rapport instellingen bijwerken",
sysTraceGet: "Traces ophalen",
sysTraceCreate: "Traces aanmaken",
sysTraceUpdate: "Traces bijwerken",
@@ -718,8 +727,8 @@ export const permissionCatalog: PermissionCatalog = {
sysTracerQuery: "Tracers opvragen",
sysTracingStoreGet: "Instellingen voor tracing-opslag ophalen",
sysTracingStoreUpdate: "Instellingen voor tracing-opslag bijwerken",
sysWebDavGet: "WebDAV-instellingen ophalen",
sysWebDavUpdate: "WebDAV-instellingen bijwerken",
sysWebDavGet: "WebDAV instellingen ophalen",
sysWebDavUpdate: "WebDAV instellingen bijwerken",
sysWebHookGet: "Webhooks ophalen",
sysWebHookCreate: "Webhooks aanmaken",
sysWebHookUpdate: "Webhooks bijwerken",