From 2092fa639b84a95148c7876c37d7a9765bc79dde Mon Sep 17 00:00:00 2001 From: Luke Vella Date: Mon, 24 Oct 2022 10:04:13 +0100 Subject: [PATCH] Add polish locale (#336) --- next-i18next.config.js | 1 + public/locales/pl/app.json | 132 ++++++++++++++++++++++ public/locales/pl/common.json | 15 +++ public/locales/pl/errors.json | 6 + public/locales/pl/homepage.json | 36 ++++++ src/components/poll/language-selector.tsx | 1 + src/middleware.ts | 1 + src/utils/dayjs.tsx | 5 + 8 files changed, 197 insertions(+) create mode 100644 public/locales/pl/app.json create mode 100644 public/locales/pl/common.json create mode 100644 public/locales/pl/errors.json create mode 100644 public/locales/pl/homepage.json diff --git a/next-i18next.config.js b/next-i18next.config.js index 7fc45da2e..d5a94cc02 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -13,6 +13,7 @@ module.exports = { "ko", "nl", "sv", + "pl", "pt", "pt-BR", "hu", diff --git a/public/locales/pl/app.json b/public/locales/pl/app.json new file mode 100644 index 000000000..8e52b1598 --- /dev/null +++ b/public/locales/pl/app.json @@ -0,0 +1,132 @@ +{ + "12h": "12-godzinny", + "24h": "24-godzinny", + "addParticipant": "Dodaj uczestnika", + "addTimeOption": "Dodaj opcję czasową", + "alreadyVoted": "Już zagłosowałeś", + "applyToAllDates": "Zastosuj do wszystkich dat", + "areYouSure": "Jesteś pewny?", + "back": "Powrót", + "calendarHelp": "Nie możesz utworzyć ankiety bez żadnej opcji. Dodaj co najmniej jedną opcję, aby kontynuować.", + "calendarHelpTitle": "Zapomniałeś o czymś?", + "cancel": "Anuluj", + "comment": "Skomentuj", + "commentPlaceholder": "Zostaw komentarz do tej ankiety (widoczny dla wszystkich)", + "comments": "Komentarze", + "continue": "Kontynuuj", + "copied": "Skopiowano", + "copyLink": "Kopiuj link", + "createdBy": "od {{name}}", + "createPoll": "Utwórz ankietę", + "creatingDemo": "Tworzenie ankiety demonstracyjnej…", + "delete": "Usuń", + "deleteComment": "Usuń komentarz", + "deleteDate": "Usuń datę", + "deletedPoll": "Usuń ankietę", + "deletedPollInfo": "Ta ankieta już nie istnieje.", + "deletePoll": "Usuń ankietę", + "deletePollDescription": "Wszystkie dane związane z tą ankietą zostaną usunięte. Aby potwierdzić, wpisz „{{confirmText}}” poniższej:", + "deletingOptionsWarning": "Usuwasz opcje, na które głosowali uczestnicy. Ich głosy również zostaną usunięte.", + "demoPollNotice": "Ankiety demonstracyjne są automatycznie usuwane po 1 dniu", + "description": "Opis", + "descriptionPlaceholder": "Cześć wszystkim, wybierzcie terminy, które Wam pasują!", + "donate": "Wesprzyj nas", + "edit": "Edytuj", + "editDetails": "Edytuj szczegóły", + "editOptions": "Edytuj opcje", + "email": "Email", + "emailPlaceholder": "jan.kowalski@email.com", + "endingGuestSessionNotice": "Po zakończeniu sesji gościa nie można jej wznowić. Nie będzie można edytować żadnych głosów ani komentarzy dodanych podczas tej sesji.", + "endSession": "Zakończ sesję", + "errorCreate": "Oh nie! Podczas tworzenia ankiety wystąpił problem. Błąd został zarejestrowany i spróbujemy go naprawić.", + "exportToCsv": "Eksport do CSV", + "finish": "Zakończ", + "forgetMe": "Zapomnij mnie", + "goToAdmin": "Przejdź do panelu administratora", + "guest": "Gość", + "guestSessionNotice": "Używasz sesji gościa. Pozwala nam to rozpoznać, jeśli wrócisz później, abyś mógł edytować swoje głosy.", + "guestSessionReadMore": "Przeczytaj więcej o sesjach gości.", + "hide": "Ukryj", + "ifNeedBe": "W razie potrzeby", + "linkHasExpired": "Twój link wygasł lub nie jest już ważny", + "loading": "Wczytywanie…", + "loadingParticipants": "Wczytywanie uczestników…", + "location": "Lokalizacja", + "locationPlaceholder": "Sklep z kawą Joe", + "lockPoll": "Zablokuj ankietę", + "login": "Logowanie", + "loginCheckInbox": "Sprawdź swoją skrzynkę.", + "loginMagicLinkSent": "Magiczny link został wysłany na:", + "loginSendMagicLink": "Wyślij mi magiczny link", + "loginViaMagicLink": "Zaloguj się za pomocą magicznego linku", + "loginViaMagicLinkDescription": "Wyślemy Ci e-mail z magicznym linkiem, którego możesz użyć do logowania.", + "loginWithValidEmail": "Wpisz prawidłowy adres e-mail", + "logout": "Wyloguj", + "manage": "Zarządzaj", + "menu": "Menu", + "mixedOptionsDescription": "Nie możesz mieć w tej samej ankiecie obu opcji daty i godziny. Które chciałbyś zachować?", + "mixedOptionsKeepDates": "Zachowaj opcje daty", + "mixedOptionsKeepTimes": "Zachowaj opcje czasu", + "mixedOptionsTitle": "Poczekaj minutę…🤔", + "monday": "Poniedziałek", + "monthView": "Widok Miesięczny", + "name": "Imię", + "namePlaceholder": "Jan Kowalski", + "new": "Nowy", + "newPoll": "Nowa ankieta", + "next": "Dalej", + "nextMonth": "Następny miesiąc", + "no": "Nie", + "noDatesSelected": "Nie wybrano dat", + "notificationsDisabled": "Powiadomienia zostały wyłączone", + "notificationsOff": "Powiadomienia są wyłączone", + "notificationsOn": "Powiadomienia są włączone", + "notificationsOnDescription": "Wiadomość e-mail zostanie wysłana na {{email}}, gdy będzie aktywność w tej ankiecie.", + "notificationsVerifyEmail": "Aby włączyć powiadomienia, musisz zweryfikować swój adres e-mail", + "noVotes": "Nikt nie głosował na tę opcję", + "ok": "Ok", + "options": "Opcje", + "participant": "Uczestnik", + "participantCount_other": "{{count}} uczestników", + "participantCount": "{{count}} uczestnik", + "pollHasBeenLocked": "Ta ankieta została zablokowana", + "pollHasBeenVerified": "Twoja ankieta została zweryfikowana", + "pollOwnerNotice": "Hej {{name}}, wygląda na to, że jesteś właścicielem tej ankiety.", + "pollsEmpty": "Nie utworzono ankiet", + "possibleAnswers": "Możliwe opcje", + "preferences": "Ustawienia", + "previousMonth": "Poprzedni miesiąc", + "profileLogin": "Profil - logowanie", + "profileUser": "Profil - {{username}}", + "requiredNameError": "Imię jest wymagane", + "save": "Zapisz", + "saveInstruction": "Wybierz swoją dostępność i kliknij {{save}}", + "share": "Udostępnij", + "shareDescription": "Przekaż ten link uczestnikom, aby mogli zagłosować na ankietę.", + "shareLink": "Udostępnij link", + "specifyTimes": "Podaj czas", + "specifyTimesDescription": "Dołącz godziny rozpoczęcia i zakończenia dla każdej opcji", + "stepSummary": "Etap {{current}} z {{total}}", + "sunday": "Niedziela", + "timeAndDate": "Czas i data", + "timeFormat": "Format czasu:", + "timeZone": "Strefa czasowa:", + "title": "Tytuł", + "titlePlaceholder": "Miesięczne spotkanie", + "today": "Dziś", + "unlockPoll": "Odblokuj ankietę", + "unverifiedMessage": "Na adres {{email}} został wysłany e-mail z linkiem do weryfikacji adresu.", + "user": "Użytkownik", + "vote": "Głosuj", + "voteCount_other": "{{count}} głosów", + "voteCount": "{{count}} głos", + "weekStartsOn": "Pierwszy dzień tygodnia", + "weekView": "Widok tygodniowy", + "whatsThis": "Co to jest?", + "yes": "Tak", + "you": "Ty", + "yourDetails": "Twoje dane", + "yourName": "Twoje imię…", + "yourProfile": "Twój profil", + "yourPolls": "Twoje ankiety" +} diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json new file mode 100644 index 000000000..9bd68525c --- /dev/null +++ b/public/locales/pl/common.json @@ -0,0 +1,15 @@ +{ + "blog": "Blog", + "discussions": "Dyskusje", + "donate": "Wesprzyj nas", + "footerCredit": "Stworzone przez @imlukevella", + "footerSponsor": "Ten projekt jest finansowany przez użytkowników. Proszę rozważyć wsparcie go poprzez darowiznę.", + "home": "Strona główna", + "language": "Język", + "links": "Linki", + "poweredBy": "Dzięki wsparciu", + "privacyPolicy": "Polityka prywatności", + "starOnGithub": "Dodaj gwiazdkę na GitHubie", + "support": "Wsparcie", + "volunteerTranslator": "Pomóź w przetłumaczeniu tej strony" +} diff --git a/public/locales/pl/errors.json b/public/locales/pl/errors.json new file mode 100644 index 000000000..55c1ec366 --- /dev/null +++ b/public/locales/pl/errors.json @@ -0,0 +1,6 @@ +{ + "notFoundTitle": "404 brak strony", + "notFoundDescription": "Nie mogliśmy znaleźć strony, której szukasz.", + "goToHome": "Przejdź do strony głównej", + "startChat": "Rozpocznij czat" +} diff --git a/public/locales/pl/homepage.json b/public/locales/pl/homepage.json new file mode 100644 index 000000000..5430d622c --- /dev/null +++ b/public/locales/pl/homepage.json @@ -0,0 +1,36 @@ +{ + "3Ls": "Tak—z 3 L", + "adFree": "Bez reklam", + "adFreeDescription": "Możesz dać odpocząć swojemu blokowaniu reklam — nie będziesz go tutaj potrzebował.", + "comments": "Komentarze", + "commentsDescription": "Uczestnicy mogą komentować Twoją ankietę, a komentarze będą widoczne dla wszystkich.", + "features": "Funkcje", + "featuresSubheading": "Planowanie w sprytny sposób", + "follow": "Obserwuj", + "getStarted": "Zacznij", + "heroSubText": "Znajdź właściwą datę bez wracania tam i z powrotem", + "heroText": "Zaplanuj
spotkania grupowe
z łatwością", + "links": "Linki", + "liveDemo": "Demo", + "metaDescription": "Twórz ankiety i głosuj, aby znaleźć najlepszy dzień lub godzinę. Bezpłatna alternatywa dla Doodle.", + "metaTitle": "Rallly - Zaplanuj spotkania grupowe", + "mobileFriendly": "Dostosowane do urządzeń mobilnych", + "mobileFriendlyDescription": "Działa świetnie na urządzeniach mobilnych, dzięki czemu uczestnicy mogą odpowiadać na ankiety, gdziekolwiek się znajdują.", + "new": "Nowość", + "noLoginRequired": "Nie wymaga logowania", + "noLoginRequiredDescription": "Nie musisz się logować, aby utworzyć lub wziąć udział w ankiecie", + "notifications": "Powiadomienia", + "notificationsDescription": "Śledź, kto odpowiedział. Otrzymuj powiadomienia, gdy uczestnicy zagłosują lub skomentują Twoją ankietę.", + "openSource": "Open-source", + "openSourceDescription": "Kod jest w pełni open-source i dostępna na GitHub.", + "participant": "Uczestnik", + "participantCount_other": "{{count}} uczestników", + "participantCount": "{{count}} uczestnik", + "perfect": "Idealne!", + "principles": "Założenia", + "principlesSubheading": "Nie jesteśmy jak inni", + "selfHostable": "Self-hostable", + "selfHostableDescription": "Uruchom go na własnym serwerze, aby mieć pełną kontrolę nad swoimi danymi", + "timeSlots": "Przedziały czasowe", + "timeSlotsDescription": "Ustaw indywidualne godziny rozpoczęcia i zakończenia dla każdej opcji w swojej ankiecie. Czasy mogą być automatycznie dostosowywane do strefy czasowej każdego uczestnika lub mogą być ustawione tak, aby całkowicie ignorować strefy czasowe." +} diff --git a/src/components/poll/language-selector.tsx b/src/components/poll/language-selector.tsx index ed0772eea..c64842336 100644 --- a/src/components/poll/language-selector.tsx +++ b/src/components/poll/language-selector.tsx @@ -28,6 +28,7 @@ export const LanguageSelect: React.VoidFunctionComponent<{ + diff --git a/src/middleware.ts b/src/middleware.ts index 98adac8d3..42c7a857d 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -15,6 +15,7 @@ const supportedLocales = [ "zh", "pt", "pt-BR", + "pl", ]; export function middleware({ headers, cookies, nextUrl }: NextRequest) { diff --git a/src/utils/dayjs.tsx b/src/utils/dayjs.tsx index cd78fc891..8dfedefa0 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"), }, + pl: { + weekStartsOn: "monday", + timeFormat: "24h", + import: () => import("dayjs/locale/pl"), + }, pt: { weekStartsOn: "monday", timeFormat: "24h",