iachat/app/mailers/administrator_notifications/channel_notifications_mailer.rb
Gabriel Jablonski 053e684261
feat(mailer): add i18n support for transactional emails with pt-BR (#255)
* feat(mailer): add i18n support for all transactional emails with pt-BR translations

- Create Liquid i18n filter (LiquidFilters::I18nFilter) exposing I18n.t() as `t` filter
  with interpolation support via positional args
- Replace hardcoded English strings in all 26 Liquid email templates with i18n keys
- Replace hardcoded English strings in all 5 Devise ERB email templates (OSS + enterprise)
  with t() calls, using raw output (<%==) to prevent HTML-encoding of apostrophes
- Translate all mailer subjects to use I18n.t() for locale-aware rendering
- Add comprehensive pt-BR translations for all transactional emails
- Add SSO-specific i18n keys for enterprise confirmation instructions
- Fix ApplicationRecord#to_drop to walk STI hierarchy (e.g. SuperAdmin -> UserDrop)

* fix: address CodeRabbit review feedback

- Use _html suffix for Devise translation keys to prevent XSS while
  keeping apostrophes unencoded (Rails escapes interpolations automatically)
- Replace hardcoded English in SLA templates with full_body i18n keys
- Fix _target="blank" typo to target="_blank" in attachment links
- Add i18n for tiktok_disconnect subject and create liquid template
- Extract brand_name to private method in AccountNotificationMailer

* fix: address round 2 review feedback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 15:48:52 -03:00

27 lines
1.1 KiB
Ruby

class AdministratorNotifications::ChannelNotificationsMailer < AdministratorNotifications::BaseMailer
def facebook_disconnect(inbox)
subject = I18n.t('mailer.administrator_notifications.channel_notifications.facebook_disconnect.subject')
send_notification(subject, action_url: inbox_url(inbox))
end
def instagram_disconnect(inbox)
subject = I18n.t('mailer.administrator_notifications.channel_notifications.instagram_disconnect.subject')
send_notification(subject, action_url: inbox_url(inbox))
end
def tiktok_disconnect(inbox)
subject = I18n.t('mailer.administrator_notifications.channel_notifications.tiktok_disconnect.subject')
send_notification(subject, action_url: inbox_url(inbox))
end
def whatsapp_disconnect(inbox)
subject = I18n.t('mailer.administrator_notifications.channel_notifications.whatsapp_disconnect.subject')
send_notification(subject, action_url: inbox_url(inbox))
end
def email_disconnect(inbox)
subject = I18n.t('mailer.administrator_notifications.channel_notifications.email_disconnect.subject')
send_notification(subject, action_url: inbox_url(inbox))
end
end