diff --git a/api/constants/languages.py b/api/constants/languages.py index bdfd8022a..7eb00816a 100644 --- a/api/constants/languages.py +++ b/api/constants/languages.py @@ -1,6 +1,6 @@ -languages = ['en-US', 'zh-Hans', 'zh-Hant', 'pt-BR', 'es-ES', 'fr-FR', 'de-DE', 'ja-JP', 'ko-KR', 'ru-RU', 'it-IT', 'uk-UA', 'vi-VN'] +languages = ['en-US', 'zh-Hans', 'zh-Hant', 'pt-BR', 'es-ES', 'fr-FR', 'de-DE', 'ja-JP', 'ko-KR', 'ru-RU', 'it-IT', 'uk-UA', 'vi-VN', 'pl-PL'] language_timezone_mapping = { 'en-US': 'America/New_York', @@ -16,6 +16,7 @@ language_timezone_mapping = { 'it-IT': 'Europe/Rome', 'uk-UA': 'Europe/Kyiv', 'vi-VN': 'Asia/Ho_Chi_Minh', + 'pl-PL': 'Europe/Warsaw', } diff --git a/web/i18n/language.ts b/web/i18n/language.ts index 16ddae6db..4a8b03f00 100644 --- a/web/i18n/language.ts +++ b/web/i18n/language.ts @@ -19,6 +19,7 @@ export type I18nText = { 'vi-VN': string 'de_DE': string 'zh_Hant': string + 'pl-PL': string } export const languages = [ @@ -112,6 +113,12 @@ export const languages = [ example: 'Xin chào, Dify!', supported: true, }, + { + value: 'pl-PL', + name: 'Polski (Polish)', + example: 'Cześć, Dify!', + supported: true, + }, ] export const LanguagesSupported = languages.filter(item => item.supported).map(item => item.value) @@ -133,6 +140,7 @@ export const NOTICE_I18N = { de_DE: 'Wichtiger Hinweis', ja_JP: '重要なお知らせ', ko_KR: '중요 공지', + pl_PL: 'Ważne ogłoszenie', uk_UA: 'Важливе повідомлення', vi_VN: 'Thông báo quan trọng', }, @@ -145,6 +153,7 @@ export const NOTICE_I18N = { de_DE: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.', ja_JP: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.', ko_KR: 'Our system will be unavailable from 19:00 to 24:00 UTC on August 28 for an upgrade. For questions, kindly contact our support team (support@dify.ai). We value your patience.', + pl_PL: 'Nasz system będzie niedostępny od 19:00 do 24:00 UTC 28 sierpnia w celu aktualizacji. W przypadku pytań prosimy o kontakt z naszym zespołem wsparcia (support@dify.ai). Doceniamy Twoją cierpliwość.', uk_UA: 'Наша система буде недоступна з 19:00 до 24:00 UTC 28 серпня для оновлення. Якщо у вас виникнуть запитання, будь ласка, зв’яжіться з нашою службою підтримки (support@dify.ai). Дякуємо за терпіння.', vi_VN: 'Hệ thống của chúng tôi sẽ ngừng hoạt động từ 19:00 đến 24:00 UTC vào ngày 28 tháng 8 để nâng cấp. Nếu có thắc mắc, vui lòng liên hệ với nhóm hỗ trợ của chúng tôi (support@dify.ai). Chúng tôi đánh giá cao sự kiên nhẫn của bạn.', }, diff --git a/web/i18n/pl-PL/app-annotation.ts b/web/i18n/pl-PL/app-annotation.ts new file mode 100644 index 000000000..81a525935 --- /dev/null +++ b/web/i18n/pl-PL/app-annotation.ts @@ -0,0 +1,89 @@ +const translation = { + title: 'Adnotacje', + name: 'Odpowiedź adnotacji', + editBy: 'Odpowiedź edytowana przez {{author}}', + noData: { + title: 'Brak adnotacji', + description: + 'Możesz edytować adnotacje podczas debugowania aplikacji lub importować adnotacje tutaj w celu uzyskania wysokiej jakości odpowiedzi.', + }, + table: { + header: { + question: 'pytanie', + answer: 'odpowiedź', + createdAt: 'utworzono', + hits: 'trafienia', + actions: 'akcje', + addAnnotation: 'Dodaj adnotację', + bulkImport: 'Masowy import', + bulkExport: 'Masowy eksport', + clearAll: 'Wyczyść wszystkie adnotacje', + }, + }, + editModal: { + title: 'Edytuj odpowiedź adnotacji', + queryName: 'Zapytanie użytkownika', + answerName: 'Bot opowiadający historie', + yourAnswer: 'Twoja odpowiedź', + answerPlaceholder: 'Wpisz tutaj swoją odpowiedź', + yourQuery: 'Twoje zapytanie', + queryPlaceholder: 'Wpisz tutaj swoje zapytanie', + removeThisCache: 'Usuń tę adnotację', + createdAt: 'Utworzono', + }, + addModal: { + title: 'Dodaj odpowiedź adnotacji', + queryName: 'Pytanie', + answerName: 'Odpowiedź', + answerPlaceholder: 'Wpisz tutaj odpowiedź', + queryPlaceholder: 'Wpisz tutaj zapytanie', + createNext: 'Dodaj kolejną odpowiedź adnotacji', + }, + batchModal: { + title: 'Masowy import', + csvUploadTitle: 'Przeciągnij i upuść tutaj swój plik CSV, lub ', + browse: 'przeglądaj', + tip: 'Plik CSV musi spełniać następującą strukturę:', + question: 'pytanie', + answer: 'odpowiedź', + contentTitle: 'zawartość fragmentu', + content: 'zawartość', + template: 'Pobierz szablon tutaj', + cancel: 'Anuluj', + run: 'Uruchom batch', + runError: 'Uruchomienie batcha nie powiodło się', + processing: 'Przetwarzanie batcha', + completed: 'Import zakończony', + error: 'Błąd importu', + ok: 'OK', + }, + errorMessage: { + answerRequired: 'Odpowiedź jest wymagana', + queryRequired: 'Pytanie jest wymagane', + }, + viewModal: { + annotatedResponse: 'Odpowiedź adnotacji', + hitHistory: 'Historia trafień', + hit: 'Trafienie', + hits: 'Trafienia', + noHitHistory: 'Brak historii trafień', + }, + hitHistoryTable: { + query: 'Zapytanie', + match: 'Dopasowanie', + response: 'Odpowiedź', + source: 'Źródło', + score: 'Wynik', + time: 'Czas', + }, + initSetup: { + title: 'Początkowa konfiguracja odpowiedzi adnotacji', + configTitle: 'Konfiguracja odpowiedzi adnotacji', + confirmBtn: 'Zapisz i włącz', + configConfirmBtn: 'Zapisz', + }, + embeddingModelSwitchTip: + 'Model wektoryzacji tekstu adnotacji, przełączanie modeli spowoduje ponowne osadzenie, co wiąże się z dodatkowymi kosztami.', +} + +export default translation diff --git a/web/i18n/pl-PL/app-api.ts b/web/i18n/pl-PL/app-api.ts new file mode 100644 index 000000000..46f9cbb45 --- /dev/null +++ b/web/i18n/pl-PL/app-api.ts @@ -0,0 +1,102 @@ +const translation = { + apiServer: 'Serwer API', + apiKey: 'Klucz API', + status: 'Status', + disabled: 'Wyłączony', + ok: 'W usłudze', + copy: 'Kopiuj', + copied: 'Skopiowane', + play: 'Graj', + pause: 'Pauza', + playing: 'Gra', + loading: 'Ładowanie', + merMaind: { + rerender: 'Przerób Renderowanie', + }, + never: 'Nigdy', + apiKeyModal: { + apiSecretKey: 'Tajny klucz API', + apiSecretKeyTips: + 'Aby zapobiec nadużyciom API, chron swój klucz API. Unikaj używania go jako zwykłego tekstu w kodzie front-end. :)', + createNewSecretKey: 'Utwórz nowy tajny klucz', + secretKey: 'Tajny Klucz', + created: 'UTWORZONY', + lastUsed: 'OSTATNIO UŻYWANY', + generateTips: 'Przechowuj ten klucz w bezpiecznym i dostępnym miejscu.', + }, + actionMsg: { + deleteConfirmTitle: 'Usunąć ten tajny klucz?', + deleteConfirmTips: 'Tej akcji nie można cofnąć.', + ok: 'OK', + }, + completionMode: { + title: 'Zakończenie App API', + info: 'Do generowania tekstu wysokiej jakości, takiego jak artykuły, podsumowania i tłumaczenia, użyj API completion-messages z danymi wejściowymi użytkownika. Generowanie tekstu zależy od parametrów modelu i szablonów promptów ustawionych w Dify Prompt Engineering.', + createCompletionApi: 'Utwórz Wiadomość Zakończenia', + createCompletionApiTip: + 'Utwórz Wiadomość Zakończenia, aby obsługiwać tryb pytanie-odpowiedź.', + inputsTips: + '(Opcjonalnie) Podaj pola wejściowe użytkownika jako pary klucz-wartość, odpowiadające zmiennym w Prompt Eng. Klucz to nazwa zmiennej, Wartość to wartość parametru. Jeśli typ pola to Wybierz, przesłana Wartość musi być jednym z predefiniowanych wyborów.', + queryTips: 'Treść tekstu wprowadzanego przez użytkownika.', + blocking: + 'Typ blokujący, czekanie na zakończenie wykonania i zwrócenie wyników. (Żądania mogą być przerywane, jeśli proces jest długi)', + streaming: + 'zwraca strumieniowo. Implementacja strumieniowego zwrotu na podstawie SSE (Server-Sent Events).', + messageFeedbackApi: 'Informacje zwrotne o wiadomości (lubię)', + messageFeedbackApiTip: + 'Oceniaj otrzymane wiadomości w imieniu użytkowników końcowych na podstawie polubień lub niepolubień. Te dane są widoczne na stronie Logi i adnotacje i są używane do przyszłego dostrojenia modelu.', + messageIDTip: 'ID wiadomości', + ratingTip: 'lubię lub nie lubię, null to cofnięcie', + parametersApi: 'Uzyskaj informacje o parametrach aplikacji', + parametersApiTip: + 'Pobierz skonfigurowane parametry wejściowe, w tym nazwy zmiennych, nazwy pól, typy i domyślne wartości. Zwykle używane do wyświetlania tych pól w formularzu lub wypełniania domyślnych wartości po załadowaniu klienta.', + }, + chatMode: { + title: 'Chat App API', + info: 'Do wszechstronnych aplikacji konwersacyjnych w formacie Q&A, wywołaj API chat-messages, aby rozpocząć dialog. Utrzymuj trwające rozmowy, przekazując zwrócone conversation_id. Parametry odpowiedzi i szablony zależą od ustawień Dify Prompt Eng.', + createChatApi: 'Utwórz wiadomość czatu', + createChatApiTip: + 'Utwórz nową wiadomość konwersacji lub kontynuuj istniejący dialog.', + inputsTips: + '(Opcjonalnie) Podaj pola wejściowe użytkownika jako pary klucz-wartość, odpowiadające zmiennym w Prompt Eng. Klucz to nazwa zmiennej, Wartość to wartość parametru. Jeśli typ pola to Wybierz, przesłana Wartość musi być jednym z predefiniowanych wyborów.', + queryTips: 'Treść pytania/wprowadzanej przez użytkownika', + blocking: + 'Typ blokujący, czekanie na zakończenie wykonania i zwrócenie wyników. (Żądania mogą być przerywane, jeśli proces jest długi)', + streaming: + 'zwraca strumieniowo. Implementacja strumieniowego zwrotu na podstawie SSE (Server-Sent Events).', + conversationIdTip: + '(Opcjonalnie) ID rozmowy: pozostaw puste dla pierwszej rozmowy; przekaż conversation_id z kontekstu, aby kontynuować dialog.', + messageFeedbackApi: 'Informacje zwrotne od użytkownika terminala, lubię', + messageFeedbackApiTip: + 'Oceniaj otrzymane wiadomości w imieniu użytkowników końcowych na podstawie polubień lub niepolubień. Te dane są widoczne na stronie Logi i adnotacje i są używane do przyszłego dostrojenia modelu.', + messageIDTip: 'ID wiadomości', + ratingTip: 'lubię lub nie lubię, null to cofnięcie', + chatMsgHistoryApi: 'Pobierz historię wiadomości czatu', + chatMsgHistoryApiTip: + 'Pierwsza strona zwraca najnowsze `limit` wiadomości, które są w odwrotnej kolejności.', + chatMsgHistoryConversationIdTip: 'ID rozmowy', + chatMsgHistoryFirstId: + 'ID pierwszego rekordu czatu na bieżącej stronie. Domyślnie brak.', + chatMsgHistoryLimit: 'Ile czatów jest zwracanych w jednym żądaniu', + conversationsListApi: 'Pobierz listę rozmów', + conversationsListApiTip: + 'Pobiera listę sesji bieżącego użytkownika. Domyślnie zwraca ostatnie 20 sesji.', + conversationsListFirstIdTip: + 'ID ostatniego rekordu na bieżącej stronie, domyślnie brak.', + conversationsListLimitTip: 'Ile czatów jest zwracanych w jednym żądaniu', + conversationRenamingApi: 'Zmiana nazwy rozmowy', + conversationRenamingApiTip: + 'Zmień nazwy rozmów; nazwa jest wyświetlana w interfejsach klienta wielosesyjnego.', + conversationRenamingNameTip: 'Nowa nazwa', + parametersApi: 'Uzyskaj informacje o parametrach aplikacji', + parametersApiTip: + 'Pobierz skonfigurowane parametry wejściowe, w tym nazwy zmiennych, nazwy pól, typy i domyślne wartości. Zwykle używane do wyświetlania tych pól w formularzu lub wypełniania domyślnych wartości po załadowaniu klienta.', + }, + develop: { + requestBody: 'Ciało żądania', + pathParams: 'Parametry ścieżki', + query: 'Zapytanie', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/app-debug.ts b/web/i18n/pl-PL/app-debug.ts new file mode 100644 index 000000000..9d51b9ee4 --- /dev/null +++ b/web/i18n/pl-PL/app-debug.ts @@ -0,0 +1,463 @@ +const translation = { + pageTitle: { + line1: 'MONIT', + line2: 'Inżynieria', + }, + orchestrate: 'Orkiestracja', + promptMode: { + simple: 'Przełącz na tryb Ekspert, aby edytować cały MONIT', + advanced: 'Tryb Ekspert', + switchBack: 'Przełącz z powrotem', + advancedWarning: { + title: + 'Przełączyłeś się na Tryb Ekspert, i po modyfikacji MONITU, NIE można powrócić do trybu podstawowego.', + description: 'W Trybie Ekspert, możesz edytować cały MONIT.', + learnMore: 'Dowiedz się więcej', + ok: 'OK', + }, + operation: { + addMessage: 'Dodaj Wiadomość', + }, + contextMissing: + 'Brak komponentu kontekstowego, skuteczność monitu może być niewystarczająca.', + }, + operation: { + applyConfig: 'Publikuj', + resetConfig: 'Resetuj', + debugConfig: 'Debuguj', + addFeature: 'Dodaj funkcję', + automatic: 'Automatyczny', + stopResponding: 'Przestaje odpowiadać', + agree: 'lubię', + disagree: 'nie lubię', + cancelAgree: 'Anuluj polubienie', + cancelDisagree: 'Anuluj niepolubienie', + userAction: 'Akcja użytkownika ', + }, + notSetAPIKey: { + title: 'Klucz dostawcy LLM nie został ustawiony', + trailFinished: 'Ścieżka zakończona', + description: + 'Klucz dostawcy LLM nie został ustawiony, musi zostać ustawiony przed debugowaniem.', + settingBtn: 'Przejdź do ustawień', + }, + trailUseGPT4Info: { + title: 'Obecnie nie obsługuje GPT-4', + description: 'Użyj GPT-4, proszę ustawić klucz API.', + }, + feature: { + groupChat: { + title: 'Rozmowy grupowe', + description: + 'Dodanie ustawień przedkonwersacyjnych dla aplikacji może poprawić doświadczenia użytkownika.', + }, + groupExperience: { + title: 'Poprawa doświadczenia', + }, + conversationOpener: { + title: 'Otwieracze do rozmów', + description: + 'W aplikacji czatowej pierwsze zdanie, które AI aktywnie wypowiada do użytkownika, zazwyczaj służy jako powitanie.', + }, + suggestedQuestionsAfterAnswer: { + title: 'Nawiązanie', + description: 'Ustawienie kolejnych pytań może poprawić czat.', + resDes: '3 sugestie dla kolejnego pytania użytkownika.', + tryToAsk: 'Spróbuj zapytać', + }, + moreLikeThis: { + title: 'Więcej takich jak ten', + description: + 'Generuj wiele tekstów na raz, a następnie edytuj i kontynuuj generowanie', + generateNumTip: 'Liczba generowanych razów', + tip: 'Korzystanie z tej funkcji spowoduje dodatkowe zużycie tokenów', + }, + speechToText: { + title: 'Mowa na tekst', + description: 'Po włączeniu można używać wprowadzania głosowego.', + resDes: 'Wprowadzanie głosowe jest włączone', + }, + textToSpeech: { + title: 'Tekst na mowę', + description: 'Po włączeniu tekst można przekształcić w mowę.', + resDes: 'Tekst na audio jest włączony', + }, + citation: { + title: 'Cytaty i odniesienia', + description: + 'Po włączeniu, pokaż dokument źródłowy i przypisaną sekcję wygenerowanej treści.', + resDes: 'Cytaty i odniesienia są włączone', + }, + annotation: { + title: 'Odpowiedź z adnotacją', + description: + 'Możesz ręcznie dodać odpowiedź wysokiej jakości do pamięci podręcznej dla priorytetowego dopasowania do podobnych pytań użytkownika.', + resDes: 'Odpowiedź z adnotacją jest włączona', + scoreThreshold: { + title: 'Próg wyników', + description: + 'Służy do ustawienia progu podobieństwa dla odpowiedzi z adnotacją.', + easyMatch: 'Łatwe dopasowanie', + accurateMatch: 'Dokładne dopasowanie', + }, + matchVariable: { + title: 'Zmienna dopasowania', + choosePlaceholder: 'Wybierz zmienną do dopasowania', + }, + cacheManagement: 'Adnotacje', + cached: 'Zanotowano', + remove: 'Usuń', + removeConfirm: 'Usunąć tę adnotację?', + add: 'Dodaj adnotację', + edit: 'Edytuj adnotację', + }, + dataSet: { + title: 'Kontekst', + noData: 'Możesz importować wiedzę jako kontekst', + words: 'Słowa', + textBlocks: 'Bloki tekstu', + selectTitle: 'Wybierz odniesienie do wiedzy', + selected: 'Wiedza wybrana', + noDataSet: 'Nie znaleziono wiedzy', + toCreate: 'Przejdź do tworzenia', + notSupportSelectMulti: 'Obecnie obsługiwana jest tylko jedna wiedza', + queryVariable: { + title: 'Zmienna zapytania', + tip: 'Ta zmienna będzie używana jako dane wejściowe zapytania do odzyskiwania kontekstu, uzyskując informacje kontekstowe związane z wprowadzonymi danymi.', + choosePlaceholder: 'Wybierz zmienną zapytania', + noVar: 'Brak zmiennych', + noVarTip: 'proszę stworzyć zmienną w sekcji Zmienne', + unableToQueryDataSet: 'Nie można odzyskać wiedzy', + unableToQueryDataSetTip: + 'Nie udało się pomyślnie odzyskać wiedzy, proszę wybrać zmienną zapytania kontekstowego w sekcji kontekstowej.', + ok: 'OK', + contextVarNotEmpty: + 'zmienna zapytania kontekstowego nie może być pusta', + deleteContextVarTitle: 'Usunąć zmienną „{{varName}}”?', + deleteContextVarTip: + 'Ta zmienna została ustawiona jako zmienna zapytania kontekstowego, a jej usunięcie wpłynie na normalne korzystanie z wiedzy. Jeśli nadal potrzebujesz jej usunąć, wybierz ją ponownie w sekcji kontekstowej.', + }, + }, + tools: { + title: 'Narzędzia', + tips: 'Narzędzia zapewniają standardową metodę wywołania API, przyjmując dane wejściowe użytkownika lub zmienne jako parametry żądania do zapytania o dane zewnętrzne jako kontekst.', + toolsInUse: '{{count}} narzędzi w użyciu', + modal: { + title: 'Narzędzie', + toolType: { + title: 'Typ narzędzia', + placeholder: 'Wybierz typ narzędzia', + }, + name: { + title: 'Nazwa', + placeholder: 'Wprowadź nazwę', + }, + variableName: { + title: 'Nazwa zmiennej', + placeholder: 'Wprowadź nazwę zmiennej', + }, + }, + }, + conversationHistory: { + title: 'Historia konwersacji', + description: 'Ustaw prefixy dla ról w rozmowie', + tip: 'Historia konwersacji nie jest włączona, proszę dodać w monicie powyżej.', + learnMore: 'Dowiedz się więcej', + editModal: { + title: 'Edycja nazw ról konwersacyjnych', + userPrefix: 'Prefix użytkownika', + assistantPrefix: 'Prefix asystenta', + }, + }, + toolbox: { + title: 'SKRZYNKA NARZĘDZIOWA', + }, + moderation: { + title: 'Moderacja treści', + description: + 'Zabezpiecz wyjście modelu, używając API moderacji lub utrzymując listę wrażliwych słów.', + allEnabled: 'Treść WEJŚCIOWA/WYJŚCIOWA Włączona', + inputEnabled: 'Treść WEJŚCIOWA Włączona', + outputEnabled: 'Treść WYJŚCIOWA Włączona', + modal: { + title: 'Ustawienia moderacji treści', + provider: { + title: 'Dostawca', + openai: 'Moderacja OpenAI', + openaiTip: { + prefix: + 'Moderacja OpenAI wymaga skonfigurowanego klucza API OpenAI w ', + suffix: '.', + }, + keywords: 'Słowa kluczowe', + }, + keywords: { + tip: 'Po jednym w wierszu, oddzielone znakiem nowej linii. Maksymalnie 100 znaków na wiersz.', + placeholder: 'Po jednym w wierszu, oddzielone znakiem nowej linii', + line: 'Linia', + }, + content: { + input: 'Moderuj treść WEJŚCIOWĄ', + output: 'Moderuj treść WYJŚCIOWĄ', + preset: 'Ustawione odpowiedzi', + placeholder: 'Tutaj wprowadź ustawione odpowiedzi', + condition: + 'Treść WEJŚCIA i WYJŚCIA musi być włączona przynajmniej jedna', + fromApi: 'Ustawione odpowiedzi zwracane przez API', + errorMessage: 'Ustawione odpowiedzi nie mogą być puste', + supportMarkdown: 'Obsługuje Markdown', + }, + openaiNotConfig: { + before: + 'Moderacja OpenAI wymaga skonfigurowanego klucza API OpenAI w', + after: '', + }, + }, + }, + }, + automatic: { + title: 'Zautomatyzowana orkiestracja aplikacji', + description: + 'Opisz swój scenariusz, Dify zorkiestruje aplikację dla Ciebie.', + intendedAudience: 'Dla kogo jest przeznaczona ta aplikacja?', + intendedAudiencePlaceHolder: 'np. Uczeń', + solveProblem: + 'Jakie problemy mają nadzieję, że AI może rozwiązać dla nich?', + solveProblemPlaceHolder: + 'np. Wyciąganie wniosków i podsumowanie informacji z długich raportów i artykułów', + generate: 'Generuj', + audiencesRequired: 'Wymagana publiczności', + problemRequired: 'Wymagany problem', + resTitle: 'Stworzyliśmy następującą aplikację dla Ciebie.', + apply: 'Zastosuj tę orkiestrację', + noData: + 'Opisz swój przypadek po lewej, podgląd orkiestracji pojawi się tutaj.', + loading: 'Orkiestracja aplikacji dla Ciebie...', + overwriteTitle: 'Zastąpić istniejącą konfigurację?', + overwriteMessage: + 'Zastosowanie tej orkiestracji zastąpi istniejącą konfigurację.', + }, + resetConfig: { + title: 'Potwierdź reset?', + message: + 'Reset odrzuca zmiany, przywracając ostatnią opublikowaną konfigurację.', + }, + errorMessage: { + nameOfKeyRequired: 'nazwa klucza: {{key}} wymagana', + valueOfVarRequired: '{{key}} wartość nie może być pusta', + queryRequired: 'Tekst żądania jest wymagany.', + waitForResponse: 'Proszę czekać na odpowiedź na poprzednią wiadomość.', + waitForBatchResponse: 'Proszę czekać na odpowiedź na zadanie wsadowe.', + notSelectModel: 'Proszę wybrać model', + waitForImgUpload: 'Proszę czekać na przesłanie obrazu', + }, + chatSubTitle: 'Instrukcje', + completionSubTitle: 'Prefix Monitu', + promptTip: + 'Monity kierują odpowiedziami AI za pomocą instrukcji i ograniczeń. Wstaw zmienne takie jak {{input}}. Ten monit nie będzie widoczny dla użytkowników.', + formattingChangedTitle: 'Zmiana formatowania', + formattingChangedText: + 'Modyfikacja formatowania zresetuje obszar debugowania, czy jesteś pewien?', + variableTitle: 'Zmienne', + variableTip: + 'Użytkownicy wypełniają zmienne w formularzu, automatycznie zastępując zmienne w monicie.', + notSetVar: + 'Zmienne pozwalają użytkownikom wprowadzać słowa wstępujące lub otwierające uwagi podczas wypełniania formularzy. Możesz spróbować wpisać "{{input}}" w słowach monitu.', + autoAddVar: + 'Niezdefiniowane zmienne odwołują się w pre-monicie, czy chcesz je dodać do formularza wejściowego użytkownika?', + variableTable: { + key: 'Klucz Zmiennej', + name: 'Nazwa Pola Wejściowego Użytkownika', + optional: 'Opcjonalnie', + type: 'Typ Wejścia', + action: 'Akcje', + typeString: 'String', + typeSelect: 'Wybierz', + }, + varKeyError: { + canNoBeEmpty: 'Klucz zmiennej nie może być pusty', + tooLong: + 'Klucz zmiennej: {{key}} za długi. Nie może być dłuższy niż 30 znaków', + notValid: + 'Klucz zmiennej: {{key}} jest nieprawidłowy. Może zawierać tylko litery, cyfry i podkreślenia', + notStartWithNumber: + 'Klucz zmiennej: {{key}} nie może zaczynać się od cyfry', + keyAlreadyExists: 'Klucz zmiennej: :{{key}} już istnieje', + }, + otherError: { + promptNoBeEmpty: 'Monit nie może być pusty', + historyNoBeEmpty: 'Historia konwersacji musi być ustawiona w monicie', + queryNoBeEmpty: 'Zapytanie musi być ustawione w monicie', + }, + variableConig: { + 'addModalTitle': 'Dodaj Pole Wejściowe', + 'editModalTitle': 'Edytuj Pole Wejściowe', + 'description': 'Ustawienia dla zmiennej {{varName}}', + 'fieldType': 'Typ pola', + 'string': 'Krótki tekst', + 'text-input': 'Krótki tekst', + 'paragraph': 'Akapit', + 'select': 'Wybierz', + 'number': 'Numer', + 'notSet': 'Nie ustawione, spróbuj wpisać {{input}} w monicie wstępnym', + 'stringTitle': 'Opcje pola tekstowego formularza', + 'maxLength': 'Maksymalna długość', + 'options': 'Opcje', + 'addOption': 'Dodaj opcję', + 'apiBasedVar': 'Zmienna oparta na API', + 'varName': 'Nazwa zmiennej', + 'labelName': 'Nazwa etykiety', + 'inputPlaceholder': 'Proszę wpisać', + 'required': 'Wymagane', + 'errorMsg': { + varNameRequired: 'Wymagana nazwa zmiennej', + labelNameRequired: 'Wymagana nazwa etykiety', + varNameCanBeRepeat: 'Nazwa zmiennej nie może się powtarzać', + atLeastOneOption: 'Wymagana jest co najmniej jedna opcja', + optionRepeat: 'Powtarzają się opcje', + }, + }, + vision: { + name: 'Wizja', + description: + 'Włączenie Wizji pozwoli modelowi przyjmować obrazy i odpowiadać na pytania o nich.', + settings: 'Ustawienia', + visionSettings: { + title: 'Ustawienia Wizji', + resolution: 'Rozdzielczość', + resolutionTooltip: `niska rozdzielczość pozwoli modelowi odbierać obrazy o rozdzielczości 512 x 512 i reprezentować obraz z limitem 65 tokenów. Pozwala to API na szybsze odpowiedzi i zużywa mniej tokenów wejściowych dla przypadków, które nie wymagają wysokiego szczegółu. + \n + wysoka rozdzielczość pozwala najpierw modelowi zobaczyć obraz niskiej rozdzielczości, a następnie tworzy szczegółowe przycięcia obrazów wejściowych jako 512px kwadratów w oparciu o rozmiar obrazu wejściowego. Każde z tych szczegółowych przycięć używa dwukrotności budżetu tokenów, co daje razem 129 tokenów.`, + high: 'Wysoka', + low: 'Niska', + uploadMethod: 'Metoda przesyłania', + both: 'Obie', + localUpload: 'Przesyłanie lokalne', + url: 'URL', + uploadLimit: 'Limit przesyłania', + }, + }, + voice: { + name: 'Głos', + defaultDisplay: 'Domyślny Głos', + description: 'Ustawienia głosu tekstu na mowę', + settings: 'Ustawienia', + voiceSettings: { + title: 'Ustawienia Głosu', + language: 'Język', + resolutionTooltip: 'Wsparcie językowe głosu tekstu na mowę.', + voice: 'Głos', + }, + }, + openingStatement: { + title: 'Wstęp do rozmowy', + add: 'Dodaj', + writeOpner: 'Napisz wstęp', + placeholder: + 'Tutaj napisz swoją wiadomość wprowadzającą, możesz użyć zmiennych, spróbuj wpisać {{variable}}.', + openingQuestion: 'Pytania otwierające', + noDataPlaceHolder: + 'Rozpoczynanie rozmowy z użytkownikiem może pomóc AI nawiązać bliższe połączenie z nim w aplikacjach konwersacyjnych.', + varTip: 'Możesz używać zmiennych, spróbuj wpisać {{variable}}', + tooShort: + 'Wymagane jest co najmniej 20 słów wstępnego monitu, aby wygenerować uwagi wstępne do rozmowy.', + notIncludeKey: + 'Wstępny monit nie zawiera zmiennej: {{key}}. Proszę dodać ją do wstępnego monitu.', + }, + modelConfig: { + model: 'Model', + setTone: 'Ustaw ton odpowiedzi', + title: 'Model i parametry', + modeType: { + chat: 'Czat', + completion: 'Uzupełnienie', + }, + }, + inputs: { + title: 'Debugowanie i podgląd', + noPrompt: 'Spróbuj wpisać jakiś monit w polu przedmonitu', + userInputField: 'Pole wejściowe użytkownika', + noVar: + 'Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w monicie za każdym razem, gdy rozpocznie się nowa sesja.', + chatVarTip: + 'Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w monicie za każdym razem, gdy rozpocznie się nowa sesja', + completionVarTip: + 'Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w słowach monitu za każdym razem, gdy zostanie przesłane pytanie.', + previewTitle: 'Podgląd monitu', + queryTitle: 'Treść zapytania', + queryPlaceholder: 'Proszę wprowadzić tekst żądania.', + run: 'URUCHOM', + }, + result: 'Tekst wyjściowy', + datasetConfig: { + settingTitle: 'Ustawienia odzyskiwania', + knowledgeTip: 'Kliknij przycisk „+”, aby dodać wiedzę', + retrieveOneWay: { + title: 'Odzyskiwanie N-do-1', + description: + 'Na podstawie zamiaru użytkownika i opisów Wiedzy, Agent samodzielnie wybiera najlepszą Wiedzę do zapytania. Najlepiej sprawdza się w aplikacjach o wyraźnej, ograniczonej Wiedzy.', + }, + retrieveMultiWay: { + title: 'Odzyskiwanie wielościeżkowe', + description: + 'Na podstawie zamiaru użytkownika, zapytania obejmują wszystkie Wiedze, pobierają odpowiedni tekst z wielu źródeł i wybierają najlepsze wyniki dopasowane do zapytań użytkownika po ponownym rankingu. Wymagana jest konfiguracja API modelu Przerankowania.', + }, + rerankModelRequired: 'Wymagany model Przerankowania', + params: 'Parametry', + top_k: 'Najlepsze K', + top_kTip: + 'Używane do filtrowania fragmentów najbardziej podobnych do pytań użytkownika. System również dynamicznie dostosowuje wartość Najlepszych K, zgodnie z maksymalną liczbą tokenów wybranego modelu.', + score_threshold: 'Próg punktacji', + score_thresholdTip: + 'Używany do ustawienia progu podobieństwa dla filtrowania fragmentów.', + retrieveChangeTip: + 'Modyfikacja trybu indeksowania i odzyskiwania może wpłynąć na aplikacje powiązane z tą Wiedzą.', + }, + debugAsSingleModel: 'Debuguj jako pojedynczy model', + debugAsMultipleModel: 'Debuguj jako wiele modeli', + duplicateModel: 'Duplikuj', + publishAs: 'Opublikuj jako', + assistantType: { + name: 'Typ asystenta', + chatAssistant: { + name: 'Podstawowy Asystent', + description: + 'Buduj asystenta opartego na czacie, korzystając z dużego modelu językowego', + }, + agentAssistant: { + name: 'Asystent Agent', + description: + 'Buduj inteligentnego agenta, który może autonomicznie wybierać narzędzia do wykonywania zadań', + }, + }, + agent: { + agentMode: 'Tryb Agenta', + agentModeDes: 'Ustaw rodzaj trybu wnioskowania dla agenta', + agentModeType: { + ReACT: 'ReAct', + functionCall: 'Wywołanie funkcji', + }, + setting: { + name: 'Ustawienia Agenta', + description: + 'Ustawienia Asystenta Agenta pozwalają ustawić tryb agenta i zaawansowane funkcje, takie jak wbudowane monity, dostępne tylko w typie Agent.', + maximumIterations: { + name: 'Maksymalna liczba iteracji', + description: + 'Ogranicz liczbę iteracji, które asystent agenta może wykonać', + }, + }, + buildInPrompt: 'Wbudowany Monit', + firstPrompt: 'Pierwszy Monit', + nextIteration: 'Następna Iteracja', + promptPlaceholder: 'Napisz tutaj swój monit', + tools: { + name: 'Narzędzia', + description: + 'Używanie narzędzi może rozszerzyć możliwości LLM, takie jak wyszukiwanie w internecie lub wykonywanie obliczeń naukowych', + enabled: 'Włączone', + }, + }, +} + +export default translation diff --git a/web/i18n/pl-PL/app-log.ts b/web/i18n/pl-PL/app-log.ts new file mode 100644 index 000000000..048958b11 --- /dev/null +++ b/web/i18n/pl-PL/app-log.ts @@ -0,0 +1,95 @@ +const translation = { + title: 'Dzienniki', + description: + 'Dzienniki rejestrują stan działania aplikacji, w tym dane wejściowe użytkowników i odpowiedzi AI.', + dateTimeFormat: 'DD/MM/YYYY HH:mm', + table: { + header: { + time: 'Czas', + endUser: 'Użytkownik końcowy', + input: 'Wejście', + output: 'Wyjście', + summary: 'Tytuł', + messageCount: 'Liczba wiadomości', + userRate: 'Ocena użytkownika', + adminRate: 'Ocena operatora', + startTime: 'CZAS STARTU', + status: 'STATUS', + runtime: 'CZAS DZIAŁANIA', + tokens: 'TOKENY', + user: 'UŻYTKOWNIK KOŃCOWY', + version: 'WERSJA', + }, + pagination: { + previous: 'Poprzedni', + next: 'Następny', + }, + empty: { + noChat: 'Brak rozmowy', + noOutput: 'Brak wyników', + element: { + title: 'Czy ktoś jest?', + content: + 'Obserwuj i adnotuj interakcje między użytkownikami końcowymi a aplikacjami AI tutaj, aby ciągle poprawiać dokładność AI. Możesz spróbować udostępnić lub przetestować aplikację internetową samodzielnie, a następnie wrócić na tę stronę.', + }, + }, + }, + detail: { + time: 'Czas', + conversationId: 'ID rozmowy', + promptTemplate: 'Szablon monitu', + promptTemplateBeforeChat: + 'Szablon monitu przed rozmową · Jako wiadomość systemowa', + annotationTip: 'Usprawnienia oznaczone przez {{user}}', + timeConsuming: '', + second: 's', + tokenCost: 'Wydatkowane tokeny', + loading: 'ładowanie', + operation: { + like: 'lubię', + dislike: 'nie lubię', + addAnnotation: 'Dodaj usprawnienie', + editAnnotation: 'Edytuj usprawnienie', + annotationPlaceholder: + 'Wprowadź oczekiwaną odpowiedź, którą chcesz, aby AI odpowiedziało, co może być używane do dokładnego dostrojenia modelu i ciągłej poprawy jakości generacji tekstu w przyszłości.', + }, + variables: 'Zmienne', + uploadImages: 'Przesłane obrazy', + }, + filter: { + period: { + today: 'Dzisiaj', + last7days: 'Ostatnie 7 dni', + last4weeks: 'Ostatnie 4 tygodnie', + last3months: 'Ostatnie 3 miesiące', + last12months: 'Ostatnie 12 miesięcy', + monthToDate: 'Od początku miesiąca', + quarterToDate: 'Od początku kwartału', + yearToDate: 'Od początku roku', + allTime: 'Cały czas', + }, + annotation: { + all: 'Wszystkie', + annotated: 'Zanotowane usprawnienia ({{count}} elementów)', + not_annotated: 'Nie zanotowane', + }, + }, + workflowTitle: 'Dzienniki przepływu pracy', + workflowSubtitle: 'Dziennik zarejestrował operację Automatyzacji.', + runDetail: { + title: 'Dziennik rozmowy', + workflowTitle: 'Szczegół dziennika', + }, + promptLog: 'Dziennik monitów', + agentLog: 'Dziennik agenta', + viewLog: 'Zobacz dziennik', + agentLogDetail: { + agentMode: 'Tryb agenta', + toolUsed: 'Użyte narzędzia', + iterations: 'Iteracje', + iteration: 'Iteracja', + finalProcessing: 'Końcowa obróbka', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/app-overview.ts b/web/i18n/pl-PL/app-overview.ts new file mode 100644 index 000000000..347c4599e --- /dev/null +++ b/web/i18n/pl-PL/app-overview.ts @@ -0,0 +1,162 @@ +const translation = { + welcome: { + firstStepTip: 'Aby rozpocząć,', + enterKeyTip: 'wprowadź poniżej swój klucz API OpenAI', + getKeyTip: 'Pobierz swój klucz API z pulpitu nawigacyjnego OpenAI', + placeholder: 'Twój klucz API OpenAI (np. sk-xxxx)', + }, + apiKeyInfo: { + cloud: { + trial: { + title: 'Korzystasz z limitu próbnego {{providerName}}.', + description: + 'Limit próbny jest dostarczany do użytku testowego. Zanim wykorzystasz dozwolone wywołania limitu próbnego, skonfiguruj swojego własnego dostawcę modelu lub zakup dodatkowy limit.', + }, + exhausted: { + title: + 'Twój limit próbny został wyczerpany, proszę skonfiguruj swój klucz API.', + description: + 'Twój limit próbny został wyczerpany. Skonfiguruj swojego własnego dostawcę modelu lub zakup dodatkowy limit.', + }, + }, + selfHost: { + title: { + row1: 'Aby rozpocząć,', + row2: 'najpierw skonfiguruj swojego dostawcę modelu.', + }, + }, + callTimes: 'Liczba wywołań', + usedToken: 'Zużyty token', + setAPIBtn: 'Przejdź do konfiguracji dostawcy modelu', + tryCloud: 'Lub wypróbuj wersję chmurową Dify z darmowym limitem', + }, + overview: { + title: 'Przegląd', + appInfo: { + explanation: 'Gotowa do użycia aplikacja internetowa AI', + accessibleAddress: 'Publiczny adres URL', + preview: 'Podgląd', + regenerate: 'Wygeneruj ponownie', + preUseReminder: 'Przed kontynuowaniem włącz aplikację WebApp.', + settings: { + entry: 'Ustawienia', + title: 'Ustawienia WebApp', + webName: 'Nazwa WebApp', + webDesc: 'Opis WebApp', + webDescTip: + 'Ten tekst będzie wyświetlany po stronie klienta, zapewniając podstawowe wskazówki, jak korzystać z aplikacji', + webDescPlaceholder: 'Wpisz opis WebApp', + language: 'Język', + more: { + entry: 'Pokaż więcej ustawień', + copyright: 'Prawa autorskie', + copyRightPlaceholder: 'Wprowadź nazwę autora lub organizacji', + privacyPolicy: 'Polityka prywatności', + privacyPolicyPlaceholder: 'Wprowadź link do polityki prywatności', + privacyPolicyTip: + 'Pomaga odwiedzającym zrozumieć, jakie dane zbiera aplikacja, zobacz Politykę prywatności Dify.', + }, + }, + embedded: { + entry: 'Osadzone', + title: 'Osadź na stronie internetowej', + explanation: + 'Wybierz sposób osadzenia aplikacji czatu na swojej stronie internetowej', + iframe: + 'Aby dodać aplikację czatu w dowolnym miejscu na swojej stronie internetowej, dodaj ten kod iframe do swojego kodu HTML.', + scripts: + 'Aby dodać aplikację czatu w prawym dolnym rogu swojej strony internetowej, dodaj ten kod do swojego HTML.', + chromePlugin: 'Zainstaluj rozszerzenie Chrome Dify Chatbot', + copied: 'Skopiowane', + copy: 'Kopiuj', + }, + qrcode: { + title: 'Kod QR do udostępniania', + scan: 'Skanuj aplikację udostępniania', + download: 'Pobierz kod QR', + }, + customize: { + way: 'sposób', + entry: 'Dostosuj', + title: 'Dostosuj aplikację internetową AI', + explanation: + 'Możesz dostosować front aplikacji internetowej do swoich scenariuszy i potrzeb stylowych.', + way1: { + name: 'Skopiuj kod klienta, zmodyfikuj go i wdroż na Vercel (zalecane)', + step1: 'Skopiuj kod klienta i zmodyfikuj go', + step1Tip: + 'Kliknij tutaj, aby skopiować kod źródłowy na swoje konto GitHub i zmodyfikować kod', + step1Operation: 'Dify-WebClient', + step2: 'Wdroż na Vercel', + step2Tip: + 'Kliknij tutaj, aby zaimportować repozytorium do Vercel i wdrożyć', + step2Operation: 'Import repozytorium', + step3: 'Konfiguracja zmiennych środowiskowych', + step3Tip: 'Dodaj następujące zmienne środowiskowe w Vercel', + }, + way2: { + name: 'Napisz kod po stronie klienta, aby wywołać API i wdrożyć go na serwerze', + operation: 'Dokumentacja', + }, + }, + }, + apiInfo: { + title: 'API usługi w tle', + explanation: 'Łatwe do zintegrowania z twoją aplikacją', + accessibleAddress: 'Punkt końcowy API usługi', + doc: 'Dokumentacja API', + }, + status: { + running: 'W usłudze', + disable: 'Wyłącz', + }, + }, + analysis: { + title: 'Analiza', + ms: 'ms', + tokenPS: 'Tokeny/s', + totalMessages: { + title: 'Łączna liczba wiadomości', + explanation: + 'Dzienna liczba interakcji z AI; inżynieria i debugowanie monitów wykluczone.', + }, + activeUsers: { + title: 'Aktywni użytkownicy', + explanation: + 'Unikalni użytkownicy uczestniczący w pytaniach i odpowiedziach z AI; inżynieria i debugowanie monitów wykluczone.', + }, + tokenUsage: { + title: 'Zużycie tokenów', + explanation: + 'Odbija dziennie używane tokeny modelu językowego dla aplikacji, przydatne do kontroli kosztów.', + consumed: 'Zużyte', + }, + avgSessionInteractions: { + title: 'Śr. interakcji w sesji', + explanation: + 'Liczba ciągłych komunikacji użytkownik-AI; dla aplikacji opartych na rozmowach.', + }, + avgUserInteractions: { + title: 'Śr. interakcji użytkownika', + explanation: + 'Odbija dzienną częstotliwość użytkowania przez użytkowników. Ta metryka odzwierciedla przywiązanie użytkowników.', + }, + userSatisfactionRate: { + title: 'Wskaźnik zadowolenia użytkowników', + explanation: + 'Liczba polubień na 1000 wiadomości. Wskazuje to proporcję odpowiedzi, z których użytkownicy są bardzo zadowoleni.', + }, + avgResponseTime: { + title: 'Śr. czas odpowiedzi', + explanation: + 'Czas (ms) potrzebny AI na przetworzenie/odpowiedź; dla aplikacji opartych na tekście.', + }, + tps: { + title: 'Szybkość wydajności tokenów', + explanation: + 'Mierzy wydajność LLM. Liczy szybkość wydajności tokenów LLM od początku żądania do zakończenia wyjścia.', + }, + }, +} + +export default translation diff --git a/web/i18n/pl-PL/app.ts b/web/i18n/pl-PL/app.ts new file mode 100644 index 000000000..1bf6e2f37 --- /dev/null +++ b/web/i18n/pl-PL/app.ts @@ -0,0 +1,97 @@ +const translation = { + createApp: 'UTWÓRZ APLIKACJĘ', + types: { + all: 'Wszystkie', + chatbot: 'Chatbot', + agent: 'Agent', + workflow: 'Przepływ pracy', + completion: 'Zakończenie', + }, + duplicate: 'Duplikuj', + duplicateTitle: 'Duplikuj aplikację', + export: 'Eksportuj DSL', + exportFailed: 'Eksport DSL nie powiódł się.', + importDSL: 'Importuj plik DSL', + createFromConfigFile: 'Utwórz z pliku DSL', + deleteAppConfirmTitle: 'Usunąć tę aplikację?', + deleteAppConfirmContent: + 'Usunięcie aplikacji jest nieodwracalne. Użytkownicy nie będą mieli już dostępu do twojej aplikacji, a wszystkie konfiguracje monitów i dzienniki zostaną trwale usunięte.', + appDeleted: 'Aplikacja usunięta', + appDeleteFailed: 'Nie udało się usunąć aplikacji', + join: 'Dołącz do społeczności', + communityIntro: + 'Dyskutuj z członkami zespołu, współtwórcami i deweloperami na różnych kanałach.', + roadmap: 'Zobacz naszą mapę drogową', + newApp: { + startFromBlank: 'Utwórz od podstaw', + startFromTemplate: 'Utwórz z szablonu', + captionAppType: 'Jaki typ aplikacji chcesz stworzyć?', + chatbotDescription: + 'Zbuduj aplikację opartą na czacie. Ta aplikacja używa formatu pytań i odpowiedzi, umożliwiając wielokrotne rundy ciągłej konwersacji.', + completionDescription: + 'Zbuduj aplikację generującą teksty wysokiej jakości na podstawie monitów, takich jak generowanie artykułów, streszczeń, tłumaczeń i innych.', + completionWarning: 'Ten typ aplikacji nie będzie już obsługiwany.', + agentDescription: + 'Zbuduj inteligentnego agenta, który może autonomicznie wybierać narzędzia do wykonywania zadań', + workflowDescription: + 'Zbuduj aplikację, która w oparciu o przepływ pracy generuje teksty wysokiej jakości z dużą możliwością dostosowania. Jest odpowiednia dla doświadczonych użytkowników.', + workflowWarning: 'Obecnie w fazie beta', + chatbotType: 'Metoda orkiestracji chatbota', + basic: 'Podstawowy', + basicTip: 'Dla początkujących, można przełączyć się później na Chatflow', + basicFor: 'Dla początkujących', + basicDescription: + 'Podstawowa orkiestracja pozwala na skonfigurowanie aplikacji Chatbot za pomocą prostych ustawień, bez możliwości modyfikacji wbudowanych monitów. Jest odpowiednia dla początkujących.', + advanced: 'Chatflow', + advancedFor: 'Dla zaawansowanych użytkowników', + advancedDescription: + 'Orkiestracja przepływu pracy organizuje Chatboty w formie przepływów pracy, oferując wysoki stopień dostosowania, w tym możliwość edycji wbudowanych monitów. Jest odpowiednia dla doświadczonych użytkowników.', + captionName: 'Ikona i nazwa aplikacji', + appNamePlaceholder: 'Podaj nazwę swojej aplikacji', + captionDescription: 'Opis', + appDescriptionPlaceholder: 'Wprowadź opis aplikacji', + useTemplate: 'Użyj tego szablonu', + previewDemo: 'Podgląd demo', + chatApp: 'Asystent', + chatAppIntro: + 'Chcę zbudować aplikację opartą na czacie. Ta aplikacja używa formatu pytań i odpowiedzi, umożliwiając wielokrotne rundy ciągłej konwersacji.', + agentAssistant: 'Nowy asystent agenta', + completeApp: 'Generator tekstu', + completeAppIntro: + 'Chcę stworzyć aplikację, która generuje teksty wysokiej jakości na podstawie monitów, takich jak generowanie artykułów, streszczeń, tłumaczeń i innych.', + showTemplates: 'Chcę wybrać z szablonu', + hideTemplates: 'Wróć do wyboru trybu', + Create: 'Utwórz', + Cancel: 'Anuluj', + nameNotEmpty: 'Nazwa nie może być pusta', + appTemplateNotSelected: 'Proszę wybrać szablon', + appTypeRequired: 'Proszę wybrać typ aplikacji', + appCreated: 'Aplikacja utworzona', + appCreateFailed: 'Nie udało się utworzyć aplikacji', + }, + editApp: 'Edytuj informacje', + editAppTitle: 'Edytuj informacje o aplikacji', + editDone: 'Informacje o aplikacji zaktualizowane', + editFailed: 'Nie udało się zaktualizować informacji o aplikacji', + emoji: { + ok: 'OK', + cancel: 'Anuluj', + }, + switch: 'Przełącz na Orkiestrację Przepływu Pracy', + switchTipStart: + 'Dla ciebie zostanie utworzona nowa kopia aplikacji, a nowa kopia przełączy się na Orkiestrację Przepływu Pracy. Nowa kopia będzie ', + switchTip: 'nie pozwoli', + switchTipEnd: ' na powrót do Podstawowej Orkiestracji.', + switchLabel: 'Kopia aplikacji do utworzenia', + removeOriginal: 'Usuń oryginalną aplikację', + switchStart: 'Rozpocznij przełączanie', + typeSelector: { + all: 'WSZYSTKIE Typy', + chatbot: 'Chatbot', + agent: 'Agent', + workflow: 'Przepływ pracy', + completion: 'Zakończenie', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/billing.ts b/web/i18n/pl-PL/billing.ts new file mode 100644 index 000000000..40ddc1f73 --- /dev/null +++ b/web/i18n/pl-PL/billing.ts @@ -0,0 +1,127 @@ +const translation = { + currentPlan: 'Obecny plan', + upgradeBtn: { + plain: 'Ulepsz plan', + encourage: 'Ulepsz teraz', + encourageShort: 'Ulepsz', + }, + viewBilling: 'Zarządzaj rozliczeniami i subskrypcjami', + buyPermissionDeniedTip: + 'Skontaktuj się z administratorem swojej firmy, aby zasubskrybować', + plansCommon: { + title: 'Wybierz plan odpowiedni dla siebie', + yearlyTip: 'Otrzymaj 2 miesiące za darmo, subskrybując rocznie!', + mostPopular: 'Najpopularniejszy', + planRange: { + monthly: 'Miesięczny', + yearly: 'Roczny', + }, + month: 'miesiąc', + year: 'rok', + save: 'Oszczędź ', + free: 'Darmowy', + currentPlan: 'Obecny plan', + contractSales: 'Skontaktuj się z działem sprzedaży', + contractOwner: 'Skontaktuj się z zarządcą zespołu', + startForFree: 'Zacznij za darmo', + getStartedWith: 'Rozpocznij z ', + contactSales: 'Kontakt z działem sprzedaży', + talkToSales: 'Porozmawiaj z działem sprzedaży', + modelProviders: 'Dostawcy modeli', + teamMembers: 'Członkowie zespołu', + buildApps: 'Twórz aplikacje', + vectorSpace: 'Przestrzeń wektorowa', + vectorSpaceBillingTooltip: + 'Każdy 1MB może przechowywać około 1,2 miliona znaków z wektoryzowanych danych (szacowane na podstawie OpenAI Embeddings, różni się w zależności od modelu).', + vectorSpaceTooltip: + 'Przestrzeń wektorowa jest systemem pamięci długoterminowej wymaganym dla LLM, aby zrozumieć Twoje dane.', + documentsUploadQuota: 'Limit przesyłanych dokumentów', + documentProcessingPriority: 'Priorytet przetwarzania dokumentów', + documentProcessingPriorityTip: + 'Dla wyższego priorytetu przetwarzania dokumentów, ulepsz swój plan.', + documentProcessingPriorityUpgrade: + 'Przetwarzaj więcej danych z większą dokładnością i w szybszym tempie.', + priority: { + 'standard': 'Standardowy', + 'priority': 'Priorytetowy', + 'top-priority': 'Najwyższy priorytet', + }, + logsHistory: 'Historia logów', + customTools: 'Niestandardowe narzędzia', + unavailable: 'Niedostępne', + days: 'dni', + unlimited: 'Nieograniczony', + support: 'Wsparcie', + supportItems: { + communityForums: 'Forum społecznościowe', + emailSupport: 'Wsparcie mailowe', + priorityEmail: 'Priorytetowa pomoc mailowa i czat', + logoChange: 'Zmiana logo', + SSOAuthentication: 'Uwierzytelnianie SSO', + personalizedSupport: 'Personalizowane wsparcie', + dedicatedAPISupport: 'Dedykowane wsparcie API', + customIntegration: 'Niestandardowa integracja i wsparcie', + ragAPIRequest: 'Żądania API RAG', + bulkUpload: 'Masowe przesyłanie dokumentów', + agentMode: 'Tryb agenta', + workflow: 'Przepływ pracy', + }, + comingSoon: 'Wkrótce dostępne', + member: 'Członek', + memberAfter: 'Członek', + messageRequest: { + title: 'Limity kredytów wiadomości', + tooltip: + 'Limity wywołań wiadomości dla różnych planów używających modeli OpenAI (z wyjątkiem gpt4). Wiadomości przekraczające limit będą korzystać z twojego klucza API OpenAI.', + }, + annotatedResponse: { + title: 'Limity kredytów na adnotacje', + tooltip: + 'Ręczna edycja i adnotacja odpowiedzi zapewniają możliwość dostosowania wysokiej jakości odpowiedzi na pytania dla aplikacji. (Stosowane tylko w aplikacjach czatowych)', + }, + ragAPIRequestTooltip: + 'Odnosi się do liczby wywołań API wykorzystujących tylko zdolności przetwarzania bazy wiedzy Dify.', + receiptInfo: + 'Tylko właściciel zespołu i administrator zespołu mogą subskrybować i przeglądać informacje o rozliczeniach', + }, + plans: { + sandbox: { + name: 'Sandbox', + description: '200 razy darmowa próba GPT', + includesTitle: 'Zawiera:', + }, + professional: { + name: 'Profesjonalny', + description: + 'Dla osób fizycznych i małych zespołów, aby odblokować więcej mocy w przystępnej cenie.', + includesTitle: 'Wszystko w darmowym planie, plus:', + }, + team: { + name: 'Zespół', + description: + 'Współpracuj bez ograniczeń i ciesz się najwyższą wydajnością.', + includesTitle: 'Wszystko w planie Profesjonalnym, plus:', + }, + enterprise: { + name: 'Przedsiębiorstwo', + description: + 'Uzyskaj pełne możliwości i wsparcie dla systemów o kluczowym znaczeniu dla misji.', + includesTitle: 'Wszystko w planie Zespołowym, plus:', + }, + }, + vectorSpace: { + fullTip: 'Przestrzeń wektorowa jest pełna.', + fullSolution: 'Ulepsz swój plan, aby uzyskać więcej miejsca.', + }, + apps: { + fullTipLine1: 'Ulepsz swój plan, aby', + fullTipLine2: 'tworzyć więcej aplikacji.', + }, + annotatedResponse: { + fullTipLine1: 'Ulepsz swój plan, aby', + fullTipLine2: 'adnotować więcej rozmów.', + quotaTitle: 'Limit adnotacji odpowiedzi', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/common.ts b/web/i18n/pl-PL/common.ts new file mode 100644 index 000000000..108935a12 --- /dev/null +++ b/web/i18n/pl-PL/common.ts @@ -0,0 +1,547 @@ +const translation = { + api: { + success: 'Sukces', + actionSuccess: 'Akcja powiodła się', + saved: 'Zapisane', + create: 'Utworzono', + remove: 'Usunięto', + }, + operation: { + create: 'Utwórz', + confirm: 'Potwierdź', + cancel: 'Anuluj', + clear: 'Wyczyść', + save: 'Zapisz', + edit: 'Edytuj', + add: 'Dodaj', + added: 'Dodano', + refresh: 'Odśwież', + reset: 'Resetuj', + search: 'Szukaj', + change: 'Zmień', + remove: 'Usuń', + send: 'Wyślij', + copy: 'Kopiuj', + lineBreak: 'Złamanie linii', + sure: 'Jestem pewien', + download: 'Pobierz', + delete: 'Usuń', + settings: 'Ustawienia', + setup: 'Konfiguruj', + getForFree: 'Zdobądź za darmo', + reload: 'Przeładuj', + ok: 'OK', + log: 'Dziennik', + learnMore: 'Dowiedz się więcej', + params: 'Parametry', + duplicate: 'Duplikuj', + rename: 'Zmień nazwę', + }, + placeholder: { + input: 'Proszę wprowadzić', + select: 'Proszę wybrać', + }, + voice: { + language: { + zhHans: 'Chiński', + zhHant: 'Chiński tradycyjny', + enUS: 'Angielski', + deDE: 'Niemiecki', + frFR: 'Francuski', + esES: 'Hiszpański', + itIT: 'Włoski', + thTH: 'Tajski', + idID: 'Indonezyjski', + jaJP: 'Japoński', + koKR: 'Koreański', + ptBR: 'Portugalski', + ruRU: 'Rosyjski', + ukUA: 'Ukraiński', + viVN: 'Wietnamski', + }, + }, + unit: { + char: 'znaki', + }, + actionMsg: { + noModification: 'W tej chwili brak zmian.', + modifiedSuccessfully: 'Zmodyfikowano pomyślnie', + modifiedUnsuccessfully: 'Nie udało się zmodyfikować', + copySuccessfully: 'Skopiowano pomyślnie', + paySucceeded: 'Płatność zakończona sukcesem', + payCancelled: 'Płatność anulowana', + generatedSuccessfully: 'Wygenerowano pomyślnie', + generatedUnsuccessfully: 'Nie udało się wygenerować', + }, + model: { + params: { + temperature: 'Temperatura', + temperatureTip: + 'Kontroluje przypadkowość: obniżenie powoduje mniej przypadkowych uzupełnień. Gdy temperatura zbliża się do zera, model staje się deterministyczny i powtarzalny.', + top_p: 'Top P', + top_pTip: + 'Kontroluje różnorodność poprzez próbkowanie jądra: 0,5 oznacza, że rozważane są połowa wszystkich opcji ważonych prawdopodobieństwem.', + presence_penalty: 'Kara za obecność', + presence_penaltyTip: + 'Jak bardzo karać nowe tokeny w zależności od tego, czy pojawiły się już w tekście.\nZwiększa prawdopodobieństwo, że model zacznie rozmawiać o nowych tematach.', + frequency_penalty: 'Kara za częstotliwość', + frequency_penaltyTip: + 'Jak bardzo karać nowe tokeny bazując na ich dotychczasowej częstotliwości w tekście.\nZmniejsza prawdopodobieństwo, że model będzie powtarzał tę samą linię dosłownie.', + max_tokens: 'Maksymalna liczba tokenów', + max_tokensTip: + 'Służy do ograniczania maksymalnej długości odpowiedzi w tokenach. \nWiększe wartości mogą ograniczyć miejsce na słowa wstępne, dzienniki rozmów i Wiedzę. \nZaleca się ustawienie go poniżej dwóch trzecich\ngpt-4-1106-preview, gpt-4-vision-preview maksymalna liczba tokenów (input 128k output 4k)', + maxTokenSettingTip: + 'Twoje ustawienie maksymalnej liczby tokenów jest wysokie, potencjalnie ograniczając miejsce na monity, zapytania i dane. Rozważ ustawienie go poniżej 2/3.', + setToCurrentModelMaxTokenTip: + 'Maksymalna liczba tokenów została zaktualizowana do 80% maksymalnej liczby tokenów obecnego modelu {{maxToken}}.', + stop_sequences: 'Sekwencje zatrzymujące', + stop_sequencesTip: + 'Do czterech sekwencji, w których API przestanie generować dalsze tokeny. Zwrócony tekst nie będzie zawierał sekwencji zatrzymującej.', + stop_sequencesPlaceholder: 'Wpisz sekwencję i naciśnij Tab', + }, + tone: { + Creative: 'Kreatywny', + Balanced: 'Zrównoważony', + Precise: 'Precyzyjny', + Custom: 'Niestandardowy', + }, + addMoreModel: 'Przejdź do ustawień, aby dodać więcej modeli', + }, + menus: { + status: 'beta', + explore: 'Eksploruj', + apps: 'Studio', + plugins: 'Pluginy', + pluginsTips: + 'Integruj pluginy stron trzecich lub twórz pluginy AI kompatybilne z ChatGPT.', + datasets: 'Wiedza', + datasetsTips: + 'NADCHODZI: Importuj swoje własne dane tekstowe lub wpisuj dane w czasie rzeczywistym przez Webhook, aby wzmocnić kontekst LLM.', + newApp: 'Nowa aplikacja', + newDataset: 'Utwórz Wiedzę', + tools: 'Narzędzia', + }, + userProfile: { + settings: 'Ustawienia', + workspace: 'Przestrzeń robocza', + createWorkspace: 'Utwórz przestrzeń roboczą', + helpCenter: 'Pomoc', + roadmapAndFeedback: 'Opinie', + community: 'Społeczność', + about: 'O', + logout: 'Wyloguj się', + }, + settings: { + accountGroup: 'KONTO', + workplaceGroup: 'PRZESTRZEŃ ROBOCZA', + account: 'Moje konto', + members: 'Członkowie', + billing: 'Rozliczenia', + integrations: 'Integracje', + language: 'Język', + provider: 'Dostawca modelu', + dataSource: 'Źródło danych', + plugin: 'Pluginy', + apiBasedExtension: 'Rozszerzenie API', + }, + account: { + avatar: 'Awatar', + name: 'Nazwa', + email: 'Email', + password: 'Hasło', + passwordTip: + 'Możesz ustawić stałe hasło, jeśli nie chcesz używać tymczasowych kodów logowania', + setPassword: 'Ustaw hasło', + resetPassword: 'Zresetuj hasło', + currentPassword: 'Obecne hasło', + newPassword: 'Nowe hasło', + confirmPassword: 'Potwierdź hasło', + notEqual: 'Dwa hasła są różne.', + langGeniusAccount: 'Konto Dify', + langGeniusAccountTip: 'Twoje konto Dify i powiązane dane użytkownika.', + editName: 'Edytuj nazwę', + showAppLength: 'Pokaż {{length}} aplikacje', + }, + members: { + team: 'Zespół', + invite: 'Dodaj', + name: 'NAZWA', + lastActive: 'OSTATNIA AKTYWNOŚĆ', + role: 'ROLE', + pending: 'Oczekujący...', + owner: 'Właściciel', + admin: 'Admin', + adminTip: 'Może tworzyć aplikacje i zarządzać ustawieniami zespołu', + normal: 'Normalny', + normalTip: 'Może tylko korzystać z aplikacji, nie może tworzyć aplikacji', + inviteTeamMember: 'Dodaj członka zespołu', + inviteTeamMemberTip: + 'Mogą uzyskać bezpośredni dostęp do danych Twojego zespołu po zalogowaniu.', + email: 'Email', + emailInvalid: 'Nieprawidłowy format e-maila', + emailPlaceholder: 'Proszę podać adresy e-mail', + sendInvite: 'Wyślij zaproszenie', + invitedAsRole: 'Zaproszony jako użytkownik typu {{role}}', + invitationSent: 'Zaproszenie wysłane', + invitationSentTip: + 'Zaproszenie zostało wysłane, a oni mogą zalogować się do Dify, aby uzyskać dostęp do danych Twojego zespołu.', + invitationLink: 'Link zaproszenia', + failedinvitationEmails: 'Poniższe osoby nie zostały pomyślnie zaproszone', + ok: 'OK', + removeFromTeam: 'Usuń z zespołu', + removeFromTeamTip: 'Usunie dostęp do zespołu', + setAdmin: 'Ustaw jako administratora', + setMember: 'Ustaw jako zwykłego członka', + disinvite: 'Anuluj zaproszenie', + deleteMember: 'Usuń członka', + you: '(Ty)', + }, + integrations: { + connected: 'Połączony', + google: 'Google', + googleAccount: 'Zaloguj się przy użyciu konta Google', + github: 'GitHub', + githubAccount: 'Zaloguj się przy użyciu konta GitHub', + connect: 'Połącz', + }, + language: { + displayLanguage: 'Język interfejsu', + timezone: 'Strefa czasowa', + }, + provider: { + apiKey: 'Klucz API', + enterYourKey: 'Wprowadź tutaj swój klucz API', + invalidKey: 'Nieprawidłowy klucz API OpenAI', + validatedError: 'Weryfikacja nie powiodła się: ', + validating: 'Weryfikowanie klucza...', + saveFailed: 'Zapis klucza API nie powiódł się', + apiKeyExceedBill: 'Ten KLUCZ API nie ma dostępnych limitów, przeczytaj', + addKey: 'Dodaj klucz', + comingSoon: 'Już wkrótce', + editKey: 'Edytuj', + invalidApiKey: 'Nieprawidłowy klucz API', + azure: { + apiBase: 'Podstawa API', + apiBasePlaceholder: + 'Adres URL podstawowy Twojego końcowego punktu Azure OpenAI.', + apiKey: 'Klucz API', + apiKeyPlaceholder: 'Wprowadź tutaj swój klucz API', + helpTip: 'Dowiedz się więcej o usłudze Azure OpenAI', + }, + openaiHosted: { + openaiHosted: 'Hostowany OpenAI', + onTrial: 'NA PROBĘ', + exhausted: 'WYCZERPANY LIMIT', + desc: 'Usługa hostowania OpenAI dostarczana przez Dify pozwala korzystać z modeli takich jak GPT-3.5. Przed wyczerpaniem limitu próbnego należy skonfigurować inne dostawców modeli.', + callTimes: 'Czasy wywołań', + usedUp: 'Limit próbny został wyczerpany. Dodaj własnego dostawcę modeli.', + useYourModel: 'Aktualnie używany jest własny dostawca modeli.', + close: 'Zamknij', + }, + anthropicHosted: { + anthropicHosted: 'Anthropic Claude', + onTrial: 'NA PROBĘ', + exhausted: 'WYCZERPANY LIMIT', + desc: 'Potężny model, który doskonale sprawdza się w szerokim spektrum zadań, od zaawansowanego dialogu i generowania treści twórczych po szczegółowe instrukcje.', + callTimes: 'Czasy wywołań', + usedUp: 'Limit próbny został wyczerpany. Dodaj własnego dostawcę modeli.', + useYourModel: 'Aktualnie używany jest własny dostawca modeli.', + close: 'Zamknij', + }, + anthropic: { + using: 'Zdolność do osadzania jest używana', + enableTip: + 'Aby włączyć model Anthropica, musisz najpierw powiązać się z usługą OpenAI lub Azure OpenAI.', + notEnabled: 'Nie włączono', + keyFrom: 'Pobierz swój klucz API od Anthropic', + }, + encrypted: { + front: 'Twój KLUCZ API będzie szyfrowany i przechowywany za pomocą', + back: ' technologii.', + }, + }, + modelProvider: { + notConfigured: + 'Systemowy model nie został jeszcze w pełni skonfigurowany, co może skutkować niedostępnością niektórych funkcji.', + systemModelSettings: 'Ustawienia modelu systemowego', + systemModelSettingsLink: + 'Dlaczego konieczne jest skonfigurowanie modelu systemowego?', + selectModel: 'Wybierz swój model', + setupModelFirst: 'Proszę najpierw skonfigurować swój model', + systemReasoningModel: { + key: 'Model wnioskowania systemowego', + tip: 'Ustaw domyślny model wnioskowania do użytku przy tworzeniu aplikacji, a także cechy takie jak generowanie nazw dialogów i sugestie następnego pytania będą również korzystać z domyślnego modelu wnioskowania.', + }, + embeddingModel: { + key: 'Model osadzania', + tip: 'Ustaw domyślny model do przetwarzania osadzania dokumentów wiedzy; zarówno pozyskiwanie, jak i importowanie wiedzy wykorzystują ten model osadzania do przetwarzania wektorowego. Zmiana spowoduje niezgodność wymiarów wektorów między importowaną wiedzą a pytaniem, co skutkować będzie niepowodzeniem w pozyskiwaniu. Aby uniknąć niepowodzeń, prosimy nie zmieniać tego modelu dowolnie.', + required: 'Model osadzania jest wymagany', + }, + speechToTextModel: { + key: 'Model mowy na tekst', + tip: 'Ustaw domyślny model do przetwarzania mowy na tekst w rozmowach.', + }, + ttsModel: { + key: 'Model tekstu na mowę', + tip: 'Ustaw domyślny model dla konwersji tekstu na mowę w rozmowach.', + }, + rerankModel: { + key: 'Model ponownego rankingu', + tip: 'Model ponownego rankingu zmieni kolejność listy dokumentów kandydatów na podstawie semantycznego dopasowania z zapytaniem użytkownika, poprawiając wyniki rankingu semantycznego', + }, + quota: 'Limit', + searchModel: 'Model wyszukiwania', + noModelFound: 'Nie znaleziono modelu dla {{model}}', + models: 'Modele', + showMoreModelProvider: 'Pokaż więcej dostawców modeli', + selector: { + tip: 'Ten model został usunięty. Proszę dodać model lub wybrać inny model.', + emptyTip: 'Brak dostępnych modeli', + emptySetting: 'Przejdź do ustawień, aby skonfigurować', + rerankTip: 'Proszę skonfigurować model ponownego rankingu', + }, + card: { + quota: 'LIMIT', + onTrial: 'Na próbę', + paid: 'Płatny', + quotaExhausted: 'Wyczerpany limit', + callTimes: 'Czasy wywołań', + tokens: 'Tokeny', + buyQuota: 'Kup limit', + priorityUse: 'Używanie z priorytetem', + removeKey: 'Usuń klucz API', + tip: 'Priorytet zostanie nadany płatnemu limitowi. Po wyczerpaniu limitu próbnego zostanie użyty limit płatny.', + }, + item: { + deleteDesc: + '{{modelName}} są używane jako modele wnioskowania systemowego. Niektóre funkcje mogą nie być dostępne po usunięciu. Proszę potwierdź.', + freeQuota: 'LIMIT GRATIS', + }, + addApiKey: 'Dodaj swój klucz API', + invalidApiKey: 'Nieprawidłowy klucz API', + encrypted: { + front: 'Twój KLUCZ API będzie szyfrowany i przechowywany za pomocą', + back: ' technologii.', + }, + freeQuota: { + howToEarn: 'Jak zdobyć', + }, + addMoreModelProvider: 'DODAJ WIĘCEJ DOSTAWCÓW MODELI', + addModel: 'Dodaj model', + modelsNum: '{{num}} Modele', + showModels: 'Pokaż modele', + showModelsNum: 'Pokaż {{num}} modele', + collapse: 'Zwiń', + config: 'Konfiguracja', + modelAndParameters: 'Model i parametry', + model: 'Model', + featureSupported: '{{feature}} obsługiwane', + callTimes: 'Czasy wywołań', + credits: 'Kredyty wiadomości', + buyQuota: 'Kup limit', + getFreeTokens: 'Odbierz darmowe tokeny', + priorityUsing: 'Priorytetyzacja użycia', + deprecated: 'Przestarzałe', + confirmDelete: 'potwierdzić usunięcie?', + quotaTip: 'Pozostałe dostępne darmowe tokeny', + loadPresets: 'Załaduj ustawienia wstępne', + parameters: 'PARAMETRY', + }, + dataSource: { + add: 'Dodaj źródło danych', + connect: 'Połącz', + notion: { + title: 'Notion', + description: 'Korzystanie z Notion jako źródła danych dla Wiedzy.', + connectedWorkspace: 'Połączona przestrzeń robocza', + addWorkspace: 'Dodaj przestrzeń roboczą', + connected: 'Połączono', + disconnected: 'Rozłączono', + changeAuthorizedPages: 'Zmień uprawnione strony', + pagesAuthorized: 'Strony autoryzowane', + sync: 'Synchronizuj', + remove: 'Usuń', + selector: { + pageSelected: 'Zaznaczone strony', + searchPages: 'Szukaj stron...', + noSearchResult: 'Brak wyników wyszukiwania', + addPages: 'Dodaj strony', + preview: 'PODGLĄD', + }, + }, + }, + plugin: { + serpapi: { + apiKey: 'Klucz API', + apiKeyPlaceholder: 'Wprowadź swój klucz API', + keyFrom: 'Pobierz swój klucz SerpAPI ze strony konta SerpAPI', + }, + }, + apiBasedExtension: { + title: + 'Rozszerzenia oparte na interfejsie API zapewniają scentralizowane zarządzanie interfejsami API, upraszczając konfigurację dla łatwego użytkowania w aplikacjach Dify.', + link: 'Dowiedz się, jak opracować własne rozszerzenie interfejsu API.', + linkUrl: 'https://docs.dify.ai/features/extension/api_based_extension', + add: 'Dodaj rozszerzenie interfejsu API', + selector: { + title: 'Rozszerzenie interfejsu API', + placeholder: 'Wybierz rozszerzenie interfejsu API', + manage: 'Zarządzaj rozszerzeniem interfejsu API', + }, + modal: { + title: 'Dodaj rozszerzenie interfejsu API', + editTitle: 'Edytuj rozszerzenie interfejsu API', + name: { + title: 'Nazwa', + placeholder: 'Proszę wprowadź nazwę', + }, + apiEndpoint: { + title: 'Koniec API', + placeholder: 'Proszę wprowadź koniec API', + }, + apiKey: { + title: 'Klucz API', + placeholder: 'Proszę wprowadź klucz API', + lengthError: 'Długość klucza API nie może być mniejsza niż 5 znaków', + }, + }, + type: 'Typ', + }, + about: { + changeLog: 'Dziennik zmian', + updateNow: 'Aktualizuj teraz', + nowAvailable: 'Dify {{version}} jest teraz dostępny.', + latestAvailable: 'Dify {{version}} jest najnowszą dostępną wersją.', + }, + appMenus: { + overview: 'Przegląd', + promptEng: 'Orkiestracja', + apiAccess: 'Dostęp API', + logAndAnn: 'Logi i ogł.', + logs: 'Logi', + }, + environment: { + testing: 'TESTOWANIE', + development: 'ROZWOJOWA', + }, + appModes: { + completionApp: 'Generator tekstu', + chatApp: 'Aplikacja czatowa', + }, + datasetMenus: { + documents: 'Dokumenty', + hitTesting: 'Testowanie poboru', + settings: 'Ustawienia', + emptyTip: + 'Wiedza nie została powiązana, przejdź do aplikacji lub wtyczki, aby ukończyć powiązanie.', + viewDoc: 'Zobacz dokumentację', + relatedApp: 'powiązane aplikacje', + }, + voiceInput: { + speaking: 'Mów teraz...', + converting: 'Konwertowanie na tekst...', + notAllow: 'mikrofon nieautoryzowany', + }, + modelName: { + 'gpt-3.5-turbo': 'GPT-3.5-Turbo', + 'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K', + 'gpt-4': 'GPT-4', + 'gpt-4-32k': 'GPT-4-32K', + 'text-davinci-003': 'Tekst-Davinci-003', + 'text-embedding-ada-002': 'Tekst-Wan-Ada-002', + 'whisper-1': 'Szept-1', + 'claude-instant-1': 'Claude-Natychmiastowy', + 'claude-2': 'Claude-2', + }, + chat: { + renameConversation: 'Zmień nazwę rozmowy', + conversationName: 'Nazwa rozmowy', + conversationNamePlaceholder: 'Proszę wprowadź nazwę rozmowy', + conversationNameCanNotEmpty: 'Nazwa rozmowy wymagana', + citation: { + title: 'Cytaty', + linkToDataset: 'Link do Wiedzy', + characters: 'Postacie:', + hitCount: 'Liczba trafień:', + vectorHash: 'Wektor hash:', + hitScore: 'Wynik trafień:', + }, + }, + promptEditor: { + placeholder: + 'Wpisz swoje słowo kluczowe tutaj, wprowadź \'{\' aby wstawić zmienną, wprowadź \'/\' aby wstawić blok treści słownika', + context: { + item: { + title: 'Kontekst', + desc: 'Wstaw szablon kontekstu', + }, + modal: { + title: '{{num}} Wiedzy w Kontekście', + add: 'Dodaj Kontekst ', + footer: 'Możesz zarządzać kontekstami poniżej w sekcji Kontekstów.', + }, + }, + history: { + item: { + title: 'Historia rozmów', + desc: 'Wstaw szablon historycznej wiadomości', + }, + modal: { + title: 'PRZYKŁAD', + user: 'Cześć', + assistant: 'Cześć! W czym mogę pomóc?', + edit: 'Edytuj nazwy ról rozmów', + }, + }, + variable: { + item: { + title: 'Zmienne i Narzędzia Zewnętrzne', + desc: 'Wstaw Zmienne i Narzędzia Zewnętrzne', + }, + outputToolDisabledItem: { + title: 'Zmienne', + desc: 'Wstaw Zmienne', + }, + modal: { + add: 'Nowa zmienna', + addTool: 'Nowe narzędzie', + }, + }, + query: { + item: { + title: 'Zapytanie', + desc: 'Wstaw szablon zapytania użytkownika', + }, + }, + existed: 'Już istnieje w poleceniu', + }, + imageUploader: { + uploadFromComputer: 'Załaduj z komputera', + uploadFromComputerReadError: 'Błąd odczytu obrazu, spróbuj ponownie.', + uploadFromComputerUploadError: + 'Błąd przesyłania obrazu, prześlij go ponownie.', + uploadFromComputerLimit: + 'Obrazy do przesłania nie mogą przekroczyć {{size}} MB', + pasteImageLink: 'Wklej link do obrazu', + pasteImageLinkInputPlaceholder: 'Wklej tutaj link do obrazu', + pasteImageLinkInvalid: 'Nieprawidłowy link obrazu', + imageUpload: 'Przesyłanie obrazu', + }, + tag: { + placeholder: 'Wszystkie tagi', + addNew: 'Dodaj nowy tag', + noTag: 'Brak tagów', + noTagYet: 'Brak tagów jeszcze', + addTag: 'Dodaj tagi', + editTag: 'Edytuj tagi', + manageTags: 'Zarządzaj Tagami', + selectorPlaceholder: 'Wpisz, aby wyszukać lub utworzyć', + create: 'Utwórz', + delete: 'Usuń tag', + deleteTip: 'Ten tag jest używany, czy chcesz go usunąć?', + created: 'Tag został pomyślnie utworzony', + failed: 'Nie udało się utworzyć tagu', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/custom.ts b/web/i18n/pl-PL/custom.ts new file mode 100644 index 000000000..15d71ccee --- /dev/null +++ b/web/i18n/pl-PL/custom.ts @@ -0,0 +1,31 @@ +const translation = { + custom: 'Dostosowanie', + upgradeTip: { + prefix: 'Zaktualizuj swój plan, aby', + suffix: 'dostosować swoją markę.', + }, + webapp: { + title: 'Dostosuj markę aplikacji internetowej', + removeBrand: 'Usuń zasilane przez Dify', + changeLogo: 'Zmień obraz marki zasilany przez Brand', + changeLogoTip: 'Format SVG lub PNG o minimalnym rozmiarze 40x40px', + }, + app: { + title: 'Dostosuj markę nagłówka aplikacji', + changeLogoTip: 'Format SVG lub PNG o minimalnym rozmiarze 80x80px', + }, + upload: 'Prześlij', + uploading: 'Przesyłanie', + uploadedFail: + 'Wystąpił problem podczas przesyłania obrazu, proszę spróbować ponownie.', + change: 'Zmień', + apply: 'Zastosuj', + restore: 'Przywróć domyślne', + customize: { + contactUs: ' skontaktuj się z nami ', + prefix: 'Aby dostosować logo marki w aplikacji, proszę', + suffix: 'dla aktualizacji do wersji Enterprise.', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/dataset-creation.ts b/web/i18n/pl-PL/dataset-creation.ts new file mode 100644 index 000000000..1b12e51b0 --- /dev/null +++ b/web/i18n/pl-PL/dataset-creation.ts @@ -0,0 +1,146 @@ +const translation = { + steps: { + header: { + creation: 'Utwórz Wiedzę', + update: 'Dodaj dane', + }, + one: 'Wybierz źródło danych', + two: 'Przetwarzanie i Czyszczenie Tekstu', + three: 'Wykonaj i zakończ', + }, + error: { + unavailable: 'Ta Wiedza nie jest dostępna', + }, + stepOne: { + filePreview: 'Podgląd pliku', + pagePreview: 'Podgląd strony', + dataSourceType: { + file: 'Importuj z pliku tekstowego', + notion: 'Synchronizuj z Notion', + web: 'Synchronizuj z witryny', + }, + uploader: { + title: 'Prześlij plik tekstowy', + button: 'Przeciągnij i upuść plik lub', + browse: 'Przeglądaj', + tip: 'Obsługuje {{supportTypes}}. Maksymalnie {{size}}MB każdy.', + validation: { + typeError: 'Nieobsługiwany typ pliku', + size: 'Plik jest za duży. Maksymalnie {{size}}MB', + count: 'Nieobsługiwane przesyłanie wielu plików', + filesNumber: 'Osiągnąłeś limit przesłania partii {{filesNumber}}.', + }, + cancel: 'Anuluj', + change: 'Zmień', + failed: 'Przesyłanie nie powiodło się', + }, + notionSyncTitle: 'Notion nie jest podłączony', + notionSyncTip: + 'Aby synchronizować z Notion, najpierw trzeba ustanowić połączenie z Notion.', + connect: 'Przejdź do połączenia', + button: 'dalej', + emptyDatasetCreation: 'Chcę utworzyć pustą Wiedzę', + modal: { + title: 'Utwórz pustą Wiedzę', + tip: 'Pusta Wiedza nie będzie zawierała żadnych dokumentów, a można przesyłać dokumenty w dowolnym momencie.', + input: 'Nazwa Wiedzy', + placeholder: 'Proszę wpisz', + nameNotEmpty: 'Nazwa nie może być pusta', + nameLengthInvaild: 'Nazwa musi zawierać od 1 do 40 znaków', + cancelButton: 'Anuluj', + confirmButton: 'Utwórz', + failed: 'Utworzenie nie powiodło się', + }, + }, + stepTwo: { + segmentation: 'Ustawienia bloków tekstu', + auto: 'Automatycznie', + autoDescription: + 'Automatyczne ustawianie bloków i reguł preprocessingu. Nieużytkownicy są zaleceni do wyboru tej opcji.', + custom: 'Niestandardowo', + customDescription: + 'Dostosuj reguły bloków, długość bloków i reguły preprocessingu itp.', + separator: 'Separator bloków', + separatorPlaceholder: + 'Na przykład nowa linia (\\n) lub specjalny separator (np. "***")', + maxLength: 'Maksymalna długość bloku', + overlap: 'Nakładka bloków', + overlapTip: + 'Ustawienie nakładki bloków pozwala zachować semantyczną zgodność między nimi, poprawiając efekt pobierania. Zaleca się ustawienie 10%-25% maksymalnej długości bloku.', + overlapCheck: + 'nakładka bloków nie powinna być większa niż maksymalna długość bloku', + rules: 'Reguły preprocessingu tekstu', + removeExtraSpaces: 'Zastąp kolejne spacje, nowe linie i tabulatory', + removeUrlEmails: 'Usuń wszystkie adresy URL i e-maile', + removeStopwords: 'Usuń słowa powszechne takie jak "a", "an", "the"', + preview: 'Potwierdź i Podgląd', + reset: 'Reset', + indexMode: 'Tryb indeksowania', + qualified: 'Wysoka jakość', + recommend: 'Polecać', + qualifiedTip: + 'Wywołaj domyślne interfejsy wbudowania systemu do przetwarzania, zapewniając wyższą dokładność podczas zapytań przez użytkowników.', + warning: 'Proszę najpierw skonfigurować klucz API dostawcy modelu.', + click: 'Przejdź do ustawień', + economical: 'Ekonomiczny', + economicalTip: + 'Użyj offline\'owych silników wektorowych, indeksów słów kluczowych itp., aby zmniejszyć dokładność bez wydawania tokenów', + QATitle: 'Segmentacja w formacie pytania i odpowiedzi', + QATip: 'Włączenie tej opcji spowoduje zużycie większej liczby tokenów', + QALanguage: 'Segmentacja przy użyciu', + emstimateCost: 'Oszacowanie', + emstimateSegment: 'Oszacowane bloki', + segmentCount: 'bloki', + calculating: 'Obliczanie...', + fileSource: 'Przetwarzaj dokumenty', + notionSource: 'Przetwarzaj strony', + other: 'i inne ', + fileUnit: ' plików', + notionUnit: ' stron', + previousStep: 'Poprzedni krok', + nextStep: 'Zapisz & Przetwarzaj', + save: 'Zapisz & Przetwarzaj', + cancel: 'Anuluj', + sideTipTitle: 'Dlaczego blok i preprocess?', + sideTipP1: + 'Podczas przetwarzania danych tekstowych, blok i czyszczenie są dwoma ważnymi krokami preprocessingu.', + sideTipP2: + 'Segmentacja dzieli długi tekst na akapity, dzięki czemu modele są w stanie lepiej zrozumieć. Poprawia to jakość i trafność wyników modelu.', + sideTipP3: + 'Czyszczenie usuwa zbędne znaki i formatowanie, sprawiając, że Wiedza jest czystsza i łatwiejsza do analizy.', + sideTipP4: + 'Odpowiednie blok i czyszczenie poprawiają wydajność modelu, zapewniając bardziej dokładne i wartościowe wyniki.', + previewTitle: 'Podgląd', + previewTitleButton: 'Podgląd', + previewButton: 'Przełącz do formatu pytania i odpowiedzi', + previewSwitchTipStart: + 'Aktulany podgląd bloku jest w formacie tekstu, przełączenie na podgląd w formacie pytania i odpowiedzi spowoduje', + previewSwitchTipEnd: ' dodatkowe zużycie tokenów', + characters: 'znaki', + indexSettedTip: 'Aby zmienić metodę indeksowania, przejdź do ', + retrivalSettedTip: 'Aby zmienić metodę indeksowania, przejdź do ', + datasetSettingLink: 'ustawień Wiedzy.', + }, + stepThree: { + creationTitle: '🎉 Utworzono Wiedzę', + creationContent: + 'Automatycznie nadaliśmy nazwę Wiedzy, możesz ją dowolnie zmienić w każdej chwili', + label: 'Nazwa Wiedzy', + additionTitle: '🎉 Przesłano dokument', + additionP1: 'Dokument został przesłany do Wiedzy', + additionP2: ', możesz go znaleźć na liście dokumentów Wiedzy.', + stop: 'Zatrzymaj przetwarzanie', + resume: 'Wznów przetwarzanie', + navTo: 'Przejdź do dokumentu', + sideTipTitle: 'Co dalej', + sideTipContent: + 'Po zakończeniu indeksowania dokumentu, Wiedza może być zintegrowana z aplikacją jako kontekst, można znaleźć ustawienie kontekstu na stronie orkiestracji. Można również stworzyć ją jako niezależny plugin indeksowania ChatGPT do wydania.', + modelTitle: 'Czy na pewno chcesz zatrzymać embedded?', + modelContent: + 'Jeśli będziesz potrzebować wznowić przetwarzanie później, będziesz kontynuować od miejsca, w którym przerwałeś.', + modelButtonConfirm: 'Potwierdź', + modelButtonCancel: 'Anuluj', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/dataset-documents.ts b/web/i18n/pl-PL/dataset-documents.ts new file mode 100644 index 000000000..f8617a29c --- /dev/null +++ b/web/i18n/pl-PL/dataset-documents.ts @@ -0,0 +1,350 @@ +const translation = { + list: { + title: 'Dokumenty', + desc: 'Wszystkie pliki wiedzy są tutaj pokazane, a cała wiedza może być powiązana z odnośnikami Dify lub zindeksowana za pomocą wtyczki Chat.', + addFile: 'dodaj plik', + addPages: 'Dodaj strony', + table: { + header: { + fileName: 'NAZWA PLIKU', + words: 'SŁOWA', + hitCount: 'LICZBA ZNALEZIEŃ', + uploadTime: 'CZAS WGRANIA', + status: 'STATUS', + action: 'AKCJA', + }, + }, + action: { + uploadFile: 'Wgraj nowy plik', + settings: 'Ustawienia segmentacji', + addButton: 'Dodaj fragment', + add: 'Dodaj fragment', + batchAdd: 'Dodaj partię', + archive: 'Archiwum', + unarchive: 'Usuń z archiwum', + delete: 'Usuń', + enableWarning: 'Zarchiwizowany plik nie może zostać włączony', + sync: 'Synchronizuj', + }, + index: { + enable: 'Włącz', + disable: 'Wyłącz', + all: 'Wszystkie', + enableTip: 'Plik może być zindeksowany', + disableTip: 'Plik nie może być zindeksowany', + }, + status: { + queuing: 'Oczekiwanie', + indexing: 'Indeksowanie', + paused: 'Wstrzymane', + error: 'Błąd', + available: 'Dostępny', + enabled: 'Włączony', + disabled: 'Wyłączony', + archived: 'Zaarchiwizowany', + }, + empty: { + title: 'Nie ma jeszcze dokumentacji', + upload: { + tip: 'Możesz wgrać pliki, synchronizować z witryny lub z aplikacji internetowych takich jak Notion, GitHub, itp.', + }, + sync: { + tip: 'Dify regularnie pobiera pliki z Twojego Notion i dokonuje ich przetwarzania.', + }, + }, + delete: { + title: 'Czy na pewno chcesz usunąć?', + content: + 'Jeśli będziesz musiał wznowić przetwarzanie później, będziesz kontynuować tam, gdzie przerwałeś', + }, + batchModal: { + title: 'Dodaj partię fragmentów', + csvUploadTitle: 'Przeciągnij i upuść swój plik CSV tutaj, lub ', + browse: 'wybierz', + tip: 'Plik CSV musi być zgodny z następującą strukturą:', + question: 'pytanie', + answer: 'odpowiedź', + contentTitle: 'treść fragmentu', + content: 'treść', + template: 'Pobierz szablon tutaj', + cancel: 'Anuluj', + run: 'Uruchom partię', + runError: 'Błąd uruchomienia partii', + processing: 'Przetwarzanie partii', + completed: 'Import zakończony', + error: 'Błąd importu', + ok: 'OK', + }, + }, + metadata: { + title: 'Metadane', + desc: 'Etykietowanie metadanych dla dokumentów pozwala sztucznej inteligencji na dostęp do nich w odpowiednim czasie i ujawnia źródło odniesień dla użytkowników.', + dateTimeFormat: 'D MMMM YYYY, HH:mm', + docTypeSelectTitle: 'Wybierz rodzaj dokumentu', + docTypeChangeTitle: 'Zmień rodzaj dokumentu', + docTypeSelectWarning: + 'Jeśli zmieniony zostanie rodzaj dokumentu, teraz wypełnione metadane nie zostaną zachowane', + firstMetaAction: 'Zacznijmy', + placeholder: { + add: 'Dodaj ', + select: 'Wybierz ', + }, + source: { + upload_file: 'Wgraj plik', + notion: 'Synchronizuj z Notion', + github: 'Synchronizuj z Github', + }, + type: { + book: 'Książka', + webPage: 'Strona internetowa', + paper: 'Artykuł', + socialMediaPost: 'Post w mediach społecznościowych', + personalDocument: 'Dokument osobisty', + businessDocument: 'Dokument biznesowy', + IMChat: 'Czat na komunikatorze', + wikipediaEntry: 'Artykuł w Wikipedii', + notion: 'Synchronizuj z Notion', + github: 'Synchronizuj z Github', + technicalParameters: 'Parametry techniczne', + }, + field: { + processRule: { + processDoc: 'Przetwórz dokument', + segmentRule: 'Reguła fragmentacji', + segmentLength: 'Długość fragmentów', + processClean: 'Oczyszczanie tekstu', + }, + book: { + title: 'Tytuł', + language: 'Język', + author: 'Autor', + publisher: 'Wydawca', + publicationDate: 'Data publikacji', + ISBN: 'ISBN', + category: 'Kategoria', + }, + webPage: { + title: 'Tytuł', + url: 'URL', + language: 'Język', + authorPublisher: 'Autor/Wydawca', + publishDate: 'Data publikacji', + topicsKeywords: 'Tematy/Słowa kluczowe', + description: 'Opis', + }, + paper: { + title: 'Tytuł', + language: 'Język', + author: 'Autor', + publishDate: 'Data publikacji', + journalConferenceName: 'Nazwa czasopisma/konferencji', + volumeIssuePage: 'Tom/Wydanie/Strona', + DOI: 'DOI', + topicsKeywords: 'Tematy/Słowa kluczowe', + abstract: 'Abstrakt', + }, + socialMediaPost: { + platform: 'Platforma', + authorUsername: 'Autor/Nazwa użytkownika', + publishDate: 'Data publikacji', + postURL: 'Adres URL posta', + topicsTags: 'Tematy/Tagi', + }, + personalDocument: { + title: 'Tytuł', + author: 'Autor', + creationDate: 'Data utworzenia', + lastModifiedDate: 'Data ostatniej modyfikacji', + documentType: 'Typ dokumentu', + tagsCategory: 'Tagi/Kategoria', + }, + businessDocument: { + title: 'Tytuł', + author: 'Autor', + creationDate: 'Data utworzenia', + lastModifiedDate: 'Data ostatniej modyfikacji', + documentType: 'Typ dokumentu', + departmentTeam: 'Dział/Zespół', + }, + IMChat: { + chatPlatform: 'Platforma czatu', + chatPartiesGroupName: 'Podmioty czatu/Nazwa grupy', + participants: 'Uczestnicy', + startDate: 'Data rozpoczęcia', + endDate: 'Data zakończenia', + topicsKeywords: 'Tematy/Słowa kluczowe', + fileType: 'Typ pliku', + }, + wikipediaEntry: { + title: 'Tytuł', + language: 'Język', + webpageURL: 'Adres URL strony internetowej', + editorContributor: 'Edytor/Współtwórca', + lastEditDate: 'Data ostatniej edycji', + summaryIntroduction: 'Podsumowanie/Wstęp', + }, + notion: { + title: 'Tytuł', + language: 'Język', + author: 'Autor', + createdTime: 'Czas utworzenia', + lastModifiedTime: 'Czas ostatniej modyfikacji', + url: 'URL', + tag: 'Tag', + description: 'Opis', + }, + github: { + repoName: 'Nazwa repozytorium', + repoDesc: 'Opis repozytorium', + repoOwner: 'Właściciel repozytorium', + fileName: 'Nazwa pliku', + filePath: 'Ścieżka pliku', + programmingLang: 'Język programowania', + url: 'URL', + license: 'Licencja', + lastCommitTime: 'Czas ostatniego zobowiązania', + lastCommitAuthor: 'Autor ostatniego zobowiązania', + }, + originInfo: { + originalFilename: 'Oryginalna nazwa pliku', + originalFileSize: 'Oryginalny rozmiar pliku', + uploadDate: 'Data wgrywania', + lastUpdateDate: 'Data ostatniej aktualizacji', + source: 'Źródło', + }, + technicalParameters: { + segmentSpecification: 'Specyfikacja fragmentów', + segmentLength: 'Długość fragmentów', + avgParagraphLength: 'Średnia długość akapitu', + paragraphs: 'Akapity', + hitCount: 'Liczba odwołań', + embeddingTime: 'Czas embedowania', + embeddedSpend: 'Wydatki związane z embedowaniem', + }, + }, + languageMap: { + zh: 'Chiński', + en: 'Angielski', + es: 'Hiszpański', + fr: 'Francuski', + de: 'Niemiecki', + ja: 'Japoński', + ko: 'Koreański', + ru: 'Rosyjski', + ar: 'Arabski', + pt: 'Portugalski', + it: 'Włoski', + nl: 'Holenderski', + pl: 'Polski', + sv: 'Szwedzki', + tr: 'Turecki', + he: 'Hebrajski', + hi: 'Hinduski', + da: 'Duński', + fi: 'Fiński', + no: 'Norweski', + hu: 'Węgierski', + el: 'Grecki', + cs: 'Czeski', + th: 'Tajski', + id: 'Indonezyjski', + }, + categoryMap: { + book: { + fiction: 'Literatura piękna', + biography: 'Biografia', + history: 'Historia', + science: 'Nauka', + technology: 'Technologia', + education: 'Edukacja', + philosophy: 'Filozofia', + religion: 'Religia', + socialSciences: 'Nauki społeczne', + art: 'Sztuka', + travel: 'Podróże', + health: 'Zdrowie', + selfHelp: 'Samorozwój', + businessEconomics: 'Biznes/ekonomia', + cooking: 'Gotowanie', + childrenYoungAdults: 'Dzieci/Młodzież', + comicsGraphicNovels: 'Komiksy/Graphic Novels', + poetry: 'Poezja', + drama: 'Dramat', + other: 'Inne', + }, + personalDoc: { + notes: 'Notatki', + blogDraft: 'Wersja robocza bloga', + diary: 'Dziennik', + researchReport: 'Raport badawczy', + bookExcerpt: 'Fragment książki', + schedule: 'Harmonogram', + list: 'Lista', + projectOverview: 'Przegląd projektu', + photoCollection: 'Kolekcja zdjęć', + creativeWriting: 'Twórcze pisanie', + codeSnippet: 'Fragment kodu', + designDraft: 'Projekt/wersja robocza', + personalResume: 'CV', + other: 'Inne', + }, + businessDoc: { + meetingMinutes: 'Protokoły zebrań', + researchReport: 'Raport badawczy', + proposal: 'Propozycja', + employeeHandbook: 'Podręcznik pracownika', + trainingMaterials: 'Materiały szkoleniowe', + requirementsDocument: 'Dokument wymagań', + designDocument: 'Dokument projektowy', + productSpecification: 'Specyfikacja produktu', + financialReport: 'Raport finansowy', + marketAnalysis: 'Analiza rynku', + projectPlan: 'Plan projektu', + teamStructure: 'Struktura zespołu', + policiesProcedures: 'Zasady i procedury', + contractsAgreements: 'Umowy', + emailCorrespondence: 'Korespondencja e-mailowa', + other: 'Inne', + }, + }, + }, + embedding: { + processing: 'Przetwarzanie osadzania...', + paused: 'Osadzanie wstrzymane', + completed: 'Osadzanie zakończone', + error: 'Błąd osadzania', + docName: 'Przetwarzanie wstępne dokumentu', + mode: 'Reguła segmentacji', + segmentLength: 'Długość fragmentów', + textCleaning: 'Predefinicja tekstu i czyszczenie', + segments: 'Akapity', + highQuality: 'Tryb wysokiej jakości', + economy: 'Tryb ekonomiczny', + estimate: 'Szacowany czas', + stop: 'Zatrzymaj przetwarzanie', + resume: 'Wznów przetwarzanie', + automatic: 'Automatyczny', + custom: 'Niestandardowy', + previewTip: 'Podgląd akapitu będzie dostępny po zakończeniu osadzania', + }, + segment: { + paragraphs: 'Akapity', + keywords: 'Słowa kluczowe', + addKeyWord: 'Dodaj słowo kluczowe', + keywordError: 'Maksymalna długość słowa kluczowego wynosi 20', + characters: 'znaków', + hitCount: 'Liczba odwołań', + vectorHash: 'Wektor hash: ', + questionPlaceholder: 'dodaj pytanie tutaj', + questionEmpty: 'Pytanie nie może być puste', + answerPlaceholder: 'dodaj odpowiedź tutaj', + answerEmpty: 'Odpowiedź nie może być pusta', + contentPlaceholder: 'dodaj treść tutaj', + contentEmpty: 'Treść nie może być pusta', + newTextSegment: 'Nowy segment tekstowy', + newQaSegment: 'Nowy segment Q&A', + delete: 'Usunąć ten fragment?', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/dataset-hit-testing.ts b/web/i18n/pl-PL/dataset-hit-testing.ts new file mode 100644 index 000000000..25c6babc5 --- /dev/null +++ b/web/i18n/pl-PL/dataset-hit-testing.ts @@ -0,0 +1,28 @@ +const translation = { + title: 'Testowanie odzyskiwania', + desc: 'Przetestuj efekt uderzenia wiedzy na podstawie podanego tekstu zapytania.', + dateTimeFormat: 'MM/DD/YYYY hh:mm A', + recents: 'Ostatnie', + table: { + header: { + source: 'Źródło', + text: 'Tekst', + time: 'Czas', + }, + }, + input: { + title: 'Tekst źródłowy', + placeholder: 'Proszę wpisać tekst, zaleca się krótkie zdanie deklaratywne.', + countWarning: 'Do 200 znaków.', + indexWarning: 'Tylko wiedza wysokiej jakości.', + testing: 'Testowanie', + }, + hit: { + title: 'AKAPITY ODZYSKIWANIA', + emptyTip: 'Wyniki testowania odzyskiwania będą tu pokazane', + }, + noRecentTip: 'Brak ostatnich wyników zapytań tutaj', + viewChart: 'Zobacz WYKRES WEKTOROWY', +} + +export default translation diff --git a/web/i18n/pl-PL/dataset-settings.ts b/web/i18n/pl-PL/dataset-settings.ts new file mode 100644 index 000000000..06788f933 --- /dev/null +++ b/web/i18n/pl-PL/dataset-settings.ts @@ -0,0 +1,38 @@ +const translation = { + title: 'Ustawienia wiedzy', + desc: 'Tutaj możesz modyfikować właściwości i metody działania Wiedzy.', + form: { + name: 'Nazwa wiedzy', + namePlaceholder: 'Proszę wprowadzić nazwę wiedzy', + nameError: 'Nazwa nie może być pusta', + desc: 'Opis wiedzy', + descInfo: + 'Proszę napisać klarowny opis tekstowy, aby zarysować zawartość Wiedzy. Ten opis będzie wykorzystywany jako podstawa do dopasowywania podczas wyboru z wielu wiedz dla wnioskowania.', + descPlaceholder: + 'Opisz, co znajduje się w tej Wiedzy. Szczegółowy opis pozwala sztucznej inteligencji na dostęp do treści Wiedzy w odpowiednim czasie. Jeśli jest pusty, Dify użyje domyślnej strategii trafień.', + descWrite: 'Dowiedz się, jak napisać dobry opis Wiedzy.', + permissions: 'Uprawnienia', + permissionsOnlyMe: 'Tylko ja', + permissionsAllMember: 'Wszyscy członkowie zespołu', + indexMethod: 'Metoda indeksowania', + indexMethodHighQuality: 'Wysoka jakość', + indexMethodHighQualityTip: + 'Wywołaj interfejs wbudowywanie OpenAI do przetwarzania, aby zapewnić wyższą dokładność przy zapytaniach użytkowników.', + indexMethodEconomy: 'Ekonomiczna', + indexMethodEconomyTip: + 'Użyj silników wektorów offline, indeksów słów kluczowych itp., aby zmniejszyć dokładność bez wydawania tokenów', + embeddingModel: 'Model wbudowywania', + embeddingModelTip: 'Aby zmienić model wbudowywania, przejdź do ', + embeddingModelTipLink: 'Ustawienia', + retrievalSetting: { + title: 'Ustawienia doboru', + learnMore: 'Dowiedz się więcej', + description: ' dotyczące metody doboru.', + longDescription: + ' dotyczące metody doboru, możesz to zmienić w dowolnym momencie w ustawieniach wiedzy.', + }, + save: 'Zapisz', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/dataset.ts b/web/i18n/pl-PL/dataset.ts new file mode 100644 index 000000000..2401004a2 --- /dev/null +++ b/web/i18n/pl-PL/dataset.ts @@ -0,0 +1,55 @@ +const translation = { + knowledge: 'Wiedza', + documentCount: ' dokumenty', + wordCount: ' k słów', + appCount: ' powiązane aplikacje', + createDataset: 'Utwórz Wiedzę', + createDatasetIntro: + 'Zaimportuj własne dane tekstowe lub zapisuj dane w czasie rzeczywistym za pomocą Webhooka w celu wzmocnienia kontekstu LLM.', + deleteDatasetConfirmTitle: 'Czy na pewno usunąć tę Wiedzę?', + deleteDatasetConfirmContent: + 'Usunięcie Wiedzy jest nieodwracalne. Użytkownicy nie będą już mieli dostępu do Twojej Wiedzy, a wszystkie konfiguracje i logi zostaną trwale usunięte.', + datasetDeleted: 'Wiedza usunięta', + datasetDeleteFailed: 'Nie udało się usunąć Wiedzy', + didYouKnow: 'Czy wiedziałeś?', + intro1: 'Wiedzę można zintegrować z aplikacją Dify ', + intro2: 'jako kontekst', + intro3: ',', + intro4: 'lub ', + intro5: 'może być utworzona', + intro6: ' jako samodzielny wtyczka indeksująca ChatGPT do publikacji', + unavailable: 'Niedostępny', + unavailableTip: + 'Model osadzający jest niedostępny, domyślny model osadzający musi być skonfigurowany', + datasets: 'WIEDZA', + datasetsApi: 'DOSTĘP DO API', + retrieval: { + semantic_search: { + title: 'Wyszukiwanie wektorowe', + description: + 'Generowanie osadzeń zapytań i wyszukiwanie fragmentów tekstu najbardziej podobnych do ich wektorowej reprezentacji.', + }, + full_text_search: { + title: 'Wyszukiwanie pełnotekstowe', + description: + 'Indeksowanie wszystkich terminów w dokumencie, umożliwiając użytkownikom wyszukiwanie dowolnego terminu i odzyskiwanie odpowiedniego fragmentu tekstu zawierającego te terminy.', + }, + hybrid_search: { + title: 'Wyszukiwanie hybrydowe', + description: + 'Wykonaj jednocześnie pełnotekstowe wyszukiwanie i wyszukiwanie wektorowe, ponownie porządkuj, aby wybrać najlepsze dopasowanie dla zapytania użytkownika. Konieczna jest konfiguracja API Rerank model.', + recommend: 'Polecany', + }, + invertedIndex: { + title: 'Indeks odwrócony', + description: + 'Indeks odwrócony to struktura używana do efektywnego odzyskiwania informacji. Zorganizowane według terminów, każdy termin wskazuje na dokumenty lub strony internetowe zawierające go.', + }, + change: 'Zmień', + changeRetrievalMethod: 'Zmień metodę odzyskiwania', + }, + docsFailedNotice: 'nie udało się zindeksować dokumentów', + retry: 'Ponów', +} + +export default translation diff --git a/web/i18n/pl-PL/explore.ts b/web/i18n/pl-PL/explore.ts new file mode 100644 index 000000000..052eb303b --- /dev/null +++ b/web/i18n/pl-PL/explore.ts @@ -0,0 +1,42 @@ +const translation = { + title: 'Odkryj', + sidebar: { + discovery: 'Odkrywanie', + chat: 'Czat', + workspace: 'Przestrzeń robocza', + action: { + pin: 'Przypnij', + unpin: 'Odepnij', + rename: 'Zmień nazwę', + delete: 'Usuń', + }, + delete: { + title: 'Usuń aplikację', + content: 'Czy na pewno chcesz usunąć tę aplikację?', + }, + }, + apps: { + title: 'Odkrywaj aplikacje stworzone przez Dify', + description: + 'Wykorzystaj te aplikacje szablonowe natychmiast lub dostosuj własne aplikacje na podstawie szablonów.', + allCategories: 'Polecane', + }, + appCard: { + addToWorkspace: 'Dodaj do przestrzeni roboczej', + customize: 'Dostosuj', + }, + appCustomize: { + title: 'Utwórz aplikację z {{name}}', + subTitle: 'Ikona i nazwa aplikacji', + nameRequired: 'Nazwa aplikacji jest wymagana', + }, + category: { + Assistant: 'Asystent', + Writing: 'Pisanie', + Translate: 'Tłumaczenie', + Programming: 'Programowanie', + HR: 'HR', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/layout.ts b/web/i18n/pl-PL/layout.ts new file mode 100644 index 000000000..928649474 --- /dev/null +++ b/web/i18n/pl-PL/layout.ts @@ -0,0 +1,4 @@ +const translation = { +} + +export default translation diff --git a/web/i18n/pl-PL/login.ts b/web/i18n/pl-PL/login.ts new file mode 100644 index 000000000..b629ee598 --- /dev/null +++ b/web/i18n/pl-PL/login.ts @@ -0,0 +1,66 @@ +const translation = { + pageTitle: 'Cześć, zaczynajmy!👋', + welcome: 'Witaj w Dify, zaloguj się, aby kontynuować.', + email: 'Adres e-mail', + emailPlaceholder: 'Twój adres e-mail', + password: 'Hasło', + passwordPlaceholder: 'Twoje hasło', + name: 'Nazwa użytkownika', + namePlaceholder: 'Twoja nazwa użytkownika', + forget: 'Zapomniałeś hasła?', + signBtn: 'Zaloguj się', + sso: 'Kontynuuj za pomocą SSO', + installBtn: 'Ustaw', + setAdminAccount: 'Ustawianie konta administratora', + setAdminAccountDesc: + 'Maksymalne uprawnienia dla konta administratora, które można użyć do tworzenia aplikacji i zarządzania dostawcami LLM, itp.', + createAndSignIn: 'Utwórz i zaloguj się', + oneMoreStep: 'Jeszcze jeden krok', + createSample: + 'Na podstawie tych informacji, utworzymy dla Ciebie przykładową aplikację', + invitationCode: 'Kod zaproszenia', + invitationCodePlaceholder: 'Twój kod zaproszenia', + interfaceLanguage: 'Język interfejsu', + timezone: 'Strefa czasowa', + go: 'Przejdź do Dify', + sendUsMail: + 'Wyślij nam e-mail z swoim wstępem, a my zajmiemy się prośbą o zaproszenie.', + acceptPP: 'Przeczytałem/am i akceptuję politykę prywatności', + reset: 'Uruchom poniższą komendę, aby zresetować swoje hasło', + withGitHub: 'Kontynuuj za pomocą GitHub', + withGoogle: 'Kontynuuj za pomocą Google', + rightTitle: 'Odblokuj pełny potencjał LLM', + rightDesc: + 'Łatwo buduj wizualnie atrakcyjne, działające i udoskonalane aplikacje AI.', + tos: 'Warunki świadczenia usług', + pp: 'Polityka prywatności', + tosDesc: 'Założeniem konta zgadzasz się z naszymi', + goToInit: 'Jeśli nie zainicjowałeś konta, przejdź do strony inicjalizacji', + donthave: 'Nie masz?', + invalidInvitationCode: 'Niewłaściwy kod zaproszenia', + accountAlreadyInited: 'Konto już zainicjowane', + error: { + emailEmpty: 'Adres e-mail jest wymagany', + emailInValid: 'Proszę wpisać prawidłowy adres e-mail', + nameEmpty: 'Nazwa jest wymagana', + passwordEmpty: 'Hasło jest wymagane', + passwordInvalid: + 'Hasło musi zawierać litery i cyfry, a jego długość musi być większa niż 8', + }, + license: { + tip: 'Przed rozpoczęciem wersji społecznościowej Dify, przeczytaj GitHub', + link: 'Licencję open-source', + }, + join: 'Dołącz', + joinTipStart: 'Zapraszam Cię do dołączenia do', + joinTipEnd: 'zespołu na Dify', + invalid: 'Link wygasł', + explore: 'Odkryj Dify', + activatedTipStart: 'Dołączyłeś do', + activatedTipEnd: 'zespołu', + activated: 'Zaloguj się teraz', + adminInitPassword: 'Hasło inicjalizacyjne administratora', + validate: 'Sprawdź', +} + +export default translation diff --git a/web/i18n/pl-PL/register.ts b/web/i18n/pl-PL/register.ts new file mode 100644 index 000000000..928649474 --- /dev/null +++ b/web/i18n/pl-PL/register.ts @@ -0,0 +1,4 @@ +const translation = { +} + +export default translation diff --git a/web/i18n/pl-PL/run-log.ts b/web/i18n/pl-PL/run-log.ts new file mode 100644 index 000000000..a13405753 --- /dev/null +++ b/web/i18n/pl-PL/run-log.ts @@ -0,0 +1,29 @@ +const translation = { + input: 'WEJŚCIE', + result: 'WYNIK', + detail: 'SZCZEGÓŁY', + tracing: 'ŚLEDZENIE', + resultPanel: { + status: 'STATUS', + time: 'CZAS WYKONANIA', + tokens: 'CAŁKOWITA LICZBA TOKENÓW', + }, + meta: { + title: 'METADANE', + status: 'Status', + version: 'Wersja', + executor: 'Wykonawca', + startTime: 'Czas rozpoczęcia', + time: 'Czas trwania', + tokens: 'Liczba tokenów', + steps: 'Kroki wykonania', + }, + resultEmpty: { + title: 'To wykonanie generuje tylko format JSON,', + tipLeft: 'proszę przejdź do ', + link: 'panelu szczegółów', + tipRight: ' aby je zobaczyć.', + }, +} + +export default translation diff --git a/web/i18n/pl-PL/share-app.ts b/web/i18n/pl-PL/share-app.ts new file mode 100644 index 000000000..d286a9c90 --- /dev/null +++ b/web/i18n/pl-PL/share-app.ts @@ -0,0 +1,75 @@ +const translation = { + common: { + welcome: 'Witaj w użyciu', + appUnavailable: 'Aplikacja jest niedostępna', + appUnkonwError: 'Aplikacja jest niedostępna', + }, + chat: { + newChat: 'Nowy czat', + pinnedTitle: 'Przypięte', + unpinnedTitle: 'Czaty', + newChatDefaultName: 'Nowa rozmowa', + resetChat: 'Resetuj rozmowę', + powerBy: 'Działany przez', + prompt: 'Podpowiedź', + privatePromptConfigTitle: 'Ustawienia rozmowy', + publicPromptConfigTitle: 'Początkowa podpowiedź', + configStatusDes: + 'Przed rozpoczęciem możesz zmodyfikować ustawienia rozmowy', + configDisabled: 'Ustawienia poprzedniej sesji zostały użyte w tej sesji.', + startChat: 'Zacznij czat', + privacyPolicyLeft: 'Proszę przeczytać ', + privacyPolicyMiddle: 'politykę prywatności', + privacyPolicyRight: ' dostarczoną przez dewelopera aplikacji.', + deleteConversation: { + title: 'Usuń rozmowę', + content: 'Czy na pewno chcesz usunąć tę rozmowę?', + }, + tryToSolve: 'Spróbuj rozwiązać', + temporarySystemIssue: 'Przepraszamy, tymczasowy problem systemowy.', + }, + generation: { + tabs: { + create: 'Uruchom raz', + batch: 'Uruchom partię', + saved: 'Zapisane', + }, + savedNoData: { + title: 'Nie zapisałeś jeszcze wyniku!', + description: + 'Zacznij generować treść i znajdź swoje zapisane wyniki tutaj.', + startCreateContent: 'Zacznij tworzyć treść', + }, + title: 'Uzupełnianie AI', + queryTitle: 'Zapytaj o treść', + completionResult: 'Wynik uzupełnienia', + queryPlaceholder: 'Wpisz swoją treść zapytania...', + run: 'Wykonaj', + copy: 'Kopiuj', + resultTitle: 'Uzupełnianie AI', + noData: 'AI poda Ci to, czego chcesz tutaj.', + csvUploadTitle: 'Przeciągnij i upuść plik CSV tutaj lub ', + browse: 'przeglądaj', + csvStructureTitle: 'Plik CSV musi być zgodny z następującą strukturą:', + downloadTemplate: 'Pobierz szablon tutaj', + field: 'Pole', + batchFailed: { + info: '{{num}} nieudanych wykonan', + retry: 'Powtórz', + outputPlaceholder: 'Brak treści wyjściowej', + }, + errorMsg: { + empty: 'Proszę wprowadź treść w załadowanym pliku.', + fileStructNotMatch: 'Załadowany plik CSV nie pasuje do struktury.', + emptyLine: 'Wiersz {{rowIndex}} jest pusty', + invalidLine: + 'Wiersz {{rowIndex}}: wartość {{varName}} nie może być pusta', + moreThanMaxLengthLine: + 'Wiersz {{rowIndex}}: wartość {{varName}} nie może mieć więcej niż {{maxLength}} znaków', + atLeastOne: + 'Proszę wprowadź co najmniej jeden wiersz w załadowanym pliku.', + }, + }, +} + +export default translation diff --git a/web/i18n/pl-PL/tools.ts b/web/i18n/pl-PL/tools.ts new file mode 100644 index 000000000..6de77304d --- /dev/null +++ b/web/i18n/pl-PL/tools.ts @@ -0,0 +1,119 @@ +const translation = { + title: 'Narzędzia', + createCustomTool: 'Utwórz niestandardowe narzędzie', + type: { + all: 'Wszystkie', + builtIn: 'Wbudowane', + custom: 'Niestandardowe', + }, + contribute: { + line1: 'Interesuje mnie ', + line2: 'współtworzenie narzędzi dla Dify.', + viewGuide: 'Zobacz przewodnik', + }, + author: 'Przez', + auth: { + unauthorized: 'Autoryzacja', + authorized: 'Zautoryzowane', + setup: 'Skonfiguruj autoryzację aby użyć', + setupModalTitle: 'Konfiguruj autoryzację', + setupModalTitleDescription: + 'Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą używać tego narzędzia podczas projektowania aplikacji.', + }, + includeToolNum: '{{num}} narzędzi zawarte', + addTool: 'Dodaj narzędzie', + createTool: { + title: 'Utwórz niestandardowe narzędzie', + editAction: 'Konfiguruj', + editTitle: 'Edytuj niestandardowe narzędzie', + name: 'Nazwa', + toolNamePlaceHolder: 'Wprowadź nazwę narzędzia', + schema: 'Schemat', + schemaPlaceHolder: 'Wprowadź tutaj swój schemat OpenAPI', + viewSchemaSpec: 'Zobacz specyfikację OpenAPI-Swagger', + importFromUrl: 'Importuj z adresu URL', + importFromUrlPlaceHolder: 'https://...', + urlError: 'Proszę podać prawidłowy URL', + examples: 'Przykłady', + exampleOptions: { + json: 'Pogoda (JSON)', + yaml: 'Sklep Zoologiczny (YAML)', + blankTemplate: 'Pusty szablon', + }, + availableTools: { + title: 'Dostępne narzędzia', + name: 'Nazwa', + description: 'Opis', + method: 'Metoda', + path: 'Ścieżka', + action: 'Akcje', + test: 'Test', + }, + authMethod: { + title: 'Metoda autoryzacji', + type: 'Typ autoryzacji', + keyTooltip: + 'Klucz nagłówka HTTP, Możesz pozostawić go z "Autoryzacja" jeśli nie wiesz co to jest lub ustaw go na niestandardową wartość', + types: { + none: 'Brak', + api_key: 'Klucz API', + apiKeyPlaceholder: 'Nazwa nagłówka HTTP dla Klucza API', + apiValuePlaceholder: 'Wprowadź Klucz API', + }, + key: 'Klucz', + value: 'Wartość', + }, + authHeaderPrefix: { + title: 'Typ autoryzacji', + types: { + basic: 'Podstawowa', + bearer: 'Bearer', + custom: 'Niestandardowa', + }, + }, + privacyPolicy: 'Polityka prywatności', + privacyPolicyPlaceholder: 'Proszę wprowadzić politykę prywatności', + }, + test: { + title: 'Test', + parametersValue: 'Parametry i Wartość', + parameters: 'Parametry', + value: 'Wartość', + testResult: 'Wyniki testu', + testResultPlaceholder: 'Wynik testu pojawi się tutaj', + }, + thought: { + using: 'Używanie', + used: 'Użyty', + requestTitle: 'Żądanie do', + responseTitle: 'Odpowiedź od', + }, + setBuiltInTools: { + info: 'Informacje', + setting: 'Ustawienia', + toolDescription: 'Opis narzędzia', + parameters: 'parametry', + string: 'ciąg znaków', + number: 'liczba', + required: 'Wymagane', + infoAndSetting: 'Informacje i Ustawienia', + }, + noCustomTool: { + title: 'Brak niestandardowych narzędzi!', + content: + 'Dodaj i zarządzaj niestandardowymi narzędziami tutaj, aby budować aplikacje AI.', + createTool: 'Utwórz Narzędzie', + }, + noSearchRes: { + title: 'Przykro nam, brak wyników!', + content: + 'Nie znaleźliśmy żadnych narzędzi pasujących do Twojego wyszukiwania.', + reset: 'Resetuj Wyszukiwanie', + }, + builtInPromptTitle: 'Komunikat', + toolRemoved: 'Narzędzie usunięte', + notAuthorized: 'Narzędzie nieautoryzowane', + howToGet: 'Jak uzyskać', +} + +export default translation diff --git a/web/i18n/pl-PL/workflow.ts b/web/i18n/pl-PL/workflow.ts new file mode 100644 index 000000000..c40857584 --- /dev/null +++ b/web/i18n/pl-PL/workflow.ts @@ -0,0 +1,354 @@ +const translation = { + common: { + editing: 'Edytowanie', + autoSaved: 'Autozapisano', + unpublished: 'Nieopublikowany', + published: 'Opublikowany', + publish: 'Opublikuj', + update: 'Aktualizuj', + run: 'Uruchom', + running: 'Uruchamianie', + inRunMode: 'W trybie Uruchom', + inPreview: 'Podgląd', + inPreviewMode: 'W trybie Podgląd', + preview: 'Podgląd', + viewRunHistory: 'Zobacz historię uruchomień', + runHistory: 'Historia Uruchomień', + goBackToEdit: 'Wróć do edytora', + conversationLog: 'Dziennik Konwersacji', + features: 'Funkcje', + debugAndPreview: 'Debugowanie i Podgląd', + restart: 'Uruchom Ponownie', + currentDraft: 'Aktualny Szkic', + currentDraftUnpublished: 'Aktualny Szkic Nieopublikowany', + latestPublished: 'Ostatnio Opublikowany', + publishedAt: 'Opublikowany', + restore: 'Przywróć', + runApp: 'Uruchom Aplikację', + batchRunApp: 'Uruchom Aplikację Partiami', + accessAPIReference: 'Dostęp do Referencji API', + embedIntoSite: 'Osadź na Stronie', + addTitle: 'Dodaj tytuł...', + addDescription: 'Dodaj opis...', + noVar: 'Brak zmiennej', + searchVar: 'Szukaj zmiennej', + variableNamePlaceholder: 'Nazwa zmiennej', + setVarValuePlaceholder: 'Ustaw zmienną', + needConnecttip: 'Ten krok nie jest połączony z niczym', + maxTreeDepth: 'Maksymalny limit {{depth}} węzłów na gałąź', + needEndNode: 'Należy dodać Blok Końcowy', + needAnswerNode: 'Należy dodać Blok Odpowiedzi', + workflowProcess: 'Proces Przepływu', + notRunning: 'Nie uruchamiany jeszcze', + previewPlaceholder: 'Wprowadź treść w poniższym polu, aby rozpocząć debugowanie Chatbota', + effectVarConfirm: { + title: 'Usuń Zmienną', + content: 'Zmienna jest używana w innych węzłach. Czy nadal chcesz ją usunąć?', + }, + insertVarTip: 'Naciśnij klawisz \'/\' aby szybko wstawić', + processData: 'Przetwarzaj Dane', + input: 'Wejście', + output: 'Wyjście', + jinjaEditorPlaceholder: 'Wprowadź \'/\' lub \'{\' aby wstawić zmienną', + viewOnly: 'Tylko Podgląd', + showRunHistory: 'Pokaż Historię Uruchomień', + enableJinja: 'Włącz wsparcie dla szablonów Jinja', + learnMore: 'Czytaj więcej', + }, + errorMsg: { + fieldRequired: '{{field}} jest wymagane', + authRequired: 'Autoryzacja jest wymagana', + invalidJson: '{{field}} jest nieprawidłowy JSON', + fields: { + variable: 'Nazwa Zmiennej', + variableValue: 'Wartość Zmiennej', + code: 'Kod', + model: 'Model', + rerankModel: 'Model Ponownej Klasyfikacji', + }, + invalidVariable: 'Nieprawidłowa zmienna', + }, + singleRun: { + testRun: 'Testuj Uruchomienie ', + startRun: 'Uruchomienie', + running: 'Uruchamianie', + }, + tabs: { + 'searchBlock': 'Szukaj Bloku', + 'blocks': 'Bloki', + 'builtInTool': 'Wbudowany Narzędzie', + 'customTool': 'Niestandardowe Narzędzie', + 'question-understand': 'Zrozumienie Pytania', + 'logic': 'Logika', + 'transform': 'Transformacja', + 'utilities': 'Użyteczność', + 'noResult': 'Brak pasujących wyników', + }, + blocks: { + 'start': 'Start', + 'end': 'Koniec', + 'answer': 'Odpowiedź', + 'llm': 'LLM', + 'knowledge-retrieval': 'Odzyskiwanie Wiedzy', + 'question-classifier': 'Klasyfikator Pytań', + 'if-else': 'IF/ELSE', + 'code': 'Kod', + 'template-transform': 'Szablon', + 'http-request': 'Żądanie HTTP', + 'variable-assigner': 'Przypisywacz Zmiennych', + }, + blocksAbout: { + 'start': 'Definiuje początkowe parametry uruchamiania przepływu', + 'end': 'Definiuje koniec i typ wyniku przepływu', + 'answer': 'Definiuje treść odpowiedzi w rozmowie czatowej', + 'llm': 'Wywołuje duże modele językowe do odpowiedzi na pytania lub przetwarzania języka naturalnego', + 'knowledge-retrieval': 'Pozwala na wyszukiwanie treści tekstowych związanych z pytaniami użytkowników z Wiedzy', + 'question-classifier': 'Definiuje warunki klasyfikacji pytań użytkowników, LLM może określić, jak postępuje rozmowa na podstawie opisu klasyfikacji', + 'if-else': 'Pozwala na podział przepływu na dwie gałęzie na podstawie warunków if/else', + 'code': 'Wykonuje fragment kodu Pythona lub NodeJS w celu zastosowania niestandardowej logiki', + 'template-transform': 'Konwertuje dane na ciąg za pomocą składni szablonu Jinja', + 'http-request': 'Pozwala na wysyłanie żądań serwera za pośrednictwem protokołu HTTP', + 'variable-assigner': 'Przypisuje zmienne w różnych gałęziach do tej samej zmiennej w celu uzyskania zharmonizowanej konfiguracji post-węzłów', + }, + operator: { + zoomIn: 'Powiększ', + zoomOut: 'Pomniejsz', + zoomTo50: 'Powiększ do 50%', + zoomTo100: 'Powiększ do 100%', + zoomToFit: 'Dopasuj do rozmiaru', + }, + panel: { + userInputField: 'Pole Wejściowe Użytkownika', + changeBlock: 'Zmień Blok', + helpLink: 'Link Pomocniczy', + about: 'O Autorze', + createdBy: 'Utworzone przez', + nextStep: 'Następny Krok', + addNextStep: 'Dodaj następny blok w tym przepływie', + selectNextStep: 'Wybierz Następny Blok', + runThisStep: 'Uruchom ten krok', + checklist: 'Lista kontrolna', + checklistTip: 'Upewnij się, że wszystkie problemy są rozwiązane przed opublikowaniem', + checklistResolved: 'Wszystkie problemy zostały rozwiązane', + organizeBlocks: 'Organizuj bloki', + change: 'Zmień', + }, + nodes: { + common: { + outputVars: 'Zmienne Wyjściowe', + insertVarTip: 'Wstaw Zmienną', + memory: { + memory: 'Pamięć', + memoryTip: 'Ustawienia pamięci czatu', + windowSize: 'Rozmiar Okna', + conversationRoleName: 'Nazwa Roli Konwersacji', + user: 'Prefiks użytkownika', + assistant: 'Prefiks asystenta', + }, + memories: { + title: 'Wspomnienia', + tip: 'Pamięć czatu', + builtIn: 'Wbudowane', + }, + }, + start: { + required: 'wymagane', + inputField: 'Pole Wejściowe', + builtInVar: 'Zmienne Wbudowane', + outputVars: { + query: 'Wejście użytkownika', + memories: { + des: 'Historia rozmowy', + type: 'typ wiadomości', + content: 'treść wiadomości', + }, + files: 'Lista plików', + }, + noVarTip: 'Ustaw wejścia, które można użyć w Przepływie', + }, + end: { + outputs: 'Wyjścia', + output: { + type: 'typ wyjścia', + variable: 'zmienna wyjścia', + }, + type: { + 'none': 'Brak', + 'plain-text': 'Tekst Prosty', + 'structured': 'Strukturyzowany', + }, + }, + answer: { + answer: 'Odpowiedź', + outputVars: 'Zmienne Wyjściowe', + }, + llm: { + model: 'model', + variables: 'zmienne', + context: 'kontekst', + contextTooltip: 'Możesz zaimportować Wiedzę jako kontekst', + notSetContextInPromptTip: 'Aby włączyć funkcję kontekstu, proszę wypełnić zmienną kontekstu w PROMPT.', + prompt: 'prompt', + roleDescription: { + system: 'Daj instrukcje na wysokim poziomie dla rozmowy', + user: 'Dostarcz instrukcje, zapytania lub jakiekolwiek wejście oparte na tekście do modelu', + assistant: 'Odpowiedzi modelu na wiadomości użytkownika', + }, + addMessage: 'Dodaj Wiadomość', + vision: 'wizja', + files: 'Pliki', + resolution: { + name: 'Rozdzielczość', + high: 'Wysoka', + low: 'Niska', + }, + outputVars: { + output: 'Generuj zawartość', + usage: 'Informacje o użyciu modelu', + }, + singleRun: { + variable: 'Zmienna', + }, + sysQueryInUser: 'sys.query w wiadomości użytkownika jest wymagane', + }, + knowledgeRetrieval: { + queryVariable: 'Zmienna Zapytania', + knowledge: 'Wiedza', + outputVars: { + output: 'Odzyskane dane podzielone', + content: 'Zawartość podzielona', + title: 'Tytuł podzielony', + icon: 'Ikona podzielona', + url: 'URL podzielony', + metadata: 'Inne metadane', + }, + }, + http: { + inputVars: 'Zmienne Wejściowe', + api: 'API', + apiPlaceholder: 'Wprowadź URL, wpisz \'/\' aby wstawić zmienną', + notStartWithHttp: 'API powinno rozpoczynać się od http:// lub https://', + key: 'Klucz', + value: 'Wartość', + bulkEdit: 'Edycja Masowa', + keyValueEdit: 'Edycja Klucz-Wartość', + headers: 'Nagłówki', + params: 'Parametry', + body: 'Treść', + outputVars: { + body: 'Zawartość Odpowiedzi', + statusCode: 'Kod Stanu Odpowiedzi', + headers: 'Lista Nagłówków Odpowiedzi w formacie JSON', + files: 'Lista plików', + }, + authorization: { + 'authorization': 'Autoryzacja', + 'authorizationType': 'Typ Autoryzacji', + 'no-auth': 'Brak', + 'api-key': 'Klucz API', + 'auth-type': 'Typ Autoryzacji', + 'basic': 'Podstawowa', + 'bearer': 'Bearer', + 'custom': 'Niestandardowa', + 'api-key-title': 'Klucz API', + 'header': 'Nagłówek', + }, + insertVarPlaceholder: 'wpisz \'/\' aby wstawić zmienną', + timeout: { + title: 'Limit czasu', + connectLabel: 'Limit czasu połączenia', + connectPlaceholder: 'Wprowadź limit czasu połączenia w sekundach', + readLabel: 'Limit czasu odczytu', + readPlaceholder: 'Wprowadź limit czasu odczytu w sekundach', + writeLabel: 'Limit czasu zapisu', + writePlaceholder: 'Wprowadź limit czasu zapisu w sekundach', + }, + }, + code: { + inputVars: 'Zmienne Wejściowe', + outputVars: 'Zmienne Wyjściowe', + }, + templateTransform: { + inputVars: 'Zmienne Wejściowe', + code: 'Kod', + codeSupportTip: 'Obsługuje tylko Jinja2', + outputVars: { + output: 'Przekształcona zawartość', + }, + }, + ifElse: { + if: 'Jeśli', + else: 'W przeciwnym razie', + elseDescription: 'Służy do zdefiniowania logiki, która powinna być wykonana, gdy warunek if nie jest spełniony.', + and: 'i', + or: 'lub', + operator: 'Operator', + notSetVariable: 'Najpierw ustaw zmienną', + comparisonOperator: { + 'contains': 'zawiera', + 'not contains': 'nie zawiera', + 'start with': 'zaczyna się od', + 'end with': 'kończy się na', + 'is': 'jest', + 'is not': 'nie jest', + 'empty': 'jest pusty', + 'not empty': 'nie jest pusty', + 'null': 'jest pusty', + 'not null': 'nie jest pusty', + }, + enterValue: 'Wprowadź wartość', + addCondition: 'Dodaj Warunek', + conditionNotSetup: 'Warunek NIE jest ustawiony', + }, + variableAssigner: { + title: 'Przypisz zmienne', + outputType: 'Typ Wyjścia', + outputVarType: 'Typ Zmiennej Wyjściowej', + varNotSet: 'Zmienna nieustawiona', + noVarTip: 'Dodaj zmienne do przypisania', + type: { + string: 'Tekst', + number: 'Liczba', + object: 'Obiekt', + array: 'Tablica', + }, + outputVars: { + output: 'Wartość zmiennej przypisanej', + }, + }, + tool: { + toAuthorize: 'Aby autoryzować', + inputVars: 'Zmienne Wejściowe', + outputVars: { + text: 'wygenerowana zawartość narzędzia', + files: { + title: 'wygenerowane pliki narzędzia', + type: 'Typ wsparcia. Obecnie obsługuje tylko obraz', + transfer_method: 'Metoda transferu. Wartość to remote_url lub local_file', + url: 'URL obrazu', + upload_file_id: 'Identyfikator przesyłanego pliku', + }, + }, + }, + questionClassifiers: { + model: 'model', + inputVars: 'Zmienne Wejściowe', + outputVars: { + className: 'Nazwa Klasy', + }, + class: 'Klasa', + classNamePlaceholder: 'Wpisz nazwę swojej klasy', + advancedSetting: 'Ustawienia Zaawansowane', + topicName: 'Nazwa Tematu', + topicPlaceholder: 'Wpisz nazwę swojego tematu', + addClass: 'Dodaj Klasę', + instruction: 'Instrukcja', + instructionPlaceholder: 'Wpisz swoją instrukcję', + }, + }, + tracing: { + stopBy: 'Zatrzymano przez {{user}}', + }, +} + +export default translation