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 @@