代码之家  ›  专栏  ›  技术社区  ›  Mathieu

如何根据用户的国家更改电子邮件中的图像(Rails4,design3)

  •  0
  • Mathieu  · 技术社区  · 10 年前

    我正在使用包含文本的图像 在电子邮件中 我发送给用户

    例如: enter image description here

    我有一个带有User_country属性的User表(例如法国),以及我在网站上使用的方法来诱导语言:

    module LocaleSetter
    
        DefaultLocale = 'en'
      extend ActiveSupport::Concern
    
        included do
            before_filter :set_locale 
        end
    
      def set_locale
        I18n.locale = extract_locale_from_country
      end
    
      def extract_locale_from_country       
        case I18nData.country_code(set_country)
          when 'US'
            'en'
          when 'FR'
            'fr'
          when 'ES'
            'es'
          when 'DE'
            'de'
          when 'NL'
            'nl'
          else
            DefaultLocale # default locale if no other is set
    
        end
      end
    
    end
    

    如果我用不同的语言(法语、英语、德语…)写这封信, 如何告诉我的应用程序选择正确的图片所指向的src图片,即,如果是发给法国用户的电子邮件,则选择带有法语文本的图片,如果是寄给德国用户,则选择带德语文本的图片?

    <td style="margin: 0 auto;padding: 0;display: block;max-width: 600px;clear: both; color: #454545;">
              <table width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="#ffffff" >
                <tbody>
                  <tr>
                    <td>
                      <a href="<%= t("mail.useful_adresses.homepage") %>" rel="nofollow" target="_blank"> 
                        <img style="display: block;" width="590px" height="163px" border="0" align="left" alt="<%= raw t("mail.subscription_mails.welcome_notifier_mail.welcome") %>" src="http://example.com/emails-images/optimized-mail-top.png">
                      </a>
                    </td>
                  </tr>  
                </tbody> 
                </table>   
            </td> 
    

    谢谢

    PS:所有带有t(“texte”)到i18n的文本翻译在电子邮件中都很好。我的问题涉及图像src

    1 回复  |  直到 10 年前
        1
  •  1
  •   Michał Młoźniak    10 年前

    最简单的解决方案是使用国家/地区代码前缀(如en-mail-top.png或de-mail-top.png)命名图像文件,然后使用当前区域设置创建图像源url:

    <td style="margin: 0 auto;padding: 0;display: block;max-width: 600px;clear: both; color: #454545;">
      <table width="100%" cellpadding="0" cellspacing="0" border="0" bgcolor="#ffffff" >
        <tbody>
          <tr>
            <td>
              <a href="<%= t("mail.useful_adresses.homepage") %>" rel="nofollow" target="_blank"> 
                <img style="display: block;" width="590px" height="163px" border="0" align="left" alt="<%= raw t("mail.subscription_mails.welcome_notifier_mail.welcome") %>" src="http://example.com/emails-images/<%= I18n.locale %>-optimized-mail-top.png">
              </a>
            </td>
          </tr>  
        </tbody> 
      </table>   
    </td>
    

    您还可以创建一个助手方法,该方法将生成此完整图像url,以便电子邮件模板更清晰。