diff --git a/Gemfile b/Gemfile
index 47ce2f1c..a79eeead 100644
--- a/Gemfile
+++ b/Gemfile
@@ -56,6 +56,9 @@ gem 'bigbluebutton-api-ruby'
gem 'bootstrap', '~> 4.1.1'
gem 'tabler-rubygem'
+# For detecting the users preferred language.
+gem 'http_accept_language'
+
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
diff --git a/Gemfile.lock b/Gemfile.lock
index 9b2ec5b9..0bdf6cc1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -83,6 +83,7 @@ GEM
globalid (0.4.1)
activesupport (>= 4.2.0)
hashie (3.5.7)
+ http_accept_language (2.1.1)
i18n (1.0.1)
concurrent-ruby (~> 1.0)
jaro_winkler (1.5.1)
@@ -274,6 +275,7 @@ DEPENDENCIES
dotenv-rails
factory_bot_rails
faker
+ http_accept_language
jbuilder (~> 2.5)
jquery-rails
listen (~> 3.0.5)
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 2f720083..e7a50839 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -6,16 +6,22 @@ class ApplicationController < ActionController::Base
include SessionsHelper
before_action :migration_error?
+ before_action :set_locale
+
+ protect_from_forgery with: :exception
+
+ MEETING_NAME_LIMIT = 90
+ USER_NAME_LIMIT = 30
# Show an information page when migration fails and there is a version error.
def migration_error?
render :migration_error unless ENV["DB_MIGRATE_FAILED"].blank?
end
- protect_from_forgery with: :exception
-
- MEETING_NAME_LIMIT = 90
- USER_NAME_LIMIT = 30
+ # Sets the appropriate locale.
+ def set_locale
+ I18n.locale = http_accept_language.language_region_compatible_from(I18n.available_locales)
+ end
def meeting_name_limit
MEETING_NAME_LIMIT
@@ -58,12 +64,12 @@ class ApplicationController < ActionController::Base
# Default, unconfigured meeting options.
def default_meeting_options
- invite_msg = "To invite someone to the meeting, send them this link:"
+ invite_msg = I18n.t("invite_message")
{
user_is_moderator: false,
meeting_logout_url: request.base_url + logout_room_path(@room),
meeting_recorded: true,
- moderator_message: "#{invite_msg}\n\n #{request.base_url + room_path(@room)}",
+ moderator_message: "#{invite_msg}\n\n#{request.base_url + room_path(@room)}",
}
end
end
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
index 41a623d8..1a5a5f3e 100644
--- a/app/controllers/sessions_controller.rb
+++ b/app/controllers/sessions_controller.rb
@@ -1,8 +1,6 @@
# frozen_string_literal: true
class SessionsController < ApplicationController
- LOGIN_FAILED = "Login failed due to invalid credentials. Are you sure you typed them correctly?"
-
# GET /users/logout
def destroy
logout
@@ -15,7 +13,7 @@ class SessionsController < ApplicationController
if user.try(:authenticate, session_params[:password])
login(user)
else
- redirect_to root_path, notice: LOGIN_FAILED
+ redirect_to root_path, notice: I18n.t("login_failed")
end
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 869df464..877cc49e 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -59,14 +59,14 @@ class UsersController < ApplicationController
if errors.empty? && @user.save
# Notify the user that their account has been updated.
- redirect_to edit_user_path(@user), notice: "Information successfully updated."
+ redirect_to edit_user_path(@user), notice: I18n.t("info_update_success")
else
# Append custom errors.
errors.each { |k, v| @user.errors.add(k, v) }
render :edit
end
elsif @user.update_attributes(user_params)
- redirect_to edit_user_path(@user), notice: "Information successfully updated."
+ redirect_to edit_user_path(@user), notice: I18n.t("info_update_success")
else
render :edit
end
diff --git a/app/views/application/migration_error.html.erb b/app/views/application/migration_error.html.erb
index 8d90ff3d..06d9d420 100644
--- a/app/views/application/migration_error.html.erb
+++ b/app/views/application/migration_error.html.erb
@@ -2,14 +2,14 @@
-
Greenlight encountered a database migration error. This may be because you haven't updated to Greenlight 2.0.
-
If you are not an administrator, please contact one.
-
We've released a new version of Greenlight, but your database isn't compatible.
+
<%= t("errors.migration_error.notice") %>
+
<%= t("errors.migration_error.contact_admin") %>
+
<%= t("errors.migration_error.version") %>
- Show me how to upgrade to 2.0!
+ <%= t("errors.migration_error.upgrade") %>
- I'd like to stay using 1.0.
+ <%= t("errors.migration_error.continue") %>
diff --git a/app/views/errors/internal_error.html.erb b/app/views/errors/internal_error.html.erb
index c0cd592b..ddf4c539 100644
--- a/app/views/errors/internal_error.html.erb
+++ b/app/views/errors/internal_error.html.erb
@@ -2,10 +2,10 @@
500
-
Oh no! Looks like something went wrong on our end.
-
The error has been logged, we'll take a look!
+
<%= t("errors.internal.message") %>
+
<%= t("errors.internal.help") %>
- Go back
+ <%= t("go_back") %>
diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb
index 5b975728..82f6b7f1 100644
--- a/app/views/errors/not_found.html.erb
+++ b/app/views/errors/not_found.html.erb
@@ -2,10 +2,10 @@
404
-
Whoops! Looks like we can't find that.
-
Is it possible its been removed?
+
<%= t("errors.not_found.message") %>
+
<%= t("errors.not_found.help") %>
- Go back
+ <%= t("go_back") %>
diff --git a/app/views/errors/unprocessable.html.erb b/app/views/errors/unprocessable.html.erb
index bbe004d5..67958f07 100644
--- a/app/views/errors/unprocessable.html.erb
+++ b/app/views/errors/unprocessable.html.erb
@@ -2,10 +2,10 @@
422
-
Oops! Request is unprocessable.
-
Unforunately this isn't a valid request.
+
<%= t("errors.unprocessable.message") %>
+
<%= t("errors.unprocessable.help") %>
- Go back
+ <%= t("go_back") %>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index b814347d..bf5a174d 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -1,7 +1,7 @@
- Greenlight
+ <%= t("greenlight") %>
<%= csrf_meta_tags %>
@@ -19,15 +19,14 @@
-
<%= render "shared/header" %>
<% if bigbluebutton_endpoint_default? %>
<%= render "shared/error_banner" do %>
-
This deployment is using a pre-configured testing server,
- you should replace this with your own.
- For details, see the <%= link_to "documentation", "http://docs.bigbluebutton.org/install/greenlight.html#installing-greenlight", target: "_blank" %>.
+
<%= t("test_install",
+ href: link_to(t("docs").downcase, "http://docs.bigbluebutton.org/install/greenlight-v2.html#2-install-greenlight", target: "_blank")
+ ).html_safe %>
<% end %>
<% end %>
@@ -42,7 +41,6 @@
<% if current_user %>
<%= render "shared/modals/create_room_modal" %>
<% end %>
-
<%= render "shared/footer" %>
diff --git a/app/views/main/index.html.erb b/app/views/main/index.html.erb
index 57ca2794..cd25f5c3 100644
--- a/app/views/main/index.html.erb
+++ b/app/views/main/index.html.erb
@@ -9,11 +9,11 @@
-
Welcome to Greenlight.
- A simple front end for your BigBlueButton Open Source Web Conferencing Server.
+ <%= t("landing.welcome") %>
+ <%= t("landing.about") %>
<%= link_to "https://youtu.be/Hso8yLzkqj8", class: "p-3", target: "_blank" do %>
- Watch a tutorial on using Greenlight
+ <%= t("landing.video") %>
<% end %>
diff --git a/app/views/rooms/join.html.erb b/app/views/rooms/join.html.erb
index caa6b7ac..bff59dd1 100644
--- a/app/views/rooms/join.html.erb
+++ b/app/views/rooms/join.html.erb
@@ -4,11 +4,11 @@
<%= f.text_field :join_name,
required: true,
class: "form-control join-form",
- placeholder: "Enter your name!",
+ placeholder: t("enter_your_name"),
value: "#{current_user ? current_user.name : ''}",
readonly: !current_user.nil? %>
- <%= f.submit "Join", class: "btn btn-primary px-7 join-form" %>
+ <%= f.submit t("room.join"), class: "btn btn-primary px-7 join-form" %>
<% end %>
diff --git a/app/views/rooms/show.html.erb b/app/views/rooms/show.html.erb
index f48df08c..67e17c6e 100644
--- a/app/views/rooms/show.html.erb
+++ b/app/views/rooms/show.html.erb
@@ -7,8 +7,8 @@
<% end %>
- <%= @room.sessions %> Sessions | <%= @recordings.length %> Recordings
- Invite Participants
+ <%= @room.sessions %> <%= t("room.sessions") %> | <%= @recordings.length %> <%= t("room.recordings") %>
+ <%= t("room.invite_participants") %>
<% 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 %>
- <%= 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 %>
diff --git a/app/views/rooms/wait.html.erb b/app/views/rooms/wait.html.erb
index 83f01a7e..4857ab3f 100644
--- a/app/views/rooms/wait.html.erb
+++ b/app/views/rooms/wait.html.erb
@@ -1,8 +1,8 @@
<%= render 'shared/room_event' do %>
-
Oops! The meeting hasn't started yet.
- You will automatically join when the meeting starts.
+ <%= t("room.wait.message") %>
+ <%= t("room.wait.auto") %>
diff --git a/app/views/shared/_features.html.erb b/app/views/shared/_features.html.erb
index cd9b1f8e..02ef73b2 100644
--- a/app/views/shared/_features.html.erb
+++ b/app/views/shared/_features.html.erb
@@ -1,4 +1,4 @@
-
Features
+
<%= t("features.title") %>
@@ -6,19 +6,19 @@
-
Personalized Rooms
+ <%= t("features.rooms") %>
-
Recording Management
+ <%= t("features.recordings") %>
-
Custom Designs
+ <%= t("features.designs") %>
diff --git a/app/views/shared/_footer.html.erb b/app/views/shared/_footer.html.erb
index 686d95ec..f3f55c2a 100644
--- a/app/views/shared/_footer.html.erb
+++ b/app/views/shared/_footer.html.erb
@@ -1,3 +1,3 @@
diff --git a/app/views/shared/_header.html.erb b/app/views/shared/_header.html.erb
index 5720dd70..2c535060 100644
--- a/app/views/shared/_header.html.erb
+++ b/app/views/shared/_header.html.erb
@@ -9,7 +9,7 @@
<% if current_user %>
- Create Room
+ <%= t("header.create_room") %>
<% else %>
- <% 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" %>
+ <% if Rails.configuration.omniauth_bn_launcher && !current_user %>
+ <%= link_to t("login"), "#{Rails.configuration.relative_url_root}/auth/bn_launcher", :class => "btn btn-pill btn-outline-primary mx-2" %>
<% 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 %>
<% 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 %>
<%= render "shared/modals/login_modal" %>
diff --git a/app/views/shared/_room_event.html.erb b/app/views/shared/_room_event.html.erb
index 5236bc43..3108c266 100644
--- a/app/views/shared/_room_event.html.erb
+++ b/app/views/shared/_room_event.html.erb
@@ -2,7 +2,7 @@
-
You have been invited to join
+ <%= t("room.invited") %>
<%= @room.name %>
@@ -15,7 +15,7 @@
<% else %>
<% end %>
-
<%= @room.owner.name %> (Owner)
+
<%= @room.owner.name %> (<%= t("room.invited") %>)
diff --git a/app/views/shared/_sessions.html.erb b/app/views/shared/_sessions.html.erb
index b218d5b7..5609f538 100644
--- a/app/views/shared/_sessions.html.erb
+++ b/app/views/shared/_sessions.html.erb
@@ -1,7 +1,7 @@
- <%= 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 %>
@@ -9,12 +9,12 @@
- Name
- Thumbnails
- Length
- Users
- Visibility
- Formats
+ <%= t("recording.table.name") %>
+ <%= t("recording.table.thumbnails") %>
+ <%= t("recording.table.length") %>
+ <%= t("recording.table.users") %>
+ <%= t("recording.table.visibility") %>
+ <%= t("recording.table.formats") %>
<% unless only_public %>
<% end %>
@@ -24,7 +24,7 @@
<% if recordings.empty? %>
- <%= "This room has no #{(only_public ? "public " : "")} recordings." %>
+ <%= t("recording.no_recordings", inject: only_public ? t("recording.visibility.public").downcase + " " : "") %>
<% else %>
@@ -39,7 +39,7 @@
-
+
diff --git a/app/views/shared/components/_public_recording_row.html.erb b/app/views/shared/components/_public_recording_row.html.erb
index 7350467f..3b272628 100644
--- a/app/views/shared/components/_public_recording_row.html.erb
+++ b/app/views/shared/components/_public_recording_row.html.erb
@@ -2,7 +2,7 @@
<%= recording[:name] %>
- Recorded on <%= recording_date(recording[:startTime]) %>
+ <%= t("recording.recorded_on", date: recording_date(recording[:startTime])) %>
@@ -15,22 +15,22 @@
- Length
+ <%= t("recording.table.length") %>
<%= recording_length(recording[:startTime], recording[:endTime]) %>
- Users
+ <%= t("recording.table.users") %>
<%= recording[:participants] %>
<% if recording[:metadata][:"gl-listed"] == "true" %>
- Public
+ <%= t("recording.visibility.public") %>
<% else %>
- Unlisted
+ <%= t("recording.visibility.unlisted") %>
<% end %>
diff --git a/app/views/shared/components/_recording_row.html.erb b/app/views/shared/components/_recording_row.html.erb
index 887021ad..c1576f0e 100644
--- a/app/views/shared/components/_recording_row.html.erb
+++ b/app/views/shared/components/_recording_row.html.erb
@@ -2,7 +2,7 @@
<%= recording[:name] %>
- Recorded on <%= recording_date(recording[:startTime]) %>
+ <%= t("recording.recorded_on", date: recording_date(recording[:startTime])) %>
@@ -15,29 +15,29 @@
- Length
+ <%= t("recording.table.length") %>
<%= recording_length(recording[:startTime], recording[:endTime]) %>
- Users
+ <%= t("recording.table.users") %>
<%= recording[:participants] %>
<% if recording[:metadata][:"gl-listed"] == "true" %>
- Public
+ <%= t("recording.visibility.public") %>
<% else %>
- Unlisted
+ <%= t("recording.visibility.unlisted") %>
<% end %>
@@ -51,10 +51,10 @@
diff --git a/app/views/shared/components/_room_block.html.erb b/app/views/shared/components/_room_block.html.erb
index 0a796d84..24480fea 100644
--- a/app/views/shared/components/_room_block.html.erb
+++ b/app/views/shared/components/_room_block.html.erb
@@ -15,9 +15,9 @@
<%= room.name %>
<% if room.sessions > 0 %>
- Last session on <%= recording_date(room.last_session) %>
+ <%= t("room.last_session", session: recording_date(room.last_session)) %>
<% else %>
- This room has no sessions, yet!
+ <%= t("room.no_sessions") %>
<% end %>
@@ -28,11 +28,11 @@
diff --git a/app/views/shared/modals/_create_room_modal.html.erb b/app/views/shared/modals/_create_room_modal.html.erb
index bcf9e7c5..d5436b3d 100644
--- a/app/views/shared/modals/_create_room_modal.html.erb
+++ b/app/views/shared/modals/_create_room_modal.html.erb
@@ -4,7 +4,7 @@
-
Create New Room
+ <%= t("modal.create_room.title") %>
<%= form_for(:room, url: rooms_path) do |f| %>
@@ -12,13 +12,13 @@
- <%= f.text_field :name, id: "room-name", class: "form-control", value: "", placeholder: "Enter a room name...", autocomplete: :off %>
-
Room name cannot be blank.
+ <%= f.text_field :name, id: "room-name", class: "form-control", value: "", placeholder: t("modal.create_room.name_placeholder"), autocomplete: :off %>
+
<%= t("modal.create_room.not_blank") %>
<%= f.check_box :auto_join, class: "custom-switch-input", checked: false %>
- Automatically join me into the room.
+ <%= t("modal.create_room.auto_join") %>
diff --git a/app/views/shared/modals/_delete_room_modal.html.erb b/app/views/shared/modals/_delete_room_modal.html.erb
index 5ce6854f..294262cd 100644
--- a/app/views/shared/modals/_delete_room_modal.html.erb
+++ b/app/views/shared/modals/_delete_room_modal.html.erb
@@ -4,20 +4,20 @@
-
Are you sure you want to delete <%= room.name %>?
+ <%= t("modal.delete_room.confirm", room: room.name) %>
- On second thought, I'll keep it.
+ <%= t("modal.delete_room.keep") %>
<%= 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 %>
diff --git a/app/views/shared/modals/_login_modal.html.erb b/app/views/shared/modals/_login_modal.html.erb
index 5896d4fb..6d63cfe3 100644
--- a/app/views/shared/modals/_login_modal.html.erb
+++ b/app/views/shared/modals/_login_modal.html.erb
@@ -4,18 +4,22 @@
-
Login
+ <%= t("login") %>
<% unless configured_providers.length.zero? %>
<% configured_providers.each do |provider| %>
<%= link_to omniauth_login_url(provider), class: "btn btn-pill btn-#{provider} btn-block" do %>
-
<%= "Login with #{provider.capitalize}" %>
+
<%= t("modal.login.with", provider: provider.capitalize) %>
<% end %>
<% end %>
-
or
+
+
+ <%= t("modal.login.or") %>
+
+
<% end %>
@@ -25,7 +29,7 @@
- <%= f.text_field :email, class: "form-control", placeholder: "Email", value: "" %>
+ <%= f.text_field :email, class: "form-control", placeholder: t("email"), value: "" %>
@@ -34,12 +38,12 @@
- <%= f.password_field :password, class: "form-control", placeholder: "Password", value: "" %>
+ <%= f.password_field :password, class: "form-control", placeholder: t("password"), value: "" %>
<% end %>
diff --git a/app/views/shared/settings/_account.html.erb b/app/views/shared/settings/_account.html.erb
index cc9669a5..f4505da1 100644
--- a/app/views/shared/settings/_account.html.erb
+++ b/app/views/shared/settings/_account.html.erb
@@ -3,24 +3,24 @@
<% end %>
diff --git a/app/views/shared/settings/_design.html.erb b/app/views/shared/settings/_design.html.erb
index 7e8afcdf..c69ea908 100644
--- a/app/views/shared/settings/_design.html.erb
+++ b/app/views/shared/settings/_design.html.erb
@@ -1,7 +1,7 @@
diff --git a/app/views/shared/settings/_password.html.erb b/app/views/shared/settings/_password.html.erb
index 43e846e0..3dc486b2 100644
--- a/app/views/shared/settings/_password.html.erb
+++ b/app/views/shared/settings/_password.html.erb
@@ -3,18 +3,18 @@
<% end %>
diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb
index 27240083..11854729 100644
--- a/app/views/users/edit.html.erb
+++ b/app/views/users/edit.html.erb
@@ -1,26 +1,26 @@
- <%= render "shared/components/subtitle", subtitle: "Settings", search: false %>
+ <%= render "shared/components/subtitle", subtitle: t("settings.title"), search: false %>
- Account
+ <%= t("settings.account.title") %>
<% if @user.social_uid.nil? %>
- Password
+ <%= t("settings.password.title") %>
<% end %>
- Design
+ <%= t("settings.design.title") %>
-
+
<% if @user.errors.any? %>
-
Errors:
+
<%= t("errors.title") %>:
<% @user.errors.full_messages.each do |err| %>
<%= err %>.
@@ -35,13 +35,13 @@
- <%= 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? %>
- <%= 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 %>
- <%= 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") %>
diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb
index 06b3168d..55f5d378 100644
--- a/app/views/users/new.html.erb
+++ b/app/views/users/new.html.erb
@@ -3,33 +3,33 @@
<%= form_for @user, url: create_user_path, method: :post do |f| %>
<% end %>
diff --git a/app/views/users/terms.html.erb b/app/views/users/terms.html.erb
index e00d52e2..a0220725 100644
--- a/app/views/users/terms.html.erb
+++ b/app/views/users/terms.html.erb
@@ -2,14 +2,14 @@
<%= Rails.configuration.terms %>
- <%= 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" %>
diff --git a/config/application.rb b/config/application.rb
index 3216ccd4..b82dcc0f 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -17,9 +17,16 @@ module Greenlight
# Use custom error routes.
config.exceptions_app = routes
+ # Configure I18n localization.
+ config.i18n.available_locales = %w(en)
+ config.i18n.default_locale = "en"
+
+ # Check if a loadbalancer is configured.
config.loadbalanced_configuration = ENV["LOADBALANCER_ENDPOINT"].present? && ENV["LOADBALANCER_SECRET"].present?
+
# The default callback url that bn launcher will redirect to
config.gl_callback_url = ENV["GL_CALLBACK_URL"]
+
# Setup BigBlueButton configuration.
if config.loadbalanced_configuration
# Fetch credentials from a loadbalancer based on provider.
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 06539571..0ac42048 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1,23 +1,127 @@
-# Files in the config/locales directory are used for internationalization
-# 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.
+# English (en) locale.
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.
+ 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
+ info_update_success: Information successfully updated.
+ invite_message: "To invite someone to the meeting, send them this link:"
+ 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
+ login_failed: Login failed due to invalid credentials. Are you sure you typed them correctly?
+ 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
not 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