2017-08-28 4 views
0

Je travaille actuellement sur un site multilingue qui a maintenant ajouté le support de la langue chinoise au-dessus des langues originales japonaises et anglaises. Malheureusement, nous avons utilisé charset: 'ISO-2022-JP jusqu'à présent, ce qui signifie que de nombreux caractères chinois s'afficheront comme des points d'interrogation dans les e-mails envoyés aux utilisateurs. La solution idéale est d'utiliser UTF-8, bien que cela pose malheureusement quelques problèmes avec les caractères japonais.Utiliser un codage de caractères différent pour différentes langues dans le mailer

J'ai ce code déjà que j'utilise pour envoyer des e-mails liés à la langue de l'utilisateur:

def set_language 
    language_mapping = { 
    0 => "ja", 
    1 => "en", 
    2 => "zh" 
    } 
    used_language = @reservation.user.language 
    I18n.locale = language_mapping[used_language] 
end 

Est-il possible d'ajouter une sorte de condition pour le charset à raccorder à cela? À l'heure actuelle, mes helpers mailer ont charset: 'ISO-2022-JP' mais je veux utiliser UTF-8 pour tous les utilisateurs des groupes chinois ('zh') ou anglais ('en'). Un moyen facile serait d'ajouter manuellement le jeu de caractères à chaque fois, mais cela ne semble pas être l'approche la plus «sèche».

EDIT pour plus de clarté: La ligne charset: 'ISO-2022-JP' est dans les paramètres par défaut en haut. Excuse d'avance si c'est une question vraiment stupide, mais je n'arrive pas à comprendre du tout.

+0

Les langues peuvent être sélectionnées dynamiquement par les utilisateurs? ou cela dépend du champ db? –

+0

Il est basé sur une colonne 'language' dans la base de données qui est définie lors de leur inscription (par exemple: inscription depuis le site japonais => emails en japonais) – kuwantum

Répondre

0

J'ai trouvé une solution assez simple à la fin. App par défaut est UTF-8, donc je viens de l'ajouter à tout expéditeur qui a besoin ISO-2022-JP:

charset: (@reservation.user.language == 0 ? 'ISO-2022-JP' : 'UTF8'),