Jak przetłumaczyliśmy całą platformę za pomocą AI (i co miało z tym wspólnego podejście Agile)

Zdjęcie od Ángel Castañeda Crespo
Ángel Castañeda Crespo
Zdjęcie od Zakir Khan
Zakir Khan
05.03.26
10 min Czas czytania
Ta treść została przetłumaczona przez AI. Zobacz oryginał

Pod koniec 2025 roku platforma Agile Academy istniała w dwóch językach: niemieckim i angielskim. Cztery miesiące później była dostępna w ośmiu. Nie zatrudniliśmy agencji tłumaczeniowej. Użyliśmy AI. A zasady Agile odegrały kluczową rolę.

W skrócie

Problem: Platforma Agile Academy (Kirby CMS + Ruby on Rails + backend) istniała tylko w 2 językach, ale miała rosnącą międzynarodową publiczność i potrzebowała obecności na większej liczbie rynków.

Podejście: Wykorzystaliśmy AI (ChatGPT, Claude, Claude Code) do iteracyjnego tłumaczenia całego ekosystemu, jeden język na raz, doskonaląc proces po każdym uruchomieniu.

Rozwiązanie: Wyspecjalizowane agenty AI ze wspólnym glosariuszem, promptem tłumaczeniowym i skryptami weryfikacyjnymi, zastępujące ręczne kopiowanie i wklejanie zautomatyzowanymi, zwalidowanymi pipeline'ami tłumaczeniowymi na obu platformach.

Rezultat: 6 nowych języków uruchomionych w niecałe 3 miesiące. To, co zajęło 1 miesiąc ręcznie (hiszpański), zajęło 2 dni w ostatniej iteracji (polski).

2 → 8

Języków

440+

Artykułów na język

1 miesiąc → 2 dni

Na uruchomienie języka

Punkt wyjścia

Jedna platforma, dwie bazy kodu, dwa języki i rosnąca międzynarodowa publiczność.

Agile Academy to nie jest pojedyncza aplikacja. To cały ekosystem:

  • Baza wiedzy Kirby CMS: 440+ artykułów w 10 sekcjach, każdy ze złożonym Layout JSON, odnośnikami krzyżowymi i routingiem URL per język
  • Platforma Ruby on Rails: Strony rezerwacji szkoleń, kursy e-learningowe, procesy zakupowe, strony produktowe z plikami lokalizacyjnymi i widokami
  • Systemy backendowe: Szablony mailingowe, fakturowanie, e-maile transakcyjne
  • Tłumaczenia UI: Menu, stopki, breadcrumby, przyciski i sam przełącznik języków — na obu platformach

Wszystko to istniało tylko w języku niemieckim i angielskim. Tymczasem nie mogliśmy dostarczać wyselekcjonowanych treści osobom, które nie mówią po angielsku ani po niemiecku, a stanowiły one rosnący udział naszej publiczności.

Tłumaczenie tego nie było po prostu zadaniem contentowym. Każdy język wymagał:

  • Nowych tras w konfiguracji PHP Kirby (przeglądy artykułów, przepisywanie slugów sekcji, przekierowania)
  • Plików na poziomie sekcji ze zlokalizowanymi slugami URL
  • Stron przeglądowych, stron docelowych i stron strukturalnych (prawne, wydarzenia, strony autorów)
  • Plików lokalizacyjnych ROR dla menu, stopki, stron szkoleń, e-maili
  • Szablonów mailingowych w backendzie
  • Spójności między systemami: to samo słowo „artykuły” w URL-ach, te same linki do stron prawnych, ta sama struktura menu

Tradycyjna agencja tłumaczeniowa mogłaby obsłużyć tekst artykułów. Ale nikt nie napisze za nas tras PHP, nie naprawi layoutów JSON ani nie zaktualizuje plików lokalizacyjnych Railsów. Potrzebowaliśmy innego podejścia.

Iteracja 1: Hiszpański

Kopiuj-wklej, ręczne zmiany w kodzie i miesiąc ciężkiej pracy. Podejście kaskadowe.

Hiszpański był naszym pierwszym językiem ekspansji. Proces wyglądał następująco:

  1. Skopiuj tekst artykułu do ChatGPT lub Claude
  2. Wklej tłumaczenie z powrotem do nowego pliku
  3. Ręcznie napraw Layout JSON (mając nadzieję, że go nie zepsujesz)
  4. Powtórz 440 razy tylko dla Kirby
  5. Osobno przetłumacz pliki lokalizacyjne ROR, widoki, szablony mailingowe
  6. Ręcznie dodaj trasy, pliki sekcji, strony przeglądowe w Kirby
  7. Ręcznie zaktualizuj pliki lokalizacyjne i trasy w ROR
  8. Ręcznie utwórz szablony mailingowe w backendzie

Zajęło to około miesiąca. Przetłumaczono tylko najważniejsze strony w obu systemach. Jakość była niespójna. Niektóre artykuły używały formy grzecznościowej, inne potocznej. Terminy Agile były czasem tłumaczone, czasem nie. Odnośniki krzyżowe między artykułami prowadziły do nieistniejących stron.

Prace infrastrukturalne były jeszcze bardziej bolesne. Każdą trasę trzeba było napisać ręcznie. Każdy plik sekcji trzeba było stworzyć od zera. Slugi URL były niespójne. Platformy ROR i Kirby musiały być zsynchronizowane (te same linki w menu, ta sama stopka, te same strony prawne), a śledzenie, co zostało zrobione gdzie, było koszmarem arkuszy kalkulacyjnych.

W terminach Agile był to klasyczny waterfall: jedna wielka paczka, ograniczone pętle zwrotne, brak automatyzacji, brak wspólnych standardów. Dostarczyliśmy to, ale wiedzieliśmy, że nie możemy skalować tego podejścia na sześć kolejnych języków.

Co poszło nie tak:
  • Odnośniki krzyżowe między artykułami prowadziły do błędów 404, ponieważ przetłumaczone artykuły linkowały do stron, które jeszcze nie istniały lub miały inne slugi URL
  • Layout JSON ulegał zniekształceniu podczas kopiowania i wklejania: uszkodzone cudzysłowy, brakujące nawiasy, całe artykuły, które nie renderowały się
  • Niespójny ton: niektóre artykuły używały formalnego „usted”, inne nieformalnego „tú”, bez wspólnego standardu
  • Terminy Agile takie jak „Sprint”, „Scrum Master” i „Product Owner” były tłumaczone na hiszpański w niektórych artykułach, ale zachowywane po angielsku w innych
Analogia Agile: Duża paczka, dostarczanie w stylu waterfall. Brak automatyzacji, brak standardów, brak pętli zwrotnych. Ledwo zadziałało i nie dało się skalować.

Iteracja 2: Portugalski

Pierwsza automatyzacja, pierwsze skrypty, pierwsze użycie Claude Code. Tydzień zamiast miesiąca.

Dla portugalskiego zmieniliśmy podejście. Zamiast kopiować i wklejać artykuł po artykule, napisaliśmy skrypty automatyzujące tłumaczenie przez wywołania API. Podaj angielskie źródło, otrzymaj przetłumaczony plik Kirby.

Co ważniejsze, zaczęliśmy używać Claude Code nie tylko do treści artykułów, ale także do prac infrastrukturalnych. Claude Code mógł przeczytać nasze istniejące trasy hiszpańskie i wygenerować odpowiedniki dla portugalskiego. Mógł tworzyć pliki sekcji, strony przeglądowe i aktualizować pliki konfiguracyjne.

Po stronie ROR Claude Code generował pliki lokalizacyjne na podstawie istniejących tłumaczeń hiszpańskich. Aktualizował szablony mailingowe, tworzył nowe widoki tam, gdzie było to potrzebne, i utrzymywał spójność odniesień między systemami.

Rezultat: około tygodnia zamiast miesiąca. Ale wskaźnik błędów wciąż był wysoki.

Skrypty nie rozumiały kontekstu. Tłumaczyły „Sprint” na portugalski. Psuły Layout JSON, dodając podziały wierszy wewnątrz ciągów znaków. Slugi URL czasem były błędne, ponieważ AI nie znał naszych konwencji routingu na obu platformach.

Spędziliśmy sporo czasu na przeglądzie i poprawkach. Ale co kluczowe, teraz dokonywaliśmy inspekcji i adaptacji. Każdy znaleziony błąd stawał się regułą dla następnej iteracji. Zaczęliśmy budować glosariusz. Udoskonaliliśmy prompt tłumaczeniowy. Udokumentowaliśmy konwencje URL, których obie platformy musiały przestrzegać.

Co poszło nie tak:
  • AI przetłumaczyło „Sprint” jako „Corrida” a „Scrum Master” jako „Mestre Scrum” — nie istniał jeszcze glosariusz, który by temu zapobiegł
  • Layout JSON psuł się po cichu: AI dodawało podziały wierszy wewnątrz ciągów JSON, tworząc pliki wyglądające poprawnie, ale powodujące crash przy renderowaniu
  • Slugi URL były niespójne między platformami. Kirby miał jeden slug, ROR inny, więc linki w menu prowadziły donikąd
  • Znaki akcentowane (ã, ç, é) były escapowane jako sekwencje unicode w JSON, wyświetlając się jako surowe kody zamiast liter
Analogia Agile: Pierwsza automatyzacja, inspekcja i adaptacja. Każdy błąd stawał się regułą. Glosariusz, prompt, skrypty weryfikacyjne — wszystko to wynikało z realnych problemów, nie z planowania z góry.

Iteracje 3–6: Francuski, włoski, holenderski, polski

Wyspecjalizowane agenty, wiedza instytucjonalna i dwa dni na język.

Do czasu, gdy dotarliśmy do francuskiego, system dojrzał znacząco. Prawdziwą różnicę zrobiło podzielenie pracy.

Zamiast jednego dużego kontekstu AI próbującego obsłużyć wszystko, stworzyliśmy wyspecjalizowane agenty, każdy skupiony na jednej części systemu:

  • Agenty tłumaczenia treści, które obsługiwały paczki artykułów Kirby, postępując zgodnie z promptem tłumaczeniowym i glosariuszem
  • Agenty infrastrukturalne, które tworzyły trasy, pliki sekcji, strony przeglądowe w Kirby
  • Agenty lokalizacyjne ROR, które tłumaczyły i tworzyły pliki lokalizacyjne dla platformy Rails
  • Agenty weryfikacyjne, które uruchamiały skrypty wyłapujące uszkodzony JSON, błędne slugi URL, brakujące pola

Każdy agent miał zredukowane okno kontekstowe skupione na swoim konkretnym zadaniu. Dawało to znacznie lepsze wyniki niż jeden agent próbujący utrzymać całą platformę w pamięci.

Wiedza instytucjonalna była teraz skodyfikowana:

  • Prompt tłumaczeniowy (TRANSLATION_PROMPT.md) definiował ton, format, reguły URL i wymóg dołączania informacji o AI
  • Glosariusz (glossary.json) utrzymywał spójność terminów Agile we wszystkich językach
  • Skrypty weryfikacyjne wyłapywały błędy zanim trafiły na produkcję: uszkodzony Layout JSON, błędne referencje hreflang, brakujące wymagane pola
  • Lista kontrolna w CLAUDE.md dokumentowała każdy krok infrastrukturalny wymagany dla nowego języka (trasy, pliki sekcji, strony przeglądowe, strony strukturalne, synchronizacja menu/stopki)
  • Kontrole spójności między systemami zapewniały synchronizację Kirby i ROR

Włoski zajął dwa dni. Holenderski zajął dwa dni. Polski zajął dwa dni. Każda iteracja była szybsza i bardziej niezawodna. Wskaźnik błędów spadał z każdym językiem, ponieważ system uczył się na każdym wcześniejszym błędzie.

Analogia Agile: Zespoły cross-funkcjonalne z jasnym podziałem odpowiedzialności. Zredukowana praca w toku. Wiedza instytucjonalna utrwalona w żywych dokumentach, nie wiedza plemienna.

Przed i po

To samo zadanie. Fundamentalnie inny system.

Iteracja 1: Hiszpański (ręcznie)

  • ~1 miesiąc pracy
  • Kopiuj-wklej artykuł po artykule
  • Ręczna infrastruktura w dwóch bazach kodu
  • Niespójna jakość i terminologia
  • Brak weryfikacji, brak glosariusza, brak promptu
  • Częściowe pokrycie (przetłumaczono tylko kluczowe strony)
  • Brak ustrukturyzowanego śledzenia

Iteracja 6: Polski (agenty)

  • ~2 dni pracy
  • Równoległe paczki agentów na obu platformach
  • Zautomatyzowana infrastruktura z szablonów
  • Spójna jakość dzięki promptowi + glosariuszowi
  • Zautomatyzowane skrypty weryfikacyjne
  • Pełne pokrycie (440+ artykułów, cała infrastruktura)
  • Śledzenie czytelne maszynowo (ai-translations.json)

Zasady Agile w działaniu

To nie był tylko projekt tłumaczeniowy. To było sześć Sprintów uczenia się organizacyjnego.

Iteracyjne doskonalenie

Każdy język był Sprintem. Hiszpański był Sprintem 1: powolnym, ręcznym, pełnym nauki. Polski był Sprintem 6: szybkim, zautomatyzowanym, dopracowanym. Poprawa była wykładnicza. Każda iteracja nie tylko dodawała język. Ulepszała system na wszystkie przyszłe języki.

Inspekcja i adaptacja

Każdy błąd w jednym języku stawał się regułą zapobiegawczą dla następnego. Uszkodzony JSON? Dodaj walidator JSON do skryptu weryfikacyjnego. Przetłumaczono „Sprint” na portugalski? Dodaj go do glosariusza. Zła konwencja slugów URL? Udokumentuj ją na liście kontrolnej. System stawał się mądrzejszy, ponieważ wbudowaliśmy w niego pętle zwrotne.

Samoorganizujące się zespoły

Wyspecjalizowane agenty były w istocie samoorganizującymi się członkami zespołu. Każdy miał jasną odpowiedzialność, właściwy kontekst dla swojego zadania i zdefiniowane interfejsy z innymi. Agent treści nie musiał wiedzieć o trasach PHP. Agent infrastrukturalny nie musiał parsować Layout JSON. Separacja odpowiedzialności. Działa w oprogramowaniu i w zespołach.

Działające oprogramowanie ponad dokumentację

Prompt tłumaczeniowy, glosariusz, skrypty weryfikacyjne. Nic z tego nie zostało zaprojektowane z góry. Wszystko wynikało z realnych problemów napotykanych w realnej pracy. Prompt był przepisywany pięć razy. Glosariusz rósł z każdym językiem. Skrypty powstały z błędów, które przeszły przez ręczny przegląd. Żywa dokumentacja, ukształtowana przez faktyczne użycie, okazała się o wiele bardziej użyteczna niż jakakolwiek specyfikacja, którą moglibyśmy napisać z góry.

Reagowanie na zmiany

Nasze decyzje architektoniczne były napędzane przez błędy, nie przez planowanie z góry. Nie przewidzieliśmy, że Layout JSON będzie największym źródłem bugów. Odkryliśmy to podczas hiszpańskiego i zbudowaliśmy walidację przed portugalskim. Nie planowaliśmy specjalizacji agentów. Doszliśmy do niej po zobaczeniu, że jeden duży kontekst dawał gorsze wyniki niż kilka skoncentrowanych. Skończyliśmy z lepszym setupem niż cokolwiek, co moglibyśmy zaprojektować na tablicy.

Kluczowy wniosek: AI nie stawało się mądrzejsze między iteracjami. Nasz proces się doskonalił. Każdy Sprint dawał lepsze wyniki, ponieważ inwestowaliśmy w kontekst, standardy i pętle zwrotne. Te same zasady, które sprawiają, że zespoły Agile są efektywne.

Kluczowe wnioski

AI nie zastępuje myślenia Agile. Wzmacnia je.

1. AI wzmacnia twój proces — na dobre i na złe

Jeśli twój proces jest chaotyczny, AI wyprodukuje chaos szybciej. Jeśli twój proces jest zdyscyplinowany (jasne prompty, zdefiniowane standardy, pętle weryfikacyjne), AI wyprodukuje jakość na skalę. To samo narzędzie, które psuło nasz JSON w iteracji 1, produkowało bezbłędne wyniki w iteracji 6. AI się nie zmieniło. Nasz proces tak.

2. Kontekst jest wszystkim

Glosariusz, prompt tłumaczeniowy, lista kontrolna, reguły spójności między systemami. To wszystko są formy kontekstu. AI bez kontekstu to po prostu szybki tłumacz. AI z właściwym kontekstem to członek zespołu, który rozumie twoje konwencje, twoje przypadki brzegowe i twoje standardy jakości. Budowanie tego kontekstu to prawdziwa praca — i kumuluje się z każdym nowym językiem.

3. Rola człowieka przesuwa się z wykonawcy na architekta

W iteracji 1 ludzie tłumaczyli. W iteracji 6 ludzie projektowali system, definiowali standardy, przeglądali wyniki i doskonalili proces. Praca nie zniknęła. Przesunęła się na wyższy poziom myślenia. Mniej kopiowania i wklejania, więcej myślenia o tym, co składa się na dobre tłumaczenie, co tworzy spójne doświadczenie użytkownika i jak wyłapywać błędy zanim zrobią to użytkownicy.

4. Zacznij małymi krokami, dostarcz, ucz się, powtarzaj

Mogliśmy spędzić miesiące na projektowaniu „idealnego” pipeline'u tłumaczeniowego przed przetłumaczeniem choćby jednego artykułu. Zamiast tego zaczęliśmy od kopiowania i wklejania i iterowaliśmy. Każdy język czegoś nas nauczył. Każdy błąd ulepszył system. Zanim dotarliśmy do późniejszych języków, mieliśmy pipeline, którego żadne planowanie z góry nie mogłoby wyprodukować — ponieważ był ukształtowany przez realne problemy, nie hipotetyczne.

Zdjęcie od Ángel Castañeda Crespo

Ángel Castañeda Crespo

Scrum Academy GmbH

Ángel jest Full Stack Developerem z ponad 12-letnim doświadczeniem w rozwoju frontend i backend. Specjalizuje się w tworzeniu i utrzymaniu mikroserwisów, budowaniu stron internetowych oraz projektowaniu solidnych architektur oprogramowania. Dysponując szeroką wiedzą w zakresie technologii takich jak PHP, Ruby, AngularJS, HTML, JS, CSS i AWS, Ángel jest również biegły w testowaniu manualnym i automatycznym. Kładzie duży nacisk na pracę zespołową i rozwiązywanie złożonych problemów, nieustannie dążąc do wspierania współpracy i dostarczania rozwiązań najwyższej jakości.

Zdjęcie od Zakir Khan

Zakir Khan

Scrum Academy GmbH

Zakir Khan jest architektem rozwiązań i specjalistą Agile z ponad 10-letnim doświadczeniem w tworzeniu oprogramowania. W Agile Academy łączy wiedzę techniczną z metodykami zwinnymi, aby opracowywać innowacyjne rozwiązania dla różnych branż. Certyfikaty Zakira w zakresie frameworków zwinnych pozwalają mu zwiększać efektywność i optymalizować realizację projektów. Przed obecną rolą Zakir pracował jako programista i kierował projektami z zakresu tworzenia stron internetowych oraz analizy danych. Jego pasją jest transformacja cyfrowa, nowe technologie i ciągłe uczenie się. Wspiera firmy w tworzeniu przyszłościowych architektur.

Porozmawiaj z naszym asystentem Porozmawiaj z naszym asystentem