Files
TREK/shared/src/i18n/pl/storage.ts
T
Maurice e0982e708f feat(storage): show running checks, confirmations and the nightly result in Admin > Storage
The panels follow the reworked reclaim state: Check now starts a check
in the background and the panel polls until it is done, a category with
an unusually large share of unused files offers Confirm, Freed comes
from the last run that deleted, a stopped check says why and no longer
reads as nothing found, the switch waits for its answer and a poll that
was in flight cannot flip it back, and refusals name their reason in
the operator's language. Strings updated in all 28 languages.
2026-11-01 16:25:38 +01:00

185 lines
12 KiB
TypeScript

import type { TranslationStrings } from '../types';
const storage: TranslationStrings = {
'storage.field.root': 'Katalog główny',
'storage.help.root': 'Bezwzględna ścieżka na serwerze, w której ten backend przechowuje swoje obiekty.',
'storage.field.endpoint': 'Adres URL punktu końcowego',
'storage.help.endpoint':
'Podstawowy adres URL usługi zgodnej z S3, np. https://s3.example.com lub http://127.0.0.1:9000.',
'storage.field.bucket': 'Bucket', // same-as-en
'storage.field.accessKeyId': 'Identyfikator klucza dostępu',
'storage.field.secretAccessKey': 'Tajny klucz dostępu',
'storage.field.region': 'Region', // same-as-en
'storage.help.region': 'Pozostaw wartość domyślną, chyba że twój dostawca wymaga konkretnego regionu.',
'storage.field.keyPrefix': 'Prefiks klucza',
'storage.help.keyPrefix': 'Opcjonalny prefiks dodawany do każdego klucza obiektu, np. trek/prod.',
'storage.field.retries': 'Liczba ponowień',
'storage.field.timeoutMs': 'Limit czasu (ms)',
'storage.field.primary': 'Backend podstawowy',
'storage.field.replicas': 'Repliki',
'storage.title': 'Magazyn',
'storage.description':
'Gdzie TREK przechowuje przesłane pliki, zdjęcia i kopie zapasowe. Nic się nie zmienia, dopóki nie zapiszesz.',
'storage.loading': 'Ładowanie…',
'storage.saved': 'Zapisano konfigurację magazynu',
'storage.save': 'Zapisz zmiany',
'storage.unsaved': 'Niezapisane zmiany',
'storage.saveConflict':
'Konfiguracja magazynu zmieniła się od czasu jej wczytania, więc Twoje zmiany nie zostały zapisane. Odrzuć je i wczytaj zapisaną konfigurację ponownie, aby zacząć od nowa.',
'storage.discardAndReload': 'Odrzuć moje zmiany i wczytaj ponownie',
'storage.configError.banner': 'Nie udało się wczytać zapisanej konfiguracji magazynu — zapisanie ją zastąpi: {error}',
'storage.backends.title': 'Backendy',
'storage.backends.add': 'Dodaj backend',
'storage.backends.usedBy': 'Używany przez: {categories}',
'storage.backends.unused': 'Nieprzypisany do żadnej kategorii',
'storage.backends.envReadOnly': 'Zdefiniowany przez zmienną środowiskową (tylko do odczytu)',
'storage.source.built-in': 'Wbudowany',
'storage.source.env': 'Środowisko',
'storage.source.settings': 'Ustawienia',
'storage.type.local': 'Lokalny',
'storage.type.s3': 'S3',
'storage.type.mirror': 'Kopia lustrzana',
'storage.actions.test': 'Testuj',
'storage.actions.edit': 'Edytuj',
'storage.actions.remove': 'Usuń',
'storage.test.running': 'Testowanie…',
'storage.test.ok': 'Połączenie OK',
'storage.test.failed': 'Test nieudany',
'storage.remove.title': 'Usuń backend',
'storage.remove.body': 'Usunąć {name} z konfiguracji? Serwer odrzuci zapis, jeśli coś nadal od niego zależy.',
'storage.remove.stillAssigned': 'Nadal przypisany do: {categories}',
'storage.form.addTitle': 'Dodaj backend',
'storage.form.editTitle': 'Edytuj backend',
'storage.form.name': 'Nazwa',
'storage.form.type': 'Typ',
'storage.form.apply': 'Zastosuj',
'storage.form.cancel': 'Anuluj',
'storage.form.duplicateName': 'Backend o nazwie {name} już istnieje',
'storage.categories.title': 'Kategorie',
'storage.categories.default': 'domyślna',
'storage.categories.reassignWarning':
'Istniejące obiekty nie są przenoszone: nowe obiekty trafiają do nowo przypisanego backendu, stare pozostają tam, gdzie są.',
'storage.category.files': 'Dokumenty podróży',
'storage.category.journey': 'Zdjęcia z dziennika podróży',
'storage.category.covers': 'Zdjęcia okładek',
'storage.category.avatars': 'Zdjęcia profilowe',
'storage.category.places': 'Zdjęcia miejsc',
'storage.category.photos-google': 'Pamięć podręczna zdjęć Google',
'storage.category.photos-trek': 'Pamięć podręczna zdjęć TREK',
'storage.category.backups': 'Kopie zapasowe',
// What each category stores — rendered under the label in the category map.
'storage.categoryDesc.files':
'Załączniki plikowe przesłane do podróży — bilety, PDF-y, potwierdzenia rezerwacji i pliki udostępnione na czacie podróży.',
'storage.categoryDesc.journey': 'Zdjęcia i miniatury dołączone do wpisów dziennika podróży.',
'storage.categoryDesc.covers': 'Zdjęcia okładek podróży i kolekcji, w tym okładki pobrane z Unsplash.',
'storage.categoryDesc.avatars': 'Zdjęcia profilowe kont użytkowników.',
'storage.categoryDesc.places': 'Obrazy dołączone do miejsc i miejsc w kolekcjach — przesłane lub zaimportowane.',
'storage.categoryDesc.photos-google':
'Kopie zdjęć z Google Places przechowywane w pamięci podręcznej — można je pobrać ponownie, ich utrata jest bezpieczna.',
'storage.categoryDesc.photos-trek':
'Zdjęcia w pamięci podręcznej z usługi zdjęć TREK używanej przez funkcję Zdjęcia (Memories) — można je pobrać ponownie, ich utrata jest bezpieczna.',
'storage.categoryDesc.backups':
'Archiwa kopii zapasowych serwera tworzone przez panel Kopia zapasowa lub harmonogram.',
'storage.health.title': 'Stan',
'storage.health.allClear': 'Nie odnotowano żadnych błędów replik.',
'storage.health.seedFile':
'Plik startowy storage-config.json jest obecny, ale ignorowany — wiersze konfiguracji już istnieją. Zarządzaj magazynem tutaj.',
'storage.health.failureLine': '{op} dla {key} na {backend} nie powiodło się: {error}',
// Replicas-on-primary mirror UX (2026-08-20 spec)
'storage.mirror.targets': 'Cele mirrora',
'storage.mirror.targetsHelp': 'Każdy zapis do tego backendu jest również kopiowany do każdego wybranego celu.',
'storage.mirror.latencyNote':
'Repliki są zapisywane jedna po drugiej podczas każdego przesyłania — wolny lub niedostępny cel spowalnia każde przesyłanie każdej kategorii na tym backendzie.',
'storage.mirror.mirroredTo': 'Lustrzane do: {targets}',
'storage.mirror.replicaOf': 'Replika: {primaries}',
'storage.mirror.cacheWarning':
'Niezalecane: ta kategoria zawiera treści możliwe do ponownego pobrania — ich replikowanie jest zwykle marnotrawstwem.',
'storage.mirror.degenerate.duplicate-mirror':
'Drugi mirror otacza {primary} — panel zarządza tylko pierwszym; usuń ten, aby zarządzać mirrorowaniem z {primary}.',
'storage.mirror.degenerate.env-primary':
'Otacza backend zdefiniowany przez zmienną środowiskową — nieedytowalny tutaj.',
'storage.mirror.degenerate.missing-primary': 'Odwołuje się do backendu, który już nie istnieje.',
'storage.remove.usedAsReplicaBy': 'Używany jako replika przez: {primaries}',
// Backfill + usage (backfill/stats/notifications spec)
'storage.sync.now': 'Synchronizuj teraz',
'storage.sync.running': 'Synchronizacja… {done}/{total}',
'storage.sync.counts': '{copied} skopiowanych · {skipped} pominiętych · {failed} nieudanych',
'storage.sync.cancel': 'Anuluj synchronizację',
'storage.sync.done': 'Synchronizacja zakończona: {copied} skopiowanych, {deleted} usuniętych, {failed} nieudanych',
'storage.sync.cancelled': 'Synchronizacja anulowana',
'storage.sync.error': 'Synchronizacja nie powiodła się: {error}',
'storage.sync.prompt': 'Istniejące obiekty nie zostały jeszcze zreplikowane — zsynchronizować teraz?',
'storage.sync.dismiss': 'Odrzuć',
'storage.usage.line': '{count} obiektu · {size}',
'storage.usage.line.one': '{count} obiekt · {size}',
'storage.usage.line.few': '{count} obiekty · {size}',
'storage.usage.line.many': '{count} obiektów · {size}',
'storage.usage.computed': 'Wykorzystanie obliczone {age}',
'storage.usage.never': 'Wykorzystanie nie zostało jeszcze obliczone',
'storage.usage.refresh': 'Odśwież',
'storage.usage.compute': 'Oblicz teraz',
'storage.usage.legacyNote': 'obejmuje starą bibliotekę zdjęć',
// Category migration (copy → flip → delta sweep)
'storage.migrate.promptTitle': 'Przenieść istniejące obiekty do nowego backendu?',
'storage.migrate.promptLine': '{category}: {count} obiektu ({size}) z {from} do {to}',
'storage.migrate.promptLine.one': '{category}: {count} obiekt ({size}) z {from} do {to}',
'storage.migrate.promptLine.few': '{category}: {count} obiekty ({size}) z {from} do {to}',
'storage.migrate.promptLine.many': '{category}: {count} obiektów ({size}) z {from} do {to}',
'storage.migrate.promptLineUnknown':
'{category}: nieznany rozmiar (wykorzystanie jeszcze nie obliczone) z {from} do {to}',
'storage.migrate.move': 'Przenieś istniejące obiekty',
'storage.migrate.routeOnly': 'Przekieruj tylko nowe zapisy',
'storage.migrate.running': 'Przenoszenie {category}… {done}/{total}',
'storage.migrate.done': 'Przenoszenie zakończone: {copied} skopiowanych, {skipped} pominiętych',
'storage.migrate.doneFailures': '{failed} nie powiodło się — te obiekty nie zostały skopiowane do nowego backendu',
'storage.migrate.failed': 'Przenoszenie nie powiodło się: {error} — kategoria nie została przełączona',
'storage.migrate.cancelled': 'Przenoszenie anulowane — nic nie zostało przełączone',
'storage.migrate.reclaimable': '{count} obiektu ({size}) pozostaje na {from}, odzyskaj ręcznie',
'storage.migrate.reclaimable.one': '{count} obiekt ({size}) pozostaje na {from}, odzyskaj ręcznie',
'storage.migrate.reclaimable.few': '{count} obiekty ({size}) pozostają na {from}, odzyskaj ręcznie',
'storage.migrate.reclaimable.many': '{count} obiektów ({size}) pozostaje na {from}, odzyskaj ręcznie',
'storage.migrate.cancel': 'Anuluj przenoszenie',
'storage.migrate.promptCancel': 'Anuluj',
'storage.migrate.queued': 'W kolejce: {categories}',
'storage.migrate.queueDropped':
'Nie udało się rozpocząć kolejnego przenoszenia — pozostała kolejka została wyczyszczona: {categories}',
'storage.reclaim.title': 'Pliki bez powiązań',
'storage.reclaim.hint':
'Każdej nocy TREK szuka przesłanych plików, których nie używa już żadna podróż, miejsce, dziennik, kolekcja ani użytkownik, na przykład po usunięciu podróży.',
'storage.reclaim.check': 'Sprawdź teraz',
'storage.reclaim.checked': 'Ostatnia kontrola: {age}',
'storage.reclaim.never': 'Jeszcze nie sprawdzono',
'storage.reclaim.delete': 'Usuń pliki bez powiązań',
'storage.reclaim.deleteHint':
'Wyłączone: nocna kontrola tylko raportuje. Włączone: plik, którego nic nie używało przez tydzień, jest usuwany. Pliki usunięte w TREK znikają od razu w obu przypadkach.',
'storage.reclaim.freeable': 'Można zwolnić',
'storage.reclaim.waiting': 'Nieużywane krócej niż tydzień',
'storage.reclaim.deleted': 'Zwolniono podczas ostatniego nocnego czyszczenia',
'storage.reclaim.nothing': 'Nie znaleziono plików bez powiązań.',
'storage.reclaim.stopped':
'Ostatnia kontrola zakończyła się wcześniej, ponieważ w trakcie jej trwania przywrócono bazę danych.',
'storage.reclaim.skip.sources_missing': 'Pominięto: nie dało się zapytać każdej części TREK',
'storage.reclaim.skip.shared_location': 'Pominięto: współdzieli lokalizację z inną kategorią',
'storage.reclaim.skip.list_failed': 'Pominięto: nie udało się wylistować plików',
'storage.reclaim.skip.source_failed': 'Pominięto: wyszukiwanie nie powiodło się',
'storage.reclaim.running': 'Sprawdzanie…',
'storage.reclaim.stoppedFailed':
'Ostatnia kontrola zatrzymała się z powodu błędu. Uruchomi się ponownie dziś w nocy.',
'storage.reclaim.skip.foreign_install': 'Pominięto: inna instalacja TREK korzysta z tego magazynu',
'storage.reclaim.skip.owner_unknown': 'Pominięto: TREK nie mógł oznaczyć tego magazynu jako własnego',
'storage.reclaim.skip.delete_failed': 'Zatrzymano: magazyn odmówił usunięcia',
'storage.reclaim.skip.interrupted': 'Zatrzymano przed zakończeniem, dane są niepełne',
'storage.reclaim.confirmNeeded':
'Ponad jedna piąta tych plików wygląda na nieużywane. Nic tutaj nie zostanie usunięte, dopóki nie potwierdzisz, że tak ma być.',
'storage.reclaim.confirm': 'Potwierdź',
'storage.reclaim.confirmed': 'Potwierdzono. Nocne czyszczenie może teraz usunąć te pliki.',
'storage.reclaim.error.reclaim_busy': 'Trwa inne zadanie magazynu. Spróbuj ponownie za chwilę.',
'storage.reclaim.error.reclaim_demo': 'Niedostępne w instancji demo.',
'storage.reclaim.error.reclaim_nothing_to_confirm': 'Nie ma już nic do potwierdzenia. Najpierw uruchom kontrolę.',
};
export default storage;