'../pages/DiscordBot'
)}
/>
+ <Route
+ path="discord-privacy"
+ lazy={() => import(
+ /* webpackChunkName: "discord" */
+ '../pages/DiscordPrivacy'
+ )}
+ />
+ <Route
+ path="discord-terms"
+ lazy={() => import(
+ /* webpackChunkName: "discord" */
+ '../pages/DiscordTerms'
+ )}
+ />
<Route
path="dungeons"
element={<Techniques namespace="dungeons" type="dungeon" />}
userSubscriptions: 'Abonnierte Benutzer',
userUnsubError: 'Fehler beim Kündigen',
},
+ discordPrivacy: {
+ date: 'Letzte Änderung: {{ date, LL }}',
+ heading: 'Discord Bot Datenschutzbestimmungen',
+ p1: 'Wenn du den Discord Bot auf deinen Server einlädst, läd er die Channel-Liste, Rollen-Liste und User-Liste. Das wird benutzt, um die Steuerelemente auf der Weboberfläche zu füllen.',
+ p2: 'Daten im Zusammenhang mit DMs und Interaktionen werden nur zur Abhandlung im Arbeitsspeicher behalten und NICHT permanent gespeichert.',
+ },
+ discordTerms: {
+ date: 'Letzte Änderung: {{ date, LL }}',
+ heading: 'Discord Bot Nutzungsbedingungen',
+ p1: 'Jedem steht frei, den Discord Bot einzuladen und die bereitgestellten Funktionen zu nutzen.',
+ p2: 'Die Nützlichkeit ebbt jedoch stark ab, wenn man nicht an Retro Speedrun und Randomizer Races interessiert ist.',
+ },
episodes: {
addPlayer: 'Spieler hinzufügen',
addRestream: 'Neuer Restream',
userSubscriptions: 'User subscriptions',
userUnsubError: 'Error unsubscribing',
},
+ discordPrivacy: {
+ date: 'Last changed: {{ date, LL }}',
+ heading: 'Discord Bot Privacy Policy',
+ p1: 'When you add this bot to your server, it loads the channel list, role list and user list. This is to populate the control elements on the web interface.',
+ p2: 'Data involved in handling DMs and interactions are processed in RAM and are NOT stored on disk.',
+ },
+ discordTerms: {
+ date: 'Last changed: {{ date, LL }}',
+ heading: 'Discord Bot Terms of Service',
+ p1: 'Anyone is free to invite this bot to their discord server and use its functions as they see fit.',
+ p2: 'Its usefulness, however, greatly decreases if you\'re not into retro speedrun and randomizer races.',
+ },
episodes: {
addPlayer: 'Add player',
addRestream: 'Add Restream',
--- /dev/null
+import React from 'react';
+import { Container } from 'react-bootstrap';
+import { Helmet } from 'react-helmet';
+import { useTranslation } from 'react-i18next';
+
+const TERMS_DATE = new Date('2025-07-31T10:00:00Z');
+
+export const Component = () => {
+ const { t } = useTranslation();
+
+ return <Container>
+ <h1>{t('discordPrivacy.heading')}</h1>
+ <Helmet>
+ <title>{t('discordPrivacy.heading')}</title>
+ </Helmet>
+ <p>{t('discordPrivacy.p1')}</p>
+ <p>{t('discordPrivacy.p2')}</p>
+ <p className="text-muted">{t('discordPrivacy.date', { date: TERMS_DATE })}</p>
+ </Container>;
+};
--- /dev/null
+import React from 'react';
+import { Container } from 'react-bootstrap';
+import { Helmet } from 'react-helmet';
+import { useTranslation } from 'react-i18next';
+
+const PRIVACY_DATE = new Date('2025-07-31T10:00:00Z');
+
+export const Component = () => {
+ const { t } = useTranslation();
+
+ return <Container>
+ <h1>{t('discordTerms.heading')}</h1>
+ <Helmet>
+ <title>{t('discordTerms.heading')}</title>
+ </Helmet>
+ <p>{t('discordTerms.p1')}</p>
+ <p>{t('discordTerms.p2')}</p>
+ <p className="text-muted">{t('discordTerms.date', { date: PRIVACY_DATE })}</p>
+ </Container>;
+};