Domanda di livello molto elementare. Nel file app.yml, ho impostato fi come locale predefinito. Ma fa qualcosa di più che impostare i valori predefiniti per tutto e per tutti?
E se sì, un utente vedrà tutto in quella lingua predefinita, ora fi, finché Allow user locale non verrà modificato?
Ma che dire di Set locale from accept language header? Se qualcuno ha en_US, viene offerta la versione inglese? E ciò significa che la locale predefinita è solo un suggerimento e verrà sovrascritta se Accept-Language è qualcos’altro?
E il motivo per cui sto chiedendo questo è il mio nuovo sito, che è fortemente mirato agli Stati Uniti e necessita di un forum. Ma non penso che attiri molta attenzione al punto da giustificare tutto il lavoro che comporta l’avvio di un forum. Quindi stavo considerando una soluzione in cui indirizzo quei visitatori statunitensi/globali a una categoria creata appositamente.
Ma il mio forum è altrimenti interamente in finlandese e, se Accept-Language non cambia la locale predefinita, non funzionerà.
(E in parte spero che la cosa del traduttore funzioni un giorno ).
So che questa non è una vera domanda di supporto, ma sto cercando di evitare la sezione Generale…
Non è qualcosa di cui so moltissimo, ma in assenza di altre risposte finora…
Penso che aggiungere la locale predefinita a app.yml sovrascriva qualsiasi cosa tu imposti per locale predefinito nelle impostazioni del tuo sito (e la rimuove anche dalla pagina delle impostazioni). Ma quella sarebbe solo la predefinita, e puoi consentire alle persone di scegliere (o far scegliere ai loro browser) un’alternativa più adatta a loro.
Spero che sia pertinente, altrimenti questo può essere solo un utile “bump” per vedere se riusciamo a trovare una risposta più competente.
Ci sono due rami di logica in ApplicationController#with_resolved_locale: utenti connessi e utenti non connessi.
Utenti non connessi (1) Impostano la locale dalla richiesta, quindi (2) utilizzano l’impostazione del sito ‘locale predefinita’ se non ne è stata rilevata nessuna.
La priorità è ?lang= nell’URL, quindi il cookie locale, quindi Accept-Language se ogni rispettiva impostazione del sito è abilitata.
La logica per gli utenti connessi è più semplice: preferenza utente, quindi ‘locale predefinita’ se la preferenza utente è proibita.
In tutti i casi, se la locale risolta è stata scaricata dal server Discourse, viene utilizzata en. (Questo si verifica principalmente durante i test unitari e di integrazione, se ricordo bene.)
locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)
Quindi, in sintesi, cosa fa:
È la lingua per le richieste anonime senza l’intestazione Accept-Language.
Inclusa, in particolare, la procedura di registrazione dell’account.
È la lingua che verrà sempre utilizzata se non hai consentito agli utenti di scegliere la propria lingua, o se l’utente non ha impostato una locale preferita.