forked from External/greenlight
		
	Merge branch 'master' into translations_en-yml--master_de_DE
This commit is contained in:
		@@ -17,7 +17,7 @@
 | 
				
			|||||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
					# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AccountActivationsController < ApplicationController
 | 
					class AccountActivationsController < ApplicationController
 | 
				
			||||||
  include Verifier
 | 
					  include Emailer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action :ensure_unauthenticated
 | 
					  before_action :ensure_unauthenticated
 | 
				
			||||||
  before_action :find_user
 | 
					  before_action :find_user
 | 
				
			||||||
@@ -46,7 +46,7 @@ class AccountActivationsController < ApplicationController
 | 
				
			|||||||
      flash[:alert] = I18n.t("verify.already_verified")
 | 
					      flash[:alert] = I18n.t("verify.already_verified")
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      begin
 | 
					      begin
 | 
				
			||||||
        @user.send_activation_email(user_verification_link)
 | 
					        send_activation_email(@user)
 | 
				
			||||||
      rescue => e
 | 
					      rescue => e
 | 
				
			||||||
        logger.error "Error in email delivery: #{e}"
 | 
					        logger.error "Error in email delivery: #{e}"
 | 
				
			||||||
        flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))
 | 
					        flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,27 @@
 | 
				
			|||||||
# You should have received a copy of the GNU Lesser General Public License along
 | 
					# You should have received a copy of the GNU Lesser General Public License along
 | 
				
			||||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
					# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module Verifier
 | 
					module Emailer
 | 
				
			||||||
  extend ActiveSupport::Concern
 | 
					  extend ActiveSupport::Concern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Sends account activation email.
 | 
				
			||||||
 | 
					  def send_activation_email(user)
 | 
				
			||||||
 | 
					    @user = user
 | 
				
			||||||
 | 
					    UserMailer.verify_email(@user, user_verification_link, logo_image, user_color).deliver
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Sends password reset email.
 | 
				
			||||||
 | 
					  def send_password_reset_email(user)
 | 
				
			||||||
 | 
					    @user = user
 | 
				
			||||||
 | 
					    UserMailer.password_reset(@user, reset_link, logo_image, user_color).deliver_now
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Returns the link the user needs to click to verify their account
 | 
					  # Returns the link the user needs to click to verify their account
 | 
				
			||||||
  def user_verification_link
 | 
					  def user_verification_link
 | 
				
			||||||
    request.base_url + edit_account_activation_path(token: @user.activation_token, email: @user.email)
 | 
					    request.base_url + edit_account_activation_path(token: @user.activation_token, email: @user.email)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def reset_link
 | 
				
			||||||
 | 
					    request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
@@ -17,6 +17,8 @@
 | 
				
			|||||||
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
					# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PasswordResetsController < ApplicationController
 | 
					class PasswordResetsController < ApplicationController
 | 
				
			||||||
 | 
					  include Emailer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action :disable_password_reset, unless: -> { Rails.configuration.enable_email_verification }
 | 
					  before_action :disable_password_reset, unless: -> { Rails.configuration.enable_email_verification }
 | 
				
			||||||
  before_action :find_user,   only: [:edit, :update]
 | 
					  before_action :find_user,   only: [:edit, :update]
 | 
				
			||||||
  before_action :valid_user, only: [:edit, :update]
 | 
					  before_action :valid_user, only: [:edit, :update]
 | 
				
			||||||
@@ -29,7 +31,7 @@ class PasswordResetsController < ApplicationController
 | 
				
			|||||||
    @user = User.find_by(email: params[:password_reset][:email].downcase)
 | 
					    @user = User.find_by(email: params[:password_reset][:email].downcase)
 | 
				
			||||||
    if @user
 | 
					    if @user
 | 
				
			||||||
      @user.create_reset_digest
 | 
					      @user.create_reset_digest
 | 
				
			||||||
      @user.send_password_reset_email(reset_link)
 | 
					      send_password_reset_email(@user)
 | 
				
			||||||
      flash[:success] = I18n.t("email_sent", email_type: t("reset_password.subtitle"))
 | 
					      flash[:success] = I18n.t("email_sent", email_type: t("reset_password.subtitle"))
 | 
				
			||||||
      redirect_to root_path
 | 
					      redirect_to root_path
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
@@ -78,10 +80,6 @@ class PasswordResetsController < ApplicationController
 | 
				
			|||||||
    redirect_to new_password_reset_url, alert: I18n.t("expired_reset_token") if current_user.password_reset_expired?
 | 
					    redirect_to new_password_reset_url, alert: I18n.t("expired_reset_token") if current_user.password_reset_expired?
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def reset_link
 | 
					 | 
				
			||||||
    request.base_url + edit_password_reset_path(@user.reset_token, email: @user.email)
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Confirms a valid user.
 | 
					  # Confirms a valid user.
 | 
				
			||||||
  def valid_user
 | 
					  def valid_user
 | 
				
			||||||
    unless current_user.authenticated?(:reset, params[:id])
 | 
					    unless current_user.authenticated?(:reset, params[:id])
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,7 @@ class RoomsController < ApplicationController
 | 
				
			|||||||
  before_action :verify_room_ownership, except: [:create, :show, :join, :logout]
 | 
					  before_action :verify_room_ownership, except: [:create, :show, :join, :logout]
 | 
				
			||||||
  before_action :verify_room_owner_verified, only: [:show, :join],
 | 
					  before_action :verify_room_owner_verified, only: [:show, :join],
 | 
				
			||||||
                unless: -> { !Rails.configuration.enable_email_verification }
 | 
					                unless: -> { !Rails.configuration.enable_email_verification }
 | 
				
			||||||
 | 
					  before_action :verify_user_not_admin, only: [:show]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # POST /
 | 
					  # POST /
 | 
				
			||||||
  def create
 | 
					  def create
 | 
				
			||||||
@@ -244,11 +245,15 @@ class RoomsController < ApplicationController
 | 
				
			|||||||
    unless @room.owner.activated?
 | 
					    unless @room.owner.activated?
 | 
				
			||||||
      flash[:alert] = t("room.unavailable")
 | 
					      flash[:alert] = t("room.unavailable")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if current_user
 | 
					      if current_user && !@room.owned_by?(current_user)
 | 
				
			||||||
        redirect_to current_user.main_room
 | 
					        redirect_to current_user.main_room
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
        redirect_to root_path
 | 
					        redirect_to root_path
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def verify_user_not_admin
 | 
				
			||||||
 | 
					    redirect_to admins_path if current_user && current_user&.has_role?(:super_admin)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class UsersController < ApplicationController
 | 
					class UsersController < ApplicationController
 | 
				
			||||||
  include RecordingsHelper
 | 
					  include RecordingsHelper
 | 
				
			||||||
  include Verifier
 | 
					  include Emailer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before_action :find_user, only: [:edit, :update, :destroy]
 | 
					  before_action :find_user, only: [:edit, :update, :destroy]
 | 
				
			||||||
  before_action :ensure_unauthenticated, only: [:new, :create]
 | 
					  before_action :ensure_unauthenticated, only: [:new, :create]
 | 
				
			||||||
@@ -46,7 +46,7 @@ class UsersController < ApplicationController
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # Start email verification and redirect to root.
 | 
					    # Start email verification and redirect to root.
 | 
				
			||||||
    begin
 | 
					    begin
 | 
				
			||||||
      @user.send_activation_email(user_verification_link)
 | 
					      send_activation_email(@user)
 | 
				
			||||||
    rescue => e
 | 
					    rescue => e
 | 
				
			||||||
      logger.error "Error in email delivery: #{e}"
 | 
					      logger.error "Error in email delivery: #{e}"
 | 
				
			||||||
      flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))
 | 
					      flash[:alert] = I18n.t(params[:message], default: I18n.t("delivery_error"))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,15 +19,19 @@
 | 
				
			|||||||
class UserMailer < ApplicationMailer
 | 
					class UserMailer < ApplicationMailer
 | 
				
			||||||
  default from: Rails.configuration.smtp_sender
 | 
					  default from: Rails.configuration.smtp_sender
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def verify_email(user, url)
 | 
					  def verify_email(user, url, image, color)
 | 
				
			||||||
    @user = user
 | 
					    @user = user
 | 
				
			||||||
    @url = url
 | 
					    @url = url
 | 
				
			||||||
 | 
					    @image = image
 | 
				
			||||||
 | 
					    @color = color
 | 
				
			||||||
    mail(to: @user.email, subject: t('landing.welcome'))
 | 
					    mail(to: @user.email, subject: t('landing.welcome'))
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def password_reset(user, url)
 | 
					  def password_reset(user, url, image, color)
 | 
				
			||||||
    @user = user
 | 
					    @user = user
 | 
				
			||||||
    @url = url
 | 
					    @url = url
 | 
				
			||||||
 | 
					    @image = image
 | 
				
			||||||
 | 
					    @color = color
 | 
				
			||||||
    mail to: user.email, subject: t('reset_password.subtitle')
 | 
					    mail to: user.email, subject: t('reset_password.subtitle')
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -103,8 +103,16 @@ class User < ApplicationRecord
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def self.admins_search(string)
 | 
					  def self.admins_search(string)
 | 
				
			||||||
 | 
					    active_database = Rails.configuration.database_configuration[Rails.env]["adapter"]
 | 
				
			||||||
 | 
					    # Postgres requires created_at to be cast to a string
 | 
				
			||||||
 | 
					    created_at_query = if active_database == "postgresql"
 | 
				
			||||||
 | 
					      "created_at::text"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      "created_at"
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    search_query = "name LIKE :search OR email LIKE :search OR username LIKE :search" \
 | 
					    search_query = "name LIKE :search OR email LIKE :search OR username LIKE :search" \
 | 
				
			||||||
                   " OR created_at LIKE :search OR provider LIKE :search"
 | 
					                   " OR #{created_at_query} LIKE :search OR provider LIKE :search"
 | 
				
			||||||
    search_param = "%#{string}%"
 | 
					    search_param = "%#{string}%"
 | 
				
			||||||
    where(search_query, search: search_param)
 | 
					    where(search_query, search: search_param)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
@@ -149,10 +157,6 @@ class User < ApplicationRecord
 | 
				
			|||||||
    email_verified
 | 
					    email_verified
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def send_activation_email(url)
 | 
					 | 
				
			||||||
    UserMailer.verify_email(self, url).deliver
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Sets the password reset attributes.
 | 
					  # Sets the password reset attributes.
 | 
				
			||||||
  def create_reset_digest
 | 
					  def create_reset_digest
 | 
				
			||||||
    self.reset_token = User.new_token
 | 
					    self.reset_token = User.new_token
 | 
				
			||||||
@@ -160,11 +164,6 @@ class User < ApplicationRecord
 | 
				
			|||||||
    update_attribute(:reset_sent_at, Time.zone.now)
 | 
					    update_attribute(:reset_sent_at, Time.zone.now)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Sends password reset email.
 | 
					 | 
				
			||||||
  def send_password_reset_email(url)
 | 
					 | 
				
			||||||
    UserMailer.password_reset(self, url).deliver_now
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Returns true if the given token matches the digest.
 | 
					  # Returns true if the given token matches the digest.
 | 
				
			||||||
  def authenticated?(attribute, token)
 | 
					  def authenticated?(attribute, token)
 | 
				
			||||||
    digest = send("#{attribute}_digest")
 | 
					    digest = send("#{attribute}_digest")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,15 +68,16 @@
 | 
				
			|||||||
                    <td><%= user.email && user.email != "" ? user.email : user.username%></td>
 | 
					                    <td><%= user.email && user.email != "" ? user.email : user.username%></td>
 | 
				
			||||||
                    <td><%= user.provider %></td>
 | 
					                    <td><%= user.provider %></td>
 | 
				
			||||||
                    <td class="text-center">
 | 
					                    <td class="text-center">
 | 
				
			||||||
                      <% if user.has_role? :denied %>
 | 
					                    <% roles = user.roles().pluck(:name) %>
 | 
				
			||||||
 | 
					                      <% if roles.include?("denied")%>
 | 
				
			||||||
                        <div class="user-role btn btn-sm btn-gray-dark">
 | 
					                        <div class="user-role btn btn-sm btn-gray-dark">
 | 
				
			||||||
                          <%= t("roles.banned") %>
 | 
					                          <%= t("roles.banned") %>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                      <% elsif user.has_role? :super_admin %>
 | 
					                      <% elsif roles.include?("super_admin") %>
 | 
				
			||||||
                        <div class="user-role btn btn-sm btn-red">
 | 
					                        <div class="user-role btn btn-sm btn-red">
 | 
				
			||||||
                          <%= t("roles.super_admin") %>
 | 
					                          <%= t("roles.super_admin") %>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                      <% elsif user.has_role? :admin %>
 | 
					                      <% elsif roles.include?("admin") %>
 | 
				
			||||||
                        <div class="user-role btn btn-sm btn-yellow">
 | 
					                        <div class="user-role btn btn-sm btn-yellow">
 | 
				
			||||||
                          <%= t("roles.administrator") %>
 | 
					                          <%= t("roles.administrator") %>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
@@ -87,13 +88,13 @@
 | 
				
			|||||||
                      <% end %>
 | 
					                      <% end %>
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
                    <td>
 | 
					                    <td>
 | 
				
			||||||
                      <% unless user.has_role? :super_admin %>
 | 
					                      <% unless roles.include?("super_admin") %>
 | 
				
			||||||
                        <div class="item-action dropdown">
 | 
					                        <div class="item-action dropdown">
 | 
				
			||||||
                          <a href="javascript:void(0)" data-toggle="dropdown" class="icon">
 | 
					                          <a href="javascript:void(0)" data-toggle="dropdown" class="icon">
 | 
				
			||||||
                            <i class="fas fa-ellipsis-v px-4"></i>
 | 
					                            <i class="fas fa-ellipsis-v px-4"></i>
 | 
				
			||||||
                          </a>
 | 
					                          </a>
 | 
				
			||||||
                          <div class="dropdown-menu dropdown-menu">
 | 
					                          <div class="dropdown-menu dropdown-menu">
 | 
				
			||||||
                            <% if user.has_role? :denied %>
 | 
					                            <% if roles.include?("denied") %>
 | 
				
			||||||
                              <%= button_to admin_unban_path(user_uid: user.uid), class: "dropdown-item" do %>
 | 
					                              <%= button_to admin_unban_path(user_uid: user.uid), class: "dropdown-item" do %>
 | 
				
			||||||
                                <i class="dropdown-icon fas fa-lock-open"></i> <%= t("administrator.users.settings.unban") %>
 | 
					                                <i class="dropdown-icon fas fa-lock-open"></i> <%= t("administrator.users.settings.unban") %>
 | 
				
			||||||
                              <% end %>
 | 
					                              <% end %>
 | 
				
			||||||
@@ -105,11 +106,11 @@
 | 
				
			|||||||
                                <i class="dropdown-icon fas fa-user-minus"></i> <%= t("administrator.users.settings.delete") %>
 | 
					                                <i class="dropdown-icon fas fa-user-minus"></i> <%= t("administrator.users.settings.delete") %>
 | 
				
			||||||
                              </button>
 | 
					                              </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                              <% if user.has_role? :admin %>
 | 
					                              <% if roles.include?("admin") %>
 | 
				
			||||||
                                <%= button_to admin_demote_path(user_uid: user.uid), class: "dropdown-item" do %>
 | 
					                                <%= button_to admin_demote_path(user_uid: user.uid), class: "dropdown-item" do %>
 | 
				
			||||||
                                  <i class="dropdown-icon fas fa-level-down-alt"></i> <%= t("administrator.users.settings.demote") %>
 | 
					                                  <i class="dropdown-icon fas fa-level-down-alt"></i> <%= t("administrator.users.settings.demote") %>
 | 
				
			||||||
                                <% end %>
 | 
					                                <% end %>
 | 
				
			||||||
                              <% elsif user.has_role? :user %>
 | 
					                              <% elsif roles.include?("user") %>
 | 
				
			||||||
                                <%= button_to admin_promote_path(user_uid: user.uid), class: "dropdown-item" do %>
 | 
					                                <%= button_to admin_promote_path(user_uid: user.uid), class: "dropdown-item" do %>
 | 
				
			||||||
                                  <i class="dropdown-icon fas fa-level-up-alt"></i> <%= t("administrator.users.settings.promote") %>
 | 
					                                  <i class="dropdown-icon fas fa-level-up-alt"></i> <%= t("administrator.users.settings.promote") %>
 | 
				
			||||||
                                <% end %>
 | 
					                                <% end %>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@
 | 
				
			|||||||
            <% end %>
 | 
					            <% end %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <% if Rails.configuration.room_features.include? "mute-on-join" %>
 | 
					            <% if Rails.configuration.room_features.include? "mute-on-join" %>
 | 
				
			||||||
              <label class="custom-switch mt-3 mb-3 w-100 text-left d-inline-block">
 | 
					              <label class="custom-switch pl-0 mt-3 mb-3 w-100 text-left d-inline-block">
 | 
				
			||||||
                <span class="custom-switch-description"><%= t("modal.room_settings.mute")%></span>
 | 
					                <span class="custom-switch-description"><%= t("modal.room_settings.mute")%></span>
 | 
				
			||||||
                <%= f.check_box :mute_on_join, class: "custom-switch-input", checked: false %>
 | 
					                <%= f.check_box :mute_on_join, class: "custom-switch-input", checked: false %>
 | 
				
			||||||
                <span class="custom-switch-indicator float-right"></span>
 | 
					                <span class="custom-switch-indicator float-right"></span>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
%>
 | 
					%>
 | 
				
			||||||
  <div style="text-align:center; font-family:'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif">
 | 
					  <div style="text-align:center; font-family:'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif">
 | 
				
			||||||
    <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(logo_image, height: '70')%>
 | 
					      <%= image_tag(@image, height: '70')%>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <h1 style="margin-bottom:30px">
 | 
					      <h1 style="margin-bottom:30px">
 | 
				
			||||||
        <%= t('mailer.user.password_reset.title') %>
 | 
					        <%= t('mailer.user.password_reset.title') %>
 | 
				
			||||||
@@ -32,7 +32,7 @@
 | 
				
			|||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <a
 | 
					      <a
 | 
				
			||||||
        style="background: <%= user_color %>;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: <%= @color %>;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 %>">
 | 
				
			||||||
        <%= t('mailer.user.password_reset.reset_link') %>
 | 
					        <%= t('mailer.user.password_reset.reset_link') %>
 | 
				
			||||||
      </a>
 | 
					      </a>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  <div style="text-align:center; font-family:'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif">
 | 
					  <div style="text-align:center; font-family:'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif">
 | 
				
			||||||
    <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(logo_image, height: '70') %>
 | 
					      <%= image_tag(@image, height: '70') %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <h1 style="margin-bottom:30px">
 | 
					      <h1 style="margin-bottom:30px">
 | 
				
			||||||
        <%= t('mailer.user.verify_email.welcome', name: @user[:name]) %>
 | 
					        <%= t('mailer.user.verify_email.welcome', name: @user[:name]) %>
 | 
				
			||||||
@@ -36,7 +36,7 @@
 | 
				
			|||||||
        <%= t('mailer.user.verify_email.verify') %>
 | 
					        <%= t('mailer.user.verify_email.verify') %>
 | 
				
			||||||
      </p>
 | 
					      </p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <a style="background: <%= user_color %>;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: <%= @color %>;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 %>">
 | 
				
			||||||
        <%= t('mailer.user.verify_email.verify_link') %>
 | 
					        <%= t('mailer.user.verify_email.verify_link') %>
 | 
				
			||||||
      </a>
 | 
					      </a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -173,7 +173,7 @@ en:
 | 
				
			|||||||
  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:
 | 
				
			||||||
      auto_join: Automatically join me into the room.
 | 
					      auto_join: Automatically join me into the room
 | 
				
			||||||
      create: Create Room
 | 
					      create: Create Room
 | 
				
			||||||
      free_delete: You will be free to delete this room at any time.
 | 
					      free_delete: You will be free to delete this room at any time.
 | 
				
			||||||
      name_placeholder: Enter a room name...
 | 
					      name_placeholder: Enter a room name...
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,36 +21,89 @@ es:
 | 
				
			|||||||
    attributes:
 | 
					    attributes:
 | 
				
			||||||
      user:
 | 
					      user:
 | 
				
			||||||
        accepted_terms: "Términos y condiciones"
 | 
					        accepted_terms: "Términos y condiciones"
 | 
				
			||||||
 | 
					  administrator:
 | 
				
			||||||
 | 
					    site_settings:
 | 
				
			||||||
 | 
					      branding:
 | 
				
			||||||
 | 
					        change: Cambiar imagen
 | 
				
			||||||
 | 
					        info: Cambiar la imagen personalizada que aparece en la esquina superior izquierda
 | 
				
			||||||
 | 
					        placeholder: Enlace de la imagen...
 | 
				
			||||||
 | 
					        title: Imagen personalizada
 | 
				
			||||||
 | 
					      color:
 | 
				
			||||||
 | 
					        info: Cambiar el color principal utilizado en todo el sitio web
 | 
				
			||||||
 | 
					        title: Color principal
 | 
				
			||||||
 | 
					      subtitle: Personalizar Greenlight
 | 
				
			||||||
 | 
					      title: Configuración del sitio web
 | 
				
			||||||
 | 
					    flash:
 | 
				
			||||||
 | 
					      banned: El usuario ha sido bloqueado.
 | 
				
			||||||
 | 
					      unbanned: El usuario ha sido desbloqueado.
 | 
				
			||||||
 | 
					      delete: El usuario ha sido eliminado.
 | 
				
			||||||
 | 
					      delete_fail: El usuario no pudo ser eliminado.
 | 
				
			||||||
 | 
					      demoted: El usuario ha sido degradado.
 | 
				
			||||||
 | 
					      promoted: El usuario ha sido promovido.
 | 
				
			||||||
 | 
					      unauthorized: No estas autorizado para ejecutar operaciones en este usuario.
 | 
				
			||||||
 | 
					    title: Configuración de organización
 | 
				
			||||||
 | 
					    users:
 | 
				
			||||||
 | 
					      edit:
 | 
				
			||||||
 | 
					        title: Editar detalles de usuario
 | 
				
			||||||
 | 
					      settings:
 | 
				
			||||||
 | 
					        ban: Bloquear usuario
 | 
				
			||||||
 | 
					        delete: Eliminar
 | 
				
			||||||
 | 
					        demote: Degradar usuario
 | 
				
			||||||
 | 
					        edit: Editar
 | 
				
			||||||
 | 
					        promote: Promover a administrador
 | 
				
			||||||
 | 
					        unban: Desbloquear usuario
 | 
				
			||||||
 | 
					      table:
 | 
				
			||||||
 | 
					        authenticator: Autenificador
 | 
				
			||||||
 | 
					        created: Creado
 | 
				
			||||||
 | 
					        name: Nombre
 | 
				
			||||||
 | 
					        not_found: No se encontraron usuarios con ese criterio
 | 
				
			||||||
 | 
					        no_users: No se encontraron usuarios
 | 
				
			||||||
 | 
					        role: Rol
 | 
				
			||||||
 | 
					        uid: Identificador de usuario
 | 
				
			||||||
 | 
					        username: Nombre de usuario
 | 
				
			||||||
 | 
					      title: Administrar usuarios
 | 
				
			||||||
  bigbluebutton: BigBlueButton
 | 
					  bigbluebutton: BigBlueButton
 | 
				
			||||||
  bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión
 | 
					  bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión.
 | 
				
			||||||
  cancel: Cancelar
 | 
					  cancel: Cancelar
 | 
				
			||||||
  cookies:
 | 
					  cookies:
 | 
				
			||||||
    cookie_info: "Las cookies nos ayudan a proveer nuestros servicios. Al utilizar nuestros servicios, usted acepta nuestro uso de cookies."
 | 
					    cookie_info: "Las cookies nos ayudan a proveer nuestros servicios. Al utilizar nuestros servicios, usted acepta nuestro uso de cookies."
 | 
				
			||||||
    cookie_button: Acepto
 | 
					    cookie_button: Acepto
 | 
				
			||||||
  copy: Copiar
 | 
					  copy: Copiar
 | 
				
			||||||
 | 
					  default_admin: "Estas usilizando la contraseña por omisión para esta cuenta de usuario. Haz click <a href=\"%{edit_link}\">aquí </a> para cambiarla"
 | 
				
			||||||
  delete: Eliminar
 | 
					  delete: Eliminar
 | 
				
			||||||
  delivery_error: Ocurrió un error durante el envío de correo electrónico. Por favor contacte un administrador.
 | 
					  delivery_error: Ocurrió un error durante el envío de correo electrónico. Por favor contacte un administrador.
 | 
				
			||||||
  docs: Documentación
 | 
					  docs: Documentación
 | 
				
			||||||
  email: Cuenta de correo
 | 
					  email: Cuenta de correo
 | 
				
			||||||
  email_sent: El mensaje fue enviado! (Verifica tu carpeta de Spam sí no lo haz recibido)
 | 
					  email_sent: "Tu email de %{email_type} ha sido enviado. (Revisa tu carpeta de Spam sí no lo has recibido)"
 | 
				
			||||||
  enter_your_name: Introduce tu nombre
 | 
					  enter_your_name: Introduce tu nombre
 | 
				
			||||||
  errors:
 | 
					  errors:
 | 
				
			||||||
    internal:
 | 
					    internal:
 | 
				
			||||||
      message: Oh no! Parece que algo falló de tu lado.
 | 
					      message: Oh no! Parece que algo falló de tu lado.
 | 
				
			||||||
      help: "El error ha sido registrado, vamos a revisarlo."
 | 
					      help: "El error ha sido registrado, vamos a revisarlo."
 | 
				
			||||||
    migration_error:
 | 
					    migration_error:
 | 
				
			||||||
      contact_admin: "Sí tu no eres administrador, contacta a uno."
 | 
					      contact_admin: "Sí no eres administrador, contacta a uno."
 | 
				
			||||||
      continue: Me gustaría seguir utilizando la versión 1.0
 | 
					      continue: Me gustaría seguir utilizando la versión 1.0
 | 
				
			||||||
      notice: >
 | 
					      notice: >
 | 
				
			||||||
        Greenlight encontro un error al migrar la base de datos. <br>Esto puede deberse a que no hás actualizado a Greenlight versión 2.0
 | 
					        Greenlight encontro un error al migrar la base de datos. <br>Esto puede deberse a que no hás actualizado a Greenlight versión 2.0
 | 
				
			||||||
      upgrade: Muestrame como actualizar a la verisión 2.0
 | 
					      upgrade: Muestrame como actualizar a la verisión 2.0
 | 
				
			||||||
      version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
 | 
					      version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
 | 
				
			||||||
 | 
					    messages:
 | 
				
			||||||
 | 
					      blank: el valor no puede estar vacío
 | 
				
			||||||
 | 
					      too_short: es demasiado corta
 | 
				
			||||||
 | 
					      invalid: es invalida
 | 
				
			||||||
 | 
					      taken: ya existe
 | 
				
			||||||
 | 
					      accepted: debe ser aceptado
 | 
				
			||||||
 | 
					      confirmation: "no conicide %{attribute}"
 | 
				
			||||||
 | 
					      inclusion: no está incluido en la lista
 | 
				
			||||||
    not_found:
 | 
					    not_found:
 | 
				
			||||||
      message: Ups! parece que no podemos encontrarle
 | 
					      message: Oh no! parece que no podemos encontrarle.
 | 
				
			||||||
      help: "¿Puede ser que haya sido eliminada?"
 | 
					      help: "¿Puede ser que haya sido eliminada?"
 | 
				
			||||||
    title: Errores
 | 
					    title: Errores
 | 
				
			||||||
 | 
					    unauthorized:
 | 
				
			||||||
 | 
					      message: No tienes acceso a ésta aplicación
 | 
				
			||||||
 | 
					      help: "Sí tu crees que este es un error, contacta al administrador del sistema"
 | 
				
			||||||
    unprocessable:
 | 
					    unprocessable:
 | 
				
			||||||
      message: "Ups!, La acción no puede ser procesada"
 | 
					      message: "Oh no!, La acción no puede ser procesada."
 | 
				
			||||||
      help: Desafortunadamente esta no es una acción valida
 | 
					      help: Desafortunadamente esta no es una acción valida
 | 
				
			||||||
  expired_reset_token: El enlace para reiniciar la contraseña ha expirado
 | 
					  expired_reset_token: El enlace para reiniciar la contraseña ha expirado
 | 
				
			||||||
  features:
 | 
					  features:
 | 
				
			||||||
@@ -68,11 +121,12 @@ es:
 | 
				
			|||||||
  go_back: Atrás
 | 
					  go_back: Atrás
 | 
				
			||||||
  greenlight: Greenlight
 | 
					  greenlight: Greenlight
 | 
				
			||||||
  header:
 | 
					  header:
 | 
				
			||||||
    create_room: Crear sala
 | 
					    all_recordings: Todas las grabaciones
 | 
				
			||||||
    dropdown:
 | 
					    dropdown:
 | 
				
			||||||
 | 
					      account_settings: Organización
 | 
				
			||||||
      help: "¿Necesitas ayuda?"
 | 
					      help: "¿Necesitas ayuda?"
 | 
				
			||||||
      home: Sala principal
 | 
					      home: Inicio
 | 
				
			||||||
      settings: Configuración
 | 
					      settings: Perfil de usuario
 | 
				
			||||||
      signout: Salir
 | 
					      signout: Salir
 | 
				
			||||||
  home_room: Sala principal
 | 
					  home_room: Sala principal
 | 
				
			||||||
  info_update_success: La información ha sido actualizada exitósamente
 | 
					  info_update_success: La información ha sido actualizada exitósamente
 | 
				
			||||||
@@ -93,10 +147,11 @@ es:
 | 
				
			|||||||
    video: Ve nuestro tutorial de como utilizar Greenlight
 | 
					    video: Ve nuestro tutorial de como utilizar Greenlight
 | 
				
			||||||
    upgrade: Muestrame como actualizar a versión 2.0
 | 
					    upgrade: Muestrame como actualizar a versión 2.0
 | 
				
			||||||
    version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
 | 
					    version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
 | 
				
			||||||
  language_name: Español
 | 
					  language_name: Español (México)
 | 
				
			||||||
  language_default: Por omisión (idioma del navegador)
 | 
					  language_default: Por omisión (idioma del navegador)
 | 
				
			||||||
  ldap_error: No se puede conectar al servidor LDAP. Compruebe la configuración de LDAP en el archivo "env" y asegúrate de que tu servidor está ejecutándose.
 | 
					  ldap_error: No se puede conectar al servidor LDAP. Compruebe la configuración de LDAP en el archivo "env" y asegúrate de que tu servidor está ejecutándose.
 | 
				
			||||||
  login: Ingresar
 | 
					  login: Ingresar
 | 
				
			||||||
 | 
					  login_title: Ingresar a tu cuenta
 | 
				
			||||||
  mailer:
 | 
					  mailer:
 | 
				
			||||||
    user:
 | 
					    user:
 | 
				
			||||||
      password_reset:
 | 
					      password_reset:
 | 
				
			||||||
@@ -107,8 +162,9 @@ es:
 | 
				
			|||||||
        expire: Este enlace expira en dos horas
 | 
					        expire: Este enlace expira en dos horas
 | 
				
			||||||
        ignore: Puedes ignorar este mensaje sin preocupaciones sí no haz sido tu quien solicito el cambio de contraseña.
 | 
					        ignore: Puedes ignorar este mensaje sin preocupaciones sí no haz sido tu quien solicito el cambio de contraseña.
 | 
				
			||||||
      verify_email:
 | 
					      verify_email:
 | 
				
			||||||
        welcome: "Bienvenido a %{bigbluebutton}, %{name}!"
 | 
					        welcome: "Bienvenido a tu espacio personal %{name}"
 | 
				
			||||||
        success: "El registro de tu cuenta %{bigbluebutton} ha sido exitoso. Tu nombre de usuario es %{email}."
 | 
					        success: "Haciendo uso de %{bigbluebutton}, puedes crear tus propias salas para sostener reuniones y colaborar con otros."
 | 
				
			||||||
 | 
					        username: "Tu nombre de usuario es %{email}"
 | 
				
			||||||
        verify: "Para verificar la cuenta, haz click en el botón que aparece abajo."
 | 
					        verify: "Para verificar la cuenta, haz click en el botón que aparece abajo."
 | 
				
			||||||
        verify_text: 'Utiliza este enlace para verificar tu cuenta: %{url}'
 | 
					        verify_text: 'Utiliza este enlace para verificar tu cuenta: %{url}'
 | 
				
			||||||
        verify_link: Verificar la cuenta de usuario
 | 
					        verify_link: Verificar la cuenta de usuario
 | 
				
			||||||
@@ -117,20 +173,21 @@ es:
 | 
				
			|||||||
  modal:
 | 
					  modal:
 | 
				
			||||||
    create_room:
 | 
					    create_room:
 | 
				
			||||||
      auto_join: Eniame a la sala automáticamente cuando empiece ls sesión
 | 
					      auto_join: Eniame a la sala automáticamente cuando empiece ls sesión
 | 
				
			||||||
 | 
					      create: Crear sala
 | 
				
			||||||
      free_delete: Podrás eliminar la sala en el momento que quieras
 | 
					      free_delete: Podrás eliminar la sala en el momento que quieras
 | 
				
			||||||
      name_placeholder: Introduce un nombre para la sala
 | 
					      name_placeholder: Introduce un nombre para la sala
 | 
				
			||||||
      not_blank: El nombre de la sala no puede estar vacío
 | 
					      not_blank: El nombre de la sala no puede estar vacío
 | 
				
			||||||
      title: Crear una sala nueva
 | 
					      title: Crear una sala nueva
 | 
				
			||||||
    delete_account:
 | 
					    delete_account:
 | 
				
			||||||
      confirm: "¿Estás seguro de querer eliminar tu cuenta?"
 | 
					      confirm: "¿Estas seguro de querer eliminar esta cuenta de usuario?"
 | 
				
			||||||
      delete: "Estoy seguro, elimina mi cuenta"
 | 
					      delete: Estoy seguro de eliminar ésta cuenta
 | 
				
			||||||
      keep: "De hecho, la conserbaré"
 | 
					      keep: "De hecho, la conserbaré"
 | 
				
			||||||
      warning: "Esta decisión es final, <b>No</b> podrás recuperar la información asociada"
 | 
					      warning: "Esta decisión es final, <b>No</b> podrás recuperar la información asociada"
 | 
				
			||||||
    delete_room:
 | 
					    delete_room:
 | 
				
			||||||
      confirm: "¿Estás seguro de querer eliminar %{room}?"
 | 
					      confirm: "¿Estás seguro de querer eliminar %{room}?"
 | 
				
			||||||
      delete: "Estoy seguro, elimina esta sala"
 | 
					      delete: "Estoy seguro, elimina esta sala"
 | 
				
			||||||
      keep: "Cambie de opinión, la conservaré"
 | 
					      keep: "Cambie de opinión, la conservaré"
 | 
				
			||||||
      warning: <b>No</b> podrás recuperar la sala ni las grabaciones asociadas
 | 
					      warning: "La recuperación de la sala o grabaciones asociadas a %{recordings_num} <b>no</b> sera posible."
 | 
				
			||||||
    login:
 | 
					    login:
 | 
				
			||||||
      or: o
 | 
					      or: o
 | 
				
			||||||
      with: "Ingresar con %{provider}"
 | 
					      with: "Ingresar con %{provider}"
 | 
				
			||||||
@@ -150,6 +207,11 @@ es:
 | 
				
			|||||||
  name_update_success: El nombre de la sala ha sido actualizado exitósamente
 | 
					  name_update_success: El nombre de la sala ha sido actualizado exitósamente
 | 
				
			||||||
  no_user_email_exists: "No hay ningún usuario existente con el correo electrónico especificado. Por favor, asegúrese de que lo escribió correctamente."
 | 
					  no_user_email_exists: "No hay ningún usuario existente con el correo electrónico especificado. Por favor, asegúrese de que lo escribió correctamente."
 | 
				
			||||||
  omniauth_error: Ocurrió un error al intentar ingresar utilizando OmniAuth. Por favor intente nuevamente o contacte un administrador.
 | 
					  omniauth_error: Ocurrió un error al intentar ingresar utilizando OmniAuth. Por favor intente nuevamente o contacte un administrador.
 | 
				
			||||||
 | 
					  pagy:
 | 
				
			||||||
 | 
					    nav:
 | 
				
			||||||
 | 
					      prev: "‹ Anterior"
 | 
				
			||||||
 | 
					      next: "Siguiente ›"
 | 
				
			||||||
 | 
					      gap: "…"
 | 
				
			||||||
  password: Contraseña
 | 
					  password: Contraseña
 | 
				
			||||||
  password_empty_notice: La contraseña no puede estar vacía
 | 
					  password_empty_notice: La contraseña no puede estar vacía
 | 
				
			||||||
  password_reset_success: La contraseña ha sido cambiada
 | 
					  password_reset_success: La contraseña ha sido cambiada
 | 
				
			||||||
@@ -158,7 +220,12 @@ es:
 | 
				
			|||||||
    google: Google
 | 
					    google: Google
 | 
				
			||||||
    microsoft_office365: Office 365
 | 
					    microsoft_office365: Office 365
 | 
				
			||||||
    twitter: Twitter
 | 
					    twitter: Twitter
 | 
				
			||||||
 | 
					  recaptcha:
 | 
				
			||||||
 | 
					    errors:
 | 
				
			||||||
 | 
					      recaptcha_unreachable: Oh no! La respuesta de tu reCAPTCHA falló. Intentalo de nuevo.
 | 
				
			||||||
 | 
					      verification_failed: "La verificación reCAPTCHA ha falado, intentalo nuevamente."
 | 
				
			||||||
  recording:
 | 
					  recording:
 | 
				
			||||||
 | 
					    all_recordings: Todas las grabaciones
 | 
				
			||||||
    email: Enviar correo electrónico con la grabación
 | 
					    email: Enviar correo electrónico con la grabación
 | 
				
			||||||
    no_recordings: "Esta sala no tiene grabaciones %{inject}"
 | 
					    no_recordings: "Esta sala no tiene grabaciones %{inject}"
 | 
				
			||||||
    no_user_recordings: No tienes grabaciones
 | 
					    no_user_recordings: No tienes grabaciones
 | 
				
			||||||
@@ -182,7 +249,13 @@ es:
 | 
				
			|||||||
    password: Nueva contraseña
 | 
					    password: Nueva contraseña
 | 
				
			||||||
    confirm: Confirmación de nueva contraseña
 | 
					    confirm: Confirmación de nueva contraseña
 | 
				
			||||||
    update: Actualizar contraseña
 | 
					    update: Actualizar contraseña
 | 
				
			||||||
 | 
					  roles:
 | 
				
			||||||
 | 
					    administrator: Administrador
 | 
				
			||||||
 | 
					    banned: Bloqueado
 | 
				
			||||||
 | 
					    super_admin: Super Administrador
 | 
				
			||||||
 | 
					    user: Usuario
 | 
				
			||||||
  room:
 | 
					  room:
 | 
				
			||||||
 | 
					    create_room: Crear una sala
 | 
				
			||||||
    create_room_error: Ocurrió un error al crear la sala
 | 
					    create_room_error: Ocurrió un error al crear la sala
 | 
				
			||||||
    create_room_success: La sala fue creada exitósamente
 | 
					    create_room_success: La sala fue creada exitósamente
 | 
				
			||||||
    invited: Hás sido invitado a ingresar
 | 
					    invited: Hás sido invitado a ingresar
 | 
				
			||||||
@@ -191,7 +264,7 @@ es:
 | 
				
			|||||||
    last_session: "Última sesión en %{session}"
 | 
					    last_session: "Última sesión en %{session}"
 | 
				
			||||||
    owner: Dueño
 | 
					    owner: Dueño
 | 
				
			||||||
    no_sessions: Esta sala todavía no tiene sesiones
 | 
					    no_sessions: Esta sala todavía no tiene sesiones
 | 
				
			||||||
    recordings: Grabaciones
 | 
					    recordings: Grabaciones de sala
 | 
				
			||||||
    sessions: Sesiones
 | 
					    sessions: Sesiones
 | 
				
			||||||
    settings: Configuración de sala
 | 
					    settings: Configuración de sala
 | 
				
			||||||
    start: Iniciar
 | 
					    start: Iniciar
 | 
				
			||||||
@@ -199,7 +272,7 @@ es:
 | 
				
			|||||||
    update_settings_error: Ocurrió un error al actualizar la configuración de la sala
 | 
					    update_settings_error: Ocurrió un error al actualizar la configuración de la sala
 | 
				
			||||||
    update_settings_success: La configuración de la sala fue actualizada exitósamente
 | 
					    update_settings_success: La configuración de la sala fue actualizada exitósamente
 | 
				
			||||||
    wait:
 | 
					    wait:
 | 
				
			||||||
      message: Ups! L sesión todavía no dado inicio
 | 
					      message: Oh no! La sesión todavía no ha comenzado.
 | 
				
			||||||
      auto: Serás enviado a la sala automáticamente cuando empiece ls sesión
 | 
					      auto: Serás enviado a la sala automáticamente cuando empiece ls sesión
 | 
				
			||||||
  settings:
 | 
					  settings:
 | 
				
			||||||
    account:
 | 
					    account:
 | 
				
			||||||
@@ -215,17 +288,14 @@ es:
 | 
				
			|||||||
      disclaimer: "Sí elijes eliminar tu cuenta de usuario, <b>NO</b> podrá ser recuperada. Toda la información relacionada con tu cuenta, incluyendo configuración, salas y grabaciones, será eliminada."
 | 
					      disclaimer: "Sí elijes eliminar tu cuenta de usuario, <b>NO</b> podrá ser recuperada. Toda la información relacionada con tu cuenta, incluyendo configuración, salas y grabaciones, será eliminada."
 | 
				
			||||||
      subtitle: Eliminar la cuenta de forma permanente
 | 
					      subtitle: Eliminar la cuenta de forma permanente
 | 
				
			||||||
      title: Eliminar cuenta
 | 
					      title: Eliminar cuenta
 | 
				
			||||||
    design:
 | 
					 | 
				
			||||||
      not_supported: Personalización no es soportada actualmente
 | 
					 | 
				
			||||||
      subtitle: Personalizar Greenlight
 | 
					 | 
				
			||||||
      title: Diseño
 | 
					 | 
				
			||||||
    password:
 | 
					    password:
 | 
				
			||||||
      confirmation: Confirmación de contraseña nueva
 | 
					      confirmation: Confirmación de contraseña nueva
 | 
				
			||||||
      new: Contraseña nueva
 | 
					      new: Contraseña nueva
 | 
				
			||||||
      old: Contraseña anterior
 | 
					      old: Contraseña anterior
 | 
				
			||||||
      subtitle: Cambiar tu contraseña
 | 
					      subtitle: Cambiar tu contraseña
 | 
				
			||||||
      title: Contraseña
 | 
					      title: Contraseña
 | 
				
			||||||
    title: Configuración
 | 
					    title: Perfil de usuario
 | 
				
			||||||
 | 
					    search: Buscar
 | 
				
			||||||
  signup:
 | 
					  signup:
 | 
				
			||||||
    password_confirm: Confirmación de contraseña
 | 
					    password_confirm: Confirmación de contraseña
 | 
				
			||||||
    subtitle: Crear una cuenta
 | 
					    subtitle: Crear una cuenta
 | 
				
			||||||
@@ -247,3 +317,4 @@ es:
 | 
				
			|||||||
    resend: Reenviar enlace para verificación de cuenta de correo
 | 
					    resend: Reenviar enlace para verificación de cuenta de correo
 | 
				
			||||||
    signin: "Ingresa para tener acceso a la información de tu cuenta "
 | 
					    signin: "Ingresa para tener acceso a la información de tu cuenta "
 | 
				
			||||||
    title: Verificar tu cuenta de correo
 | 
					    title: Verificar tu cuenta de correo
 | 
				
			||||||
 | 
					    verification: Verificación
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,36 +21,89 @@ es_MX:
 | 
				
			|||||||
    attributes:
 | 
					    attributes:
 | 
				
			||||||
      user:
 | 
					      user:
 | 
				
			||||||
        accepted_terms: "Términos y condiciones"
 | 
					        accepted_terms: "Términos y condiciones"
 | 
				
			||||||
 | 
					  administrator:
 | 
				
			||||||
 | 
					    site_settings:
 | 
				
			||||||
 | 
					      branding:
 | 
				
			||||||
 | 
					        change: Cambiar imagen
 | 
				
			||||||
 | 
					        info: Cambiar la imagen personalizada que aparece en la esquina superior izquierda
 | 
				
			||||||
 | 
					        placeholder: Enlace de la imagen...
 | 
				
			||||||
 | 
					        title: Imagen personalizada
 | 
				
			||||||
 | 
					      color:
 | 
				
			||||||
 | 
					        info: Cambiar el color principal utilizado en todo el sitio web
 | 
				
			||||||
 | 
					        title: Color principal
 | 
				
			||||||
 | 
					      subtitle: Personalizar Greenlight
 | 
				
			||||||
 | 
					      title: Configuración del sitio web
 | 
				
			||||||
 | 
					    flash:
 | 
				
			||||||
 | 
					      banned: El usuario ha sido bloqueado.
 | 
				
			||||||
 | 
					      unbanned: El usuario ha sido desbloqueado.
 | 
				
			||||||
 | 
					      delete: El usuario ha sido eliminado.
 | 
				
			||||||
 | 
					      delete_fail: El usuario no pudo ser eliminado.
 | 
				
			||||||
 | 
					      demoted: El usuario ha sido degradado.
 | 
				
			||||||
 | 
					      promoted: El usuario ha sido promovido.
 | 
				
			||||||
 | 
					      unauthorized: No estas autorizado para ejecutar operaciones en este usuario.
 | 
				
			||||||
 | 
					    title: Configuración de organización
 | 
				
			||||||
 | 
					    users:
 | 
				
			||||||
 | 
					      edit:
 | 
				
			||||||
 | 
					        title: Editar detalles de usuario
 | 
				
			||||||
 | 
					      settings:
 | 
				
			||||||
 | 
					        ban: Bloquear usuario
 | 
				
			||||||
 | 
					        delete: Eliminar
 | 
				
			||||||
 | 
					        demote: Degradar usuario
 | 
				
			||||||
 | 
					        edit: Editar
 | 
				
			||||||
 | 
					        promote: Promover a administrador
 | 
				
			||||||
 | 
					        unban: Desbloquear usuario
 | 
				
			||||||
 | 
					      table:
 | 
				
			||||||
 | 
					        authenticator: Autenificador
 | 
				
			||||||
 | 
					        created: Creado
 | 
				
			||||||
 | 
					        name: Nombre
 | 
				
			||||||
 | 
					        not_found: No se encontraron usuarios con ese criterio
 | 
				
			||||||
 | 
					        no_users: No se encontraron usuarios
 | 
				
			||||||
 | 
					        role: Rol
 | 
				
			||||||
 | 
					        uid: Identificador de usuario
 | 
				
			||||||
 | 
					        username: Nombre de usuario
 | 
				
			||||||
 | 
					      title: Administrar usuarios
 | 
				
			||||||
  bigbluebutton: BigBlueButton
 | 
					  bigbluebutton: BigBlueButton
 | 
				
			||||||
  bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión
 | 
					  bigbluebutton_exception: Oh no! Ocurrió un error al iniciar la sesión.
 | 
				
			||||||
  cancel: Cancelar
 | 
					  cancel: Cancelar
 | 
				
			||||||
  cookies:
 | 
					  cookies:
 | 
				
			||||||
    cookie_info: "Las cookies nos ayudan a proveer nuestros servicios. Al utilizar nuestros servicios, usted acepta nuestro uso de cookies."
 | 
					    cookie_info: "Las cookies nos ayudan a proveer nuestros servicios. Al utilizar nuestros servicios, usted acepta nuestro uso de cookies."
 | 
				
			||||||
    cookie_button: Acepto
 | 
					    cookie_button: Acepto
 | 
				
			||||||
  copy: Copiar
 | 
					  copy: Copiar
 | 
				
			||||||
 | 
					  default_admin: "Estas usilizando la contraseña por omisión para esta cuenta de usuario. Haz click <a href=\"%{edit_link}\">aquí </a> para cambiarla"
 | 
				
			||||||
  delete: Eliminar
 | 
					  delete: Eliminar
 | 
				
			||||||
  delivery_error: Ocurrió un error durante el envío de correo electrónico. Por favor contacte un administrador.
 | 
					  delivery_error: Ocurrió un error durante el envío de correo electrónico. Por favor contacte un administrador.
 | 
				
			||||||
  docs: Documentación
 | 
					  docs: Documentación
 | 
				
			||||||
  email: Cuenta de correo
 | 
					  email: Cuenta de correo
 | 
				
			||||||
  email_sent: El mensaje fue enviado! (Verifica tu carpeta de Spam sí no lo haz recibido)
 | 
					  email_sent: "Tu email de %{email_type} ha sido enviado. (Revisa tu carpeta de Spam sí no lo has recibido)"
 | 
				
			||||||
  enter_your_name: Introduce tu nombre
 | 
					  enter_your_name: Introduce tu nombre
 | 
				
			||||||
  errors:
 | 
					  errors:
 | 
				
			||||||
    internal:
 | 
					    internal:
 | 
				
			||||||
      message: Oh no! Parece que algo falló de tu lado.
 | 
					      message: Oh no! Parece que algo falló de tu lado.
 | 
				
			||||||
      help: "El error ha sido registrado, vamos a revisarlo."
 | 
					      help: "El error ha sido registrado, vamos a revisarlo."
 | 
				
			||||||
    migration_error:
 | 
					    migration_error:
 | 
				
			||||||
      contact_admin: "Sí tu no eres administrador, contacta a uno."
 | 
					      contact_admin: "Sí no eres administrador, contacta a uno."
 | 
				
			||||||
      continue: Me gustaría seguir utilizando la versión 1.0
 | 
					      continue: Me gustaría seguir utilizando la versión 1.0
 | 
				
			||||||
      notice: >
 | 
					      notice: >
 | 
				
			||||||
        Greenlight encontro un error al migrar la base de datos. <br>Esto puede deberse a que no hás actualizado a Greenlight versión 2.0
 | 
					        Greenlight encontro un error al migrar la base de datos. <br>Esto puede deberse a que no hás actualizado a Greenlight versión 2.0
 | 
				
			||||||
      upgrade: Muestrame como actualizar a la verisión 2.0
 | 
					      upgrade: Muestrame como actualizar a la verisión 2.0
 | 
				
			||||||
      version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
 | 
					      version: Hemos publicado una nueva version de Greenlight pero tu base de datos no es compatible.
 | 
				
			||||||
 | 
					    messages:
 | 
				
			||||||
 | 
					      blank: el valor no puede estar vacío
 | 
				
			||||||
 | 
					      too_short: es demasiado corta
 | 
				
			||||||
 | 
					      invalid: es invalida
 | 
				
			||||||
 | 
					      taken: ya existe
 | 
				
			||||||
 | 
					      accepted: debe ser aceptado
 | 
				
			||||||
 | 
					      confirmation: "no conicide %{attribute}"
 | 
				
			||||||
 | 
					      inclusion: no está incluido en la lista
 | 
				
			||||||
    not_found:
 | 
					    not_found:
 | 
				
			||||||
      message: Ups! parece que no podemos encontrarle
 | 
					      message: Oh no! parece que no podemos encontrarle.
 | 
				
			||||||
      help: "¿Puede ser que haya sido eliminada?"
 | 
					      help: "¿Puede ser que haya sido eliminada?"
 | 
				
			||||||
    title: Errores
 | 
					    title: Errores
 | 
				
			||||||
 | 
					    unauthorized:
 | 
				
			||||||
 | 
					      message: No tienes acceso a ésta aplicación
 | 
				
			||||||
 | 
					      help: "Sí tu crees que este es un error, contacta al administrador del sistema"
 | 
				
			||||||
    unprocessable:
 | 
					    unprocessable:
 | 
				
			||||||
      message: "Ups!, La acción no puede ser procesada"
 | 
					      message: "Oh no!, La acción no puede ser procesada."
 | 
				
			||||||
      help: Desafortunadamente esta no es una acción valida
 | 
					      help: Desafortunadamente esta no es una acción valida
 | 
				
			||||||
  expired_reset_token: El enlace para reiniciar la contraseña ha expirado
 | 
					  expired_reset_token: El enlace para reiniciar la contraseña ha expirado
 | 
				
			||||||
  features:
 | 
					  features:
 | 
				
			||||||
@@ -68,11 +121,12 @@ es_MX:
 | 
				
			|||||||
  go_back: Atrás
 | 
					  go_back: Atrás
 | 
				
			||||||
  greenlight: Greenlight
 | 
					  greenlight: Greenlight
 | 
				
			||||||
  header:
 | 
					  header:
 | 
				
			||||||
    create_room: Crear sala
 | 
					    all_recordings: Todas las grabaciones
 | 
				
			||||||
    dropdown:
 | 
					    dropdown:
 | 
				
			||||||
 | 
					      account_settings: Organización
 | 
				
			||||||
      help: "¿Necesitas ayuda?"
 | 
					      help: "¿Necesitas ayuda?"
 | 
				
			||||||
      home: Sala principal
 | 
					      home: Inicio
 | 
				
			||||||
      settings: Configuración
 | 
					      settings: Perfil de usuario
 | 
				
			||||||
      signout: Salir
 | 
					      signout: Salir
 | 
				
			||||||
  home_room: Sala principal
 | 
					  home_room: Sala principal
 | 
				
			||||||
  info_update_success: La información ha sido actualizada exitósamente
 | 
					  info_update_success: La información ha sido actualizada exitósamente
 | 
				
			||||||
@@ -97,6 +151,7 @@ es_MX:
 | 
				
			|||||||
  language_default: Por omisión (idioma del navegador)
 | 
					  language_default: Por omisión (idioma del navegador)
 | 
				
			||||||
  ldap_error: No se puede conectar al servidor LDAP. Compruebe la configuración de LDAP en el archivo "env" y asegúrate de que tu servidor está ejecutándose.
 | 
					  ldap_error: No se puede conectar al servidor LDAP. Compruebe la configuración de LDAP en el archivo "env" y asegúrate de que tu servidor está ejecutándose.
 | 
				
			||||||
  login: Ingresar
 | 
					  login: Ingresar
 | 
				
			||||||
 | 
					  login_title: Ingresar a tu cuenta
 | 
				
			||||||
  mailer:
 | 
					  mailer:
 | 
				
			||||||
    user:
 | 
					    user:
 | 
				
			||||||
      password_reset:
 | 
					      password_reset:
 | 
				
			||||||
@@ -107,8 +162,9 @@ es_MX:
 | 
				
			|||||||
        expire: Este enlace expira en dos horas
 | 
					        expire: Este enlace expira en dos horas
 | 
				
			||||||
        ignore: Puedes ignorar este mensaje sin preocupaciones sí no haz sido tu quien solicito el cambio de contraseña.
 | 
					        ignore: Puedes ignorar este mensaje sin preocupaciones sí no haz sido tu quien solicito el cambio de contraseña.
 | 
				
			||||||
      verify_email:
 | 
					      verify_email:
 | 
				
			||||||
        welcome: "Bienvenido a %{bigbluebutton}, %{name}!"
 | 
					        welcome: "Bienvenido a tu espacio personal %{name}"
 | 
				
			||||||
        success: "El registro de tu cuenta %{bigbluebutton} ha sido exitoso. Tu nombre de usuario es %{email}."
 | 
					        success: "Haciendo uso de %{bigbluebutton}, puedes crear tus propias salas para sostener reuniones y colaborar con otros."
 | 
				
			||||||
 | 
					        username: "Tu nombre de usuario es %{email}"
 | 
				
			||||||
        verify: "Para verificar la cuenta, haz click en el botón que aparece abajo."
 | 
					        verify: "Para verificar la cuenta, haz click en el botón que aparece abajo."
 | 
				
			||||||
        verify_text: 'Utiliza este enlace para verificar tu cuenta: %{url}'
 | 
					        verify_text: 'Utiliza este enlace para verificar tu cuenta: %{url}'
 | 
				
			||||||
        verify_link: Verificar la cuenta de usuario
 | 
					        verify_link: Verificar la cuenta de usuario
 | 
				
			||||||
@@ -117,20 +173,21 @@ es_MX:
 | 
				
			|||||||
  modal:
 | 
					  modal:
 | 
				
			||||||
    create_room:
 | 
					    create_room:
 | 
				
			||||||
      auto_join: Eniame a la sala automáticamente cuando empiece ls sesión
 | 
					      auto_join: Eniame a la sala automáticamente cuando empiece ls sesión
 | 
				
			||||||
 | 
					      create: Crear sala
 | 
				
			||||||
      free_delete: Podrás eliminar la sala en el momento que quieras
 | 
					      free_delete: Podrás eliminar la sala en el momento que quieras
 | 
				
			||||||
      name_placeholder: Introduce un nombre para la sala
 | 
					      name_placeholder: Introduce un nombre para la sala
 | 
				
			||||||
      not_blank: El nombre de la sala no puede estar vacío
 | 
					      not_blank: El nombre de la sala no puede estar vacío
 | 
				
			||||||
      title: Crear una sala nueva
 | 
					      title: Crear una sala nueva
 | 
				
			||||||
    delete_account:
 | 
					    delete_account:
 | 
				
			||||||
      confirm: "¿Estás seguro de querer eliminar tu cuenta?"
 | 
					      confirm: "¿Estas seguro de querer eliminar esta cuenta de usuario?"
 | 
				
			||||||
      delete: "Estoy seguro, elimina mi cuenta"
 | 
					      delete: Estoy seguro de eliminar ésta cuenta
 | 
				
			||||||
      keep: "De hecho, la conserbaré"
 | 
					      keep: "De hecho, la conserbaré"
 | 
				
			||||||
      warning: "Esta decisión es final, <b>No</b> podrás recuperar la información asociada"
 | 
					      warning: "Esta decisión es final, <b>No</b> podrás recuperar la información asociada"
 | 
				
			||||||
    delete_room:
 | 
					    delete_room:
 | 
				
			||||||
      confirm: "¿Estás seguro de querer eliminar %{room}?"
 | 
					      confirm: "¿Estás seguro de querer eliminar %{room}?"
 | 
				
			||||||
      delete: "Estoy seguro, elimina esta sala"
 | 
					      delete: "Estoy seguro, elimina esta sala"
 | 
				
			||||||
      keep: "Cambie de opinión, la conservaré"
 | 
					      keep: "Cambie de opinión, la conservaré"
 | 
				
			||||||
      warning: <b>No</b> podrás recuperar la sala ni las grabaciones asociadas
 | 
					      warning: "La recuperación de la sala o grabaciones asociadas a %{recordings_num} <b>no</b> sera posible."
 | 
				
			||||||
    login:
 | 
					    login:
 | 
				
			||||||
      or: o
 | 
					      or: o
 | 
				
			||||||
      with: "Ingresar con %{provider}"
 | 
					      with: "Ingresar con %{provider}"
 | 
				
			||||||
@@ -150,6 +207,11 @@ es_MX:
 | 
				
			|||||||
  name_update_success: El nombre de la sala ha sido actualizado exitósamente
 | 
					  name_update_success: El nombre de la sala ha sido actualizado exitósamente
 | 
				
			||||||
  no_user_email_exists: "No hay ningún usuario existente con el correo electrónico especificado. Por favor, asegúrese de que lo escribió correctamente."
 | 
					  no_user_email_exists: "No hay ningún usuario existente con el correo electrónico especificado. Por favor, asegúrese de que lo escribió correctamente."
 | 
				
			||||||
  omniauth_error: Ocurrió un error al intentar ingresar utilizando OmniAuth. Por favor intente nuevamente o contacte un administrador.
 | 
					  omniauth_error: Ocurrió un error al intentar ingresar utilizando OmniAuth. Por favor intente nuevamente o contacte un administrador.
 | 
				
			||||||
 | 
					  pagy:
 | 
				
			||||||
 | 
					    nav:
 | 
				
			||||||
 | 
					      prev: "‹ Anterior"
 | 
				
			||||||
 | 
					      next: "Siguiente ›"
 | 
				
			||||||
 | 
					      gap: "…"
 | 
				
			||||||
  password: Contraseña
 | 
					  password: Contraseña
 | 
				
			||||||
  password_empty_notice: La contraseña no puede estar vacía
 | 
					  password_empty_notice: La contraseña no puede estar vacía
 | 
				
			||||||
  password_reset_success: La contraseña ha sido cambiada
 | 
					  password_reset_success: La contraseña ha sido cambiada
 | 
				
			||||||
@@ -158,7 +220,12 @@ es_MX:
 | 
				
			|||||||
    google: Google
 | 
					    google: Google
 | 
				
			||||||
    microsoft_office365: Office 365
 | 
					    microsoft_office365: Office 365
 | 
				
			||||||
    twitter: Twitter
 | 
					    twitter: Twitter
 | 
				
			||||||
 | 
					  recaptcha:
 | 
				
			||||||
 | 
					    errors:
 | 
				
			||||||
 | 
					      recaptcha_unreachable: Oh no! La respuesta de tu reCAPTCHA falló. Intentalo de nuevo.
 | 
				
			||||||
 | 
					      verification_failed: "La verificación reCAPTCHA ha falado, intentalo nuevamente."
 | 
				
			||||||
  recording:
 | 
					  recording:
 | 
				
			||||||
 | 
					    all_recordings: Todas las grabaciones
 | 
				
			||||||
    email: Enviar correo electrónico con la grabación
 | 
					    email: Enviar correo electrónico con la grabación
 | 
				
			||||||
    no_recordings: "Esta sala no tiene grabaciones %{inject}"
 | 
					    no_recordings: "Esta sala no tiene grabaciones %{inject}"
 | 
				
			||||||
    no_user_recordings: No tienes grabaciones
 | 
					    no_user_recordings: No tienes grabaciones
 | 
				
			||||||
@@ -182,7 +249,13 @@ es_MX:
 | 
				
			|||||||
    password: Nueva contraseña
 | 
					    password: Nueva contraseña
 | 
				
			||||||
    confirm: Confirmación de nueva contraseña
 | 
					    confirm: Confirmación de nueva contraseña
 | 
				
			||||||
    update: Actualizar contraseña
 | 
					    update: Actualizar contraseña
 | 
				
			||||||
 | 
					  roles:
 | 
				
			||||||
 | 
					    administrator: Administrador
 | 
				
			||||||
 | 
					    banned: Bloqueado
 | 
				
			||||||
 | 
					    super_admin: Super Administrador
 | 
				
			||||||
 | 
					    user: Usuario
 | 
				
			||||||
  room:
 | 
					  room:
 | 
				
			||||||
 | 
					    create_room: Crear una sala
 | 
				
			||||||
    create_room_error: Ocurrió un error al crear la sala
 | 
					    create_room_error: Ocurrió un error al crear la sala
 | 
				
			||||||
    create_room_success: La sala fue creada exitósamente
 | 
					    create_room_success: La sala fue creada exitósamente
 | 
				
			||||||
    invited: Hás sido invitado a ingresar
 | 
					    invited: Hás sido invitado a ingresar
 | 
				
			||||||
@@ -191,7 +264,7 @@ es_MX:
 | 
				
			|||||||
    last_session: "Última sesión en %{session}"
 | 
					    last_session: "Última sesión en %{session}"
 | 
				
			||||||
    owner: Dueño
 | 
					    owner: Dueño
 | 
				
			||||||
    no_sessions: Esta sala todavía no tiene sesiones
 | 
					    no_sessions: Esta sala todavía no tiene sesiones
 | 
				
			||||||
    recordings: Grabaciones
 | 
					    recordings: Grabaciones de sala
 | 
				
			||||||
    sessions: Sesiones
 | 
					    sessions: Sesiones
 | 
				
			||||||
    settings: Configuración de sala
 | 
					    settings: Configuración de sala
 | 
				
			||||||
    start: Iniciar
 | 
					    start: Iniciar
 | 
				
			||||||
@@ -199,7 +272,7 @@ es_MX:
 | 
				
			|||||||
    update_settings_error: Ocurrió un error al actualizar la configuración de la sala
 | 
					    update_settings_error: Ocurrió un error al actualizar la configuración de la sala
 | 
				
			||||||
    update_settings_success: La configuración de la sala fue actualizada exitósamente
 | 
					    update_settings_success: La configuración de la sala fue actualizada exitósamente
 | 
				
			||||||
    wait:
 | 
					    wait:
 | 
				
			||||||
      message: Ups! L sesión todavía no dado inicio
 | 
					      message: Oh no! La sesión todavía no ha comenzado.
 | 
				
			||||||
      auto: Serás enviado a la sala automáticamente cuando empiece ls sesión
 | 
					      auto: Serás enviado a la sala automáticamente cuando empiece ls sesión
 | 
				
			||||||
  settings:
 | 
					  settings:
 | 
				
			||||||
    account:
 | 
					    account:
 | 
				
			||||||
@@ -215,17 +288,14 @@ es_MX:
 | 
				
			|||||||
      disclaimer: "Sí elijes eliminar tu cuenta de usuario, <b>NO</b> podrá ser recuperada. Toda la información relacionada con tu cuenta, incluyendo configuración, salas y grabaciones, será eliminada."
 | 
					      disclaimer: "Sí elijes eliminar tu cuenta de usuario, <b>NO</b> podrá ser recuperada. Toda la información relacionada con tu cuenta, incluyendo configuración, salas y grabaciones, será eliminada."
 | 
				
			||||||
      subtitle: Eliminar la cuenta de forma permanente
 | 
					      subtitle: Eliminar la cuenta de forma permanente
 | 
				
			||||||
      title: Eliminar cuenta
 | 
					      title: Eliminar cuenta
 | 
				
			||||||
    design:
 | 
					 | 
				
			||||||
      not_supported: Personalización no es soportada actualmente
 | 
					 | 
				
			||||||
      subtitle: Personalizar Greenlight
 | 
					 | 
				
			||||||
      title: Diseño
 | 
					 | 
				
			||||||
    password:
 | 
					    password:
 | 
				
			||||||
      confirmation: Confirmación de contraseña nueva
 | 
					      confirmation: Confirmación de contraseña nueva
 | 
				
			||||||
      new: Contraseña nueva
 | 
					      new: Contraseña nueva
 | 
				
			||||||
      old: Contraseña anterior
 | 
					      old: Contraseña anterior
 | 
				
			||||||
      subtitle: Cambiar tu contraseña
 | 
					      subtitle: Cambiar tu contraseña
 | 
				
			||||||
      title: Contraseña
 | 
					      title: Contraseña
 | 
				
			||||||
    title: Configuración
 | 
					    title: Perfil de usuario
 | 
				
			||||||
 | 
					    search: Buscar
 | 
				
			||||||
  signup:
 | 
					  signup:
 | 
				
			||||||
    password_confirm: Confirmación de contraseña
 | 
					    password_confirm: Confirmación de contraseña
 | 
				
			||||||
    subtitle: Crear una cuenta
 | 
					    subtitle: Crear una cuenta
 | 
				
			||||||
@@ -247,3 +317,4 @@ es_MX:
 | 
				
			|||||||
    resend: Reenviar enlace para verificación de cuenta de correo
 | 
					    resend: Reenviar enlace para verificación de cuenta de correo
 | 
				
			||||||
    signin: "Ingresa para tener acceso a la información de tu cuenta "
 | 
					    signin: "Ingresa para tener acceso a la información de tu cuenta "
 | 
				
			||||||
    title: Verificar tu cuenta de correo
 | 
					    title: Verificar tu cuenta de correo
 | 
				
			||||||
 | 
					    verification: Verificación
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ zh_CN:
 | 
				
			|||||||
        info: 更改整个网站使用的主颜色
 | 
					        info: 更改整个网站使用的主颜色
 | 
				
			||||||
        title: 主颜色
 | 
					        title: 主颜色
 | 
				
			||||||
      subtitle: 自定义Greenlight
 | 
					      subtitle: 自定义Greenlight
 | 
				
			||||||
      title: 站点设置
 | 
					      title: 网站设置
 | 
				
			||||||
    flash:
 | 
					    flash:
 | 
				
			||||||
      banned: 已成功禁止用户。
 | 
					      banned: 已成功禁止用户。
 | 
				
			||||||
      unbanned: 已成功取消对用户的禁止。
 | 
					      unbanned: 已成功取消对用户的禁止。
 | 
				
			||||||
@@ -41,7 +41,7 @@ zh_CN:
 | 
				
			|||||||
      demoted: 用户已成功降级
 | 
					      demoted: 用户已成功降级
 | 
				
			||||||
      promoted: 用户已成功升级
 | 
					      promoted: 用户已成功升级
 | 
				
			||||||
      unauthorized: 您无权对此用户执行操作
 | 
					      unauthorized: 您无权对此用户执行操作
 | 
				
			||||||
    title: 组织设置
 | 
					    title: 全局设置
 | 
				
			||||||
    users:
 | 
					    users:
 | 
				
			||||||
      edit:
 | 
					      edit:
 | 
				
			||||||
        title: 编辑用户详细信息
 | 
					        title: 编辑用户详细信息
 | 
				
			||||||
@@ -53,7 +53,7 @@ zh_CN:
 | 
				
			|||||||
        promote: 提升为管理员
 | 
					        promote: 提升为管理员
 | 
				
			||||||
        unban: 取消禁止用户
 | 
					        unban: 取消禁止用户
 | 
				
			||||||
      table:
 | 
					      table:
 | 
				
			||||||
        authenticator: Authenticator
 | 
					        authenticator: 认证方式
 | 
				
			||||||
        created: Created
 | 
					        created: Created
 | 
				
			||||||
        name: 名字
 | 
					        name: 名字
 | 
				
			||||||
        not_found: 没有与您的搜索匹配的用户
 | 
					        not_found: 没有与您的搜索匹配的用户
 | 
				
			||||||
@@ -89,6 +89,12 @@ zh_CN:
 | 
				
			|||||||
      version: 我们已经发布了新版Greenlight,但您的数据库不兼容。
 | 
					      version: 我们已经发布了新版Greenlight,但您的数据库不兼容。
 | 
				
			||||||
    messages:
 | 
					    messages:
 | 
				
			||||||
      blank: 不能是空白的
 | 
					      blank: 不能是空白的
 | 
				
			||||||
 | 
					      too_short: 太短了
 | 
				
			||||||
 | 
					      invalid: 无效
 | 
				
			||||||
 | 
					      taken: 已经有人用了
 | 
				
			||||||
 | 
					      accepted: 必须同意
 | 
				
			||||||
 | 
					      confirmation: "不匹配%{attribute}"
 | 
				
			||||||
 | 
					      inclusion: 列表中不存在
 | 
				
			||||||
    not_found:
 | 
					    not_found:
 | 
				
			||||||
      message: 哎哟!看来我们找不到它了。
 | 
					      message: 哎哟!看来我们找不到它了。
 | 
				
			||||||
      help: 它有可能被移除了吗?
 | 
					      help: 它有可能被移除了吗?
 | 
				
			||||||
@@ -102,7 +108,7 @@ zh_CN:
 | 
				
			|||||||
  expired_reset_token: 密码重置链接已过期!
 | 
					  expired_reset_token: 密码重置链接已过期!
 | 
				
			||||||
  features:
 | 
					  features:
 | 
				
			||||||
    title: 功能
 | 
					    title: 功能
 | 
				
			||||||
    rooms: 个人房间
 | 
					    rooms: 个人会议室
 | 
				
			||||||
    recordings: 录像管理
 | 
					    recordings: 录像管理
 | 
				
			||||||
    designs: 定制设计
 | 
					    designs: 定制设计
 | 
				
			||||||
    authentication: 用户认证
 | 
					    authentication: 用户认证
 | 
				
			||||||
@@ -117,12 +123,12 @@ zh_CN:
 | 
				
			|||||||
  header:
 | 
					  header:
 | 
				
			||||||
    all_recordings: 所有录像
 | 
					    all_recordings: 所有录像
 | 
				
			||||||
    dropdown:
 | 
					    dropdown:
 | 
				
			||||||
      account_settings: 组织
 | 
					      account_settings: 全局设置
 | 
				
			||||||
      help: 帮助
 | 
					      help: 帮助
 | 
				
			||||||
      home: 大厅
 | 
					      home: 首页
 | 
				
			||||||
      settings: Profile
 | 
					      settings: 个人设置
 | 
				
			||||||
      signout: 退出
 | 
					      signout: 退出
 | 
				
			||||||
  home_room: 大厅
 | 
					  home_room: 首页会议室
 | 
				
			||||||
  info_update_success: 信息更新成功。
 | 
					  info_update_success: 信息更新成功。
 | 
				
			||||||
  invalid_user: 由于找不到用户,登录失败。您确定电子邮件帐户是正确的吗?
 | 
					  invalid_user: 由于找不到用户,登录失败。您确定电子邮件帐户是正确的吗?
 | 
				
			||||||
  invalid_credentials: 登录失败。输入有误?
 | 
					  invalid_credentials: 登录失败。输入有误?
 | 
				
			||||||
@@ -136,7 +142,7 @@ zh_CN:
 | 
				
			|||||||
        autogenerated: '此电子邮件由BigBlueButton自动生成。'
 | 
					        autogenerated: '此电子邮件由BigBlueButton自动生成。'
 | 
				
			||||||
        footer: 'BigBlueButton是一个开源的Web会议系统。有关BigBlueButton的更多信息,请参阅https://bigBlueButton.org/。'
 | 
					        footer: 'BigBlueButton是一个开源的Web会议系统。有关BigBlueButton的更多信息,请参阅https://bigBlueButton.org/。'
 | 
				
			||||||
  landing:
 | 
					  landing:
 | 
				
			||||||
    about: "%{href} 是开源Web会议服务器BigBluebutton的简易前端。我们可以创建个人房间并主持会议,或通过链接加入其他会议。"
 | 
					    about: "%{href} 是开源Web会议服务器BigBluebutton的简易前端。我们可以创建并主持会议,或通过链接加入其他会议。"
 | 
				
			||||||
    welcome: 欢迎使用BigBlueButton
 | 
					    welcome: 欢迎使用BigBlueButton
 | 
				
			||||||
    video: 请看使用说明
 | 
					    video: 请看使用说明
 | 
				
			||||||
    upgrade: 告诉我怎么升级到 2.0!
 | 
					    upgrade: 告诉我怎么升级到 2.0!
 | 
				
			||||||
@@ -157,7 +163,7 @@ zh_CN:
 | 
				
			|||||||
        ignore: 如果您没有请求密码重置,安全的做法是忽略此电子邮件。
 | 
					        ignore: 如果您没有请求密码重置,安全的做法是忽略此电子邮件。
 | 
				
			||||||
      verify_email:
 | 
					      verify_email:
 | 
				
			||||||
        welcome: "欢迎来到您的个人空间,%{name}!"
 | 
					        welcome: "欢迎来到您的个人空间,%{name}!"
 | 
				
			||||||
        success: "使用%{bigbluebutton},您可以创建自己的会议室来主持会议并与其他人协作。"
 | 
					        success: "使用%{bigbluebutton},您可以创建私有会议室来主持会议并与其他人协作。"
 | 
				
			||||||
        username: "您的用户名是%{email}。"
 | 
					        username: "您的用户名是%{email}。"
 | 
				
			||||||
        verify: 要验证您的帐户,只需单击下面的按钮。
 | 
					        verify: 要验证您的帐户,只需单击下面的按钮。
 | 
				
			||||||
        verify_text: '要验证您的帐户,只需点击以下链接:%{url}'
 | 
					        verify_text: '要验证您的帐户,只需点击以下链接:%{url}'
 | 
				
			||||||
@@ -166,12 +172,12 @@ zh_CN:
 | 
				
			|||||||
  max_concurrent: 已达到允许的最大并发会话数!
 | 
					  max_concurrent: 已达到允许的最大并发会话数!
 | 
				
			||||||
  modal:
 | 
					  modal:
 | 
				
			||||||
    create_room:
 | 
					    create_room:
 | 
				
			||||||
      auto_join: 自动加入此房间
 | 
					      auto_join: 自动加入此会议室
 | 
				
			||||||
      create: 创建房间
 | 
					      create: 创建会议室
 | 
				
			||||||
      free_delete: 任何时候都可以删除这个房间
 | 
					      free_delete: 任何时候都可以删除这个会议室
 | 
				
			||||||
      name_placeholder: 这里请输入房间名...
 | 
					      name_placeholder: 这里请输入会议室名称...
 | 
				
			||||||
      not_blank: 房间名不能为空
 | 
					      not_blank: 会议室名称不能为空
 | 
				
			||||||
      title: 创建新的房间
 | 
					      title: 创建新的会议室
 | 
				
			||||||
    delete_account:
 | 
					    delete_account:
 | 
				
			||||||
      confirm: 确实要删除此帐户吗?
 | 
					      confirm: 确实要删除此帐户吗?
 | 
				
			||||||
      delete: 我确定要删除这个帐户。
 | 
					      delete: 我确定要删除这个帐户。
 | 
				
			||||||
@@ -179,28 +185,33 @@ zh_CN:
 | 
				
			|||||||
      warning: 这是最终决定,您将<b>无法</b>恢复相关数据。
 | 
					      warning: 这是最终决定,您将<b>无法</b>恢复相关数据。
 | 
				
			||||||
    delete_room:
 | 
					    delete_room:
 | 
				
			||||||
      confirm: "确定要删除%{room}吗?"
 | 
					      confirm: "确定要删除%{room}吗?"
 | 
				
			||||||
      delete: 我确定删除这个房间
 | 
					      delete: 我确定删除这个会议室
 | 
				
			||||||
      keep: 我还是留着它吧
 | 
					      keep: 我还是留着它吧
 | 
				
			||||||
      warning: 您将<b>无法</b>恢复这个房间和它相关的所有录像
 | 
					      warning: "您将 <b>不能</b> 恢复这个会议室或任何跟 %{recordings_num} 相关的录像。"
 | 
				
			||||||
    login:
 | 
					    login:
 | 
				
			||||||
      or: 或
 | 
					      or: 或
 | 
				
			||||||
      with: "通过 %{provider}登录"
 | 
					      with: "通过 %{provider}登录"
 | 
				
			||||||
      forgot_password: 忘记密码?
 | 
					      forgot_password: 忘记密码?
 | 
				
			||||||
    rename_recording:
 | 
					    rename_recording:
 | 
				
			||||||
    room_settings:
 | 
					    room_settings:
 | 
				
			||||||
      title: 房间设置
 | 
					      title: 会议室设置
 | 
				
			||||||
      update: 更新房间
 | 
					      update: 修改会议室
 | 
				
			||||||
      client: 选择客户端类型
 | 
					      client: 选择客户端类型
 | 
				
			||||||
      mute: 用户加入时静音
 | 
					      mute: 用户加入时静音
 | 
				
			||||||
      default: 默认
 | 
					      default: 默认
 | 
				
			||||||
      html: HTML5
 | 
					      html: HTML5
 | 
				
			||||||
      flash: Flash
 | 
					      flash: Flash
 | 
				
			||||||
      footer_text: 您可以随时调整房间
 | 
					      footer_text: 您可以随时调整会议室
 | 
				
			||||||
    rename_room:
 | 
					    rename_room:
 | 
				
			||||||
      name_placeholder: 这里请输入新房间名称…
 | 
					      name_placeholder: 这里请输入新会议室名称…
 | 
				
			||||||
  name_update_success: 房间名修改成功!
 | 
					  name_update_success: 会议室名称修改成功!
 | 
				
			||||||
  no_user_email_exists: 没有指定电子邮件的现有用户。请确保输入正确。
 | 
					  no_user_email_exists: 没有指定电子邮件的现有用户。请确保输入正确。
 | 
				
			||||||
  omniauth_error: 与omniauth进行身份验证时出错。请再试一次,或与管理员联系!
 | 
					  omniauth_error: 与omniauth进行身份验证时出错。请再试一次,或与管理员联系!
 | 
				
			||||||
 | 
					  pagy:
 | 
				
			||||||
 | 
					    nav:
 | 
				
			||||||
 | 
					      prev: "‹ 上一页"
 | 
				
			||||||
 | 
					      next: "下一页 ›"
 | 
				
			||||||
 | 
					      gap: "…"
 | 
				
			||||||
  password: 密码
 | 
					  password: 密码
 | 
				
			||||||
  password_empty_notice: 密码不能为空。
 | 
					  password_empty_notice: 密码不能为空。
 | 
				
			||||||
  password_reset_success: 密码已重置。
 | 
					  password_reset_success: 密码已重置。
 | 
				
			||||||
@@ -209,10 +220,14 @@ zh_CN:
 | 
				
			|||||||
    google: Google
 | 
					    google: Google
 | 
				
			||||||
    microsoft_office365: Office 365
 | 
					    microsoft_office365: Office 365
 | 
				
			||||||
    twitter: Twitter
 | 
					    twitter: Twitter
 | 
				
			||||||
 | 
					  recaptcha:
 | 
				
			||||||
 | 
					    errors:
 | 
				
			||||||
 | 
					      recaptcha_unreachable: 哎呀,我们未能验证您的reCAPTCHA 响应。请再试一次。
 | 
				
			||||||
 | 
					      verification_failed: reCAPTCHA 验证失败,请再试一次。
 | 
				
			||||||
  recording:
 | 
					  recording:
 | 
				
			||||||
    all_recordings: 所有录像
 | 
					    all_recordings: 所有录像
 | 
				
			||||||
    email: 通过Email发送录像
 | 
					    email: 通过Email发送录像
 | 
				
			||||||
    no_recordings: "这个房间没有%{inject}录像"
 | 
					    no_recordings: "这个会议室没有%{inject}录像"
 | 
				
			||||||
    no_user_recordings: 您当前没有录像。
 | 
					    no_user_recordings: 您当前没有录像。
 | 
				
			||||||
    no_matched_recordings: "没有搜索到 %{inject} 录像"
 | 
					    no_matched_recordings: "没有搜索到 %{inject} 录像"
 | 
				
			||||||
    recorded_on: "录制于%{date}"
 | 
					    recorded_on: "录制于%{date}"
 | 
				
			||||||
@@ -232,7 +247,7 @@ zh_CN:
 | 
				
			|||||||
  reset_password:
 | 
					  reset_password:
 | 
				
			||||||
    subtitle: 重置密码
 | 
					    subtitle: 重置密码
 | 
				
			||||||
    password: 新密码
 | 
					    password: 新密码
 | 
				
			||||||
    confirm: 重复输入新密码
 | 
					    confirm: 再次输入新密码
 | 
				
			||||||
    update: 更新密码
 | 
					    update: 更新密码
 | 
				
			||||||
  roles:
 | 
					  roles:
 | 
				
			||||||
    administrator: 管理员
 | 
					    administrator: 管理员
 | 
				
			||||||
@@ -240,22 +255,22 @@ zh_CN:
 | 
				
			|||||||
    super_admin: 超级管理员
 | 
					    super_admin: 超级管理员
 | 
				
			||||||
    user: 用户
 | 
					    user: 用户
 | 
				
			||||||
  room:
 | 
					  room:
 | 
				
			||||||
    create_room: 创建房间
 | 
					    create_room: 创建会议室
 | 
				
			||||||
    create_room_error: 创建房间出错
 | 
					    create_room_error: 创建会议室出错
 | 
				
			||||||
    create_room_success: 房间创建成功
 | 
					    create_room_success: 会议室创建成功
 | 
				
			||||||
    invited: 您已被邀请加入
 | 
					    invited: 您已被邀请加入
 | 
				
			||||||
    invite_participants: 邀请参与者的链接
 | 
					    invite_participants: 邀请参与者的链接
 | 
				
			||||||
    join: 加入
 | 
					    join: 加入
 | 
				
			||||||
    last_session: "上一次会议%{session}"
 | 
					    last_session: "上一次会议%{session}"
 | 
				
			||||||
    owner: 主持人
 | 
					    owner: 主持人
 | 
				
			||||||
    no_sessions: 房间从未使用!
 | 
					    no_sessions: 会议室从未使用!
 | 
				
			||||||
    recordings: 房间录像
 | 
					    recordings: 会议录像
 | 
				
			||||||
    sessions: 会议
 | 
					    sessions: 会议
 | 
				
			||||||
    settings: 房间设置
 | 
					    settings: 会议室设置
 | 
				
			||||||
    start: 开始
 | 
					    start: 开始
 | 
				
			||||||
    unavailable: 由于未验证所有者的电子邮件,此房间当前不可用。
 | 
					    unavailable: 由于未验证所有者的电子邮件,此会议室当前不可用。
 | 
				
			||||||
    update_settings_error: 更新房间设置出错
 | 
					    update_settings_error: 修改会议室设置出错
 | 
				
			||||||
    update_settings_success: 房间设置更新成功
 | 
					    update_settings_success: 会议室设置修改成功
 | 
				
			||||||
    wait:
 | 
					    wait:
 | 
				
			||||||
      message: 哎呀!会议还没开始呢。
 | 
					      message: 哎呀!会议还没开始呢。
 | 
				
			||||||
      auto: 会议开始后您将自动进入
 | 
					      auto: 会议开始后您将自动进入
 | 
				
			||||||
@@ -265,21 +280,21 @@ zh_CN:
 | 
				
			|||||||
      language: 语言
 | 
					      language: 语言
 | 
				
			||||||
      provider: 应用平台
 | 
					      provider: 应用平台
 | 
				
			||||||
      image: 头像
 | 
					      image: 头像
 | 
				
			||||||
      image_url: 头像URL
 | 
					      image_url: 个人头像URL
 | 
				
			||||||
      subtitle: 更新您的帐户信息
 | 
					      subtitle: 更新帐户信息
 | 
				
			||||||
      title: 帐户信息
 | 
					      title: 帐户信息
 | 
				
			||||||
    delete:
 | 
					    delete:
 | 
				
			||||||
      button: 我确定要删除我的帐户
 | 
					      button: 我确定要删除我的帐户
 | 
				
			||||||
      disclaimer: 删除帐户后<b>无法</b>恢复。帐户所有相关信息都会被移除,包括设置、房间和录像。
 | 
					      disclaimer: 删除帐户后<b>无法</b>恢复。帐户所有相关信息都会被移除,包括设置、会议室和录像。
 | 
				
			||||||
      subtitle: 永久删除您的帐户
 | 
					      subtitle: 永久删除您的帐户
 | 
				
			||||||
      title: 删除帐户
 | 
					      title: 删除帐户
 | 
				
			||||||
    password:
 | 
					    password:
 | 
				
			||||||
      confirmation: 重复输入新密码
 | 
					      confirmation: 再次输入新密码
 | 
				
			||||||
      new: 新密码
 | 
					      new: 新密码
 | 
				
			||||||
      old: 旧密码
 | 
					      old: 旧密码
 | 
				
			||||||
      subtitle: 修改密码
 | 
					      subtitle: 修改密码
 | 
				
			||||||
      title: 密码
 | 
					      title: 密码
 | 
				
			||||||
    title: Profile
 | 
					    title: 个人设置
 | 
				
			||||||
    search: 搜索
 | 
					    search: 搜索
 | 
				
			||||||
  signup:
 | 
					  signup:
 | 
				
			||||||
    password_confirm: 重复输入新密码
 | 
					    password_confirm: 重复输入新密码
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -97,6 +97,15 @@ describe RoomsController, type: :controller do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      expect(assigns(:name)).to eql("")
 | 
					      expect(assigns(:name)).to eql("")
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it "redirects to admin if user is a super_admin" do
 | 
				
			||||||
 | 
					      @request.session[:user_id] = @owner.id
 | 
				
			||||||
 | 
					      @owner.add_role :super_admin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      get :show, params: { room_uid: @owner.main_room, search: :none }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      expect(response).to redirect_to(admins_path)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe "POST #create" do
 | 
					  describe "POST #create" do
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user