localize views

This commit is contained in:
Joshua Arts 2018-07-17 11:57:49 -04:00
parent 55b83226c9
commit ce4c8b3bff
27 changed files with 249 additions and 150 deletions

View File

@ -2,14 +2,14 @@
<div class="page-content mt-0"> <div class="page-content mt-0">
<div class="container text-center"> <div class="container text-center">
<i class="fas fa-database fa-6x mb-4"></i> <i class="fas fa-database fa-6x mb-4"></i>
<h1 class="h3 mb-2">Greenlight encountered a database migration error.<br>This may be because you haven't updated to Greenlight 2.0.</h1> <h1 class="h3 mb-2"><%= t("errors.migration_error.notice") %></h1>
<p class="h4 text-muted font-weight-normal mb-7">If you are not an administrator, please contact one.</p> <p class="h4 text-muted font-weight-normal mb-7"><%= t("errors.migration_error.contact_admin") %></p>
<h1 class="h3 mb-3">We've released a new version of Greenlight, but your database isn't compatible.</h1> <h1 class="h3 mb-3"><%= t("errors.migration_error.version") %></h1>
<a class="btn btn-success mt-3 mx-3" href="http://docs.bigbluebutton.org/install/greenlight-v2.html#upgrading-from-greenlight-10" target="_blank"> <a class="btn btn-success mt-3 mx-3" href="http://docs.bigbluebutton.org/install/greenlight-v2.html#upgrading-from-greenlight-10" target="_blank">
<i class="far fa-star mr-2"></i>Show me how to upgrade to 2.0! <i class="far fa-star mr-2"></i><%= t("errors.migration_error.upgrade") %>
</a> </a>
<a class="btn btn-info mt-3 mx-3 w-20" href="http://docs.bigbluebutton.org/install/greenlight-v2.html#remaining-on-greenlight-10" target="_blank"> <a class="btn btn-info mt-3 mx-3 w-20" href="http://docs.bigbluebutton.org/install/greenlight-v2.html#remaining-on-greenlight-10" target="_blank">
<i class="far fa-hand-paper mr-2"></i>I'd like to stay using 1.0. <i class="far fa-hand-paper mr-2"></i><%= t("errors.migration_error.continue") %>
</a> </a>
</div> </div>
</div> </div>

View File

@ -2,10 +2,10 @@
<div class="page-content"> <div class="page-content">
<div class="container text-center"> <div class="container text-center">
<div class="display-1 text-muted mb-5">500</div> <div class="display-1 text-muted mb-5">500</div>
<h1 class="h2 mb-3">Oh no! Looks like something went wrong on our end.</h1> <h1 class="h2 mb-3"><%= t("errors.internal.message") %></h1>
<p class="h4 text-muted font-weight-normal mb-7">The error has been logged, we'll take a look!</p> <p class="h4 text-muted font-weight-normal mb-7"><%= t("errors.internal.help") %></p>
<a class="btn btn-primary" href="javascript:history.back()"> <a class="btn btn-primary" href="javascript:history.back()">
<i class="fas fa-arrow-left mr-2"></i>Go back <i class="fas fa-arrow-left mr-2"></i><%= t("go_back") %>
</a> </a>
</div> </div>
</div> </div>

View File

@ -2,10 +2,10 @@
<div class="page-content"> <div class="page-content">
<div class="container text-center"> <div class="container text-center">
<div class="display-1 text-muted mb-5">404</div> <div class="display-1 text-muted mb-5">404</div>
<h1 class="h2 mb-3">Whoops! Looks like we can't find that.</h1> <h1 class="h2 mb-3"><%= t("errors.not_found.message") %></h1>
<p class="h4 text-muted font-weight-normal mb-7">Is it possible its been removed?</p> <p class="h4 text-muted font-weight-normal mb-7"><%= t("errors.not_found.help") %></p>
<a class="btn btn-primary" href="javascript:history.back()"> <a class="btn btn-primary" href="javascript:history.back()">
<i class="fas fa-arrow-left mr-2"></i>Go back <i class="fas fa-arrow-left mr-2"></i><%= t("go_back") %>
</a> </a>
</div> </div>
</div> </div>

View File

@ -2,10 +2,10 @@
<div class="page-content"> <div class="page-content">
<div class="container text-center"> <div class="container text-center">
<div class="display-1 text-muted mb-5">422</div> <div class="display-1 text-muted mb-5">422</div>
<h1 class="h2 mb-3">Oops! Request is unprocessable.</h1> <h1 class="h2 mb-3"><%= t("errors.unprocessable.message") %></h1>
<p class="h4 text-muted font-weight-normal mb-7">Unforunately this isn't a valid request.</p> <p class="h4 text-muted font-weight-normal mb-7"><%= t("errors.unprocessable.help") %></p>
<a class="btn btn-primary" href="javascript:history.back()"> <a class="btn btn-primary" href="javascript:history.back()">
<i class="fas fa-arrow-left mr-2"></i>Go back <i class="fas fa-arrow-left mr-2"></i><%= t("go_back") %>
</a> </a>
</div> </div>
</div> </div>

View File

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Greenlight</title> <title><%= t("greenlight") %></title>
<%= csrf_meta_tags %> <%= csrf_meta_tags %>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
@ -19,15 +19,14 @@
<body class="app-background" data-controller="<%= params[:controller] %>" data-action="<%= params[:action] %>"> <body class="app-background" data-controller="<%= params[:controller] %>" data-action="<%= params[:action] %>">
<div class="wrapper"> <div class="wrapper">
<%= render "shared/header" %> <%= render "shared/header" %>
<% if bigbluebutton_endpoint_default? %> <% if bigbluebutton_endpoint_default? %>
<%= render "shared/error_banner" do %> <%= render "shared/error_banner" do %>
<i class="fas fa-exclamation-triangle"></i> <i class="fas fa-exclamation-triangle"></i>
<p class="d-inline">This deployment is using a pre-configured testing server, <p class="d-inline"><%= t("test_install",
you should replace this with your own. href: link_to(t("docs").downcase, "http://docs.bigbluebutton.org/install/greenlight-v2.html#2-install-greenlight", target: "_blank")
For details, see the <%= link_to "documentation", "http://docs.bigbluebutton.org/install/greenlight.html#installing-greenlight", target: "_blank" %>. ).html_safe %>
<% end %> <% end %>
<% end %> <% end %>
@ -42,7 +41,6 @@
<% if current_user %> <% if current_user %>
<%= render "shared/modals/create_room_modal" %> <%= render "shared/modals/create_room_modal" %>
<% end %> <% end %>
</div> </div>
<%= render "shared/footer" %> <%= render "shared/footer" %>

View File

@ -9,11 +9,11 @@
<div class="background landing-section"> <div class="background landing-section">
<div class="d-flex align-items-center" style="height: 100%;"> <div class="d-flex align-items-center" style="height: 100%;">
<div class="container text-center"> <div class="container text-center">
<h1 id="main-text" class="font-weight-400 responsive-header">Welcome to Greenlight.</h1> <h1 id="main-text" class="font-weight-400 responsive-header"><%= t("landing.welcome") %></h1>
<h4 class="text-muted">A simple front end for your BigBlueButton Open Source Web Conferencing Server.</h4> <h4 class="text-muted"><%= t("landing.about") %></h4>
<%= link_to "https://youtu.be/Hso8yLzkqj8", class: "p-3", target: "_blank" do %> <%= link_to "https://youtu.be/Hso8yLzkqj8", class: "p-3", target: "_blank" do %>
<h4>Watch a tutorial on using Greenlight <i class="far fa-play-circle"></i></h4> <h4><%= t("landing.video") %> <i class="far fa-play-circle"></i></h4>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@ -4,11 +4,11 @@
<%= f.text_field :join_name, <%= f.text_field :join_name,
required: true, required: true,
class: "form-control join-form", class: "form-control join-form",
placeholder: "Enter your name!", placeholder: t("enter_your_name"),
value: "#{current_user ? current_user.name : ''}", value: "#{current_user ? current_user.name : ''}",
readonly: !current_user.nil? %> readonly: !current_user.nil? %>
<span class="input-group-append"> <span class="input-group-append">
<%= f.submit "Join", class: "btn btn-primary px-7 join-form" %> <%= f.submit t("room.join"), class: "btn btn-primary px-7 join-form" %>
</span> </span>
</div> </div>
<% end %> <% end %>

View File

@ -7,8 +7,8 @@
<i class="fas fa-home align-top home-indicator"></i> <i class="fas fa-home align-top home-indicator"></i>
<% end %> <% end %>
</h1> </h1>
<h4 class="text-left mb-6"><%= @room.sessions %> Sessions | <%= @recordings.length %> Recordings</h4> <h4 class="text-left mb-6"><%= @room.sessions %> <%= t("room.sessions") %> | <%= @recordings.length %> <%= t("room.recordings") %></h4>
<label class="form-label">Invite Participants</label> <label class="form-label"><%= t("room.invite_participants") %></label>
<form class="form-inline"> <form class="form-inline">
<div class="input-icon invite-link-input"> <div class="input-icon invite-link-input">
<span class="input-icon-addon"> <span class="input-icon-addon">
@ -18,19 +18,15 @@
</div> </div>
<div id="copy" class="btn btn-primary mx-2"> <div id="copy" class="btn btn-primary mx-2">
<i class="fas fa-copy"></i> <i class="fas fa-copy"></i>
Copy <%= t("copy") %>
</div> </div>
<!-- <div id="email" class="btn btn-primary">
<i class="fas fa-envelope"></i>
Email
</div> -->
</form> </form>
</div> </div>
<div class="col-lg-3 col-sm-12 force-bottom mt-5"> <div class="col-lg-3 col-sm-12 force-bottom mt-5">
<% if @is_running %> <% if @is_running %>
<%= button_to "Join", room_path(@room), class: "btn btn-primary btn-block px-7 start-button float-right" %> <%= button_to t("room.join"), room_path(@room), class: "btn btn-primary btn-block px-7 start-button float-right" %>
<% else %> <% else %>
<%= button_to "Start", start_room_path(@room), class: "btn btn-primary btn-block px-7 start-button float-right" %> <%= button_to t("room.start"), start_room_path(@room), class: "btn btn-primary btn-block px-7 start-button float-right" %>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@ -1,8 +1,8 @@
<%= render 'shared/room_event' do %> <%= render 'shared/room_event' do %>
<div class="row"> <div class="row">
<div class="col-9"> <div class="col-9">
<h3>Oops! The meeting hasn't started yet.</h3> <h3><%= t("room.wait.message") %></h3>
<h4 class="text-muted">You will automatically join when the meeting starts.</h4> <h4 class="text-muted"><%= t("room.wait.auto") %></h4>
</div> </div>
<div class="col-3"> <div class="col-3">
<div class="loader align-bottom mt-3"></div> <div class="loader align-bottom mt-3"></div>

View File

@ -1,4 +1,4 @@
<h1 class="text-center mt-7">Features</h1> <h1 class="text-center mt-7"><%= t("features.title") %></h1>
<div class="container text-center"> <div class="container text-center">
<div class="row mt-8"> <div class="row mt-8">
@ -6,19 +6,19 @@
<span class="stamp feature-stamp bg-cyan"> <span class="stamp feature-stamp bg-cyan">
<i class="fas fa-chalkboard-teacher fa-3x feature-icon"></i> <i class="fas fa-chalkboard-teacher fa-3x feature-icon"></i>
</span> </span>
<h4 class="mt-5 text-muted">Personalized Rooms</h4> <h4 class="mt-5 text-muted"><%= t("features.rooms") %></h4>
</div> </div>
<div class="col-4"> <div class="col-4">
<span class="stamp feature-stamp bg-cyan"> <span class="stamp feature-stamp bg-cyan">
<i class="fas fa-film fa-3x feature-icon"></i> <i class="fas fa-film fa-3x feature-icon"></i>
</span> </span>
<h4 class="mt-5 text-muted">Recording Management</h4> <h4 class="mt-5 text-muted"><%= t("features.recordings") %></h4>
</div> </div>
<div class="col-4"> <div class="col-4">
<span class="stamp feature-stamp bg-cyan"> <span class="stamp feature-stamp bg-cyan">
<i class="fas fa-pencil-alt fa-3x feature-icon"></i> <i class="fas fa-pencil-alt fa-3x feature-icon"></i>
</span> </span>
<h4 class="mt-5 text-muted">Custom Designs</h4> <h4 class="mt-5 text-muted"><%= t("features.designs") %></h4>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,3 +1,3 @@
<footer class="footer page-footer"> <footer class="footer page-footer">
<h5 class="text-center">Powered by <a target="_blank" href="http://bigbluebutton.org/">BigBlueButton</a>.</h5> <h5 class="text-center"><%= t("footer.powered_by", href: link_to(t("bigbluebutton"), "http://bigbluebutton.org/", target: "_blank")).html_safe %></h5>
</footer> </footer>

View File

@ -9,7 +9,7 @@
<div class="d-flex ml-auto"> <div class="d-flex ml-auto">
<% if current_user %> <% if current_user %>
<a class="px-5 ml-2 mt-1" href="" data-toggle="modal" data-target="#createRoomModal"> <a class="px-5 ml-2 mt-1" href="" data-toggle="modal" data-target="#createRoomModal">
<i class="fas fa-plus"></i>&nbsp; Create Room <i class="fas fa-plus"></i>&nbsp; <%= t("header.create_room") %>
</a> </a>
<div class="dropdown"> <div class="dropdown">
<a href="#" class="nav-link pr-0" data-toggle="dropdown"> <a href="#" class="nav-link pr-0" data-toggle="dropdown">
@ -24,29 +24,29 @@
</a> </a>
<div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow" x-placement="bottom-end"> <div class="dropdown-menu dropdown-menu-right dropdown-menu-arrow" x-placement="bottom-end">
<%= link_to current_user.main_room, class: "dropdown-item" do %> <%= link_to current_user.main_room, class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-home"></i> Home Room <i class="dropdown-icon fas fa-home"></i> <%= t("header.dropdown.home") %>
<% end %> <% end %>
<%= link_to edit_user_path(current_user), class: "dropdown-item" do %> <%= link_to edit_user_path(current_user), class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-cog"></i> Settings <i class="dropdown-icon fas fa-cog"></i> <%= t("header.dropdown.settings") %>
<% end %> <% end %>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a class="dropdown-item" href="http://docs.bigbluebutton.org/install/greenlight.html" target="_blank"> <a class="dropdown-item" href="http://docs.bigbluebutton.org/install/greenlight.html" target="_blank">
<i class="dropdown-icon far fa-question-circle"></i> Need help? <i class="dropdown-icon far fa-question-circle"></i> <%= t("header.dropdown.help") %>
</a> </a>
<%= link_to logout_path, class: "dropdown-item" do %> <%= link_to logout_path, class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-sign-out-alt"></i> Sign out <i class="dropdown-icon fas fa-sign-out-alt"></i> <%= t("header.dropdown.signout") %>
<% end %> <% end %>
</div> </div>
</div> </div>
<% else %> <% else %>
<% if Rails.configuration.omniauth_bn_launcher && !current_user %> <% if Rails.configuration.omniauth_bn_launcher && !current_user %>
<%= link_to "Login", "#{Rails.configuration.relative_url_root}/auth/bn_launcher", :class => "btn btn-pill btn-outline-primary mx-2" %> <%= link_to t("login"), "#{Rails.configuration.relative_url_root}/auth/bn_launcher", :class => "btn btn-pill btn-outline-primary mx-2" %>
<% else %> <% else %>
<%= link_to "Login", "#loginModal", :class => "btn btn-pill btn-outline-primary mx-2", "data-toggle": "modal" %> <%= link_to t("login"), "#loginModal", :class => "btn btn-pill btn-outline-primary mx-2", "data-toggle": "modal" %>
<% end %> <% end %>
<% if allow_user_signup? %> <% if allow_user_signup? %>
<%= link_to "Signup", signup_path, :class => "btn btn-pill btn-outline-primary mx-2" %> <%= link_to t("signup.title"), signup_path, :class => "btn btn-pill btn-outline-primary mx-2" %>
<% end %> <% end %>
<%= render "shared/modals/login_modal" %> <%= render "shared/modals/login_modal" %>

View File

@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<div class="row pt-9"> <div class="row pt-9">
<div class="col-lg-12 col-sm-12"> <div class="col-lg-12 col-sm-12">
<h4 class="text-left">You have been invited to join</h4> <h4 class="text-left"><%= t("room.invited") %></h4>
<h1 class="display-3 text-left mb-3 font-weight-400"><%= @room.name %></h1> <h1 class="display-3 text-left mb-3 font-weight-400"><%= @room.name %></h1>
<hr class="mt-2 float-left w-25"> <hr class="mt-2 float-left w-25">
</div> </div>
@ -15,7 +15,7 @@
<% else %> <% else %>
<span class="avatar" style="background-image: url(<%= @room.owner.image %>)"></span> <span class="avatar" style="background-image: url(<%= @room.owner.image %>)"></span>
<% end %> <% end %>
<h5 class="font-weight-normal ml-4 mt-3"><%= @room.owner.name %> (Owner)</h5> <h5 class="font-weight-normal ml-4 mt-3"><%= @room.owner.name %> (<%= t("room.invited") %>)</h5>
</div> </div>
<div class="col-lg-6 col-md-4 col-sm-12"> <div class="col-lg-6 col-md-4 col-sm-12">

View File

@ -1,7 +1,7 @@
<div class="sessions pb-5"> <div class="sessions pb-5">
<div class="container pt-6"> <div class="container pt-6">
<%= render "shared/components/subtitle", subtitle: (only_public ? "Public " : "") + "Recordings", search: true %> <%= render "shared/components/subtitle", subtitle: (only_public ? t("recording.visibility.public") + " " : "") + t("room.recordings"), search: true %>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card">
@ -9,12 +9,12 @@
<table class="table table-hover table-outline table-vcenter text-nowrap card-table"> <table class="table table-hover table-outline table-vcenter text-nowrap card-table">
<thead> <thead>
<tr> <tr>
<th>Name</th> <th><%= t("recording.table.name") %></th>
<th>Thumbnails</th> <th><%= t("recording.table.thumbnails") %></th>
<th class="text-left">Length</th> <th class="text-left"><%= t("recording.table.length") %></th>
<th class="text-left">Users</th> <th class="text-left"><%= t("recording.table.users") %></th>
<th class="text-left">Visibility</th> <th class="text-left"><%= t("recording.table.visibility") %></th>
<th>Formats</th> <th><%= t("recording.table.formats") %></th>
<% unless only_public %> <% unless only_public %>
<th class="text-center"><i class="icon-settings"></i></th> <th class="text-center"><i class="icon-settings"></i></th>
<% end %> <% end %>
@ -24,7 +24,7 @@
<% if recordings.empty? %> <% if recordings.empty? %>
<tr> <tr>
<td colspan="7" class="text-center h4 p-6 font-weight-normal"> <td colspan="7" class="text-center h4 p-6 font-weight-normal">
<%= "This room has no #{(only_public ? "public " : "")} recordings." %> <%= t("recording.no_recordings", inject: only_public ? t("recording.visibility.public").downcase + " " : "") %>
</td> </td>
</tr> </tr>
<% else %> <% else %>
@ -39,7 +39,7 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -2,7 +2,7 @@
<td> <td>
<div><%= recording[:name] %></div> <div><%= recording[:name] %></div>
<div class="small text-muted"> <div class="small text-muted">
Recorded on <%= recording_date(recording[:startTime]) %> <%= t("recording.recorded_on", date: recording_date(recording[:startTime])) %>
</div> </div>
</td> </td>
<td> <td>
@ -15,22 +15,22 @@
</td> </td>
<td class="text-left"> <td class="text-left">
<div class="small text-muted text-uppercase"> <div class="small text-muted text-uppercase">
Length <%= t("recording.table.length") %>
</div> </div>
<%= recording_length(recording[:startTime], recording[:endTime]) %> <%= recording_length(recording[:startTime], recording[:endTime]) %>
</td> </td>
<td class="text-left"> <td class="text-left">
<div class="small text-muted text-uppercase"> <div class="small text-muted text-uppercase">
Users <%= t("recording.table.users") %>
</div> </div>
<%= recording[:participants] %> <%= recording[:participants] %>
</td> </td>
<td class="text-left"> <td class="text-left">
<div class="dropdown"> <div class="dropdown">
<% if recording[:metadata][:"gl-listed"] == "true" %> <% if recording[:metadata][:"gl-listed"] == "true" %>
<i class="dropdown-icon fas fa-globe px-2"></i> Public <i class="dropdown-icon fas fa-globe px-2"></i> <%= t("recording.visibility.public") %>
<% else %> <% else %>
<i class="dropdown-icon fas fa-link px-2"></i> Unlisted <i class="dropdown-icon fas fa-link px-2"></i> <%= t("recording.visibility.unlisted") %>
<% end %> <% end %>
</div> </div>
</td> </td>

View File

@ -2,7 +2,7 @@
<td> <td>
<div><%= recording[:name] %></div> <div><%= recording[:name] %></div>
<div class="small text-muted"> <div class="small text-muted">
Recorded on <%= recording_date(recording[:startTime]) %> <%= t("recording.recorded_on", date: recording_date(recording[:startTime])) %>
</div> </div>
</td> </td>
<td> <td>
@ -15,29 +15,29 @@
</td> </td>
<td class="text-left"> <td class="text-left">
<div class="small text-muted text-uppercase"> <div class="small text-muted text-uppercase">
Length <%= t("recording.table.length") %>
</div> </div>
<%= recording_length(recording[:startTime], recording[:endTime]) %> <%= recording_length(recording[:startTime], recording[:endTime]) %>
</td> </td>
<td class="text-left"> <td class="text-left">
<div class="small text-muted text-uppercase"> <div class="small text-muted text-uppercase">
Users <%= t("recording.table.users") %>
</div> </div>
<%= recording[:participants] %> <%= recording[:participants] %>
</td> </td>
<td class="text-left"> <td class="text-left">
<div class="dropdown"> <div class="dropdown">
<% if recording[:metadata][:"gl-listed"] == "true" %> <% if recording[:metadata][:"gl-listed"] == "true" %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-globe px-2"></i> Public</button> <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-globe px-2"></i> <%= t("recording.visibility.public") %></button>
<% else %> <% else %>
<button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-link px-2"></i> Unlisted</button> <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown"><i class="dropdown-icon fas fa-link px-2"></i> <%= t("recording.visibility.unlisted") %></button>
<% end %> <% end %>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<%= button_to update_recording_path(@room, record_id: recording[:recordID], state: "public"), class: "dropdown-item" do %> <%= button_to update_recording_path(@room, record_id: recording[:recordID], state: "public"), class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-globe"></i> Public <i class="dropdown-icon fas fa-globe"></i> <%= t("recording.visibility.public") %>
<% end %> <% end %>
<%= button_to update_recording_path(@room, record_id: recording[:recordID], state: "unlisted"), class: "dropdown-item" do %> <%= button_to update_recording_path(@room, record_id: recording[:recordID], state: "unlisted"), class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-link"></i> Unlisted <i class="dropdown-icon fas fa-link"></i> <%= t("recording.visibility.unlisted") %>
<% end %> <% end %>
</div> </div>
</div> </div>
@ -51,10 +51,10 @@
<div class="item-action dropdown"> <div class="item-action dropdown">
<a href="javascript:void(0)" data-toggle="dropdown" class="icon"><i class="fas fa-ellipsis-v"></i></a> <a href="javascript:void(0)" data-toggle="dropdown" class="icon"><i class="fas fa-ellipsis-v"></i></a>
<div class="dropdown-menu dropdown-menu-right"> <div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item email-link" data-pres-link="<%= p[:url] %>"><i class="dropdown-icon far fa-envelope"></i> Email Recording</a> <a class="dropdown-item email-link" data-pres-link="<%= p[:url] %>"><i class="dropdown-icon far fa-envelope"></i> <%= t("recording.email") %></a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<%= button_to delete_recording_path(@room, record_id: recording[:recordID]), method: :delete, class: "dropdown-item" do %> <%= button_to delete_recording_path(@room, record_id: recording[:recordID]), method: :delete, class: "dropdown-item" do %>
<i class="dropdown-icon far fa-trash-alt"></i> Delete <i class="dropdown-icon far fa-trash-alt"></i> <%= t("delete") %>
<% end %> <% end %>
</div> </div>
</div> </div>

View File

@ -15,9 +15,9 @@
<h4 class="m-0 force-text-normal"><%= room.name %></h4> <h4 class="m-0 force-text-normal"><%= room.name %></h4>
<div class="small text-muted"> <div class="small text-muted">
<% if room.sessions > 0 %> <% if room.sessions > 0 %>
<i>Last session on <%= recording_date(room.last_session) %></i> <i><%= t("room.last_session", session: recording_date(room.last_session)) %></i>
<% else %> <% else %>
<i>This room has no sessions, yet!</i> <i><%= t("room.no_sessions") %></i>
<% end %> <% end %>
</div> </div>
</td> </td>
@ -28,11 +28,11 @@
<div class="dropdown-menu"> <div class="dropdown-menu">
<!-- <!--
<%= link_to room, class: "dropdown-item" do %> <%= link_to room, class: "dropdown-item" do %>
<i class="dropdown-icon fas fa-cog"></i> Room Settings <i class="dropdown-icon fas fa-cog"></i> <%= t("room.settings") %>
<% end %> <% end %>
--> -->
<a href="" data-toggle="modal" data-target="#deleteRoomModal_<%= room.uid %>"class="dropdown-item"> <a href="" data-toggle="modal" data-target="#deleteRoomModal_<%= room.uid %>"class="dropdown-item">
<i class="dropdown-icon far fa-trash-alt"></i> Delete <i class="dropdown-icon far fa-trash-alt"></i> <%= t("delete") %>
</a> </a>
</div> </div>
</div> </div>

View File

@ -4,7 +4,7 @@
<div class="modal-body"> <div class="modal-body">
<div class="card-body p-6"> <div class="card-body p-6">
<div class="card-title"> <div class="card-title">
<h3>Create New Room</h3> <h3><%= t("modal.create_room.title") %></h3>
</div> </div>
<%= form_for(:room, url: rooms_path) do |f| %> <%= form_for(:room, url: rooms_path) do |f| %>
@ -12,13 +12,13 @@
<span class="input-icon-addon"> <span class="input-icon-addon">
<i class="fas fa-chalkboard-teacher"></i> <i class="fas fa-chalkboard-teacher"></i>
</span> </span>
<%= f.text_field :name, id: "room-name", class: "form-control", value: "", placeholder: "Enter a room name...", autocomplete: :off %> <%= f.text_field :name, id: "room-name", class: "form-control", value: "", placeholder: t("modal.create_room.name_placeholder"), autocomplete: :off %>
<div class="invalid-feedback text-left">Room name cannot be blank.</div> <div class="invalid-feedback text-left"><%= t("modal.create_room.not_blank") %></div>
</div> </div>
<label class="custom-switch mt-5 mb-5 float-left"> <label class="custom-switch mt-5 mb-5 float-left">
<%= f.check_box :auto_join, class: "custom-switch-input", checked: false %> <%= f.check_box :auto_join, class: "custom-switch-input", checked: false %>
<span class="custom-switch-indicator"></span> <span class="custom-switch-indicator"></span>
<span class="custom-switch-description">Automatically join me into the room.</span> <span class="custom-switch-description"><%= t("modal.create_room.auto_join") %></span>
</label> </label>
<div class="form-footer"> <div class="form-footer">
<%= f.submit "Create Room", id: "create-room-submit", class: "btn btn-outline-primary btn-block btn-pill" %> <%= f.submit "Create Room", id: "create-room-submit", class: "btn btn-outline-primary btn-block btn-pill" %>
@ -26,7 +26,7 @@
<% end %> <% end %>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<p>You will be free to delete this room at any time.</p> <p><%= t("modal.create_room.free_delete") %></p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -4,20 +4,20 @@
<div class="modal-body"> <div class="modal-body">
<div class="card-body p-6"> <div class="card-body p-6">
<div class="card-title"> <div class="card-title">
<h3>Are you sure you want to delete <%= room.name %>?</h3> <h3><%= t("modal.delete_room.confirm", room: room.name) %></h3>
</div> </div>
<button type="button" class="btn btn-pill btn-info my-1 btn-del-room" data-dismiss="modal"> <button type="button" class="btn btn-pill btn-info my-1 btn-del-room" data-dismiss="modal">
On second thought, I'll keep it. <%= t("modal.delete_room.keep") %>
</button> </button>
<%= button_to room, method: :delete, id: "delete-confirm", class: "btn btn-pill btn-danger my-1 btn-del-room" do %> <%= button_to room, method: :delete, id: "delete-confirm", class: "btn btn-pill btn-danger my-1 btn-del-room" do %>
I'm sure, delete this room. <%= t("modal.delete_room.delete") %>
<% end %> <% end %>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<p>You will <b>not</b> be able to recover this room or any of its associated recordings.</p> <p><%= t("modal.delete_room.warning").html_safe %></p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -4,18 +4,22 @@
<div class="modal-body"> <div class="modal-body">
<div class="card-body p-6"> <div class="card-body p-6">
<div class="card-title"> <div class="card-title">
<h3>Login</h3> <h3><%= t("login") %></h3>
</div> </div>
<% unless configured_providers.length.zero? %> <% unless configured_providers.length.zero? %>
<% configured_providers.each do |provider| %> <% configured_providers.each do |provider| %>
<%= link_to omniauth_login_url(provider), class: "btn btn-pill btn-#{provider} btn-block" do %> <%= link_to omniauth_login_url(provider), class: "btn btn-pill btn-#{provider} btn-block" do %>
<i class="fab fa-<%= provider %>"></i>&ensp;<%= "Login with #{provider.capitalize}" %> <i class="fab fa-<%= provider %>"></i>&ensp;<%= t("modal.login.with", provider: provider.capitalize) %>
<% end %> <% end %>
<% end %> <% end %>
<div class="or-line my-6"> <div class="or-line my-6">
<div><span class="text-uppercase">or</span></div> <div>
<span class="text-uppercase">
<%= t("modal.login.or") %>
</span>
</div>
</div> </div>
<% end %> <% end %>
@ -25,7 +29,7 @@
<span class="input-icon-addon"> <span class="input-icon-addon">
<i class="fas fa-at"></i> <i class="fas fa-at"></i>
</span> </span>
<%= f.text_field :email, class: "form-control", placeholder: "Email", value: "" %> <%= f.text_field :email, class: "form-control", placeholder: t("email"), value: "" %>
</div> </div>
</div> </div>
@ -34,12 +38,12 @@
<span class="input-icon-addon"> <span class="input-icon-addon">
<i class="fas fa-key"></i> <i class="fas fa-key"></i>
</span> </span>
<%= f.password_field :password, class: "form-control", placeholder: "Password", value: "" %> <%= f.password_field :password, class: "form-control", placeholder: t("password"), value: "" %>
</div> </div>
</div> </div>
<div class="form-footer"> <div class="form-footer">
<%= f.submit "Login", class: "btn btn-outline-primary btn-block btn-pill" %> <%= f.submit t("login"), class: "btn btn-outline-primary btn-block btn-pill" %>
</div> </div>
<% end %> <% end %>
</div> </div>

View File

@ -3,24 +3,24 @@
<div class="form-group"> <div class="form-group">
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<%= f.label "Fullname", class: "form-label" %> <%= f.label t("settings.account.fullname"), class: "form-label" %>
<div class="input-icon"> <div class="input-icon">
<%= f.text_field :name, class: "form-control #{form_is_invalid?(@user, :name)}", placeholder: "Fullname" %> <%= f.text_field :name, class: "form-control #{form_is_invalid?(@user, :name)}", placeholder: t("settings.account.fullname") %>
</div> </div>
</div> </div>
<div class="col-6"> <div class="col-6">
<%= f.label "Email", class: "form-label" %> <%= f.label t("email"), class: "form-label" %>
<div class="input-icon"> <div class="input-icon">
<%= f.text_field :email, class: "form-control #{form_is_invalid?(@user, :email)}", placeholder: "Email" %> <%= f.text_field :email, class: "form-control #{form_is_invalid?(@user, :email)}", placeholder: t("email") %>
</div> </div>
</div> </div>
</div> </div>
<br> <br>
<%= f.label "Provider", class: "form-label" %> <%= f.label t("settings.account.provider"), class: "form-label" %>
<%= f.text_field :provider, class: "form-control", readonly: "" %> <%= f.text_field :provider, class: "form-control", readonly: "" %>
<%= f.label "Image", class: "form-label mt-5" %> <%= f.label t("settings.account.image"), class: "form-label mt-5" %>
<div class="row"> <div class="row">
<div class="col-2"> <div class="col-2">
<% if current_user.image.blank? %> <% if current_user.image.blank? %>
@ -30,11 +30,11 @@
<% end %> <% end %>
</div> </div>
<div class="col-10 mt-5"> <div class="col-10 mt-5">
<%= f.text_field :image, class: "form-control #{form_is_invalid?(@user, :image)}", placeholder: "Profile Image URL" %> <%= f.text_field :image, class: "form-control #{form_is_invalid?(@user, :image)}", placeholder: t("settings.account.image_url") %>
</div> </div>
</div> </div>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<%= f.submit "Update", class: "btn btn-primary float-right" %> <%= f.submit t("update"), class: "btn btn-primary float-right" %>
</div> </div>
<% end %> <% end %>

View File

@ -1,7 +1,7 @@
<div class="form-group"> <div class="form-group">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<center>Customization not currently supported.</center> <center><%= t("settings.design.not_supported") %></center>
</div> </div>
</div> </div>
</div> </div>

View File

@ -3,18 +3,18 @@
<div class="form-group"> <div class="form-group">
<div class="row"> <div class="row">
<div class="col-8"> <div class="col-8">
<%= f.label "Old Password", class: "form-label" %> <%= f.label t("settings.password.old"), class: "form-label" %>
<%= f.password_field :password, class: "form-control #{form_is_invalid?(@user, :password)}" %> <%= f.password_field :password, class: "form-control #{form_is_invalid?(@user, :password)}" %>
<br> <br>
<%= f.label "New Password", class: "form-label" %> <%= f.label t("settings.password.new"), class: "form-label" %>
<%= f.password_field :new_password, class: "form-control #{form_is_invalid?(@user, :password)}" %> <%= f.password_field :new_password, class: "form-control #{form_is_invalid?(@user, :password)}" %>
<br> <br>
<%= f.label "New Password Confirmation", class: "form-label" %> <%= f.label t("settings.password.confirmation"), class: "form-label" %>
<%= f.password_field :password_confirmation, class: "form-control #{form_is_invalid?(@user, :password_confirmation)}" %> <%= f.password_field :password_confirmation, class: "form-control #{form_is_invalid?(@user, :password_confirmation)}" %>
</div> </div>
</div> </div>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<%= f.submit "Update", class: "btn btn-primary float-right" %> <%= f.submit t("update"), class: "btn btn-primary float-right" %>
</div> </div>
<% end %> <% end %>

View File

@ -1,26 +1,26 @@
<div class="container mt-8"> <div class="container mt-8">
<%= render "shared/components/subtitle", subtitle: "Settings", search: false %> <%= render "shared/components/subtitle", subtitle: t("settings.title"), search: false %>
<div class="row"> <div class="row">
<div class="col-lg-3 mb-4"> <div class="col-lg-3 mb-4">
<div class="list-group list-group-transparent mb-0"> <div class="list-group list-group-transparent mb-0">
<button id="account" class="list-group-item list-group-item-action setting-btn active"> <button id="account" class="list-group-item list-group-item-action setting-btn active">
<span class="icon mr-3"><i class="fas fa-user"></i></span>Account <span class="icon mr-3"><i class="fas fa-user"></i></span><%= t("settings.account.title") %>
</button> </button>
<% if @user.social_uid.nil? %> <% if @user.social_uid.nil? %>
<button id="password" class="list-group-item list-group-item-action setting-btn"> <button id="password" class="list-group-item list-group-item-action setting-btn">
<span class="icon mr-3"><i class="fas fa-lock"></i></span>Password <span class="icon mr-3"><i class="fas fa-lock"></i></span><%= t("settings.password.title") %>
</button> </button>
<% end %> <% end %>
<button id="design" class="list-group-item list-group-item-action setting-btn"> <button id="design" class="list-group-item list-group-item-action setting-btn">
<span class="icon mr-3"><i class="fas fa-edit"></i></span>Design <span class="icon mr-3"><i class="fas fa-edit"></i></span><%= t("settings.design.title") %>
</button> </button>
</div> </div>
<% if @user.errors.any? %> <% if @user.errors.any? %>
<h5 class="mt-8">Errors:</h5> <h5 class="mt-8"><%= t("errors.title") %>:</h5>
<ul> <ul>
<% @user.errors.full_messages.each do |err| %> <% @user.errors.full_messages.each do |err| %>
<li class="text-danger"><%= err %>.</li> <li class="text-danger"><%= err %>.</li>
@ -35,13 +35,13 @@
<div class="col-lg-9"> <div class="col-lg-9">
<%= render "shared/settings/setting_view", setting_id: "account", setting_title: "Update your Account Info" %> <%= render "shared/settings/setting_view", setting_id: "account", setting_title: t("settings.account.subtitle") %>
<% if @user.social_uid.nil? %> <% if @user.social_uid.nil? %>
<%= render "shared/settings/setting_view", setting_id: "password", setting_title: "Change your Password" %> <%= render "shared/settings/setting_view", setting_id: "password", setting_title: t("settings.password.subtitle") %>
<% end %> <% end %>
<%= render "shared/settings/setting_view", setting_id: "design", setting_title: "Customize GreenLight" %> <%= render "shared/settings/setting_view", setting_id: "design", setting_title: t("settings.design.subtitle") %>
</div> </div>
</div> </div>
</div> </div>

View File

@ -3,33 +3,33 @@
<div class="col col-4 offset-4 mx-auto"> <div class="col col-4 offset-4 mx-auto">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h4 class="mt-2">Create an Account</h4> <h4 class="mt-2"><%= t("signup.subtitle") %></h4>
</div> </div>
<div class="card-body"> <div class="card-body">
<%= form_for @user, url: create_user_path, method: :post do |f| %> <%= form_for @user, url: create_user_path, method: :post do |f| %>
<div class="form-group"> <div class="form-group">
<%= f.label "Fullname", class: "form-label" %> <%= f.label t("settings.account.fullname"), class: "form-label" %>
<%= f.text_field :name, class: "form-control #{form_is_invalid?(@user, :name)}", placeholder: "Fullname" %> <%= f.text_field :name, class: "form-control #{form_is_invalid?(@user, :name)}", placeholder: t("settings.account.fullname") %>
<div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:name).first %></div> <div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:name).first %></div>
</div> </div>
<div class="form-group"> <div class="form-group">
<%= f.label "Email", class: "form-label" %> <%= f.label t("email"), class: "form-label" %>
<%= f.text_field :email, class: "form-control #{form_is_invalid?(@user, :email)}", placeholder: "Email" %> <%= f.text_field :email, class: "form-control #{form_is_invalid?(@user, :email)}", placeholder: t("email") %>
<div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:email).first %></div> <div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:email).first %></div>
</div> </div>
<div class="form-group"> <div class="form-group">
<%= f.label "Password", class: "form-label" %> <%= f.label t("password"), class: "form-label" %>
<%= f.password_field :password, class: "form-control #{form_is_invalid?(@user, :password)}", placeholder: "Password" %> <%= f.password_field :password, class: "form-control #{form_is_invalid?(@user, :password)}", placeholder: t("password") %>
<div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:password).first %></div> <div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:password).first %></div>
</div> </div>
<div class="form-group"> <div class="form-group">
<%= f.label "Password Confirmation", class: "form-label" %> <%= f.label t("signup.password_confirm"), class: "form-label" %>
<%= f.password_field :password_confirmation, class: "form-control #{form_is_invalid?(@user, :password_confirmation)}", placeholder: "Password Confirmation" %> <%= f.password_field :password_confirmation, class: "form-control #{form_is_invalid?(@user, :password_confirmation)}", placeholder: t("signup.password_confirm") %>
<div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:password_confirmation).first %></div> <div class="invalid-feedback d-block"><%= @user.errors.full_messages_for(:password_confirmation).first %></div>
</div> </div>
<div class="card-footer"> <div class="card-footer">
<%= f.submit "Sign up", class: "btn btn-primary float-right ml-2" %> <%= f.submit t("signup.title"), class: "btn btn-primary float-right ml-2" %>
<%= link_to "Cancel", root_path, class: "btn btn-danger float-right ml-2" %> <%= link_to t("cancel"), root_path, class: "btn btn-danger float-right ml-2" %>
</div> </div>
<% end %> <% end %>
</div> </div>

View File

@ -2,14 +2,14 @@
<div class="col-md-8 offset-2"> <div class="col-md-8 offset-2">
<div class="card"> <div class="card">
<div class="card-header"> <div class="card-header">
<h3 class="card-title">Terms and Conditions</h3> <h3 class="card-title"><%= t("terms.title") %></h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="terms"> <div class="terms">
<p><%= Rails.configuration.terms %></p> <p><%= Rails.configuration.terms %></p>
</div> </div>
<div class="btn-list mt-4 text-right mt-8"> <div class="btn-list mt-4 text-right mt-8">
<%= button_to "I accept the terms and conditions.", terms_path, params: {accept: true}, class: "btn btn-primary btn-space" %> <%= button_to t("terms.accept"), terms_path, params: {accept: true}, class: "btn btn-primary btn-space" %>
</div> </div>
</form> </form>
</div> </div>

View File

@ -1,23 +1,124 @@
# Files in the config/locales directory are used for internationalization # English (en) locale.
# and are automatically loaded by Rails. If you want to use locales other
# than English, add the necessary files in this directory.
#
# To use the locales, use `I18n.t`:
#
# I18n.t 'hello'
#
# In views, this is aliased to just `t`:
#
# <%= t('hello') %>
#
# To use a different locale, set it with `I18n.locale`:
#
# I18n.locale = :es
#
# This would use the information in config/locales/es.yml.
#
# To learn more, please read the Rails Internationalization guide
# available at http://guides.rubyonrails.org/i18n.html.
en: en:
hello: "Hello world" bigbluebutton: BigBlueButton
cancel: Cancel
copy: Copy
delete: Delete
docs: Documentation
email: Email
enter_your_name: Enter your name!
errors:
internal:
message: Oh no! Looks like something went wrong on our end.
help: The error has been logged, we'll take a look!
migration_error:
contact_admin: If you are not an administrator, please contact one.
continue: I'd like to stay using 1.0.
notice: >
Greenlight encountered a database migration error.<br>
This may be because you haven't updated to Greenlight 2.0.
not_found:
message: Whoops! Looks like we can't find that.
help: Is it possible its been removed?
title: Errors
unprocessable:
message: Oops! Request is unprocessable.
help: Unforunately this isn't a valid request.
features:
title: Features
rooms: Personalized Rooms
recordings: Recording Management
designs: Custom Designs
footer:
powered_by: Powered by %{href}.
go_back: Go back
greenlight: Greenlight
header:
create_room: Create Room
dropdown:
help: Need help?
home: Home room
settings: Settings
signout: Sign out
landing:
about: A simple front end for your BigBlueButton Open Source Web Conferencing Server.
welcome: Welcome to Greenlight.
video: Watch a tutorial on using Greenlight
upgrade: Show me how to upgrade to 2.0!
version: We've released a new version of Greenlight, but your database isn't compatible.
login: Login
modal:
create_room:
auto_join: Automatically join me into the room.
free_delete: You will be free to delete this room at any time.
name_placeholder: Enter a room name...
not_blank: Room name cannot be blank.
title: Create New Room
delete_room:
confirm: Are you sure you want to delete %{room}?
delete: I'm sure, delete this room.
keep: On second thought, I'll keep it.
warning: You will <b>not</b> be able to recover this room or any of its associated recordings.
login:
or: or
with: Login with %{provider}
password: Password
recording:
email: Email Recording
no_recordings: This room has no %{inject}recordings.
recorded_on: Recorded on %{date}
table:
name: Name
thumbnails: Thumbnails
length: Length
users: Users
visibility: Visibility
formats: Formats
visibility:
public: Public
unlisted: Unlisted
room:
invited: You have been inivited to join
invite_participants: Invite Participants
join: Join
last_session: Last session on %{session}
owner: Owner
no_sessions: This room has no sessions, yet!
recordings: Recordings
sessions: Sessions
settings: Room Settings
start: Start
wait:
message: Oops! The meeting hasn't started yet.
auto: You will automatically join when the meeting starts.
settings:
account:
fullname: Fullname
provider: Provider
image: Image
image_url: Profile Image URL
subtitle: Update your Account Info
title: Account
design:
not_supported: Customization not currently supported.
subtitle: Customize Greenlight
title: Design
password:
confirmation: New Password Confirmation
new: New Password
old: Old Password
subtitle: Change your Password
title: Password
title: Settings
signup:
password_confirm: Password Confirmation
subtitle: Create an Account
title: Signup
terms:
accept: I accept the terms and conditions.
title: Terms and Conditions
test_install: >
This deployment is using a pre-configured testing server, you should replace this with your own.
For details, see the %{href}.
update: Update