diff --git a/app/assets/javascripts/app/controllers/_ui_element/basedate.coffee b/app/assets/javascripts/app/controllers/_ui_element/basedate.coffee index bdbb61b15..864fdd0d7 100644 --- a/app/assets/javascripts/app/controllers/_ui_element/basedate.coffee +++ b/app/assets/javascripts/app/controllers/_ui_element/basedate.coffee @@ -155,4 +155,4 @@ class App.UiElement.basedate clear: 'clear' } - App.i18n.translateDeep(data) + App.i18n.translateDeepPlain(data) diff --git a/app/assets/javascripts/app/lib/app_post/i18n.coffee b/app/assets/javascripts/app/lib/app_post/i18n.coffee index 61dcb8036..86482bedb 100644 --- a/app/assets/javascripts/app/lib/app_post/i18n.coffee +++ b/app/assets/javascripts/app/lib/app_post/i18n.coffee @@ -8,7 +8,12 @@ class App.i18n @translateDeep: (input, args...) -> if _instance == undefined _instance ?= new _i18nSingleton() - _instance.translateDeep(input, args) + _instance.translateDeep(input, args, false) + + @translateDeepPlain: (input, args...) -> + if _instance == undefined + _instance ?= new _i18nSingleton() + _instance.translateDeep(input, args, true) @translateContent: (string, args...) -> if _instance == undefined @@ -230,17 +235,20 @@ class _i18nSingleton extends Spine.Module return string if !string @translate(string, args, true) - translateDeep: (input, args) => + translateDeep: (input, args, plain) => if _.isArray(input) _.map input, (item) => - @translateDeep(item, args) + @translateDeep(item, args, plain) else if _.isObject(input) _.reduce _.keys(input), (memo, item) => - memo[item] = @translateDeep(input[item]) + memo[item] = @translateDeep(input[item], args, plain) memo , {} else - @translateInline(input, args) + if plain + @translatePlain(input, args) + else + @translateInline(input, args) translateContent: (string, args) => diff --git a/public/assets/tests/i18n.js b/public/assets/tests/i18n.js index 0b994235f..55b6c724a 100644 --- a/public/assets/tests/i18n.js +++ b/public/assets/tests/i18n.js @@ -70,6 +70,24 @@ test('i18n .detectBrowserLocale', function() { translated = App.i18n.translateInline('yes') equal(translated, 'ja', 'de-de - yes / ja translated correctly') + translated = App.i18n.translateDeep({ + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + today: 'today', + }) + deepEqual(translated, { + days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], + today: 'Heute', + }, 'de-de - deep object/array translated correctly') + + translated = App.i18n.translateDeepPlain({ + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + today: 'today', + }) + deepEqual(translated, { + days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], + today: 'Heute', + }, 'de-de - deep object/array translated correctly') + translated = App.i18n.translateContent('%s ago', 123); equal(translated, 'vor 123', 'de-de - %s')