Merge main: keep both language entries

This commit is contained in:
2026-08-31 12:21:02 -07:00
7 changed files with 2625 additions and 10 deletions
+10 -4
View File
@@ -22,16 +22,22 @@ describe("resolveUiLanguage", () => {
// The account travels between machines and can outlive a catalogue. A
// page that says lang="fr" while rendering English is worse than one that
// admits to English: it stops the reader translating it themselves.
expect(resolveUiLanguage("fr")).toBe("en");
// Derived rather than named, so shipping another language does not turn
// this into a failing test that is really just out of date.
const unshipped = ["cy", "is", "mt", "eu"].find((tag) => !UI_LANGUAGES.some((l) => l.tag === tag))!;
expect(resolveUiLanguage(unshipped)).toBe("en");
expect(resolveUiLanguage("xx-XX")).toBe("en");
});
it("carries the Beta flag until a person has signed the language off", () => {
// Not a completeness measure. A catalogue can be word-for-word finished
// and still read like a machine wrote it, which is what this marks.
const de = UI_LANGUAGES.find((l) => l.tag === "de");
expect(de?.beta).toBe(true);
expect(UI_LANGUAGES.find((l) => l.tag === "en")?.beta).toBeUndefined();
// Every shipped language except English is unreviewed, and stays marked
// until a person says otherwise.
for (const l of UI_LANGUAGES) {
if (l.tag === "en") expect(l.beta).toBeUndefined();
else expect(l.beta).toBe(true);
}
});
it("honours one that is", () => {
+3
View File
@@ -38,6 +38,9 @@ export interface UiLanguage {
export const UI_LANGUAGES: readonly UiLanguage[] = [
{ tag: "en", name: "English" },
{ 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: "pt-BR", name: "Português (Brasil)", beta: true },
];
+857
View File
@@ -0,0 +1,857 @@
import type { Catalog } from "@/lib/i18n";
/**
* Spanish — generated by AI, and not reviewed by a native speaker.
*
* Same standing as the others: written against the terminology Spanish mail
* clients already use, marked Beta in the picker, and carrying a report link
* that is the review process until somebody who speaks Spanish signs it off.
* A missing string renders its English source, so deleting a bad entry is a
* valid fix.
*
* ── Decisions this file is consistent about ──────────────────────────────
*
* Register: **usted**, following "Sie", "vous" and "u", and reached the same
* way — a mail client a workplace deployed has no business being familiar.
* Spanish makes this easier than the others, because most of the interface is
* infinitives and nouns ("Eliminar", "Configuración") where the question does
* not arise at all. Where a sentence does address the reader it uses usted,
* and the verb agreement follows.
*
* This is peninsular Spanish where the two diverge, on the grounds that one
* variety chosen deliberately reads better than a blend of two. The differences
* that actually bite in a mail client are few and named here: "correo" rather
* than "email", "ordenador" rather than "computadora", and no "ustedes/vosotros"
* problem because the interface never addresses a group. A Latin American
* catalogue, if it is ever wanted, is a copy of this file with those changed
* rather than a fresh translation.
*
* Terminology, fixed once so it cannot drift:
*
* Inbox Bandeja de entrada Archive (verb) archivar
* Drafts Borradores Delete eliminar
* Sent Enviados Move to mover a
* Deleted Items Papelera Reply responder
* Junk / Spam Spam Reply all responder a todos
* Folder Carpeta Forward reenviar
* Label Etiqueta Star destacar
* Conversation Conversación Read / unread leído / no leído
* Message Mensaje Settings Configuración
* Attachment Adjunto Signature Firma
* Contact Contacto Identity Identidad
*
* "Etiqueta" rather than leaving "Label" in English, as in French and for the
* same reason: Gmail established it in Spanish and a reader will find it there.
*
* Product names are never translated: ihasmail, Stalwart, JMAP, Sieve, vCard.
*/
export const catalog: Catalog = {
strings: {
// ── Actions ────────────────────────────────────────────────────────
"Archive": "Archivar",
"Archive (e)": "Archivar (e)",
"Delete": "Eliminar",
"Delete (#)": "Eliminar (#)",
"Reply": "Responder",
"Reply (r)": "Responder (r)",
"Reply all": "Responder a todos",
"Forward": "Reenviar",
"Move to…": "Mover a…",
"Move to (v)": "Mover a (v)",
"Move to folder": "Mover a una carpeta",
"Move here": "Mover aquí",
"Mark as read": "Marcar como leído",
"Mark as read (Shift+I)": "Marcar como leído (Mayús+I)",
"Mark as unread": "Marcar como no leído",
"Mark as unread (Shift+U)": "Marcar como no leído (Mayús+U)",
"Mark all as read": "Marcar todo como leído",
"Mark all as read, incl. subfolders": "Marcar todo como leído, incl. subcarpetas",
"Star": "Destacar",
"Labels": "Etiquetas",
"Labels (l)": "Etiquetas (l)",
"Label as": "Etiquetar como",
"Label…": "Etiqueta…",
"Compose": "Redactar",
"Compose message": "Redactar mensaje",
"Send": "Enviar",
"Send at": "Enviar el",
"Cancel send": "Cancelar el envío",
"Schedule send": "Programar el envío",
"Save": "Guardar",
"Save & activate": "Guardar y activar",
"Save & close (Esc)": "Guardar y cerrar (Esc)",
"Save as template": "Guardar como plantilla",
"Save draft now": "Guardar el borrador ahora",
"Cancel": "Cancelar",
"Close": "Cerrar",
"Done": "Hecho",
"Continue": "Continuar",
"Edit": "Editar",
"Edit…": "Editar…",
"Rename": "Cambiar el nombre",
"Remove": "Quitar",
"Restore": "Restaurar",
"Retry": "Reintentar",
"Reload": "Recargar",
"Refresh": "Actualizar",
"Copy": "Copiar",
"Copy email address": "Copiar la dirección de correo",
"Download": "Descargar",
"Download all": "Descargar todo",
"Download (.eml)": "Descargar (.eml)",
"Download latest as .eml": "Descargar el más reciente como .eml",
"Upload": "Subir",
"Upload files…": "Subir archivos…",
"Print": "Imprimir",
"Print conversation": "Imprimir la conversación",
"Undo (Ctrl+Z)": "Deshacer (Ctrl+Z)",
"Redo": "Rehacer",
"Dismiss": "Cerrar",
"Discard changes": "Descartar los cambios",
"Discard draft": "Descartar el borrador",
"Duplicate": "Duplicar",
"Validate": "Comprobar",
"Revoke": "Revocar",
"Turn off": "Desactivar",
"Clear": "Vaciar",
"Clear selection": "Anular la selección",
"Clear custom colour": "Quitar el color personalizado",
"Select": "Seleccionar",
"Select all": "Seleccionar todo",
"Unsubscribe": "Darse de baja",
"Share…": "Compartir…",
"Stop sharing": "Dejar de compartir",
"Open": "Abrir",
"Open in new tab": "Abrir en una pestaña nueva",
"Open in calendar": "Abrir en el calendario",
"Back": "Atrás",
"Back (u)": "Atrás (u)",
"Back to list": "Volver a la lista",
"Back to my files": "Volver a mis archivos",
"Go back to the list": "Volver a la lista",
"Next": "Siguiente",
"Previous": "Anterior",
"More": "Más",
"More actions": "Más acciones",
"More options": "Más opciones",
"Move up": "Subir",
"Move down": "Bajar",
"Drag to reorder": "Arrastre para reordenar",
"Right-click for options": "Clic derecho para ver opciones",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "Correo",
"Message": "Mensaje",
"Messages": "Mensajes",
"Message body": "Cuerpo del mensaje",
"Message headers": "Cabeceras del mensaje",
"Message size": "Tamaño del mensaje",
"Message-ID": "Message-ID",
"Original message": "Mensaje original",
"Delete this message": "Eliminar este mensaje",
"New message to this address": "Nuevo mensaje a esta dirección",
"Conversation view": "Vista de conversación",
"Draft": "Borrador",
"Unread": "No leídos",
"Unread only": "Solo los no leídos",
"All mail": "Todos los mensajes",
"Sender": "Remitente",
"Sender domain": "Dominio del remitente",
"Recipients": "Destinatarios",
"From": "De",
"To": "Para",
"Cc": "Cc",
"Bcc": "Cco",
"Subject": "Asunto",
"Subject (optional)": "Asunto (opcional)",
"Body": "Cuerpo",
"Body text": "Texto normal",
"Attach files": "Adjuntar archivos",
"Attach from Files": "Adjuntar desde Archivos",
"Remove attachment": "Quitar el adjunto",
"Has attachment": "Tiene adjunto",
"Has the words": "Contiene las palabras",
"Header name": "Nombre de la cabecera",
"Show headers": "Mostrar las cabeceras",
"Show original": "Mostrar el original",
"Show details": "Mostrar los detalles",
"Show images": "Mostrar las imágenes",
"Remote images": "Imágenes remotas",
"Remote images are blocked to protect your privacy.": "Las imágenes remotas se bloquean para proteger su privacidad.",
"Always from {email}": "Siempre de {email}",
"This looks like a mailing list.": "Esto parece una lista de correo.",
"This folder is empty": "Esta carpeta está vacía",
"This folder is empty.": "Esta carpeta está vacía.",
"Delete all spam now": "Eliminar todo el spam ahora",
"Deleting spam is permanent — it does not go to Deleted Items first.": "Eliminar el spam es definitivo: no pasa antes por la papelera.",
"Keep in Inbox": "Mantener en la bandeja de entrada",
"Newer (k)": "Más reciente (k)",
"Older (j)": "Más antiguo (j)",
"Open the next (older) conversation": "Abrir la conversación siguiente (más antigua)",
"Open the previous (newer) conversation": "Abrir la conversación anterior (más reciente)",
"Loading conversation…": "Cargando la conversación…",
"Important": "Importante",
"Unverified": "Sin verificar",
"Priority": "Prioridad",
"High": "Alta",
"Normal": "Normal",
"Low": "Baja",
"to {recipients}": "para {recipients}",
"From: {sender}": "De: {sender}",
"Waiting on the server — goes out {when}.": "Esperando en el servidor: se enviará {when}.",
"Scheduled — click to clear the schedule": "Programado: haga clic para anular la programación",
"Nothing scheduled": "Nada programado",
"The message waits on the server, so it goes out whether or not ihasmail is open.": "El mensaje espera en el servidor, así que se envía tanto si ihasmail está abierto como si no.",
"This server holds a message for up to {span}.": "Este servidor retiene un mensaje hasta {span}.",
"Date and time to send": "Fecha y hora de envío",
"Undo send window": "Margen para deshacer el envío",
"Read receipt requested": "Confirmación de lectura solicitada",
"The sender asked for a read receipt.": "El remitente ha solicitado una confirmación de lectura.",
"Request read receipt": "Solicitar confirmación de lectura",
"Always request read receipts": "Solicitar siempre confirmación de lectura",
"Receipt": "Confirmación",
"Never send one": "No enviar nunca",
"Not this time": "Esta vez no",
"It would go to {address}, which is not where the message came from.": "Iría a {address}, que no es de donde vino el mensaje.",
"Use “Show original” for the complete raw message.": "Use «Mostrar el original» para ver el mensaje sin procesar completo.",
// ── Folders, calendar, contacts, files ─────────────────────────────
"Folder": "Carpeta",
"Folders": "Carpetas",
"Folder options": "Opciones de la carpeta",
"New folder": "Carpeta nueva",
"New subfolder": "Subcarpeta nueva",
"Delete folder": "Eliminar la carpeta",
"No matching folders": "Ninguna carpeta coincide",
"No subfolders here.": "Aquí no hay subcarpetas.",
"Type a folder name…": "Escriba un nombre de carpeta…",
" New folder…": " Carpeta nueva…",
"Create, rename and hide folders.": "Cree, renombre y oculte carpetas.",
"Show unsubscribed (hidden) folders": "Mostrar las carpetas no suscritas (ocultas)",
"Storage: {used} of {total} used.": "Almacenamiento: {used} de {total} en uso.",
"{used} of {total}": "{used} de {total}",
"Calendar": "Calendario",
"My calendars": "Mis calendarios",
"New calendar": "Calendario nuevo",
"Calendar options": "Opciones del calendario",
"Calendar & contacts": "Calendario y contactos",
"Calendar is not available": "El calendario no está disponible",
"Event": "Evento",
"New event": "Evento nuevo",
"(new event)": "(evento nuevo)",
"New all-day event": "Evento nuevo de todo el día",
"Add title": "Añadir un título",
"Add location": "Añadir una ubicación",
"Add to calendar": "Añadir al calendario",
"Add to my calendar": "Añadir a mi calendario",
"Remove from calendar": "Quitar del calendario",
"Remove from my calendar": "Quitar de mi calendario",
"All day": "Todo el día",
"all-day": "todo el día",
"Starts": "Empieza",
"Starts (optional)": "Empieza (opcional)",
"Ends": "Termina",
"Ends (optional)": "Termina (opcional)",
"Day": "Día",
"Week": "Semana",
"Month": "Mes",
"Agenda": "Agenda",
"Today": "Hoy",
"Go to day": "Ir al día",
"Go to week": "Ir a la semana",
"Previous month": "Mes anterior",
"Next month": "Mes siguiente",
"Does not repeat": "No se repite",
"Daily": "Cada día",
"Every weekday": "Cada día laborable",
"Yearly": "Cada año",
"Custom…": "Personalizado…",
"Weekly on {weekday}": "Cada semana el {weekday}",
"Monthly on day {day}": "Cada mes el día {day}",
"Repeat every": "Repetir cada",
"Repeat until": "Repetir hasta",
"after N times": "después de N veces",
"on date": "en una fecha",
"never": "nunca",
"day(s)": "día(s)",
"week(s)": "semana(s)",
"month(s)": "mes(es)",
"year(s)": "año(s)",
"Reminders": "Recordatorios",
"Add reminder": "Añadir un recordatorio",
"Remove reminder": "Quitar el recordatorio",
"Default reminder": "Recordatorio predeterminado",
"At time of event": "A la hora del evento",
"5 minutes before": "5 minutos antes",
"10 minutes before": "10 minutos antes",
"15 minutes before": "15 minutos antes",
"30 minutes before": "30 minutos antes",
"1 hour before": "1 hora antes",
"1 day before": "1 día antes",
"15 minutes": "15 minutos",
"30 minutes": "30 minutos",
"45 minutes": "45 minutos",
"1 hour": "1 hora",
"1.5 hours": "1 h 30 min",
"2 hours": "2 horas",
"Default event length": "Duración predeterminada de un evento",
"Default view": "Vista predeterminada",
"Guests": "Invitados",
"Add guests by name or email": "Añadir invitados por nombre o correo",
"Send invitation emails to guests": "Enviar invitaciones por correo a los invitados",
"Going?": "¿Asistirá?",
"Yes": "Sí",
"No": "No",
"Maybe": "Quizá",
"Confirmed": "Confirmado",
"Tentative": "Provisional",
"Cancelled": "Cancelado",
"organizer": "organizador",
"Organizer: {name}": "Organizador: {name}",
"Free": "Libre",
"Busy": "Ocupado",
"Free/busy": "Disponibilidad",
"Show as": "Mostrar como",
"Availability on {date}": "Disponibilidad el {date}",
"Count all events as busy": "Contar todos los eventos como ocupado",
"Only events I'm attending": "Solo los eventos a los que asisto",
"Don't include in availability": "No incluir en la disponibilidad",
"Meeting link": "Enlace de la reunión",
"No events in the next 60 days.": "No hay eventos en los próximos 60 días.",
"Working hours": "Horario laboral",
"Working hours start": "El horario laboral empieza",
"Working hours end": "El horario laboral termina",
"Colour categories": "Categorías de color",
"Category": "Categoría",
"No category": "Sin categoría",
"New category": "Categoría nueva",
"Delete category": "Eliminar la categoría",
"Manage categories…": "Gestionar las categorías…",
"Use category color": "Usar el color de la categoría",
"Use calendar color": "Usar el color del calendario",
"Use the default colour": "Usar el color predeterminado",
"+{n} more": "+{n} más",
"Contacts": "Contactos",
"Contacts are not available": "Los contactos no están disponibles",
"New contact": "Contacto nuevo",
"Edit contact": "Editar el contacto",
"Select a contact": "Seleccione un contacto",
"All contacts": "Todos los contactos",
"Search contacts": "Buscar contactos",
"Search contacts to add…": "Buscar contactos para añadir…",
"Loading contacts…": "Cargando los contactos…",
"Add to contacts": "Añadir a los contactos",
"Add to my contacts": "Añadir a mis contactos",
"Remove from my contacts": "Quitar de mis contactos",
"Address book": "Libreta de direcciones",
"Address books": "Libretas de direcciones",
"All address books": "Todas las libretas de direcciones",
"My address books": "Mis libretas de direcciones",
"New address book": "Libreta de direcciones nueva",
"No address books yet.": "Aún no hay libretas de direcciones.",
"Choose from address books": "Elegir de las libretas de direcciones",
"Import vCard": "Importar una vCard",
"Export all": "Exportar todo",
"Export book": "Exportar la libreta",
"Email group": "Escribir al grupo",
"Email everyone": "Escribir a todos",
"Members": "Miembros",
"Members ({count})": "Miembros ({count})",
"Group": "Grupo",
"· group": "· grupo",
"Person": "Persona",
"First name": "Nombre",
"Last name": "Apellidos",
"Middle name": "Segundo nombre",
"More name fields": "Más campos de nombre",
"Nickname": "Apodo",
"Prefix": "Tratamiento",
"Suffix": "Sufijo",
"Dr.": "Dr.",
"Jr.": "Jr.",
"Display name": "Nombre visible",
"Job title": "Cargo",
"Organization": "Organización",
"Company": "Empresa",
"Birthday": "Cumpleaños",
"Notes": "Notas",
"Website": "Sitio web",
"Phone": "Teléfono",
"Add phone": "Añadir un teléfono",
"Add email": "Añadir un correo",
"Add address": "Añadir una dirección",
"Address": "Dirección",
"Street": "Calle",
"City": "Ciudad",
"State / Region": "Provincia / Región",
"Postal code": "Código postal",
"Country": "País",
"Change photo": "Cambiar la foto",
"Remove photo": "Quitar la foto",
"Updated {date}": "Actualizado el {date}",
"Modified": "Modificado",
"Search names and addresses": "Buscar nombres y direcciones",
"Add a person or group…": "Añadir una persona o un grupo…",
"Choose recipients": "Elegir los destinatarios",
"Available to add": "Disponibles para añadir",
"vCard": "vCard",
"vCard attachment": "Adjunto vCard",
"Files": "Archivos",
"My files": "Mis archivos",
"File storage is not available": "El almacenamiento de archivos no está disponible",
"Drag files here or use Upload.": "Arrastre archivos aquí o use «Subir».",
"Shared": "Compartido",
"Shared with me": "Compartido conmigo",
"Nothing is shared with you.": "No hay nada compartido con usted.",
"Not shared with anyone yet.": "Aún no está compartido con nadie.",
"Check for new shares": "Buscar elementos compartidos nuevos",
"Shared files are copied to your account when attached.": "Los archivos compartidos se copian a su cuenta al adjuntarlos.",
"Viewer": "Lectura",
"Size": "Tamaño",
"Add files": "Añadir archivos",
"Minimize": "Minimizar",
// ── Settings ───────────────────────────────────────────────────────
"Settings": "Configuración",
"All settings": "Toda la configuración",
"Sections": "Secciones",
"General": "General",
"Appearance": "Apariencia",
"Make ihasmail yours.": "Haga suyo ihasmail.",
"Reading": "Lectura",
"Reading pane": "Panel de lectura",
"Reading, sending and list behaviour. Settings are stored in this browser.": "Comportamiento de lectura, envío y lista. La configuración se guarda en este navegador.",
"Right of the list": "A la derecha de la lista",
"Below the list": "Debajo de la lista",
"Hidden (open full width)": "Oculto (abrir a todo el ancho)",
"Off (open messages full width)": "Desactivado (mensajes a todo el ancho)",
"Off": "Desactivado",
"Composing": "Redacción",
"Default format": "Formato predeterminado",
"Rich text (HTML)": "Texto enriquecido (HTML)",
"Plain text": "Texto sin formato",
"Quote original message in replies": "Citar el mensaje original en las respuestas",
"Place signature above quoted text": "Colocar la firma encima del texto citado",
"Attachment reminder": "Aviso de adjunto",
"Warn when the message mentions an attachment but none is attached.": "Avisar cuando el mensaje menciona un adjunto pero no hay ninguno.",
"Spell check while typing": "Corrección ortográfica al escribir",
"Confirm before deleting": "Confirmar antes de eliminar",
"Show message snippets": "Mostrar un fragmento de los mensajes",
"Preview the first line of each message in the list.": "Mostrar la primera línea de cada mensaje en la lista.",
"Show sender avatars": "Mostrar la imagen de los remitentes",
"Group messages from the same thread together.": "Agrupar los mensajes de una misma conversación.",
"After archiving or deleting": "Después de archivar o eliminar",
"Ask before showing (recommended)": "Preguntar antes de mostrar (recomendado)",
"Always (all messages)": "Siempre (todos los mensajes)",
"Show automatically from my contacts": "Mostrar automáticamente para mis contactos",
"Immediately when opened": "Nada más abrirlo",
"After 2 seconds": "Después de 2 segundos",
"After 5 seconds": "Después de 5 segundos",
"Never automatically": "Nunca automáticamente",
"When someone requests a read receipt": "Cuando alguien pide una confirmación de lectura",
"Ask me on each message": "Preguntarme en cada mensaje",
"5 seconds": "5 segundos",
"8 seconds": "8 segundos",
"15 seconds": "15 segundos",
"30 seconds": "30 segundos",
"Locale": "Regional",
"Language": "Idioma",
"Interface language": "Idioma de la interfaz",
"Language & region": "Idioma y región",
"Date format": "Formato de fecha",
"Time format": "Formato de hora",
"Time zone": "Zona horaria",
"Week starts on": "La semana empieza el",
"Monday": "Lunes",
"Tuesday": "Martes",
"Wednesday": "Miércoles",
"Thursday": "Jueves",
"Friday": "Viernes",
"Saturday": "Sábado",
"Sunday": "Domingo",
"12-hour clock (6:23 PM)": "Formato de 12 horas (6:23 PM)",
"24-hour clock (18:23)": "Formato de 24 horas (18:23)",
"Browser default ({zone})": "Valor del navegador ({zone})",
"Default ({zone})": "Predeterminado ({zone})",
"Automatic ({example})": "Automático ({example})",
"Automatic ({locale})": "Automático ({locale})",
"Automatic": "Automático",
"Preview: {example}": "Vista previa: {example}",
"Dates, times and month names follow this choice.": "Las fechas, horas y nombres de los meses siguen esta elección.",
"Your mail server reports {name} ({tag}).": "Su servidor de correo indica {name} ({tag}).",
"Your mail server does not report a locale, so the browser's is used.": "Su servidor de correo no indica ningún idioma, así que se usa el del navegador.",
"Dates": "Fechas",
"Date": "Fecha",
"Time": "Hora",
"When": "Cuándo",
"Then": "Entonces",
"then": "entonces",
"Theme": "Tema",
"Accent color": "Color de acento",
"Color": "Color",
"Colour": "Color",
"Text color": "Color del texto",
"Density & text": "Densidad y texto",
"Display density": "Densidad de visualización",
"Comfortable": "Cómoda",
"Cozy (default)": "Equilibrada (predeterminada)",
"Compact": "Compacta",
"Text size": "Tamaño del texto",
"Font size": "Tamaño de letra",
"Small": "Pequeño",
"Medium": "Mediano",
"Large": "Grande",
"Huge": "Muy grande",
"Sidebar": "Barra lateral",
"Show labels in the sidebar": "Mostrar las etiquetas en la barra lateral",
"Collapse sidebar to icons": "Reducir la barra lateral a iconos",
"Apply the theme to messages too": "Aplicar el tema también a los mensajes",
"Swiping": "Deslizamiento",
"Swipe left": "Deslizar a la izquierda",
"Swipe right": "Deslizar a la derecha",
"Backup": "Copia de seguridad",
"Export settings": "Exportar la configuración",
"Import settings": "Importar configuración",
"Settings imported": "Configuración importada",
"Invalid settings file": "Archivo de configuración no válido",
"Reset to defaults": "Restablecer los valores predeterminados",
"Default mail app": "Aplicación de correo predeterminada",
"Documentation": "Documentación",
"About ihasmail": "Acerca de ihasmail",
"About": "Acerca de",
"Server": "Servidor",
"Server capabilities": "Funciones del servidor",
"Accounts": "Cuentas",
"Account": "Cuenta",
"Max upload": "Subida máxima",
"{size} MB": "{size} MB",
"KB": "KB",
"Image privacy proxy": "Proxy de privacidad para imágenes",
"enabled": "activado",
"disabled": "desactivado",
"Enabled": "Activado",
"active": "activo",
"hidden": "oculto",
"connected": "conectado",
"reconnecting…": "reconectando…",
"AGPL-3.0 source": "Código fuente AGPL-3.0",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "Identidades y firmas",
"Add identity": "Añadir una identidad",
"Delete identity": "Eliminar la identidad",
"Make default": "Establecer como predeterminada",
"Default": "Predeterminada",
"Show when composing": "Mostrar al redactar",
"Hide when composing": "Ocultar al redactar",
"Signature": "Firma",
"Your signature…": "Su firma…",
"Reply-To": "Responder a",
"Reply-To (optional)": "Responder a (opcional)",
"Reply-To: {addresses}": "Responder a: {addresses}",
"Replies go to…": "Las respuestas van a…",
"Set a Reply-To address": "Definir una dirección de respuesta",
"{email} is now your default identity": "{email} es ahora su identidad predeterminada",
"Templates": "Plantillas",
"New template": "Plantilla nueva",
"Delete template": "Eliminar la plantilla",
"Insert template": "Insertar una plantilla",
"Template text…": "Texto de la plantilla…",
"Subject: {subject}": "Asunto: {subject}",
"Filters & rules": "Filtros y reglas",
"Filters unavailable": "Filtros no disponibles",
"Rules": "Reglas",
"Rule name": "Nombre de la regla",
"New rule": "Regla nueva",
"Delete rule": "Eliminar la regla",
"No filters yet": "Aún no hay filtros",
"Add condition": "Añadir una condición",
"Remove condition": "Quitar la condición",
"Add action": "Añadir una acción",
"Remove action": "Quitar la acción",
"all of the following match": "se cumplen todas las siguientes",
"any of the following match": "se cumple alguna de las siguientes",
"contains": "contiene",
"does not contain": "no contiene",
"is": "es",
"is not": "no es",
"matches (wildcards * ?)": "coincide con (comodines * ?)",
"does not match": "no coincide con",
"matches regex": "coincide con la expresión regular",
"does not match regex": "no coincide con la expresión regular",
"exists": "existe",
"does not exist": "no existe",
"is larger than": "es mayor que",
"is smaller than": "es menor que",
"Stop processing more rules": "Dejar de procesar más reglas",
"keep copy": "conservar una copia",
"Forward to": "Reenviar a",
"Reject with message": "Rechazar con un mensaje",
"Scripts": "Scripts",
"Scripts (advanced)": "Scripts (avanzado)",
"Script name": "Nombre del script",
"New script": "Script nuevo",
"Delete script": "Eliminar el script",
"Sieve source": "Código Sieve",
"Preview generated Sieve script": "Ver el script Sieve generado",
"Start with rules": "Empezar con reglas",
"Switch to rules?": "¿Cambiar a reglas?",
"Create filter": "Crear un filtro",
"Filter messages like this": "Filtrar mensajes como este",
"Filter messages like this…": "Filtrar mensajes como este…",
"Also apply to existing messages in": "Aplicar también a los mensajes existentes en",
"keyword (e.g. $important, work)": "palabra clave (p. ej. $important, trabajo)",
"Other header…": "Otra cabecera…",
"Out of office": "Fuera de la oficina",
"Auto-reply enabled": "Respuesta automática activada",
// ── Security, sessions, notifications ──────────────────────────────
"Security & sessions": "Seguridad y sesiones",
"Password": "Contraseña",
"Your password": "Su contraseña",
"Current password": "Contraseña actual",
"New password": "Contraseña nueva",
"Confirm new password": "Confirmar la contraseña nueva",
"Current code": "Código actual",
"Code from your authenticator": "Código de su aplicación de autenticación",
"Two-factor authentication": "Autenticación en dos pasos",
"Turn off two-factor authentication": "Desactivar la autenticación en dos pasos",
"Your password alone will be enough to sign in again.": "Su contraseña por sí sola bastará para volver a iniciar sesión.",
"App passwords": "Contraseñas de aplicación",
"New app password for": "Contraseña de aplicación nueva para",
"Your new app password": "Su contraseña de aplicación nueva",
"Secret": "Secreto",
"Thunderbird on my laptop": "Thunderbird en mi portátil",
"Active webmail sessions": "Sesiones de webmail activas",
"Sign out": "Cerrar sesión",
"Sign out here": "Cerrar sesión aquí",
"Sign out all other sessions": "Cerrar todas las demás sesiones",
"Signed in as": "Sesión iniciada como",
"This is my own device": "Este es mi propio dispositivo",
"this device": "este dispositivo",
"Device": "Dispositivo",
"IP": "IP",
"Last active": "Última actividad",
"Created": "Creada",
"Expires": "Caduca",
"Status": "Estado",
"Online": "En línea",
"Reason": "Motivo",
"Type": "Tipo",
"Email or username": "Correo o nombre de usuario",
"Use your usual address as the username.": "Use su dirección habitual como nombre de usuario.",
"Fast, friendly webmail. Your mailbox, your way.": "Un webmail rápido y agradable. Su buzón, a su manera.",
"Notifications": "Notificaciones",
"Notifications are blocked in your browser settings.": "Las notificaciones están bloqueadas en la configuración de su navegador.",
"Not supported in this browser.": "No compatible con este navegador.",
"Desktop notifications while ihasmail is open": "Notificaciones del sistema mientras ihasmail está abierto",
"Notify me even when ihasmail is closed": "Avisarme incluso cuando ihasmail esté cerrado",
"Play a sound for new mail": "Reproducir un sonido al llegar correo",
"Test notification": "Probar la notificación",
"Background notifications are on": "Las notificaciones en segundo plano están activadas",
"The tab title and favicon always show your unread Inbox count.": "El título de la pestaña y el favicon muestran siempre cuántos mensajes sin leer hay en la bandeja de entrada.",
"Live updates are delivered via JMAP push ({state}).": "Las actualizaciones en directo llegan por JMAP push ({state}).",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "Muestra una notificación del sistema cuando llega correo a su bandeja de entrada mientras la pestaña está en segundo plano.",
// ── Editor, search, shortcuts, misc ────────────────────────────────
"Formatting": "Formato",
"Formatting options": "Opciones de formato",
"Remove formatting": "Quitar el formato",
"Bold (Ctrl+B)": "Negrita (Ctrl+B)",
"Italic (Ctrl+I)": "Cursiva (Ctrl+I)",
"Underline (Ctrl+U)": "Subrayado (Ctrl+U)",
"Strikethrough": "Tachado",
"Highlight": "Resaltar",
"Bulleted list": "Lista con viñetas",
"Numbered list": "Lista numerada",
"Increase indent": "Aumentar la sangría",
"Decrease indent": "Reducir la sangría",
"Align left": "Alinear a la izquierda",
"Align right": "Alinear a la derecha",
"Center": "Centrar",
"Quote": "Cita",
"Code block": "Bloque de código",
"Normal text": "Texto normal",
"Insert link (Ctrl+K)": "Insertar un enlace (Ctrl+K)",
"Insert image": "Insertar una imagen",
"Link": "Enlace",
"List": "Lista",
"Emoji": "Emoji",
"Editor": "Edición",
"Write your message…": "Escriba su mensaje…",
"Search": "Buscar",
"Search mail": "Buscar en el correo",
"Advanced search": "Búsqueda avanzada",
"Keyboard shortcuts": "Atajos de teclado",
"Keyboard shortcuts (?)": "Atajos de teclado (?)",
"Shortcuts": "Atajos",
"Go to": "Ir a",
"Menu": "Menú",
"Options": "Opciones",
"Send options": "Opciones de envío",
"Name": "Nombre",
"Email": "Correo",
"Email address": "Dirección de correo",
"Description": "Descripción",
"Location": "Ubicación",
"Visibility": "Visibilidad",
"Private": "Privado",
"Work": "Trabajo",
"Loading…": "Cargando…",
"None": "Ninguno",
"optional": "opcional",
"Always show": "Mostrar siempre",
"to": "para",
"Received": "Recibido",
"In-Reply-To": "In-Reply-To",
"References": "References",
"Add label / keyword": "Añadir una etiqueta o palabra clave",
"Manage labels": "Gestionar las etiquetas",
"Create “{name}”": "Crear «{name}»",
"Type a name to create your first label.": "Escriba un nombre para crear su primera etiqueta.",
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Las etiquetas son palabras clave IMAP guardadas en sus mensajes, así que se sincronizan con otros clientes. Los nombres y colores se guardan en este navegador.",
"New label": "Etiqueta nueva",
"Delete label": "Eliminar la etiqueta",
"PDF": "PDF",
"Large attachments may be rejected by some servers": "Algunos servidores rechazan los adjuntos grandes",
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Las imágenes se guardan en sus Archivos (carpeta «ihasmail») y se incrustan al enviar.",
"Thanks for your message. I'm away until … and will reply when I'm back.": "Gracias por su mensaje. Estaré ausente hasta el … y le responderé a mi regreso.",
"Automatically reply to people who email you while you're away. Each sender gets at most one reply.": "Responder automáticamente a quien le escriba durante su ausencia. Cada remitente recibe como mucho una respuesta.",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "Clasificar el correo entrante automáticamente. Las reglas se ejecutan en el servidor (Sieve), así que valen para todos los clientes que use.",
"Canned responses you can insert into any message from the composer's template button.": "Respuestas preparadas que puede insertar en cualquier mensaje desde el botón de plantillas del editor.",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "Cree una regla para mover boletines a una carpeta, marcar remitentes importantes o reenviar correo.",
"Advanced: manage raw Sieve scripts. Only one script can be active at a time.": "Avanzado: gestionar directamente los scripts Sieve. Solo puede haber un script activo a la vez.",
"Only part of your filter script arrived.": "Su script de filtrado solo ha llegado en parte.",
"Your active script “{name}” was written by hand.": "Su script activo «{name}» se escribió a mano.",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "Hay otro script activo («{name}»). Si guarda reglas aquí, se activará el script «ihasmail» en su lugar.",
"“{name}” will be deactivated (not deleted) and a new “ihasmail” script will take over.": "«{name}» se desactivará (no se eliminará) y un script «ihasmail» nuevo tomará el relevo.",
"Sieve filtering is not available for this account.": "El filtrado Sieve no está disponible para esta cuenta.",
"Sieve filtering is not enabled for this account.": "El filtrado Sieve no está activado para esta cuenta.",
"Vacation responses are not available for this account.": "Las respuestas de ausencia no están disponibles para esta cuenta.",
"This account does not have the JMAP calendars capability.": "Esta cuenta no dispone de la función de calendarios JMAP.",
"This account does not have the JMAP contacts capability.": "Esta cuenta no dispone de la función de contactos JMAP.",
"This account does not have the JMAP file storage capability.": "Esta cuenta no dispone de la función de almacenamiento de archivos JMAP.",
// ── Labels held in constants, translated where they render ─────────
"Add": "Añadir",
"Create subfolders": "Crear subcarpetas",
"Dark": "Oscuro",
"Light": "Claro",
"Match system": "Seguir el sistema",
"Day.Month.Year": "Día.Mes.Año",
"Day/Month/Year": "Día/Mes/Año",
"Month/Day/Year": "Mes/Día/Año",
"Year-Month-Day (ISO 8601)": "Año-Mes-Día (ISO 8601)",
"Edit all": "Editarlo todo",
"Edit contents": "Editar el contenido",
"Edit own": "Editar los propios",
"Flag": "Marcar",
"Mark read": "Marcar como leído",
"Private props": "Propiedades privadas",
"Read": "Leer",
"Read events": "Leer los eventos",
"RSVP": "Responder",
"See free/busy": "Ver la disponibilidad",
"Share": "Compartir",
"Write": "Escribir",
"Live updates connected": "Actualizaciones en directo conectadas",
"Live updates reconnecting…": "Reconectando las actualizaciones en directo…",
"Live updates off — checking periodically instead": "Actualizaciones en directo desactivadas: se comprueba periódicamente",
"Mark as read / unread": "Marcar como leído / no leído",
"Star / unstar": "Destacar / quitar de destacados",
"Report spam / not spam": "Marcar como spam / no spam",
"Report spam": "Marcar como spam",
"Not spam": "No es spam",
"Nothing": "Nada",
"Later today": "Más tarde hoy",
"Tomorrow morning": "Mañana por la mañana",
"Tomorrow afternoon": "Mañana por la tarde",
"Monday morning": "El lunes por la mañana",
"Open draft": "Abrir el borrador",
"Undo": "Deshacer",
"Deleted Items": "Papelera",
"Choose a date": "Elija una fecha",
"Choose a date and time": "Elija una fecha y una hora",
"Pick date and time…": "Elegir fecha y hora…",
"After": "Después",
"Before": "Antes",
// ── Folder names shown for a JMAP role (see lib/mailboxName.ts) ────
"folder\u0004Inbox": "Bandeja de entrada",
"folder\u0004Archive": "Archivo",
"folder\u0004Drafts": "Borradores",
"folder\u0004Sent": "Enviados",
"folder\u0004Deleted Items": "Papelera",
"folder\u0004Junk Mail": "Spam",
"folder\u0004Important": "Importante",
"folder\u0004All mail": "Todos los mensajes",
"folder": "carpeta",
"“{name}” moved into “{parent}”": "«{name}» se ha movido a «{parent}»",
"“{name}” moved to the top level": "«{name}» se ha movido al nivel superior",
"Could not move “{name}”: {reason}": "No se ha podido mover «{name}»: {reason}",
"Delete “{name}”?": "¿Eliminar «{name}»?",
"Rename folder": "Cambiar el nombre de la carpeta",
"Search: {query}": "Búsqueda: {query}",
"No conversation selected": "Ninguna conversación seleccionada",
"Drop here for the top level": "Suelte aquí para el nivel superior",
// ── Longer prose ───────────────────────────────────────────────────
"Search mail (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)": "Buscar en el correo (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)",
"Settings → Filters & rules": "Configuración → Filtros y reglas",
"Open the Mail view to see all shortcuts.": "Abra la vista de Correo para ver todos los atajos.",
"Gmail-style shortcuts are always on. Press {key} anywhere to see this list.": "Los atajos al estilo de Gmail están siempre activos. Pulse {key} en cualquier momento para ver esta lista.",
"Select a conversation to read it here · Press {key} for shortcuts": "Seleccione una conversación para leerla aquí · {key} para los atajos",
"Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Consejo: pulse {key} sobre una conversación para aplicar etiquetas. Busque con {operator}.",
"A fast, friendly, open-source webmail for {server}, built on JMAP.": "Un webmail libre, rápido y agradable para {server}, construido sobre JMAP.",
"Defaults for the calendar views and new events.": "Valores predeterminados de las vistas del calendario y de los eventos nuevos.",
"Replies will go to this address instead of the From address": "Las respuestas irán a esta dirección en lugar de a la del remitente",
"Replies to mail sent from this identity go here instead of the From address.": "Las respuestas al correo enviado desde esta identidad llegan aquí en lugar de a la dirección del remitente.",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "Una identidad nueva debe usar una dirección desde la que esta cuenta tenga permiso para enviar (alias configurados en el servidor).",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "No se ofrece al redactar. La dirección sigue recibiendo correo, y puede volver a enviar desde ella mostrándola de nuevo.",
"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.": "Cada identidad es una dirección de envío con su propio nombre, dirección de respuesta y firma. La identidad predeterminada se preselecciona al redactar; defina una dirección de respuesta cuando las respuestas deban llegar a un sitio distinto del remitente.",
"This signature is larger than the server's {limit}-byte limit. ihasmail will keep the full version in your Files and store a short text fallback on the server — other mail clients will see the plain-text version.": "Esta firma supera el límite de {limit} bytes del servidor. ihasmail conservará la versión completa en sus Archivos y guardará una versión corta de texto en el servidor: los demás clientes verán la versión en texto sin formato.",
"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.": "Categorías al estilo de Outlook que puede asignar a los eventos desde el menú contextual o el editor de eventos. El nombre de la categoría se guarda en el evento, así que se sincroniza con otros clientes.",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colours 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.": "El correo en texto sin formato ya sigue el tema. Con esta opción, el correo HTML sin colores propios también lo hace, en lugar de mostrarse sobre un fondo blanco. Los mensajes con estilo propio se dejan exactamente como los diseñó el remitente.",
"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.": "Esto es independiente de {setting} en General, que determina cómo se escriben las fechas, horas y números. Puede leer una interfaz en inglés con fechas en español, o al revés.",
"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.": "En una pantalla táctil, deslice un mensaje hacia un lado para actuar sobre él. Cada dirección puede hacer una cosa, o ninguna. Estos ajustes siguen a su cuenta, así que el teléfono y la tableta coinciden; con el ratón se ignoran y se sigue arrastrando mensajes a las carpetas.",
"This screen has no touchscreen, so nothing here changes what it does. Your phone or tablet will pick these up.": "Esta pantalla no es táctil, así que nada de esto cambia su comportamiento. Su teléfono o tableta tomará estos ajustes.",
"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.": "Mantener pulsado un mensaje lo selecciona, y mantener pulsada una carpeta abre su menú. Tire hacia abajo de la parte superior de la lista para comprobar si hay correo nuevo.",
"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.": "Una confirmación le dice a quien la pidió que esta dirección está activa y cuándo se leyó el mensaje, y el remitente elige adónde va; por eso no hay opción automática. Al correo masivo, las listas de correo y todo lo marcado como enviado automáticamente nunca se les ofrece una.",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API — you can still make ihasmail the default from your operating system if you install it as an app.": "Este navegador no puede registrar aplicaciones para los enlaces {scheme}. Safari, en particular, no dispone de esa interfaz: aun así puede establecer ihasmail como predeterminado desde su sistema operativo si lo instala como aplicación.",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "Registrarse para los enlaces {scheme} requiere una conexión segura (HTTPS).",
"Open {scheme} links — in web pages, documents and other apps — in ihasmail 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 Privacy and security Site settings Protocol handlers; Firefox: Settings General Applications).": "Abrir los enlaces {scheme} —en páginas web, documentos y otras aplicaciones— con ihasmail en lugar de con un cliente de correo local. Su navegador le pedirá confirmación, y podrá cambiarlo más tarde en su propia configuración (Chrome: Configuración Privacidad y seguridad Configuración de sitios Controladores de protocolo; Firefox: Configuración General Aplicaciones).",
"Requested in this browser. Whether it took effect is up to the browser — check its settings if mail links still open elsewhere.": "Solicitado en este navegador. Que haya surtido efecto depende de él: revise su configuración si los enlaces de correo siguen abriéndose en otro sitio.",
"For a system-wide default, install ihasmail as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer ihasmail directly wherever it asks which mail app to use.": "Para un valor predeterminado en todo el sistema, instale antes ihasmail como aplicación (en Chrome: el icono de instalación de la barra de direcciones). Su sistema operativo podrá entonces ofrecer ihasmail directamente allí donde pregunte qué aplicación de correo usar.",
"Needs a browser with the Push API and a mail server that publishes a push key.": "Requiere un navegador con la API Push y un servidor de correo que publique una clave push.",
"Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.": "Su servidor de correo las entrega directamente a su navegador, así que llegan sin ninguna pestaña de ihasmail abierta, con el remitente y el asunto. Aun así, su navegador debe estar en marcha: si lo cierra por completo, las notificaciones esperan y llegan cuando vuelva a abrirlo.",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "Su servidor de correo puede despertar a este navegador, pero no incluirá el remitente ni el asunto. Aun así, su navegador debe estar en marcha.",
"This is what a new-mail notification looks like.": "Así es una notificación de correo nuevo.",
"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.": "Ha iniciado sesión como {user}. Su contraseña nunca se guarda en el navegador; el servidor la conserva cifrada por sesión para comunicarse con Stalwart.",
"App passwords are managed by your mail administrator.": "Las contraseñas de aplicación las gestiona su administrador de correo.",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "Cambiar la contraseña cierra sus demás sesiones de webmail. Las contraseñas de aplicación siguen funcionando.",
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "Esta cuenta tiene activada la autenticación en dos pasos. ihasmail todavía no puede iniciar su sesión con un código, así que iniciar sesión en otro dispositivo requiere una contraseña de aplicación; o puede desactivar aquí la autenticación en dos pasos.",
"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.": "Una contraseña aparte para una aplicación de correo o un dispositivo, que puede revocar por separado. Las contraseñas de aplicación se saltan los códigos de dos pasos, así que siguen funcionando en aplicaciones que no pueden pedir uno.",
"Copy it into {name} now — it isn't shown again.": "Cópiela ahora en {name}: no se volverá a mostrar.",
"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.": "No se han encontrado más usuarios en el directorio, así que no se puede añadir a nadie nuevo. Lo que ya está compartido aparece abajo y todavía se puede quitar.",
"Stalwart does not publish its version number to mail clients, so ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart no comunica su número de versión a los clientes de correo, así que ihasmail indica la edición cuando el servidor la proporciona. ihasmail requiere la versión 0.16 o posterior, y el inicio de sesión rechaza cualquier versión anterior.",
"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.": "{damage}, así que las reglas que contiene no se pueden mostrar ni editar: guardar lo que sí llegó sobrescribiría el resto. Recargue la página para intentarlo de nuevo. Sus reglas siguen en el servidor; aquí no se ha cambiado nada.",
"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).": "El editor visual de reglas solo gestiona los scripts que él mismo ha creado. Puede editar el script en la pestaña {tab}, o empezar de nuevo con reglas (el script existente se conservará pero quedará desactivado).",
"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.": "Su script de filtrado {damage}, así que solo ha llegado en parte. Añadir una regla escribiría esa parte sobre el conjunto. Recargue la página e inténtelo de nuevo.",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "Su script de filtrado no se ha podido leer ahora mismo, así que añadir una regla podría sobrescribirlo. Recargue la página e inténtelo de nuevo.",
"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.": "Su script Sieve activo se escribió a mano, así que no se pueden añadir reglas automáticamente. Abra {where} para editar el script o cambiar a reglas gestionadas.",
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Aquí solo aparecen los idiomas a los que se ha traducido ihasmail, así que la lista crece a medida que llegan las traducciones y no antes: un idioma ofrecido sin textos detrás haría que la página afirmara estar en un idioma que no es el suyo.",
"tell us about it": "cuéntenoslo",
"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}.": "Esta traducción la ha generado una IA y no la ha revisado ninguna persona de habla nativa, así que está marcada como Beta hasta que alguien la dé por buena. Todo lo que suene mal merece un aviso: {report}.",
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} es la paleta de {site}, y con la que empieza una cuenta nueva. Es un tema oscuro, así que cuenta como oscuro allí donde importa, y el color de acento de abajo se sigue aplicando encima.",
"ihasmail'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 — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "La versión de ihasmail es la fecha del commit a partir del cual se compiló, seguida de su procedencia: {example} se compiló a partir de un commit del 30 de agosto de 2026 que llegó mediante la pull request 129. Un commit que no llegó por esa vía lleva en su lugar su SHA corto: {sha}. La versión no dice nada sobre Stalwart a propósito; lo que esta compilación necesita del servidor está en la línea de arriba.",
},
plurals: {
"{n} messages": { one: "{n} mensaje", other: "{n} mensajes" },
"{n} selected": { one: "{n} seleccionado", other: "{n} seleccionados" },
"{n} conversations": { one: "{n} conversación", other: "{n} conversaciones" },
},
};
+862
View File
@@ -0,0 +1,862 @@
import type { Catalog } from "@/lib/i18n";
/**
* French — generated by AI, and not reviewed by a native speaker.
*
* Same standing as the German catalogue, and the same honesty about it: this
* was written against the terminology French mail clients already use rather
* than invented, but "written carefully" and "correct" are different claims
* and only the first is being made. The app says so, the picker marks it Beta,
* and the setting carries a link for reporting what reads wrongly. That is the
* review process until somebody who speaks French signs it off.
*
* A string missing from here renders its English source, so this file can be
* incomplete without the app breaking. Deleting a bad entry is a valid fix.
*
* ── Decisions this file is consistent about ──────────────────────────────
*
* Register: **vous**, throughout, which follows the "Sie" decision made for
* German and for the same reason — ihasmail is as often a company's mail as
* somebody's own, and "tu" from software a workplace deployed is presumptuous
* in a way "vous" never is. Where a string can avoid the question it does
* ("Supprimer ce message ?" rather than "Voulez-vous supprimer…"), which is
* ordinary good French UI.
*
* French spacing: a narrow no-break space before « ? », « ! » and « : » is the
* typographic rule, and it is deliberately NOT used here. It is invisible in a
* diff, easy to lose in an editor, and a plain space is what every French
* webmail actually ships. Guillemets « » are used for quoted names, because
* those are visible and do read as wrong when missing.
*
* Terminology, fixed once so it cannot drift:
*
* Inbox Boîte de réception Archive (verb) archiver
* Drafts Brouillons Delete supprimer
* Sent Envoyés Move to déplacer vers
* Deleted Items Corbeille Reply répondre
* Junk / Spam Spam Reply all répondre à tous
* Folder Dossier Forward transférer
* Label Libellé Star suivi
* Conversation Conversation Read / unread lu / non lu
* Message Message Settings Paramètres
* Attachment Pièce jointe Signature Signature
* Contact Contact Identity Identité
*
* "Libellé" rather than leaving "Label" in English, which is the opposite of
* the German choice and deliberately so: Gmail established "Libellé" in French
* and a reader will find it there, whereas no German client translates it.
* The rule is "use what the reader will meet elsewhere", not "always translate"
* or "never".
*
* Product names are never translated: ihasmail, Stalwart, JMAP, Sieve, vCard.
*/
export const catalog: Catalog = {
strings: {
// ── Actions ────────────────────────────────────────────────────────
"Archive": "Archiver",
"Archive (e)": "Archiver (e)",
"Delete": "Supprimer",
"Delete (#)": "Supprimer (#)",
"Reply": "Répondre",
"Reply (r)": "Répondre (r)",
"Reply all": "Répondre à tous",
"Forward": "Transférer",
"Move to…": "Déplacer vers…",
"Move to (v)": "Déplacer vers (v)",
"Move to folder": "Déplacer vers un dossier",
"Move here": "Déplacer ici",
"Mark as read": "Marquer comme lu",
"Mark as read (Shift+I)": "Marquer comme lu (Maj+I)",
"Mark as unread": "Marquer comme non lu",
"Mark as unread (Shift+U)": "Marquer comme non lu (Maj+U)",
"Mark all as read": "Tout marquer comme lu",
"Mark all as read, incl. subfolders": "Tout marquer comme lu, sous-dossiers compris",
"Star": "Suivi",
"Labels": "Libellés",
"Labels (l)": "Libellés (l)",
"Label as": "Appliquer un libellé",
"Label…": "Libellé…",
"Compose": "Nouveau message",
"Compose message": "Rédiger un message",
"Send": "Envoyer",
"Send at": "Envoyer le",
"Cancel send": "Annuler l'envoi",
"Schedule send": "Programmer l'envoi",
"Save": "Enregistrer",
"Save & activate": "Enregistrer et activer",
"Save & close (Esc)": "Enregistrer et fermer (Échap)",
"Save as template": "Enregistrer comme modèle",
"Save draft now": "Enregistrer le brouillon maintenant",
"Cancel": "Annuler",
"Close": "Fermer",
"Done": "Terminé",
"Continue": "Continuer",
"Edit": "Modifier",
"Edit…": "Modifier…",
"Rename": "Renommer",
"Remove": "Retirer",
"Restore": "Restaurer",
"Retry": "Réessayer",
"Reload": "Recharger",
"Refresh": "Actualiser",
"Copy": "Copier",
"Copy email address": "Copier l'adresse e-mail",
"Download": "Télécharger",
"Download all": "Tout télécharger",
"Download (.eml)": "Télécharger (.eml)",
"Download latest as .eml": "Télécharger le plus récent en .eml",
"Upload": "Envoyer un fichier",
"Upload files…": "Envoyer des fichiers…",
"Print": "Imprimer",
"Print conversation": "Imprimer la conversation",
"Undo (Ctrl+Z)": "Annuler (Ctrl+Z)",
"Redo": "Rétablir",
"Dismiss": "Fermer",
"Discard changes": "Abandonner les modifications",
"Discard draft": "Supprimer le brouillon",
"Duplicate": "Dupliquer",
"Validate": "Vérifier",
"Revoke": "Révoquer",
"Turn off": "Désactiver",
"Clear": "Vider",
"Clear selection": "Annuler la sélection",
"Clear custom colour": "Retirer la couleur personnalisée",
"Select": "Sélectionner",
"Select all": "Tout sélectionner",
"Unsubscribe": "Se désabonner",
"Share…": "Partager…",
"Stop sharing": "Arrêter le partage",
"Open": "Ouvrir",
"Open in new tab": "Ouvrir dans un nouvel onglet",
"Open in calendar": "Ouvrir dans l'agenda",
"Back": "Retour",
"Back (u)": "Retour (u)",
"Back to list": "Retour à la liste",
"Back to my files": "Retour à mes fichiers",
"Go back to the list": "Revenir à la liste",
"Next": "Suivant",
"Previous": "Précédent",
"More": "Plus",
"More actions": "Autres actions",
"More options": "Autres options",
"Move up": "Monter",
"Move down": "Descendre",
"Drag to reorder": "Faire glisser pour réordonner",
"Right-click for options": "Clic droit pour les options",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "E-mail",
"Message": "Message",
"Messages": "Messages",
"Message body": "Corps du message",
"Message headers": "En-têtes du message",
"Message size": "Taille du message",
"Message-ID": "Message-ID",
"Original message": "Message d'origine",
"Delete this message": "Supprimer ce message",
"New message to this address": "Nouveau message à cette adresse",
"Conversation view": "Vue par conversation",
"Draft": "Brouillon",
"Unread": "Non lus",
"Unread only": "Non lus uniquement",
"All mail": "Tous les messages",
"Sender": "Expéditeur",
"Sender domain": "Domaine de l'expéditeur",
"Recipients": "Destinataires",
"From": "De",
"To": "À",
"Cc": "Cc",
"Bcc": "Cci",
"Subject": "Objet",
"Subject (optional)": "Objet (facultatif)",
"Body": "Corps",
"Body text": "Texte courant",
"Attach files": "Joindre des fichiers",
"Attach from Files": "Joindre depuis Fichiers",
"Remove attachment": "Retirer la pièce jointe",
"Has attachment": "Contient une pièce jointe",
"Has the words": "Contient les mots",
"Header name": "Nom de l'en-tête",
"Show headers": "Afficher les en-têtes",
"Show original": "Afficher l'original",
"Show details": "Afficher les détails",
"Show images": "Afficher les images",
"Remote images": "Images distantes",
"Remote images are blocked to protect your privacy.": "Les images distantes sont bloquées pour protéger votre vie privée.",
"Always from {email}": "Toujours de {email}",
"This looks like a mailing list.": "Ceci ressemble à une liste de diffusion.",
"This folder is empty": "Ce dossier est vide",
"This folder is empty.": "Ce dossier est vide.",
"Delete all spam now": "Supprimer tout le spam maintenant",
"Deleting spam is permanent — it does not go to Deleted Items first.": "La suppression du spam est définitive — il ne passe pas par la corbeille.",
"Keep in Inbox": "Conserver dans la boîte de réception",
"Newer (k)": "Plus récent (k)",
"Older (j)": "Plus ancien (j)",
"Open the next (older) conversation": "Ouvrir la conversation suivante (plus ancienne)",
"Open the previous (newer) conversation": "Ouvrir la conversation précédente (plus récente)",
"Loading conversation…": "Chargement de la conversation…",
"Important": "Important",
"Unverified": "Non vérifié",
"Priority": "Priorité",
"High": "Haute",
"Normal": "Normale",
"Low": "Basse",
"to {recipients}": "à {recipients}",
"From: {sender}": "De : {sender}",
"Waiting on the server — goes out {when}.": "En attente sur le serveur — envoi {when}.",
"Scheduled — click to clear the schedule": "Programmé — cliquez pour annuler la programmation",
"Nothing scheduled": "Rien de programmé",
"The message waits on the server, so it goes out whether or not ihasmail is open.": "Le message attend sur le serveur : il part que ihasmail soit ouvert ou non.",
"This server holds a message for up to {span}.": "Ce serveur conserve un message jusqu'à {span}.",
"Date and time to send": "Date et heure d'envoi",
"Undo send window": "Délai d'annulation d'envoi",
"Read receipt requested": "Accusé de réception demandé",
"The sender asked for a read receipt.": "L'expéditeur a demandé un accusé de réception.",
"Request read receipt": "Demander un accusé de réception",
"Always request read receipts": "Toujours demander un accusé de réception",
"Receipt": "Accusé",
"Never send one": "Ne jamais en envoyer",
"Not this time": "Pas cette fois",
"It would go to {address}, which is not where the message came from.": "Il irait à {address}, qui n'est pas l'origine du message.",
"Use “Show original” for the complete raw message.": "Utilisez « Afficher l'original » pour le message brut complet.",
// ── Folders, calendar, contacts, files ─────────────────────────────
"Folder": "Dossier",
"Folders": "Dossiers",
"Folder options": "Options du dossier",
"New folder": "Nouveau dossier",
"New subfolder": "Nouveau sous-dossier",
"Delete folder": "Supprimer le dossier",
"No matching folders": "Aucun dossier correspondant",
"No subfolders here.": "Aucun sous-dossier ici.",
"Type a folder name…": "Saisissez un nom de dossier…",
" New folder…": " Nouveau dossier…",
"Create, rename and hide folders.": "Créer, renommer et masquer des dossiers.",
"Show unsubscribed (hidden) folders": "Afficher les dossiers non abonnés (masqués)",
"Storage: {used} of {total} used.": "Stockage : {used} utilisés sur {total}.",
"{used} of {total}": "{used} sur {total}",
"Calendar": "Agenda",
"My calendars": "Mes agendas",
"New calendar": "Nouvel agenda",
"Calendar options": "Options de l'agenda",
"Calendar & contacts": "Agenda et contacts",
"Calendar is not available": "L'agenda n'est pas disponible",
"Event": "Événement",
"New event": "Nouvel événement",
"(new event)": "(nouvel événement)",
"New all-day event": "Nouvel événement sur la journée",
"Add title": "Ajouter un titre",
"Add location": "Ajouter un lieu",
"Add to calendar": "Ajouter à l'agenda",
"Add to my calendar": "Ajouter à mon agenda",
"Remove from calendar": "Retirer de l'agenda",
"Remove from my calendar": "Retirer de mon agenda",
"All day": "Journée entière",
"all-day": "journée entière",
"Starts": "Début",
"Starts (optional)": "Début (facultatif)",
"Ends": "Fin",
"Ends (optional)": "Fin (facultatif)",
"Day": "Jour",
"Week": "Semaine",
"Month": "Mois",
"Agenda": "Planning",
"Today": "Aujourd'hui",
"Go to day": "Aller au jour",
"Go to week": "Aller à la semaine",
"Previous month": "Mois précédent",
"Next month": "Mois suivant",
"Does not repeat": "Ne se répète pas",
"Daily": "Tous les jours",
"Every weekday": "Chaque jour de semaine",
"Yearly": "Tous les ans",
"Custom…": "Personnalisé…",
"Weekly on {weekday}": "Toutes les semaines le {weekday}",
"Monthly on day {day}": "Tous les mois le {day}",
"Repeat every": "Répéter tous les",
"Repeat until": "Répéter jusqu'au",
"after N times": "après N fois",
"on date": "à une date",
"never": "jamais",
"day(s)": "jour(s)",
"week(s)": "semaine(s)",
"month(s)": "mois",
"year(s)": "an(s)",
"Reminders": "Rappels",
"Add reminder": "Ajouter un rappel",
"Remove reminder": "Retirer le rappel",
"Default reminder": "Rappel par défaut",
"At time of event": "À l'heure de l'événement",
"5 minutes before": "5 minutes avant",
"10 minutes before": "10 minutes avant",
"15 minutes before": "15 minutes avant",
"30 minutes before": "30 minutes avant",
"1 hour before": "1 heure avant",
"1 day before": "1 jour avant",
"15 minutes": "15 minutes",
"30 minutes": "30 minutes",
"45 minutes": "45 minutes",
"1 hour": "1 heure",
"1.5 hours": "1 h 30",
"2 hours": "2 heures",
"Default event length": "Durée par défaut d'un événement",
"Default view": "Vue par défaut",
"Guests": "Participants",
"Add guests by name or email": "Ajouter des participants par nom ou e-mail",
"Send invitation emails to guests": "Envoyer les invitations par e-mail aux participants",
"Going?": "Vous participez ?",
"Yes": "Oui",
"No": "Non",
"Maybe": "Peut-être",
"Confirmed": "Confirmé",
"Tentative": "Provisoire",
"Cancelled": "Annulé",
"organizer": "organisateur",
"Organizer: {name}": "Organisateur : {name}",
"Free": "Disponible",
"Busy": "Occupé",
"Free/busy": "Disponibilité",
"Show as": "Afficher comme",
"Availability on {date}": "Disponibilité le {date}",
"Count all events as busy": "Compter tous les événements comme occupé",
"Only events I'm attending": "Uniquement les événements auxquels je participe",
"Don't include in availability": "Ne pas inclure dans la disponibilité",
"Meeting link": "Lien de réunion",
"No events in the next 60 days.": "Aucun événement dans les 60 prochains jours.",
"Working hours": "Heures de travail",
"Working hours start": "Début des heures de travail",
"Working hours end": "Fin des heures de travail",
"Colour categories": "Catégories de couleur",
"Category": "Catégorie",
"No category": "Aucune catégorie",
"New category": "Nouvelle catégorie",
"Delete category": "Supprimer la catégorie",
"Manage categories…": "Gérer les catégories…",
"Use category color": "Utiliser la couleur de la catégorie",
"Use calendar color": "Utiliser la couleur de l'agenda",
"Use the default colour": "Utiliser la couleur par défaut",
"+{n} more": "+{n} autres",
"Contacts": "Contacts",
"Contacts are not available": "Les contacts ne sont pas disponibles",
"New contact": "Nouveau contact",
"Edit contact": "Modifier le contact",
"Select a contact": "Sélectionner un contact",
"All contacts": "Tous les contacts",
"Search contacts": "Rechercher des contacts",
"Search contacts to add…": "Rechercher des contacts à ajouter…",
"Loading contacts…": "Chargement des contacts…",
"Add to contacts": "Ajouter aux contacts",
"Add to my contacts": "Ajouter à mes contacts",
"Remove from my contacts": "Retirer de mes contacts",
"Address book": "Carnet d'adresses",
"Address books": "Carnets d'adresses",
"All address books": "Tous les carnets d'adresses",
"My address books": "Mes carnets d'adresses",
"New address book": "Nouveau carnet d'adresses",
"No address books yet.": "Aucun carnet d'adresses pour le moment.",
"Choose from address books": "Choisir dans les carnets d'adresses",
"Import vCard": "Importer une vCard",
"Export all": "Tout exporter",
"Export book": "Exporter le carnet",
"Email group": "Écrire au groupe",
"Email everyone": "Écrire à tous",
"Members": "Membres",
"Members ({count})": "Membres ({count})",
"Group": "Groupe",
"· group": "· groupe",
"Person": "Personne",
"First name": "Prénom",
"Last name": "Nom",
"Middle name": "Deuxième prénom",
"More name fields": "Autres champs de nom",
"Nickname": "Surnom",
"Prefix": "Civilité",
"Suffix": "Suffixe",
"Dr.": "Dr",
"Jr.": "Jr",
"Display name": "Nom affiché",
"Job title": "Fonction",
"Organization": "Organisation",
"Company": "Société",
"Birthday": "Anniversaire",
"Notes": "Notes",
"Website": "Site web",
"Phone": "Téléphone",
"Add phone": "Ajouter un téléphone",
"Add email": "Ajouter un e-mail",
"Add address": "Ajouter une adresse",
"Address": "Adresse",
"Street": "Rue",
"City": "Ville",
"State / Region": "État / Région",
"Postal code": "Code postal",
"Country": "Pays",
"Change photo": "Changer la photo",
"Remove photo": "Retirer la photo",
"Updated {date}": "Mis à jour le {date}",
"Modified": "Modifié",
"Search names and addresses": "Rechercher noms et adresses",
"Add a person or group…": "Ajouter une personne ou un groupe…",
"Choose recipients": "Choisir les destinataires",
"Available to add": "Disponibles à ajouter",
"vCard": "vCard",
"vCard attachment": "Pièce jointe vCard",
"Files": "Fichiers",
"My files": "Mes fichiers",
"File storage is not available": "Le stockage de fichiers n'est pas disponible",
"Drag files here or use Upload.": "Déposez des fichiers ici ou utilisez « Envoyer un fichier ».",
"Shared": "Partagé",
"Shared with me": "Partagés avec moi",
"Nothing is shared with you.": "Rien n'est partagé avec vous.",
"Not shared with anyone yet.": "Pas encore partagé.",
"Check for new shares": "Rechercher de nouveaux partages",
"Shared files are copied to your account when attached.": "Les fichiers partagés sont copiés dans votre compte lorsqu'ils sont joints.",
"Viewer": "Lecture",
"Editor": "Modification",
"Size": "Taille",
"Add files": "Ajouter des fichiers",
"Minimize": "Réduire",
// ── Settings ───────────────────────────────────────────────────────
"Settings": "Paramètres",
"All settings": "Tous les paramètres",
"Sections": "Sections",
"General": "Général",
"Appearance": "Apparence",
"Make ihasmail yours.": "Faites de ihasmail le vôtre.",
"Reading": "Lecture",
"Reading pane": "Volet de lecture",
"Reading, sending and list behaviour. Settings are stored in this browser.": "Comportement de lecture, d'envoi et de liste. Les paramètres sont enregistrés dans ce navigateur.",
"Right of the list": "À droite de la liste",
"Below the list": "Sous la liste",
"Hidden (open full width)": "Masqué (ouvrir en pleine largeur)",
"Off (open messages full width)": "Désactivé (messages en pleine largeur)",
"Off": "Désactivé",
"Composing": "Rédaction",
"Default format": "Format par défaut",
"Rich text (HTML)": "Texte enrichi (HTML)",
"Plain text": "Texte brut",
"Quote original message in replies": "Citer le message d'origine dans les réponses",
"Place signature above quoted text": "Placer la signature au-dessus du texte cité",
"Attachment reminder": "Rappel de pièce jointe",
"Warn when the message mentions an attachment but none is attached.": "Avertir lorsque le message mentionne une pièce jointe alors qu'aucune n'est jointe.",
"Spell check while typing": "Vérification orthographique pendant la saisie",
"Confirm before deleting": "Confirmer avant de supprimer",
"Show message snippets": "Afficher un aperçu des messages",
"Preview the first line of each message in the list.": "Afficher la première ligne de chaque message dans la liste.",
"Show sender avatars": "Afficher les avatars des expéditeurs",
"Group messages from the same thread together.": "Regrouper les messages d'un même fil.",
"After archiving or deleting": "Après archivage ou suppression",
"Ask before showing (recommended)": "Demander avant d'afficher (recommandé)",
"Always (all messages)": "Toujours (tous les messages)",
"Show automatically from my contacts": "Afficher automatiquement pour mes contacts",
"Immediately when opened": "Dès l'ouverture",
"After 2 seconds": "Après 2 secondes",
"After 5 seconds": "Après 5 secondes",
"Never automatically": "Jamais automatiquement",
"When someone requests a read receipt": "Lorsqu'un accusé de réception est demandé",
"Ask me on each message": "Me demander pour chaque message",
"5 seconds": "5 secondes",
"8 seconds": "8 secondes",
"15 seconds": "15 secondes",
"30 seconds": "30 secondes",
"Locale": "Régional",
"Language": "Langue",
"Interface language": "Langue de l'interface",
"Language & region": "Langue et région",
"Date format": "Format de date",
"Time format": "Format d'heure",
"Time zone": "Fuseau horaire",
"Week starts on": "La semaine commence le",
"Monday": "Lundi",
"Tuesday": "Mardi",
"Wednesday": "Mercredi",
"Thursday": "Jeudi",
"Friday": "Vendredi",
"Saturday": "Samedi",
"Sunday": "Dimanche",
"12-hour clock (6:23 PM)": "Format 12 heures (6:23 PM)",
"24-hour clock (18:23)": "Format 24 heures (18:23)",
"Browser default ({zone})": "Valeur du navigateur ({zone})",
"Default ({zone})": "Par défaut ({zone})",
"Automatic ({example})": "Automatique ({example})",
"Automatic ({locale})": "Automatique ({locale})",
"Automatic": "Automatique",
"Preview: {example}": "Aperçu : {example}",
"Dates, times and month names follow this choice.": "Les dates, heures et noms de mois suivent ce choix.",
"Your mail server reports {name} ({tag}).": "Votre serveur de messagerie indique {name} ({tag}).",
"Your mail server does not report a locale, so the browser's is used.": "Votre serveur de messagerie n'indique aucune langue ; celle du navigateur est utilisée.",
"Dates": "Dates",
"Date": "Date",
"Time": "Heure",
"When": "Quand",
"Then": "Alors",
"then": "alors",
"Theme": "Thème",
"Accent color": "Couleur d'accentuation",
"Color": "Couleur",
"Colour": "Couleur",
"Text color": "Couleur du texte",
"Density & text": "Densité et texte",
"Display density": "Densité d'affichage",
"Comfortable": "Confortable",
"Cozy (default)": "Équilibrée (par défaut)",
"Compact": "Compacte",
"Text size": "Taille du texte",
"Font size": "Taille de police",
"Small": "Petite",
"Medium": "Moyenne",
"Large": "Grande",
"Huge": "Très grande",
"Sidebar": "Barre latérale",
"Show labels in the sidebar": "Afficher les libellés dans la barre latérale",
"Collapse sidebar to icons": "Réduire la barre latérale en icônes",
"Apply the theme to messages too": "Appliquer le thème aux messages",
"Swiping": "Balayage",
"Swipe left": "Balayer vers la gauche",
"Swipe right": "Balayer vers la droite",
"Backup": "Sauvegarde",
"Export settings": "Exporter les paramètres",
"Import settings": "Importer des paramètres",
"Settings imported": "Paramètres importés",
"Invalid settings file": "Fichier de paramètres invalide",
"Reset to defaults": "Rétablir les valeurs par défaut",
"Default mail app": "Application de messagerie par défaut",
"Documentation": "Documentation",
"About ihasmail": "À propos de ihasmail",
"About": "À propos",
"Server": "Serveur",
"Server capabilities": "Fonctionnalités du serveur",
"Accounts": "Comptes",
"Account": "Compte",
"Max upload": "Envoi maximal",
"{size} MB": "{size} Mo",
"KB": "Ko",
"Image privacy proxy": "Proxy de confidentialité des images",
"enabled": "activé",
"disabled": "désactivé",
"Enabled": "Activé",
"active": "actif",
"hidden": "masqué",
"connected": "connecté",
"reconnecting…": "reconnexion…",
"AGPL-3.0 source": "Code source AGPL-3.0",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "Identités et signatures",
"Add identity": "Ajouter une identité",
"Delete identity": "Supprimer l'identité",
"Make default": "Définir par défaut",
"Default": "Par défaut",
"Show when composing": "Afficher lors de la rédaction",
"Hide when composing": "Masquer lors de la rédaction",
"Signature": "Signature",
"Your signature…": "Votre signature…",
"Reply-To": "Répondre à",
"Reply-To (optional)": "Répondre à (facultatif)",
"Reply-To: {addresses}": "Répondre à : {addresses}",
"Replies go to…": "Les réponses vont à…",
"Set a Reply-To address": "Définir une adresse de réponse",
"{email} is now your default identity": "{email} est désormais votre identité par défaut",
"Templates": "Modèles",
"New template": "Nouveau modèle",
"Delete template": "Supprimer le modèle",
"Insert template": "Insérer un modèle",
"Template text…": "Texte du modèle…",
"Subject: {subject}": "Objet : {subject}",
"Filters & rules": "Filtres et règles",
"Filters unavailable": "Filtres indisponibles",
"Rules": "Règles",
"Rule name": "Nom de la règle",
"New rule": "Nouvelle règle",
"Delete rule": "Supprimer la règle",
"No filters yet": "Aucun filtre pour le moment",
"Add condition": "Ajouter une condition",
"Remove condition": "Retirer la condition",
"Add action": "Ajouter une action",
"Remove action": "Retirer l'action",
"all of the following match": "toutes les conditions suivantes",
"any of the following match": "l'une des conditions suivantes",
"contains": "contient",
"does not contain": "ne contient pas",
"is": "est",
"is not": "n'est pas",
"matches (wildcards * ?)": "correspond à (jokers * ?)",
"does not match": "ne correspond pas à",
"matches regex": "correspond à l'expression régulière",
"does not match regex": "ne correspond pas à l'expression régulière",
"exists": "existe",
"does not exist": "n'existe pas",
"is larger than": "est plus grand que",
"is smaller than": "est plus petit que",
"Stop processing more rules": "Arrêter le traitement des règles suivantes",
"keep copy": "conserver une copie",
"Forward to": "Transférer à",
"Reject with message": "Rejeter avec un message",
"Scripts": "Scripts",
"Scripts (advanced)": "Scripts (avancé)",
"Script name": "Nom du script",
"New script": "Nouveau script",
"Delete script": "Supprimer le script",
"Sieve source": "Source Sieve",
"Preview generated Sieve script": "Aperçu du script Sieve généré",
"Start with rules": "Commencer avec des règles",
"Switch to rules?": "Passer aux règles ?",
"Create filter": "Créer un filtre",
"Filter messages like this": "Filtrer les messages de ce type",
"Filter messages like this…": "Filtrer les messages de ce type…",
"Also apply to existing messages in": "Appliquer aussi aux messages existants dans",
"keyword (e.g. $important, work)": "mot-clé (par ex. $important, travail)",
"Other header…": "Autre en-tête…",
"Out of office": "Absence du bureau",
"Auto-reply enabled": "Réponse automatique activée",
// ── Security, sessions, notifications ──────────────────────────────
"Security & sessions": "Sécurité et sessions",
"Password": "Mot de passe",
"Your password": "Votre mot de passe",
"Current password": "Mot de passe actuel",
"New password": "Nouveau mot de passe",
"Confirm new password": "Confirmer le nouveau mot de passe",
"Current code": "Code actuel",
"Code from your authenticator": "Code de votre application d'authentification",
"Two-factor authentication": "Authentification à deux facteurs",
"Turn off two-factor authentication": "Désactiver l'authentification à deux facteurs",
"Your password alone will be enough to sign in again.": "Votre mot de passe seul suffira pour vous reconnecter.",
"App passwords": "Mots de passe d'application",
"New app password for": "Nouveau mot de passe d'application pour",
"Your new app password": "Votre nouveau mot de passe d'application",
"Secret": "Secret",
"Thunderbird on my laptop": "Thunderbird sur mon portable",
"Active webmail sessions": "Sessions webmail actives",
"Sign out": "Se déconnecter",
"Sign out here": "Se déconnecter ici",
"Sign out all other sessions": "Déconnecter toutes les autres sessions",
"Signed in as": "Connecté en tant que",
"This is my own device": "Cet appareil est le mien",
"this device": "cet appareil",
"Device": "Appareil",
"IP": "IP",
"Last active": "Dernière activité",
"Created": "Créé",
"Expires": "Expire",
"Status": "État",
"Online": "En ligne",
"Reason": "Motif",
"Type": "Type",
"Email or username": "E-mail ou nom d'utilisateur",
"Use your usual address as the username.": "Utilisez votre adresse habituelle comme nom d'utilisateur.",
"Fast, friendly webmail. Your mailbox, your way.": "Un webmail rapide et agréable. Votre boîte, à votre façon.",
"Notifications": "Notifications",
"Notifications are blocked in your browser settings.": "Les notifications sont bloquées dans les paramètres de votre navigateur.",
"Not supported in this browser.": "Non pris en charge par ce navigateur.",
"Desktop notifications while ihasmail is open": "Notifications système lorsque ihasmail est ouvert",
"Notify me even when ihasmail is closed": "Me notifier même lorsque ihasmail est fermé",
"Play a sound for new mail": "Émettre un son à l'arrivée d'un message",
"Test notification": "Tester la notification",
"Background notifications are on": "Les notifications en arrière-plan sont activées",
"The tab title and favicon always show your unread Inbox count.": "Le titre de l'onglet et le favicon indiquent toujours le nombre de messages non lus.",
"Live updates are delivered via JMAP push ({state}).": "Les mises à jour en direct passent par JMAP push ({state}).",
"Shows a system notification when new mail arrives in your Inbox while the tab is in the background.": "Affiche une notification système à l'arrivée d'un message dans votre boîte de réception lorsque l'onglet est en arrière-plan.",
// ── Editor, search, shortcuts, misc ────────────────────────────────
"Formatting": "Mise en forme",
"Formatting options": "Options de mise en forme",
"Remove formatting": "Supprimer la mise en forme",
"Bold (Ctrl+B)": "Gras (Ctrl+B)",
"Italic (Ctrl+I)": "Italique (Ctrl+I)",
"Underline (Ctrl+U)": "Souligné (Ctrl+U)",
"Strikethrough": "Barré",
"Highlight": "Surligner",
"Bulleted list": "Liste à puces",
"Numbered list": "Liste numérotée",
"Increase indent": "Augmenter le retrait",
"Decrease indent": "Diminuer le retrait",
"Align left": "Aligner à gauche",
"Align right": "Aligner à droite",
"Center": "Centrer",
"Quote": "Citation",
"Code block": "Bloc de code",
"Normal text": "Texte normal",
"Insert link (Ctrl+K)": "Insérer un lien (Ctrl+K)",
"Insert image": "Insérer une image",
"Link": "Lien",
"List": "Liste",
"Emoji": "Émoji",
"Write your message…": "Écrivez votre message…",
"Search": "Rechercher",
"Search mail": "Rechercher dans les messages",
"Advanced search": "Recherche avancée",
"Keyboard shortcuts": "Raccourcis clavier",
"Keyboard shortcuts (?)": "Raccourcis clavier (?)",
"Shortcuts": "Raccourcis",
"Go to": "Aller à",
"Menu": "Menu",
"Options": "Options",
"Send options": "Options d'envoi",
"Name": "Nom",
"Email": "E-mail",
"Email address": "Adresse e-mail",
"Description": "Description",
"Location": "Lieu",
"Visibility": "Visibilité",
"Private": "Privé",
"Work": "Professionnel",
"Loading…": "Chargement…",
"None": "Aucun",
"optional": "facultatif",
"Always show": "Toujours afficher",
"to": "à",
"Received": "Reçu",
"In-Reply-To": "In-Reply-To",
"References": "References",
"Add label / keyword": "Ajouter un libellé / mot-clé",
"Manage labels": "Gérer les libellés",
"Create “{name}”": "Créer « {name} »",
"Type a name to create your first label.": "Saisissez un nom pour créer votre premier libellé.",
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Les libellés sont des mots-clés IMAP enregistrés dans vos messages : ils se synchronisent donc avec les autres clients. Les noms et couleurs restent dans ce navigateur.",
"New label": "Nouveau libellé",
"Delete label": "Supprimer le libellé",
"PDF": "PDF",
"Large attachments may be rejected by some servers": "Les pièces jointes volumineuses peuvent être refusées par certains serveurs",
"Images are stored in your Files (folder “ihasmail”) and embedded when you send.": "Les images sont enregistrées dans vos Fichiers (dossier « ihasmail ») et intégrées à l'envoi.",
"Thanks for your message. I'm away until … and will reply when I'm back.": "Merci pour votre message. Je suis absent jusqu'au … et vous répondrai à mon retour.",
"Automatically reply to people who email you while you're away. Each sender gets at most one reply.": "Répondre automatiquement aux personnes qui vous écrivent pendant votre absence. Chaque expéditeur reçoit au plus une réponse.",
"Sort incoming mail automatically. Rules run on the server (Sieve), so they work for every client you use.": "Trier automatiquement le courrier entrant. Les règles s'exécutent sur le serveur (Sieve) et valent donc pour tous vos clients.",
"Canned responses you can insert into any message from the composer's template button.": "Des réponses toutes prêtes, insérables dans n'importe quel message depuis le bouton Modèles de l'éditeur.",
"Create a rule to move newsletters to a folder, flag important senders, or forward mail.": "Créez une règle pour classer les newsletters dans un dossier, signaler les expéditeurs importants ou transférer du courrier.",
"Advanced: manage raw Sieve scripts. Only one script can be active at a time.": "Avancé : gérer directement les scripts Sieve. Un seul script peut être actif à la fois.",
"Only part of your filter script arrived.": "Votre script de filtrage n'est arrivé que partiellement.",
"Your active script “{name}” was written by hand.": "Votre script actif « {name} » a été écrit à la main.",
"Another script (“{name}”) is active. Saving rules here will activate the “ihasmail” script instead.": "Un autre script (« {name} ») est actif. Enregistrer des règles ici activera le script « ihasmail » à la place.",
"“{name}” will be deactivated (not deleted) and a new “ihasmail” script will take over.": "« {name} » sera désactivé (non supprimé) et un nouveau script « ihasmail » prendra le relais.",
"Sieve filtering is not available for this account.": "Le filtrage Sieve n'est pas disponible pour ce compte.",
"Sieve filtering is not enabled for this account.": "Le filtrage Sieve n'est pas activé pour ce compte.",
"Vacation responses are not available for this account.": "Les réponses d'absence ne sont pas disponibles pour ce compte.",
"This account does not have the JMAP calendars capability.": "Ce compte ne dispose pas de la fonctionnalité JMAP Agendas.",
"This account does not have the JMAP contacts capability.": "Ce compte ne dispose pas de la fonctionnalité JMAP Contacts.",
"This account does not have the JMAP file storage capability.": "Ce compte ne dispose pas de la fonctionnalité JMAP Fichiers.",
// ── Labels held in constants, translated where they render ─────────
"Add": "Ajouter",
"Create subfolders": "Créer des sous-dossiers",
"Dark": "Sombre",
"Light": "Clair",
"Match system": "Suivre le système",
"Day.Month.Year": "Jour.Mois.Année",
"Day/Month/Year": "Jour/Mois/Année",
"Month/Day/Year": "Mois/Jour/Année",
"Year-Month-Day (ISO 8601)": "Année-Mois-Jour (ISO 8601)",
"Edit all": "Tout modifier",
"Edit contents": "Modifier le contenu",
"Edit own": "Modifier les siens",
"Flag": "Marquer",
"Mark read": "Marquer comme lu",
"Private props": "Propriétés privées",
"Read": "Lire",
"Read events": "Lire les événements",
"RSVP": "Répondre",
"See free/busy": "Voir la disponibilité",
"Share": "Partager",
"Write": "Écrire",
"Live updates connected": "Mises à jour en direct connectées",
"Live updates reconnecting…": "Reconnexion des mises à jour en direct…",
"Live updates off — checking periodically instead": "Mises à jour en direct désactivées — vérification périodique à la place",
"Mark as read / unread": "Marquer comme lu / non lu",
"Star / unstar": "Suivre / ne plus suivre",
"Report spam / not spam": "Signaler comme spam / non-spam",
"Report spam": "Signaler comme spam",
"Not spam": "Non-spam",
"Nothing": "Rien",
"Later today": "Plus tard aujourd'hui",
"Tomorrow morning": "Demain matin",
"Tomorrow afternoon": "Demain après-midi",
"Monday morning": "Lundi matin",
"Deleted Items": "Corbeille",
"Open draft": "Ouvrir le brouillon",
"Undo": "Annuler",
"Choose a date": "Choisir une date",
"Choose a date and time": "Choisir une date et une heure",
"Pick date and time…": "Choisir date et heure…",
"After": "Après",
"Before": "Avant",
// ── Folder names shown for a JMAP role (see lib/mailboxName.ts) ────
"folder\u0004Inbox": "Boîte de réception",
"folder\u0004Archive": "Archives",
"folder\u0004Drafts": "Brouillons",
"folder\u0004Sent": "Envoyés",
"folder\u0004Deleted Items": "Corbeille",
"folder\u0004Junk Mail": "Spam",
"folder\u0004Important": "Important",
"folder\u0004All mail": "Tous les messages",
"folder": "dossier",
"“{name}” moved into “{parent}”": "« {name} » a été déplacé dans « {parent} »",
"“{name}” moved to the top level": "« {name} » a été déplacé au niveau supérieur",
"Could not move “{name}”: {reason}": "Impossible de déplacer « {name} » : {reason}",
"Delete “{name}”?": "Supprimer « {name} » ?",
"Rename folder": "Renommer le dossier",
"Search: {query}": "Recherche : {query}",
"No conversation selected": "Aucune conversation sélectionnée",
"Drop here for the top level": "Déposer ici pour le niveau supérieur",
// ── Longer prose ───────────────────────────────────────────────────
"Search mail (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)": "Rechercher dans les messages (from:, to:, subject:, has:attachment, is:unread, in:, before:, after:)",
"Settings → Filters & rules": "Paramètres → Filtres et règles",
"Open the Mail view to see all shortcuts.": "Ouvrez la vue E-mail pour voir tous les raccourcis.",
"Gmail-style shortcuts are always on. Press {key} anywhere to see this list.": "Les raccourcis façon Gmail sont toujours actifs. Appuyez sur {key} n'importe où pour afficher cette liste.",
"Select a conversation to read it here · Press {key} for shortcuts": "Sélectionnez une conversation pour la lire ici · {key} pour les raccourcis",
"Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Astuce : appuyez sur {key} sur une conversation pour appliquer des libellés. Recherchez avec {operator}.",
"A fast, friendly, open-source webmail for {server}, built on JMAP.": "Un webmail libre, rapide et agréable pour {server}, bâti sur JMAP.",
"Defaults for the calendar views and new events.": "Valeurs par défaut des vues d'agenda et des nouveaux événements.",
"Replies will go to this address instead of the From address": "Les réponses iront à cette adresse plutôt qu'à l'adresse d'expédition",
"Replies to mail sent from this identity go here instead of the From address.": "Les réponses aux messages envoyés depuis cette identité arrivent ici plutôt qu'à l'adresse d'expédition.",
"New identities must use an address this account is allowed to send from (aliases configured on the server).": "Une nouvelle identité doit utiliser une adresse depuis laquelle ce compte est autorisé à envoyer (alias configurés sur le serveur).",
"Not offered when composing. It still receives mail, and you can still send from it by showing it again.": "Non proposée lors de la rédaction. L'adresse reçoit toujours du courrier, et vous pouvez de nouveau envoyer depuis elle en la réaffichant.",
"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.": "Chaque identité est une adresse d'expédition avec son propre nom, sa propre adresse de réponse et sa propre signature. L'identité par défaut est présélectionnée à la rédaction ; définissez une adresse de réponse lorsque les réponses doivent arriver ailleurs qu'à l'adresse d'expédition.",
"This signature is larger than the server's {limit}-byte limit. ihasmail will keep the full version in your Files and store a short text fallback on the server — other mail clients will see the plain-text version.": "Cette signature dépasse la limite de {limit} octets du serveur. ihasmail conservera la version complète dans vos Fichiers et enregistrera une version texte courte sur le serveur — les autres clients verront la version en texte brut.",
"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.": "Des catégories façon Outlook, attribuables aux événements depuis le menu contextuel ou l'éditeur d'événement. Le nom de la catégorie est enregistré dans l'événement et se synchronise donc avec les autres clients.",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colours 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.": "Les messages en texte brut suivent déjà le thème. Avec cette option, les messages HTML sans couleurs propres le suivent aussi, au lieu de s'afficher sur un fond blanc. Les messages qui définissent leur propre style restent exactement tels que l'expéditeur les a conçus.",
"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.": "Ceci est indépendant de {setting} dans Général, qui détermine l'écriture des dates, heures et nombres. Vous pouvez lire une interface anglaise avec des dates françaises, ou l'inverse.",
"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.": "Sur un écran tactile, faites glisser un message sur le côté pour agir dessus. Chaque direction peut faire une chose, ou rien. Ces réglages suivent votre compte : téléphone et tablette sont donc d'accord. À la souris, ils sont ignorés et le glisser-déposer vers les dossiers continue de fonctionner.",
"This screen has no touchscreen, so nothing here changes what it does. Your phone or tablet will pick these up.": "Cet écran n'est pas tactile : rien ici ne change son comportement. Votre téléphone ou votre tablette reprendra ces réglages.",
"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.": "Un appui long sur un message le sélectionne, un appui long sur un dossier ouvre son menu. Tirez le haut de la liste vers le bas pour relever le courrier.",
"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.": "Un accusé indique au demandeur que cette adresse est active et à quel moment le message a été lu, et l'expéditeur choisit où il est envoyé — il n'y a donc pas d'option automatique. Le courrier de masse, les listes de diffusion et tout ce qui est marqué comme envoyé automatiquement n'en obtiennent jamais.",
"This browser cannot register apps for {scheme} links. Safari, in particular, has no such API — you can still make ihasmail the default from your operating system if you install it as an app.": "Ce navigateur ne peut pas enregistrer d'applications pour les liens {scheme}. Safari, en particulier, n'a pas d'interface pour cela — vous pouvez tout de même définir ihasmail par défaut depuis votre système d'exploitation en l'installant comme application.",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "L'enregistrement pour les liens {scheme} nécessite une connexion sécurisée (HTTPS).",
"Open {scheme} links — in web pages, documents and other apps — in ihasmail 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 Privacy and security Site settings Protocol handlers; Firefox: Settings General Applications).": "Ouvrir les liens {scheme} — dans les pages web, les documents et les autres applications — avec ihasmail plutôt qu'avec un client de messagerie local. Votre navigateur vous demandera de confirmer, et vous pourrez le modifier plus tard dans ses propres paramètres (Chrome : Paramètres Confidentialité et sécurité Paramètres des sites Gestionnaires de protocole ; Firefox : Paramètres Général Applications).",
"Requested in this browser. Whether it took effect is up to the browser — check its settings if mail links still open elsewhere.": "Demandé dans ce navigateur. C'est à lui de décider si cela a pris effet — vérifiez ses paramètres si les liens de messagerie s'ouvrent toujours ailleurs.",
"For a system-wide default, install ihasmail as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer ihasmail directly wherever it asks which mail app to use.": "Pour un réglage valable dans tout le système, installez d'abord ihasmail comme application (dans Chrome : l'icône d'installation dans la barre d'adresse). Votre système pourra alors proposer ihasmail directement partout où il demande quelle application de messagerie utiliser.",
"Needs a browser with the Push API and a mail server that publishes a push key.": "Nécessite un navigateur doté de l'API Push et un serveur de messagerie publiant une clé push.",
"Your mail server delivers these straight to your browser, so they arrive with no ihasmail tab open, naming the sender and subject. Your browser still has to be running — if you quit it completely, notifications wait and arrive when you open it again.": "Votre serveur les remet directement à votre navigateur : elles arrivent donc sans onglet ihasmail ouvert, avec l'expéditeur et l'objet. Votre navigateur doit tout de même être en cours d'exécution — si vous le quittez complètement, les notifications attendent et arrivent à sa réouverture.",
"Your mail server can wake this browser, but will not include the sender or subject. Your browser still has to be running.": "Votre serveur peut réveiller ce navigateur, mais sans indiquer l'expéditeur ni l'objet. Votre navigateur doit tout de même être en cours d'exécution.",
"This is what a new-mail notification looks like.": "Voici à quoi ressemble une notification de nouveau message.",
"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.": "Vous êtes connecté en tant que {user}. Votre mot de passe n'est jamais enregistré dans le navigateur ; le serveur le conserve chiffré, par session, pour dialoguer avec Stalwart.",
"App passwords are managed by your mail administrator.": "Les mots de passe d'application sont gérés par votre administrateur de messagerie.",
"Changing your password signs out your other webmail sessions. Any app passwords keep working.": "Changer votre mot de passe déconnecte vos autres sessions webmail. Les mots de passe d'application continuent de fonctionner.",
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "L'authentification à deux facteurs est activée sur ce compte. ihasmail ne sait pas encore vous connecter avec un code : la connexion sur un autre appareil nécessite donc un mot de passe d'application — ou vous pouvez désactiver l'authentification à deux facteurs ici.",
"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.": "Un mot de passe distinct pour une application ou un appareil, révocable indépendamment. Les mots de passe d'application contournent les codes à deux facteurs et fonctionnent donc dans les applications qui ne peuvent pas en demander.",
"Copy it into {name} now — it isn't shown again.": "Copiez-le dans {name} maintenant — il ne sera plus affiché.",
"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.": "Aucun autre utilisateur trouvé dans l'annuaire : personne de nouveau ne peut être ajouté. Les partages déjà en place sont listés ci-dessous et restent supprimables.",
"Stalwart does not publish its version number to mail clients, so ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart ne communique pas son numéro de version aux clients de messagerie ; ihasmail indique donc l'édition lorsque le serveur en fournit une. ihasmail requiert la version 0.16 ou ultérieure, et la connexion refuse toute version antérieure.",
"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.": "Il {damage} : les règles qu'il contient ne peuvent donc être ni affichées ni modifiées — enregistrer ce qui est arrivé écraserait le reste. Rechargez la page pour réessayer. Vos règles sont toujours sur le serveur ; rien ici ne les a modifiées.",
"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).": "L'éditeur visuel de règles ne gère que les scripts qu'il a créés. Vous pouvez modifier le script dans l'onglet {tab}, ou repartir de zéro avec des règles (le script existant sera conservé mais désactivé).",
"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.": "Votre script de filtrage {damage} : il n'est arrivé que partiellement. Ajouter une règle écraserait l'ensemble par cette partie. Rechargez la page et réessayez.",
"Your filter script couldn't be read just now, so adding a rule would risk overwriting it. Reload the page and try again.": "Votre script de filtrage n'a pas pu être lu à l'instant ; ajouter une règle risquerait de l'écraser. Rechargez la page et réessayez.",
"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.": "Votre script Sieve actif a été écrit à la main : les règles ne peuvent donc pas être ajoutées automatiquement. Ouvrez {where} pour modifier le script ou passer aux règles gérées.",
"Only languages ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — a language offered without strings behind it would leave the page claiming to be in a language it is not.": "Seules les langues dans lesquelles ihasmail a été traduit apparaissent ici : la liste s'allonge donc à mesure que les traductions arrivent, et non avant — une langue proposée sans textes derrière elle ferait prétendre à la page qu'elle est dans une langue qui n'est pas la sienne.",
"tell us about it": "signalez-le-nous",
"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}.": "Cette traduction a été générée par une IA et n'a pas été relue par une personne de langue maternelle française ; elle est donc marquée Beta jusqu'à validation. Tout ce qui sonne faux mérite d'être signalé — {report}.",
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} est la palette de {site}, et celle d'un nouveau compte. C'est un thème sombre : il compte donc comme sombre partout où cela importe, et la couleur d'accentuation ci-dessous s'y applique toujours.",
"ihasmail'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 — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "La version de ihasmail est la date du commit à partir duquel elle a été construite, suivie de l'origine de ce commit : {example} provient d'un commit daté du 30 août 2026 arrivé via la pull request 129. Un commit qui n'est pas passé par là porte à la place son SHA court — {sha}. La version ne dit délibérément rien de Stalwart ; ce dont cette build a besoin du serveur figure à la ligne ci-dessus.",
},
plurals: {
"{n} messages": { one: "{n} message", other: "{n} messages" },
"{n} selected": { one: "{n} sélectionné", other: "{n} sélectionnés" },
"{n} conversations": { one: "{n} conversation", other: "{n} conversations" },
},
};
+853
View File
@@ -0,0 +1,853 @@
import type { Catalog } from "@/lib/i18n";
/**
* Dutch — generated by AI, and not reviewed 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.
*
* ── Decisions this file is consistent about ──────────────────────────────
*
* Register: **u**, throughout, following "Sie" and "vous" for the same reason
* — ihasmail is as often a company's mail as somebody's own. Dutch leans
* informal further and faster than German or French, and "je" is what most
* consumer software now uses, so this is the decision most likely to be
* overturned by the first Dutch speaker who reads it. That is fine: it is one
* consistent choice, written down, and changing it is a find-and-replace
* rather than an argument. Where a string can avoid the question it does
* ("Bericht verwijderen?" rather than "Wilt u dit bericht verwijderen?"),
* which is ordinary good Dutch UI and sidesteps it entirely.
*
* Terminology, fixed once so it cannot drift:
*
* Inbox Postvak IN Archive (verb) archiveren
* Drafts Concepten Delete verwijderen
* Sent Verzonden Move to verplaatsen naar
* Deleted Items Prullenbak Reply beantwoorden
* Junk / Spam Spam Reply all allen beantwoorden
* Folder Map Forward doorsturen
* Label Label Star ster
* Conversation Gesprek Read / unread gelezen / ongelezen
* Message Bericht Settings Instellingen
* Attachment Bijlage Signature Handtekening
* Contact Contact Identity Identiteit
*
* "Postvak IN" rather than "Inbox", because that is what Outlook and
* Thunderbird call it in Dutch and it is what a reader will recognise. "Label"
* stays English, as in German: no Dutch client translates it.
*
* Product names are never translated: ihasmail, Stalwart, JMAP, Sieve, vCard.
*/
export const catalog: Catalog = {
strings: {
// ── Actions ────────────────────────────────────────────────────────
"Archive": "Archiveren",
"Archive (e)": "Archiveren (e)",
"Delete": "Verwijderen",
"Delete (#)": "Verwijderen (#)",
"Reply": "Beantwoorden",
"Reply (r)": "Beantwoorden (r)",
"Reply all": "Allen beantwoorden",
"Forward": "Doorsturen",
"Move to…": "Verplaatsen naar…",
"Move to (v)": "Verplaatsen naar (v)",
"Move to folder": "Naar map verplaatsen",
"Move here": "Hierheen verplaatsen",
"Mark as read": "Markeren als gelezen",
"Mark as read (Shift+I)": "Markeren als gelezen (Shift+I)",
"Mark as unread": "Markeren als ongelezen",
"Mark as unread (Shift+U)": "Markeren als ongelezen (Shift+U)",
"Mark all as read": "Alles markeren als gelezen",
"Mark all as read, incl. subfolders": "Alles markeren als gelezen, incl. submappen",
"Star": "Ster",
"Labels": "Labels",
"Labels (l)": "Labels (l)",
"Label as": "Label toewijzen",
"Label…": "Label…",
"Compose": "Opstellen",
"Compose message": "Bericht opstellen",
"Send": "Verzenden",
"Send at": "Verzenden op",
"Cancel send": "Verzenden annuleren",
"Schedule send": "Verzending plannen",
"Save": "Opslaan",
"Save & activate": "Opslaan en activeren",
"Save & close (Esc)": "Opslaan en sluiten (Esc)",
"Save as template": "Opslaan als sjabloon",
"Save draft now": "Concept nu opslaan",
"Cancel": "Annuleren",
"Close": "Sluiten",
"Done": "Klaar",
"Continue": "Doorgaan",
"Edit": "Bewerken",
"Edit…": "Bewerken…",
"Rename": "Naam wijzigen",
"Remove": "Verwijderen",
"Restore": "Herstellen",
"Retry": "Opnieuw proberen",
"Reload": "Opnieuw laden",
"Refresh": "Vernieuwen",
"Copy": "Kopiëren",
"Copy email address": "E-mailadres kopiëren",
"Download": "Downloaden",
"Download all": "Alles downloaden",
"Download (.eml)": "Downloaden (.eml)",
"Download latest as .eml": "Nieuwste downloaden als .eml",
"Upload": "Uploaden",
"Upload files…": "Bestanden uploaden…",
"Print": "Afdrukken",
"Print conversation": "Gesprek afdrukken",
"Undo (Ctrl+Z)": "Ongedaan maken (Ctrl+Z)",
"Redo": "Opnieuw",
"Dismiss": "Sluiten",
"Discard changes": "Wijzigingen verwerpen",
"Discard draft": "Concept verwerpen",
"Duplicate": "Dupliceren",
"Validate": "Controleren",
"Revoke": "Intrekken",
"Turn off": "Uitschakelen",
"Clear": "Legen",
"Clear selection": "Selectie opheffen",
"Clear custom colour": "Eigen kleur wissen",
"Select": "Selecteren",
"Select all": "Alles selecteren",
"Unsubscribe": "Afmelden",
"Share…": "Delen…",
"Stop sharing": "Delen stoppen",
"Open": "Openen",
"Open in new tab": "Openen in nieuw tabblad",
"Open in calendar": "Openen in agenda",
"Back": "Terug",
"Back (u)": "Terug (u)",
"Back to list": "Terug naar de lijst",
"Back to my files": "Terug naar mijn bestanden",
"Go back to the list": "Terug naar de lijst",
"Next": "Volgende",
"Previous": "Vorige",
"More": "Meer",
"More actions": "Meer acties",
"More options": "Meer opties",
"Move up": "Omhoog",
"Move down": "Omlaag",
"Drag to reorder": "Sleep om te herschikken",
"Right-click for options": "Rechtsklik voor opties",
// ── Mail ───────────────────────────────────────────────────────────
"Mail": "E-mail",
"Message": "Bericht",
"Messages": "Berichten",
"Message body": "Berichttekst",
"Message headers": "Berichtkoppen",
"Message size": "Berichtgrootte",
"Message-ID": "Message-ID",
"Original message": "Oorspronkelijk bericht",
"Delete this message": "Dit bericht verwijderen",
"New message to this address": "Nieuw bericht aan dit adres",
"Conversation view": "Gespreksweergave",
"Draft": "Concept",
"Unread": "Ongelezen",
"Unread only": "Alleen ongelezen",
"All mail": "Alle berichten",
"Sender": "Afzender",
"Sender domain": "Domein van afzender",
"Recipients": "Ontvangers",
"From": "Van",
"To": "Aan",
"Cc": "Cc",
"Bcc": "Bcc",
"Subject": "Onderwerp",
"Subject (optional)": "Onderwerp (optioneel)",
"Body": "Tekst",
"Body text": "Bodytekst",
"Attach files": "Bestanden bijvoegen",
"Attach from Files": "Bijvoegen uit Bestanden",
"Remove attachment": "Bijlage verwijderen",
"Has attachment": "Heeft bijlage",
"Has the words": "Bevat de woorden",
"Header name": "Naam van de kop",
"Show headers": "Koppen tonen",
"Show original": "Origineel tonen",
"Show details": "Details tonen",
"Show images": "Afbeeldingen tonen",
"Remote images": "Externe afbeeldingen",
"Remote images are blocked to protect your privacy.": "Externe afbeeldingen worden geblokkeerd om uw privacy te beschermen.",
"Always from {email}": "Altijd van {email}",
"This looks like a mailing list.": "Dit lijkt een mailinglijst te zijn.",
"This folder is empty": "Deze map is leeg",
"This folder is empty.": "Deze map is leeg.",
"Delete all spam now": "Alle spam nu verwijderen",
"Deleting spam is permanent — it does not go to Deleted Items first.": "Spam verwijderen is definitief — het gaat niet eerst naar de prullenbak.",
"Keep in Inbox": "In Postvak IN houden",
"Newer (k)": "Nieuwer (k)",
"Older (j)": "Ouder (j)",
"Open the next (older) conversation": "Volgend (ouder) gesprek openen",
"Open the previous (newer) conversation": "Vorig (nieuwer) gesprek openen",
"Loading conversation…": "Gesprek laden…",
"Important": "Belangrijk",
"Unverified": "Niet geverifieerd",
"Priority": "Prioriteit",
"High": "Hoog",
"Normal": "Normaal",
"Low": "Laag",
"to {recipients}": "aan {recipients}",
"From: {sender}": "Van: {sender}",
"Waiting on the server — goes out {when}.": "Wacht op de server — gaat {when} de deur uit.",
"Scheduled — click to clear the schedule": "Gepland — klik om de planning te wissen",
"Nothing scheduled": "Niets gepland",
"The message waits on the server, so it goes out whether or not ihasmail is open.": "Het bericht wacht op de server en wordt verzonden, of ihasmail nu open is of niet.",
"This server holds a message for up to {span}.": "Deze server houdt een bericht tot {span} vast.",
"Date and time to send": "Datum en tijd van verzenden",
"Undo send window": "Termijn om verzenden ongedaan te maken",
"Read receipt requested": "Leesbevestiging gevraagd",
"The sender asked for a read receipt.": "De afzender heeft om een leesbevestiging gevraagd.",
"Request read receipt": "Leesbevestiging vragen",
"Always request read receipts": "Altijd om een leesbevestiging vragen",
"Receipt": "Bevestiging",
"Never send one": "Nooit versturen",
"Not this time": "Deze keer niet",
"It would go to {address}, which is not where the message came from.": "Die zou naar {address} gaan, en daar kwam het bericht niet vandaan.",
"Use “Show original” for the complete raw message.": "Gebruik “Origineel tonen” voor het volledige ruwe bericht.",
// ── Folders, calendar, contacts, files ─────────────────────────────
"Folder": "Map",
"Folders": "Mappen",
"Folder options": "Mapopties",
"New folder": "Nieuwe map",
"New subfolder": "Nieuwe submap",
"Delete folder": "Map verwijderen",
"No matching folders": "Geen overeenkomende mappen",
"No subfolders here.": "Hier zijn geen submappen.",
"Type a folder name…": "Typ een mapnaam…",
" New folder…": " Nieuwe map…",
"Create, rename and hide folders.": "Mappen maken, hernoemen en verbergen.",
"Show unsubscribed (hidden) folders": "Niet-geabonneerde (verborgen) mappen tonen",
"Storage: {used} of {total} used.": "Opslag: {used} van {total} gebruikt.",
"{used} of {total}": "{used} van {total}",
"Calendar": "Agenda",
"My calendars": "Mijn agenda's",
"New calendar": "Nieuwe agenda",
"Calendar options": "Agenda-opties",
"Calendar & contacts": "Agenda en contacten",
"Calendar is not available": "Agenda is niet beschikbaar",
"Event": "Afspraak",
"New event": "Nieuwe afspraak",
"(new event)": "(nieuwe afspraak)",
"New all-day event": "Nieuwe afspraak voor de hele dag",
"Add title": "Titel toevoegen",
"Add location": "Locatie toevoegen",
"Add to calendar": "Aan agenda toevoegen",
"Add to my calendar": "Aan mijn agenda toevoegen",
"Remove from calendar": "Uit agenda verwijderen",
"Remove from my calendar": "Uit mijn agenda verwijderen",
"All day": "Hele dag",
"all-day": "hele dag",
"Starts": "Begint",
"Starts (optional)": "Begint (optioneel)",
"Ends": "Eindigt",
"Ends (optional)": "Eindigt (optioneel)",
"Day": "Dag",
"Week": "Week",
"Month": "Maand",
"Agenda": "Agendaoverzicht",
"Today": "Vandaag",
"Go to day": "Naar dag",
"Go to week": "Naar week",
"Previous month": "Vorige maand",
"Next month": "Volgende maand",
"Does not repeat": "Herhaalt niet",
"Daily": "Dagelijks",
"Every weekday": "Elke werkdag",
"Yearly": "Jaarlijks",
"Custom…": "Aangepast…",
"Weekly on {weekday}": "Wekelijks op {weekday}",
"Monthly on day {day}": "Maandelijks op dag {day}",
"Repeat every": "Herhalen elke",
"Repeat until": "Herhalen tot",
"after N times": "na N keer",
"on date": "op datum",
"never": "nooit",
"day(s)": "dag(en)",
"week(s)": "we(e)k(en)",
"month(s)": "maand(en)",
"year(s)": "jaar/jaren",
"Reminders": "Herinneringen",
"Add reminder": "Herinnering toevoegen",
"Remove reminder": "Herinnering verwijderen",
"Default reminder": "Standaardherinnering",
"At time of event": "Op het tijdstip van de afspraak",
"5 minutes before": "5 minuten vooraf",
"10 minutes before": "10 minuten vooraf",
"15 minutes before": "15 minuten vooraf",
"30 minutes before": "30 minuten vooraf",
"1 hour before": "1 uur vooraf",
"1 day before": "1 dag vooraf",
"15 minutes": "15 minuten",
"30 minutes": "30 minuten",
"45 minutes": "45 minuten",
"1 hour": "1 uur",
"1.5 hours": "1,5 uur",
"2 hours": "2 uur",
"Default event length": "Standaardduur van een afspraak",
"Default view": "Standaardweergave",
"Guests": "Genodigden",
"Add guests by name or email": "Genodigden toevoegen op naam of e-mail",
"Send invitation emails to guests": "Uitnodigingen per e-mail versturen",
"Going?": "Bent u erbij?",
"Yes": "Ja",
"No": "Nee",
"Maybe": "Misschien",
"Confirmed": "Bevestigd",
"Tentative": "Onder voorbehoud",
"Cancelled": "Geannuleerd",
"organizer": "organisator",
"Organizer: {name}": "Organisator: {name}",
"Free": "Vrij",
"Busy": "Bezet",
"Free/busy": "Vrij/bezet",
"Show as": "Weergeven als",
"Availability on {date}": "Beschikbaarheid op {date}",
"Count all events as busy": "Alle afspraken als bezet tellen",
"Only events I'm attending": "Alleen afspraken waaraan ik deelneem",
"Don't include in availability": "Niet meetellen voor beschikbaarheid",
"Meeting link": "Vergaderlink",
"No events in the next 60 days.": "Geen afspraken in de komende 60 dagen.",
"Working hours": "Werktijden",
"Working hours start": "Werktijd begint",
"Working hours end": "Werktijd eindigt",
"Colour categories": "Kleurcategorieën",
"Category": "Categorie",
"No category": "Geen categorie",
"New category": "Nieuwe categorie",
"Delete category": "Categorie verwijderen",
"Manage categories…": "Categorieën beheren…",
"Use category color": "Kleur van de categorie gebruiken",
"Use calendar color": "Kleur van de agenda gebruiken",
"Use the default colour": "Standaardkleur gebruiken",
"+{n} more": "+{n} meer",
"Contacts": "Contacten",
"Contacts are not available": "Contacten zijn niet beschikbaar",
"New contact": "Nieuw contact",
"Edit contact": "Contact bewerken",
"Select a contact": "Selecteer een contact",
"All contacts": "Alle contacten",
"Search contacts": "Contacten doorzoeken",
"Search contacts to add…": "Contacten zoeken om toe te voegen…",
"Loading contacts…": "Contacten laden…",
"Add to contacts": "Aan contacten toevoegen",
"Add to my contacts": "Aan mijn contacten toevoegen",
"Remove from my contacts": "Uit mijn contacten verwijderen",
"Address book": "Adresboek",
"Address books": "Adresboeken",
"All address books": "Alle adresboeken",
"My address books": "Mijn adresboeken",
"New address book": "Nieuw adresboek",
"No address books yet.": "Nog geen adresboeken.",
"Choose from address books": "Kiezen uit adresboeken",
"Import vCard": "vCard importeren",
"Export all": "Alles exporteren",
"Export book": "Adresboek exporteren",
"Email group": "Groep e-mailen",
"Email everyone": "Iedereen e-mailen",
"Members": "Leden",
"Members ({count})": "Leden ({count})",
"Group": "Groep",
"· group": "· groep",
"Person": "Persoon",
"First name": "Voornaam",
"Last name": "Achternaam",
"Middle name": "Tweede voornaam",
"More name fields": "Meer naamvelden",
"Nickname": "Roepnaam",
"Prefix": "Aanhef",
"Suffix": "Achtervoegsel",
"Dr.": "Dr.",
"Jr.": "Jr.",
"Display name": "Weergavenaam",
"Job title": "Functie",
"Organization": "Organisatie",
"Company": "Bedrijf",
"Birthday": "Verjaardag",
"Notes": "Notities",
"Website": "Website",
"Phone": "Telefoon",
"Add phone": "Telefoon toevoegen",
"Add email": "E-mail toevoegen",
"Add address": "Adres toevoegen",
"Address": "Adres",
"Street": "Straat",
"City": "Plaats",
"State / Region": "Provincie / Regio",
"Postal code": "Postcode",
"Country": "Land",
"Change photo": "Foto wijzigen",
"Remove photo": "Foto verwijderen",
"Updated {date}": "Bijgewerkt op {date}",
"Modified": "Gewijzigd",
"Search names and addresses": "Namen en adressen doorzoeken",
"Add a person or group…": "Persoon of groep toevoegen…",
"Choose recipients": "Ontvangers kiezen",
"Available to add": "Beschikbaar om toe te voegen",
"vCard": "vCard",
"vCard attachment": "vCard-bijlage",
"Files": "Bestanden",
"My files": "Mijn bestanden",
"File storage is not available": "Bestandsopslag is niet beschikbaar",
"Drag files here or use Upload.": "Sleep bestanden hierheen of gebruik Uploaden.",
"Shared": "Gedeeld",
"Shared with me": "Met mij gedeeld",
"Nothing is shared with you.": "Er is niets met u gedeeld.",
"Not shared with anyone yet.": "Nog met niemand gedeeld.",
"Check for new shares": "Controleren op nieuwe gedeelde items",
"Shared files are copied to your account when attached.": "Gedeelde bestanden worden naar uw account gekopieerd wanneer u ze bijvoegt.",
"Viewer": "Lezen",
"Editor": "Bewerken",
"Size": "Grootte",
"Add files": "Bestanden toevoegen",
"Minimize": "Minimaliseren",
// ── Settings ───────────────────────────────────────────────────────
"Settings": "Instellingen",
"All settings": "Alle instellingen",
"Sections": "Onderdelen",
"General": "Algemeen",
"Appearance": "Weergave",
"Make ihasmail yours.": "Maak ihasmail van uzelf.",
"Reading": "Lezen",
"Reading pane": "Leesvenster",
"Reading, sending and list behaviour. Settings are stored in this browser.": "Gedrag bij lezen, verzenden en in de lijst. De instellingen worden in deze browser bewaard.",
"Right of the list": "Rechts van de lijst",
"Below the list": "Onder de lijst",
"Hidden (open full width)": "Verborgen (op volle breedte openen)",
"Off (open messages full width)": "Uit (berichten op volle breedte openen)",
"Off": "Uit",
"Composing": "Opstellen",
"Default format": "Standaardopmaak",
"Rich text (HTML)": "Opgemaakte tekst (HTML)",
"Plain text": "Platte tekst",
"Quote original message in replies": "Oorspronkelijk bericht citeren in antwoorden",
"Place signature above quoted text": "Handtekening boven de geciteerde tekst plaatsen",
"Attachment reminder": "Bijlageherinnering",
"Warn when the message mentions an attachment but none is attached.": "Waarschuwen wanneer het bericht een bijlage noemt maar er geen is bijgevoegd.",
"Spell check while typing": "Spellingcontrole tijdens het typen",
"Confirm before deleting": "Bevestigen voor verwijderen",
"Show message snippets": "Berichtfragmenten tonen",
"Preview the first line of each message in the list.": "De eerste regel van elk bericht in de lijst tonen.",
"Show sender avatars": "Afbeeldingen van afzenders tonen",
"Group messages from the same thread together.": "Berichten uit hetzelfde gesprek samenvoegen.",
"After archiving or deleting": "Na archiveren of verwijderen",
"Ask before showing (recommended)": "Vragen voor tonen (aanbevolen)",
"Always (all messages)": "Altijd (alle berichten)",
"Show automatically from my contacts": "Automatisch tonen bij mijn contacten",
"Immediately when opened": "Direct bij openen",
"After 2 seconds": "Na 2 seconden",
"After 5 seconds": "Na 5 seconden",
"Never automatically": "Nooit automatisch",
"When someone requests a read receipt": "Wanneer iemand om een leesbevestiging vraagt",
"Ask me on each message": "Bij elk bericht vragen",
"5 seconds": "5 seconden",
"8 seconds": "8 seconden",
"15 seconds": "15 seconden",
"30 seconds": "30 seconden",
"Locale": "Regio",
"Language": "Taal",
"Interface language": "Taal van de interface",
"Language & region": "Taal en regio",
"Date format": "Datumnotatie",
"Time format": "Tijdnotatie",
"Time zone": "Tijdzone",
"Week starts on": "Week begint op",
"Monday": "Maandag",
"Tuesday": "Dinsdag",
"Wednesday": "Woensdag",
"Thursday": "Donderdag",
"Friday": "Vrijdag",
"Saturday": "Zaterdag",
"Sunday": "Zondag",
"12-hour clock (6:23 PM)": "12-uursnotatie (6:23 PM)",
"24-hour clock (18:23)": "24-uursnotatie (18:23)",
"Browser default ({zone})": "Standaard van de browser ({zone})",
"Default ({zone})": "Standaard ({zone})",
"Automatic ({example})": "Automatisch ({example})",
"Automatic ({locale})": "Automatisch ({locale})",
"Automatic": "Automatisch",
"Preview: {example}": "Voorbeeld: {example}",
"Dates, times and month names follow this choice.": "Datums, tijden en maandnamen volgen deze keuze.",
"Your mail server reports {name} ({tag}).": "Uw mailserver meldt {name} ({tag}).",
"Your mail server does not report a locale, so the browser's is used.": "Uw mailserver meldt geen taalinstelling; die van de browser wordt gebruikt.",
"Dates": "Datums",
"Date": "Datum",
"Time": "Tijd",
"When": "Wanneer",
"Then": "Dan",
"then": "dan",
"Theme": "Thema",
"Accent color": "Accentkleur",
"Color": "Kleur",
"Colour": "Kleur",
"Text color": "Tekstkleur",
"Density & text": "Dichtheid en tekst",
"Display density": "Weergavedichtheid",
"Comfortable": "Ruim",
"Cozy (default)": "Gemiddeld (standaard)",
"Compact": "Compact",
"Text size": "Tekstgrootte",
"Font size": "Lettergrootte",
"Small": "Klein",
"Medium": "Middel",
"Large": "Groot",
"Huge": "Zeer groot",
"Sidebar": "Zijbalk",
"Show labels in the sidebar": "Labels in de zijbalk tonen",
"Collapse sidebar to icons": "Zijbalk inklappen tot pictogrammen",
"Apply the theme to messages too": "Thema ook op berichten toepassen",
"Swiping": "Vegen",
"Swipe left": "Naar links vegen",
"Swipe right": "Naar rechts vegen",
"Backup": "Back-up",
"Export settings": "Instellingen exporteren",
"Import settings": "Instellingen importeren",
"Settings imported": "Instellingen geïmporteerd",
"Invalid settings file": "Ongeldig instellingenbestand",
"Reset to defaults": "Standaardwaarden herstellen",
"Default mail app": "Standaard e-mailprogramma",
"Documentation": "Documentatie",
"About ihasmail": "Over ihasmail",
"About": "Over",
"Server": "Server",
"Server capabilities": "Servermogelijkheden",
"Accounts": "Accounts",
"Account": "Account",
"Max upload": "Maximale upload",
"{size} MB": "{size} MB",
"KB": "kB",
"Image privacy proxy": "Privacyproxy voor afbeeldingen",
"enabled": "ingeschakeld",
"disabled": "uitgeschakeld",
"Enabled": "Ingeschakeld",
"active": "actief",
"hidden": "verborgen",
"connected": "verbonden",
"reconnecting…": "opnieuw verbinden…",
"AGPL-3.0 source": "AGPL-3.0-broncode",
// ── Identities, templates, filters ─────────────────────────────────
"Identities & signatures": "Identiteiten en handtekeningen",
"Add identity": "Identiteit toevoegen",
"Delete identity": "Identiteit verwijderen",
"Make default": "Als standaard instellen",
"Default": "Standaard",
"Show when composing": "Tonen bij opstellen",
"Hide when composing": "Verbergen bij opstellen",
"Signature": "Handtekening",
"Your signature…": "Uw handtekening…",
"Reply-To": "Antwoordadres",
"Reply-To (optional)": "Antwoordadres (optioneel)",
"Reply-To: {addresses}": "Antwoordadres: {addresses}",
"Replies go to…": "Antwoorden gaan naar…",
"Set a Reply-To address": "Een antwoordadres instellen",
"{email} is now your default identity": "{email} is nu uw standaardidentiteit",
"Templates": "Sjablonen",
"New template": "Nieuw sjabloon",
"Delete template": "Sjabloon verwijderen",
"Insert template": "Sjabloon invoegen",
"Template text…": "Sjabloontekst…",
"Subject: {subject}": "Onderwerp: {subject}",
"Filters & rules": "Filters en regels",
"Filters unavailable": "Filters niet beschikbaar",
"Rules": "Regels",
"Rule name": "Naam van de regel",
"New rule": "Nieuwe regel",
"Delete rule": "Regel verwijderen",
"No filters yet": "Nog geen filters",
"Add condition": "Voorwaarde toevoegen",
"Remove condition": "Voorwaarde verwijderen",
"Add action": "Actie toevoegen",
"Remove action": "Actie verwijderen",
"all of the following match": "alle volgende overeenkomen",
"any of the following match": "een van de volgende overeenkomt",
"contains": "bevat",
"does not contain": "bevat niet",
"is": "is",
"is not": "is niet",
"matches (wildcards * ?)": "komt overeen met (jokertekens * ?)",
"does not match": "komt niet overeen met",
"matches regex": "komt overeen met reguliere expressie",
"does not match regex": "komt niet overeen met reguliere expressie",
"exists": "bestaat",
"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",
"keep copy": "kopie bewaren",
"Forward to": "Doorsturen naar",
"Reject with message": "Weigeren met bericht",
"Scripts": "Scripts",
"Scripts (advanced)": "Scripts (geavanceerd)",
"Script name": "Naam van het script",
"New script": "Nieuw script",
"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?",
"Create filter": "Filter maken",
"Filter messages like this": "Berichten zoals dit filteren",
"Filter messages like this…": "Berichten zoals dit filteren…",
"Also apply to existing messages in": "Ook toepassen op bestaande berichten in",
"keyword (e.g. $important, work)": "trefwoord (bijv. $important, werk)",
"Other header…": "Andere kop…",
"Out of office": "Afwezigheid",
"Auto-reply enabled": "Automatisch antwoord ingeschakeld",
// ── Security, sessions, notifications ──────────────────────────────
"Security & sessions": "Beveiliging en sessies",
"Password": "Wachtwoord",
"Your password": "Uw wachtwoord",
"Current password": "Huidig wachtwoord",
"New password": "Nieuw wachtwoord",
"Confirm new password": "Nieuw wachtwoord bevestigen",
"Current code": "Huidige code",
"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.",
"App passwords": "App-wachtwoorden",
"New app password for": "Nieuw app-wachtwoord voor",
"Your new app password": "Uw nieuwe app-wachtwoord",
"Secret": "Geheim",
"Thunderbird on my laptop": "Thunderbird op mijn laptop",
"Active webmail sessions": "Actieve webmailsessies",
"Sign out": "Uitloggen",
"Sign out here": "Hier uitloggen",
"Sign out all other sessions": "Alle andere sessies uitloggen",
"Signed in as": "Ingelogd als",
"This is my own device": "Dit is mijn eigen apparaat",
"this device": "dit apparaat",
"Device": "Apparaat",
"IP": "IP",
"Last active": "Laatst actief",
"Created": "Aangemaakt",
"Expires": "Verloopt",
"Status": "Status",
"Online": "Online",
"Reason": "Reden",
"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.",
"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 ihasmail is open": "Systeemmeldingen terwijl ihasmail open is",
"Notify me even when ihasmail is closed": "Ook melden wanneer ihasmail gesloten is",
"Play a sound for new mail": "Geluid afspelen bij nieuwe post",
"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.",
"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.",
// ── Editor, search, shortcuts, misc ────────────────────────────────
"Formatting": "Opmaak",
"Formatting options": "Opmaakopties",
"Remove formatting": "Opmaak verwijderen",
"Bold (Ctrl+B)": "Vet (Ctrl+B)",
"Italic (Ctrl+I)": "Cursief (Ctrl+I)",
"Underline (Ctrl+U)": "Onderstrepen (Ctrl+U)",
"Strikethrough": "Doorhalen",
"Highlight": "Markeren",
"Bulleted list": "Opsomming",
"Numbered list": "Genummerde lijst",
"Increase indent": "Inspringing vergroten",
"Decrease indent": "Inspringing verkleinen",
"Align left": "Links uitlijnen",
"Align right": "Rechts uitlijnen",
"Center": "Centreren",
"Quote": "Citaat",
"Code block": "Codeblok",
"Normal text": "Normale tekst",
"Insert link (Ctrl+K)": "Link invoegen (Ctrl+K)",
"Insert image": "Afbeelding invoegen",
"Link": "Link",
"List": "Lijst",
"Emoji": "Emoji",
"Write your message…": "Schrijf uw bericht…",
"Search": "Zoeken",
"Search mail": "In e-mail zoeken",
"Advanced search": "Geavanceerd zoeken",
"Keyboard shortcuts": "Sneltoetsen",
"Keyboard shortcuts (?)": "Sneltoetsen (?)",
"Shortcuts": "Sneltoetsen",
"Go to": "Ga naar",
"Menu": "Menu",
"Options": "Opties",
"Send options": "Verzendopties",
"Name": "Naam",
"Email": "E-mail",
"Email address": "E-mailadres",
"Description": "Omschrijving",
"Location": "Locatie",
"Visibility": "Zichtbaarheid",
"Private": "Privé",
"Work": "Werk",
"Loading…": "Laden…",
"None": "Geen",
"optional": "optioneel",
"Always show": "Altijd tonen",
"to": "aan",
"Received": "Ontvangen",
"In-Reply-To": "In-Reply-To",
"References": "References",
"Add label / keyword": "Label / trefwoord toevoegen",
"Manage labels": "Labels beheren",
"Create “{name}”": "“{name}” maken",
"Type a name to create your first label.": "Typ een naam om uw eerste label te maken.",
"Labels are IMAP keywords stored on your messages, so they sync to other clients. Names and colours are kept in this browser.": "Labels zijn IMAP-trefwoorden die in uw berichten worden opgeslagen en dus met andere clients synchroniseren. Namen en kleuren blijven in deze browser.",
"New label": "Nieuw label",
"Delete label": "Label verwijderen",
"PDF": "PDF",
"Large attachments may be rejected by some servers": "Grote bijlagen worden door sommige servers geweigerd",
"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.",
"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.",
"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.",
"“{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.",
// ── Labels held in constants, translated where they render ─────────
"Add": "Toevoegen",
"Create subfolders": "Submappen maken",
"Dark": "Donker",
"Light": "Licht",
"Match system": "Systeem volgen",
"Day.Month.Year": "Dag.Maand.Jaar",
"Day/Month/Year": "Dag/Maand/Jaar",
"Month/Day/Year": "Maand/Dag/Jaar",
"Year-Month-Day (ISO 8601)": "Jaar-Maand-Dag (ISO 8601)",
"Edit all": "Alles bewerken",
"Edit contents": "Inhoud bewerken",
"Edit own": "Eigen bewerken",
"Flag": "Markeren",
"Mark read": "Markeren als gelezen",
"Private props": "Privé-eigenschappen",
"Read": "Lezen",
"Read events": "Afspraken lezen",
"RSVP": "Reageren",
"See free/busy": "Vrij/bezet zien",
"Share": "Delen",
"Write": "Schrijven",
"Live updates connected": "Live-updates verbonden",
"Live updates reconnecting…": "Live-updates maken opnieuw verbinding…",
"Live updates off — checking periodically instead": "Live-updates uit — er wordt periodiek gecontroleerd",
"Mark as read / unread": "Markeren als gelezen / ongelezen",
"Star / unstar": "Ster toevoegen / verwijderen",
"Report spam / not spam": "Melden als spam / geen spam",
"Report spam": "Melden als spam",
"Not spam": "Geen spam",
"Nothing": "Niets",
"Later today": "Later vandaag",
"Tomorrow morning": "Morgenochtend",
"Tomorrow afternoon": "Morgenmiddag",
"Monday morning": "Maandagochtend",
"Open draft": "Concept openen",
"Undo": "Ongedaan maken",
"Deleted Items": "Prullenbak",
"Choose a date": "Kies een datum",
"Choose a date and time": "Kies een datum en tijd",
"Pick date and time…": "Datum en tijd kiezen…",
"After": "Na",
"Before": "Voor",
// ── Folder names shown for a JMAP role (see lib/mailboxName.ts) ────
"folder\u0004Inbox": "Postvak IN",
"folder\u0004Archive": "Archief",
"folder\u0004Drafts": "Concepten",
"folder\u0004Sent": "Verzonden",
"folder\u0004Deleted Items": "Prullenbak",
"folder\u0004Junk Mail": "Spam",
"folder\u0004Important": "Belangrijk",
"folder\u0004All mail": "Alle berichten",
"folder": "map",
"“{name}” moved into “{parent}”": "“{name}” is verplaatst naar “{parent}”",
"“{name}” moved to the top level": "“{name}” is naar het hoogste niveau verplaatst",
"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",
"Drop here for the top level": "Hier neerzetten voor het hoogste niveau",
// ── 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.",
"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",
"Tip: press {key} on a conversation to apply labels. Search with {operator}.": "Tip: druk op {key} bij een gesprek om labels toe te wijzen. Zoek met {operator}.",
"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.",
"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. ihasmail will keep the full version in your Files and store a short text fallback on the server — other mail clients will see the plain-text version.": "Deze handtekening is groter dan de limiet van {limit} bytes van de server. ihasmail bewaart de volledige versie in uw Bestanden en zet een korte tekstversie op de server — 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.",
"Plain-text mail already follows the theme. With this on, HTML mail that brings no colours 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 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 — you can still make ihasmail 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 — u kunt ihasmail nog steeds als standaard instellen via uw besturingssysteem als u het als app installeert.",
"Registering for {scheme} links requires a secure (HTTPS) connection.": "Registreren voor {scheme}-links vereist een beveiligde (HTTPS-)verbinding.",
"Open {scheme} links — in web pages, documents and other apps — in ihasmail 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 Privacy and security Site settings Protocol handlers; Firefox: Settings General Applications).": "{scheme}-links — op webpagina's, in documenten en in andere programma's — openen in ihasmail 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 Privacy en beveiliging Site-instellingen Protocol-handlers; Firefox: Instellingen Algemeen 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-maillinks nog elders openen.",
"For a system-wide default, install ihasmail as an app first (in Chrome: the install icon in the address bar). Your operating system can then offer ihasmail directly wherever it asks which mail app to use.": "Installeer ihasmail eerst als app voor een systeembrede standaard (in Chrome: het installatiepictogram in de adresbalk). Uw besturingssysteem kan ihasmail 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 ihasmail tab open, naming the sender and subject. Your browser still has to be running — 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 ihasmail-tabblad, met afzender en onderwerp erbij. Uw browser moet wel draaien — 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.",
"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.",
"This account has two-factor authentication on. ihasmail can't sign you in with a code yet, so signing in on another device needs an app password — or you can turn two-factor authentication off here.": "Voor dit account staat tweefactorauthenticatie aan. ihasmail kan u nog niet met een code inloggen, dus inloggen op een ander apparaat vereist een app-wachtwoord — 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.",
"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 ihasmail reports the edition where the server gives one. ihasmail requires 0.16 or newer, and sign-in refuses anything older.": "Stalwart geeft zijn versienummer niet door aan e-mailprogramma's, dus ihasmail noemt de editie als de server die opgeeft. ihasmail 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 ihasmail has been translated into appear here, so this list grows as translations land rather than ahead of them — 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 ihasmail is vertaald; de lijst groeit dus mee met de vertalingen en niet erop vooruit — een taal die wordt aangeboden zonder teksten erachter zou de pagina laten beweren dat ze in een taal is die ze niet 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}.",
"{name} is the palette from {site}, and what a new account starts on. It is a dark theme, so it counts as dark wherever that matters, and the accent colour below still applies on top of it.": "{name} is het kleurenpalet van {site}, en waarmee een nieuw account begint. Het is een donker thema en telt dus overal als donker waar dat uitmaakt; de accentkleur hieronder werkt er nog steeds bovenop.",
"ihasmail'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 — {sha}. The version deliberately says nothing about Stalwart; what this build needs from the server is the line above.": "De eigen versie van ihasmail 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 — {sha}. De versie zegt bewust niets over Stalwart; wat deze build van de server nodig heeft, staat op de regel hierboven.",
},
plurals: {
"{n} messages": { one: "{n} bericht", other: "{n} berichten" },
"{n} selected": { one: "{n} geselecteerd", other: "{n} geselecteerd" },
"{n} conversations": { one: "{n} gesprek", other: "{n} gesprekken" },
},
};
+15 -6
View File
@@ -2,6 +2,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { applyLang, DEFAULT_SETTINGS } from "@/store/settings";
import { UI_LANGUAGES } from "@/lib/languages";
/**
* `<html lang>` has to be right *before first paint*, not after mount.
@@ -34,15 +35,23 @@ describe("applyLang", () => {
expect(document.documentElement.lang).toBe("en");
});
it("serves a language whose catalogue is shipped", () => {
applyLang({ ...DEFAULT_SETTINGS, uiLanguage: "de" });
expect(document.documentElement.lang).toBe("de");
it("serves every language whose catalogue is shipped", () => {
for (const l of UI_LANGUAGES) {
applyLang({ ...DEFAULT_SETTINGS, uiLanguage: l.tag });
expect(document.documentElement.lang).toBe(l.tag);
}
});
it("falls back to English rather than claiming a language it cannot render", () => {
// A tag no catalogue exists for -- an account carrying a preference from a
// build that shipped more languages than this one.
applyLang({ ...DEFAULT_SETTINGS, uiLanguage: "fr" });
/*
* The tag is derived, not written down. Naming a real language here means
* the test breaks the day that language ships -- which it did, twice, for
* German and then French, each time reporting a failure that was really
* the test being out of date.
*/
const unshipped = ["cy", "is", "mt", "eu"].find((tag) => !UI_LANGUAGES.some((l) => l.tag === tag));
expect(unshipped).toBeDefined();
applyLang({ ...DEFAULT_SETTINGS, uiLanguage: unshipped! });
expect(document.documentElement.lang).toBe("en");
});