From c8128a677c1c39eebbc56ee498844a2da9b217e1 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 10:40:40 -0500
Subject: [PATCH 01/13] AO3-7035 Add user and queue invitation mailer previews
in user_mailer_preview
---
test/mailers/previews/user_mailer_preview.rb | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/test/mailers/previews/user_mailer_preview.rb b/test/mailers/previews/user_mailer_preview.rb
index 003c314ff4e..e6fa1dffa15 100644
--- a/test/mailers/previews/user_mailer_preview.rb
+++ b/test/mailers/previews/user_mailer_preview.rb
@@ -153,6 +153,22 @@ def invitation_to_claim
UserMailer.invitation_to_claim(invitation.id, archivist.login)
end
+
+ # URL: /rails/mailers/user_mailer/invitation
+ def invitation_by_other_user
+ inviting_user = create(:user)
+ invitation = create(:invitation, creator: inviting_user)
+ user = create(:user, :for_mailer_preview)
+ UserMailer.invitation(invitation.id)
+ end
+
+ # URL: /rails/mailers/user_mailer/invitation
+ def invitation_by_queue
+ invitation = create(:invitation)
+ user = create(:user, :for_mailer_preview)
+ UserMailer.invitation(invitation.id)
+ end
+
# URL: /rails/mailers/user_mailer/invite_request_declined?total=3
def invite_request_declined
user = create(:user, :for_mailer_preview)
From 7048e89257b8c7e73275962a738c91c93e0afb3e Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 16:07:39 -0500
Subject: [PATCH 02/13] AO3-1234 Remove html_safe from invitation mailer
---
app/views/user_mailer/invitation.html.erb | 10 ++++-----
app/views/user_mailer/invitation.text.erb | 10 ++++-----
config/locales/mailers/en.yml | 25 ++++++++++++++---------
3 files changed, 25 insertions(+), 20 deletions(-)
diff --git a/app/views/user_mailer/invitation.html.erb b/app/views/user_mailer/invitation.html.erb
index 6ba70b011d6..7e5f0c456d2 100644
--- a/app/views/user_mailer/invitation.html.erb
+++ b/app/views/user_mailer/invitation.html.erb
@@ -1,14 +1,14 @@
<% content_for :message do %>
<% if !@user_name.blank? %>
- <%= t(".has_invited", user_name: style_bold(@user_name)).html_safe %>
+ <%= t(".has_invited.html", user_name: style_bold(@user_name)) %>
<% else %>
<%= t ".been_invited" %>
<% end %>
- <%= t(".html.about", otw_link: style_link(t(".html.otw_link_text"), "https://www.transformativeworks.org")).html_safe %>
+ <%= t(".about.html", otw_link: style_link(t(".html.otw_link_text"), "https://www.transformativeworks.org")) %>
@@ -16,14 +16,14 @@
- <%= t(".html.join", invitation_link: style_link(t(".html.invitation_link_text"), signup_url(invitation_token: @invitation.token))).html_safe %>
+ <%= t(".join.html", invitation_link: style_link(t(".html.invitation_link_text"), signup_url(invitation_token: @invitation.token))) %>
- <%= t(".html.activation_support", support_link: style_link(t(".html.support_link_text"), new_feedback_report_url)).html_safe %>
+ <%= t(".activation_support.html", support_link: style_link(t(".html.support_link_text"), new_feedback_report_url)) %>
- <%= t(".html.faq", faq_link: style_link(t(".html.faq_link_text"), archive_faqs_url)).html_safe %>
+ <%= t(".faq.html", faq_link: style_link(t(".html.faq_link_text"), archive_faqs_url)) %>
<% end %>
diff --git a/app/views/user_mailer/invitation.text.erb b/app/views/user_mailer/invitation.text.erb
index 00fedc67bc8..4f3db24c345 100644
--- a/app/views/user_mailer/invitation.text.erb
+++ b/app/views/user_mailer/invitation.text.erb
@@ -1,17 +1,17 @@
<% content_for :message do %>
<% if !@user_name.blank? %>
-<%= t ".has_invited", user_name: @user_name %>
+<%= t ".has_invited.text", user_name: @user_name %>
<% else %>
<%= t ".been_invited" %>
<% end %>
-<%= t ".text.about", otw_url: "https://www.transformativeworks.org" %>
+<%= t ".about.text", otw_url: "https://www.transformativeworks.org" %>
<%= t ".features" %>
-<%= t ".text.join", invitation_url: signup_url(invitation_token: @invitation.token) %>
+<%= t ".join.text", invitation_url: signup_url(invitation_token: @invitation.token) %>
-<%= t ".text.activation_support", support_url: new_feedback_report_url %>
+<%= t ".activation_support.text", support_url: new_feedback_report_url %>
-<%= t ".text.faq", faq_url: archive_faqs_url %>
+<%= t ".faq.text", faq_url: archive_faqs_url %>
<% end %>
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 56017b19e50..266a1db25a4 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -653,22 +653,27 @@ en:
invitation:
been_invited: You've been invited to join the Archive of Our Own!
features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
- has_invited: "%{user_name} has invited you to join the Archive of Our Own!"
+ has_invited:
+ html: "%{user_name} has invited you to join the Archive of Our Own!"
+ text: "%{user_name} has invited you to join the Archive of Our Own!"
+ about:
+ html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
+ text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_url}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
+ activation_support:
+ html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
+ text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
+ faq:
+ html: For more information, please check %{faq_link}.
+ text: For more information, please check %{faq_url}.
+ join:
+ html: If you'd like to join us, please %{invitation_link}.
+ text: If you'd like to join us, please %{invitation_url}.
html:
- about: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- activation_support: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
- faq: For more information, please check %{faq_link}.
faq_link_text: our FAQ
invitation_link_text: follow this link to sign up
- join: If you'd like to join us, please %{invitation_link}.
otw_link_text: Organization for Transformative Works
support_link_text: contact Support
subject: "[%{app_name}] Invitation"
- text:
- about: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the Organization for Transformative Works (%{otw_url}), which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- activation_support: 'After you sign up, you''ll receive an account activation email. If you do not receive this email after 48 hours, please contact Support: %{support_url}.'
- faq: 'For more information, please check our FAQ: %{faq_url}.'
- join: 'If you''d like to join us, please follow this link to sign up: %{invitation_url}.'
invitation_to_claim:
access:
html: Depending on the archive, your works may have been imported as restricted to registered users only (to keep them out of Google searches). If this is the case, the works will only be accessible by logged-in users unless you choose to make them fully visible. For help unlocking, orphaning, or deleting your works, please %{contact_support_link}.
From d248a352bcec191520d1e506f3a9d44434b43e89 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 17:28:11 -0500
Subject: [PATCH 03/13] AO3-1234 Normalized I18n en files and fixed .join.txt
message
---
config/locales/mailers/en.yml | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 266a1db25a4..91f1c65989f 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -651,28 +651,28 @@ en:
signups_here: 'Here are the invalid sign-ups:'
subject: "[%{app_name}][%{collection_title}] Invalid sign-ups found"
invitation:
- been_invited: You've been invited to join the Archive of Our Own!
- features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
- has_invited:
- html: "%{user_name} has invited you to join the Archive of Our Own!"
- text: "%{user_name} has invited you to join the Archive of Our Own!"
about:
html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_url}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- activation_support:
+ activation_support:
html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
+ been_invited: You've been invited to join the Archive of Our Own!
faq:
html: For more information, please check %{faq_link}.
text: For more information, please check %{faq_url}.
- join:
- html: If you'd like to join us, please %{invitation_link}.
- text: If you'd like to join us, please %{invitation_url}.
+ features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
+ has_invited:
+ html: "%{user_name} has invited you to join the Archive of Our Own!"
+ text: "%{user_name} has invited you to join the Archive of Our Own!"
html:
faq_link_text: our FAQ
invitation_link_text: follow this link to sign up
otw_link_text: Organization for Transformative Works
support_link_text: contact Support
+ join:
+ html: If you'd like to join us, please %{invitation_link}.
+ text: If you'd like to join us, please follow this link to sign up: %{invitation_url}.
subject: "[%{app_name}] Invitation"
invitation_to_claim:
access:
From edf5014c8a13e98a2faa2fa887bb40ed44868005 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 17:30:58 -0500
Subject: [PATCH 04/13] AO3-1234 Fixed Rubocop flagged excess code and lines
---
test/mailers/previews/user_mailer_preview.rb | 3 ---
1 file changed, 3 deletions(-)
diff --git a/test/mailers/previews/user_mailer_preview.rb b/test/mailers/previews/user_mailer_preview.rb
index e6fa1dffa15..cb36a3c1c84 100644
--- a/test/mailers/previews/user_mailer_preview.rb
+++ b/test/mailers/previews/user_mailer_preview.rb
@@ -153,19 +153,16 @@ def invitation_to_claim
UserMailer.invitation_to_claim(invitation.id, archivist.login)
end
-
# URL: /rails/mailers/user_mailer/invitation
def invitation_by_other_user
inviting_user = create(:user)
invitation = create(:invitation, creator: inviting_user)
- user = create(:user, :for_mailer_preview)
UserMailer.invitation(invitation.id)
end
# URL: /rails/mailers/user_mailer/invitation
def invitation_by_queue
invitation = create(:invitation)
- user = create(:user, :for_mailer_preview)
UserMailer.invitation(invitation.id)
end
From 1a4979643ba39cae6dc9a96f1009dd27f3bcc507 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 17:42:02 -0500
Subject: [PATCH 05/13] AO3-1234 Restored user for mailer preview in invitation
preview
---
test/mailers/previews/user_mailer_preview.rb | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/mailers/previews/user_mailer_preview.rb b/test/mailers/previews/user_mailer_preview.rb
index cb36a3c1c84..aa6710e6ab6 100644
--- a/test/mailers/previews/user_mailer_preview.rb
+++ b/test/mailers/previews/user_mailer_preview.rb
@@ -157,12 +157,14 @@ def invitation_to_claim
def invitation_by_other_user
inviting_user = create(:user)
invitation = create(:invitation, creator: inviting_user)
+ user = create(:user, :for_mailer_preview)
UserMailer.invitation(invitation.id)
end
# URL: /rails/mailers/user_mailer/invitation
def invitation_by_queue
invitation = create(:invitation)
+ user = create(:user, :for_mailer_preview)
UserMailer.invitation(invitation.id)
end
From f853aaad69c283063a5bfd82054ccfb7b5d72aaf Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 17:52:17 -0500
Subject: [PATCH 06/13] AO3-7035 Previous Commits had Wrong Issue Number and
Removal of User Redundancy
---
test/mailers/previews/user_mailer_preview.rb | 2 --
1 file changed, 2 deletions(-)
diff --git a/test/mailers/previews/user_mailer_preview.rb b/test/mailers/previews/user_mailer_preview.rb
index aa6710e6ab6..cb36a3c1c84 100644
--- a/test/mailers/previews/user_mailer_preview.rb
+++ b/test/mailers/previews/user_mailer_preview.rb
@@ -157,14 +157,12 @@ def invitation_to_claim
def invitation_by_other_user
inviting_user = create(:user)
invitation = create(:invitation, creator: inviting_user)
- user = create(:user, :for_mailer_preview)
UserMailer.invitation(invitation.id)
end
# URL: /rails/mailers/user_mailer/invitation
def invitation_by_queue
invitation = create(:invitation)
- user = create(:user, :for_mailer_preview)
UserMailer.invitation(invitation.id)
end
From 3050af795b617bdb1a1264ec34943be6dcb9e5de Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 18:15:50 -0500
Subject: [PATCH 07/13] AO3-7035 Restored to prior Normalized I18n Commit
---
config/locales/mailers/en.yml | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 91f1c65989f..266a1db25a4 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -651,28 +651,28 @@ en:
signups_here: 'Here are the invalid sign-ups:'
subject: "[%{app_name}][%{collection_title}] Invalid sign-ups found"
invitation:
+ been_invited: You've been invited to join the Archive of Our Own!
+ features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
+ has_invited:
+ html: "%{user_name} has invited you to join the Archive of Our Own!"
+ text: "%{user_name} has invited you to join the Archive of Our Own!"
about:
html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_url}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- activation_support:
+ activation_support:
html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
- been_invited: You've been invited to join the Archive of Our Own!
faq:
html: For more information, please check %{faq_link}.
text: For more information, please check %{faq_url}.
- features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
- has_invited:
- html: "%{user_name} has invited you to join the Archive of Our Own!"
- text: "%{user_name} has invited you to join the Archive of Our Own!"
+ join:
+ html: If you'd like to join us, please %{invitation_link}.
+ text: If you'd like to join us, please %{invitation_url}.
html:
faq_link_text: our FAQ
invitation_link_text: follow this link to sign up
otw_link_text: Organization for Transformative Works
support_link_text: contact Support
- join:
- html: If you'd like to join us, please %{invitation_link}.
- text: If you'd like to join us, please follow this link to sign up: %{invitation_url}.
subject: "[%{app_name}] Invitation"
invitation_to_claim:
access:
From 352193ccc98267eb85f2a80b74cf4ce7f89e16f0 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 18:35:38 -0500
Subject: [PATCH 08/13] AO3-7035 Restored .join.txt message to include correct
message
---
config/locales/mailers/en.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 266a1db25a4..aeebf842087 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -667,7 +667,7 @@ en:
text: For more information, please check %{faq_url}.
join:
html: If you'd like to join us, please %{invitation_link}.
- text: If you'd like to join us, please %{invitation_url}.
+ text: If you'd like to join us, please follow this link to sign up: %{invitation_url}.
html:
faq_link_text: our FAQ
invitation_link_text: follow this link to sign up
From 9f2ca85723bda220ad56209b287c59b80dd3cd7a Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sat, 29 Nov 2025 18:39:50 -0500
Subject: [PATCH 09/13] AO3-7035 Removed semicolon in .join.txt message
---
config/locales/mailers/en.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index aeebf842087..ef0f7bcede4 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -667,7 +667,7 @@ en:
text: For more information, please check %{faq_url}.
join:
html: If you'd like to join us, please %{invitation_link}.
- text: If you'd like to join us, please follow this link to sign up: %{invitation_url}.
+ text: If you'd like to join us, please follow this link to sign up %{invitation_url}.
html:
faq_link_text: our FAQ
invitation_link_text: follow this link to sign up
From 9884d1f96a61ad202a01d851b4331463e882e527 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Mon, 1 Dec 2025 10:37:16 -0500
Subject: [PATCH 10/13] AO3-7035 Added missing expected to find text in
.about.text
---
config/locales/mailers/en.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index ef0f7bcede4..971ce0f9eff 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -658,7 +658,7 @@ en:
text: "%{user_name} has invited you to join the Archive of Our Own!"
about:
html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_url}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
+ text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the Organization for Transformative Works (%{otw_url}), which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
activation_support:
html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
From ea7183240211526c36cdf2e60594ac14badac677 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Mon, 1 Dec 2025 12:42:50 -0500
Subject: [PATCH 11/13] AO3-7035 Normalized en.yml to i18n standards with
command
---
config/locales/mailers/en.yml | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 971ce0f9eff..90d399fa6ab 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -651,28 +651,28 @@ en:
signups_here: 'Here are the invalid sign-ups:'
subject: "[%{app_name}][%{collection_title}] Invalid sign-ups found"
invitation:
- been_invited: You've been invited to join the Archive of Our Own!
- features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
- has_invited:
- html: "%{user_name} has invited you to join the Archive of Our Own!"
- text: "%{user_name} has invited you to join the Archive of Our Own!"
about:
html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the Organization for Transformative Works (%{otw_url}), which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- activation_support:
+ activation_support:
html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
+ been_invited: You've been invited to join the Archive of Our Own!
faq:
html: For more information, please check %{faq_link}.
text: For more information, please check %{faq_url}.
- join:
- html: If you'd like to join us, please %{invitation_link}.
- text: If you'd like to join us, please follow this link to sign up %{invitation_url}.
+ features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
+ has_invited:
+ html: "%{user_name} has invited you to join the Archive of Our Own!"
+ text: "%{user_name} has invited you to join the Archive of Our Own!"
html:
faq_link_text: our FAQ
invitation_link_text: follow this link to sign up
otw_link_text: Organization for Transformative Works
support_link_text: contact Support
+ join:
+ html: If you'd like to join us, please %{invitation_link}.
+ text: If you'd like to join us, please follow this link to sign up %{invitation_url}.
subject: "[%{app_name}] Invitation"
invitation_to_claim:
access:
From ffe6a7a4409872fcc04d726ddcc98c46a91825a6 Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sun, 7 Dec 2025 15:30:10 -0500
Subject: [PATCH 12/13] AO3-7035 Refactored link text keys to reside within
their relevant sections
---
app/views/user_mailer/invitation.html.erb | 8 ++++----
config/locales/mailers/en.yml | 11 +++++------
2 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/app/views/user_mailer/invitation.html.erb b/app/views/user_mailer/invitation.html.erb
index 7e5f0c456d2..5f6bacbe387 100644
--- a/app/views/user_mailer/invitation.html.erb
+++ b/app/views/user_mailer/invitation.html.erb
@@ -8,7 +8,7 @@
- <%= t(".about.html", otw_link: style_link(t(".html.otw_link_text"), "https://www.transformativeworks.org")) %>
+ <%= t(".about.html", otw_link: style_link(t(".about.otw_link_text"), "https://www.transformativeworks.org")) %>
@@ -16,14 +16,14 @@
- <%= t(".join.html", invitation_link: style_link(t(".html.invitation_link_text"), signup_url(invitation_token: @invitation.token))) %>
+ <%= t(".join.html", invitation_link: style_link(t(".join.invitation_link_text"), signup_url(invitation_token: @invitation.token))) %>
- <%= t(".activation_support.html", support_link: style_link(t(".html.support_link_text"), new_feedback_report_url)) %>
+ <%= t(".activation_support.html", support_link: style_link(t(".activation_support.support_link_text"), new_feedback_report_url)) %>
- <%= t(".faq.html", faq_link: style_link(t(".html.faq_link_text"), archive_faqs_url)) %>
+ <%= t(".faq.html", faq_link: style_link(t(".faq.faq_link_text"), archive_faqs_url)) %>
<% end %>
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 90d399fa6ab..3c8b32a078c 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -654,25 +654,24 @@ en:
about:
html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the Organization for Transformative Works (%{otw_url}), which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
+ otw_link_text: Organization for Transformative Works
activation_support:
html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
+ support_link_text: contact Support
been_invited: You've been invited to join the Archive of Our Own!
faq:
html: For more information, please check %{faq_link}.
text: For more information, please check %{faq_url}.
+ faq_link_text: our FAQ
features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
has_invited:
html: "%{user_name} has invited you to join the Archive of Our Own!"
- text: "%{user_name} has invited you to join the Archive of Our Own!"
- html:
- faq_link_text: our FAQ
- invitation_link_text: follow this link to sign up
- otw_link_text: Organization for Transformative Works
- support_link_text: contact Support
+ text: "%{user_name} has invited you to join the Archive of Our Own!"
join:
html: If you'd like to join us, please %{invitation_link}.
text: If you'd like to join us, please follow this link to sign up %{invitation_url}.
+ invitation_link_text: follow this link to sign up
subject: "[%{app_name}] Invitation"
invitation_to_claim:
access:
From a6ac3ea6be393b372e9ca402caef13ade0dd261c Mon Sep 17 00:00:00 2001
From: Dcano-png
Date: Sun, 7 Dec 2025 15:33:45 -0500
Subject: [PATCH 13/13] AO3-7035 Normalized en.yml to i18n standards with
command
---
config/locales/mailers/en.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/config/locales/mailers/en.yml b/config/locales/mailers/en.yml
index 3c8b32a078c..e9fec02be63 100644
--- a/config/locales/mailers/en.yml
+++ b/config/locales/mailers/en.yml
@@ -653,25 +653,25 @@ en:
invitation:
about:
html: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the %{otw_link}, which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
- text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the Organization for Transformative Works (%{otw_url}), which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
otw_link_text: Organization for Transformative Works
+ text: The Archive of Our Own (AO3) is a free, noncommercial archive built by and for fans. Our servers are owned by our parent nonprofit, the Organization for Transformative Works (%{otw_url}), which works to protect fan rights and preserve fanworks. We welcome all kinds of fanworks, including fanfiction, fanart, fanvids, and podfic from any fandom.
activation_support:
html: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_link}.
- text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
support_link_text: contact Support
+ text: After you sign up, you'll receive an account activation email. If you do not receive this email after 48 hours, please %{support_url}.
been_invited: You've been invited to join the Archive of Our Own!
faq:
+ faq_link_text: our FAQ
html: For more information, please check %{faq_link}.
text: For more information, please check %{faq_url}.
- faq_link_text: our FAQ
features: With an account, you can post fanworks, use bookmarks to keep track of works you enjoyed, receive subscription emails when your favorite creators or works update, customize the way the site looks for you, and more!
has_invited:
html: "%{user_name} has invited you to join the Archive of Our Own!"
- text: "%{user_name} has invited you to join the Archive of Our Own!"
+ text: "%{user_name} has invited you to join the Archive of Our Own!"
join:
html: If you'd like to join us, please %{invitation_link}.
- text: If you'd like to join us, please follow this link to sign up %{invitation_url}.
invitation_link_text: follow this link to sign up
+ text: If you'd like to join us, please follow this link to sign up %{invitation_url}.
subject: "[%{app_name}] Invitation"
invitation_to_claim:
access: