Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(frontend): add german translations #191

Merged
merged 1 commit into from
Jan 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,3 @@ export const AccountTransactionList: React.FC<Props> = ({ groupId, accountId })
</List>
);
};

export default AccountTransactionList;
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export const ClearingAccountDetail: React.FC<Props> = ({ groupId, accountId }) =
return (
<ShareSelect
groupId={groupId}
label="Participated"
label={t("accounts.participated")}
value={account.clearing_shares}
additionalShareInfoHeader={
<TableCell width="100px" align="right">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
navigate(getAccountListLink(groupId, account.type));
};

const accountTypeLabel = account.type === "clearing" ? "event" : "account";
const accountTypeLabel = account.type === "clearing" ? t("accounts.event") : t("accounts.account");

const navigateBack = () => {
navigate(-1);
Expand All @@ -80,7 +80,7 @@

const validated = AccountValidator.safeParse(account);
if (!validated.success) {
setValidationErrors((validated as any).error.formErrors);

Check warning on line 83 in frontend/apps/web/src/pages/accounts/AccountDetail/AccountInfo.tsx

View workflow job for this annotation

GitHub Actions / build_and_test_frontend / lint

Unexpected any. Specify a different type
return;
}
setValidationErrors(emptyErrors);
Expand All @@ -103,7 +103,7 @@
}, [account, setValidationErrors, setShowProgress, navigate, groupId, dispatch]);

const pushChanges = (newValue: Partial<Account>) => {
dispatch(wipAccountUpdated({ ...account, ...(newValue as any) }));

Check warning on line 106 in frontend/apps/web/src/pages/accounts/AccountDetail/AccountInfo.tsx

View workflow job for this annotation

GitHub Actions / build_and_test_frontend / lint

Unexpected any. Specify a different type
};

const abortEdit = () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,11 +137,11 @@ export const PersonalAccountList: React.FC<Props> = ({ groupId }) => {
}
/>
<FormControl variant="standard" sx={{ minWidth: 120, ml: 3 }}>
<InputLabel id="select-sort-by-label">Sort by</InputLabel>
<InputLabel id="select-sort-by-label">{t("common.sortBy")}</InputLabel>
<Select
labelId="select-sort-by-label"
id="select-sort-by"
label="Sort by"
label={t("common.sortBy")}
onChange={(evt) => setSortMode(evt.target.value as AccountSortMode)}
value={sortMode}
>
Expand Down
188 changes: 176 additions & 12 deletions frontend/libs/translations/src/lib/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,132 @@ const translations = {
name: "Abrechnung",
},
common: {
username: "Username",
username: "Benutzername",
server: "Server",
email: "E-Mail",
password: "Passwort",
repeatPassword: "Passwort wiederholen",
passwordsDoNotMatch: "Passwörter stimmen nicht überein",
save: "Speichern",
yes: "Ja",
no: "Nein",
ok: "Ok",
edit: "Bearbeiten",
delete: "Löschen",
confirm: "Bestätigen",
add: "Hinzufügen",
cancel: "Abbrechen",
search: "Suche ...",
search: "Suchen ...",
name: "Name",
lastChanged: "Zuletzt geändert",
lastChangedWithTime: "zuletzt geändert: {{datetime}}",
lastChangedWithTime: "Zuletzt geändert: {{datetime}}",
value: "Wert",
date: "Datum",
description: "Beschreibung",
sortBy: "Sortieren nach",
filterByTags: "Nach Tags filtern",
filterByTags: "Filtern nach Tags",
tag_one: "Tag",
tag_other: "Tags",
total: "Summe",
totalWithColon: "Summe:",
total: "Gesamt",
totalWithColon: "Gesamt:",
shared: "Geteilt",
shares: "Anteile",
advanced: "Erweitert",
price: "Preis",
createdAt: "Erstellt am",
send: "Senden",
currency: "Währung",
addNewTag: "Neuen Tag hinzufügen",
},
shareSelect: {
selectedPeople_one: "{{count}} Person",
selectedPeople_other: "{{count}} Personen",
selectedEvent_one: "{{count}} Ereignis",
selectedEvent_other: "{{count}} Ereignisse",
accountSlashEvent: "Person / Ereignis",
showEvents: "Ereignisse anzeigen",
},
navbar: {
transactions: "Transaktionen",
events: "Ereignisse",
balances: "Salden",
accounts: "Konten",
groupSettings: "Gruppeneinstellungen",
groupMembers: "Gruppenmitglieder",
groupInvites: "Gruppeneinladungen",
groupLog: "Gruppenprotokoll",
profile: "Profil",
settings: "Einstellungen",
sessions: "Sitzungen",
changeEmail: "E-Mail ändern",
changePassword: "Passwort ändern",
login: "Anmelden",
signOut: "Abmelden",
imprint: "Impressum",
},
groups: {
addGroup: "Gruppe hinzufügen",
list: {
tabTitle: "Abrechnung - Gruppen",
header: "Gruppen",
guestUserDisclaimer:
"Sie sind ein Gastbenutzer auf dieser Abrechnung und daher nicht berechtigt, neue Gruppen zu erstellen.",
noGroups: "Keine Gruppen",
},
log: {
tabTitle: "{{groupName}} - Protokoll",
header: "Gruppenprotokoll",
showAllLogs: "Alle Protokolle anzeigen",
writeAMessage: "Schreiben Sie eine Nachricht an die Gruppe ...",
messageInfo: "von {{username}} am {{datetime}}",
},
memberList: {
tabTitle: "{{groupName}} - Mitglieder",
invitedBy: "eingeladen von {{username}}, ",
joined: "beigetreten am {{datetime}}",
editor: "Editor",
owner: "Besitzer",
itsYou: "Du bist es",
canWrite: "Kann bearbeiten",
isOwner: "Ist Besitzer",
},
settings: {
tabTitle: "{{groupName}} - Einstellungen",
ownerDisclaimer: "Sie sind ein Besitzer dieser Gruppe",
readAccessDisclaimer: "Sie haben nur Lesezugriff auf diese Gruppe",
terms: "Bedingungen",
autoAddAccounts: "Automatisch Konten für neu beigetretene Gruppenmitglieder hinzufügen",
leaveGroup: "Gruppe verlassen",
leaveGroupConfirm:
"Sind Sie sicher, dass Sie die Gruppe {{group.name}} verlassen möchten? Wenn Sie das letzte Mitglied sind, das diese Gruppe verlässt, wird sie gelöscht, und ihre Transaktion geht für immer verloren...",
},
join: {
tabTitle: "Abrechnung - Gruppe beitreten",
youHaveBeenInvited: "Sie wurden zur Gruppe {{group.name}} eingeladen",
invitationDescription: "Einladungsbeschreibung",
invitationValidUntil: "Einladung gültig bis",
invitationSingleUse: "Einladung nur einmalig",
join: "Beitreten",
},
invites: {
tabTitle: "{{groupName}} - Einladungslinks",
header: "Aktive Einladungslinks",
guestUserDisclaimer:
"Sie sind ein Gastbenutzer auf dieser Abrechnung und daher nicht berechtigt, Gruppeneinladungen zu erstellen.",
tokenHidden: "Token versteckt, wurde von einem anderen Mitglied erstellt",
},
},
images: {
uploadImage: "Bild hochladen",
chooseImage: "Bild auswählen",
compressing: "komprimieren ..",
filename: "Dateiname",
},
balanceTable: {
totalConsumed: "Empfangen / Verbraucht",
totalPaid: "Bezahlt",
balance: "Balance",
},
transactions: {
createTransaction: "Transaktion erstellen",
createPurchase: "Einkauf erstellen",
Expand All @@ -66,14 +155,45 @@ const translations = {
positions: {
positions: "Positionen",
sharedPlusRest: "Geteilt + Rest",
addPositions: "Position hinzufügen",
addPositions: "Positionen hinzufügen",
remaining: "Verbleibend:",
},
},
accounts: {
noAccounts: "Keine Konten",
list: {
tabTitle: "{{groupName}} - Konten",
},
balances: {
tabTitle: "{{groupName}} - Salden",
clearingAccountsRemainingBalances: "Einige Ereignisse haben noch offene Salden",
},
detail: {
tabTitleEvent: "{{group.name}} - Ereignis {{account.name}}",
tabTitleAccount: "{{group.name}} - Konto {{account.name}}",
},
event: "Ereignis",
account: "Konto",
balanceOf: "Saldo von {{account.name}}",
clearingDistributionOf: "Teilnehmer von {{account.name}}",
transactionsInvolving: "Transaktionen mit Beteiligung von {{account.name}}",
participated: "Beteiligt",
settleUp: "Begleichen",
settlement: {
transactionName: "Abrechnung",
title: "Salden dieser Gruppe begleichen",
whoPaysWhom: "{{from}} zahlt {{to}} {{money}}",
settleButton: "Begleichen",
},
deleteConfirm: "Löschen bestätigen {{accountType}}",
deleteConfirmBody: 'Sind Sie sicher, dass Sie {{accountType}} "{{accountName}}" löschen möchten',
},
events: {
list: {
tabTitle: "{{groupName}} - Ereignisse",
},
createEvent: "Ereignis erstellen",
noEvents: "Keine Ereignisse",
},
profile: {
index: {
Expand All @@ -89,8 +209,8 @@ const translations = {
info: "Diese Einstellungen werden lokal auf Ihrem Gerät gespeichert. Das Löschen des lokalen Speichers Ihres Browsers setzt sie zurück.",
theme: "Thema",
themeSystemDefault: "Systemstandard",
themeDarkMode: "Dark Theme",
themeLightMode: "Light Theme",
themeDarkMode: "Dunkelmodus",
themeLightMode: "Hellmodus",
clearCache: "Cache leeren",
confirmClearCache:
"Diese Aktion wird Ihren lokalen Cache löschen. Alle Ihre Einstellungen (diese Seite) werden nicht zurückgesetzt.",
Expand All @@ -107,17 +227,61 @@ const translations = {
success: "E-Mail-Änderung angefordert. Sie sollten bald eine E-Mail mit einem Bestätigungslink erhalten.",
newEmail: "Neue E-Mail",
},
sessions: {
tabTitle: "Abrechnung - Sitzungen",
header: "Anmeldesitzungen",
confirmDeleteSession: "Sitzung löschen?",
areYouSureToDelete: "Sind Sie sicher, dass Sie die Sitzung {{sessionName}} löschen möchten",
},
},
auth: {
register: {
header: "Registrieren",
tabTitle: "Abrechnung - Registrieren",
header: "Neues Konto registrieren",
confirmButton: "Registrieren",
registrationSuccess:
"Erfolgreich registriert, bitte bestätigen Sie Ihre E-Mail, bevor Sie sich anmelden...",
alreadyHasAccount: "Haben Sie bereits ein Konto? Anmelden",
},
login: {
tabTitle: "Abrechnung - Anmelden",
header: "Anmelden",
loginSuccess: "Angemeldet ...",
confirmButton: "Anmelden",
noAccountRegister: "Kein Konto? Registrieren",
forgotPassword: "Passwort vergessen?",
},
recoverPassword: {
tabTitle: "Abrechnung - Passwort wiederherstellen",
header: "Passwort wiederherstellen",
body: "Bitte geben Sie Ihre E-Mail-Adresse ein. Ein Wiederherstellungslink wird in Kürze gesendet.",
emailSent: "Ein Wiederherstellungslink wurde Ihnen per E-Mail gesendet.",
},
confirmEmailChange: {
tabTitle: "Abrechnung - E-Mail-Änderung bestätigen",
header: "Bestätigen Sie Ihre neue E-Mail",
confirmSuccessful: "Bestätigung erfolgreich",
clickHereToConfirm: "Klicken Sie <1>hier</1>, um Ihre neue E-Mail zu bestätigen.",
},
confirmPasswordRecovery: {
tabTitle: "Abrechnung - Passwortwiederherstellung bestätigen",
header: "Passwortwiederherstellung bestätigen",
successfulLinkToLogin:
"Passwortwiederherstellung erfolgreich, bitte <1>anmelden</1> mit Ihrem neuen Passwort.",
},
confirmRegistration: {
tabTitle: "Abrechnung - Registrierung bestätigen",
header: "Registrierung bestätigen",
confirmSuccessful: "Bestätigung erfolgreich",
successfulLinkToLogin: "Bitte <1>anmelden</1> mit Ihren Anmeldeinformationen.",
clickHereToConfirm: "Klicken Sie <1>hier</1>, um Ihre Registrierung zu bestätigen.",
},
},
languages: {
en: "Englisch",
de: "Deutsch",
} as const,
} satisfies EnglishTranslations;
},
} as const satisfies EnglishTranslations;

export const de = {
translations,
Expand Down
2 changes: 1 addition & 1 deletion frontend/libs/translations/src/lib/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ const translations = {
event: "Event",
account: "Account",
balanceOf: "Balance of {{account.name}}",
clearingDistributionOf: "Clearing distribution of {{account.name}}",
clearingDistributionOf: "Participants of {{account.name}}",
transactionsInvolving: "Transactions involving {{account.name}}",
participated: "Participated",
settleUp: "Settle Up",
Expand Down
Loading