diff --git a/i18n/bn-IN.properties b/i18n/bn-IN.properties index a2de5d61ae..e4907f82a4 100644 --- a/i18n/bn-IN.properties +++ b/i18n/bn-IN.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} v{version_number}মুছে দিয়েছে # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} কোলাবোরেটর {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} জন সহযোগী v{versions}আপলোড করেছে # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/da-DK.properties b/i18n/da-DK.properties index 26ea7951e5..043179ec7b 100644 --- a/i18n/da-DK.properties +++ b/i18n/da-DK.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} slettede v{version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} samarbejdspartnere {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} samarbejdspartnere uploadede v{versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/de-DE.properties b/i18n/de-DE.properties index 172234a5ac..a5d5d74320 100644 --- a/i18n/de-DE.properties +++ b/i18n/de-DE.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} hat Version {version_number} gelöscht # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} Mitarbeiter {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} Mitarbeiter haben Versionen {versions} hochgeladen # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/es-419.properties b/i18n/es-419.properties index c61db8a791..e0bf0cb3c4 100644 --- a/i18n/es-419.properties +++ b/i18n/es-419.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} ha eliminado la versión {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} colaboradores {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} colaboradores han cargado las versiones {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/es-ES.properties b/i18n/es-ES.properties index 99e3b0d445..bd6cfd2977 100644 --- a/i18n/es-ES.properties +++ b/i18n/es-ES.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} ha eliminado la versión {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} colaboradores {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} colaboradores han cargado las versiones {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/fi-FI.properties b/i18n/fi-FI.properties index e7571da4bc..6ca4cceb60 100644 --- a/i18n/fi-FI.properties +++ b/i18n/fi-FI.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} poisti version {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} yhteistyökumppania {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} yhteistyökumppania latasi palvelimeen {versions} versiota # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/fr-CA.properties b/i18n/fr-CA.properties index a63d15cd98..b90c6247cc 100644 --- a/i18n/fr-CA.properties +++ b/i18n/fr-CA.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} a supprimé la version {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborateurs {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} collaborateurs ont chargé les versions {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/fr-FR.properties b/i18n/fr-FR.properties index a63d15cd98..b90c6247cc 100644 --- a/i18n/fr-FR.properties +++ b/i18n/fr-FR.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} a supprimé la version {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborateurs {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} collaborateurs ont chargé les versions {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/hi-IN.properties b/i18n/hi-IN.properties index 3f82e86716..3ac131715a 100644 --- a/i18n/hi-IN.properties +++ b/i18n/hi-IN.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} ने वर्ज़न {version_number} हटाया # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} सहयोगियों ने {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} सहयोगियों ने वर्ज़न {versions} अपलोड किया # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/it-IT.properties b/i18n/it-IT.properties index 8ef26553bf..e4ee5759e4 100644 --- a/i18n/it-IT.properties +++ b/i18n/it-IT.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} ha eliminato la versione {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaboratori {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} collaboratori hanno caricato le versioni {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/ko-KR.properties b/i18n/ko-KR.properties index 43a8cdef89..011849664a 100644 --- a/i18n/ko-KR.properties +++ b/i18n/ko-KR.properties @@ -845,11 +845,11 @@ be.uploadsRetryButtonTooltip = 업로드 다시 시도 # Error message shown when account storage limit has been reached be.uploadsStorageLimitErrorMessage = 계정 저장 공간 제한 도달 # Message displayed in the activity feed to represent the range of versions actioned by a single user. {name} is the user who did the action. {actionMessage} is the action. {versions} is a range of versions. -be.versionCollapsed = {name} {actionMessage} v{versions} +be.versionCollapsed = {name}이(가) v{versions}에 {actionMessage} 수행 # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} 님이 v{version_number}을(를) 삭제함 # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators}명이 v{versions}에 {actionMessage} 수행 # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators}명의 공동 작업자가 v{versions}을(를) 업로드함 # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/nb-NO.properties b/i18n/nb-NO.properties index 7e88b89886..333aeb46ba 100644 --- a/i18n/nb-NO.properties +++ b/i18n/nb-NO.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} slettet versjon {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} samarbeidspartnere {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} samarbeidspartnere lastet opp versjon {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/nl-NL.properties b/i18n/nl-NL.properties index 2cb416f1c8..aeec25748e 100644 --- a/i18n/nl-NL.properties +++ b/i18n/nl-NL.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} heeft versie {version_number} verwijderd # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} medebewerkers {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} medebewerkers hebben versies {versions} geüpload # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/pl-PL.properties b/i18n/pl-PL.properties index bf7bbae3a8..e3ceef2c5c 100644 --- a/i18n/pl-PL.properties +++ b/i18n/pl-PL.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = Użytkownik {name} usunął wersję {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = Współpracownicy: {numberOfCollaborators} {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} współpracowników przekazało wersje {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/pt-BR.properties b/i18n/pt-BR.properties index 250705d09f..e04788f174 100644 --- a/i18n/pt-BR.properties +++ b/i18n/pt-BR.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} excluiu a v{version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} colaboradores {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} colaboradores carregaram as v{versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/ru-RU.properties b/i18n/ru-RU.properties index 9439cf9534..d16a9c4eab 100644 --- a/i18n/ru-RU.properties +++ b/i18n/ru-RU.properties @@ -845,11 +845,11 @@ be.uploadsRetryButtonTooltip = Повторить попытку загрузк # Error message shown when account storage limit has been reached be.uploadsStorageLimitErrorMessage = Достигнут максимальный объем хранилища для учетной записи # Message displayed in the activity feed to represent the range of versions actioned by a single user. {name} is the user who did the action. {actionMessage} is the action. {versions} is a range of versions. -be.versionCollapsed = {name} {actionMessage} v{versions} +be.versionCollapsed = {name} {actionMessage} версии {versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = Пользователь {name} удалил версию {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = Соавторы ({numberOfCollaborators}) {actionMessage} версии {versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = Соавторы ({numberOfCollaborators}) загрузили версии {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/sv-SE.properties b/i18n/sv-SE.properties index 86d6d62747..841d669315 100644 --- a/i18n/sv-SE.properties +++ b/i18n/sv-SE.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} raderade version {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} medarbetare {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} medarbetare överförde version {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/tr-TR.properties b/i18n/tr-TR.properties index 94959071de..39b12dab5f 100644 --- a/i18n/tr-TR.properties +++ b/i18n/tr-TR.properties @@ -845,11 +845,11 @@ be.uploadsRetryButtonTooltip = Yüklemeyi yeniden dene # Error message shown when account storage limit has been reached be.uploadsStorageLimitErrorMessage = Hesap depolama sınırına ulaşıldı # Message displayed in the activity feed to represent the range of versions actioned by a single user. {name} is the user who did the action. {actionMessage} is the action. {versions} is a range of versions. -be.versionCollapsed = {name} {actionMessage} v{versions} +be.versionCollapsed = {name} {actionMessage} {versions} sürümü # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name}, {version_number} sürümünü sildi # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} işbirlikçi, {versions} sürümünü {actionMessage} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} işbirlikçi, {versions} sürümlerini yükledi # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/zh-CN.properties b/i18n/zh-CN.properties index 8c02a2551b..fd405439b7 100644 --- a/i18n/zh-CN.properties +++ b/i18n/zh-CN.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} 删除了版本 {version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} 个协作者 {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} 个协作者上传了版本 {versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/i18n/zh-TW.properties b/i18n/zh-TW.properties index 472dc59598..aa0df5c9b7 100644 --- a/i18n/zh-TW.properties +++ b/i18n/zh-TW.properties @@ -849,7 +849,7 @@ be.versionCollapsed = {name} {actionMessage} v{versions} # Message displayed in the activity feed for a deleted version. {name} is the user who performed the action. {version_number} is the file version string. be.versionDeleted = {name} 已刪除版本 v{version_number} # Message displayed in the activity feed to represent the range of versions actioned by multiple users. {numberOfCollaborators} is a number. {actionMessage} is the action. {versions} is a range of versions. -be.versionMultipleUsersCollapsed = {numberOfCollaborators} collaborators {actionMessage} v{versions} +be.versionMultipleUsersCollapsed = {numberOfCollaborators} 位共同作業者 {actionMessage} v{versions} # Message displayed in the activity feed to represent the range of versions uploaded by multiple users. {numberOfCollaborators} is a number and {versions} is a range of versions. be.versionMultipleUsersUploaded = {numberOfCollaborators} 位共同作業者已上傳版本 v{versions} # Message displayed in the activity feed for a promoted version. {name} is the user who performed the action. {version_promoted} is the originating file version string. {version_number} is the file version string. diff --git a/src/elements/content-explorer/ContentExplorer.js b/src/elements/content-explorer/ContentExplorer.js index 7983e76e47..27a8ff211f 100644 --- a/src/elements/content-explorer/ContentExplorer.js +++ b/src/elements/content-explorer/ContentExplorer.js @@ -104,7 +104,10 @@ type Props = { canUpload: boolean, className: string, contentPreviewProps: ContentPreviewProps, - contentUploaderProps: ContentUploaderProps, + /** Props to be forwarded to the ContentUploader UI Element, including onSelection callback for file validation */ + contentUploaderProps: ContentUploaderProps & { + onSelection?: (files: FileList) => boolean, + }, currentFolderId?: string, defaultView: DefaultView, features: FeatureConfig, @@ -224,7 +227,9 @@ class ContentExplorer extends Component { contentPreviewProps: { contentSidebarProps: {}, }, - contentUploaderProps: {}, + contentUploaderProps: { + onSelection: undefined, // Optional callback for file validation + }, }; /** diff --git a/src/elements/content-uploader/ContentUploader.js.flow b/src/elements/content-uploader/ContentUploader.js.flow index 52e4f83929..14ba5a2376 100644 --- a/src/elements/content-uploader/ContentUploader.js.flow +++ b/src/elements/content-uploader/ContentUploader.js.flow @@ -63,6 +63,8 @@ import '../common/fonts.scss'; import '../common/base.scss'; type Props = { + /** Callback invoked when files are selected, before upload begins. Return false to prevent upload. */ + onSelection?: (files: FileList) => boolean, apiHost: string, chunked: boolean, className: string, diff --git a/src/elements/content-uploader/ContentUploader.tsx b/src/elements/content-uploader/ContentUploader.tsx index 3b078a2b8a..79e60aa103 100644 --- a/src/elements/content-uploader/ContentUploader.tsx +++ b/src/elements/content-uploader/ContentUploader.tsx @@ -56,6 +56,8 @@ import '../common/fonts.scss'; import '../common/base.scss'; export interface ContentUploaderProps { + /** Callback invoked when files are selected, before upload begins. Return false to prevent upload. */ + onSelection?: (files: FileList) => boolean; apiHost: string; chunked: boolean; className: string; diff --git a/src/elements/content-uploader/UploadInput.js.flow b/src/elements/content-uploader/UploadInput.js.flow index 4f104d88fc..82af9c4e67 100644 --- a/src/elements/content-uploader/UploadInput.js.flow +++ b/src/elements/content-uploader/UploadInput.js.flow @@ -9,6 +9,8 @@ import * as React from 'react'; type Props = { handleChange: Function, + /** Optional callback to validate files before selection. Return false to prevent selection. */ + onSelection?: (files: FileList) => boolean, inputLabel?: React.Node, inputLabelClass?: string, isFolderUpload?: boolean, @@ -39,7 +41,16 @@ const UploadInput = ({ data-testid="upload-input" directory={isFolderUpload ? '' : undefined} multiple={isMultiple} - onChange={handleChange} + onChange={(event) => { + const { files } = event.target; + if (onSelection && files) { + const shouldContinue = onSelection(files); + if (!shouldContinue) { + return; + } + } + handleChange(event); + }} ref={inputRef} type="file" webkitdirectory={isFolderUpload ? '' : undefined} diff --git a/src/elements/content-uploader/UploadInput.tsx b/src/elements/content-uploader/UploadInput.tsx index 867770ce0d..aa44cc43dd 100644 --- a/src/elements/content-uploader/UploadInput.tsx +++ b/src/elements/content-uploader/UploadInput.tsx @@ -15,6 +15,8 @@ export interface UploadInputProps { isFolderUpload?: boolean; isMultiple?: boolean; onChange: React.ChangeEventHandler; + /** Optional callback to validate files before selection. Return false to prevent selection. */ + onSelection?: (files: FileList) => boolean; } const UploadInput = ({ @@ -23,6 +25,7 @@ const UploadInput = ({ isFolderUpload = false, isMultiple = true, onChange, + onSelection, }: UploadInputProps) => { const inputRef = React.useRef(null); @@ -42,7 +45,16 @@ const UploadInput = ({ data-testid="upload-input" directory={isFolderUpload ? '' : undefined} multiple={isMultiple} - onChange={onChange} + onChange={(event: React.ChangeEvent) => { + const { files } = event.target; + if (onSelection && files) { + const shouldContinue = onSelection(files); + if (!shouldContinue) { + return; + } + } + onChange(event); + }} ref={inputRef} type="file" webkitdirectory={isFolderUpload ? '' : undefined} diff --git a/src/elements/content-uploader/__tests__/UploadInput.test.tsx b/src/elements/content-uploader/__tests__/UploadInput.test.tsx index 12c3bc494f..eda48c589b 100644 --- a/src/elements/content-uploader/__tests__/UploadInput.test.tsx +++ b/src/elements/content-uploader/__tests__/UploadInput.test.tsx @@ -1,11 +1,16 @@ import * as React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, fireEvent } from '@testing-library/react'; -import UploadInput from '../UploadInput'; +import UploadInput, { UploadInputProps } from '../UploadInput'; describe('elements/content-uploader/UploadInput', () => { - const renderComponent = props => render(); + const renderComponent = (props: Partial) => { + const defaultProps: UploadInputProps = { + onChange: jest.fn(), + }; + return render(); + }; test('should render correctly when inputLabel is available', () => { renderComponent({ @@ -61,4 +66,85 @@ describe('elements/content-uploader/UploadInput', () => { expect(screen.getByText('yo')).toBeInTheDocument(); expect(screen.getByLabelText('yo')).not.toHaveAttribute('multiple'); }); + + describe('onSelection callback', () => { + const createMockFileList = (files: File[]) => ({ + ...files, + item: (i: number) => files[i], + length: files.length, + }); + + test('should call onSelection with FileList when provided', () => { + const onSelection = jest.fn(() => true); + const onChange = jest.fn(); + const mockFile = new File(['test'], 'test.txt', { type: 'text/plain' }); + const mockFileList = createMockFileList([mockFile]); + + renderComponent({ + inputLabel: 'upload', + onSelection, + onChange, + }); + + const input = screen.getByTestId('upload-input'); + fireEvent.change(input, { target: { files: mockFileList } }); + + expect(onSelection).toHaveBeenCalledWith(mockFileList); + expect(onChange).toHaveBeenCalled(); + }); + + test('should prevent upload when onSelection returns false', () => { + const onSelection = jest.fn(() => false); + const onChange = jest.fn(); + const mockFile = new File(['test'], 'test.txt', { type: 'text/plain' }); + const mockFileList = createMockFileList([mockFile]); + + renderComponent({ + inputLabel: 'upload', + onSelection, + onChange, + }); + + const input = screen.getByTestId('upload-input'); + fireEvent.change(input, { target: { files: mockFileList } }); + + expect(onSelection).toHaveBeenCalledWith(mockFileList); + expect(onChange).not.toHaveBeenCalled(); + }); + + test('should proceed with upload when onSelection returns true', () => { + const onSelection = jest.fn(() => true); + const onChange = jest.fn(); + const mockFile = new File(['test'], 'test.txt', { type: 'text/plain' }); + const mockFileList = createMockFileList([mockFile]); + + renderComponent({ + inputLabel: 'upload', + onSelection, + onChange, + }); + + const input = screen.getByTestId('upload-input'); + fireEvent.change(input, { target: { files: mockFileList } }); + + expect(onSelection).toHaveBeenCalledWith(mockFileList); + expect(onChange).toHaveBeenCalled(); + }); + + test('should proceed with upload when onSelection is not provided', () => { + const onChange = jest.fn(); + const mockFile = new File(['test'], 'test.txt', { type: 'text/plain' }); + const mockFileList = createMockFileList([mockFile]); + + renderComponent({ + inputLabel: 'upload', + onChange, + }); + + const input = screen.getByTestId('upload-input'); + fireEvent.change(input, { target: { files: mockFileList } }); + + expect(onChange).toHaveBeenCalled(); + }); + }); });