diff --git a/.rubocop.yml b/.rubocop.yml index eebb25d8..b3e193c2 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -121,6 +121,9 @@ Metrics/LineLength: Metrics/MethodLength: Enabled: false +Metrics/ModuleLength: + Enabled: false + # A calculated magnitude based on number of assignments, # branches, and conditions. Metrics/AbcSize: diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index f6752c67..dceefaa2 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -20,4 +20,26 @@ $(document).on('turbolinks:load', function(){ document.addEventListener("turbolinks:before-cache", function() { $(".alert").remove() -}) \ No newline at end of file +}) + +// Gets the localized string +function getLocalizedString(key) { + var keyArr = key.split(".") + var translated = I18n + + // Search current language for the key + keyArr.forEach(function(k) { + translated = translated[k] + }) + + // If key is not found, search the fallback language for the key + if (translated == undefined) { + translated = I18nFallback + + keyArr.forEach(function(k) { + translated = translated[k] + }) + } + + return translated +} \ No newline at end of file diff --git a/app/assets/javascripts/room.js b/app/assets/javascripts/room.js index bd7d9e93..f6fe3b27 100644 --- a/app/assets/javascripts/room.js +++ b/app/assets/javascripts/room.js @@ -32,10 +32,10 @@ $(document).on('turbolinks:load', function(){ if (success) { inviteURL.blur(); copy.addClass('btn-success'); - copy.html("" + I18n["copied"]) + copy.html("" + getLocalizedString("copied")) setTimeout(function(){ copy.removeClass('btn-success'); - copy.html("" + I18n["copy"]) + copy.html("" + getLocalizedString("copy")) }, 2000) } }); @@ -49,7 +49,7 @@ $(document).on('turbolinks:load', function(){ // Display and update all fields related to creating a room in the createRoomModal $("#create-room-block").click(function(){ $("#create-room-name").val("") - $("#create-room-access-code").text(I18n["modal"]["create_room"]["access_code_placeholder"]) + $("#create-room-access-code").text(getLocalizedString("modal.create_room.access_code_placeholder")) $("#room_access_code").val(null) $("#createRoomModal form").attr("action", $("body").data('relative-root')) @@ -94,10 +94,10 @@ $(document).on('turbolinks:load', function(){ accessCode = $(this).closest("#room-block").data("room-access-code") if(accessCode){ - $("#create-room-access-code").text(I18n["modal"]["create_room"]["access_code"] + ": " + accessCode) + $("#create-room-access-code").text(getLocalizedString("modal.create_room.access_code") + ": " + accessCode) $("#room_access_code").val(accessCode) } else{ - $("#create-room-access-code").text(I18n["modal"]["create_room"]["access_code_placeholder"]) + $("#create-room-access-code").text(getLocalizedString("modal.create_room.access_code_placeholder")) $("#room_access_code").val(null) } }) @@ -140,11 +140,11 @@ function generateAccessCode(){ accessCode += validCharacters.charAt(Math.floor(Math.random() * validCharacters.length)); } - $("#create-room-access-code").text(I18n["modal"]["create_room"]["access_code"] + ": " + accessCode) + $("#create-room-access-code").text(getLocalizedString("modal.create_room.access_code") + ": " + accessCode) $("#room_access_code").val(accessCode) } function ResetAccessCode(){ - $("#create-room-access-code").text(I18n["modal"]["create_room"]["access_code_placeholder"]) + $("#create-room-access-code").text(getLocalizedString("modal.create_room.access_code_placeholder")) $("#room_access_code").val(null) } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index b9951fcb..7ae53282 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -102,7 +102,13 @@ module ApplicationHelper # Return all the translations available in the client side through javascript def current_translations @translations ||= I18n.backend.send(:translations) - @translations[I18n.locale].with_indifferent_access + @translations[I18n.locale] + end + + # Return the fallback translations available in the client side through javascript + def fallback_translations + @fallback_translations ||= I18n.backend.send(:translations) + @fallback_translations[I18n.default_locale] end # Returns the page that the logo redirects to when clicked on diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 3c58ec9d..7ce06031 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -47,6 +47,7 @@