From 31eae2d5f83846f8c3f8fe96bb04998909f7f97a Mon Sep 17 00:00:00 2001 From: emielvdveen Date: Thu, 13 Jun 2024 15:56:57 +0200 Subject: [PATCH] Added: German translations (draft) --- CHANGELOG.md | 1 + README.md | 4 ++++ src/framework/processing/py/port/script.py | 7 +++++++ .../visualisation/react/ui/elements/table.tsx | 13 +++++++++++++ .../visualisation/react/ui/pages/donation_page.tsx | 1 + .../visualisation/react/ui/pages/end_page.tsx | 2 ++ .../visualisation/react/ui/prompts/consent_form.tsx | 4 ++++ .../visualisation/react/ui/prompts/file_input.tsx | 4 ++++ .../visualisation/react/ui/prompts/radio_input.tsx | 1 + 9 files changed, 37 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d183aa8..89c7668c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ ## 2 - unreleased +* Added: German translations (draft) * Added: Support for assets available in Python diff --git a/README.md b/README.md index 2c9f6c06..dd022e47 100644 --- a/README.md +++ b/README.md @@ -175,6 +175,7 @@ import pandas as pd table1_title = props.Translatable({ "en": "Title 1", + "de": "Titel 1", "nl": "Titel 1" }) table1_data = pd.DataFrame(data, columns=["columnX", "columnY", "columnZ"]) @@ -182,6 +183,7 @@ table1 = props.PropsUIPromptConsentFormTable("table_1", table1_title, table1_dat table2_title = props.Translatable({ "en": "Title 2", + "de": "Titel 2", "nl": "Titel 2" }) table2_data = pd.DataFrame(data, columns=["columnA", "columnB", "columnC", "columnD"]) @@ -405,6 +407,7 @@ from port.api.props import Translatable copy = Translatable({ "en": "English text", + "de": "Deutscher Text", "nl": "Nederlandse tekst" }) ``` @@ -436,6 +439,7 @@ export const MyComponent = ({ dynamicCopy, locale }: Props): JSX.Element => { const staticCopy = (): Translatable => { return new TextBundle() .add('en', 'English') + .add('de', 'Deutsch') .add('nl', 'Nederlands') } ``` diff --git a/src/framework/processing/py/port/script.py b/src/framework/processing/py/port/script.py index 9ec3b24c..9df4ab81 100644 --- a/src/framework/processing/py/port/script.py +++ b/src/framework/processing/py/port/script.py @@ -52,6 +52,7 @@ def process(sessionId): def render_donation_page(body): header = props.PropsUIHeader(props.Translatable({ "en": "Port flow example", + "de": "Port beispiel", "nl": "Port voorbeeld flow" })) @@ -62,14 +63,17 @@ def render_donation_page(body): def retry_confirmation(): text = props.Translatable({ "en": "Unfortunately, we cannot process your file. Continue, if you are sure that you selected the right file. Try again to select a different file.", + "de": "Leider können wir Ihre Datei nicht bearbeiten. Fahren Sie fort, wenn Sie sicher sind, dass Sie die richtige Datei ausgewählt haben. Versuchen Sie erneut, eine andere Datei auszuwählen.", "nl": "Helaas, kunnen we uw bestand niet verwerken. Weet u zeker dat u het juiste bestand heeft gekozen? Ga dan verder. Probeer opnieuw als u een ander bestand wilt kiezen." }) ok = props.Translatable({ "en": "Try again", + "de": "Versuchen Sie es noch einmal", "nl": "Probeer opnieuw" }) cancel = props.Translatable({ "en": "Continue", + "de": "Weiter", "nl": "Verder" }) return props.PropsUIPromptConfirm(text, ok, cancel) @@ -78,6 +82,7 @@ def retry_confirmation(): def prompt_file(extensions): description = props.Translatable({ "en": "Please select any zip file stored on your device.", + "en": "Wählen Sie eine beliebige Zip-Datei aus, die Sie auf Ihrem Gerät gespeichert haben.", "nl": "Selecteer een willekeurige zip file die u heeft opgeslagen op uw apparaat." }) @@ -106,11 +111,13 @@ def prompt_consent(data, meta_data): table_title = props.Translatable({ "en": "Zip file contents", + "de": "Inhalt der Zip-Datei", "nl": "Inhoud zip bestand" }) log_title = props.Translatable({ "en": "Log messages", + "en": "Logmeldungen", "nl": "Log berichten" }) diff --git a/src/framework/visualisation/react/ui/elements/table.tsx b/src/framework/visualisation/react/ui/elements/table.tsx index 248019ef..1110416f 100644 --- a/src/framework/visualisation/react/ui/elements/table.tsx +++ b/src/framework/visualisation/react/ui/elements/table.tsx @@ -458,51 +458,62 @@ interface Copy { const link = new TextBundle() .add('en', 'Check out') + .add('de', 'Siehe') .add('nl', 'Bekijk') const searchPlaceholder = new TextBundle() .add('en', 'Search') + .add('de', 'Suche') .add('nl', 'Zoeken') const noDataLabel = new TextBundle() .add('en', 'No data found') + .add('de', 'Keine Daten gefunden') .add('nl', 'Geen gegevens gevonden') const noDataLeftLabel = new TextBundle() .add('en', 'All data removed') + .add('de', 'Alle Daten gelöscht') .add('nl', 'Alle gegevens verwijderd') const noResultsLabel = new TextBundle() .add('en', 'No search results') + .add('de', 'Keine Suchergebnisse') .add('nl', 'Geen zoek resultaten') const editLabel = new TextBundle() .add('en', 'Adjust') + .add('de', 'Anpassen') .add('nl', 'Aanpassen') const undoLabel = new TextBundle() .add('en', 'Undo') + .add('de', 'Wiederherstellung') .add('nl', 'Herstel') const deleteLabel = new TextBundle() .add('en', 'Delete selected') + .add('de', 'Auswahl löschen') .add('nl', 'Verwijder selectie') function deletedNoneRowLabel (): TextBundle { return new TextBundle() .add('en', 'No adjustments') + .add('de', 'Keine Anpassungen') .add('nl', 'Geen aanpassingen') } function deletedRowLabel (amount: number): TextBundle { return new TextBundle() .add('en', `${amount} row deleted`) + .add('de', `${amount} Zeile entfernt`) .add('nl', `${amount} rij verwijderd`) } function deletedRowsLabel (amount: number): TextBundle { return new TextBundle() .add('en', `${amount} rows deleted`) + .add('de', `${amount} Zeilen entfernt`) .add('nl', `${amount} rijen verwijderd`) } @@ -515,12 +526,14 @@ function deletedLabel (amount: number): TextBundle { function singlePageLabel (): TextBundle { return new TextBundle() .add('en', '1 page') + .add('de', '1 Seite') .add('nl', '1 pagina') } function multiplePagesLabel (amount: number): TextBundle { return new TextBundle() .add('en', `${amount} pages`) + .add('de', `${amount} Seiten`) .add('nl', `${amount} pagina's`) } diff --git a/src/framework/visualisation/react/ui/pages/donation_page.tsx b/src/framework/visualisation/react/ui/pages/donation_page.tsx index becee83f..3eb3cf89 100644 --- a/src/framework/visualisation/react/ui/pages/donation_page.tsx +++ b/src/framework/visualisation/react/ui/pages/donation_page.tsx @@ -66,5 +66,6 @@ function prepareCopy ({ header: { title }, locale }: Props): Copy { const forwardButtonLabel = (): Translatable => { return new TextBundle() .add('en', 'Skip') + .add('de', 'Überspringen') .add('nl', 'Overslaan') } diff --git a/src/framework/visualisation/react/ui/pages/end_page.tsx b/src/framework/visualisation/react/ui/pages/end_page.tsx index 6e9d7cdc..913cb739 100644 --- a/src/framework/visualisation/react/ui/pages/end_page.tsx +++ b/src/framework/visualisation/react/ui/pages/end_page.tsx @@ -39,8 +39,10 @@ function prepareCopy ({ locale }: Props): Copy { const title = new TextBundle() .add('en', 'Thank you') + .add('de', 'Danke') .add('nl', 'Bedankt') const text = new TextBundle() .add('en', 'Thank you for your participation. You can now close the page or refresh to restart the donation flow.') + .add('de', 'Herzlichen Dank für Ihre Teilnahme. Sie können diese Seite nun schließen oder die Seite aktualisieren, um den Ablauf erneut zu durchlaufen.') .add('nl', 'Hartelijk dank voor uw deelname. U kunt deze pagina nu sluiten of de pagina verversen om de flow nogmaals te doorlopen.') diff --git a/src/framework/visualisation/react/ui/prompts/consent_form.tsx b/src/framework/visualisation/react/ui/prompts/consent_form.tsx index 03d98354..daa053ee 100644 --- a/src/framework/visualisation/react/ui/prompts/consent_form.tsx +++ b/src/framework/visualisation/react/ui/prompts/consent_form.tsx @@ -169,16 +169,20 @@ export const ConsentForm = (props: Props): JSX.Element => { const donateQuestionLabel = new TextBundle() .add('en', 'Do you want to donate the above data?') + .add('de', 'Möchten Sie die oben genannten Angaben spenden?') .add('nl', 'Wilt u de bovenstaande gegevens doneren?') const donateButtonLabel = new TextBundle() .add('en', 'Yes, donate') + .add('de', 'Ja, spenden') .add('nl', 'Ja, doneer') const cancelButtonLabel = new TextBundle() .add('en', 'No') + .add('de', 'Nein') .add('nl', 'Nee') const description = new TextBundle() .add('en', 'Determine whether you would like to donate the data below. Carefully check the data and adjust when required. With your donation you contribute to the previously described research. Thank you in advance.') + .add('de', 'Entscheiden Sie, ob Sie die nachstehenden Angaben spenden möchten. Bitte überprüfen Sie die Angaben sorgfältig und passen Sie sie ggf. an. Mit Ihrer Spende tragen Sie zu der oben beschriebenen Forschung bei. Wir danken Ihnen im Voraus.') .add('nl', 'Bepaal of u de onderstaande gegevens wilt doneren. Bekijk de gegevens zorgvuldig en pas zo nodig aan. Met uw donatie draagt u bij aan het eerder beschreven onderzoek. Alvast hartelijk dank.') diff --git a/src/framework/visualisation/react/ui/prompts/file_input.tsx b/src/framework/visualisation/react/ui/prompts/file_input.tsx index fe5b434d..14cbc615 100644 --- a/src/framework/visualisation/react/ui/prompts/file_input.tsx +++ b/src/framework/visualisation/react/ui/prompts/file_input.tsx @@ -89,23 +89,27 @@ function prepareCopy ({ description, extensions, locale }: Props): Copy { const continueButtonLabel = (): Translatable => { return new TextBundle() .add('en', 'Continue') + .add('de', 'Weiter') .add('nl', 'Verder') } const selectButtonLabel = (): Translatable => { return new TextBundle() .add('en', 'Choose file') + .add('de', 'Datei wählen') .add('nl', 'Kies bestand') } const note = (): Translatable => { return new TextBundle() .add('en', 'Note: The process to extract the correct data from the file is done on your own computer. No data is stored or sent yet.') + .add('de', 'Anmerkung: Der Prozess der Extraktion der korrekten Daten aus der Datei erfolgt auf Ihrem eigenen Computer. Es werden noch keine Daten gespeichert oder gesendet.') .add('nl', 'NB: Het proces om de juiste gegevens uit het bestand te halen gebeurt op uw eigen computer. Er worden nog geen gegevens opgeslagen of verstuurd.') } const placeholder = (): Translatable => { return new TextBundle() .add('en', 'Choose a file') + .add('de', 'Eine Datei wählen') .add('nl', 'Kies een bestand') } diff --git a/src/framework/visualisation/react/ui/prompts/radio_input.tsx b/src/framework/visualisation/react/ui/prompts/radio_input.tsx index 142f3116..f5f7628a 100644 --- a/src/framework/visualisation/react/ui/prompts/radio_input.tsx +++ b/src/framework/visualisation/react/ui/prompts/radio_input.tsx @@ -79,5 +79,6 @@ export const RadioInput = (props: Props): JSX.Element => { const continueButtonLabel = (): Translatable => { return new TextBundle() .add('en', 'Continue') + .add('de', 'Weiter') .add('nl', 'Doorgaan') }