Il formato di indirizzo per paese non è una questione di traduzione. L’ordine degli elementi, la presenza di un codice postale, il numero di livelli amministrativi e il modo in cui un numero civico si rapporta a una via cambiano tutti quando attraversate un confine, e un modulo progettato attorno alla convenzione di un solo paese rifiuta silenziosamente input validi dalla maggior parte degli altri.
Questa guida espone le principali differenze strutturali, spiega perché il codice postale è il campo più spesso progettato male, esamina il compromesso che usano i moduli internazionali e quanto costa, e offre un modo per modellare un indirizzo multi-paese che possa davvero essere testato. Alla fine dovreste essere in grado di guardare un modulo di indirizzo e prevedere quali paesi falliranno in esso.
Come differisce l’ordine degli elementi?
Le due convenzioni dominanti vanno in direzioni opposte. Gli indirizzi anglo-americani si scrivono dal più piccolo al più grande, con il nome del destinatario, il numero civico e la via, la località, l’area amministrativa e il codice postale in quest’ordine. Gli indirizzi giapponesi si scrivono dal più grande al più piccolo, iniziando dalla prefettura, poi dal comune, poi dal distretto o quartiere, poi dall’isolato, poi dall’edificio e infine dall’appartamento.
La Turchia e diversi suoi vicini seguono anch’essi la direzione dal più grande al più piccolo, con la provincia in testa e il quartiere e la via a seguire. Gli indirizzi latinoamericani spesso si collocano tra i due, elencando la via, poi il numero, poi il distretto o la colonia, poi la città e la suddivisione amministrativa, con il codice postale prima o dopo la città a seconda del paese.
I paesi di lingua tedesca di solito mettono il codice postale e la città sulla stessa riga con il codice postale per primo, che è l’inverso della disposizione americana. Anche gli indirizzi francesi collocano il codice postale prima della città, e così fanno quelli olandesi. Quando un modulo etichetta un unico campo come città e si aspetta che il codice postale sia separato, l’ordine di visualizzazione che produce sarà sbagliato per tutti quei paesi anche se i dati sottostanti sono corretti.
La conseguenza pratica è che rendering e memorizzazione degli indirizzi dovrebbero essere preoccupazioni separate. Memorizzate gli elementi nei loro campi e assemblate la stringa di visualizzazione secondo la convenzione del paese al momento della visualizzazione. Un sistema che memorizza una singola riga pre-renderizzata ha già deciso l’ordine e non può cambiare idea per una destinazione diversa.
Come appare il codice postale nei diversi paesi
Il codice postale è il campo in cui si trova la variazione più ampia, ed è quello più spesso modellato come un pattern fisso. Stati Uniti e Turchia usano cinque cifre. Germania, Francia, Spagna, Italia e Messico usano anch’essi cinque cifre, ma gli zeri iniziali sono significativi e una colonna numerica di database li eliminerà silenziosamente. Il Regno Unito usa un formato alfanumerico a lunghezza variabile con uno spazio nel mezzo, e sia lo spazio sia il caso delle lettere contano per l’abbinamento.
Il Canada usa un formato alfanumerico che alterna lettere e cifre. I Paesi Bassi usano quattro cifre seguite da due lettere. La Polonia usa cinque cifre con un trattino dopo la seconda. Il Giappone usa sette cifre, di solito scritte con un trattino dopo le prime tre, e il Brasile usa otto cifre scritte con un trattino dopo le prime cinque. L’Irlanda ha uno dei pochi sistemi misti genuinamente alfanumerici con una chiave di instradamento.
Poi ci sono i paesi senza alcun codice postale. Diverse giurisdizioni non gestiscono un sistema a livello nazionale, e alcune ne hanno introdotto uno solo di recente e in modo incompleto. Un modulo che contrassegna il campo come obbligatorio rifiuterà ogni indirizzo di quei paesi, un errore che una suite di test costruita solo con paesi che hanno codici postali non scoprirà mai. L’articolo formati di codice postale per paese raccoglie i pattern in un unico posto.
La regola di memorizzazione che deriva da tutto questo è semplice: mantenete il codice postale come testo, mai come numero. Zeri iniziali, lettere e separatori interni rompono tutti una colonna numerica, e la perdita è silenziosa. La stessa regola vale per i numeri civici e i numeri di edificio nei paesi in cui quei valori portano lettere o barre, perché un campo che funzionava per gli indirizzi di un paese corromperà silenziosamente quelli di un altro.
Quali campi esistono in alcuni paesi e non in altri
L’insieme di campi stesso dipende dal paese, che è un problema più difficile dell’ordine o del formato. Alcuni paesi hanno un livello stato o provincia; alcuni hanno diversi livelli amministrativi; alcuni hanno un livello quartiere o distretto essenziale per la consegna; e alcuni non hanno nulla di tutto ciò.
Il livello amministrativo che la maggior parte dei moduli internazionali omette è quello che ha il peso maggiore nella consegna. In Turchia è il distretto e il quartiere. In Giappone è il comune e l’isolato. In molti paesi latinoamericani è la colonia o il barrio. In Indonesia l’indirizzo porta un villaggio e un distretto sotto la città. Un modulo internazionale con città, stato e codice postale non può esprimere quegli indirizzi, e gli utenti colpiti o metteranno l’elemento mancante nella riga della via, dove corrompe i dati, o abbandoneranno il modulo.
Al contrario, alcuni campi sono obbligatori in un paese e privi di significato in un altro. Uno stato è un campo obbligatorio negli Stati Uniti, in Australia e in Canada, un campo opzionale in molti altri, e un concetto che non esiste in un ulteriore gruppo. Se il vostro template lo contrassegna come obbligatorio per tutti i paesi, ogni indirizzo di un paese senza stati porta un valore fabbricato in quella colonna, e qualsiasi analisi successiva sulla distribuzione a livello di stato diventa finzione.
Il progetto onesto mantiene un unico modulo con una configurazione dei campi per paese. La configurazione dice quali campi vengono mostrati, quali sono obbligatori, come sono etichettati, quale pattern segue il codice postale e quali valori può assumere il campo amministrativo. Quella configurazione è dato e, come ogni dato, dovrebbe essere testata paese per paese anziché presunta.
Cos’è il compromesso della riga indirizzo e quanto costa?
Il compromesso della riga indirizzo è lo schema in cui ogni indirizzo del mondo viene appiattito in due o tre righe generiche più una città, una regione e un codice postale. Esiste perché era il modo più economico per far funzionare un modulo internazionale, e persiste perché cambiarlo è costoso.
Il suo punto di forza è che non blocca mai un indirizzo. Qualsiasi cosa può essere digitata in una riga libera, quindi gli utenti non vengono mai respinti per aver inserito un formato che il modulo non prevedeva. Il suo punto debole è che memorizza una stringa non strutturata dove serviva un valore strutturato, quindi qualsiasi cosa a valle che raggruppa, valida, instrada o deduplica per geografia deve analizzare il testo. C’è anche un problema di versionamento: man mano che i paesi rivedono le loro suddivisioni amministrative, l’appiattimento nasconde sotto quale convenzione è stata scritta una riga storica, e un cambiamento di denominazione in una provincia diventa indistinguibile da un refuso.
Il costo appare più tardi e in modi specifici. La normalizzazione degli indirizzi diventa inaffidabile perché il parser deve indovinare quale token sia la città. La deduplicazione fallisce perché lo stesso indirizzo scritto due volte in ordini diversi sembra due indirizzi. La logica fiscale e di consegna che dipende da un codice postale o da una regione non può essere eseguita affatto quando il valore è sepolto in una riga di testo.
C’è un secondo costo facile da trascurare: il compromesso nasconde i suoi fallimenti. Un modulo con una riga libera accetta un indirizzo senza codice postale da un paese che ne richiede uno, e accetta un codice postale del paese sbagliato, e riporta successo. L’articolo formato di indirizzo internazionale discute lo schema più a fondo, e l’articolo scenari di indirizzo transfrontaliero esamina cosa succede quando la stessa persona ha indirizzi in due paesi.
Come dovrebbe essere progettato un modello di indirizzo multi-paese
Iniziate con un campo paese che guida tutto il resto e trattate ogni altro campo come condizionale rispetto ad esso. Il paese determina quali campi appaiono, quali sono obbligatori, quale pattern assume il codice postale e da quale elenco attinge il campo amministrativo. Nulla a valle dovrebbe essere codificato rigidamente secondo le regole di un solo paese.
Mantenete il codice postale come testo con un passaggio di normalizzazione anziché un passaggio di sola validazione. Normalizzare significa rimuovere gli spazi e i separatori di cui non avete bisogno, mettere in maiuscolo dove la convenzione del paese è maiuscola e preservare gli zeri iniziali. Validare significa controllare il pattern per quel paese. Fare entrambe le cose in quest’ordine evita di rifiutare input corretti ma scritti diversamente.
Modellate la gerarchia amministrativa come dati annidati anziché come elenco piatto. La località appartiene a una regione e, in molti paesi, a un ulteriore livello tra di esse. Memorizzare i rapporti anziché un singolo livello significa che un nuovo paese può essere aggiunto aggiungendo righe anziché modificando il codice, e rende esprimibili come dati i controlli di coerenza.
Poi testate il modello per paese, non per campo. Per ogni paese supportato, generate un indirizzo, verificate che passi il vostro validatore, verificate che la regione e il codice postale concordino e verificate che l’ordine di visualizzazione renderizzato corrisponda alla convenzione del paese. Una suite che testa i campi individualmente passerà mentre le combinazioni sono sbagliate, che è la stessa modalità di fallimento che colpisce i dati di indirizzo costruiti a mano ovunque.
Infine, conservate una traccia del perché ogni paese è configurato nel modo in cui è. Un pattern di codice postale o un requisito di campo è un’affermazione su un paese in un dato momento, e la prossima persona che tocca la configurazione deve sapere da quale autorità proviene la regola. L’articolo checklist di copertura dei dati paese lo trasforma in un elenco verificabile.
Telefono e indirizzo appartengono allo stesso test. Un record in cui il numero porta il prefisso di chiamata di un paese e l’indirizzo si trova in un altro è un difetto di coerenza che un modello consapevole del paese può rilevare, e l’articolo corrispondenza tra prefisso telefonico e località spiega il rapporto. Lo strumento paesi su questo sito espone gli insiemi di campi e le convenzioni per paese, e l’articolo checklist di copertura paese descrive cosa dovrebbe contenere per ciascuno un set di dati mantenuto.
Cosa richiede un set di dati di test consapevole del paese
Richiede regole per paese anziché un’unica regola globale, e richiede che quelle regole siano mantenute. Le autorità postali cambiano i formati, le suddivisioni amministrative vengono create e fuse, e i codici postali vengono riassegnati. Un set di dati corretto quando è stato assemblato e mai aggiornato finirà per non concordare con l’autorità da cui proviene.
Richiede anche la provenienza. Sapere da quale fonte provengono le regole di ciascun paese è ciò che rende possibile aggiornarle senza tirare a indovinare, e l’articolo freschezza e fonti dei dati paese espone le fonti che vale la pena seguire. Un set di dati senza provenienza può solo essere sostituito in blocco, ed è per questo che molti non vengono mai aggiornati.
Infine, richiede un confine chiaro nei dati stessi. Gli indirizzi generati per i test sono record sintetici con una struttura corretta e rapporti interni corretti, e non corrispondono ad alcun immobile reale. Non devono essere usati per consegne reali, per dimostrare una residenza o un’identità, per aprire o registrare conti, o per superare qualsiasi fase di verifica che chieda dove qualcuno vive davvero.