feat: I18n (#1653)

* feat: i18n

* Changing language single source of truth from TEAM to USER

* Changes according to @tommoor comments on PR

* Changed package.json for build:i18n and translation label

* Finished 1st MVP of i18n for outline

* new translation labels & Portuguese from Portugal translation

* Fixes from PR request

* Described language dropdown as an experimental feature

* Set keySeparator to false in order to cowork with html keys

* Added useTranslation to Breadcrumb

* Repositioned <strong> element

* Removed extra space from TemplatesMenu

* Fortified the test suite for i18n

* Fixed trans component problematic

* Check if selected language is available

* Update yarn.lock

* Removed unused Trans

* Removing debug variable from i18n init

* Removed debug variable

* test: update snapshots

* flow: Remove decorator usage to get proper flow typing
It's a shame, but hopefully we'll move to Typescript in the next 6 months and we can forget this whole Flow mistake ever happened

* translate: Drafts

* More translatable strings

* Mo translation strings

* translation: Search

* async translations loading

* cache translations in client

* Revert "cache translations in client"

This reverts commit 08fb61ce36384ff90a704faffe4761eccfb76da1.

* Revert localStorage cache for cache headers

* Update Crowdin configuration file

* Moved translation files to locales folder and fixed english text

* Added CONTRIBUTING File for CrowdIn

* chore: Move translations again to please CrowdIn

* fix: loading paths
chore: Add strings for editor

* fix: Improve validation on documents.import endpoint

* test: mock bull

* fix: Unknown mimetype should fallback to Markdown parsing if markdown extension (#1678)

* closes #1675

* Update CONTRIBUTING

* chore: Add link to translation portal from app UI

* refactor: Centralize language config

* fix: Ensure creation of i18n directory in build

* feat: Add language prompt

* chore: Improve contributing guidelines, add link from README

* chore: Normalize tab header casing

* chore: More string externalization

* fix: Language prompt in dark mode

Co-authored-by: André Glatzl <andreglatzl@gmail.com>
This commit is contained in:
Tom Moor
2020-11-29 20:04:58 -08:00
committed by GitHub
parent 63c73c9a51
commit 1285efc49a
85 changed files with 6432 additions and 2613 deletions

View File

@@ -0,0 +1,288 @@
{
"currently editing": "derzeit in Bearbeitung",
"currently viewing": "gerade angezeigt",
"viewed {{ timeAgo }} ago": "angesehen vor {{ timeAgo }}",
"You": "Sie",
"Trash": "Papierkorb",
"Archive": "Archiv",
"Drafts": "Entwürfe",
"Templates": "Vorlagen",
"New": "Neu",
"Only visible to you": "Nur für Sie sichtbar",
"Draft": "Entwurf",
"Template": "Vorlage",
"New doc": "Neues Dokument",
"More options": "Weitere Optionen",
"Insert column after": "Spalte danach einfügen",
"Insert column before": "Spalte davor einfügen",
"Insert row after": "Zeile darunter einfügen",
"Insert row before": "Zeile darüber einfügen",
"Align center": "Zentrieren",
"Align left": "Links ausrichten",
"Align right": "Rechts ausrichten",
"Bulleted list": "Punkteliste",
"Todo list": "Todo-Liste",
"Code block": "Codeblock",
"Copied to clipboard": "In die Zwischenablage kopiert",
"Code": "Code",
"Create link": "Link erstellen",
"Sorry, an error occurred creating the link": "Beim Erstellen des Links ist leider ein Fehler aufgetreten",
"Create a new doc": "Neues Dokument erstellen",
"Delete column": "Spalte löschen",
"Delete row": "Zeile löschen",
"Delete table": "Tabelle löschen",
"Italic": "Kursiv",
"Sorry, that link wont work for this embed type": "Dieser Link funktioniert für diesen Einbettungstyp leider nicht",
"Find or create a doc…": "Suchen oder erstellen Sie ein Dokument…",
"Big heading": "Große Überschrift",
"Medium heading": "Mittlere Überschrift",
"Small heading": "Kleine Überschrift",
"Heading": "Überschrift",
"Divider": "Trennlinie",
"Image": "Bild",
"Sorry, an error occurred uploading the image": "Beim Hochladen des Bildes ist ein Fehler aufgetreten",
"Info": "Info",
"Info notice": "Info-Hinweis",
"Link": "Link",
"Link copied to clipboard": "Link in die Zwischenablage kopiert",
"Highlight": "Hervorheben",
"Type '/' to insert…": "Geben Sie '/' zum Einzufügen ein",
"Keep typing to filter…": "Tippen Sie weiter um zu filtern",
"No results": "Keine Ergebnisse",
"Open link": "Link öffnen",
"Ordered list": "Nummerierte Liste",
"Paste a link…": "Link einfügen…",
"Paste a {{service}} link…": "{{service}} Link einfügen…",
"Placeholder": "Platzhalter",
"Quote": "Zitat",
"Remove link": "Link entfernen",
"Search or paste a link…": "Suchen oder Einfügen eines Links…",
"Strikethrough": "Durchstreichen",
"Bold": "Fett",
"Subheading": "Untertitel",
"Table": "Tabelle",
"Tip": "Hinweis",
"Tip notice": "Tipp Hinweis",
"Warning": "Warnung",
"Warning notice": "Warnhinweis",
"Search…": "Suche…",
"Keyboard shortcuts": "Tastaturkürzel",
"New collection…": "Neue Sammlung…",
"Collections": "Sammlungen",
"Untitled": "Ohne Titel",
"Home": "Startseite",
"Search": "Suche",
"Starred": "Favoriten",
"Invite people…": "Personen einladen…",
"Invite people": "Personen einladen",
"Create a collection": "Sammlung erstellen",
"Return to App": "Zurück zur App",
"Profile": "Profil",
"Notifications": "Benachrichtigungen",
"API Tokens": "API-Tokens",
"Details": "Details",
"Security": "Sicherheit",
"People": "Personen",
"Groups": "Gruppen",
"Share Links": "Geteilte Links",
"Export Data": "Daten exportieren",
"Integrations": "Integrationen",
"Installation": "Installation",
"Settings": "Einstellungen",
"API documentation": "API Dokumentation",
"Changelog": "Änderungsprotokoll",
"Send us feedback": "Schicken Sie uns Feedback",
"Report a bug": "Ein technischen Fehler melden",
"Appearance": "Aussehen",
"System": "System",
"Light": "Hell",
"Dark": "Dunkel",
"Log out": "Ausloggen",
"Collection permissions": "Sammlungsberechtigungen",
"New document": "Neues Dokument",
"Import document": "Dokument importieren",
"Edit…": "Bearbeiten…",
"Permissions…": "Berechtigungen…",
"Export…": "Exportieren…",
"Delete…": "Löschen…",
"Edit collection": "Sammlung bearbeiten",
"Delete collection": "Sammlung löschen",
"Export collection": "Sammlung exportieren",
"Document duplicated": "Dokument dupliziert",
"Document archived": "Dokument archiviert",
"Document restored": "Dokument wiederhergestellt",
"Document unpublished": "Dokument unveröffentlicht",
"Restore": "Wiederherstellen",
"Restore…": "Wiederherstellen…",
"Choose a collection": "Sammlung auswählen",
"Unpin": "Lospinnen",
"Pin to collection": "Zur Sammlung anpinnen",
"Unstar": "Aus den Favoriten entfernen",
"Star": "Favorisieren",
"Share link…": "Link teilen…",
"Enable embeds": "Einbettungen aktivieren",
"Disable embeds": "Einbettungen deaktivieren",
"New nested document": "Neues verschachteltes Dokument",
"Create template…": "Vorlage erstellen…",
"Edit": "Bearbeiten",
"Duplicate": "Duplizieren",
"Unpublish": "Nicht veröffentlichen",
"Move…": "Verschieben…",
"History": "Verlauf",
"Download": "Herunterladen",
"Print": "Drucken",
"Delete {{ documentName }}": "{{ documentName }} löschen",
"Create template": "Vorlage erstellen",
"Share document": "Dokument teilen",
"Edit group": "Gruppe bearbeiten",
"Delete group": "Gruppe löschen",
"Members…": "Mitglieder…",
"New document in": "Neues Dokument in",
"collection": "Sammlung",
"New template…": "Neue Vorlage…",
"Link copied": "Link wurde kopiert",
"Restore version": "Version wiederherstellen",
"Copy link": "Link kopieren",
"Share link revoked": "Freigabelink widerrufen",
"Share link copied": "Freigabelink wurde kopiert",
"Go to document": "Zum Dokument gehen",
"Revoke link": "Link widerrufen",
"By {{ author }}": "von {{author}}",
"Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Sind Sie sicher, dass Sie {{ userName }} zu einem Administrator machen möchten? Administratoren können Team- und Rechnungsinformationen ändern.",
"Are you sure you want to make {{ userName }} a member?": "Sind Sie sicher, dass Sie {{ userName }} zu einem Mitglied machen möchten?",
"Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Möchten Sie dieses Konto wirklich sperren? Gesperrte Benutzer können sich nicht anmelden.",
"Make {{ userName }} a member…": "{{ userName }} zu einem Mitglied machen…",
"Make {{ userName }} an admin…": "{{ userName }} zu einem Admin machen…",
"Revoke invite…": "Einladung widerrufen…",
"Activate account": "Konto aktivieren",
"Suspend account…": "Konto sperren…",
"Documents": "Dokumente",
"The document archive is empty at the moment.": "Das Dokumentenarchiv ist momentan leer.",
"Search in collection…": "Suche in Sammlung…",
"<0>{{collectionName}}</0> doesnt contain any documents yet.": "<0>{{collectionName}}</0> enthält noch keine Dokumente.",
"Get started by creating a new one!": "Erstellen Sie zunächst ein neues Dokument!",
"Create a document": "Dokument erstellen",
"Manage members…": "Mitglieder verwalten…",
"Pinned": "Gepinned",
"Recently updated": "Vor Kurzem aktualisiert",
"Recently published": "Vor Kurzem veröffentlicht",
"Least recently updated": "Am längsten nicht aktualisiert",
"AZ": "A - Z",
"The collection was updated": "Die Sammlung wurde aktualisiert",
"You can edit the name and other details at any time, however doing so often might confuse your team mates.": "Sie können den Namen und andere Details jederzeit bearbeiten, allerdings könnte dies Ihre Teammitglieder verwirren.",
"Name": "Name",
"Description": "Beschreibung",
"More details about this collection…": "Weitere Details zu dieser Sammlung…",
"Private collection": "private Sammlung",
"A private collection will only be visible to invited team members.": "Eine private Sammlung ist nur für eingeladene Teammitglieder sichtbar.",
"Saving…": "Speichert…",
"Save": "Speichern",
"{{ groupName }} was added to the collection": "{{ groupName }} wurde zur Sammlung hinzugefügt",
"Could not add user": "Benutzer kann nicht hinzugefügt werden",
"Cant find the group youre looking for?": "Sie können die gesuchte Gruppe nicht finden?",
"Create a group": "Gruppe erstellen",
"Search by group name…": "Suche nach Gruppennamen…",
"Search groups": "Gruppen suchen",
"No groups matching your search": "Keine Gruppen, die Ihrer Suche entsprechen",
"No groups left to add": "Keine Gruppen übrig zum Hinzufügen",
"Add": "Hinzufügen",
"{{ userName }} was added to the collection": "{{ userName }} wurde zur Sammlung hinzugefügt",
"Need to add someone whos not yet on the team yet?": "Müssen Sie jemanden hinzufügen, der noch nicht im Team ist?",
"Invite people to {{ teamName }}": "Personen zu {{ teamName }} einladen",
"Search by name…": "Nach Name suchen…",
"Search people": "Personen suchen",
"No people matching your search": "Keine Personen, die Ihrer Suche entsprechen",
"No people left to add": "Keine Personen übrig zum Hinzufügen",
"Read only": "Schreibgeschützt",
"Read & Edit": "Lesen & Bearbeiten",
"Permissions": "Berechtigungen",
"Remove": "Entfernen",
"Active {{ lastActiveAt }} ago": "Aktiv vor {{ lastActiveAt }}",
"Never signed in": "Nie angemeldet",
"Invited": "Eingeladen",
"Admin": "Administrator",
"Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Sammlungen dienen zur Gruppierung Ihrer Wissensbasis. Sie funktionieren am besten, wenn sie nach einem Thema oder einem internen Team organisiert sind - beispielsweise nach Produkt oder Engineering.",
"Creating…": "Wird erstellt…",
"Create": "Erstellen",
"Recently viewed": "Vor Kurzem angesehen",
"Created by me": "Von mir erstellt",
"Hide contents": "Inhalt ausblenden",
"Show contents": "Inhalt anzeigen",
"Archived": "Archiviert",
"Anyone with the link <1></1>can view this document": "Jeder mit dem Link <1></1>kann dieses Dokument ansehen",
"Share": "Teilen",
"Save Draft": "Entwurf speichern",
"Done Editing": "Bearbeitung abgeschlossen",
"Edit {{noun}}": "{{noun}} bearbeiten",
"New from template": "Neu aus Vorlage",
"Publish": "Veröffentlichen",
"Publish document": "Dokument veröffentlichen",
"Publishing…": "Am Veröffentlichen…",
"No documents found for your filters.": "Keine Dokumente anhand Ihre Filter gefunden.",
"Youve not got any drafts at the moment.": "Sie haben im Moment keine Entwürfe.",
"Not found": "Nicht gefunden",
"We were unable to find the page youre looking for. Go to the <2>homepage</2>?": "Wir konnten die gesuchte Seite nicht finden. Möchten Sie zur <2>Startseite</2> gehen?",
"Offline": "Offline",
"We were unable to load the document while offline.": "Wir konnten das Dokument nicht offline laden.",
"Your account has been suspended": "Ihr Konto wurde gesperrt",
"A team admin (<1>{{suspendedContactEmail}}</1>) has suspended your account. To re-activate your account, please reach out to them directly.": "Ein Teamadministrator (<1>{{suspendedContactEmail}}</1>) hat Ihr Konto gesperrt. Um Ihr Konto wieder zu aktivieren, wenden Sie sich bitte direkt an diesen.",
"{{userName}} was added to the group": "{{userName}} wurde zur Gruppe hinzugefügt",
"Add team members below to give them access to the group. Need to add someone whos not yet on the team yet?": "Fügen Sie unten Teammitglieder hinzu, um ihnen Zugriff auf die Gruppe zu gewähren. Sie müssen jemanden hinzufügen, der noch nicht im Team ist?",
"Invite them to {{teamName}}": "Personen zu {{teamName}} einladen",
"{{userName}} was removed from the group": "{{userName}} wurde aus der Gruppe entfernt",
"Could not remove user": "Benutzer konnte nicht entfernt werden",
"Add people…": "Personen hinzufügen…",
"This group has no members.": "Diese Gruppe hat keine Mitglieder.",
"Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and theres Markdown too.": "Outline ist so konzipiert, dass es schnell und einfach zu bedienen ist. Alle Ihre üblichen Tastaturkürzel funktionieren hier, und es gibt auch Markdown.",
"Navigation": "Navigation",
"New document in current collection": "Neues Dokument in der aktuellen Sammlung",
"Edit current document": "Aktuelles Dokument bearbeiten",
"Move current document": "Aktuelles Dokument verschieben",
"Jump to search": "Zur Suche springen",
"Jump to dashboard": "Gehe zum Dashboard",
"Table of contents": "Inhaltsverzeichnis",
"Open this guide": "Diese Anleitung öffnen",
"Editor": "Editor",
"Save and exit document edit mode": "Speichern und Dokumenten-Bearbeitungsmodus beenden",
"Publish and exit document edit mode": "Veröffentlichen und Dokumenten-Bearbeitungsmodus beenden",
"Save document and continue editing": "Dokument speichern und weiter bearbeiten",
"Cancel editing": "Bearbeitung abbrechen",
"Underline": "Unterstreichen",
"Undo": "Rückgängig machen",
"Redo": "Wiederholen",
"Markdown": "Markdown",
"Large header": "Große Überschrift",
"Medium header": "Mittlere Überschrift",
"Small header": "Kleine Überschrift",
"Numbered list": "Nummerierte Liste",
"Blockquote": "Zitatblock",
"Horizontal divider": "Horizontale Trennlinie",
"Inline code": "Inline-Code",
"Not Found": "Nicht gefunden",
"We were unable to find the page youre looking for.": "Die von Ihnen gesuchte Seite konnte nicht gefunden werden.",
"Use the <1>{{meta}}+K</1> shortcut to search from anywhere in your knowledge base": "Benutze das <1>{{meta}}+K</1> Tastenkürzel um von überall in deiner Wissensdatenbank zu suchen",
"No documents found for your search filters. <1></1>Create a new document?": "Für Ihre Suchfilter wurden keine Dokumente gefunden. <1></1> Neues Dokument erstellen?",
"Clear filters": "Filter löschen",
"Profile saved": "Profil gespeichert",
"Profile picture updated": "Profilbild wurde aktualisiert",
"Unable to upload new profile picture": "Neues Profilbild kann nicht hochgeladen werden",
"Photo": "Foto",
"Upload": "Hochladen",
"Full name": "Vollständiger Name",
"Language": "Sprache",
"Please note that translations are currently in early access.<1></1>Community contributions are accepted though our <4>translation portal</4>": "Bitte beachten Sie, dass Übersetzungen derzeit in einer Test Phase verfügbar sind. <1></1> Community-Beiträge werden über unser <4> Übersetzungsportal akzeptiert</4>",
"Delete Account": "Konto löschen",
"You may delete your account at any time, note that this is unrecoverable": "Sie können Ihren Account jederzeit löschen, beachten Sie, dass dies nicht wiederhergestellt werden kann",
"Delete account": "Konto löschen",
"Recently Updated": "Vor Kurzem Aktualisiert",
"Alphabetical": "Alphabetisch",
"Youve not starred any documents yet.": "Keine Favoriten.",
"There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "Es gibt noch keine Vorlagen. Sie können Vorlagen erstellen, mit denen Ihr Team eine konsistente und genaue Dokumentation erstellen kann.",
"Trash is empty at the moment.": "Der Papierkorb ist im Moment leer.",
"You joined": "Sie sind beigetreten",
"Joined": "Beigetreten",
"{{ time }} ago.": "Vor {{ time }}.",
"Suspended": "Gesperrt",
"Edit Profile": "Profil bearbeiten",
"{{ userName }} hasnt updated any documents yet.": "{{ userName }} hat noch keine Dokumente aktualisiert."
}