Files
TwitchDropsMiner/lang/Polski.json
Fengqing Liu 46291e83d8 Update CLAUDE.md with comprehensive translation system documentation
This commit documents the current state of the translation system architecture
and consolidates the recent i18n refactoring work.

Documentation updates:
- Add detailed Translation System section describing architecture
- Document all 19 supported languages with native names
- Include TypedDict schema structure and usage examples
- Update project structure to show lang/ directory
- Expand Key Files section with i18n/ package details
- Document language persistence and dynamic switching

Translation system changes:
- Migrate English translations from hardcoded to lang/English.json
- Add English.json as single source of truth for fallback translations
- Update all language files with comprehensive GUI translations
- Refactor translator.py to load English from JSON file
- Add language_name and english_name fields to all translations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 21:48:30 +11:00

178 lines
9.2 KiB
JSON

{
"language_name": "Polski",
"english_name": "Polish",
"status": {
"terminated": "\nAplikacja została zatrzymana.\nZamknij okno, aby wyjść z aplikacji.",
"watching": "Oglądam kanał: {channel}",
"goes_online": "Nowy status kanału {channel}: ONLINE, zmieniam...",
"goes_offline": "Nowy status kanału {channel}: OFFLINE, zmieniam...",
"claimed_drop": "Odebrano drop: {drop}",
"no_channel": "Brak możliwych kanałów do oglądania. Oczekiwanie na nową kampanię...",
"no_campaign": "Brak dostępnych aktywnych kampanii. Oczekiwanie na nową kampanię..."
},
"login": {
"unexpected_content": "Nieoczekiwany błąd zawartości, zwykle z powodu przekierowania.\nUpewnij się że nie jest wymagane dodatkowe logowanie bądź potwierdzenie dostępu do internetu.",
"error_code": "Kod błędu logowania: {error_code}",
"incorrect_login_pass": "Nieprawidłowa nazwa użytkownika lub hasło.",
"incorrect_email_code": "Nieprawidłowy kod z e-maila.",
"incorrect_twofa_code": "Nieprawidłowy kod 2FA.",
"email_code_required": "Wymagany kod z e-maila.",
"twofa_code_required": "Wymagany token 2FA.",
"status": {
"logged_in": "Zalogowano",
"logged_out": "Wylogowano",
"logging_in": "Logowanie...",
"required": "Wymagane zalogowanie",
"waiting_auth": "Waiting for authentication..."
}
},
"error": {
"captcha": "Próba logowania została odrzucona przez CAPTCHA.\nProszę spróbować ponownie za co najmniej 12 godzin.",
"site_down": "Strona Twitcha nie jest dostępna. Spróbuj ponownie za {seconds} s....",
"no_connection": "Nie można połączyć się z Twitchem. Spróbuj ponownie za {seconds} s...."
},
"gui": {
"output": "Dziennik zdarzeń",
"status": {
"name": "Status",
"idle": "Bezczynność",
"exiting": "Zamykanie...",
"terminated": "Zatrzymano",
"cleanup": "Czyszczenie kanałów...",
"gathering": "Szukanie kanałów...",
"switching": "Zmiana kanałów...",
"fetching_inventory": "Odświeżanie ekwipunku...",
"fetching_campaigns": "Odświeżanie kampanii...",
"adding_campaigns": "Dodawanie kampanii do ekwipunku... {counter}"
},
"tabs": {
"main": "Główna",
"inventory": "Ekwipunek",
"settings": "Ustawienia",
"help": "Pomoc"
},
"login": {
"name": "Logowanie",
"labels": "Status:\nIdentyfikator:",
"request": "Zaloguj się, by kontynuować.",
"username": "Nazwa użytkownika",
"password": "Hasło",
"twofa_code": "Kod 2FA (opcjonalnie)",
"button": "Zaloguj",
"oauth_prompt": "Enter this code at:",
"oauth_activate": "Twitch Activate",
"oauth_confirm": "I've entered the code"
},
"websocket": {
"name": "Status WebSocket",
"websocket": "WebSocket #{id}:",
"initializing": "Inicjalizacja...",
"connected": "Połączono",
"disconnected": "Rozłączono",
"connecting": "Łączenie...",
"disconnecting": "Rozłączanie...",
"reconnecting": "Ponowne łączenie..."
},
"progress": {
"name": "Postępy kampanii",
"drop": "Drop:",
"game": "Gra:",
"campaign": "Kampania:",
"remaining": "Pozostało: {time}",
"drop_progress": "Postęp dropu:",
"campaign_progress": "Postęp kampanii:",
"no_drop": "No active drop",
"return_to_auto": "Return to Auto Mode",
"manual_mode_info": "Manual Mode: Mining"
},
"channels": {
"name": "Kanały",
"online": "ONLINE ✔",
"pending": "W TOKU ⏳",
"offline": "OFFLINE ❌",
"no_channels": "No channels tracked yet...",
"no_channels_for_games": "No channels found for selected games...",
"channel_count": "channel",
"channel_count_plural": "channels",
"viewers": "viewers"
},
"inventory": {
"status": {
"active": "Aktywna ✔",
"upcoming": "Nadchodząca ⏳",
"expired": "Wygasła ❌",
"claimed": "Odebrano ✔"
},
"starts": "Rozpoczęcie: {time}",
"ends": "Koniec: {time}",
"no_campaigns": "No campaigns loaded yet...",
"claimed_drops": "claimed"
},
"settings": {
"general": {
"name": "Ogólne",
"dark_mode": "Tryb ciemny: "
},
"exclude": "Wykluczone",
"reload": "Przeładuj",
"games_to_watch": "Gry do oglądania",
"games_help": "Wybierz gry do oglądania. Kolejność ma znaczenie - przeciągnij, aby zmienić priorytet (góra = najwyższy priorytet).",
"search_games": "Szukaj gier...",
"select_all": "Zaznacz wszystko",
"deselect_all": "Odznacz wszystko",
"selected_games": "Wybrane gry (przeciągnij, aby zmienić kolejność)",
"available_games": "Dostępne gry",
"no_games_selected": "Nie wybrano gier. Zaznacz gry poniżej, aby je dodać.",
"no_games_match": "Żadna gra nie pasuje do wyszukiwania.",
"all_games_selected": "Wszystkie gry są wybrane lub brak dostępnych gier.",
"actions": "Akcje",
"connection_quality": "Jakość połączenia:",
"minimum_refresh": "Minimalny interwał odświeżania (minuty):",
"dark_mode": "Dark Mode",
"reload_campaigns": "Reload Campaigns"
},
"help": {
"links": {
"name": "Pomocne linki"
},
"how_it_works": "Jak to działa?",
"how_it_works_text": "Co kilkanaście sekund aplikacja pobiera metadane strumienia, udając jego oglądanie - to wystarczy, aby uzyskać postęp dropu. Zauważ, że w ten sposób możesz całkowicie pominąć konieczność pobierania rzeczywistego strumienia wideo i dźwięku. Do utrzymania statusu ONLINE lub OFFLINE kanałów używane jest połączenie WebSocket, które odbiera zdarzenia o zmianie statusu kanałów oraz aktualizuje aktualną ilość widzów.",
"getting_started": "Pierwsze kroki",
"getting_started_text": "1. Zaloguj się do aplikacji.\n2. Upewnij się, że twoje konto Twitch jest połączone ze wszystkimi kampaniami, z których chcesz dropić.\n3. Zmień tryb priorytetu na coś innego niż „Tylko lista priorytetów” i kliknij „Przeładuj”, jeśli chcesz rozpocząć dropienie ze wszystkich aktywnych kampanii.\n4. Użyj listy „Priorytety”, aby wybrać uporządkowaną listę gier, z których chcesz otrzymać dropy. Gry z górnej części listy będą miały większy priorytet dropienia niż te niżej na liście.\n5. Wybierz opcję „Tylko lista priorytetów”, aby wykluczyć z dropienia gry, które nie są na liście priorytetowej.\n6. Użyj listy „Wykluczone”, aby wskazać aplikacji gry, z których przedmioty nigdy nie powinny być dropione.\n7. Zmiana zawartości list „Priorytety” i „Wykluczone” oraz opcji „Tryb priorytetu” wymaga kliknięcia „Przeładuj”, aby aplikacja mogła zastosować wprowadzone zmiany.",
"about": "About Twitch Drops Miner",
"about_text": "This application automatically mines timed Twitch drops without downloading stream data.",
"how_to_use": "How to Use",
"features": "Features",
"important_notes": "Important Notes",
"github_repo": "GitHub Repository",
"how_to_use_items": [
"Login using your Twitch account (OAuth device code flow)",
"Link your accounts at <a href=\"https://www.twitch.tv/drops/campaigns\" target=\"_blank\">twitch.tv/drops/campaigns</a>",
"The miner will automatically discover campaigns and start mining",
"Configure priority games in Settings to focus on what you want",
"Monitor progress in the Main and Inventory tabs"
],
"features_items": [
"Stream-less drop mining - saves bandwidth",
"Game priority and exclusion lists",
"Tracks up to 199 channels simultaneously",
"Automatic channel switching",
"Real-time progress tracking"
],
"important_notes_items": [
"Do not watch streams on the same account while mining",
"Keep your cookies.jar file secure",
"Requires linked game accounts for drops"
]
},
"header": {
"title": "Twitch Drops Miner",
"language": "Language:",
"initializing": "Initializing...",
"auto_mode": "AUTO",
"manual_mode": "MANUAL",
"connected": "Connected",
"disconnected": "Disconnected"
}
}
}