Workflow lokalizacji dla web i natywnego UI, który się sprawdza
Praktyczny workflow lokalizacji: organizuj klucze tłumaczeń, ustal jasne właścicielstwo, obsługuj formy mnogie i uruchamiaj QA, aby UI web i natywne nie ulegały awariom.

Co idzie nie tak, gdy lokalizacja jest nieuporządkowana
Nieuporządkowana lokalizacja zwykle najpierw zawodzi w małych, irytujących miejscach, a potem w kosztowny sposób. Etykieta, która wczoraj się zmieściła, dziś zaczyna się rozjeżdżać. Brakujący klucz pokazuje się jako surowy identyfikator. Liczba mnoga, która w angielskim brzmiała dobrze, w innym języku staje się błędna lub nawet niegrzeczna.
Większość zespołów naprawia te same problemy pod presją:
- Przycięte przyciski, obcięte nagłówki lub tekst nachodzący na ikony
- Brakujące klucze, które cofają się do angielskiego lub pokazują nazwę klucza
- Błędne formy mnogie (na przykład „1 items”) i zła gramatyka w językach z rodzajem
- Niespójne nazewnictwo tego samego konceptu na różnych ekranach
- Last-minute hotfixy, bo jeden ekran wypłynął bez tłumaczeń
Ekrany webowe i natywne psują się często w różny sposób. W sieci elastyczne układy mogą ukrywać problemy aż do konkretnego viewportu lub przeglądarki. Tekst może się łamać, pchać przyciski w dół lub zaburzać siatkę. W aplikacjach natywnych odstępy są bardziej rygorystyczne. Długie tłumaczenie może spychać ważne elementy poza ekran, kolidować z ustawieniami dostępności (rozmiarami czcionek) lub być obcinane, bo komponent nie zmienia rozmiaru automatycznie.
Solidny workflow lokalizacyjny zapobiega większości z tego, sprawiając, że klucze są stabilne, tłumaczenia możliwe do przeglądu, a kontrole UI rutynowe. Pomaga wydawać aktualizacje z mniejszą liczbą niespodzianek. Czego nie naprawi — to niejasny tekst źródłowy. Jeśli oryginalne copy jest niejednoznaczne (np. „Open” lub „Apply” bez kontekstu), tłumaczenie wciąż będzie zgadywanką.
Proste zdefiniowanie sukcesu to nie „wszystko jest przetłumaczone.” To:
- UI pozostaje czytelne na webie i w aplikacjach natywnych
- Aktualizacje są szybkie, bo klucze nie zmieniają się cały czas
- QA znajduje problemy zanim wykryją je użytkownicy
Przykład: jeśli ekran koszyka pokazuje „{count} item(s)”, niezarządzane stringi prowadzą do niezręcznych pluraliów i zaburzeń w odstępach. Podejście zarządzane wymusza prawidłowe reguły pluralizacji i wyłapuje przycisk, który w języku niemieckim urasta o 30% przed wydaniem.
Zdecyduj o właścicielstwie i jedynym źródle prawdy
Workflow lokalizacyjny załamuje się najszybciej, gdy nikt nie potrafi odpowiedzieć na jedno pytanie: „Który tekst jest tym prawdziwym?” Wybierz jedno źródło prawdy dla stringów i zrób z tego rzecz oczywistą. To źródło może być plikiem w repo, platformą tłumaczeniową lub wewnętrzną tabelą, ale musi być jedno miejsce, które rozstrzyga spory.
Zdefiniuj role według decyzji, nie nazw stanowisk. Ktoś musi zatwierdzać sens i ton (często Product lub Marketing). Ktoś musi utrzymywać klucze stabilne i użyteczne w kodzie (często Engineering). Ktoś musi chronić ograniczenia UI (często Design), szczególnie gdy web i natywne ekrany zachowują się inaczej.
Jedny podział, który unika większości konfliktów:
- Twórca klucza: osoba dostarczająca ekran tworzy nowe klucze, gdy interfejs potrzebuje nowego tekstu.
- Zatwierdzający brzmienie: PM lub właściciel treści akceptuje tekst w języku bazowym.
- Edytor tłumaczeń: tłumacze mogą zmieniać tłumaczenia, ale nie mogą zmieniać nazw kluczy.
- Zmiany kluczy: tylko właściciel klucza może zdeprecjonować lub scalić klucze, z notatką wyjaśniającą powód.
Ustal oczekiwania co do czasu reakcji, aby wydania nie stawały w miejscu. Na przykład: nowe żądania kluczy potwierdzone w 1 dzień roboczy, zatwierdzenie brzmienia bazowego w 2 dni, krytyczne poprawki (zepsute UI, błędny tekst prawny) w kilka godzin.
Konkretny przykład: zespół tworzy nowy flow „Reset password” dla web i aplikacji natywnej. Programista dodaje klucze, PM zatwierdza ostateczny angielski tekst, a tłumacze wypełniają inne języki. Jeśli tłumacz zauważy, że „Reset” powinno być „Change”, zaktualizuje tłumaczenia, ale klucz pozostaje ten sam. Jeśli PM chce ponownie użyć tekstu na wielu ekranach, tylko właściciel klucza wprowadza taką zmianę strukturalną, żeby nic nie zepsuć cicho.
Strategia kluczy: ponowne użycie, stabilność i granice ekranów
Dobry workflow lokalizacyjny zaczyna się od jednej zasady: klucze to identyfikatory, nie angielskie zdania. Traktuj je jak numery katalogowe. Jeśli później zmienisz brzmienie, klucz zwykle powinien pozostać ten sam.
Utwórz nowy klucz, gdy znaczenie jest inne. Użyj ponownie klucza, gdy znaczenie jest takie samo, nawet jeśli ekran jest inny. „Zapisz” na ekranie profilu i „Zapisz” w ustawieniach mogą dzielić klucz, jeśli oba oznaczają „zapisz zmiany”. Ale „Zapisz” w znaczeniu „dodaj do zakładek” powinien być innym kluczem, bo tłumacze mogą potrzebować innego czasownika.
Oddziel krótkie etykiety UI od dłuższych treści. Etykieta przycisku, podpowiedź i komunikat o błędzie często tłumaczą się inaczej i mają różne limity długości. Trzymanie ich jako osobnych kluczy ułatwia dopracowanie tonu i interpunkcji bez łamania innych ekranów.
Granice ekranów bez wymuszania identycznego brzmienia
Celuj w ponowne użycie między web a natywnym, ale nie wymuszaj go, gdy platformy potrzebują innego języka. Natywny prompt uprawnień często wymaga jaśniejszego, bardziej formalnego tekstu niż tooltip w przeglądarce. W takim wypadku zachowaj ten sam koncept, ale użyj platformowych wariantów kluczy, żeby każde UI brzmiało naturalnie.
Praktyczny wzorzec: grupuj klucze według funkcji i typu UI, potem używaj ponownie w tych granicach:
- Używaj ponownie w obrębie tej samej funkcji, gdy znaczenie jest identyczne
- Rozdzielaj klucze według typu UI (etykieta vs pomoc vs błąd vs systemowy prompt)
- Używaj wariantów platformowych tylko wtedy, gdy brzmienie musi się różnić
- Trzymaj klucze stabilne i zmieniaj tylko wyświetlany tekst
- Dodawaj notatki kontekstowe (gdzie się pojawia, limity znaków)
Na przykład: akcja „Delete customer” może występować w panelu webowym i w natywnej aplikacji terenowej. Możesz użyć tego samego podstawowego klucza akcji, ale trzymać osobny klucz dla natywnego okna potwierdzenia, jeśli potrzebuje ostrzejszego tonu lub krótszych linii.
Nazewnictwo i organizacja kluczy tłumaczeń
Dobre nazewnictwo sprawia, że lokalizacja staje się nudna — w najlepszym sensie. Ludzie szybko znajdują stringi, tłumacze mają kontekst, a klucze są stabilne nawet gdy copy się zmienia.
Użyj czytelnej konwencji, która odpowiada na cztery pytania: gdzie to jest, czym to jest, do czego służy i czy to wariant. Prosty wzorzec działający na web i natywnych ekranach to:
<product_or_domain>.<screen_or_flow>.<component>.<purpose>[.<variant>]
Na przykład w portalu klienta: portal.login.button.submit lub portal.orders.empty_state.title. To grupuje klucze według ekranu lub przepływu i ułatwia wyszukiwanie po komponencie.
Złe klucze są albo zbyt niejasne, albo zbyt związane z aktualnym angielskim tekstem:
- Dobre:
portal.profile.field.email.label - Złe:
emailText(brak zakresu i celu) - Złe:
please_enter_your_email(psuje się przy zmianie copy) - Dobre:
portal.checkout.error.payment_failed - Złe:
error_12
Warianty powinny być jawne, nie kombinowane przez interpunkcję czy mieszane wielkości liter. Jeśli potrzeba krótszego labela dla mobilnego nagłówka, dodaj sufiks wariantu: ...title.short vs ...title.long. Jeśli potrzebujesz różnic w kapitalizacji, preferuj oddzielne klucze jak ...button.save i ...button.save_titlecase tylko wtedy, gdy platforma nie może bezpiecznie transformować tekstu.
Placeholdry też potrzebują zasad, żeby tłumacze nie zgadywali. Trzymaj placeholdery spójne między platformami i unikaj niejasności pozycyjnych.
- Używaj nazwanych placeholderów:
{user_name},{count},{date} - Nigdy nie łącz tekstów przez konkatenację: nie buduj stringów jak "Hello " + name
- Trzymaj jednostki wewnątrz stringa, jeśli zależą od języka:
{count} items, nie{count}+ " items" - Zdefiniuj dozwolone formaty: daty ISO, waluta lub formatowanie specyficzne dla platformy
- Dodaj krótką notatkę dla trudnych stringów (np. czy
{count}może być zero)
Reguły pluralizacji i gramatyka, które oszczędzają pracy
Pluralizacja to miejsce, gdzie workflowy zwykle pękają. Wiele zespołów zakłada, że każdy język ma tylko „jeden” i „wiele”, a potem okazuje się, że UI brzmi źle lub wymaga poprawek last-minute.
Języki mogą mieć kilka kategorii liczebnikowych. Angielski używa głównie one i other, ale języki takie jak rosyjski, polski, arabski czy czeski mają formy typu few, many, zero. Jeśli wcześnie wprowadzisz jeden wzorzec, później przepisywanie stringów w web i natywnych aplikacjach będzie uciążliwe.
Wybierz jeden standard dla stringów pluralizowanych i trzymaj się go wszędzie (web, iOS, Android, tekst renderowany po stronie serwera). Praktyczne podejście to przechowywanie jednego klucza z formami mnogimi zamiast oddzielnych kluczy na formę. Bazuj zestaw form na kategoriach CLDR, aby dopasować się do rzeczywistych reguł językowych.
Reguła zapobiegająca późniejszym przeróbkom: nigdy nie buduj zdań w UI z kawałków typu "You have " + count + " messages". Szyk słów się zmienia, a niektóre języki wymagają innych końcówek lub przypadków zależnych od liczby.
Praktyczny wzorzec klucza
Dla licznika wiadomości zdefiniuj jeden stabilny klucz i podaj liczbę jako parametr. Potem dostarcz formy, których potrzebują tłumacze dla każdego języka.
- Używaj jednego klucza na koncept (np.
inbox.message_count) - Wspieraj formy CLDR (zero, one, two, few, many, other)
- Zawsze stosuj placeholdery (np.
{count}) wewnątrz pełnego zdania - Dodaj notatki dla tłumacza, gdy znaczenie jest niejasne (czy to „wiadomości” czy „nieprzeczytane wiadomości”?)
Rodzaj i przypadki gramatyczne
Czasem same reguły pluralizacji nie wystarczą. Jeśli UI zwraca się do osoby ("Welcome, Alex") lub odnosi role ("assigned to him/her"), niektóre języki wymagają innych form zależnych od rodzaju. Inne języki zmieniają końcówki w zależności od przypadku gramatycznego (np. po niektórych przyimkach).
W takich sytuacjach twórz oddzielne stringi dla rzeczywiście różnych form gramatycznych, a nie tylko stylu. Cel to mniej kluczy, ale także mniej niespodzianek w QA, gdy „poprawne” tłumaczenie dalej brzmi źle w kontekście.
Formatowanie i ograniczenia układu w różnych platformach
Tłumaczenie może być poprawne, a mimo to zepsuć UI. Web i aplikacje natywne renderują tekst inaczej, więc workflow powinien obejmować reguły formatowania i kontrole układu, nie tylko przetłumaczone stringi.
Ustandaryzuj, jak wyświetlasz liczby, walutę i daty. Unikaj budowania ich przez konkatenację jak "$" + amount lub twardego formatowania daty w etykiecie. Używaj formatowania zależnego od lokalizacji, aby separatory i kolejność były zgodne z oczekiwaniami (1,000.50 vs 1 000,50; dzień-miesiąc-rok vs miesiąc-dzień-rok). Strefy czasowe to częste pole minowe: przechowuj znaczniki czasu w UTC, formatuj je w strefie użytkownika i jasno zaznaczaj, gdy czas dotyczy konkretnej strefy (np. czas odbioru).
Kierunek tekstu to kolejny cichy „breaker”. Jeśli obsługujesz języki pisane od prawej do lewej, zaplanuj lustrzane układy i interpunkcję, która „przesuwa się”. Ikony wskazujące kierunek (strzałki, przyciski wstecz, kroki postępu) często trzeba odwrócić. Zrób szybką weryfikację RTL jako część przeglądu, nawet jeśli nie wspierasz RTL kompleksowo.
W mobilu czcionki i odstępy mogą przesuwać się bardziej niż w sieci. String, który mieści się w web UI, może zawijać się niezgrabnie w SwiftUI czy Kotlinie. Ustal bezpieczny minimalny rozmiar czcionki, pozwól na zawijanie etykiet tam, gdzie to sensowne, i zdefiniuj fonty zapasowe dla skryptów, których domyślny font nie obsługuje.
Dostępność też wymaga lokalizowanych kontroli. Czytniki ekranu mogą dziwnie odczytywać liczby, skróty i mieszany tekst.
Reguły ochronne układu, które zapobiegają większości problemów:
- Projektuj pod ekspansję tekstu (30–50%) i unikaj przycisków o stałej szerokości.
- Trzymaj wartości dynamiczne (liczniki, ceny, daty) jako oddzielne sformatowane tokeny.
- Używaj natywnych formatowań dat i liczb platformy, nie własnych wzorców.
- Przetestuj jedną lokalizację RTL i jedną „długą” przed wydaniem.
- Przeprowadź kontrole czytnika ekranu na kluczowych przepływach (logowanie, checkout, ustawienia).
Przykład: etykieta „Total: $1,234.50” może wymagać zmiany na „1 234,50 €” z symbolem po wartości, inną interpunkcją i pauzą czytnika ekranu między słowami „Total” i kwotą.
Krok po kroku: od nowego ekranu do wydania
Workflow lokalizacyjny musi zacząć się wcześniej, niż większość zespołów myśli: podczas projektowania ekranu. Jeśli poczekasz, aż UI jest „gotowe”, kończysz rushując tłumaczenia, wysyłając obcięte teksty lub hardcodując stringi „na szybko”.
Zacznij od dodania klucza tłumaczeniowego już podczas projektowania każdej etykiety, przycisku i komunikatu. Napisz domyślny tekst w języku bazowym i dołącz szybki kontekst — gdzie się pojawia i co robi. Klucz jak checkout.pay_button ma sens tylko wtedy, gdy tłumacze wiedzą, czy to czasownik („Pay”), czy nazwa etykiety („Payment”).
Zaimplementuj UI używając placeholderów i domyślnego języka jako fallbacku. Trzymaj zmienne jawne (jak {name} lub {count}) i unikaj zszywania zdań. To jeden z najszybszych sposobów na złamanie gramatyki między językami.
Gdy wysyłasz stringi do tłumaczenia, dołącz to, czego tłumacze potrzebują: zrzuty ekranu dla każdego ekranu (lub krótki wideo, jeśli tekst się zmienia), limity znaków dla ciasnych miejsc (zakładki, przyciski, odznaki), notatki odnośnie tonu i terminologii oraz listę placeholderów i ich znaczeń.
Po otrzymaniu tłumaczeń, wczep je wcześnie i zbuduj wersje web i natywną. Wykonaj szybkie kontrole UI na najbardziej ryzykownych ekranach: logowanie, onboarding, checkout i ustawienia. Szukaj obciętych tekstów, zachodzących elementów, brakujących kluczy i błędnych form mnogich.
Na koniec wydaj i monitoruj. Śledź brakujące klucze, zdarzenia fallbacku do domyślnego języka oraz ekrany, na których tekst często się przepełnia.
Daj tłumaczom to, czego potrzebują, aby być dokładnymi
Dokładne tłumaczenia zaczynają się zanim przetłumaczysz jedno słowo. Jeśli tłumacze widzą tylko klucz i angielski fraz, zgadują. To prowadzi do właściwych słów we złym miejscu i UI, które brzmi dziwnie lub niegrzecznie.
Prosty „pakiet kontekstowy” usuwa większość zgadywania. Dla każdego stringa dodaj: gdzie się pojawia (ekran i komponent), co użytkownik próbuje osiągnąć i ton (przyjazny, formalny, pilny). Zaznacz też, czy to etykieta przycisku, komunikat o błędzie, pozycja w menu czy tekst pomocniczy — te kategorie tłumaczy się inaczej.
Gdy miejsce jest ograniczone, powiedz o tym z góry. Web i natywne ekrany psują się inaczej, więc zdefiniuj limity tam, gdzie mają znaczenie: krótkie etykiety przycisków, tytuły zakładek, toasty i wszystko w stałych kartach. Jeśli string musi pozostać w jednej linii, zaznacz to. Jeśli podziały linii są dozwolone, powiedz, gdzie są akceptowalne.
Oznacz wyraźnie części „nie do tłumaczenia”. Nazwy produktów, plany, kody kuponów, pola API i placeholdery jak {name} muszą pozostać nienaruszone. Bez wskazówek tłumacze mogą je zlokalizować i aplikacja straci sens.
Praktyczny pakiet na string:
- Zrzut ekranu lub nazwa ekranu (np. „Checkout - Payment method”)
- Typ i intencja (przycisk potwierdzający płatność)
- Notatka o tonie (uspokajający, pewny)
- Ograniczenia (max 18 znaków, jedna linia)
- Tokeny chronione (nazwy produktów, integracje,
{amount})
Traktuj teksty prawne i treści wsparcia jako osobne strumienie. Teksty prawne mają często wymagania zatwierdzeń i wolniejsze aktualizacje, więc trzymaj je osobno i wersjonuj ostrożnie. Artykuły pomocy zwykle wymagają dłuższych tłumaczeń i mogą być w innym systemie lub zestawie plików.
Przykład: przycisk „Continue” na mobilu może wymagać ostrzejszego limitu niż w webie. Jeśli tłumacze o tym wiedzą, wybiorą krótszy czasownik w językach, w których tekst się rozrasta, zamiast wymuszać późny redesign UI.
Pętla QA i przegląd, która zapobiega zepsutemu UI
Zepsute UI z powodu lokalizacji rzadko wygląda jak „bug” na pierwszy rzut oka. Wygląda jak brakująca etykieta, przycisk łamiący się na dwie linie lub placeholder pokazujący złą wartość. Dobry workflow zawiera kroki QA, które ujawniają te problemy zanim zrobią to użytkownicy.
Zacznij od pseudo-lokalizacji w buildach deweloperskich. Zastąp prawdziwe stringi dłuższymi, akcentowanymi wersjami (np. "[!!! Šéttïñĝš !!!]") i napompuj długość o 30–50%. To szybko ujawnia przycinanie, nachodzenie i twardo zakodowane stringi w web i aplikacjach natywnych.
Dodaj automatyczne kontrole przy każdym buildzie. Wyłapują nudne błędy, które ludzie przeoczają przy przeglądaniu setek linii:
- Brakujące klucze w dowolnej lokalizacji (fallbacki ukrywają problemy aż do później)
- Nieużywane klucze (sygnał dryfu i martwego tekstu)
- Niezgodność placeholderów ("Hello, {name}" vs "Hello, {username}")
- Nieprawidłowe formy mnogie dla danej lokalizacji (zero, one, few, many)
- Niedozwolone wzorce jak surowe HTML w stringach mobilnych
Następnie użyj jasnej ręcznej pętli zatwierdzającej. Product weryfikuje sens i ton dla kluczowych ekranów, a QA sprawdza układ i interakcję.
Utrzymuj macierz testów małą, ale rygorystyczną. Nie testuj wszystkiego. Testuj to, co psuje się najpierw: logowanie/rejestracja, reset hasła, checkout lub potwierdzenie płatności, ustawienia i edycję profilu, powiadomienia i puste stany oraz każdy ekran z tabelami, odznakami lub małymi przyciskami.
Przy zgłaszaniu problemów ułatwiaj naprawy przez precyzję. Dołącz lokalizację, urządzenie i wersję OS (lub przeglądarkę i szerokość), oczekiwany tekst, rzeczywisty tekst i zrzut ekranu pokazujący miejsce przycięcia. Jeśli chodzi o pluralizację lub placeholdery, wklej dokładny klucz i renderowany string.
Typowe błędy i jak ich unikać
Większość błędów lokalizacyjnych to nie „błędy tłumaczenia”. To problemy workflow, które objawiają się jako zepsute UI, brak tekstu lub mylące komunikaty.
Jedna pułapka to zmienianie nazw kluczy, gdy chcesz tylko zmienić treść. Klucze powinny być stabilnymi ID, nie tekstem. Jeśli zmienisz checkout.button.pay na checkout.button.pay_now, wszystkie stare tłumaczenia staną się „brakujące” i tracisz historię. Zachowaj klucz, zaktualizuj string w języku bazowym i dodaj kontekst, jeśli znaczenie się zmieniło.
Inny częsty problem to hardcodowanie tekstów na jednej platformie. Zespół web używa kluczy, a mobilny wprowadza literalny tekst dla szybkiej poprawki. Miesiąc później użytkownicy widzą alerty tylko po angielsku na iOS. Wprowadź regułę „brak hardcodowanych tekstów użytkownika” wspólną dla web i natywnych.
Placeholdry powodują subtelne błędy, gdy zakładasz stały szyk zdań. Po angielsku działa "{count} items", ale w innych językach kolejność może być inna lub potrzebne są dodatkowe słowa. Używaj nazwanych placeholderów (nie pozycyjnych) i trzymaj je spójne między platformami.
Błędy warte wczesnego wyłapania:
- Traktowanie kluczy jak copy i psucie istniejących tłumaczeń. Trzymaj klucze stabilne.
- Używanie jednego klucza dla dwóch znaczeń. Rozdziel klucze, gdy intencja się różni.
- Mieszanie stylów placeholderów (czasem nazwane, czasem numerowane). Ustandaryzuj jeden styl.
- Testowanie tylko w angielskim. Zawsze sprawdź przynajmniej jeden język, w którym tekst się wydłuża i jeden bardziej kompaktowy.
- Wydawanie bez planu awaryjnego. Zdefiniuj, co się stanie, gdy klucz jest brakujący.
Testowanie tylko jednego „długiego” języka to za mało. Niemiecki często rozrasta UI, a chiński może ukryć problemy ze spacingiem. Zrób szybki przegląd obu oraz testy brzegowe pluralizacji jak 0, 1 i 2.
Uzgodnij zachowanie fallback przed wydaniem. Na przykład: jeśli brakuje francuskiego, cofnij do angielskiego, loguj brakujące klucze i blokuj wydanie tylko, gdy krytyczne ekrany mają luki.
Szybka lista kontrolna i praktyczne kroki
Workflow lokalizacyjny pozostaje zdrowy, gdy kontrole są małe i powtarzalne. Cel jest prosty: mniej zaskakujących stringów, mniej złamanych układów, mniej last-minute tłumaczeń.
Zanim scalasz zmianę UI, szybko sprawdź najczęstsze "ups":
- Nowe klucze trzymają się zasad nazewnictwa i są w odpowiedniej przestrzeni nazw (ekran/funkcja).
- Placeholdry pasują dokładnie w całych językach (te same zmienne, to samo znaczenie).
- Formy mnogie są kompletne dla wspieranych języków (nie tylko angielski singular/plural).
- Nie ma hardcodowanego tekstu w UI (w tym stany błędów i puste stany).
- Nowy lub zmieniony tekst ma podstawowy kontekst (zrzut ekranu lub jasna notatka).
Zanim wydasz, zrób krótkie QA release'owe skupione na miejscach, gdzie lokalizacja najczęściej zawodzi. Ogranicz czas, ale zachowaj spójność: kluczowe przepływy na każdej platformie, jedna kontrola RTL, ekrany z długim tekstem (ustawienia, prawne, onboarding, tabele, wąskie przyciski) oraz formatowanie dat/liczb/waluty w kilku lokalizacjach.
Ustal rytm pracy dopasowany do zespołu. Wiele zespołów aktualizuje tłumaczenia co tydzień, a potem zamraża stringi 1–2 dni przed wydaniem. Chodzi o to, by unikać mieszania ostatnich edycji copy z finalnym QA.
Kolejne kroki, które szybko się zwracają: spisz konwencje (nazewnictwo kluczy, placeholdery, reguły pluralizacji, właścicielstwo), potem przeprowadź pilotowy ekran end-to-end i popraw workflow na podstawie tego, co się zepsuło.
Jeśli budujesz równocześnie backend, web UI i natywne mobile na jednej platformie jak AppMaster, łatwiej utrzymać spójność kluczy i placeholderów, bo te same ekrany i logika mogą dzielić konwencję. Utrzymanie tej konwencji jest tym, co sprawia, że lokalizacja staje się rutynowa, a nie kruche.
FAQ
Zacznij od jednego stabilnego miejsca na przechowywanie stringów, jednej uzgodnionej konwencji nazewnictwa kluczy i zasady, że klucze nie zmieniają się tylko dlatego, że zmienił się angielski tekst. Dodaj mały proces QA, który wychwyci brakujące klucze, przepełnienia i problemy z liczbami mnogimi przed wydaniem.
Wybierz jeden system, który zawsze jest źródłem prawdy przy konflikcie — pliki w repo, eksport z platformy tłumaczeniowej itp. Ustal, że wszyscy edytują treści przez to źródło, a kod tylko z niego korzysta.
Podejmuj decyzje według odpowiedzialności, nie tytułu: jedna osoba zatwierdza sens i ton w języku bazowym, inna zarządza strukturą kluczy i deprecjacjami, a tłumacze edytują tylko wartości tłumaczeń. To zapobiega cichym zmianom kluczy i ostatniminowym edycjom, które łamią buildy.
Stwórz nowy klucz, gdy zmienia się znaczenie, nawet jeśli angielski tekst wygląda podobnie. Użyj istniejącego klucza, gdy znaczenie jest naprawdę identyczne — to utrzymuje spójność tłumaczeń i zmniejsza koszty utrzymania.
Używaj kluczy jako identyfikatorów, nie zdań po angielsku, i uwzględniaj zakres, np. funkcję, ekran/przepływ, komponent i przeznaczenie. Klucz taki jak portal.checkout.button.pay pozostaje użyteczny, nawet jeśli copy przycisku się zmieni.
Problemy z odmianą wynikają z założenia, że języki mają tylko "jeden" i "wiele". Przechowuj jeden klucz na koncept z właściwymi kategoriami liczebnikowymi (wg CLDR) i trzymaj {count} w pełnym zdaniu, żeby tłumacz mógł bezpiecznie zmieniać szyk.
Nie buduj zdań przez łączenie kawałków jak "Hello " + name — szyk zdań i końcówki mogą się zmieniać. Używaj nazwanych placeholderów jak {user_name} konsekwentnie i dokumentuj, co każdy placeholder oznacza.
Zakładaj, że tekst może się wydłużyć o 30–50% i projektuj komponenty, które się zawijają lub rozrastają tam, gdzie to sensowne. Testuj przynajmniej jedną "długą" wersję języka i ustawienia dostępności na obu platformach, żeby wcześnie wykryć przycinanie i nachodzenie elementów.
Pseudo-lokalizuj w buildach deweloperskich, żeby uwidocznić hardcodowane stringi i problemy z układem, a potem dodaj automatyczne kontrole: brakujące klucze, nieużywane klucze, rozbieżności placeholderów i nieprawidłowe formy mnogie. Ręczna weryfikacja niech skupia się na przepływach, które psują się najczęściej.
Domyślnie użyj języka bazowego i jednocześnie loguj brakujące klucze, by szybko łatać luki bez blokowania wydania. Dla krytycznych ekranów lub tekstów prawnych bezpieczniej jest zablokować wydanie, jeśli tłumaczenia są brakujące lub przestarzałe.


