├── l10n ├── .gitkeep ├── id.json ├── th.json ├── uz.json ├── vi.json ├── af.json ├── az.json ├── ka.json ├── ka_GE.json ├── mn.json ├── sq.json ├── ast.json ├── eo.json ├── sc.json ├── si.json ├── id.js ├── uz.js ├── th.js ├── vi.js ├── af.js ├── az.js ├── eo.js ├── is.json ├── ka.js ├── ka_GE.js ├── mn.js ├── sc.js ├── si.js ├── sq.js ├── ast.js ├── mk.json ├── lv.json ├── is.js ├── ro.json ├── es_419.json ├── es_AR.json ├── es_CL.json ├── es_CO.json ├── es_CR.json ├── es_DO.json ├── es_GT.json ├── es_HN.json ├── es_NI.json ├── es_PA.json ├── es_PE.json ├── es_PR.json ├── es_PY.json ├── es_SV.json ├── es_UY.json ├── cy_GB.json ├── he.json ├── mk.js ├── lv.js ├── pt_PT.json ├── ro.js ├── es_419.js ├── es_AR.js ├── es_CL.js ├── es_CO.js ├── es_CR.js ├── es_DO.js ├── es_GT.js ├── es_HN.js ├── es_NI.js ├── es_PA.js ├── es_PE.js ├── es_PR.js ├── es_PY.js ├── es_SV.js ├── es_UY.js ├── cy_GB.js ├── he.js ├── hr.json ├── pt_PT.js ├── hr.js ├── es_MX.json ├── es_MX.js ├── be.json ├── be.js ├── zh_CN.json ├── zh_CN.js ├── ja.json ├── ja.js ├── oc.json ├── sl.json ├── oc.js ├── sl.js ├── it.json ├── it.js ├── lt_LT.json ├── lt_LT.js ├── bg.json ├── bg.js ├── eu.json ├── zh_HK.json ├── zh_TW.json ├── es_EC.json ├── eu.js ├── zh_HK.js ├── es_EC.js ├── zh_TW.js ├── ko.json ├── ko.js ├── pl.json ├── pl.js ├── fa.json ├── lo.json ├── fa.js ├── lo.js ├── da.json ├── da.js ├── nb.json ├── hu.json ├── et_EE.json ├── nb.js ├── ru.json ├── ug.json ├── hu.js ├── sv.json ├── en_GB.json ├── et_EE.js ├── sw.json ├── ar.json ├── fi.json ├── ru.js ├── tr.json ├── ug.js ├── sv.js ├── en_GB.js ├── sw.js ├── ar.js ├── fi.js ├── tr.js ├── ca.json ├── el.json ├── gl.json ├── ca.js ├── gl.js ├── el.js ├── nl.json ├── sr.json ├── de.json ├── de_DE.json ├── sr.js ├── nl.js ├── de.js ├── de_DE.js ├── sk.json ├── es.json ├── sk.js ├── es.js ├── ga.json ├── cs.json ├── ga.js ├── cs.js ├── pt_BR.json ├── pt_BR.js ├── fr.json ├── uk.json ├── fr.js └── uk.js ├── tests ├── Unit │ └── .gitkeep ├── bootstrap.php ├── phpunit.xml └── Feature │ └── ZipFeatureTest.php ├── krankerl.toml ├── src ├── main.d.ts ├── types.d.ts ├── main.ts ├── services.ts └── Modal.vue ├── .gitignore ├── stylelint.config.cjs ├── .eslintrc.cjs ├── img ├── zip-box-outline.svg ├── files_zip-dark.svg └── files_zip.svg ├── lib ├── Exceptions │ ├── MaximumSizeReachedException.php │ └── TargetAlreadyExists.php ├── Capabilities.php ├── InitialState.php ├── Listener │ └── LoadAdditionalListener.php ├── AppInfo │ └── Application.php ├── Controller │ └── ZipController.php ├── BackgroundJob │ └── ZipJob.php ├── Service │ └── NotificationService.php └── Notification │ └── Notifier.php ├── appinfo ├── routes.php └── info.xml ├── .tx └── config ├── .github ├── dependabot.yml └── workflows │ ├── reuse.yml │ ├── lint-eslint-when-unrelated.yml │ ├── lint-stylelint.yml │ ├── dependabot-approve-merge.yml │ ├── phpunit-summary-when-unrelated.yml │ ├── lint-php-cs.yml │ ├── lint-php.yml │ ├── pr-feedback.yml │ ├── lint-eslint.yml │ └── node.yml ├── vite.config.ts ├── AUTHORS.md ├── .php-cs-fixer.dist.php ├── composer.json ├── tsconfig.json ├── .nextcloudignore ├── LICENSES └── MIT.txt ├── REUSE.toml ├── package.json ├── README.md └── CHANGELOG.md /l10n/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/Unit/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /krankerl.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | before_cmds = [ 3 | "npm install", 4 | "npm run build", 5 | ] 6 | -------------------------------------------------------------------------------- /l10n/id.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arsip" 3 | },"pluralForm" :"nplurals=1; plural=0;" 4 | } -------------------------------------------------------------------------------- /l10n/th.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "เก็บถาวร" 3 | },"pluralForm" :"nplurals=1; plural=0;" 4 | } -------------------------------------------------------------------------------- /l10n/uz.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arxiv" 3 | },"pluralForm" :"nplurals=1; plural=0;" 4 | } -------------------------------------------------------------------------------- /l10n/vi.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Lưu trữ" 3 | },"pluralForm" :"nplurals=1; plural=0;" 4 | } -------------------------------------------------------------------------------- /l10n/af.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Argief" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/az.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arxiv" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/ka.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archive" 3 | },"pluralForm" :"nplurals=2; plural=(n!=1);" 4 | } -------------------------------------------------------------------------------- /l10n/ka_GE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "არქივი" 3 | },"pluralForm" :"nplurals=2; plural=(n!=1);" 4 | } -------------------------------------------------------------------------------- /l10n/mn.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "архив" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/sq.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arkiva" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/ast.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/eo.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arĥivujo" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/sc.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Cartella" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/si.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "සංරක්ෂණය" 3 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 4 | } -------------------------------------------------------------------------------- /l10n/id.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arsip" 5 | }, 6 | "nplurals=1; plural=0;"); 7 | -------------------------------------------------------------------------------- /l10n/uz.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arxiv" 5 | }, 6 | "nplurals=1; plural=0;"); 7 | -------------------------------------------------------------------------------- /l10n/th.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "เก็บถาวร" 5 | }, 6 | "nplurals=1; plural=0;"); 7 | -------------------------------------------------------------------------------- /l10n/vi.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Lưu trữ" 5 | }, 6 | "nplurals=1; plural=0;"); 7 | -------------------------------------------------------------------------------- /l10n/af.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Argief" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/az.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arxiv" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/eo.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arĥivujo" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/is.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Safn" 3 | },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" 4 | } -------------------------------------------------------------------------------- /l10n/ka.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archive" 5 | }, 6 | "nplurals=2; plural=(n!=1);"); 7 | -------------------------------------------------------------------------------- /l10n/ka_GE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "არქივი" 5 | }, 6 | "nplurals=2; plural=(n!=1);"); 7 | -------------------------------------------------------------------------------- /l10n/mn.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "архив" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/sc.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Cartella" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/si.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "සංරක්ෂණය" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/sq.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arkiva" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/ast.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=2; plural=(n != 1);"); 7 | -------------------------------------------------------------------------------- /l10n/mk.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Архива" 3 | },"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" 4 | } -------------------------------------------------------------------------------- /l10n/lv.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arhīvi" 3 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" 4 | } -------------------------------------------------------------------------------- /l10n/is.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Safn" 5 | }, 6 | "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); 7 | -------------------------------------------------------------------------------- /l10n/ro.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arhivă" 3 | },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" 4 | } -------------------------------------------------------------------------------- /l10n/es_419.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_AR.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_CL.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_CO.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_CR.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_DO.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_GT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_HN.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_NI.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_PA.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_PE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_PR.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_PY.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_SV.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/es_UY.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archivar" 3 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/cy_GB.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Archif" 3 | },"pluralForm" :"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;" 4 | } -------------------------------------------------------------------------------- /l10n/he.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "לארכיון" 3 | },"pluralForm" :"nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;" 4 | } -------------------------------------------------------------------------------- /l10n/mk.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Архива" 5 | }, 6 | "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"); 7 | -------------------------------------------------------------------------------- /l10n/lv.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arhīvi" 5 | }, 6 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); 7 | -------------------------------------------------------------------------------- /l10n/pt_PT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arquivar" 3 | },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /src/main.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | export {} 6 | -------------------------------------------------------------------------------- /l10n/ro.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arhivă" 5 | }, 6 | "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); 7 | -------------------------------------------------------------------------------- /l10n/es_419.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_AR.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_CL.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_CO.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_CR.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_DO.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_GT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_HN.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_NI.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_PA.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_PE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_PR.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_PY.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_SV.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_UY.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archivar" 5 | }, 6 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/cy_GB.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Archif" 5 | }, 6 | "nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;"); 7 | -------------------------------------------------------------------------------- /l10n/he.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "לארכיון" 5 | }, 6 | "nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;"); 7 | -------------------------------------------------------------------------------- /l10n/hr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Arhiva" 3 | },"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;" 4 | } -------------------------------------------------------------------------------- /l10n/pt_PT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arquivar" 5 | }, 6 | "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/hr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Arhiva" 5 | }, 6 | "nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"); 7 | -------------------------------------------------------------------------------- /l10n/es_MX.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Compress files" : "Comprimir archivos", 3 | "Archive" : "Archivar" 4 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 5 | } -------------------------------------------------------------------------------- /l10n/es_MX.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Compress files" : "Comprimir archivos", 5 | "Archive" : "Archivar" 6 | }, 7 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 8 | -------------------------------------------------------------------------------- /l10n/be.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Archive" : "Архіў" 3 | },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" 4 | } -------------------------------------------------------------------------------- /src/types.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | declare module '*.svg?raw' { 6 | const content: string 7 | export default content 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors 2 | # SPDX-License-Identifier: AGPL-3.0-or-later 3 | node_modules/ 4 | js/ 5 | css/ 6 | vendor/ 7 | .php_cs.cache 8 | .php-cs-fixer.cache 9 | tests/.phpunit.result.cache 10 | -------------------------------------------------------------------------------- /l10n/be.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Archive" : "Архіў" 5 | }, 6 | "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); 7 | -------------------------------------------------------------------------------- /stylelint.config.cjs: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | const stylelintConfig = require('@nextcloud/stylelint-config') 6 | 7 | module.exports = stylelintConfig 8 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | module.exports = { 6 | root: true, 7 | extends: [ 8 | '@nextcloud/eslint-config/vue3', 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /img/zip-box-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/Exceptions/MaximumSizeReachedException.php: -------------------------------------------------------------------------------- 1 | [ 10 | [ 11 | 'name' => 'Zip#zip', 12 | 'url' => '/api/v1/zip', 13 | 'verb' => 'POST', 14 | ], 15 | ], 16 | ]; 17 | -------------------------------------------------------------------------------- /lib/Exceptions/TargetAlreadyExists.php: -------------------------------------------------------------------------------- 1 | /files_zip.po 7 | source_file = translationfiles/templates/files_zip.pot 8 | source_lang = en 9 | type = PO 10 | 11 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors 2 | # SPDX-License-Identifier: AGPL-3.0-or-later 3 | version: 2 4 | updates: 5 | - package-ecosystem: composer 6 | directory: "/" 7 | schedule: 8 | interval: weekly 9 | - package-ecosystem: "npm" 10 | directory: "/" 11 | schedule: 12 | interval: "weekly" 13 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | import { createAppConfig } from '@nextcloud/vite-config' 6 | 7 | export default createAppConfig({ 8 | main: 'src/main.ts', 9 | }, { 10 | config: { 11 | css: { 12 | modules: { 13 | localsConvention: 'camelCase', 14 | }, 15 | }, 16 | }, 17 | }) 18 | -------------------------------------------------------------------------------- /AUTHORS.md: -------------------------------------------------------------------------------- 1 | 5 | # Authors 6 | 7 | - Daniel Calviño Sánchez 8 | - Ferdinand Thiessen 9 | - Joas Schilling 10 | - John Molakvoæ 11 | - Julius Härtl 12 | - Roeland Jago Douma 13 | -------------------------------------------------------------------------------- /lib/Capabilities.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'apiVersion' => 'v1' 19 | ] 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /img/files_zip-dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | addPsr4('Test\\', OC::$SERVERROOT . '/tests/lib/', true); 11 | \OC::$composerAutoloader->addPsr4('Tests\\', OC::$SERVERROOT . '/tests/', true); 12 | 13 | OC_App::loadApp('files_zip'); 14 | 15 | OC_Hook::clear(); 16 | -------------------------------------------------------------------------------- /img/files_zip.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.php-cs-fixer.dist.php: -------------------------------------------------------------------------------- 1 | getFinder() 15 | ->ignoreVCSIgnored(true) 16 | ->notPath('build') 17 | ->notPath('l10n') 18 | ->notPath('lib/Vendor') 19 | ->notPath('src') 20 | ->notPath('vendor') 21 | ->in(__DIR__); 22 | return $config; 23 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "require-dev": { 3 | "phpunit/phpunit": "^9", 4 | "nextcloud/coding-standard": "^1.0.0", 5 | "nextcloud/ocp": "^27.1" 6 | }, 7 | "scripts": { 8 | "test": "phpunit -c tests/phpunit.xml", 9 | "lint": "find . -name \\*.php -not -path './vendor/*' -not -path './build/*' -print0 | xargs -0 -n1 php -l", 10 | "cs:check": "php-cs-fixer fix --dry-run --diff", 11 | "cs:fix": "php-cs-fixer fix", 12 | "test:unit": "vendor/bin/phpunit -c tests/phpunit.xml" 13 | }, 14 | "config": { 15 | "platform": { 16 | "php": "7.4" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@vue/tsconfig", 3 | "compilerOptions": { 4 | "allowSyntheticDefaultImports": true, 5 | "declaration": true, 6 | "esModuleInterop": true, 7 | "lib": ["DOM", "ESNext"], 8 | "moduleResolution": "node", 9 | "noEmit": true, 10 | "outDir": "./js", 11 | "plugins": [ 12 | { "name": "typescript-plugin-css-modules" } 13 | ], 14 | "sourceMap": true, 15 | "target": "ESNext", 16 | "types": ["vite/client"] 17 | }, 18 | "include": [ 19 | "src/**/*.ts", 20 | "src/**/*.d.ts", 21 | "src/**/*.tsx", 22 | "src/**/*.vue" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /tests/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 13 | . 14 | 15 | 16 | 17 | ../ 18 | 19 | ../tests 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /.nextcloudignore: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors 2 | # SPDX-License-Identifier: AGPL-3.0-or-later 3 | /AUTHORS.md 4 | /build 5 | /.git 6 | /.github 7 | /.gitignore 8 | /.travis.yml 9 | /.tx 10 | /.scrutinizer.yml 11 | /babel.config.js 12 | /CONTRIBUTING.md 13 | /composer.json 14 | /composer.lock 15 | /composer.phar 16 | /karma.conf.js 17 | /krankerl.toml 18 | /l10n/no-php 19 | /Makefile 20 | /nbproject 21 | /node_modules 22 | /package.json 23 | /package-lock.json 24 | /screenshots 25 | /src 26 | /stylelint.config.js 27 | /tests 28 | /vendor/bin 29 | /webpack.common.js 30 | /webpack.dev.js 31 | /webpack.prod.js 32 | /webpack.js 33 | /vendor/bin 34 | /vendor-bin 35 | /.php_cs.dist 36 | /.nextcloudignore 37 | /.eslintrc.js 38 | -------------------------------------------------------------------------------- /lib/InitialState.php: -------------------------------------------------------------------------------- 1 | config = $config; 20 | } 21 | 22 | public function getKey(): string { 23 | return 'max_compress_size'; 24 | } 25 | 26 | public function getData() { 27 | return (int)$this->config->getAppValue(Application::APP_NAME, $this->getKey(), (string)-1); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/Listener/LoadAdditionalListener.php: -------------------------------------------------------------------------------- 1 | 7 | # 8 | # SPDX-License-Identifier: CC0-1.0 9 | 10 | name: REUSE Compliance Check 11 | 12 | on: [pull_request] 13 | 14 | permissions: 15 | contents: read 16 | 17 | jobs: 18 | reuse-compliance-check: 19 | runs-on: ubuntu-latest-low 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 23 | with: 24 | persist-credentials: false 25 | 26 | - name: REUSE Compliance Check 27 | uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0 28 | -------------------------------------------------------------------------------- /l10n/zh_CN.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "打包器", 3 | "A Zip archive {target} will be created." : "即将创建一个名为{target}的Zip档", 4 | "Your files have been stored as a Zip archive in {path}." : "你的文件将在{path}存为一个Zip档", 5 | "Creating the Zip file {path} failed." : "在{path}创建Zip失败", 6 | "Zip files in your Nextcloud" : "在你Nextcloud中的Zip文件", 7 | "Allow zipping files directly in your Nextcloud!" : "允许在您的Nextcloud中直接打包文件!", 8 | "Compress files" : "压缩文件", 9 | "Compress" : "压缩", 10 | "Compress to Zip" : "压缩成Zip档", 11 | "Archive" : "压缩档", 12 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "已开始创建Zip档。完成归档后我们将尽快通知您。", 13 | "An error happened when trying to compress the file." : "在压缩文件时发生了一个错误", 14 | "Only files up to {maxSize} can be compressed." : "只能压缩最大{maxSize}的文件。" 15 | },"pluralForm" :"nplurals=1; plural=0;" 16 | } -------------------------------------------------------------------------------- /l10n/zh_CN.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "打包器", 5 | "A Zip archive {target} will be created." : "即将创建一个名为{target}的Zip档", 6 | "Your files have been stored as a Zip archive in {path}." : "你的文件将在{path}存为一个Zip档", 7 | "Creating the Zip file {path} failed." : "在{path}创建Zip失败", 8 | "Zip files in your Nextcloud" : "在你Nextcloud中的Zip文件", 9 | "Allow zipping files directly in your Nextcloud!" : "允许在您的Nextcloud中直接打包文件!", 10 | "Compress files" : "压缩文件", 11 | "Compress" : "压缩", 12 | "Compress to Zip" : "压缩成Zip档", 13 | "Archive" : "压缩档", 14 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "已开始创建Zip档。完成归档后我们将尽快通知您。", 15 | "An error happened when trying to compress the file." : "在压缩文件时发生了一个错误", 16 | "Only files up to {maxSize} can be compressed." : "只能压缩最大{maxSize}的文件。" 17 | }, 18 | "nplurals=1; plural=0;"); 19 | -------------------------------------------------------------------------------- /l10n/ja.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "zipアーカイブ {target} を作成しました。", 4 | "Your files have been stored as a Zip archive in {path}." : "ファイルは {path} にzipアーカイブとして保存されました。", 5 | "Creating the Zip file {path} failed." : "zipファイルを {path} に作成できませんでした。", 6 | "Zip files in your Nextcloud" : "Nextcloud上で直接Zip圧縮", 7 | "Allow zipping files directly in your Nextcloud!" : "nextcloud上のファイルを直接圧縮することができます!", 8 | "Compress files" : "ファイルを圧縮", 9 | "Compress to Zip" : "Zipに圧縮", 10 | "Archive" : "アーカイブ", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "zipアーカイブの作成を開始しました。アーカイブが利用できるようになればすぐにお知らせします。", 12 | "An error happened when trying to compress the file." : "ファイルの圧縮中にエラーが発生しました。", 13 | "Only files up to {maxSize} can be compressed." : "ファイル圧縮できるのは、最大{maxSize} までです" 14 | },"pluralForm" :"nplurals=1; plural=0;" 15 | } -------------------------------------------------------------------------------- /l10n/ja.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "zipアーカイブ {target} を作成しました。", 6 | "Your files have been stored as a Zip archive in {path}." : "ファイルは {path} にzipアーカイブとして保存されました。", 7 | "Creating the Zip file {path} failed." : "zipファイルを {path} に作成できませんでした。", 8 | "Zip files in your Nextcloud" : "Nextcloud上で直接Zip圧縮", 9 | "Allow zipping files directly in your Nextcloud!" : "nextcloud上のファイルを直接圧縮することができます!", 10 | "Compress files" : "ファイルを圧縮", 11 | "Compress to Zip" : "Zipに圧縮", 12 | "Archive" : "アーカイブ", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "zipアーカイブの作成を開始しました。アーカイブが利用できるようになればすぐにお知らせします。", 14 | "An error happened when trying to compress the file." : "ファイルの圧縮中にエラーが発生しました。", 15 | "Only files up to {maxSize} can be compressed." : "ファイル圧縮できるのは、最大{maxSize} までです" 16 | }, 17 | "nplurals=1; plural=0;"); 18 | -------------------------------------------------------------------------------- /appinfo/info.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | files_zip 8 | Zipper 9 | Zip files in your Nextcloud 10 | Allow zipping files directly in your Nextcloud! 11 | 2.2.0 12 | agpl 13 | Roeland Jago Douma 14 | Julius Haertl 15 | FilesZip 16 | tools 17 | https://github.com/nextcloud/files_zip 18 | https://github.com/nextcloud/files_zip/issues 19 | https://github.com/nextcloud/files_zip.git 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /l10n/oc.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipador", 3 | "A Zip archive {target} will be created." : "Un arichiu Zip {target} serà creat.", 4 | "Your files have been stored as a Zip archive in {path}." : "Los fichièrs son gardat coma archius Zip dins {path}.", 5 | "Creating the Zip file {path} failed." : "La creacion del fichièr Zip {path} a pas reüssit.", 6 | "Zip files in your Nextcloud" : "Zipatz fichièrs dins vòstre Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Permet de zipar fichièrs e dossièr dins vòstre Nextcloud !", 8 | "Compress files" : "Compressar los fichièrs", 9 | "Compress to Zip" : "Compressar en Zip", 10 | "Archive" : "Archiu", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "La creacion de l’archiu Zip a començat. Vos assabentarem tre que l’archiu es disponible.", 12 | "An error happened when trying to compress the file." : "Una error s’es producha en ensajant de compressar lo fichièr." 13 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 14 | } -------------------------------------------------------------------------------- /l10n/sl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Ustvarjen bo arhiv zip {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Datoteke bodo shranjene v arhivu zip na naslovu {path}.", 5 | "Creating the Zip file {path} failed." : "Ustvarjanje arhiva na mestu {path} je spodletelo.", 6 | "Zip files in your Nextcloud" : "Datoteke zip v Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Omogoča shranjevanje datotek v arhiv zip neposredno v oblak Nextcloud!", 8 | "Compress files" : "Stisni datoteke", 9 | "Compress to Zip" : "Skrči v zip", 10 | "Archive" : "Arhiv", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Ustvarjanje arhiva zip je začeto. Po koncu stiskanja bo prikazano obvestilo.", 12 | "An error happened when trying to compress the file." : "Prišlo je do napake med stiskanjem datoteke." 13 | },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" 14 | } -------------------------------------------------------------------------------- /l10n/oc.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipador", 5 | "A Zip archive {target} will be created." : "Un arichiu Zip {target} serà creat.", 6 | "Your files have been stored as a Zip archive in {path}." : "Los fichièrs son gardat coma archius Zip dins {path}.", 7 | "Creating the Zip file {path} failed." : "La creacion del fichièr Zip {path} a pas reüssit.", 8 | "Zip files in your Nextcloud" : "Zipatz fichièrs dins vòstre Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Permet de zipar fichièrs e dossièr dins vòstre Nextcloud !", 10 | "Compress files" : "Compressar los fichièrs", 11 | "Compress to Zip" : "Compressar en Zip", 12 | "Archive" : "Archiu", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "La creacion de l’archiu Zip a començat. Vos assabentarem tre que l’archiu es disponible.", 14 | "An error happened when trying to compress the file." : "Una error s’es producha en ensajant de compressar lo fichièr." 15 | }, 16 | "nplurals=2; plural=(n > 1);"); 17 | -------------------------------------------------------------------------------- /l10n/sl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Ustvarjen bo arhiv zip {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Datoteke bodo shranjene v arhivu zip na naslovu {path}.", 7 | "Creating the Zip file {path} failed." : "Ustvarjanje arhiva na mestu {path} je spodletelo.", 8 | "Zip files in your Nextcloud" : "Datoteke zip v Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Omogoča shranjevanje datotek v arhiv zip neposredno v oblak Nextcloud!", 10 | "Compress files" : "Stisni datoteke", 11 | "Compress to Zip" : "Skrči v zip", 12 | "Archive" : "Arhiv", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Ustvarjanje arhiva zip je začeto. Po koncu stiskanja bo prikazano obvestilo.", 14 | "An error happened when trying to compress the file." : "Prišlo je do napake med stiskanjem datoteke." 15 | }, 16 | "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); 17 | -------------------------------------------------------------------------------- /l10n/it.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Un archivio Zip {target} sarà creato.", 4 | "Your files have been stored as a Zip archive in {path}." : "I file sono stati inseriti in un archivio Zip in {path}.", 5 | "Creating the Zip file {path} failed." : "Creazione del file Zip {path} non riuscita.", 6 | "Zip files in your Nextcloud" : "Crea file ZIP nel tuo Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Consenti la compressione di file direttamente nel tuo Nextcloud!", 8 | "Compress files" : "Comprimi file", 9 | "Compress to Zip" : "Comprimi in Zip", 10 | "Archive" : "Archivio", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Creazione dell'archivio Zip in corso. Riceverai una notifica appena l'archivio sarà disponibile.", 12 | "An error happened when trying to compress the file." : "Si è verificato un errore durante la compressione del file." 13 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 14 | } -------------------------------------------------------------------------------- /LICENSES/MIT.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /l10n/it.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Un archivio Zip {target} sarà creato.", 6 | "Your files have been stored as a Zip archive in {path}." : "I file sono stati inseriti in un archivio Zip in {path}.", 7 | "Creating the Zip file {path} failed." : "Creazione del file Zip {path} non riuscita.", 8 | "Zip files in your Nextcloud" : "Crea file ZIP nel tuo Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Consenti la compressione di file direttamente nel tuo Nextcloud!", 10 | "Compress files" : "Comprimi file", 11 | "Compress to Zip" : "Comprimi in Zip", 12 | "Archive" : "Archivio", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Creazione dell'archivio Zip in corso. Riceverai una notifica appena l'archivio sarà disponibile.", 14 | "An error happened when trying to compress the file." : "Si è verificato un errore durante la compressione del file." 15 | }, 16 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 17 | -------------------------------------------------------------------------------- /l10n/lt_LT.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zip įrankis", 3 | "A Zip archive {target} will be created." : "Bus sukurtas {target} Zip archyvas.", 4 | "Your files have been stored as a Zip archive in {path}." : "Jūsų failai buvo suglaudinti Zip formatu ir įkelti {path}.", 5 | "Creating the Zip file {path} failed." : "Nepavyko sukurti Zip failo {path} vietoje.", 6 | "Zip files in your Nextcloud" : "Zip failai jūsų Nextcloud'e", 7 | "Allow zipping files directly in your Nextcloud!" : "Leiskite Zip'inti failus tiesiogiai Nextcloud'e!", 8 | "Compress files" : "Suglaudinti failus", 9 | "Compress to Zip" : "Suglaudinti Zip formatu", 10 | "Archive" : "Archyvuoti", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Vyksta glaudinimas Zip formatu. Pranešima iš karto, kai tik procesas bus užbaigtas.", 12 | "An error happened when trying to compress the file." : "Įvyko klaida glaudinant failus." 13 | },"pluralForm" :"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" 14 | } -------------------------------------------------------------------------------- /l10n/lt_LT.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zip įrankis", 5 | "A Zip archive {target} will be created." : "Bus sukurtas {target} Zip archyvas.", 6 | "Your files have been stored as a Zip archive in {path}." : "Jūsų failai buvo suglaudinti Zip formatu ir įkelti {path}.", 7 | "Creating the Zip file {path} failed." : "Nepavyko sukurti Zip failo {path} vietoje.", 8 | "Zip files in your Nextcloud" : "Zip failai jūsų Nextcloud'e", 9 | "Allow zipping files directly in your Nextcloud!" : "Leiskite Zip'inti failus tiesiogiai Nextcloud'e!", 10 | "Compress files" : "Suglaudinti failus", 11 | "Compress to Zip" : "Suglaudinti Zip formatu", 12 | "Archive" : "Archyvuoti", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Vyksta glaudinimas Zip formatu. Pranešima iš karto, kai tik procesas bus užbaigtas.", 14 | "An error happened when trying to compress the file." : "Įvyko klaida glaudinant failus." 15 | }, 16 | "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);"); 17 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | import { registerFileAction, FileAction, Node, Permission, View } from '@nextcloud/files' 6 | import { translate as t } from '@nextcloud/l10n' 7 | import ZipIcon from '@mdi/svg/svg/zip-box-outline.svg?raw' 8 | import { action } from './services' 9 | 10 | const fileAction = new FileAction({ 11 | id: 'files_zip', 12 | order: 60, 13 | iconSvgInline() { 14 | return ZipIcon 15 | }, 16 | displayName() { 17 | return t('files_zip', 'Compress to Zip') 18 | }, 19 | enabled(nodes: Node[], view: View) { 20 | if (view.id === 'trashbin') { 21 | return false 22 | } 23 | return nodes.filter((node) => (node.permissions & Permission.READ) !== 0).length > 0 24 | }, 25 | async execBatch(nodes: Node[], view: View, dir: string) { 26 | const result = action(dir, nodes) 27 | return Promise.all(nodes.map(() => result)) 28 | }, 29 | async exec(node: Node, view: View, dir: string): Promise { 30 | const result = action(dir, [node]) 31 | return result 32 | }, 33 | }) 34 | 35 | registerFileAction(fileAction) 36 | -------------------------------------------------------------------------------- /l10n/bg.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Ще бъде създаден Zip архив на {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Вашите файлове са съхранени като Zip архив в {path}.", 5 | "Creating the Zip file {path} failed." : "Създаването на Zip файл {path} не беше успешно.", 6 | "Zip files in your Nextcloud" : "Zip файлове във вашия Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Позволете компресирането на файлове директно във вашият Nextcloud!", 8 | "Compress files" : "Компресиране на файлове", 9 | "Compress to Zip" : "Компресиране в Zip", 10 | "Archive" : "Архив", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Започна създаването на Zip архив. Ще ви уведомим веднага, щом архивът бъде наличен.", 12 | "An error happened when trying to compress the file." : "Възникна грешка при опит за компресиране на файла.", 13 | "Only files up to {maxSize} can be compressed." : "Могат да бъдат компресирани само файлове с големина до {maxSize} ." 14 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 15 | } -------------------------------------------------------------------------------- /l10n/bg.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Ще бъде създаден Zip архив на {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Вашите файлове са съхранени като Zip архив в {path}.", 7 | "Creating the Zip file {path} failed." : "Създаването на Zip файл {path} не беше успешно.", 8 | "Zip files in your Nextcloud" : "Zip файлове във вашия Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Позволете компресирането на файлове директно във вашият Nextcloud!", 10 | "Compress files" : "Компресиране на файлове", 11 | "Compress to Zip" : "Компресиране в Zip", 12 | "Archive" : "Архив", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Започна създаването на Zip архив. Ще ви уведомим веднага, щом архивът бъде наличен.", 14 | "An error happened when trying to compress the file." : "Възникна грешка при опит за компресиране на файла.", 15 | "Only files up to {maxSize} can be compressed." : "Могат да бъдат компресирани само файлове с големина до {maxSize} ." 16 | }, 17 | "nplurals=2; plural=(n != 1);"); 18 | -------------------------------------------------------------------------------- /l10n/eu.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Zip artxibo bat {target} sortuko da.", 4 | "Your files have been stored as a Zip archive in {path}." : "Zure fitxategiak Zip artxibo gisa gorde dira {path}-en.", 5 | "Creating the Zip file {path} failed." : "Ezin izan da sortu {path} zip fitxategia.", 6 | "Zip files in your Nextcloud" : "Zip fitxategiak zure Nextcloudean", 7 | "Allow zipping files directly in your Nextcloud!" : "Baimendu fitxategiak zuzenean konprimitzea zure Nextcloud-en!", 8 | "Compress files" : "Fitxategiak konprimitu", 9 | "Compress" : "Konprimatu", 10 | "Compress to Zip" : "Konprimitu Zip-era", 11 | "Archive" : "Artxibatu", 12 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip artxiboa sortzen hasi da. Artxiboa eskuragarri egon bezain laster jakinaraziko dizugu.", 13 | "An error happened when trying to compress the file." : "Errore bat gertatu da fitxategia konprimitzen saiatzean.", 14 | "Only files up to {maxSize} can be compressed." : "{maxSize} arterako fitxategiak konprimatu daitezke." 15 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 16 | } -------------------------------------------------------------------------------- /l10n/zh_HK.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "將創建一個 Zip 存檔 {target}。", 4 | "Your files have been stored as a Zip archive in {path}." : "您的檔案已作為 Zip 存檔存儲在 {path} 中。", 5 | "Creating the Zip file {path} failed." : "創建 Zip 檔案 {path} 失敗。", 6 | "Zip files in your Nextcloud" : "在 Nextcloud 中壓縮文件", 7 | "Allow zipping files directly in your Nextcloud!" : "直接在 Nextcloud 中壓縮檔案!", 8 | "Compress files" : "壓縮檔案", 9 | "Compress" : "壓縮", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "檔案將在背景中壓縮。完成後,您將收到一個通知,並且該檔案位於目前的目錄中。", 11 | "Archive file name" : "封存檔案名字", 12 | "_Compress %n file_::_Compress %n files_" : ["壓縮 %n 個檔案"], 13 | "Compress to Zip" : "壓縮為 Zip", 14 | "Archive" : "存檔", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "開始創建 Zip 存檔。 一旦存檔可用,我們將立即通知您。", 16 | "An error happened when trying to compress the file." : "嘗試壓縮檔案時發生錯誤。", 17 | "Only files up to {maxSize} can be compressed." : "只能壓縮最大為 {maxSize} 的檔案。" 18 | },"pluralForm" :"nplurals=1; plural=0;" 19 | } -------------------------------------------------------------------------------- /l10n/zh_TW.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "將會建立 Zip 壓縮檔 {target}。", 4 | "Your files have been stored as a Zip archive in {path}." : "您的檔案已作為 Zip 壓縮檔存放在 {path} 中。", 5 | "Creating the Zip file {path} failed." : "建立 Zip 檔案 {path} 失敗。", 6 | "Zip files in your Nextcloud" : "在您的 Nextcloud 中壓縮檔案", 7 | "Allow zipping files directly in your Nextcloud!" : "直接在您的 Nextcloud 中壓縮檔案!", 8 | "Compress files" : "壓縮檔案", 9 | "Compress" : "壓縮", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "該檔案將在背景壓縮。完成後,您將收到通知,並且該檔案位於目前目錄中。", 11 | "Archive file name" : "封存檔名稱", 12 | "_Compress %n file_::_Compress %n files_" : ["壓縮 %n 個檔案"], 13 | "Compress to Zip" : "壓縮為 Zip", 14 | "Archive" : "壓縮檔", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "開始建立 Zip 壓縮檔。一旦壓縮檔可用,我們會盡快通知您。", 16 | "An error happened when trying to compress the file." : "嘗試壓縮檔案時發生錯誤。", 17 | "Only files up to {maxSize} can be compressed." : "只能壓縮最大 {maxSize} 的檔案。" 18 | },"pluralForm" :"nplurals=1; plural=0;" 19 | } -------------------------------------------------------------------------------- /l10n/es_EC.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Compresor", 3 | "A Zip archive {target} will be created." : "Se creará un archivo Zip {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Tus archivos se han almacenado como un archivo Zip en {path}.", 5 | "Creating the Zip file {path} failed." : "La creación del archivo Zip {path} ha fallado.", 6 | "Zip files in your Nextcloud" : "Archivos Zip en tu Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "¡Permite comprimir archivos directamente en tu Nextcloud!", 8 | "Compress files" : "Comprimir archivos", 9 | "Compress to Zip" : "Comprimir a Zip", 10 | "Archive" : "Archivar", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Se ha iniciado la creación del archivo Zip. Te notificaremos en cuanto esté disponible el archivo.", 12 | "An error happened when trying to compress the file." : "Ha ocurrido un error al intentar comprimir el archivo.", 13 | "Only files up to {maxSize} can be compressed." : "Solo se pueden comprimir archivos de hasta {maxSize}." 14 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 15 | } -------------------------------------------------------------------------------- /l10n/eu.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Zip artxibo bat {target} sortuko da.", 6 | "Your files have been stored as a Zip archive in {path}." : "Zure fitxategiak Zip artxibo gisa gorde dira {path}-en.", 7 | "Creating the Zip file {path} failed." : "Ezin izan da sortu {path} zip fitxategia.", 8 | "Zip files in your Nextcloud" : "Zip fitxategiak zure Nextcloudean", 9 | "Allow zipping files directly in your Nextcloud!" : "Baimendu fitxategiak zuzenean konprimitzea zure Nextcloud-en!", 10 | "Compress files" : "Fitxategiak konprimitu", 11 | "Compress" : "Konprimatu", 12 | "Compress to Zip" : "Konprimitu Zip-era", 13 | "Archive" : "Artxibatu", 14 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip artxiboa sortzen hasi da. Artxiboa eskuragarri egon bezain laster jakinaraziko dizugu.", 15 | "An error happened when trying to compress the file." : "Errore bat gertatu da fitxategia konprimitzen saiatzean.", 16 | "Only files up to {maxSize} can be compressed." : "{maxSize} arterako fitxategiak konprimatu daitezke." 17 | }, 18 | "nplurals=2; plural=(n != 1);"); 19 | -------------------------------------------------------------------------------- /l10n/zh_HK.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "將創建一個 Zip 存檔 {target}。", 6 | "Your files have been stored as a Zip archive in {path}." : "您的檔案已作為 Zip 存檔存儲在 {path} 中。", 7 | "Creating the Zip file {path} failed." : "創建 Zip 檔案 {path} 失敗。", 8 | "Zip files in your Nextcloud" : "在 Nextcloud 中壓縮文件", 9 | "Allow zipping files directly in your Nextcloud!" : "直接在 Nextcloud 中壓縮檔案!", 10 | "Compress files" : "壓縮檔案", 11 | "Compress" : "壓縮", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "檔案將在背景中壓縮。完成後,您將收到一個通知,並且該檔案位於目前的目錄中。", 13 | "Archive file name" : "封存檔案名字", 14 | "_Compress %n file_::_Compress %n files_" : ["壓縮 %n 個檔案"], 15 | "Compress to Zip" : "壓縮為 Zip", 16 | "Archive" : "存檔", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "開始創建 Zip 存檔。 一旦存檔可用,我們將立即通知您。", 18 | "An error happened when trying to compress the file." : "嘗試壓縮檔案時發生錯誤。", 19 | "Only files up to {maxSize} can be compressed." : "只能壓縮最大為 {maxSize} 的檔案。" 20 | }, 21 | "nplurals=1; plural=0;"); 22 | -------------------------------------------------------------------------------- /l10n/es_EC.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Compresor", 5 | "A Zip archive {target} will be created." : "Se creará un archivo Zip {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Tus archivos se han almacenado como un archivo Zip en {path}.", 7 | "Creating the Zip file {path} failed." : "La creación del archivo Zip {path} ha fallado.", 8 | "Zip files in your Nextcloud" : "Archivos Zip en tu Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "¡Permite comprimir archivos directamente en tu Nextcloud!", 10 | "Compress files" : "Comprimir archivos", 11 | "Compress to Zip" : "Comprimir a Zip", 12 | "Archive" : "Archivar", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Se ha iniciado la creación del archivo Zip. Te notificaremos en cuanto esté disponible el archivo.", 14 | "An error happened when trying to compress the file." : "Ha ocurrido un error al intentar comprimir el archivo.", 15 | "Only files up to {maxSize} can be compressed." : "Solo se pueden comprimir archivos de hasta {maxSize}." 16 | }, 17 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 18 | -------------------------------------------------------------------------------- /l10n/zh_TW.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "將會建立 Zip 壓縮檔 {target}。", 6 | "Your files have been stored as a Zip archive in {path}." : "您的檔案已作為 Zip 壓縮檔存放在 {path} 中。", 7 | "Creating the Zip file {path} failed." : "建立 Zip 檔案 {path} 失敗。", 8 | "Zip files in your Nextcloud" : "在您的 Nextcloud 中壓縮檔案", 9 | "Allow zipping files directly in your Nextcloud!" : "直接在您的 Nextcloud 中壓縮檔案!", 10 | "Compress files" : "壓縮檔案", 11 | "Compress" : "壓縮", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "該檔案將在背景壓縮。完成後,您將收到通知,並且該檔案位於目前目錄中。", 13 | "Archive file name" : "封存檔名稱", 14 | "_Compress %n file_::_Compress %n files_" : ["壓縮 %n 個檔案"], 15 | "Compress to Zip" : "壓縮為 Zip", 16 | "Archive" : "壓縮檔", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "開始建立 Zip 壓縮檔。一旦壓縮檔可用,我們會盡快通知您。", 18 | "An error happened when trying to compress the file." : "嘗試壓縮檔案時發生錯誤。", 19 | "Only files up to {maxSize} can be compressed." : "只能壓縮最大 {maxSize} 的檔案。" 20 | }, 21 | "nplurals=1; plural=0;"); 22 | -------------------------------------------------------------------------------- /l10n/ko.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "압축 도구", 3 | "A Zip archive {target} will be created." : "Zip 압축 파일 {target}이(가) 생성됩니다", 4 | "Your files have been stored as a Zip archive in {path}." : "파일이 {path}에 Zip 압축 파일로 저장되었습니다", 5 | "Creating the Zip file {path} failed." : "Zip 압축 파일 {path}을(를) 만들 수 없음", 6 | "Zip files in your Nextcloud" : "내 Nextcloud에 있는 Zip 파일", 7 | "Allow zipping files directly in your Nextcloud!" : "Nextcloud에서 직접 Zip 파일로 압축하세요!", 8 | "Compress files" : "파일 압축", 9 | "Compress" : "압축", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "백그라운드에서 파일을 압축합니다. 작업이 완료되면 알림이 표시되며 파일은 현재 경로에 저장됩니다.", 11 | "Archive file name" : "압축 파일 이름", 12 | "_Compress %n file_::_Compress %n files_" : ["%n개 파일 압축"], 13 | "Compress to Zip" : "Zip 파일로 압축", 14 | "Archive" : "보관", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip 파일 생성을 시작했습니다. 작업이 종료되면 알림을 표시합니다", 16 | "An error happened when trying to compress the file." : "파일을 압축 시도 중 오류가 발생했습니다", 17 | "Only files up to {maxSize} can be compressed." : "최대 {maxSize}까지 압축할 수 있습니다" 18 | },"pluralForm" :"nplurals=1; plural=0;" 19 | } -------------------------------------------------------------------------------- /l10n/ko.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "압축 도구", 5 | "A Zip archive {target} will be created." : "Zip 압축 파일 {target}이(가) 생성됩니다", 6 | "Your files have been stored as a Zip archive in {path}." : "파일이 {path}에 Zip 압축 파일로 저장되었습니다", 7 | "Creating the Zip file {path} failed." : "Zip 압축 파일 {path}을(를) 만들 수 없음", 8 | "Zip files in your Nextcloud" : "내 Nextcloud에 있는 Zip 파일", 9 | "Allow zipping files directly in your Nextcloud!" : "Nextcloud에서 직접 Zip 파일로 압축하세요!", 10 | "Compress files" : "파일 압축", 11 | "Compress" : "압축", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "백그라운드에서 파일을 압축합니다. 작업이 완료되면 알림이 표시되며 파일은 현재 경로에 저장됩니다.", 13 | "Archive file name" : "압축 파일 이름", 14 | "_Compress %n file_::_Compress %n files_" : ["%n개 파일 압축"], 15 | "Compress to Zip" : "Zip 파일로 압축", 16 | "Archive" : "보관", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip 파일 생성을 시작했습니다. 작업이 종료되면 알림을 표시합니다", 18 | "An error happened when trying to compress the file." : "파일을 압축 시도 중 오류가 발생했습니다", 19 | "Only files up to {maxSize} can be compressed." : "최대 {maxSize}까지 압축할 수 있습니다" 20 | }, 21 | "nplurals=1; plural=0;"); 22 | -------------------------------------------------------------------------------- /l10n/pl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Zostanie utworzone archiwum Zip {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Twoje pliki zostały zapisane w archiwum Zip w lokalizacji {path}.", 5 | "Creating the Zip file {path} failed." : "Utworzenie pliku Zip {path} nie powiodło się.", 6 | "Zip files in your Nextcloud" : "Pliki Zip w Twoim Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Zezwala na zipowanie plików bezpośrednio w Twoim Nextcloud!", 8 | "Compress files" : "Kompresuj pliki", 9 | "Compress to Zip" : "Skompresuj do Zip", 10 | "Archive" : "Archiwizuj", 11 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Rozpoczęto tworzenie archiwum Zip. Powiadomimy Ciebie, gdy tylko archiwum będzie dostępne.", 12 | "An error happened when trying to compress the file." : "Wystąpił błąd podczas próby skompresowania pliku.", 13 | "Only files up to {maxSize} can be compressed." : "Można skompresować tylko pliki do {maxSize}." 14 | },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" 15 | } -------------------------------------------------------------------------------- /l10n/pl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Zostanie utworzone archiwum Zip {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Twoje pliki zostały zapisane w archiwum Zip w lokalizacji {path}.", 7 | "Creating the Zip file {path} failed." : "Utworzenie pliku Zip {path} nie powiodło się.", 8 | "Zip files in your Nextcloud" : "Pliki Zip w Twoim Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Zezwala na zipowanie plików bezpośrednio w Twoim Nextcloud!", 10 | "Compress files" : "Kompresuj pliki", 11 | "Compress to Zip" : "Skompresuj do Zip", 12 | "Archive" : "Archiwizuj", 13 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Rozpoczęto tworzenie archiwum Zip. Powiadomimy Ciebie, gdy tylko archiwum będzie dostępne.", 14 | "An error happened when trying to compress the file." : "Wystąpił błąd podczas próby skompresowania pliku.", 15 | "Only files up to {maxSize} can be compressed." : "Można skompresować tylko pliki do {maxSize}." 16 | }, 17 | "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); 18 | -------------------------------------------------------------------------------- /.github/workflows/lint-eslint-when-unrelated.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions 7 | # https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks 8 | # 9 | # SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 10 | # SPDX-License-Identifier: MIT 11 | name: Lint eslint 12 | 13 | on: 14 | pull_request: 15 | paths-ignore: 16 | - '.github/workflows/**' 17 | - 'src/**' 18 | - 'appinfo/info.xml' 19 | - 'package.json' 20 | - 'package-lock.json' 21 | - 'tsconfig.json' 22 | - '.eslintrc.*' 23 | - '.eslintignore' 24 | - '**.js' 25 | - '**.ts' 26 | - '**.vue' 27 | 28 | permissions: 29 | contents: read 30 | 31 | jobs: 32 | lint: 33 | permissions: 34 | contents: none 35 | 36 | runs-on: ubuntu-latest 37 | 38 | name: eslint 39 | 40 | steps: 41 | - run: 'echo "No eslint required"' 42 | -------------------------------------------------------------------------------- /lib/AppInfo/Application.php: -------------------------------------------------------------------------------- 1 | registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); 30 | $context->registerCapability(Capabilities::class); 31 | $context->registerNotifierService(Notifier::class); 32 | $context->registerInitialStateProvider(InitialState::class); 33 | } 34 | 35 | public function boot(IBootContext $context): void { 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /l10n/fa.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "A Zip archive {target} will be created.", 4 | "Your files have been stored as a Zip archive in {path}." : "Your files have been stored as a Zip archive in {path}.", 5 | "Creating the Zip file {path} failed." : "Creating the Zip file {path} failed.", 6 | "Zip files in your Nextcloud" : "Zip files in your Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Allow zipping files directly in your Nextcloud!", 8 | "Compress files" : "Compress files", 9 | "Compress" : "فشرده سازی", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "فایل در پس‌زمینه فشرده می‌شود. پس از اتمام، یک اعلان دریافت خواهید کرد و فایل در دایرکتوری فعلی قرار دارد.", 11 | "Archive file name" : "نام فایل آرشیوی", 12 | "Compress to Zip" : "Compress to Zip", 13 | "Archive" : "بایگانی", 14 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Creating Zip archive started. We will notify you as soon as the archive is available.", 15 | "An error happened when trying to compress the file." : "An error happened when trying to compress the file.", 16 | "Only files up to {maxSize} can be compressed." : "Only files up to {maxSize} can be compressed." 17 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 18 | } -------------------------------------------------------------------------------- /l10n/lo.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "ໂຕບີບອັດ", 3 | "A Zip archive {target} will be created." : "ໄຟລຊິບ {target} ຈະຖືກສ້າງຂຶ້ນ.", 4 | "Your files have been stored as a Zip archive in {path}." : "ໄຟລຂອງທ່ານຖືກເກັບໄວ້ເປັນໄຟລຊິບໃນ {path} ແລ້ວ.", 5 | "Creating the Zip file {path} failed." : "ການສ້າງໄຟລຊິບ {path} ລົ້ມເຫຼວ.", 6 | "Zip files in your Nextcloud" : "ບີບອັດໄຟລໃນ Nextcloud ຂອງທ່ານ", 7 | "Allow zipping files directly in your Nextcloud!" : "ອະນຸຍາດໃຫ້ບີບອັດໄຟລໄດ້ໂດຍກົງໃນ Nextcloud ຂອງທ່ານ!", 8 | "Compress files" : "ບີບອັດໄຟລ", 9 | "Compress" : "ບີບອັດ", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "ໄຟລຈະຖືກບີບອັດຢູ່ເບື້ອງຫຼັງ. ເມື່ອສຳເລັດແລ້ວ ທ່ານຈະໄດ້ຮັບການແຈ້ງເຕືອນ ແລະ ໄຟລຈະຢູ່ໃນໂຟລເດີປັດຈຸບັນ.", 11 | "Archive file name" : "ຊື່ໄຟລບີບອັດ", 12 | "_Compress %n file_::_Compress %n files_" : ["ບີບອັດ %n ໄຟລ"], 13 | "Compress to Zip" : "ບີບອັດເປັນໄຟລຊິບ", 14 | "Archive" : "ບ່ອນເກັບ", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "ເລີ່ມສ້າງໄຟລຊິບແລ້ວ. ພວກເຮົາຈະແຈ້ງໃຫ້ທ່ານຊາບທັນທີທີ່ໄຟລພ້ອມໃຊ້ງານ.", 16 | "An error happened when trying to compress the file." : "ເກີດຂໍ້ຜິດພາດໃນຂະນະທີ່ພະຍາຍາມບີບອັດໄຟລ.", 17 | "Only files up to {maxSize} can be compressed." : "ສາມາດບີບອັດໄດ້ສະເພາະໄຟລທີ່ມີຂະໜາດບໍ່ເກີນ {maxSize}." 18 | },"pluralForm" :"nplurals=1; plural=0;" 19 | } -------------------------------------------------------------------------------- /l10n/fa.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "A Zip archive {target} will be created.", 6 | "Your files have been stored as a Zip archive in {path}." : "Your files have been stored as a Zip archive in {path}.", 7 | "Creating the Zip file {path} failed." : "Creating the Zip file {path} failed.", 8 | "Zip files in your Nextcloud" : "Zip files in your Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Allow zipping files directly in your Nextcloud!", 10 | "Compress files" : "Compress files", 11 | "Compress" : "فشرده سازی", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "فایل در پس‌زمینه فشرده می‌شود. پس از اتمام، یک اعلان دریافت خواهید کرد و فایل در دایرکتوری فعلی قرار دارد.", 13 | "Archive file name" : "نام فایل آرشیوی", 14 | "Compress to Zip" : "Compress to Zip", 15 | "Archive" : "بایگانی", 16 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Creating Zip archive started. We will notify you as soon as the archive is available.", 17 | "An error happened when trying to compress the file." : "An error happened when trying to compress the file.", 18 | "Only files up to {maxSize} can be compressed." : "Only files up to {maxSize} can be compressed." 19 | }, 20 | "nplurals=2; plural=(n > 1);"); 21 | -------------------------------------------------------------------------------- /l10n/lo.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "ໂຕບີບອັດ", 5 | "A Zip archive {target} will be created." : "ໄຟລຊິບ {target} ຈະຖືກສ້າງຂຶ້ນ.", 6 | "Your files have been stored as a Zip archive in {path}." : "ໄຟລຂອງທ່ານຖືກເກັບໄວ້ເປັນໄຟລຊິບໃນ {path} ແລ້ວ.", 7 | "Creating the Zip file {path} failed." : "ການສ້າງໄຟລຊິບ {path} ລົ້ມເຫຼວ.", 8 | "Zip files in your Nextcloud" : "ບີບອັດໄຟລໃນ Nextcloud ຂອງທ່ານ", 9 | "Allow zipping files directly in your Nextcloud!" : "ອະນຸຍາດໃຫ້ບີບອັດໄຟລໄດ້ໂດຍກົງໃນ Nextcloud ຂອງທ່ານ!", 10 | "Compress files" : "ບີບອັດໄຟລ", 11 | "Compress" : "ບີບອັດ", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "ໄຟລຈະຖືກບີບອັດຢູ່ເບື້ອງຫຼັງ. ເມື່ອສຳເລັດແລ້ວ ທ່ານຈະໄດ້ຮັບການແຈ້ງເຕືອນ ແລະ ໄຟລຈະຢູ່ໃນໂຟລເດີປັດຈຸບັນ.", 13 | "Archive file name" : "ຊື່ໄຟລບີບອັດ", 14 | "_Compress %n file_::_Compress %n files_" : ["ບີບອັດ %n ໄຟລ"], 15 | "Compress to Zip" : "ບີບອັດເປັນໄຟລຊິບ", 16 | "Archive" : "ບ່ອນເກັບ", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "ເລີ່ມສ້າງໄຟລຊິບແລ້ວ. ພວກເຮົາຈະແຈ້ງໃຫ້ທ່ານຊາບທັນທີທີ່ໄຟລພ້ອມໃຊ້ງານ.", 18 | "An error happened when trying to compress the file." : "ເກີດຂໍ້ຜິດພາດໃນຂະນະທີ່ພະຍາຍາມບີບອັດໄຟລ.", 19 | "Only files up to {maxSize} can be compressed." : "ສາມາດບີບອັດໄດ້ສະເພາະໄຟລທີ່ມີຂະໜາດບໍ່ເກີນ {maxSize}." 20 | }, 21 | "nplurals=1; plural=0;"); 22 | -------------------------------------------------------------------------------- /l10n/da.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Et Zip-arkiv {target} vil blive oprettet.", 4 | "Your files have been stored as a Zip archive in {path}." : "Dine filer er blevet gemt som et zip-arkiv i {path}.", 5 | "Creating the Zip file {path} failed." : "Oprettelse af zip-filen {path} mislykkedes.", 6 | "Zip files in your Nextcloud" : "Zip filer i din Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Tillad zipning af filer direkte i din Nextcloud!", 8 | "Compress files" : "Komprimer filer", 9 | "Compress" : "Komprimer", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Filen vil blive komprimeret i baggrunden. Når processen er færdig modtager du en notifikation og filen er placeret i det nuværende bibliotek.", 11 | "Archive file name" : "Arkiv filnavn", 12 | "Compress to Zip" : "Komprimer til Zip", 13 | "Archive" : "Arkiver", 14 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Oprettelse af Zip-arkiv startede. Vi giver dig besked, så snart arkivet er tilgængeligt.", 15 | "An error happened when trying to compress the file." : "Der opstod en fejl under forsøget på at komprimere filen.", 16 | "Only files up to {maxSize} can be compressed." : "Kun filer op til {maxSize} kan komprimeres." 17 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 18 | } -------------------------------------------------------------------------------- /l10n/da.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Et Zip-arkiv {target} vil blive oprettet.", 6 | "Your files have been stored as a Zip archive in {path}." : "Dine filer er blevet gemt som et zip-arkiv i {path}.", 7 | "Creating the Zip file {path} failed." : "Oprettelse af zip-filen {path} mislykkedes.", 8 | "Zip files in your Nextcloud" : "Zip filer i din Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Tillad zipning af filer direkte i din Nextcloud!", 10 | "Compress files" : "Komprimer filer", 11 | "Compress" : "Komprimer", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Filen vil blive komprimeret i baggrunden. Når processen er færdig modtager du en notifikation og filen er placeret i det nuværende bibliotek.", 13 | "Archive file name" : "Arkiv filnavn", 14 | "Compress to Zip" : "Komprimer til Zip", 15 | "Archive" : "Arkiver", 16 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Oprettelse af Zip-arkiv startede. Vi giver dig besked, så snart arkivet er tilgængeligt.", 17 | "An error happened when trying to compress the file." : "Der opstod en fejl under forsøget på at komprimere filen.", 18 | "Only files up to {maxSize} can be compressed." : "Kun filer op til {maxSize} kan komprimeres." 19 | }, 20 | "nplurals=2; plural=(n != 1);"); 21 | -------------------------------------------------------------------------------- /l10n/nb.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Et Zip-arkiv {target} vil opprettes.", 4 | "Your files have been stored as a Zip archive in {path}." : "Filene dine er lagret som et zip-arkiv i {path}.", 5 | "Creating the Zip file {path} failed." : "Oppretting av zip-filen i {path} feilet", 6 | "Zip files in your Nextcloud" : "Zip-filer i din Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Tillat komprimering av filer direkte i Nextcloud!", 8 | "Compress files" : "Komprimer filer", 9 | "Compress" : "Komprimer", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Filen komprimeres i bakgrunnen. Når det er ferdig, vil du motta et varsel, og filen ligger i gjeldende katalog.", 11 | "Archive file name" : "Navn på arkivfil", 12 | "_Compress %n file_::_Compress %n files_" : ["Komprimer %n fil","Komprimer %n filer"], 13 | "Compress to Zip" : "Komprimer til Zip", 14 | "Archive" : "Arkiv", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Oppretting av Zip-arkiv startet. Vi gir deg beskjed så snart arkivet er tilgjengelig.", 16 | "An error happened when trying to compress the file." : "Det oppstod en feil under forsøk på å komprimere filen.", 17 | "Only files up to {maxSize} can be compressed." : "Kun filer opptil {maxSize} kan komprimeres." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/hu.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zippelő", 3 | "A Zip archive {target} will be created." : "A(z) {target} ZIP-archívum létre fog jönni.", 4 | "Your files have been stored as a Zip archive in {path}." : "A fájlok ZIP-archívumként lettek tárolva itt: {path}.", 5 | "Creating the Zip file {path} failed." : "A(z) {path} ZIP-fájl létrehozása sikertelen", 6 | "Zip files in your Nextcloud" : "Fájlok zippelése a Nextcloudjában", 7 | "Allow zipping files directly in your Nextcloud!" : "Fájlok zippelése közvetlenül a Nextcloudban.", 8 | "Compress files" : "Fájlok tömörítése", 9 | "Compress" : "Tömörítés", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "A fájl tömörítése a háttérben történik. Ha elkészült, értesítést kap, és a fájl az aktuális könyvtárba lesz helyezve.", 11 | "Archive file name" : "Archívumfájl neve", 12 | "_Compress %n file_::_Compress %n files_" : ["%n fájl tömörítése","%n fájl tömörítése"], 13 | "Compress to Zip" : "Tömörítés ZIP-be", 14 | "Archive" : "Archívum", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "A ZIP-archívum létrehozása elindult. Értesítjük, amint az archívum elérhető.", 16 | "An error happened when trying to compress the file." : "Hiba történt a fájl tömörítése során.", 17 | "Only files up to {maxSize} can be compressed." : "Legfeljebb {maxSize} méretű fájlok tömöríthetők." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/et_EE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Kokkupakkija", 3 | "A Zip archive {target} will be created." : "Järgmisena pakin kokku {target} zip-faili.", 4 | "Your files have been stored as a Zip archive in {path}." : "Sinu failid on nüüd olemas zip-failidena siin: {path}", 5 | "Creating the Zip file {path} failed." : "{path} zip-faili loomine ei õnnestunud.", 6 | "Zip files in your Nextcloud" : "Zip-failid sinu Nextcloudis", 7 | "Allow zipping files directly in your Nextcloud!" : "Zip-failide kokkupakkimine sinu Nextcloudis!", 8 | "Compress files" : "Paki failid kokku", 9 | "Compress" : "Paki kokku", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Fail on taustal kokkupakkimisel Kui see on tehtud, siis saad asjakohase teavituse ning leiad faili oma viimatikasutatud kaustast.", 11 | "Archive file name" : "Arhiivifaili nimi", 12 | "_Compress %n file_::_Compress %n files_" : ["Paki kokku %n fail","Paki kokku %n faili"], 13 | "Compress to Zip" : "Paki kokku zip-failiks", 14 | "Archive" : "Arhiveeri", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip-faili pakkimine algas. Me anname sulle teada, kui see tehtud on.", 16 | "An error happened when trying to compress the file." : "Faili kokkupakkimisel tekkis viga.", 17 | "Only files up to {maxSize} can be compressed." : "Kokku saad pakkida kuni {maxSize} suuri faile." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/nb.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Et Zip-arkiv {target} vil opprettes.", 6 | "Your files have been stored as a Zip archive in {path}." : "Filene dine er lagret som et zip-arkiv i {path}.", 7 | "Creating the Zip file {path} failed." : "Oppretting av zip-filen i {path} feilet", 8 | "Zip files in your Nextcloud" : "Zip-filer i din Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Tillat komprimering av filer direkte i Nextcloud!", 10 | "Compress files" : "Komprimer filer", 11 | "Compress" : "Komprimer", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Filen komprimeres i bakgrunnen. Når det er ferdig, vil du motta et varsel, og filen ligger i gjeldende katalog.", 13 | "Archive file name" : "Navn på arkivfil", 14 | "_Compress %n file_::_Compress %n files_" : ["Komprimer %n fil","Komprimer %n filer"], 15 | "Compress to Zip" : "Komprimer til Zip", 16 | "Archive" : "Arkiv", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Oppretting av Zip-arkiv startet. Vi gir deg beskjed så snart arkivet er tilgjengelig.", 18 | "An error happened when trying to compress the file." : "Det oppstod en feil under forsøk på å komprimere filen.", 19 | "Only files up to {maxSize} can be compressed." : "Kun filer opptil {maxSize} kan komprimeres." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/ru.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Будет создан Zip-архив {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Ваши файлы были сохранены в виде Zip-архива в {path}.", 5 | "Creating the Zip file {path} failed." : "Не удалось создать Zip-файл {path}.", 6 | "Zip files in your Nextcloud" : "Zip-файлы в вашем Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Позволяет архивировать файлы прямо в вашем Nextcloud!", 8 | "Compress files" : "Сжатие файлов", 9 | "Compress" : "Сжатие", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Файл будет сжат в фоновом режиме. После завершения вы получите уведомление, а файл будет расположен в текущем каталоге.", 11 | "Archive file name" : "Имя файла архива", 12 | "Compress to Zip" : "Сжать в Zip", 13 | "Archive" : "Архив", 14 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Началось создание Zip-архива. Мы уведомим вас, как только архив будет доступен.", 15 | "An error happened when trying to compress the file." : "При попытке сжать файл произошла ошибка.", 16 | "Only files up to {maxSize} can be compressed." : "Сжимать можно только файлы размером до {maxSize}." 17 | },"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" 18 | } -------------------------------------------------------------------------------- /l10n/ug.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "بوغقۇچ", 3 | "A Zip archive {target} will be created." : "Zip ئارخىپى {target} قۇرۇلىدۇ.", 4 | "Your files have been stored as a Zip archive in {path}." : "ھۆججەتلىرىڭىز {path} دىكى Zip ئارخىپى سۈپىتىدە ساقلاندى.", 5 | "Creating the Zip file {path} failed." : "Zip ھۆججىتى {path} قۇرۇش مەغلۇب بولدى.", 6 | "Zip files in your Nextcloud" : "Nextcloud دىكى ھۆججەتلەرنى يوللاڭ", 7 | "Allow zipping files directly in your Nextcloud!" : "Nextcloud دىكى ھۆججەتلەرنى بىۋاسىتە يوللاشقا يول قويۇڭ!", 8 | "Compress files" : "ھۆججەتلەرنى پىرىسلاش", 9 | "Compress" : "پىرىسلاش", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "ھۆججەت ئارقا سۇپىدا پىرىسلىنىدۇ. تاماملانغاندىن كېيىن ئۇقتۇرۇش تاپشۇرۇۋالىسىز ھەمدە ھۆججەت نۆۋەتتىكى مۇندەرىجىگە جايلاشقان.", 11 | "Archive file name" : "ھۆججەت ئىسمى", 12 | "_Compress %n file_::_Compress %n files_" : ["%n ھۆججەتنى پىرىسلاش","%n ھۆججەتلەرنى پىرىسلاش"], 13 | "Compress to Zip" : "Zip غا پىرىسلاش", 14 | "Archive" : "ئارخىپ", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip ئارخىپى قۇرۇش باشلاندى. ئارخىپ تېپىلسىلا سىزگە خەۋەر قىلىمىز.", 16 | "An error happened when trying to compress the file." : "ھۆججەتنى پىرىسلاشقا ئۇرۇنغاندا خاتالىق كۆرۈلدى.", 17 | "Only files up to {maxSize} can be compressed." : "پەقەت {maxSize} گىچە بولغان ھۆججەتلەرنىلا پىرىسلىغىلى بولىدۇ." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/hu.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zippelő", 5 | "A Zip archive {target} will be created." : "A(z) {target} ZIP-archívum létre fog jönni.", 6 | "Your files have been stored as a Zip archive in {path}." : "A fájlok ZIP-archívumként lettek tárolva itt: {path}.", 7 | "Creating the Zip file {path} failed." : "A(z) {path} ZIP-fájl létrehozása sikertelen", 8 | "Zip files in your Nextcloud" : "Fájlok zippelése a Nextcloudjában", 9 | "Allow zipping files directly in your Nextcloud!" : "Fájlok zippelése közvetlenül a Nextcloudban.", 10 | "Compress files" : "Fájlok tömörítése", 11 | "Compress" : "Tömörítés", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "A fájl tömörítése a háttérben történik. Ha elkészült, értesítést kap, és a fájl az aktuális könyvtárba lesz helyezve.", 13 | "Archive file name" : "Archívumfájl neve", 14 | "_Compress %n file_::_Compress %n files_" : ["%n fájl tömörítése","%n fájl tömörítése"], 15 | "Compress to Zip" : "Tömörítés ZIP-be", 16 | "Archive" : "Archívum", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "A ZIP-archívum létrehozása elindult. Értesítjük, amint az archívum elérhető.", 18 | "An error happened when trying to compress the file." : "Hiba történt a fájl tömörítése során.", 19 | "Only files up to {maxSize} can be compressed." : "Legfeljebb {maxSize} méretű fájlok tömöríthetők." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/sv.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zippare", 3 | "A Zip archive {target} will be created." : "Ett Zip-arkiv {target} kommer att skapas.", 4 | "Your files have been stored as a Zip archive in {path}." : "Dina filer har sparats som ett Zip-arkiv i {path}.", 5 | "Creating the Zip file {path} failed." : "Det gick inte att skapa zip-filen {sökväg}.", 6 | "Zip files in your Nextcloud" : "Zip-filer i ditt Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Tillåt att zippa filer direkt i ditt Nextcloud!", 8 | "Compress files" : "Komprimera filer", 9 | "Compress" : "Komprimera", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Filen kommer att komprimeras i bakgrunden. När det är klart får du ett meddelande och filen finns i den nuvarande katalogen.", 11 | "Archive file name" : "Arkivfilens namn", 12 | "_Compress %n file_::_Compress %n files_" : ["Komprimera %n fil","Komprimera %n filer"], 13 | "Compress to Zip" : "Komprimera till Zip", 14 | "Archive" : "Arkivera", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Skapande av Zip-arkivet har startat. Vi meddelar dig så snart arkivet är tillgängligt.", 16 | "An error happened when trying to compress the file." : "Ett fel inträffade när filen skulle komprimeras.", 17 | "Only files up to {maxSize} can be compressed." : "Endast filer upp till {maxSize} kan komprimeras." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/en_GB.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "A Zip archive {target} will be created.", 4 | "Your files have been stored as a Zip archive in {path}." : "Your files have been stored as a Zip archive in {path}.", 5 | "Creating the Zip file {path} failed." : "Creating the Zip file {path} failed.", 6 | "Zip files in your Nextcloud" : "Zip files in your Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Allow zipping files directly in your Nextcloud!", 8 | "Compress files" : "Compress files", 9 | "Compress" : "Compress", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory.", 11 | "Archive file name" : "Archive file name", 12 | "_Compress %n file_::_Compress %n files_" : ["Compress %n file","Compress %n files"], 13 | "Compress to Zip" : "Compress to Zip", 14 | "Archive" : "Archive", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Creating Zip archive started. We will notify you as soon as the archive is available.", 16 | "An error happened when trying to compress the file." : "An error happened when trying to compress the file.", 17 | "Only files up to {maxSize} can be compressed." : "Only files up to {maxSize} can be compressed." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/et_EE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Kokkupakkija", 5 | "A Zip archive {target} will be created." : "Järgmisena pakin kokku {target} zip-faili.", 6 | "Your files have been stored as a Zip archive in {path}." : "Sinu failid on nüüd olemas zip-failidena siin: {path}", 7 | "Creating the Zip file {path} failed." : "{path} zip-faili loomine ei õnnestunud.", 8 | "Zip files in your Nextcloud" : "Zip-failid sinu Nextcloudis", 9 | "Allow zipping files directly in your Nextcloud!" : "Zip-failide kokkupakkimine sinu Nextcloudis!", 10 | "Compress files" : "Paki failid kokku", 11 | "Compress" : "Paki kokku", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Fail on taustal kokkupakkimisel Kui see on tehtud, siis saad asjakohase teavituse ning leiad faili oma viimatikasutatud kaustast.", 13 | "Archive file name" : "Arhiivifaili nimi", 14 | "_Compress %n file_::_Compress %n files_" : ["Paki kokku %n fail","Paki kokku %n faili"], 15 | "Compress to Zip" : "Paki kokku zip-failiks", 16 | "Archive" : "Arhiveeri", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip-faili pakkimine algas. Me anname sulle teada, kui see tehtud on.", 18 | "An error happened when trying to compress the file." : "Faili kokkupakkimisel tekkis viga.", 19 | "Only files up to {maxSize} can be compressed." : "Kokku saad pakkida kuni {maxSize} suuri faile." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/sw.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Kumbukumbu ya Zip{target} itaundwa.", 4 | "Your files have been stored as a Zip archive in {path}." : "Faili zako zimehifadhiwa kama kumbukumbu ya Zip katika {path}.", 5 | "Creating the Zip file {path} failed." : "Imeshindwa kuunda faili ya Zip {path}.", 6 | "Zip files in your Nextcloud" : "Zip faili kwenye Nextcloud yako", 7 | "Allow zipping files directly in your Nextcloud!" : "Ruhusu kubana faili moja kwa moja kwenye Nextcloud yako!", 8 | "Compress files" : "Bana faili", 9 | "Compress" : "Bana", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Faili itabanwa chinichini. Mara baada ya kumaliza utapokea arifa na faili iko kwenye saraka ya sasa.", 11 | "Archive file name" : "Weka jina la faili kwenye kumbukumbu", 12 | "_Compress %n file_::_Compress %n files_" : ["Compress %n file","Bana %n faili"], 13 | "Compress to Zip" : "Bana/finya kwa Zip", 14 | "Archive" : "Weka kumbukumbu", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Uundaji wa kumbukumbu ya Zip umeanza. Tutakuarifu pindi tu kumbukumbu itakapopatikana.", 16 | "An error happened when trying to compress the file." : "Hitilafu ilitokea wakati wa kujaribu kubana faili.", 17 | "Only files up to {maxSize} can be compressed." : "Ni faili za hadi {maxSize} pekee ndizo zinazoweza kubanwa." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/ar.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "ضاغط Zipper", 3 | "A Zip archive {target} will be created." : "أرشيف ZIP ـ {target} سيتم إنشاؤه ", 4 | "Your files have been stored as a Zip archive in {path}." : "ملفاتك محفوظة في شكل أرشيف Zip في {path}.", 5 | "Creating the Zip file {path} failed." : "فشل في إنشاء ملف الأرشيف Zip ـ {path}.", 6 | "Zip files in your Nextcloud" : "ملفات أرشيف Zip على نكست كلاود", 7 | "Allow zipping files directly in your Nextcloud!" : "السماح بضغط الملفات مُباشرةً على نكست كلاود!", 8 | "Compress files" : "ضغط الملفات", 9 | "Compress" : "إضغَط", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "سيتم ضغط الملف في الخلفية. بمجرد الانتهاء، ستتلقى إشعاراً وسيكون الملف موجوداً في المجلد الحالي", 11 | "Archive file name" : "إسم ملف الأرشيف", 12 | "_Compress %n file_::_Compress %n files_" : ["إضغَط %n ملف","إضغَط%n ملف","إضغَط %n ملف","إضغَط %n ملفات","إضغَط %n ملف","إضغَط %n ملف"], 13 | "Compress to Zip" : "الضغط إلى Zip", 14 | "Archive" : "الأرشيف", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "بدأ تكوين الأرشيف المضغوط. سيتم إعلامك بمجرد انتهاء العملية.", 16 | "An error happened when trying to compress the file." : "حدث خطأٌ أثناء محاولة ضغط الملف.", 17 | "Only files up to {maxSize} can be compressed." : "يُمكن ضغط ملفات بحجم أقصى {maxSize}." 18 | },"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;" 19 | } -------------------------------------------------------------------------------- /l10n/fi.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Zip-arkisto {target} luodaan.", 4 | "Your files have been stored as a Zip archive in {path}." : "Tiedostosi on talletettu Zip-arkistoon {path}.", 5 | "Creating the Zip file {path} failed." : "Zip-tiedoston {path} luominen epäonnistui.", 6 | "Zip files in your Nextcloud" : "Zip-tiedostot Nextcloudissasi", 7 | "Allow zipping files directly in your Nextcloud!" : "Mahdollista tiedostojen Zip-pakkaaminen suoraan Nextcloudissa!", 8 | "Compress files" : "Tiivistä tiedostot", 9 | "Compress" : "Tiivistä", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Tiedosto pakataan taustalla. Kun pakkaaminen valmistuu, saat ilmoituksen, ja tiedosto sijaitsee nykyisessä kansiossa.", 11 | "Archive file name" : "Arkistotiedoston nimi", 12 | "_Compress %n file_::_Compress %n files_" : ["Tiivistä %n tiedosto","Tiivistä %n tiedostoa"], 13 | "Compress to Zip" : "Pakkaa Zip-muotoon", 14 | "Archive" : "Arkisto", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip-arkiston luominen käynnistyi. Ilmoitamme sinulle, kun arkisto on saatavilla.", 16 | "An error happened when trying to compress the file." : "Tiedostoa tiivistäessä tapahtui virhe.", 17 | "Only files up to {maxSize} can be compressed." : "Vain tiedostot, joiden koko on enintään {maxSize}, on mahdollista tiivistää." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/ru.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Будет создан Zip-архив {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Ваши файлы были сохранены в виде Zip-архива в {path}.", 7 | "Creating the Zip file {path} failed." : "Не удалось создать Zip-файл {path}.", 8 | "Zip files in your Nextcloud" : "Zip-файлы в вашем Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Позволяет архивировать файлы прямо в вашем Nextcloud!", 10 | "Compress files" : "Сжатие файлов", 11 | "Compress" : "Сжатие", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Файл будет сжат в фоновом режиме. После завершения вы получите уведомление, а файл будет расположен в текущем каталоге.", 13 | "Archive file name" : "Имя файла архива", 14 | "Compress to Zip" : "Сжать в Zip", 15 | "Archive" : "Архив", 16 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Началось создание Zip-архива. Мы уведомим вас, как только архив будет доступен.", 17 | "An error happened when trying to compress the file." : "При попытке сжать файл произошла ошибка.", 18 | "Only files up to {maxSize} can be compressed." : "Сжимать можно только файлы размером до {maxSize}." 19 | }, 20 | "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"); 21 | -------------------------------------------------------------------------------- /l10n/tr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Sıkıştırıcı", 3 | "A Zip archive {target} will be created." : "{target} Zip arşivi oluşturulacak.", 4 | "Your files have been stored as a Zip archive in {path}." : "Dosyalarınız {path} yolunda Zip arşivi olarak kaydedilecek.", 5 | "Creating the Zip file {path} failed." : "{path} Zip dosyası oluşturulamadı.", 6 | "Zip files in your Nextcloud" : "Nextcloud kopyanızdaki Zip dosyaları", 7 | "Allow zipping files directly in your Nextcloud!" : "Dosyalarınızı doğrudan Nextcloud üzerinde sıkıştırmanızı sağlar!", 8 | "Compress files" : "Dosyaları sıkıştır", 9 | "Compress" : "Sıkıştır", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Dosya arka planda sıkıştırılacak. İşlem tamamlandığında bir bildirim alacaksınız ve dosya geçerli klasöre kaydedilecek.", 11 | "Archive file name" : "Arşiv dosyası adı", 12 | "_Compress %n file_::_Compress %n files_" : ["%n dosyayı sıkıştır","%n dosyayı sıkıştır"], 13 | "Compress to Zip" : "Zip arşivine ekle", 14 | "Archive" : "Arşiv", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip arşivi oluşturuluyor. Hazır olduğunda sizi bilgilendireceğiz.", 16 | "An error happened when trying to compress the file." : "Dosya sıkıştırılmaya çalışılırken bir sorun çıktı.", 17 | "Only files up to {maxSize} can be compressed." : "Yalnızca {maxSize} boyutuna kadar olan dosyalar sıkıştırılabilir." 18 | },"pluralForm" :"nplurals=2; plural=(n > 1);" 19 | } -------------------------------------------------------------------------------- /l10n/ug.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "بوغقۇچ", 5 | "A Zip archive {target} will be created." : "Zip ئارخىپى {target} قۇرۇلىدۇ.", 6 | "Your files have been stored as a Zip archive in {path}." : "ھۆججەتلىرىڭىز {path} دىكى Zip ئارخىپى سۈپىتىدە ساقلاندى.", 7 | "Creating the Zip file {path} failed." : "Zip ھۆججىتى {path} قۇرۇش مەغلۇب بولدى.", 8 | "Zip files in your Nextcloud" : "Nextcloud دىكى ھۆججەتلەرنى يوللاڭ", 9 | "Allow zipping files directly in your Nextcloud!" : "Nextcloud دىكى ھۆججەتلەرنى بىۋاسىتە يوللاشقا يول قويۇڭ!", 10 | "Compress files" : "ھۆججەتلەرنى پىرىسلاش", 11 | "Compress" : "پىرىسلاش", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "ھۆججەت ئارقا سۇپىدا پىرىسلىنىدۇ. تاماملانغاندىن كېيىن ئۇقتۇرۇش تاپشۇرۇۋالىسىز ھەمدە ھۆججەت نۆۋەتتىكى مۇندەرىجىگە جايلاشقان.", 13 | "Archive file name" : "ھۆججەت ئىسمى", 14 | "_Compress %n file_::_Compress %n files_" : ["%n ھۆججەتنى پىرىسلاش","%n ھۆججەتلەرنى پىرىسلاش"], 15 | "Compress to Zip" : "Zip غا پىرىسلاش", 16 | "Archive" : "ئارخىپ", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip ئارخىپى قۇرۇش باشلاندى. ئارخىپ تېپىلسىلا سىزگە خەۋەر قىلىمىز.", 18 | "An error happened when trying to compress the file." : "ھۆججەتنى پىرىسلاشقا ئۇرۇنغاندا خاتالىق كۆرۈلدى.", 19 | "Only files up to {maxSize} can be compressed." : "پەقەت {maxSize} گىچە بولغان ھۆججەتلەرنىلا پىرىسلىغىلى بولىدۇ." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/sv.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zippare", 5 | "A Zip archive {target} will be created." : "Ett Zip-arkiv {target} kommer att skapas.", 6 | "Your files have been stored as a Zip archive in {path}." : "Dina filer har sparats som ett Zip-arkiv i {path}.", 7 | "Creating the Zip file {path} failed." : "Det gick inte att skapa zip-filen {sökväg}.", 8 | "Zip files in your Nextcloud" : "Zip-filer i ditt Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Tillåt att zippa filer direkt i ditt Nextcloud!", 10 | "Compress files" : "Komprimera filer", 11 | "Compress" : "Komprimera", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Filen kommer att komprimeras i bakgrunden. När det är klart får du ett meddelande och filen finns i den nuvarande katalogen.", 13 | "Archive file name" : "Arkivfilens namn", 14 | "_Compress %n file_::_Compress %n files_" : ["Komprimera %n fil","Komprimera %n filer"], 15 | "Compress to Zip" : "Komprimera till Zip", 16 | "Archive" : "Arkivera", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Skapande av Zip-arkivet har startat. Vi meddelar dig så snart arkivet är tillgängligt.", 18 | "An error happened when trying to compress the file." : "Ett fel inträffade när filen skulle komprimeras.", 19 | "Only files up to {maxSize} can be compressed." : "Endast filer upp till {maxSize} kan komprimeras." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /REUSE.toml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors 2 | # SPDX-License-Identifier: AGPL-3.0-or-later 3 | version = 1 4 | SPDX-PackageName = "files_zip" 5 | SPDX-PackageSupplier = "Nextcloud " 6 | SPDX-PackageDownloadLocation = "https://github.com/nextcloud/files_zip" 7 | 8 | [[annotations]] 9 | path = [".gitattributes", ".github/CODEOWNERS", ".editorconfig", "package-lock.json", "package.json", "composer.json", "composer.lock", "**/composer.json", "**/composer.lock", ".l10nignore", "cypress/tsconfig.json", "vendor-bin/**/composer.json", "vendor-bin/**/composer.lock", ".tx/config", "tsconfig.json", "js/vendor.LICENSE.txt", "krankerl.toml", ".npmignore", ".eslintrc.json", ".tx/backport"] 10 | precedence = "aggregate" 11 | SPDX-FileCopyrightText = "none" 12 | SPDX-License-Identifier = "CC0-1.0" 13 | 14 | [[annotations]] 15 | path = ["l10n/**.js", "l10n/**.json"] 16 | precedence = "aggregate" 17 | SPDX-FileCopyrightText = "2021 Nextcloud contributors" 18 | SPDX-License-Identifier = "AGPL-3.0-or-later" 19 | 20 | [[annotations]] 21 | path = ["js/**.js.map", "js/**.js", "js/**.mjs", "js/**.mjs.map", "js/templates/**.handlebars", "emptyTemplates/**", "vendor/autoload.php", "tests/data/**"] 22 | precedence = "aggregate" 23 | SPDX-FileCopyrightText = "2021 Nextcloud GmbH and Nextcloud contributors" 24 | SPDX-License-Identifier = "AGPL-3.0-or-later" 25 | 26 | [[annotations]] 27 | path = ["img/files_zip-dark.svg", "img/files_zip.svg", "img/zip-box-outline.svg"] 28 | precedence = "aggregate" 29 | SPDX-FileCopyrightText = "Michael Irigoyen" 30 | SPDX-License-Identifier = "Apache-2.0" 31 | -------------------------------------------------------------------------------- /l10n/en_GB.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "A Zip archive {target} will be created.", 6 | "Your files have been stored as a Zip archive in {path}." : "Your files have been stored as a Zip archive in {path}.", 7 | "Creating the Zip file {path} failed." : "Creating the Zip file {path} failed.", 8 | "Zip files in your Nextcloud" : "Zip files in your Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Allow zipping files directly in your Nextcloud!", 10 | "Compress files" : "Compress files", 11 | "Compress" : "Compress", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory.", 13 | "Archive file name" : "Archive file name", 14 | "_Compress %n file_::_Compress %n files_" : ["Compress %n file","Compress %n files"], 15 | "Compress to Zip" : "Compress to Zip", 16 | "Archive" : "Archive", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Creating Zip archive started. We will notify you as soon as the archive is available.", 18 | "An error happened when trying to compress the file." : "An error happened when trying to compress the file.", 19 | "Only files up to {maxSize} can be compressed." : "Only files up to {maxSize} can be compressed." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/sw.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Kumbukumbu ya Zip{target} itaundwa.", 6 | "Your files have been stored as a Zip archive in {path}." : "Faili zako zimehifadhiwa kama kumbukumbu ya Zip katika {path}.", 7 | "Creating the Zip file {path} failed." : "Imeshindwa kuunda faili ya Zip {path}.", 8 | "Zip files in your Nextcloud" : "Zip faili kwenye Nextcloud yako", 9 | "Allow zipping files directly in your Nextcloud!" : "Ruhusu kubana faili moja kwa moja kwenye Nextcloud yako!", 10 | "Compress files" : "Bana faili", 11 | "Compress" : "Bana", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Faili itabanwa chinichini. Mara baada ya kumaliza utapokea arifa na faili iko kwenye saraka ya sasa.", 13 | "Archive file name" : "Weka jina la faili kwenye kumbukumbu", 14 | "_Compress %n file_::_Compress %n files_" : ["Compress %n file","Bana %n faili"], 15 | "Compress to Zip" : "Bana/finya kwa Zip", 16 | "Archive" : "Weka kumbukumbu", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Uundaji wa kumbukumbu ya Zip umeanza. Tutakuarifu pindi tu kumbukumbu itakapopatikana.", 18 | "An error happened when trying to compress the file." : "Hitilafu ilitokea wakati wa kujaribu kubana faili.", 19 | "Only files up to {maxSize} can be compressed." : "Ni faili za hadi {maxSize} pekee ndizo zinazoweza kubanwa." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/ar.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "ضاغط Zipper", 5 | "A Zip archive {target} will be created." : "أرشيف ZIP ـ {target} سيتم إنشاؤه ", 6 | "Your files have been stored as a Zip archive in {path}." : "ملفاتك محفوظة في شكل أرشيف Zip في {path}.", 7 | "Creating the Zip file {path} failed." : "فشل في إنشاء ملف الأرشيف Zip ـ {path}.", 8 | "Zip files in your Nextcloud" : "ملفات أرشيف Zip على نكست كلاود", 9 | "Allow zipping files directly in your Nextcloud!" : "السماح بضغط الملفات مُباشرةً على نكست كلاود!", 10 | "Compress files" : "ضغط الملفات", 11 | "Compress" : "إضغَط", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "سيتم ضغط الملف في الخلفية. بمجرد الانتهاء، ستتلقى إشعاراً وسيكون الملف موجوداً في المجلد الحالي", 13 | "Archive file name" : "إسم ملف الأرشيف", 14 | "_Compress %n file_::_Compress %n files_" : ["إضغَط %n ملف","إضغَط%n ملف","إضغَط %n ملف","إضغَط %n ملفات","إضغَط %n ملف","إضغَط %n ملف"], 15 | "Compress to Zip" : "الضغط إلى Zip", 16 | "Archive" : "الأرشيف", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "بدأ تكوين الأرشيف المضغوط. سيتم إعلامك بمجرد انتهاء العملية.", 18 | "An error happened when trying to compress the file." : "حدث خطأٌ أثناء محاولة ضغط الملف.", 19 | "Only files up to {maxSize} can be compressed." : "يُمكن ضغط ملفات بحجم أقصى {maxSize}." 20 | }, 21 | "nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"); 22 | -------------------------------------------------------------------------------- /l10n/fi.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Zip-arkisto {target} luodaan.", 6 | "Your files have been stored as a Zip archive in {path}." : "Tiedostosi on talletettu Zip-arkistoon {path}.", 7 | "Creating the Zip file {path} failed." : "Zip-tiedoston {path} luominen epäonnistui.", 8 | "Zip files in your Nextcloud" : "Zip-tiedostot Nextcloudissasi", 9 | "Allow zipping files directly in your Nextcloud!" : "Mahdollista tiedostojen Zip-pakkaaminen suoraan Nextcloudissa!", 10 | "Compress files" : "Tiivistä tiedostot", 11 | "Compress" : "Tiivistä", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Tiedosto pakataan taustalla. Kun pakkaaminen valmistuu, saat ilmoituksen, ja tiedosto sijaitsee nykyisessä kansiossa.", 13 | "Archive file name" : "Arkistotiedoston nimi", 14 | "_Compress %n file_::_Compress %n files_" : ["Tiivistä %n tiedosto","Tiivistä %n tiedostoa"], 15 | "Compress to Zip" : "Pakkaa Zip-muotoon", 16 | "Archive" : "Arkisto", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip-arkiston luominen käynnistyi. Ilmoitamme sinulle, kun arkisto on saatavilla.", 18 | "An error happened when trying to compress the file." : "Tiedostoa tiivistäessä tapahtui virhe.", 19 | "Only files up to {maxSize} can be compressed." : "Vain tiedostot, joiden koko on enintään {maxSize}, on mahdollista tiivistää." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/tr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Sıkıştırıcı", 5 | "A Zip archive {target} will be created." : "{target} Zip arşivi oluşturulacak.", 6 | "Your files have been stored as a Zip archive in {path}." : "Dosyalarınız {path} yolunda Zip arşivi olarak kaydedilecek.", 7 | "Creating the Zip file {path} failed." : "{path} Zip dosyası oluşturulamadı.", 8 | "Zip files in your Nextcloud" : "Nextcloud kopyanızdaki Zip dosyaları", 9 | "Allow zipping files directly in your Nextcloud!" : "Dosyalarınızı doğrudan Nextcloud üzerinde sıkıştırmanızı sağlar!", 10 | "Compress files" : "Dosyaları sıkıştır", 11 | "Compress" : "Sıkıştır", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Dosya arka planda sıkıştırılacak. İşlem tamamlandığında bir bildirim alacaksınız ve dosya geçerli klasöre kaydedilecek.", 13 | "Archive file name" : "Arşiv dosyası adı", 14 | "_Compress %n file_::_Compress %n files_" : ["%n dosyayı sıkıştır","%n dosyayı sıkıştır"], 15 | "Compress to Zip" : "Zip arşivine ekle", 16 | "Archive" : "Arşiv", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Zip arşivi oluşturuluyor. Hazır olduğunda sizi bilgilendireceğiz.", 18 | "An error happened when trying to compress the file." : "Dosya sıkıştırılmaya çalışılırken bir sorun çıktı.", 19 | "Only files up to {maxSize} can be compressed." : "Yalnızca {maxSize} boyutuna kadar olan dosyalar sıkıştırılabilir." 20 | }, 21 | "nplurals=2; plural=(n > 1);"); 22 | -------------------------------------------------------------------------------- /l10n/ca.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Compressor ZIP", 3 | "A Zip archive {target} will be created." : "Es crearà un arxiu ZIP {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Els fitxers s'han emmagatzemat en l'arxiu ZIP {path}.", 5 | "Creating the Zip file {path} failed." : "No s'ha pogut crear l'arxiu ZIP {path}.", 6 | "Zip files in your Nextcloud" : "Comprimiu fitxers en el Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Permetre comprimir fitxers directament en el Nextcloud!", 8 | "Compress files" : "Comprimeix els fitxers", 9 | "Compress" : "Comprimeix", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "El fitxer es comprimirà en segon terme. Quan hagi acabat, rebreu una notificació i trobareu el fitxer en la carpeta actual.", 11 | "Archive file name" : "Nom de l'arxiu", 12 | "_Compress %n file_::_Compress %n files_" : ["Comprimeix %n fitxer","Comprimeix %n fitxers"], 13 | "Compress to Zip" : "Comprimeix a un arxiu ZIP", 14 | "Archive" : "Arxiu", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "S'ha iniciat la creació de l'arxiu ZIP. Rebreu una notificació quan l'arxiu estigui disponible.", 16 | "An error happened when trying to compress the file." : "S'ha produït un error en intentar comprimir el fitxer.", 17 | "Only files up to {maxSize} can be compressed." : "Només es poden comprimir fitxers de fins a {maxSize}." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/el.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Το συμπιεσμένο αρχείο {target} Zip θα δημιουργηθεί. ", 4 | "Your files have been stored as a Zip archive in {path}." : "Τα αρχεία σας έχουν αποθηκευτεί ως αρχείο Zip στο {path}.", 5 | "Creating the Zip file {path} failed." : "Η δημιουργία του αρχείου Zip {path} απέτυχε.", 6 | "Zip files in your Nextcloud" : "Αρχεία Zip στο Nextcloud σας", 7 | "Allow zipping files directly in your Nextcloud!" : "Επιτρέψτε τη συμπίεση αρχείων στο Nextcloud σας!", 8 | "Compress files" : "Συμπίεση αρχείων", 9 | "Compress" : "Συμπίεση", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Το αρχείο θα συμπιεστεί στο παρασκήνιο. Μόλις ολοκληρωθεί, θα λάβετε μια ειδοποίηση και το αρχείο θα βρίσκεται στον τρέχοντα κατάλογο.", 11 | "Archive file name" : "Όνομα αρχείου αρχειοθέτησης", 12 | "_Compress %n file_::_Compress %n files_" : ["Συμπίεση %n αρχείου","Συμπίεση %n αρχείων"], 13 | "Compress to Zip" : "Συμπίεση σε Zip", 14 | "Archive" : "Αρχειοθέτηση", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Η δημιουργία του αρχείου Zip ξεκίνησε. Θα σας ειδοποιήσουμε μόλις το αρχείο είναι διαθέσιμο.", 16 | "An error happened when trying to compress the file." : "Παρουσιάστηκε σφάλμα κατά τη συμπίεση του αρχείου.", 17 | "Only files up to {maxSize} can be compressed." : "Μόνο αρχεία έως {maxSize} μπορούν να συμπιεστούν." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/gl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Crearase un arquivo Zip {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Os seus ficheiros gardáronse como un arquivo Zip en {path}.", 5 | "Creating the Zip file {path} failed." : "Produciuse un erro ao crear o ficheiro Zip {path}.", 6 | "Zip files in your Nextcloud" : "Ficheiros zip no seu Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Permite comprimir ficheiros (con zip) directamente no seu Nextcloud!", 8 | "Compress files" : "Ficheiros comprimidos", 9 | "Compress" : "Comprimir", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "O ficheiro comprimirase en segundo plano. Unha vez rematado, recibirá unha notificación e o ficheiro estará situado no directorio actual.", 11 | "Archive file name" : "Nome do arquivador", 12 | "_Compress %n file_::_Compress %n files_" : ["Comprimir %n ficheiro","Comprimir %n ficheiros"], 13 | "Compress to Zip" : "Comprimir a Zip", 14 | "Archive" : "Arquivar", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Comezou a creación do arquivo Zip. Avisarémolo cando o arquivo estea dispoñíbel.", 16 | "An error happened when trying to compress the file." : "Produciuse un erro ao tentar comprimir o ficheiro.", 17 | "Only files up to {maxSize} can be compressed." : "Só se poden comprimir ficheiros ata {maxSize}." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/ca.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Compressor ZIP", 5 | "A Zip archive {target} will be created." : "Es crearà un arxiu ZIP {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Els fitxers s'han emmagatzemat en l'arxiu ZIP {path}.", 7 | "Creating the Zip file {path} failed." : "No s'ha pogut crear l'arxiu ZIP {path}.", 8 | "Zip files in your Nextcloud" : "Comprimiu fitxers en el Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Permetre comprimir fitxers directament en el Nextcloud!", 10 | "Compress files" : "Comprimeix els fitxers", 11 | "Compress" : "Comprimeix", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "El fitxer es comprimirà en segon terme. Quan hagi acabat, rebreu una notificació i trobareu el fitxer en la carpeta actual.", 13 | "Archive file name" : "Nom de l'arxiu", 14 | "_Compress %n file_::_Compress %n files_" : ["Comprimeix %n fitxer","Comprimeix %n fitxers"], 15 | "Compress to Zip" : "Comprimeix a un arxiu ZIP", 16 | "Archive" : "Arxiu", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "S'ha iniciat la creació de l'arxiu ZIP. Rebreu una notificació quan l'arxiu estigui disponible.", 18 | "An error happened when trying to compress the file." : "S'ha produït un error en intentar comprimir el fitxer.", 19 | "Only files up to {maxSize} can be compressed." : "Només es poden comprimir fitxers de fins a {maxSize}." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/gl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Crearase un arquivo Zip {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Os seus ficheiros gardáronse como un arquivo Zip en {path}.", 7 | "Creating the Zip file {path} failed." : "Produciuse un erro ao crear o ficheiro Zip {path}.", 8 | "Zip files in your Nextcloud" : "Ficheiros zip no seu Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Permite comprimir ficheiros (con zip) directamente no seu Nextcloud!", 10 | "Compress files" : "Ficheiros comprimidos", 11 | "Compress" : "Comprimir", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "O ficheiro comprimirase en segundo plano. Unha vez rematado, recibirá unha notificación e o ficheiro estará situado no directorio actual.", 13 | "Archive file name" : "Nome do arquivador", 14 | "_Compress %n file_::_Compress %n files_" : ["Comprimir %n ficheiro","Comprimir %n ficheiros"], 15 | "Compress to Zip" : "Comprimir a Zip", 16 | "Archive" : "Arquivar", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Comezou a creación do arquivo Zip. Avisarémolo cando o arquivo estea dispoñíbel.", 18 | "An error happened when trying to compress the file." : "Produciuse un erro ao tentar comprimir o ficheiro.", 19 | "Only files up to {maxSize} can be compressed." : "Só se poden comprimir ficheiros ata {maxSize}." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/el.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Το συμπιεσμένο αρχείο {target} Zip θα δημιουργηθεί. ", 6 | "Your files have been stored as a Zip archive in {path}." : "Τα αρχεία σας έχουν αποθηκευτεί ως αρχείο Zip στο {path}.", 7 | "Creating the Zip file {path} failed." : "Η δημιουργία του αρχείου Zip {path} απέτυχε.", 8 | "Zip files in your Nextcloud" : "Αρχεία Zip στο Nextcloud σας", 9 | "Allow zipping files directly in your Nextcloud!" : "Επιτρέψτε τη συμπίεση αρχείων στο Nextcloud σας!", 10 | "Compress files" : "Συμπίεση αρχείων", 11 | "Compress" : "Συμπίεση", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Το αρχείο θα συμπιεστεί στο παρασκήνιο. Μόλις ολοκληρωθεί, θα λάβετε μια ειδοποίηση και το αρχείο θα βρίσκεται στον τρέχοντα κατάλογο.", 13 | "Archive file name" : "Όνομα αρχείου αρχειοθέτησης", 14 | "_Compress %n file_::_Compress %n files_" : ["Συμπίεση %n αρχείου","Συμπίεση %n αρχείων"], 15 | "Compress to Zip" : "Συμπίεση σε Zip", 16 | "Archive" : "Αρχειοθέτηση", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Η δημιουργία του αρχείου Zip ξεκίνησε. Θα σας ειδοποιήσουμε μόλις το αρχείο είναι διαθέσιμο.", 18 | "An error happened when trying to compress the file." : "Παρουσιάστηκε σφάλμα κατά τη συμπίεση του αρχείου.", 19 | "Only files up to {maxSize} can be compressed." : "Μόνο αρχεία έως {maxSize} μπορούν να συμπιεστούν." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/nl.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Zip-archief {target} wordt aangemaakr.", 4 | "Your files have been stored as a Zip archive in {path}." : "Je bestanden zijn opgeslagen als een Zip-archief in {pad}.", 5 | "Creating the Zip file {path} failed." : "Het maken van het Zip-bestand {pad} is mislukt.", 6 | "Zip files in your Nextcloud" : "Zip-bestanden in je Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Sta direct comprimeren van bestanden in je Nextcloud toe!", 8 | "Compress files" : "Comprimeer bestanden", 9 | "Compress" : "Comprimeren", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Het bestand zal op de achtergrond gecomprimeerd worden. Wanneer dit gereed is, ontvang je een melding en bevindt het bestand zich in de huidige map.", 11 | "Archive file name" : "Archief-bestandsnaam", 12 | "_Compress %n file_::_Compress %n files_" : ["%n bestand comprimeren","%n bestanden comprimeren"], 13 | "Compress to Zip" : "Comprimeer naar Zip", 14 | "Archive" : "Archiveren", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Het maken van Zip-archief is gestart. We laten je weten zodra het archief beschikbaar is.", 16 | "An error happened when trying to compress the file." : "Er is een fout opgetreden bij het comprimeren van het bestand.", 17 | "Only files up to {maxSize} can be compressed." : "Alleen bestanden kleiner dan {maxSize} kunnen worden gecomprimeerd." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/sr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Зипер", 3 | "A Zip archive {target} will be created." : "Креираће се Зип архива {target}", 4 | "Your files have been stored as a Zip archive in {path}." : "Важи фајлови су сачувани као Зип архива у {path}.", 5 | "Creating the Zip file {path} failed." : "Није успело креирање Зип фајла {path}.", 6 | "Zip files in your Nextcloud" : "Зипујте фајлове у свом Некстклауду", 7 | "Allow zipping files directly in your Nextcloud!" : "Омогућава директно зиповање фајлова у вашем Некстклауду!", 8 | "Compress files" : "Компресује фајлове", 9 | "Compress" : "Компресуј", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Фајл ће се компресовати у позадини. Када се то заврши, примићете обавештење и фајл ће се налазити у текућем директоријуму.", 11 | "Archive file name" : "Име фајла архиве", 12 | "_Compress %n file_::_Compress %n files_" : ["Компресуј %n фајл","Компресуј %n фајла","Компресуј %n фајлова"], 13 | "Compress to Zip" : "Компресуј у Зип", 14 | "Archive" : "Архива", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Започето је креирање Зип архиве. Обавестићемо вас чим ваша архива буде доступна.", 16 | "An error happened when trying to compress the file." : "Дошло је до грешке током покушаја да се компресује фајл.", 17 | "Only files up to {maxSize} can be compressed." : "Могу да се компресују само фајлови величине до {maxSize}." 18 | },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" 19 | } -------------------------------------------------------------------------------- /l10n/de.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Ein Zip-Archiv {target} wird erstellt", 4 | "Your files have been stored as a Zip archive in {path}." : "Deine Dateien wurden als Zip-Archiv in {path} gespeichert", 5 | "Creating the Zip file {path} failed." : "Erstellen der Zip-Datei {path} fehlgeschlagen", 6 | "Zip files in your Nextcloud" : "Zip-Dateien in deiner Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Erlaubt das Zippen von Dateien direkt in deiner Nextcloud", 8 | "Compress files" : "Dateien komprimieren", 9 | "Compress" : "Komprimieren", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Die Datei wird im Hintergrund komprimiert. Sobald der Vorgang abgeschlossen ist, erhältst du eine Benachrichtigung und die Datei befindet sich im aktuellen Verzeichnis.", 11 | "Archive file name" : "Archiv-Dateiname", 12 | "_Compress %n file_::_Compress %n files_" : ["%n Datei komprimieren","%n Dateien komprimieren"], 13 | "Compress to Zip" : "Als Zip komprimieren", 14 | "Archive" : "Archiv", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Das Zip-Archiv wird erstellt. Du wirst benachrichtigt, sobald das Archiv verfügbar ist.", 16 | "An error happened when trying to compress the file." : "Es ist ein Fehler beim Versuch aufgetreten, die Datei zu komprimieren.", 17 | "Only files up to {maxSize} can be compressed." : "Nur Dateien bis zu {maxSize} können komprimiert werden." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/de_DE.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Ein Zip-Archiv {target} wird erstellt.", 4 | "Your files have been stored as a Zip archive in {path}." : "Ihre Dateien wurden als Zip-Archiv in {path} gespeichert.", 5 | "Creating the Zip file {path} failed." : "Erstellen der Zip-Datei {path} fehlgeschlagen.", 6 | "Zip files in your Nextcloud" : "Zip-Dateien in ihrer Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Erlaubt das Zippen von Dateien direkt in Ihrer Nextcloud!", 8 | "Compress files" : "Dateien komprimieren", 9 | "Compress" : "Komprimieren", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Die Datei wird im Hintergrund komprimiert. Sobald der Vorgang abgeschlossen ist, erhalten Sie eine Benachrichtigung und die Datei befindet sich im aktuellen Verzeichnis.", 11 | "Archive file name" : "Archiv-Dateiname", 12 | "_Compress %n file_::_Compress %n files_" : ["%n Datei komprimieren","%n Dateien komprimieren"], 13 | "Compress to Zip" : "Als Zip komprimieren", 14 | "Archive" : "Archiv", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Das Zip-Archiv wird erstellt. Sie werden benachrichtigt, sobald das Archiv verfügbar ist.", 16 | "An error happened when trying to compress the file." : "Es ist ein Fehler beim Versuch aufgetreten, die Datei zu komprimieren.", 17 | "Only files up to {maxSize} can be compressed." : "Nur Dateien bis zu {maxSize} können komprimiert werden." 18 | },"pluralForm" :"nplurals=2; plural=(n != 1);" 19 | } -------------------------------------------------------------------------------- /l10n/sr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Зипер", 5 | "A Zip archive {target} will be created." : "Креираће се Зип архива {target}", 6 | "Your files have been stored as a Zip archive in {path}." : "Важи фајлови су сачувани као Зип архива у {path}.", 7 | "Creating the Zip file {path} failed." : "Није успело креирање Зип фајла {path}.", 8 | "Zip files in your Nextcloud" : "Зипујте фајлове у свом Некстклауду", 9 | "Allow zipping files directly in your Nextcloud!" : "Омогућава директно зиповање фајлова у вашем Некстклауду!", 10 | "Compress files" : "Компресује фајлове", 11 | "Compress" : "Компресуј", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Фајл ће се компресовати у позадини. Када се то заврши, примићете обавештење и фајл ће се налазити у текућем директоријуму.", 13 | "Archive file name" : "Име фајла архиве", 14 | "_Compress %n file_::_Compress %n files_" : ["Компресуј %n фајл","Компресуј %n фајла","Компресуј %n фајлова"], 15 | "Compress to Zip" : "Компресуј у Зип", 16 | "Archive" : "Архива", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Започето је креирање Зип архиве. Обавестићемо вас чим ваша архива буде доступна.", 18 | "An error happened when trying to compress the file." : "Дошло је до грешке током покушаја да се компресује фајл.", 19 | "Only files up to {maxSize} can be compressed." : "Могу да се компресују само фајлови величине до {maxSize}." 20 | }, 21 | "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); 22 | -------------------------------------------------------------------------------- /l10n/nl.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Zip-archief {target} wordt aangemaakr.", 6 | "Your files have been stored as a Zip archive in {path}." : "Je bestanden zijn opgeslagen als een Zip-archief in {pad}.", 7 | "Creating the Zip file {path} failed." : "Het maken van het Zip-bestand {pad} is mislukt.", 8 | "Zip files in your Nextcloud" : "Zip-bestanden in je Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Sta direct comprimeren van bestanden in je Nextcloud toe!", 10 | "Compress files" : "Comprimeer bestanden", 11 | "Compress" : "Comprimeren", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Het bestand zal op de achtergrond gecomprimeerd worden. Wanneer dit gereed is, ontvang je een melding en bevindt het bestand zich in de huidige map.", 13 | "Archive file name" : "Archief-bestandsnaam", 14 | "_Compress %n file_::_Compress %n files_" : ["%n bestand comprimeren","%n bestanden comprimeren"], 15 | "Compress to Zip" : "Comprimeer naar Zip", 16 | "Archive" : "Archiveren", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Het maken van Zip-archief is gestart. We laten je weten zodra het archief beschikbaar is.", 18 | "An error happened when trying to compress the file." : "Er is een fout opgetreden bij het comprimeren van het bestand.", 19 | "Only files up to {maxSize} can be compressed." : "Alleen bestanden kleiner dan {maxSize} kunnen worden gecomprimeerd." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/de.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Ein Zip-Archiv {target} wird erstellt", 6 | "Your files have been stored as a Zip archive in {path}." : "Deine Dateien wurden als Zip-Archiv in {path} gespeichert", 7 | "Creating the Zip file {path} failed." : "Erstellen der Zip-Datei {path} fehlgeschlagen", 8 | "Zip files in your Nextcloud" : "Zip-Dateien in deiner Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Erlaubt das Zippen von Dateien direkt in deiner Nextcloud", 10 | "Compress files" : "Dateien komprimieren", 11 | "Compress" : "Komprimieren", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Die Datei wird im Hintergrund komprimiert. Sobald der Vorgang abgeschlossen ist, erhältst du eine Benachrichtigung und die Datei befindet sich im aktuellen Verzeichnis.", 13 | "Archive file name" : "Archiv-Dateiname", 14 | "_Compress %n file_::_Compress %n files_" : ["%n Datei komprimieren","%n Dateien komprimieren"], 15 | "Compress to Zip" : "Als Zip komprimieren", 16 | "Archive" : "Archiv", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Das Zip-Archiv wird erstellt. Du wirst benachrichtigt, sobald das Archiv verfügbar ist.", 18 | "An error happened when trying to compress the file." : "Es ist ein Fehler beim Versuch aufgetreten, die Datei zu komprimieren.", 19 | "Only files up to {maxSize} can be compressed." : "Nur Dateien bis zu {maxSize} können komprimiert werden." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/de_DE.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Ein Zip-Archiv {target} wird erstellt.", 6 | "Your files have been stored as a Zip archive in {path}." : "Ihre Dateien wurden als Zip-Archiv in {path} gespeichert.", 7 | "Creating the Zip file {path} failed." : "Erstellen der Zip-Datei {path} fehlgeschlagen.", 8 | "Zip files in your Nextcloud" : "Zip-Dateien in ihrer Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Erlaubt das Zippen von Dateien direkt in Ihrer Nextcloud!", 10 | "Compress files" : "Dateien komprimieren", 11 | "Compress" : "Komprimieren", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Die Datei wird im Hintergrund komprimiert. Sobald der Vorgang abgeschlossen ist, erhalten Sie eine Benachrichtigung und die Datei befindet sich im aktuellen Verzeichnis.", 13 | "Archive file name" : "Archiv-Dateiname", 14 | "_Compress %n file_::_Compress %n files_" : ["%n Datei komprimieren","%n Dateien komprimieren"], 15 | "Compress to Zip" : "Als Zip komprimieren", 16 | "Archive" : "Archiv", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Das Zip-Archiv wird erstellt. Sie werden benachrichtigt, sobald das Archiv verfügbar ist.", 18 | "An error happened when trying to compress the file." : "Es ist ein Fehler beim Versuch aufgetreten, die Datei zu komprimieren.", 19 | "Only files up to {maxSize} can be compressed." : "Nur Dateien bis zu {maxSize} können komprimiert werden." 20 | }, 21 | "nplurals=2; plural=(n != 1);"); 22 | -------------------------------------------------------------------------------- /l10n/sk.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Bol vytvorený Zip archív {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Vaše súbory boli uložené v Zip archíve v {path}.", 5 | "Creating the Zip file {path} failed." : "Vytváranie Zip súboru {path} zlyhalo.", 6 | "Zip files in your Nextcloud" : "Zip súbory vo vašom Nextcloude", 7 | "Allow zipping files directly in your Nextcloud!" : "Povoliť zipovanie súborov priamo vo vašom Nextcloude!", 8 | "Compress files" : "Komprimovať súbory", 9 | "Compress" : "Komprimovať", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Súbor bude komprimovaný na pozadí. Po dokončení dostanete upozornenie a súbor sa nachádza v aktuálnom adresári.", 11 | "Archive file name" : "Názov súboru archívu", 12 | "_Compress %n file_::_Compress %n files_" : ["Komprimuje sa %n súbor","Komprimujú sa %n súbory","Komprimuje sa %n súborov","Komprimuje sa %n súborov"], 13 | "Compress to Zip" : "Komprimovať do Zip", 14 | "Archive" : "Archív", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Začalo sa vytváranie archívu Zip. Hneď, ako bude archív dostupný, vás budeme informovať.", 16 | "An error happened when trying to compress the file." : "Pri pokuse o komprimáciu súboru sa vyskytla chyba.", 17 | "Only files up to {maxSize} can be compressed." : "Iba súbory do veľkosti {maxSize} môžu byť komprimované." 18 | },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" 19 | } -------------------------------------------------------------------------------- /lib/Controller/ZipController.php: -------------------------------------------------------------------------------- 1 | zipService = $zipService; 31 | $this->logger = $logger; 32 | } 33 | 34 | /** 35 | * @NoAdminRequired 36 | * 37 | * @param int[] $fileIds The fileIds to zip up 38 | * @param string $target The target location (relative to the users file root) 39 | */ 40 | public function zip(array $fileIds, string $target) { 41 | try { 42 | $this->zipService->createZipJob($fileIds, $target); 43 | return new DataResponse([]); 44 | } catch (MaximumSizeReachedException $e) { 45 | return new DataResponse('Failed to add zip job', Http::STATUS_REQUEST_ENTITY_TOO_LARGE); 46 | } catch (\Exception $e) { 47 | $this->logger->error('Failed to add zip job', ['exception' => $e]); 48 | return new DataResponse('Failed to add zip job', Http::STATUS_INTERNAL_SERVER_ERROR); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /l10n/es.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Se creará el archivo Zip {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Sus archivos han sido guardados como un archivador Zip en {path}.", 5 | "Creating the Zip file {path} failed." : "Error al crear el archivo Zip {path}.", 6 | "Zip files in your Nextcloud" : "Archivos Zip en su Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "¡Permite comprimir archivos directamente en su Nextcloud!", 8 | "Compress files" : "Comprimir archivos", 9 | "Compress" : "Comprimir", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "El archivo será comprimido en segundo plano. Una vez finalizado, recibirás una notificación y el archivo se encuentra en el directorio actual.", 11 | "Archive file name" : "Nombre de archivo del archivador", 12 | "_Compress %n file_::_Compress %n files_" : ["Comprimir %n archivo","Comprimir %n archivos","Comprimir %n archivos"], 13 | "Compress to Zip" : "Comprimir a Zip", 14 | "Archive" : "Archivador", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Se inició creación de archivador Zip. Le notificaremos tan pronto como el archivador esté disponible.", 16 | "An error happened when trying to compress the file." : "Ha ocurrido un error al intentar comprimir el archivo.", 17 | "Only files up to {maxSize} can be compressed." : "Solo se pueden comprimir archivos de hasta {maxSize}" 18 | },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 19 | } -------------------------------------------------------------------------------- /l10n/sk.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Bol vytvorený Zip archív {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Vaše súbory boli uložené v Zip archíve v {path}.", 7 | "Creating the Zip file {path} failed." : "Vytváranie Zip súboru {path} zlyhalo.", 8 | "Zip files in your Nextcloud" : "Zip súbory vo vašom Nextcloude", 9 | "Allow zipping files directly in your Nextcloud!" : "Povoliť zipovanie súborov priamo vo vašom Nextcloude!", 10 | "Compress files" : "Komprimovať súbory", 11 | "Compress" : "Komprimovať", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Súbor bude komprimovaný na pozadí. Po dokončení dostanete upozornenie a súbor sa nachádza v aktuálnom adresári.", 13 | "Archive file name" : "Názov súboru archívu", 14 | "_Compress %n file_::_Compress %n files_" : ["Komprimuje sa %n súbor","Komprimujú sa %n súbory","Komprimuje sa %n súborov","Komprimuje sa %n súborov"], 15 | "Compress to Zip" : "Komprimovať do Zip", 16 | "Archive" : "Archív", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Začalo sa vytváranie archívu Zip. Hneď, ako bude archív dostupný, vás budeme informovať.", 18 | "An error happened when trying to compress the file." : "Pri pokuse o komprimáciu súboru sa vyskytla chyba.", 19 | "Only files up to {maxSize} can be compressed." : "Iba súbory do veľkosti {maxSize} môžu byť komprimované." 20 | }, 21 | "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); 22 | -------------------------------------------------------------------------------- /l10n/es.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Se creará el archivo Zip {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Sus archivos han sido guardados como un archivador Zip en {path}.", 7 | "Creating the Zip file {path} failed." : "Error al crear el archivo Zip {path}.", 8 | "Zip files in your Nextcloud" : "Archivos Zip en su Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "¡Permite comprimir archivos directamente en su Nextcloud!", 10 | "Compress files" : "Comprimir archivos", 11 | "Compress" : "Comprimir", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "El archivo será comprimido en segundo plano. Una vez finalizado, recibirás una notificación y el archivo se encuentra en el directorio actual.", 13 | "Archive file name" : "Nombre de archivo del archivador", 14 | "_Compress %n file_::_Compress %n files_" : ["Comprimir %n archivo","Comprimir %n archivos","Comprimir %n archivos"], 15 | "Compress to Zip" : "Comprimir a Zip", 16 | "Archive" : "Archivador", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Se inició creación de archivador Zip. Le notificaremos tan pronto como el archivador esté disponible.", 18 | "An error happened when trying to compress the file." : "Ha ocurrido un error al intentar comprimir el archivo.", 19 | "Only files up to {maxSize} can be compressed." : "Solo se pueden comprimir archivos de hasta {maxSize}" 20 | }, 21 | "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 22 | -------------------------------------------------------------------------------- /.github/workflows/lint-stylelint.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint stylelint 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-stylelint-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | lint: 22 | runs-on: ubuntu-latest 23 | 24 | name: stylelint 25 | 26 | steps: 27 | - name: Checkout 28 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 29 | with: 30 | persist-credentials: false 31 | 32 | - name: Read package.json node and npm engines version 33 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 34 | id: versions 35 | with: 36 | fallbackNode: '^20' 37 | fallbackNpm: '^10' 38 | 39 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 40 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 41 | with: 42 | node-version: ${{ steps.versions.outputs.nodeVersion }} 43 | 44 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 45 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' 46 | 47 | - name: Install dependencies 48 | env: 49 | CYPRESS_INSTALL_BINARY: 0 50 | run: npm ci 51 | 52 | - name: Lint 53 | run: npm run stylelint 54 | -------------------------------------------------------------------------------- /l10n/ga.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Cruthófar cartlann Zip {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Stóráladh do chomhaid mar chartlann Zip in {path}.", 5 | "Creating the Zip file {path} failed." : "Theip ar chruthú an chomhaid Zip {path}.", 6 | "Zip files in your Nextcloud" : "Comhaid zip i do Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Ceadaigh comhaid zipping go díreach i do Nextcloud!", 8 | "Compress files" : "Comhaid comhbhrúite", 9 | "Compress" : "Comhbhrúigh", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Déanfar an comhad a chomhbhrú sa chúlra. Nuair a bheidh tú críochnaithe gheobhaidh tú fógra agus tá an comhad suite san eolaire reatha.", 11 | "Archive file name" : "Ainm comhaid cartlainne", 12 | "_Compress %n file_::_Compress %n files_" : ["Comhbhrúigh %n comhad","Comhbhrúigh %n comhad","Comhbhrúigh %n comhad","Comhbhrúigh %n comhad","Comhbhrúigh %n comhad"], 13 | "Compress to Zip" : "Comhbhrúigh go Zip", 14 | "Archive" : "Cartlann", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Cuireadh tús le cartlann Zip a chruthú. Cuirfimid tú ar an eolas chomh luath agus a bheidh an chartlann ar fáil.", 16 | "An error happened when trying to compress the file." : "Tharla earráid agus iarracht á déanamh an comhad a chomhbhrú.", 17 | "Only files up to {maxSize} can be compressed." : "Ní féidir ach comhaid suas go dtí {maxSize} a chomhbhrú." 18 | },"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);" 19 | } -------------------------------------------------------------------------------- /l10n/cs.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Bude vytvořen Zip archiv {target}.", 4 | "Your files have been stored as a Zip archive in {path}." : "Vaše soubory byly uloženy jako Zip archiv v {path}.", 5 | "Creating the Zip file {path} failed." : "Vytváření Zip souboru {path} se nezdařilo.", 6 | "Zip files in your Nextcloud" : "Zip soubory v rámci Nextcloud", 7 | "Allow zipping files directly in your Nextcloud!" : "Umožňuje komprimování souborů do zip archivů přímo v rámci Nextcloud!", 8 | "Compress files" : "Zkomprimovat soubory", 9 | "Compress" : "Zkomprimovat", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Soubor bude zkomprimován na pozadí. Jakmile bude dokončeno, obdržíte upozornění a soubor se bude nacházet ve stávající složce.", 11 | "Archive file name" : "Název souboru s archivem", 12 | "_Compress %n file_::_Compress %n files_" : ["Zkomprimovat %n soubor","Zkomprimovat %n soubory","Zkomprimovat %n souborů","Zkomprimovat %n soubory"], 13 | "Compress to Zip" : "Zkomprimovat do Zip", 14 | "Archive" : "Archiv", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Vytváření Zip archivu zahájeno. Jakmile bude archiv k dispozici, budete upozorněni.", 16 | "An error happened when trying to compress the file." : "Došlo k chybě při pokusu o zkomprimování souboru.", 17 | "Only files up to {maxSize} can be compressed." : "Komprimovat soubory je možné pouze do velikosti {maxSize}." 18 | },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" 19 | } -------------------------------------------------------------------------------- /.github/workflows/dependabot-approve-merge.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Dependabot 10 | 11 | on: 12 | pull_request_target: # zizmor: ignore[dangerous-triggers] 13 | branches: 14 | - main 15 | - master 16 | - stable* 17 | 18 | permissions: 19 | contents: read 20 | 21 | concurrency: 22 | group: dependabot-approve-merge-${{ github.head_ref || github.run_id }} 23 | cancel-in-progress: true 24 | 25 | jobs: 26 | auto-approve-merge: 27 | if: github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'renovate[bot]' 28 | runs-on: ubuntu-latest-low 29 | permissions: 30 | # for hmarr/auto-approve-action to approve PRs 31 | pull-requests: write 32 | 33 | steps: 34 | - name: Disabled on forks 35 | if: ${{ github.event.pull_request.head.repo.full_name != github.repository }} 36 | run: | 37 | echo 'Can not approve PRs from forks' 38 | exit 1 39 | 40 | # GitHub actions bot approve 41 | - uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2 42 | with: 43 | github-token: ${{ secrets.GITHUB_TOKEN }} 44 | 45 | # Nextcloud bot approve and merge request 46 | - uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2 47 | with: 48 | target: minor 49 | github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }} 50 | -------------------------------------------------------------------------------- /l10n/ga.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Cruthófar cartlann Zip {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Stóráladh do chomhaid mar chartlann Zip in {path}.", 7 | "Creating the Zip file {path} failed." : "Theip ar chruthú an chomhaid Zip {path}.", 8 | "Zip files in your Nextcloud" : "Comhaid zip i do Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Ceadaigh comhaid zipping go díreach i do Nextcloud!", 10 | "Compress files" : "Comhaid comhbhrúite", 11 | "Compress" : "Comhbhrúigh", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Déanfar an comhad a chomhbhrú sa chúlra. Nuair a bheidh tú críochnaithe gheobhaidh tú fógra agus tá an comhad suite san eolaire reatha.", 13 | "Archive file name" : "Ainm comhaid cartlainne", 14 | "_Compress %n file_::_Compress %n files_" : ["Comhbhrúigh %n comhad","Comhbhrúigh %n comhad","Comhbhrúigh %n comhad","Comhbhrúigh %n comhad","Comhbhrúigh %n comhad"], 15 | "Compress to Zip" : "Comhbhrúigh go Zip", 16 | "Archive" : "Cartlann", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Cuireadh tús le cartlann Zip a chruthú. Cuirfimid tú ar an eolas chomh luath agus a bheidh an chartlann ar fáil.", 18 | "An error happened when trying to compress the file." : "Tharla earráid agus iarracht á déanamh an comhad a chomhbhrú.", 19 | "Only files up to {maxSize} can be compressed." : "Ní féidir ach comhaid suas go dtí {maxSize} a chomhbhrú." 20 | }, 21 | "nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"); 22 | -------------------------------------------------------------------------------- /l10n/cs.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Bude vytvořen Zip archiv {target}.", 6 | "Your files have been stored as a Zip archive in {path}." : "Vaše soubory byly uloženy jako Zip archiv v {path}.", 7 | "Creating the Zip file {path} failed." : "Vytváření Zip souboru {path} se nezdařilo.", 8 | "Zip files in your Nextcloud" : "Zip soubory v rámci Nextcloud", 9 | "Allow zipping files directly in your Nextcloud!" : "Umožňuje komprimování souborů do zip archivů přímo v rámci Nextcloud!", 10 | "Compress files" : "Zkomprimovat soubory", 11 | "Compress" : "Zkomprimovat", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Soubor bude zkomprimován na pozadí. Jakmile bude dokončeno, obdržíte upozornění a soubor se bude nacházet ve stávající složce.", 13 | "Archive file name" : "Název souboru s archivem", 14 | "_Compress %n file_::_Compress %n files_" : ["Zkomprimovat %n soubor","Zkomprimovat %n soubory","Zkomprimovat %n souborů","Zkomprimovat %n soubory"], 15 | "Compress to Zip" : "Zkomprimovat do Zip", 16 | "Archive" : "Archiv", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Vytváření Zip archivu zahájeno. Jakmile bude archiv k dispozici, budete upozorněni.", 18 | "An error happened when trying to compress the file." : "Došlo k chybě při pokusu o zkomprimování souboru.", 19 | "Only files up to {maxSize} can be compressed." : "Komprimovat soubory je možné pouze do velikosti {maxSize}." 20 | }, 21 | "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); 22 | -------------------------------------------------------------------------------- /l10n/pt_BR.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Um arquivo Zip {target} será criado.", 4 | "Your files have been stored as a Zip archive in {path}." : "Seus arquivos foram armazenados como um arquivo compactado Zip em {path}.", 5 | "Creating the Zip file {path} failed." : "Falha ao criar o arquivo Zip {path}.", 6 | "Zip files in your Nextcloud" : "Compactar arquivos em seu Nextcloud como Zip", 7 | "Allow zipping files directly in your Nextcloud!" : "Permite compactar arquivos diretamente em seu Nextcloud como Zip!", 8 | "Compress files" : "Compactar arquivos", 9 | "Compress" : "Compactar", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "O arquivo será compactado em segundo plano. Ao terminar, você receberá uma notificação e o arquivo estará localizado no diretório atual.", 11 | "Archive file name" : "Nome do arquivo compactado", 12 | "_Compress %n file_::_Compress %n files_" : ["Compactar %n arquivo","Compactar %n de arquivos","Compactar %n arquivos"], 13 | "Compress to Zip" : "Compactar como Zip", 14 | "Archive" : "Arquivo compactado", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "A criação do arquivo compactado Zip foi iniciada. Nós notificaremos você assim que o arquivo compactado estiver disponível.", 16 | "An error happened when trying to compress the file." : "Ocorreu um erro ao tentar compactar o arquivo.", 17 | "Only files up to {maxSize} can be compressed." : "Somente arquivos de até {maxSize} podem ser compactados." 18 | },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 19 | } -------------------------------------------------------------------------------- /l10n/pt_BR.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Um arquivo Zip {target} será criado.", 6 | "Your files have been stored as a Zip archive in {path}." : "Seus arquivos foram armazenados como um arquivo compactado Zip em {path}.", 7 | "Creating the Zip file {path} failed." : "Falha ao criar o arquivo Zip {path}.", 8 | "Zip files in your Nextcloud" : "Compactar arquivos em seu Nextcloud como Zip", 9 | "Allow zipping files directly in your Nextcloud!" : "Permite compactar arquivos diretamente em seu Nextcloud como Zip!", 10 | "Compress files" : "Compactar arquivos", 11 | "Compress" : "Compactar", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "O arquivo será compactado em segundo plano. Ao terminar, você receberá uma notificação e o arquivo estará localizado no diretório atual.", 13 | "Archive file name" : "Nome do arquivo compactado", 14 | "_Compress %n file_::_Compress %n files_" : ["Compactar %n arquivo","Compactar %n de arquivos","Compactar %n arquivos"], 15 | "Compress to Zip" : "Compactar como Zip", 16 | "Archive" : "Arquivo compactado", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "A criação do arquivo compactado Zip foi iniciada. Nós notificaremos você assim que o arquivo compactado estiver disponível.", 18 | "An error happened when trying to compress the file." : "Ocorreu um erro ao tentar compactar o arquivo.", 19 | "Only files up to {maxSize} can be compressed." : "Somente arquivos de até {maxSize} podem ser compactados." 20 | }, 21 | "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 22 | -------------------------------------------------------------------------------- /.github/workflows/phpunit-summary-when-unrelated.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | name: PHPUnit summary 9 | 10 | on: 11 | pull_request: 12 | paths-ignore: 13 | - '.github/workflows/**' 14 | - 'appinfo/**' 15 | - 'lib/**' 16 | - 'templates/**' 17 | - 'tests/**' 18 | - 'vendor/**' 19 | - 'vendor-bin/**' 20 | - '.php-cs-fixer.dist.php' 21 | - 'composer.json' 22 | - 'composer.lock' 23 | 24 | permissions: 25 | contents: read 26 | 27 | jobs: 28 | summary-mysql: 29 | permissions: 30 | contents: none 31 | runs-on: ubuntu-latest 32 | 33 | name: phpunit-mysql-summary 34 | 35 | steps: 36 | - name: Summary status 37 | run: 'echo "No PHP files changed, skipped PHPUnit"' 38 | 39 | summary-oci: 40 | permissions: 41 | contents: none 42 | runs-on: ubuntu-latest 43 | 44 | name: phpunit-oci-summary 45 | 46 | steps: 47 | - name: Summary status 48 | run: 'echo "No PHP files changed, skipped PHPUnit"' 49 | 50 | summary-pgsql: 51 | permissions: 52 | contents: none 53 | runs-on: ubuntu-latest 54 | 55 | name: phpunit-pgsql-summary 56 | 57 | steps: 58 | - name: Summary status 59 | run: 'echo "No PHP files changed, skipped PHPUnit"' 60 | 61 | summary-sqlite: 62 | permissions: 63 | contents: none 64 | runs-on: ubuntu-latest 65 | 66 | name: phpunit-sqlite-summary 67 | 68 | steps: 69 | - name: Summary status 70 | run: 'echo "No PHP files changed, skipped PHPUnit"' 71 | -------------------------------------------------------------------------------- /l10n/fr.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Compresseur Zip", 3 | "A Zip archive {target} will be created." : "Une archive Zip {target} va être créée.", 4 | "Your files have been stored as a Zip archive in {path}." : "Vos fichiers ont été enregistrés dans une archive Zip sous {path}.", 5 | "Creating the Zip file {path} failed." : "Échec de la création d'une archive Zip sous {path} .", 6 | "Zip files in your Nextcloud" : "Compresser les fichiers dans une archive Zip sur votre Nextcloud ", 7 | "Allow zipping files directly in your Nextcloud!" : "Permettre de zipper des fichiers directement dans votre Nextcloud !", 8 | "Compress files" : "Compresser les fichiers", 9 | "Compress" : "Compresser", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Le fichier sera compressé en arrière-plan. Une fois l'opération terminée, vous recevrez une notification et le fichier se trouvera dans le répertoire actuel.", 11 | "Archive file name" : "Nom du fichier d'archive", 12 | "_Compress %n file_::_Compress %n files_" : ["Compresser %n fichier","Compresser %n fichiers","Compresser %n fichiers"], 13 | "Compress to Zip" : "Compresser dans une archive Zip", 14 | "Archive" : "Archive", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "La création de l'archive Zip a commencé. Nous vous notifierons dès que l'archive sera disponible.", 16 | "An error happened when trying to compress the file." : "Une erreur est survenue lors de la compression du fichier.", 17 | "Only files up to {maxSize} can be compressed." : "Seuls les fichiers d'une taille maximale de {maxSize} peuvent être compressés." 18 | },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" 19 | } -------------------------------------------------------------------------------- /l10n/uk.json: -------------------------------------------------------------------------------- 1 | { "translations": { 2 | "Zipper" : "Zipper", 3 | "A Zip archive {target} will be created." : "Відбувається архівування {target} у ZIP-архів.", 4 | "Your files have been stored as a Zip archive in {path}." : "Ваші файли заархівовано у архів ZIP {path}.", 5 | "Creating the Zip file {path} failed." : "Не вдалося створити файл ZIP {path}. ", 6 | "Zip files in your Nextcloud" : "Файли ZIP у вашій хмарі Nextcloud ", 7 | "Allow zipping files directly in your Nextcloud!" : "Архівуйте файли безпосередньо засобами Nextcloud! ", 8 | "Compress files" : "Архівувати", 9 | "Compress" : "Архівувати", 10 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Файл буде заархівовано в фоновому процесі. Одразу після завершення ви отримаєте відповідне сповіщення, файл з архівом буде збережено в поточному каталозі.", 11 | "Archive file name" : "Ім'я архівного файлу", 12 | "_Compress %n file_::_Compress %n files_" : ["Архівувати %n файл","Архівувати %n файли","Архівувати %n файлів","Архівувати %n файлів"], 13 | "Compress to Zip" : "Архівувати у ZIP", 14 | "Archive" : "Архів", 15 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Розпочато архівування. Ви отримаєте сповіщення, щойно буде створено архів ZIP. ", 16 | "An error happened when trying to compress the file." : "При спробі архівування файлу сталася помилка. ", 17 | "Only files up to {maxSize} can be compressed." : "Лише файли розміром до {maxSize} дозволено архівувати. " 18 | },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" 19 | } -------------------------------------------------------------------------------- /l10n/fr.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Compresseur Zip", 5 | "A Zip archive {target} will be created." : "Une archive Zip {target} va être créée.", 6 | "Your files have been stored as a Zip archive in {path}." : "Vos fichiers ont été enregistrés dans une archive Zip sous {path}.", 7 | "Creating the Zip file {path} failed." : "Échec de la création d'une archive Zip sous {path} .", 8 | "Zip files in your Nextcloud" : "Compresser les fichiers dans une archive Zip sur votre Nextcloud ", 9 | "Allow zipping files directly in your Nextcloud!" : "Permettre de zipper des fichiers directement dans votre Nextcloud !", 10 | "Compress files" : "Compresser les fichiers", 11 | "Compress" : "Compresser", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Le fichier sera compressé en arrière-plan. Une fois l'opération terminée, vous recevrez une notification et le fichier se trouvera dans le répertoire actuel.", 13 | "Archive file name" : "Nom du fichier d'archive", 14 | "_Compress %n file_::_Compress %n files_" : ["Compresser %n fichier","Compresser %n fichiers","Compresser %n fichiers"], 15 | "Compress to Zip" : "Compresser dans une archive Zip", 16 | "Archive" : "Archive", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "La création de l'archive Zip a commencé. Nous vous notifierons dès que l'archive sera disponible.", 18 | "An error happened when trying to compress the file." : "Une erreur est survenue lors de la compression du fichier.", 19 | "Only files up to {maxSize} can be compressed." : "Seuls les fichiers d'une taille maximale de {maxSize} peuvent être compressés." 20 | }, 21 | "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); 22 | -------------------------------------------------------------------------------- /l10n/uk.js: -------------------------------------------------------------------------------- 1 | OC.L10N.register( 2 | "files_zip", 3 | { 4 | "Zipper" : "Zipper", 5 | "A Zip archive {target} will be created." : "Відбувається архівування {target} у ZIP-архів.", 6 | "Your files have been stored as a Zip archive in {path}." : "Ваші файли заархівовано у архів ZIP {path}.", 7 | "Creating the Zip file {path} failed." : "Не вдалося створити файл ZIP {path}. ", 8 | "Zip files in your Nextcloud" : "Файли ZIP у вашій хмарі Nextcloud ", 9 | "Allow zipping files directly in your Nextcloud!" : "Архівуйте файли безпосередньо засобами Nextcloud! ", 10 | "Compress files" : "Архівувати", 11 | "Compress" : "Архівувати", 12 | "The file will be compressed in the background. Once finished you will receive a notification and the file is located in the current directory." : "Файл буде заархівовано в фоновому процесі. Одразу після завершення ви отримаєте відповідне сповіщення, файл з архівом буде збережено в поточному каталозі.", 13 | "Archive file name" : "Ім'я архівного файлу", 14 | "_Compress %n file_::_Compress %n files_" : ["Архівувати %n файл","Архівувати %n файли","Архівувати %n файлів","Архівувати %n файлів"], 15 | "Compress to Zip" : "Архівувати у ZIP", 16 | "Archive" : "Архів", 17 | "Creating Zip archive started. We will notify you as soon as the archive is available." : "Розпочато архівування. Ви отримаєте сповіщення, щойно буде створено архів ZIP. ", 18 | "An error happened when trying to compress the file." : "При спробі архівування файлу сталася помилка. ", 19 | "Only files up to {maxSize} can be compressed." : "Лише файли розміром до {maxSize} дозволено архівувати. " 20 | }, 21 | "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); 22 | -------------------------------------------------------------------------------- /.github/workflows/lint-php-cs.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint php-cs 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-php-cs-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | lint: 22 | runs-on: ubuntu-latest 23 | 24 | name: php-cs 25 | 26 | steps: 27 | - name: Checkout 28 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 29 | with: 30 | persist-credentials: false 31 | 32 | - name: Get php version 33 | id: versions 34 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 35 | 36 | - name: Set up php${{ steps.versions.outputs.php-min }} 37 | uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0 38 | with: 39 | php-version: ${{ steps.versions.outputs.php-min }} 40 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite 41 | coverage: none 42 | ini-file: development 43 | env: 44 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 45 | 46 | - name: Install dependencies 47 | run: | 48 | composer remove nextcloud/ocp --dev --no-scripts 49 | composer i 50 | 51 | - name: Lint 52 | run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 ) 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "files_zip", 3 | "description": "Compress selected files to a zip archive", 4 | "version": "2.2.0", 5 | "author": "Julius Härtl zipService = $zipService; 32 | $this->notificationService = $notificationService; 33 | $this->logger = $logger; 34 | $this->tempManager = $tempManager; 35 | } 36 | 37 | public function getUid(): string { 38 | return $this->argument['uid']; 39 | } 40 | 41 | public function getFileIds(): array { 42 | return $this->argument['fileIds']; 43 | } 44 | 45 | public function getTarget(): string { 46 | return $this->argument['target']; 47 | } 48 | 49 | protected function run($argument) { 50 | try { 51 | $file = $this->zipService->zip($this->getUid(), $this->getFileIds(), $this->getTarget()); 52 | $this->notificationService->sendNotificationOnSuccess($this, $file); 53 | } catch (\Throwable $e) { 54 | $this->logger->error('Failed to create zip archive', ['exception' => $e]); 55 | $this->notificationService->sendNotificationOnFailure($this); 56 | } finally { 57 | $this->tempManager->clean(); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/services.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors 3 | * SPDX-License-Identifier: AGPL-3.0-or-later 4 | */ 5 | import axios from '@nextcloud/axios' 6 | import { showSuccess, showError } from '@nextcloud/dialogs' 7 | import { spawnDialog } from '@nextcloud/vue/functions/dialog' 8 | import type { Node } from '@nextcloud/files' 9 | import { formatFileSize } from '@nextcloud/files' 10 | import { generateOcsUrl } from '@nextcloud/router' 11 | import Modal from './Modal.vue' 12 | import { loadState } from '@nextcloud/initial-state' 13 | import { t } from '@nextcloud/l10n' 14 | 15 | const MAX_COMPRESS_SIZE = loadState('files_zip', 'max_compress_size', -1) 16 | 17 | export const getArchivePath = (nodes: Node[]) => { 18 | const currentDirectory = nodes[0].path 19 | const currentDirectoryName = currentDirectory.split('/').slice(-1).pop() 20 | 21 | return (currentDirectoryName === '' ? t('files_zip', 'Archive') : currentDirectoryName) + '.zip' 22 | } 23 | 24 | const compressFiles = async (fileIds: number[], target: string) => { 25 | try { 26 | await axios.post(generateOcsUrl('apps/files_zip/api/v1/zip'), { 27 | fileIds, 28 | target, 29 | }) 30 | showSuccess(t('files_zip', 'Creating Zip archive started. We will notify you as soon as the archive is available.')) 31 | } catch (e) { 32 | showError(t('files_zip', 'An error happened when trying to compress the file.')) 33 | } 34 | } 35 | 36 | export const action = async (dir: string, nodes: Node[]) => { 37 | const fileIds: number[] = nodes.map(file => file.fileid) as number[] 38 | const size = nodes.reduce((carry: number, file: Node) => (file?.size ?? 0) + carry, 0) 39 | 40 | if (MAX_COMPRESS_SIZE !== -1 && (size ?? 0) > MAX_COMPRESS_SIZE) { 41 | showError(t('files_zip', 'Only files up to {maxSize} can be compressed.', { 42 | maxSize: formatFileSize(MAX_COMPRESS_SIZE), 43 | })) 44 | return null 45 | } 46 | 47 | const target = await spawnDialog(Modal, { nodes }) 48 | if (target === null) { 49 | return null 50 | } 51 | 52 | await compressFiles(fileIds, dir + '/' + target) 53 | 54 | return true 55 | } 56 | -------------------------------------------------------------------------------- /src/Modal.vue: -------------------------------------------------------------------------------- 1 | 5 | 25 | 64 | 73 | -------------------------------------------------------------------------------- /.github/workflows/lint-php.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint php 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-php-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | matrix: 22 | runs-on: ubuntu-latest-low 23 | outputs: 24 | php-versions: ${{ steps.versions.outputs.php-versions }} 25 | steps: 26 | - name: Checkout app 27 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 28 | with: 29 | persist-credentials: false 30 | 31 | - name: Get version matrix 32 | id: versions 33 | uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.0.0 34 | 35 | php-lint: 36 | runs-on: ubuntu-latest 37 | needs: matrix 38 | strategy: 39 | matrix: 40 | php-versions: ${{fromJson(needs.matrix.outputs.php-versions)}} 41 | 42 | name: php-lint 43 | 44 | steps: 45 | - name: Checkout 46 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 47 | with: 48 | persist-credentials: false 49 | 50 | - name: Set up php ${{ matrix.php-versions }} 51 | uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a # v2.33.0 52 | with: 53 | php-version: ${{ matrix.php-versions }} 54 | extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite 55 | coverage: none 56 | ini-file: development 57 | env: 58 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 59 | 60 | - name: Lint 61 | run: composer run lint 62 | 63 | summary: 64 | permissions: 65 | contents: none 66 | runs-on: ubuntu-latest-low 67 | needs: php-lint 68 | 69 | if: always() 70 | 71 | name: php-lint-summary 72 | 73 | steps: 74 | - name: Summary status 75 | run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 5 | # Zipper 6 | 7 | [![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/files_zip)](https://api.reuse.software/info/github.com/nextcloud/files_zip) 8 | 9 | Create zip archives from one or multiple files from within Nextcloud. The archive will be created in the background during cron job execution, so make sure that you have setup a regular cron job. Once the file has been created, the user will be notified about that. 10 | 11 | ## Usage 12 | 13 | After installing and enabling [the Zipper app](https://apps.nextcloud.com/apps/files_zip), a new contextual menu option labeled `Compress to Zip` will appear when right-clicking a file or folder as well as under the `...Actions` menu at the top of the file list in the Nextcloud Web inteface. A notification will be generated immediately for the user to inform them that the zip file creation is pending (queued). An additional notification will be generated when the zip file is available for download. 14 | 15 | ## Worker 16 | 17 | To not wait for the cron job but pick up zip jobs immediately you can run a separate worker process with the following occ command e.g. as a systemd service: 18 | 19 | ``` 20 | occ background-job:worker 'OCA\FilesZip\BackgroundJob\ZipJob' 21 | ``` 22 | 23 | ## Development 24 | 25 | The app requires frontend code build in order to run it from the git repostitory: 26 | - Install dependencies: `npm ci` 27 | - Build the app `npm run build` 28 | 29 | ## API 30 | 31 | ### Capabilities Endpoint 32 | 33 | The Capabilities endpoint will announce the possibility to create zip files through the API with the available API version. Currently only `v1` is available. 34 | 35 | ```json 36 | "files_zip": { 37 | "apiVersion": "v1" 38 | }, 39 | ``` 40 | 41 | ### Scheduling a zip file creation 42 | 43 | POST /ocs/v2.php/apps/files_zip/api/v1/zip 44 | 45 | Parameters: 46 | - fileIds: *(int[])* List of file ids to add to the archive, e.g. `[18633,18646,18667]` 47 | - target: *(string)* Full path of the target zip file in the user directory, e.g. `/path/to/file.zip` 48 | 49 | ## Configuration 50 | 51 | ### Limiting File Size 52 | 53 | In some cases it might be wanted to limit the maximum size of files in total that may be added to zip files. That might be for example useful if the amount of space on /tmp needs to be calculated in order to have enough space for compression. 54 | 55 | Setting the limit to 1GB (in bytes): 56 | ``` 57 | occ config:app:set files_zip max_compress_size --value=1073741824 58 | ``` 59 | 60 | The default value is unlimited (-1). 61 | -------------------------------------------------------------------------------- /lib/Service/NotificationService.php: -------------------------------------------------------------------------------- 1 | notificationManager = $notificationManager; 25 | } 26 | 27 | public function sendNotificationOnPending($userId, $target): void { 28 | $notification = $this->buildScheduledNotification($userId, $target) 29 | ->setDateTime(new DateTime()); 30 | $this->notificationManager->notify($notification); 31 | } 32 | 33 | public function sendNotificationOnSuccess(ZipJob $job, File $file): void { 34 | $this->notificationManager->markProcessed($this->buildScheduledNotification($job->getUid(), $job->getTarget())); 35 | $notification = $this->notificationManager->createNotification(); 36 | $notification->setUser($job->getUid()) 37 | ->setApp('files_zip') 38 | ->setDateTime(new DateTime()) 39 | ->setObject('target', md5($job->getTarget())) 40 | ->setSubject(Notifier::TYPE_SUCCESS, ['fileid' => $file->getId(), 'name' => basename($job->getTarget()), 'path' => dirname($job->getTarget())]); 41 | $this->notificationManager->notify($notification); 42 | } 43 | 44 | public function sendNotificationOnFailure(ZipJob $job): void { 45 | $this->notificationManager->markProcessed($this->buildScheduledNotification($job->getUid(), $job->getTarget())); 46 | $notification = $this->notificationManager->createNotification(); 47 | $notification->setUser($job->getUid()) 48 | ->setApp('files_zip') 49 | ->setDateTime(new DateTime()) 50 | ->setObject('job', (string)$job->getId()) 51 | ->setSubject(Notifier::TYPE_FAILURE, ['target' => $job->getTarget()]); 52 | $this->notificationManager->notify($notification); 53 | } 54 | 55 | private function buildScheduledNotification(string $uid, string $target): INotification { 56 | $notification = $this->notificationManager->createNotification(); 57 | $notification->setUser($uid) 58 | ->setApp('files_zip') 59 | ->setObject('target', md5($target)) 60 | ->setSubject(Notifier::TYPE_SCHEDULED, [ 61 | 'directory' => dirname($target), 62 | 'directory-name' => basename(dirname($target)), 63 | 'target-name' => basename($target), 64 | ]); 65 | return $notification; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /.github/workflows/pr-feedback.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | 6 | # SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-FileCopyrightText: 2023 Marcel Klehr 8 | # SPDX-FileCopyrightText: 2023 Joas Schilling <213943+nickvergessen@users.noreply.github.com> 9 | # SPDX-FileCopyrightText: 2023 Daniel Kesselberg 10 | # SPDX-FileCopyrightText: 2023 Florian Steffens 11 | # SPDX-License-Identifier: MIT 12 | 13 | name: 'Ask for feedback on PRs' 14 | on: 15 | schedule: 16 | - cron: '30 1 * * *' 17 | 18 | permissions: 19 | contents: read 20 | pull-requests: write 21 | 22 | jobs: 23 | pr-feedback: 24 | if: ${{ github.repository_owner == 'nextcloud' }} 25 | runs-on: ubuntu-latest 26 | steps: 27 | - name: The get-github-handles-from-website action 28 | uses: marcelklehr/get-github-handles-from-website-action@06b2239db0a48fe1484ba0bfd966a3ab81a08308 # v1.0.1 29 | id: scrape 30 | with: 31 | website: 'https://nextcloud.com/team/' 32 | 33 | - name: Get blocklist 34 | id: blocklist 35 | run: | 36 | blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -) 37 | echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT" 38 | 39 | - uses: nextcloud/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4 # main 40 | with: 41 | feedback-message: | 42 | Hello there, 43 | Thank you so much for taking the time and effort to create a pull request to our Nextcloud project. 44 | 45 | We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process. 46 | 47 | Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6 48 | 49 | Thank you for contributing to Nextcloud and we hope to hear from you soon! 50 | 51 | (If you believe you should not receive this message, you can add yourself to the [blocklist](https://github.com/nextcloud/.github/blob/master/non-community-usernames.txt).) 52 | days-before-feedback: 14 53 | start-date: '2024-04-30' 54 | exempt-authors: '${{ steps.blocklist.outputs.blocklist }},${{ steps.scrape.outputs.users }}' 55 | exempt-bots: true 56 | -------------------------------------------------------------------------------- /.github/workflows/lint-eslint.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Lint eslint 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: lint-eslint-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | changes: 22 | runs-on: ubuntu-latest-low 23 | permissions: 24 | contents: read 25 | pull-requests: read 26 | 27 | outputs: 28 | src: ${{ steps.changes.outputs.src}} 29 | 30 | steps: 31 | - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 32 | id: changes 33 | continue-on-error: true 34 | with: 35 | filters: | 36 | src: 37 | - '.github/workflows/**' 38 | - 'src/**' 39 | - 'appinfo/info.xml' 40 | - 'package.json' 41 | - 'package-lock.json' 42 | - 'tsconfig.json' 43 | - '.eslintrc.*' 44 | - '.eslintignore' 45 | - '**.js' 46 | - '**.ts' 47 | - '**.vue' 48 | 49 | lint: 50 | runs-on: ubuntu-latest 51 | 52 | needs: changes 53 | if: needs.changes.outputs.src != 'false' 54 | 55 | name: NPM lint 56 | 57 | steps: 58 | - name: Checkout 59 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 60 | with: 61 | persist-credentials: false 62 | 63 | - name: Read package.json node and npm engines version 64 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 65 | id: versions 66 | with: 67 | fallbackNode: '^20' 68 | fallbackNpm: '^10' 69 | 70 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 71 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 72 | with: 73 | node-version: ${{ steps.versions.outputs.nodeVersion }} 74 | 75 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 76 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' 77 | 78 | - name: Install dependencies 79 | env: 80 | CYPRESS_INSTALL_BINARY: 0 81 | PUPPETEER_SKIP_DOWNLOAD: true 82 | run: npm ci 83 | 84 | - name: Lint 85 | run: npm run lint 86 | 87 | summary: 88 | permissions: 89 | contents: none 90 | runs-on: ubuntu-latest-low 91 | needs: [changes, lint] 92 | 93 | if: always() 94 | 95 | # This is the summary, we just avoid to rename it so that branch protection rules still match 96 | name: eslint 97 | 98 | steps: 99 | - name: Summary status 100 | run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi 101 | -------------------------------------------------------------------------------- /lib/Notification/Notifier.php: -------------------------------------------------------------------------------- 1 | factory = $factory; 29 | $this->url = $urlGenerator; 30 | } 31 | 32 | public function getID(): string { 33 | return 'files_zip'; 34 | } 35 | 36 | public function getName(): string { 37 | return $this->factory->get('files_zip')->t('Zipper'); 38 | } 39 | 40 | public function prepare(INotification $notification, string $languageCode): INotification { 41 | if ($notification->getApp() !== 'files_zip') { 42 | throw new InvalidArgumentException('Application should be files_zip instead of ' . $notification->getApp()); 43 | } 44 | 45 | $l = $this->factory->get('files_zip', $languageCode); 46 | 47 | switch ($notification->getSubject()) { 48 | case self::TYPE_SCHEDULED: 49 | $parameters = $notification->getSubjectParameters(); 50 | $notification->setRichSubject($l->t('A Zip archive {target} will be created.'), [ 51 | 'target' => [ 52 | 'type' => 'highlight', 53 | 'id' => $notification->getObjectId(), 54 | 'name' => $parameters['target-name'], 55 | ] 56 | ]); 57 | break; 58 | case self::TYPE_SUCCESS: 59 | $parameters = $notification->getSubjectParameters(); 60 | $notification->setRichSubject($l->t('Your files have been stored as a Zip archive in {path}.'), [ 61 | 'path' => [ 62 | 'type' => 'file', 63 | 'id' => $parameters['fileid'], 64 | 'name' => $parameters['name'], 65 | 'path' => $parameters['path'] 66 | ] 67 | ]); 68 | break; 69 | case self::TYPE_FAILURE: 70 | $parameters = $notification->getSubjectParameters(); 71 | $notification->setRichSubject($l->t('Creating the Zip file {path} failed.'), [ 72 | 'path' => [ 73 | 'type' => 'highlight', 74 | 'id' => $notification->getObjectId(), 75 | 'name' => basename($parameters['target']), 76 | ] 77 | ]); 78 | break; 79 | default: 80 | throw new InvalidArgumentException(); 81 | } 82 | $notification->setIcon($this->url->getAbsoluteURL($this->url->imagePath('files_zip', 'files_zip-dark.svg'))); 83 | $this->setParsedSubjectFromRichSubject($notification); 84 | return $notification; 85 | } 86 | 87 | protected function setParsedSubjectFromRichSubject(INotification $notification): void { 88 | $placeholders = $replacements = []; 89 | foreach ($notification->getRichSubjectParameters() as $placeholder => $parameter) { 90 | $placeholders[] = '{' . $placeholder . '}'; 91 | if ($parameter['type'] === 'file') { 92 | $replacements[] = $parameter['path']; 93 | } else { 94 | $replacements[] = $parameter['name']; 95 | } 96 | } 97 | 98 | $notification->setParsedSubject(str_replace($placeholders, $replacements, $notification->getRichSubject())); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /.github/workflows/node.yml: -------------------------------------------------------------------------------- 1 | # This workflow is provided via the organization template repository 2 | # 3 | # https://github.com/nextcloud/.github 4 | # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization 5 | # 6 | # SPDX-FileCopyrightText: 2021-2024 Nextcloud GmbH and Nextcloud contributors 7 | # SPDX-License-Identifier: MIT 8 | 9 | name: Node 10 | 11 | on: pull_request 12 | 13 | permissions: 14 | contents: read 15 | 16 | concurrency: 17 | group: node-${{ github.head_ref || github.run_id }} 18 | cancel-in-progress: true 19 | 20 | jobs: 21 | changes: 22 | runs-on: ubuntu-latest-low 23 | permissions: 24 | contents: read 25 | pull-requests: read 26 | 27 | outputs: 28 | src: ${{ steps.changes.outputs.src}} 29 | 30 | steps: 31 | - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 32 | id: changes 33 | continue-on-error: true 34 | with: 35 | filters: | 36 | src: 37 | - '.github/workflows/**' 38 | - 'src/**' 39 | - 'appinfo/info.xml' 40 | - 'package.json' 41 | - 'package-lock.json' 42 | - 'tsconfig.json' 43 | - '**.js' 44 | - '**.ts' 45 | - '**.vue' 46 | 47 | build: 48 | runs-on: ubuntu-latest 49 | 50 | needs: changes 51 | if: needs.changes.outputs.src != 'false' 52 | 53 | name: NPM build 54 | steps: 55 | - name: Checkout 56 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 57 | with: 58 | persist-credentials: false 59 | 60 | - name: Read package.json node and npm engines version 61 | uses: skjnldsv/read-package-engines-version-actions@06d6baf7d8f41934ab630e97d9e6c0bc9c9ac5e4 # v3 62 | id: versions 63 | with: 64 | fallbackNode: '^20' 65 | fallbackNpm: '^10' 66 | 67 | - name: Set up node ${{ steps.versions.outputs.nodeVersion }} 68 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 69 | with: 70 | node-version: ${{ steps.versions.outputs.nodeVersion }} 71 | 72 | - name: Set up npm ${{ steps.versions.outputs.npmVersion }} 73 | run: npm i -g 'npm@${{ steps.versions.outputs.npmVersion }}' 74 | 75 | - name: Install dependencies & build 76 | env: 77 | CYPRESS_INSTALL_BINARY: 0 78 | PUPPETEER_SKIP_DOWNLOAD: true 79 | run: | 80 | npm ci 81 | npm run build --if-present 82 | 83 | - name: Check webpack build changes 84 | run: | 85 | bash -c "[[ ! \"`git status --porcelain `\" ]] || (echo 'Please recompile and commit the assets, see the section \"Show changes on failure\" for details' && exit 1)" 86 | 87 | - name: Show changes on failure 88 | if: failure() 89 | run: | 90 | git status 91 | git --no-pager diff 92 | exit 1 # make it red to grab attention 93 | 94 | summary: 95 | permissions: 96 | contents: none 97 | runs-on: ubuntu-latest-low 98 | needs: [changes, build] 99 | 100 | if: always() 101 | 102 | # This is the summary, we just avoid to rename it so that branch protection rules still match 103 | name: node 104 | 105 | steps: 106 | - name: Summary status 107 | run: if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi 108 | -------------------------------------------------------------------------------- /tests/Feature/ZipFeatureTest.php: -------------------------------------------------------------------------------- 1 | createUser(self::TEST_USER1, self::TEST_USER1); 34 | \OC::$server->get(IUserManager::class)->registerBackend($backend); 35 | } 36 | 37 | public function setUp(): void { 38 | parent::setUp(); 39 | $this->rootFolder = \OC::$server->get(IRootFolder::class); 40 | $this->zipService = \OC::$server->get(ZipService::class); 41 | $folder = $this->loginAndGetUserFolder(self::TEST_USER1); 42 | foreach (self::TEST_FILES as $filename) { 43 | $folder->delete($filename); 44 | } 45 | } 46 | 47 | public function testZipJob() { 48 | $this->loginAndGetUserFolder(self::TEST_USER1) 49 | ->delete('/pendingzipfile.zip'); 50 | 51 | $files = []; 52 | foreach (self::TEST_FILES as $filename) { 53 | $files[] = $this->loginAndGetUserFolder(self::TEST_USER1) 54 | ->newFile($filename, $filename); 55 | } 56 | 57 | 58 | $fileIds = array_map(function ($file) { 59 | return $file->getId(); 60 | }, $files); 61 | $target = '/pendingzipfile.zip'; 62 | $this->zipService->createZipJob($fileIds, $target); 63 | 64 | $jobList = \OCP\Server::get(\OCP\BackgroundJob\IJobList::class); 65 | $this->assertTrue($jobList->has(\OCA\FilesZip\BackgroundJob\ZipJob::class, [ 66 | 'uid' => self::TEST_USER1, 67 | 'fileIds' => $fileIds, 68 | 'target' => $target, 69 | ])); 70 | } 71 | 72 | public function testZip() { 73 | $target = '/zipfile.zip'; 74 | 75 | $userFolder = $this->loginAndGetUserFolder(self::TEST_USER1); 76 | $userFolder->delete($target); 77 | 78 | $files = []; 79 | foreach (self::TEST_FILES as $filename) { 80 | $files[] = $this->loginAndGetUserFolder(self::TEST_USER1) 81 | ->newFile($filename, $filename); 82 | } 83 | 84 | 85 | $fileIds = array_map(function ($file) { 86 | return $file->getId(); 87 | }, $files); 88 | try { 89 | $this->zipService->zip(self::TEST_USER1, $fileIds, $target); 90 | } catch (\PHPUnit\Framework\Error\Deprecated $e) { 91 | $this->markTestSkipped('Test skipped due to upstream issue https://github.com/DeepDiver1975/PHPZipStreamer/pull/11'); 92 | } 93 | /** @var File $node */ 94 | $node = $userFolder->get($target); 95 | $this->assertTrue($userFolder->nodeExists($target)); 96 | $this->assertEquals('application/zip', $node->getMimetype()); 97 | $this->assertEquals(671, $node->getSize()); 98 | 99 | $path = $node->getStorage()->getLocalFile($node->getInternalPath()); 100 | $zip = new \OC\Archive\ZIP($path); 101 | self::assertEquals(self::TEST_FILES, $zip->getFiles()); 102 | 103 | $i = 0; 104 | foreach (self::TEST_FILES as $filename) { 105 | self::assertEquals($files[$i++]->getSize(), $zip->filesize($filename)); 106 | } 107 | } 108 | 109 | private function loginAndGetUserFolder(string $userId) { 110 | $this->loginAsUser($userId); 111 | return $this->rootFolder->getUserFolder($userId); 112 | } 113 | 114 | private function shareFileWithUser(File $file, $owner, $user) { 115 | $this->shareManager = \OC::$server->getShareManager(); 116 | $share1 = $this->shareManager->newShare(); 117 | $share1->setNode($file) 118 | ->setSharedBy($owner) 119 | ->setSharedWith($user) 120 | ->setShareType(IShare::TYPE_USER) 121 | ->setPermissions(19); 122 | $share1 = $this->shareManager->createShare($share1); 123 | $share1->setStatus(IShare::STATUS_ACCEPTED); 124 | $this->shareManager->updateShare($share1); 125 | } 126 | 127 | public function tearDown(): void { 128 | parent::tearDown(); 129 | $folder = $this->rootFolder->getUserFolder(self::TEST_USER1); 130 | foreach (self::TEST_FILES as $filename) { 131 | $folder->delete($filename); 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 5 | # Changelog for files_zip 6 | 7 | ## 2.2.0 8 | 9 | - Add support for Nextcloud 32 10 | - Update dependencies 11 | 12 | ## 2.1.0 13 | 14 | ### Added 15 | 16 | - feat(deps): Add Nextcloud 31 support @nickvergessen [#275](https://github.com/nextcloud/files_zip/pull/275) 17 | - ci: Update workflows @nickvergessen [#284](https://github.com/nextcloud/files_zip/pull/284) 18 | 19 | ### Fixed 20 | 21 | - fix: disable zip on trashbin @skjnldsv [#282](https://github.com/nextcloud/files_zip/pull/282) 22 | - fix(files): upgrade `vite-config` to `1.4.2` @JuliaKirschenheuter [#288](https://github.com/nextcloud/files_zip/pull/288) 23 | 24 | ### Other 25 | 26 | - Chore(deps): Bump @nextcloud/vue from 8.15.0 to 8.15.1 @dependabot [#271](https://github.com/nextcloud/files_zip/pull/271) 27 | - Chore(deps): Bump @nextcloud/files from 3.6.0 to 3.7.0 @dependabot [#272](https://github.com/nextcloud/files_zip/pull/272) 28 | - Chore(deps): Bump @nextcloud/vue from 8.15.1 to 8.16.0 @dependabot [#273](https://github.com/nextcloud/files_zip/pull/273) 29 | - Chore(deps): Bump @nextcloud/files from 3.7.0 to 3.8.0 @dependabot [#274](https://github.com/nextcloud/files_zip/pull/274) 30 | - chore: update workflows from templates @nextcloud-command [#277](https://github.com/nextcloud/files_zip/pull/277) 31 | - Chore(deps): Bump @nextcloud/vue from 8.16.0 to 8.17.0 @dependabot [#278](https://github.com/nextcloud/files_zip/pull/278) 32 | - Chore(deps): Bump @nextcloud/dialogs from 5.3.5 to 5.3.7 @dependabot [#279](https://github.com/nextcloud/files_zip/pull/279) 33 | - Chore(deps-dev): Bump nextcloud/coding-standard from 1.2.1 to 1.2.3 @dependabot [#280](https://github.com/nextcloud/files_zip/pull/280) 34 | - Chore(deps): Bump @nextcloud/files from 3.8.0 to 3.9.0 @dependabot [#283](https://github.com/nextcloud/files_zip/pull/283) 35 | - Chore(deps): Bump @nextcloud/vue from 8.17.0 to 8.17.1 @dependabot [#281](https://github.com/nextcloud/files_zip/pull/281) 36 | - Chore(deps-dev): Bump nextcloud/coding-standard from 1.2.3 to 1.3.1 @dependabot [#287](https://github.com/nextcloud/files_zip/pull/287) 37 | 38 | ## 1.6.0 39 | 40 | ### Added 41 | 42 | - feat(deps): Add Nextcloud 30 support @nickvergessen [#226](https://github.com/nextcloud/files_zip/pull/226) 43 | - Add SPDX header @AndyScherzinger [#248](https://github.com/nextcloud/files_zip/pull/248) 44 | - Remove duplicate license info @AndyScherzinger [#250](https://github.com/nextcloud/files_zip/pull/250) 45 | - Migrate REUSE to TOML format @AndyScherzinger [#265](https://github.com/nextcloud/files_zip/pull/265) 46 | 47 | ## 1.5.0 48 | 49 | ### Added 50 | 51 | - Nextcloud 28 compatibility 52 | - feat: Move to vue and @nextcloud/files actions @juliushaertl [#189](https://github.com/nextcloud/files_zip/pull/189) 53 | 54 | ### Fixed 55 | 56 | - fix: Add share attribute check @juliushaertl [#192](https://github.com/nextcloud/files_zip/pull/192) 57 | - fix(i18n):fixed typo @rakekniven [#191](https://github.com/nextcloud/files_zip/pull/191) 58 | - (readme) Add usage info + tidy up headings @joshtrichards [#159](https://github.com/nextcloud/files_zip/pull/159) 59 | 60 | ## 1.4.0 61 | 62 | ### Removed 63 | 64 | - Support for Nextcloud 22, 23 and 24 65 | 66 | ## 1.3.0 (not released) 67 | 68 | ### Added 69 | 70 | - Compatibility with Nextcloud 27 71 | 72 | ### Fixed 73 | 74 | - Fix button labels in dialog @danxuliu [#140](https://github.com/nextcloud/files_zip/pull/140) 75 | 76 | ### Changed 77 | 78 | - Translation updates 79 | - Dependency updates 80 | 81 | ## 1.2.0 82 | 83 | ### Added 84 | 85 | - Add single file action for compressing to zip @juliushaertl [#86](https://github.com/nextcloud/files_zip/pull/86) 86 | - Compatibility with Nextcloud 26 87 | 88 | ### Fixed 89 | 90 | - Fix icon color inverting @juliushaertl [#111](https://github.com/nextcloud/files_zip/pull/111) 91 | 92 | ## 1.1.2 93 | 94 | ### Added 95 | 96 | - Add option to limit the maximum amount of files in size [#79](https://github.com/nextcloud/files_zip/pull/79) 97 | 98 | ### Fixed 99 | 100 | - Clean up any temp files after each job [#78](https://github.com/nextcloud/files_zip/pull/78) 101 | 102 | ## 1.1.1 103 | 104 | ### Fixed 105 | 106 | - Propagate filesize change [#74](https://github.com/nextcloud/files_zip/pull/74) 107 | 108 | 109 | ## 1.1.0 110 | 111 | - Nextcloud 24 compatibility 112 | - Translation updates 113 | 114 | ## 1.0.1 115 | 116 | ### Fixed 117 | 118 | - #40 Hide zip menu item when there is no create permission in a folder @juliushaertl 119 | - #50 Add transifex config @nickvergessen 120 | - #51 Add l10n/ folder @nickvergessen 121 | - #47 Fix handling of invalid names @CarlSchwan 122 | - #46 Fix notifications not getting translated @CarlSchwan 123 | - #52 l10n: Correct spelling @Valdnet 124 | - Bump dependencies 125 | - Update translations 126 | 127 | 128 | ## 1.0.0 129 | 130 | - Initial release 131 | --------------------------------------------------------------------------------