Qual è il test della Turchia?

Mi sono imbattuto nella parola “The Turkey Test” mentre stavo imparando sui test del codice. Non so davvero cosa significhi.

Cos’è il test della Turchia? Perché si chiama così?

Il problema della Turchia è legato all’internazionalizzazione del software o semplicemente al suo comportamento scorretto nelle varie culture linguistiche.

In diversi paesi ci sono diversi standard di date di scrittura (14.04.2008 in Turchia e 4/14/2008 negli Stati Uniti), numeri (123.45 in Polonia e 123.45 negli Stati Uniti) e regole sul carattere maiuscolo (come in Turchia con le lettere io, io e ı).

Come indicato da Jeff Moser, il problema è stato chiamato dall’utente turco che per primo ha trovato il bug nella funzione ToUpper() . Ci sono ulteriori dettagli nei commenti qui sotto.

Tuttavia, il problema non è limitato alla Turchia e alle conversioni di stringhe.

In Polonia e in molti altri paesi le date e i numeri sono anche scritti con modi diversi e i problemi legati alla data o all’interpretazione dei numeri sono anche chiamati problema della Turchia .

Collegamenti dalla ricerca di Google per la Turchia Problema con i dettagli già forniti:

  • Il tuo codice supera il test del turkey di Jeff Moser,
  • Cosa c’è di sbagliato in Turchia? di Jeff Atwood.

Qui è descritto il test del tacchino

Dimentica la Turchia, non passerà nemmeno negli Stati Uniti. Hai bisogno di un confronto senza distinzione tra maiuscole e minuscole. Quindi provi:

 String.Compare(string,string,bool ignoreCase): 

….

Qualcuno di questi passa “The Turkey Test?”

Non una possibilità!

Motivo: sei stato colpito dal problema “Turco I”.

Come discusso da molte e molte persone, l’io in turco si comporta in modo diverso rispetto alla maggior parte delle lingue. Per lo standard Unicode, il nostro “i” minuscolo diventa “İ” (U + 0130 “Maiuscola latina I con punto sopra”) quando si sposta in maiuscolo. Allo stesso modo, il nostro “I” maiuscolo diventa “ı” (U + 0131 “Latin Small Letter Dotless I”) quando si sposta in minuscolo.

Scriviamo date più piccole a più grandi come gg.mm.aaaa: 28.10.2010

Utilizziamo “.” (Punto) per il separatore di migliaia e “,” (virgola) per il separatore decimale: 4.567,9

Abbiamo ö => Ö, ç => Ç, ş => Ş, ğ => Ğ, ü => Ü, e soprattutto ı => I e i => İ ; in altre parole, la lettera minuscola di I superiore è senza punto e la lettera maiuscola di I inferiore è punteggiata.

Le persone possono avere tempi molto stressanti a causa di errori privi di significato causati dalle regole di cui sopra.

Se il tuo codice funziona correttamente in Turchia, probabilmente funzionerà ovunque.

Il cosiddetto “Test della Turchia” è legato all’internazionalizzazione del software. Un problema di globalizzazione / internazionalizzazione è che i formati di data e ora in culture diverse possono differire su molti livelli (ordine giorno / mese / anno, separatore di date, ecc.).

Inoltre, la Turchia ha alcune regole speciali per la capitalizzazione, che possono portare a problemi. Ad esempio, il carattere turco “i” è un problema comune a molti programmi che lo capitalizzano in un modo sbagliato.

Il collegamento fornito da @Luixv fornisce una descrizione completa del problema.

Il riassunto è che se stai andando a testare il tuo codice su una sola localizzazione non inglese, testalo in turco.

Questo perché il turco ha istanze della maggior parte dei casi limite che è probabile incontrare con la localizzazione, incluse stringhe di formato “insolite” e caratteri non standard (come una diversa regola di maiuscole per i).

Jeff Atwood ha un articolo sul blog che è il primo posto in cui mi sono imbattuto io stesso. in sintesi il tentativo di eseguire la tua applicazione con un Locale Turco è un ottimo test del tuo I18n.

ecco l’ articolo di Jeff