Added mailer i18n (#436)

* Added mailer i18n

* Added translation to mailer in the JS

Also added a generic way to add JS translation through a javascript entry in the locale file

* Moved line-breaks from translations to JS file
This commit is contained in:
Rafael Baldasso Audibert 2019-04-11 12:30:50 -03:00 committed by Jesus Federico
parent 88776eaadb
commit 822dd27509
8 changed files with 83 additions and 26 deletions

View File

@ -43,10 +43,14 @@ $(document).on('turbolinks:load', function(){
// Handle recording emails. // Handle recording emails.
$('.email-link').each(function(){ $('.email-link').each(function(){
$(this).click(function(){ $(this).click(function(){
var subject = $(".username").text() + " has invited you to view a recording."; var subject = $(".username").text() + " " + t('room.mailer.subject');
var body = "To view the recording, follow the link below:\n\n" + $(this).attr("data-pres-link"); var body = t('room.mailer.body') + "\n\n" + $(this).attr("data-pres-link");
var footer = "\n\nThis e-mail is auto-generated by BigBlueButton.\nBigBlueButton is an open source web conferencing system. For more information on BigBlueButton, see https://bigbluebutton.org/." var autogenerated = "\n\n" + t('room.mailer.autogenerated') + "\n";
var win = window.open("mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body) + encodeURIComponent(footer), '_blank'); var footer = t('room.mailer.footer');
var url = "mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body) + encodeURIComponent(autogenerated) + encodeURIComponent(footer);
var win = window.open(url, '_blank');
win.focus(); win.focus();
}); });
}); });

View File

@ -89,4 +89,10 @@ module ApplicationHelper
false false
end end
end end
# Return all the translations available in the client side through javascript
def current_translations
@translations ||= I18n.backend.send(:translations)
@translations[I18n.locale].with_indifferent_access[:javascript] || {}
end
end end

View File

@ -32,6 +32,26 @@
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
<script type="text/javascript">
// Rail-ish function to translate a string, according to the Rails locales
window.t = function t(key) {
if (!key) {
return "";
}
var keys = key.split('.');
var value = <%= current_translations.to_json.html_safe %>; // Add I18n variables
keys.forEach(key => {
if (value) {
value = value[key];
}
});
return value ? value : "";
}
</script>
</head> </head>
<body class="app-background" data-controller="<%= params[:controller] %>" data-action="<%= params[:action] %>" data-relative-root="<%= Rails.configuration.relative_url_root || "/" %>"> <body class="app-background" data-controller="<%= params[:controller] %>" data-action="<%= params[:action] %>" data-relative-root="<%= Rails.configuration.relative_url_root || "/" %>">

View File

@ -19,28 +19,30 @@
<div style="display:inline-block; background-color:#F5F7FB; border:1px solid #d3d3d3; padding: 25px 70px"> <div style="display:inline-block; background-color:#F5F7FB; border:1px solid #d3d3d3; padding: 25px 70px">
<%= image_tag(Rails.configuration.branding_image) %> <%= image_tag(Rails.configuration.branding_image) %>
<h1 style="margin-bottom:30px">Password Reset</h1> <h1 style="margin-bottom:30px">
<%= t('mailer.user.password_reset.title') %>
</h1>
<p> <p>
It seems like you forgot your password for <%= t('bigbluebutton') %> <%= t('mailer.user.password_reset.welcome', bigbluebutton: t('bigbluebutton')) %>
</p> </p>
<p style="margin-bottom:45px;"> <p style="margin-bottom:45px;">
If this is true, please click the link below to reset your password: <%= t('mailer.user.password_reset.message') %>
</p> </p>
<a <a
style="background: #467fcf;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;" style="background: #467fcf;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;"
href="<%= @url %>"> href="<%= @url %>">
Reset Password <%= t('mailer.user.password_reset.reset_link') %>
</a> </a>
<p style="margin-top:45px;"> <p style="margin-top:45px;">
This link will expire in two hours. <%= t('mailer.user.password_reset.expire') %>
</p> </p>
<p> <p>
You can safely ignore this email if you did not request a password reset. <%= t('mailer.user.password_reset.ignore') %>
</p> </p>
</div> </div>
</div> </div>

View File

@ -16,13 +16,13 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. # with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
%> %>
Password Reset <%= t('mailer.user.password_reset.title') %>
It seems like you forgot your password for <%= t('bigbluebutton') %> <%= t('mailer.user.password_reset.welcome', bigbluebutton: t('bigbluebutton')) %>
If this is true, please click the link below to reset your password: <%= t('mailer.user.password_reset.message') %>
<%= @url %> <%= @url %>
This link will expire in two hours. <%= t('mailer.user.password_reset.expire') %>
You can safely ignore this email if you did not request a password reset. <%= t('mailer.user.password_reset.ignore') %>

View File

@ -20,23 +20,25 @@
<div style="display:inline-block; background-color:#F5F7FB; border:1px solid #d3d3d3; padding: 25px 70px"> <div style="display:inline-block; background-color:#F5F7FB; border:1px solid #d3d3d3; padding: 25px 70px">
<%= image_tag(Rails.configuration.branding_image) %> <%= image_tag(Rails.configuration.branding_image) %>
<h1 style="margin-bottom:30px">Welcome to <%= t('bigbluebutton') %>!, <h1 style="margin-bottom:30px">
<%= @user[:name] %></h1> <%= t('mailer.user.verify_email.welcome', bigbluebutton: t('bigbluebutton'), name: @user[:name]) %>
</h1>
<p> <p>
You have successfully registered your <%= t('bigbluebutton') %> account, your username is: <%= t('mailer.user.verify_email.success', bigbluebutton: t('bigbluebutton'), email: @user[:email]) %>
<%= @user[:email] %>.
</p> </p>
<p style="margin-bottom:45px;"> <p style="margin-bottom:45px;">
To verify your account, just click the button below. <%= t('mailer.user.verify_email.verify') %>
</p> </p>
<a style="background: #467fcf;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;" href="<%= @url %>"> <a style="background: #467fcf;color: #ffffff; padding: 10px 15px; box-shadow: 0 2px 4px 0 rgba(0,0,0,.25);border: 1px solid transparent;text-decoration:none;" href="<%= @url %>">
Verify Account <%= t('mailer.user.verify_email.verify_link') %>
</a> </a>
<p style="margin-top:45px;">Thanks for joining and have a great day!</p> <p style="margin-top:45px;">
<%= t('mailer.user.verify_email.thanks') %>
</p>
</div> </div>
</div> </div>

View File

@ -16,10 +16,10 @@
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. # with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
%> %>
Welcome to <%= t('bigbluebutton') %>!, <%= @user[:name] %> <%= t('mailer.user.verify_email.welcome', bigbluebutton: t('bigbluebutton'), name: @user[:name]) %>
You have successfully registered your <%= t('bigbluebutton') %> account, your username is: <%= @user[:email] %>. <%= t('mailer.user.verify_email.success', bigbluebutton: t('bigbluebutton'), email: @user[:email]) %>
To verify your account, just follow this link: <%= @url %> <%= t('mailer.user.verify_email.verify_text', url: @url) %>
Thanks for joining and have a great day! <%= t('mailer.user.verify_email.thanks') %>

View File

@ -81,6 +81,13 @@ en:
invalid_credentials: Login failed due to invalid credentials. Are you sure you entered them correctly? invalid_credentials: Login failed due to invalid credentials. Are you sure you entered them correctly?
invalid_login_method: Login failed due to account mismatch. You need to log in with omniauth. invalid_login_method: Login failed due to account mismatch. You need to log in with omniauth.
invite_message: "To invite someone to the meeting, send them this link:" invite_message: "To invite someone to the meeting, send them this link:"
javascript:
room:
mailer:
subject: 'has invited you to view a recording.'
body: 'To view the recording, follow the link below:'
autogenerated: 'This e-mail is auto-generated by BigBlueButton.'
footer: 'BigBlueButton is an open source web conferencing system. For more information on BigBlueButton, see https://bigbluebutton.org/.'
landing: landing:
about: "%{href} is a simple front-end for your BigBlueButton open-source web conferencing server. You can create your own rooms to host sessions, or join others using a short and convenient link." about: "%{href} is a simple front-end for your BigBlueButton open-source web conferencing server. You can create your own rooms to host sessions, or join others using a short and convenient link."
welcome: Welcome to BigBlueButton. welcome: Welcome to BigBlueButton.
@ -91,6 +98,22 @@ en:
language_default: Default (browser language) language_default: Default (browser language)
ldap_error: Unable to connect to the LDAP server. Please check your LDAP configuration in the env file and ensure your server is running. ldap_error: Unable to connect to the LDAP server. Please check your LDAP configuration in the env file and ensure your server is running.
login: Sign in login: Sign in
mailer:
user:
password_reset:
title: 'Password reset'
welcome: It seems like you forgot your password for %{bigbluebutton}
message: 'If this is true, please click the link below to reset your password:'
reset_link: Reset Password
expire: This link will expire in two hours.
ignore: You can safely ignore this email if you did not request a password reset.
verify_email:
welcome: Welcome to %{bigbluebutton}, %{name}!
success: You have successfully registered your %{bigbluebutton} account. Your username is %{email}.
verify: To verify your account, just click the button below.
verify_text: 'To verify your account, just follow this link: %{url}'
verify_link: Verify Account
thanks: Thanks for joining and have a great day!
max_concurrent: The maximum number of concurrent sessions allowed has been reached! max_concurrent: The maximum number of concurrent sessions allowed has been reached!
modal: modal:
create_room: create_room: