Non sono in grado di ottenere la stringa locale I18n.locale.to_s
ritorna. Sono le impostazioni locali in cui viene eseguito il codice (ad esempio le impostazioni internazionali del server in cui è distribuito il codice) o recuperano le impostazioni internazionali dalla richiesta (le impostazioni locali da cui viene richiesto l'URL)?
Credo che dovrebbe essere la localizzazione del server come se un utente da noi (en_US) colpisse un server in esecuzione in JP (ja_JP), I18n.locale.to_s
dovrebbe restituire il locale come JP. Correggimi se la mia ipotesi è sbagliata.
risposte:
2 per risposta № 1Sì hai ragione. A meno che non si stia utilizzando un codice aggiuntivo (ad esempio una gemma extra), Rails non esegue una ricerca sull'indirizzo IP del visitatore, né prende in considerazione nulla a che fare con il browser del visitatore.
Quando chiami I18n.locale.to_s
in un controller o altrove nel codice, lo farairipristinare le impostazioni locali predefinite per la posizione del server. Tuttavia, se si desidera modificare le impostazioni locali per il visitatore corrente in base, ad esempio, a un clic su un collegamento per modificarlo inviando un :locale
parametro con la richiesta, puoi fare questo:
before_action :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
Quindi tutte le chiamate a I18n.locale.to_s
all'interno di quella richiesta ora risponderebbe con la locale sovrascritta.