Vai al contenuto
DedicatedPHP Contatto

Come progettare un onboarding multilingue in un SaaS PHP

Progetta l’onboarding del tuo SaaS PHP con lingue ben definite, dati intatti e percorsi verificati: conserva preferenze, risposte ed errori quando si cambia lingua o si riprende il processo.

Diagramma di un flusso di registrazione SaaS con selezione della lingua, passaggi e stati di convalida.

Un onboarding multilingue in un SaaS non consiste solo nel tradurre i testi della prima schermata. L’utente deve poter capire ogni passaggio, conservare le proprie risposte e completare la registrazione anche se cambia lingua o torna più tardi. Per riuscirci, è opportuno separare la preferenza linguistica dai dati di business e trattare il percorso come un processo con stati verificabili.

Questa guida si concentra sulla registrazione di un’organizzazione: cosa presentare prima di creare un account, cosa salvare durante il processo e cosa testare per individuare eventuali problemi. Non intende definire la strategia generale di internazionalizzazione dell’intera applicazione.

Separare lingua dell’interfaccia, contenuti e dati di registrazione

Separare lingua dell’interfaccia, contenuti e dati di registrazione — guía visual de DedicatedPHP

In un modulo possono comparire insieme tre tipi di informazioni, che però non devono essere archiviati né tradotti allo stesso modo:

  • Lingua dell’interfaccia: determina etichette, istruzioni, convalide e messaggi di sistema. È una preferenza relativa all’esperienza, come es o fr.
  • Contenuti del prodotto: sono testi gestiti dal business, per esempio la descrizione di un piano, una categoria o un template di benvenuto. Possono avere traduzioni proprie e richiedere una decisione indipendente.
  • Dati inseriti dall’utente: includono il nome dell’organizzazione, un dominio o una descrizione. Devono essere conservati così come sono stati inseriti, senza tradurli quando cambia la lingua dell’interfaccia.

Nel modello dei dati, evita di usare un unico campo ambiguo chiamato language per rappresentare concetti diversi. Una preferenza dell’interfaccia può chiamarsi preferred_locale; la lingua di un contenuto gestito, se pertinente, deve essere associata a quel contenuto. Il nome di un’organizzazione, invece, non diventa un altro valore quando si cambia interfaccia.

Questa separazione chiarisce anche come gestire i selettori. Se l’utente sceglie un settore tra opzioni tradotte, salva un identificatore stabile, non l’etichetta visualizzata. In questo modo, l’opzione selezionata può essere mostrata tradotta in un’altra lingua senza modificare il dato di business né dipendere dal fatto che un’etichetta rimanga identica.

Scegliere la lingua prima che esista un account

Spesso la registrazione inizia prima che esistano un utente autenticato e una preferenza salvata nel suo profilo. Per questo il sistema ha bisogno di una regola iniziale esplicita. Può offrire un selettore visibile, usare la lingua del browser come suggerimento o combinare entrambe le opzioni. Il rilevamento automatico dovrebbe essere d’aiuto, non impedire alla persona di scegliere un’altra opzione.

Definisci quale valore ha la priorità quando sono presenti più segnali. Per esempio, una scelta esplicita effettuata durante la registrazione dovrebbe prevalere su un successivo rilevamento automatico. La lingua scelta può essere salvata temporaneamente nella sessione o nel record del processo di registrazione; una volta creato l’account, può essere copiata nella preferenza dell’utente. Se l’organizzazione ha un’impostazione linguistica separata, non confonderla con la preferenza personale.

È inoltre opportuno decidere cosa succede se l’utente arriva da un link di invito, riprende una sessione su un altro dispositivo o torna dopo una scadenza. Documenta la regola di priorità ed evita che una richiesta senza stato cancelli una scelta valida. Non salvare la preferenza solo nel browser se il processo può essere ripreso da un altro dispositivo: quando opportuno, associala allo stato persistito dell’onboarding.

Progettare gli stati per cambiare lingua o riprendere la registrazione

Rappresenta l’onboarding come una sequenza di stati, non come un insieme di pagine indipendenti. Un record può includere il passaggio corrente, i campi già compilati, la lingua scelta e lo stato del processo, per esempio in sospeso, completato o scaduto. Una persistenza coerente consente di ripristinare il processo senza creare un’organizzazione ogni volta che si ricarica una schermata.

In un’applicazione PHP, convalida sul server sia lo stato del flusso sia ogni dato ricevuto. L’interfaccia può controllare la navigazione, ma non deve essere l’unica autorità nel decidere se un passaggio è completato. Usa identificatori stabili per i passaggi e le opzioni e gestisci gli aggiornamenti in modo che un nuovo tentativo non duplichi le risorse. Per esempio, una richiesta ripetuta per creare l’organizzazione dovrebbe riconoscere il processo esistente anziché avviare una nuova registrazione.

Quando si cambia lingua, mostra di nuovo le etichette e i messaggi, ma conserva le risposte valide. Se una risposta non è più valida a causa di una reale differenza tra le regole dei mercati, spiega il motivo e chiedi di correggerla; non eliminarla senza avvisare. La scelta della lingua non dovrebbe neppure modificare l’identificatore del processo o azzerare i progressi.

Mantenere coerenti etichette, convalide ed errori

La traduzione deve coprire l’intero percorso, non solo le intestazioni. Includi etichette, testi di aiuto, pulsanti, stati di caricamento, conferme, messaggi di convalida ed errori recuperabili. Se una schermata mescola più lingue, anche quando i campi funzionano aumenta la possibilità che l’utente fraintenda cosa deve fare.

Le regole di convalida devono essere coerenti tra client e server. La regola si esprime come una condizione comune — per esempio, che un campo obbligatorio non sia vuoto — e ciascuna interfaccia mostra il messaggio nella lingua scelta. Evita di costruire i messaggi concatenando frammenti tradotti, perché l’ordine e la grammatica possono variare. Preferisci messaggi completi associati a chiavi di errore stabili.

Separa il codice interno dell’errore dal testo mostrato all’utente. Per esempio, l’applicazione può restituire una chiave come organization_name_required e risolverla in un messaggio adatto all’interfaccia. I log tecnici possono includere il codice e l’identificatore del processo, ma non devono esporre dati personali non necessari né restituire eccezioni interne al browser.

In caso di errore di rete o di risposta temporaneamente non disponibile, indica se le risposte sono state conservate e proponi un’azione sicura per continuare o riprovare. Il messaggio deve essere comprensibile e non deve promettere che le informazioni sono state salvate se il server non lo ha confermato.

Testare percorsi completi, non solo le traduzioni

I test devono coprire la sequenza d’uso e i cambiamenti di stato. Una raccolta pratica include questi casi:

  • Avviare la registrazione in una lingua disponibile, compilare diversi campi e verificare che le etichette e i messaggi siano visualizzati in quella lingua.
  • Cambiare lingua a metà del processo e verificare che le risposte restino, le opzioni selezionate vengano tradotte e non siano create risorse duplicate.
  • Inviare un modulo con dati non validi e verificare che gli errori siano chiari, localizzati e associati al campo corretto.
  • Provocare un errore recuperabile, riprovare e verificare quali risposte sono state conservate e se il processo è avanzato una sola volta.
  • Uscire e riprendere la registrazione, anche dopo una scadenza o da una nuova sessione, per verificare la regola di persistenza della preferenza.
  • Verificare i valori inseriti dall’utente e gli identificatori delle opzioni selezionate prima e dopo il cambio di lingua.

Automatizza le invarianti importanti: cambiare lingua non deve modificare il nome dell’organizzazione; riprendere un processo non deve duplicare l’account; una validazione non riuscita non deve eliminare i campi validi. Aggiungi test dell’interfaccia per verificare che i testi siano presenti e che non siano visibili chiavi di traduzione. I test manuali restano utili per individuare messaggi poco chiari o istruzioni che non rientrano più nel layout.

Lista di controllo prima di abilitare un’altra lingua

Lista di controllo prima di abilitare un’altra lingua — guía visual de DedicatedPHP
  • È chiaro quale campo rappresenta la lingua dell’interfaccia e chi può cambiarla?
  • La scelta viene conservata prima della creazione di un account e quando si riprende il processo?
  • I dati inseriti e gli identificatori delle opzioni restano intatti quando si cambia lingua?
  • Sono state coperte tutte le etichette, i testi di aiuto, le convalide, le conferme e gli errori del percorso?
  • I nuovi tentativi e le richieste ripetute sono sicuri e non generano registrazioni duplicate?
  • I test verificano l’avvio, il cambio di lingua, la ripresa e gli errori recuperabili?

Una registrazione multilingue affidabile si ottiene definendo responsabilità chiare per ogni dato e verificando che lo stato sopravviva alle azioni abituali. Prima di abilitare una nuova lingua, rivedi il percorso dalla prima scelta fino alla conferma: ogni schermata deve guidare l’utente senza reinterpretare i suoi dati né fargli perdere i progressi.

Vuoi applicare queste idee al tuo progetto?Parliamo della tua piattaforma PHP.
Visualizza il servizio correlato