diff --git a/Gemfile b/Gemfile index 7d9d05496..de23ef7d8 100644 --- a/Gemfile +++ b/Gemfile @@ -69,6 +69,7 @@ gem "faraday-multipart" gem "inline_svg" gem "octokit" gem "pagy" +gem "rails-i18n" gem "rails-settings-cached" gem "tzinfo-data", platforms: %i[windows jruby] gem "csv" diff --git a/Gemfile.lock b/Gemfile.lock index 7489b5e36..6770a8e66 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -839,6 +839,7 @@ DEPENDENCIES rack-cors rack-mini-profiler rails (~> 7.2.2) + rails-i18n rails-settings-cached rchardet redcarpet diff --git a/app/controllers/snaptrade_items_controller.rb b/app/controllers/snaptrade_items_controller.rb index c16eeb011..f02d5a155 100644 --- a/app/controllers/snaptrade_items_controller.rb +++ b/app/controllers/snaptrade_items_controller.rb @@ -221,8 +221,9 @@ class SnaptradeItemsController < ApplicationController if errors.any? # Partial success - some linked, some failed - redirect_to accounts_path, notice: t(".partial_success", linked: linked_count, failed: errors.size, - default: "Linked #{linked_count} account(s). #{errors.size} failed to link.") + redirect_to accounts_path, + notice: t(".partial_success", count: linked_count, failed_count: errors.size, + default: "Linked #{linked_count} account(s). #{errors.size} failed to link.") else redirect_to accounts_path, notice: t(".success", count: linked_count, default: "Successfully linked #{linked_count} account(s).") end diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb index 0320033c7..6f451d4a4 100644 --- a/app/helpers/languages_helper.rb +++ b/app/helpers/languages_helper.rb @@ -155,18 +155,19 @@ module LanguagesHelper # Locales with complete/extensive translations SUPPORTED_LOCALES = [ - "en", # English - 71 translation files - "fr", # French - 61 translation files - "de", # German - 62 translation files - "es", # Spanish - 61 translation files - "tr", # Turkish - 58 translation files - "nb", # Norwegian Bokmål - 57 translation files - "ca", # Catalan - 57 translation files - "ro", # Romanian - 62 translation files - "pt-BR", # Brazilian Portuguese - 60 translation files - "zh-CN", # Chinese (Simplified) - 59 translation files - "zh-TW", # Chinese (Traditional) - 63 translation files - "nl" # Dutch - 73 translation files + "en", # English + "fr", # French + "de", # German + "es", # Spanish + "tr", # Turkish + "nb", # Norwegian Bokmål + "ca", # Catalan + "ro", # Romanian + "pl", # Polish + "pt-BR", # Brazilian Portuguese + "zh-CN", # Chinese (Simplified) + "zh-TW", # Chinese (Traditional) + "nl" # Dutch ].freeze COUNTRY_MAPPING = { diff --git a/app/views/import/confirms/show.html.erb b/app/views/import/confirms/show.html.erb index e8fe1a47c..269aca93e 100644 --- a/app/views/import/confirms/show.html.erb +++ b/app/views/import/confirms/show.html.erb @@ -55,7 +55,7 @@ <%= t(".#{step_mapping_class.name.demodulize.underscore}_title", import_type: @import.type.underscore.humanize) %>
- <%= t(".#{step_mapping_class.name.demodulize.underscore}_description", import_type: @import.type.underscore.humanize, product_name: product_name) %> + <%= t(".#{step_mapping_class.name.demodulize.underscore}_description", import_type: @import.type.underscore.humanize, product: product_name) %>
diff --git a/app/views/subscriptions/upgrade.html.erb b/app/views/subscriptions/upgrade.html.erb index e0c86ec6b..0c600cf99 100644 --- a/app/views/subscriptions/upgrade.html.erb +++ b/app/views/subscriptions/upgrade.html.erb @@ -25,7 +25,7 @@ <%= image_tag "logo-color.png", class: "w-16 mb-6" %> <% if Current.family.trialing? %> -<%= t("subscriptions.upgrade.trialing", days: Current.family.days_left_in_trial) %>
+<%= t("subscriptions.upgrade.trialing", count: Current.family.days_left_in_trial, days: Current.family.days_left_in_trial) %>
<% else %><%= t("subscriptions.upgrade.trial_over") %>
<% end %> diff --git a/config/locales/breadcrumbs/pl.yml b/config/locales/breadcrumbs/pl.yml new file mode 100644 index 000000000..5d4755451 --- /dev/null +++ b/config/locales/breadcrumbs/pl.yml @@ -0,0 +1,6 @@ +--- +pl: + breadcrumbs: + exports: Eksporty + home: Strona główna + imports: Importy diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml new file mode 100644 index 000000000..a561c3b7d --- /dev/null +++ b/config/locales/doorkeeper.pl.yml @@ -0,0 +1,153 @@ +pl: + activerecord: + attributes: + doorkeeper/application: + name: "Nazwa" + redirect_uri: "URI przekierowania" + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: "nie może zawierać fragmentu." + invalid_uri: "musi być poprawnym URI." + unspecified_scheme: "musi określać schemat." + relative_uri: "musi być bezwzględnym URI." + secured_uri: "musi być URI HTTPS/SSL." + forbidden_uri: "jest zabronione przez serwer." + scopes: + not_match_configured: "nie odpowiada zakresom skonfigurowanym na serwerze." + + doorkeeper: + applications: + confirmations: + destroy: "Czy na pewno?" + buttons: + edit: "Edytuj" + destroy: "Usuń" + submit: "Zapisz" + cancel: "Anuluj" + authorize: "Autoryzuj" + form: + error: "Ups! Sprawdź formularz pod kątem możliwych błędów" + help: + confidential: "Aplikacja będzie używana tam, gdzie sekret klienta może pozostać poufny. Natywne aplikacje mobilne i aplikacje Single Page App są uznawane za niepoufne." + redirect_uri: "Użyj jednej linii dla każdego URI" + blank_redirect_uri: "Pozostaw puste, jeśli skonfigurowano dostawcę do użycia Client Credentials, Resource Owner Password Credentials lub innego typu grant, który nie wymaga URI przekierowania." + scopes: "Oddzielaj zakresy spacjami. Pozostaw puste, aby użyć domyślnych zakresów." + edit: + title: "Edytuj aplikację" + index: + title: "Twoje aplikacje" + new: "Nowa aplikacja" + name: "Nazwa" + callback_url: "URL callback" + confidential: "Poufna?" + actions: "Akcje" + confidentiality: + "yes": "Tak" + "no": "Nie" + new: + title: "Nowa aplikacja" + show: + title: "Aplikacja: %{name}" + application_id: "UID" + secret: "Sekret" + secret_hashed: "Zahaszowany sekret" + scopes: "Zakresy" + confidential: "Poufna" + callback_urls: "URL-e callback" + actions: "Akcje" + not_defined: "Nie zdefiniowano" + + authorizations: + buttons: + authorize: "Autoryzuj" + deny: "Odmów" + error: + title: "Wystąpił błąd" + new: + title: "Wymagana autoryzacja" + prompt: "Zezwolić aplikacji %{client_name} na użycie Twojego konta?" + able_to: "Ta aplikacja będzie mogła" + show: + title: "Kod autoryzacyjny" + form_post: + title: "Wyślij ten formularz" + + authorized_applications: + confirmations: + revoke: "Czy na pewno?" + buttons: + revoke: "Cofnij" + index: + title: "Twoje autoryzowane aplikacje" + application: "Aplikacja" + created_at: "Utworzono" + date_format: "%Y-%m-%d %H:%M:%S" + + pre_authorization: + status: "Wstępna autoryzacja" + + errors: + messages: + invalid_request: + unknown: "Żądanie nie zawiera wymaganego parametru, zawiera nieobsługiwaną wartość parametru lub jest nieprawidłowo sformułowane." + missing_param: "Brakuje wymaganego parametru: %{value}." + request_not_authorized: "Żądanie wymaga autoryzacji. Wymagany parametr autoryzacji jest brakujący lub nieprawidłowy." + invalid_code_challenge: "Code challenge jest wymagany." + invalid_redirect_uri: "Żądany URI przekierowania jest nieprawidłowy lub nie zgadza się z URI przekierowania klienta." + unauthorized_client: "Klient nie ma uprawnień do wykonania tego żądania tą metodą." + access_denied: "Właściciel zasobu lub serwer autoryzacji odrzucił żądanie." + invalid_scope: "Żądany zakres jest nieprawidłowy, nieznany lub błędnie sformułowany." + invalid_code_challenge_method: + zero: "Serwer autoryzacji nie obsługuje PKCE, ponieważ brak akceptowanych wartości code_challenge_method." + one: "code_challenge_method musi mieć wartość %{challenge_methods}." + few: "code_challenge_method musi mieć jedną z wartości: %{challenge_methods}." + many: "code_challenge_method musi mieć jedną z wartości: %{challenge_methods}." + other: "code_challenge_method musi mieć jedną z wartości: %{challenge_methods}." + server_error: "Serwer autoryzacji napotkał nieoczekiwany warunek, który uniemożliwił realizację żądania." + temporarily_unavailable: "Serwer autoryzacji jest chwilowo niedostępny z powodu przeciążenia lub prac serwisowych." + + credential_flow_not_configured: "Przepływ Resource Owner Password Credentials zakończył się niepowodzeniem, ponieważ Doorkeeper.configure.resource_owner_from_credentials nie jest skonfigurowany." + resource_owner_authenticator_not_configured: "Wyszukiwanie właściciela zasobu zakończyło się niepowodzeniem, ponieważ Doorkeeper.configure.resource_owner_authenticator nie jest skonfigurowany." + admin_authenticator_not_configured: "Dostęp do panelu administratora jest zabroniony, ponieważ Doorkeeper.configure.admin_authenticator nie jest skonfigurowany." + + unsupported_response_type: "Serwer autoryzacji nie obsługuje tego typu odpowiedzi." + unsupported_response_mode: "Serwer autoryzacji nie obsługuje tego trybu odpowiedzi." + + invalid_client: "Uwierzytelnienie klienta nie powiodło się z powodu nieznanego klienta, braku uwierzytelnienia klienta lub nieobsługiwanej metody uwierzytelnienia." + invalid_grant: "Podany grant autoryzacyjny jest nieprawidłowy, wygasł, został cofnięty, nie odpowiada URI przekierowania użytemu w żądaniu autoryzacji lub został wydany innemu klientowi." + unsupported_grant_type: "Typ grantu autoryzacyjnego nie jest obsługiwany przez serwer autoryzacji." + + invalid_token: + revoked: "Token dostępu został cofnięty" + expired: "Token dostępu wygasł" + unknown: "Token dostępu jest nieprawidłowy" + revoke: + unauthorized: "Nie masz uprawnień do cofnięcia tego tokenu" + + forbidden_token: + missing_scope: "Dostęp do tego zasobu wymaga zakresu \"%{oauth_scopes}\"." + + flash: + applications: + create: + notice: "Aplikacja została utworzona." + destroy: + notice: "Aplikacja została usunięta." + update: + notice: "Aplikacja została zaktualizowana." + authorized_applications: + destroy: + notice: "Autoryzacja aplikacji została cofnięta." + + layouts: + admin: + title: "Doorkeeper" + nav: + oauth2_provider: "Dostawca OAuth2" + applications: "Aplikacje" + home: "Strona główna" + application: + title: "Wymagana autoryzacja OAuth" \ No newline at end of file diff --git a/config/locales/mailers/invitation_mailer/pl.yml b/config/locales/mailers/invitation_mailer/pl.yml new file mode 100644 index 000000000..ff833bd77 --- /dev/null +++ b/config/locales/mailers/invitation_mailer/pl.yml @@ -0,0 +1,5 @@ +--- +pl: + invitation_mailer: + invite_email: + subject: "%{inviter} zaprosił(a) Cię do dołączenia do swojego gospodarstwa domowego w %{product_name}!" diff --git a/config/locales/mailers/pdf_import_mailer/pl.yml b/config/locales/mailers/pdf_import_mailer/pl.yml new file mode 100644 index 000000000..713401ee8 --- /dev/null +++ b/config/locales/mailers/pdf_import_mailer/pl.yml @@ -0,0 +1,5 @@ +--- +pl: + pdf_import_mailer: + next_steps: + subject: "Twój dokument PDF został przeanalizowany - %{product_name}" diff --git a/config/locales/models/account/pl.yml b/config/locales/models/account/pl.yml new file mode 100644 index 000000000..885e5830a --- /dev/null +++ b/config/locales/models/account/pl.yml @@ -0,0 +1,23 @@ +--- +pl: + activerecord: + attributes: + account: + balance: Saldo + currency: Waluta + family: "%{moniker}" + family_id: "%{moniker}" + name: Nazwa + subtype: Podtyp + models: + account: Konto + account/bond: Obligacje + account/credit_card: Karta kredytowa + account/crypto: Kryptowaluty + account/depository: Konto bankowe + account/investment: Inwestycje + account/loan: Pożyczka + account/other_asset: Inne aktywa + account/other_liability: Inne zobowiązania + account/property: Nieruchomość + account/vehicle: Pojazd diff --git a/config/locales/models/address/pl.yml b/config/locales/models/address/pl.yml new file mode 100644 index 000000000..babc3e590 --- /dev/null +++ b/config/locales/models/address/pl.yml @@ -0,0 +1,11 @@ +--- +pl: + address: + attributes: + country: Kraj + line1: Ulica i numer + line2: Numer mieszkania (opcjonalnie) + locality: Miejscowość + postal_code: Kod pocztowy + region: Województwo/Region + format: "%{line1} %{line2}, %{locality}, %{region} %{postal_code} %{country}" diff --git a/config/locales/models/category/pl.yml b/config/locales/models/category/pl.yml new file mode 100644 index 000000000..da69aeae9 --- /dev/null +++ b/config/locales/models/category/pl.yml @@ -0,0 +1,7 @@ +--- +pl: + models: + category: + uncategorized: Bez kategorii + other_investments: Inne inwestycje + investment_contributions: Wpłaty inwestycyjne diff --git a/config/locales/models/coinbase_account/pl.yml b/config/locales/models/coinbase_account/pl.yml new file mode 100644 index 000000000..52c5f099f --- /dev/null +++ b/config/locales/models/coinbase_account/pl.yml @@ -0,0 +1,5 @@ +--- +pl: + coinbase: + processor: + paid_via: Zapłacono przez %{method} diff --git a/config/locales/models/coinstats_item/pl.yml b/config/locales/models/coinstats_item/pl.yml new file mode 100644 index 000000000..08b2f9105 --- /dev/null +++ b/config/locales/models/coinstats_item/pl.yml @@ -0,0 +1,14 @@ +--- +pl: + models: + coinstats_item: + syncer: + importing_wallets: Importowanie portfeli z CoinStats... + checking_configuration: Sprawdzanie konfiguracji portfela... + wallets_need_setup: + one: "%{count} portfel wymaga konfiguracji..." + few: "%{count} portfele wymagają konfiguracji..." + many: "%{count} portfeli wymaga konfiguracji..." + other: "%{count} portfela wymaga konfiguracji..." + processing_holdings: Przetwarzanie posiadanych aktywów... + calculating_balances: Obliczanie sald... diff --git a/config/locales/models/entry/pl.yml b/config/locales/models/entry/pl.yml new file mode 100644 index 000000000..a6b6c19b9 --- /dev/null +++ b/config/locales/models/entry/pl.yml @@ -0,0 +1,9 @@ +--- +pl: + activerecord: + errors: + models: + entry: + attributes: + base: + invalid_sell_quantity: nie można sprzedać %{sell_qty} udziałów %{ticker}, ponieważ posiadasz tylko %{current_qty} udziałów diff --git a/config/locales/models/import/pl.yml b/config/locales/models/import/pl.yml new file mode 100644 index 000000000..2c10762b6 --- /dev/null +++ b/config/locales/models/import/pl.yml @@ -0,0 +1,13 @@ +--- +pl: + activerecord: + attributes: + import: + currency: Waluta + number_format: Format liczby + errors: + models: + import: + attributes: + raw_file_str: + invalid_csv_format: nie jest prawidłowym formatem CSV diff --git a/config/locales/models/provider_warnings/pl.yml b/config/locales/models/provider_warnings/pl.yml new file mode 100644 index 000000000..89fa5c9aa --- /dev/null +++ b/config/locales/models/provider_warnings/pl.yml @@ -0,0 +1,4 @@ +--- +pl: + provider_warnings: + limited_investment_data: Dane inwestycyjne od tego dostawcy są ograniczone. Etykiety transakcji (Kupno, Sprzedaż, Dywidenda) są niedostępne, co może wpłynąć na dokładność budżetu. Rozważ tworzenie reguł wykluczenia lub kategoryzacji transakcji inwestycyjnych. diff --git a/config/locales/models/time_series/value/pl.yml b/config/locales/models/time_series/value/pl.yml new file mode 100644 index 000000000..c63b9ca38 --- /dev/null +++ b/config/locales/models/time_series/value/pl.yml @@ -0,0 +1,9 @@ +--- +pl: + activemodel: + errors: + models: + time_series/value: + attributes: + value: + must_be_a_money_or_numeric: musi być typu Money lub Numeric diff --git a/config/locales/models/transaction/pl.yml b/config/locales/models/transaction/pl.yml new file mode 100644 index 000000000..ec6c6304a --- /dev/null +++ b/config/locales/models/transaction/pl.yml @@ -0,0 +1,11 @@ +--- +pl: + activerecord: + errors: + models: + transaction: + attributes: + attachments: + too_many: nie może przekraczać %{max} plików na transakcję + too_large: plik %{index} jest zbyt duży (maksymalnie %{max_mb}MB) + invalid_format: plik %{index} ma nieobsługiwany format (%{file_format}) diff --git a/config/locales/models/transfer/pl.yml b/config/locales/models/transfer/pl.yml new file mode 100644 index 000000000..b61fe86a5 --- /dev/null +++ b/config/locales/models/transfer/pl.yml @@ -0,0 +1,18 @@ +--- +pl: + activerecord: + errors: + models: + transfer: + attributes: + base: + inflow_cannot_be_in_multiple_transfers: Transakcja wpływu nie może być częścią wielu przelewów + must_be_from_different_accounts: Przelew musi dotyczyć różnych kont + must_be_from_same_family: Przelew musi być w ramach tego samego gospodarstwa domowego + must_be_within_date_range: Daty transakcji przelewu muszą być w ciągu 4 dni od siebie + must_have_opposite_amounts: Transakcje przelewu muszą mieć przeciwne kwoty + must_have_single_currency: Przelew musi być w jednej walucie + outflow_cannot_be_in_multiple_transfers: Transakcja wypływu nie może być częścią wielu przelewów + transfer: + name: Przelew do %{to_account} + payment_name: Płatność do %{to_account} diff --git a/config/locales/models/trend/pl.yml b/config/locales/models/trend/pl.yml new file mode 100644 index 000000000..221d4c262 --- /dev/null +++ b/config/locales/models/trend/pl.yml @@ -0,0 +1,13 @@ +--- +pl: + activemodel: + errors: + models: + trend: + attributes: + current: + must_be_of_the_same_type_as_previous: musi być tego samego typu co poprzednia wartość + must_be_of_type_money_numeric_or_nil: musi być typu Money, Numeric lub nil + previous: + must_be_of_the_same_type_as_current: musi być tego samego typu co aktualna wartość + must_be_of_type_money_numeric_or_nil: musi być typu Money, Numeric lub nil diff --git a/config/locales/models/user/pl.yml b/config/locales/models/user/pl.yml new file mode 100644 index 000000000..2a696f2f6 --- /dev/null +++ b/config/locales/models/user/pl.yml @@ -0,0 +1,20 @@ +--- +pl: + activerecord: + attributes: + user: + email: Email + family: "%{moniker}" + family_id: "%{moniker}" + first_name: Imię + last_name: Nazwisko + password: Hasło + password_confirmation: Potwierdzenie hasła + errors: + models: + user: + attributes: + base: + cannot_deactivate_admin_with_other_users: Administrator nie może usunąć konta, gdy obecni są inni użytkownicy. Najpierw usuń wszystkich członków. + profile_image: + invalid_file_size: rozmiar pliku nie może przekraczać %{max_megabytes}MB diff --git a/config/locales/views/account_sharings/pl.yml b/config/locales/views/account_sharings/pl.yml new file mode 100644 index 000000000..010b2b54b --- /dev/null +++ b/config/locales/views/account_sharings/pl.yml @@ -0,0 +1,31 @@ +--- +pl: + account_sharings: + show: + title: Udostępnianie konta + subtitle: Zarządzaj tym, kto może przeglądać i używać tego konta + member: Członek + permission: Uprawnienie + shared: Udostępnione + no_members: Brak innych członków w Twoim %{moniker}, którym można udostępnić + permissions: + full_control: Pełna kontrola + full_control_description: Może przeglądać, edytować i zarządzać transakcjami + read_write: Odczyt i zapis + read_write_description: Może kategoryzować, tagować i dodawać notatki + read_only: Tylko podgląd + read_only_description: Może tylko przeglądać dane konta + save: Zapisz ustawienia udostępniania + owner_label: 'Właściciel: %{name}' + shared_with_count: + one: Udostępniono 1 członkowi + few: Udostępniono %{count} członkom + many: Udostępniono %{count} członkom + other: Udostępniono %{count} członkom + include_in_finances: Uwzględniaj w moich budżetach i raportach + exclude_from_finances: Wykluczaj z moich budżetów i raportów + finance_toggle_description: Uwzględniaj to konto w majątku netto, budżetach i raportach + update: + success: Zaktualizowano ustawienia udostępniania + not_owner: Tylko właściciel konta może zarządzać udostępnianiem + finance_toggle_success: Zaktualizowano preferencję uwzględniania w finansach diff --git a/config/locales/views/accounts/pl.yml b/config/locales/views/accounts/pl.yml new file mode 100644 index 000000000..88418d805 --- /dev/null +++ b/config/locales/views/accounts/pl.yml @@ -0,0 +1,158 @@ +--- +pl: + accounts: + not_authorized: Nie masz uprawnień do zarządzania tym kontem + account: + edit: Edytuj + link_lunchflow: Połącz z Lunch Flow + link_provider: Połącz z dostawcą + unlink_provider: Odłącz od dostawcy + troubleshoot: Rozwiąż problem + enable: Włącz konto + disable: Wyłącz konto + set_default: Ustaw jako domyślne + remove_default: Usuń status domyślnego + default_label: Domyślne + delete: Usuń konto + sharing: Udostępnianie + chart: + data_not_available: Dane niedostępne dla wybranego okresu + create: + success: Utworzono konto %{type} + set_default: + depository_only: Tylko konta gotówkowe i karty kredytowe mogą być ustawione jako domyślne. + destroy: + success: Zaplanowano usunięcie konta %{type} + cannot_delete_linked: Nie można usunąć połączonego konta. Najpierw je odłącz. + empty: + empty_message: Dodaj konto przez połączenie, import lub ręczne wprowadzenie. + new_account: Nowe konto + no_accounts: Brak kont + form: + balance: 'Saldo na dzień:' + opening_balance_date_label: Data salda początkowego + name_label: Nazwa konta + name_placeholder: Przykładowa nazwa konta + additional_details: Dodatkowe informacje + institution_name_label: Nazwa instytucji + institution_name_placeholder: np. PKO Bank Polski + institution_domain_label: Domena instytucji + institution_domain_placeholder: np. pkobp.pl + notes_label: Notatki + notes_placeholder: Zapisz dodatkowe informacje, takie jak numery kont, kody rozliczeniowe, IBAN, numery routingowe itp. + index: + accounts: Konta + manual_accounts: + other_accounts: Inne konta + new_account: Nowe konto + sync: Synchronizuj wszystko + sync_all: + syncing: Trwa synchronizacja kont... + new: + import_accounts: Importuj konta + method_selector: + connected_entry: Połącz konto + connected_entry_eu: Połącz konto z UE + link_with_provider: Połącz z %{provider} + lunchflow_entry: Połącz konto Lunch Flow + manual_entry: Wprowadź saldo konta + title: Jak chcesz je dodać? + title: Co chcesz dodać? + show: + activity: + amount: Kwota + balance: Saldo + confirmed: Potwierdzone + date: Data + entries: wpisy + entry: wpis + filter: Filtr + new: Nowy + new_activity: Nowa aktywność + new_balance: Nowe saldo + new_trade: Nowa transakcja giełdowa + new_transaction: Nowa transakcja + new_transfer: Nowy przelew + no_entries: Nie znaleziono wpisów + pending: Oczekujące + search: + placeholder: Szukaj wpisów po nazwie + status: Status + title: Aktywność + chart: + balance: Saldo + owed: Kwota zadłużenia + menu: + confirm_accept: Usuń "%{name}" + confirm_body_html: "Usuwając to konto, usuniesz jego historię wartości, co wpłynie na różne aspekty Twojego ogólnego bilansu. Ta akcja będzie miała bezpośredni wpływ na obliczenia majątku netto i wykresy konta.
Po usunięciu nie będzie możliwości przywrócenia informacji o koncie, ponieważ trzeba będzie dodać je ponownie jako nowe konto.
" + confirm_title: Usunąć konto? + edit: Edytuj + import: Importuj transakcje + import_trades: Importuj transakcje giełdowe + import_transactions: Importuj transakcje + manage: Zarządzaj kontami + update: + success: Zaktualizowano konto %{type} + sidebar: + missing_data: Brak danych historycznych + missing_data_description: "%{product} używa zewnętrznych dostawców do pobierania historycznych kursów walut, cen papierów wartościowych i innych danych. Te dane są wymagane do dokładnego obliczania historycznych sald kont." + configure_providers: Skonfiguruj tutaj swoich dostawców. + tabs: + all: Wszystkie + assets: Aktywa + debts: Zobowiązania + new_asset: Nowe aktywo + new_debt: Nowe zobowiązanie + new_account: Nowe konto + new_account_group: Nowe %{account_group} + types: + depository: Gotówka + investment: Inwestycje + crypto: Kryptowaluty + property: Nieruchomość + vehicle: Pojazd + bond: Obligacje + other_asset: Inne aktywo + credit_card: Karta kredytowa + loan: Pożyczka + other_liability: Inne zobowiązanie + tax_treatments: + taxable: Opodatkowane + tax_deferred: Odroczony podatek + tax_exempt: Zwolnione z podatku + tax_advantaged: Preferencyjne podatkowo + tax_treatment_descriptions: + taxable: Zyski opodatkowane przy realizacji + tax_deferred: Wpłaty odliczalne, opodatkowanie przy wypłacie + tax_exempt: Wpłaty po opodatkowaniu, zyski nieopodatkowane + tax_advantaged: Specjalne korzyści podatkowe pod pewnymi warunkami + subtype_regions: + us: Stany Zjednoczone + uk: Wielka Brytania + ca: Kanada + au: Australia + eu: Europa + generic: Ogólne + confirm_unlink: + title: Odłączyć konto od dostawcy? + description_html: Zaraz odłączysz %{account_name} od %{provider_name}. Konto zostanie przekształcone w konto ręczne. + warning_title: Co to oznacza + warning_no_sync: Konto nie będzie już synchronizować się automatycznie z dostawcą + warning_manual_updates: Trzeba będzie ręcznie dodawać transakcje i aktualizować salda + warning_transactions_kept: Wszystkie istniejące transakcje i salda zostaną zachowane + warning_can_delete: Po odłączeniu będzie można usunąć konto, jeśli zajdzie taka potrzeba + confirm_button: Potwierdź i odłącz + unlink: + success: Konto zostało pomyślnie odłączone. Teraz jest kontem ręcznym. + not_linked: Konto nie jest połączone z dostawcą + error: 'Nie udało się odłączyć konta: %{error}' + generic_error: Wystąpił nieoczekiwany błąd. Spróbuj ponownie. + select_provider: + title: Wybierz dostawcę do połączenia + description: Wybierz dostawcę, którego chcesz użyć do połączenia %{account_name} + already_linked: Konto jest już połączone z dostawcą + no_providers: Obecnie nie skonfigurowano żadnych dostawców + email_confirmations: + new: + invalid_token: Nieprawidłowy lub wygasły link potwierdzający. + success_login: Twój adres e-mail został potwierdzony. Zaloguj się przy użyciu nowego adresu e-mail. diff --git a/config/locales/views/admin/invitations/pl.yml b/config/locales/views/admin/invitations/pl.yml new file mode 100644 index 000000000..162ac466e --- /dev/null +++ b/config/locales/views/admin/invitations/pl.yml @@ -0,0 +1,8 @@ +--- +pl: + admin: + invitations: + destroy: + success: Zaproszenie zostało usunięte. + destroy_all: + success: Wszystkie zaproszenia dla tej rodziny zostały usunięte. diff --git a/config/locales/views/admin/sso_providers/pl.yml b/config/locales/views/admin/sso_providers/pl.yml new file mode 100644 index 000000000..65bb18051 --- /dev/null +++ b/config/locales/views/admin/sso_providers/pl.yml @@ -0,0 +1,115 @@ +--- +pl: + admin: + unauthorized: Nie masz uprawnień do dostępu do tego obszaru. + sso_providers: + index: + title: Dostawcy SSO + description: Zarządzaj dostawcami uwierzytelniania jednokrotnego logowania dla swojej instancji + add_provider: Dodaj dostawcę + no_providers_title: Brak dostawców SSO + no_providers_message: Zacznij od dodania pierwszego dostawcy SSO. + note: Zmiany dostawców SSO wymagają ponownego uruchomienia serwera, aby weszły w życie. Alternatywnie włącz flagę AUTH_PROVIDERS_SOURCE=db, aby dynamicznie ładować dostawców z bazy danych. + table: + name: Nazwa + strategy: Strategia + status: Status + issuer: Wystawca + actions: Akcje + enabled: Włączony + disabled: Wyłączony + legacy_providers_title: Dostawcy skonfigurowani przez zmienne środowiskowe + legacy_providers_notice: Ci dostawcy są skonfigurowani przez zmienne środowiskowe lub YAML i nie można nimi zarządzać przez ten interfejs. Aby zarządzać nimi tutaj, przenieś ich do dostawców opartych na bazie danych, włączając AUTH_PROVIDERS_SOURCE=db i odtwarzając ich w interfejsie. + env_configured: Środowisko/YAML + new: + title: Dodaj dostawcę SSO + description: Skonfiguruj nowego dostawcę uwierzytelniania jednokrotnego logowania + edit: + title: Edytuj dostawcę SSO + description: Zaktualizuj konfigurację dla %{label} + create: + success: Dostawca SSO został pomyślnie utworzony. + update: + success: Dostawca SSO został pomyślnie zaktualizowany. + destroy: + success: Dostawca SSO został pomyślnie usunięty. + confirm: Czy na pewno chcesz usunąć tego dostawcę? Tej akcji nie można cofnąć. + toggle: + success_enabled: Dostawca SSO został pomyślnie włączony. + success_disabled: Dostawca SSO został pomyślnie wyłączony. + confirm_enable: Czy na pewno chcesz włączyć tego dostawcę? + confirm_disable: Czy na pewno chcesz wyłączyć tego dostawcę? + form: + basic_information: Podstawowe informacje + oauth_configuration: Konfiguracja OAuth/OIDC + strategy_label: Strategia + strategy_help: Strategia uwierzytelniania do użycia + name_label: Nazwa + name_placeholder: np. openid_connect, keycloak, authentik + name_help: Unikalny identyfikator (tylko małe litery, cyfry i podkreślenia) + label_label: Etykieta + label_placeholder: np. Zaloguj przez Keycloak + label_help: Tekst przycisku widoczny dla użytkowników + icon_label: Ikona + icon_placeholder: np. key, google, github + icon_help: Nazwa ikony Lucide (opcjonalne) + enabled_label: Włącz tego dostawcę + enabled_help: Użytkownicy mogą logować się przez tego dostawcę, gdy jest włączony + issuer_label: Wystawca + issuer_placeholder: https://accounts.google.com + issuer_help: URL wystawcy OIDC (waliduje endpoint .well-known/openid-configuration) + client_id_label: ID klienta + client_id_placeholder: twoj-client-id + client_id_help: ID klienta OAuth od Twojego dostawcy tożsamości + client_secret_label: Sekret klienta + client_secret_placeholder_new: twoj-client-secret + client_secret_placeholder_existing: "zapisany-sekret" + client_secret_help: Sekret klienta OAuth (zaszyfrowany w bazie danych) + client_secret_help_existing: " - pozostaw puste, aby zachować istniejący" + redirect_uri_label: URI przekierowania + redirect_uri_placeholder: https://yourdomain.com/auth/openid_connect/callback + redirect_uri_help: URL zwrotny do skonfigurowania u Twojego dostawcy tożsamości + copy_button: Kopiuj + cancel: Anuluj + submit: Zapisz dostawcę + errors_title: "%{count} błąd uniemożliwia zapisanie tego dostawcy:" + provisioning_title: Udostępnianie użytkowników + default_role_label: Domyślna rola dla nowych użytkowników + default_role_help: "Rola przypisywana użytkownikom tworzonymi przez SSO just-in-time (JIT). Domyślnie: Członek." + role_guest: Gość + role_member: Członek + role_admin: Administrator + role_super_admin: Superadministrator + role_mapping_title: Mapowanie grup na role (opcjonalne) + role_mapping_help: Mapuj grupy/claims IdP na role aplikacji. Użytkownicy otrzymują najwyższą pasującą rolę. Pozostaw puste, aby używać domyślnej roli powyżej. + super_admin_groups: Grupy Super Admina + admin_groups: Grupy Admina + guest_groups: Grupy Gościa + member_groups: Grupy Członka + groups_help: Lista nazw grup IdP oddzielona przecinkami. Użyj *, aby pasować do wszystkich grup. + advanced_title: Zaawansowane ustawienia OIDC + scopes_label: Własne zakresy + scopes_help: Lista zakresów OIDC oddzielona spacjami. Pozostaw puste dla wartości domyślnych (openid email profile). Dodaj 'groups', aby pobrać claims grup. + prompt_label: Monit uwierzytelniania + prompt_default: Domyślny (decyduje IdP) + prompt_login: Wymuś logowanie (ponowne uwierzytelnienie) + prompt_consent: Wymuś zgodę (ponowna autoryzacja) + prompt_select_account: Wybór konta (wybierz konto) + prompt_none: Bez monitu (uwierzytelnienie ciche) + prompt_help: Określa, w jaki sposób IdP wyświetla monity użytkownikowi podczas uwierzytelniania. + test_connection: Testuj połączenie + saml_configuration: Konfiguracja SAML + idp_metadata_url: URL metadanych IdP + idp_metadata_url_help: URL do metadanych SAML Twojego IdP. Jeśli podany, inne ustawienia SAML zostaną skonfigurowane automatycznie. + manual_saml_config: Konfiguracja ręczna (jeśli nie używasz adresu URL metadanych) + manual_saml_help: Używaj tych ustawień tylko wtedy, gdy Twój IdP nie udostępnia adresu URL metadanych. + idp_sso_url: URL SSO IdP + idp_slo_url: IdP SLO URL (opcjonalne) + idp_certificate: Certyfikat IdP + idp_certificate_help: Certyfikat X.509 w formacie PEM. Wymagany, jeśli nie używasz adresu URL metadanych. + idp_cert_fingerprint: Odcisk cyfrowy certyfikatu (alternatywa) + name_id_format: Format identyfikatora nazwy + name_id_email: Adres e-mail (domyślny) + name_id_persistent: Trwały + name_id_transient: Przejściowy + name_id_unspecified: Nieokreślony diff --git a/config/locales/views/admin/users/pl.yml b/config/locales/views/admin/users/pl.yml new file mode 100644 index 000000000..f618ebcc3 --- /dev/null +++ b/config/locales/views/admin/users/pl.yml @@ -0,0 +1,53 @@ +--- +pl: + admin: + users: + index: + title: Zarządzanie użytkownikami + description: Zarządzaj rolami użytkowników w swojej instancji. Superadministratorzy mają dostęp do ustawień dostawców SSO i zarządzania użytkownikami. + section_title: Rodziny / Grupy + you: "(Ty)" + trial_ends_at: Koniec okresu próbnego + not_available: brak danych + no_users: Nie znaleziono użytkowników. + unnamed_family: Nienazwana rodzina/grupa + no_subscription: Brak subskrypcji + family_summary: "%{members} członków · %{accounts} kont · %{transactions} transakcji" + filters: + role: Rola + role_all: Wszystkie role + trial_status: Status okresu próbnego + trial_all: Wszystkie + trial_expiring_soon: Wygasa za 7 dni + trial_trialing: W okresie próbnym + submit: Filtruj + summary: + trials_expiring_7_days: Okresy próbne wygasające w ciągu 7 dni + table: + user: Użytkownik + trial_ends_at: Koniec okresu próbnego + family_accounts: Konta rodziny + family_transactions: Transakcje rodziny + last_login: Ostatnie logowanie + session_count: Liczba sesji + never: Nigdy + role: Rola + role_descriptions_title: Opisy ról + roles: + guest: Gość + member: Członek + admin: Administrator + super_admin: Superadministrator + role_descriptions: + guest: Tryb skupiony na Asystencie z celowo ograniczonymi uprawnieniami dla przepływów wprowadzających. + member: Podstawowy dostęp użytkownika. Może zarządzać własnymi kontami, transakcjami i ustawieniami. + admin: Administrator rodziny. Ma dostęp do ustawień zaawansowanych, takich jak klucze API, importy i prompty AI. + super_admin: Administrator instancji. Może zarządzać dostawcami SSO, rolami użytkowników i wcielać się w użytkowników na potrzeby wsparcia. + invitations: + pending_label: Zaproszony (oczekuje) + expires: Wygasa %{date} + delete: Usuń + delete_all: Usuń wszystkie + update: + success: Rola użytkownika została pomyślnie zaktualizowana. + failure: Nie udało się zaktualizować roli użytkownika. diff --git a/config/locales/views/application/pl.yml b/config/locales/views/application/pl.yml new file mode 100644 index 000000000..80b45673a --- /dev/null +++ b/config/locales/views/application/pl.yml @@ -0,0 +1,10 @@ +--- +pl: + number: + currency: + format: + delimiter: " " + format: "%n %u" + precision: 2 + separator: "," + unit: "zł" diff --git a/config/locales/views/bonds/pl.yml b/config/locales/views/bonds/pl.yml new file mode 100644 index 000000000..c4af32682 --- /dev/null +++ b/config/locales/views/bonds/pl.yml @@ -0,0 +1,153 @@ +--- +pl: + bonds: + edit: + edit: Edytuj %{account} + form: + initial_balance: Początkowe saldo obligacji + tax_wrapper: Otoczka podatkowa + auto_buy_new_issues: Automatycznie kupuj nowe emisje obligacji + auto_buy_new_issues_hint: Po rozliczeniu zapadalności automatycznie kup kolejną emisję z dostępnych środków dla kont IKE/IKZE. + subtypes: + eod: + short: EOD + long: 10-letnia obligacja oszczędnościowa Skarbu Państwa + rod: + short: ROD + long: 12-letnia rodzinna obligacja oszczędnościowa + other_bond: + short: Inna + long: Inna obligacja + new: + title: Wprowadź dane obligacji + tabs: + positions: + positions: Pozycje obligacji + new_activity: Nowa aktywność + name: Nazwa + weight: Udział + rate: Oprocentowanie + holdings: Stan + maturity: Zapadalność + total_return: Łączny zwrot + no_purchases: Nie dodano jeszcze żadnych zakupów. + closed: + closed: Zamknięte partie obligacji + name: Nazwa + weight: Udział + rate: Oprocentowanie + holdings: Stan + maturity: Zapadalność + total_return: Łączny zwrot + no_closed_lots: Brak zamkniętych partii obligacji. + closed_lots: Zamknięte partie obligacji + closed_lot_meta: "Zakupiono %{purchased}, zamknięto %{closed}" + settled_net: Rozliczono netto + cash_holding: + cash_position: Gotówka z obligacji + purchase_holding: + unknown: Nieznane + update_needed: Wymagana aktualizacja + purchased: "Zakupiono %{date}" + term_months: + one: "%{count} miesiąc" + few: "%{count} miesiące" + many: "%{count} miesięcy" + other: "%{count} miesiąca" + principal_term: "Kapitał, %{term}" + bond_meta: "%{rate_type} / %{coupon}" + inflation_meta_gus: "%{inflation} inflacji + %{margin} marży (GUS SDP %{indicator})" + inflation_meta_manual: "%{inflation} inflacji + %{margin} marży (ręcznie)" + first_period_fixed_rate: Stałe oprocentowanie pierwszego okresu + maturity: "Zapada %{date}" + maturity_label: Data zapadalności + since_purchase: Od zakupu + projected_to_maturity: Prognoza do zapadalności + pending_review: Oczekiwanie na zaktualizowane stawki emisji + edit: Edytuj + remove: Usuń + confirm_remove: Usunąć ten zakup? + + bond_lots: + not_bond_account: "To konto nie jest kontem obligacji." + new: + title: Dodaj zakup dla %{account} + edit: + title: Edytuj zakup dla %{account} + show: + settings: Ustawienia + history: Historia + no_history: Brak historii kapitalizacji. + overview_principal: Kapitał + overview_settlement: Kwota rozliczenia + overview_maturity: Data zapadalności + overview_closed_on: Zamknięto + history_period: "Okres %{period}: %{start} - %{end}" + history_balance: "Saldo %{opening} -> %{closing}" + history_interest: "Odsetki %{interest} przy %{rate}" + history_capitalized: Skapitalizowano + history_partial: Okres częściowy + history_inflation_gus: "Użyta inflacja: %{inflation} + %{margin} marży (GUS SDP %{indicator}, odn. %{reference})" + history_inflation_manual: "Użyta inflacja: %{inflation} + %{margin} marży (założenie ręczne)" + history_inflation_first_period: "Stała stopa pierwszego okresu" + unknown: Nieznane + purchased: "Zakupiono %{date}" + delete_title: Usuń zakup + delete_subtitle: Usuń ten zakup i powiązany wpis aktywności. + delete: Usuń + delete_confirm: Usunąć ten zakup? + create: + success: Dodano zakup obligacji + update: + success: Zaktualizowano zakup obligacji + destroy: + success: Usunięto zakup obligacji + form: + purchased_on: Data zakupu + issue_date: Data emisji + amount: Kwota kapitału + units: Jednostki + nominal_per_unit: Nominał na jednostkę + term_months: Okres (miesiące) + subtype: Typ obligacji + rate_type: Typ oprocentowania + coupon_frequency: Częstotliwość kuponu + interest_rate: Oprocentowanie + interest_rate_placeholder: "4.25" + first_period_rate: Oprocentowanie pierwszego okresu (%) + inflation_margin: Marża inflacyjna (%) + auto_fetch_inflation: Pobieraj inflację automatycznie z GUS + auto_fetch_disabled_hint: Automatyczny import CPI jest globalnie wyłączony w ustawieniach self-hosting. Wprowadź inflację ręcznie. + inflation_rate_assumption: Założenie CPI (%) + cpi_lag_months: Opóźnienie CPI (miesiące) + early_redemption_fee: Opłata za wcześniejszy wykup + auto_close_on_maturity: Automatycznie zamknij w dniu zapadalności + auto_close_on_maturity_hint: Automatycznie rozlicz tę partię w dniu zapadalności i przeksięguj środki na gotówkę konta. + tax_strategy: Obsługa podatku przy zapadalności + tax_rate: Stawka podatku (%) + tax_strategies: + standard: Podatek standardowy + reduced: Podatek obniżony + exempt: Zwolnione z podatku (IKE/IKZE) + rate_types: + fixed: Stałe + variable: Zmienne + coupon_frequencies: + monthly: Miesięcznie + quarterly: Kwartalnie + semi_annual: Półrocznie + annual: Rocznie + at_maturity: W terminie zapadalności + submit: Dodaj zakup + update: Zaktualizuj zakup + activity: + purchase_name: "Zakup obligacji: %{subtype}" + maturity_settlement_name: "Rozliczenie zapadalności obligacji: %{subtype}" + maturity_settlement_notes_with_tax: "Kwota zakupu: %{purchase_amount}\nŁączne odsetki: %{interest_amount}\nPotrącony podatek: %{tax_withheld_amount}" + maturity_settlement_notes_without_tax: "Kwota zakupu: %{purchase_amount}\nŁączne odsetki: %{interest_amount}\nPotrącony podatek: brak" + + closed_purchase_holding: + closed_meta: "Zakupiono %{purchased}, zamknięto %{closed}" + closed_rate_meta: "%{periods} okresów kapitalizacji" + settled_net: "Rozliczono netto %{net}" + history_meta: "Odsetki %{interest}, podatek %{tax}" diff --git a/config/locales/views/budgets/pl.yml b/config/locales/views/budgets/pl.yml new file mode 100644 index 000000000..ab3dc9828 --- /dev/null +++ b/config/locales/views/budgets/pl.yml @@ -0,0 +1,19 @@ +--- +pl: + budgets: + name: + custom_range: "%{start} do %{end_date}" + month_year: "%{month}" + show: + tabs: + actual: Rzeczywiste + budgeted: Zaplanowane + copy_previous_prompt: + title: "Skonfiguruj swój budżet" + description: "Możesz skopiować budżet z %{source_name} lub zacząć od zera." + copy_button: "Kopiuj z %{source_name}" + fresh_button: "Zacznij od zera" + copy_previous: + success: "Skopiowano budżet z %{source_name}" + no_source: "Nie znaleziono poprzedniego budżetu do skopiowania" + already_initialized: "Ten budżet został już skonfigurowany" diff --git a/config/locales/views/categories/pl.yml b/config/locales/views/categories/pl.yml new file mode 100644 index 000000000..85720c432 --- /dev/null +++ b/config/locales/views/categories/pl.yml @@ -0,0 +1,34 @@ +--- +pl: + categories: + bootstrap: + success: Domyślne kategorie zostały pomyślnie utworzone + category: + delete: Usuń kategorię + edit: Edytuj kategorię + create: + success: Kategoria została pomyślnie utworzona + destroy: + success: Kategoria została pomyślnie usunięta + edit: + edit: Edytuj kategorię + form: + placeholder: Nazwa kategorii + index: + bootstrap: Użyj domyślnych (zalecane) + categories: Kategorie + categories_expenses: Kategorie wydatków + categories_incomes: Kategorie przychodów + empty: Nie znaleziono kategorii + new: Nowa kategoria + menu: + loading: Ładowanie... + new: + new_category: Nowa kategoria + update: + success: Kategoria została pomyślnie zaktualizowana + category: + dropdowns: + show: + bootstrap: Wygeneruj domyślne kategorie + empty: Nie znaleziono kategorii diff --git a/config/locales/views/category/deletions/pl.yml b/config/locales/views/category/deletions/pl.yml new file mode 100644 index 000000000..c4561efc3 --- /dev/null +++ b/config/locales/views/category/deletions/pl.yml @@ -0,0 +1,13 @@ +--- +pl: + category: + deletions: + create: + success: Kategoria transakcji została usunięta + new: + category: Kategoria + delete_and_leave_uncategorized: Usuń "%{category_name}" i pozostaw bez kategorii + delete_and_recategorize: Usuń "%{category_name}" i przypisz nową kategorię + delete_category: Usunąć kategorię? + explanation: Po usunięciu tej kategorii każda transakcja przypisana do "%{category_name}" będzie bez kategorii. Zamiast pozostawiać je bez kategorii, możesz poniżej przypisać nową kategorię. + replacement_category_prompt: Wybierz kategorię diff --git a/config/locales/views/category/dropdowns/pl.yml b/config/locales/views/category/dropdowns/pl.yml new file mode 100644 index 000000000..74380bb48 --- /dev/null +++ b/config/locales/views/category/dropdowns/pl.yml @@ -0,0 +1,11 @@ +--- +pl: + category: + dropdowns: + row: + delete: Usuń kategorię + edit: Edytuj kategorię + show: + clear: Wyczyść kategorię + no_categories: Nie znaleziono kategorii + search_placeholder: Szukaj diff --git a/config/locales/views/chats/pl.yml b/config/locales/views/chats/pl.yml new file mode 100644 index 000000000..588542fce --- /dev/null +++ b/config/locales/views/chats/pl.yml @@ -0,0 +1,5 @@ +--- +pl: + chats: + demo_banner_title: "Aktywny tryb demo" + demo_banner_message: "Używasz modelu open-weights Qwen3 LLM z kredytami udostępnionymi przez Cloudflare Workers AI. Wyniki mogą się różnić, ponieważ kod aplikacji był głównie testowany na `gpt-4.1`, ale Twoje tokeny nie są nigdzie dalej wykorzystywane do trenowania! 🤖" diff --git a/config/locales/views/coinbase_items/pl.yml b/config/locales/views/coinbase_items/pl.yml new file mode 100644 index 000000000..644cff0ca --- /dev/null +++ b/config/locales/views/coinbase_items/pl.yml @@ -0,0 +1,88 @@ +--- +pl: + coinbase_items: + create: + default_name: Coinbase + success: Pomyślnie połączono z Coinbase! Twoje konta są synchronizowane. + update: + success: Pomyślnie zaktualizowano konfigurację Coinbase. + destroy: + success: Zaplanowano usunięcie połączenia Coinbase. + setup_accounts: + title: Importuj portfele Coinbase + subtitle: Wybierz portfele do śledzenia + instructions: Wybierz portfele, które chcesz zaimportować. Niewybrane portfele pozostaną dostępne, jeśli zechcesz dodać je później. + no_accounts: Wszystkie portfele zostały zaimportowane. + accounts_count: + one: "Dostępny %{count} portfel" + few: "Dostępne %{count} portfele" + many: "Dostępnych %{count} portfeli" + other: "Dostępne %{count} portfeli" + select_all: Wybierz wszystkie + import_selected: Importuj wybrane + cancel: Anuluj + creating: Importowanie... + complete_account_setup: + success: + one: Zaimportowano %{count} portfel + few: Zaimportowano %{count} portfele + many: Zaimportowano %{count} portfeli + other: Zaimportowano %{count} portfeli + none_selected: Nie wybrano portfeli + no_accounts: Brak portfeli do importu + coinbase_item: + provider_name: Coinbase + syncing: Synchronizacja... + reconnect: Dane uwierzytelniające wymagają aktualizacji + deletion_in_progress: Usuwanie... + sync_status: + no_accounts: Nie znaleziono kont + all_synced: + one: "%{count} konto zsynchronizowane" + few: "%{count} konta zsynchronizowane" + many: "%{count} kont zsynchronizowanych" + other: "%{count} kont zsynchronizowanych" + partial_sync: "%{linked_count} zsynchronizowanych, %{unlinked_count} wymaga konfiguracji" + status: Ostatnia synchronizacja %{timestamp} temu + status_with_summary: Ostatnia synchronizacja %{timestamp} temu - %{summary} + status_never: Nigdy nie synchronizowano + update_credentials: Zaktualizuj dane uwierzytelniające + delete: Usuń + no_accounts_title: Nie znaleziono kont + no_accounts_message: Twoje portfele Coinbase pojawią się tutaj po synchronizacji. + setup_needed: Portfele gotowe do importu + setup_description: Wybierz portfele Coinbase, które chcesz śledzić. + setup_action: Importuj portfele + import_wallets_menu: Importuj portfele + more_wallets_available: + one: "Jeszcze %{count} portfel do zaimportowania" + few: "Jeszcze %{count} portfele do zaimportowania" + many: "Jeszcze %{count} portfeli do zaimportowania" + other: "Jeszcze %{count} portfeli do zaimportowania" + select_existing_account: + title: Połącz konto Coinbase + no_accounts_found: Nie znaleziono kont Coinbase. + wait_for_sync: Poczekaj, aż Coinbase zakończy synchronizację + check_provider_health: Sprawdź, czy dane API Coinbase są prawidłowe + balance: Saldo + currently_linked_to: 'Aktualnie połączone z: %{account_name}' + link: Połącz + cancel: Anuluj + link_existing_account: + success: Pomyślnie połączono z kontem Coinbase + errors: + only_manual: Z Coinbase można łączyć tylko konta manualne + invalid_coinbase_account: Nieprawidłowe konto Coinbase + coinbase_item: + syncer: + checking_credentials: Sprawdzanie danych uwierzytelniających... + credentials_invalid: Nieprawidłowe dane API. Sprawdź klucz i sekret API. + importing_accounts: Importowanie kont z Coinbase... + checking_configuration: Sprawdzanie konfiguracji kont... + accounts_need_setup: + one: "%{count} konto wymaga konfiguracji" + few: "%{count} konta wymagają konfiguracji" + many: "%{count} kont wymaga konfiguracji" + other: "%{count} kont wymaga konfiguracji" + processing_accounts: Przetwarzanie danych kont... + calculating_balances: Obliczanie sald... diff --git a/config/locales/views/coinstats_items/pl.yml b/config/locales/views/coinstats_items/pl.yml new file mode 100644 index 000000000..968c9aa0b --- /dev/null +++ b/config/locales/views/coinstats_items/pl.yml @@ -0,0 +1,69 @@ +--- +pl: + coinstats_items: + create: + success: Połączenie z dostawcą CoinStats zostało pomyślnie skonfigurowane. + default_name: Połączenie CoinStats + errors: + validation_failed: 'Walidacja nie powiodła się: %{message}.' + update: + success: Połączenie z dostawcą CoinStats zostało pomyślnie zaktualizowane. + errors: + validation_failed: 'Walidacja nie powiodła się: %{message}.' + destroy: + success: Połączenie z dostawcą CoinStats zostało zaplanowane do usunięcia. + link_wallet: + success: + one: "Pomyślnie połączono %{count} portfel kryptowalutowy." + few: "Pomyślnie połączono %{count} portfele kryptowalutowe." + many: "Pomyślnie połączono %{count} portfeli kryptowalutowych." + other: "Pomyślnie połączono %{count} portfela kryptowalutowego." + missing_params: 'Brak wymaganych parametrów: address i blockchain.' + failed: Łączenie portfela kryptowalutowego nie powiodło się. + error: 'Łączenie portfela kryptowalutowego nie powiodło się: %{message}.' + new: + title: Połącz portfel kryptowalutowy z CoinStats + blockchain_fetch_error: Nie udało się wczytać blockchainów. Spróbuj ponownie później. + address_label: Adres + address_placeholder: Wymagane + blockchain_label: Blockchain + blockchain_placeholder: Wymagane + blockchain_select_blank: Wybierz blockchain + link: Połącz portfel kryptowalutowy + not_configured_title: Połączenie z dostawcą CoinStats nie jest skonfigurowane + not_configured_message: Aby połączyć portfel kryptowalutowy, najpierw skonfiguruj połączenie z dostawcą CoinStats. + not_configured_step1_html: Przejdź do Ustawienia → Dostawcy + not_configured_step2_html: Znajdź dostawcę CoinStats + not_configured_step3_html: Postępuj zgodnie z podanymi instrukcjami konfiguracji, aby ukończyć konfigurację dostawcy + go_to_settings: Przejdź do ustawień dostawców + setup_instructions: 'Instrukcje konfiguracji:' + step1_html: Odwiedź panel publicznego API CoinStats, aby uzyskać klucz API. + step2: Wprowadź poniżej swój klucz API i kliknij Skonfiguruj. + step3_html: Po udanym połączeniu przejdź do zakładki Konta, aby skonfigurować portfele kryptowalutowe. + api_key_label: Klucz API + api_key_placeholder: Wymagane + configure: Skonfiguruj + update_configuration: Skonfiguruj ponownie + default_name: Połączenie CoinStats + status_configured_html: Gotowe do użycia + status_not_configured: Nieskonfigurowane + coinstats_item: + deletion_in_progress: Trwa usuwanie danych portfela kryptowalutowego… + provider_name: CoinStats + syncing: Synchronizacja… + sync_status: + no_accounts: Nie znaleziono portfeli kryptowalutowych + all_synced: + one: "Zsynchronizowano %{count} portfel kryptowalutowy" + few: "Zsynchronizowano %{count} portfele kryptowalutowe" + many: "Zsynchronizowano %{count} portfeli kryptowalutowych" + other: "Zsynchronizowano %{count} portfeli kryptowalutowych" + partial_sync: "Zsynchronizowano %{linked_count} portfeli kryptowalutowych, %{unlinked_count} wymaga konfiguracji" + reconnect: Połącz ponownie + status: Ostatnia synchronizacja %{timestamp} temu + status_never: Nigdy nie synchronizowano + status_with_summary: Ostatnia synchronizacja %{timestamp} temu • %{summary} + update_api_key: Zaktualizuj klucz API + delete: Usuń + no_wallets_title: Brak połączonych portfeli kryptowalutowych + no_wallets_message: Obecnie żadne portfele kryptowalutowe nie są połączone z CoinStats. diff --git a/config/locales/views/components/pl.yml b/config/locales/views/components/pl.yml new file mode 100644 index 000000000..3c55c50f6 --- /dev/null +++ b/config/locales/views/components/pl.yml @@ -0,0 +1,81 @@ +--- +pl: + provider_sync_summary: + title: Podsumowanie synchronizacji + last_sync: 'Ostatnia synchronizacja: %{time_ago} temu' + accounts: + title: Konta + total: 'Łącznie: %{count}' + linked: 'Połączone: %{count}' + unlinked: 'Niepołączone: %{count}' + institutions: 'Instytucje: %{count}' + transactions: + title: Transakcje + seen: 'Wykryte: %{count}' + imported: 'Zaimportowane: %{count}' + updated: 'Zaktualizowane: %{count}' + skipped: 'Pominięte: %{count}' + fetching: Pobieranie z biura maklerskiego... + protected: + one: "%{count} wpis chroniony (nie nadpisano)" + few: "%{count} wpisy chronione (nie nadpisano)" + many: "%{count} wpisów chronionych (nie nadpisano)" + other: "%{count} wpisów chronionych (nie nadpisano)" + view_protected: Zobacz chronione wpisy + skip_reasons: + excluded: Wykluczone + user_modified: Zmodyfikowane przez użytkownika + import_locked: Import z CSV + protected: Chronione + holdings: + title: Pozycje + found: 'Znalezione: %{count}' + processed: 'Przetworzone: %{count}' + trades: + title: Transakcje giełdowe + imported: 'Zaimportowane: %{count}' + skipped: 'Pominięte: %{count}' + fetching: Pobieranie aktywności z biura maklerskiego... + health: + title: Kondycja + view_error_details: Zobacz szczegóły błędów + rate_limited: Ograniczenie limitu %{time_ago} + recently: niedawno + errors: 'Błędy: %{count}' + pending_reconciled: + one: "Uzgodniono %{count} zduplikowaną transakcję oczekującą" + few: "Uzgodniono %{count} zduplikowane transakcje oczekujące" + many: "Uzgodniono %{count} zduplikowanych transakcji oczekujących" + other: "Uzgodniono %{count} zduplikowanych transakcji oczekujących" + view_reconciled: Zobacz uzgodnione transakcje + duplicate_suggestions: + one: "%{count} możliwy duplikat wymaga przeglądu" + few: "%{count} możliwe duplikaty wymagają przeglądu" + many: "%{count} możliwych duplikatów wymaga przeglądu" + other: "%{count} możliwe duplikaty wymagają przeglądu" + view_duplicate_suggestions: Zobacz sugerowane duplikaty + stale_pending: + one: "%{count} przestarzała transakcja oczekująca (wykluczona z budżetów)" + few: "%{count} przestarzałe transakcje oczekujące (wykluczone z budżetów)" + many: "%{count} przestarzałych transakcji oczekujących (wykluczonych z budżetów)" + other: "%{count} przestarzałych transakcji oczekujących (wykluczonych z budżetów)" + view_stale_pending: Zobacz dotknięte konta + stale_pending_count: + one: "%{count} transakcja" + few: "%{count} transakcje" + many: "%{count} transakcji" + other: "%{count} transakcji" + stale_unmatched: + one: "%{count} transakcja oczekująca wymaga ręcznego przeglądu" + few: "%{count} transakcje oczekujące wymagają ręcznego przeglądu" + many: "%{count} transakcji oczekujących wymaga ręcznego przeglądu" + other: "%{count} transakcji oczekujących wymaga ręcznego przeglądu" + view_stale_unmatched: Zobacz transakcje wymagające przeglądu + stale_unmatched_count: + one: "%{count} transakcja" + few: "%{count} transakcje" + many: "%{count} transakcji" + other: "%{count} transakcji" + data_warnings: 'Ostrzeżenia danych: %{count}' + notices: 'Powiadomienia: %{count}' + view_data_quality: Zobacz szczegóły jakości danych diff --git a/config/locales/views/credit_cards/pl.yml b/config/locales/views/credit_cards/pl.yml new file mode 100644 index 000000000..2b5a0fa81 --- /dev/null +++ b/config/locales/views/credit_cards/pl.yml @@ -0,0 +1,25 @@ +--- +pl: + credit_cards: + edit: + edit: Edytuj %{account} + form: + annual_fee: Opłata roczna + annual_fee_placeholder: '99' + apr: RRSO + apr_placeholder: '15.99' + available_credit: Dostępny limit kredytowy + available_credit_placeholder: '10000' + expiration_date: Data ważności + minimum_payment: Minimalna spłata + minimum_payment_placeholder: '100' + new: + title: Wprowadź dane karty kredytowej + overview: + amount_owed: Kwota zadłużenia + annual_fee: Opłata roczna + apr: RRSO + available_credit: Dostępny limit kredytowy + expiration_date: Data ważności + minimum_payment: Minimalna spłata + unknown: Nieznane diff --git a/config/locales/views/cryptos/pl.yml b/config/locales/views/cryptos/pl.yml new file mode 100644 index 000000000..6dc0cfe87 --- /dev/null +++ b/config/locales/views/cryptos/pl.yml @@ -0,0 +1,20 @@ +--- +pl: + cryptos: + edit: + edit: Edytuj %{account} + form: + subtype_label: Typ konta + subtype_prompt: Wybierz typ... + subtype_none: Nie określono + tax_treatment_label: Sposób opodatkowania + tax_treatment_hint: Większość kryptowalut jest utrzymywana na kontach opodatkowanych. Wybierz inną opcję, jeśli środki są trzymane na koncie uprzywilejowanym podatkowo, np. samodzielnie prowadzonym IRA. + new: + title: Wprowadź saldo konta + subtypes: + wallet: + short: Portfel + long: Portfel kryptowalutowy + exchange: + short: Giełda + long: Giełda kryptowalut diff --git a/config/locales/views/depositories/pl.yml b/config/locales/views/depositories/pl.yml new file mode 100644 index 000000000..5f526fb2b --- /dev/null +++ b/config/locales/views/depositories/pl.yml @@ -0,0 +1,10 @@ +--- +pl: + depositories: + edit: + edit: Edytuj %{account} + form: + none: Brak + subtype_prompt: Wybierz typ konta + new: + title: Wprowadź saldo konta diff --git a/config/locales/views/email_confirmation_mailer/pl.yml b/config/locales/views/email_confirmation_mailer/pl.yml new file mode 100644 index 000000000..6f086bd37 --- /dev/null +++ b/config/locales/views/email_confirmation_mailer/pl.yml @@ -0,0 +1,9 @@ +--- +pl: + email_confirmation_mailer: + confirmation_email: + body: Niedawno poproszono o zmianę Twojego adresu e-mail. Kliknij przycisk poniżej, aby potwierdzić tę zmianę. + cta: Potwierdź zmianę e-maila + expiry_notice: Ten link wygaśnie za %{hours} godzin. + greeting: Cześć! + subject: "%{product_name}: potwierdź zmianę adresu e-mail" diff --git a/config/locales/views/enable_banking_items/pl.yml b/config/locales/views/enable_banking_items/pl.yml new file mode 100644 index 000000000..596febecb --- /dev/null +++ b/config/locales/views/enable_banking_items/pl.yml @@ -0,0 +1,57 @@ +--- +pl: + enable_banking_items: + authorize: + authorization_failed: Nie udało się rozpocząć autoryzacji + bank_required: Wybierz bank. + invalid_redirect: Otrzymany adres URL autoryzacji jest nieprawidłowy. Spróbuj ponownie. + redirect_uri_not_allowed: Przekierowanie niedozwolone. Skonfiguruj `%{callback_url}` w ustawieniach aplikacji Enable Banking. + unexpected_error: Wystąpił nieoczekiwany błąd. Spróbuj ponownie. + callback: + authorization_error: Autoryzacja nie powiodła się + invalid_callback: Nieprawidłowe parametry callback. + item_not_found: Nie znaleziono połączenia. + session_failed: Nie udało się zakończyć autoryzacji + success: Pomyślnie połączono z bankiem. Twoje konta są synchronizowane. + unexpected_error: Wystąpił nieoczekiwany błąd. Spróbuj ponownie. + complete_account_setup: + all_skipped: Wszystkie konta zostały pominięte. Możesz skonfigurować je później na stronie kont. + no_accounts: Brak kont dostępnych do konfiguracji. + success: + one: Pomyślnie utworzono %{count} konto! + few: Pomyślnie utworzono %{count} konta! + many: Pomyślnie utworzono %{count} kont! + other: Pomyślnie utworzono %{count} konta! + create: + success: Konfiguracja Enable Banking zakończona pomyślnie. + destroy: + success: Połączenie Enable Banking zostało dodane do kolejki usuwania. + link_accounts: + already_linked: Wybrane konta są już połączone. + link_failed: Nie udało się połączyć kont + no_accounts_selected: Nie wybrano żadnych kont. + no_session: Brak aktywnego połączenia Enable Banking. Najpierw połącz się z bankiem. + success: + one: Pomyślnie połączono %{count} konto. + few: Pomyślnie połączono %{count} konta. + many: Pomyślnie połączono %{count} kont. + other: Pomyślnie połączono %{count} konta. + link_existing_account: + success: Konto zostało pomyślnie połączone z Enable Banking + errors: + only_manual: Można połączyć tylko konta manualne + invalid_enable_banking_account: Wybrano nieprawidłowe konto Enable Banking + new: + link_enable_banking_title: Połącz Enable Banking + reauthorize: + invalid_redirect: Otrzymany adres URL autoryzacji jest nieprawidłowy. Spróbuj ponownie. + reauthorization_failed: Ponowna autoryzacja nie powiodła się + select_bank: + cancel: Anuluj + check_country: Sprawdź ustawienia kodu kraju. + credentials_required: Najpierw skonfiguruj dane uwierzytelniające Enable Banking. + description: Wybierz bank, który chcesz połączyć ze swoimi kontami. + no_banks: Brak dostępnych banków dla tego kraju/regionu. + title: Wybierz swój bank + update: + success: Konfiguracja Enable Banking została zaktualizowana. diff --git a/config/locales/views/entries/pl.yml b/config/locales/views/entries/pl.yml new file mode 100644 index 000000000..fc2f0a03b --- /dev/null +++ b/config/locales/views/entries/pl.yml @@ -0,0 +1,23 @@ +--- +pl: + entries: + create: + success: Wpis został utworzony + destroy: + success: Wpis został usunięty + empty: + description: Spróbuj dodać wpis, zmienić filtry lub doprecyzować wyszukiwanie + title: Nie znaleziono wpisów + loading: + loading: Ładowanie wpisów... + update: + success: Wpis został zaktualizowany + unlock: + success: Wpis został odblokowany. Może zostać zaktualizowany podczas następnej synchronizacji. + protection: + tooltip: Chronione przed synchronizacją + title: Chronione przed synchronizacją + description: Twoje zmiany w tym wpisie nie zostaną nadpisane przez synchronizację z dostawcą. + locked_fields_label: "Zablokowane pola:" + unlock_button: Zezwól synchronizacji na aktualizację + unlock_confirm: Zezwolić synchronizacji na aktualizację tego wpisu? Twoje zmiany mogą zostać nadpisane przy następnej synchronizacji. diff --git a/config/locales/views/family_exports/pl.yml b/config/locales/views/family_exports/pl.yml new file mode 100644 index 000000000..cdde24b00 --- /dev/null +++ b/config/locales/views/family_exports/pl.yml @@ -0,0 +1,31 @@ +--- +pl: + family_exports: + access_denied: Brak dostępu + create: + success: Eksport został rozpoczęty. Wkrótce będzie można go pobrać. + delete_confirmation: Czy na pewno chcesz usunąć ten eksport? Tej akcji nie można cofnąć. + delete_failed_confirmation: Czy na pewno chcesz usunąć ten nieudany eksport? + destroy: + success: Eksport został pomyślnie usunięty + export_not_ready: Eksport nie jest jeszcze gotowy do pobrania + exporting: Trwa eksportowanie... + index: + title: Eksporty + new: Nowy eksport + table: + title: Eksporty + header: + date: Data + filename: Nazwa pliku + status: Status + actions: Akcje + row: + status: + in_progress: W trakcie + complete: Zakończony + failed: Nieudany + actions: + delete: Usuń + download: Pobierz + empty: Brak eksportów. diff --git a/config/locales/views/holdings/pl.yml b/config/locales/views/holdings/pl.yml new file mode 100644 index 000000000..c9e364c13 --- /dev/null +++ b/config/locales/views/holdings/pl.yml @@ -0,0 +1,94 @@ +--- +pl: + holdings: + cash: + brokerage_cash: Gotówka maklerska + destroy: + success: Pozycja została usunięta + update: + success: Koszt bazowy został zapisany. + error: Nieprawidłowa wartość kosztu bazowego. + unlock_cost_basis: + success: Odblokowano koszt bazowy. Może zostać zaktualizowany przy następnej synchronizacji. + remap_security: + success: Papier wartościowy został pomyślnie zaktualizowany. + security_not_found: Nie udało się znaleźć wybranego papieru wartościowego. + reset_security: + success: Zresetowano papier wartościowy do wartości od dostawcy. + sync_prices: + success: Dane rynkowe zostały pomyślnie zsynchronizowane. + unavailable: Synchronizacja danych rynkowych nie jest dostępna dla papierów offline. + provider_error: Nie udało się pobrać najnowszych cen. Spróbuj ponownie za kilka minut. + errors: + security_collision: 'Nie można zmienić mapowania: masz już pozycję dla %{ticker} z dnia %{date}.' + cost_basis_sources: + manual: Ustawione przez użytkownika + calculated: Z transakcji giełdowych + provider: Od dostawcy + cost_basis_cell: + unknown: "--" + set_cost_basis_header: Ustaw koszt bazowy dla %{ticker} (%{qty} akcji) + total_cost_basis_label: Łączny koszt bazowy + or_per_share_label: 'Lub wpisz na akcję:' + per_share: na akcję + cancel: Anuluj + save: Zapisz + overwrite_confirm_title: Nadpisać koszt bazowy? + overwrite_confirm_body: Spowoduje to zastąpienie aktualnego kosztu bazowego wynoszącego %{current}. + holding: + per_share: na akcję + shares: "%{qty} akcji" + unknown: "--" + no_cost_basis: Brak kosztu bazowego + index: + average_cost: Średni koszt + holdings: Pozycje + name: Nazwa + new_holding: Nowa aktywność + no_holdings: Brak pozycji do wyświetlenia. + return: Łączny zwrot + weight: Udział + missing_price_tooltip: + description: Ta inwestycja ma brakujące wartości i nie mogliśmy obliczyć jej zwrotów ani wartości. + missing_data: Brakujące dane + show: + avg_cost_label: Średni koszt + current_market_price_label: Aktualna cena rynkowa + delete: Usuń + delete_subtitle: Spowoduje to usunięcie pozycji i wszystkich powiązanych transakcji na tym koncie. Tej akcji nie można cofnąć. + delete_title: Usuń pozycję + edit_security: Edytuj papier wartościowy + history: Historia + no_trade_history: Brak historii transakcji dla tej pozycji. + overview: Przegląd + portfolio_weight_label: Udział w portfelu + settings: Ustawienia + security_label: Papier wartościowy + originally: wcześniej %{ticker} + search_security: Wyszukaj papier wartościowy + search_security_placeholder: Szukaj po tickerze lub nazwie + cancel: Anuluj + remap_security: Zapisz + no_security_provider: Dostawca papierów wartościowych nie jest skonfigurowany. Nie można wyszukiwać papierów wartościowych. + security_remapped_label: Papier wartościowy zmieniony + provider_sent: 'Dostawca przesłał: %{ticker}' + reset_to_provider: Przywróć wartość od dostawcy + reset_confirm_title: Przywrócić papier wartościowy do wartości od dostawcy? + reset_confirm_body: Spowoduje to zmianę papieru wartościowego z %{current} z powrotem na %{original} i przeniesienie wszystkich powiązanych transakcji. + ticker_label: Symbol ticker + trade_history_entry: "%{qty} akcji %{security} po %{price}" + total_return_label: Łączny zwrot + unknown: Nieznane + cost_basis_locked_label: Podstawa kosztowa jest zablokowana + cost_basis_locked_description: Ręcznie ustawiona podstawa kosztowa nie będzie zmieniana przez synchronizacje. + unlock_cost_basis: Odblokuj + unlock_confirm_title: Odblokować podstawę kosztową? + unlock_confirm_body: To pozwoli aktualizować podstawę kosztową przez synchronizacje dostawcy lub obliczenia transakcji. + shares_label: Akcje + book_value_label: Wartość księgowa + market_value_label: Wartość rynkowa + market_data_label: Dane rynkowe + market_data_sync_button: Odśwież + last_price_update: Ostatnia aktualizacja ceny + syncing: Synchronizacja... + never: Nigdy diff --git a/config/locales/views/impersonation_sessions/pl.yml b/config/locales/views/impersonation_sessions/pl.yml new file mode 100644 index 000000000..3bc49a92b --- /dev/null +++ b/config/locales/views/impersonation_sessions/pl.yml @@ -0,0 +1,15 @@ +--- +pl: + impersonation_sessions: + approve: + success: Wniosek został zatwierdzony + complete: + success: Sesja została zakończona + create: + success: Wniosek został wysłany do użytkownika. Oczekiwanie na zatwierdzenie. + join: + success: Dołączono do sesji + leave: + success: Opuszczono sesję + reject: + success: Wniosek został odrzucony diff --git a/config/locales/views/imports/pl.yml b/config/locales/views/imports/pl.yml new file mode 100644 index 000000000..af8db190c --- /dev/null +++ b/config/locales/views/imports/pl.yml @@ -0,0 +1,241 @@ +--- +pl: + import: + qif_category_selections: + show: + title: Wybierz kategorie i tagi + description: Wybierz, które kategorie i tagi z pliku QIF chcesz zaimportować do Sure. Odznaczone elementy zostaną usunięte z tych transakcji. + categories_heading: Kategorie + categories_found: + one: Znaleziono 1 kategorię + few: Znaleziono %{count} kategorie + many: Znaleziono %{count} kategorii + other: Znaleziono %{count} kategorii + category_name_col: Nazwa kategorii + transactions_col: Transakcje + tags_heading: Tagi + tags_found: + one: Znaleziono 1 tag + few: Znaleziono %{count} tagi + many: Znaleziono %{count} tagów + other: Znaleziono %{count} tagów + tag_name_col: Nazwa tagu + txn_count: + one: 1 transakcja + few: "%{count} transakcje" + many: "%{count} transakcji" + other: "%{count} transakcji" + split_warning_title: Wykryto transakcje dzielone + split_warning_description: Ten plik QIF zawiera transakcje dzielone. Podziały nie są jeszcze obsługiwane, więc każda taka transakcja zostanie zaimportowana jako pojedyncza transakcja z pełną kwotą i bez kategorii. Szczegółowy podział nie zostanie zachowany. + split_badge: podział + empty_state_primary: W tym pliku QIF nie znaleziono kategorii ani tagów. + empty_state_secondary: Wszystkie transakcje zostaną zaimportowane bez kategorii i tagów. + submit: Przejdź do podsumowania + cleans: + show: + description: Edytuj swoje dane w tabeli poniżej. Czerwone komórki są nieprawidłowe. + errors_notice: Masz błędy w danych. Najedź na błąd, aby zobaczyć szczegóły. + errors_notice_mobile: Masz błędy w danych. Dotknij dymku błędu, aby zobaczyć szczegóły. + title: Wyczyść dane + configurations: + update: + success: Import został pomyślnie skonfigurowany. + category_import: + button_label: Dalej + description: Prześlij prosty plik CSV, taki jak ten generowany podczas eksportu danych. Kolumny zostaną automatycznie zmapowane. + instructions: Wybierz Dalej, aby przeanalizować plik CSV i przejść do etapu czyszczenia. + mint_import: + date_format_label: Format daty + rule_import: + description: Skonfiguruj import reguł. Reguły zostaną utworzone lub zaktualizowane na podstawie danych z CSV. + process_button: Przetwórz reguły + process_help: Kliknij poniższy przycisk, aby przetworzyć CSV i wygenerować wiersze reguł. + show: + description: Wybierz kolumny odpowiadające poszczególnym polom w pliku CSV. + title: Skonfiguruj import + trade_import: + date_format_label: Format daty + transaction_import: + date_format_label: Format daty + rows_to_skip_label: Pomiń pierwsze n wierszy + confirms: + sure_import: + title: Potwierdź import + description: Przejrzyj dane, które zostaną zaimportowane z pliku eksportu. + summary: Podsumowanie importu + empty_summary: Nie udało się znaleźć w tym pliku żadnych rekordów nadających się do importu. Plik może być pusty albo jego wiersze nie pasują do oczekiwanego formatu eksportu. Każdy wiersz powinien być obiektem JSON z kluczami "type" i "data" oraz typami obsługiwanymi przez ten import. + publish_button: Rozpocznij import + cancel: Anuluj + mappings: + create_account: Utwórz konto + csv_mapping_label: "%{mapping} w CSV" + sure_mapping_label: "%{mapping} w %{product_name}" + no_accounts: Nie masz jeszcze żadnych kont. Utwórz konto, którego można użyć dla nieprzypisanych wierszy w CSV, albo wróć do etapu czyszczenia i podaj nazwę konta, której można użyć. + rows_label: Wiersze + unassigned_account: Chcesz utworzyć nowe konto dla nieprzypisanych wierszy? + show: + account_mapping_description: Przypisz wszystkie konta z importowanego pliku do istniejących kont %{product}. Możesz też dodać nowe konta lub zostawić je bez przypisania. + account_mapping_title: Przypisz konta + account_type_mapping_description: Przypisz wszystkie typy kont z importowanego pliku do typów używanych w %{product}. + account_type_mapping_title: Przypisz typy kont + category_mapping_description: Przypisz wszystkie kategorie z importowanego pliku do istniejących kategorii %{product}. Możesz też dodać nowe kategorie lub zostawić je bez przypisania. + category_mapping_title: Przypisz kategorie + tag_mapping_description: Przypisz wszystkie tagi z importowanego pliku do istniejących tagów %{product}. Możesz też dodać nowe tagi lub zostawić je bez przypisania. + tag_mapping_title: Przypisz tagi + uploads: + show: + qif_title: Prześlij plik QIF + qif_description: Wybierz konto, do którego należy ten plik QIF, a następnie prześlij eksport .qif z Quicken. + qif_account_label: Konto + qif_account_placeholder: Wybierz konto… + qif_file_prompt: aby dodać tutaj plik QIF + qif_file_hint: tylko pliki .qif + qif_submit: Prześlij QIF + browse: Przeglądaj + csv_file_prompt: aby dodać tutaj plik CSV + description: Wklej lub prześlij poniżej swój plik CSV. Przed rozpoczęciem zapoznaj się z instrukcjami w tabeli poniżej. + instructions_1: Poniżej znajduje się przykładowy plik CSV z kolumnami dostępnymi do importu. + instructions_2: Twój plik CSV musi zawierać wiersz nagłówka. + instructions_3: Możesz nazwać kolumny dowolnie. Zmapujesz je na późniejszym etapie. + instructions_4: Kolumny oznaczone gwiazdką (*) są wymagane. + instructions_5: W liczbach nie używaj przecinków, symboli walut ani nawiasów. + title: Zaimportuj dane + sure_import: + title: Importuj z eksportu + description: Prześlij plik all.ndjson z eksportu danych, aby przywrócić konta, transakcje, kategorie i inne dane. + drop_title: Upuść plik NDJSON, aby go przesłać + drop_subtitle: Plik zostanie przesłany automatycznie + browse: Przeglądaj + browse_hint: aby dodać tutaj plik all.ndjson + upload_button: Prześlij NDJSON + hint_html: Prześlij plik all.ndjson z archiwum ZIP eksportu danych + ndjson_invalid: Plik musi być poprawnym NDJSON i zawierać co najmniej jeden rekord + imports: + type_labels: + transaction_import: Import transakcji + trade_import: Import transakcji giełdowych + account_import: Import kont + mint_import: Import z Mint + qif_import: Import QIF + category_import: Import kategorii + rule_import: Import reguł + pdf_import: Import PDF + document_import: Import dokumentu + sure_import: Import z Sure + steps: + upload: Przesyłanie + configure: Konfiguracja + clean: Czyszczenie + map: Mapowanie + confirm: Potwierdzenie + select: Wybór + index: + title: Importy + new: Nowy import + table: + title: Importy + header: + date: Data + operation: Operacja + status: Status + actions: Akcje + row: + type_labels: + transaction_import: Transakcja + trade_import: Transakcja giełdowa + account_import: Konto + mint_import: "Mint" + qif_import: "QIF" + category_import: Kategoria + rule_import: Reguła + pdf_import: "PDF" + document_import: Dokument + sure_import: "Sure" + status: + in_progress: W toku + uploading: Przetwarzanie wierszy + reverting: Cofanie + revert_failed: Nie udało się cofnąć + complete: Zakończono + failed: Niepowodzenie + actions: + revert: Cofnij + confirm_revert: To usunie zaimportowane transakcje, ale nadal będzie można w każdej chwili przejrzeć i ponownie zaimportować dane. + delete: Usuń + view: Zobacz + empty: Brak importów. + new: + description: Importuj dane z narzędzia finansowego lub prześlij surowe pliki danych. + tab_financial_tools: Narzędzia i pliki finansowe + tab_raw_data: Surowe dane + coming_soon: Wkrótce + import_ynab: Importuj z YNAB + import_accounts: Importuj konta + import_categories: Importuj kategorie + import_mint: Importuj z Mint + import_portfolio: Importuj inwestycje + import_rules: Importuj reguły + import_transactions: Importuj transakcje + import_qif: Importuj z Quicken (QIF) + import_sure: Importuj z Sure + import_sure_description: Pełny plik eksportu .ndjson + import_file: Importuj dokument + import_file_description: Analiza PDF wspierana przez AI oraz przesyłanie przeszukiwalnych plików + requires_account: Najpierw zaimportuj konta, aby odblokować tę opcję. + resume: Wznów %{type} + sources: Źródła + title: Nowy import + create: + file_too_large: Plik jest zbyt duży. Maksymalny rozmiar to %{max_size} MB. + invalid_file_type: Nieprawidłowy typ pliku. Prześlij plik CSV. + csv_uploaded: Plik CSV został pomyślnie przesłany. + ndjson_uploaded: Plik NDJSON został pomyślnie przesłany. + pdf_too_large: Plik PDF jest zbyt duży. Maksymalny rozmiar to %{max_size} MB. + pdf_processing: Twój plik PDF jest przetwarzany. Po zakończeniu analizy otrzymasz wiadomość e-mail. + invalid_pdf: Przesłany plik nie jest prawidłowym plikiem PDF. + document_too_large: Plik dokumentu jest zbyt duży. Maksymalny rozmiar to %{max_size} MB. + invalid_document_file_type: Nieprawidłowy typ pliku dokumentu dla aktywnego magazynu wektorowego. + document_uploaded: Dokument został pomyślnie przesłany. + document_upload_failed: Nie udało się przesłać dokumentu do magazynu wektorowego. Spróbuj ponownie. + invalid_ndjson_file_type: Nieprawidłowy typ lub format pliku. Prześlij poprawny plik eksportu .ndjson lub .json. + document_provider_not_configured: Nie skonfigurowano magazynu wektorowego dla przesyłania dokumentów. + show: + finalize_upload: Dokończ przesyłanie pliku. + finalize_mappings: Dokończ mapowanie przed przejściem dalej. + ready: + description: Oto podsumowanie nowych elementów, które zostaną dodane do konta po opublikowaniu tego importu. + title: Potwierdź dane importu + summary_item_label: Element + summary_count_label: Liczba + empty_summary: Nie udało się znaleźć w tym pliku żadnych rekordów nadających się do importu. Plik może być pusty albo jego wiersze nie pasują do oczekiwanego formatu eksportu. Każdy wiersz powinien być obiektem JSON z kluczami "type" i "data" oraz typami obsługiwanymi przez ten import. + publish_import: Opublikuj import + back_to_imports: Wróć do importów + errors: + custom_column_requires_inflow: Import niestandardowych kolumn wymaga wybrania kolumny wpływu + document_types: + bank_statement: Wyciąg bankowy + credit_card_statement: Wyciąg z karty kredytowej + investment_statement: Wyciąg inwestycyjny + financial_document: Dokument finansowy + contract: Umowa + other: Inny dokument + unknown: Nieznany dokument + pdf_import: + processing_title: Przetwarzanie PDF + processing_description: Analizujemy Twój dokument przy użyciu AI. Może to chwilę potrwać. Po zakończeniu analizy otrzymasz wiadomość e-mail. + check_status: Sprawdź status + back_to_dashboard: Wróć do pulpitu + failed_title: Przetwarzanie nie powiodło się + failed_description: Nie udało się przetworzyć dokumentu PDF. Spróbuj ponownie lub skontaktuj się ze wsparciem. + try_again: Spróbuj ponownie + delete_import: Usuń import + complete_title: Dokument przeanalizowany + complete_description: Przeanalizowaliśmy Twój plik PDF. Oto, co znaleźliśmy. + document_type_label: Typ dokumentu + summary_label: Podsumowanie + email_sent_notice: Wysłano do Ciebie wiadomość e-mail z dalszymi krokami. + back_to_imports: Wróć do importów + unknown_state_title: Nieznany stan + unknown_state_description: Ten import jest w nieoczekiwanym stanie. Wróć do listy importów. + processing_failed_with_message: "%{message}" + processing_failed_generic: "Przetwarzanie nie powiodło się: %{error}" diff --git a/config/locales/views/indexa_capital_items/pl.yml b/config/locales/views/indexa_capital_items/pl.yml new file mode 100644 index 000000000..abab63caa --- /dev/null +++ b/config/locales/views/indexa_capital_items/pl.yml @@ -0,0 +1,247 @@ +--- +pl: + indexa_capital_items: + sync_status: + no_accounts: Nie znaleziono kont + synced: + one: Zsynchronizowano %{count} konto + few: Zsynchronizowano %{count} konta + many: Zsynchronizowano %{count} kont + other: Zsynchronizowano %{count} konta + synced_with_setup: Zsynchronizowano %{linked}, %{unlinked} wymaga konfiguracji + institution_summary: + none: Nie połączono żadnych instytucji + count: + one: "%{count} instytucja" + few: "%{count} instytucje" + many: "%{count} instytucji" + other: "%{count} instytucji" + errors: + provider_not_configured: Dostawca IndexaCapital nie jest skonfigurowany + sync: + status: + importing: Importowanie kont z IndexaCapital... + processing: Przetwarzanie pozycji i aktywności... + calculating: Obliczanie sald... + importing_data: Importowanie danych konta... + checking_setup: Sprawdzanie konfiguracji kont... + needs_setup: "%{count} kont wymaga konfiguracji..." + success: Synchronizacja rozpoczęta + panel: + setup_instructions: 'Instrukcje konfiguracji:' + step_1: Wejdź do panelu Indexa Capital, aby wygenerować token API tylko do odczytu + step_2: Wklej poniżej token API i kliknij Zapisz + step_3: Po pomyślnym połączeniu przejdź do zakładki Konta, aby skonfigurować nowe konta + field_descriptions: 'Opisy pól:' + optional: "(opcjonalne)" + required: "(wymagane)" + optional_with_default: "(opcjonalne, domyślnie %{default_value})" + alternative_auth: Lub użyj uwierzytelniania loginem i hasłem... + save_button: Zapisz konfigurację + update_button: Zaktualizuj konfigurację + status_configured_html: Skonfigurowano i gotowe do użycia. Przejdź do zakładki Konta, aby zarządzać kontami i je konfigurować. + status_not_configured: Nie skonfigurowano + fields: + api_token: + label: Token API + description: Twój token API tylko do odczytu z panelu Indexa Capital + placeholder_new: Wklej tutaj swój token API + placeholder_update: Wprowadź nowy token API, aby zaktualizować + username: + label: Nazwa użytkownika + description: Twoja nazwa użytkownika lub e-mail w Indexa Capital + placeholder_new: Wklej tutaj nazwę użytkownika + placeholder_update: Wprowadź nową nazwę użytkownika, aby zaktualizować + document: + label: ID dokumentu + description: Twój dokument lub identyfikator w Indexa Capital + placeholder_new: Wklej tutaj identyfikator dokumentu + placeholder_update: Wprowadź nowy identyfikator dokumentu, aby zaktualizować + password: + label: Hasło + description: Twoje hasło do Indexa Capital + placeholder_new: Wklej tutaj hasło + placeholder_update: Wprowadź nowe hasło, aby zaktualizować + create: + success: Połączenie IndexaCapital zostało pomyślnie utworzone + update: + success: Połączenie IndexaCapital zostało zaktualizowane + destroy: + success: Połączenie IndexaCapital zostało usunięte + index: + title: Połączenia IndexaCapital + loading: + loading_message: Ładowanie kont IndexaCapital... + loading_title: Ładowanie + link_accounts: + all_already_linked: + one: Wybrane konto (%{names}) jest już połączone + few: 'Wszystkie %{count} wybrane konta są już połączone: %{names}' + many: 'Wszystkie %{count} wybranych kont są już połączone: %{names}' + other: 'Wszystkie %{count} wybrane konta są już połączone: %{names}' + api_error: 'Błąd API: %{message}' + invalid_account_names: + one: Nie można połączyć konta bez nazwy + few: Nie można połączyć %{count} kont bez nazw + many: Nie można połączyć %{count} kont bez nazw + other: Nie można połączyć %{count} kont bez nazw + link_failed: Nie udało się połączyć kont + no_accounts_selected: Wybierz co najmniej jedno konto + no_api_key: Nie znaleziono danych logowania IndexaCapital. Skonfiguruj je w ustawieniach dostawców. + partial_invalid: Pomyślnie połączono %{created_count} kont, %{already_linked_count} było już połączonych, a %{invalid_count} miało nieprawidłowe nazwy + partial_success: 'Pomyślnie połączono %{created_count} kont. %{already_linked_count} było już połączonych: %{already_linked_names}' + success: + one: Pomyślnie połączono %{count} konto + few: Pomyślnie połączono %{count} konta + many: Pomyślnie połączono %{count} kont + other: Pomyślnie połączono %{count} konta + indexa_capital_item: + accounts_need_setup: Konta wymagają konfiguracji + delete: Usuń połączenie + deletion_in_progress: trwa usuwanie... + error: Błąd + more_accounts_available: + one: Dostępne jest jeszcze %{count} konto + few: Dostępne są jeszcze %{count} konta + many: Dostępnych jest jeszcze %{count} kont + other: Dostępnych jest jeszcze %{count} konta + no_accounts_description: To połączenie nie ma jeszcze żadnych połączonych kont. + no_accounts_title: Brak kont + provider_name: IndexaCapital + requires_update: Połączenie wymaga aktualizacji + setup_action: Skonfiguruj nowe konta + setup_description: Połączono %{linked} z %{total} kont. Wybierz typy dla nowo zaimportowanych kont IndexaCapital. + setup_needed: Nowe konta gotowe do konfiguracji + status: Zsynchronizowano %{timestamp} temu — %{summary} + status_never: Nigdy nie synchronizowano + syncing: Trwa synchronizacja... + total: Łącznie + unlinked: Niepołączone + update_credentials: Zaktualizuj dane uwierzytelniające + select_accounts: + accounts_selected: wybrano konta + api_error: 'Błąd API: %{message}' + cancel: Anuluj + configure_name_in_provider: Nie można importować. Skonfiguruj nazwę konta w IndexaCapital. + description: Wybierz konta, które chcesz połączyć ze swoim kontem %{product_name}. + link_accounts: Połącz wybrane konta + no_accounts_found: Nie znaleziono kont. Sprawdź dane logowania IndexaCapital. + no_api_key: Dane logowania IndexaCapital nie są skonfigurowane. Skonfiguruj je w Ustawieniach. + no_credentials_configured: Najpierw skonfiguruj dane logowania IndexaCapital w ustawieniach dostawców. + no_name_placeholder: "(Brak nazwy)" + title: Wybierz konta IndexaCapital + select_existing_account: + account_already_linked: To konto jest już połączone z dostawcą + all_accounts_already_linked: Wszystkie konta IndexaCapital są już połączone + api_error: 'Błąd API: %{message}' + balance_label: 'Saldo:' + cancel: Anuluj + cancel_button: Anuluj + configure_name_in_provider: Nie można importować. Skonfiguruj nazwę konta w IndexaCapital. + connect_hint: Połącz konto IndexaCapital, aby włączyć automatyczną synchronizację. + description: Wybierz konto IndexaCapital, które chcesz połączyć z tym kontem. Transakcje będą synchronizowane i automatycznie deduplikowane. + header: Połącz z IndexaCapital + link_account: Połącz konto + link_button: Połącz to konto + linking_to: 'Łączenie z:' + no_account_specified: Nie wskazano konta + no_accounts: Nie znaleziono niepołączonych kont IndexaCapital. + no_accounts_found: Nie znaleziono kont IndexaCapital. Sprawdź dane logowania. + no_api_key: Dane logowania IndexaCapital nie są skonfigurowane. Skonfiguruj je w Ustawieniach. + no_credentials_configured: Najpierw skonfiguruj dane logowania IndexaCapital w ustawieniach dostawców. + no_name_placeholder: "(Brak nazwy)" + settings_link: Przejdź do ustawień dostawców + subtitle: Wybierz konto IndexaCapital + title: Połącz %{account_name} z IndexaCapital + link_existing_account: + account_already_linked: To konto jest już połączone z dostawcą + api_error: 'Błąd API: %{message}' + invalid_account_name: Nie można połączyć konta bez nazwy + provider_account_already_linked: To konto IndexaCapital jest już połączone z innym kontem + provider_account_not_found: Nie znaleziono konta IndexaCapital + missing_parameters: Brakuje wymaganych parametrów + no_api_key: Nie znaleziono danych logowania IndexaCapital. Skonfiguruj je w ustawieniach dostawców. + success: Pomyślnie połączono %{account_name} z IndexaCapital + setup_accounts: + account_type_label: 'Typ konta:' + accounts_count: + one: Dostępne %{count} konto + few: Dostępne %{count} konta + many: Dostępnych %{count} kont + other: Dostępnych %{count} konta + all_accounts_linked: Wszystkie Twoje konta IndexaCapital zostały już skonfigurowane. + api_error: 'Błąd API: %{message}' + creating: Tworzenie kont... + fetch_failed: Nie udało się pobrać kont + import_selected: Importuj wybrane konta + instructions: Wybierz konta, które chcesz zaimportować z IndexaCapital. Możesz wybrać wiele kont. + no_accounts: Nie znaleziono niepołączonych kont dla tego połączenia IndexaCapital. + no_accounts_to_setup: Brak kont do skonfigurowania + no_api_key: Dane logowania IndexaCapital nie są skonfigurowane. Sprawdź ustawienia połączenia. + select_all: Zaznacz wszystkie + account_types: + skip: Pomiń to konto + depository: Konto bieżące lub oszczędnościowe + credit_card: Karta kredytowa + investment: Konto inwestycyjne + crypto: Konto kryptowalutowe + loan: Pożyczka lub hipoteka + other_asset: Inne aktywo + subtype_labels: + depository: 'Podtyp konta:' + credit_card: '' + investment: 'Typ inwestycji:' + crypto: '' + loan: 'Typ pożyczki:' + other_asset: '' + subtype_messages: + credit_card: Karty kredytowe zostaną automatycznie skonfigurowane jako konta kart kredytowych. + other_asset: Dla innych aktywów nie są potrzebne dodatkowe opcje. + crypto: Konta kryptowalutowe zostaną skonfigurowane do śledzenia pozycji i transakcji. + subtypes: + depository: + checking: Bieżące + savings: Oszczędnościowe + hsa: Konto oszczędnościowe na cele zdrowotne + cd: Lokata terminowa + money_market: Rynek pieniężny + investment: + brokerage: Maklerskie + pension: Emerytalne + retirement: Emerytalne + 401k: 401(k) + roth_401k: Roth 401(k) + 403b: 403(b) + tsp: Plan oszczędnościowy TSP + 529_plan: Plan 529 + hsa: Konto oszczędnościowe na cele zdrowotne + mutual_fund: Fundusz inwestycyjny + ira: Tradycyjne IRA + roth_ira: Roth IRA + angel: Inwestycja anielska + loan: + mortgage: Hipoteka + student: Pożyczka studencka + auto: Kredyt samochodowy + other: Inna pożyczka + balance: Saldo + cancel: Anuluj + choose_account_type: 'Wybierz poprawny typ konta dla każdego konta IndexaCapital:' + create_accounts: Utwórz konta + creating_accounts: Tworzenie kont... + historical_data_range: 'Zakres danych historycznych:' + subtitle: Wybierz poprawne typy dla importowanych kont + sync_start_date_help: Wybierz, jak daleko wstecz chcesz synchronizować historię transakcji. + sync_start_date_label: 'Rozpocznij synchronizację transakcji od:' + title: Skonfiguruj konta IndexaCapital + complete_account_setup: + all_skipped: Wszystkie konta zostały pominięte. Nie utworzono żadnych kont. + creation_failed: 'Nie udało się utworzyć kont: %{error}' + no_accounts: Brak kont do skonfigurowania. + success: + one: Pomyślnie utworzono %{count} konto. + few: Pomyślnie utworzono %{count} konta. + many: Pomyślnie utworzono %{count} kont. + other: Pomyślnie utworzono %{count} konta. + preload_accounts: + no_credentials_configured: Najpierw skonfiguruj dane logowania IndexaCapital w ustawieniach dostawców. diff --git a/config/locales/views/investments/pl.yml b/config/locales/views/investments/pl.yml new file mode 100644 index 000000000..94ab55f34 --- /dev/null +++ b/config/locales/views/investments/pl.yml @@ -0,0 +1,120 @@ +--- +pl: + investments: + edit: + edit: Edytuj %{account} + form: + none: Brak + subtype_prompt: Wybierz typ inwestycji + new: + title: Wprowadź saldo konta + show: + chart_title: Łączna wartość + subtypes: + brokerage: + short: Maklerskie + long: Konto maklerskie + 401k: + short: 401(k) + long: 401(k) + roth_401k: + short: Roth 401(k) + long: Roth 401(k) + 403b: + short: 403(b) + long: 403(b) + 457b: + short: 457(b) + long: 457(b) + tsp: + short: TSP + long: Plan oszczędnościowy Thrift + ira: + short: IRA + long: Tradycyjne IRA + roth_ira: + short: Roth IRA + long: Roth IRA + sep_ira: + short: SEP IRA + long: SEP IRA + simple_ira: + short: SIMPLE IRA + long: SIMPLE IRA + 529_plan: + short: 529 Plan + long: Edukacyjny plan oszczędnościowy 529 + hsa: + short: HSA + long: Konto oszczędnościowe na cele zdrowotne + ugma: + short: UGMA + long: Powiernicze konto UGMA + utma: + short: UTMA + long: Powiernicze konto UTMA + isa: + short: ISA + long: Indywidualne konto oszczędnościowe + lisa: + short: LISA + long: Dożywotnie konto ISA + sipp: + short: SIPP + long: Indywidualna emerytura samodzielnie inwestowana + workplace_pension_uk: + short: Emerytalne + long: Emerytura pracownicza + rrsp: + short: RRSP + long: Zarejestrowany emerytalny plan oszczędnościowy + tfsa: + short: TFSA + long: Konto oszczędnościowe zwolnione z podatku + resp: + short: RESP + long: Zarejestrowany edukacyjny plan oszczędnościowy + lira: + short: LIRA + long: Zablokowane konto emerytalne + rrif: + short: RRIF + long: Zarejestrowany fundusz dochodu emerytalnego + super: + short: Super + long: Fundusz emerytalny + smsf: + short: SMSF + long: Samodzielnie zarządzany fundusz emerytalny + pea: + short: PEA + long: Plan oszczędnościowy w akcjach (PEA) + pillar_3a: + short: Pillar 3a + long: Prywatna emerytura (Filar 3a) + riester: + short: Riester + long: Riester-Rente + pension: + short: Emerytalne + long: Emerytalne + retirement: + short: Emerytalne + long: Konto emerytalne + mutual_fund: + short: Fundusz + long: Fundusz inwestycyjny + angel: + short: Anioł + long: Inwestycja anielska + trust: + short: Trust + long: Trust + other: + short: Inne + long: Inna inwestycja + value_tooltip: + cash: Gotówka + holdings: Pozycje + total: Saldo portfela + total_value_tooltip: Łączne saldo portfela to suma gotówki maklerskiej (dostępnej do handlu) oraz aktualnej wartości rynkowej Twoich pozycji. diff --git a/config/locales/views/invitation_mailer/pl.yml b/config/locales/views/invitation_mailer/pl.yml new file mode 100644 index 000000000..dadffa0a8 --- /dev/null +++ b/config/locales/views/invitation_mailer/pl.yml @@ -0,0 +1,8 @@ +--- +pl: + invitation_mailer: + invite_email: + accept_button: Zaakceptuj zaproszenie + body: "%{inviter} zaprosił(a) Cię do dołączenia do %{family} %{moniker} w %{product_name}!" + expiry_notice: To zaproszenie wygaśnie za %{days} dni + greeting: Witamy w %{product_name}! diff --git a/config/locales/views/invitations/pl.yml b/config/locales/views/invitations/pl.yml new file mode 100644 index 000000000..61e18dc0b --- /dev/null +++ b/config/locales/views/invitations/pl.yml @@ -0,0 +1,27 @@ +--- +pl: + invitations: + accept_choice: + create_account: Utwórz nowe konto + joined_household: Dołączono do gospodarstwa domowego. + message: "%{inviter} zaprosił(a) Cię jako %{role}." + sign_in_existing: Mam już konto + title: Dołącz do %{family} + create: + existing_user_added: Użytkownik został dodany do Twojego gospodarstwa domowego. + failure: Nie udało się wysłać zaproszenia + success: Zaproszenie zostało wysłane + destroy: + failure: Wystąpił problem podczas usuwania zaproszenia. + not_authorized: Nie masz uprawnień do zarządzania zaproszeniami. + success: Zaproszenie zostało pomyślnie usunięte. + new: + email_label: Adres e-mail + email_placeholder: Wpisz adres e-mail + role_admin: Administrator + role_guest: Gość + role_label: Rola + role_member: Członek + submit: Wyślij zaproszenie + subtitle: Wyślij zaproszenie do dołączenia do Twojego konta %{moniker} w %{product_name} + title: Zaproś kogoś diff --git a/config/locales/views/invite_codes/pl.yml b/config/locales/views/invite_codes/pl.yml new file mode 100644 index 000000000..ef9108f60 --- /dev/null +++ b/config/locales/views/invite_codes/pl.yml @@ -0,0 +1,6 @@ +--- +pl: + invite_codes: + index: + invite_code_description: Wygeneruj nowy kod, aby zobaczyć go tutaj. Wykorzystane kody nie są już wyświetlane. + no_invite_codes: Brak kodów do wyświetlenia diff --git a/config/locales/views/layout/pl.yml b/config/locales/views/layout/pl.yml new file mode 100644 index 000000000..fe70cadf6 --- /dev/null +++ b/config/locales/views/layout/pl.yml @@ -0,0 +1,24 @@ +--- +pl: + layouts: + application: + privacy_mode: Przełącz tryb prywatności + nav: + assistant: Asystent + budgets: Budżety + home: Strona główna + reports: Raporty + transactions: Transakcje + auth: + existing_account: Masz już konto? + no_account: Nowy użytkownik w %{product_name}? + sign_in: Zaloguj się + sign_up: Załóż konto + shared: + footer: + privacy_policy: Polityka prywatności + terms_of_service: Warunki korzystania + trial: + open_demo: Otwórz demo + data_deleted_in_days: Dane zostaną usunięte za %{days} dni + contribute: Wesprzyj diff --git a/config/locales/views/loans/pl.yml b/config/locales/views/loans/pl.yml new file mode 100644 index 000000000..2ea423f2d --- /dev/null +++ b/config/locales/views/loans/pl.yml @@ -0,0 +1,23 @@ +--- +pl: + loans: + edit: + edit: Edytuj %{account} + form: + interest_rate: Oprocentowanie + interest_rate_placeholder: '5.25' + initial_balance: Początkowe saldo pożyczki + rate_type: Typ oprocentowania + term_months: Okres (miesiące) + term_months_placeholder: '360' + new: + title: Wprowadź dane pożyczki + overview: + interest_rate: Oprocentowanie + monthly_payment: Rata miesięczna + not_applicable: Nie dotyczy + original_principal: Kapitał początkowy + remaining_principal: Pozostały kapitał + term: Okres + type: Typ + unknown: Nieznane diff --git a/config/locales/views/lunchflow_items/pl.yml b/config/locales/views/lunchflow_items/pl.yml new file mode 100644 index 000000000..8d243a3f9 --- /dev/null +++ b/config/locales/views/lunchflow_items/pl.yml @@ -0,0 +1,153 @@ +--- +pl: + lunchflow_items: + create: + success: Połączenie Lunch Flow zostało pomyślnie utworzone + destroy: + success: Połączenie Lunch Flow zostało usunięte + index: + title: Połączenia Lunch Flow + loading: + loading_message: Ładowanie kont Lunch Flow... + loading_title: Ładowanie + link_accounts: + all_already_linked: + one: Wybrane konto (%{names}) jest już połączone + few: 'Wszystkie %{count} wybrane konta są już połączone: %{names}' + many: 'Wszystkie %{count} wybranych kont jest już połączonych: %{names}' + other: 'Wszystkie %{count} wybrane konta są już połączone: %{names}' + api_error: 'Błąd API: %{message}' + invalid_account_names: + one: Nie można połączyć konta bez nazwy + few: Nie można połączyć %{count} kont bez nazwy + many: Nie można połączyć %{count} kont bez nazwy + other: Nie można połączyć %{count} kont bez nazwy + link_failed: Nie udało się połączyć kont + no_accounts_selected: Wybierz co najmniej jedno konto + partial_invalid: Pomyślnie połączono %{created_count} konto(a), %{already_linked_count} było już połączonych, %{invalid_count} konto(a) miało nieprawidłowe nazwy + partial_success: 'Pomyślnie połączono %{created_count} konto(a). %{already_linked_count} konto(a) było już połączonych: %{already_linked_names}' + success: + one: Pomyślnie połączono %{count} konto + few: Pomyślnie połączono %{count} konta + many: Pomyślnie połączono %{count} kont + other: Pomyślnie połączono %{count} kont + lunchflow_item: + accounts_need_setup: Konta wymagają konfiguracji + delete: Usuń połączenie + deletion_in_progress: usuwanie w toku... + error: Błąd + no_accounts_description: To połączenie nie ma jeszcze żadnych połączonych kont. + no_accounts_title: Brak kont + setup_action: Skonfiguruj nowe konta + setup_description: "%{linked} z %{total} kont połączonych. Wybierz typy kont dla nowo zaimportowanych kont Lunch Flow." + setup_needed: Nowe konta gotowe do konfiguracji + status: Zsynchronizowano %{timestamp} temu + status_never: Nigdy nie synchronizowano + status_with_summary: Ostatnia synchronizacja %{timestamp} temu • %{summary} + syncing: Synchronizacja... + total: Łącznie + unlinked: Niepodłączone + select_accounts: + accounts_selected: wybranych kont + api_error: 'Błąd API: %{message}' + cancel: Anuluj + configure_name_in_lunchflow: Nie można zaimportować — skonfiguruj nazwę konta w Lunchflow + description: Wybierz konta, które chcesz połączyć z kontem %{product_name}. + link_accounts: Połącz wybrane konta + no_accounts_found: Nie znaleziono kont. Sprawdź konfigurację klucza API. + no_api_key: Klucz API Lunch Flow nie jest skonfigurowany. Skonfiguruj go w Ustawieniach. + no_name_placeholder: "(Brak nazwy)" + title: Wybierz konta Lunch Flow + select_existing_account: + account_already_linked: To konto jest już połączone z dostawcą + all_accounts_already_linked: Wszystkie konta Lunch Flow są już połączone + api_error: 'Błąd API: %{message}' + cancel: Anuluj + configure_name_in_lunchflow: Nie można zaimportować — skonfiguruj nazwę konta w Lunchflow + description: Wybierz konto Lunch Flow do połączenia z tym kontem. Transakcje będą synchronizowane i deduplikowane automatycznie. + link_account: Połącz konto + no_account_specified: Nie podano konta + no_accounts_found: Nie znaleziono kont Lunch Flow. Sprawdź konfigurację klucza API. + no_api_key: Klucz API Lunch Flow nie jest skonfigurowany. Skonfiguruj go w Ustawieniach. + no_name_placeholder: "(Brak nazwy)" + title: Połącz %{account_name} z Lunch Flow + link_existing_account: + account_already_linked: To konto jest już połączone z dostawcą + api_error: 'Błąd API: %{message}' + invalid_account_name: Nie można połączyć konta bez nazwy + lunchflow_account_already_linked: To konto Lunch Flow jest już połączone z innym kontem + lunchflow_account_not_found: Nie znaleziono konta Lunch Flow + missing_parameters: Brak wymaganych parametrów + success: Pomyślnie połączono %{account_name} z Lunch Flow + setup_accounts: + account_type_label: 'Typ konta:' + all_accounts_linked: Wszystkie Twoje konta Lunch Flow są już skonfigurowane. + api_error: 'Błąd API: %{message}' + fetch_failed: Nie udało się pobrać kont + no_accounts_to_setup: Brak kont do konfiguracji + no_api_key: Klucz API Lunch Flow nie jest skonfigurowany. Sprawdź ustawienia połączenia. + account_types: + skip: Pomiń to konto + depository: Konto bieżące lub oszczędnościowe + credit_card: Karta kredytowa + investment: Konto inwestycyjne + loan: Pożyczka lub kredyt hipoteczny + other_asset: Inne aktywa + subtype_labels: + depository: 'Podtyp konta:' + credit_card: 'Podtyp karty kredytowej:' + investment: 'Typ inwestycji:' + loan: 'Typ pożyczki:' + other_asset: 'Podtyp aktywa:' + subtype_messages: + credit_card: Karty kredytowe zostaną automatycznie skonfigurowane jako konta kart kredytowych. + other_asset: Dla innych aktywów nie są potrzebne dodatkowe opcje. + subtypes: + depository: + checking: Konto bieżące + savings: Oszczędnościowe + hsa: Konto oszczędnościowe na cele zdrowotne + cd: Lokata terminowa + money_market: Rynek pieniężny + investment: + brokerage: Maklerskie + pension: Emerytura + retirement: Emerytalne + 401k: 401(k) + roth_401k: Roth 401(k) + 403b: 403(b) + tsp: Plan oszczędnościowy Thrift + 529_plan: 529 Plan + hsa: Konto oszczędnościowe na cele zdrowotne + mutual_fund: Fundusz inwestycyjny + ira: Tradycyjne IRA + roth_ira: Roth IRA + angel: Anielska + loan: + mortgage: Kredyt hipoteczny + student: Pożyczka studencka + auto: Pożyczka na samochód + other: Inna pożyczka + balance: Saldo + cancel: Anuluj + choose_account_type: 'Wybierz poprawny typ dla każdego konta Lunch Flow:' + create_accounts: Utwórz konta + creating_accounts: Tworzenie kont... + historical_data_range: 'Zakres danych historycznych:' + subtitle: Wybierz poprawne typy dla importowanych kont + sync_start_date_help: Wybierz, jak daleko wstecz chcesz synchronizować historię transakcji. Dostępne są maksymalnie 3 lata historii. + sync_start_date_label: 'Synchronizuj transakcje od:' + title: Skonfiguruj swoje konta Lunch Flow + complete_account_setup: + all_skipped: Wszystkie konta zostały pominięte. Nie utworzono żadnych kont. + creation_failed: 'Nie udało się utworzyć kont: %{error}' + no_accounts: Brak kont do skonfigurowania. + success: + one: Pomyślnie utworzono %{count} konto. + few: Pomyślnie utworzono %{count} konta. + many: Pomyślnie utworzono %{count} kont. + other: Pomyślnie utworzono %{count} konta. + sync: + success: Rozpoczęto synchronizację + update: + success: Połączenie Lunch Flow zostało zaktualizowane diff --git a/config/locales/views/merchants/pl.yml b/config/locales/views/merchants/pl.yml new file mode 100644 index 000000000..c95e40896 --- /dev/null +++ b/config/locales/views/merchants/pl.yml @@ -0,0 +1,70 @@ +--- +pl: + family_merchants: + create: + error: 'Błąd podczas tworzenia kontrahenta: %{error}' + success: Nowy kontrahent został pomyślnie utworzony + destroy: + success: Kontrahent został pomyślnie usunięty + unlinked_success: Kontrahent został odłączony od Twoich transakcji + edit: + title: Edytuj kontrahenta + form: + name_placeholder: Nazwa kontrahenta + website_placeholder: Strona internetowa (np. starbucks.com) + website_hint: Wprowadź stronę internetową kontrahenta, aby automatycznie wyświetlać jego logo + index: + empty: Brak kontrahentów + new: Nowy kontrahent + merge: Scal kontrahentów + title: Kontrahenci + family_title: "Kontrahenci %{moniker}" + family_empty: Brak kontrahentów %{moniker} + provider_title: Kontrahenci od dostawcy + provider_empty: Brak kontrahentów dostawcy połączonych z tym %{moniker} + provider_read_only: Kontrahenci dostawcy są synchronizowani z połączonych instytucji. Nie można ich tutaj edytować. + provider_info: Ci kontrahenci zostali automatycznie wykryci przez połączenia bankowe lub AI. Możesz ich edytować, aby utworzyć własną kopię, albo usunąć, aby odłączyć ich od transakcji. + enhance_info: + one: "%{count} kontrahentowi dostawcy brakuje informacji o stronie internetowej. Ulepsz dane z pomocą AI, aby wykryć strony, wyświetlić loga i scalić duplikaty kontrahentów." + few: "%{count} kontrahentom dostawcy brakuje informacji o stronie internetowej. Ulepsz dane z pomocą AI, aby wykryć strony, wyświetlić loga i scalić duplikaty kontrahentów." + many: "%{count} kontrahentom dostawcy brakuje informacji o stronie internetowej. Ulepsz dane z pomocą AI, aby wykryć strony, wyświetlić loga i scalić duplikaty kontrahentów." + other: "%{count} kontrahentom dostawcy brakuje informacji o stronie internetowej. Ulepsz dane z pomocą AI, aby wykryć strony, wyświetlić loga i scalić duplikaty kontrahentów." + enhance_button: Ulepsz z pomocą AI + unlinked_title: Ostatnio odłączone + unlinked_info: Ci kontrahenci zostali niedawno odłączeni od Twoich transakcji. Znikną z tej listy po 30 dniach, chyba że zostaną ponownie przypisani do transakcji. + table: + merchant: Kontrahent + actions: Akcje + source: Źródło + merchant: + confirm_accept: Usuń kontrahenta + confirm_body: Czy na pewno chcesz usunąć tego kontrahenta? Usunięcie odłączy wszystkie powiązane transakcje i może wpłynąć na raporty. + confirm_title: Usunąć kontrahenta? + delete: Usuń kontrahenta + edit: Edytuj kontrahenta + merge: + title: Scal kontrahentów + description: Wybierz kontrahenta docelowego i kontrahentów do scalenia z nim. Wszystkie transakcje scalonych kontrahentów zostaną przypisane do celu. + target_label: Scal do (docelowy) + select_target: Wybierz kontrahenta docelowego... + sources_label: Kontrahenci do scalenia + sources_hint: Wybrani kontrahenci zostaną scaleni z celem. Kontrahenci rodziny zostaną usunięci, a kontrahenci dostawcy odłączeni. + submit: Scal wybrane + new: + title: Nowy kontrahent + perform_merge: + success: Pomyślnie scalono %{count} kontrahentów + no_merchants_selected: Nie wybrano kontrahentów do scalenia + target_not_found: Nie znaleziono kontrahenta docelowego + invalid_merchants: Wybrano nieprawidłowych kontrahentów + provider_merchant: + edit: Edytuj + remove: Usuń + remove_confirm_title: Usunąć kontrahenta? + remove_confirm_body: Czy na pewno chcesz usunąć %{name}? To odłączy wszystkie powiązane transakcje od tego kontrahenta, ale nie usunie samego kontrahenta. + enhance: + success: Rozpoczęto ulepszanie kontrahentów dostawcy. Kontrahenci zostaną ulepszeni, a duplikaty wkrótce scalone. + already_running: Ulepszanie już trwa. Poczekaj na zakończenie. + update: + success: Kontrahent został pomyślnie zaktualizowany + converted_success: Kontrahent został pomyślnie przekonwertowany i zaktualizowany diff --git a/config/locales/views/mercury_items/pl.yml b/config/locales/views/mercury_items/pl.yml new file mode 100644 index 000000000..4fd424428 --- /dev/null +++ b/config/locales/views/mercury_items/pl.yml @@ -0,0 +1,157 @@ +--- +pl: + mercury_items: + create: + success: Połączenie Mercury zostało pomyślnie utworzone + destroy: + success: Połączenie Mercury zostało usunięte + index: + title: Połączenia Mercury + loading: + loading_message: Ładowanie kont Mercury... + loading_title: Ładowanie + link_accounts: + all_already_linked: + one: Wybrane konto (%{names}) jest już połączone + few: 'Wszystkie %{count} wybrane konta są już połączone: %{names}' + many: 'Wszystkie %{count} wybranych kont jest już połączonych: %{names}' + other: 'Wszystkie %{count} wybrane konta są już połączone: %{names}' + api_error: 'Błąd API: %{message}' + invalid_account_names: + one: Nie można połączyć konta bez nazwy + few: Nie można połączyć %{count} kont bez nazwy + many: Nie można połączyć %{count} kont bez nazwy + other: Nie można połączyć %{count} kont bez nazwy + link_failed: Nie udało się połączyć kont + no_accounts_selected: Wybierz co najmniej jedno konto + no_api_token: Nie znaleziono tokenu API Mercury. Skonfiguruj go w Ustawieniach dostawcy. + partial_invalid: Pomyślnie połączono %{created_count} konto(a), %{already_linked_count} było już połączonych, %{invalid_count} konto(a) miało nieprawidłowe nazwy + partial_success: 'Pomyślnie połączono %{created_count} konto(a). %{already_linked_count} konto(a) było już połączonych: %{already_linked_names}' + success: + one: Pomyślnie połączono %{count} konto + few: Pomyślnie połączono %{count} konta + many: Pomyślnie połączono %{count} kont + other: Pomyślnie połączono %{count} kont + mercury_item: + accounts_need_setup: Konta wymagają konfiguracji + delete: Usuń połączenie + deletion_in_progress: usuwanie w toku... + error: Błąd + no_accounts_description: To połączenie nie ma jeszcze żadnych połączonych kont. + no_accounts_title: Brak kont + setup_action: Skonfiguruj nowe konta + setup_description: "%{linked} z %{total} kont połączonych. Wybierz typy kont dla nowo zaimportowanych kont Mercury." + setup_needed: Nowe konta gotowe do konfiguracji + status: Zsynchronizowano %{timestamp} temu + status_never: Nigdy nie synchronizowano + status_with_summary: Ostatnia synchronizacja %{timestamp} temu - %{summary} + syncing: Synchronizacja... + total: Łącznie + unlinked: Niepodłączone + select_accounts: + accounts_selected: wybranych kont + api_error: 'Błąd API: %{message}' + cancel: Anuluj + configure_name_in_mercury: Nie można zaimportować — skonfiguruj nazwę konta w Mercury + description: Wybierz konta, które chcesz połączyć z kontem %{product_name}. + link_accounts: Połącz wybrane konta + no_accounts_found: Nie znaleziono kont. Sprawdź konfigurację tokenu API. + no_api_token: Token API Mercury nie jest skonfigurowany. Skonfiguruj go w Ustawieniach. + no_credentials_configured: Skonfiguruj token API Mercury najpierw w Ustawieniach dostawcy. + no_name_placeholder: "(Brak nazwy)" + title: Wybierz konta Mercury + select_existing_account: + account_already_linked: To konto jest już połączone z dostawcą + all_accounts_already_linked: Wszystkie konta Mercury są już połączone + api_error: 'Błąd API: %{message}' + cancel: Anuluj + configure_name_in_mercury: Nie można zaimportować — skonfiguruj nazwę konta w Mercury + description: Wybierz konto Mercury do połączenia z tym kontem. Transakcje będą synchronizowane i deduplikowane automatycznie. + link_account: Połącz konto + no_account_specified: Nie podano konta + no_accounts_found: Nie znaleziono kont Mercury. Sprawdź konfigurację tokenu API. + no_api_token: Token API Mercury nie jest skonfigurowany. Skonfiguruj go w Ustawieniach. + no_credentials_configured: Skonfiguruj token API Mercury najpierw w Ustawieniach dostawcy. + no_name_placeholder: "(Brak nazwy)" + title: Połącz %{account_name} z Mercury + link_existing_account: + account_already_linked: To konto jest już połączone z dostawcą + api_error: 'Błąd API: %{message}' + invalid_account_name: Nie można połączyć konta bez nazwy + mercury_account_already_linked: To konto Mercury jest już połączone z innym kontem + mercury_account_not_found: Nie znaleziono konta Mercury + missing_parameters: Brak wymaganych parametrów + no_api_token: Nie znaleziono tokenu API Mercury. Skonfiguruj go w Ustawieniach dostawcy. + success: Pomyślnie połączono %{account_name} z Mercury + setup_accounts: + account_type_label: 'Typ konta:' + all_accounts_linked: Wszystkie Twoje konta Mercury są już skonfigurowane. + api_error: 'Błąd API: %{message}' + fetch_failed: Nie udało się pobrać kont + no_accounts_to_setup: Brak kont do konfiguracji + no_api_token: Token API Mercury nie jest skonfigurowany. Sprawdź ustawienia połączenia. + account_types: + skip: Pomiń to konto + depository: Konto bieżące lub oszczędnościowe + credit_card: Karta kredytowa + investment: Konto inwestycyjne + loan: Pożyczka lub kredyt hipoteczny + other_asset: Inne aktywa + subtype_labels: + depository: 'Podtyp konta:' + credit_card: 'Podtyp karty kredytowej:' + investment: 'Typ inwestycji:' + loan: 'Typ pożyczki:' + other_asset: 'Podtyp aktywa:' + subtype_messages: + credit_card: Karty kredytowe zostaną automatycznie skonfigurowane jako konta kart kredytowych. + other_asset: Dla innych aktywów nie są potrzebne dodatkowe opcje. + subtypes: + depository: + checking: Konto bieżące + savings: Oszczędnościowe + hsa: Konto oszczędnościowe na cele zdrowotne + cd: Lokata terminowa + money_market: Rynek pieniężny + investment: + brokerage: Maklerskie + pension: Emerytura + retirement: Emerytalne + 401k: 401(k) + roth_401k: Roth 401(k) + 403b: 403(b) + tsp: Plan oszczędnościowy Thrift + 529_plan: 529 Plan + hsa: Konto oszczędnościowe na cele zdrowotne + mutual_fund: Fundusz inwestycyjny + ira: Tradycyjne IRA + roth_ira: Roth IRA + angel: Anielska + loan: + mortgage: Kredyt hipoteczny + student: Pożyczka studencka + auto: Pożyczka na samochód + other: Inna pożyczka + balance: Saldo + cancel: Anuluj + choose_account_type: 'Wybierz poprawny typ dla każdego konta Mercury:' + create_accounts: Utwórz konta + creating_accounts: Tworzenie kont... + historical_data_range: 'Zakres danych historycznych:' + subtitle: Wybierz poprawne typy dla importowanych kont + sync_start_date_help: Wybierz, jak daleko wstecz chcesz synchronizować historię transakcji. Dostępne są maksymalnie 3 lata historii. + sync_start_date_label: 'Synchronizuj transakcje od:' + title: Skonfiguruj swoje konta Mercury + complete_account_setup: + all_skipped: Wszystkie konta zostały pominięte. Nie utworzono żadnych kont. + creation_failed: 'Nie udało się utworzyć kont: %{error}' + no_accounts: Brak kont do skonfigurowania. + success: + one: Pomyślnie utworzono %{count} konto. + few: Pomyślnie utworzono %{count} konta. + many: Pomyślnie utworzono %{count} kont. + other: Pomyślnie utworzono %{count} konta. + sync: + success: Rozpoczęto synchronizację + update: + success: Połączenie Mercury zostało zaktualizowane diff --git a/config/locales/views/mfa/pl.yml b/config/locales/views/mfa/pl.yml new file mode 100644 index 000000000..4e2b6f868 --- /dev/null +++ b/config/locales/views/mfa/pl.yml @@ -0,0 +1,34 @@ +--- +pl: + mfa: + backup_codes: + backup_codes_description: Każdy kod można użyć tylko raz. Przechowuj je bezpiecznie. + backup_codes_title: Twoje kody zapasowe + continue: Przejdź do ustawień bezpieczeństwa + description: Przechowuj te kody zapasowe w bezpiecznym miejscu — będą potrzebne, jeśli utracisz dostęp do aplikacji uwierzytelniającej + page_title: Kody zapasowe + title: Zapisz swoje kody zapasowe + create: + invalid_code: Nieprawidłowy kod weryfikacyjny. Spróbuj ponownie. + disable: + success: Uwierzytelnianie dwuskładnikowe zostało wyłączone + new: + code_label: Kod weryfikacyjny + code_placeholder: Wpisz 6-cyfrowy kod + description: Zwiększ bezpieczeństwo konta, konfigurując uwierzytelnianie dwuskładnikowe + page_title: Konfiguracja uwierzytelniania dwuskładnikowego + scan_description: Użyj aplikacji uwierzytelniającej, np. Google Authenticator lub 1Password, aby zeskanować ten kod QR + scan_title: 1. Zeskanuj kod QR + secret_description: Jeśli nie możesz zeskanować kodu QR, wpisz ręcznie ten klucz tajny w aplikacji uwierzytelniającej + secret_title: Kod do ręcznego wpisania + title: Skonfiguruj uwierzytelnianie dwuskładnikowe + verify_button: Zweryfikuj i włącz 2FA + verify_description: Wpisz 6-cyfrowy kod z aplikacji uwierzytelniającej + verify_title: 2. Wprowadź kod weryfikacyjny + verify: + description: Wpisz kod z aplikacji uwierzytelniającej, aby kontynuować + page_title: Zweryfikuj uwierzytelnianie dwuskładnikowe + title: Uwierzytelnianie dwuskładnikowe + verify_button: Zweryfikuj + verify_code: + invalid_code: Nieprawidłowy kod uwierzytelniający. Spróbuj ponownie. diff --git a/config/locales/views/oidc_accounts/pl.yml b/config/locales/views/oidc_accounts/pl.yml new file mode 100644 index 000000000..8b24b8217 --- /dev/null +++ b/config/locales/views/oidc_accounts/pl.yml @@ -0,0 +1,34 @@ +--- +pl: + oidc_accounts: + link: + title_link: Połącz konto OIDC + title_create: Utwórz konto + verify_heading: Zweryfikuj swoją tożsamość + verify_description_html: "Aby połączyć konto %{provider}%{email_suffix}, zweryfikuj tożsamość, wpisując hasło." + email_suffix_html: " (adres: %{email})" + email_label: E-mail + email_placeholder: Wpisz e-mail + password_label: Hasło + password_placeholder: Wpisz hasło + verify_hint: To pomaga upewnić się, że tylko Ty możesz łączyć zewnętrzne konta ze swoim profilem. + submit_link: Połącz konto + create_heading: Utwórz nowe konto + create_description_html: "Nie znaleziono konta dla adresu %{email}. Kliknij poniżej, aby utworzyć nowe konto używając tożsamości %{provider}." + info_email: "E-mail:" + info_name: "Imię i nazwisko:" + submit_create: Utwórz konto + submit_accept_invitation: Zaakceptuj zaproszenie + account_creation_disabled: Tworzenie nowych kont przez logowanie jednokrotne jest wyłączone. Skontaktuj się z administratorem, aby utworzyć konto. + cancel: Anuluj + new_user: + title: Dokończ tworzenie konta + heading: Utwórz swoje konto + description: Potwierdź swoje dane, aby dokończyć tworzenie konta przy użyciu tożsamości %{provider}. + email_label: E-mail (od dostawcy SSO) + first_name_label: Imię + first_name_placeholder: Wpisz imię + last_name_label: Nazwisko + last_name_placeholder: Wpisz nazwisko + submit: Utwórz konto + cancel: Anuluj diff --git a/config/locales/views/onboardings/pl.yml b/config/locales/views/onboardings/pl.yml new file mode 100644 index 000000000..f62cf790c --- /dev/null +++ b/config/locales/views/onboardings/pl.yml @@ -0,0 +1,66 @@ +--- +pl: + onboardings: + header: + sign_out: Wyloguj się + setup: Konfiguracja + preferences: Preferencje + goals: Cele + start: Początek + logout: + sign_out: Wyloguj się + show: + title: Skonfigurujmy Twoje konto + subtitle: Na początek skonfigurujmy Twój profil. + first_name: Imię + first_name_placeholder: Imię + last_name: Nazwisko + last_name_placeholder: Nazwisko + group_name: Nazwa grupy + group_name_placeholder: Nazwa grupy + household_name: Nazwa gospodarstwa domowego + household_name_placeholder: Nazwa gospodarstwa domowego + moniker_prompt: Będę używać %{product_name} z ... + moniker_family: Członkami rodziny (tylko sobą lub z partnerem, nastolatkami itd.) + moniker_group: Grupą osób (firma, klub, stowarzyszenie lub inny typ) + country: Kraj + submit: Dalej + preferences: + title: Skonfiguruj swoje preferencje + subtitle: Skonfigurujmy Twoje preferencje. + example: Przykładowe konto + preview: Podgląd sposobu wyświetlania danych na podstawie preferencji. + color_theme: Motyw kolorystyczny + theme_system: Systemowy + theme_light: Jasny + theme_dark: Ciemny + locale: Język + currency: Waluta + date_format: Format daty + submit: Zakończ + goals: + title: Co Cię tutaj sprowadza? + subtitle: Wybierz jeden lub więcej celów, które chcesz osiągnąć, używając %{product_name} do zarządzania finansami osobistymi. + unified_accounts: Widzieć wszystkie moje konta w jednym miejscu + cashflow: Lepiej rozumieć przepływy pieniężne i wydatki + budgeting: Zarządzać planami finansowymi i budżetem + partner: Zarządzać finansami z partnerem + investments: Śledzić inwestycje + ai_insights: Korzystać z AI do lepszego zrozumienia moich finansów + optimization: Analizować i optymalizować konta + reduce_stress: Zmniejszyć stres lub niepokój związany z finansami + submit: Dalej + trial: + title: Wypróbuj Sure przez 45 dni + data_deletion: Dane zostaną wtedy usunięte + description_html: Od dziś możesz dokładnie przetestować produkt.Nie będzie można cofnąć tej decyzji
" + cancel: Anuluj + title: Czy na pewno? + money_field: + label: Kwota + syncing_notice: + syncing: Synchronizowanie danych kont... + require_admin: "Tę akcję mogą wykonać tylko administratorzy" + trend_change: + no_change: "bez zmian" diff --git a/config/locales/views/simplefin_items/pl.yml b/config/locales/views/simplefin_items/pl.yml new file mode 100644 index 000000000..6a54341d3 --- /dev/null +++ b/config/locales/views/simplefin_items/pl.yml @@ -0,0 +1,119 @@ +--- +pl: + simplefin_items: + new: + title: Połącz SimpleFIN + setup_token: Token konfiguracji + setup_token_placeholder: wklej token konfiguracji SimpleFIN + connect: Połącz + cancel: Anuluj + create: + success: Połączenie SimpleFIN zostało pomyślnie dodane! Twoje konta pojawią się wkrótce po synchronizacji w tle. + errors: + blank_token: Wprowadź token konfiguracji SimpleFIN. + invalid_token: Nieprawidłowy token konfiguracji. Sprawdź, czy skopiowano pełny token z SimpleFIN Bridge. + token_compromised: Token konfiguracji może być naruszony, wygasły albo już użyty. Utwórz nowy. + create_failed: 'Nie udało się połączyć: %{message}' + unexpected: Wystąpił nieoczekiwany błąd. Spróbuj ponownie. + destroy: + success: Połączenie SimpleFIN zostanie usunięte + update: + success: Połączenie SimpleFIN zostało pomyślnie zaktualizowane! Trwa ponowne łączenie kont. + errors: + blank_token: Wprowadź token konfiguracji SimpleFIN. + invalid_token: Nieprawidłowy token konfiguracji. Sprawdź, czy skopiowano pełny token z SimpleFIN Bridge. + token_compromised: Token konfiguracji może być naruszony, wygasły albo już użyty. Utwórz nowy. + update_failed: 'Nie udało się zaktualizować połączenia: %{message}' + unexpected: Wystąpił nieoczekiwany błąd. Spróbuj ponownie. + edit: + setup_token: + label: 'Token konfiguracji SimpleFIN:' + placeholder: Wklej tutaj token konfiguracji SimpleFIN... + help_text: Token powinien być długim ciągiem znaków zaczynającym się od liter i cyfr + setup_accounts: + stale_accounts: + title: Konta, których nie ma już w SimpleFIN + description: Te konta istnieją w bazie danych, ale nie są już dostarczane przez SimpleFIN. Może się to zdarzyć przy zmianie konfiguracji kont po stronie dostawcy. + action_prompt: Co chcesz zrobić? + action_delete: Usuń konto i wszystkie transakcje + action_move: 'Przenieś transakcje do:' + action_skip: Pomiń na razie + transaction_count: + one: "%{count} transakcja" + few: "%{count} transakcje" + many: "%{count} transakcji" + other: "%{count} transakcji" + complete_account_setup: + all_skipped: Wszystkie konta zostały pominięte. Nie utworzono żadnych kont. + no_accounts: Brak kont do skonfigurowania. + success: + one: Pomyślnie utworzono %{count} konto SimpleFIN! Twoje transakcje i pozycje są importowane w tle. + few: Pomyślnie utworzono %{count} konta SimpleFIN! Twoje transakcje i pozycje są importowane w tle. + many: Pomyślnie utworzono %{count} kont SimpleFIN! Twoje transakcje i pozycje są importowane w tle. + other: Pomyślnie utworzono %{count} kont SimpleFIN! Twoje transakcje i pozycje są importowane w tle. + stale_accounts_processed: 'Przestarzałe konta: %{deleted} usuniętych, %{moved} przeniesionych.' + stale_accounts_errors: + one: "%{count} akcja dla przestarzałego konta nie powiodła się. Sprawdź logi." + few: "%{count} akcje dla przestarzałych kont nie powiodły się. Sprawdź logi." + many: "%{count} akcji dla przestarzałych kont nie powiodło się. Sprawdź logi." + other: "%{count} akcji dla przestarzałych kont nie powiodło się. Sprawdź logi." + simplefin_item: + add_new: Dodaj nowe połączenie + confirm_accept: Usuń połączenie + confirm_body: Spowoduje to trwałe usunięcie wszystkich kont w tej grupie i wszystkich powiązanych danych. + confirm_title: Usunąć połączenie SimpleFIN? + delete: Usuń + deletion_in_progress: "(usuwanie w toku...)" + error: Wystąpił błąd podczas synchronizacji danych + no_accounts_description: To połączenie nie ma jeszcze żadnych zsynchronizowanych kont. + no_accounts_title: Nie znaleziono kont + requires_update: Połącz ponownie + setup_needed: Nowe konta gotowe do konfiguracji + setup_description: Wybierz typy kont dla nowo zaimportowanych kont SimpleFIN. + setup_action: Skonfiguruj nowe konta + setup_accounts_menu: Skonfiguruj konta + more_accounts_available: + one: "%{count} dodatkowe konto do skonfigurowania" + few: "%{count} dodatkowe konta do skonfigurowania" + many: "%{count} dodatkowych kont do skonfigurowania" + other: "%{count} dodatkowych kont do skonfigurowania" + accounts_skipped_tooltip: Niektóre konta zostały pominięte z powodu błędów podczas synchronizacji + accounts_skipped_label: 'Pominięte: %{count}' + rate_limited_ago: Ograniczenie limitu (%{time} temu) + rate_limited_recently: Ostatnio ograniczono limitem + status: Ostatnia synchronizacja %{timestamp} temu + status_never: Nigdy nie synchronizowano + status_with_summary: Ostatnia synchronizacja %{timestamp} temu • %{summary} + syncing: Synchronizacja... + update: Aktualizuj + stale_pending_note: "(wykluczone z budżetów)" + stale_pending_accounts: 'w: %{accounts}' + reconciled_details_note: "(szczegóły w podsumowaniu synchronizacji)" + duplicate_accounts_skipped: Niektóre konta zostały pominięte jako duplikaty — użyj opcji „Połącz istniejące konta”, aby je scalić. + select_existing_account: + title: Połącz %{account_name} z SimpleFIN + description: Wybierz konto SimpleFIN do połączenia z istniejącym kontem + cancel: Anuluj + link_account: Połącz konto + no_accounts_found: Nie znaleziono kont SimpleFIN dla tej/tego %{moniker}. + wait_for_sync: Jeśli właśnie połączyłeś lub zsynchronizowałeś, spróbuj ponownie po zakończeniu synchronizacji. + unlink_to_move: Aby przenieść połączenie, najpierw odłącz je z menu akcji konta. + all_accounts_already_linked: Wszystkie konta SimpleFIN są już połączone. + currently_linked_to: 'Aktualnie połączone z: %{account_name}' + link_existing_account: + success: Konto zostało pomyślnie połączone z SimpleFIN + errors: + only_manual: Można połączyć tylko konta manualne + invalid_simplefin_account: Wybrano nieprawidłowe konto SimpleFIN + reconciled_status: + message: + one: "%{count} oczekująca zduplikowana transakcja została uzgodniona" + few: "%{count} oczekujące zduplikowane transakcje zostały uzgodnione" + many: "%{count} oczekujących zduplikowanych transakcji zostało uzgodnionych" + other: "%{count} oczekujących zduplikowanych transakcji zostało uzgodnionych" + stale_pending_status: + message: + one: "%{count} oczekująca transakcja starsza niż %{days} dni" + few: "%{count} oczekujące transakcje starsze niż %{days} dni" + many: "%{count} oczekujących transakcji starszych niż %{days} dni" + other: "%{count} oczekujących transakcji starszych niż %{days} dni" diff --git a/config/locales/views/snaptrade_items/de.yml b/config/locales/views/snaptrade_items/de.yml index d50ae7bb6..c0f0cd22c 100644 --- a/config/locales/views/snaptrade_items/de.yml +++ b/config/locales/views/snaptrade_items/de.yml @@ -18,7 +18,9 @@ de: success: one: "%{count} Konto erfolgreich verknüpft." other: "%{count} Konten erfolgreich verknüpft." - partial_success: "%{linked} Konto/Konten verknüpft. %{failed} Verknüpfung(en) fehlgeschlagen." + partial_success: + one: "%{count} Konto verknüpft. %{failed_count} Verknüpfung(en) fehlgeschlagen." + other: "%{count} Konten verknüpft. %{failed_count} Verknüpfung(en) fehlgeschlagen." link_failed: "Konten konnten nicht verknüpft werden: %{errors}" no_accounts: "Es wurden keine Konten zur Verknüpfung ausgewählt." preload_accounts: diff --git a/config/locales/views/snaptrade_items/en.yml b/config/locales/views/snaptrade_items/en.yml index 63b70a28c..e9cdfd250 100644 --- a/config/locales/views/snaptrade_items/en.yml +++ b/config/locales/views/snaptrade_items/en.yml @@ -17,7 +17,9 @@ en: success: one: "Successfully linked %{count} account." other: "Successfully linked %{count} accounts." - partial_success: "Linked %{linked} account(s). %{failed} failed to link." + partial_success: + one: "Linked %{count} account. %{failed_count} failed to link." + other: "Linked %{count} accounts. %{failed_count} failed to link." link_failed: "Failed to link accounts: %{errors}" no_accounts: "No accounts were selected for linking." preload_accounts: diff --git a/config/locales/views/snaptrade_items/es.yml b/config/locales/views/snaptrade_items/es.yml index d7456076e..47a6ca609 100644 --- a/config/locales/views/snaptrade_items/es.yml +++ b/config/locales/views/snaptrade_items/es.yml @@ -18,7 +18,9 @@ es: success: one: "Se ha vinculado %{count} cuenta correctamente." other: "Se han vinculado %{count} cuentas correctamente." - partial_success: "Se han vinculado %{linked} cuenta(s). %{failed} han fallado." + partial_success: + one: "Se ha vinculado %{count} cuenta. %{failed_count} ha fallado." + other: "Se han vinculado %{count} cuentas. %{failed_count} han fallado." link_failed: "Error al vincular las cuentas: %{errors}" no_accounts: "No se ha seleccionado ninguna cuenta para vincular." preload_accounts: diff --git a/config/locales/views/snaptrade_items/pl.yml b/config/locales/views/snaptrade_items/pl.yml new file mode 100644 index 000000000..ba3eb7058 --- /dev/null +++ b/config/locales/views/snaptrade_items/pl.yml @@ -0,0 +1,210 @@ +--- +pl: + snaptrade_items: + default_name: Połączenie SnapTrade + create: + success: Pomyślnie skonfigurowano SnapTrade. + update: + success: Pomyślnie zaktualizowano konfigurację SnapTrade. + destroy: + success: Zaplanowano usunięcie połączenia SnapTrade. + connect: + decryption_failed: Nie można odczytać danych uwierzytelniających SnapTrade. Usuń i utwórz ponownie to połączenie. + connection_failed: 'Nie udało się połączyć z SnapTrade: %{message}' + callback: + success: Biuro maklerskie zostało połączone! Wybierz konta do połączenia. + no_item: Nie znaleziono konfiguracji SnapTrade. + complete_account_setup: + success: + one: Pomyślnie połączono %{count} konto. + few: Pomyślnie połączono %{count} konta. + many: Pomyślnie połączono %{count} kont. + other: Pomyślnie połączono %{count} konta. + partial_success: + one: "Połączono %{count} konto. Nie udało się połączyć %{failed_count}." + few: "Połączono %{count} konta. Nie udało się połączyć %{failed_count}." + many: "Połączono %{count} kont. Nie udało się połączyć %{failed_count}." + other: "Połączono %{count} konta. Nie udało się połączyć %{failed_count}." + link_failed: 'Nie udało się połączyć kont: %{errors}' + no_accounts: Nie wybrano żadnych kont do połączenia. + preload_accounts: + not_configured: SnapTrade nie jest skonfigurowane. + select_accounts: + not_configured: SnapTrade nie jest skonfigurowane. + select_existing_account: + not_found: Konto lub konfiguracja SnapTrade nie zostało znalezione. + title: Połącz z kontem SnapTrade + header: Połącz istniejące konto + subtitle: Wybierz konto SnapTrade do połączenia + no_accounts: Brak niepołączonych kont SnapTrade. + connect_hint: Może najpierw musisz połączyć biuro maklerskie. + settings_link: Przejdź do ustawień dostawcy + linking_to: 'Łączenie z kontem:' + balance_label: 'Saldo:' + link_button: Połącz + cancel_button: Anuluj + link_existing_account: + success: Pomyślnie połączono z kontem SnapTrade. + failed: 'Nie udało się połączyć konta: %{message}' + not_found: Konto nie zostało znalezione. + connections: + unknown_brokerage: Nieznane biuro maklerskie + delete_connection: + success: Połączenie zostało pomyślnie usunięte. Zwolniono jedno miejsce. + failed: 'Nie udało się usunąć połączenia: %{message}' + missing_authorization_id: Brak identyfikatora autoryzacji + api_deletion_failed: Nie można usunąć połączenia z SnapTrade — brak danych uwierzytelniających. Połączenie może nadal istnieć na koncie SnapTrade. + delete_orphaned_user: + success: Osierocona rejestracja została usunięta pomyślnie. + failed: Nie udało się usunąć osieroconej rejestracji. + setup_accounts: + title: Skonfiguruj konta SnapTrade + header: Skonfiguruj swoje konta SnapTrade + subtitle: Wybierz konta maklerskie do połączenia + syncing: Pobieranie kont... + loading: Pobieranie kont z SnapTrade... + loading_hint: Kliknij Odśwież, aby sprawdzić konta. + refresh: Odśwież + info_title: Dane inwestycyjne SnapTrade + info_holdings: Aktywa z aktualnymi cenami i ilościami + info_cost_basis: Podstawa kosztowa na pozycję (gdy dostępna) + info_activities: Historia transakcji z etykietami aktywności (Kupno, Sprzedaż, Dywidenda itp.) + info_history: Do 3 lat historii transakcji + free_tier_note: Plan bezpłatny SnapTrade umożliwia 5 połączeń z biurami maklerskimi. Sprawdź swój pulpit SnapTrade, aby zobaczyć bieżące użycie. + no_accounts_title: Nie znaleziono kont + no_accounts_message: Nie znaleziono kont maklerskich. Może to nastąpić, jeśli anulowałeś połączenie lub Twoje biuro maklerskie nie jest obsługiwane. + try_again: Połącz biuro maklerskie + back_to_settings: Powrót do ustawień + available_accounts: Dostępne konta + balance_label: 'Saldo:' + account_number: 'Konto:' + create_button: Utwórz wybrane konta + cancel_button: Anuluj + creating: Tworzenie kont... + done_button: Gotowe + or_link_existing: 'Lub połącz z istniejącym kontem zamiast tworzyć nowe:' + select_account: Wybierz konto... + link_button: Połącz + linked_accounts: Już połączone + linked_to: 'Połączono z:' + snaptrade_item: + accounts_need_setup: + one: "%{count} konto wymaga konfiguracji" + few: "%{count} konta wymagają konfiguracji" + many: "%{count} kont wymaga konfiguracji" + other: "%{count} kont wymaga konfiguracji" + deletion_in_progress: Usuwanie w toku... + syncing: Synchronizacja... + requires_update: Połączenie wymaga aktualizacji + error: Błąd synchronizacji + status: Ostatnia synchronizacja %{timestamp} temu — %{summary} + status_never: Nigdy nie synchronizowano + reconnect: Połącz ponownie + connect_brokerage: Połącz biuro maklerskie + add_another_brokerage: Połącz kolejne biuro maklerskie + delete: Usuń + setup_needed: Konta wymagają konfiguracji + setup_description: Niektóre konta z SnapTrade muszą zostać połączone z kontami Sure. + setup_action: Konfiguruj konta + setup_accounts_menu: Skonfiguruj konta + manage_connections: Zarządzaj połączeniami + more_accounts_available: + one: "%{count} dodatkowe konto dostępne do konfiguracji" + few: "%{count} dodatkowe konta dostępne do konfiguracji" + many: "%{count} dodatkowych kont dostępnych do konfiguracji" + other: "%{count} dodatkowych kont dostępnych do konfiguracji" + no_accounts_title: Nie wykryto kont + no_accounts_description: Połącz biuro maklerskie, aby zaimportować swoje konta inwestycyjne. + providers: + snaptrade: + name: SnapTrade + connection_description: Połącz się ze swoim biurem maklerskim przez SnapTrade (obsługuje 25+ brokerów) + description: SnapTrade łączy się z ponad 25 głównymi biurami maklerskimi (Fidelity, Vanguard, Schwab, Robinhood itp.) i udostępnia pełną historię transakcji z etykietami aktywności oraz podstawą kosztową. + setup_title: 'Instrukcje konfiguracji:' + step_1_html: Utwórz konto na dashboard.snaptrade.com + step_2: Skopiuj swój Client ID i Consumer Key z pulpitu nawigacyjnego + step_3: Wprowadź swoje dane uwierzytelniające poniżej i kliknij Zapisz + step_4: Przejdź do strony Konta i użyj opcji „Połącz kolejne biuro maklerskie", aby połączyć swoje konta inwestycyjne + free_tier_warning: Plan bezpłatny obejmuje 5 połączeń z biurami maklerskimi. Dodatkowe połączenia wymagają płatnego planu SnapTrade. + client_id_label: Client ID + client_id_placeholder: Wprowadź Client ID SnapTrade + client_id_update_placeholder: Wprowadź nowy Client ID, aby zaktualizować + consumer_key_label: Consumer Key + consumer_key_placeholder: Wprowadź Consumer Key SnapTrade + consumer_key_update_placeholder: Wprowadź nowy Consumer Key, aby zaktualizować + save_button: Zapisz konfigurację + update_button: Zaktualizuj konfigurację + status_connected: + one: "%{count} konto z SnapTrade" + few: "%{count} konta z SnapTrade" + many: "%{count} kont z SnapTrade" + other: "%{count} konta z SnapTrade" + needs_setup: + one: "%{count} wymaga konfiguracji" + few: "%{count} wymagają konfiguracji" + many: "%{count} wymaga konfiguracji" + other: "%{count} wymaga konfiguracji" + status_ready: Gotowe do połączenia z biurami maklerskimi + status_needs_registration: Dane uwierzytelniające zapisane. Przejdź do strony Konta, aby połączyć biura maklerskie. + status_not_configured: Nieskonfigurowane + setup_accounts_button: Konfiguruj konta + connect_button: Połącz biuro maklerskie + connected_brokerages: 'Połączone:' + manage_connections: Zarządzaj połączeniami + connection_limit_info: Plan bezpłatny SnapTrade umożliwia 5 połączeń z biurami maklerskimi. Usuń nieużywane połączenia, aby zwolnić miejsca. + loading_connections: Ładowanie połączeń... + connections_error: 'Nie udało się załadować połączeń: %{message}' + accounts_count: + one: "%{count} konto" + few: "%{count} konta" + many: "%{count} kont" + other: "%{count} kont" + orphaned_connection: Osierocone połączenie (niezsynchronizowane lokalnie) + needs_linking: wymaga połączenia + no_connections: Nie znaleziono połączeń z biurami maklerskimi. + delete_connection: Usuń + delete_connection_title: Usunąć połączenie z biurem maklerskim? + delete_connection_body: Spowoduje to trwałe usunięcie połączenia %{brokerage} z SnapTrade. Wszystkie konta tego biura maklerskiego zostaną odłączone. Będziesz musiał ponownie się połączyć, aby synchronizować te konta. + delete_connection_confirm: Usuń połączenie + orphaned_users_title: + one: "%{count} osierocona rejestracja" + few: "%{count} osierocone rejestracje" + many: "%{count} osieroconych rejestracji" + other: "%{count} osieroconych rejestracji" + orphaned_users_description: Są to poprzednie rejestracje użytkowników SnapTrade, które zajmują Twoje miejsca połączeń. Usuń je, aby zwolnić miejsca. + orphaned_user: Osierocona rejestracja + delete_orphaned_user: Usuń + delete_orphaned_user_title: Usunąć osieroconą rejestrację? + delete_orphaned_user_body: Spowoduje to trwałe usunięcie tej osieroconej rejestracji użytkownika SnapTrade i wszystkich jego połączeń z biurami maklerskimi, zwalniając miejsca połączeń. + delete_orphaned_user_confirm: Usuń rejestrację + snaptrade_item: + sync_status: + no_accounts: Nie znaleziono kont + synced: + one: "%{count} konto zsynchronizowane" + few: "%{count} konta zsynchronizowane" + many: "%{count} kont zsynchronizowanych" + other: "%{count} kont zsynchronizowanych" + synced_with_setup: "%{linked} zsynchronizowane, %{unlinked} wymagają konfiguracji" + institution_summary: + none: Brak połączonych instytucji + count: + one: "%{count} instytucja" + few: "%{count} instytucje" + many: "%{count} instytucji" + other: "%{count} instytucji" + brokerage_summary: + none: Brak połączonych biur maklerskich + count: + one: "%{count} biuro maklerskie" + few: "%{count} biura maklerskie" + many: "%{count} biur maklerskich" + other: "%{count} biur maklerskich" + syncer: + discovering: Odnajdywanie kont... + importing: Importowanie kont z SnapTrade... + processing: Przetwarzanie aktywów i aktywności... + calculating: Obliczanie sald... + checking_config: Sprawdzanie konfiguracji konta... + needs_setup: "%{count} kont wymaga konfiguracji..." + activities_fetching_async: Aktywności są pobierane w tle. Może to potrwać do minuty dla nowych połączeń z biurami maklerskimi. diff --git a/config/locales/views/splits/pl.yml b/config/locales/views/splits/pl.yml new file mode 100644 index 000000000..01e4cb19c --- /dev/null +++ b/config/locales/views/splits/pl.yml @@ -0,0 +1,47 @@ +--- +pl: + splits: + new: + title: Podziel transakcję + description: Podziel tę transakcję na wiele wpisów z różnymi kategoriami i kwotami. + submit: Podziel transakcję + cancel: Anuluj + add_row: Dodaj podział + remove_row: Usuń + remaining: Pozostało + amounts_must_match: Kwoty podziału muszą być równe kwocie oryginalnej transakcji. + name_label: Nazwa + name_placeholder: Nazwa podziału + amount_label: Kwota + category_label: Kategoria + uncategorized: "(bez kategorii)" + original_name: 'Nazwa:' + original_date: 'Data:' + original_amount: Kwota + split_number: 'Podział nr %{number}' + create: + success: Transakcja została pomyślnie podzielona + not_splittable: Tej transakcji nie można podzielić. + destroy: + success: Podział transakcji został pomyślnie cofnięty + show: + title: Podzielone wpisy + description: Ta transakcja została podzielona na poniższe wpisy. + button_title: Podziel transakcję + button_description: Podziel tę transakcję na wiele wpisów z różnymi kategoriami i kwotami. + button: Podziel + unsplit_title: Cofnij podział transakcji + unsplit_button: Cofnij podział + unsplit_confirm: To usunie wszystkie wpisy podziału i przywróci oryginalną transakcję. + edit: + title: Edytuj podział + description: Zmodyfikuj wpisy podziału dla tej transakcji. + submit: Zaktualizuj podział + not_split: Ta transakcja nie jest podzielona. + update: + success: Podział został pomyślnie zaktualizowany + child: + title: Część podziału + description: Ten wpis jest częścią podzielonej transakcji. + edit_split: Edytuj podział + unsplit: Cofnij podział diff --git a/config/locales/views/subscriptions/pl.yml b/config/locales/views/subscriptions/pl.yml new file mode 100644 index 000000000..d40212625 --- /dev/null +++ b/config/locales/views/subscriptions/pl.yml @@ -0,0 +1,18 @@ +--- +pl: + subscriptions: + self_hosted_alert: "%{product_name} nie jest dostępny w trybie self-hosted." + upgrade: + contribute_and_support_sure: "Wspieraj i rozwijaj Sure" + cta: "Wesprzyj dalszy rozwój tej bazy kodu!" + header: + support: "Wesprzyj" + sure: "Sure" + today: "już dziś" + redirect_to_stripe: "W kolejnym kroku nastąpi przekierowanie do Stripe, który obsługuje płatności kartą." + trialing: + one: "Twoje dane zostaną usunięte za %{count} dzień" + few: "Twoje dane zostaną usunięte za %{count} dni" + many: "Twoje dane zostaną usunięte za %{count} dni" + other: "Twoje dane zostaną usunięte za %{count} dnia" + trial_over: "Okres próbny dobiegł końca" diff --git a/config/locales/views/tag/deletions/pl.yml b/config/locales/views/tag/deletions/pl.yml new file mode 100644 index 000000000..0b29e4ca1 --- /dev/null +++ b/config/locales/views/tag/deletions/pl.yml @@ -0,0 +1,13 @@ +--- +pl: + tag: + deletions: + create: + deleted: Tag został usunięty + new: + delete_and_leave_uncategorized: Usuń "%{tag_name}" + delete_and_recategorize: Usuń "%{tag_name}" i przypisz nowy tag + delete_tag: Usunąć tag? + explanation: "%{tag_name} zostanie usunięty z transakcji i innych obiektów oznaczonych tagami. Zamiast pozostawiać je bez tagu, możesz poniżej przypisać nowy tag." + replacement_tag_prompt: Wybierz tag + tag: Tag diff --git a/config/locales/views/tags/pl.yml b/config/locales/views/tags/pl.yml new file mode 100644 index 000000000..af9624452 --- /dev/null +++ b/config/locales/views/tags/pl.yml @@ -0,0 +1,23 @@ +--- +pl: + tags: + create: + created: Tag został utworzony + error: 'Błąd podczas tworzenia tagu: %{error}' + destroy: + deleted: Tag został usunięty + edit: + edit: Edytuj tag + form: + placeholder: Nazwa tagu + index: + empty: Brak tagów + new: Nowy tag + tags: Tagi + new: + new: Nowy tag + tag: + delete: Usuń + edit: Edytuj + update: + updated: Tag został zaktualizowany diff --git a/config/locales/views/trades/pl.yml b/config/locales/views/trades/pl.yml new file mode 100644 index 000000000..44e16cd9d --- /dev/null +++ b/config/locales/views/trades/pl.yml @@ -0,0 +1,56 @@ +--- +pl: + trades: + form: + account: Konto transferowe (opcjonalnie) + account_prompt: Wyszukaj konto + amount: Kwota + fee: Opłata transakcyjna + holding: Symbol ticker + holding_optional: Symbol ticker (opcjonalnie) + price: Cena za akcję + qty: Ilość + submit: Dodaj transakcję + ticker_placeholder: AAPL + type: Typ + type_buy: Kupno + type_sell: Sprzedaż + type_deposit: Wpłata + type_withdrawal: Wypłata + type_dividend: Dywidenda + type_interest: Odsetki + dividend_requires_security: Dla dywidend wymagany jest papier wartościowy + header: + buy: Kupno + sell: Sprzedaż + dividend: Dywidenda + interest: Odsetki + current_market_price_label: Aktualna cena rynkowa + overview: Przegląd + purchase_price_label: Cena zakupu + purchase_qty_label: Ilość zakupu + symbol_label: Symbol + total_return_label: Niezrealizowany zysk/strata + new: + title: Nowa transakcja + show: + additional: Dodatkowe + amount_label: Kwota + buy: Kupno + category_label: Kategoria + cost_per_share_label: Koszt za akcję + date_label: Data + delete: Usuń + fee_label: Opłata transakcyjna + delete_subtitle: Tej akcji nie można cofnąć + delete_title: Usuń transakcję giełdową + details: Szczegóły + exclude_subtitle: Ta transakcja giełdowa nie będzie uwzględniana w raportach i obliczeniach + exclude_title: Wyklucz z analityki + no_category: Brak kategorii + note_label: Notatka + note_placeholder: Dodaj tutaj dodatkowe notatki... + quantity_label: Ilość + sell: Sprzedaż + settings: Ustawienia + type_label: Typ diff --git a/config/locales/views/transactions/pl.yml b/config/locales/views/transactions/pl.yml new file mode 100644 index 000000000..9ae58f25e --- /dev/null +++ b/config/locales/views/transactions/pl.yml @@ -0,0 +1,242 @@ +--- +pl: + transactions: + unknown_name: Nieznana transakcja + selection_bar: + duplicate: Duplikat + edit: Edytuj + form: + account: Konto + account_prompt: Wybierz konto + amount: Kwota + category: Kategoria + category_prompt: Wybierz kategorię + date: Data + description: Opis + description_placeholder: Opisz transakcję + expense: Wydatek + income: Przychód + merchant_label: Kontrahent + none: "(brak)" + note_label: Notatki + note_placeholder: Wprowadź notatkę + submit: Dodaj transakcję + tags_label: Tagi + transfer: Przelew + new: + new_transaction: Nowa transakcja + show: + account_label: Konto + amount: Kwota + category_label: Kategoria + date_label: Data + delete: Usuń + delete_subtitle: To trwale usuwa transakcję, wpływa na historyczne salda i nie może zostać cofnięte. + delete_title: Usuń transakcję + details: Szczegóły + attachments: Załączniki + exclude: Wyklucz + exclude_description: Wykluczone transakcje zostaną usunięte z obliczeń budżetowych i raportów. + activity_type: Typ aktywności + activity_type_description: Typ aktywności inwestycyjnej (kupno, sprzedaż, dywidenda itp.). Wykrywany automatycznie lub ustawiany ręcznie. + one_time_title: Jednorazowe %{type} + one_time_description: Jednorazowe transakcje będą wykluczone z części obliczeń budżetowych i raportów, aby łatwiej było zobaczyć to, co naprawdę istotne. + convert_to_trade_title: Zamień na transakcję papieru wartościowego + convert_to_trade_description: Zamień tę transakcję na zlecenie kupna lub sprzedaży z danymi papieru wartościowego do śledzenia portfela. + convert_to_trade_button: Zamień na transakcję giełdową + pending_duplicate_merger_title: Duplikat zaksięgowanej transakcji? + pending_duplicate_merger_description: Ręcznie połącz tę oczekującą transakcję z jej zaksięgowaną wersją. + pending_duplicate_merger_button: Otwórz łączenie + merchant_label: Kontrahent + name_label: Nazwa + nature: Typ + none: "(brak)" + note_label: Notatki + note_placeholder: Wprowadź notatkę + overview: Przegląd + settings: Ustawienia + tags_label: Tagi + tab_transactions: Transakcje + tab_upcoming: Nadchodzące + uncategorized: "(bez kategorii)" + activity_labels: + buy: Kupno + sell: Sprzedaż + sweep_in: Transfer przychodzący + sweep_out: Transfer wychodzący + dividend: Dywidenda + reinvestment: Reinwestycja + interest: Odsetki + fee: Opłata + transfer: Przelew + contribution: Wpłata + withdrawal: Wypłata + exchange: Wymiana + other: Inne + mark_recurring: Oznacz jako cykliczną + mark_recurring_subtitle: Śledź to jako transakcję cykliczną. Różnica kwoty jest automatycznie obliczana na podstawie ostatnich 6 miesięcy podobnych transakcji. + mark_recurring_title: Transakcja cykliczna + potential_duplicate_title: Wykryto możliwy duplikat + potential_duplicate_description: Ta oczekująca transakcja może być tą samą transakcją co zaksięgowana transakcja poniżej. Jeśli tak, połącz je, aby uniknąć podwójnego liczenia. + merge_duplicate: + success: Pomyślnie połączono transakcje + failure: Nie udało się połączyć transakcji + keep_both: Nie, zachowaj obie + split_parent_row: + split_label: Podział + transaction: + pending: Oczekująca + pending_tooltip: Transakcja oczekująca — może się zmienić po zaksięgowaniu + linked_with_provider: Połączono z %{provider} + activity_type_tooltip: Typ aktywności inwestycyjnej + possible_duplicate: Duplikat? + potential_duplicate_tooltip: To może być duplikat innej transakcji + review_recommended: Sprawdź + review_recommended_tooltip: Duża różnica kwoty — zalecana weryfikacja, aby sprawdzić, czy to duplikat + split: Podział + split_tooltip: Ta transakcja została podzielona na wiele wpisów + split_child_tooltip: Część transakcji dzielonej + dismiss_duplicate: + success: Pozostawiono jako oddzielne transakcje + failure: Nie udało się odrzucić sugestii duplikatu + pending_duplicate_merge: + possible_duplicate: Duplikat? + possible_duplicate_short: Dupl.? + review_recommended: Sprawdź + review_recommended_short: Weryf. + confirm_title: Połącz z zaksięgowaną transakcją (%{posted_amount}) + reject_title: Zachowaj jako oddzielne transakcje + summary: + total_transactions: Łącznie transakcji + income: Przychody + expenses: Wydatki + inflow: Wpływy + outflow: Wypływy + header: + edit_categories: Edytuj kategorie + edit_imports: Edytuj importy + edit_merchants: Edytuj kontrahentów + edit_tags: Edytuj tagi + import: Importuj + index: + transaction: transakcja + transactions: transakcje + import: Importuj + list: + drag_drop_title: Upuść plik CSV, aby zaimportować + drag_drop_subtitle: Prześlij transakcje bezpośrednio + transaction: transakcja + transactions: transakcje + toggle_recurring_section: Przełącz nadchodzące transakcje cykliczne + search: + filters: + account: Konto + date: Data + type: Typ + status: Status + amount: Kwota + category: Kategoria + tag: Tag + merchant: Kontrahent + convert_to_trade: + title: Zamień na transakcję papieru wartościowego + description: Zamień tę transakcję na transakcję giełdową z danymi papieru wartościowego + date_label: 'Data:' + account_label: 'Konto:' + amount_label: 'Kwota:' + security_label: Papier wartościowy + security_prompt: Wybierz papier wartościowy... + security_custom: "+ Wprowadź własny ticker" + security_not_listed_hint: Nie widzisz swojego papieru? Wybierz na dole listy opcję „Wprowadź własny ticker”. + ticker_placeholder: AAPL + ticker_hint: Wprowadź symbol giełdowy akcji lub ETF-u, np. AAPL lub MSFT + ticker_search_placeholder: Szukaj tickera... + ticker_search_hint: Szukaj po symbolu, nazwie spółki lub wpisz własny ticker + price_mismatch_title: Cena może się nie zgadzać + price_mismatch_message: Twoja cena (%{entered_price}/akcję) znacznie różni się od bieżącej ceny rynkowej %{ticker} (%{market_price}). Jeśli to wygląda nieprawidłowo, mogłeś wybrać zły papier wartościowy — spróbuj użyć opcji „Wprowadź własny ticker”, aby wskazać poprawny. + quantity_label: Ilość (akcji) + quantity_placeholder: np. 20 + quantity_hint: Liczba akcji objętych transakcją + price_label: Cena za akcję + price_placeholder: np. 52.15 + price_hint: Cena za akcję (%{currency}) + qty_or_price_hint: Wprowadź przynajmniej ilość albo cenę. Druga wartość zostanie obliczona z kwoty transakcji (%{amount}). + trade_type_label: Typ transakcji giełdowej + trade_type_hint: Kupno lub sprzedaż akcji papieru wartościowego + exchange_label: Giełda (opcjonalne) + exchange_placeholder: XNAS + exchange_hint: Pozostaw puste, aby wykryć automatycznie + cancel: Anuluj + submit: Zamień na transakcję giełdową + success: Transakcja została zamieniona na transakcję giełdową + conversion_note: 'Przekształcono z transakcji: %{original_name} (%{original_date})' + errors: + not_investment_account: Tylko transakcje na kontach inwestycyjnych można zamieniać na transakcje giełdowe + already_converted: Ta transakcja została już przekształcona albo wykluczona + enter_ticker: Wprowadź symbol tickera + security_not_found: Wybrany papier wartościowy już nie istnieje. Wybierz inny. + select_security: Wybierz albo wpisz papier wartościowy + enter_qty_or_price: Wprowadź ilość albo cenę za akcję. Druga wartość zostanie obliczona z kwoty transakcji. + invalid_qty_or_price: Nieprawidłowa ilość lub cena. Wprowadź poprawne dodatnie wartości. + conversion_failed: 'Nie udało się przekształcić transakcji: %{error}' + unexpected_error: 'Wystąpił nieoczekiwany błąd podczas przekształcania: %{error}' + searches: + filters: + amount_filter: + equal_to: Równe + greater_than: Większe niż + less_than: Mniejsze niż + placeholder: '0' + badge: + expense: Wydatek + income: Przychód + on_or_after: od %{date} + on_or_before: do %{date} + transfer: Przelew + confirmed: Potwierdzone + pending: Oczekujące + type_filter: + expense: Wydatek + income: Przychód + transfer: Przelew + status_filter: + confirmed: Potwierdzone + pending: Oczekujące + menu: + account_filter: Konto + amount_filter: Kwota + apply: Zastosuj + cancel: Anuluj + category_filter: Kategoria + clear_filters: Wyczyść filtry + date_filter: Data + merchant_filter: Kontrahent + status_filter: Status + tag_filter: Tag + type_filter: Typ + search: + equal_to: równe + greater_than: większe niż + less_than: mniejsze niż + form: + toggle_selection_checkboxes: Przełącz wszystkie pola wyboru + attachments: + cannot_exceed: Nie można przekroczyć %{count} załączników na transakcję + uploaded_one: Załącznik został pomyślnie przesłany + uploaded_many: "Pomyślnie przesłano %{count} załączników" + failed_upload: 'Nie udało się przesłać załącznika: %{error}' + no_files_selected: Nie wybrano plików do przesłania + attachment_deleted: Załącznik został pomyślnie usunięty + failed_delete: 'Nie udało się usunąć załącznika: %{error}' + upload_failed: Nie udało się przesłać załącznika. Spróbuj ponownie lub skontaktuj się ze wsparciem. + delete_failed: Nie udało się usunąć załącznika. Spróbuj ponownie lub skontaktuj się ze wsparciem. + upload: Prześlij + no_attachments: Brak załączników + select_up_to: Wybierz maksymalnie %{count} plików (obrazy lub PDF, maks. %{size} MB każdy) • wykorzystano %{used} z %{count} + files: + one: Plik (1) + few: Pliki (%{count}) + many: Plików (%{count}) + other: Plików (%{count}) + browse_to_add: Przeglądaj, aby dodać pliki + max_reached: Osiągnięto maksymalny limit plików (%{count}/%{max}). Usuń istniejący plik, aby przesłać kolejny. diff --git a/config/locales/views/transfers/pl.yml b/config/locales/views/transfers/pl.yml new file mode 100644 index 000000000..8f01f23ad --- /dev/null +++ b/config/locales/views/transfers/pl.yml @@ -0,0 +1,30 @@ +--- +pl: + transfers: + create: + success: Przelew został utworzony + destroy: + success: Przelew został usunięty + form: + amount: Kwota + date: Data + expense: Wydatek + from: Z + income: Przychód + select_account: Wybierz konto + submit: Utwórz przelew + to: Do + transfer: Przelew + new: + title: Nowy przelew + show: + delete: Usuń przelew + delete_subtitle: Ta operacja usuwa przelew. Nie usunie transakcji źródłowych. + delete_title: Usunąć przelew? + details: Szczegóły + note_label: Notatki + note_placeholder: Dodaj notatkę do tego przelewu + overview: Przegląd + settings: Ustawienia + update: + success: Przelew został zaktualizowany diff --git a/config/locales/views/users/pl.yml b/config/locales/views/users/pl.yml new file mode 100644 index 000000000..d4d9690f7 --- /dev/null +++ b/config/locales/views/users/pl.yml @@ -0,0 +1,17 @@ +--- +pl: + users: + destroy: + success: Twoje konto zostało usunięte. + update: + email_change_failed: Nie udało się zmienić adresu e-mail. + email_change_initiated: Sprawdź nowy adres e-mail, aby dokończyć potwierdzenie zmiany. + success: Twój profil został zaktualizowany. + resend_confirmation_email: + success: Nowa wiadomość potwierdzająca została dodana do kolejki wysyłki. + no_pending_change: Brak oczekującej zmiany adresu e-mail! + reset: + success: Twoje konto zostało zresetowane. Dane zostaną usunięte w tle za jakiś czas. + unauthorized: Nie masz uprawnień do wykonania tej akcji + reset_with_sample_data: + success: Twoje konto zostało zresetowane, a dane przykładowe są przygotowywane. Dane demo pojawią się wkrótce. diff --git a/config/locales/views/valuations/pl.yml b/config/locales/views/valuations/pl.yml new file mode 100644 index 000000000..b99fa06ff --- /dev/null +++ b/config/locales/views/valuations/pl.yml @@ -0,0 +1,30 @@ +--- +pl: + valuations: + form: + amount: Kwota + submit: Dodaj aktualizację salda + header: + balance: Saldo + index: + change: zmiana + date: data + new_entry: Nowy wpis + no_valuations: Brak wycen dla tego konta + valuations: Wartość + value: wartość + new: + title: Nowe saldo + show: + amount: Kwota + date_label: Data + delete: Usuń + delete_subtitle: Tej akcji nie można cofnąć + delete_title: Usuń wpis + details: Szczegóły + name_label: Nazwa + name_placeholder: Wprowadź nazwę tego wpisu + note_label: Notatki + note_placeholder: Dodaj dodatkowe szczegóły dotyczące tego wpisu + overview: Przegląd + settings: Ustawienia diff --git a/config/locales/views/vehicles/pl.yml b/config/locales/views/vehicles/pl.yml new file mode 100644 index 000000000..1f53f8d63 --- /dev/null +++ b/config/locales/views/vehicles/pl.yml @@ -0,0 +1,25 @@ +--- +pl: + vehicles: + edit: + edit: Edytuj %{account} + form: + make: Marka + make_placeholder: Toyota + mileage: Przebieg + mileage_placeholder: '15000' + mileage_unit: Jednostka + model: Model + model_placeholder: Camry + year: Rok + year_placeholder: '2023' + new: + title: Wprowadź dane pojazdu + overview: + current_price: Aktualna cena + make_model: Marka i model + mileage: Przebieg + purchase_price: Cena zakupu + trend: Trend + unknown: Nieznane + year: Rok diff --git a/test/lib/money_test.rb b/test/lib/money_test.rb index 1a43c8e8e..5c18105aa 100644 --- a/test/lib/money_test.rb +++ b/test/lib/money_test.rb @@ -161,7 +161,7 @@ class MoneyTest < ActiveSupport::TestCase test "all supported locales can format money without errors" do # Ensure all supported locales from LanguagesHelper::SUPPORTED_LOCALES work - supported_locales = %w[en fr de es tr nb ca ro pt-BR zh-CN zh-TW nl] + supported_locales = LanguagesHelper::SUPPORTED_LOCALES supported_locales.each do |locale| locale_sym = locale.to_sym diff --git a/test/lib/polish_pluralization_test.rb b/test/lib/polish_pluralization_test.rb new file mode 100644 index 000000000..b614f8888 --- /dev/null +++ b/test/lib/polish_pluralization_test.rb @@ -0,0 +1,27 @@ +require "test_helper" +require "securerandom" + +class PolishPluralizationTest < ActiveSupport::TestCase + test "uses rails i18n plural rules for polish" do + translation_key = "test_pluralization_#{SecureRandom.hex(6)}" + + I18n.backend.store_translations(:pl, translation_key => { + sample: { + one: "one", + few: "few", + many: "many", + other: "other" + } + }) + + path = "#{translation_key}.sample" + + assert_equal "many", I18n.t(path, locale: :pl, count: 0) + assert_equal "one", I18n.t(path, locale: :pl, count: 1) + assert_equal "few", I18n.t(path, locale: :pl, count: 2) + assert_equal "many", I18n.t(path, locale: :pl, count: 5) + assert_equal "many", I18n.t(path, locale: :pl, count: 12) + assert_equal "few", I18n.t(path, locale: :pl, count: 22) + assert_equal "many", I18n.t(path, locale: :pl, count: 25) + end +end