Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/components/launch/popovers/MorePopover.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ const LOCALE_LABELS: Record<string, string> = {
it: "Italiano",
nl: "Nederlands",
ko: "한국어",
pl: "Polski",
"pt-BR": "Português",
"zh-CN": "簡體中文",
"zh-TW": "繁體中文",
Expand Down
1 change: 1 addition & 0 deletions src/components/video-editor/SettingsPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,7 @@ const APP_LANGUAGE_LABELS: Record<AppLocale, string> = {
it: "Italiano",
nl: "Nederlands",
ko: "한국어",
pl: "Polski",
"pt-BR": "Português",
"zh-CN": "簡體中文",
"zh-TW": "繁體中文",
Expand Down
18 changes: 18 additions & 0 deletions src/contexts/I18nContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,14 @@ import nlLaunch from "@/i18n/locales/nl/launch.json";
import nlSettings from "@/i18n/locales/nl/settings.json";
import nlShortcuts from "@/i18n/locales/nl/shortcuts.json";
import nlTimeline from "@/i18n/locales/nl/timeline.json";
import plCommon from "@/i18n/locales/pl/common.json";
import plDialogs from "@/i18n/locales/pl/dialogs.json";
import plEditor from "@/i18n/locales/pl/editor.json";
import plExtensions from "@/i18n/locales/pl/extensions.json";
import plLaunch from "@/i18n/locales/pl/launch.json";
import plSettings from "@/i18n/locales/pl/settings.json";
import plShortcuts from "@/i18n/locales/pl/shortcuts.json";
import plTimeline from "@/i18n/locales/pl/timeline.json";
import ptBRCommon from "@/i18n/locales/pt-BR/common.json";
import ptBRDialogs from "@/i18n/locales/pt-BR/dialogs.json";
import ptBREditor from "@/i18n/locales/pt-BR/editor.json";
Expand Down Expand Up @@ -142,6 +150,16 @@ const messages: Record<AppLocale, LocaleBundle> = {
shortcuts: nlShortcuts,
extensions: nlExtensions,
},
pl: {
common: plCommon,
launch: plLaunch,
editor: plEditor,
timeline: plTimeline,
settings: plSettings,
dialogs: plDialogs,
shortcuts: plShortcuts,
extensions: plExtensions,
},
ko: {
common: koCommon,
launch: koLaunch,
Expand Down
2 changes: 1 addition & 1 deletion src/i18n/config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export const DEFAULT_LOCALE = "en" as const;

export const SUPPORTED_LOCALES = ["en", "es", "fr", "it", "nl", "ko", "pt-BR", "zh-CN", "zh-TW"] as const;
export const SUPPORTED_LOCALES = ["en", "es", "fr", "it", "nl", "ko", "pl", "pt-BR", "zh-CN", "zh-TW"] as const;

export const I18N_NAMESPACES = [
"common",
Expand Down
26 changes: 26 additions & 0 deletions src/i18n/locales/pl/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"app": {
"name": "Recordly",
"editorTitle": "Edytor Recordly",
"subtitle": "Nagrywanie i edycja ekranu",
"language": "Język",
"manageRecordings": "Otwórz folder z nagraniami"
},
"actions": {
"cancel": "Anuluj",
"close": "Zamknij",
"export": "Eksportuj",
"load": "Wczytaj",
"redo": "Ponów",
"reset": "Resetuj",
"save": "Zapisz",
"undo": "Cofnij",
"delete": "Usuń",
"done": "Gotowe"
},
"errors": {
"invalidFileType": "Nieprawidłowy typ pliku",
"failedToUploadImage": "Nie udało się przesłać obrazu",
"fileReadError": "Wystąpił błąd podczas odczytu pliku."
}
}
62 changes: 62 additions & 0 deletions src/i18n/locales/pl/dialogs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"export": {
"pleaseTryAgain": "Spróbuj ponownie",
"compilingGifProgress": "Kompilowanie GIF... {{progress}}%",
"compilingGifWait": "Kompilowanie GIF... To może chwilę potrwać",
"takeMoment": "To może chwilę zająć...",
"exportFailed": "Eksport nie powiódł się",
"compilingGifTitle": "Kompilowanie GIF",
"exportingFormat": "Eksportowanie {{format}}",
"exportComplete": "Eksport zakończony",
"formatReady": "{{format}} jest gotowy",
"showInFolder": "Pokaż w folderze",
"compiling": "Kompilowanie",
"renderingFrames": "Renderowanie klatek",
"processing": "Przetwarzanie...",
"status": "Status",
"format": "Format",
"compilingStatus": "Kompilowanie...",
"frames": "Klatki",
"cancelExport": "Anuluj eksport",
"reopenSaveDialog": "Otwórz ponownie okno zapisu",
"savedSuccess": "{{format}} zapisano pomyślnie!"
},
"addFont": {
"title": "Dodaj czcionkę Google",
"heading": "Dodaj czcionkę Google",
"description": "Dodaj własną czcionkę z Google Fonts do użycia w adnotacjach.",
"urlLabel": "Adres importu Google Fonts",
"urlPlaceholder": "https://fonts.googleapis.com/css2?family=Roboto&display=swap",
"urlHelp": "Pobierz z Google Fonts: wybierz czcionkę → kliknij \"Get font\" → skopiuj URL z @import",
"nameLabel": "Nazwa wyświetlana",
"namePlaceholder": "Moja własna czcionka",
"nameHelp": "Tak ta czcionka będzie widoczna na liście wyboru",
"adding": "Dodawanie...",
"addFont": "Dodaj czcionkę",
"enterUrl": "Wprowadź adres importu Google Fonts",
"invalidUrl": "Wprowadź prawidłowy adres Google Fonts",
"enterName": "Wprowadź nazwę czcionki",
"extractFailed": "Nie udało się wyodrębnić rodziny czcionki z adresu URL",
"addSuccess": "Czcionka \"{{name}}\" została pomyślnie dodana",
"addFailed": "Nie udało się dodać czcionki",
"loadTimeout": "Ładowanie czcionki trwało zbyt długo. Sprawdź adres URL i spróbuj ponownie.",
"loadFailed": "Nie udało się załadować czcionki. Sprawdź, czy adres URL Google Fonts jest poprawny."
},
"shortcutsConfig": {
"title": "Skróty klawiszowe",
"configurable": "Konfigurowalne",
"fixed": "Stałe",
"pressEscToCancel": "Naciśnij Esc, aby anulować",
"clickToChange": "Kliknij, aby zmienić",
"pressAKey": "Naciśnij klawisz…",
"alreadyUsedBy": "Już używane przez <strong>{{action}}</strong>",
"swap": "Zamień",
"reserved": "Ten skrót jest zarezerwowany dla \"{{label}}\" i nie można go przypisać ponownie.",
"saved": "Skróty klawiszowe zapisane",
"resetNotice": "Przywrócono domyślne skróty — kliknij Zapisz, aby zastosować",
"instructions": "Kliknij skrót, a następnie naciśnij nową kombinację klawiszy. Naciśnij Esc, aby anulować.",
"resetToDefaults": "Przywróć domyślne",
"cancel": "Anuluj",
"save": "Zapisz"
}
}
141 changes: 141 additions & 0 deletions src/i18n/locales/pl/editor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
{
"playback": {
"play": "Odtwórz",
"pause": "Wstrzymaj",
"skipBack": "Przewiń do tyłu",
"skipForward": "Przewiń do przodu",
"muteUnmute": "Wycisz/Włącz dźwięk"
},
"annotations": {
"settings": "Ustawienia adnotacji",
"active": "Aktywne",
"text": "Tekst",
"image": "Obraz",
"arrow": "Strzałka",
"blur": "Rozmycie",
"textContent": "Treść tekstu",
"textPlaceholder": "Wpisz tekst...",
"fontStyle": "Styl czcionki",
"selectStyle": "Wybierz styl",
"size": "Rozmiar",
"toggleBold": "Przełącz pogrubienie",
"toggleItalic": "Przełącz kursywę",
"toggleUnderline": "Przełącz podkreślenie",
"alignLeft": "Wyrównaj do lewej",
"alignCenter": "Wyśrodkuj",
"alignRight": "Wyrównaj do prawej",
"textColor": "Kolor tekstu",
"background": "Tło",
"none": "Brak",
"clearBackground": "Wyczyść tło",
"uploadImage": "Prześlij obraz",
"supportedFormats": "Obsługiwane formaty: JPG, PNG, GIF, WebP",
"arrowDirection": "Kierunek strzałki",
"strokeWidth": "Grubość linii: {{width}}px",
"arrowColor": "Kolor strzałki",
"deleteAnnotation": "Usuń adnotację",
"shortcutsAndTips": "Skróty i wskazówki",
"tipSelectAnnotation": "Przesuń głowicę odtwarzania do sekcji z nakładającą się adnotacją i wybierz element.",
"tipCycleForward": "Użyj Tab, aby przełączać się między nakładającymi się elementami.",
"tipCycleBackward": "Użyj Shift+Tab, aby przełączać się wstecz.",
"imageUploadSuccess": "Obraz został pomyślnie przesłany!",
"imageUploadError": "Prześlij plik obrazu JPG, PNG, GIF lub WebP.",
"blurStrength": "Siła rozmycia: {{strength}}",
"solidColor": "Jednolity kolor (cenzura)",
"borderRadius": "Promień narożników"
},
"fontStyles": {
"classic": "Klasyczny",
"editor": "Edytorski",
"strong": "Wyrazisty",
"typewriter": "Maszynowy",
"deco": "Dekoracyjny",
"simple": "Prosty",
"modern": "Nowoczesny",
"clean": "Czysty"
},
"format": {
"mp4Video": "Wideo MP4",
"mp4Description": "Plik wideo wysokiej jakości",
"gifAnimation": "Animacja GIF",
"gifDescription": "Animowany obraz do udostępniania"
},
"gifOptions": {
"frameRate": "Liczba klatek",
"outputSize": "Rozmiar wyjściowy",
"outputDimensions": "Wyjście: {{width}} × {{height}}px",
"loopAnimation": "Zapętl animację",
"loopDescription": "GIF będzie odtwarzany bez przerwy"
},
"tutorial": {
"howTrimmingWorks": "Jak działa przycinanie",
"title": "Jak działa przycinanie",
"understanding": "Dowiedz się, jak wycinać niechciane fragmenty filmu.",
"descriptionP1": "Narzędzie Przytnij działa przez zdefiniowanie segmentów, które chcesz",
"descriptionRemove": "usunąć",
"descriptionP2": "z filmu.",
"descriptionP3": "Każda część osi czasu pokryta czerwonym segmentem przycinania zostanie usunięta podczas eksportu.",
"visualExample": "Przykład wizualny",
"removed": "USUNIĘTE",
"kept": "Pozostawione",
"finalVideo": "Finalne wideo",
"part": "Część {{number}}",
"addTrimStep": "1. Dodaj przycięcie",
"addTrimDesc": "Naciśnij T lub kliknij ikonę nożyczek, aby oznaczyć sekcję do usunięcia.",
"adjustStep": "2. Dostosuj",
"adjustDesc": "Przeciągnij krawędzie czerwonego obszaru tak, aby objąć dokładnie to, co chcesz wyciąć."
},
"feedback": {
"trigger": "Opinie",
"title": "Opinie i kontakt",
"description": "Skontaktuj się bezpośrednio lub zgłoś issue, jeśli czegoś brakuje albo coś nie działa.",
"emailLabel": "Email",
"xLabel": "X",
"reportIssue": "Zgłoś problem / wyślij opinię",
"openFailed": "Nie udało się otworzyć linku."
},
"keyboardShortcuts": {
"trigger": "Skróty",
"title": "Skróty klawiszowe",
"description": "Szybka ściąga do osi czasu i kontrolek edytora.",
"customizeTooltip": "Dostosuj skróty",
"customize": "Dostosuj",
"panTimeline": "Przesuwanie osi czasu",
"zoomTimeline": "Powiększanie osi czasu",
"cycleAnnotations": "Przełączanie adnotacji",
"tab": "Tab"
},
"actions": {
"saveAgain": "Zapisz ponownie",
"showInFolder": "Pokaż w folderze"
},
"project": {
"untitled": "Bez tytułu"
},
"nativeCaptureUnavailable": {
"title": "Nic się nie zepsuło, ale nie będziemy mogli wyrenderować animowanej nakładki kursora.",
"description": "Twoje urządzenie nie obsługuje natywnego przechwytywania. Może to wynikać z różnych przyczyn, których jeszcze nie ustaliliśmy. Nie psuje to działania Recordly, ale uniemożliwia wygładzanie kursora.",
"confirm": "OK"
},
"exportStatus": {
"exporting": "Eksportowanie",
"renderingFile": "Renderowanie pliku.",
"preparing": "Przygotowywanie eksportu...",
"completePercent": "{{percent}}% ukończono",
"issue": "Problem z eksportem",
"complete": "Eksport zakończony",
"savedSuccessfully": "Plik został zapisany pomyślnie."
},
"export": {
"processingAudioEdits": "Przetwarzanie dźwięku z edycjami prędkości/nakładek"
},
"toolbar": {
"addLayer": "Dodaj warstwę",
"splitClip": "Podziel klip (C)"
},
"timeline": {
"expand": "Rozwiń oś czasu",
"collapse": "Zwiń oś czasu"
},
"openRecordingsFolder": "Otwórz folder z nagraniami"
}
60 changes: 60 additions & 0 deletions src/i18n/locales/pl/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"title": "Rozszerzenia",
"tabs": {
"browse": "Przeglądaj",
"installed": "Zainstalowane"
},
"actions": {
"submit": "Prześlij rozszerzenie",
"docs": "Dokumentacja rozszerzeń",
"refresh": "Odśwież",
"openFolder": "Otwórz folder rozszerzeń",
"uninstall": "Odinstaluj",
"install": "Zainstaluj",
"installing": "Instalowanie",
"add": "Dodaj",
"retry": "Spróbuj ponownie",
"close": "Zamknij",
"folder": "Folder"
},
"status": {
"enabled": "Włączone",
"disabled": "Wyłączone",
"installed": "Zainstalowane"
},
"detail": {
"by": "Autor: {{author}}",
"unknownAuthor": "Nieznany autor",
"noDescription": "Brak opisu",
"downloads": "{{count}} pobrań",
"preview": "Podgląd",
"screenshotAlt": "Zrzut ekranu {{number}}",
"description": "Opis",
"tags": "Tagi",
"permissions": "Uprawnienia",
"location": "Lokalizacja",
"error": "Błąd: {{message}}"
},
"empty": {
"title": "Brak rozszerzeń",
"description": "Zainstaluj rozszerzenia, aby dodać ramki, efekty kursora i narzędzia edytora."
},
"search": {
"placeholder": "Szukaj rozszerzeń...",
"noResults": "Nie znaleziono rozszerzeń",
"noMarketplace": "Brak rozszerzeń marketplace",
"count": "{{count}} rozszerzenie",
"countPlural": "{{count}} rozszerzeń"
},
"toast": {
"installedAndEnabled": "Rozszerzenie zostało zainstalowane i włączone",
"uninstalled": "Odinstalowano {{name}}",
"uninstallFailed": "Nie udało się odinstalować {{name}}",
"searchFailed": "Nie udało się przeszukać marketplace",
"refreshed": "Rozszerzenia zostały odświeżone",
"refreshFailed": "Nie udało się odświeżyć rozszerzeń",
"marketplaceInstalled": "Zainstalowano i włączono {{name}}",
"marketplaceInstallFailed": "Nie udało się zainstalować {{name}}",
"enableFailed": "Nie udało się włączyć rozszerzenia"
}
}
Loading