diff --git a/next-i18next.config.js b/next-i18next.config.js
index d5a94cc02..788692dfd 100644
--- a/next-i18next.config.js
+++ b/next-i18next.config.js
@@ -4,19 +4,20 @@ module.exports = {
i18n: {
defaultLocale: "en",
locales: [
- "en",
- "es",
+ "cs",
"da",
"de",
+ "en",
+ "es",
"fr",
+ "hu",
"it",
"ko",
"nl",
- "sv",
"pl",
- "pt",
"pt-BR",
- "hu",
+ "pt",
+ "sv",
"zh",
],
localePath: path.resolve("./public/locales"),
diff --git a/public/locales/cs/app.json b/public/locales/cs/app.json
new file mode 100644
index 000000000..49636b4d0
--- /dev/null
+++ b/public/locales/cs/app.json
@@ -0,0 +1,132 @@
+{
+ "12h": "12-hodinový",
+ "24h": "24-hodinový",
+ "addParticipant": "Přidat účastníka",
+ "addTimeOption": "Vybrat konkrétní čas",
+ "alreadyVoted": "Již jste hlasoval",
+ "applyToAllDates": "Použít pro všechny termíny",
+ "areYouSure": "Jste si jisti?",
+ "back": "Zpět",
+ "calendarHelp": "Hlasování nelze vytvořit bez žádných možností. Chcete-li pokračovat, přidejte alespoň jednu možnost.",
+ "calendarHelpTitle": "Zapomněli jste něco?",
+ "cancel": "Zrušit",
+ "comment": "Okomentovat",
+ "commentPlaceholder": "Zanechte komentář k této anketě (uvidí jej všichni)",
+ "comments": "Komentáře",
+ "continue": "Pokračovat",
+ "copied": "Zkopírováno",
+ "copyLink": "Zkopírovat odkaz",
+ "createdBy": "od {{name}}",
+ "createPoll": "Vytvořit anketu",
+ "creatingDemo": "Vytvářím demo anketu…",
+ "delete": "Smazat",
+ "deleteComment": "Odstranit komentář",
+ "deleteDate": "Odstranit termín",
+ "deletedPoll": "Smazaná anketa",
+ "deletedPollInfo": "Tato anketa již neexistuje.",
+ "deletePoll": "Smazat anketu",
+ "deletePollDescription": "Všechna data související s touto anketou budou smazána. Pro potvrzení, prosím, zadejte \"{{confirmText}}” do níže uvedeného pole:",
+ "deletingOptionsWarning": "Mažete možnosti, pro které účastníci hlasovali. Jejich hlasy budou taktéž smazány.",
+ "demoPollNotice": "Demo ankety se po jednom dni automaticky odstraní",
+ "description": "Popis",
+ "descriptionPlaceholder": "Ahoj všichni, prosím, hlasujte pro termíny, které vám vyhovují!",
+ "donate": "Podpořit",
+ "edit": "Upravit",
+ "editDetails": "Upravit údaje",
+ "editOptions": "Upravit možnosti",
+ "email": "E-mail",
+ "emailPlaceholder": "karel.novak@email.com",
+ "endingGuestSessionNotice": "Jakmile relace hosta skončí, nelze ji obnovit. Nebudete moci upravovat žádné hlasy nebo komentáře, které jste v rámci relace zapracovali.",
+ "endSession": "Ukončit relaci",
+ "errorCreate": "Jejda! Při vytváření ankety došlo k chybě. Chyba byla zaznamenána a na její opravě pracujeme.",
+ "exportToCsv": "Exportovat do CSV",
+ "finish": "Dokončit",
+ "forgetMe": "Zapomenout mě",
+ "goToAdmin": "Přejít do administrace",
+ "guest": "Host",
+ "guestSessionNotice": "Používáte relaci hosta. Díky tomu Vás rozpoznáme, pokud se vrátíte později a budete moci upravit své hlasy.",
+ "guestSessionReadMore": "Přečtěte si o relaci hosta více.",
+ "hide": "Skrýt",
+ "ifNeedBe": "Pokud je to nutné",
+ "linkHasExpired": "Platnost tohoto odkazu vypršela nebo již není platný",
+ "loading": "Načítám…",
+ "loadingParticipants": "Načítám účastníky…",
+ "location": "Místo",
+ "locationPlaceholder": "Příjemná kavárna v centru",
+ "lockPoll": "Zamknout anketu",
+ "login": "Přihlásit",
+ "loginCheckInbox": "Zkontrolujte si prosím svou e-mailovou schránku.",
+ "loginMagicLinkSent": "Kouzelný odkaz byl zaslán na:",
+ "loginSendMagicLink": "Zaslat kouzelný odkaz",
+ "loginViaMagicLink": "Přihlásit se pomocí kouzelného odkazu",
+ "loginViaMagicLinkDescription": "Pošleme vám e-mail s kouzelným odkazem, kterým se můžete do aplikace přihlásit.",
+ "loginWithValidEmail": "Zadejte platnou e-mailovou adresu",
+ "logout": "Odhlásit se",
+ "manage": "Spravovat",
+ "menu": "Menu",
+ "mixedOptionsDescription": "Nemůžete mít ve stejné anketě souběžně datum i čas. Kterou volbu chcete zachovat?",
+ "mixedOptionsKeepDates": "Zachovat datum",
+ "mixedOptionsKeepTimes": "Zachovat čas",
+ "mixedOptionsTitle": "Vydržte chvilku…🤔",
+ "monday": "Pondělí",
+ "monthView": "Měsíční pohled",
+ "name": "Jméno",
+ "namePlaceholder": "Karel Novák",
+ "new": "Nový",
+ "newPoll": "Nová anketa",
+ "next": "Další",
+ "nextMonth": "Další měsíc",
+ "no": "Ne",
+ "noDatesSelected": "Nebyl vybrán žádný termín",
+ "notificationsDisabled": "Oznámení byla vypnuta",
+ "notificationsOff": "Oznámení jsou vypnuta",
+ "notificationsOn": "Oznámení jsou zapnuta",
+ "notificationsOnDescription": "Jakmile se v anketě něco změní, dostanete upozornění na adresu {{email}}.",
+ "notificationsVerifyEmail": "Pro zapnutí oznámení musíte ověřit svůj e-mail",
+ "noVotes": "Nikdo pro tuto možnost nehlasoval",
+ "ok": "Ok",
+ "options": "Možnosti",
+ "participant": "Účastník",
+ "participantCount_other": "{{count}} účastníků",
+ "participantCount": "{{count}} účastník",
+ "pollHasBeenLocked": "Anketa byla uzamčena",
+ "pollHasBeenVerified": "Vaše anketa byla ověřena",
+ "pollOwnerNotice": "Dobrý den, {{name}}, zdá se, že jste vlastníkem této ankety.",
+ "pollsEmpty": "Nebyly vytvořeny žádné ankety",
+ "possibleAnswers": "Možné odpovědi",
+ "preferences": "Předvolby",
+ "previousMonth": "Předchozí měsíc",
+ "profileLogin": "Profil - přihlášení",
+ "profileUser": "Profil - {{username}}",
+ "requiredNameError": "Jméno je vyžadováno",
+ "save": "Uložit",
+ "saveInstruction": "Vyberte svou dostupnost a klikněte na {{save}}",
+ "share": "Sdílet",
+ "shareDescription": "Tento odkaz zašlete vašim účastníkům, aby mohli v anketě hlasovat.",
+ "shareLink": "Odkaz ke sdílení",
+ "specifyTimes": "Určete časy",
+ "specifyTimesDescription": "Zahrnout počáteční a koncové časy pro každý termín",
+ "stepSummary": "Krok {{current}} z {{total}}",
+ "sunday": "Neděli",
+ "timeAndDate": "Čas & datum",
+ "timeFormat": "Formát času:",
+ "timeZone": "Časová zóna:",
+ "title": "Název",
+ "titlePlaceholder": "Měsíční setkání",
+ "today": "Dnes",
+ "unlockPoll": "Odemknout anketu",
+ "unverifiedMessage": "Na adresu {{email}} byl zaslán odkaz pro ověření e-mailové adresy.",
+ "user": "Uživatel",
+ "vote": "Hlasovat",
+ "voteCount_other": "{{count}} hlasů",
+ "voteCount": "{{count}} hlas",
+ "weekStartsOn": "Týden začíná v",
+ "weekView": "Týdenní pohled",
+ "whatsThis": "Co to znamená?",
+ "yes": "Ano",
+ "you": "Vy",
+ "yourDetails": "Vaše údaje",
+ "yourName": "Vaše jméno…",
+ "yourProfile": "Váš profil",
+ "yourPolls": "Vaše ankety"
+}
diff --git a/public/locales/cs/common.json b/public/locales/cs/common.json
new file mode 100644
index 000000000..7a80d016a
--- /dev/null
+++ b/public/locales/cs/common.json
@@ -0,0 +1,15 @@
+{
+ "blog": "Blog",
+ "discussions": "Diskuze",
+ "donate": "Podpořit",
+ "footerCredit": "Vytvořil @imlukevella",
+ "footerSponsor": "Tento projekt je financován uživateli. Zvažte jeho podporu příspěvkem.",
+ "home": "Domů",
+ "language": "Jazyk",
+ "links": "Odkazy",
+ "poweredBy": "Poháněn",
+ "privacyPolicy": "Ochrana osobních údajů",
+ "starOnGithub": "Dejte nám hvězdu na Github",
+ "support": "Podpora",
+ "volunteerTranslator": "Pomozte přeložit tento web"
+}
diff --git a/public/locales/cs/errors.json b/public/locales/cs/errors.json
new file mode 100644
index 000000000..329a04999
--- /dev/null
+++ b/public/locales/cs/errors.json
@@ -0,0 +1,6 @@
+{
+ "notFoundTitle": "404 nenalezeno",
+ "notFoundDescription": "Nemohli jsme najít stránku, kterou hledáte.",
+ "goToHome": "Přejít domů",
+ "startChat": "Zahájit chat"
+}
diff --git a/public/locales/cs/homepage.json b/public/locales/cs/homepage.json
new file mode 100644
index 000000000..66f8adb81
--- /dev/null
+++ b/public/locales/cs/homepage.json
@@ -0,0 +1,36 @@
+{
+ "3Ls": "Ano—se 3 L",
+ "adFree": "Bez reklam",
+ "adFreeDescription": "Nechte svůj blokátor reklam spát = tady nebude potřeba.",
+ "comments": "Komentáře",
+ "commentsDescription": "Účastníci se mohou vyjádřit k vašemu průzkumu a komentáře budou viditelné pro všechny.",
+ "features": "Funkce",
+ "featuresSubheading": "Plánování, chytřeji",
+ "follow": "Sledujte",
+ "getStarted": "Začněme",
+ "heroSubText": "Najděte správné datum bez běhání tam a zpět",
+ "heroText": "Plánujte
setkání skupin
snadno",
+ "links": "Odkazy",
+ "liveDemo": "Demo",
+ "metaDescription": "Vytvořte ankety a hlasujte pro nalezení nejlepšího dne nebo času. Bezplatná alternativa k Doodle.",
+ "metaTitle": "Rallly - naplánovat setkání skupin",
+ "mobileFriendly": "Vhodné pro mobil",
+ "mobileFriendlyDescription": "Funguje skvěle na mobilních zařízeních, aby účastníci mohli odpovídat na ankety, ať jsou kdekoliv.",
+ "new": "Nové",
+ "noLoginRequired": "Bez přihlášení",
+ "noLoginRequiredDescription": "Pro vytvoření nebo účast v anketě se nemusíte přihlásit",
+ "notifications": "Oznámení",
+ "notificationsDescription": "Sledujte kdo odpověděl. Dostávejte upozornění, když účastníci hlasují nebo komentují Vaši anketu.",
+ "openSource": "Open-source",
+ "openSourceDescription": "Veškerý kód je plně open-source a k dispozici na GitHub.",
+ "participant": "Účastník",
+ "participantCount_other": "{{count}} účastníků",
+ "participantCount": "{{count}} účastník",
+ "perfect": "Skvěle!",
+ "principles": "Zásady",
+ "principlesSubheading": "Nejsme jako ostatní",
+ "selfHostable": "Vlastní hosting",
+ "selfHostableDescription": "Rozjeďte si vlastní server a získejte plnou kontrolu nad svými daty",
+ "timeSlots": "Časové sloty",
+ "timeSlotsDescription": "Nastavte počáteční a koncový čas pro každou možnost ve Vaší anketě. Časy mohou být automaticky upraveny podle časové zóny každého účastníka, nebo mohou být nastaveny tak, aby zcela časové zóny ignorovaly."
+}
diff --git a/src/components/poll/language-selector.tsx b/src/components/poll/language-selector.tsx
index c64842336..de59c905b 100644
--- a/src/components/poll/language-selector.tsx
+++ b/src/components/poll/language-selector.tsx
@@ -19,19 +19,20 @@ export const LanguageSelect: React.VoidFunctionComponent<{
}}
>
+
+
-
+
-
+
-
);
};
diff --git a/src/middleware.ts b/src/middleware.ts
index 42c7a857d..35ecef190 100644
--- a/src/middleware.ts
+++ b/src/middleware.ts
@@ -2,20 +2,21 @@ import languageParser from "accept-language-parser";
import { NextRequest, NextResponse } from "next/server";
const supportedLocales = [
- "en",
- "es",
+ "cs",
"da",
"de",
+ "en",
+ "es",
"fr",
+ "hu",
"it",
"ko",
"nl",
- "sv",
- "hu",
- "zh",
- "pt",
- "pt-BR",
"pl",
+ "pt-BR",
+ "pt",
+ "sv",
+ "zh",
];
export function middleware({ headers, cookies, nextUrl }: NextRequest) {
diff --git a/src/utils/dayjs.tsx b/src/utils/dayjs.tsx
index 8dfedefa0..6db974899 100644
--- a/src/utils/dayjs.tsx
+++ b/src/utils/dayjs.tsx
@@ -60,6 +60,11 @@ const dayjsLocales: Record<
timeFormat: "24h",
import: () => import("dayjs/locale/sv"),
},
+ cs: {
+ weekStartsOn: "monday",
+ timeFormat: "24h",
+ import: () => import("dayjs/locale/cs"),
+ },
pl: {
weekStartsOn: "monday",
timeFormat: "24h",