Skip to content

Commit

Permalink
feat(frontend): add german translations
Browse files Browse the repository at this point in the history
  • Loading branch information
mikonse committed Jan 4, 2024
1 parent 56604a1 commit 4279e9f
Show file tree
Hide file tree
Showing 7 changed files with 190 additions and 26 deletions.
16 changes: 9 additions & 7 deletions frontend/apps/mobile/src/screens/groups/AccountEdit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@ import { useFormik } from "formik";
import React, { useEffect, useLayoutEffect } from "react";
import { BackHandler, ScrollView, StyleSheet } from "react-native";
import { Button, Dialog, HelperText, IconButton, Portal, ProgressBar, TextInput, useTheme } from "react-native-paper";
import { TransactionShareInput } from "../../components/transaction-shares/TransactionShareInput";
import { useApi } from "../../core/ApiProvider";
import { GroupStackScreenProps } from "../../navigation/types";
import { notify } from "../../notifications";
import { selectAccountSlice, useAppDispatch, useAppSelector } from "../../store";
import { LoadingIndicator, TagSelect, DateTimeInput } from "../../components";
import { TransactionShareInput } from "@/components/transaction-shares/TransactionShareInput";
import { useApi } from "@/core/ApiProvider";
import { GroupStackScreenProps } from "@/navigation/types";
import { notify } from "@/notifications";
import { selectAccountSlice, useAppDispatch, useAppSelector } from "@/store";
import { LoadingIndicator, TagSelect, DateTimeInput } from "@/components";
import { useTranslation } from "react-i18next";

export const AccountEdit: React.FC<GroupStackScreenProps<"AccountEdit">> = ({ route, navigation }) => {
const { t } = useTranslation();
const theme = useTheme();
const dispatch = useAppDispatch();
const { api } = useApi();
Expand Down Expand Up @@ -221,7 +223,7 @@ export const AccountEdit: React.FC<GroupStackScreenProps<"AccountEdit">> = ({ ro
<HelperText type="error">{formik.errors.tags}</HelperText>
)}
<TransactionShareInput
title="Participated"
label={t("accounts.participated")}
disabled={false}
groupId={groupId}
value={formik.values.clearing_shares}
Expand Down
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 @@ export const AccountInfo: React.FC<Props> = ({ groupId, accountId }) => {
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 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

0 comments on commit 4279e9f

Please sign in to comment.