From d1a352a473cb0641368e7a5fdc8076d24bd94788 Mon Sep 17 00:00:00 2001 From: Raul Lugo Date: Tue, 11 Aug 2026 23:27:32 +0200 Subject: [PATCH] feat: polish language --- lib/i18n/config.ts | 1 + lib/i18n/dictionaries/index.ts | 2 + lib/i18n/dictionaries/pl.ts | 80 ++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 lib/i18n/dictionaries/pl.ts diff --git a/lib/i18n/config.ts b/lib/i18n/config.ts index ae92bd9..ccb46af 100644 --- a/lib/i18n/config.ts +++ b/lib/i18n/config.ts @@ -2,6 +2,7 @@ export const supportedLanguages = [ { code: "en", label: "English" }, { code: "es", label: "Spanish" }, { code: "de", label: "German" }, + { code: "pl", label: "Polish" }, ] as const export type SupportedLanguage = (typeof supportedLanguages)[number]["code"] diff --git a/lib/i18n/dictionaries/index.ts b/lib/i18n/dictionaries/index.ts index 2e06c14..930e822 100644 --- a/lib/i18n/dictionaries/index.ts +++ b/lib/i18n/dictionaries/index.ts @@ -1,11 +1,13 @@ import { de } from "./de" import { en } from "./en" import { es } from "./es" +import { pl } from "./pl" export const dictionaries = { en, es, de, + pl, } as const export type GuestDictionary = typeof en diff --git a/lib/i18n/dictionaries/pl.ts b/lib/i18n/dictionaries/pl.ts new file mode 100644 index 0000000..326d890 --- /dev/null +++ b/lib/i18n/dictionaries/pl.ts @@ -0,0 +1,80 @@ +export const pl = { + invalid: { + title: "Nie znaleziono zaproszenia", + description: "Nie mogliśmy znaleźć tego zaproszenia. Sprawdź link albo skontaktuj się z nami.", + }, + hero: { + eyebrow: "Zaproszenie ślubne", + title: "Nie możemy się doczekać wspólnego świętowania", + greeting: "Cześć, {name}!", + description: + "Potwierdź proszę, kto będzie z nami, i podziel się kilkoma szczegółami podróży, żebyśmy mogli wszystko dobrze zaplanować.", + }, + deadline: { + open: "Możesz edytować odpowiedź do {date}.", + closed: "Termin potwierdzenia obecności już minął. Twoje odpowiedzi są teraz tylko do odczytu.", + }, + sections: { + wedding: "Szczegóły ślubu", + rsvp: "Potwierdzenie obecności", + travel: "Szczegóły podróży", + interactions: "Dodaj coś od siebie", + }, + wedding: { + dateLabel: "Data", + dateValue: "Data ślubu zostanie dodana wkrótce", + locationLabel: "Miejsce", + locationValue: "Szczegóły miejsca zostaną dodane wkrótce", + accommodationLabel: "Nocleg", + accommodationValue: "Rekomendacje noclegów w pobliżu dodamy później.", + }, + form: { + attending: "Czy będziesz obecny/obecna?", + yes: "Tak", + no: "Nie", + mealPreference: "Preferencje dotyczące posiłku", + mealPlaceholder: "Wybierz posiłek", + dietaryRestrictions: "Ograniczenia żywieniowe", + noRestrictions: "Brak ograniczeń", + arrivalDate: "Data przyjazdu", + departureDate: "Data wyjazdu", + stayLocation: "Gdzie się zatrzymasz?", + needsTransportHelp: "Czy potrzebujesz pomocy z transportem?", + messageToCouple: "Wiadomość dla pary młodej", + submit: "Zapisz odpowiedź", + submitted: "Dziękujemy — Twoja odpowiedź została zapisana.", + }, + meals: { + meat: "Mięso", + fish: "Ryba", + vegetarian: "Wegetariańskie", + vegan: "Wegańskie", + kids: "Menu dziecięce", + other: "Inne", + }, + errors: { + generic: "Sprawdź formularz i spróbuj ponownie.", + closed: "Termin potwierdzenia obecności już minął.", + }, + interactions: { + intro: "To pytanie jest opcjonalne i pomoże nam zaplanować przebieg uroczystości.", + toastTitle: "Toast lub przemówienie", + toastDescription: "Czy ktoś z Waszej grupy chciałby powiedzieć kilka słów? To opcjonalne — my zajmiemy się harmonogramem.", + wantsToast: "Ktoś chciałby zabrać głos", + speakerName: "Imię osoby przemawiającej", + estimatedMinutes: "Szacowany czas w minutach", + }, + upload: { + title: "Zdjęcie do ślubnej niespodzianki", + description: "Prześlij jedno zdjęcie siebie lub Waszej grupy do ślubnej aktywności. Możesz je zastąpić do terminu odpowiedzi.", + current: "Aktualnie przesłane zdjęcie: {filename}", + choose: "Wybierz obraz", + upload: "Prześlij zdjęcie", + replace: "Zastąp zdjęcie", + uploading: "Przesyłanie...", + success: "Zdjęcie zostało przesłane.", + error: "Nie udało się przesłać zdjęcia. Spróbuj ponownie.", + disabled: "Przesyłanie zdjęć jest zamknięte, ponieważ termin odpowiedzi już minął.", + requirements: "JPG, PNG lub WebP. Maksymalnie 10 MB.", + }, +} as const