Explorar el Código

Add translations for aria labels in provider views (#1696)

* @uppy/provider-views - added translations for aria-labels

* @uppy/locales - added translations for provider views
Evgenia Karunus hace 5 años
padre
commit
f88b0c5bc1

+ 8 - 3
packages/@uppy/core/src/index.js

@@ -28,10 +28,10 @@ class Uppy {
   static VERSION = require('../package.json').version
 
   /**
-  * Instantiate Uppy
+   * Instantiate Uppy
    *
-  * @param {Object} opts — Uppy options
-  */
+   * @param {Object} opts — Uppy options
+   */
   constructor (opts) {
     this.defaultLocale = {
       strings: {
@@ -59,6 +59,11 @@ class Uppy {
           1: 'Select %{smart_count} files',
           2: 'Select %{smart_count} files'
         },
+        selectAllFilesFromFolderNamed: 'Select all files from folder %{name}',
+        unselectAllFilesFromFolderNamed: 'Unselect all files from folder %{name}',
+        selectFileNamed: 'Select file %{name}',
+        unselectFileNamed: 'Unselect file %{name}',
+        openFolderNamed: 'Open folder %{name}',
         cancel: 'Cancel',
         logOut: 'Log out',
         filter: 'Filter',

+ 6 - 1
packages/@uppy/locales/src/ar_SA.js

@@ -129,7 +129,12 @@ ar_SA.strings = {
     '0': 'يجب ان تختار على الاقل  %{smart_count} ملف',
     '1': 'يجب ان تختار على الاقل  %{smart_count} ملفات',
     '2': 'يجب ان تختار على الاقل  %{smart_count} ملفات'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'حدد جميع الملفات من المجلد %{name}',
+  unselectAllFilesFromFolderNamed: 'قم بإلغاء تحديد جميع الملفات من المجلد %{name}',
+  selectFileNamed: 'اختر الملف %{name}',
+  unselectFileNamed: 'إلغاء تحديد الملف %{name}',
+  openFolderNamed: 'افتح المجلد %{name}'
 }
 
 ar_SA.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/de_DE.js

@@ -131,7 +131,12 @@ de_DE.strings = {
     '0': 'Sie müssen mindestens %{smart_count} Datei auswählen',
     '1': 'Sie müssen mindestens %{smart_count} Dateien auswählen',
     '2': 'Sie müssen mindestens %{smart_count} Dateien auswählen'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Wählen Sie alle Dateien aus dem Ordner %{name}',
+  unselectAllFilesFromFolderNamed: 'Heben Sie die Auswahl aller Dateien aus dem Ordner auf %{name}',
+  selectFileNamed: 'Datei aussuchen %{name}',
+  unselectFileNamed: 'Datei abwählen %{name}',
+  openFolderNamed: 'Ordner öffnen %{name}'
 }
 
 de_DE.pluralize = function (n) {

+ 5 - 0
packages/@uppy/locales/src/en_US.js

@@ -62,6 +62,7 @@ en_US.strings = {
   myDevice: 'My Device',
   noFilesFound: 'You have no files or folders here',
   noInternetConnection: 'No Internet connection',
+  openFolderNamed: 'Open folder %{name}',
   pause: 'Pause',
   pauseUpload: 'Pause upload',
   paused: 'Paused',
@@ -79,6 +80,8 @@ en_US.strings = {
   retry: 'Retry',
   retryUpload: 'Retry upload',
   saveChanges: 'Save changes',
+  selectAllFilesFromFolderNamed: 'Select all files from folder %{name}',
+  selectFileNamed: 'Select file %{name}',
   selectXFiles: {
     '0': 'Select %{smart_count} file',
     '1': 'Select %{smart_count} files',
@@ -89,6 +92,8 @@ en_US.strings = {
   stopRecording: 'Stop video recording',
   takePicture: 'Take a picture',
   timedOut: 'Upload stalled for %{seconds} seconds, aborting.',
+  unselectAllFilesFromFolderNamed: 'Unselect all files from folder %{name}',
+  unselectFileNamed: 'Unselect file %{name}',
   upload: 'Upload',
   uploadComplete: 'Upload complete',
   uploadFailed: 'Upload failed',

+ 6 - 1
packages/@uppy/locales/src/es_ES.js

@@ -130,7 +130,12 @@ es_ES.strings = {
     '0': 'Tienes que seleccionar al menos %{smart_count} archivo',
     '1': 'Tienes que seleccionar al menos %{smart_count} archivos',
     '2': 'Tienes que seleccionar al menos %{smart_count} archivos'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Seleccionar todos los archivos de la carpeta %{name}',
+  unselectAllFilesFromFolderNamed: 'Deselecciona todos los archivos de la carpeta %{name}',
+  selectFileNamed: 'Seleccione archivo %{name}',
+  unselectFileNamed: 'Deseleccionar archivo %{name}',
+  openFolderNamed: 'Carpeta abierta %{name}'
 }
 
 es_ES.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/es_GL.js

@@ -129,7 +129,12 @@ es_GL.strings = {
     '0': 'Tes que seleccionar polo menos %{smart_count} arquivo',
     '1': 'Tes que seleccionar polo menos %{smart_count} arquivos',
     '2': 'Tes que seleccionar polo menos %{smart_count} arquivos'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Seleccionar todos los archivos de la carpeta %{name}',
+  unselectAllFilesFromFolderNamed: 'Deselecciona todos los archivos de la carpeta %{name}',
+  selectFileNamed: 'Seleccione archivo %{name}',
+  unselectFileNamed: 'Deseleccionar archivo %{name}',
+  openFolderNamed: 'Carpeta abierta %{name}'
 }
 
 es_GL.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/fa_IR.js

@@ -130,7 +130,12 @@ fa_IR.strings = {
     '0': 'می‌بایست حداقل %{smart_count} فایل انتخاب کنید',
     '1': 'می‌بایست حداقل %{smart_count} فایل انتخاب کنید',
     '2': 'می‌بایست حداقل %{smart_count} فایل انتخاب کنید'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'همه فایل ها را از پوشه انتخاب کنید %{name}',
+  unselectAllFilesFromFolderNamed: 'همه فایل ها را از پوشه حذف کنید %{name}',
+  selectFileNamed: 'فایل را انتخاب کنید %{name}',
+  unselectFileNamed: 'لغو انتخاب پرونده %{name}',
+  openFolderNamed: 'پوشه باز کنید %{name}'
 }
 
 fa_IR.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/fr_FR.js

@@ -130,7 +130,12 @@ fr_FR.strings = {
     '0': 'Vous devez sélectionner au moins %{smart_count} fichier',
     '1': 'Vous devez sélectionner au moins %{smart_count} fichiers',
     '2': 'Vous devez sélectionner au moins %{smart_count} fichiers'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Sélectionner tous les fichiers du dossier %{name}',
+  unselectAllFilesFromFolderNamed: 'Désélectionner tous les fichiers du dossier%{name}',
+  selectFileNamed: 'Choisir le dossier %{name}',
+  unselectFileNamed: 'Désélectionner le fichier %{name}',
+  openFolderNamed: 'Dossier ouvert %{name}'
 }
 
 fr_FR.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/hu_HU.js

@@ -131,7 +131,12 @@ hu_HU.strings = {
     '0': 'Legalább %{smart_count} fájlt ki kell választania',
     '1': 'Legalább %{smart_count} fájlt ki kell választania',
     '2': 'Legalább %{smart_count} fájlt ki kell választania'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Válassza ki az összes fájlt a mappából %{name}',
+  unselectAllFilesFromFolderNamed: 'Az összes fájl törlése a mappából %{name}',
+  selectFileNamed: 'Válaszd ki a fájlt %{name}',
+  unselectFileNamed: 'A fájl törlése %{name}',
+  openFolderNamed: 'Nyitott mappa %{name}'
 }
 
 hu_HU.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/it_IT.js

@@ -130,7 +130,12 @@ it_IT.strings = {
     '0': 'Devi selezionare almeno %{smart_count} file',
     '1': 'Devi selezionare almeno %{smart_count} file',
     '2': 'Devi selezionare almeno %{smart_count} file'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Seleziona tutti i file dalla cartella %{name}',
+  unselectAllFilesFromFolderNamed: 'Deseleziona tutti i file dalla cartella %{name}',
+  selectFileNamed: 'Seleziona il file %{name}',
+  unselectFileNamed: 'Deseleziona il file %{name}',
+  openFolderNamed: 'Cartella aperta %{name}'
 }
 
 it_IT.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/ja_JP.js

@@ -129,7 +129,12 @@ ja_JP.strings = {
     '0': '最低でも %{smart_count} ファイル選択してください',
     '1': '最低でも %{smart_count} ファイル選択してください',
     '2': '最低でも %{smart_count} ファイル選択してください'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'フォルダからすべてのファイルを選択 %{name}',
+  unselectAllFilesFromFolderNamed: 'フォルダからすべてのファイルを選択解除 %{name}',
+  selectFileNamed: 'ファイルを選ぶ %{name}',
+  unselectFileNamed: 'ファイルの選択を解除 %{name}',
+  openFolderNamed: '開いたフォルダ %{name}'
 }
 
 ja_JP.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/nl_NL.js

@@ -130,7 +130,12 @@ nl_NL.strings = {
     '0': 'Je moet minstens %{smart_count} bestand selecteren',
     '1': 'Je moet minstens %{smart_count} bestanden selecteren',
     '2': 'Je moet minstens %{smart_count} bestanden selecteren'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Selecteer alle bestanden uit de map %{name}',
+  unselectAllFilesFromFolderNamed: 'Deselecteer alle bestanden uit de map %{name}',
+  selectFileNamed: 'Selecteer bestand %{name}',
+  unselectFileNamed: 'Deselecteer bestand %{name}',
+  openFolderNamed: 'Open folder %{name}'
 }
 
 nl_NL.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/pt_BR.js

@@ -129,7 +129,12 @@ pt_BR.strings = {
     '0': 'Você precisa selecionar pelo menos %{smart_count} arquivo',
     '1': 'Você precisa selecionar pelo menos %{smart_count} arquivos',
     '2': 'Você precisa selecionar pelo menos %{smart_count} arquivos'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Selecione todos os arquivos da pasta %{name}',
+  unselectAllFilesFromFolderNamed: 'Desmarque todos os arquivos da pasta %{name}',
+  selectFileNamed: 'Selecione o arquivo %{name}',
+  unselectFileNamed: 'Deselecionar arquivo %{name}',
+  openFolderNamed: 'Pasta aberta %{name}'
 }
 
 pt_BR.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/ru_RU.js

@@ -132,7 +132,12 @@ ru_RU.strings = {
     '0': 'Вы должны выбрать хотя бы %{smart_count} файл',
     '1': 'Вы должны выбрать хотя бы %{smart_count} файла',
     '2': 'Вы должны выбрать хотя бы %{smart_count} файлов'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Выбрать все файлы из папки %{name}',
+  unselectAllFilesFromFolderNamed: 'Отменить выбор всех файлов из папки %{name}',
+  selectFileNamed: 'Выбрать файл %{name}',
+  unselectFileNamed: 'Отменить выбор файла %{name}',
+  openFolderNamed: 'Открыть папку %{name}'
 }
 
 ru_RU.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/sr_RS_Latin.js

@@ -129,7 +129,12 @@ sr_RS_Latin.strings = {
     '0': 'Izaberite bar jednu datoteku',
     '1': 'Izaberite datoteke. Najmanje: %{smart_count}',
     '2': 'Izaberite datoteke. Najmanje: %{smart_count}'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Izaberite sve datoteke iz foldera %{name}',
+  unselectAllFilesFromFolderNamed: 'Isključite sve datoteke iz fascikle %{name}',
+  selectFileNamed: 'Izaberite fajl %{name}',
+  unselectFileNamed: 'Isključite fajl %{name}',
+  openFolderNamed: 'Otvori folder %{name}'
 }
 
 sr_RS_Latin.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/tr_TR.js

@@ -129,7 +129,12 @@ tr_TR.strings = {
     '0': 'En az %{smart_count} dosya seçmelisin',
     '1': 'En az %{smart_count} dosya seçmelisin',
     '2': 'En az %{smart_count} dosya seçmelisin'
-  }
+  },
+  selectAllFilesFromFolderNamed: 'Klasördeki tüm dosyaları seç %{name}',
+  unselectAllFilesFromFolderNamed: 'Klasördeki tüm dosyaların seçimini kaldır %{name}',
+  selectFileNamed: 'Dosya Seç %{name}',
+  unselectFileNamed: 'Dosya seçimini kaldır %{name}',
+  openFolderNamed: 'Açık dosya %{name}'
 }
 
 tr_TR.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/zh_CN.js

@@ -130,7 +130,12 @@ zh_CN.strings = {
     '0': '您至少要选择%{smart_count}个文件',
     '1': '您至少要选择%{smart_count}个文件',
     '2': '您至少要选择%{smart_count}个文件'
-  }
+  },
+  selectAllFilesFromFolderNamed: '从文件夹中选择所有文件 %{name}',
+  unselectAllFilesFromFolderNamed: '取消选择文件夹中的所有文件 %{name}',
+  selectFileNamed: '选择文件 %{name}',
+  unselectFileNamed: '取消选择文件 %{name}',
+  openFolderNamed: '打开文件夹 %{name}'
 }
 
 zh_CN.pluralize = function (n) {

+ 6 - 1
packages/@uppy/locales/src/zh_TW.js

@@ -130,7 +130,12 @@ zh_TW.strings = {
     '0': '您至少要選擇%{smart_count}個文件',
     '1': '您至少要選擇%{smart_count}個文件',
     '2': '您至少要選擇%{smart_count}個文件'
-  }
+  },
+  selectAllFilesFromFolderNamed: '从文件夹中选择所有文件 %{name}',
+  unselectAllFilesFromFolderNamed: '取消选择文件夹中的所有文件 %{name}',
+  selectFileNamed: '选择文件 %{name}',
+  unselectFileNamed: '取消选择文件 %{name}',
+  openFolderNamed: '打开文件夹 %{name}'
 }
 
 zh_TW.pluralize = function (n) {

+ 1 - 1
packages/@uppy/provider-views/src/Item/components/GridLi.js

@@ -10,7 +10,7 @@ module.exports = (props) => {
       onclick={props.toggleCheckbox}
 
       role="option"
-      aria-label={`${props.isChecked ? 'Unselect' : 'Select'} ${props.title} file`}
+      aria-label={props.isChecked ? props.i18n('unselectFileNamed', { name: props.title }) : props.i18n('selectFileNamed', { name: props.title })}
       aria-selected={props.isChecked}
       aria-disabled={props.isDisabled}
       data-uppy-super-focusable

+ 18 - 7
packages/@uppy/provider-views/src/Item/components/ListLi.js

@@ -1,5 +1,21 @@
 const { h } = require('preact')
 
+const getAriaLabelOfCheckbox = (props) => {
+  if (props.type === 'folder') {
+    if (props.isChecked) {
+      return props.i18n('unselectAllFilesFromFolderNamed', { name: props.title })
+    } else {
+      return props.i18n('selectAllFilesFromFolderNamed', { name: props.title })
+    }
+  } else {
+    if (props.isChecked) {
+      return props.i18n('unselectFileNamed', { name: props.title })
+    } else {
+      return props.i18n('selectFileNamed', { name: props.title })
+    }
+  }
+}
+
 // if folder:
 //   + checkbox (selects all files from folder)
 //   + folder name (opens folder)
@@ -12,15 +28,10 @@ module.exports = (props) => {
       type="button"
       class={`uppy-u-reset uppy-ProviderBrowserItem-fakeCheckbox ${props.isChecked ? 'uppy-ProviderBrowserItem-fakeCheckbox--is-checked' : ''}`}
       onClick={props.toggleCheckbox}
-
       // for the <label/>
       id={props.id}
       role="option"
-      aria-label={
-        props.type === 'folder'
-          ? `${props.isChecked ? 'Unselect' : 'Select'} all files from ${props.title} folder`
-          : `${props.isChecked ? 'Unselect' : 'Select'} ${props.title} file`
-      }
+      aria-label={getAriaLabelOfCheckbox(props)}
       aria-selected={props.isChecked}
       aria-disabled={props.isDisabled}
       data-uppy-super-focusable
@@ -38,7 +49,7 @@ module.exports = (props) => {
           type="button"
           class="uppy-u-reset uppy-ProviderBrowserItem-inner"
           onclick={props.handleFolderClick}
-          aria-label={`Open ${props.title} folder`}
+          aria-label={props.i18n('openFolderNamed', { name: props.title })}
         >
           {props.itemIconEl}
           {props.showTitles && props.title}

+ 2 - 3
packages/@uppy/provider-views/src/ItemList.js

@@ -6,11 +6,11 @@ const getSharedProps = (fileOrFolder, props) => ({
   title: fileOrFolder.name,
   getItemIcon: () => fileOrFolder.icon,
   isChecked: props.isChecked(fileOrFolder),
-
   toggleCheckbox: (e) => props.toggleCheckbox(e, fileOrFolder),
   columns: props.columns,
   showTitles: props.showTitles,
-  viewType: props.viewType
+  viewType: props.viewType,
+  i18n: props.i18n
 })
 
 module.exports = (props) => {
@@ -23,7 +23,6 @@ module.exports = (props) => {
       <ul class="uppy-ProviderBrowser-list"
         onscroll={props.handleScroll}
         role="listbox"
-        aria-label={`List of files from ${props.title}`}
         // making <ul> not focusable for firefox
         tabindex="-1">
         {props.folders.map(folder =>

+ 3 - 2
packages/@uppy/utils/src/Translator.js

@@ -8,10 +8,11 @@
  * as opposed to `||||` delimeter
  *
  * Usage example: `translator.translate('files_chosen', {smart_count: 3})`
- *
- * @param {object|Array<object>} locale Locale or list of locales.
  */
 module.exports = class Translator {
+  /**
+   * @param {Object|Array<Object>} locales - locale or list of locales.
+   */
   constructor (locales) {
     this.locale = {
       strings: {},