const translations = { en: { uploading: 'Uploading', uploadingItem: 'Uploading 1 item', uploadingItems: 'Uploading {quantity} items', upload: 'Upload', remove: 'Remove', download: 'Download', downloadingItem: 'Downloading 1 item', downloadingItems: 'Downloading {quantity} items', rename: 'Rename', creating: 'Creating', creatingName: 'Creating {name}...', create: 'Create', createFolder: 'Create folder', zipping: 'Zipping', zippingItem: 'Zipping 1 item', zippingItems: 'Zipping {quantity} items', items: 'items', item: 'item', cancel: 'Cancel', confirm: 'Confirm', folderName: 'Folder name', files: 'files', fileExist: 'File or folder with name {name} already exists', newName: 'New name', emptyName: "Name can't be empty", tooLongFolderName: "Folder name can't contain more than 255 characters", folderNameNotAllowedCharacters: 'Folder name contains not allowed characters', title: 'Title', fileSize: 'File size', lastModified: 'Last modified', redundancy: 'Redundancy', health: 'Health', reallyRemove: '{files} will be deleted. Do you really want to proceed?', unableReadDir: 'Unable to read a directory.' }, de: { uploading: 'Wird hochgeladen', uploadingItem: '1 Element wird geladen', uploadingItems: '{quantity} Elemente werden geladen', upload: 'Hochladen', remove: 'Löschen', download: 'Herunterladen', rename: 'Umbenennen', creating: 'Wird erstellt', creatingName: '{name} wird angelegt...', create: 'Erstellen', createFolder: 'Verzeichnis erstellen', zipping: 'Zippen', items: 'Elemente', item: 'Element', cancel: 'Stornieren', confirm: 'Bestätigen', folderName: ' Verzeichnisname', files: 'Dateien', fileExist: 'Die Datei oder Verzeichnis mit dem Namen {name} existiert bereits', newName: 'Neuer Name', emptyName: 'Der Name darf nicht leer sein', tooLongFolderName: 'Der Verzeichnisname darf nicht mehr als 255 Symbole enthalten', folderNameNotAllowedCharacters: 'Das Verzeichnisname enthält nicht erlaubte Zeichen', title: 'Titel', fileSize: 'Dateigröße', lastModified: 'Zuletzt geändert', reallyRemove: '{files} wird/werden gelöscht. Möchten Sie wirklich fortfahren?', unableReadDir: 'Ein Directory kann nicht gelesen werden.' }, fi: { uploading: 'Siirretään palvelimeen', uploadingItem: 'Ladataan 1 nimike', uploadingItems: 'Ladataan {quantity} nimikettä', upload: 'Siirrä palvelimeen', remove: 'Poista', download: 'Lataa', rename: 'Nimeä uudelleen', creating: 'Luodaan', creatingName: 'Luodaan {name}...', create: 'Luo', createFolder: 'Luo kansio', zipping: 'Pakataan', zippingItem: 'Pakataan 1 nimike', zippingItems: 'Pakataan {quantity} nimikettä', items: 'nimikettä', item: 'nimike', cancel: 'Peruuta', confirm: 'Vahvista', folderName: 'Kansion nimi', files: 'tiedostot', fileExist: 'Tiedosto tai kansio, jonka nimi on {name} on jo luotu', newName: 'Uusi nimi', emptyName: 'Nimi ei voi olla tyhjä', tooLongFolderName: 'Kansion nimi saa sisältää enintään 255 merkkiä', folderNameNotAllowedCharacters: 'Kansion nimessä on kiellettyjä merkkejä', title: 'Otsikko', fileSize: 'Tiedostokoko', lastModified: 'Muokattu viimeksi', reallyRemove: '{files} poistetaan. Haluatko varmasti jatkaa?', unableReadDir: 'Hakemistoa ei voi lukea.' }, hu: { uploading: 'Feltöltés', uploadingItem: '1 elem feltöltése', uploadingItems: '{quantity} elem feltöltése', upload: 'Feltöltés', remove: 'Törlés', download: 'Letöltés', rename: 'Átnevezés', creating: 'Létrehozás', creatingName: '{name} létrehozása...', create: 'Létrehoz', createFolder: 'Mappa létrehozása', zipping: 'Tömörítés', zippingItem: '1 elem tömörítése', zippingItems: '{quantity} elem tömörítése', items: 'elemek', item: 'elem', cancel: 'Mégse', confirm: 'Megerősít', folderName: 'Mappa neve', files: 'Fájlok', fileExist: 'Fájl vagy mappa {name} névvel nem létezik', newName: 'Új név', emptyName: 'Név nem lehet üres', tooLongFolderName: 'Mappa neve nem lehet 255 karakternél hosszabb', folderNameNotAllowedCharacters: 'Mappa neve tiltott karaktereket tartalmaz', title: 'Cím', fileSize: 'Fájl mérete', lastModified: 'Utoljára módosítva', reallyRemove: '{files} fájl törölve lesz. Tényleg folytatni akarja?', unableReadDir: 'Nem lehet olvasni a könyvtárat.' }, no: { uploading: 'Opplasting', uploadingItem: 'Laster opp 1 element', uploadingItems: 'Laster opp {quantity} elementer', upload: 'Last opp', remove: 'Fjern', download: 'Last ned', rename: 'Gi nytt navn', creating: 'Opprette', creatingName: 'Opprette {name}...', create: 'Opprett', createFolder: 'Opprett mappe', zipping: 'Zipper', zippingItem: 'Zipper 1 element', zippingItems: 'Zipper {quantity} elementer', items: 'elementer', item: 'element', cancel: 'Avbryt', confirm: 'Bekreft', folderName: 'Mappenavn', files: 'filer', fileExist: 'Fil eller mappe med navn {name} eksisterer allerede', newName: 'Nytt navn', emptyName: 'Navnet kan ikke være tomt', tooLongFolderName: 'Mappenavn kan ikke inneholde mer enn 255 tegn', folderNameNotAllowedCharacters: 'Mappenavn inneholder tegn som ikke er tillatt', title: 'Tittel', fileSize: 'Filstørrelse', lastModified: 'Sist endret', reallyRemove: '{files} vil bli slettet. Vil du fortsette?', unableReadDir: 'Kan ikke lese en katalog.' }, ru: { uploading: 'Загрузка', uploadingItem: 'Загрузка 1 позиции', uploadingItems: 'Загрузка {quantity} позиций', upload: 'Загрузка', remove: 'Remove', download: 'Загрузить', rename: 'Переименовать', creating: 'Создание', creatingName: 'Создание {name}...', create: 'Создать', createFolder: 'Создать папку', zipping: 'Архивирование', zippingItem: 'Архивирование 1 позиции', zippingItems: 'Архивирование {quantity} позиций', items: 'позиции', item: 'позиция', cancel: 'Отмена', confirm: 'Подтвердить', folderName: 'Имя папки', files: 'файлы', fileExist: 'Файл или папка с именем {name} уже существует', newName: 'Новое имя', emptyName: 'Имя не может быть пустым', tooLongFolderName: 'Имя папки не может содержать более 255 символов', folderNameNotAllowedCharacters: 'Имя папки содержит недопустимые символы', title: 'Название', fileSize: 'Размер папки', lastModified: 'Последнее изменение', reallyRemove: '{files} будут удалены. Продолжить?', unableReadDir: 'Невозможно прочитать каталог.' }, sv: { uploading: 'Överför', uploadingItem: 'Överför 1 post', uploadingItems: 'Överför {quantity} poster', upload: 'Överför', remove: 'Ta bort', download: 'Hämta', rename: 'Ändra namn', creating: 'Skapar', creatingName: 'Skapar {name}...', create: 'Skapa', createFolder: 'Skapa mapp', zipping: 'Komprimerar', zippingItem: 'Komprimerar 1 post', zippingItems: 'Komprimerar {quantity} poster', items: 'poster', item: 'post', cancel: 'Avbryt', confirm: 'Bekräfta', folderName: 'Mappnamn', files: 'filer', fileExist: 'Fil eller mapp med namnet {name} existerar redan', newName: 'Nytt namn', emptyName: 'Namnet får inte vara tomt', tooLongFolderName: 'Mappnamnet kan inte innehålla mer än 255 tecken', folderNameNotAllowedCharacters: 'Mappnamnet innehåller otillåtna tecken', title: 'Rubrik', fileSize: 'Filstorlek', lastModified: 'Senast ändrad', reallyRemove: '{files} kommer att tas bort. Vill du verkligen fortsätta?', unableReadDir: 'Det gick inte att läsa en katalog.' } } export default function getMessage(locale, key, params) { const translationExists = translations[locale] && translations[locale][key] const translation = translationExists ? translations[locale][key] : translations['en'][key] if (!params) { return translation } const re = /{\w+}/g function replace(match) { const replacement = match.slice(1, -1) return params[replacement] ? params[replacement] : '' } return translation.replace(re, replace) }