0

Ich konnte Übersetzung für mein Projekt erstellen. Ich habe Code eingefügt, damit der Browser sich die gewählte Sprache des Benutzers merkt. Wenn ich jedoch zu einem anderen Gerät oder Telefon umschalte oder wenn meine App E-Mails sendet, wird standardmäßig die englische Sprache verwendet. Wie kann ich die Sprache im Profil auswählen, damit die ausgewählte Sprache in ausgehenden E-Mails gespeichert wird? Ich verwendeWie stelle ich die Sprache basierend auf dem Benutzerprofil ein?

meine Anwendung Controller

class ApplicationController < ActionController::Base 

before_action :set_locale 

def set_locale 
    if cookies[:educator_locale] && I18n.available_locales.include?(cookies[:educator_locale].to_sym) 
    l = cookies[:educator_locale].to_sym 
    else 
    l = I18n.default_locale 
    cookies.permanent[:educator_locale] = l 
    end 
    I18n.locale = l 
end 
end 

mein config.ru Teil

get '/change_locale/:locale', to: 'settings#change_locale', as: :change_locale 

Antwort

1

Sie sind zur Zeit nur das Cookie verwenden ersinnen Spur des ausgewählten Gebietsschema zu halten, ein anderes Gerät oder Browser wird seine eigenen Cookies haben, damit sie auf den Standard zurückfallen.

Sie haben den ausgewählten Ort für einen Benutzer auf der Server-Seite (Benutzerprofil) und dann prüfen, in den ApplicationController bestehen bleiben, wenn Sie in einen angemeldeten Benutzer haben (devise Helfer bietet soweit ich mich erinnere), und wenn so eingestellt das zu diesem gespeicherten Wert, ansonsten können Sie einfach auf Ihre aktuelle cookie-basierte Lösung zurückgreifen (für nicht eingeloggte Benutzer).

Ein anderer (Fallback-) Ansatz besteht darin, das Gebietsschema anhand der browserspezifischen Header zu erraten, die mit der Anfrage gesendet werden. Wenn das Browser-Gebietsschema auf Französisch eingestellt ist, möchte der Benutzer den Inhalt möglicherweise auch auf Französisch sehen.

+0

so etwas? <% If user_signed_in? %> <% = set_locale%> <% end %> – Boris

+0

'I18n.locale = current_user.preferred_locale Wenn user_signed_in?' Wobei preferred_locale ein persistentes Feld Ihres Benutzermodells ist – jethroo