- Szycy
- 10 maja 2026 04:33 UTC
- Autor
- Kamo
- Pochęt się
- c0a87b7
Dwa tryby awarii były nie do odróżnienia w odpowiedzi, więc skrypt Nie mógł ich odróżnić i "przetłumaczył" te same klucze do angielskiego Na każdym biegu z synchronizacji, z losowymi podzbiorami odnoszącym się do tego, co dokładnie Wniosek LibreTranslate wylądował podczas restartu robotnika: 1. Usługodawca popełnił błąd (timeout, 5xx, połączenie odmówiło połowy sztuki ratunkowej) 2. Dostawca odniósł sukces, ale zwrócił źródło bez zmian (legit "no Potrzebne tłumaczenie" — właściwe rzeczowniki, nazwy marek itp.) Obaj zapisali źródło jako tłumaczenie. Zmiany: LibreTranslateProvider / BergamotProvider: 3 próby z 1s/3s backoff dla przemijających awarii (5xx, 429, timeout, połączenie Błędy); 4xx (nie-429) propaguje się natychmiast, ponieważ próba powtórna Zniekształcona prośba nigdy nie pomoże. Czasoowicz o podanie na życzenie 30s. Rzucanie na ponowne wyczerpanie zamiast zwracania tekstu źródłowego. DostawcaRouter: teraz wyróżnia "każdy dostawca wspierający Błędne" (rzucanie) od "co najmniej jednego sięgnięcia, ale zwróciło źródło" (uzasadniony przekaz – zwraca tekst). Brak wsparcia bez zmian. - łapie wyjątki na klucz, Gromadzi je na nowej nieudanej liścieKeys na temat odpowiedzi i pomija Nie powiodły się kluczy z wiadomości. BatchTranslateResponse: dodaje pole nieudanychKeys. translate.ts: czyta nieudaneKeys, nigdy nie zapisuje tych kluczy z powrotem, więc apiTranslated[key] ?? istniejący [klucz] upadek pozostawia przeorię Wartość angielska na miejscu — która w następnym biegu spełnia cur-enVal i ponownie układa dokładnie te klucze do ponownego próbowania. Testy: dodano testy regresji dla "wszystkich dostawców błędów rzutów", "w Przynajmniej jeden sukces z niezmienionym tekstem zwraca tekstem, "router Przełom na przejściowy błąd podstawowy", i TranslationService Prawidłowe podziały na wiadomości vs nieudaczniki.