@eponyme/locale 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -74,8 +74,8 @@ this package does not know yet, and nothing breaks in the meantime.
74
74
 
75
75
  ## Adding a language
76
76
 
77
- 1. Copy `src/en.json` — the reference catalogue, which Eponyme exposes at
78
- `@karibsen/eponyme/locales/en.json` — to `src/<code>.json`.
77
+ 1. Copy `src/en.json` – the reference catalogue, which Eponyme exposes at
78
+ `@karibsen/eponyme/locales/en.json` – to `src/<code>.json`.
79
79
  2. Translate the values. Never touch the keys.
80
80
  3. Add `src/<code>.ts` with the factory, and its `plural` rule if the language needs one.
81
81
  4. Add the entry to `build.config.ts` and the subpath to `exports` in `package.json`.
@@ -92,7 +92,7 @@ A message with plural forms separates them with `|`, in this order: none, one, m
92
92
  ```
93
93
 
94
94
  `plural` maps a count to one of those three indices. The default is
95
- `count => count === 0 ? 0 : count === 1 ? 1 : 2`, which is what French and Spanish use — what
95
+ `count => count === 0 ? 0 : count === 1 ? 1 : 2`, which is what French and Spanish use – what
96
96
  differs between them is the wording of the zero form (`0 élément`, `0 elementos`), and that lives
97
97
  in the catalogue, not in the rule.
98
98
 
@@ -113,7 +113,7 @@ must stand alone**: a closure over anything outside the function does not surviv
113
113
 
114
114
  ### Placeholders
115
115
 
116
- `{name}` is replaced from the parameters Eponyme passes. Keep every placeholder a message has —
116
+ `{name}` is replaced from the parameters Eponyme passes. Keep every placeholder a message has –
117
117
  one that is dropped shows as literal `{count}` in the interface.
118
118
 
119
119
  ## Licence
package/dist/de.mjs CHANGED
@@ -9,6 +9,21 @@ function requireDe () {
9
9
  de$1 = {
10
10
  "action.delete": "Löschen",
11
11
  "array.add": "Element hinzufügen",
12
+ "relation.choose": "Eintrag wählen",
13
+ "relation.change": "Ändern",
14
+ "relation.remove": "{entry} entfernen",
15
+ "relation.selected": "Ausgewählt",
16
+ "relation.search": "Einträge suchen",
17
+ "relation.noMatch": "Kein Eintrag entspricht „{query}“.",
18
+ "relation.empty": "Diese Sammlung hat noch keinen Eintrag.",
19
+ "relation.pickerTitle": "{collection}",
20
+ "relation.pickerDescription": "Den Eintrag wählen, auf den dieses Feld zeigt.",
21
+ "relation.shown": "{count} von {total}",
22
+ "relation.loadMore": "Mehr laden",
23
+ "array.item": "Element {index}",
24
+ "array.search": "Elemente suchen",
25
+ "array.noMatch": "Kein Element entspricht „{query}“.",
26
+ "array.itemHasErrors": "Dieses Element enthält Fehler",
12
27
  "array.drag": "Zum Neuanordnen ziehen",
13
28
  "array.move": "{item} verschieben",
14
29
  "array.remove": "{item} entfernen",
@@ -47,14 +62,15 @@ function requireDe () {
47
62
  "field.duration": "Geben Sie eine Dauer als ganze, nicht negative Zahl in Millisekunden ein.",
48
63
  "field.durationMin": "Die Mindestdauer beträgt {min} ms.",
49
64
  "field.durationMax": "Die Höchstdauer beträgt {max} ms.",
50
- "duration.hours": "Stunden",
51
- "duration.minutes": "Minuten",
52
- "duration.seconds": "Sekunden",
53
- "duration.milliseconds": "Millisekunden",
54
65
  "field.email": "Geben Sie eine gültige E-Mail-Adresse ein.",
55
66
  "field.color": "Geben Sie eine gültige Hexadezimalfarbe ein.",
56
67
  "field.slug": "Verwenden Sie nur Kleinbuchstaben, Zahlen und einfache Bindestriche.",
57
68
  "field.image": "Geben Sie eine gültige HTTP(S)-URL ein.",
69
+ "field.imageSource": "Dieses Bild muss {sources} sein.",
70
+ "field.imageSourceAbsolute": "eine Adresse auf einer anderen Website",
71
+ "field.imageSourceRelative": "ein Pfad auf dieser Website",
72
+ "field.imageSourceUpload": "ein hochgeladenes Bild",
73
+ "field.file": "Muss eine HTTP(S)-URL oder eine hochgeladene Datei sein.",
58
74
  "field.phone": "Geben Sie eine gültige Telefonnummer ein.",
59
75
  "field.phoneInternational": "Geben Sie eine Nummer im internationalen Format mit Ländervorwahl ein.",
60
76
  "field.phoneCountry": "Nummern aus {country} werden nicht akzeptiert. Akzeptierte Länder: {accepted}.",
@@ -69,32 +85,38 @@ function requireDe () {
69
85
  "field.videoProviders": "Akzeptierte Formate: {providers}.",
70
86
  "field.videoYoutube": "ein YouTube-Link",
71
87
  "field.videoVimeo": "ein Vimeo-Link",
88
+ "field.videoVkvideo": "ein VK-Video-Link",
72
89
  "field.videoUrl": "eine direkte Video-URL",
73
90
  "form.body": "Die gesendeten Daten haben nicht das richtige Format.",
74
91
  "action.cancel": "Abbrechen",
75
92
  "action.confirm": "Bestätigen",
76
93
  "action.close": "Schließen",
77
- "action.copy": "Kopieren",
78
- "action.copied": "Kopiert!",
79
- "action.previous": "Zurück",
80
- "action.next": "Weiter",
81
- "action.restore": "Wiederherstellen",
82
- "action.create": "Erstellen",
83
- "action.import": "Importieren",
84
- "action.export": "Exportieren",
85
- "action.loading": "Wird geladen…",
86
- "action.clearAll": "Alles löschen",
87
- "action.actions": "Aktionen",
88
- "action.yes": "Ja",
89
- "action.no": "Nein",
90
- "action.empty": "—",
91
94
  "accordion.open": "Ordner öffnen",
92
95
  "accordion.close": "Ordner schließen",
93
96
  "color.custom": "Benutzerdefinierte Farbe",
97
+ "color.black": "Schwarz",
98
+ "color.white": "Weiß",
99
+ "color.red": "Rot",
100
+ "color.amber": "Bernstein",
101
+ "color.green": "Grün",
102
+ "color.blue": "Blau",
103
+ "color.purple": "Violett",
104
+ "color.pink": "Rosa",
94
105
  "password.show": "Passwort anzeigen",
95
106
  "password.hide": "Passwort verbergen",
96
107
  "media.preview": "Videovorschau",
108
+ "seo.label": "SEO",
109
+ "seo.title": "Titel",
110
+ "seo.description": "Beschreibung",
111
+ "seo.image": "Bild zum Teilen",
112
+ "seo.shareSameAsPage": "Titel und Beschreibung beim Teilen wiederverwenden",
113
+ "seo.ogTitle": "Titel zum Teilen",
114
+ "seo.ogDescription": "Beschreibung zum Teilen",
97
115
  "tags.remove": "{tag} entfernen",
116
+ "duration.hours": "Stunden",
117
+ "duration.minutes": "Minuten",
118
+ "duration.seconds": "Sekunden",
119
+ "duration.milliseconds": "Millisekunden",
98
120
  "toast.label": "Benachrichtigung",
99
121
  "toast.close": "Benachrichtigung schließen",
100
122
  "link.configure": "Link konfigurieren",
@@ -149,14 +171,31 @@ function requireDe () {
149
171
  "richText.bulletList": "Aufzählungsliste",
150
172
  "richText.orderedList": "Nummerierte Liste",
151
173
  "richText.quote": "Zitat",
174
+ "richText.textColor": "Textfarbe",
175
+ "richText.highlight": "Hervorhebung",
176
+ "richText.removeTextColor": "Keine Textfarbe",
177
+ "richText.removeHighlight": "Keine Hervorhebung",
178
+ "richText.fullscreen": "Vollbild",
179
+ "richText.exitFullscreen": "Vollbild beenden",
180
+ "richText.selectionToolbar": "Formatierung der Auswahl",
152
181
  "richText.undo": "Rückgängig",
153
182
  "richText.redo": "Wiederholen",
154
183
  "media.youtube": "YouTube",
155
184
  "media.vimeo": "Vimeo",
185
+ "media.vkvideo": "VK Video",
156
186
  "media.direct": "Direktes Video",
157
187
  "media.unknown": "Nicht erkannte Videoadresse",
158
188
  "media.placeholder": "{providers}-Adresse",
159
189
  "tabs.hasErrors": "Es gibt Felder in {tab}, die korrigiert werden müssen",
190
+ "action.copy": "Kopieren",
191
+ "action.copied": "Kopiert!",
192
+ "action.previous": "Zurück",
193
+ "action.next": "Weiter",
194
+ "action.restore": "Wiederherstellen",
195
+ "action.duplicate": "Duplizieren",
196
+ "action.create": "Erstellen",
197
+ "action.import": "Importieren",
198
+ "action.export": "Exportieren",
160
199
  "nav.label": "Eponyme-Navigation",
161
200
  "nav.hiddenFolders": "Versteckte Ordner",
162
201
  "nav.hiddenFoldersCount": "{count} versteckter Ordner | {count} versteckter Ordner | {count} versteckte Ordner",
@@ -172,6 +211,7 @@ function requireDe () {
172
211
  "folder.entries": "Einträge von {folder}",
173
212
  "entry.draft": "Entwurf",
174
213
  "sidebar.logo": "Eponyme",
214
+ "sidebar.skipToContent": "Zum Inhalt springen",
175
215
  "sidebar.expand": "Seitenleiste erweitern",
176
216
  "sidebar.collapse": "Seitenleiste reduzieren",
177
217
  "sidebar.contentEntries": "Inhalte",
@@ -179,12 +219,16 @@ function requireDe () {
179
219
  "sidebar.searchLabel": "In Inhalten suchen",
180
220
  "sidebar.allEntries": "Alle Einträge",
181
221
  "sidebar.users": "Benutzer",
222
+ "sidebar.audit": "Audit-Protokoll",
223
+ "sidebar.media": "Medien",
182
224
  "sidebar.editables": "Bearbeitbare Inhalte",
225
+ "sidebar.loadingMore": "Wird geladen…",
183
226
  "sidebar.noMatch": "Kein Inhalt entspricht „{query}“.",
184
- "sidebar.logout": "Abmelden",
185
227
  "sidebar.profileMenu": "Profil von {username}",
186
228
  "sidebar.lightTheme": "Helles Design",
187
229
  "sidebar.darkTheme": "Dunkles Design",
230
+ "sidebar.logout": "Abmelden",
231
+ "action.loading": "Wird geladen…",
188
232
  "status.draft": "Entwurf",
189
233
  "status.published": "Veröffentlicht",
190
234
  "status.unpublished": "Unveröffentlicht",
@@ -248,6 +292,9 @@ function requireDe () {
248
292
  "collection.create": "+ Neuer Eintrag",
249
293
  "collection.createTitle": "Neuer Eintrag",
250
294
  "collection.createDescription": "Geben Sie diesem Eintrag einen Titel und wählen Sie seine permanente Adresse.",
295
+ "collection.duplicateTitle": "Eintrag duplizieren",
296
+ "collection.duplicateDescription": "Der neue Eintrag geht vom Entwurf von „{title}“ aus.",
297
+ "collection.copyOf": "{title} (Kopie)",
251
298
  "collection.createFailed": "Dieser Eintrag konnte nicht erstellt werden.",
252
299
  "collection.trash": "Papierkorb ({count})",
253
300
  "collection.trashHint": "Einträge im Papierkorb behalten ihren Verlauf und Slug. Sie können sie jederzeit wiederherstellen.",
@@ -256,6 +303,12 @@ function requireDe () {
256
303
  "collection.scheduledPublish": "Veröffentlichung geplant für {date}",
257
304
  "collection.scheduledUnpublish": "Zurücknahme der Veröffentlichung geplant für {date}",
258
305
  "collection.purge": "Dauerhaft löschen",
306
+ "collection.search": "Einträge suchen",
307
+ "collection.searchLabel": "Einträge in dieser Sammlung suchen",
308
+ "collection.noMatch": "Kein Eintrag entspricht „{query}“.",
309
+ "collection.pagination": "Seitennummerierung",
310
+ "collection.page": "Seite {page} von {pages}",
311
+ "collection.results": "{count} Einträge | {count} Eintrag | {count} Einträge",
259
312
  "collection.empty": "Zurzeit keine Einträge.",
260
313
  "collection.createFirst": "Ersten Eintrag erstellen",
261
314
  "collection.confirmTrash": "„{title}“ in den Papierkorb verschieben? Sein Slug bleibt reserviert, bis er wiederhergestellt oder dauerhaft gelöscht wird.",
@@ -268,6 +321,12 @@ function requireDe () {
268
321
  "collection.purgeDescription": "„{title}“, sein Inhalt und der gesamte Verlauf gehen verloren. Diese Aktion kann nicht rückgängig gemacht werden.",
269
322
  "collection.purgeAction": "Dauerhaft löschen",
270
323
  "collection.purgeFailed": "Dieser Eintrag konnte nicht dauerhaft gelöscht werden.",
324
+ "collection.restoreFailed": "Dieser Eintrag konnte nicht wiederhergestellt werden.",
325
+ "action.clearAll": "Alles löschen",
326
+ "action.actions": "Aktionen",
327
+ "action.yes": "Ja",
328
+ "action.no": "Nein",
329
+ "action.empty": "—",
271
330
  "submissions.received": "Erhalten am",
272
331
  "submissions.mode": "Formular",
273
332
  "submissions.modeManaged": "Verwaltet",
@@ -287,6 +346,13 @@ function requireDe () {
287
346
  "submissions.deleteTitle": "Diese Antwort löschen?",
288
347
  "submissions.deleteDescription": "Diese Antwort wird dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
289
348
  "submissions.deleteAction": "Antwort löschen",
349
+ "submissions.selectAll": "Alle Zeilen auf dieser Seite auswählen",
350
+ "submissions.selectRow": "Diese Einsendung auswählen",
351
+ "submissions.selected": "{count} ausgewählt | {count} ausgewählt | {count} ausgewählt",
352
+ "submissions.clearSelection": "Auswahl aufheben",
353
+ "submissions.deleteSelection": "Auswahl löschen",
354
+ "submissions.deleteSelectionTitle": "Ausgewählte Einsendungen löschen?",
355
+ "submissions.deleteSelectionDescription": "{count} Einsendungen werden gelöscht. Das lässt sich nicht rückgängig machen. | {count} Einsendung wird gelöscht. Das lässt sich nicht rückgängig machen. | {count} Einsendungen werden gelöscht. Das lässt sich nicht rückgängig machen.",
290
356
  "submissions.deleteFailed": "Diese Antwort konnte nicht gelöscht werden.",
291
357
  "submissions.pager": "{count} Antwort · Seite {page} von {pages} | {count} Antwort · Seite {page} von {pages} | {count} Antworten · Seite {page} von {pages}",
292
358
  "history.title": "Versionsverlauf",
@@ -367,6 +433,24 @@ function requireDe () {
367
433
  "users.credentialsHint": "Kopieren Sie dieses Passwort jetzt: Sie können es danach nicht mehr anzeigen.",
368
434
  "users.temporaryPassword": "Temporäres Passwort",
369
435
  "users.credentialsFooter": "Diese Person muss bei ihrer ersten Anmeldung ein neues Passwort wählen.",
436
+ "audit.title": "Audit-Protokoll · Eponyme",
437
+ "audit.heading": "Audit-Protokoll",
438
+ "audit.description": "Sicherheits- und Redaktionsereignisse dieser Eponyme-Instanz.",
439
+ "audit.action": "Aktion",
440
+ "audit.resource": "Ressource",
441
+ "audit.from": "Von",
442
+ "audit.to": "Bis",
443
+ "audit.filter": "Filtern",
444
+ "audit.clear": "Filter zurücksetzen",
445
+ "audit.date": "Datum",
446
+ "audit.actor": "Akteur",
447
+ "audit.outcome": "Ergebnis",
448
+ "audit.system": "System",
449
+ "audit.success": "Erfolg",
450
+ "audit.failure": "Fehlschlag",
451
+ "audit.empty": "Kein Ereignis entspricht diesen Filtern.",
452
+ "audit.more": "Mehr laden",
453
+ "audit.loadFailed": "Das Audit-Protokoll konnte nicht geladen werden.",
370
454
  "login.title": "Anmeldung · Eponyme",
371
455
  "login.heading": "Anmelden",
372
456
  "login.subheading": "Geben Sie Ihre Anmeldeinformationen ein, um auf Eponyme zuzugreifen.",
@@ -390,6 +474,7 @@ function requireDe () {
390
474
  "server.badCredentials": "Benutzername oder Passwort ist falsch.",
391
475
  "server.entryNotFound": "Dieser Eintrag wurde nicht gefunden.",
392
476
  "server.invalidAction": "Diese redaktionelle Aktion existiert nicht.",
477
+ "server.lifecycleContentForbidden": "Inhalt als Entwurf speichern, bevor eine Veröffentlichungsaktion ausgeführt wird.",
393
478
  "server.publicationDisabled": "Die Veröffentlichung ist für diesen Eintrag deaktiviert.",
394
479
  "server.invalidSchedule": "Geben Sie mindestens ein gültiges Veröffentlichungsdatum an.",
395
480
  "server.collectionNotFound": "Diese Sammlung wurde nicht gefunden.",
@@ -413,6 +498,7 @@ function requireDe () {
413
498
  "server.passwordContainsUsername": "Ihr Passwort darf nicht Ihren Benutzernamen enthalten.",
414
499
  "server.passwordUnchanged": "Wählen Sie ein anderes Passwort als das aktuelle.",
415
500
  "server.roleRequired": "Wählen Sie eine gültige Rolle.",
501
+ "server.roleUnavailable": "Dieses Konto verwendet eine Rolle, die nicht mehr existiert. Bitte einen Owner, eine neue zuzuweisen.",
416
502
  "server.usernameTaken": "Dieser Benutzername wird bereits verwendet.",
417
503
  "server.userNotFound": "Benutzer nicht gefunden.",
418
504
  "server.activeMustBeBoolean": "Der Kontostatus muss aktiv oder deaktiviert sein.",
@@ -420,15 +506,62 @@ function requireDe () {
420
506
  "server.selfUpdate": "Sie können die Rolle und den Status Ihres eigenen Kontos nicht ändern.",
421
507
  "server.concurrentChange": "Eine andere Änderung wurde zur gleichen Zeit gespeichert. Bitte versuchen Sie es erneut.",
422
508
  "server.slugTaken": "Diese Adresse wird bereits verwendet.",
509
+ "server.relationMissing": "Zeigt auf einen Eintrag, der nicht existiert: {slugs}.",
510
+ "server.relationUnknownCollection": "Zeigt auf „{collection}“, was keine Sammlung ist.",
511
+ "server.entryReferenced": "Wird noch von {entries} referenziert. Löse die Verbindung dort zuerst.",
423
512
  "server.slugInTrash": "Ein Eintrag mit dieser Adresse befindet sich im Papierkorb. Stellen Sie ihn wieder her oder löschen Sie ihn dauerhaft.",
424
513
  "server.importNoSchema": "Für diesen Eintrag ist kein Schema konfiguriert.",
425
514
  "server.importInTrash": "Ein Eintrag mit diesem Namen befindet sich im Papierkorb. Stellen Sie ihn wieder her oder löschen Sie ihn dauerhaft.",
515
+ "server.importRelationMissing": "„{name}“ zeigt auf „{target}“, das weder die Datei noch diese Anwendung enthält.",
426
516
  "server.passwordChangeFailed": "Das Passwort konnte nicht geändert werden.",
427
517
  "server.userCreateFailed": "Dieser Benutzer konnte nicht erstellt werden.",
428
518
  "server.entryConflict": "Dieser Eintrag wurde von jemand anderem geändert. Laden Sie die Seite neu, um die neueste Version zu erhalten.",
519
+ "server.revisionRequired": "Für diese Aktion wird die Version des Eintrags benötigt, auf den sie sich bezieht. Laden Sie die Seite neu und versuchen Sie es erneut.",
429
520
  "server.rateLimited": "Zu viele Anfragen. Versuchen Sie es später erneut.",
430
521
  "server.invalidJson": "Der Anfragetext muss gültiges JSON sein.",
431
522
  "server.bodyTooLarge": "Der Anfragetext ist zu groß.",
523
+ "server.notFound": "Nicht gefunden.",
524
+ "server.storageDisabled": "Der Dateispeicher ist nicht konfiguriert.",
525
+ "server.mediaInvalidKey": "Ungültige Dateireferenz.",
526
+ "server.mediaInvalidType": "Ungültiger Dateityp.",
527
+ "server.mediaInvalidSize": "Ungültige Dateigröße.",
528
+ "server.mediaTooLarge": "Datei ist zu groß. Das Limit liegt bei {max}.",
529
+ "server.mediaRejectedType": "Dieser Dateityp wird nicht akzeptiert. Akzeptierte Typen: {accept}.",
530
+ "server.mediaEmptyBody": "Der Upload enthielt keine Daten.",
531
+ "server.mediaIncompleteUpload": "Der Upload wurde nicht abgeschlossen. Versuche es erneut.",
532
+ "server.mediaReadOnly": "Der Dateispeicher ist in diesem Deployment falsch konfiguriert und kann keine Uploads annehmen. Bitte die Person, die es deployt hat, einen Bucket zu konfigurieren.",
533
+ "library.title": "Medien",
534
+ "library.description": "Vom Dashboard hochgeladene Dateien, neueste zuerst.",
535
+ "library.upload": "Hochladen",
536
+ "library.uploading": "{name} wird hochgeladen…",
537
+ "library.empty": "Noch keine Dateien.",
538
+ "library.emptyHint": "Lade eine hoch, um sie in einem Eintrag zu verwenden.",
539
+ "library.search": "Dateien suchen",
540
+ "library.noMatch": "Keine Datei entspricht „{query}“.",
541
+ "library.loadMore": "Mehr laden",
542
+ "library.loading": "Wird geladen…",
543
+ "library.select": "Auswählen",
544
+ "library.delete": "Löschen",
545
+ "library.deleteTitle": "Diese Datei löschen?",
546
+ "library.deleteMessage": "{name} wird aus dem Speicher entfernt. Einträge, die bereits darauf zeigen, zeigen eine defekte Datei.",
547
+ "library.deleted": "Datei gelöscht.",
548
+ "library.copyUrl": "URL kopieren",
549
+ "library.copied": "URL kopiert.",
550
+ "library.uploadFailed": "Der Upload ist fehlgeschlagen.",
551
+ "library.cancel": "Abbrechen",
552
+ "library.pick": "Aus der Mediathek wählen",
553
+ "library.count": "{count} Dateien",
554
+ "file.choose": "Datei hochladen",
555
+ "file.replace": "Ersetzen",
556
+ "file.remove": "Entfernen",
557
+ "file.open": "In neuem Tab öffnen",
558
+ "file.drop": "Datei hier ablegen",
559
+ "file.or": "oder",
560
+ "file.browse": "durchsuchen",
561
+ "file.address": "Adresse",
562
+ "file.storageOff": "Der Speicher ist nicht konfiguriert, daher nimmt dieses Feld eine Adresse statt eines Uploads.",
563
+ "file.tooLarge": "Diese Datei ist größer als {max}.",
564
+ "file.rejectedType": "Dieser Dateityp wird nicht akzeptiert. Akzeptierte Typen: {accept}.",
432
565
  "role.viewer": "Leser",
433
566
  "role.editor": "Redakteur",
434
567
  "role.owner": "Eigentümer"
package/dist/es.d.mts CHANGED
@@ -15,7 +15,7 @@ import { EponymeLocaleDefinition } from '@karibsen/eponyme';
15
15
  * ```
16
16
  *
17
17
  * No `plural`: Spanish selects the same three forms as the default rule. It differs from English
18
- * in that nought takes the plural — `0 elementos`, not `0 elemento` — and that is a matter of
18
+ * in that nought takes the plural – `0 elementos`, not `0 elemento` – and that is a matter of
19
19
  * wording, which lives in `es.json`, not of which form is chosen.
20
20
  */
21
21
  declare function es(overrides?: Record<string, string>): EponymeLocaleDefinition;
package/dist/es.d.ts CHANGED
@@ -15,7 +15,7 @@ import { EponymeLocaleDefinition } from '@karibsen/eponyme';
15
15
  * ```
16
16
  *
17
17
  * No `plural`: Spanish selects the same three forms as the default rule. It differs from English
18
- * in that nought takes the plural — `0 elementos`, not `0 elemento` — and that is a matter of
18
+ * in that nought takes the plural – `0 elementos`, not `0 elemento` – and that is a matter of
19
19
  * wording, which lives in `es.json`, not of which form is chosen.
20
20
  */
21
21
  declare function es(overrides?: Record<string, string>): EponymeLocaleDefinition;
package/dist/es.mjs CHANGED
@@ -9,6 +9,21 @@ function requireEs () {
9
9
  es$1 = {
10
10
  "action.delete": "Eliminar",
11
11
  "array.add": "Añadir elemento",
12
+ "relation.choose": "Elegir una entrada",
13
+ "relation.change": "Cambiar",
14
+ "relation.remove": "Quitar {entry}",
15
+ "relation.selected": "Seleccionada",
16
+ "relation.search": "Buscar entradas",
17
+ "relation.noMatch": "Ninguna entrada coincide con «{query}».",
18
+ "relation.empty": "Esta colección aún no tiene entradas.",
19
+ "relation.pickerTitle": "{collection}",
20
+ "relation.pickerDescription": "Elige la entrada a la que apunta este campo.",
21
+ "relation.shown": "{count} de {total}",
22
+ "relation.loadMore": "Cargar más",
23
+ "array.item": "Elemento {index}",
24
+ "array.search": "Buscar elementos",
25
+ "array.noMatch": "Ningún elemento coincide con «{query}».",
26
+ "array.itemHasErrors": "Este elemento contiene errores",
12
27
  "array.drag": "Arrastra para reordenar",
13
28
  "array.move": "Mover {item}",
14
29
  "array.remove": "Quitar {item}",
@@ -47,14 +62,15 @@ function requireEs () {
47
62
  "field.duration": "Debe ser un número entero de milisegundos no negativo.",
48
63
  "field.durationMin": "Debe ser como mínimo {min} ms.",
49
64
  "field.durationMax": "Debe ser como máximo {max} ms.",
50
- "duration.hours": "Horas",
51
- "duration.minutes": "Minutos",
52
- "duration.seconds": "Segundos",
53
- "duration.milliseconds": "Milisegundos",
54
65
  "field.email": "Debe ser una dirección de correo válida.",
55
66
  "field.color": "Debe ser un color hexadecimal válido.",
56
67
  "field.slug": "Solo puede contener minúsculas, números y guiones simples.",
57
68
  "field.image": "Debe ser una URL HTTP(S).",
69
+ "field.imageSource": "Esta imagen debe ser {sources}.",
70
+ "field.imageSourceAbsolute": "una dirección en otro sitio",
71
+ "field.imageSourceRelative": "una ruta en este sitio",
72
+ "field.imageSourceUpload": "una imagen subida",
73
+ "field.file": "Debe ser una URL HTTP(S) o un archivo subido.",
58
74
  "field.phone": "Debe ser un número de teléfono válido.",
59
75
  "field.phoneInternational": "Debe ser un número de teléfono en formato internacional, empezando por el prefijo del país.",
60
76
  "field.phoneCountry": "No se aceptan números de {country}. Usa un número de: {accepted}.",
@@ -69,6 +85,7 @@ function requireEs () {
69
85
  "field.videoProviders": "Debe ser {providers}.",
70
86
  "field.videoYoutube": "un enlace de YouTube",
71
87
  "field.videoVimeo": "un enlace de Vimeo",
88
+ "field.videoVkvideo": "un enlace de VK Video",
72
89
  "field.videoUrl": "una URL de vídeo directa",
73
90
  "form.body": "El cuerpo de la petición debe ser un objeto.",
74
91
  "action.cancel": "Cancelar",
@@ -77,10 +94,29 @@ function requireEs () {
77
94
  "accordion.open": "Abrir la carpeta",
78
95
  "accordion.close": "Cerrar la carpeta",
79
96
  "color.custom": "Color personalizado",
97
+ "color.black": "Negro",
98
+ "color.white": "Blanco",
99
+ "color.red": "Rojo",
100
+ "color.amber": "Ámbar",
101
+ "color.green": "Verde",
102
+ "color.blue": "Azul",
103
+ "color.purple": "Morado",
104
+ "color.pink": "Rosa",
80
105
  "password.show": "Mostrar la contraseña",
81
106
  "password.hide": "Ocultar la contraseña",
82
107
  "media.preview": "Vista previa del vídeo",
108
+ "seo.label": "SEO",
109
+ "seo.title": "Título",
110
+ "seo.description": "Descripción",
111
+ "seo.image": "Imagen para compartir",
112
+ "seo.shareSameAsPage": "Reutilizar el título y la descripción al compartir",
113
+ "seo.ogTitle": "Título para compartir",
114
+ "seo.ogDescription": "Descripción para compartir",
83
115
  "tags.remove": "Quitar {tag}",
116
+ "duration.hours": "Horas",
117
+ "duration.minutes": "Minutos",
118
+ "duration.seconds": "Segundos",
119
+ "duration.milliseconds": "Milisegundos",
84
120
  "toast.label": "Notificación",
85
121
  "toast.close": "Cerrar la notificación",
86
122
  "link.configure": "Configurar el enlace",
@@ -135,10 +171,18 @@ function requireEs () {
135
171
  "richText.bulletList": "Lista con viñetas",
136
172
  "richText.orderedList": "Lista numerada",
137
173
  "richText.quote": "Cita",
174
+ "richText.textColor": "Color del texto",
175
+ "richText.highlight": "Resaltado",
176
+ "richText.removeTextColor": "Sin color de texto",
177
+ "richText.removeHighlight": "Sin resaltado",
178
+ "richText.fullscreen": "Pantalla completa",
179
+ "richText.exitFullscreen": "Salir de pantalla completa",
180
+ "richText.selectionToolbar": "Formato de la selección",
138
181
  "richText.undo": "Deshacer",
139
182
  "richText.redo": "Rehacer",
140
183
  "media.youtube": "YouTube",
141
184
  "media.vimeo": "Vimeo",
185
+ "media.vkvideo": "VK Video",
142
186
  "media.direct": "Vídeo directo",
143
187
  "media.unknown": "Dirección no reconocida",
144
188
  "media.placeholder": "Dirección de {providers}",
@@ -148,6 +192,7 @@ function requireEs () {
148
192
  "action.previous": "Anterior",
149
193
  "action.next": "Siguiente",
150
194
  "action.restore": "Restaurar",
195
+ "action.duplicate": "Duplicar",
151
196
  "action.create": "Crear",
152
197
  "action.import": "Importar",
153
198
  "action.export": "Exportar",
@@ -166,6 +211,7 @@ function requireEs () {
166
211
  "folder.entries": "Entradas de {folder}",
167
212
  "entry.draft": "Borrador",
168
213
  "sidebar.logo": "Eponyme",
214
+ "sidebar.skipToContent": "Ir al contenido",
169
215
  "sidebar.expand": "Desplegar la barra lateral",
170
216
  "sidebar.collapse": "Plegar la barra lateral",
171
217
  "sidebar.contentEntries": "Entradas de contenido",
@@ -173,12 +219,15 @@ function requireEs () {
173
219
  "sidebar.searchLabel": "Buscar en las entradas de contenido",
174
220
  "sidebar.allEntries": "Todas las entradas",
175
221
  "sidebar.users": "Usuarios",
222
+ "sidebar.audit": "Registro de auditoría",
223
+ "sidebar.media": "Medios",
176
224
  "sidebar.editables": "Editables",
225
+ "sidebar.loadingMore": "Cargando…",
177
226
  "sidebar.noMatch": "Sin resultados para «{query}».",
178
- "sidebar.logout": "Cerrar sesión",
179
227
  "sidebar.profileMenu": "Perfil de {username}",
180
228
  "sidebar.lightTheme": "Tema claro",
181
229
  "sidebar.darkTheme": "Tema oscuro",
230
+ "sidebar.logout": "Cerrar sesión",
182
231
  "action.loading": "Cargando…",
183
232
  "status.draft": "Borrador",
184
233
  "status.published": "Publicado",
@@ -243,6 +292,9 @@ function requireEs () {
243
292
  "collection.create": "+ Nueva entrada",
244
293
  "collection.createTitle": "Nueva entrada",
245
294
  "collection.createDescription": "Dale un título a la entrada y una URL permanente.",
295
+ "collection.duplicateTitle": "Duplicar la entrada",
296
+ "collection.duplicateDescription": "La nueva entrada parte del borrador de «{title}».",
297
+ "collection.copyOf": "{title} (copia)",
246
298
  "collection.createFailed": "No se ha podido crear esta entrada.",
247
299
  "collection.trash": "Papelera ({count})",
248
300
  "collection.trashHint": "Las entradas en la papelera conservan su historial y su slug. Restaura una para recuperarla.",
@@ -251,6 +303,12 @@ function requireEs () {
251
303
  "collection.scheduledPublish": "Publicación prevista para el {date}",
252
304
  "collection.scheduledUnpublish": "Despublicación prevista para el {date}",
253
305
  "collection.purge": "Eliminar definitivamente",
306
+ "collection.search": "Buscar entradas",
307
+ "collection.searchLabel": "Buscar entradas en esta colección",
308
+ "collection.noMatch": "Ninguna entrada coincide con «{query}».",
309
+ "collection.pagination": "Paginación",
310
+ "collection.page": "Página {page} de {pages}",
311
+ "collection.results": "{count} entradas | {count} entrada | {count} entradas",
254
312
  "collection.empty": "Aún no hay entradas.",
255
313
  "collection.createFirst": "Crear la primera",
256
314
  "collection.confirmTrash": "¿Mover «{title}» a la papelera? Su slug queda reservado hasta que la restaures o la elimines definitivamente.",
@@ -263,6 +321,7 @@ function requireEs () {
263
321
  "collection.purgeDescription": "«{title}», su contenido y todo su historial se perderán. Esta acción no se puede deshacer.",
264
322
  "collection.purgeAction": "Eliminar definitivamente",
265
323
  "collection.purgeFailed": "No se ha podido eliminar esta entrada definitivamente.",
324
+ "collection.restoreFailed": "No se ha podido restaurar esta entrada.",
266
325
  "action.clearAll": "Eliminar todo",
267
326
  "action.actions": "Acciones",
268
327
  "action.yes": "Sí",
@@ -287,6 +346,13 @@ function requireEs () {
287
346
  "submissions.deleteTitle": "¿Eliminar este envío?",
288
347
  "submissions.deleteDescription": "Este envío se eliminará definitivamente. Esta acción no se puede deshacer.",
289
348
  "submissions.deleteAction": "Eliminar envío",
349
+ "submissions.selectAll": "Seleccionar todas las filas de esta página",
350
+ "submissions.selectRow": "Seleccionar este envío",
351
+ "submissions.selected": "{count} seleccionados | {count} seleccionado | {count} seleccionados",
352
+ "submissions.clearSelection": "Borrar la selección",
353
+ "submissions.deleteSelection": "Eliminar la selección",
354
+ "submissions.deleteSelectionTitle": "¿Eliminar los envíos seleccionados?",
355
+ "submissions.deleteSelectionDescription": "Se eliminarán {count} envíos. Esta acción no se puede deshacer. | Se eliminará {count} envío. Esta acción no se puede deshacer. | Se eliminarán {count} envíos. Esta acción no se puede deshacer.",
290
356
  "submissions.deleteFailed": "No se ha podido eliminar este envío.",
291
357
  "submissions.pager": "{count} envíos · página {page} de {pages} | {count} envío · página {page} de {pages} | {count} envíos · página {page} de {pages}",
292
358
  "history.title": "Historial de versiones",
@@ -367,6 +433,24 @@ function requireEs () {
367
433
  "users.credentialsHint": "Copia esta contraseña ahora. No se volverá a mostrar.",
368
434
  "users.temporaryPassword": "Contraseña temporal",
369
435
  "users.credentialsFooter": "El usuario debe sustituirla nada más iniciar sesión.",
436
+ "audit.title": "Registro de auditoría · Eponyme",
437
+ "audit.heading": "Registro de auditoría",
438
+ "audit.description": "Eventos de seguridad y editoriales de esta instancia de Eponyme.",
439
+ "audit.action": "Acción",
440
+ "audit.resource": "Recurso",
441
+ "audit.from": "Desde",
442
+ "audit.to": "Hasta",
443
+ "audit.filter": "Filtrar",
444
+ "audit.clear": "Borrar los filtros",
445
+ "audit.date": "Fecha",
446
+ "audit.actor": "Autor",
447
+ "audit.outcome": "Resultado",
448
+ "audit.system": "Sistema",
449
+ "audit.success": "Correcto",
450
+ "audit.failure": "Fallo",
451
+ "audit.empty": "Ningún evento coincide con estos filtros.",
452
+ "audit.more": "Cargar más",
453
+ "audit.loadFailed": "No se ha podido cargar el registro de auditoría.",
370
454
  "login.title": "Iniciar sesión · Eponyme",
371
455
  "login.heading": "Iniciar sesión",
372
456
  "login.subheading": "Usa tu nombre de usuario y tu contraseña de Eponyme para abrir el panel de contenido.",
@@ -390,6 +474,7 @@ function requireEs () {
390
474
  "server.badCredentials": "Nombre de usuario o contraseña no válidos.",
391
475
  "server.entryNotFound": "Entrada de Eponyme no encontrada.",
392
476
  "server.invalidAction": "Acción editorial desconocida.",
477
+ "server.lifecycleContentForbidden": "Guarda el contenido como borrador antes de ejecutar una acción de publicación.",
393
478
  "server.publicationDisabled": "La publicación está desactivada para esta entrada.",
394
479
  "server.invalidSchedule": "Indica al menos una fecha de publicación válida.",
395
480
  "server.collectionNotFound": "Colección de Eponyme no encontrada.",
@@ -413,6 +498,7 @@ function requireEs () {
413
498
  "server.passwordContainsUsername": "La contraseña no debe contener el nombre de usuario.",
414
499
  "server.passwordUnchanged": "La contraseña nueva debe ser distinta de la actual.",
415
500
  "server.roleRequired": "Se requiere un rol válido.",
501
+ "server.roleUnavailable": "Esta cuenta usa un rol que ya no existe. Pide a un owner que le asigne uno nuevo.",
416
502
  "server.usernameTaken": "Este nombre de usuario ya está en uso.",
417
503
  "server.userNotFound": "Usuario no encontrado.",
418
504
  "server.activeMustBeBoolean": "El campo activo debe ser un booleano.",
@@ -420,15 +506,62 @@ function requireEs () {
420
506
  "server.selfUpdate": "No puedes cambiar el rol ni el estado de tu propia cuenta.",
421
507
  "server.concurrentChange": "Se ha aplicado otro cambio al mismo tiempo. Vuelve a intentarlo.",
422
508
  "server.slugTaken": "Este slug ya está en uso.",
509
+ "server.relationMissing": "Apunta a una entrada que no existe: {slugs}.",
510
+ "server.relationUnknownCollection": "Apunta a «{collection}», que no es una colección.",
511
+ "server.entryReferenced": "Todavía está referenciada por {entries}. Desvincúlala allí primero.",
423
512
  "server.slugInTrash": "Hay una entrada con este slug en la papelera. Restáurala o elimínala definitivamente.",
424
513
  "server.importNoSchema": "No hay ningún esquema configurado para esta entrada.",
425
514
  "server.importInTrash": "Hay una entrada con este nombre en la papelera. Restáurala o elimínala definitivamente.",
515
+ "server.importRelationMissing": "«{name}» apunta a «{target}», que no está ni en el archivo ni en esta aplicación.",
426
516
  "server.passwordChangeFailed": "No se ha podido cambiar la contraseña.",
427
517
  "server.userCreateFailed": "No se ha podido crear este usuario.",
428
518
  "server.entryConflict": "Otra persona ha modificado esta entrada. Recarga la página para obtener la última versión.",
519
+ "server.revisionRequired": "Esta acción necesita la versión de la entrada sobre la que actúas. Recarga la página e inténtalo de nuevo.",
429
520
  "server.rateLimited": "Demasiadas solicitudes. Inténtalo de nuevo más tarde.",
430
521
  "server.invalidJson": "El cuerpo de la solicitud debe ser JSON válido.",
431
522
  "server.bodyTooLarge": "El cuerpo de la solicitud es demasiado grande.",
523
+ "server.notFound": "No encontrado.",
524
+ "server.storageDisabled": "El almacenamiento de archivos no está configurado.",
525
+ "server.mediaInvalidKey": "Referencia de archivo no válida.",
526
+ "server.mediaInvalidType": "Tipo de archivo no válido.",
527
+ "server.mediaInvalidSize": "Tamaño de archivo no válido.",
528
+ "server.mediaTooLarge": "El archivo es demasiado grande. El límite es {max}.",
529
+ "server.mediaRejectedType": "Este tipo de archivo no se acepta. Tipos aceptados: {accept}.",
530
+ "server.mediaEmptyBody": "La subida no contenía datos.",
531
+ "server.mediaIncompleteUpload": "La subida no se completó. Inténtalo de nuevo.",
532
+ "server.mediaReadOnly": "El almacenamiento de archivos está mal configurado en este despliegue y no puede aceptar subidas. Pide a quien lo desplegó que configure un bucket.",
533
+ "library.title": "Medios",
534
+ "library.description": "Archivos subidos desde el panel, los más recientes primero.",
535
+ "library.upload": "Subir",
536
+ "library.uploading": "Subiendo {name}…",
537
+ "library.empty": "Aún no hay archivos.",
538
+ "library.emptyHint": "Sube uno para usarlo en una entrada.",
539
+ "library.search": "Buscar archivos",
540
+ "library.noMatch": "Ningún archivo coincide con «{query}».",
541
+ "library.loadMore": "Cargar más",
542
+ "library.loading": "Cargando…",
543
+ "library.select": "Seleccionar",
544
+ "library.delete": "Eliminar",
545
+ "library.deleteTitle": "¿Eliminar este archivo?",
546
+ "library.deleteMessage": "{name} se quitará del almacenamiento. Las entradas que ya apuntan a él mostrarán un archivo roto.",
547
+ "library.deleted": "Archivo eliminado.",
548
+ "library.copyUrl": "Copiar la URL",
549
+ "library.copied": "URL copiada.",
550
+ "library.uploadFailed": "La subida ha fallado.",
551
+ "library.cancel": "Cancelar",
552
+ "library.pick": "Elegir de la biblioteca",
553
+ "library.count": "{count} archivos",
554
+ "file.choose": "Subir un archivo",
555
+ "file.replace": "Reemplazar",
556
+ "file.remove": "Quitar",
557
+ "file.open": "Abrir en una pestaña nueva",
558
+ "file.drop": "Suelta un archivo aquí",
559
+ "file.or": "o",
560
+ "file.browse": "explorar",
561
+ "file.address": "Dirección",
562
+ "file.storageOff": "El almacenamiento no está configurado, así que este campo toma una dirección en lugar de una subida.",
563
+ "file.tooLarge": "Este archivo supera {max}.",
564
+ "file.rejectedType": "Este tipo de archivo no se acepta. Tipos aceptados: {accept}.",
432
565
  "role.viewer": "Lector",
433
566
  "role.editor": "Editor",
434
567
  "role.owner": "Propietario"
package/dist/fr.d.mts CHANGED
@@ -14,7 +14,7 @@ import { EponymeLocaleDefinition } from '@karibsen/eponyme';
14
14
  * })
15
15
  * ```
16
16
  *
17
- * No `plural`: French selects the same three forms as the default rule — nought and one take the
17
+ * No `plural`: French selects the same three forms as the default rule – nought and one take the
18
18
  * singular, everything above takes the plural. What differs from English is the wording of the
19
19
  * zero form, and that lives in `fr.json`, not in the rule.
20
20
  */