-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathtranslation.ts
708 lines (672 loc) · 32.8 KB
/
translation.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
import { Capitalize } from "@app/utils/string";
import type { Locale } from "~/locales/types";
import { SearchItemHeader_Keys } from "../shared-enums";
import { Rules } from "./legal";
import tags from "./tags";
type Gender = "f" | "m" | "n" | "a";
const definiteArticleDative: { [Property in Gender]-?: string } = {
m: "dem",
f: "der",
n: "dem",
a: "der/dem",
};
const indefiniteArticleNominative: { [Property in Gender]-?: string } = {
m: "ein",
f: "eine",
n: "ein",
a: "ein/e",
};
const demonstrativePronounDative: { [Property in Gender]-?: string } = {
m: "diesem",
f: "dieser",
n: "diesem",
a: "dieser/m",
};
const secondPersonPossesivePronouns: { [Property in Gender]-?: string } = {
m: "dein",
f: "deine",
n: "dein",
a: "dein/e",
};
const teamTypeGenitive: { [noun: string]: string } = {
Organisation: "Organisation",
Projekt: "Projektes",
};
const genderOf: { [noun: string]: Gender } = {
Organisation: "f",
Projekt: "n",
Mod: "f",
Datamod: "f",
Shader: "m",
Modpack: "n",
Plugin: "n",
Ressourcenpaket: "n",
};
export default {
common: {
settings: "Einstellungen",
success: "Erfolgreich",
error: "Fehler",
home: "Startseite",
somethingWentWrong: "Etwas ist schiefgelaufen!",
redirecting: "Weiterleiten...",
accept: "Akzeptieren",
decline: "Ablehnen",
download: "Herunterladen",
report: "Melden",
copyId: "ID kopieren",
all: "Alle",
// ? New string
// noResults: "No results",
},
count: {
downloads: (count: number) => {
if (count === 1) return ["", count.toString(), "Download"];
return ["", count.toString(), "Downloads"];
},
followers: (count: number) => {
if (count === 1) return ["", count.toString(), "Follower"];
return ["", count.toString(), "Followers"];
},
projects: (count: number) => {
if (count === 1) return ["", count.toString(), "Projekt"];
return ["", count.toString(), "Projekte"];
},
members: (count: number) => {
if (count === 1) return ["", count.toString(), "Mitglied"];
return ["", count.toString(), "Mitglieder"];
},
},
navbar: {
mod: "Mod",
mods: "Mods",
datamod: "Datamod",
datamods: "Datamods",
"resource-pack": "Ressourcenpaket",
"resource-packs": "Ressourcenpakete",
shader: "Shader",
shaders: "Shader",
modpack: "Modpack",
modpacks: "Modpacks",
plugin: "Plugin",
plugins: "Plugins",
signout: "Ausloggen",
dashboard: "Dashboard",
profile: "Profil",
skipToMainContent: "Zum Hauptinhalt vorspringen",
},
homePage: {
title: (projectType: string) => ["Der Platz für Cosmic Reach ", projectType, ""],
desc: "Der beste Platz für deine Cosmic Reach Mods. Entdecke, spiele und erstelle Inhalte, alles an einem Ort.",
exploreMods: "Entdecke Mods",
},
auth: {
email: "Email",
password: "Passwort",
changePassword: "Passwort ändern",
dontHaveAccount: "Du hast kein Konto?",
alreadyHaveAccount: "Du hast bereits ein Konto?",
forgotPassword: "Passwort vergessen?",
signupWithProviders: "Registriere dich mit einem dieser Anmeldemethode:",
aggrement:
"Mit dem erstellen eines Kontos akzeptierst du unsere [Bedingungen](/legal/terms) und [Privatsphärebestimmungen](/legal/privacy).",
invalidCode: "Ungültiger oder abgelaufener Code",
didntRequest: "Nicht angefragt?",
checkSessions: "Angemeldete Sitzungen überprüfen",
confirmNewPass: "Neues Passwort bestätigen",
confirmNewPassDesc:
"Ein neues Passwort wurde letztens zu deinem Konto hinzugefügt und wartet auf Bestätigung. Bestätige unten, dass du das warst.",
newPass: "Neues Passwort",
newPass_label: "Neues Passwort eingeben",
confirmPass: "Passwort bestätigen",
confirmPass_label: "Passwort erneut eingeben",
deleteAccount: "Konto löschen",
deleteAccountDesc:
"Durch das Löschen des Kontos werden alle deine Daten von unserer Datenbank entfernt. Es gibt kein Zurück, nachdem du dein Konto gelöscht hast.",
enterEmail: "E-Mail-Adresse eingeben",
},
settings: {
account: "Konto",
preferences: "Präferenzen",
publicProfile: "Öffentliches Profil",
accountAndSecurity: "Konto und Sicherheit",
sessions: "Sitzungen",
toggleFeatures: "Funktionen ein- und ausschalten",
enableOrDisableFeatures: "Schalte bestimmte Funktionen für dieses Gerät ein oder aus.",
viewTransitions: "Übergänge zeigen",
viewTransitionsDesc: "Aktiviert Übergänge (morph), während dem Navigieren zwischen Seiten.",
accountSecurity: "Konto-Sicherheit",
changePassTitle: "Passwort vom Konto ändern",
addPassDesc: "Füge ein Passwort hinzu, um den Passwortlogin zu ermöglichen.",
manageAuthProviders: "Anmeldemethoden verwalten",
manageProvidersDesc: "Füge Anmeldemethoden zum Konto hinzu oder entferne sie.",
removePass: "Passwort entfernen",
removePassTitle: "Passwort vom Konto entfernen",
removePassDesc: "Nach dem entfernen des Passwort kannst du dich nicht mehr mit ihm anmelden.",
enterCurrentPass: "Gib das aktuelle Passwort ein",
addPass: "Passwort hinzufügen",
addPassDialogDesc: "Du wirst diese Passwort benutzen können,. um dich mit deinem Konto anzumelden.",
manageProviders: "Verwalten",
linkedProviders: "Verknüpfte Anmeldemethode",
linkProvider: (provider: string) => `Verknüpfe ${provider} mit deinem Konto`,
link: "verknüpfen", // Verb
sureToDeleteAccount: "Bist du sicher, dass du dein Konto löschen willst?",
profileInfo: "Profil",
profileInfoDesc: (site: string) => `Dein Profil ist öffentlich sichtbar auf ${site}.`,
profilePic: "Profilbild",
bio: "Bio",
bioDesc: "Eine kurze Beschreibung, um jedem ein wenig über dich zu erzählen.",
visitYourProfile: "Profil besuchen",
showIpAddr: "IP Adressen anzeigen",
sessionsDesc:
"Diese Geräte sind aktuell in deinen Account eingeloggt; du kannst jede Sitzung jederzeit beenden. Solltest du etwas sehen, das du nicht kennst, beende die entsprechende Sitzung sofort und ändere das Passwort deiner Anmeldemethode.",
ipHidden: "IP versteckt",
lastAccessed: (when: string) => `Zuletzt ${when} zugegriffen`,
created: (when: string) => `${Capitalize(when)} erstellt`, // eg: Created a month ago
sessionCreatedUsing: (providerName: string) => `Sitzung erstellt über ${providerName}`,
currSession: "Aktuelle Sitzung",
revokeSession: "Sitzung beenden",
},
dashboard: {
dashboard: "Dashboard",
overview: "Übersicht",
notifications: "Benachrichtigungen",
activeReports: "Aktive Meldungen",
analytics: "Analysen",
projects: "Projekte",
organizations: "Organisationen",
collections: "Sammlungen",
revenue: "Einnahmen",
manage: "Verwalten",
seeAll: "Alles anzeigen",
viewNotifHistory: "Benachrichtungsverlauf anzeigen",
noUnreadNotifs: "Du hast keine ungelesenen Benachrichtigungen.",
totalDownloads: "Gesamtdownloads",
fromProjects: (count: number) => `von ${count} Projekten`,
totalFollowers: "Gesamtfollower",
viewHistory: "Verlauf anzeigen",
markAllRead: "Alle als gelesen markieren",
markRead: "Als gelesen markieren",
deleteNotif: "Benachrichtigung löschen",
received: "Erhalten",
history: "Verlauf",
notifHistory: "Benachrichtigungsverlauf",
createProjectInfo: "Du hast keine Projekte. Klicke auf den obigen Knopf, um eines zu erstellen.",
type: "Typ",
status: "Status",
createProject: "Ein Projekt erstellen",
creatingProject: "Erstellen eines Projektes",
chooseProjectType: "Projekttyp wählen",
projectTypeDesc: "Wähle den passenden Typ für dein Projekt",
createOrg: "Organisation erstellen",
createAnOrg: "Eine Organisation erstellen",
creatingOrg: "Erstellen einer Organisation",
enterOrgName: "Organisationsname eingeben",
enterOrgDescription: "Gebe eine kurze Beschreibung für deine Organisation ein",
},
search: {
// Search labels
project: "Entdecke Projekte",
mod: "Entdecke Mods",
"resource-pack": "Entdecke Ressourcenpakete",
shader: "Entdecke Shader",
plugin: "Entdecke Plugins",
modpack: "Entdecke Modpacks",
datamod: "Entdecke Datamods",
// Sorting methods
showPerPage: "Zeige pro Seite",
sortBy: "Sortiere nach",
relevance: "Relevanz",
downloads: "Downloads",
follow_count: "Followerzahl",
recently_updated: "Zuletzt aktualisiert",
recently_published: "Zuletzt veröffentlicht",
filters: "Filter",
searchFilters: "Durchsuche Filter",
loaders: "Loader",
gameVersions: "Spielversionen",
channels: "Kanäle",
environment: "Umgebung",
category: "Kategorien",
feature: "Funktionen",
resolution: "Auflösung",
performance_impact: "Performance-Einfluss",
license: "Lizenz",
openSourceOnly: "Nur Open Source",
clearFilters: "Alle Filter entfernen",
tags: tags,
/**
* More info [here](https://github.com/CRModders/cosmic-mod-manager/tree/main/apps/frontend/app/locales/en/translation.ts#L216)
*/
itemHeader: (project: string, author: string) => {
return [
[SearchItemHeader_Keys.PROJECT_NAME, project],
[SearchItemHeader_Keys.BY, "by"],
[SearchItemHeader_Keys.AUTHOR_NAME, author],
];
},
},
project: {
compatibility: "Kompatibilität",
environments: "Umgebungen",
reportIssues: "Fehler melden",
viewSource: "Quellcode anzeigen",
visitWiki: "Wiki besuchen",
joinDiscord: "Discord Server beitreten",
featuredVersions: "Vorgestellte Versionen",
creators: "Ersteller",
organization: "Organisation",
project: "Projekt",
details: "Details",
updatedAt: (when: string) => `${Capitalize(when)} aktualisiert`, // eg: Updated 3 days ago
publishedAt: (when: string) => `${Capitalize(when)} veröffentlicht`, // eg: Published 3 days ago
gallery: "Gallerie",
changelog: "Änderungsverlauf",
versions: "Versionen",
noProjectDesc: "Keine Projektbeschriebung vorhanden",
uploadNewImg: "Neues Bild hochladen",
uploadImg: "Bild hochladen",
galleryOrderingDesc: "Bilder mit höherer Sortierung werden zuerst aufgelistet.",
featuredGalleryImgDesc:
"Ein hervorgehobenes Galleriebild taucht in der Suche und auf der Projektkarte auf. Nur ein Galleriebild kann hervorgehoben werden.",
addGalleryImg: "Galleriebild hinzufügen",
featureImg: "Bild hervorheben",
unfeatureImg: "Bild nicht mehr hervorheben",
sureToDeleteImg: "Willst du dieses Bild wirklich löschen?",
deleteImgDesc: "Das wird das Bild für immer entfernen (also wirklich für immer immer).",
editGalleryImg: "Bild bearbeiten",
currImage: "Aktuelles Bild",
// Version
uploadVersion: "Version hochladen",
uploadNewVersion: "Neue Version hochladen",
showDevVersions: "Development-Versionen anzeigen",
noProjectVersions: "Keine Versionen gefunden",
stats: "Statistiken",
published: "Veröffentlicht", // Used for table headers
downloads: "Downloads", // Used for table headers
openInNewTab: "In neuem Tab öffnen",
copyLink: "Link kopieren",
doesNotSupport: (project: string, version: string, loader: string) => {
return `${project} unterstützt ${version} für ${loader} nicht`;
},
downloadProject: (project: string) => `Lade ${project} herunter`,
gameVersion: "Spielversion:",
selectGameVersion: "Spielversion wählen",
platform: "Platform:",
selectPlatform: "Platform wählen",
onlyAvailableFor: (project: string, platform: string) => `${project} ist nur für ${platform} verfügbar`,
noVersionsAvailableFor: (gameVersion: string, loader: string) => `Keine Versionen für ${gameVersion} auf ${loader} verfügbar`,
declinedInvitation: "Abgelehnte Einladung",
teamInvitationTitle: (teamType: string) =>
`Einladung, ${definiteArticleDative[genderOf[teamType] || ("a" as Gender)]} ${teamType} beizutreten`, // teamType = organization | project
teamInviteDesc: (teamType: string, role: string) =>
`Du wurdest eingeladen, in ${demonstrativePronounDative[genderOf[teamType] || ("a" as Gender)]} ${teamType} Mitglied mit der Rolle '${role}' zu sein.`,
browse: {
mod: "Durchsuche Mods",
datamod: "Durchsuche Datamods",
"resource-pack": "Durchsuche Ressourcenpakete",
shader: "Durchsuche Shaders",
modpack: "Durchsuche Modpacks",
plugin: "Durchsuche Plugins",
},
rejected: "Abgelehnt",
withheld: "Zurückgehalten",
archivedMessage: (project: string) =>
`${project} wurde archiviert. Es wird keine weiteren Updates mehr geben, außer der Author entscheidet sich, das Projekt zu ent-archivieren.`,
publishingChecklist: {
required: "Benötigt",
suggestion: "Vorschlag",
review: "Prüfung",
progress: "Fortschritt:",
title: "Veröffentlichungs-Checkliste",
uploadVersion: "Eine Version hochladen",
uploadVersionDesc: "Wenigstens eine Version ist benötigt, um das Projekt zur Prüfung vorzulegen.",
addDescription: "Beschribung hinzufügen",
addDescriptionDesc: "Eine Beschreibung, die den Sinn und die Funktion des Projektes klar darlegt, wird benötigt.",
addIcon: "Ein Icon hinzufügen",
addIconDesc:
"Dein Projekt sollte ein schön-aussehendes Icon haben, um es eindeutig und auf einen Blick identifizieren zu können.",
featureGalleryImg: "Ein Galleriebild hervorheben",
featureGalleryImgDesc: "Hervorgehobene Galleriebilder sind für viele Nutzer der erste Eindruck von deinem Projekt.",
selectTags: "Tags wählen",
selectTagsDesc: "Wähle alle Tags, die auf dein Projekt zutreffen.",
addExtLinks: "Externe Links hinzufügen",
addExtLinksDesc: "Füge jegliche relevante Links hinzu, wie zum Quellcode, zum Bugtracker, oder einer Discord-Einladung.",
selectLicense: "Lizenz wählen",
selectLicenseDesc: (projectType: string) =>
`Wähle die Lizenz, unter der ${secondPersonPossesivePronouns[genderOf[projectType] || ("a" as Gender)]} ${projectType} verbreitet wird.`,
selectEnv: "Wähle unterstützte Umgebungen",
selectEnvDesc: (projectType: string) =>
`Wähle, ob ${secondPersonPossesivePronouns[genderOf[projectType] || ("a" as Gender)]} ${projectType} Client- und/oder Server-seitige Funktionen hat.`,
submitForReview: "Zur Prüfung vorlegen",
submitForReviewDesc:
"Dein Projekt kann nur von den Mitgliedern des Projektes gesehen werden. Es muss von Moderatoren zugelassen werden, um veröffentlicht zu werden.",
resubmitForReview: "Erneut zur Prüfung vorlegen",
resubmit_ApprovalRejected:
"Dein Projekt wurde von einem unserer Moderatoren abgelehnt. In den meisten Fällen kannst du das Prokekt, nachdem du dich mit der Nachricht des Moderators befasst hast, erneut vorlegen.",
resubmit_ProjectWithheld:
"Dein Projekt wurde von einem unserer Moderatoren zurückgehalten. In den meisten Fällen kannst du das Prokekt, nachdem du dich mit der Nachricht des Moderators befasst hast, erneut vorlegen.",
visit: {
versionsPage: "Versionsseite öffnen",
descriptionSettings: "Beschreibungseinstellungen öffnen",
generalSettings: "Allgemeine Einstellungen öffnen",
galleryPage: "Gallerie öffnen",
tagSettings: "Tag-Einstellungen öffnen",
linksSettings: "Link-Einstellungen öffnen",
licenseSettings: "Lizenz-Einstellungen öffnen",
moderationPage: "Moderationsseite öffnen",
},
},
},
version: {
deleteVersion: "Version löschen",
sureToDelete: "Bist du sicher, dass du diese Version löschen willst?",
deleteDesc: "Dadurch wird diese Version für immer entfernt (also wirklich für immer immer).",
enterVersionTitle: "Gib den Versionstitel ein...",
feature: "Version hervorheben",
unfeature: "Version nicht mehr hervorheben",
featured: "Hervorgehoben",
releaseChannel: "Veröffentlichungskanal",
versionNumber: "Versionsnummer",
selectLoaders: "Loader wählen",
selectVersions: "Versionen wählen",
cantAddCurrProject: "Du kannst nicht dieses Projekt nicht abhängig von sich selbst machen.",
cantAddDuplicateDep: "Du kannst nicht die gleiche Abhängigkeit zweimal hinzufügen.",
addDep: "Abhängigkeit hinzufügen",
enterProjectId: "Projekt-ID eingeben",
enterVersionId: "Versions-ID eingeben",
dependencies: "Abhängigkeiten",
files: "Dateien",
depencency: {
required: "Benötigt",
optional: "Optional",
incompatible: "Unvollständig",
embedded: "Eingebettet",
required_desc: (version: string) => `Version ${version} ist benötigt`,
optional_desc: (version: string) => `Version ${version} ist optional`,
incompatible_desc: (version: string) => `Version ${version} ist inkompatibel`,
embedded_desc: (version: string) => `Version ${version} ist eingebettet`,
},
primary: "Primär",
noPrimaryFile: "Keine primäre Datei gewählt",
chooseFile: "Datei wählen",
replaceFile: "Datei ersetzen",
uploadExtraFiles: "Zusätzliche Dateien hochladen",
uploadExtraFilesDesc: "Nutzbar für zusätzliche Dateien, wie Quellen, Dokumentation, etc.",
selectFiles: "Dateien wählen",
primaryFileRequired: "Eine primäre Datei wird benötigt",
metadata: "Metadaten",
devReleasesNote: "Notiz:- Ältere Development-Versionen werden automatisch gelöscht, sobaeit eine neue Veröffentlicht wird.",
publicationDate: "Veröffentlichungsdatum",
publisher: "Veröffentlichender",
versionID: "Versions ID",
copySha1: "SHA-1 Hash kopieren",
copySha512: "SHA-512 Hash kopieren",
copyFileUrl: "Datei-URL kopieren",
},
projectSettings: {
settings: "Projekteinstellungen",
general: "Allgemein",
tags: "Tags",
links: "Links",
members: "Mitglieder",
view: "Zeige",
upload: "Hochladen",
externalLinks: "Externe Links",
issueTracker: "Bugtracker",
issueTrackerDesc: "Ein Ort für Nutzer, Fehler und Bedenken über dein Projekt zu äußern.",
sourceCode: "Quellcode",
sourceCodeDesc: "Eine Seite oder ein Repository, welches den Quellcode deines Projektes enthält.",
wikiPage: "Wiki-Seite",
wikiPageDesc: "Eine Seite die Informationen, Dokumentation und Hilfe zu deinem Projekt enthält.",
discordInvite: "Discord-Einladung",
discordInviteDesc: "Ein Einladungslink zu deinem Discord-Server.",
licenseDesc1: (projectType: string) =>
`Es ist sehr wichtig, die richtige Lizenz für ${secondPersonPossesivePronouns[genderOf[projectType] || ("a" as Gender)]} ${projectType} zu wählen. Du kannst eine von unserer Liste wählen, oder eine eigene Lizenz festlegen. Du kannst auch eine URL zu deiner gewählten Lizenz festlegen; andernfallst wird der Text der Lizenz angezeigt.`,
licenseDesc2:
"Gib einen gültigen [SPDX Lizenz-Identifikator](https://spdx.org/licenses) in den markierten Bereich ein. Wenn deine Lizenz keinen SPDX-Identifikator hat (zum Beispiel, wenn du die Lizenz selber erstellt hast, oder, wenn sie sich speziell auf Cosmic Reach bezieht), setze einfach einen Haken in der Box und gib stattdessen den Namen der Lizenz ein.",
selectLicense: "Lizenz wählen",
custom: "Eigene",
licenseName: "Lizenzname",
licenseUrl: "Lizenz-URL (optional)",
spdxId: "SPDX-Identifikator",
doesntHaveSpdxId: "Die Lizenz hat keinen SPDX-Identifikator",
tagsDesc:
"Das korrekte Wählen von Tags ist wichtig, um Leuten zu helfen, deine Mod zu finden. Stelle sicher, alle Tags zu wählen, die zutreffen.",
tagsDesc2: (projectType: string) =>
`Wähle alle Kategorien aut, welche Themen oder Funktionen ${secondPersonPossesivePronouns[genderOf[projectType] || ("a" as Gender)]} ${projectType} wiederspiegeln.`,
featuredCategories: "Hervorgehobene Kategorien",
featuredCategoriesDesc: (count: number) => `Du kannst bis zu ${count} deiner relevantesten Tags hervorheben.`,
selectAtLeastOneCategory: "Wähle mindestens eine Kategorie, um eine Kategorie hervorzuheben.",
projectInfo: "Projekt",
clientSide: "Clientseitig",
clientSideDesc: (projectType: string) =>
`Wähle dies, wenn ${secondPersonPossesivePronouns[genderOf[projectType] || ("a" as Gender)]} ${projectType} Client-seitige Funktionalität hat.`,
serverSide: "Serverseitg",
serverSideDesc: (projectType: string) =>
`Wähle dies, wenn ${secondPersonPossesivePronouns[genderOf[projectType] || ("a" as Gender)]} ${projectType} Server-seitige Funktionalität hat.`,
unknown: "Unbekannt",
// ? New strings
// clientOrServer: "Client or server",
// clientAndServer: "Client and server",
required: "Benötigt",
optional: "Optional",
unsupported: "Nicht unterstützt",
visibilityDesc:
"Gelistete und archivierte Projekte sind in der Suche sichtbar. Ungelistete Projekte sind veröffentlicht, aber nicht in der Suche oder auf Benutzerseiten sichtbar. Private Projekte können nur von Mitgliedern des Projektes eingesehen werden.",
ifApproved: "Wenn von den Moderatoren zugelassen:",
visibleInSearch: "Sichtbar in der Suche",
visibleOnProfile: "Sichtbar auf deinem Profil",
visibleViaUrl: "Auffindbar per URL",
visibleToMembersOnly: "Nur Mitglieder werden das Projekt sehen können",
listed: "Gelistet",
private: "Privat",
unlisted: "Ungelistet",
archived: "Archiviert",
deleteProject: "Projekt löschen",
deleteProjectDesc: (site: string) =>
`Entfernt sein Projekt von ${site}s Servern und aus der Suche. Du löschst dein Projekt damit entgültig, sei also extra-vosichtig!`,
sureToDeleteProject: "Bist du sicher, dass du dieses Projekt löschen willst?",
deleteProjectDesc2:
"Wenn du fortfährst, werden alle Versionen und jegliche zusammenhängende Information von unseren Server entfernt. Das kann die Funktion anderer Projekte stören oder sie kaputt machen, sei also vorsichtig.",
typeToVerify: (projectName: string) => `Zum Verifizieren gib unten **${projectName}** ein:`,
typeHere: "Hier eingeben...",
manageMembers: "Mitglieder verwalten",
leftProjectTeam: "Du hast das Team verlassen",
leaveOrg: "Organisation verlassen",
leaveProject: "Projekt verlassen",
leaveOrgDesc: "Entferne dich selbst als Mitglied von dieser Organisation.",
leaveProjectDesc: "Entferne dich selbst als Mitglied von diesem Projekt.",
sureToLeaveTeam: "Willst du dieses Team wirklich verlassen?",
cantManageInvites: "Du hast keine Berechtigungen, Einladungen zu verwalten",
inviteMember: "Mitglied einladen",
inviteProjectMemberDesc: "Gib den Nutzernamen der Person ein, die du gerne als Mitglied zu diesem Projekt einladen würdest.",
inviteOrgMemberDesc: "Gib den Nutzernamen der Person ein, die du gerne als Mitglied zu dieser Organisation einladen würdest.",
invite: "Einladung",
memberUpdated: "Mitglied erfolgreich aktualisiert",
pending: "Ausstehend",
role: "Rolle",
roleDesc: "Der Titel der Rolle die dieses Mitglied für dieses Team spielt.",
permissions: "Berechtigungen",
perms: {
upload_version: "Version hochladen",
delete_version: "Version löschen",
edit_details: "Details bearbeiten",
edit_description: "Beschreibung bearbeiten",
manage_invites: "Einladungen verwalten",
remove_member: "Mitglied entfernen",
edit_member: "Mitglied bearbeiten",
delete_project: "Projekt löschen",
view_analytics: "Analysen ansehen",
view_revenue: "Einnahmen sehen",
},
owner: "Besitzer",
removeMember: "Mitglied entfernen",
transferOwnership: "Besitz übertragen",
overrideValues: "Werte überschreiben",
overrideValuesDesc:
"Standardwerte der Organisation überschreiben und Berechtigungen und Rollen für den Nutzer für dieses Projekt festlegen.",
projectNotManagedByOrg:
"Dieses Projekt wird nicht von einer Organisation verwaltet. Wenn du einer Organisation angehörst, kannst du die Verwaltungsrechte an diese übertragen.",
transferManagementToOrg: "Verwaltungsrechte übertragen",
selectOrg: "Organisation wählen",
projectManagedByOrg: (orgName: string) =>
`Dieses Projekt wird von ${orgName} verwaltet. Die Standardwerte für Mitgleiderberechtigungen werden in den Organisationseinstellungen festgelegt. Du kannst sie unten überschreiben.`,
removeFromOrg: "Aus Organisation entfernen",
memberRemoved: "Mitglied erfolgreich entfernt",
sureToRemoveMember: (memberName: string) => `Möchtest du ${memberName} wirklich aus diesem Team entfernen?`,
ownershipTransfered: "Besitz erfolgreich übertragen",
sureToTransferOwnership: (memberName: string) => `Möchtest du wirklich ${memberName} zum Besitzer machen?`,
},
organization: {
orgDoesntHaveProjects: "Diese Organisation hat noch keine Projekte.",
manageProjects: "Projekte verwalten",
orgSettings: "Organizationseinstellungen",
transferProjectsTip: "Du kannst über Projekteinstellungen > Mitglieder existierende Projekte zu dieser Organisation übertragen",
noProjects_CreateOne: "Diese Organisation hat noch keine Projekte. Klicke auf den Knopf oben, um eines zu erstellen.",
orgInfo: "Organisation",
deleteOrg: "Organisation löschen",
deleteOrgDesc:
"Durch das Löschen deiner Organisation werden alle Projekte zum Organisationsinhaber verschoben. Das kann nicht rückgängig gemacht werden.",
sureToDeleteOrg: "Bist du sicher, dass du diese Organisation löschen willst?",
deleteOrgNamed: (orgName: string) => `Organisation ${orgName} löschen`,
deletionWarning: "Dadurch wird die Organisation für immer gelöscht (also wirklich für immer immer).",
perms: {
edit_details: "Details bearbeiten",
manage_invites: "Einladungen verwalten",
remove_member: "Mitglied entfernen",
edit_member: "Mitglied bearbeiten",
add_project: "Projekt hinzufügen",
remove_project: "Projekt entfernen",
delete_organization: "Organisation löschen",
edit_member_default_permissions: "Standard-Mitgliederberechtigungen bearbeiten",
},
},
user: {
// ? New string
// admin: "Admin",
moderator: "Moderator",
doesntHaveProjects: (user: string) => `${user} hat noch keine Projekte.`,
isntPartOfAnyOrgs: (user: string) => `${user} ist nicht Mitglied einer Organization.`,
joined: (when: string) => `${Capitalize(when)} beigetreten`, // eg: Joined 2 months ago
},
footer: {
company: "Firma",
terms: "Nutzungsbedingunen",
privacy: "Privatsphäre",
rules: "Regeln",
resources: "Ressourcen",
docs: "Dokumentation",
status: "Status",
support: "Support",
socials: "Sociale Medien",
about: "Über Uns",
changeTheme: "Theme wechseln",
siteOfferedIn: (site: string) => `${site} angeboten in:`,
},
legal: {
legal: "Legal",
rulesTitle: "Inhaltsregeln",
contentRules: Rules,
termsTitle: "Nutzungsbedingungen",
copyrightPolicyTitle: "Copyright-Bestimmungen",
securityNoticeTitle: "Sicherheitsinformation",
privacyPolicyTitle: "Privatsphärebestimmungen",
},
moderation: {
review: "Review projects",
reports: "Meldungen",
moderation: "Moderation",
statistics: "Statistiken",
authors: "Autoren",
projectsInQueue: (count: number) => {
if (count === 1) return "Es ist ein Projekt in der Warteschlange.";
return `Es sind ${count} Projekte in der Warteschlange.`;
},
// hours will either be 24 or 48
projectsQueuedFor: (count: number, hours: number) => {
if (count === 1) return `Ein Projekt war über ${hours} Stunden in der Warteschlange.`;
return `${count} Projekte waren über ${hours} Stunden in der Warteschlange.`;
},
submitted: (when: string) => `${Capitalize(when)} abgeschickt`, // eg: Submitted 4 hours ago, (the date string comes from the localized phrases defined at end of the file)
viewProject: "Projekt anzeigen",
awaitingApproval: "Project ist in der Warteschlange zur Prüfung",
draft: "Entwurf",
approve: "Zulassen",
reject: "Ablehnen",
withhold: "Zurückhalten",
},
form: {
login: "Anmelden",
login_withSpace: "Anmelden",
signup: "Registrieren",
email: "Email",
username: "Nutzername",
password: "Passwort",
name: "Name",
icon: "Icon",
details: "Details",
description: "Beschreibung",
id: "ID",
url: "URL",
projectType: "Projekttyp",
visibility: "Sichtbarkeit",
summary: "Zusammenfassung",
title: "Titel",
ordering: "Sortierung",
featured: "Vorgestellt",
continue: "Fortfahren",
submit: "Einreichen",
remove: "Entfernen",
confirm: "Bestätigen",
edit: "Bearbeiten",
delete: "Löschen",
cancel: "Abbrechen",
saveChanges: "Änderungen speichern",
uploadIcon: "Icon hochladen",
removeIcon: "Icon entfernen",
noFileChosen: "Keine Datei gewählt",
showAllVersions: "Zeige alle Versionen",
},
error: {
sthWentWrong: "Ups! Etwas ist schiefgelaufen",
errorDesc:
"Sieht aus als wäre etwas kaputt. Während wir versuchen, das Problem zu lösen, kannst du versuchen, die Seite neu zu laden.",
refresh: "Neu laden",
pageNotFound: "404 | Seite nicht gefunden.",
pageNotFoundDesc: "Sorry, wir konnten die Seite, nach der du gesucht hast, nicht finden.",
projectNotFound: "Projekt nicht gefunden",
projectNotFoundDesc: (type: string, slug: string) =>
`${Capitalize(indefiniteArticleNominative[genderOf[type] || ("a" as Gender)])} ${type} mit der ID "${slug}" existiert nicht.`,
},
editor: {
heading1: "Überschrift 1",
heading2: "Überschrift 2",
heading3: "Überschrift 3",
bold: "Fett",
italic: "Italic",
underline: "Unterstrichen",
strikethrough: "Durchgestrichen",
code: "Code",
spoiler: "Spoiler",
bulletedList: "Bulleted list",
numberedList: "Numbered list",
quote: "Zitat",
insertLink: "Link einfügen",
label: "Label",
enterLabel: "Label eingeben",
link: "Link", // Noun
enterUrl: "Link-URL eingeben",
insertImage: "Bild einfügen",
imgAlt: "Beschriebung (alt-Text)",
imgAltDesc: "Gib eine Beschreibung für das Bild ein",
enterImgUrl: "Bild-URL eingeben",
image: "Bild",
inserYtVideo: "YouTube-Video einfügen",
ytVideoUrl: "YouTube-Video-URL",
enterYtUrl: "Gib die YouTube-Video-URL ein",
video: "Video",
preview: "Vorschau",
insert: "Einfügen",
},
} satisfies Locale;