Ruby on Rails 3.2 Mailer, lokalisiere Mail-Betreff-Feld

7

Ich schreibe gerade einen Mailer in RoR 3.2, der Mails versenden würde, die basierend auf der Sprache eines Benutzers lokalisiert werden sollten. Es ist mir gelungen, die richtigen lokalisierten Ansichten darzustellen, aber ich habe einige Schwierigkeiten mit einigen Feldern, die das Gebietsschema ändern müssen (wie der Betreff). Ich habe bereits einige Beiträge gelesen, die das Ändern der Ländereinstellung vor dem Senden der E-Mail nicht zulassen. Die Benutzer haben viele verschiedene Sprachen und das bedeutet, dass ich mein Gebietsschema jedes Mal ändern muss, wenn ein Benutzer eine E-Mail erhält.

Ich weiß, dass es möglich wäre, das Gebietsschema zu ändern, die E-Mail zu senden, das Gebietsschema zu ändern. Das fühlt sich nicht wie die Schienen an. Gibt es einen richtigen Weg, dies zu tun?

Hier ist ein Ausschnitt:

%Vor%

Meine Ansichten

%Vor%

Kurz gesagt, in diesem Fall möchte ich das: subject mit dem @ locale lokalisieren, aber nicht mit: I18n.locale = locale

    
Oktav 19.06.2012, 09:09
quelle

3 Antworten

30

Es ist in Ordnung, das globale Gebietsschema vorübergehend zu ändern. Dafür gibt es eine handliche I18n.with_locale-Methode. Auch ActionMailer übersetzt automatisch ein Thema.

%Vor%

Im Gebietsschema:

%Vor%     
Simon Perepelitsa 28.06.2012, 15:50
quelle
6

Rails 4-Wege :

%Vor%

default_i18n_subject - Übersetzt den Betreff mithilfe der Rails I18n-Klasse unter [mailer_scope, action_name] Bereich. Wenn keine Übersetzung für das Thema im angegebenen Bereich gefunden wird, wird standardmäßig eine humanisierte Version von action_name verwendet. Wenn das Objekt Interpolationen enthält, können Sie sie über den Interpolationsparameter übergeben.

    
Alexander Vagin 12.08.2015 08:37
quelle
4

Sie sollten in der Lage sein, ein Gebietsschema zu übergeben, wenn Sie I18n wie folgt aufrufen:

%Vor%

Denken Sie daran, dass die Variable locale ein Symbol sein muss.

    
jrtowell 28.06.2012 15:21
quelle

Tags und Links