2011-10-25 3 views
20

Sto decidendo come organizzare l'URL e inserirvi le impostazioni internazionali. Ho due scelte:URL RESTful: dove devo inserire le impostazioni internazionali? example.com/en/page vs example.com/page?locale=en

  1. example.com/en/page
  2. example.com/page?locale=en - modo in cui Google
  3. en.example.com/page - isn' t buono perché sto usando sottodomini

Da un lato example.com/en/page sembra migliore e più compatto di example.com/page?locale=en. Dall'altro lato abbiamo due URL example.com/en/page e example.com/ru/page per una risorsa con due rappresentazioni. Ovviamente nel caso example.com/page?locale=en abbiamo due URL per una risorsa, ma è leggermente più RESTful a mio gusto.

Qual è la migliore pratica? Cosa stai usando e perché?

risposta

25

La localizzazione fa parte del Negoziazione del contenuto in API Restful.

Quindi il mio modo preferito l'avrei fatto attraverso le intestazioni. HTTP offre un modo standard per definire la lingua desiderata. Dai un'occhiata all'intestazione Accept-Language.

+3

Sì. So di Accept-Language. Ma in Russia, ad esempio, molte persone usano le impostazioni locali in inglese ma preferiscono i contenuti in russo. Quindi, se userò solo Accept-Language, non avranno la possibilità di cambiare la lingua del contenuto (tranne ovviamente cambiare la localizzazione del browser). La soluzione più comune è il cambio di lingua nel layout del sito.Quindi cerco di capire qual è il modo migliore per organizzare tale switcher. – petRUShka

+2

Vedo, quindi i vostri api-client sono browser (ad esempio attraverso chiamate AJAX)? Quindi vorrei andare per il tuo modo di parametro url proposto (come? Lang = en), perché offri la semantica 'opzionale' (con fallback all'intestazione Accept-Language). –

+0

Browser e servizi esterni. Grazie per la tua opinione, sto pensando allo stesso modo. – petRUShka

13

Da https://www.w3.org/International/questions/qa-accept-lang-locales:

L'intestazione Accept-Language HTTP era originariamente destinato solo per specificare lingua dell'utente. Tuttavia, poiché molte applicazioni devono conoscere le impostazioni locali dell'utente, la pratica comune ha utilizzato Accept-Language per determinare queste informazioni. Non è consigliabile utilizzare solo l'intestazione HTTP Accept-Language per determinare la locale dell'utente. Se si utilizza Accept-Language esclusivamente, è possibile maneggiare l'utente in una serie di scelte non di suo gradimento.

La mia preferenza:

  • Richiesta
    • utilizzare un parametro di query
    • ripiegare Accept-Language intestazione se il parametro query non è specificato
    • ripiegare documentata predefinito Locale se l'intestazione Accept-Language è Non definito
  • risposta