From e5fd2df025d15e0deb3f3db4b71bfa97c38887fb Mon Sep 17 00:00:00 2001 From: Robin Karlsson Date: Wed, 19 Apr 2023 14:57:30 +0300 Subject: [PATCH] Add localization for Uppy Uppy can be localized via locale files (config/locales/*.yml), by setting e.g. dashboard.uppy.strings.exceedsSize. --- apps/dashboard/app/javascript/packs/config.js | 8 ++++- .../app/javascript/packs/files/uppy_ops.js | 3 +- .../app/views/layouts/application.html.erb | 1 + apps/dashboard/test/system/files_test.rb | 33 +++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/apps/dashboard/app/javascript/packs/config.js b/apps/dashboard/app/javascript/packs/config.js index 0ecee69a10..233207b2be 100644 --- a/apps/dashboard/app/javascript/packs/config.js +++ b/apps/dashboard/app/javascript/packs/config.js @@ -38,9 +38,15 @@ function csrfToken() { return csrf_token; } +function uppyLocale() { + const cfgData = configData(); + return JSON.parse(cfgData['uppyLocale']); +} + export { maxFileSize, transfersPath, jobsInfoPath, - csrfToken + csrfToken, + uppyLocale }; diff --git a/apps/dashboard/app/javascript/packs/files/uppy_ops.js b/apps/dashboard/app/javascript/packs/files/uppy_ops.js index 03a3ecf730..c9ec671c7c 100755 --- a/apps/dashboard/app/javascript/packs/files/uppy_ops.js +++ b/apps/dashboard/app/javascript/packs/files/uppy_ops.js @@ -3,7 +3,7 @@ import Dashboard from '@uppy/dashboard' import XHRUpload from '@uppy/xhr-upload' import _ from 'lodash'; import {CONTENTID, EVENTNAME as DATATABLE_EVENTNAME} from './data_table.js'; -import { maxFileSize, csrfToken } from '../config.js'; +import { maxFileSize, csrfToken, uppyLocale } from '../config.js'; let uppy = null; @@ -70,6 +70,7 @@ jQuery(function() { maxFileSize: maxFileSize(), }, onBeforeUpload: updateEndpoint, + locale: uppyLocale(), }); uppy.use(EmptyDirCreator); diff --git a/apps/dashboard/app/views/layouts/application.html.erb b/apps/dashboard/app/views/layouts/application.html.erb index 60f9dd6852..df7fe5d20b 100644 --- a/apps/dashboard/app/views/layouts/application.html.erb +++ b/apps/dashboard/app/views/layouts/application.html.erb @@ -25,6 +25,7 @@ data-max-file-size="<%= Configuration.file_upload_max %>" data-transfers-path="<%= transfers_path(format: "json") if respond_to?(:transfers_path) %>" data-jobs-info-path="<%= jobs_info_path('delme', 'delme').gsub(/[\/]*delme[\/]*/,'') %>" + data-uppy-locale="<%= I18n.t('dashboard.uppy', :default => {}).to_json %>" /> diff --git a/apps/dashboard/test/system/files_test.rb b/apps/dashboard/test/system/files_test.rb index 0d43348bc8..9428cac0b7 100644 --- a/apps/dashboard/test/system/files_test.rb +++ b/apps/dashboard/test/system/files_test.rb @@ -257,4 +257,37 @@ class FilesTest < ApplicationSystemTestCase assert_equal 'foobar', File.read(file) end end + + test 'uppy localization' do + with_modified_env(FILE_UPLOAD_MAX: '10') do + Dir.mktmpdir do |dir| + # No localization (default) + visit files_url(dir) + find('#upload-btn').click + find('.uppy-Dashboard-AddFiles', wait: MAX_WAIT) + + src_file = 'test/fixtures/files/upload/osc-logo.png' + attach_file 'files[]', src_file, visible: false, match: :first + + find('.uppy.uppy-Informer', text: /osc-logo.png exceeds [\w ]+ size of 10 B/, wait: MAX_WAIT) + + # Temporarily add localization for max upload size error + en = { :dashboard => { :uppy => { :strings => { :exceedsSize => 'custom error, %{file}, %{size}' } } } } + I18n.backend.store_translations(:en, en) + + visit files_url(dir) + find('#upload-btn').click + find('.uppy-Dashboard-AddFiles', wait: MAX_WAIT) + + src_file = 'test/fixtures/files/upload/osc-logo.png' + attach_file 'files[]', src_file, visible: false, match: :first + + find('.uppy.uppy-Informer', text: 'custom error, osc-logo.png, 10 B', wait: MAX_WAIT) + + I18n.backend.reload! + # Clear browser logs + page.driver.browser.logs.get(:browser) + end + end + end end