diff --git a/website/crowdin.yml b/website/crowdin.yml
new file mode 100644
index 0000000..66360ac
--- /dev/null
+++ b/website/crowdin.yml
@@ -0,0 +1,13 @@
+project_id: '502518'
+api_token_env: CROWDIN_PERSONAL_TOKEN
+preserve_hierarchy: true
+files:
+ # JSON translation files
+ - source: /i18n/en/**/*
+ translation: /i18n/%two_letters_code%/**/%original_file_name%
+ # Docs Markdown files
+ - source: /docs/**/*
+ translation: /i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%
+ # Blog Markdown files
+ # - source: /blog/**/*
+ # translation: /i18n/%two_letters_code%/docusaurus-plugin-content-blog/**/%original_file_name%
\ No newline at end of file
diff --git a/website/docs/intro.md b/website/docs/intro.md
index 2b6095b..8153537 100644
--- a/website/docs/intro.md
+++ b/website/docs/intro.md
@@ -4,6 +4,12 @@ sidebar_position: 1
# Documentation Intro
+:::caution
+
+This documentation is for the Alpha version of Matrix-Veles. Veles may be unstable and weird.
+
+:::
+
So you are interested in Veles, that's great! And actually you came
to exactly the right place.
diff --git a/website/docs/tutorial-basics/install.md b/website/docs/tutorial-basics/install.md
index feeced5..696e315 100644
--- a/website/docs/tutorial-basics/install.md
+++ b/website/docs/tutorial-basics/install.md
@@ -4,6 +4,12 @@ sidebar_position: 1
# Installing Veles
+:::caution
+
+This documentation is for the Alpha version of Matrix-Veles. Veles may be unstable and weird.
+
+:::
+
:::info Software-Recommendations
Whilst Veles should work on Linux, Windows and macOS, **we strongly recommend you use Linux** as this is what
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 6f4b89b..0308906 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -15,6 +15,10 @@ const config = {
favicon: 'img/favicon.ico',
organizationName: 'Unkn0wnCat',
projectName: 'matrix-veles',
+ i18n: {
+ defaultLocale: "en",
+ locales: ["en", "de"]
+ },
presets: [
[
@@ -56,6 +60,10 @@ const config = {
label: 'Documentation',
},
//{to: '/blog', label: 'Blog', position: 'left'},
+ {
+ type: 'localeDropdown',
+ position: 'right',
+ },
{
href: 'https://github.com/Unkn0wnCat/matrix-veles',
label: 'GitHub',
diff --git a/website/i18n/de/code.json b/website/i18n/de/code.json
new file mode 100644
index 0000000..6a05282
--- /dev/null
+++ b/website/i18n/de/code.json
@@ -0,0 +1,260 @@
+{
+ "theme.ErrorPageContent.title": {
+ "message": "Diese Seite ist abgestürzt.",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "Noch einmal versuchen",
+ "description": "The label of the button to try again when the page crashed"
+ },
+ "theme.NotFound.title": {
+ "message": "Seite nicht gefunden",
+ "description": "The title of the 404 page"
+ },
+ "theme.NotFound.p1": {
+ "message": "Wir konnten leider nicht finden, wonach du suchst.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "Bitte kontaktieren Sie den Besitzer der Seite, die Sie mit der ursprünglichen URL verlinkt hat, und teilen Sie ihm mit, dass der Link nicht mehr funktioniert.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "Zurück nach oben",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Schließen",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.archive.title": {
+ "message": "Archiv",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "Archiv",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "Navigation der Blog-Listenseite",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "Neuere Einträge",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "Ältere Einträge",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "Eine Min. Lesezeit|{readingTime} Min. Lesezeit",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "Erfahre mehr über {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.blog.post.readMore": {
+ "message": "Weiterlesen",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "Navigation der Blogpost Seite",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "Neuerer Beitrag",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "Älterer Beitrag",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "Aktuelle Blog-Beiträge Navigation",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.blog.post.plurals": {
+ "message": "Ein Beitrag|{count} Beiträge",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} Markiert mit \"{tagName}\"",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "Alle Tags anzeigen",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "Code in Zwischenablage kopieren",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "Kopiert",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "Kopieren",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.docs.DocCard.categoryDescription": {
+ "message": "{count} Elemente",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "Seitenleiste ausklappen",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "Seitenleiste ausklappen",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "Navigation der Dokumentationsseiten",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "Vorheriges",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "Als Nächstes",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "Seitenleiste einklappen",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "Seitenleiste einklappen",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": {
+ "message": "Einklappbare Seitenleistenkategorie \"{label}\" umschalten",
+ "description": "The ARIA label to toggle the collapsible sidebar category"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "Ein Dokument markiert|{count} Dokumente markiert",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged} Markiert mit \"{tagName}\"",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "Version: {versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "Dies ist eine unveröffentlichte Dokumentation für die Version {siteTitle} {versionLabel}.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "Dies ist eine Dokumentation für {siteTitle} {versionLabel}, die nicht mehr aktiv gepflegt wird.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "Die aktuelle Dokumentation kann unter {latestVersionLink} ({versionLabel}) gefunden werden.",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "Neuste Version",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "Diese Seite bearbeiten",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "Direkter Link zur Überschrift",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " am {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " von {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "Zuletzt aktualisiert{atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← Zurück zum Hauptmenü",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "Versionen",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "Zum Hauptinhalt springen",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "Auf dieser Seite",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "Schlagwörter:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "Zwischen Hell- und Dunkelmodus wechseln (derzeit {mode})",
+ "description": "The ARIA label for the navbar color mode toggle"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "Dunkler Modus",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "Heller Modus",
+ "description": "The name for the light color mode"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Sprachen",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Schlagwörter",
+ "description": "The title of the tag list page"
+ },
+ "Protector of your Matrix-harvest!": {
+ "message": "Beschützer deiner Matrix-Ernte!"
+ },
+ "Quick Start Tutorial - 5min ⏱️": {
+ "message": "Schnellstart-Anleitung - 5min ⏱️"
+ },
+ "Welcome": {
+ "message": "Willkommen",
+ "description": "Title of the homepage"
+ },
+ "Matrix-Veles is a next-gen bot for protecting Matrix-chat-rooms against spammers.": {
+ "message": "Matrix-Veles ist ein moderner Bot, um Matrix-Chat-Räume gegen Spammer zu schützen.",
+ "description": "Meta-Description of the homepage"
+ },
+ "Lightweight": {
+ "message": "Ressourcenschonend"
+ },
+ "Veles is built to be light on storage, memory and CPU. Run it on your server, PC, Raspberry Pi or Smart Toaster!": {
+ "message": "Veles ist so konstruiert, dass es geringe Festplattenspeicher, Arbeitsspeicher und CPU-Ressourcen braucht. Führe es auf deinem Server, PC, Raspberry Pi oder Smart Toaster aus!"
+ },
+ "Modern Codebase": {
+ "message": "Moderne Codebase"
+ },
+ "Veles is built from the ground up to deliver you the best experience using GoLang - a next-gen language from Google.": {
+ "message": "Veles ist von Grund auf gebaut, um die beste Erfahrung mit GoLang - einer modernen Sprache von Google - zu liefern."
+ },
+ "And the best thing It\\'s open source! Fork it, make a mod where all bad messages are replaced by cat images! You are free!": {
+ "message": "Und das Beste: Es ist Quelloffen! Forke es, mache eine Mod wo alle bösen Nachrichten mit Katzenbildern ersetzt werden! Du bist frei!"
+ },
+ "Convenient Web Interface": {
+ "message": "Bequeme Weboberfläche"
+ },
+ "Veles can be managed from any PC in the world. All you need to access the modern web interface is an internet connection and a web browser.": {
+ "message": "Veles kann von jedem PC auf der Welt verwaltet werden. Alles, was du für den Zugriff auf die moderne Webschnittstelle benötigst, ist eine Internetverbindung und ein Webbrowser."
+ }
+}
diff --git a/website/i18n/de/docusaurus-plugin-content-blog/options.json b/website/i18n/de/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 0000000..0199e5c
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "Blog",
+ "description": "The title for the blog used in SEO"
+ },
+ "description": {
+ "message": "Blog",
+ "description": "The description for the blog used in SEO"
+ },
+ "sidebar.title": {
+ "message": "Neueste Beiträge",
+ "description": "The label for the left sidebar"
+ }
+}
diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current.json b/website/i18n/de/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..32099de
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,14 @@
+{
+ "version.label": {
+ "message": "Nächste",
+ "description": "The label for version current"
+ },
+ "sidebar.tutorialSidebar.category.Tutorial - Basics": {
+ "message": "Einführung - Grundlagen",
+ "description": "The label for category Tutorial - Basics in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Tutorial - Extras": {
+ "message": "Einführung - Extras",
+ "description": "The label for category Tutorial - Extras in sidebar tutorialSidebar"
+ }
+}
diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/intro.md b/website/i18n/de/docusaurus-plugin-content-docs/current/intro.md
new file mode 100644
index 0000000..fc4c19f
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-docs/current/intro.md
@@ -0,0 +1,17 @@
+---
+sidebar_position: 1
+---
+
+# Einleitung
+
+:::caution
+
+Diese Dokumentation ist für die Alpha-Version von Matrix-Veles. Veles könnte instabil und seltsam sein.
+
+:::
+
+Also bist du an Veles interessiert, das ist großartig! Und tatsächlich bist du genau an die richtige Stelle gekommen.
+
+Dies ist die Dokumentation für Matrix-Veles. Sie enthält eine hilfreiche Schnellstart-Anleitung sowie detaillierte Referenzen für alles, was du brauchen könntest.
+
+Wie wäre es mit [der Grundlageneinführung](tutorial-basics/install) zu beginnen?
diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-basics/_category_.json b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-basics/_category_.json
new file mode 100644
index 0000000..2957d6b
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-basics/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Einführung - Grundlagen",
+ "position": 2
+}
diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-basics/install.md b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-basics/install.md
new file mode 100644
index 0000000..fb3ad2d
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-basics/install.md
@@ -0,0 +1,65 @@
+---
+sidebar_position: 1
+---
+
+# Veles Installation
+
+:::caution
+
+Diese Dokumentation ist für die Alpha-Version von Matrix-Veles. Veles könnte instabil und seltsam sein.
+
+:::
+
+:::info Software-Empfehlungen
+
+Obwohl Veles unter Linux, Windows und macOS funktionieren sollte, **empfehlen wir Linux** zu verwenden, da Veles unter diesem entwickelt und getestet wurde! (Veles kann auf arm-basierten Minicomputern laufen)
+
+:::
+
+## Docker
+
+:::tip TODO
+
+Dieser Abschnitt wird in Kürze kommen.
+
+:::
+
+## Bare-Metal
+
+:::info Vorab-Installationen
+
+Veles verwendet *MongoDB* als Datenbank-Backend. Bitte [zuerst den MongoDB Community Server](https://www.mongodb.com/try/download/community) installieren.
+
+:::
+
+### Verwendung der Binärversion
+
+Veles stellt fertige Binärdateien für die verbreitetsten Betriebssysteme und Architekturen bereit.
+
+ 1. Gehe zur [neuesten Version auf GitHub](https://github.com/Unkn0wnCat/matrix-veles/releases/latest)
+ 2. Navigiere unten zu "*Assets*" und finde die richtige Datei für dein Betriebssystem und deine Architektur
+ 3. Lade die Datei herunter (Linux/macOS: .tar.gz, Windows: .zip)
+ 1. (Optional) Überprüfe die MD5-Summe der heruntergeladenen Datei mit der angegebenen MD5-Summe
+ 4. Entpacke die Datei (Dein Betriebssystem sollte Hilfsprogramme haben, um dies zu tun)
+ 5. Navigiere in deinem Terminal zum entpackten Verzeichnis
+ 6. Führe `./matrix-veles generateConfig` aus um eine Basiskonfiguration zu erstellen (Linux: Du musst vielleicht die Datei mit `chmod +x ./matrix-veles` ausführbar machen)
+ 7. Bearbeite die Konfiguration in `./config.yaml` um dein Setup widerzuspiegeln
+ 8. Starte Matrix-Veles mit `./matrix-veles run`
+
+Du hast jetzt eine voll funktionsfähige Installation von Veles! 🎉 Greife auf das Web-Interface unter http://127.0.0.1:8123 zu!
+
+### Aus dem Quellcode erstellen
+
+:::info
+
+Erfahrung mit GoLang ist hierfür hilfreich!
+
+:::
+
+Um aus dem Quellcode zu bauen, stelle sicher, dass du die [neueste Version von GoLang](https://go.dev/dl/) installiert hast.
+
+1. Öffne ein Terminal und führe `go install github.com/Unkn0wnCat/matrix-veles@latest` aus
+2. Nach ein paar Minuten sollte das Build abgeschlossen sein
+3. Führe `matrix-veles generateConfig` in dem Ordner aus, in dem du die Konfiguration speichern möchtest
+4. Bearbeite die Konfiguration in `./config.yaml` um dein Setup widerzuspiegeln
+5. Starte Matrix-Veles mit `matrix-veles run` im selben Verzeichnis wie deine Konfiguration
diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-extras/_category_.json b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-extras/_category_.json
new file mode 100644
index 0000000..82d4088
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-extras/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Einführung - Extras",
+ "position": 3
+}
diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-extras/prometheus.md b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-extras/prometheus.md
new file mode 100644
index 0000000..4899508
--- /dev/null
+++ b/website/i18n/de/docusaurus-plugin-content-docs/current/tutorial-extras/prometheus.md
@@ -0,0 +1,11 @@
+---
+sidebar_position: 1
+---
+
+# Prometheus mit Veles verwenden
+
+Die Verwendung von Prometheus mit Veles ist sehr einfach, da Veles standardmäßig einen kompatiblen Metrikendpunkt bereitstellt.
+
+Um die Metriken zu verwenden, fügen Sie einfach einen Scrape-Job zu Prometheus hinzu, um die Metriken von `http://[dein-server-hier]:8123/metrics` zu ziehen.
+
+Und das war's auch schon, du hast jetzt Zugriff auf ein paar relevante Metriken um die Gesundheit deines Veles zu überwachen! 🎉
\ No newline at end of file
diff --git a/website/i18n/de/docusaurus-theme-classic/footer.json b/website/i18n/de/docusaurus-theme-classic/footer.json
new file mode 100644
index 0000000..6beb0c4
--- /dev/null
+++ b/website/i18n/de/docusaurus-theme-classic/footer.json
@@ -0,0 +1,30 @@
+{
+ "link.title.Docs": {
+ "message": "Dokumentation",
+ "description": "The title of the footer links column with title=Docs in the footer"
+ },
+ "link.title.More": {
+ "message": "Mehr",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.item.label.Tutorial": {
+ "message": "Einführung",
+ "description": "The label of footer link with label=Tutorial linking to /docs/intro"
+ },
+ "link.item.label.Imprint": {
+ "message": "Impressum",
+ "description": "The label of footer link with label=Imprint linking to https://kevink.dev/legal/about"
+ },
+ "link.item.label.Disclaimer": {
+ "message": "Disclaimer",
+ "description": "The label of footer link with label=Disclaimer linking to https://github.com/legal/disclaimer"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/facebook/docusaurus"
+ },
+ "copyright": {
+ "message": "CC-BY-4.0 2022, Matrix-Veles-Mitwirkende",
+ "description": "The footer copyright"
+ }
+}
diff --git a/website/i18n/de/docusaurus-theme-classic/navbar.json b/website/i18n/de/docusaurus-theme-classic/navbar.json
new file mode 100644
index 0000000..3e11f84
--- /dev/null
+++ b/website/i18n/de/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,18 @@
+{
+ "title": {
+ "message": "Matrix-Veles",
+ "description": "The title in the navbar"
+ },
+ "item.label.Documentation": {
+ "message": "Dokumentation",
+ "description": "Navbar item with label Documentation"
+ },
+ "item.label.GitHub": {
+ "message": "GitHub",
+ "description": "Navbar item with label GitHub"
+ },
+ "item.label.Download": {
+ "message": "Herunterladen",
+ "description": "Navbar item with label Download"
+ }
+}
diff --git a/website/i18n/en/code.json b/website/i18n/en/code.json
new file mode 100644
index 0000000..dd44bde
--- /dev/null
+++ b/website/i18n/en/code.json
@@ -0,0 +1,260 @@
+{
+ "theme.ErrorPageContent.title": {
+ "message": "This page crashed.",
+ "description": "The title of the fallback page when the page crashed"
+ },
+ "theme.ErrorPageContent.tryAgain": {
+ "message": "Try again",
+ "description": "The label of the button to try again when the page crashed"
+ },
+ "theme.NotFound.title": {
+ "message": "Page Not Found",
+ "description": "The title of the 404 page"
+ },
+ "theme.NotFound.p1": {
+ "message": "We could not find what you were looking for.",
+ "description": "The first paragraph of the 404 page"
+ },
+ "theme.NotFound.p2": {
+ "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.",
+ "description": "The 2nd paragraph of the 404 page"
+ },
+ "theme.BackToTopButton.buttonAriaLabel": {
+ "message": "Scroll back to top",
+ "description": "The ARIA label for the back to top button"
+ },
+ "theme.AnnouncementBar.closeButtonAriaLabel": {
+ "message": "Close",
+ "description": "The ARIA label for close button of announcement bar"
+ },
+ "theme.blog.archive.title": {
+ "message": "Archive",
+ "description": "The page & hero title of the blog archive page"
+ },
+ "theme.blog.archive.description": {
+ "message": "Archive",
+ "description": "The page & hero description of the blog archive page"
+ },
+ "theme.blog.paginator.navAriaLabel": {
+ "message": "Blog list page navigation",
+ "description": "The ARIA label for the blog pagination"
+ },
+ "theme.blog.paginator.newerEntries": {
+ "message": "Newer Entries",
+ "description": "The label used to navigate to the newer blog posts page (previous page)"
+ },
+ "theme.blog.paginator.olderEntries": {
+ "message": "Older Entries",
+ "description": "The label used to navigate to the older blog posts page (next page)"
+ },
+ "theme.blog.post.readingTime.plurals": {
+ "message": "One min read|{readingTime} min read",
+ "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.post.readMoreLabel": {
+ "message": "Read more about {title}",
+ "description": "The ARIA label for the link to full blog posts from excerpts"
+ },
+ "theme.blog.post.readMore": {
+ "message": "Read More",
+ "description": "The label used in blog post item excerpts to link to full blog posts"
+ },
+ "theme.blog.post.paginator.navAriaLabel": {
+ "message": "Blog post page navigation",
+ "description": "The ARIA label for the blog posts pagination"
+ },
+ "theme.blog.post.paginator.newerPost": {
+ "message": "Newer Post",
+ "description": "The blog post button label to navigate to the newer/previous post"
+ },
+ "theme.blog.post.paginator.olderPost": {
+ "message": "Older Post",
+ "description": "The blog post button label to navigate to the older/next post"
+ },
+ "theme.blog.sidebar.navAriaLabel": {
+ "message": "Blog recent posts navigation",
+ "description": "The ARIA label for recent posts in the blog sidebar"
+ },
+ "theme.blog.post.plurals": {
+ "message": "One post|{count} posts",
+ "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.blog.tagTitle": {
+ "message": "{nPosts} tagged with \"{tagName}\"",
+ "description": "The title of the page for a blog tag"
+ },
+ "theme.tags.tagsPageLink": {
+ "message": "View All Tags",
+ "description": "The label of the link targeting the tag list page"
+ },
+ "theme.CodeBlock.copyButtonAriaLabel": {
+ "message": "Copy code to clipboard",
+ "description": "The ARIA label for copy code blocks button"
+ },
+ "theme.CodeBlock.copied": {
+ "message": "Copied",
+ "description": "The copied button label on code blocks"
+ },
+ "theme.CodeBlock.copy": {
+ "message": "Copy",
+ "description": "The copy button label on code blocks"
+ },
+ "theme.docs.DocCard.categoryDescription": {
+ "message": "{count} items",
+ "description": "The default description for a category card in the generated index about how many items this category includes"
+ },
+ "theme.docs.sidebar.expandButtonTitle": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.sidebar.expandButtonAriaLabel": {
+ "message": "Expand sidebar",
+ "description": "The ARIA label and title attribute for expand button of doc sidebar"
+ },
+ "theme.docs.paginator.navAriaLabel": {
+ "message": "Docs pages navigation",
+ "description": "The ARIA label for the docs pagination"
+ },
+ "theme.docs.paginator.previous": {
+ "message": "Previous",
+ "description": "The label used to navigate to the previous doc"
+ },
+ "theme.docs.paginator.next": {
+ "message": "Next",
+ "description": "The label used to navigate to the next doc"
+ },
+ "theme.docs.sidebar.collapseButtonTitle": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.docs.sidebar.collapseButtonAriaLabel": {
+ "message": "Collapse sidebar",
+ "description": "The title attribute for collapse button of doc sidebar"
+ },
+ "theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": {
+ "message": "Toggle the collapsible sidebar category '{label}'",
+ "description": "The ARIA label to toggle the collapsible sidebar category"
+ },
+ "theme.docs.tagDocListPageTitle.nDocsTagged": {
+ "message": "One doc tagged|{count} docs tagged",
+ "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
+ },
+ "theme.docs.tagDocListPageTitle": {
+ "message": "{nDocsTagged} with \"{tagName}\"",
+ "description": "The title of the page for a docs tag"
+ },
+ "theme.docs.versionBadge.label": {
+ "message": "Version: {versionLabel}"
+ },
+ "theme.docs.versions.unreleasedVersionLabel": {
+ "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.",
+ "description": "The label used to tell the user that he's browsing an unreleased doc version"
+ },
+ "theme.docs.versions.unmaintainedVersionLabel": {
+ "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.",
+ "description": "The label used to tell the user that he's browsing an unmaintained doc version"
+ },
+ "theme.docs.versions.latestVersionSuggestionLabel": {
+ "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
+ "description": "The label used to tell the user to check the latest version"
+ },
+ "theme.docs.versions.latestVersionLinkLabel": {
+ "message": "latest version",
+ "description": "The label used for the latest version suggestion link label"
+ },
+ "theme.common.editThisPage": {
+ "message": "Edit this page",
+ "description": "The link label to edit the current page"
+ },
+ "theme.common.headingLinkTitle": {
+ "message": "Direct link to heading",
+ "description": "Title for link to heading"
+ },
+ "theme.lastUpdated.atDate": {
+ "message": " on {date}",
+ "description": "The words used to describe on which date a page has been last updated"
+ },
+ "theme.lastUpdated.byUser": {
+ "message": " by {user}",
+ "description": "The words used to describe by who the page has been last updated"
+ },
+ "theme.lastUpdated.lastUpdatedAtBy": {
+ "message": "Last updated{atDate}{byUser}",
+ "description": "The sentence used to display when a page has been last updated, and by who"
+ },
+ "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
+ "message": "← Back to main menu",
+ "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
+ },
+ "theme.navbar.mobileVersionsDropdown.label": {
+ "message": "Versions",
+ "description": "The label for the navbar versions dropdown on mobile view"
+ },
+ "theme.common.skipToMainContent": {
+ "message": "Skip to main content",
+ "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"
+ },
+ "theme.TOCCollapsible.toggleButtonLabel": {
+ "message": "On this page",
+ "description": "The label used by the button on the collapsible TOC component"
+ },
+ "theme.tags.tagsListLabel": {
+ "message": "Tags:",
+ "description": "The label alongside a tag list"
+ },
+ "theme.colorToggle.ariaLabel": {
+ "message": "Switch between dark and light mode (currently {mode})",
+ "description": "The ARIA label for the navbar color mode toggle"
+ },
+ "theme.colorToggle.ariaLabel.mode.dark": {
+ "message": "dark mode",
+ "description": "The name for the dark color mode"
+ },
+ "theme.colorToggle.ariaLabel.mode.light": {
+ "message": "light mode",
+ "description": "The name for the light color mode"
+ },
+ "theme.navbar.mobileLanguageDropdown.label": {
+ "message": "Languages",
+ "description": "The label for the mobile language switcher dropdown"
+ },
+ "theme.tags.tagsPageTitle": {
+ "message": "Tags",
+ "description": "The title of the tag list page"
+ },
+ "Protector of your Matrix-harvest!": {
+ "message": "Protector of your Matrix-harvest!"
+ },
+ "Quick Start Tutorial - 5min ⏱️": {
+ "message": "Quick Start Tutorial - 5min ⏱️"
+ },
+ "Welcome": {
+ "message": "Welcome",
+ "description": "Title of the homepage"
+ },
+ "Matrix-Veles is a next-gen bot for protecting Matrix-chat-rooms against spammers.": {
+ "message": "Matrix-Veles is a next-gen bot for protecting Matrix-chat-rooms against spammers.",
+ "description": "Meta-Description of the homepage"
+ },
+ "Lightweight": {
+ "message": "Lightweight"
+ },
+ "Veles is built to be light on storage, memory and CPU. Run it on your server, PC, Raspberry Pi or Smart Toaster!": {
+ "message": "Veles is built to be light on storage, memory and CPU. Run it on your server, PC, Raspberry Pi or Smart Toaster!"
+ },
+ "Modern Codebase": {
+ "message": "Modern Codebase"
+ },
+ "Veles is built from the ground up to deliver you the best experience using GoLang - a next-gen language from Google.": {
+ "message": "Veles is built from the ground up to deliver you the best experience using GoLang - a next-gen language from Google."
+ },
+ "And the best thing It\\'s open source! Fork it, make a mod where all bad messages are replaced by cat images! You are free!": {
+ "message": "And the best thing It\\'s open source! Fork it, make a mod where all bad messages are replaced by cat images! You are free!"
+ },
+ "Convenient Web Interface": {
+ "message": "Convenient Web Interface"
+ },
+ "Veles can be managed from any PC in the world. All you need to access the modern web interface is an internet connection and a web browser.": {
+ "message": "Veles can be managed from any PC in the world. All you need to access the modern web interface is an internet connection and a web browser."
+ }
+}
diff --git a/website/i18n/en/docusaurus-plugin-content-blog/options.json b/website/i18n/en/docusaurus-plugin-content-blog/options.json
new file mode 100644
index 0000000..9239ff7
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-blog/options.json
@@ -0,0 +1,14 @@
+{
+ "title": {
+ "message": "Blog",
+ "description": "The title for the blog used in SEO"
+ },
+ "description": {
+ "message": "Blog",
+ "description": "The description for the blog used in SEO"
+ },
+ "sidebar.title": {
+ "message": "Recent posts",
+ "description": "The label for the left sidebar"
+ }
+}
diff --git a/website/i18n/en/docusaurus-plugin-content-docs/current.json b/website/i18n/en/docusaurus-plugin-content-docs/current.json
new file mode 100644
index 0000000..e62d225
--- /dev/null
+++ b/website/i18n/en/docusaurus-plugin-content-docs/current.json
@@ -0,0 +1,14 @@
+{
+ "version.label": {
+ "message": "Next",
+ "description": "The label for version current"
+ },
+ "sidebar.tutorialSidebar.category.Tutorial - Basics": {
+ "message": "Tutorial - Basics",
+ "description": "The label for category Tutorial - Basics in sidebar tutorialSidebar"
+ },
+ "sidebar.tutorialSidebar.category.Tutorial - Extras": {
+ "message": "Tutorial - Extras",
+ "description": "The label for category Tutorial - Extras in sidebar tutorialSidebar"
+ }
+}
diff --git a/website/i18n/en/docusaurus-theme-classic/footer.json b/website/i18n/en/docusaurus-theme-classic/footer.json
new file mode 100644
index 0000000..6da31f6
--- /dev/null
+++ b/website/i18n/en/docusaurus-theme-classic/footer.json
@@ -0,0 +1,30 @@
+{
+ "link.title.Docs": {
+ "message": "Docs",
+ "description": "The title of the footer links column with title=Docs in the footer"
+ },
+ "link.title.More": {
+ "message": "More",
+ "description": "The title of the footer links column with title=More in the footer"
+ },
+ "link.item.label.Tutorial": {
+ "message": "Tutorial",
+ "description": "The label of footer link with label=Tutorial linking to /docs/intro"
+ },
+ "link.item.label.Imprint": {
+ "message": "Imprint",
+ "description": "The label of footer link with label=Imprint linking to https://kevink.dev/legal/about"
+ },
+ "link.item.label.Disclaimer": {
+ "message": "Disclaimer",
+ "description": "The label of footer link with label=Disclaimer linking to https://github.com/legal/disclaimer"
+ },
+ "link.item.label.GitHub": {
+ "message": "GitHub",
+ "description": "The label of footer link with label=GitHub linking to https://github.com/facebook/docusaurus"
+ },
+ "copyright": {
+ "message": "CC-BY-4.0 2022, Matrix-Veles Contributors",
+ "description": "The footer copyright"
+ }
+}
diff --git a/website/i18n/en/docusaurus-theme-classic/navbar.json b/website/i18n/en/docusaurus-theme-classic/navbar.json
new file mode 100644
index 0000000..5a6955d
--- /dev/null
+++ b/website/i18n/en/docusaurus-theme-classic/navbar.json
@@ -0,0 +1,18 @@
+{
+ "title": {
+ "message": "Matrix-Veles",
+ "description": "The title in the navbar"
+ },
+ "item.label.Documentation": {
+ "message": "Documentation",
+ "description": "Navbar item with label Documentation"
+ },
+ "item.label.GitHub": {
+ "message": "GitHub",
+ "description": "Navbar item with label GitHub"
+ },
+ "item.label.Download": {
+ "message": "Download",
+ "description": "Navbar item with label Download"
+ }
+}
diff --git a/website/package.json b/website/package.json
index e40db57..c877a44 100644
--- a/website/package.json
+++ b/website/package.json
@@ -12,9 +12,14 @@
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
- "typecheck": "tsc"
+ "typecheck": "tsc",
+ "crowdin": "crowdin",
+ "update-translations": "docusaurus write-translations && crowdin upload",
+ "download-translations": "crowdin download",
+ "crowdin:sync": "docusaurus write-translations && crowdin upload && crowdin download"
},
"dependencies": {
+ "@crowdin/cli": "3",
"@docusaurus/core": "2.0.0-beta.16",
"@docusaurus/preset-classic": "2.0.0-beta.16",
"@mdx-js/react": "^1.6.22",
diff --git a/website/src/components/HomepageFeatures/index.tsx b/website/src/components/HomepageFeatures/index.tsx
index 4e35ef6..0a4c2c1 100644
--- a/website/src/components/HomepageFeatures/index.tsx
+++ b/website/src/components/HomepageFeatures/index.tsx
@@ -2,6 +2,8 @@ import React from 'react';
import clsx from 'clsx';
import styles from './styles.module.css';
+import Translate, {translate} from '@docusaurus/Translate';
+
type FeatureItem = {
title: string;
image: string;
@@ -10,36 +12,40 @@ type FeatureItem = {
const FeatureList: FeatureItem[] = [
{
- title: 'Lightweight',
+ title: translate({message:'Lightweight'}),
image: null,
description: (
- <>
+
Veles is built to be light on storage, memory and CPU. Run it
on your server, PC, Raspberry Pi or Smart Toaster!
- >
+
),
},
{
- title: 'Modern Codebase',
+ title: translate({message:'Modern Codebase'}),
image: null,
- description: (
+ description:
<>
- Veles is built from the ground up to deliver you the best
- experience using GoLang - a next-gen language from Google.
- And the best thing? It's open source! Fork it, make a mod where
- all bad messages are replaced by cat images! You are free!
+
+ Veles is built from the ground up to deliver you the best
+ experience using GoLang - a next-gen language from Google.
+
+
+ And the best thing It\'s open source! Fork it, make a mod where
+ all bad messages are replaced by cat images! You are free!
+
>
- ),
+ ,
},
{
- title: 'Convenient Web Interface',
+ title: translate({message:'Convenient Web Interface'}),
image: null,
description: (
- <>
+
Veles can be managed from any PC in the world. All you
need to access the modern web interface is an internet
connection and a web browser.
- >
+
),
},
];
diff --git a/website/src/pages/index.tsx b/website/src/pages/index.tsx
index 77fd77b..0375427 100644
--- a/website/src/pages/index.tsx
+++ b/website/src/pages/index.tsx
@@ -6,18 +6,22 @@ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import styles from './index.module.css';
import HomepageFeatures from '@site/src/components/HomepageFeatures';
+import Translate, {translate} from '@docusaurus/Translate';
+
function HomepageHeader() {
const {siteConfig} = useDocusaurusContext();
return (