14

Ho scelto di considerare questo come una domanda a sé stante poiché stava generando così tanto dibattito nei commenti dello original post.In che modo i siti web devono gestire le impostazioni di localizzazione? (da "Quali sono comuni malintesi e fastidi dell'interfaccia utente?")

È interessante vedere che molte persone su SO (che sono sviluppatori) non ottengono la localizzazione. Ecco la mia opinione su come dovrebbe funzionare:

In tutti i browser che ho guardato (e per gli sviluppatori .NET anche lì) quando si guardano le preferenze di cultura di un utente è nel seguente formato: lingua -Cultura.

Quindi abbiamo:

  • it-IT - in lingua inglese - la cultura UK
  • en-US - in lingua inglese - cultura degli Stati Uniti
  • it - in lingua inglese - cultura invarianti.
  • it-IT - lingua francese - la cultura francese
  • fr-CH - lingua francese - la cultura svizzera
  • de-CH - lingua tedesca - la cultura svizzera
  • de-DE - lingua tedesca - la cultura tedesca

Vedere MSDN per un elenco completo supportato dal framework .NET.

Quando vado su un sito Web, so che desidero l'inglese dall'italiano e sa che mi interessa che sia inclinato nel Regno Unito (formattazione del numero, formattazione della data). Quindi quando vado su google.com e mi porta a google.de (a causa del mio indirizzo IP) va benissimo se google.de mi mostra tutto in inglese ma è completamente sbagliato visto che google.de è in tedesco. Ho scarso controllo sul mio indirizzo IP ma controllo completo sulle impostazioni della lingua e della cultura. Se sei interessato, il nuovo motore di ricerca di Microsoft (bing.com) gestisce le cose correttamente. Speriamo Microsoft può imparare a fare ricerca, così come Google o Google può imparare a localizzare così come Microsoft;)

MSDN ha un altro buon articolo qui per maggiori informazioni

Quindi quali sono le raccomandazioni su come i siti dovrebbe occuparsi delle localizzazioni?

+0

Questa non è davvero una domanda ... Dovrebbe essere un wiki della comunità o un ... post del blog? In ogni caso, osservazioni interessanti, non credo che appartengano qui. –

+2

Lo trovo una buona domanda. I progettisti di app wep potrebbero utilizzare le risposte pubblicate qui (se presenti :) per migliorare le loro app, quindi è una domanda legittima di programmazione. –

+0

Caro Marco, come puoi notare la tua risposta mi ha ispirato a lamentarmi di Google nel commento alla tua risposta e nel mio stesso post. Spiacente, non ho trovato il tuo messaggio prima. –

risposta

13

La soluzione qui è così semplice, è fastidioso che gli sviluppatori debbano fare altro.

  1. Rispettare le impostazioni del browser. Se dice inglese allora per dio è inglese.

  2. Se è assolutamente necessario, è sufficiente aggiungere un pulsante in alto per scegliere qualcos'altro. Quindi, SOLO quindi, si esegue l'override del browser.

  3. Se pensi che la tua strada sia migliore. Fermati, chiedi a qualcuno di schiaffeggiarti. Non è. Ripeti se necessario.

  4. Sbarazzarsi di quelle pagine web splash che chiedono il paese di qualcuno. Basta mostrare la tua pagina normale, in base alle impostazioni predefinite del browser, e vedere l'articolo 2 sopra. Devo ancora imbattersi in un sito dove conta davvero.aggiornamento:alcuni anni più tardi e ora c'è un motivo per farlo. Nel 2013 il Regno Unito ha istituito politiche relative ai cookie che gli operatori di siti web devono rispettare per i siti basati in quel paese che servono pagine ai visitatori di quel paese. Quindi attenzione alle leggi dei paesi che si sono ospitati in.

  5. se vi capita di avere un sito che in realtà è servito da più server in diversi paesi, allora probabilmente si può rilevare che uno dei server è davvero più vicino da cui servire. Se non puoi, basta fermare la follia reindirizzamento e poi non cercare di fare una determinazione per loro.

+1

Molte persone non sono così coscienziose come te o me quando si tratta di impostazioni locali. Potrebbero utilizzare un browser con le impostazioni internazionali en_US predefinite, anche se sono inglesi, svizzeri, croati, zulu, ecc. Se ti affidi alle impostazioni locali di un browser, parlerai a molte persone nella lingua sbagliata. Il problema di fondo è che i browser hanno impostazioni locali predefinite o impostazioni locali impostate da un amministratore di sistema benintenzionato. Se i browser pubblicizzassero solo una preferenza quando l'utente ne avesse espresso uno, avremmo meno problemi. –

+3

@twic: Sono d'accordo, ed è per questo che ho inserito il n. Non ho alcuna sensazione per il numero di persone che hanno impostazioni errate. Tuttavia, se lo consideriamo come predefinito e forniamo all'utente finale l'opzione di eseguire l'override, risolviamo tutti i problemi. – NotMe

1

Rischio di essere considerato scortese, ma penso che il mio post on this topic avrà più risposte informative, soprattutto perché il mio post è davvero una domanda. Mi dispiace però di non averlo trovato prima.

1

C'è una differenza tra le impostazioni predefinite intelligenti e la capacità degli utenti di ignorarle. Nelle grandi app su cui ho lavorato, ho assunto le impostazioni locali dell'utente dalle impostazioni del browser, dalla geolocalizzazione, ecc., Ma ho sempre dato agli utenti un modo per passare facilmente.

Non so come altro si farebbe. Non dare agli utenti la possibilità di correggere le tue ipotesi è profondamente problematico, perché hai intenzione di sbagliare un po 'di tempo.

AGGIUNTA:

Credo che il problema qui è che, mentre è possibile modificare le impostazioni locali, se si guardano sostanzialmente identica a quella di default, non c'è modo per uno sviluppatore di applicazioni per capire se si è lasciato così com'è intenzionalmente, o perché non sai come o perché cambiarlo.

Io suggerisco di rispettare le impostazioni di localizzazione degli utenti, eccetto se l'impostazione è l'impostazione predefinita travolgente, che gli utenti potrebbero non cambiare. Ad esempio, credo che la stragrande maggioranza (90%) degli utenti con un'impostazione en-us geolocalizzata in Vietnam sarebbe quasi sempre servita meglio vedendo contenuti vietnamiti, piuttosto che contenuti in inglese americano, a condizione che ci sia un modo banale per cambiare locale. Il rovescio della medaglia, se un utente geolocalizzato negli Stati Uniti ha un ambiente vietnamita, significa assolutamente dargli il suo contenuto vietnamita.

E 'irritante per gli utenti statunitensi in Vietnam? Sicuro. Ma è anche il più grande bene per il numero più grande, e aiuta a garantire che gli utenti medi non tecnici ottengano la migliore esperienza del mondo reale. Fino a quando non potremo impugnare una pistola contro le teste degli utenti e costringerli a dichiarare onestamente le loro preferenze linguistiche/culturali prima di accendere un computer, avremo bisogno di euristiche come questa.

+1

Fornire agli utenti un meccanismo semplice per cambiare le cose è sicuramente la cosa giusta da fare, il mio problema è basare l'assunto iniziale sull'unica cosa di cui non ho il controllo: il mio indirizzo ip. – Mark

+0

Hai ragione - ha aggiunto un po 'più di testo che affronta questo nella mia risposta. – Anirvan

+0

Una soluzione migliore, quindi, sarebbe avere un'impostazione predefinita null nel browser, che elimina immediatamente il problema di distinguere tra "en-us perché l'ho impostato" e "en-us perché non so che sia configurabile" . Il tuo suggerimento di "chiunque altro al mondo può scegliere una lingua preferita, ma, se parli inglese e lasci gli Stati Uniti, devi solo succhiarlo perché la tua lingua è l'impostazione predefinita più comune" doesn " Mi sembra particolarmente buono. –

2

Sono d'accordo, dare all'utente la possibilità di scavalcarli con le preferenze dell'utente nella tua app. Ciò è particolarmente utile per cose come problemi di localizzazione del fuso orario che non è possibile derivare dalle impostazioni del browser.

3

A un certo punto della mia carriera, ho mantenuto parti dello stack TCP/IP. Questo mi mette nella posizione piuttosto rara di sapere molto bene che gli indirizzi IP non dovrebbero essere usati come qualcosa di diverso dagli indirizzi a livello di Rete. Qualsiasi associazione tra un indirizzo IP e una posizione è quasi casuale: è un artefatto del modo in cui gli indirizzi sono distribuiti, non una parte fondamentale di ciò che significa un indirizzo IP.

(Sono, inoltre, non utile come l'identificatore univoco di un computer, ma questo è un'altra storia)

Suggerisco lasciando geolocalizzazione fuori di esso. Lo standard HTTP include un modo per un browser o un altro agente utente di includere le preferenze di cultura degli utenti con ciascuna richiesta (e ricorda, è un elenco di preferenze ponderate, non necessariamente una sola cultura). Poiché il browser è più vicino all'utente di quello che sei, dovresti rispettare questa richiesta, almeno come predefinita.

Va bene quindi consentire all'utente di modificare la propria preferenza per il proprio sito, temporaneamente o permanentemente. È anche possibile consentire all'utente di scegliere di visualizzare contenuti diversi con impostazioni di cultura diverse. Un esempio selvaggio sarebbe un sito che include sia notizie politiche che informazioni tecniche. È abbastanza ragionevole che qualcuno voglia le notizie nella loro lingua "naturale", ma le informazioni tecniche in inglese.

Infine, è ok avere un modello di fallback. Se, ad esempio, disponi di un sito che offre servizi agli utenti in base alla loro regione (ad esempio i rivenditori), è possibile che il contenuto giapponese sia presente solo nel sito secondario regionale asiatico. Un utente di lingua giapponese che visita il tuo sito EMEA potrebbe essere bloccato a vedere contenuti in inglese, che potrebbero essere la sua ultima scelta.

+1

Ci sono intere società e database dedicati alla geolocalizzazione di indirizzi IP. Sono molto accurati. –

0

ho visto abbastanza segnalazioni di bug forti da parte dei clienti che quando indagato risultano essere quello di là utenti avevano impostazione sbagliata, che noi ora facciamo il cliente ignorare i browser con un ambiente di configurazione della cultura del browser. L'impostazione cultura del browser è spesso errata e non è molto utile, ma è anche troppo difficile per la maggior parte degli utenti finali trovarla o modificarla.

+1

La sua multa per consentire agli utenti di ignorare le loro impostazioni, ma è semplicemente sbagliato ignorare le impostazioni o secondo indovinarle. Altrimenti punisci le persone che sanno quello che stanno facendo per l'ignoranza degli altri. – Mark

+0

Spiacente, gli utenti non pagano il software, i clienti lo fanno .... Fermare una telefonata da un utente che non sa che sta facendo è più importante per molti clienti, quindi non punire lì l'utente esperto (che può ordinare da sé spiacente) –

+2

Ci scusiamo, ma che senso ha avere una lingua definita dall'utente, configurabile in base agli standard in HTTP se dovrebbe (secondo te) essere completamente ignorata in ogni caso? Forse la soluzione migliore sarebbe quella di renderlo più facile da trovare nel browser, hmm? Forse anche chiedere all'utente sull'installazione/prima messa in funzione quale sia la loro lingua preferita? Ci sono modi per far sì che l'utente medio sia in grado di impostarlo e risolvere il problema per * tutti * invece di dire: "Togliamo a tutti la possibilità di scegliere una lingua predefinita perché alcuni non sanno come." –

4

Se sono disponibili impostazioni di localizzazione, tra cui, a titolo esemplificativo, l'intestazione HTTP Accept-Language, i siti Web devono assolutamente rispettarli.

L'argomento comune contro questo è che gli "utenti medi" non sono abbastanza intelligenti da trovare le impostazioni della lingua e configurarle in modo che corrispondano alle proprie preferenze, quindi queste impostazioni sono, molto spesso, non corrette (a meno che l'utente non accada essere negli Stati Uniti).

Questa è la soluzione sbagliata.

Se un segmento importante della popolazione utente non riesce a trovare (o non può essere preso la briga di trovare) le impostazioni di lingua del proprio browser, poi la risposta corretta è quella di rendere più facili da trovare, non per siti per ignorare a cosa sono stati assegnati. Forse rendere le impostazioni della lingua direttamente accessibili dal menu di livello superiore del programma invece di seppellirlo all'interno di una finestra di dialogo "Preferenze" troppo complicata. Forse chiedere le preferenze di lingua la prima volta che viene eseguito il programma. Forse utilizzare le impostazioni di localizzazione del sistema operativo. O forse qualcosa di completamente diverso, se è quello che serve per renderlo quasi certo che il browser invierà informazioni corrette sulle preferenze dell'utente. Ma non solo alzare le mani, dire "è inutile e non può essere riparato!", E ignorarlo.

Altre risposte hanno parlato di consentire all'utente di scegliere una lingua o locale nel proprio profilo sul sito, che è anche importante e assolutamente dovrebbe essere standard, ma è solo per fornire un override specifico del sito per le normali impostazioni dell'utente. Se l'utente non ha sovrascritto ciò sul sito, tuttavia, l'azione corretta è quella predefinita per la lingua/le impostazioni internazionali più preferite, come specificato nelle impostazioni del browser, non per basarlo sulla geolocalizzazione del loro indirizzo IP.

+0

Ma dal momento che attualmente * sono * errati un sacco di volte, è irresponsabile affidarsi a loro! In cinque anni, quando i browser hanno risolto la loro interfaccia utente di selezione locale, forse la situazione sarà diversa. Ma adesso, è così. Dolore nel culo, ma lo è. –

+5

Penalizzare le persone che fanno le cose correttamente è * mai * la risposta giusta in quanto serve a scoraggiarle dal farle correttamente in futuro. Come espatriato americano residente in Svezia, qual è il mio incentivo a impostare correttamente la mia preferenza linguistica su en/us se i siti stanno per dire "il tuo indirizzo IP è in Svezia, quindi ignoreremo le tue preferenze e ti diamo comunque lo svedese "? –

3

Sui siti che creo io di solito seguire questo modello:

  • Ogni pagina ha un URL univoco con la lingua in qualche parte, di solito come /en/page o un altro (sotto) dominio
  • Se l'utente apre un URL con una lingua non specificata come /page Inizio a indovinare:
    • È disponibile un cookie di una sessione precedente?
    • In caso contrario, è disponibile Accept-Language e posso mapparlo in una lingua disponibile sul sito?
    • Se no, se è una possibilità, posso indovinare per IP?
    • In caso contrario, impostazione predefinita per la lingua predefinita del sito.
  • ho impostare un cookie con la lingua indovinato e reindirizzare l'utente a un sito con l'URL appropriato
  • ho messo un interruttore di lingua in ogni pagina, in modo da /en/page può facilmente essere commutato per /xx/page
    • Cookie viene aggiornato se l'utente passa a una pagina diversa

Idealmente ho solo indovinare una volta e da allora in poi noi e il cookie dell'utente, oppure l'utente visita direttamente la pagina desiderata.

+0

L'approccio che stiamo adottando è di avere nomi di dominio diversi per ogni paese, quindi non c'è alcuna ambiguità. Arrivi su deceze.fr, ottieni francese. Arrivando su deceze.ch, si ottiene il tedesco, ma ci sono pulsanti importanti per passare al francese o all'italiano. –