Przejdź do treści
DedicatedPHP Kontakt

Jak zaprojektować wielojęzyczny onboarding w SaaS PHP

Zaprojektuj rejestrację w SaaS PHP z czytelnym wyborem języka, zachowaniem danych i przetestowanymi ścieżkami. Utrzymuj preferencje, odpowiedzi i błędy po zmianie języka lub wznowieniu onboardingu.

Diagram procesu rejestracji w SaaS z wyborem języka, krokami i stanami walidacji.

Wielojęzyczny onboarding w SaaS nie polega wyłącznie na przetłumaczeniu tekstów na pierwszym ekranie. Użytkownik musi móc zrozumieć każdy krok, zachować swoje odpowiedzi i ukończyć rejestrację, nawet jeśli zmieni język lub wróci do niej później. Aby to osiągnąć, warto oddzielić preferencję językową od danych biznesowych i traktować ścieżkę jako proces z weryfikowalnymi stanami.

Ten poradnik koncentruje się na rejestracji organizacji: co pokazać przed utworzeniem konta, co zapisywać w trakcie procesu i co testować, aby wykryć błędy. Nie ma na celu określenia ogólnej strategii internacjonalizacji całej aplikacji.

Oddziel język interfejsu, treści i dane rejestracyjne

Oddziel język interfejsu, treści i dane rejestracyjne — guía visual de DedicatedPHP

W formularzu mogą występować razem trzy rodzaje informacji, ale nie należy ich przechowywać ani tłumaczyć w ten sam sposób:

  • Język interfejsu: określa etykiety, instrukcje, walidację i komunikaty systemowe. To preferencja dotycząca obsługi, taka jak es lub fr.
  • Treści produktu: teksty zarządzane przez firmę, na przykład opis planu, kategoria lub szablon powitalny. Mogą mieć własne tłumaczenia i wymagać niezależnej decyzji.
  • Dane wprowadzone przez użytkownika: obejmują nazwę organizacji, domenę lub opis. Należy je zachować w niezmienionej postaci, tak jak wprowadziła je dana osoba, bez tłumaczenia przy zmianie języka interfejsu.

W modelu danych unikaj używania jednego niejednoznacznego pola language do reprezentowania różnych pojęć. Preferencję języka interfejsu można nazwać preferred_locale; język zarządzanej treści, jeśli ma to zastosowanie, powinien być przypisany do tej treści. Natomiast nazwa organizacji nie staje się inną wartością po zmianie języka interfejsu.

Takie rozdzielenie ułatwia też określenie, jak działają selektory. Jeśli użytkownik wybiera branżę spośród przetłumaczonych opcji, zapisuj stabilny identyfikator, a nie widoczną etykietę. Dzięki temu wybraną opcję można wyświetlić w innym języku bez zmiany danych biznesowych i bez uzależnienia od tego, czy etykieta pozostanie identyczna.

Wybierz język, zanim powstanie konto

Rejestracja często rozpoczyna się, zanim użytkownik zostanie uwierzytelniony i zanim jego profil będzie zawierał zapisaną preferencję. Dlatego system potrzebuje jasno określonej reguły początkowej. Może udostępniać widoczny selektor, sugerować język przeglądarki albo łączyć oba rozwiązania. Automatyczne wykrywanie ma pomagać, a nie uniemożliwiać wybór innej opcji.

Określ, która wartość ma pierwszeństwo, gdy dostępnych jest kilka sygnałów. Na przykład wybór dokonany przez użytkownika podczas rejestracji powinien mieć pierwszeństwo przed późniejszym automatycznym wykryciem. Wybrany język można tymczasowo zapisać w sesji lub rekordzie procesu rejestracji; po utworzeniu konta można skopiować go do preferencji użytkownika. Jeśli organizacja ma osobne ustawienie języka, nie myl go z osobistą preferencją.

Warto też zdecydować, co się stanie, gdy użytkownik przejdzie z linku zaproszenia, wznowi proces na innym urządzeniu lub wróci po wygaśnięciu. Udokumentuj regułę pierwszeństwa i nie pozwól, by żądanie bez stanu usunęło prawidłowy wybór. Nie zapisuj preferencji wyłącznie w przeglądarce, jeśli proces może być wznawiany na innym urządzeniu: w odpowiednich przypadkach powiąż ją z utrwalonym stanem onboardingu.

Zaprojektuj stany umożliwiające zmianę języka i wznowienie rejestracji

Przedstaw onboarding jako sekwencję stanów, a nie zbiór niezależnych stron. Rekord może zawierać bieżący krok, udzielone już odpowiedzi, wybrany język i status procesu, na przykład oczekujący, ukończony lub wygasły. Spójne utrwalanie danych umożliwia odtworzenie procesu bez tworzenia organizacji przy każdym ponownym załadowaniu ekranu.

W aplikacji PHP waliduj po stronie serwera zarówno stan procesu, jak i każde otrzymane dane. Interfejs może kontrolować nawigację, ale nie może być jedynym źródłem informacji o tym, czy krok został ukończony. Używaj stabilnych identyfikatorów kroków i opcji oraz obsługuj aktualizacje tak, aby ponowienie żądania nie powodowało duplikowania zasobów. Na przykład ponowne żądanie utworzenia organizacji powinno rozpoznać istniejący proces, zamiast rozpoczynać kolejną rejestrację.

Po zmianie języka wyświetl ponownie etykiety i komunikaty, ale zachowaj prawidłowe odpowiedzi. Jeśli odpowiedź przestaje być prawidłowa z powodu rzeczywistej różnicy w regułach obowiązujących na poszczególnych rynkach, wyjaśnij przyczynę i poproś o jej poprawienie; nie usuwaj jej po cichu. Wybór języka nie powinien też zmieniać identyfikatora procesu ani zerować postępu.

Zadbaj o spójność etykiet, walidacji i błędów

Tłumaczenie powinno obejmować całą ścieżkę, a nie tylko nagłówki. Uwzględnij etykiety, teksty pomocy, przyciski, stany ładowania, potwierdzenia, komunikaty walidacyjne i błędy, po których można kontynuować. Jeśli ekran zawiera teksty w kilku językach, nawet gdy pola działają poprawnie, rośnie ryzyko, że użytkownik błędnie zinterpretuje, co ma zrobić.

Reguły walidacji muszą być spójne po stronie klienta i serwera. Regułę należy wyrazić jako wspólny warunek — na przykład wymagane pole musi zawierać wartość — a każdy interfejs wyświetla komunikat w wybranym języku. Unikaj budowania komunikatów przez łączenie przetłumaczonych fragmentów, ponieważ szyk i gramatyka mogą się różnić. Zamiast tego używaj kompletnych komunikatów powiązanych ze stabilnymi kluczami błędów.

Oddziel wewnętrzny kod błędu od tekstu widocznego dla użytkownika. Aplikacja może na przykład zwrócić klucz organization_name_required i dopasować do niego komunikat odpowiedni dla interfejsu. Logi techniczne mogą zawierać kod i identyfikator procesu, ale nie powinny ujawniać niepotrzebnych danych osobowych ani zwracać wewnętrznych wyjątków do przeglądarki.

W przypadku awarii sieci lub gdy nie można chwilowo uzyskać odpowiedzi, poinformuj, czy odpowiedzi zostały zachowane, i zaproponuj bezpieczne działanie umożliwiające kontynuację lub ponowienie próby. Komunikat powinien być zrozumiały i nie może obiecywać, że informacje zostały zapisane, jeśli serwer tego nie potwierdził.

Testuj całe ścieżki, a nie tylko tłumaczenia

Testy powinny obejmować sekwencję działań użytkownika i zmiany stanu. Praktyczny zestaw przypadków obejmuje:

  • Rozpoczęcie rejestracji w dostępnym języku, wypełnienie kilku pól i potwierdzenie, że etykiety oraz komunikaty są wyświetlane w tym języku.
  • Zmianę języka w trakcie procesu i sprawdzenie, czy odpowiedzi zostają zachowane, wybrane opcje są tłumaczone, a zasoby nie są duplikowane.
  • Wysłanie formularza z nieprawidłowymi danymi i sprawdzenie, czy błędy są zrozumiałe, przetłumaczone i przypisane do właściwego pola.
  • Wywołanie błędu, po którym można kontynuować, ponowienie próby i potwierdzenie, które odpowiedzi zostały zachowane oraz czy proces posunął się naprzód tylko raz.
  • Opuszczenie rejestracji i wznowienie jej, także po wygaśnięciu lub w nowej sesji, aby sprawdzić regułę utrwalania preferencji.
  • Sprawdzenie wartości wprowadzonych przez użytkownika oraz wybranych identyfikatorów przed zmianą języka i po niej.

Zautomatyzuj istotne niezmienniki: zmiana języka nie może modyfikować nazwy organizacji; wznowienie procesu nie może duplikować konta; nieudana walidacja nie może usuwać prawidłowych pól. Dodaj testy interfejsu, aby sprawdzać obecność tekstów i upewnić się, że nie są widoczne klucze tłumaczeń. Testy manualne nadal są przydatne do wykrywania niejasnych komunikatów lub instrukcji, które przestały mieścić się w projekcie.

Lista kontrolna przed włączeniem kolejnego języka

Lista kontrolna przed włączeniem kolejnego języka — guía visual de DedicatedPHP
  • Czy jasno określono, które pole reprezentuje język interfejsu i kto może go zmieniać?
  • Czy wybór jest zachowywany przed utworzeniem konta i przy wznowieniu procesu?
  • Czy dane wprowadzone przez użytkownika i identyfikatory wybranych opcji pozostają niezmienione po zmianie języka?
  • Czy uwzględniono wszystkie etykiety, teksty pomocy, walidacje, potwierdzenia i błędy w całej ścieżce?
  • Czy ponowienia i powtarzające się żądania są bezpieczne i nie powodują duplikowania rejestracji?
  • Czy testy weryfikują rozpoczęcie, zmianę języka, wznowienie i możliwość kontynuowania po błędzie?

Niezawodną wielojęzyczną rejestrację osiąga się przez jasne określenie odpowiedzialności za poszczególne dane oraz sprawdzenie, czy stan przetrwa typowe działania. Przed włączeniem nowego języka przejrzyj całą ścieżkę — od pierwszego wyboru po potwierdzenie: każdy ekran powinien wskazywać użytkownikowi dalsze kroki, nie zmieniając interpretacji jego danych ani nie powodując utraty postępu.

Chcesz zastosować te pomysły w swoim projekcie?Omówmy Twoją platformę PHP.
Zobacz powiązaną usługę