diff options
Diffstat (limited to 'apps')
440 files changed, 5504 insertions, 6695 deletions
diff --git a/apps/accessibility/package-lock.json b/apps/accessibility/package-lock.json index 25b14e01aad..7fca4455149 100644 --- a/apps/accessibility/package-lock.json +++ b/apps/accessibility/package-lock.json @@ -89,14 +89,14 @@ } }, "@webassemblyjs/ast": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.12.tgz", - "integrity": "sha512-bmTBEKuuhSU6dC95QIW250xO769cdYGx9rWn3uBLTw2pUpud0Z5kVuMw9m9fqbNzGeuOU2HpyuZa+yUt2CTEDA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/wast-parser": "1.5.12", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", "debug": "^3.1.0", "mamacro": "^0.0.3" }, @@ -113,21 +113,21 @@ } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.12.tgz", - "integrity": "sha512-epTvkdwOIPpTE9edHS+V+shetYzpTbd91XOzUli1zAS0+NSgSe6ZsNggIqUNzhma1s4bN2f/m8c6B1NMdCERAg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.12.tgz", - "integrity": "sha512-Goxag86JvLq8ucHLXFNSLYzf9wrR+CJr37DsESTAzSnGoqDTgw5eqiXSQVd/D9Biih7+DIn8UIQCxMs8emRRwg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.12.tgz", - "integrity": "sha512-tJNUjttL5CxiiS/KLxT4/Zk0Nbl/poFhztFxktb46zoQEUWaGHR9ZJ0SnvE7DbFX5PY5JNJDMZ0Li4lm246fWw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", "dev": true, "requires": { "debug": "^3.1.0" @@ -145,24 +145,24 @@ } }, "@webassemblyjs/helper-code-frame": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.12.tgz", - "integrity": "sha512-0FrJgiST+MQDMvPigzs+UIk1vslLIqGadkEWdn53Lr0NsUC2JbheG9QaO3Zf6ycK2JwsHiUpGaMFcHYXStTPMA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.5.12" + "@webassemblyjs/wast-printer": "1.5.13" } }, "@webassemblyjs/helper-fsm": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.12.tgz", - "integrity": "sha512-QBHZ45VPUJ7UyYKvUFoaxrSS9H5hbkC9U7tdWgFHmnTMutkXSEgDg2gZg3I/QTsiKOCIwx4qJUJwPd7J4D5CNQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.12.tgz", - "integrity": "sha512-SCXR8hPI4JOG3cdy9HAO8W5/VQ68YXG/Hfs7qDf1cd64zWuMNshyEour5NYnLMVkrrtc0XzfVS/MdeV94woFHA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", "dev": true, "requires": { "debug": "^3.1.0", @@ -181,21 +181,21 @@ } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.12.tgz", - "integrity": "sha512-0Gz5lQcyvElNVbOTKwjEmIxGwdWf+zpAW/WGzGo95B7IgMEzyyfZU+PrGHDwiSH9c0knol9G7smQnY0ljrSA6g==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.12.tgz", - "integrity": "sha512-ge/CKVKBGpiJhFN9PIOQ7sPtGYJhxm/mW1Y3SpG1L6XBunfRz0YnLjW3TmhcOEFozIVyODPS1HZ9f7VR3GBGow==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", "debug": "^3.1.0" }, "dependencies": { @@ -211,43 +211,51 @@ } }, "@webassemblyjs/ieee754": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.12.tgz", - "integrity": "sha512-F+PEv9QBzPi1ThLBouUJbuxhEr+Sy/oua1ftXFKHiaYYS5Z9tKPvK/hgCxlSdq+RY4MSG15jU2JYb/K5pkoybg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", "dev": true, "requires": { "ieee754": "^1.1.11" } }, "@webassemblyjs/leb128": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.12.tgz", - "integrity": "sha512-cCOx/LVGiWyCwVrVlvGmTdnwHzIP4+zflLjGkZxWpYCpdNax9krVIJh1Pm7O86Ox/c5PrJpbvZU1cZLxndlPEw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", "dev": true, "requires": { - "leb": "^0.3.0" + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } } }, "@webassemblyjs/utf8": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.12.tgz", - "integrity": "sha512-FX8NYQMiTRU0TfK/tJVntsi9IEKsedSsna8qtsndWVE0x3zLndugiApxdNMIOoElBV9o4j0BUqR+iwU58QfPxQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.12.tgz", - "integrity": "sha512-r/oZAyC4EZl0ToOYJgvj+b0X6gVEKQMLT34pNNbtvWBehQOnaSXvVUA5FIYlH8ubWjFNAFqYaVGgQTjR1yuJdQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/helper-wasm-section": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", - "@webassemblyjs/wasm-opt": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", - "@webassemblyjs/wast-printer": "1.5.12", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", "debug": "^3.1.0" }, "dependencies": { @@ -263,28 +271,28 @@ } }, "@webassemblyjs/wasm-gen": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.12.tgz", - "integrity": "sha512-LTu+cr1YRxGGiVIXWhei/35lXXEwTnQU18x4V/gE+qCSJN21QcVTMjJuasTUh8WtmBZtOlqJbOQIeN7fGnHWhg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/ieee754": "1.5.12", - "@webassemblyjs/leb128": "1.5.12", - "@webassemblyjs/utf8": "1.5.12" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, "@webassemblyjs/wasm-opt": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.12.tgz", - "integrity": "sha512-LBwG5KPA9u/uigZVyTsDpS3CVxx3AePCnTItVL+OPkRCp5LqmLsOp4a3/c5CQE0Lecm0Ss9hjUTDcbYFZkXlfQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", "debug": "^3.1.0" }, "dependencies": { @@ -300,42 +308,42 @@ } }, "@webassemblyjs/wasm-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.12.tgz", - "integrity": "sha512-xset3+1AtoFYEfMg30nzCGBnhKmTBzbIKvMyLhqJT06TvYV+kA884AOUpUvhSmP6XPF3G+HVZPm/PbCGxH4/VQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-api-error": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/ieee754": "1.5.12", - "@webassemblyjs/leb128": "1.5.12", - "@webassemblyjs/utf8": "1.5.12" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, "@webassemblyjs/wast-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.12.tgz", - "integrity": "sha512-QWUtzhvfY7Ue9GlJ3HeOB6w5g9vNYUUnG+Y96TWPkFHJTxZlcvGfNrUoACCw6eDb9gKaHrjt77aPq41a7y8svg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/floating-point-hex-parser": "1.5.12", - "@webassemblyjs/helper-api-error": "1.5.12", - "@webassemblyjs/helper-code-frame": "1.5.12", - "@webassemblyjs/helper-fsm": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", "long": "^3.2.0", "mamacro": "^0.0.3" } }, "@webassemblyjs/wast-printer": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.12.tgz", - "integrity": "sha512-XF9RTeckFgDyl196uRKZWHFFfbkzsMK96QTXp+TC0R9gsV9DMiDGMSIllgy/WdrZ3y3dsQp4fTA5r4GoaOBchA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/wast-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", "long": "^3.2.0" } }, @@ -372,12 +380,6 @@ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -412,15 +414,6 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -500,32 +493,6 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, "axios": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", @@ -727,9 +694,9 @@ } }, "babel-loader": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz", - "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", + "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", "dev": true, "requires": { "find-cache-dir": "^1.0.0", @@ -1450,36 +1417,6 @@ "unset-value": "^1.0.0" } }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "caniuse-db": { - "version": "1.0.30000853", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000853.tgz", - "integrity": "sha1-MpAafWuTqH1Z8Iqu5H6o/27JD98=", - "dev": true - }, "caniuse-lite": { "version": "1.0.30000852", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000852.tgz", @@ -1551,15 +1488,6 @@ "safe-buffer": "^5.0.1" } }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "^1.1.3" - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1598,21 +1526,6 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1629,17 +1542,6 @@ "object-visit": "^1.0.0" } }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, "color-convert": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", @@ -1655,32 +1557,6 @@ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", "dev": true }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "^1.0.0" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, "commander": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", @@ -1835,26 +1711,18 @@ "randomfill": "^1.0.3" } }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, "css-loader": { - "version": "0.28.11", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", - "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", + "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", "css-selector-tokenizer": "^0.7.0", - "cssnano": "^3.10.0", "icss-utils": "^2.1.0", "loader-utils": "^1.0.2", "lodash.camelcase": "^4.3.0", - "object-assign": "^4.1.1", - "postcss": "^5.0.6", + "postcss": "^6.0.23", "postcss-modules-extract-imports": "^1.2.0", "postcss-modules-local-by-default": "^1.2.0", "postcss-modules-scope": "^1.1.0", @@ -1893,56 +1761,6 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -2023,12 +1841,6 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -2158,12 +1970,6 @@ "estraverse": "^4.1.1" } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -2441,12 +2247,6 @@ "locate-path": "^2.0.0" } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -3061,12 +2861,6 @@ } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -3138,15 +2932,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -3157,9 +2942,9 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-value": { @@ -3247,12 +3032,6 @@ "os-tmpdir": "^1.0.1" } }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -3281,60 +3060,6 @@ "dev": true, "requires": { "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "ieee754": { @@ -3503,12 +3228,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -3647,12 +3366,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3674,15 +3387,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3707,28 +3411,12 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "js-base64": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", - "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", - "dev": true - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -3768,12 +3456,6 @@ "invert-kv": "^1.0.0" } }, - "leb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", - "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", - "dev": true - }, "loader-runner": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", @@ -3819,18 +3501,6 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "long": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", @@ -3886,12 +3556,6 @@ "object-visit": "^1.0.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -4161,24 +3825,6 @@ "remove-trailing-separator": "^1.0.1" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -4188,24 +3834,12 @@ "path-key": "^2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -4422,218 +4056,14 @@ "dev": true }, "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "^5.0.16" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", - "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", - "dev": true, - "requires": { - "postcss": "^6.0.1" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" }, "dependencies": { "ansi-styles": { @@ -4656,23 +4086,6 @@ "supports-color": "^5.3.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4690,6 +4103,15 @@ } } }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, "postcss-modules-local-by-default": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", @@ -4698,60 +4120,6 @@ "requires": { "css-selector-tokenizer": "^0.7.0", "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-scope": { @@ -4762,60 +4130,6 @@ "requires": { "css-selector-tokenizer": "^0.7.0", "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-values": { @@ -4826,155 +4140,6 @@ "requires": { "icss-replace-symbols": "^1.1.0", "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "^5.0.5" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" } }, "postcss-value-parser": { @@ -4983,23 +4148,6 @@ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", "dev": true }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "prettier": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.5.tgz", @@ -5082,22 +4230,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -5156,42 +4288,6 @@ "set-immediate-shim": "^1.0.1" } }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -5402,12 +4498,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "schema-utils": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", @@ -5615,15 +4705,6 @@ } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", @@ -5673,12 +4754,6 @@ "extend-shallow": "^3.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "ssri": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", @@ -5748,12 +4823,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -5795,21 +4864,6 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - } - }, "tapable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", @@ -6011,12 +5065,6 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "unique-filename": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", @@ -6144,12 +5192,6 @@ "integrity": "sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg==", "dev": true }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -6221,16 +5263,16 @@ } }, "webpack": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.14.0.tgz", - "integrity": "sha512-CgZPUwobJbQlZqpylDNtEazZLfNnGuyFmpk1dHIP2kFchtyMWB+W2wBKPImSnSQ2rbX/WZMKiQax+SZmlUXuQQ==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.15.1.tgz", + "integrity": "sha512-UwfFQ2plA5EMhhzwi/hl5xpLk7mNK7p0853Ml04z1Bqw553pY+oS8Xke3funcVy7eG/yMpZPvnlFTUyGKyKoyw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-module-context": "1.5.12", - "@webassemblyjs/wasm-edit": "1.5.12", - "@webassemblyjs/wasm-opt": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", "acorn": "^5.6.2", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", @@ -6456,12 +5498,6 @@ } } }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/apps/accessibility/package.json b/apps/accessibility/package.json index 8d2296d4e3a..1ae850a7a2d 100644 --- a/apps/accessibility/package.json +++ b/apps/accessibility/package.json @@ -20,13 +20,13 @@ ], "devDependencies": { "babel-core": "^6.26.3", - "babel-loader": "^7.1.4", + "babel-loader": "^7.1.5", "babel-preset-env": "^1.7.0", - "css-loader": "^0.28.11", + "css-loader": "^1.0.0", "file-loader": "^1.1.11", "vue-loader": "^15.2.4", "vue-template-compiler": "^2.5.16", - "webpack": "^4.14.0", + "webpack": "^4.15.1", "webpack-cli": "^3.0.8", "webpack-merge": "^4.1.3" } diff --git a/apps/cloud_federation_api/lib/Config.php b/apps/cloud_federation_api/lib/Config.php index 7d42960deaf..2fb842697d4 100644 --- a/apps/cloud_federation_api/lib/Config.php +++ b/apps/cloud_federation_api/lib/Config.php @@ -47,11 +47,14 @@ class Config { * * @param string $resourceType * @return array - * @throws \OCP\Federation\Exceptions\ProviderDoesNotExistsException */ public function getSupportedShareTypes($resourceType) { - $provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType); - return $provider->getSupportedShareTypes(); + try { + $provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType); + return $provider->getSupportedShareTypes(); + } catch (\Exception $e) { + return []; + } } } diff --git a/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php b/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php index 27dd89f2abe..e7c6c415d3c 100644 --- a/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php +++ b/apps/cloud_federation_api/lib/Controller/RequestHandlerController.php @@ -35,6 +35,7 @@ use OCP\Federation\ICloudFederationFactory; use OCP\Federation\ICloudFederationProviderManager; use OCP\Federation\Exceptions\ProviderDoesNotExistsException; use OCP\Federation\ICloudIdManager; +use OCP\IGroupManager; use OCP\ILogger; use OCP\IRequest; use OCP\IURLGenerator; @@ -57,6 +58,9 @@ class RequestHandlerController extends Controller { /** @var IUserManager */ private $userManager; + /** @var IGroupManager */ + private $groupManager; + /** @var IURLGenerator */ private $urlGenerator; @@ -76,6 +80,7 @@ class RequestHandlerController extends Controller { IRequest $request, ILogger $logger, IUserManager $userManager, + IGroupManager $groupManager, IURLGenerator $urlGenerator, ICloudFederationProviderManager $cloudFederationProviderManager, Config $config, @@ -86,6 +91,7 @@ class RequestHandlerController extends Controller { $this->logger = $logger; $this->userManager = $userManager; + $this->groupManager = $groupManager; $this->urlGenerator = $urlGenerator; $this->cloudFederationProviderManager = $cloudFederationProviderManager; $this->config = $config; @@ -136,17 +142,37 @@ class RequestHandlerController extends Controller { ); } - $cloudId = $this->cloudIdManager->resolveCloudId($shareWith); - $shareWithLocalId = $cloudId->getUser(); - $shareWith = $this->mapUid($shareWithLocalId); - - if (!$this->userManager->userExists($shareWith)) { + $supportedShareTypes = $this->config->getSupportedShareTypes($resourceType); + if (!in_array($shareType, $supportedShareTypes)) { return new JSONResponse( - ['message' => 'User "' . $shareWith . '" does not exists at ' . $this->urlGenerator->getBaseUrl()], - Http::STATUS_BAD_REQUEST + ['message' => 'Share type "' . $shareType . '" not implemented'], + Http::STATUS_NOT_IMPLEMENTED ); } + $cloudId = $this->cloudIdManager->resolveCloudId($shareWith); + $shareWith = $cloudId->getUser(); + + if ($shareType === 'user') { + $shareWith = $this->mapUid($shareWith); + + if (!$this->userManager->userExists($shareWith)) { + return new JSONResponse( + ['message' => 'User "' . $shareWith . '" does not exists at ' . $this->urlGenerator->getBaseUrl()], + Http::STATUS_BAD_REQUEST + ); + } + } + + if ($shareType === 'group') { + if(!$this->groupManager->groupExists($shareWith)) { + return new JSONResponse( + ['message' => 'Group "' . $shareWith . '" does not exists at ' . $this->urlGenerator->getBaseUrl()], + Http::STATUS_BAD_REQUEST + ); + } + } + // if no explicit display name is given, we use the uid as display name $ownerDisplayName = $ownerDisplayName === null ? $owner : $ownerDisplayName; $sharedByDisplayName = $sharedByDisplayName === null ? $sharedBy : $sharedByDisplayName; @@ -161,7 +187,7 @@ class RequestHandlerController extends Controller { $provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType); $share = $this->factory->getCloudFederationShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, '', $shareType, $resourceType); $share->setProtocol($protocol); - $id = $provider->shareReceived($share); + $provider->shareReceived($share); } catch (ProviderDoesNotExistsException $e) { return new JSONResponse( ['message' => $e->getMessage()], @@ -179,7 +205,7 @@ class RequestHandlerController extends Controller { ); } - $user = $this->userManager->get($shareWithLocalId); + $user = $this->userManager->get($shareWith); $recipientDisplayName = ''; if($user) { $recipientDisplayName = $user->getDisplayName(); @@ -259,7 +285,6 @@ class RequestHandlerController extends Controller { * @return string mixed */ private function mapUid($uid) { - \OC::$server->getURLGenerator()->linkToDocs('key'); // FIXME this should be a method in the user management instead $this->logger->debug('shareWith before, ' . $uid, ['app' => $this->appName]); \OCP\Util::emitHook( diff --git a/apps/comments/l10n/lt_LT.js b/apps/comments/l10n/lt_LT.js index 7c3648642cd..219f54b5828 100644 --- a/apps/comments/l10n/lt_LT.js +++ b/apps/comments/l10n/lt_LT.js @@ -2,8 +2,8 @@ OC.L10N.register( "comments", { "Comments" : "Komentarai", - "Edit comment" : "Redaguoti komentarą", - "Delete comment" : "Ištrinti komentarą", + "Edit comment" : "Keisti", + "Delete comment" : "Ištrinti", "New comment …" : "Komentaras", "Post" : "Įrašas", "Cancel" : "Atsisakyti", diff --git a/apps/comments/l10n/lt_LT.json b/apps/comments/l10n/lt_LT.json index a094f2176b3..793d6391aed 100644 --- a/apps/comments/l10n/lt_LT.json +++ b/apps/comments/l10n/lt_LT.json @@ -1,7 +1,7 @@ { "translations": { "Comments" : "Komentarai", - "Edit comment" : "Redaguoti komentarą", - "Delete comment" : "Ištrinti komentarą", + "Edit comment" : "Keisti", + "Delete comment" : "Ištrinti", "New comment …" : "Komentaras", "Post" : "Įrašas", "Cancel" : "Atsisakyti", diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js index a0c41a9f242..f2d871e1b97 100644 --- a/apps/comments/l10n/pl.js +++ b/apps/comments/l10n/pl.js @@ -4,12 +4,12 @@ OC.L10N.register( "Comments" : "Komentarze", "Edit comment" : "Edytuj komentarz", "Delete comment" : "Skasuj komentarz", - "New comment …" : "Nowy komentarz...", + "New comment …" : "Nowy komentarz…", "Post" : "Zapisz", "Cancel" : "Anuluj", "[Deleted user]" : "[Usunięty użytkownik]", "No comments yet, start the conversation!" : "Brak komentarzy, zacznij konwersację!", - "More comments …" : "Więcej komentarzy ...", + "More comments …" : "Więcej komentarzy…", "Save" : "Zapisz", "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", "Error occurred while retrieving comment with ID {id}" : "Wystąpił błąd podczas pobierania komentarza o identyfikatorze {id}", diff --git a/apps/comments/l10n/pl.json b/apps/comments/l10n/pl.json index 1cd17d9a970..c372b33c393 100644 --- a/apps/comments/l10n/pl.json +++ b/apps/comments/l10n/pl.json @@ -2,12 +2,12 @@ "Comments" : "Komentarze", "Edit comment" : "Edytuj komentarz", "Delete comment" : "Skasuj komentarz", - "New comment …" : "Nowy komentarz...", + "New comment …" : "Nowy komentarz…", "Post" : "Zapisz", "Cancel" : "Anuluj", "[Deleted user]" : "[Usunięty użytkownik]", "No comments yet, start the conversation!" : "Brak komentarzy, zacznij konwersację!", - "More comments …" : "Więcej komentarzy ...", + "More comments …" : "Więcej komentarzy…", "Save" : "Zapisz", "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", "Error occurred while retrieving comment with ID {id}" : "Wystąpił błąd podczas pobierania komentarza o identyfikatorze {id}", diff --git a/apps/comments/l10n/zh_TW.js b/apps/comments/l10n/zh_TW.js index cd01947fbb6..a54af33815f 100644 --- a/apps/comments/l10n/zh_TW.js +++ b/apps/comments/l10n/zh_TW.js @@ -29,6 +29,7 @@ OC.L10N.register( "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{file}” 的留言中提到你", "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你", "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你", + "Files app plugin to add comments to files" : "檔案插件程式插件,用於為檔案增加註釋", "Unknown user" : "未知的使用者", "A (now) deleted user mentioned you in a comment on “%s”" : "一個已被刪除的用戶在 “%s” 的留言中提到你", "A (now) deleted user mentioned you in a comment on “{file}”" : "一個已被刪除的用戶在 “{file}” 的留言中提到你" diff --git a/apps/comments/l10n/zh_TW.json b/apps/comments/l10n/zh_TW.json index 1c8d8f20032..05ec9e89e41 100644 --- a/apps/comments/l10n/zh_TW.json +++ b/apps/comments/l10n/zh_TW.json @@ -27,6 +27,7 @@ "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "一個已被刪除的用戶在 “{file}” 的留言中提到你", "%1$s mentioned you in a comment on “%2$s”" : "%1$s 在 “%2$s” 的留言中提到你", "{user} mentioned you in a comment on “{file}”" : "{user} 在 “{file}” 的留言中提到你", + "Files app plugin to add comments to files" : "檔案插件程式插件,用於為檔案增加註釋", "Unknown user" : "未知的使用者", "A (now) deleted user mentioned you in a comment on “%s”" : "一個已被刪除的用戶在 “%s” 的留言中提到你", "A (now) deleted user mentioned you in a comment on “{file}”" : "一個已被刪除的用戶在 “{file}” 的留言中提到你" diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index d1f9a823fd7..9e0779a934d 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -5,7 +5,7 @@ <name>WebDAV</name> <summary>WebDAV endpoint</summary> <description>WebDAV endpoint</description> - <version>1.5.4</version> + <version>1.6.0</version> <licence>agpl</licence> <author>owncloud.org</author> <namespace>DAV</namespace> @@ -22,6 +22,7 @@ <background-jobs> <job>OCA\DAV\BackgroundJob\CleanupDirectLinksJob</job> <job>OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob</job> + <job>OCA\DAV\BackgroundJob\CleanupInvitationTokenJob</job> </background-jobs> <repair-steps> diff --git a/apps/dav/appinfo/routes.php b/apps/dav/appinfo/routes.php index 2aaeda98964..a7d9e2ec33c 100644 --- a/apps/dav/appinfo/routes.php +++ b/apps/dav/appinfo/routes.php @@ -25,6 +25,10 @@ return [ 'routes' => [ ['name' => 'birthday_calendar#enable', 'url' => '/enableBirthdayCalendar', 'verb' => 'POST'], ['name' => 'birthday_calendar#disable', 'url' => '/disableBirthdayCalendar', 'verb' => 'POST'], + ['name' => 'invitation_response#accept', 'url' => '/invitation/accept/{token}', 'verb' => 'GET'], + ['name' => 'invitation_response#decline', 'url' => '/invitation/decline/{token}', 'verb' => 'GET'], + ['name' => 'invitation_response#options', 'url' => '/invitation/moreOptions/{token}', 'verb' => 'GET'], + ['name' => 'invitation_response#processMoreOptionsResult', 'url' => '/invitation/moreOptions/{token}', 'verb' => 'POST'] ], 'ocs' => [ ['name' => 'direct#getUrl', 'url' => '/api/v1/direct', 'verb' => 'POST'], diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index 8ed5e068e2d..8b266c156f3 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -12,6 +12,7 @@ return array( 'OCA\\DAV\\Avatars\\AvatarNode' => $baseDir . '/../lib/Avatars/AvatarNode.php', 'OCA\\DAV\\Avatars\\RootCollection' => $baseDir . '/../lib/Avatars/RootCollection.php', 'OCA\\DAV\\BackgroundJob\\CleanupDirectLinksJob' => $baseDir . '/../lib/BackgroundJob/CleanupDirectLinksJob.php', + 'OCA\\DAV\\BackgroundJob\\CleanupInvitationTokenJob' => $baseDir . '/../lib/BackgroundJob/CleanupInvitationTokenJob.php', 'OCA\\DAV\\BackgroundJob\\GenerateBirthdayCalendarBackgroundJob' => $baseDir . '/../lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php', 'OCA\\DAV\\BackgroundJob\\UpdateCalendarResourcesRoomsBackgroundJob' => $baseDir . '/../lib/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJob.php', 'OCA\\DAV\\CalDAV\\Activity\\Backend' => $baseDir . '/../lib/CalDAV/Activity/Backend.php', @@ -33,6 +34,7 @@ return array( 'OCA\\DAV\\CalDAV\\CalendarManager' => $baseDir . '/../lib/CalDAV/CalendarManager.php', 'OCA\\DAV\\CalDAV\\CalendarObject' => $baseDir . '/../lib/CalDAV/CalendarObject.php', 'OCA\\DAV\\CalDAV\\CalendarRoot' => $baseDir . '/../lib/CalDAV/CalendarRoot.php', + 'OCA\\DAV\\CalDAV\\InvitationResponse\\InvitationResponseServer' => $baseDir . '/../lib/CalDAV/InvitationResponse/InvitationResponseServer.php', 'OCA\\DAV\\CalDAV\\Plugin' => $baseDir . '/../lib/CalDAV/Plugin.php', 'OCA\\DAV\\CalDAV\\Principal\\Collection' => $baseDir . '/../lib/CalDAV/Principal/Collection.php', 'OCA\\DAV\\CalDAV\\Principal\\User' => $baseDir . '/../lib/CalDAV/Principal/User.php', @@ -117,6 +119,7 @@ return array( 'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => $baseDir . '/../lib/Connector/Sabre/TagsPlugin.php', 'OCA\\DAV\\Controller\\BirthdayCalendarController' => $baseDir . '/../lib/Controller/BirthdayCalendarController.php', 'OCA\\DAV\\Controller\\DirectController' => $baseDir . '/../lib/Controller/DirectController.php', + 'OCA\\DAV\\Controller\\InvitationResponseController' => $baseDir . '/../lib/Controller/InvitationResponseController.php', 'OCA\\DAV\\DAV\\CustomPropertiesBackend' => $baseDir . '/../lib/DAV/CustomPropertiesBackend.php', 'OCA\\DAV\\DAV\\GroupPrincipalBackend' => $baseDir . '/../lib/DAV/GroupPrincipalBackend.php', 'OCA\\DAV\\DAV\\PublicAuth' => $baseDir . '/../lib/DAV/PublicAuth.php', @@ -150,6 +153,7 @@ return array( 'OCA\\DAV\\Migration\\Version1004Date20170926103422' => $baseDir . '/../lib/Migration/Version1004Date20170926103422.php', 'OCA\\DAV\\Migration\\Version1005Date20180413093149' => $baseDir . '/../lib/Migration/Version1005Date20180413093149.php', 'OCA\\DAV\\Migration\\Version1005Date20180530124431' => $baseDir . '/../lib/Migration/Version1005Date20180530124431.php', + 'OCA\\DAV\\Migration\\Version1006Date20180619154313' => $baseDir . '/../lib/Migration/Version1006Date20180619154313.php', 'OCA\\DAV\\RootCollection' => $baseDir . '/../lib/RootCollection.php', 'OCA\\DAV\\Server' => $baseDir . '/../lib/Server.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => $baseDir . '/../lib/Settings/CalDAVSettings.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index bdedf1a4404..09eb4d257cc 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -27,6 +27,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Avatars\\AvatarNode' => __DIR__ . '/..' . '/../lib/Avatars/AvatarNode.php', 'OCA\\DAV\\Avatars\\RootCollection' => __DIR__ . '/..' . '/../lib/Avatars/RootCollection.php', 'OCA\\DAV\\BackgroundJob\\CleanupDirectLinksJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupDirectLinksJob.php', + 'OCA\\DAV\\BackgroundJob\\CleanupInvitationTokenJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupInvitationTokenJob.php', 'OCA\\DAV\\BackgroundJob\\GenerateBirthdayCalendarBackgroundJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php', 'OCA\\DAV\\BackgroundJob\\UpdateCalendarResourcesRoomsBackgroundJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJob.php', 'OCA\\DAV\\CalDAV\\Activity\\Backend' => __DIR__ . '/..' . '/../lib/CalDAV/Activity/Backend.php', @@ -48,6 +49,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\CalDAV\\CalendarManager' => __DIR__ . '/..' . '/../lib/CalDAV/CalendarManager.php', 'OCA\\DAV\\CalDAV\\CalendarObject' => __DIR__ . '/..' . '/../lib/CalDAV/CalendarObject.php', 'OCA\\DAV\\CalDAV\\CalendarRoot' => __DIR__ . '/..' . '/../lib/CalDAV/CalendarRoot.php', + 'OCA\\DAV\\CalDAV\\InvitationResponse\\InvitationResponseServer' => __DIR__ . '/..' . '/../lib/CalDAV/InvitationResponse/InvitationResponseServer.php', 'OCA\\DAV\\CalDAV\\Plugin' => __DIR__ . '/..' . '/../lib/CalDAV/Plugin.php', 'OCA\\DAV\\CalDAV\\Principal\\Collection' => __DIR__ . '/..' . '/../lib/CalDAV/Principal/Collection.php', 'OCA\\DAV\\CalDAV\\Principal\\User' => __DIR__ . '/..' . '/../lib/CalDAV/Principal/User.php', @@ -132,6 +134,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagsPlugin.php', 'OCA\\DAV\\Controller\\BirthdayCalendarController' => __DIR__ . '/..' . '/../lib/Controller/BirthdayCalendarController.php', 'OCA\\DAV\\Controller\\DirectController' => __DIR__ . '/..' . '/../lib/Controller/DirectController.php', + 'OCA\\DAV\\Controller\\InvitationResponseController' => __DIR__ . '/..' . '/../lib/Controller/InvitationResponseController.php', 'OCA\\DAV\\DAV\\CustomPropertiesBackend' => __DIR__ . '/..' . '/../lib/DAV/CustomPropertiesBackend.php', 'OCA\\DAV\\DAV\\GroupPrincipalBackend' => __DIR__ . '/..' . '/../lib/DAV/GroupPrincipalBackend.php', 'OCA\\DAV\\DAV\\PublicAuth' => __DIR__ . '/..' . '/../lib/DAV/PublicAuth.php', @@ -165,6 +168,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Migration\\Version1004Date20170926103422' => __DIR__ . '/..' . '/../lib/Migration/Version1004Date20170926103422.php', 'OCA\\DAV\\Migration\\Version1005Date20180413093149' => __DIR__ . '/..' . '/../lib/Migration/Version1005Date20180413093149.php', 'OCA\\DAV\\Migration\\Version1005Date20180530124431' => __DIR__ . '/..' . '/../lib/Migration/Version1005Date20180530124431.php', + 'OCA\\DAV\\Migration\\Version1006Date20180619154313' => __DIR__ . '/..' . '/../lib/Migration/Version1006Date20180619154313.php', 'OCA\\DAV\\RootCollection' => __DIR__ . '/..' . '/../lib/RootCollection.php', 'OCA\\DAV\\Server' => __DIR__ . '/..' . '/../lib/Server.php', 'OCA\\DAV\\Settings\\CalDAVSettings' => __DIR__ . '/..' . '/../lib/Settings/CalDAVSettings.php', diff --git a/apps/dav/css/schedule-response.css b/apps/dav/css/schedule-response.css new file mode 100644 index 00000000000..789ea16df7a --- /dev/null +++ b/apps/dav/css/schedule-response.css @@ -0,0 +1,78 @@ +/* Database selector on install page */ +form #selectPartStatForm { + text-align:center; + white-space: nowrap; + margin: 0; +} + +form #selectPartStatForm .info { + white-space: normal; +} + +form #selectPartStatForm input[type="radio"] { + display: none; +} + +form #selectPartStatForm input[type="radio"]:checked+label { + background-color: #e8e8e8; +} + +form #selectPartStatForm input[type="radio"]:checked ~ form fieldset#more_options { + display: none; +} + +form #selectPartStatForm label { + color: #000; + background-color: #f8f8f8; + position: static; + margin: 0 -3px 5px; + cursor:pointer; + border: 1px solid #ddd; + display: inline-block; + padding: 0; + line-height: normal; + vertical-align: middle; + text-align: center; + overflow: visible; +} + +form #selectPartStatForm label:first-of-type { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +form #selectPartStatForm label:last-of-type { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +form #selectPartStatForm label span { + cursor: pointer; + padding: 10px 20px; + display: block; + line-height: normal; +} +form #selectPartStatForm label.ui-state-hover, +form #selectPartStatForm label.ui-state-active { + color:#000; + background-color:#e8e8e8; +} + +form input[type="number"] { + width: 249px; + background: #fff; + color: #555; + cursor: text; + font-family: inherit; + -webkit-appearance: textfield; + -moz-appearance: textfield; + box-sizing: content-box; + border: none; + font-weight: 300; +} + +form input[type="submit"] { + display: block; + margin: 0 auto; + padding: 11px 20px 9px +}
\ No newline at end of file diff --git a/apps/dav/js/schedule-response.js b/apps/dav/js/schedule-response.js new file mode 100644 index 00000000000..b2514b1ba82 --- /dev/null +++ b/apps/dav/js/schedule-response.js @@ -0,0 +1,3 @@ +// $(document).ready(function() { +// $('#selectPartStatForm').buttonset(); +// });
\ No newline at end of file diff --git a/apps/dav/js/settings-admin-caldav.js b/apps/dav/js/settings-admin-caldav.js index cf1a2006f69..1a40c208dfe 100644 --- a/apps/dav/js/settings-admin-caldav.js +++ b/apps/dav/js/settings-admin-caldav.js @@ -31,8 +31,8 @@ $('#caldavGenerateBirthdayCalendar').change(function() { var val = $(this)[0].checked; if (val) { - $.post(OC.generateUrl(OC.linkTo("dav", "enableBirthdayCalendar"))); + $.post(OC.generateUrl('/apps/dav/enableBirthdayCalendar')); } else { - $.post(OC.generateUrl(OC.linkTo("dav", "disableBirthdayCalendar"))); + $.post(OC.generateUrl('/apps/dav/disableBirthdayCalendar')); } }); diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index d8be77358a0..b91c5efd3fb 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -54,12 +54,20 @@ OC.L10N.register( "Where:" : "Wo:", "Description:" : "Beschreibung:", "Link:" : "Link:", + "Accept" : "Akzeptieren", + "Decline" : "Ablehnen", + "More options ..." : "Weitere Optionen…", + "More options at %s" : "Weitere Optionen unter %s", "Contacts" : "Kontakte", "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-Endpunkt", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s", + "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", + "Are you accepting the invitation?" : "Die Einladung annehmen?", + "Tentative" : "Vorläufig", + "Save" : "Speichern", "CalDAV server" : "CalDAV-Server", "Send invitations to attendees" : "Einladungen an die Teilnehmer versenden", "Please make sure to properly set up the email settings above." : "Bitte sicherstellen, dass die E-Mail Einstellungen oben korrekt angegeben sind.", diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index 4a633f2f69a..5b0f50594fe 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -52,12 +52,20 @@ "Where:" : "Wo:", "Description:" : "Beschreibung:", "Link:" : "Link:", + "Accept" : "Akzeptieren", + "Decline" : "Ablehnen", + "More options ..." : "Weitere Optionen…", + "More options at %s" : "Weitere Optionen unter %s", "Contacts" : "Kontakte", "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-Endpunkt", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s", + "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", + "Are you accepting the invitation?" : "Die Einladung annehmen?", + "Tentative" : "Vorläufig", + "Save" : "Speichern", "CalDAV server" : "CalDAV-Server", "Send invitations to attendees" : "Einladungen an die Teilnehmer versenden", "Please make sure to properly set up the email settings above." : "Bitte sicherstellen, dass die E-Mail Einstellungen oben korrekt angegeben sind.", diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index 517394f091f..9afd85b04e8 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -54,12 +54,20 @@ OC.L10N.register( "Where:" : "Wo:", "Description:" : "Beschreibung:", "Link:" : "Link:", + "Accept" : "Akzeptieren", + "Decline" : "Ablehnen", + "More options ..." : "Weitere Optionen…", + "More options at %s" : "Weitere Optionen unter %s", "Contacts" : "Kontakte", "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-Endpunkt", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s", + "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", + "Are you accepting the invitation?" : "Die Einladung annehmen?", + "Tentative" : "Vorläufig", + "Save" : "Speichern", "CalDAV server" : "CalDAV-Server", "Send invitations to attendees" : "Einladungen an die Teilnehmer versenden", "Please make sure to properly set up the email settings above." : "Stellen Sie sicher, dass die obigen E-Mail-Einstellungen korrekt sind.", diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index 107c01c8c36..5ce95e1edb9 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -52,12 +52,20 @@ "Where:" : "Wo:", "Description:" : "Beschreibung:", "Link:" : "Link:", + "Accept" : "Akzeptieren", + "Decline" : "Ablehnen", + "More options ..." : "Weitere Optionen…", + "More options at %s" : "Weitere Optionen unter %s", "Contacts" : "Kontakte", "WebDAV" : "WebDAV", "WebDAV endpoint" : "WebDAV-Endpunkt", "Technical details" : "Technische Details", "Remote Address: %s" : "Entfernte Adresse: %s", "Request ID: %s" : "Anfragekennung: %s", + "Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.", + "Are you accepting the invitation?" : "Die Einladung annehmen?", + "Tentative" : "Vorläufig", + "Save" : "Speichern", "CalDAV server" : "CalDAV-Server", "Send invitations to attendees" : "Einladungen an die Teilnehmer versenden", "Please make sure to properly set up the email settings above." : "Stellen Sie sicher, dass die obigen E-Mail-Einstellungen korrekt sind.", diff --git a/apps/dav/l10n/he.js b/apps/dav/l10n/he.js index 85713826bd0..31acad1c1e5 100644 --- a/apps/dav/l10n/he.js +++ b/apps/dav/l10n/he.js @@ -15,9 +15,19 @@ OC.L10N.register( "{actor} shared calendar {calendar} with you" : "שותף אתך לוח השנה {calendar} על ידי {actor}", "You shared calendar {calendar} with {user}" : "שיתפת לוח שנה {calendar} עם {user}", "{actor} shared calendar {calendar} with {user}" : "לוח השנה {calendar} שותף על ידי {actor} עם {user}", + "{actor} unshared calendar {calendar} from you" : "השיתוף של לוח השנה {calendar} אתך הופסק על ידי {actor}", "You unshared calendar {calendar} from {user}" : "ביטלת את שיתוף לוח השנה {calendar} עם {user}", + "{actor} unshared calendar {calendar} from {user}" : "השיתוף של לוח השנה {calendar} עם {user} הופסק על ידי {actor}", + "{actor} unshared calendar {calendar} from themselves" : "השיתוף של לוח השנה {calendar} עם עצמם הופסק על ידי {actor}", + "You shared calendar {calendar} with group {group}" : "שיתפת את לוח השנה {calendar} עם הקבוצה {group}", + "{actor} shared calendar {calendar} with group {group}" : "לוח השנה {calendar} שותף עם הקבוצה {group} על ידי {actor}", + "You unshared calendar {calendar} from group {group}" : "הפסקת את שיתוף לוח השנה {calendar} עם הקבוצה {group}", + "{actor} unshared calendar {calendar} from group {group}" : "השיתוף של לוח השנה {calendar} עם {group} הופסק על ידי {actor}", + "{actor} created event {event} in calendar {calendar}" : "האירוע {event} נוצר בלוח השנה {calendar} על ידי {actor}", "You created event {event} in calendar {calendar}" : "יצרת אירוע {event} בלוח השנה {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "האירוע {event} נמחק מלוח השנה {calendar} על ידי {actor}", "You deleted event {event} from calendar {calendar}" : "מחקת אירוע {event} מלוח השנה {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "האירוע {event} עודכן בלוח השנה {calendar} על ידי {actor}", "You updated event {event} in calendar {calendar}" : "עדכנת את האירוע {event} בלוח השנה {calendar}", "{actor} created todo {todo} in list {calendar}" : "המשימה לביצוע {todo} ברשימה {calendar} נוצרה על ידי {actor}", "You created todo {todo} in list {calendar}" : "יצרת את המשימה לביצוע {todo} ברשימה {calendar}", @@ -31,6 +41,7 @@ OC.L10N.register( "You reopened todo {todo} in list {calendar}" : "פתחת מחדש את המשימה לביצוע {todo} ברשימה {calendar}", "A <strong>calendar</strong> was modified" : " <strong>יומן</strong> נערך", "A calendar <strong>event</strong> was modified" : "<strong>אירוע</strong> ביומן נערך", + "A calendar <strong>todo</strong> was modified" : "נערכה <strong>מטלה</strong> בלוח שנה", "Contact birthdays" : "ימי הולדת של אנשי קשר", "%s via %s" : "%s דרך %s", "Invitation canceled" : "ההזמנה בוטלה", diff --git a/apps/dav/l10n/he.json b/apps/dav/l10n/he.json index 895c253d7a2..3b7cfa1d330 100644 --- a/apps/dav/l10n/he.json +++ b/apps/dav/l10n/he.json @@ -13,9 +13,19 @@ "{actor} shared calendar {calendar} with you" : "שותף אתך לוח השנה {calendar} על ידי {actor}", "You shared calendar {calendar} with {user}" : "שיתפת לוח שנה {calendar} עם {user}", "{actor} shared calendar {calendar} with {user}" : "לוח השנה {calendar} שותף על ידי {actor} עם {user}", + "{actor} unshared calendar {calendar} from you" : "השיתוף של לוח השנה {calendar} אתך הופסק על ידי {actor}", "You unshared calendar {calendar} from {user}" : "ביטלת את שיתוף לוח השנה {calendar} עם {user}", + "{actor} unshared calendar {calendar} from {user}" : "השיתוף של לוח השנה {calendar} עם {user} הופסק על ידי {actor}", + "{actor} unshared calendar {calendar} from themselves" : "השיתוף של לוח השנה {calendar} עם עצמם הופסק על ידי {actor}", + "You shared calendar {calendar} with group {group}" : "שיתפת את לוח השנה {calendar} עם הקבוצה {group}", + "{actor} shared calendar {calendar} with group {group}" : "לוח השנה {calendar} שותף עם הקבוצה {group} על ידי {actor}", + "You unshared calendar {calendar} from group {group}" : "הפסקת את שיתוף לוח השנה {calendar} עם הקבוצה {group}", + "{actor} unshared calendar {calendar} from group {group}" : "השיתוף של לוח השנה {calendar} עם {group} הופסק על ידי {actor}", + "{actor} created event {event} in calendar {calendar}" : "האירוע {event} נוצר בלוח השנה {calendar} על ידי {actor}", "You created event {event} in calendar {calendar}" : "יצרת אירוע {event} בלוח השנה {calendar}", + "{actor} deleted event {event} from calendar {calendar}" : "האירוע {event} נמחק מלוח השנה {calendar} על ידי {actor}", "You deleted event {event} from calendar {calendar}" : "מחקת אירוע {event} מלוח השנה {calendar}", + "{actor} updated event {event} in calendar {calendar}" : "האירוע {event} עודכן בלוח השנה {calendar} על ידי {actor}", "You updated event {event} in calendar {calendar}" : "עדכנת את האירוע {event} בלוח השנה {calendar}", "{actor} created todo {todo} in list {calendar}" : "המשימה לביצוע {todo} ברשימה {calendar} נוצרה על ידי {actor}", "You created todo {todo} in list {calendar}" : "יצרת את המשימה לביצוע {todo} ברשימה {calendar}", @@ -29,6 +39,7 @@ "You reopened todo {todo} in list {calendar}" : "פתחת מחדש את המשימה לביצוע {todo} ברשימה {calendar}", "A <strong>calendar</strong> was modified" : " <strong>יומן</strong> נערך", "A calendar <strong>event</strong> was modified" : "<strong>אירוע</strong> ביומן נערך", + "A calendar <strong>todo</strong> was modified" : "נערכה <strong>מטלה</strong> בלוח שנה", "Contact birthdays" : "ימי הולדת של אנשי קשר", "%s via %s" : "%s דרך %s", "Invitation canceled" : "ההזמנה בוטלה", diff --git a/apps/dav/l10n/it.js b/apps/dav/l10n/it.js index 20da8a6dfa3..10fa534a9d6 100644 --- a/apps/dav/l10n/it.js +++ b/apps/dav/l10n/it.js @@ -54,12 +54,22 @@ OC.L10N.register( "Where:" : "Dove:", "Description:" : "Descrizione:", "Link:" : "Collegamento:", + "Accept" : "Accetta", + "Decline" : "Rifiuta", + "More options ..." : "Altre opzioni...", + "More options at %s" : "Altre opzioni alle %s", "Contacts" : "Contatti", "WebDAV" : "WebDAV", "WebDAV endpoint" : "Terminatore WebDAV", "Technical details" : "Dettagli tecnici", "Remote Address: %s" : "Indirizzo remoto: %s", "Request ID: %s" : "ID richiesta: %s", + "There was an error updating your attendance status." : "Si è verificato un errore durante l'aggiornamento dello stato della tua partecipazione.", + "Please contact the organizer directly." : "Contatta direttamente l'amministratore.", + "Are you accepting the invitation?" : "Accetti l'invito?", + "Tentative" : "Provvisorio", + "Save" : "Salva", + "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente.", "CalDAV server" : "Server CalDAV", "Send invitations to attendees" : "Invia gli inviti ai partecipanti", "Please make sure to properly set up the email settings above." : "Assicurati di configurare correttamente le impostazioni di posta sopra.", diff --git a/apps/dav/l10n/it.json b/apps/dav/l10n/it.json index aaa1b2522b5..eee0dddcf95 100644 --- a/apps/dav/l10n/it.json +++ b/apps/dav/l10n/it.json @@ -52,12 +52,22 @@ "Where:" : "Dove:", "Description:" : "Descrizione:", "Link:" : "Collegamento:", + "Accept" : "Accetta", + "Decline" : "Rifiuta", + "More options ..." : "Altre opzioni...", + "More options at %s" : "Altre opzioni alle %s", "Contacts" : "Contatti", "WebDAV" : "WebDAV", "WebDAV endpoint" : "Terminatore WebDAV", "Technical details" : "Dettagli tecnici", "Remote Address: %s" : "Indirizzo remoto: %s", "Request ID: %s" : "ID richiesta: %s", + "There was an error updating your attendance status." : "Si è verificato un errore durante l'aggiornamento dello stato della tua partecipazione.", + "Please contact the organizer directly." : "Contatta direttamente l'amministratore.", + "Are you accepting the invitation?" : "Accetti l'invito?", + "Tentative" : "Provvisorio", + "Save" : "Salva", + "Your attendance was updated successfully." : "La tua partecipazione è stata aggiornata correttamente.", "CalDAV server" : "Server CalDAV", "Send invitations to attendees" : "Invia gli inviti ai partecipanti", "Please make sure to properly set up the email settings above." : "Assicurati di configurare correttamente le impostazioni di posta sopra.", diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js index 16e8b0d5220..9a14b215132 100644 --- a/apps/dav/l10n/pt_BR.js +++ b/apps/dav/l10n/pt_BR.js @@ -54,15 +54,25 @@ OC.L10N.register( "Where:" : "Onde:", "Description:" : "Descrição:", "Link:" : "Link:", + "Accept" : "Aceitar", + "Decline" : "Rejeitar", + "More options ..." : "Mais opções...", + "More options at %s" : "Mais opções em %s", "Contacts" : "Contatos", "WebDAV" : "WebDAV", "WebDAV endpoint" : "Ponto final WebDAV", "Technical details" : "Detalhes técnicos", "Remote Address: %s" : "Endereço remoto: %s", "Request ID: %s" : "ID do solicitante: %s", + "There was an error updating your attendance status." : "Houve um erro ao atualizar seu status de participação.", + "Please contact the organizer directly." : "Por favor, contate o organizador diretamente.", + "Are you accepting the invitation?" : "Você está aceitando o convite?", + "Tentative" : "Tentativa", + "Save" : "Salvar", + "Your attendance was updated successfully." : "Sua participação foi atualizada com sucesso.", "CalDAV server" : "Servidor CalDAV", "Send invitations to attendees" : "Envie convites aos participantes", - "Please make sure to properly set up the email settings above." : "Certifique-se de configurar corretamente o email acima.", + "Please make sure to properly set up the email settings above." : "Certifique-se de configurar corretamente o e-mail acima.", "Automatically generate a birthday calendar" : "Gerar um calendário de aniversários automaticamente", "Birthday calendars will be generated by a background job." : "Os calendários de aniversários serão gerados na retaguarda.", "Hence they will not be available immediately after enabling but will show up after some time." : "Portanto, eles não estarão disponíveis imediatamente ao habilitar mas após algum tempo." diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json index f4a2277a16e..867977e00d1 100644 --- a/apps/dav/l10n/pt_BR.json +++ b/apps/dav/l10n/pt_BR.json @@ -52,15 +52,25 @@ "Where:" : "Onde:", "Description:" : "Descrição:", "Link:" : "Link:", + "Accept" : "Aceitar", + "Decline" : "Rejeitar", + "More options ..." : "Mais opções...", + "More options at %s" : "Mais opções em %s", "Contacts" : "Contatos", "WebDAV" : "WebDAV", "WebDAV endpoint" : "Ponto final WebDAV", "Technical details" : "Detalhes técnicos", "Remote Address: %s" : "Endereço remoto: %s", "Request ID: %s" : "ID do solicitante: %s", + "There was an error updating your attendance status." : "Houve um erro ao atualizar seu status de participação.", + "Please contact the organizer directly." : "Por favor, contate o organizador diretamente.", + "Are you accepting the invitation?" : "Você está aceitando o convite?", + "Tentative" : "Tentativa", + "Save" : "Salvar", + "Your attendance was updated successfully." : "Sua participação foi atualizada com sucesso.", "CalDAV server" : "Servidor CalDAV", "Send invitations to attendees" : "Envie convites aos participantes", - "Please make sure to properly set up the email settings above." : "Certifique-se de configurar corretamente o email acima.", + "Please make sure to properly set up the email settings above." : "Certifique-se de configurar corretamente o e-mail acima.", "Automatically generate a birthday calendar" : "Gerar um calendário de aniversários automaticamente", "Birthday calendars will be generated by a background job." : "Os calendários de aniversários serão gerados na retaguarda.", "Hence they will not be available immediately after enabling but will show up after some time." : "Portanto, eles não estarão disponíveis imediatamente ao habilitar mas após algum tempo." diff --git a/apps/dav/lib/BackgroundJob/CleanupInvitationTokenJob.php b/apps/dav/lib/BackgroundJob/CleanupInvitationTokenJob.php new file mode 100644 index 00000000000..942f8e23ecb --- /dev/null +++ b/apps/dav/lib/BackgroundJob/CleanupInvitationTokenJob.php @@ -0,0 +1,53 @@ +<?php +declare(strict_types=1); +/** + * @copyright 2018, Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\DAV\BackgroundJob; + +use OC\BackgroundJob\TimedJob; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IDBConnection; + +class CleanupInvitationTokenJob extends TimedJob { + + /** @var IDBConnection */ + private $db; + + /** @var ITimeFactory */ + private $timeFactory; + + public function __construct(IDBConnection $db, ITimeFactory $timeFactory) { + $this->db = $db; + $this->timeFactory = $timeFactory; + + $this->setInterval(60 * 60 * 24); + } + + public function run($argument) { + $query = $this->db->getQueryBuilder(); + $query->delete('calendar_invitations') + ->where($query->expr()->lt('expiration', + $query->createNamedParameter($this->timeFactory->getTime()))) + ->execute(); + } +} diff --git a/apps/dav/lib/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJob.php b/apps/dav/lib/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJob.php index a01540a6292..c5f8f6586e9 100644 --- a/apps/dav/lib/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJob.php +++ b/apps/dav/lib/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJob.php @@ -72,9 +72,9 @@ class UpdateCalendarResourcesRoomsBackgroundJob extends TimedJob { $this->roomManager = $roomManager; $this->db = $dbConnection; $this->calDavBackend = $calDavBackend; - $this->resourceDbTable = 'calendar_resources_cache'; + $this->resourceDbTable = 'calendar_resources'; $this->resourcePrincipalUri = 'principals/calendar-resources'; - $this->roomDbTable = 'calendar_rooms_cache'; + $this->roomDbTable = 'calendar_rooms'; $this->roomPrincipalUri = 'principals/calendar-rooms'; // run once an hour diff --git a/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php b/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php new file mode 100644 index 00000000000..61ead99ce12 --- /dev/null +++ b/apps/dav/lib/CalDAV/InvitationResponse/InvitationResponseServer.php @@ -0,0 +1,118 @@ +<?php +/** + * @copyright Copyright (c) 2018, Georg Ehrke. + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ +namespace OCA\DAV\CalDAV\InvitationResponse; + +use OCA\DAV\Connector\Sabre\BlockLegacyClientPlugin; +use OCA\DAV\Connector\Sabre\CachingTree; +use OCA\DAV\Connector\Sabre\DavAclPlugin; +use OCA\DAV\Connector\Sabre\AnonymousOptionsPlugin; +use OCA\DAV\RootCollection; +use OCP\SabrePluginEvent; +use Sabre\DAV\Auth\Plugin; +use OCA\DAV\AppInfo\PluginManager; +use Sabre\VObject\ITip\Message; + +class InvitationResponseServer { + + /** @var \OCA\DAV\Connector\Sabre\Server */ + public $server; + + /** + * InvitationResponseServer constructor. + */ + public function __construct() { + $baseUri = \OC::$WEBROOT . '/remote.php/dav/'; + $logger = \OC::$server->getLogger(); + $dispatcher = \OC::$server->getEventDispatcher(); + + $root = new RootCollection(); + $this->server = new \OCA\DAV\Connector\Sabre\Server(new CachingTree($root)); + + // Add maintenance plugin + $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\MaintenancePlugin(\OC::$server->getConfig())); + + // Set URL explicitly due to reverse-proxy situations + $this->server->httpRequest->setUrl($baseUri); + $this->server->setBaseUri($baseUri); + + $this->server->addPlugin(new BlockLegacyClientPlugin(\OC::$server->getConfig())); + $this->server->addPlugin(new AnonymousOptionsPlugin()); + $this->server->addPlugin(new class() extends Plugin { + public function getCurrentPrincipal() { + return 'principals/system/public'; + } + }); + + // allow setup of additional auth backends + $event = new SabrePluginEvent($this->server); + $dispatcher->dispatch('OCA\DAV\Connector\Sabre::authInit', $event); + + $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin('webdav', $logger)); + $this->server->addPlugin(new \OCA\DAV\Connector\Sabre\LockPlugin()); + $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin()); + + // acl + $acl = new DavAclPlugin(); + $acl->principalCollectionSet = [ + 'principals/users', 'principals/groups' + ]; + $acl->defaultUsernamePath = 'principals/users'; + $this->server->addPlugin($acl); + + // calendar plugins + $this->server->addPlugin(new \OCA\DAV\CalDAV\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin()); + $this->server->addPlugin(new \OCA\DAV\CalDAV\Schedule\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin()); + $this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin()); + //$this->server->addPlugin(new \OCA\DAV\DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest())); + $this->server->addPlugin(new \OCA\DAV\CalDAV\Publishing\PublishPlugin( + \OC::$server->getConfig(), + \OC::$server->getURLGenerator() + )); + + // wait with registering these until auth is handled and the filesystem is setup + $this->server->on('beforeMethod', function () use ($root) { + // register plugins from apps + $pluginManager = new PluginManager( + \OC::$server, + \OC::$server->getAppManager() + ); + foreach ($pluginManager->getAppPlugins() as $appPlugin) { + $this->server->addPlugin($appPlugin); + } + foreach ($pluginManager->getAppCollections() as $appCollection) { + $root->addChild($appCollection); + } + }); + } + + /** + * @param Message $iTipMessage + * @return void + */ + public function handleITipMessage(Message $iTipMessage) { + /** @var \OCA\DAV\CalDAV\Schedule\Plugin $schedulingPlugin */ + $schedulingPlugin = $this->server->getPlugin('caldav-schedule'); + $schedulingPlugin->scheduleLocalDelivery($iTipMessage); + } +}
\ No newline at end of file diff --git a/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php b/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php index 135bbe5827e..dcd393b512e 100644 --- a/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php +++ b/apps/dav/lib/CalDAV/ResourceBooking/AbstractPrincipalBackend.php @@ -68,7 +68,7 @@ abstract class AbstractPrincipalBackend implements BackendInterface { $this->groupManager = $groupManager; $this->logger = $logger; $this->principalPrefix = $principalPrefix; - $this->dbTableName = 'calendar_' . $dbPrefix . '_cache'; + $this->dbTableName = 'calendar_' . $dbPrefix; } /** diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index 85973a8be12..4065c21b8a1 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -28,12 +28,14 @@ namespace OCA\DAV\CalDAV\Schedule; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Defaults; use OCP\IConfig; +use OCP\IDBConnection; use OCP\IL10N; use OCP\ILogger; use OCP\IURLGenerator; use OCP\L10N\IFactory as L10NFactory; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; +use OCP\Security\ISecureRandom; use Sabre\CalDAV\Schedule\IMipPlugin as SabreIMipPlugin; use Sabre\VObject\Component\VCalendar; use Sabre\VObject\Component\VEvent; @@ -79,6 +81,12 @@ class IMipPlugin extends SabreIMipPlugin { /** @var IURLGenerator */ private $urlGenerator; + /** @var ISecureRandom */ + private $random; + + /** @var IDBConnection */ + private $db; + /** @var Defaults */ private $defaults; @@ -96,9 +104,14 @@ class IMipPlugin extends SabreIMipPlugin { * @param L10NFactory $l10nFactory * @param IUrlGenerator $urlGenerator * @param Defaults $defaults + * @param ISecureRandom $random + * @param IDBConnection $db * @param string $userId */ - public function __construct(IConfig $config, IMailer $mailer, ILogger $logger, ITimeFactory $timeFactory, L10NFactory $l10nFactory, IURLGenerator $urlGenerator, Defaults $defaults, $userId) { + public function __construct(IConfig $config, IMailer $mailer, ILogger $logger, + ITimeFactory $timeFactory, L10NFactory $l10nFactory, + IURLGenerator $urlGenerator, Defaults $defaults, + ISecureRandom $random, IDBConnection $db, $userId) { parent::__construct(''); $this->userId = $userId; $this->config = $config; @@ -107,6 +120,8 @@ class IMipPlugin extends SabreIMipPlugin { $this->timeFactory = $timeFactory; $this->l10nFactory = $l10nFactory; $this->urlGenerator = $urlGenerator; + $this->random = $random; + $this->db = $db; $this->defaults = $defaults; } @@ -138,7 +153,9 @@ class IMipPlugin extends SabreIMipPlugin { } // don't send out mails for events that already took place - if ($this->isEventInThePast($iTipMessage->message)) { + $lastOccurrence = $this->getLastOccurrence($iTipMessage->message); + $currentTime = $this->timeFactory->getTime(); + if ($lastOccurrence < $currentTime) { return; } @@ -222,6 +239,7 @@ class IMipPlugin extends SabreIMipPlugin { $meetingAttendeeName, $meetingInviteeName); $this->addBulletList($template, $l10n, $meetingWhen, $meetingLocation, $meetingDescription, $meetingUrl); + $this->addResponseButtons($template, $l10n, $iTipMessage, $lastOccurrence); $template->addFooter(); $message->useTemplate($template); @@ -249,9 +267,9 @@ class IMipPlugin extends SabreIMipPlugin { /** * check if event took place in the past already * @param VCalendar $vObject - * @return bool + * @return int */ - private function isEventInThePast(VCalendar $vObject) { + private function getLastOccurrence(VCalendar $vObject) { /** @var VEvent $component */ $component = $vObject->VEVENT; @@ -291,8 +309,7 @@ class IMipPlugin extends SabreIMipPlugin { } } - $currentTime = $this->timeFactory->getTime(); - return $lastOccurrence < $currentTime; + return $lastOccurrence; } @@ -460,6 +477,38 @@ class IMipPlugin extends SabreIMipPlugin { } /** + * @param IEMailTemplate $template + * @param IL10N $l10n + * @param Message $iTipMessage + * @param int $lastOccurrence + */ + private function addResponseButtons(IEMailTemplate $template, IL10N $l10n, + Message $iTipMessage, $lastOccurrence) { + $token = $this->createInvitationToken($iTipMessage, $lastOccurrence); + + $template->addBodyButtonGroup( + $l10n->t('Accept'), + $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.accept', [ + 'token' => $token, + ]), + $l10n->t('Decline'), + $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.decline', [ + 'token' => $token, + ]) + ); + + $moreOptionsURL = $this->urlGenerator->linkToRouteAbsolute('dav.invitation_response.options', [ + 'token' => $token, + ]); + $html = vsprintf('<small><a href="%s">%s</a></small>', [ + $moreOptionsURL, $l10n->t('More options ...') + ]); + $text = $l10n->t('More options at %s', [$moreOptionsURL]); + + $template->addBodyText($html, $text); + } + + /** * @param string $path * @return string */ @@ -468,4 +517,37 @@ class IMipPlugin extends SabreIMipPlugin { $this->urlGenerator->imagePath('core', $path) ); } + + /** + * @param Message $iTipMessage + * @param int $lastOccurrence + * @return string + */ + private function createInvitationToken(Message $iTipMessage, $lastOccurrence):string { + $token = $this->random->generate(60, ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_DIGITS); + + /** @var VEvent $vevent */ + $vevent = $iTipMessage->message->VEVENT; + $attendee = $iTipMessage->recipient; + $organizer = $iTipMessage->sender; + $sequence = $iTipMessage->sequence; + $recurrenceId = isset($vevent->{'RECURRENCE-ID'}) ? + $vevent->{'RECURRENCE-ID'}->serialize() : null; + $uid = $vevent->{'UID'}; + + $query = $this->db->getQueryBuilder(); + $query->insert('calendar_invitations') + ->values([ + 'token' => $query->createNamedParameter($token), + 'attendee' => $query->createNamedParameter($attendee), + 'organizer' => $query->createNamedParameter($organizer), + 'sequence' => $query->createNamedParameter($sequence), + 'recurrenceid' => $query->createNamedParameter($recurrenceId), + 'expiration' => $query->createNamedParameter($lastOccurrence), + 'uid' => $query->createNamedParameter($uid) + ]) + ->execute(); + + return $token; + } } diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index ed1dbe5469e..e46bdcb2984 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -193,6 +193,7 @@ class File extends Node implements IFile { } } catch (\Exception $e) { + \OC::$server->getLogger()->logException($e); if ($needsPartFile) { $partStorage->unlink($internalPartPath); } diff --git a/apps/dav/lib/Controller/InvitationResponseController.php b/apps/dav/lib/Controller/InvitationResponseController.php new file mode 100644 index 00000000000..e3bdab90aaf --- /dev/null +++ b/apps/dav/lib/Controller/InvitationResponseController.php @@ -0,0 +1,236 @@ +<?php +declare(strict_types=1); +/** + * @copyright 2018, Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\DAV\Controller; + +use OCA\DAV\CalDAV\InvitationResponse\InvitationResponseServer; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IDBConnection; +use OCP\IRequest; +use Sabre\VObject\ITip\Message; +use Sabre\VObject\Reader; + +class InvitationResponseController extends Controller { + + /** @var IDBConnection */ + private $db; + + /** @var ITimeFactory */ + private $timeFactory; + + /** @var InvitationResponseServer */ + private $responseServer; + + /** + * InvitationResponseController constructor. + * + * @param string $appName + * @param IRequest $request + * @param IDBConnection $db + * @param ITimeFactory $timeFactory + * @param InvitationResponseServer $responseServer + */ + public function __construct(string $appName, IRequest $request, + IDBConnection $db, ITimeFactory $timeFactory, + InvitationResponseServer $responseServer) { + parent::__construct($appName, $request); + $this->db = $db; + $this->timeFactory = $timeFactory; + $this->responseServer = $responseServer; + // Don't run `$server->exec()`, because we just need access to the + // fully initialized schedule plugin, but we don't want Sabre/DAV + // to actually handle and reply to the request + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * @return TemplateResponse + */ + public function accept(string $token):TemplateResponse { + $row = $this->getTokenInformation($token); + if (!$row) { + return new TemplateResponse($this->appName, 'schedule-response-error', [], 'guest'); + } + + $iTipMessage = $this->buildITipResponse($row, 'ACCEPTED'); + $this->responseServer->handleITipMessage($iTipMessage); + if ($iTipMessage->getScheduleStatus() === '1.2') { + return new TemplateResponse($this->appName, 'schedule-response-success', [], 'guest'); + } + + return new TemplateResponse($this->appName, 'schedule-response-error', [ + 'organizer' => $row['organizer'], + ], 'guest'); + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * @return TemplateResponse + */ + public function decline(string $token):TemplateResponse { + $row = $this->getTokenInformation($token); + if (!$row) { + return new TemplateResponse($this->appName, 'schedule-response-error', [], 'guest'); + } + + $iTipMessage = $this->buildITipResponse($row, 'DECLINED'); + $this->responseServer->handleITipMessage($iTipMessage); + + if ($iTipMessage->getScheduleStatus() === '1.2') { + return new TemplateResponse($this->appName, 'schedule-response-success', [], 'guest'); + } + + return new TemplateResponse($this->appName, 'schedule-response-error', [ + 'organizer' => $row['organizer'], + ], 'guest'); + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * @return TemplateResponse + */ + public function options(string $token):TemplateResponse { + return new TemplateResponse($this->appName, 'schedule-response-options', [ + 'token' => $token + ], 'guest'); + } + + /** + * @PublicPage + * @NoCSRFRequired + * + * @param string $token + * + * @return TemplateResponse + */ + public function processMoreOptionsResult(string $token):TemplateResponse { + $partstat = $this->request->getParam('partStat'); + $guests = (int) $this->request->getParam('guests'); + $comment = $this->request->getParam('comment'); + + $row = $this->getTokenInformation($token); + if (!$row || !\in_array($partstat, ['ACCEPTED', 'DECLINED', 'TENTATIVE'])) { + return new TemplateResponse($this->appName, 'schedule-response-error', [], 'guest'); + } + + $iTipMessage = $this->buildITipResponse($row, $partstat, $guests, $comment); + $this->responseServer->handleITipMessage($iTipMessage); + if ($iTipMessage->getScheduleStatus() === '1.2') { + return new TemplateResponse($this->appName, 'schedule-response-success', [], 'guest'); + } + + return new TemplateResponse($this->appName, 'schedule-response-error', [ + 'organizer' => $row['organizer'], + ], 'guest'); + } + + /** + * @param string $token + * @return array|null + */ + private function getTokenInformation(string $token) { + $query = $this->db->getQueryBuilder(); + $query->select('*') + ->from('calendar_invitations') + ->where($query->expr()->eq('token', $query->createNamedParameter($token))); + $stmt = $query->execute(); + $row = $stmt->fetch(\PDO::FETCH_ASSOC); + + if(!$row) { + return null; + } + + $currentTime = $this->timeFactory->getTime(); + if (((int) $row['expiration']) < $currentTime) { + return null; + } + + return $row; + } + + /** + * @param array $row + * @param string $partStat participation status of attendee - SEE RFC 5545 + * @param int|null $guests + * @param string|null $comment + * @return Message + */ + private function buildITipResponse(array $row, string $partStat, int $guests=null, + string $comment=null):Message { + $iTipMessage = new Message(); + $iTipMessage->uid = $row['uid']; + $iTipMessage->component = 'VEVENT'; + $iTipMessage->method = 'REPLY'; + $iTipMessage->sequence = $row['sequence']; + $iTipMessage->sender = $row['attendee']; + $iTipMessage->recipient = $row['organizer']; + + $message = <<<EOF +BEGIN:VCALENDAR +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=%s:%s +ORGANIZER:%s +UID:%s +SEQUENCE:%s +REQUEST-STATUS:2.0;Success +%sEND:VEVENT +END:VCALENDAR +EOF; + + $vObject = Reader::read(vsprintf($message, [ + $partStat, $row['attendee'], $row['organizer'], + $row['uid'], $row['sequence'] ?? 0, $row['recurrenceid'] ?? '' + ])); + $vEvent = $vObject->{'VEVENT'}; + /** @var \Sabre\VObject\Property\ICalendar\CalAddress $attendee */ + $attendee = $vEvent->{'ATTENDEE'}; + + $vEvent->DTSTAMP = date('Ymd\\THis\\Z', $this->timeFactory->getTime()); + + if ($comment) { + $attendee->add('X-RESPONSE-COMMENT', $comment); + $vEvent->add('COMMENT', $comment); + } + if ($guests) { + $attendee->add('X-NUM-GUESTS', $guests); + } + + $iTipMessage->message = $vObject; + + return $iTipMessage; + } +} diff --git a/apps/dav/lib/Migration/Version1005Date20180530124431.php b/apps/dav/lib/Migration/Version1005Date20180530124431.php index ae9a40dc5b2..6f3d6b9cc1f 100644 --- a/apps/dav/lib/Migration/Version1005Date20180530124431.php +++ b/apps/dav/lib/Migration/Version1005Date20180530124431.php @@ -27,9 +27,6 @@ use OCP\DB\ISchemaWrapper; use OCP\Migration\SimpleMigrationStep; use OCP\Migration\IOutput; -/** - * Auto-generated migration step: Please modify to your needs! - */ class Version1005Date20180530124431 extends SimpleMigrationStep { /** @@ -45,8 +42,8 @@ class Version1005Date20180530124431 extends SimpleMigrationStep { $types = ['resources', 'rooms']; foreach($types as $type) { - if (!$schema->hasTable('calendar_' . $type . '_cache')) { - $table = $schema->createTable('calendar_' . $type . '_cache'); + if (!$schema->hasTable('calendar_' . $type)) { + $table = $schema->createTable('calendar_' . $type); $table->addColumn('id', Type::BIGINT, [ 'autoincrement' => true, @@ -75,10 +72,10 @@ class Version1005Date20180530124431 extends SimpleMigrationStep { 'length' => 4000, ]); - $table->setPrimaryKey(['id'], 'calendar_' . $type . '_cache_id_idx'); - $table->addIndex(['backend_id', 'resource_id'], 'calendar_' . $type . '_cache_backendresource_idx'); - $table->addIndex(['email'], 'calendar_' . $type . '_cache_email_idx'); - $table->addIndex(['displayname'], 'calendar_' . $type . '_cache_displayname_idx'); + $table->setPrimaryKey(['id']); + $table->addIndex(['backend_id', 'resource_id'], 'calendar_' . $type . '_bkdrsc'); + $table->addIndex(['email'], 'calendar_' . $type . '_email'); + $table->addIndex(['displayname'], 'calendar_' . $type . '_name'); } } diff --git a/apps/dav/lib/Migration/Version1006Date20180619154313.php b/apps/dav/lib/Migration/Version1006Date20180619154313.php new file mode 100644 index 00000000000..91d4826c277 --- /dev/null +++ b/apps/dav/lib/Migration/Version1006Date20180619154313.php @@ -0,0 +1,71 @@ +<?php +namespace OCA\DAV\Migration; + +use Doctrine\DBAL\Types\Type; +use OCP\DB\ISchemaWrapper; +use OCP\Migration\SimpleMigrationStep; +use OCP\Migration\IOutput; + +/** + * Auto-generated migration step: Please modify to your needs! + */ +class Version1006Date20180619154313 extends SimpleMigrationStep { + + /** + * @param IOutput $output + * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper` + * @param array $options + * @return null|ISchemaWrapper + * @since 13.0.0 + */ + public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) { + /** @var ISchemaWrapper $schema */ + $schema = $schemaClosure(); + + if (!$schema->hasTable('calendar_invitations')) { + $table = $schema->createTable('calendar_invitations'); + + $table->addColumn('id', Type::BIGINT, [ + 'autoincrement' => true, + 'notnull' => true, + 'length' => 11, + 'unsigned' => true, + ]); + $table->addColumn('uid', Type::STRING, [ + 'notnull' => true, + 'length' => 255, + ]); + $table->addColumn('recurrenceid', Type::STRING, [ + 'notnull' => false, + 'length' => 255, + ]); + $table->addColumn('attendee', Type::STRING, [ + 'notnull' => true, + 'length' => 255, + ]); + $table->addColumn('organizer', Type::STRING, [ + 'notnull' => true, + 'length' => 255, + ]); + $table->addColumn('sequence', Type::BIGINT, [ + 'notnull' => false, + 'length' => 11, + 'unsigned' => true, + ]); + $table->addColumn('token', Type::STRING, [ + 'notnull' => true, + 'length' => 60, + ]); + $table->addColumn('expiration', Type::BIGINT, [ + 'notnull' => true, + 'length' => 11, + 'unsigned' => true, + ]); + + $table->setPrimaryKey(['id']); + $table->addIndex(['token'], 'calendar_invitation_tokens'); + + return $schema; + } + } +} diff --git a/apps/dav/templates/schedule-response-error.php b/apps/dav/templates/schedule-response-error.php new file mode 100644 index 00000000000..c65875f3b0b --- /dev/null +++ b/apps/dav/templates/schedule-response-error.php @@ -0,0 +1,7 @@ +<div class="update"> + <p class="message"><?php p($l->t('There was an error updating your attendance status.'));?></p> + <p class="message"><?php p($l->t('Please contact the organizer directly.'));?></p> + <?php if(isset($_['organizer'])): ?> + <p class="message"><a href="<?php p($_['organizer']) ?>"><?php p(substr($_['organizer'], 7)) ?></a></p> + <?php endif; ?> +</div> diff --git a/apps/dav/templates/schedule-response-options.php b/apps/dav/templates/schedule-response-options.php new file mode 100644 index 00000000000..da95454e4f5 --- /dev/null +++ b/apps/dav/templates/schedule-response-options.php @@ -0,0 +1,35 @@ +<?php +style('dav', 'schedule-response'); +//script('dav', 'schedule-response'); +?> + +<div class="update"> + <form action="" method="post"> + <fieldset id="partStat"> + <h2><?php p($l->t('Are you accepting the invitation?')); ?></h2> + <div id="selectPartStatForm"> + <input type="radio" id="partStatAccept" name="partStat" value="ACCEPTED" checked /> + <label for="partStatAccept"> + <span><?php p($l->t('Accept')); ?></span> + </label> + + <input type="radio" id="partStatTentative" name="partStat" value="TENTATIVE" /> + <label for="partStatTentative"> + <span><?php p($l->t('Tentative')); ?></span> + </label> + + <input type="radio" class="declined" id="partStatDeclined" name="partStat" value="DECLINED" /> + <label for="partStatDeclined"> + <span><?php p($l->t('Decline')); ?></span> + </label> + </div> + </fieldset> + <fieldset id="more_options"> + <input type="number" min="0" name="guests" placeholder="Guests" /> + <input type="text" name="comment" placeholder="Comment" /> + </fieldset> + <fieldset> + <input type="submit" value="<?php p($l->t('Save'));?>"> + </fieldset> + </form> +</div> diff --git a/apps/dav/templates/schedule-response-success.php b/apps/dav/templates/schedule-response-success.php new file mode 100644 index 00000000000..f60cb1e0fa9 --- /dev/null +++ b/apps/dav/templates/schedule-response-success.php @@ -0,0 +1,4 @@ +<div class="update" style="justify-content: space-around; display: flex;"> + <span class="icon icon-checkmark-white"></span> + <p class="message"><?php p($l->t('Your attendance was updated successfully.'));?></p> +</div> diff --git a/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php b/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php new file mode 100644 index 00000000000..2d80b5bf0ea --- /dev/null +++ b/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php @@ -0,0 +1,100 @@ +<?php +declare(strict_types=1); +/** + * @copyright 2018, Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\DAV\Tests\unit\BackgroundJob; + +use OCA\DAV\BackgroundJob\CleanupInvitationTokenJob; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IDBConnection; +use Test\TestCase; + +class CleanupInvitationTokenJobTest extends TestCase { + + /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject */ + private $dbConnection; + + /** @var ITimeFactory | \PHPUnit_Framework_MockObject_MockObject */ + private $timeFactory; + + /** @var \OCA\DAV\BackgroundJob\GenerateBirthdayCalendarBackgroundJob */ + private $backgroundJob; + + protected function setUp() { + parent::setUp(); + + $this->dbConnection = $this->createMock(IDBConnection::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); + + $this->backgroundJob = new CleanupInvitationTokenJob( + $this->dbConnection, $this->timeFactory); + } + + public function testRun() { + $this->timeFactory->expects($this->once()) + ->method('getTime') + ->with() + ->will($this->returnValue(1337)); + + $queryBuilder = $this->createMock(IQueryBuilder::class); + $expr = $this->createMock(\OCP\DB\QueryBuilder\IExpressionBuilder::class); + $stmt = $this->createMock(\Doctrine\DBAL\Driver\Statement::class); + + $this->dbConnection->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + $queryBuilder->method('expr') + ->will($this->returnValue($expr)); + $queryBuilder->method('createNamedParameter') + ->will($this->returnValueMap([ + [1337, \PDO::PARAM_STR, null, 'namedParameter1337'] + ])); + + $expr->expects($this->once()) + ->method('lt') + ->with('expiration', 'namedParameter1337') + ->will($this->returnValue('LT STATEMENT')); + + $this->dbConnection->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + + $queryBuilder->expects($this->at(0)) + ->method('delete') + ->with('calendar_invitations') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(3)) + ->method('where') + ->with('LT STATEMENT') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(4)) + ->method('execute') + ->with() + ->will($this->returnValue($stmt)); + + $this->backgroundJob->run([]); + } +} diff --git a/apps/dav/tests/unit/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJobTest.php b/apps/dav/tests/unit/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJobTest.php index 56f768ceda0..e012d5e3f18 100644 --- a/apps/dav/tests/unit/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJobTest.php +++ b/apps/dav/tests/unit/BackgroundJob/UpdateCalendarResourcesRoomsBackgroundJobTest.php @@ -60,8 +60,8 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { protected function tearDown() { $query = self::$realDatabase->getQueryBuilder(); - $query->delete('calendar_resources_cache')->execute(); - $query->delete('calendar_rooms_cache')->execute(); + $query->delete('calendar_resources')->execute(); + $query->delete('calendar_rooms')->execute(); } /** @@ -170,7 +170,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { $this->backgroundJob->run([]); $query = self::$realDatabase->getQueryBuilder(); - $query->select('*')->from('calendar_resources_cache'); + $query->select('*')->from('calendar_resources'); $rows = []; $stmt = $query->execute(); @@ -227,7 +227,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { protected function createTestResourcesInCache() { $query = self::$realDatabase->getQueryBuilder(); - $query->insert('calendar_resources_cache') + $query->insert('calendar_resources') ->values([ 'backend_id' => $query->createNamedParameter('backend1'), 'resource_id' => $query->createNamedParameter('res1'), @@ -236,7 +236,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { 'group_restrictions' => $query->createNamedParameter('[]'), ]) ->execute(); - $query->insert('calendar_resources_cache') + $query->insert('calendar_resources') ->values([ 'backend_id' => $query->createNamedParameter('backend1'), 'resource_id' => $query->createNamedParameter('res2'), @@ -245,7 +245,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { 'group_restrictions' => $query->createNamedParameter('[]'), ]) ->execute(); - $query->insert('calendar_resources_cache') + $query->insert('calendar_resources') ->values([ 'backend_id' => $query->createNamedParameter('backend2'), 'resource_id' => $query->createNamedParameter('res3'), @@ -254,7 +254,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { 'group_restrictions' => $query->createNamedParameter('[]'), ]) ->execute(); - $query->insert('calendar_resources_cache') + $query->insert('calendar_resources') ->values([ 'backend_id' => $query->createNamedParameter('backend2'), 'resource_id' => $query->createNamedParameter('res4'), @@ -263,7 +263,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { 'group_restrictions' => $query->createNamedParameter('[]'), ]) ->execute(); - $query->insert('calendar_resources_cache') + $query->insert('calendar_resources') ->values([ 'backend_id' => $query->createNamedParameter('backend3'), 'resource_id' => $query->createNamedParameter('res5'), @@ -272,7 +272,7 @@ class UpdateCalendarResourcesRoomsBackgroundJobTest extends TestCase { 'group_restrictions' => $query->createNamedParameter('[]'), ]) ->execute(); - $query->insert('calendar_resources_cache') + $query->insert('calendar_resources') ->values([ 'backend_id' => $query->createNamedParameter('backend3'), 'resource_id' => $query->createNamedParameter('res6'), diff --git a/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php b/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php index f2c6b6f5f5e..90db4bb4b7b 100644 --- a/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/ResourceBooking/ResourcePrincipalBackendTest.php @@ -29,7 +29,7 @@ Class ResourcePrincipalBackendTest extends AbstractPrincipalBackendTest { $this->principalBackend = new ResourcePrincipalBackend($this->dbConnection, $this->userSession, $this->groupManager, $this->logger); - $this->expectedDbTable = 'calendar_resources_cache'; + $this->expectedDbTable = 'calendar_resources'; $this->principalPrefix = 'principals/calendar-resources'; } } diff --git a/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php b/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php index f45121f4548..b55c6ddceb6 100644 --- a/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/ResourceBooking/RoomPrincipalBackendTest.php @@ -29,7 +29,7 @@ Class RoomPrincipalBackendTest extends AbstractPrincipalBackendTest { $this->principalBackend = new RoomPrincipalBackend($this->dbConnection, $this->userSession, $this->groupManager, $this->logger); - $this->expectedDbTable = 'calendar_rooms_cache'; + $this->expectedDbTable = 'calendar_rooms'; $this->principalPrefix = 'principals/calendar-rooms'; } } diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php index 3f89002ab98..c95b32041e0 100644 --- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php +++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php @@ -29,8 +29,10 @@ namespace OCA\DAV\Tests\unit\CalDAV\Schedule; use OC\Mail\Mailer; use OCA\DAV\CalDAV\Schedule\IMipPlugin; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Defaults; use OCP\IConfig; +use OCP\IDBConnection; use OCP\IL10N; use OCP\ILogger; use OCP\IURLGenerator; @@ -39,6 +41,7 @@ use OCP\Mail\IAttachment; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; use OCP\Mail\IMessage; +use OCP\Security\ISecureRandom; use Sabre\VObject\Component\VCalendar; use Sabre\VObject\ITip\Message; use Test\TestCase; @@ -70,13 +73,38 @@ class IMipPluginTest extends TestCase { $l10nFactory->method('get')->willReturn($l10n); /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ $urlGenerator = $this->createMock(IURLGenerator::class); + /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ + $db = $this->createMock(IDBConnection::class); + /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ + $random = $this->createMock(ISecureRandom::class); /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ $defaults = $this->createMock(Defaults::class); $defaults->expects($this->once()) ->method('getName') ->will($this->returnValue('Instance Name 123')); - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, 'user123'); + $random->expects($this->once()) + ->method('generate') + ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') + ->will($this->returnValue('random_token')); + + $queryBuilder = $this->createMock(IQueryBuilder::class); + + $db->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(0)) + ->method('insert') + ->with('calendar_invitations') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(8)) + ->method('values') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(9)) + ->method('execute'); + + $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); $message = new Message(); $message->method = 'REQUEST'; $message->message = new VCalendar(); @@ -128,10 +156,35 @@ class IMipPluginTest extends TestCase { $l10nFactory->method('get')->willReturn($l10n); /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ $urlGenerator = $this->createMock(IURLGenerator::class); + /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ + $db = $this->createMock(IDBConnection::class); + /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ + $random = $this->createMock(ISecureRandom::class); /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ $defaults = $this->createMock(Defaults::class); - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, 'user123'); + $random->expects($this->once()) + ->method('generate') + ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') + ->will($this->returnValue('random_token')); + + $queryBuilder = $this->createMock(IQueryBuilder::class); + + $db->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(0)) + ->method('insert') + ->with('calendar_invitations') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(8)) + ->method('values') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(9)) + ->method('execute'); + + $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); $message = new Message(); $message->method = 'REQUEST'; $message->message = new VCalendar(); @@ -190,10 +243,37 @@ class IMipPluginTest extends TestCase { $l10nFactory->method('get')->willReturn($l10n); /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ $urlGenerator = $this->createMock(IURLGenerator::class); + /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ + $db = $this->createMock(IDBConnection::class); + /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ + $random = $this->createMock(ISecureRandom::class); /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ $defaults = $this->createMock(Defaults::class); - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, 'user123'); + if ($expectsMail) { + $random->expects($this->once()) + ->method('generate') + ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') + ->will($this->returnValue('random_token')); + + $queryBuilder = $this->createMock(IQueryBuilder::class); + + $db->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(0)) + ->method('insert') + ->with('calendar_invitations') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(8)) + ->method('values') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(9)) + ->method('execute'); + } + + $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); $message = new Message(); $message->method = 'REQUEST'; $message->message = new VCalendar(); diff --git a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php new file mode 100644 index 00000000000..7efb64e3dd4 --- /dev/null +++ b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php @@ -0,0 +1,455 @@ +<?php +declare(strict_types=1); +/** + * @copyright 2018, Georg Ehrke <oc.list@georgehrke.com> + * + * @author Georg Ehrke <oc.list@georgehrke.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\DAV\Tests\Unit\DAV\Controller; + +use OCA\DAV\CalDAV\InvitationResponse\InvitationResponseServer; +use OCA\DAV\CalDAV\Schedule\Plugin; +use OCA\DAV\Controller\InvitationResponseController; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IDBConnection; +use OCP\IRequest; +use Sabre\VObject\ITip\Message; +use Test\TestCase; + +class InvitationResponseControllerTest extends TestCase { + + /** @var InvitationResponseController */ + private $controller; + + /** @var IDBConnection|\PHPUnit_Framework_MockObject_MockObject */ + private $dbConnection; + + /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ + private $request; + + /** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */ + private $timeFactory; + + /** @var InvitationResponseServer|\PHPUnit_Framework_MockObject_MockObject */ + private $responseServer; + + public function setUp() { + parent::setUp(); + + $this->dbConnection = $this->createMock(IDBConnection::class); + $this->request = $this->createMock(IRequest::class); + $this->timeFactory = $this->createMock(ITimeFactory::class); + $this->responseServer = $this->getMockBuilder(InvitationResponseServer::class) + ->disableOriginalConstructor() + ->getMock(); + + $this->controller = new InvitationResponseController( + 'appName', + $this->request, + $this->dbConnection, + $this->timeFactory, + $this->responseServer + ); + } + + public function testAccept() { + $this->buildQueryExpects('TOKEN123', [ + 'id' => 0, + 'uid' => 'this-is-the-events-uid', + 'recurrenceid' => null, + 'attendee' => 'mailto:attendee@foo.bar', + 'organizer' => 'mailto:organizer@foo.bar', + 'sequence' => null, + 'token' => 'TOKEN123', + 'expiration' => 420000, + ], 1337); + + $expected = <<<EOF +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:mailto:attendee@foo.bar +ORGANIZER:mailto:organizer@foo.bar +UID:this-is-the-events-uid +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19700101T002217Z +END:VEVENT +END:VCALENDAR + +EOF; + $expected = preg_replace('~\R~u', "\r\n", $expected); + + $called = false; + $this->responseServer->expects($this->once()) + ->method('handleITipMessage') + ->will($this->returnCallback(function(Message $iTipMessage) use (&$called, $expected) { + $called = true; + $this->assertEquals('this-is-the-events-uid', $iTipMessage->uid); + $this->assertEquals('VEVENT', $iTipMessage->component); + $this->assertEquals('REPLY', $iTipMessage->method); + $this->assertEquals(null, $iTipMessage->sequence); + $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender); + $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient); + + $iTipMessage->scheduleStatus = '1.2;Message delivered locally'; + + $this->assertEquals($expected, $iTipMessage->message->serialize()); + })); + + + + $response = $this->controller->accept('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-success', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + $this->assertTrue($called); + } + + public function testAcceptSequence() { + $this->buildQueryExpects('TOKEN123', [ + 'id' => 0, + 'uid' => 'this-is-the-events-uid', + 'recurrenceid' => null, + 'attendee' => 'mailto:attendee@foo.bar', + 'organizer' => 'mailto:organizer@foo.bar', + 'sequence' => 1337, + 'token' => 'TOKEN123', + 'expiration' => 420000, + ], 1337); + + $expected = <<<EOF +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:mailto:attendee@foo.bar +ORGANIZER:mailto:organizer@foo.bar +UID:this-is-the-events-uid +SEQUENCE:1337 +REQUEST-STATUS:2.0;Success +DTSTAMP:19700101T002217Z +END:VEVENT +END:VCALENDAR + +EOF; + $expected = preg_replace('~\R~u', "\r\n", $expected); + + $called = false; + $this->responseServer->expects($this->once()) + ->method('handleITipMessage') + ->will($this->returnCallback(function(Message $iTipMessage) use (&$called, $expected) { + $called = true; + $this->assertEquals('this-is-the-events-uid', $iTipMessage->uid); + $this->assertEquals('VEVENT', $iTipMessage->component); + $this->assertEquals('REPLY', $iTipMessage->method); + $this->assertEquals(1337, $iTipMessage->sequence); + $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender); + $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient); + + $iTipMessage->scheduleStatus = '1.2;Message delivered locally'; + + $this->assertEquals($expected, $iTipMessage->message->serialize()); + })); + + + + $response = $this->controller->accept('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-success', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + $this->assertTrue($called); + } + + public function testAcceptRecurrenceId() { + $this->buildQueryExpects('TOKEN123', [ + 'id' => 0, + 'uid' => 'this-is-the-events-uid', + 'recurrenceid' => "RECURRENCE-ID;TZID=Europe/Berlin:20180726T150000\n", + 'attendee' => 'mailto:attendee@foo.bar', + 'organizer' => 'mailto:organizer@foo.bar', + 'sequence' => null, + 'token' => 'TOKEN123', + 'expiration' => 420000, + ], 1337); + + $expected = <<<EOF +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:mailto:attendee@foo.bar +ORGANIZER:mailto:organizer@foo.bar +UID:this-is-the-events-uid +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +RECURRENCE-ID;TZID=Europe/Berlin:20180726T150000 +DTSTAMP:19700101T002217Z +END:VEVENT +END:VCALENDAR + +EOF; + $expected = preg_replace('~\R~u', "\r\n", $expected); + + $called = false; + $this->responseServer->expects($this->once()) + ->method('handleITipMessage') + ->will($this->returnCallback(function(Message $iTipMessage) use (&$called, $expected) { + $called = true; + $this->assertEquals('this-is-the-events-uid', $iTipMessage->uid); + $this->assertEquals('VEVENT', $iTipMessage->component); + $this->assertEquals('REPLY', $iTipMessage->method); + $this->assertEquals(0, $iTipMessage->sequence); + $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender); + $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient); + + $iTipMessage->scheduleStatus = '1.2;Message delivered locally'; + + $this->assertEquals($expected, $iTipMessage->message->serialize()); + })); + + + + $response = $this->controller->accept('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-success', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + $this->assertTrue($called); + } + + public function testAcceptTokenNotFound() { + $this->buildQueryExpects('TOKEN123', null, 1337); + + $response = $this->controller->accept('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-error', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + } + + public function testAcceptExpiredToken() { + $this->buildQueryExpects('TOKEN123', [ + 'id' => 0, + 'uid' => 'this-is-the-events-uid', + 'recurrenceid' => null, + 'attendee' => 'mailto:attendee@foo.bar', + 'organizer' => 'mailto:organizer@foo.bar', + 'sequence' => null, + 'token' => 'TOKEN123', + 'expiration' => 42, + ], 1337); + + $response = $this->controller->accept('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-error', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + } + + public function testDecline() { + $this->buildQueryExpects('TOKEN123', [ + 'id' => 0, + 'uid' => 'this-is-the-events-uid', + 'recurrenceid' => null, + 'attendee' => 'mailto:attendee@foo.bar', + 'organizer' => 'mailto:organizer@foo.bar', + 'sequence' => null, + 'token' => 'TOKEN123', + 'expiration' => 420000, + ], 1337); + + $expected = <<<EOF +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +BEGIN:VEVENT +ATTENDEE;PARTSTAT=DECLINED:mailto:attendee@foo.bar +ORGANIZER:mailto:organizer@foo.bar +UID:this-is-the-events-uid +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19700101T002217Z +END:VEVENT +END:VCALENDAR + +EOF; + $expected = preg_replace('~\R~u', "\r\n", $expected); + + $called = false; + $this->responseServer->expects($this->once()) + ->method('handleITipMessage') + ->will($this->returnCallback(function(Message $iTipMessage) use (&$called, $expected) { + $called = true; + $this->assertEquals('this-is-the-events-uid', $iTipMessage->uid); + $this->assertEquals('VEVENT', $iTipMessage->component); + $this->assertEquals('REPLY', $iTipMessage->method); + $this->assertEquals(null, $iTipMessage->sequence); + $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender); + $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient); + + $iTipMessage->scheduleStatus = '1.2;Message delivered locally'; + + $this->assertEquals($expected, $iTipMessage->message->serialize()); + })); + + + + $response = $this->controller->decline('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-success', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + $this->assertTrue($called); + } + + public function testOptions() { + $response = $this->controller->options('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-options', $response->getTemplateName()); + $this->assertEquals(['token' => 'TOKEN123'], $response->getParams()); + } + + public function testProcessMoreOptionsResult() { + $this->request->expects($this->at(0)) + ->method('getParam') + ->with('partStat') + ->will($this->returnValue('TENTATIVE')); + $this->request->expects($this->at(1)) + ->method('getParam') + ->with('guests') + ->will($this->returnValue('7')); + $this->request->expects($this->at(2)) + ->method('getParam') + ->with('comment') + ->will($this->returnValue('Foo bar Bli blub')); + + $this->buildQueryExpects('TOKEN123', [ + 'id' => 0, + 'uid' => 'this-is-the-events-uid', + 'recurrenceid' => null, + 'attendee' => 'mailto:attendee@foo.bar', + 'organizer' => 'mailto:organizer@foo.bar', + 'sequence' => null, + 'token' => 'TOKEN123', + 'expiration' => 420000, + ], 1337); + + $expected = <<<EOF +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Nextcloud/Nextcloud CalDAV Server//EN +METHOD:REPLY +BEGIN:VEVENT +ATTENDEE;PARTSTAT=TENTATIVE;X-RESPONSE-COMMENT=Foo bar Bli blub;X-NUM-GUEST + S=7:mailto:attendee@foo.bar +ORGANIZER:mailto:organizer@foo.bar +UID:this-is-the-events-uid +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19700101T002217Z +COMMENT:Foo bar Bli blub +END:VEVENT +END:VCALENDAR + +EOF; + $expected = preg_replace('~\R~u', "\r\n", $expected); + + $called = false; + $this->responseServer->expects($this->once()) + ->method('handleITipMessage') + ->will($this->returnCallback(function(Message $iTipMessage) use (&$called, $expected) { + $called = true; + $this->assertEquals('this-is-the-events-uid', $iTipMessage->uid); + $this->assertEquals('VEVENT', $iTipMessage->component); + $this->assertEquals('REPLY', $iTipMessage->method); + $this->assertEquals(null, $iTipMessage->sequence); + $this->assertEquals('mailto:attendee@foo.bar', $iTipMessage->sender); + $this->assertEquals('mailto:organizer@foo.bar', $iTipMessage->recipient); + + $iTipMessage->scheduleStatus = '1.2;Message delivered locally'; + + $this->assertEquals($expected, $iTipMessage->message->serialize()); + })); + + + + $response = $this->controller->processMoreOptionsResult('TOKEN123'); + $this->assertInstanceOf(TemplateResponse::class, $response); + $this->assertEquals('schedule-response-success', $response->getTemplateName()); + $this->assertEquals([], $response->getParams()); + $this->assertTrue($called); + } + + private function buildQueryExpects($token, $return, $time) { + $queryBuilder = $this->createMock(IQueryBuilder::class); + $stmt = $this->createMock(\Doctrine\DBAL\Driver\Statement::class); + $expr = $this->createMock(\OCP\DB\QueryBuilder\IExpressionBuilder::class); + + $this->dbConnection->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + $queryBuilder->method('expr') + ->will($this->returnValue($expr)); + $queryBuilder->method('createNamedParameter') + ->will($this->returnValueMap([ + [$token, \PDO::PARAM_STR, null, 'namedParameterToken'] + ])); + + $stmt->expects($this->once()) + ->method('fetch') + ->with(\PDO::FETCH_ASSOC) + ->will($this->returnValue($return)); + + $expr->expects($this->once()) + ->method('eq') + ->with('token', 'namedParameterToken') + ->will($this->returnValue('EQ STATEMENT')); + + $this->dbConnection->expects($this->once()) + ->method('getQueryBuilder') + ->with() + ->will($this->returnValue($queryBuilder)); + + $queryBuilder->expects($this->at(0)) + ->method('select') + ->with('*') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(1)) + ->method('from') + ->with('calendar_invitations') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(4)) + ->method('where') + ->with('EQ STATEMENT') + ->will($this->returnValue($queryBuilder)); + $queryBuilder->expects($this->at(5)) + ->method('execute') + ->with() + ->will($this->returnValue($stmt)); + + $this->timeFactory->method('getTime') + ->will($this->returnValue($time)); + } +} diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js index c3c673a8a9e..c4a9c146dfb 100644 --- a/apps/encryption/l10n/fr.js +++ b/apps/encryption/l10n/fr.js @@ -31,6 +31,8 @@ OC.L10N.register( "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ", "Default encryption module" : "Module de chiffrement par défaut", + "Default encryption module for server-side encryption" : "Module de chiffrement par défaut pour le chiffrement côté serveur", + "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Pour utiliser ce module de chiffrement, vous devez activer le chiffrement côté serveur dans les paramètres d'administration. Une fois activé, ce module chiffrera tous vos fichiers de manière transparente. Le chiffrement est basé sur des clés AES 256 bits.\nLe module ne touchera pas les fichiers existants, seuls les nouveaux fichiers seront chiffrés. Une fois le chiffrement côté serveur activé, il n'est pas possible de désactiver le chiffrement et de revenir à un système non chiffré.\n\t\tVeuillez lire la documentation pour connaître toutes les implications avant de vous décider à activer le chiffrement côté serveur.", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n%s\n\nVeuillez suivre ces instructions :\n\n1. Connectez-vous à l'interface web et trouvez la section \"Module de chiffrement de base d'\" dans vos paramètres personnels;\n\n2. Entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\";\n\n3. Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\";\n\n4. Validez en cliquant sur le bouton \"Mettre à jour le mot de passe de votre clef privée\".\n", "The share will expire on %s." : "Le partage expirera le %s.", "Cheers!" : "À bientôt !", diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json index 9f0d72e39e9..a73cb2f39bf 100644 --- a/apps/encryption/l10n/fr.json +++ b/apps/encryption/l10n/fr.json @@ -29,6 +29,8 @@ "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ", "Default encryption module" : "Module de chiffrement par défaut", + "Default encryption module for server-side encryption" : "Module de chiffrement par défaut pour le chiffrement côté serveur", + "In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Pour utiliser ce module de chiffrement, vous devez activer le chiffrement côté serveur dans les paramètres d'administration. Une fois activé, ce module chiffrera tous vos fichiers de manière transparente. Le chiffrement est basé sur des clés AES 256 bits.\nLe module ne touchera pas les fichiers existants, seuls les nouveaux fichiers seront chiffrés. Une fois le chiffrement côté serveur activé, il n'est pas possible de désactiver le chiffrement et de revenir à un système non chiffré.\n\t\tVeuillez lire la documentation pour connaître toutes les implications avant de vous décider à activer le chiffrement côté serveur.", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n%s\n\nVeuillez suivre ces instructions :\n\n1. Connectez-vous à l'interface web et trouvez la section \"Module de chiffrement de base d'\" dans vos paramètres personnels;\n\n2. Entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\";\n\n3. Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\";\n\n4. Validez en cliquant sur le bouton \"Mettre à jour le mot de passe de votre clef privée\".\n", "The share will expire on %s." : "Le partage expirera le %s.", "Cheers!" : "À bientôt !", diff --git a/apps/encryption/l10n/ja.js b/apps/encryption/l10n/ja.js index 35fd7b72f06..ddcc2857738 100644 --- a/apps/encryption/l10n/ja.js +++ b/apps/encryption/l10n/ja.js @@ -31,6 +31,7 @@ OC.L10N.register( "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Default encryption module" : "デフォルトの暗号化モジュール", + "Default encryption module for server-side encryption" : "サーバーサイド暗号化のデフォルトの暗号化モジュール", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", diff --git a/apps/encryption/l10n/ja.json b/apps/encryption/l10n/ja.json index 7b898829e2c..d08d34450cb 100644 --- a/apps/encryption/l10n/ja.json +++ b/apps/encryption/l10n/ja.json @@ -29,6 +29,7 @@ "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを復号化できません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "このファイルを読み取ることができません、共有ファイルの可能性があります。ファイルの所有者にお願いして、ファイルを共有しなおしてもらってください。", "Default encryption module" : "デフォルトの暗号化モジュール", + "Default encryption module for server-side encryption" : "サーバーサイド暗号化のデフォルトの暗号化モジュール", "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "こんにちは\n\n管理者がサーバーサイド暗号化を有効にしました。'%s'というパスワードであなたのファイルが暗号化されました。\n\nWeb画面からログインして、個人設定画面の'基本暗号化モジュール' セクションにいき、暗号化パスワードの更新をお願いします。 '旧ログインパスワード'部分に上記パスワードを入力し、現在のログインパスワードで更新します。\n", "The share will expire on %s." : "共有は %s で有効期限が切れます。", "Cheers!" : "それでは!", diff --git a/apps/federatedfilesharing/l10n/de.js b/apps/federatedfilesharing/l10n/de.js index 6295f462b21..1e599f34f91 100644 --- a/apps/federatedfilesharing/l10n/de.js +++ b/apps/federatedfilesharing/l10n/de.js @@ -33,6 +33,7 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID", "Sharing" : "Teilen", "Federated file sharing" : "Federated Datei-Freigabe", + "Provide federated file sharing across servers" : "Bietet Federated Datei-Freigaben über Servergrenzen hinweg", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", diff --git a/apps/federatedfilesharing/l10n/de.json b/apps/federatedfilesharing/l10n/de.json index 1f6cb7a605b..320af86e7d5 100644 --- a/apps/federatedfilesharing/l10n/de.json +++ b/apps/federatedfilesharing/l10n/de.json @@ -31,6 +31,7 @@ "Share with me through my #Nextcloud Federated Cloud ID" : "Teile mit mir über meine #Nextcloud Federated-Cloud-ID", "Sharing" : "Teilen", "Federated file sharing" : "Federated Datei-Freigabe", + "Provide federated file sharing across servers" : "Bietet Federated Datei-Freigaben über Servergrenzen hinweg", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", diff --git a/apps/federatedfilesharing/l10n/de_DE.js b/apps/federatedfilesharing/l10n/de_DE.js index c5004d64bbb..34ddad87d82 100644 --- a/apps/federatedfilesharing/l10n/de_DE.js +++ b/apps/federatedfilesharing/l10n/de_DE.js @@ -33,6 +33,7 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID" : "Teilen Sie mit mir über meine #Nextcloud Federated-Cloud-ID", "Sharing" : "Teilen", "Federated file sharing" : "Federated Datei-Freigabe", + "Provide federated file sharing across servers" : "Bietet Federated Datei-Freigaben über Servergrenzen hinweg", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", diff --git a/apps/federatedfilesharing/l10n/de_DE.json b/apps/federatedfilesharing/l10n/de_DE.json index 1e26ed0195d..8143801d533 100644 --- a/apps/federatedfilesharing/l10n/de_DE.json +++ b/apps/federatedfilesharing/l10n/de_DE.json @@ -31,6 +31,7 @@ "Share with me through my #Nextcloud Federated Cloud ID" : "Teilen Sie mit mir über meine #Nextcloud Federated-Cloud-ID", "Sharing" : "Teilen", "Federated file sharing" : "Federated Datei-Freigabe", + "Provide federated file sharing across servers" : "Bietet Federated Datei-Freigaben über Servergrenzen hinweg", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "Open documentation" : "Dokumentation öffnen", "Adjust how people can share between servers." : "Definiere wie die Benutzer Inhalte mit anderen Servern teilen können.", diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js index db9e9ac5ad3..ce74278f080 100644 --- a/apps/federatedfilesharing/l10n/fr.js +++ b/apps/federatedfilesharing/l10n/fr.js @@ -33,6 +33,7 @@ OC.L10N.register( "Share with me through my #Nextcloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant de Cloud Fédéré #Nextcloud", "Sharing" : "Partage", "Federated file sharing" : "Partage de fichiers fédéré", + "Provide federated file sharing across servers" : "Fournir un partage de fichiers fédéré entre plusieurs serveurs", "Federated Cloud Sharing" : "Partage Cloud Fédéré", "Open documentation" : "Voir la documentation", "Adjust how people can share between servers." : "Réglez comment les personnes peuvent partager entre les serveurs.", diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json index c634fabf8d1..e6875aefebc 100644 --- a/apps/federatedfilesharing/l10n/fr.json +++ b/apps/federatedfilesharing/l10n/fr.json @@ -31,6 +31,7 @@ "Share with me through my #Nextcloud Federated Cloud ID" : "Partagez avec moi grâce à mon identifiant de Cloud Fédéré #Nextcloud", "Sharing" : "Partage", "Federated file sharing" : "Partage de fichiers fédéré", + "Provide federated file sharing across servers" : "Fournir un partage de fichiers fédéré entre plusieurs serveurs", "Federated Cloud Sharing" : "Partage Cloud Fédéré", "Open documentation" : "Voir la documentation", "Adjust how people can share between servers." : "Réglez comment les personnes peuvent partager entre les serveurs.", diff --git a/apps/federatedfilesharing/l10n/it.js b/apps/federatedfilesharing/l10n/it.js index bb29a1920a7..78c1f519964 100644 --- a/apps/federatedfilesharing/l10n/it.js +++ b/apps/federatedfilesharing/l10n/it.js @@ -18,6 +18,7 @@ OC.L10N.register( "Couldn't establish a federated share, maybe the password was wrong." : "Impossibile stabilire una condivisione federata, forse la password non è corretta.", "Federated Share request sent, you will receive an invitation. Check your notifications." : "Richiesta della condivisione federata inviata, riceverai un invito. Controlla le tue notifiche.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Impossibile stabilire una condivisione federata, sembra che il server da federare sia troppo datato (Nextcloud <= 9).", + "It is not allowed to send federated group shares from this server." : "Non è consentito inviare condivisioni di gruppo federate da questo server.", "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s", "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente", "File is already shared with %s" : "Il file è già condiviso con %s", @@ -39,6 +40,8 @@ OC.L10N.register( "Adjust how people can share between servers." : "Regola come le persone possono condividere tra i server.", "Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server", "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server", + "Allow users on this server to send shares to groups on other servers" : "Consenti agli utenti su questo server di inviare condivisioni a gruppi su altri server", + "Allow users on this server to receive group shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni di gruppo da altri server", "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica", "Allow users to publish their data to a global and public address book" : "Consenti agli utenti di pubblicare i propri dati in una rubrica globale e pubblica", "Federated Cloud" : "Cloud federata", diff --git a/apps/federatedfilesharing/l10n/it.json b/apps/federatedfilesharing/l10n/it.json index dee19eb3b09..ce4dafdf86f 100644 --- a/apps/federatedfilesharing/l10n/it.json +++ b/apps/federatedfilesharing/l10n/it.json @@ -16,6 +16,7 @@ "Couldn't establish a federated share, maybe the password was wrong." : "Impossibile stabilire una condivisione federata, forse la password non è corretta.", "Federated Share request sent, you will receive an invitation. Check your notifications." : "Richiesta della condivisione federata inviata, riceverai un invito. Controlla le tue notifiche.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Impossibile stabilire una condivisione federata, sembra che il server da federare sia troppo datato (Nextcloud <= 9).", + "It is not allowed to send federated group shares from this server." : "Non è consentito inviare condivisioni di gruppo federate da questo server.", "Sharing %s failed, because this item is already shared with %s" : "Condivisione di %s non riuscita, poiché l'oggetto è già condiviso con %s", "Not allowed to create a federated share with the same user" : "Non è consentito creare una condivisione federata con lo stesso utente", "File is already shared with %s" : "Il file è già condiviso con %s", @@ -37,6 +38,8 @@ "Adjust how people can share between servers." : "Regola come le persone possono condividere tra i server.", "Allow users on this server to send shares to other servers" : "Consenti agli utenti su questo server di inviare condivisioni ad altri server", "Allow users on this server to receive shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni da altri server", + "Allow users on this server to send shares to groups on other servers" : "Consenti agli utenti su questo server di inviare condivisioni a gruppi su altri server", + "Allow users on this server to receive group shares from other servers" : "Consenti agli utenti su questo server di ricevere condivisioni di gruppo da altri server", "Search global and public address book for users" : "Cerca gli utenti nella rubrica globale e pubblica", "Allow users to publish their data to a global and public address book" : "Consenti agli utenti di pubblicare i propri dati in una rubrica globale e pubblica", "Federated Cloud" : "Cloud federata", diff --git a/apps/federatedfilesharing/l10n/ja.js b/apps/federatedfilesharing/l10n/ja.js index 0b00e636dc8..d34deeb08e9 100644 --- a/apps/federatedfilesharing/l10n/ja.js +++ b/apps/federatedfilesharing/l10n/ja.js @@ -8,7 +8,7 @@ OC.L10N.register( "Cancel" : "キャンセル", "Add remote share" : "リモート共有を追加", "Copy" : "コピー", - "Copied!" : "コピーされました!", + "Copied!" : "コピーしました!", "Not supported!" : "サポートされていません!", "Press ⌘-C to copy." : "⌘+Cを押してコピーします。", "Press Ctrl-C to copy." : "Ctrl+Cを押してコピーします。", @@ -34,11 +34,11 @@ OC.L10N.register( "Federated file sharing" : "連携共有", "Federated Cloud Sharing" : "統合されたクラウド共有", "Open documentation" : "ドキュメントを開く", - "Adjust how people can share between servers." : "サーバー間でどうやって共有するかを調整する", + "Adjust how people can share between servers." : "サーバー間でどうやって共有するかを調整します。", "Allow users on this server to send shares to other servers" : "ユーザーがこのサーバーから他のサーバーに共有することを許可する", "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する", "Search global and public address book for users" : "グローバルまたはユーザーの公開アドレス帳を検索する", - "Allow users to publish their data to a global and public address book" : "グローバルアドレス帳のグローバルな公開をユーザーに許可します", + "Allow users to publish their data to a global and public address book" : "公開アドレス帳をグローバルに公開することをユーザーに許可する", "Federated Cloud" : "クラウド共有", "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud 、ownCloud、Pydio を使う人とは誰とでも共有できます。クラウド連携IDを共有ダイアログに入力するだけです。例:person@cloud.example.com", "Your Federated Cloud ID:" : "あなたのクラウド共有ID:", diff --git a/apps/federatedfilesharing/l10n/ja.json b/apps/federatedfilesharing/l10n/ja.json index d6bba4565dc..c4a6782a83d 100644 --- a/apps/federatedfilesharing/l10n/ja.json +++ b/apps/federatedfilesharing/l10n/ja.json @@ -6,7 +6,7 @@ "Cancel" : "キャンセル", "Add remote share" : "リモート共有を追加", "Copy" : "コピー", - "Copied!" : "コピーされました!", + "Copied!" : "コピーしました!", "Not supported!" : "サポートされていません!", "Press ⌘-C to copy." : "⌘+Cを押してコピーします。", "Press Ctrl-C to copy." : "Ctrl+Cを押してコピーします。", @@ -32,11 +32,11 @@ "Federated file sharing" : "連携共有", "Federated Cloud Sharing" : "統合されたクラウド共有", "Open documentation" : "ドキュメントを開く", - "Adjust how people can share between servers." : "サーバー間でどうやって共有するかを調整する", + "Adjust how people can share between servers." : "サーバー間でどうやって共有するかを調整します。", "Allow users on this server to send shares to other servers" : "ユーザーがこのサーバーから他のサーバーに共有することを許可する", "Allow users on this server to receive shares from other servers" : "ユーザーが他のサーバーからこのサーバーに共有することを許可する", "Search global and public address book for users" : "グローバルまたはユーザーの公開アドレス帳を検索する", - "Allow users to publish their data to a global and public address book" : "グローバルアドレス帳のグローバルな公開をユーザーに許可します", + "Allow users to publish their data to a global and public address book" : "公開アドレス帳をグローバルに公開することをユーザーに許可する", "Federated Cloud" : "クラウド共有", "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Nextcloud 、ownCloud、Pydio を使う人とは誰とでも共有できます。クラウド連携IDを共有ダイアログに入力するだけです。例:person@cloud.example.com", "Your Federated Cloud ID:" : "あなたのクラウド共有ID:", diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js index cc397f93905..d9013dd4fc5 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.js +++ b/apps/federatedfilesharing/l10n/pt_BR.js @@ -18,6 +18,7 @@ OC.L10N.register( "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Não foi possível estabelecer um compartilhamento federado, parece que o servidor a se federar é muito antigo (Nextcloud <= 9).", + "It is not allowed to send federated group shares from this server." : "Não é permitido enviar compartilhamentos de grupos federados deste servidor.", "Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou porque este item já está compartilhado com %s", "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário", "File is already shared with %s" : "O arquivo já é compartilhado com %s", @@ -39,6 +40,8 @@ OC.L10N.register( "Adjust how people can share between servers." : "Ajustar como as pessoas podem compartilhar entre servidores.", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que os usuários deste servidor recebam compartilhamentos de outros servidores", + "Allow users on this server to send shares to groups on other servers" : "Permitir que usuários deste servidor enviem compartilhamentos para grupos de outros servidores", + "Allow users on this server to receive group shares from other servers" : "Permitir que usuários deste servidor recebam compartilhamentos de grupos de outros servidores", "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público", "Allow users to publish their data to a global and public address book" : "Permitir que os usuários publiquem seus dados em um catálogo de endereços global e público", "Federated Cloud" : "Nuvem Federada", diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json index 28972c5f313..fc1fed37987 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.json +++ b/apps/federatedfilesharing/l10n/pt_BR.json @@ -16,6 +16,7 @@ "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", "Federated Share request sent, you will receive an invitation. Check your notifications." : "Solicitação de Compartilhamento Federado enviada, você receberá um convite. Verifique suas notificações.", "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Não foi possível estabelecer um compartilhamento federado, parece que o servidor a se federar é muito antigo (Nextcloud <= 9).", + "It is not allowed to send federated group shares from this server." : "Não é permitido enviar compartilhamentos de grupos federados deste servidor.", "Sharing %s failed, because this item is already shared with %s" : "Compartilhamento %s falhou porque este item já está compartilhado com %s", "Not allowed to create a federated share with the same user" : "Não é permitido criar um compartilhamento federado com o mesmo usuário", "File is already shared with %s" : "O arquivo já é compartilhado com %s", @@ -37,6 +38,8 @@ "Adjust how people can share between servers." : "Ajustar como as pessoas podem compartilhar entre servidores.", "Allow users on this server to send shares to other servers" : "Permitir que os usuários deste servidor enviem compartilhamentos para outros servidores", "Allow users on this server to receive shares from other servers" : "Permitir que os usuários deste servidor recebam compartilhamentos de outros servidores", + "Allow users on this server to send shares to groups on other servers" : "Permitir que usuários deste servidor enviem compartilhamentos para grupos de outros servidores", + "Allow users on this server to receive group shares from other servers" : "Permitir que usuários deste servidor recebam compartilhamentos de grupos de outros servidores", "Search global and public address book for users" : "Procurar por usuários em catálogo de endereços global e público", "Allow users to publish their data to a global and public address book" : "Permitir que os usuários publiquem seus dados em um catálogo de endereços global e público", "Federated Cloud" : "Nuvem Federada", diff --git a/apps/federatedfilesharing/lib/AppInfo/Application.php b/apps/federatedfilesharing/lib/AppInfo/Application.php index 70347831211..73ac062be09 100644 --- a/apps/federatedfilesharing/lib/AppInfo/Application.php +++ b/apps/federatedfilesharing/lib/AppInfo/Application.php @@ -65,7 +65,8 @@ class Application extends App { $server->getURLGenerator(), $server->getCloudFederationFactory(), $server->getCloudFederationProviderManager(), - $server->getDatabaseConnection() + $server->getDatabaseConnection(), + $server->getGroupManager() ); }); @@ -145,7 +146,9 @@ class Application extends App { \OC::$server->getConfig(), \OC::$server->getUserManager(), \OC::$server->getCloudIdManager(), - $c->query(IConfig::class) + $c->query(IConfig::class), + \OC::$server->getCloudFederationProviderManager() + ); } diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index f81b826f12c..d1560d90ef5 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -30,6 +30,7 @@ namespace OCA\FederatedFileSharing; use OC\Share20\Share; +use OCP\Federation\ICloudFederationProviderManager; use OCP\Federation\ICloudIdManager; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Files\Folder; @@ -92,6 +93,12 @@ class FederatedShareProvider implements IShareProvider { /** @var \OCP\GlobalScale\IConfig */ private $gsConfig; + /** @var ICloudFederationProviderManager */ + private $cloudFederationProviderManager; + + /** @var array list of supported share types */ + private $supportedShareType = [\OCP\Share::SHARE_TYPE_REMOTE_GROUP, \OCP\Share::SHARE_TYPE_REMOTE]; + /** * DefaultShareProvider constructor. * @@ -106,6 +113,7 @@ class FederatedShareProvider implements IShareProvider { * @param IUserManager $userManager * @param ICloudIdManager $cloudIdManager * @param \OCP\GlobalScale\IConfig $globalScaleConfig + * @param ICloudFederationProviderManager $cloudFederationProviderManager */ public function __construct( IDBConnection $connection, @@ -118,7 +126,8 @@ class FederatedShareProvider implements IShareProvider { IConfig $config, IUserManager $userManager, ICloudIdManager $cloudIdManager, - \OCP\GlobalScale\IConfig $globalScaleConfig + \OCP\GlobalScale\IConfig $globalScaleConfig, + ICloudFederationProviderManager $cloudFederationProviderManager ) { $this->dbConnection = $connection; $this->addressHandler = $addressHandler; @@ -131,6 +140,7 @@ class FederatedShareProvider implements IShareProvider { $this->userManager = $userManager; $this->cloudIdManager = $cloudIdManager; $this->gsConfig = $globalScaleConfig; + $this->cloudFederationProviderManager = $cloudFederationProviderManager; } /** @@ -157,12 +167,23 @@ class FederatedShareProvider implements IShareProvider { $itemType = $share->getNodeType(); $permissions = $share->getPermissions(); $sharedBy = $share->getSharedBy(); + $shareType = $share->getShareType(); + + if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE_GROUP && + !$this->isOutgoingServer2serverGroupShareEnabled() + ) { + $message = 'It is not allowed to send federated group shares from this server.'; + $message_t = $this->l->t('It is not allowed to send federated group shares from this server.'); + $this->logger->debug($message, ['app' => 'Federated File Sharing']); + throw new \Exception($message_t); + } /* * Check if file is not already shared with the remote user */ - $alreadyShared = $this->getSharedWith($shareWith, self::SHARE_TYPE_REMOTE, $share->getNode(), 1, 0); - if (!empty($alreadyShared)) { + $alreadyShared = $this->getSharedWith($shareWith, \OCP\Share::SHARE_TYPE_REMOTE, $share->getNode(), 1, 0); + $alreadySharedGroup = $this->getSharedWith($shareWith, \OCP\Share::SHARE_TYPE_REMOTE_GROUP, $share->getNode(), 1, 0); + if (!empty($alreadyShared) || !empty($alreadySharedGroup)) { $message = 'Sharing %s failed, because this item is already shared with %s'; $message_t = $this->l->t('Sharing %s failed, because this item is already shared with %s', array($share->getNode()->getName(), $shareWith)); $this->logger->debug(sprintf($message, $share->getNode()->getName(), $shareWith), ['app' => 'Federated File Sharing']); @@ -193,7 +214,7 @@ class FederatedShareProvider implements IShareProvider { if ($remoteShare) { try { $ownerCloudId = $this->cloudIdManager->getCloudId($remoteShare['owner'], $remoteShare['remote']); - $shareId = $this->addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $ownerCloudId->getId(), $permissions, 'tmp_token_' . time()); + $shareId = $this->addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $ownerCloudId->getId(), $permissions, 'tmp_token_' . time(), $shareType); $share->setId($shareId); list($token, $remoteId) = $this->askOwnerToReShare($shareWith, $share, $shareId); // remote share was create successfully if we get a valid token as return @@ -238,7 +259,8 @@ class FederatedShareProvider implements IShareProvider { $share->getSharedBy(), $share->getShareOwner(), $share->getPermissions(), - $token + $token, + $share->getShareType() ); $failure = false; @@ -258,7 +280,8 @@ class FederatedShareProvider implements IShareProvider { $share->getShareOwner(), $ownerCloudId->getId(), $share->getSharedBy(), - $sharedByFederatedId + $sharedByFederatedId, + $share->getShareType() ); if ($send === false) { @@ -342,12 +365,13 @@ class FederatedShareProvider implements IShareProvider { * @param string $uidOwner * @param int $permissions * @param string $token + * @param int $shareType * @return int */ - private function addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $uidOwner, $permissions, $token) { + private function addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $uidOwner, $permissions, $token, $shareType) { $qb = $this->dbConnection->getQueryBuilder(); $qb->insert('share') - ->setValue('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE)) + ->setValue('share_type', $qb->createNamedParameter($shareType)) ->setValue('item_type', $qb->createNamedParameter($itemType)) ->setValue('item_source', $qb->createNamedParameter($itemSource)) ->setValue('file_source', $qb->createNamedParameter($itemSource)) @@ -491,7 +515,7 @@ class FederatedShareProvider implements IShareProvider { $qb->select('*') ->from('share') ->where($qb->expr()->eq('parent', $qb->createNamedParameter($parent->getId()))) - ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE))) + ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY))) ->orderBy('id'); $cursor = $qb->execute(); @@ -640,7 +664,7 @@ class FederatedShareProvider implements IShareProvider { $qb->select('*') ->from('share'); - $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE))); + $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter($shareType))); /** * Reshares for this user are shares where they are the owner. @@ -697,7 +721,7 @@ class FederatedShareProvider implements IShareProvider { $qb->select('*') ->from('share') ->where($qb->expr()->eq('id', $qb->createNamedParameter($id))) - ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE))); + ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY))); $cursor = $qb->execute(); $data = $cursor->fetch(); @@ -725,10 +749,11 @@ class FederatedShareProvider implements IShareProvider { public function getSharesByPath(Node $path) { $qb = $this->dbConnection->getQueryBuilder(); + // get federated user shares $cursor = $qb->select('*') ->from('share') ->andWhere($qb->expr()->eq('file_source', $qb->createNamedParameter($path->getId()))) - ->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE))) + ->andWhere($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY))) ->execute(); $shares = []; @@ -761,7 +786,7 @@ class FederatedShareProvider implements IShareProvider { } $qb->setFirstResult($offset); - $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE))); + $qb->where($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY))); $qb->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId))); // Filter by node if provided @@ -792,7 +817,7 @@ class FederatedShareProvider implements IShareProvider { $cursor = $qb->select('*') ->from('share') - ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_REMOTE))) + ->where($qb->expr()->in('share_type', $qb->createNamedParameter($this->supportedShareType, IQueryBuilder::PARAM_INT_ARRAY))) ->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token))) ->execute(); @@ -967,6 +992,42 @@ class FederatedShareProvider implements IShareProvider { return ($result === 'yes'); } + + /** + * check if users from other Nextcloud instances are allowed to send federated group shares + * + * @return bool + */ + public function isOutgoingServer2serverGroupShareEnabled() { + if ($this->gsConfig->onlyInternalFederation()) { + return false; + } + $result = $this->config->getAppValue('files_sharing', 'outgoing_server2server_group_share_enabled', 'no'); + return ($result === 'yes'); + } + + /** + * check if users are allowed to receive federated group shares + * + * @return bool + */ + public function isIncomingServer2serverGroupShareEnabled() { + if ($this->gsConfig->onlyInternalFederation()) { + return false; + } + $result = $this->config->getAppValue('files_sharing', 'incoming_server2server_group_share_enabled', 'no'); + return ($result === 'yes'); + } + + /** + * check if federated group sharing is supported, therefore the OCM API need to be enabled + * + * @return bool + */ + public function isFederatedGroupSharingSupported() { + return $this->cloudFederationProviderManager->isReady(); + } + /** * Check if querying sharees on the lookup server is enabled * diff --git a/apps/federatedfilesharing/lib/Notifications.php b/apps/federatedfilesharing/lib/Notifications.php index fdba3e113d6..70733bc9e2c 100644 --- a/apps/federatedfilesharing/lib/Notifications.php +++ b/apps/federatedfilesharing/lib/Notifications.php @@ -88,11 +88,12 @@ class Notifications { * @param string $ownerFederatedId * @param string $sharedBy * @param string $sharedByFederatedId + * @param int $shareType (can be a remote user or group share) * @return bool * @throws \OC\HintException * @throws \OC\ServerNotAvailableException */ - public function sendRemoteShare($token, $shareWith, $name, $remote_id, $owner, $ownerFederatedId, $sharedBy, $sharedByFederatedId) { + public function sendRemoteShare($token, $shareWith, $name, $remote_id, $owner, $ownerFederatedId, $sharedBy, $sharedByFederatedId, $shareType) { list($user, $remote) = $this->addressHandler->splitUserRemote($shareWith); @@ -109,6 +110,7 @@ class Notifications { 'sharedBy' => $sharedBy, 'sharedByFederatedId' => $sharedByFederatedId, 'remote' => $local, + 'shareType' => $shareType ); $result = $this->tryHttpPostToShareEndpoint($remote, '', $fields); @@ -392,7 +394,7 @@ class Notifications { $fields['sharedByFederatedId'], $fields['sharedBy'], $fields['token'], - 'user', + $fields['shareType'], 'file' ); return $this->federationProviderManager->sendShare($share); @@ -406,6 +408,7 @@ class Notifications { 'sharedSecret' => $fields['token'], 'shareWith' => $fields['shareWith'], 'senderId' => $fields['localId'], + 'shareType' => $fields['shareType'], 'message' => 'Ask owner to reshare the file' ] ); diff --git a/apps/federatedfilesharing/lib/Settings/Admin.php b/apps/federatedfilesharing/lib/Settings/Admin.php index cbeaa167fff..aea7957a49f 100644 --- a/apps/federatedfilesharing/lib/Settings/Admin.php +++ b/apps/federatedfilesharing/lib/Settings/Admin.php @@ -58,6 +58,9 @@ class Admin implements ISettings { 'internalOnly' => $this->gsConfig->onlyInternalFederation(), 'outgoingServer2serverShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverShareEnabled(), 'incomingServer2serverShareEnabled' => $this->fedShareProvider->isIncomingServer2serverShareEnabled(), + 'federatedGroupSharingSupported' => $this->fedShareProvider->isFederatedGroupSharingSupported(), + 'outgoingServer2serverGroupShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverGroupShareEnabled(), + 'incomingServer2serverGroupShareEnabled' => $this->fedShareProvider->isIncomingServer2serverGroupShareEnabled(), 'lookupServerEnabled' => $this->fedShareProvider->isLookupServerQueriesEnabled(), 'lookupServerUploadEnabled' => $this->fedShareProvider->isLookupServerUploadEnabled(), ]; diff --git a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php index 00750f924ef..1d922ce60ba 100644 --- a/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php +++ b/apps/federatedfilesharing/lib/ocm/CloudFederationProviderFiles.php @@ -40,10 +40,12 @@ use OCP\Federation\ICloudFederationShare; use OCP\Federation\ICloudIdManager; use OCP\Files\NotFoundException; use OCP\IDBConnection; +use OCP\IGroupManager; use OCP\ILogger; use OCP\IURLGenerator; use OCP\IUserManager; use OCP\Notification\IManager as INotificationManager; +use OCP\Share; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IShare; use OCP\Util; @@ -86,6 +88,9 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { /** @var IDBConnection */ private $connection; + /** @var IGroupManager */ + private $groupManager; + /** * CloudFederationProvider constructor. * @@ -101,6 +106,7 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { * @param ICloudFederationFactory $cloudFederationFactory * @param ICloudFederationProviderManager $cloudFederationProviderManager * @param IDBConnection $connection + * @param IGroupManager $groupManager */ public function __construct(IAppManager $appManager, FederatedShareProvider $federatedShareProvider, @@ -113,7 +119,8 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { IURLGenerator $urlGenerator, ICloudFederationFactory $cloudFederationFactory, ICloudFederationProviderManager $cloudFederationProviderManager, - IDBConnection $connection + IDBConnection $connection, + IGroupManager $groupManager ) { $this->appManager = $appManager; $this->federatedShareProvider = $federatedShareProvider; @@ -127,6 +134,7 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { $this->cloudFederationFactory = $cloudFederationFactory; $this->cloudFederationProviderManager = $cloudFederationProviderManager; $this->connection = $connection; + $this->groupManager = $groupManager; } @@ -175,6 +183,7 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { $remoteId = $share->getProviderId(); $sharedByFederatedId = $share->getSharedBy(); $ownerFederatedId = $share->getOwner(); + $shareType = $this->mapShareTypeToNextcloud($share->getShareType()); // if no explicit information about the person who created the share was send // we assume that the share comes from the owner @@ -190,19 +199,25 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { } // FIXME this should be a method in the user management instead - $this->logger->debug('shareWith before, ' . $shareWith, ['app' => 'files_sharing']); - Util::emitHook( - '\OCA\Files_Sharing\API\Server2Server', - 'preLoginNameUsedAsUserName', - array('uid' => &$shareWith) - ); - $this->logger->debug('shareWith after, ' . $shareWith, ['app' => 'files_sharing']); + if ($shareType === Share::SHARE_TYPE_USER) { + $this->logger->debug('shareWith before, ' . $shareWith, ['app' => 'files_sharing']); + Util::emitHook( + '\OCA\Files_Sharing\API\Server2Server', + 'preLoginNameUsedAsUserName', + array('uid' => &$shareWith) + ); + $this->logger->debug('shareWith after, ' . $shareWith, ['app' => 'files_sharing']); - if (!$this->userManager->userExists($shareWith)) { - throw new ProviderCouldNotAddShareException('User does not exists', '',Http::STATUS_BAD_REQUEST); + if (!$this->userManager->userExists($shareWith)) { + throw new ProviderCouldNotAddShareException('User does not exists', '',Http::STATUS_BAD_REQUEST); + } + + \OC_Util::setupFS($shareWith); } - \OC_Util::setupFS($shareWith); + if ($shareType === Share::SHARE_TYPE_GROUP && !$this->groupManager->groupExists($shareWith)) { + throw new ProviderCouldNotAddShareException('Group does not exists', '',Http::STATUS_BAD_REQUEST); + } $externalManager = new \OCA\Files_Sharing\External\Manager( \OC::$server->getDatabaseConnection(), @@ -213,40 +228,37 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { \OC::$server->query(\OCP\OCS\IDiscoveryService::class), \OC::$server->getCloudFederationProviderManager(), \OC::$server->getCloudFederationFactory(), + \OC::$server->getGroupManager(), + \OC::$server->getUserManager(), $shareWith ); try { - $externalManager->addShare($remote, $token, '', $name, $owner, false, $shareWith, $remoteId); + $externalManager->addShare($remote, $token, '', $name, $owner, $shareType,false, $shareWith, $remoteId); $shareId = \OC::$server->getDatabaseConnection()->lastInsertId('*PREFIX*share_external'); - $event = $this->activityManager->generateEvent(); - $event->setApp('files_sharing') - ->setType('remote_share') - ->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED, [$ownerFederatedId, trim($name, '/')]) - ->setAffectedUser($shareWith) - ->setObject('remote_share', (int)$shareId, $name); - \OC::$server->getActivityManager()->publish($event); - - $notification = $this->notificationManager->createNotification(); - $notification->setApp('files_sharing') - ->setUser($shareWith) - ->setDateTime(new \DateTime()) - ->setObject('remote_share', $shareId) - ->setSubject('remote_share', [$ownerFederatedId, $sharedByFederatedId, trim($name, '/')]); - - $declineAction = $notification->createAction(); - $declineAction->setLabel('decline') - ->setLink($this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'DELETE'); - $notification->addAction($declineAction); - - $acceptAction = $notification->createAction(); - $acceptAction->setLabel('accept') - ->setLink($this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'POST'); - $notification->addAction($acceptAction); - - $this->notificationManager->notify($notification); - + if ($shareType === Share::SHARE_TYPE_USER) { + $event = $this->activityManager->generateEvent(); + $event->setApp('files_sharing') + ->setType('remote_share') + ->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED, [$ownerFederatedId, trim($name, '/')]) + ->setAffectedUser($shareWith) + ->setObject('remote_share', (int)$shareId, $name); + \OC::$server->getActivityManager()->publish($event); + $this->notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name); + } else { + $groupMembers = $this->groupManager->get($shareWith)->getUsers(); + foreach ($groupMembers as $user) { + $event = $this->activityManager->generateEvent(); + $event->setApp('files_sharing') + ->setType('remote_share') + ->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_RECEIVED, [$ownerFederatedId, trim($name, '/')]) + ->setAffectedUser($user->getUID()) + ->setObject('remote_share', (int)$shareId, $name); + \OC::$server->getActivityManager()->publish($event); + $this->notifyAboutNewShare($user->getUID(), $shareId, $ownerFederatedId, $sharedByFederatedId, $name); + } + } return $shareId; } catch (\Exception $e) { $this->logger->logException($e, [ @@ -298,6 +310,51 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { } /** + * map OCM share type (strings) to Nextcloud internal share types (integer) + * + * @param string $shareType + * @return int + */ + private function mapShareTypeToNextcloud($shareType) { + $result = Share::SHARE_TYPE_USER; + if ($shareType === 'group') { + $result = Share::SHARE_TYPE_GROUP; + } + + return $result; + } + + /** + * notify user about new federated share + * + * @param $shareWith + * @param $shareId + * @param $ownerFederatedId + * @param $sharedByFederatedId + * @param $name + */ + private function notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name) { + $notification = $this->notificationManager->createNotification(); + $notification->setApp('files_sharing') + ->setUser($shareWith) + ->setDateTime(new \DateTime()) + ->setObject('remote_share', $shareId) + ->setSubject('remote_share', [$ownerFederatedId, $sharedByFederatedId, trim($name, '/')]); + + $declineAction = $notification->createAction(); + $declineAction->setLabel('decline') + ->setLink($this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'DELETE'); + $notification->addAction($declineAction); + + $acceptAction = $notification->createAction(); + $acceptAction->setLabel('accept') + ->setLink($this->urlGenerator->getAbsoluteURL($this->urlGenerator->linkTo('', 'ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/' . $shareId)), 'POST'); + $notification->addAction($acceptAction); + + $this->notificationManager->notify($notification); + } + + /** * process notification that the recipient accepted a share * * @param string $id @@ -521,25 +578,32 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { $qb->execute(); - if ($share['accepted']) { - $path = trim($mountpoint, '/'); - } else { - $path = trim($share['name'], '/'); - } + // delete all child in case of a group share + $qb = $this->connection->getQueryBuilder(); + $qb->delete('share_external') + ->where($qb->expr()->eq('parent', $qb->createNamedParameter((int)$share['id']))); + $qb->execute(); + + if ((int)$share['share_type'] === Share::SHARE_TYPE_USER) { + if ($share['accepted']) { + $path = trim($mountpoint, '/'); + } else { + $path = trim($share['name'], '/'); + } + $notification = $this->notificationManager->createNotification(); + $notification->setApp('files_sharing') + ->setUser($share['user']) + ->setObject('remote_share', (int)$share['id']); + $this->notificationManager->markProcessed($notification); - $notification = $this->notificationManager->createNotification(); - $notification->setApp('files_sharing') - ->setUser($share['user']) - ->setObject('remote_share', (int)$share['id']); - $this->notificationManager->markProcessed($notification); - - $event = $this->activityManager->generateEvent(); - $event->setApp('files_sharing') - ->setType('remote_share') - ->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_UNSHARED, [$owner->getId(), $path]) - ->setAffectedUser($user) - ->setObject('remote_share', (int)$share['id'], $path); - \OC::$server->getActivityManager()->publish($event); + $event = $this->activityManager->generateEvent(); + $event->setApp('files_sharing') + ->setType('remote_share') + ->setSubject(RemoteShares::SUBJECT_REMOTE_SHARE_UNSHARED, [$owner->getId(), $path]) + ->setAffectedUser($user) + ->setObject('remote_share', (int)$share['id'], $path); + \OC::$server->getActivityManager()->publish($event); + } } return []; @@ -771,6 +835,6 @@ class CloudFederationProviderFiles implements ICloudFederationProvider { * @since 14.0.0 */ public function getSupportedShareTypes() { - return ['user']; + return ['user', 'group']; } } diff --git a/apps/federatedfilesharing/templates/settings-admin.php b/apps/federatedfilesharing/templates/settings-admin.php index 187d75f21ac..1b9b88dc03e 100644 --- a/apps/federatedfilesharing/templates/settings-admin.php +++ b/apps/federatedfilesharing/templates/settings-admin.php @@ -23,7 +23,6 @@ script('federatedfilesharing', 'settings-admin'); <?php p($l->t('Allow users on this server to send shares to other servers'));?> </label> </p> - <p> <input type="checkbox" name="incoming_server2server_share_enabled" id="incomingServer2serverShareEnabled" class="checkbox" value="1" <?php if ($_['incomingServer2serverShareEnabled']) print_unescaped('checked="checked"'); ?> /> @@ -31,6 +30,22 @@ script('federatedfilesharing', 'settings-admin'); <?php p($l->t('Allow users on this server to receive shares from other servers'));?> </label><br/> </p> + <?php if($_['federatedGroupSharingSupported']): ?> + <p> + <input type="checkbox" name="outgoing_server2server_group_share_enabled" id="outgoingServer2serverGroupShareEnabled" class="checkbox" + value="1" <?php if ($_['outgoingServer2serverGroupShareEnabled']) print_unescaped('checked="checked"'); ?> /> + <label for="outgoingServer2serverGroupShareEnabled"> + <?php p($l->t('Allow users on this server to send shares to groups on other servers'));?> + </label> + </p> + <p> + <input type="checkbox" name="incoming_server2server_group_share_enabled" id="incomingServer2serverGroupShareEnabled" class="checkbox" + value="1" <?php if ($_['incomingServer2serverGroupShareEnabled']) print_unescaped('checked="checked"'); ?> /> + <label for="incomingServer2serverGroupShareEnabled"> + <?php p($l->t('Allow users on this server to receive group shares from other servers'));?> + </label><br/> + </p> + <?php endif; ?> <p> <input type="checkbox" name="lookupServerEnabled" id="lookupServerEnabled" class="checkbox" value="1" <?php if ($_['lookupServerEnabled']) print_unescaped('checked="checked"'); ?> /> diff --git a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php index 52266383b36..98ad8832fa1 100644 --- a/apps/federatedfilesharing/tests/FederatedShareProviderTest.php +++ b/apps/federatedfilesharing/tests/FederatedShareProviderTest.php @@ -33,6 +33,7 @@ use OCA\FederatedFileSharing\AddressHandler; use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\FederatedFileSharing\Notifications; use OCA\FederatedFileSharing\TokenHandler; +use OCP\Federation\ICloudFederationProviderManager; use OCP\Federation\ICloudIdManager; use OCP\Files\File; use OCP\Files\IRootFolder; @@ -80,6 +81,8 @@ class FederatedShareProviderTest extends \Test\TestCase { /** @var ICloudIdManager */ private $cloudIdManager; + /** @var \PHPUnit_Framework_MockObject_MockObject|ICloudFederationProviderManager */ + private $cloudFederationProviderManager; public function setUp() { parent::setUp(); @@ -107,6 +110,8 @@ class FederatedShareProviderTest extends \Test\TestCase { $this->userManager->expects($this->any())->method('userExists')->willReturn(true); + $this->cloudFederationProviderManager = $this->createMock(ICloudFederationProviderManager::class); + $this->provider = new FederatedShareProvider( $this->connection, $this->addressHandler, @@ -118,7 +123,8 @@ class FederatedShareProviderTest extends \Test\TestCase { $this->config, $this->userManager, $this->cloudIdManager, - $this->gsConfig + $this->gsConfig, + $this->cloudFederationProviderManager ); $this->shareManager = \OC::$server->getShareManager(); @@ -141,6 +147,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->tokenHandler->method('generateToken')->willReturn('token'); @@ -212,6 +219,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->tokenHandler->method('generateToken')->willReturn('token'); @@ -268,6 +276,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->tokenHandler->method('generateToken')->willReturn('token'); @@ -367,6 +376,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->tokenHandler->method('generateToken')->willReturn('token'); @@ -417,7 +427,8 @@ class FederatedShareProviderTest extends \Test\TestCase { $this->config, $this->userManager, $this->cloudIdManager, - $this->gsConfig + $this->gsConfig, + $this->cloudFederationProviderManager ] )->setMethods(['sendPermissionUpdate'])->getMock(); @@ -435,6 +446,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy($sharedBy) ->setShareOwner($owner) ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->tokenHandler->method('generateToken')->willReturn('token'); @@ -505,6 +517,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share); @@ -513,6 +526,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy2') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share2); @@ -543,6 +557,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share); @@ -555,6 +570,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node2); $this->provider->create($share2); @@ -584,6 +600,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('shareOwner') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share); @@ -592,6 +609,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share2); @@ -628,6 +646,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share); @@ -636,6 +655,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy('sharedBy') ->setShareOwner('shareOwner') ->setPermissions(19) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($node); $this->provider->create($share2); @@ -826,6 +846,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy($u1->getUID()) ->setShareOwner($u1->getUID()) ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($file1); $this->provider->create($share1); @@ -834,6 +855,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy($u2->getUID()) ->setShareOwner($u1->getUID()) ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($file2); $this->provider->create($share2); @@ -880,6 +902,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy($u1->getUID()) ->setShareOwner($u1->getUID()) ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($file1); $this->provider->create($share1); @@ -888,6 +911,7 @@ class FederatedShareProviderTest extends \Test\TestCase { ->setSharedBy($u1->getUID()) ->setShareOwner($u1->getUID()) ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setShareType(\OCP\Share::SHARE_TYPE_REMOTE) ->setNode($file1); $this->provider->create($share2); diff --git a/apps/federatedfilesharing/tests/Settings/AdminTest.php b/apps/federatedfilesharing/tests/Settings/AdminTest.php index debd2bec63a..f0cf3b77d38 100644 --- a/apps/federatedfilesharing/tests/Settings/AdminTest.php +++ b/apps/federatedfilesharing/tests/Settings/AdminTest.php @@ -74,12 +74,28 @@ class AdminTest extends TestCase { ->willReturn($state); $this->federatedShareProvider ->expects($this->once()) + ->method('isIncomingServer2serverShareEnabled') + ->willReturn($state); + $this->federatedShareProvider + ->expects($this->once()) ->method('isLookupServerQueriesEnabled') ->willReturn($state); $this->federatedShareProvider ->expects($this->once()) ->method('isLookupServerUploadEnabled') ->willReturn($state); + $this->federatedShareProvider + ->expects($this->once()) + ->method('isFederatedGroupSharingSupported') + ->willReturn($state); + $this->federatedShareProvider + ->expects($this->once()) + ->method('isOutgoingServer2serverGroupShareEnabled') + ->willReturn($state); + $this->federatedShareProvider + ->expects($this->once()) + ->method('isIncomingServer2serverGroupShareEnabled') + ->willReturn($state); $this->gsConfig->expects($this->once())->method('onlyInternalFederation') ->willReturn($state); @@ -88,7 +104,10 @@ class AdminTest extends TestCase { 'outgoingServer2serverShareEnabled' => $state, 'incomingServer2serverShareEnabled' => $state, 'lookupServerEnabled' => $state, - 'lookupServerUploadEnabled' => $state + 'lookupServerUploadEnabled' => $state, + 'federatedGroupSharingSupported' => $state, + 'outgoingServer2serverGroupShareEnabled' => $state, + 'incomingServer2serverGroupShareEnabled' => $state, ]; $expected = new TemplateResponse('federatedfilesharing', 'settings-admin', $params, ''); $this->assertEquals($expected, $this->admin->getForm()); diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php index 0d1449ff355..a9d8ba0a1b9 100644 --- a/apps/files/appinfo/routes.php +++ b/apps/files/appinfo/routes.php @@ -76,6 +76,66 @@ $application->registerRoutes( 'url' => '/ajax/getstoragestats.php', 'verb' => 'GET', ], + [ + 'name' => 'API#showQuickAccess', + 'url' => '/api/v1/quickaccess/set/showList', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getShowQuickAccess', + 'url' => '/api/v1/quickaccess/get/showList', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getShowQuickaccessSettings', + 'url' => '/api/v1/quickaccess/showsettings', + 'verb' => 'GET', + ], + [ + 'name' => 'API#setShowQuickaccessSettings', + 'url' => '/api/v1/quickaccess/set/showsettings', + 'verb' => 'GET', + ], + [ + 'name' => 'API#setSortingStrategy', + 'url' => '/api/v1/quickaccess/set/SortingStrategy', + 'verb' => 'GET', + ], + [ + 'name' => 'API#setReverseQuickaccess', + 'url' => '/api/v1/quickaccess/set/ReverseList', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getSortingStrategy', + 'url' => '/api/v1/quickaccess/get/SortingStrategy', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getReverseQuickaccess', + 'url' => '/api/v1/quickaccess/get/ReverseList', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getFavoritesFolder', + 'url' => '/api/v1/quickaccess/get/FavoriteFolders/', + 'verb' => 'GET' + ], + [ + 'name' => 'API#setSortingOrder', + 'url' => '/api/v1/quickaccess/set/CustomSortingOrder', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getSortingOrder', + 'url' => '/api/v1/quickaccess/get/CustomSortingOrder', + 'verb' => 'GET', + ], + [ + 'name' => 'API#getNodeType', + 'url' => '/api/v1/quickaccess/get/NodeType', + 'verb' => 'GET', + ], ] ] ); diff --git a/apps/files/js/app.js b/apps/files/js/app.js index 883642b9c1c..c2cef563fa0 100644 --- a/apps/files/js/app.js +++ b/apps/files/js/app.js @@ -53,6 +53,8 @@ this.$showHiddenFiles = $('input#showhiddenfilesToggle'); var showHidden = $('#showHiddenFiles').val() === "1"; this.$showHiddenFiles.prop('checked', showHidden); + + if ($('#fileNotFound').val() === "1") { OC.Notification.show(t('files', 'File could not be found'), {type: 'error'}); } @@ -221,7 +223,7 @@ }, /** - * Persist show hidden preference on ther server + * Persist show hidden preference on the server * * @returns {undefined} */ @@ -239,8 +241,8 @@ var params; if (e && e.itemId) { params = { - view: e.itemId, - dir: '/' + view: typeof e.view === 'string' && e.view !== '' ? e.view : e.itemId, + dir: e.dir ? e.dir : '/' }; this._changeUrl(params.view, params.dir); OC.Apps.hideAppSidebar($('.detailsView')); diff --git a/apps/files/js/navigation.js b/apps/files/js/navigation.js index d213d0467b6..d4fa06cb45e 100644 --- a/apps/files/js/navigation.js +++ b/apps/files/js/navigation.js @@ -1,8 +1,9 @@ /* - * Copyright (c) 2014 + * @Copyright 2014 Vincent Petry <pvince81@owncloud.com> * * @author Vincent Petry - * @copyright 2014 Vincent Petry <pvince81@owncloud.com> + * @author Felix Nüsse <felix.nuesse@t-online.de> + * * * This file is licensed under the Affero General Public License version 3 * or later. @@ -11,7 +12,7 @@ * */ -(function() { +(function () { /** * @class OCA.Files.Navigation @@ -19,7 +20,7 @@ * * @param $el element containing the navigation */ - var Navigation = function($el) { + var Navigation = function ($el) { this.initialize($el); }; @@ -39,23 +40,47 @@ $currentContent: null, /** + * Strategy by which the quickaccesslist is sorted + * + * Possible Strategies: + * customorder + * datemodified + * date + * alphabet + * + */ + $sortingStrategy: 'alphabet', + + /** + * Key for the quick-acces-list + */ + $quickAccessListKey: 'sublist-favorites', + /** * Initializes the navigation from the given container * * @private * @param $el element containing the navigation */ - initialize: function($el) { + initialize: function ($el) { this.$el = $el; this._activeItem = null; this.$currentContent = null; this._setupEvents(); + + var scope=this; + $.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/SortingStrategy"), function (data, status) { + scope.$sortingStrategy=data; + scope.setInitialQuickaccessSettings(); + }); + }, /** * Setup UI events */ - _setupEvents: function() { - this.$el.on('click', 'li a', _.bind(this._onClickItem, this)); + _setupEvents: function () { + this.$el.on('click', 'li a', _.bind(this._onClickItem, this)) + this.$el.on('click', 'li button', _.bind(this._onClickMenuButton, this)); }, /** @@ -63,16 +88,16 @@ * * @return app container */ - getActiveContainer: function() { + getActiveContainer: function () { return this.$currentContent; }, /** * Returns the currently active item - * + * * @return item ID */ - getActiveItem: function() { + getActiveItem: function () { return this._activeItem; }, @@ -83,29 +108,42 @@ * @param string itemId id of the navigation item to select * @param array options "silent" to not trigger event */ - setActiveItem: function(itemId, options) { + setActiveItem: function (itemId, options) { + var currentItem = this.$el.find('li[data-id=' + itemId + ']'); + var itemDir = currentItem.data('dir'); + var itemView = currentItem.data('view'); var oldItemId = this._activeItem; if (itemId === this._activeItem) { if (!options || !options.silent) { this.$el.trigger( - new $.Event('itemChanged', {itemId: itemId, previousItemId: oldItemId}) + new $.Event('itemChanged', { + itemId: itemId, + previousItemId: oldItemId, + dir: itemDir, + view: itemView + }) ); } return; } - this.$el.find('li').removeClass('active'); + this.$el.find('li a').removeClass('active'); if (this.$currentContent) { this.$currentContent.addClass('hidden'); this.$currentContent.trigger(jQuery.Event('hide')); } this._activeItem = itemId; - this.$el.find('li[data-id=' + itemId + ']').addClass('active'); - this.$currentContent = $('#app-content-' + itemId); + currentItem.children('a').addClass('active'); + this.$currentContent = $('#app-content-' + (typeof itemView === 'string' && itemView !== '' ? itemView : itemId)); this.$currentContent.removeClass('hidden'); if (!options || !options.silent) { this.$currentContent.trigger(jQuery.Event('show')); this.$el.trigger( - new $.Event('itemChanged', {itemId: itemId, previousItemId: oldItemId}) + new $.Event('itemChanged', { + itemId: itemId, + previousItemId: oldItemId, + dir: itemDir, + view: itemView + }) ); } }, @@ -113,23 +151,206 @@ /** * Returns whether a given item exists */ - itemExists: function(itemId) { + itemExists: function (itemId) { return this.$el.find('li[data-id=' + itemId + ']').length; }, /** * Event handler for when clicking on an item. */ - _onClickItem: function(ev) { + _onClickItem: function (ev) { var $target = $(ev.target); var itemId = $target.closest('li').attr('data-id'); if (!_.isUndefined(itemId)) { this.setActiveItem(itemId); } ev.preventDefault(); + }, + + /** + * Event handler for clicking a button + */ + _onClickMenuButton: function (ev) { + var $target = $(ev.target); + var itemId = $target.closest('button').attr('id'); + + var collapsibleToggles = []; + var dotmenuToggles = []; + + // The collapsibleToggles-Array consists of a list of Arrays. Every subarray must contain the Button to listen to at the 0th index, + // and the parent, which should be toggled at the first arrayindex. + collapsibleToggles.push(["#button-collapse-favorites", "#button-collapse-parent-favorites"]); + + // The dotmenuToggles-Array consists of a list of Arrays. Every subarray must contain the Button to listen to at the 0th index, + // and the parent, which should be toggled at the first arrayindex. + dotmenuToggles.push(["#dotmenu-button-favorites", "dotmenu-content-favorites"]); + + collapsibleToggles.forEach(function foundToggle (item) { + if (item[0] === ("#" + itemId)) { + $(item[1]).toggleClass('open'); + var show = 1; + if (!$(item[1]).hasClass('open')) { + show = 0; + } + $.get(OC.generateUrl("/apps/files/api/v1/quickaccess/set/showList"), {show: show}, function (data, status) { + }); + } + }); + + dotmenuToggles.forEach(function foundToggle (item) { + if (item[0] === ("#" + itemId)) { + document.getElementById(item[1]).classList.toggle('open'); + } + }); + + ev.preventDefault(); + }, + + /** + * Sort initially as setup of sidebar for QuickAccess + */ + setInitialQuickaccessSettings: function () { + + var quickAccesKey = this.$quickAccessListKey; + var list = document.getElementById(quickAccesKey).getElementsByTagName('li'); + + var sort = true; + var reverse = false; + if (this.$sortingStrategy === 'datemodified') { + sort = false; + reverse = false; + + var scope = this; + $.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/FavoriteFolders/"), function (data, status) { + for (var i = 0; i < data.favoriteFolders.length; i++) { + for (var j = 0; j < list.length; j++) { + if (scope.getCompareValue(list, j, 'alphabet').toLowerCase() === data.favoriteFolders[i].name.toLowerCase()) { + list[j].setAttribute("mtime", data.favoriteFolders[i].mtime); + } + } + } + scope.QuickSort(list, 0, list.length - 1); + scope.reverse(list); + }); + + } else if (this.$sortingStrategy === 'alphabet') { + sort = true; + } else if (this.$sortingStrategy === 'date') { + sort = true; + } else if (this.$sortingStrategy === 'customorder') { + var scope = this; + $.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/CustomSortingOrder"), function (data, status) { + var ordering = JSON.parse(data); + for (var i = 0; i < ordering.length; i++) { + for (var j = 0; j < list.length; j++) { + if (scope.getCompareValue(list, j, 'alphabet').toLowerCase() === ordering[i].name.toLowerCase()) { + list[j].setAttribute("folderPosition", ordering[i].id); + } + } + } + scope.QuickSort(list, 0, list.length - 1); + }); + sort = false; + } + + if (sort) { + this.QuickSort(list, 0, list.length - 1); + } + if (reverse) { + this.reverse(list); + } + + }, + + /** + * Sorting-Algorithm for QuickAccess + */ + QuickSort: function (list, start, end) { + var lastMatch; + if (list.length > 1) { + lastMatch = this.quicksort_helper(list, start, end); + if (start < lastMatch - 1) { + this.QuickSort(list, start, lastMatch - 1); + } + if (lastMatch < end) { + this.QuickSort(list, lastMatch, end); + } + } + }, + + /** + * Sorting-Algorithm-Helper for QuickAccess + */ + quicksort_helper: function (list, start, end) { + var pivot = Math.floor((end + start) / 2); + var pivotElement = this.getCompareValue(list, pivot); + var i = start; + var j = end; + + while (i <= j) { + while (this.getCompareValue(list, i) < pivotElement) { + i++; + } + while (this.getCompareValue(list, j) > pivotElement) { + j--; + } + if (i <= j) { + this.swap(list, i, j); + i++; + j--; + } + } + return i; + }, + + /** + * Sorting-Algorithm-Helper for QuickAccess + * This method allows easy access to the element which is sorted by. + */ + getCompareValue: function (nodes, int, strategy) { + + if ((typeof strategy === 'undefined')) { + strategy = this.$sortingStrategy; + } + + if (strategy === 'alphabet') { + return nodes[int].getElementsByTagName('a')[0].innerHTML.toLowerCase(); + } else if (strategy === 'date') { + return nodes[int].getAttribute('folderPosition').toLowerCase(); + } else if (strategy === 'datemodified') { + return nodes[int].getAttribute('mtime'); + } else if (strategy === 'customorder') { + return nodes[int].getAttribute('folderPosition'); + } + return nodes[int].getElementsByTagName('a')[0].innerHTML.toLowerCase(); + }, + + /** + * Sorting-Algorithm-Helper for QuickAccess + * This method allows easy swapping of elements. + */ + swap: function (list, j, i) { + list[i].before(list[j]); + list[j].before(list[i]); + }, + + /** + * Reverse QuickAccess-List + */ + reverse: function (list) { + var len = list.length - 1; + for (var i = 0; i < len / 2; i++) { + this.swap(list, i, len - i); + } } + }; OCA.Files.Navigation = Navigation; })(); + + + + + diff --git a/apps/files/js/tagsplugin.js b/apps/files/js/tagsplugin.js index b174aa7d766..bc1396b5104 100644 --- a/apps/files/js/tagsplugin.js +++ b/apps/files/js/tagsplugin.js @@ -10,11 +10,11 @@ /* global Handlebars */ -(function(OCA) { +(function (OCA) { _.extend(OC.Files.Client, { - PROPERTY_TAGS: '{' + OC.Files.Client.NS_OWNCLOUD + '}tags', - PROPERTY_FAVORITE: '{' + OC.Files.Client.NS_OWNCLOUD + '}favorite' + PROPERTY_TAGS: '{' + OC.Files.Client.NS_OWNCLOUD + '}tags', + PROPERTY_FAVORITE: '{' + OC.Files.Client.NS_OWNCLOUD + '}favorite' }); var TEMPLATE_FAVORITE_MARK = @@ -30,7 +30,7 @@ * @param {boolean} state true if starred, false otherwise * @return {string} icon class for star image */ - function getStarIconClass(state) { + function getStarIconClass (state) { return state ? 'icon-starred' : 'icon-star'; } @@ -40,7 +40,7 @@ * @param {boolean} state true if starred, false otherwise * @return {Object} jQuery object */ - function renderStar(state) { + function renderStar (state) { if (!this._template) { this._template = Handlebars.compile(TEMPLATE_FAVORITE_MARK); } @@ -57,11 +57,95 @@ * @param {Object} $favoriteMarkEl favorite mark element * @param {boolean} state true if starred, false otherwise */ - function toggleStar($favoriteMarkEl, state) { + function toggleStar ($favoriteMarkEl, state) { $favoriteMarkEl.removeClass('icon-star icon-starred').addClass(getStarIconClass(state)); $favoriteMarkEl.toggleClass('permanent', state); } + /** + * Remove Item from Quickaccesslist + * + * @param {String} appfolder folder to be removed + */ + function removeFavoriteFromList (appfolder) { + + var quickAccessList = 'sublist-favorites'; + var collapsibleButtonId = 'button-collapse-favorites'; + var listULElements = document.getElementById(quickAccessList); + if (!listULElements) { + return; + } + var listLIElements = listULElements.getElementsByTagName('li'); + + var apppath=appfolder; + if(appfolder.startsWith("//")){ + apppath=appfolder.substring(1, appfolder.length); + } + + for (var i = 0; i <= listLIElements.length - 1; i++) { + if (listLIElements[i].getElementsByTagName('a')[0].href.endsWith("dir=" + apppath)) { + listLIElements[i].remove(); + } + } + + if (listULElements.childElementCount === 0) { + var collapsibleButton = document.getElementById("button-collapse-favorites"); + collapsibleButton.style.display = 'none'; + $("#button-collapse-parent-favorites").removeClass('collapsible'); + } + } + + /** + * Add Item to Quickaccesslist + * + * @param {String} appfolder folder to be added + */ + function addFavoriteToList (appfolder) { + var quickAccessList = 'sublist-favorites'; + var collapsibleButtonId = 'button-collapse-favorites'; + var listULElements = document.getElementById(quickAccessList); + if (!listULElements) { + return; + } + var listLIElements = listULElements.getElementsByTagName('li'); + + var appName = appfolder.substring(appfolder.lastIndexOf("/") + 1, appfolder.length); + var apppath=appfolder; + + if(appfolder.startsWith("//")){ + apppath=appfolder.substring(1, appfolder.length); + } + var url=OC.generateUrl('/apps/files/?dir=')+apppath; + + + var innerTagA = document.createElement('A'); + innerTagA.setAttribute("href", url); + innerTagA.setAttribute("class", "nav-icon-files svg"); + innerTagA.innerHTML = appName; + + var length = listLIElements.length + 1; + var innerTagLI = document.createElement('li'); + innerTagLI.setAttribute("data-id", url); + innerTagLI.setAttribute("class", "nav-" + appName); + innerTagLI.setAttribute("folderpos", length.toString()); + innerTagLI.appendChild(innerTagA); + + $.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/NodeType"),{folderpath: apppath}, function (data, status) { + if (data === "dir") { + if (listULElements.childElementCount <= 0) { + listULElements.appendChild(innerTagLI); + var collapsibleButton = document.getElementById(collapsibleButtonId); + collapsibleButton.style.display = ''; + + $("#button-collapse-parent-favorites").addClass('collapsible'); + } else { + listLIElements[listLIElements.length - 1].after(innerTagLI); + } + } + } + ); + } + OCA.Files = OCA.Files || {}; /** @@ -83,12 +167,12 @@ 'shares.link' ], - _extendFileActions: function(fileActions) { + _extendFileActions: function (fileActions) { var self = this; fileActions.registerAction({ name: 'Favorite', - displayName: function(context) { + displayName: function (context) { var $file = context.$file; var isFavorite = $file.data('favorite') === true; @@ -105,7 +189,7 @@ mime: 'all', order: -100, permissions: OC.PERMISSION_NONE, - iconClass: function(fileName, context) { + iconClass: function (fileName, context) { var $file = context.$file; var isFavorite = $file.data('favorite') === true; @@ -115,12 +199,13 @@ return 'icon-starred'; }, - actionHandler: function(fileName, context) { + actionHandler: function (fileName, context) { var $favoriteMarkEl = context.$file.find('.favorite-mark'); var $file = context.$file; var fileInfo = context.fileList.files[$file.index()]; var dir = context.dir || context.fileList.getCurrentDirectory(); var tags = $file.attr('data-tags'); + if (_.isUndefined(tags)) { tags = ''; } @@ -130,8 +215,10 @@ if (isFavorite) { // remove tag from list tags = _.without(tags, OC.TAG_FAVORITE); + removeFavoriteFromList(dir + '/' + fileName); } else { tags.push(OC.TAG_FAVORITE); + addFavoriteToList(dir + '/' + fileName); } // pre-toggle the star @@ -144,7 +231,7 @@ tags, $favoriteMarkEl, isFavorite - ).then(function(result) { + ).then(function (result) { context.fileInfoModel.trigger('busy', context.fileInfoModel, false); // response from server should contain updated tags var newTags = result.tags; @@ -160,10 +247,10 @@ }); }, - _extendFileList: function(fileList) { + _extendFileList: function (fileList) { // extend row prototype var oldCreateRow = fileList._createRow; - fileList._createRow = function(fileData) { + fileList._createRow = function (fileData) { var $tr = oldCreateRow.apply(this, arguments); var isFavorite = false; if (fileData.tags) { @@ -178,7 +265,7 @@ return $tr; }; var oldElementToFile = fileList.elementToFile; - fileList.elementToFile = function($el) { + fileList.elementToFile = function ($el) { var fileInfo = oldElementToFile.apply(this, arguments); var tags = $el.attr('data-tags'); if (_.isUndefined(tags)) { @@ -191,22 +278,22 @@ }; var oldGetWebdavProperties = fileList._getWebdavProperties; - fileList._getWebdavProperties = function() { + fileList._getWebdavProperties = function () { var props = oldGetWebdavProperties.apply(this, arguments); props.push(OC.Files.Client.PROPERTY_TAGS); props.push(OC.Files.Client.PROPERTY_FAVORITE); return props; }; - fileList.filesClient.addFileInfoParser(function(response) { + fileList.filesClient.addFileInfoParser(function (response) { var data = {}; var props = response.propStat[0].properties; var tags = props[OC.Files.Client.PROPERTY_TAGS]; var favorite = props[OC.Files.Client.PROPERTY_FAVORITE]; if (tags && tags.length) { - tags = _.chain(tags).filter(function(xmlvalue) { + tags = _.chain(tags).filter(function (xmlvalue) { return (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'tag'); - }).map(function(xmlvalue) { + }).map(function (xmlvalue) { return xmlvalue.textContent || xmlvalue.text; }).value(); } @@ -221,7 +308,7 @@ }); }, - attach: function(fileList) { + attach: function (fileList) { if (this.allowedLists.indexOf(fileList.id) < 0) { return; } @@ -237,7 +324,7 @@ * @param {Object} $favoriteMarkEl favorite mark element * @param {boolean} isFavorite Was the item favorited before */ - applyFileTags: function(fileName, tagNames, $favoriteMarkEl, isFavorite) { + applyFileTags: function (fileName, tagNames, $favoriteMarkEl, isFavorite) { var encodedPath = OC.encodePath(fileName); while (encodedPath[0] === '/') { encodedPath = encodedPath.substr(1); @@ -250,10 +337,10 @@ }), dataType: 'json', type: 'POST' - }).fail(function(response) { + }).fail(function (response) { var message = ''; // show message if it is available - if(response.responseJSON && response.responseJSON.message) { + if (response.responseJSON && response.responseJSON.message) { message = ': ' + response.responseJSON.message; } OC.Notification.show(t('files', 'An error occurred while trying to update the tags' + message), {type: 'error'}); @@ -261,6 +348,7 @@ }); } }; -})(OCA); +}) +(OCA); OC.Plugins.register('OCA.Files.FileList', OCA.Files.TagsPlugin); diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index bf8c933ccfd..cf6be265316 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Mit Dir geteilt", "Shared with others" : "Mit anderen geteilt", "Shared by link" : "Über einen Link geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Tags" : "Schlagworte", "Deleted files" : "Gelöschte Dateien", "Text file" : "Textdatei", diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index c1be280dfcd..dfe27d0fdab 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -150,6 +150,7 @@ "Shared with you" : "Mit Dir geteilt", "Shared with others" : "Mit anderen geteilt", "Shared by link" : "Über einen Link geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Tags" : "Schlagworte", "Deleted files" : "Gelöschte Dateien", "Text file" : "Textdatei", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index d7e295ee12a..b393ec261fe 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Mit Ihnen geteilt", "Shared with others" : "Mit anderen geteilt", "Shared by link" : "Über einen Link geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Tags" : "Schlagworte", "Deleted files" : "Gelöschte Dateien", "Text file" : "Textdatei", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 51a647aac73..d5d673783f9 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -150,6 +150,7 @@ "Shared with you" : "Mit Ihnen geteilt", "Shared with others" : "Mit anderen geteilt", "Shared by link" : "Über einen Link geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Tags" : "Schlagworte", "Deleted files" : "Gelöschte Dateien", "Text file" : "Textdatei", diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js index f90f12f75d7..21d06150f1d 100644 --- a/apps/files/l10n/es.js +++ b/apps/files/l10n/es.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Compartido contigo", "Shared with others" : "Compartido con otros", "Shared by link" : "Compartido por enlace", + "Deleted shares" : "Recursos compartidos eliminados", "Tags" : "Etiquetas", "Deleted files" : "Archivos eliminados", "Text file" : "Archivo de texto", diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json index 1f3f8099b70..08104c0e933 100644 --- a/apps/files/l10n/es.json +++ b/apps/files/l10n/es.json @@ -150,6 +150,7 @@ "Shared with you" : "Compartido contigo", "Shared with others" : "Compartido con otros", "Shared by link" : "Compartido por enlace", + "Deleted shares" : "Recursos compartidos eliminados", "Tags" : "Etiquetas", "Deleted files" : "Archivos eliminados", "Text file" : "Archivo de texto", diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js index c81506c60ae..22aea0187f5 100644 --- a/apps/files/l10n/fi.js +++ b/apps/files/l10n/fi.js @@ -22,6 +22,7 @@ OC.L10N.register( "Uploading …" : "Lähetetään…", "…" : "…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize} ({bitrate})", + "Uploading that item is not supported" : "Kyseisen kohteen lähettäminen ei ole tuettu", "Target folder does not exist any more" : "Kohdekansiota ei ole enää olemassa", "Actions" : "Toiminnot", "Rename" : "Nimeä uudelleen", diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json index f9d4852d282..aa2f4ddc799 100644 --- a/apps/files/l10n/fi.json +++ b/apps/files/l10n/fi.json @@ -20,6 +20,7 @@ "Uploading …" : "Lähetetään…", "…" : "…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize} ({bitrate})", + "Uploading that item is not supported" : "Kyseisen kohteen lähettäminen ei ole tuettu", "Target folder does not exist any more" : "Kohdekansiota ei ole enää olemassa", "Actions" : "Toiminnot", "Rename" : "Nimeä uudelleen", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index 6e335cc7f28..e27354e358f 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Partagés avec vous", "Shared with others" : "Partagés avec d'autres", "Shared by link" : "Partagés par lien", + "Deleted shares" : "Partages supprimés", "Tags" : "Étiquettes", "Deleted files" : "Fichiers supprimés", "Text file" : "Fichier texte", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index bd7fe8e444a..bf29723c04a 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -150,6 +150,7 @@ "Shared with you" : "Partagés avec vous", "Shared with others" : "Partagés avec d'autres", "Shared by link" : "Partagés par lien", + "Deleted shares" : "Partages supprimés", "Tags" : "Étiquettes", "Deleted files" : "Fichiers supprimés", "Text file" : "Fichier texte", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 52f76b2ed0a..b5ff634ce20 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Condivisi con te", "Shared with others" : "Condivisi con altri", "Shared by link" : "Condivisi tramite collegamento", + "Deleted shares" : "Condivisioni eliminate", "Tags" : "Etichette", "Deleted files" : "File eliminati", "Text file" : "File di testo", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index 6d8b5ca31d3..8a7e8dcfd34 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -150,6 +150,7 @@ "Shared with you" : "Condivisi con te", "Shared with others" : "Condivisi con altri", "Shared by link" : "Condivisi tramite collegamento", + "Deleted shares" : "Condivisioni eliminate", "Tags" : "Etichette", "Deleted files" : "File eliminati", "Text file" : "File di testo", diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js index 8763ec34775..58c5b2b49bc 100644 --- a/apps/files/l10n/lt_LT.js +++ b/apps/files/l10n/lt_LT.js @@ -32,7 +32,7 @@ OC.L10N.register( "Files" : "Duomenys", "Details" : "Informacija", "Select" : "Pasirinkti", - "Pending" : "Laukiantis", + "Pending" : "Analizuojama", "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas neprieinamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", @@ -69,7 +69,7 @@ OC.L10N.register( "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], "View in folder" : "Rodyti aplanke", "Copied!" : "Nuoroda nukopijuota", - "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą", + "Copy direct link (only works for users who have access to this file/folder)" : "Nuoroda", "Path" : "Kelias", "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"], "Favorited" : "Svarbus", @@ -138,6 +138,7 @@ OC.L10N.register( "Tags" : "Žymės", "Deleted files" : "Ištrinti", "Text file" : "Tekstinis failas", - "New text file.txt" : "Naujas tekstinis failas.txt" + "New text file.txt" : "Naujas tekstinis failas.txt", + "Move" : "Perkelti" }, "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);"); diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json index 8e5383f05ee..65529fa6099 100644 --- a/apps/files/l10n/lt_LT.json +++ b/apps/files/l10n/lt_LT.json @@ -30,7 +30,7 @@ "Files" : "Duomenys", "Details" : "Informacija", "Select" : "Pasirinkti", - "Pending" : "Laukiantis", + "Pending" : "Analizuojama", "Unable to determine date" : "Nepavyksta nustatyti datos", "This operation is forbidden" : "Ši operacija yra uždrausta", "This directory is unavailable, please check the logs or contact the administrator" : "Katalogas neprieinamas, prašome peržiūrėti žurnalo įrašus arba susisiekti su administratoriumi", @@ -67,7 +67,7 @@ "_matches '{filter}'_::_match '{filter}'_" : ["atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'","atitinka '{filter}'"], "View in folder" : "Rodyti aplanke", "Copied!" : "Nuoroda nukopijuota", - "Copy direct link (only works for users who have access to this file/folder)" : "Nukopijuoti nuorodą", + "Copy direct link (only works for users who have access to this file/folder)" : "Nuoroda", "Path" : "Kelias", "_%n byte_::_%n bytes_" : ["%n baitas","%n baitai","%n baitų","%n baitų"], "Favorited" : "Svarbus", @@ -136,6 +136,7 @@ "Tags" : "Žymės", "Deleted files" : "Ištrinti", "Text file" : "Tekstinis failas", - "New text file.txt" : "Naujas tekstinis failas.txt" + "New text file.txt" : "Naujas tekstinis failas.txt", + "Move" : "Perkelti" },"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);" }
\ No newline at end of file diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 0f9883dea52..8ace949cabb 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -19,8 +19,8 @@ OC.L10N.register( "Not enough free space, you are uploading {size1} but only {size2} is left" : "Brak wolnej przestrzeni, przesyłasz {size1} a pozostało tylko {size2}", "Target folder \"{dir}\" does not exist any more" : "Folder docelowy \"{dir}\" już nie istnieje", "Not enough free space" : "Za mało wolnego miejsca", - "Uploading …" : "Wysyłanie...", - "…" : "...", + "Uploading …" : "Wysyłanie…", + "…" : "…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "Target folder does not exist any more" : "Folder docelowy już nie istnieje", "Error when assembling chunks, status code {status}" : "Błąd podczas łączenia fragmentów, kod statusu {status}", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index f3d6dd84aad..4ab7c39a779 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -17,8 +17,8 @@ "Not enough free space, you are uploading {size1} but only {size2} is left" : "Brak wolnej przestrzeni, przesyłasz {size1} a pozostało tylko {size2}", "Target folder \"{dir}\" does not exist any more" : "Folder docelowy \"{dir}\" już nie istnieje", "Not enough free space" : "Za mało wolnego miejsca", - "Uploading …" : "Wysyłanie...", - "…" : "...", + "Uploading …" : "Wysyłanie…", + "…" : "…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "Target folder does not exist any more" : "Folder docelowy już nie istnieje", "Error when assembling chunks, status code {status}" : "Błąd podczas łączenia fragmentów, kod statusu {status}", diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index 83da5f4b6d9..102f743de53 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Compartilhado com você", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado via link", + "Deleted shares" : "Compartilhamentos excluídos", "Tags" : "Etiquetas", "Deleted files" : "Arquivos excluídos", "Text file" : "Arquivo texto", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index 4930b3e29a3..5405673de43 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -150,6 +150,7 @@ "Shared with you" : "Compartilhado com você", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado via link", + "Deleted shares" : "Compartilhamentos excluídos", "Tags" : "Etiquetas", "Deleted files" : "Arquivos excluídos", "Text file" : "Arquivo texto", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index b294ebea163..05572b22d89 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Доступные для вас", "Shared with others" : "Доступные для других", "Shared by link" : "Доступные по ссылке", + "Deleted shares" : "Удаленная доля", "Tags" : "Метки", "Deleted files" : "Корзина", "Text file" : "Текстовый файл", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 51ad4cb265d..ea3ce1f2623 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -150,6 +150,7 @@ "Shared with you" : "Доступные для вас", "Shared with others" : "Доступные для других", "Shared by link" : "Доступные по ссылке", + "Deleted shares" : "Удаленная доля", "Tags" : "Метки", "Deleted files" : "Корзина", "Text file" : "Текстовый файл", diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js index 234dfa61fdf..39bee4b0836 100644 --- a/apps/files/l10n/sr.js +++ b/apps/files/l10n/sr.js @@ -152,6 +152,7 @@ OC.L10N.register( "Shared with you" : "Дељени са вама", "Shared with others" : "Дељени са осталима", "Shared by link" : "Дељени путем везе", + "Deleted shares" : "Обрисана дељења", "Tags" : "Ознаке", "Deleted files" : "Обрисани фајлови", "Text file" : "Tекстуални фајл", diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json index 315c6537cea..6d2574ae989 100644 --- a/apps/files/l10n/sr.json +++ b/apps/files/l10n/sr.json @@ -150,6 +150,7 @@ "Shared with you" : "Дељени са вама", "Shared with others" : "Дељени са осталима", "Shared by link" : "Дељени путем везе", + "Deleted shares" : "Обрисана дељења", "Tags" : "Ознаке", "Deleted files" : "Обрисани фајлови", "Text file" : "Tекстуални фајл", diff --git a/apps/files/lib/AppInfo/Application.php b/apps/files/lib/AppInfo/Application.php index 064f2baa987..d4dac5befa8 100644 --- a/apps/files/lib/AppInfo/Application.php +++ b/apps/files/lib/AppInfo/Application.php @@ -26,6 +26,7 @@ */ namespace OCA\Files\AppInfo; +use OCA\Files\Activity\Helper; use OCA\Files\Controller\ApiController; use OCP\AppFramework\App; use \OCA\Files\Service\TagService; @@ -65,7 +66,8 @@ class Application extends App { $server->getEventDispatcher(), $server->getUserSession(), $server->getAppManager(), - $server->getRootFolder() + $server->getRootFolder(), + $c->query(Helper::class) ); }); diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php index a66b1b4d565..aae1bec2e78 100644 --- a/apps/files/lib/Controller/ApiController.php +++ b/apps/files/lib/Controller/ApiController.php @@ -11,7 +11,7 @@ * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Tobias Kaminsky <tobias@kaminsky.me> * @author Vincent Petry <pvince81@owncloud.com> - * + * @author Felix Nüsse <felix.nuesse@t-online.de> * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify @@ -45,6 +45,7 @@ use OCP\IPreview; use OCP\Share\IManager; use OC\Files\Node\Node; use OCP\IUserSession; +use Sabre\VObject\Property\Boolean; /** * Class ApiController @@ -54,7 +55,7 @@ use OCP\IUserSession; class ApiController extends Controller { /** @var TagService */ private $tagService; - /** @var IManager **/ + /** @var IManager * */ private $shareManager; /** @var IPreview */ private $previewManager; @@ -107,7 +108,7 @@ class ApiController extends Controller { * @return DataResponse|FileDisplayResponse */ public function getThumbnail($x, $y, $file) { - if($x < 1 || $y < 1) { + if ($x < 1 || $y < 1) { return new DataResponse(['message' => 'Requested size must be numeric and a positive value.'], Http::STATUS_BAD_REQUEST); } @@ -199,6 +200,30 @@ class ApiController extends Controller { } /** + * Returns a list of favorites modifed folder. + * + * @NoAdminRequired + * + * @return DataResponse + */ + public function getFavoritesFolder() { + $nodes = $this->userFolder->searchByTag('_$!<Favorite>!$_', $this->userSession->getUser()->getUID()); + + $favorites = []; + $i = 0; + foreach ($nodes as &$node) { + + $favorites[$i]['id'] = $node->getId(); + $favorites[$i]['name'] = $node->getName(); + $favorites[$i]['path'] = $node->getInternalPath(); + $favorites[$i]['mtime'] = $node->getMTime(); + $i++; + } + + return new DataResponse(['favoriteFolders' => $favorites]); + } + + /** * Return a list of share types for outgoing shares * * @param Node $node file node @@ -261,8 +286,150 @@ class ApiController extends Controller { * @param bool $show */ public function showHiddenFiles($show) { - $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'show_hidden', (int) $show); + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'show_hidden', (int)$show); + return new Response(); + } + + /** + * Toggle default for showing/hiding QuickAccess folder + * + * @NoAdminRequired + * + * @param bool $show + * + * @return Response + */ + public function showQuickAccess($show) { + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'show_Quick_Access', (int)$show); + return new Response(); + } + + /** + * Toggle default for showing/hiding QuickAccess folder + * + * @NoAdminRequired + * + * @return String + */ + public function getShowQuickAccess() { + + return $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'show_Quick_Access', 0); + } + + /** + * quickaccess-sorting-strategy + * + * @NoAdminRequired + * + * @param string $strategy + * @return Response + */ + public function setSortingStrategy($strategy) { + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_sorting_strategy', (String)$strategy); return new Response(); } + /** + * Get reverse-state for quickaccess-list + * + * @NoAdminRequired + * + * @return String + */ + public function getSortingStrategy() { + return $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_sorting_strategy', 'alphabet'); + } + + /** + * Toggle for reverse quickaccess-list + * + * @NoAdminRequired + * + * @param bool $reverse + * @return Response + */ + public function setReverseQuickaccess($reverse) { + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_reverse_list', (int)$reverse); + return new Response(); + } + + /** + * Get reverse-state for quickaccess-list + * + * @NoAdminRequired + * + * @return bool + */ + public function getReverseQuickaccess() { + if ($this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_reverse_list', false)) { + return true; + } + return false; + } + + /** + * Set state for show sorting menu + * + * @NoAdminRequired + * + * @param bool $show + * @return Response + */ + public function setShowQuickaccessSettings($show) { + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_show_settings', (int)$show); + return new Response(); + } + + /** + * Get state for show sorting menu + * + * @NoAdminRequired + * + * @return bool + */ + public function getShowQuickaccessSettings() { + if ($this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_show_settings', false)) { + return true; + } + return false; + } + + /** + * Set sorting-order for custom sorting + * + * @NoAdminRequired + * + * @param String $order + * @return Response + */ + public function setSortingOrder($order) { + $this->config->setUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_custom_sorting_order', (String)$order); + return new Response(); + } + + /** + * Get sorting-order for custom sorting + * + * @NoAdminRequired + * + * @return String + */ + public function getSortingOrder() { + return $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_custom_sorting_order', ""); + } + + /** + * Get sorting-order for custom sorting + * + * @NoAdminRequired + * + * @param String + * @return String + */ + public function getNodeType($folderpath) { + $node = $this->userFolder->get($folderpath); + return $node->getType(); + } + + } diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 7cb0f112f72..f240e04c721 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -8,6 +8,7 @@ * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Thomas Müller <thomas.mueller@tmit.eu> * @author Vincent Petry <pvince81@owncloud.com> + * @author Felix Nüsse <felix.nuesse@t-online.de> * * @license AGPL-3.0 * @@ -27,6 +28,7 @@ namespace OCA\Files\Controller; +use OCA\Files\Activity\Helper; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\RedirectResponse; @@ -67,19 +69,10 @@ class ViewController extends Controller { protected $appManager; /** @var IRootFolder */ protected $rootFolder; + /** @var Helper */ + protected $activityHelper; - /** - * @param string $appName - * @param IRequest $request - * @param IURLGenerator $urlGenerator - * @param IL10N $l10n - * @param IConfig $config - * @param EventDispatcherInterface $eventDispatcherInterface - * @param IUserSession $userSession - * @param IAppManager $appManager - * @param IRootFolder $rootFolder - */ - public function __construct($appName, + public function __construct(string $appName, IRequest $request, IURLGenerator $urlGenerator, IL10N $l10n, @@ -87,7 +80,8 @@ class ViewController extends Controller { EventDispatcherInterface $eventDispatcherInterface, IUserSession $userSession, IAppManager $appManager, - IRootFolder $rootFolder + IRootFolder $rootFolder, + Helper $activityHelper ) { parent::__construct($appName, $request); $this->appName = $appName; @@ -99,6 +93,7 @@ class ViewController extends Controller { $this->userSession = $userSession; $this->appManager = $appManager; $this->rootFolder = $rootFolder; + $this->activityHelper = $activityHelper; } /** @@ -159,28 +154,68 @@ class ViewController extends Controller { // FIXME: Make non static $storageInfo = $this->getStorageInfo(); + $user = $this->userSession->getUser()->getUID(); + + try { + $favElements = $this->activityHelper->getFavoriteFilePaths($this->userSession->getUser()->getUID()); + } catch (\RuntimeException $e) { + $favElements['folders'] = null; + } + + $collapseClasses = ''; + if (count($favElements['folders']) > 0) { + $collapseClasses = 'collapsible'; + } + + $favoritesSublistArray = Array(); + + $navBarPositionPosition = 6; + $currentCount = 0; + foreach ($favElements['folders'] as $dir) { + + $id = substr($dir, strrpos($dir, '/') + 1, strlen($dir)); + $link = $this->urlGenerator->linkToRoute('files.view.index', ['dir' => $dir, 'view' => 'files']); + $sortingValue = ++$currentCount; + $element = [ + 'id' => str_replace('/', '-', $dir), + 'view' => 'files', + 'href' => $link, + 'dir' => $dir, + 'order' => $navBarPositionPosition, + 'folderPosition' => $sortingValue, + 'name' => $id, + 'icon' => 'files', + 'quickaccesselement' => 'true' + ]; + + array_push($favoritesSublistArray, $element); + $navBarPositionPosition++; + } + + + // show_Quick_Access stored as string + $defaultExpandedState = $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'show_Quick_Access', '0') === '1'; + \OCA\Files\App::getNavigationManager()->add( [ 'id' => 'favorites', 'appname' => 'files', 'script' => 'simplelist.php', + 'classes' => $collapseClasses, 'order' => 5, - 'name' => $this->l10n->t('Favorites') + 'name' => $this->l10n->t('Favorites'), + 'sublist' => $favoritesSublistArray, + 'defaultExpandedState' => $defaultExpandedState, + 'enableMenuButton' => 0, ] ); $navItems = \OCA\Files\App::getNavigationManager()->getAll(); - usort($navItems, function($item1, $item2) { + usort($navItems, function ($item1, $item2) { return $item1['order'] - $item2['order']; }); - $nav->assign('navigationItems', $navItems); - $webdavurl = $this->urlGenerator->linkTo('', 'remote.php') . - '/dav/files/' . - $this->userSession->getUser()->getUID() . - '/'; - $webdavurl = $this->urlGenerator->getAbsoluteURL($webdavurl); - $nav->assign('webdavurl', $webdavurl); + $nav->assign('navigationItems', $navItems); $nav->assign('usage', \OC_Helper::humanFileSize($storageInfo['used'])); if ($storageInfo['quota'] === \OCP\Files\FileInfo::SPACE_UNLIMITED) { @@ -215,10 +250,9 @@ class ViewController extends Controller { $params['ownerDisplayName'] = $storageInfo['ownerDisplayName']; $params['isPublic'] = false; $params['allowShareWithLink'] = $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'); - $user = $this->userSession->getUser()->getUID(); $params['defaultFileSorting'] = $this->config->getUserValue($user, 'files', 'file_sorting', 'name'); $params['defaultFileSortingDirection'] = $this->config->getUserValue($user, 'files', 'file_sorting_direction', 'asc'); - $showHidden = (bool) $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'show_hidden', false); + $showHidden = (bool)$this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'show_hidden', false); $params['showHiddenFiles'] = $showHidden ? 1 : 0; $params['fileNotFound'] = $fileNotFound ? 1 : 0; $params['appNavigation'] = $nav; @@ -234,6 +268,7 @@ class ViewController extends Controller { $policy->addAllowedFrameDomain('\'self\''); $response->setContentSecurityPolicy($policy); + return $response; } diff --git a/apps/files/templates/appnavigation.php b/apps/files/templates/appnavigation.php index c811ace8abe..0b9ac665901 100644 --- a/apps/files/templates/appnavigation.php +++ b/apps/files/templates/appnavigation.php @@ -1,18 +1,17 @@ <div id="app-navigation"> <ul class="with-icon"> - <?php $pinned = 0 ?> - <?php foreach ($_['navigationItems'] as $item) { - strpos($item['classes'], 'pinned')!==false ? $pinned++ : ''; + + <?php + + $pinned = 0; + foreach ($_['navigationItems'] as $item) { + $pinned = NavigationListElements($item, $l, $pinned); + } ?> - <li data-id="<?php p($item['id']) ?>" class="nav-<?php p($item['id']) ?> <?php p($item['classes']) ?> <?php p($pinned===1?'first-pinned':'') ?>"> - <a href="<?php p(isset($item['href']) ? $item['href'] : '#') ?>" - class="nav-icon-<?php p($item['icon'] !== '' ? $item['icon'] : $item['id']) ?> svg"> - <?php p($item['name']);?> - </a> - </li> - <?php } ?> - <li id="quota" class="pinned <?php p($pinned===0?'first-pinned ':'') ?><?php - if ($_['quota'] !== \OCP\Files\FileInfo::SPACE_UNLIMITED) { + + <li id="quota" + class="pinned <?php p($pinned === 0 ? 'first-pinned ' : '') ?><?php + if ($_['quota'] !== \OCP\Files\FileInfo::SPACE_UNLIMITED) { ?>has-tooltip" title="<?php p($_['usage_relative'] . '%'); } ?>"> <a href="#" class="icon-quota svg"> @@ -23,26 +22,103 @@ p($l->t('%s used', [$_['usage']])); } ?></p> <div class="quota-container"> - <progress value="<?php p($_['usage_relative']); ?>" max="100" - <?php if($_['usage_relative'] > 80): ?> class="warn" <?php endif; ?>></progress> + <progress value="<?php p($_['usage_relative']); ?>" + max="100" + <?php if ($_['usage_relative'] > 80): ?> class="warn" <?php endif; ?>></progress> </div> </a> </li> </ul> <div id="app-settings"> <div id="app-settings-header"> - <button class="settings-button" data-apps-slide-toggle="#app-settings-content"> - <?php p($l->t('Settings'));?> + <button class="settings-button" + data-apps-slide-toggle="#app-settings-content"> + <?php p($l->t('Settings')); ?> </button> </div> <div id="app-settings-content"> <div id="files-setting-showhidden"> - <input class="checkbox" id="showhiddenfilesToggle" checked="checked" type="checkbox"> + <input class="checkbox" id="showhiddenfilesToggle" + checked="checked" type="checkbox"> <label for="showhiddenfilesToggle"><?php p($l->t('Show hidden files')); ?></label> </div> - <label for="webdavurl"><?php p($l->t('WebDAV'));?></label> - <input id="webdavurl" type="text" readonly="readonly" value="<?php p($_['webdavurl']); ?>" /> - <em><?php print_unescaped($l->t('Use this address to <a href="%s" target="_blank" rel="noreferrer noopener">access your Files via WebDAV</a>', array(link_to_docs('user-webdav'))));?></em> + <label for="webdavurl"><?php p($l->t('WebDAV')); ?></label> + <input id="webdavurl" type="text" readonly="readonly" + value="<?php p(\OCP\Util::linkToRemote('webdav')); ?>"/> + <em><?php print_unescaped($l->t('Use this address to <a href="%s" target="_blank" rel="noreferrer noopener">access your Files via WebDAV</a>', array(link_to_docs('user-webdav')))); ?></em> </div> </div> + </div> + + +<?php + +/** + * Prints the HTML for a single Entry. + * + * @param $item The item to be added + * @param $l Translator + * @param $pinned IntegerValue to count the pinned entries at the bottom + * + * @return int Returns the pinned value + */ +function NavigationListElements($item, $l, $pinned) { + strpos($item['classes'], 'pinned') !== false ? $pinned++ : ''; + ?> + <li <?php if (isset($item['sublist'])){ ?>id="button-collapse-parent-<?php p($item['id']); ?>"<?php } ?> + data-id="<?php p($item['id']) ?>" data-dir="<?php p($item['dir']) ?>" data-view="<?php p($item['view']) ?>" + class="nav-<?php p($item['id']) ?> <?php p($item['classes']) ?> <?php p($pinned === 1 ? 'first-pinned' : '') ?> <?php if ($item['defaultExpandedState']) { ?> open<?php } ?>" + <?php if (isset($item['folderPosition'])) { ?> folderposition="<?php p($item['folderPosition']); ?>" <?php } ?>> + + <a href="<?php p(isset($item['href']) ? $item['href'] : '#') ?>" + class="nav-icon-<?php p($item['icon'] !== '' ? $item['icon'] : $item['id']) ?> svg"><?php p($item['name']); ?></a> + + + <?php + NavigationElementMenu($item); + if (isset($item['sublist'])) { + ?> + <button id="button-collapse-<?php p($item['id']); ?>" + class="collapse app-navigation-noclose" <?php if (sizeof($item['sublist']) == 0) { ?> style="display: none" <?php } ?>></button> + <ul id="sublist-<?php p($item['id']); ?>"> + <?php + foreach ($item['sublist'] as $item) { + $pinned = NavigationListElements($item, $l, $pinned); + } + ?> + </ul> + <?php } ?> + </li> + + + <?php + return $pinned; +} + +/** + * Prints the HTML for a dotmenu. + * + * @param $item The item to be added + * + * @return void + */ +function NavigationElementMenu($item) { + if ($item['menubuttons'] === 'true') { + ?> + <div id="dotmenu-<?php p($item['id']); ?>" + class="app-navigation-entry-utils" <?php if ($item['enableMenuButton'] === 0) { ?> style="display: none"<?php } ?>> + <ul> + <li class="app-navigation-entry-utils-menu-button svg"> + <button id="dotmenu-button-<?php p($item['id']) ?>"></button> + </li> + </ul> + </div> + <div id="dotmenu-content-<?php p($item['id']) ?>" + class="app-navigation-entry-menu"> + <ul> + + </ul> + </div> + <?php } +} diff --git a/apps/files/tests/Controller/ViewControllerTest.php b/apps/files/tests/Controller/ViewControllerTest.php index eae627fd6a4..8f077645808 100644 --- a/apps/files/tests/Controller/ViewControllerTest.php +++ b/apps/files/tests/Controller/ViewControllerTest.php @@ -29,6 +29,7 @@ namespace OCA\Files\Tests\Controller; +use OCA\Files\Activity\Helper; use OCA\Files\Controller\ViewController; use OCP\AppFramework\Http; use OCP\Files\File; @@ -71,6 +72,8 @@ class ViewControllerTest extends TestCase { private $appManager; /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ private $rootFolder; + /** @var Helper|\PHPUnit_Framework_MockObject_MockObject */ + private $activityHelper; public function setUp() { parent::setUp(); @@ -89,6 +92,7 @@ class ViewControllerTest extends TestCase { ->method('getUser') ->will($this->returnValue($this->user)); $this->rootFolder = $this->getMockBuilder('\OCP\Files\IRootFolder')->getMock(); + $this->activityHelper = $this->createMock(Helper::class); $this->viewController = $this->getMockBuilder('\OCA\Files\Controller\ViewController') ->setConstructorArgs([ 'files', @@ -99,7 +103,8 @@ class ViewControllerTest extends TestCase { $this->eventDispatcher, $this->userSession, $this->appManager, - $this->rootFolder + $this->rootFolder, + $this->activityHelper, ]) ->setMethods([ 'getStorageInfo', @@ -120,7 +125,7 @@ class ViewControllerTest extends TestCase { 'owner' => 'MyName', 'ownerDisplayName' => 'MyDisplayName', ])); - $this->config->expects($this->exactly(3)) + $this->config ->method('getUserValue') ->will($this->returnValueMap([ [$this->user->getUID(), 'files', 'file_sorting', 'name', 'name'], @@ -138,7 +143,7 @@ class ViewControllerTest extends TestCase { $nav->assign('usage', '123 B'); $nav->assign('quota', 100); $nav->assign('total_space', '100 B'); - $nav->assign('webdavurl', ''); + //$nav->assign('webdavurl', ''); $nav->assign('navigationItems', [ [ 'id' => 'files', @@ -172,6 +177,9 @@ class ViewControllerTest extends TestCase { 'icon' => '', 'type' => 'link', 'classes' => '', + 'sublist' => [], + 'defaultExpandedState' => false, + 'enableMenuButton' => 0, ], [ 'id' => 'sharingin', @@ -299,6 +307,14 @@ class ViewControllerTest extends TestCase { $policy = new Http\ContentSecurityPolicy(); $policy->addAllowedFrameDomain('\'self\''); $expected->setContentSecurityPolicy($policy); + + $this->activityHelper->method('getFavoriteFilePaths') + ->with($this->user->getUID()) + ->willReturn([ + 'item' => [], + 'folders' => [], + ]); + $this->assertEquals($expected, $this->viewController->index('MyDir', 'MyView')); } diff --git a/apps/files/tests/js/appSpec.js b/apps/files/tests/js/appSpec.js index 5728991e197..15297a029d4 100644 --- a/apps/files/tests/js/appSpec.js +++ b/apps/files/tests/js/appSpec.js @@ -239,38 +239,38 @@ describe('OCA.Files.App tests', function() { expect(App.navigation.getActiveItem()).toEqual('other'); expect($('#app-content-files').hasClass('hidden')).toEqual(true); expect($('#app-content-other').hasClass('hidden')).toEqual(false); - expect($('li[data-id=files]').hasClass('active')).toEqual(false); - expect($('li[data-id=other]').hasClass('active')).toEqual(true); + expect($('li[data-id=files] > a').hasClass('active')).toEqual(false); + expect($('li[data-id=other] > a').hasClass('active')).toEqual(true); App._onPopState({view: 'files', dir: '/somedir'}); expect(App.navigation.getActiveItem()).toEqual('files'); expect($('#app-content-files').hasClass('hidden')).toEqual(false); expect($('#app-content-other').hasClass('hidden')).toEqual(true); - expect($('li[data-id=files]').hasClass('active')).toEqual(true); - expect($('li[data-id=other]').hasClass('active')).toEqual(false); + expect($('li[data-id=files] > a').hasClass('active')).toEqual(true); + expect($('li[data-id=other] > a').hasClass('active')).toEqual(false); }); it('clicking on navigation switches the panel visibility', function() { - $('li[data-id=other]>a').click(); + $('li[data-id=other] > a').click(); expect(App.navigation.getActiveItem()).toEqual('other'); expect($('#app-content-files').hasClass('hidden')).toEqual(true); expect($('#app-content-other').hasClass('hidden')).toEqual(false); - expect($('li[data-id=files]').hasClass('active')).toEqual(false); - expect($('li[data-id=other]').hasClass('active')).toEqual(true); + expect($('li[data-id=files] > a').hasClass('active')).toEqual(false); + expect($('li[data-id=other] > a').hasClass('active')).toEqual(true); - $('li[data-id=files]>a').click(); + $('li[data-id=files] > a').click(); expect(App.navigation.getActiveItem()).toEqual('files'); expect($('#app-content-files').hasClass('hidden')).toEqual(false); expect($('#app-content-other').hasClass('hidden')).toEqual(true); - expect($('li[data-id=files]').hasClass('active')).toEqual(true); - expect($('li[data-id=other]').hasClass('active')).toEqual(false); + expect($('li[data-id=files] > a').hasClass('active')).toEqual(true); + expect($('li[data-id=other] > a').hasClass('active')).toEqual(false); }); it('clicking on navigation sends "show" and "urlChanged" event', function() { var handler = sinon.stub(); var showHandler = sinon.stub(); $('#app-content-other').on('urlChanged', handler); $('#app-content-other').on('show', showHandler); - $('li[data-id=other]>a').click(); + $('li[data-id=other] > a').click(); expect(handler.calledOnce).toEqual(true); expect(handler.getCall(0).args[0].view).toEqual('other'); expect(handler.getCall(0).args[0].dir).toEqual('/'); @@ -281,7 +281,7 @@ describe('OCA.Files.App tests', function() { var showHandler = sinon.stub(); $('#app-content-files').on('urlChanged', handler); $('#app-content-files').on('show', showHandler); - $('li[data-id=files]>a').click(); + $('li[data-id=files] > a').click(); expect(handler.calledOnce).toEqual(true); expect(handler.getCall(0).args[0].view).toEqual('files'); expect(handler.getCall(0).args[0].dir).toEqual('/'); diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js index 6df64618447..cee20c771c6 100644 --- a/apps/files_external/l10n/es.js +++ b/apps/files_external/l10n/es.js @@ -72,6 +72,7 @@ OC.L10N.register( "Public key" : "Clave pública", "RSA private key" : "Clave privada RSA", "Private key" : "Clave privada", + "Kerberos ticket" : "Ticket de Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Depósito", "Hostname" : "Nombre de equipo", diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json index 99cdda92b71..2a098556d5b 100644 --- a/apps/files_external/l10n/es.json +++ b/apps/files_external/l10n/es.json @@ -70,6 +70,7 @@ "Public key" : "Clave pública", "RSA private key" : "Clave privada RSA", "Private key" : "Clave privada", + "Kerberos ticket" : "Ticket de Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Depósito", "Hostname" : "Nombre de equipo", diff --git a/apps/files_external/l10n/fi.js b/apps/files_external/l10n/fi.js index d37f1c3a602..77dc0e01344 100644 --- a/apps/files_external/l10n/fi.js +++ b/apps/files_external/l10n/fi.js @@ -70,6 +70,9 @@ OC.L10N.register( "User entered, store in database" : "Käyttäjän antama, tallennettu tietokantaan", "RSA public key" : "Julkinen RSA-avain", "Public key" : "Julkinen avain", + "RSA private key" : "Yksityinen RSA-avain", + "Private key" : "Yksityinen avain", + "Kerberos ticket" : "Kerberos-tiketti", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "Isäntänimi", diff --git a/apps/files_external/l10n/fi.json b/apps/files_external/l10n/fi.json index 9046ab5524d..8413073437c 100644 --- a/apps/files_external/l10n/fi.json +++ b/apps/files_external/l10n/fi.json @@ -68,6 +68,9 @@ "User entered, store in database" : "Käyttäjän antama, tallennettu tietokantaan", "RSA public key" : "Julkinen RSA-avain", "Public key" : "Julkinen avain", + "RSA private key" : "Yksityinen RSA-avain", + "Private key" : "Yksityinen avain", + "Kerberos ticket" : "Kerberos-tiketti", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "Isäntänimi", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index b756b6c5e9d..a50949b505a 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -72,6 +72,7 @@ OC.L10N.register( "Public key" : "Clé publique", "RSA private key" : "Clé privée RSA", "Private key" : "Clé privée", + "Kerberos ticket" : "Ticket Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "Nom de l'hôte", @@ -105,6 +106,7 @@ OC.L10N.register( "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" n'est pas installé. Le montage de %s n'est pas possible. Merci de demander à l'administrateur système de l'installer.", "External storage support" : "Support de stockage externe", "Adds basic external storage support" : "Ajout de la prise en charge basique du stockage externe", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre àaux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", "No external storage configured or you don't have the permission to configure them" : "Aucun stockage externe configuré ou vous n'avez pas l'autorisation de les configurer", "Name" : "Nom", "Storage type" : "Type de stockage", @@ -135,6 +137,7 @@ OC.L10N.register( "OpenStack" : "OpenStack", "Dropbox" : "Dropbox", "Google Drive" : "Google Drive", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des fournisseurs de stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, Google Drive, Dropbox, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre aux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", "No external storage configured" : "Aucun stockage externe configuré", "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels", "Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index e92598ad5a6..df5e75486ad 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -70,6 +70,7 @@ "Public key" : "Clé publique", "RSA private key" : "Clé privée RSA", "Private key" : "Clé privée", + "Kerberos ticket" : "Ticket Kerberos", "Amazon S3" : "Amazon S3", "Bucket" : "Bucket", "Hostname" : "Nom de l'hôte", @@ -103,6 +104,7 @@ "\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" n'est pas installé. Le montage de %s n'est pas possible. Merci de demander à l'administrateur système de l'installer.", "External storage support" : "Support de stockage externe", "Adds basic external storage support" : "Ajout de la prise en charge basique du stockage externe", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre àaux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", "No external storage configured or you don't have the permission to configure them" : "Aucun stockage externe configuré ou vous n'avez pas l'autorisation de les configurer", "Name" : "Nom", "Storage type" : "Type de stockage", @@ -133,6 +135,7 @@ "OpenStack" : "OpenStack", "Dropbox" : "Dropbox", "Google Drive" : "Google Drive", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, Google Drive, Dropbox, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Cette application permet aux administrateurs de configurer des connexions à des fournisseurs de stockage externes, tels que des serveurs FTP, des magasins d'objets S3 ou SWIFT, Google Drive, Dropbox, d'autres serveurs Nextcloud, des serveurs WebDAV, etc. Les administrateurs peuvent choisir les types de stockage à activer et peuvent monter ces emplacements de stockage pour un utilisateur, un groupe ou l'ensemble du système. Les utilisateurs verront apparaître un nouveau dossier dans leur répertoire racine Nextcloud, auquel ils pourront accéder et utiliser comme n'importe quel autre dossier Nextcloud. Le stockage externe permet également aux utilisateurs de partager des fichiers stockés dans ces emplacements externes. Dans ce cas, les informations d'identification du propriétaire du fichier sont utilisées lorsque le destinataire demande le fichier à partir du stockage externe, garantissant ainsi que le destinataire peut accéder au fichier partagé.\n\nLe stockage externe peut être configuré à l'aide de l'interface graphique ou via l'interface en ligne de commande. Cette deuxième option offre aux utilisateurs avancés une plus grande flexibilité pour configurer les montages de stockage externes en masse et définir les priorités de montage. D'autres informations sont disponibles dans la documentation de l'interface graphique de stockage externe et la documentation du fichier de configuration de stockage externe.", "No external storage configured" : "Aucun stockage externe configuré", "You can add external storages in the personal settings" : "Vous pouvez ajouter des stockages externes via vos paramètres personnels", "Allow users to mount the following external storage" : "Autoriser les utilisateurs à monter les stockages externes suivants", diff --git a/apps/files_external/l10n/ja.js b/apps/files_external/l10n/ja.js index 18de6cde60b..e4b5ea6af15 100644 --- a/apps/files_external/l10n/ja.js +++ b/apps/files_external/l10n/ja.js @@ -67,6 +67,8 @@ OC.L10N.register( "User entered, store in database" : "入力されたユーザーデータは、データベースに保管します", "RSA public key" : "RSA公開鍵", "Public key" : "公開鍵", + "RSA private key" : "RSA秘密鍵", + "Private key" : "秘密鍵", "Amazon S3" : "Amazon S3", "Bucket" : "バケット名", "Hostname" : "ホスト名", diff --git a/apps/files_external/l10n/ja.json b/apps/files_external/l10n/ja.json index 46b20c77285..d31aef2451c 100644 --- a/apps/files_external/l10n/ja.json +++ b/apps/files_external/l10n/ja.json @@ -65,6 +65,8 @@ "User entered, store in database" : "入力されたユーザーデータは、データベースに保管します", "RSA public key" : "RSA公開鍵", "Public key" : "公開鍵", + "RSA private key" : "RSA秘密鍵", + "Private key" : "秘密鍵", "Amazon S3" : "Amazon S3", "Bucket" : "バケット名", "Hostname" : "ホスト名", diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js index 64cefdb4166..bcd7cd0f8e9 100644 --- a/apps/files_external/l10n/pl.js +++ b/apps/files_external/l10n/pl.js @@ -17,7 +17,7 @@ OC.L10N.register( "Are you sure you want to delete this external storage?" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?", "Delete storage?" : "Usunąć magazyn?", "Saved" : "Zapisano", - "Saving..." : "Zapisywanie...", + "Saving..." : "Zapisywanie…", "Save" : "Zapisz", "Empty response from the server" : "Puste odpowiedzi z serwera", "Couldn't access. Please log out and in again to activate this mount point" : "Brak dostępu. Wyloguj się i zaloguj ponownie, aby aktywować ten punkt montowania", diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json index 6c61923bf68..dacff69d0b3 100644 --- a/apps/files_external/l10n/pl.json +++ b/apps/files_external/l10n/pl.json @@ -15,7 +15,7 @@ "Are you sure you want to delete this external storage?" : "Czy na pewno chcesz usunąć zewnętrzny magazyn?", "Delete storage?" : "Usunąć magazyn?", "Saved" : "Zapisano", - "Saving..." : "Zapisywanie...", + "Saving..." : "Zapisywanie…", "Save" : "Zapisz", "Empty response from the server" : "Puste odpowiedzi z serwera", "Couldn't access. Please log out and in again to activate this mount point" : "Brak dostępu. Wyloguj się i zaloguj ponownie, aby aktywować ten punkt montowania", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 7eda6f06b66..37123e840d8 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -122,9 +122,9 @@ OC.L10N.register( "External storage" : "Armazenamento Externo", "Authentication" : "Autenticação", "Configuration" : "Configuração", - "Available for" : "Disponível por", + "Available for" : "Disponível para", "Click to recheck the configuration" : "Clique para rechecar a configuração", - "Add storage" : "Adicionar armazenamento", + "Add storage" : "Adic. armazenamento", "Advanced settings" : "Configurações avançadas", "Delete" : "Excluir", "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index d3987af0145..8416a3915f5 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -120,9 +120,9 @@ "External storage" : "Armazenamento Externo", "Authentication" : "Autenticação", "Configuration" : "Configuração", - "Available for" : "Disponível por", + "Available for" : "Disponível para", "Click to recheck the configuration" : "Clique para rechecar a configuração", - "Add storage" : "Adicionar armazenamento", + "Add storage" : "Adic. armazenamento", "Advanced settings" : "Configurações avançadas", "Delete" : "Excluir", "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index e447db29b74..28117b1400b 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -72,6 +72,7 @@ OC.L10N.register( "Public key" : "Открытый ключ", "RSA private key" : "RSA частный ключ", "Private key" : "Частный ключ", + "Kerberos ticket" : "Kerberos тикет", "Amazon S3" : "Amazon S3", "Bucket" : "Корзина", "Hostname" : "Имя хоста", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index ebb0774f123..c9c494ad9e0 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -70,6 +70,7 @@ "Public key" : "Открытый ключ", "RSA private key" : "RSA частный ключ", "Private key" : "Частный ключ", + "Kerberos ticket" : "Kerberos тикет", "Amazon S3" : "Amazon S3", "Bucket" : "Корзина", "Hostname" : "Имя хоста", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index eea6e2cfa54..55523170b18 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -72,6 +72,7 @@ OC.L10N.register( "Public key" : "Herkese açık anahtar", "RSA private key" : "Özel RSA anahtarı", "Private key" : "Özel anahtar", + "Kerberos ticket" : "Kerberos bileti", "Amazon S3" : "Amazon S3", "Bucket" : "Buket", "Hostname" : "Sunucu adı", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index 98e048fef8f..3f0da66d5ca 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -70,6 +70,7 @@ "Public key" : "Herkese açık anahtar", "RSA private key" : "Özel RSA anahtarı", "Private key" : "Özel anahtar", + "Kerberos ticket" : "Kerberos bileti", "Amazon S3" : "Amazon S3", "Bucket" : "Buket", "Hostname" : "Sunucu adı", diff --git a/apps/files_external/lib/Lib/Storage/SMB.php b/apps/files_external/lib/Lib/Storage/SMB.php index 94b4a4e7f34..9c0e6910309 100644 --- a/apps/files_external/lib/Lib/Storage/SMB.php +++ b/apps/files_external/lib/Lib/Storage/SMB.php @@ -39,6 +39,7 @@ use Icewind\SMB\Exception\AlreadyExistsException; use Icewind\SMB\Exception\ConnectException; use Icewind\SMB\Exception\Exception; use Icewind\SMB\Exception\ForbiddenException; +use Icewind\SMB\Exception\InvalidArgumentException; use Icewind\SMB\Exception\NotFoundException; use Icewind\SMB\IFileInfo; use Icewind\SMB\Native\NativeServer; @@ -210,7 +211,7 @@ class SMB extends Common implements INotifyStorage { * @param string $target the new name of the path * @return bool true if the rename is successful, false otherwise */ - public function rename($source, $target) { + public function rename($source, $target, $retry = true) { if ($this->isRootDir($source) || $this->isRootDir($target)) { return false; } @@ -220,8 +221,21 @@ class SMB extends Common implements INotifyStorage { try { $result = $this->share->rename($absoluteSource, $absoluteTarget); } catch (AlreadyExistsException $e) { - $this->remove($target); - $result = $this->share->rename($absoluteSource, $absoluteTarget); + if ($retry) { + $this->remove($target); + $result = $this->share->rename($absoluteSource, $absoluteTarget, false); + } else { + \OC::$server->getLogger()->logException($e, ['level' => ILogger::WARN]); + return false; + } + } catch (InvalidArgumentException $e) { + if ($retry) { + $this->remove($target); + $result = $this->share->rename($absoluteSource, $absoluteTarget, false); + } else { + \OC::$server->getLogger()->logException($e, ['level' => ILogger::WARN]); + return false; + } } catch (\Exception $e) { \OC::$server->getLogger()->logException($e, ['level' => ILogger::WARN]); return false; diff --git a/apps/files_sharing/appinfo/database.xml b/apps/files_sharing/appinfo/database.xml index a70be408da4..c3cfb9e1c88 100644 --- a/apps/files_sharing/appinfo/database.xml +++ b/apps/files_sharing/appinfo/database.xml @@ -16,6 +16,17 @@ <length>4</length> </field> <field> + <name>parent</name> + <type>integer</type> + <default>-1</default> + <length>4</length> + </field> + <field> + <name>share_type</name> + <type>integer</type> + <length>4</length> + </field> + <field> <name>remote</name> <type>text</type> <notnull>true</notnull> diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml index 94a31bea63c..f2725880df0 100644 --- a/apps/files_sharing/appinfo/info.xml +++ b/apps/files_sharing/appinfo/info.xml @@ -9,7 +9,7 @@ Turning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation. </description> - <version>1.6.1</version> + <version>1.6.2</version> <licence>agpl</licence> <author>Michael Gapczynski</author> <author>Bjoern Schiessle</author> diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index de94efe7a79..88656b03211 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Mit Dir geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Shared with others" : "Von Dir geteilt", "Shared by link" : "Geteilt über einen Link", "Nothing shared with you yet" : "Bis jetzt wurde nichts mit dir geteilt", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "Von Dir geteilte Dateien und Ordner werden hier erscheinen", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", + "No deleted shares" : "Keine gelöschten Freigaben", + "Shares you deleted will show up here" : "Von dir gelöschte Freigaben werden hier erscheinen", + "Restore share" : "Freigabe wiederherstellen", + "Something happened. Unable to restore the share." : "Die Freigabe konnte nicht wiederhergestellt werden.", "You can upload into this folder" : "Du kannst in diesen Ordner hochladen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 5245dc41a78..ab1ef14692f 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Mit Dir geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Shared with others" : "Von Dir geteilt", "Shared by link" : "Geteilt über einen Link", "Nothing shared with you yet" : "Bis jetzt wurde nichts mit dir geteilt", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "Von Dir geteilte Dateien und Ordner werden hier erscheinen", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", + "No deleted shares" : "Keine gelöschten Freigaben", + "Shares you deleted will show up here" : "Von dir gelöschte Freigaben werden hier erscheinen", + "Restore share" : "Freigabe wiederherstellen", + "Something happened. Unable to restore the share." : "Die Freigabe konnte nicht wiederhergestellt werden.", "You can upload into this folder" : "Du kannst in diesen Ordner hochladen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 662add677d9..6bbe6d2462e 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Mit Ihnen geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Shared with others" : "Von Ihnen geteilt", "Shared by link" : "Geteilt über einen Link", "Nothing shared with you yet" : "Bis jetzt wurde nichts mit Ihnen geteilt", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "Dateien und Ordner, die Sie teilen, werden hier erscheinen", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", + "No deleted shares" : "Keine gelöschten Freigaben", + "Shares you deleted will show up here" : "Von Ihnen gelöschte Freigaben werden hier erscheinen", + "Restore share" : "Freigabe wiederherstellen", + "Something happened. Unable to restore the share." : "Die Freigabe konnte nicht wiederhergestellt werden.", "You can upload into this folder" : "Sie können in diesen Ordner hochladen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 9e55183e7eb..02624622991 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Mit Ihnen geteilt", + "Deleted shares" : "Gelöschte Freigaben", "Shared with others" : "Von Ihnen geteilt", "Shared by link" : "Geteilt über einen Link", "Nothing shared with you yet" : "Bis jetzt wurde nichts mit Ihnen geteilt", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "Dateien und Ordner, die Sie teilen, werden hier erscheinen", "No shared links" : "Keine geteilten Links", "Files and folders you share by link will show up here" : "Per Link freigegebene Dateien und Ordner werden hier erscheinen", + "No deleted shares" : "Keine gelöschten Freigaben", + "Shares you deleted will show up here" : "Von Ihnen gelöschte Freigaben werden hier erscheinen", + "Restore share" : "Freigabe wiederherstellen", + "Something happened. Unable to restore the share." : "Die Freigabe konnte nicht wiederhergestellt werden.", "You can upload into this folder" : "Sie können in diesen Ordner hochladen", "No compatible server found at {remote}" : "Keinen kompatiblen Server unter {remote} gefunden", "Invalid server URL" : "Falsche Server-URL", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 04d109417ea..30009bbbc47 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Compartido contigo", + "Deleted shares" : "Recursos compartidos eliminados", "Shared with others" : "Compartido con otros", "Shared by link" : "Compartido por enlace", "Nothing shared with you yet" : "Todavía nada compartido contigo", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "Aquí aparecerán los archivos y carpetas que compartas con otros", "No shared links" : "No hay enlaces compartidos", "Files and folders you share by link will show up here" : "Aquí aparecerán los archivos y carpetas que compartas mediante un enlace", + "No deleted shares" : "No hay recursos compartidos eliminados", + "Shares you deleted will show up here" : "Los recursos compartidos que elimines aparecerán aquí", + "Restore share" : "Restaurar recurso compartido", + "Something happened. Unable to restore the share." : "Algo ha sucedido. No se puede restaurar el recurso compartido.", "You can upload into this folder" : "Puedes subir archivos en esta carpeta", "No compatible server found at {remote}" : "No se ha encontrado un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválida", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index 6aa3f5cf201..2e93bb5e431 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Compartido contigo", + "Deleted shares" : "Recursos compartidos eliminados", "Shared with others" : "Compartido con otros", "Shared by link" : "Compartido por enlace", "Nothing shared with you yet" : "Todavía nada compartido contigo", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "Aquí aparecerán los archivos y carpetas que compartas con otros", "No shared links" : "No hay enlaces compartidos", "Files and folders you share by link will show up here" : "Aquí aparecerán los archivos y carpetas que compartas mediante un enlace", + "No deleted shares" : "No hay recursos compartidos eliminados", + "Shares you deleted will show up here" : "Los recursos compartidos que elimines aparecerán aquí", + "Restore share" : "Restaurar recurso compartido", + "Something happened. Unable to restore the share." : "Algo ha sucedido. No se puede restaurar el recurso compartido.", "You can upload into this folder" : "Puedes subir archivos en esta carpeta", "No compatible server found at {remote}" : "No se ha encontrado un servidor compatible en {remote}", "Invalid server URL" : "URL del servidor inválida", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 1e563a6a58e..79b6f726bbc 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Partagés avec vous", + "Deleted shares" : "Partages supprimés", "Shared with others" : "Partagés avec d'autres", "Shared by link" : "Partagés par lien", "Nothing shared with you yet" : "Aucun fichier n'est partagé avec vous pour l'instant", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "Les fichiers et dossiers que vous partagez apparaîtront ici", "No shared links" : "Aucun partage par lien", "Files and folders you share by link will show up here" : "Les fichiers et dossiers que vous partagez par lien apparaîtront ici", + "No deleted shares" : "Aucun partage supprimé", + "Shares you deleted will show up here" : "Les partages que vous avez supprimés apparaîtront ici", + "Restore share" : "Restaurer le partage", + "Something happened. Unable to restore the share." : "Quelque chose s'est passé. Impossible de restaurer le partage.", "You can upload into this folder" : "Vous pouvez téléverser dans ce dossier", "No compatible server found at {remote}" : "Aucun serveur compatible trouvé sur {remote}", "Invalid server URL" : "URL serveur invalide", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 2b14dce3070..c4604c8be65 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Partagés avec vous", + "Deleted shares" : "Partages supprimés", "Shared with others" : "Partagés avec d'autres", "Shared by link" : "Partagés par lien", "Nothing shared with you yet" : "Aucun fichier n'est partagé avec vous pour l'instant", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "Les fichiers et dossiers que vous partagez apparaîtront ici", "No shared links" : "Aucun partage par lien", "Files and folders you share by link will show up here" : "Les fichiers et dossiers que vous partagez par lien apparaîtront ici", + "No deleted shares" : "Aucun partage supprimé", + "Shares you deleted will show up here" : "Les partages que vous avez supprimés apparaîtront ici", + "Restore share" : "Restaurer le partage", + "Something happened. Unable to restore the share." : "Quelque chose s'est passé. Impossible de restaurer le partage.", "You can upload into this folder" : "Vous pouvez téléverser dans ce dossier", "No compatible server found at {remote}" : "Aucun serveur compatible trouvé sur {remote}", "Invalid server URL" : "URL serveur invalide", diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index 9384b880c63..488c20041a4 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "שיתף/שיתפה אתך", + "Deleted shares" : "שיתופים שנמחקו", "Shared with others" : "משותף עם אחרים", "Shared by link" : "משותף עם קישור", "Nothing shared with you yet" : "עדיין לא שיתפו אתך דבר", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "קבצים ותיקיות ששיתפת יוצגו כאן", "No shared links" : "אין קישורים משותפים", "Files and folders you share by link will show up here" : "קבצים ותיקיות ששיתפת עם קישור יוצגו כאן", + "No deleted shares" : "אין שיתופים שנמחקו", + "Shares you deleted will show up here" : "שיתופים שמחקת יופיעו כאן", + "Restore share" : "שחזור שיתוף", + "Something happened. Unable to restore the share." : "משהו התרחש. לא ניתן לשחזר את השיתוף.", "You can upload into this folder" : "ניתן להעלות לתיקייה זו", "No compatible server found at {remote}" : "לא נמצא שרת תואם בכתובת {remote}", "Invalid server URL" : "כתובת השרת שגויה", @@ -21,14 +26,25 @@ OC.L10N.register( "File shares" : "שיתופי קבצים", "Downloaded via public link" : "הורד על בסיס קישור ציבורי", "Downloaded by {email}" : "הורד על ידי {email}", + "{file} downloaded via public link" : "{file} התקבל דרך קישור ציבורי", + "{email} downloaded {file}" : "{file} הורד על ידי {email}", + "Shared with group {group}" : "שותף עם הקבוצה {group}", + "Removed share for group {group}" : "הוסר שיתוף עם הקבוצה {group}", + "{actor} shared with group {group}" : "שותף עם הקבוצה {group} על ידי {actor}", + "{actor} removed share for group {group}" : "הוסר השיתוף עם הקבוצה {group} על ידי {actor}", + "You shared {file} with group {group}" : "שיתפת {file} עם הקבוצה {group}", + "You removed group {group} from {file}" : "הסרת את הקבוצה {group} מהקובץ {file}", "Removed public link" : "הסיר/ה קישור ציבורי", "Public link expired" : "קישור ציבורי פג תוקף", "A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>", "A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>", "Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים", + "could not delete share" : "לא ניתן למחוק שיתוף", "Could not delete share" : "לא ניתן היה למחוק את השיתוף", "Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה", "Wrong path, file/folder doesn't exist" : "נתיב שגוי, קובץ/תיקייה אינם קיימים", + "Could not create share" : "לא ניתן ליצור שיתוף", + "invalid permissions" : "הרשאות שגויות", "Please specify a valid user" : "יש לספק משתמש חוקי", "Group sharing is disabled by the administrator" : "שיתוף קבוצתי מנוטרל על ידי המנהל", "Please specify a valid group" : "יש לספק קבוצה חוקית", @@ -37,18 +53,24 @@ OC.L10N.register( "Public upload is only possible for publicly shared folders" : "העלאה ציבורית אפשרית רק אל תיקיות משותפות ציבוריות", "Invalid date, date format must be YYYY-MM-DD" : "תאריך לא חוקי, תבנית התאריך חייבת להיות YYYY-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "שיתוף %s נכשל כיוון שהצד האחרוי ינו מאפשר שיתוף מסוג %s", + "You cannot share to a Circle if the app is not enabled" : "לא ניתן לשתף למעגל אם היישומון לא מופעל", + "Please specify a valid circle" : "נא לציין מעגל תקני", "Unknown share type" : "סוג שיתוף אינו מוכר", "Not a directory" : "אינה תיקייה", "Could not lock path" : "לא ניתן היה לנעול נתיב", "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", "Cannot increase permissions" : "לא ניתן להעלות הרשאות", + "shared by %s" : "שותף על ידי %s", "Download" : "הורדה", "Direct link" : "קישור ישיר", + "Add to your Nextcloud" : "הוספה ל־Nextcloud שלך", "Share API is disabled" : "שיתוף API מנוטרל", + "File sharing" : "שיתוף קבצים", "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Name" : "שם", "Share time" : "זמן שיתוף", + "Expiration date" : "מועד תפוגה", "Sorry, this link doesn’t seem to work anymore." : "מצטערים, לא נראה שקישור זה עובד יותר. ", "Reasons might be:" : "הסיבות יכולות להיות:", "the item was removed" : "הפריט הוסר", @@ -56,6 +78,8 @@ OC.L10N.register( "sharing is disabled" : "השיתוף נוטרל", "For more info, please ask the person who sent this link." : "למידע נוסף, יש לפנות לשולח קישור זה.", "Download %s" : "הורדה %s", + "Upload files to %s" : "העלאת קבצים על %s", + "Select or drop files" : "בחירה או השלכה של קבצים", "This share is password-protected" : "שיתוף זה מוגן סיסמא", "The password is wrong. Try again." : "הסיסמא שגויה. יש לנסות שנית.", "Password" : "סיסמא" diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index efcf309572e..6c278207a48 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "שיתף/שיתפה אתך", + "Deleted shares" : "שיתופים שנמחקו", "Shared with others" : "משותף עם אחרים", "Shared by link" : "משותף עם קישור", "Nothing shared with you yet" : "עדיין לא שיתפו אתך דבר", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "קבצים ותיקיות ששיתפת יוצגו כאן", "No shared links" : "אין קישורים משותפים", "Files and folders you share by link will show up here" : "קבצים ותיקיות ששיתפת עם קישור יוצגו כאן", + "No deleted shares" : "אין שיתופים שנמחקו", + "Shares you deleted will show up here" : "שיתופים שמחקת יופיעו כאן", + "Restore share" : "שחזור שיתוף", + "Something happened. Unable to restore the share." : "משהו התרחש. לא ניתן לשחזר את השיתוף.", "You can upload into this folder" : "ניתן להעלות לתיקייה זו", "No compatible server found at {remote}" : "לא נמצא שרת תואם בכתובת {remote}", "Invalid server URL" : "כתובת השרת שגויה", @@ -19,14 +24,25 @@ "File shares" : "שיתופי קבצים", "Downloaded via public link" : "הורד על בסיס קישור ציבורי", "Downloaded by {email}" : "הורד על ידי {email}", + "{file} downloaded via public link" : "{file} התקבל דרך קישור ציבורי", + "{email} downloaded {file}" : "{file} הורד על ידי {email}", + "Shared with group {group}" : "שותף עם הקבוצה {group}", + "Removed share for group {group}" : "הוסר שיתוף עם הקבוצה {group}", + "{actor} shared with group {group}" : "שותף עם הקבוצה {group} על ידי {actor}", + "{actor} removed share for group {group}" : "הוסר השיתוף עם הקבוצה {group} על ידי {actor}", + "You shared {file} with group {group}" : "שיתפת {file} עם הקבוצה {group}", + "You removed group {group} from {file}" : "הסרת את הקבוצה {group} מהקובץ {file}", "Removed public link" : "הסיר/ה קישור ציבורי", "Public link expired" : "קישור ציבורי פג תוקף", "A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>", "A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>", "Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים", + "could not delete share" : "לא ניתן למחוק שיתוף", "Could not delete share" : "לא ניתן היה למחוק את השיתוף", "Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה", "Wrong path, file/folder doesn't exist" : "נתיב שגוי, קובץ/תיקייה אינם קיימים", + "Could not create share" : "לא ניתן ליצור שיתוף", + "invalid permissions" : "הרשאות שגויות", "Please specify a valid user" : "יש לספק משתמש חוקי", "Group sharing is disabled by the administrator" : "שיתוף קבוצתי מנוטרל על ידי המנהל", "Please specify a valid group" : "יש לספק קבוצה חוקית", @@ -35,18 +51,24 @@ "Public upload is only possible for publicly shared folders" : "העלאה ציבורית אפשרית רק אל תיקיות משותפות ציבוריות", "Invalid date, date format must be YYYY-MM-DD" : "תאריך לא חוקי, תבנית התאריך חייבת להיות YYYY-MM-DD", "Sharing %s failed because the back end does not allow shares from type %s" : "שיתוף %s נכשל כיוון שהצד האחרוי ינו מאפשר שיתוף מסוג %s", + "You cannot share to a Circle if the app is not enabled" : "לא ניתן לשתף למעגל אם היישומון לא מופעל", + "Please specify a valid circle" : "נא לציין מעגל תקני", "Unknown share type" : "סוג שיתוף אינו מוכר", "Not a directory" : "אינה תיקייה", "Could not lock path" : "לא ניתן היה לנעול נתיב", "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", "Cannot increase permissions" : "לא ניתן להעלות הרשאות", + "shared by %s" : "שותף על ידי %s", "Download" : "הורדה", "Direct link" : "קישור ישיר", + "Add to your Nextcloud" : "הוספה ל־Nextcloud שלך", "Share API is disabled" : "שיתוף API מנוטרל", + "File sharing" : "שיתוף קבצים", "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Name" : "שם", "Share time" : "זמן שיתוף", + "Expiration date" : "מועד תפוגה", "Sorry, this link doesn’t seem to work anymore." : "מצטערים, לא נראה שקישור זה עובד יותר. ", "Reasons might be:" : "הסיבות יכולות להיות:", "the item was removed" : "הפריט הוסר", @@ -54,6 +76,8 @@ "sharing is disabled" : "השיתוף נוטרל", "For more info, please ask the person who sent this link." : "למידע נוסף, יש לפנות לשולח קישור זה.", "Download %s" : "הורדה %s", + "Upload files to %s" : "העלאת קבצים על %s", + "Select or drop files" : "בחירה או השלכה של קבצים", "This share is password-protected" : "שיתוף זה מוגן סיסמא", "The password is wrong. Try again." : "הסיסמא שגויה. יש לנסות שנית.", "Password" : "סיסמא" diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index ecb66c09d13..d1943c6c343 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Condivisi con te", + "Deleted shares" : "Condivisioni eliminate", "Shared with others" : "Condivisi con altri", "Shared by link" : "Condivisi tramite collegamento", "Nothing shared with you yet" : "Non è stato condiviso ancora niente con te", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "I file e le cartelle che condividi saranno mostrati qui", "No shared links" : "Nessun collegamento condiviso", "Files and folders you share by link will show up here" : "I file e le cartelle che condividi tramite collegamento saranno mostrati qui", + "No deleted shares" : "Nessuna condivisione eliminata", + "Shares you deleted will show up here" : "Qui saranno mostrate le condivisioni che hai eliminato", + "Restore share" : "Ripristina condivisione", + "Something happened. Unable to restore the share." : "Qualcosa non ha funzionato. Impossible ripristinare la condivisione.", "You can upload into this folder" : "Puoi caricare in questa cartella", "No compatible server found at {remote}" : "Nessun server compatibile trovato su {remote}", "Invalid server URL" : "URL del server non valido", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index 580811ecaa2..dcdac3411d5 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Condivisi con te", + "Deleted shares" : "Condivisioni eliminate", "Shared with others" : "Condivisi con altri", "Shared by link" : "Condivisi tramite collegamento", "Nothing shared with you yet" : "Non è stato condiviso ancora niente con te", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "I file e le cartelle che condividi saranno mostrati qui", "No shared links" : "Nessun collegamento condiviso", "Files and folders you share by link will show up here" : "I file e le cartelle che condividi tramite collegamento saranno mostrati qui", + "No deleted shares" : "Nessuna condivisione eliminata", + "Shares you deleted will show up here" : "Qui saranno mostrate le condivisioni che hai eliminato", + "Restore share" : "Ripristina condivisione", + "Something happened. Unable to restore the share." : "Qualcosa non ha funzionato. Impossible ripristinare la condivisione.", "You can upload into this folder" : "Puoi caricare in questa cartella", "No compatible server found at {remote}" : "Nessun server compatibile trovato su {remote}", "Invalid server URL" : "URL del server non valido", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index fceba93efcc..6871d5c2708 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -17,7 +17,7 @@ OC.L10N.register( "Share" : "Dalintis", "No expiration date set" : "Dalinimosi pabaigos data yra nenustatyta", "Shared by" : "Bendrina", - "Sharing" : "Išsiųsta", + "Sharing" : "Siuntimas", "File shares" : "Bendrinami duomenys", "Downloaded via public link" : "Atsisiųsta per viešą nuorodą", "Downloaded by {email}" : "Parsisiųsta į {email}", diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 50246710758..b7d2fe504d1 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -15,7 +15,7 @@ "Share" : "Dalintis", "No expiration date set" : "Dalinimosi pabaigos data yra nenustatyta", "Shared by" : "Bendrina", - "Sharing" : "Išsiųsta", + "Sharing" : "Siuntimas", "File shares" : "Bendrinami duomenys", "Downloaded via public link" : "Atsisiųsta per viešą nuorodą", "Downloaded by {email}" : "Parsisiųsta į {email}", diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index 80640c3599c..4f1485ceece 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -105,7 +105,7 @@ OC.L10N.register( "Download %s" : "Pobierz %s", "Upload files to %s" : "Prześlij pliki do %s", "Select or drop files" : "Wybierz lub upuść pliki", - "Uploading files…" : "Wysyłanie plików...", + "Uploading files…" : "Wysyłanie plików…", "Uploaded files:" : "Wysłane pliki:", "{actor} removed you from {file}" : "{actor} usunął cie z {file}", "%s is publicly shared" : "%s udostępnione/ych publicznie ", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index 5714778abd6..c2a2bc416ff 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -103,7 +103,7 @@ "Download %s" : "Pobierz %s", "Upload files to %s" : "Prześlij pliki do %s", "Select or drop files" : "Wybierz lub upuść pliki", - "Uploading files…" : "Wysyłanie plików...", + "Uploading files…" : "Wysyłanie plików…", "Uploaded files:" : "Wysłane pliki:", "{actor} removed you from {file}" : "{actor} usunął cie z {file}", "%s is publicly shared" : "%s udostępnione/ych publicznie ", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index e6ba86a70dc..a03ff308909 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Compartilhado com você", + "Deleted shares" : "Compartilhamentos excluídos", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado por link", "Nothing shared with you yet" : "Nada foi compartilhado!", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "Arquivos e pastas que você compartilhar serão exibidos aqui.", "No shared links" : "Nenhum link compartilhado", "Files and folders you share by link will show up here" : "Arquivos e pastas que você compartilha por link serão mostrados aqui", + "No deleted shares" : "Não há compartilhamentos excluídos", + "Shares you deleted will show up here" : "Compartilhamentos excluídos aparecem aqui", + "Restore share" : "Restaurar compartilhamento", + "Something happened. Unable to restore the share." : "Algo aconteceu. Não foi possível restaurar o compartilhamento.", "You can upload into this folder" : "Você não pode enviar arquivos para esta pasta", "No compatible server found at {remote}" : "Nenhum servidor compativel encontrado em {remote}", "Invalid server URL" : "URL do servidor inválida", @@ -61,7 +66,7 @@ OC.L10N.register( "{actor} removed {user} from {file}" : "{actor} excluiu {user} de {file}", "{actor} shared {file} with you" : "{actor} compartilhou {file} com você", "{actor} removed you from the share named {file}" : "{actor} removeu você do compartilhamento chamado {file}", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por email ou por link publico foi <strong>baixado</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por e-mail ou por link publico foi <strong>baixado</strong>", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index b84d482824c..031526ec361 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Compartilhado com você", + "Deleted shares" : "Compartilhamentos excluídos", "Shared with others" : "Compartilhado com outros", "Shared by link" : "Compartilhado por link", "Nothing shared with you yet" : "Nada foi compartilhado!", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "Arquivos e pastas que você compartilhar serão exibidos aqui.", "No shared links" : "Nenhum link compartilhado", "Files and folders you share by link will show up here" : "Arquivos e pastas que você compartilha por link serão mostrados aqui", + "No deleted shares" : "Não há compartilhamentos excluídos", + "Shares you deleted will show up here" : "Compartilhamentos excluídos aparecem aqui", + "Restore share" : "Restaurar compartilhamento", + "Something happened. Unable to restore the share." : "Algo aconteceu. Não foi possível restaurar o compartilhamento.", "You can upload into this folder" : "Você não pode enviar arquivos para esta pasta", "No compatible server found at {remote}" : "Nenhum servidor compativel encontrado em {remote}", "Invalid server URL" : "URL do servidor inválida", @@ -59,7 +64,7 @@ "{actor} removed {user} from {file}" : "{actor} excluiu {user} de {file}", "{actor} shared {file} with you" : "{actor} compartilhou {file} com você", "{actor} removed you from the share named {file}" : "{actor} removeu você do compartilhamento chamado {file}", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por email ou por link publico foi <strong>baixado</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Um arquivo ou pasta compartilhado por e-mail ou por link publico foi <strong>baixado</strong>", "A file or folder was shared from <strong>another server</strong>" : "Um arquivo ou pasta foi compartilhado a partir de <strong>outro servidor</strong>", "A file or folder has been <strong>shared</strong>" : "Um arquivo ou pasta foi <strong>compartilhado</strong> ", "Wrong share ID, share doesn't exist" : "ID de compartilhamento errado, o compartilhamento não existe", diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index e9630eb2b03..5648c36e08f 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -2,6 +2,7 @@ OC.L10N.register( "files_sharing", { "Shared with you" : "Дељено са вама", + "Deleted shares" : "Обрисана дељења", "Shared with others" : "Дељено са осталима", "Shared by link" : "Дељено путем везе", "Nothing shared with you yet" : "Још увек се ништа не дели са Вама", @@ -10,6 +11,10 @@ OC.L10N.register( "Files and folders you share will show up here" : "Фајлови и фасцикле које делите појавиће се овде", "No shared links" : "Нема веза за дељење", "Files and folders you share by link will show up here" : "Фајлови и фасцикле које делите путем везе појавиће се овде", + "No deleted shares" : "Нема обрисаних дељења", + "Shares you deleted will show up here" : "Дељења која обришете ће се појавити овде", + "Restore share" : "Поврати дељење", + "Something happened. Unable to restore the share." : "Нешто чудно се десило. Дељење не може да се поврати.", "You can upload into this folder" : "Можете да отпремате у ову фасциклу", "No compatible server found at {remote}" : "Нема компатибилног сервера на {remote}", "Invalid server URL" : "Неисправна адреса сервера", diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index c9058005d25..eedf922b2cc 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -1,5 +1,6 @@ { "translations": { "Shared with you" : "Дељено са вама", + "Deleted shares" : "Обрисана дељења", "Shared with others" : "Дељено са осталима", "Shared by link" : "Дељено путем везе", "Nothing shared with you yet" : "Још увек се ништа не дели са Вама", @@ -8,6 +9,10 @@ "Files and folders you share will show up here" : "Фајлови и фасцикле које делите појавиће се овде", "No shared links" : "Нема веза за дељење", "Files and folders you share by link will show up here" : "Фајлови и фасцикле које делите путем везе појавиће се овде", + "No deleted shares" : "Нема обрисаних дељења", + "Shares you deleted will show up here" : "Дељења која обришете ће се појавити овде", + "Restore share" : "Поврати дељење", + "Something happened. Unable to restore the share." : "Нешто чудно се десило. Дељење не може да се поврати.", "You can upload into this folder" : "Можете да отпремате у ову фасциклу", "No compatible server found at {remote}" : "Нема компатибилног сервера на {remote}", "Invalid server URL" : "Неисправна адреса сервера", diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index e6ab4eb2cf1..a7d4755fbf0 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -105,6 +105,8 @@ class Application extends App { $server->query(\OCP\OCS\IDiscoveryService::class), $server->getCloudFederationProviderManager(), $server->getCloudFederationFactory(), + $server->getGroupManager(), + $server->getUserManager(), $uid ); }); diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php index 67ff9eae6d3..9ad0e080f46 100644 --- a/apps/files_sharing/lib/Controller/ShareAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareAPIController.php @@ -48,6 +48,7 @@ use OCP\IRequest; use OCP\IURLGenerator; use OCP\Files\IRootFolder; use OCP\Lock\LockedException; +use OCP\Share; use OCP\Share\IManager; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\Exceptions\GenericShareException; @@ -181,15 +182,15 @@ class ShareAPIController extends OCSController { $result['expiration'] = $expiration->format('Y-m-d 00:00:00'); } - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) { + if ($share->getShareType() === Share::SHARE_TYPE_USER) { $sharedWith = $this->userManager->get($share->getSharedWith()); $result['share_with'] = $share->getSharedWith(); $result['share_with_displayname'] = $sharedWith !== null ? $sharedWith->getDisplayName() : $share->getSharedWith(); - } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + } else if ($share->getShareType() === Share::SHARE_TYPE_GROUP) { $group = $this->groupManager->get($share->getSharedWith()); $result['share_with'] = $share->getSharedWith(); $result['share_with_displayname'] = $group !== null ? $group->getDisplayName() : $share->getSharedWith(); - } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + } else if ($share->getShareType() === Share::SHARE_TYPE_LINK) { $result['share_with'] = $share->getPassword(); $result['share_with_displayname'] = $share->getPassword(); @@ -197,16 +198,16 @@ class ShareAPIController extends OCSController { $result['token'] = $share->getToken(); $result['url'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share->getToken()]); - } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) { + } else if ($share->getShareType() === Share::SHARE_TYPE_REMOTE || $share->getShareType() === Share::SHARE_TYPE_REMOTE_GROUP) { $result['share_with'] = $share->getSharedWith(); $result['share_with_displayname'] = $this->getDisplayNameFromAddressBook($share->getSharedWith(), 'CLOUD'); $result['token'] = $share->getToken(); - } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) { + } else if ($share->getShareType() === Share::SHARE_TYPE_EMAIL) { $result['share_with'] = $share->getSharedWith(); $result['password'] = $share->getPassword(); $result['share_with_displayname'] = $this->getDisplayNameFromAddressBook($share->getSharedWith(), 'EMAIL'); $result['token'] = $share->getToken(); - } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) { + } else if ($share->getShareType() === Share::SHARE_TYPE_CIRCLE) { // getSharedWith() returns either "name (type, owner)" or // "name (type, owner) [id]", depending on the Circles app version. $hasCircleId = (substr($share->getSharedWith(), -1) === ']'); @@ -301,7 +302,7 @@ class ShareAPIController extends OCSController { throw new OCSNotFoundException($this->l->t('Could not delete share')); } - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP && + if ($share->getShareType() === Share::SHARE_TYPE_GROUP && $share->getShareOwner() !== $this->currentUser && $share->getSharedBy() !== $this->currentUser) { $this->shareManager->deleteFromSelf($share, $this->currentUser); @@ -388,14 +389,14 @@ class ShareAPIController extends OCSController { $permissions &= ~($permissions & ~$path->getPermissions()); } - if ($shareType === \OCP\Share::SHARE_TYPE_USER) { + if ($shareType === Share::SHARE_TYPE_USER) { // Valid user is required to share if ($shareWith === null || !$this->userManager->userExists($shareWith)) { throw new OCSNotFoundException($this->l->t('Please specify a valid user')); } $share->setSharedWith($shareWith); $share->setPermissions($permissions); - } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { + } else if ($shareType === Share::SHARE_TYPE_GROUP) { if (!$this->shareManager->allowGroupSharing()) { throw new OCSNotFoundException($this->l->t('Group sharing is disabled by the administrator')); } @@ -406,7 +407,7 @@ class ShareAPIController extends OCSController { } $share->setSharedWith($shareWith); $share->setPermissions($permissions); - } else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) { + } else if ($shareType === Share::SHARE_TYPE_LINK) { //Can we even share links? if (!$this->shareManager->shareApiAllowLinks()) { throw new OCSNotFoundException($this->l->t('Public link sharing is disabled by the administrator')); @@ -416,7 +417,7 @@ class ShareAPIController extends OCSController { * For now we only allow 1 link share. * Return the existing link share if this is a duplicate */ - $existingShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_LINK, $path, false, 1, 0); + $existingShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_LINK, $path, false, 1, 0); if (!empty($existingShares)) { return new DataResponse($this->formatShare($existingShares[0])); } @@ -457,21 +458,28 @@ class ShareAPIController extends OCSController { } } - } else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) { + } else if ($shareType === Share::SHARE_TYPE_REMOTE) { if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) { throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType])); } $share->setSharedWith($shareWith); $share->setPermissions($permissions); - } else if ($shareType === \OCP\Share::SHARE_TYPE_EMAIL) { + } else if ($shareType === Share::SHARE_TYPE_REMOTE_GROUP) { + if (!$this->shareManager->outgoingServer2ServerGroupSharesAllowed()) { + throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType])); + } + + $share->setSharedWith($shareWith); + $share->setPermissions($permissions); + } else if ($shareType === Share::SHARE_TYPE_EMAIL) { if ($share->getNodeType() === 'file') { $share->setPermissions(Constants::PERMISSION_READ); } else { $share->setPermissions($permissions); } $share->setSharedWith($shareWith); - } else if ($shareType === \OCP\Share::SHARE_TYPE_CIRCLE) { + } else if ($shareType === Share::SHARE_TYPE_CIRCLE) { if (!\OC::$server->getAppManager()->isEnabledForUser('circles') || !class_exists('\OCA\Circles\ShareByCircleProvider')) { throw new OCSNotFoundException($this->l->t('You cannot share to a Circle if the app is not enabled')); } @@ -512,9 +520,9 @@ class ShareAPIController extends OCSController { */ private function getSharedWithMe($node = null, bool $includeTags): DataResponse { - $userShares = $this->shareManager->getSharedWith($this->currentUser, \OCP\Share::SHARE_TYPE_USER, $node, -1, 0); - $groupShares = $this->shareManager->getSharedWith($this->currentUser, \OCP\Share::SHARE_TYPE_GROUP, $node, -1, 0); - $circleShares = $this->shareManager->getSharedWith($this->currentUser, \OCP\Share::SHARE_TYPE_CIRCLE, $node, -1, 0); + $userShares = $this->shareManager->getSharedWith($this->currentUser, Share::SHARE_TYPE_USER, $node, -1, 0); + $groupShares = $this->shareManager->getSharedWith($this->currentUser, Share::SHARE_TYPE_GROUP, $node, -1, 0); + $circleShares = $this->shareManager->getSharedWith($this->currentUser, Share::SHARE_TYPE_CIRCLE, $node, -1, 0); $shares = array_merge($userShares, $groupShares, $circleShares); @@ -554,14 +562,14 @@ class ShareAPIController extends OCSController { /** @var \OCP\Share\IShare[] $shares */ $shares = []; foreach ($nodes as $node) { - $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_USER, $node, false, -1, 0)); - $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_GROUP, $node, false, -1, 0)); - $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_LINK, $node, false, -1, 0)); - if($this->shareManager->shareProviderExists(\OCP\Share::SHARE_TYPE_EMAIL)) { - $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_EMAIL, $node, false, -1, 0)); + $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_USER, $node, false, -1, 0)); + $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_GROUP, $node, false, -1, 0)); + $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_LINK, $node, false, -1, 0)); + if($this->shareManager->shareProviderExists(Share::SHARE_TYPE_EMAIL)) { + $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_EMAIL, $node, false, -1, 0)); } if ($this->shareManager->outgoingServer2ServerSharesAllowed()) { - $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_REMOTE, $node, false, -1, 0)); + $shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_REMOTE, $node, false, -1, 0)); } } @@ -635,16 +643,16 @@ class ShareAPIController extends OCSController { } // Get all shares - $userShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_USER, $path, $reshares, -1, 0); - $groupShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_GROUP, $path, $reshares, -1, 0); - $linkShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_LINK, $path, $reshares, -1, 0); - if ($this->shareManager->shareProviderExists(\OCP\Share::SHARE_TYPE_EMAIL)) { - $mailShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_EMAIL, $path, $reshares, -1, 0); + $userShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_USER, $path, $reshares, -1, 0); + $groupShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_GROUP, $path, $reshares, -1, 0); + $linkShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_LINK, $path, $reshares, -1, 0); + if ($this->shareManager->shareProviderExists(Share::SHARE_TYPE_EMAIL)) { + $mailShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_EMAIL, $path, $reshares, -1, 0); } else { $mailShares = []; } - if ($this->shareManager->shareProviderExists(\OCP\Share::SHARE_TYPE_CIRCLE)) { - $circleShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_CIRCLE, $path, $reshares, -1, 0); + if ($this->shareManager->shareProviderExists(Share::SHARE_TYPE_CIRCLE)) { + $circleShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_CIRCLE, $path, $reshares, -1, 0); } else { $circleShares = []; } @@ -652,7 +660,12 @@ class ShareAPIController extends OCSController { $shares = array_merge($userShares, $groupShares, $linkShares, $mailShares, $circleShares); if ($this->shareManager->outgoingServer2ServerSharesAllowed()) { - $federatedShares = $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_REMOTE, $path, $reshares, -1, 0); + $federatedShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_REMOTE, $path, $reshares, -1, 0); + $shares = array_merge($shares, $federatedShares); + } + + if ($this->shareManager->outgoingServer2ServerGroupSharesAllowed()) { + $federatedShares = $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_REMOTE_GROUP, $path, $reshares, -1, 0); $shares = array_merge($shares, $federatedShares); } @@ -711,7 +724,7 @@ class ShareAPIController extends OCSController { /* * expirationdate, password and publicUpload only make sense for link shares */ - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) { + if ($share->getShareType() === Share::SHARE_TYPE_LINK) { $newPermissions = null; if ($publicUpload === 'true') { @@ -783,7 +796,7 @@ class ShareAPIController extends OCSController { $share->setPermissions($permissions); } - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) { + if ($share->getShareType() === Share::SHARE_TYPE_EMAIL) { if ($password === '') { $share->setPassword(null); } else if ($password !== null) { @@ -806,8 +819,8 @@ class ShareAPIController extends OCSController { if ($permissions !== null && $share->getShareOwner() !== $this->currentUser) { /* Check if this is an incomming share */ - $incomingShares = $this->shareManager->getSharedWith($this->currentUser, \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0); - $incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser, \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0)); + $incomingShares = $this->shareManager->getSharedWith($this->currentUser, Share::SHARE_TYPE_USER, $share->getNode(), -1, 0); + $incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser, Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0)); /** @var \OCP\Share\IShare[] $incomingShares */ if (!empty($incomingShares)) { @@ -846,13 +859,13 @@ class ShareAPIController extends OCSController { } // If the share is shared with you (or a group you are a member of) - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER && + if ($share->getShareType() === Share::SHARE_TYPE_USER && $share->getSharedWith() === $this->currentUser ) { return true; } - if ($checkGroups && $share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + if ($checkGroups && $share->getShareType() === Share::SHARE_TYPE_GROUP) { $sharedWith = $this->groupManager->get($share->getSharedWith()); $user = $this->userManager->get($this->currentUser); if ($user !== null && $sharedWith !== null && $sharedWith->inGroup($user)) { @@ -860,7 +873,7 @@ class ShareAPIController extends OCSController { } } - if ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) { + if ($share->getShareType() === Share::SHARE_TYPE_CIRCLE) { // TODO: have a sanity check like above? return true; } @@ -915,7 +928,7 @@ class ShareAPIController extends OCSController { try { - if ($this->shareManager->shareProviderExists(\OCP\Share::SHARE_TYPE_CIRCLE)) { + if ($this->shareManager->shareProviderExists(Share::SHARE_TYPE_CIRCLE)) { $share = $this->shareManager->getShareById('ocCircleShare:' . $id, $this->currentUser); return $share; } @@ -924,7 +937,7 @@ class ShareAPIController extends OCSController { } try { - if ($this->shareManager->shareProviderExists(\OCP\Share::SHARE_TYPE_EMAIL)) { + if ($this->shareManager->shareProviderExists(Share::SHARE_TYPE_EMAIL)) { $share = $this->shareManager->getShareById('ocMailShare:' . $id, $this->currentUser); return $share; } diff --git a/apps/files_sharing/lib/Controller/ShareesAPIController.php b/apps/files_sharing/lib/Controller/ShareesAPIController.php index d25f24f6f72..ee95661d4c6 100644 --- a/apps/files_sharing/lib/Controller/ShareesAPIController.php +++ b/apps/files_sharing/lib/Controller/ShareesAPIController.php @@ -67,12 +67,14 @@ class ShareesAPIController extends OCSController { 'users' => [], 'groups' => [], 'remotes' => [], + 'remote_groups' => [], 'emails' => [], 'circles' => [], ], 'users' => [], 'groups' => [], 'remotes' => [], + 'remote_groups' => [], 'emails' => [], 'lookup' => [], 'circles' => [], @@ -153,6 +155,10 @@ class ShareesAPIController extends OCSController { $shareTypes[] = Share::SHARE_TYPE_REMOTE; } + if ($this->isRemoteGroupSharingAllowed($itemType)) { + $shareTypes[] = Share::SHARE_TYPE_REMOTE_GROUP; + } + if ($this->shareManager->shareProviderExists(Share::SHARE_TYPE_EMAIL)) { $shareTypes[] = Share::SHARE_TYPE_EMAIL; } @@ -216,6 +222,16 @@ class ShareesAPIController extends OCSController { } } + protected function isRemoteGroupSharingAllowed(string $itemType): bool { + try { + // FIXME: static foo makes unit testing unnecessarily difficult + $backend = \OC\Share\Share::getBackend($itemType); + return $backend->isShareTypeAllowed(Share::SHARE_TYPE_REMOTE_GROUP); + } catch (\Exception $e) { + return false; + } + } + /** * Generates a bunch of pagination links for the current page diff --git a/apps/files_sharing/lib/External/Manager.php b/apps/files_sharing/lib/External/Manager.php index 02783560afe..6a036b663d9 100644 --- a/apps/files_sharing/lib/External/Manager.php +++ b/apps/files_sharing/lib/External/Manager.php @@ -39,6 +39,8 @@ use OCP\Files; use OCP\Files\Storage\IStorageFactory; use OCP\Http\Client\IClientService; use OCP\IDBConnection; +use OCP\IGroupManager; +use OCP\IUserManager; use OCP\Notification\IManager; use OCP\OCS\IDiscoveryService; use OCP\Share; @@ -87,6 +89,12 @@ class Manager { /** @var ICloudFederationFactory */ private $cloudFederationFactory; + /** @var IGroupManager */ + private $groupManager; + + /** @var IUserManager */ + private $userManager; + /** * @param IDBConnection $connection * @param \OC\Files\Mount\Manager $mountManager @@ -96,6 +104,8 @@ class Manager { * @param IDiscoveryService $discoveryService * @param ICloudFederationProviderManager $cloudFederationProviderManager * @param ICloudFederationFactory $cloudFederationFactory + * @param IGroupManager $groupManager + * @param IUserManager $userManager * @param string $uid */ public function __construct(IDBConnection $connection, @@ -106,6 +116,8 @@ class Manager { IDiscoveryService $discoveryService, ICloudFederationProviderManager $cloudFederationProviderManager, ICloudFederationFactory $cloudFederationFactory, + IGroupManager $groupManager, + IUserManager $userManager, $uid) { $this->connection = $connection; $this->mountManager = $mountManager; @@ -116,6 +128,8 @@ class Manager { $this->discoveryService = $discoveryService; $this->cloudFederationProviderManager = $cloudFederationProviderManager; $this->cloudFederationFactory = $cloudFederationFactory; + $this->groupManager = $groupManager; + $this->userManager = $userManager; } /** @@ -126,12 +140,15 @@ class Manager { * @param string $password * @param string $name * @param string $owner + * @param int $shareType * @param boolean $accepted * @param string $user * @param int $remoteId + * @param int $parent * @return Mount|null + * @throws \Doctrine\DBAL\DBALException */ - public function addShare($remote, $token, $password, $name, $owner, $accepted=false, $user = null, $remoteId = -1) { + public function addShare($remote, $token, $password, $name, $owner, $shareType, $accepted=false, $user = null, $remoteId = -1, $parent = -1) { $user = $user ? $user : $this->uid; $accepted = $accepted ? 1 : 0; @@ -156,6 +173,7 @@ class Manager { 'mountpoint_hash' => $hash, 'accepted' => $accepted, 'remote_id' => $remoteId, + 'share_type' => $shareType, ]; $i = 1; @@ -172,12 +190,7 @@ class Manager { $mountPoint = Filesystem::normalizePath('/' . $mountPoint); $hash = md5($mountPoint); - $query = $this->connection->prepare(' - INSERT INTO `*PREFIX*share_external` - (`remote`, `share_token`, `password`, `name`, `owner`, `user`, `mountpoint`, `mountpoint_hash`, `accepted`, `remote_id`) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - '); - $query->execute(array($remote, $token, $password, $name, $owner, $user, $mountPoint, $hash, $accepted, $remoteId)); + $this->writeShareToDb($remote, $token, $password, $name, $owner, $user, $mountPoint, $hash, $accepted, $remoteId, $parent, $shareType); $options = array( 'remote' => $remote, @@ -190,6 +203,32 @@ class Manager { } /** + * write remote share to the database + * + * @param $remote + * @param $token + * @param $password + * @param $name + * @param $owner + * @param $user + * @param $mountPoint + * @param $hash + * @param $accepted + * @param $remoteId + * @param $parent + * @param $shareType + * @return bool + */ + private function writeShareToDb($remote, $token, $password, $name, $owner, $user, $mountPoint, $hash, $accepted, $remoteId, $parent, $shareType) { + $query = $this->connection->prepare(' + INSERT INTO `*PREFIX*share_external` + (`remote`, `share_token`, `password`, `name`, `owner`, `user`, `mountpoint`, `mountpoint_hash`, `accepted`, `remote_id`, `parent`, `share_type`) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + '); + return $query->execute(array($remote, $token, $password, $name, $owner, $user, $mountPoint, $hash, $accepted, $remoteId, $parent, $shareType)); + } + + /** * get share * * @param int $id share id @@ -197,12 +236,27 @@ class Manager { */ public function getShare($id) { $getShare = $this->connection->prepare(' - SELECT `id`, `remote`, `remote_id`, `share_token`, `name`, `owner`, `user`, `mountpoint`, `accepted` + SELECT `id`, `remote`, `remote_id`, `share_token`, `name`, `owner`, `user`, `mountpoint`, `accepted`, `parent`, `share_type`, `password`, `mountpoint_hash` FROM `*PREFIX*share_external` - WHERE `id` = ? AND `user` = ?'); - $result = $getShare->execute(array($id, $this->uid)); + WHERE `id` = ?'); + $result = $getShare->execute(array($id)); + + $share = $result ? $getShare->fetch() : []; + + $validShare = is_array($share) && isset($share['share_type']) && isset($share['user']); + + // check if the user is allowed to access it + if ($validShare && (int)$share['share_type'] === Share::SHARE_TYPE_USER && $share['user'] === $this->uid) { + return $share; + } else if ($validShare && (int)$share['share_type'] === Share::SHARE_TYPE_GROUP) { + $user = $this->userManager->get($this->uid); + if ($this->groupManager->get($share['user'])->inGroup($user)) { + return $share; + } + } + + return false; - return $result ? $getShare->fetch() : false; } /** @@ -222,15 +276,30 @@ class Manager { $mountPoint = Files::buildNotExistingFileName($shareFolder, $share['name']); $mountPoint = Filesystem::normalizePath($mountPoint); $hash = md5($mountPoint); + $userShareAccepted = false; - $acceptShare = $this->connection->prepare(' + if((int)$share['share_type'] === Share::SHARE_TYPE_USER) { + $acceptShare = $this->connection->prepare(' UPDATE `*PREFIX*share_external` SET `accepted` = ?, `mountpoint` = ?, `mountpoint_hash` = ? WHERE `id` = ? AND `user` = ?'); - $updated = $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid)); - if ($updated === true) { + $userShareAccepted = $acceptShare->execute(array(1, $mountPoint, $hash, $id, $this->uid)); + } else { + $result = $this->writeShareToDb( + $share['remote'], + $share['share_token'], + $share['password'], + $share['name'], + $share['owner'], + $this->uid, + $mountPoint, $hash, 1, + $share['remote_id'], + $id, + $share['share_type']); + } + if ($userShareAccepted === true) { $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'accept'); \OC_Hook::emit(Share::class, 'federated_share_added', ['server' => $share['remote']]); $result = true; @@ -252,18 +321,34 @@ class Manager { public function declineShare($id) { $share = $this->getShare($id); + $result = false; - if ($share) { + if ($share && (int)$share['share_type'] === Share::SHARE_TYPE_USER) { $removeShare = $this->connection->prepare(' DELETE FROM `*PREFIX*share_external` WHERE `id` = ? AND `user` = ?'); $removeShare->execute(array($id, $this->uid)); $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline'); $this->processNotification($id); - return true; + $result = true; + } else if ($share && (int)$share['share_type'] === Share::SHARE_TYPE_GROUP) { + $result = $this->writeShareToDb( + $share['remote'], + $share['share_token'], + $share['password'], + $share['name'], + $share['owner'], + $this->uid, + $share['mountpoint'], + $share['mountpoint_hash'], + 0, + $share['remote_id'], + $id, + $share['share_type']); + $this->processNotification($id); } - return false; + return $result; } /** @@ -297,7 +382,7 @@ class Manager { $federationEndpoints = $this->discoveryService->discover($remote, 'FEDERATED_SHARING'); $endpoint = isset($federationEndpoints['share']) ? $federationEndpoints['share'] : '/ocs/v2.php/cloud/shares'; - $url = rtrim($remote, '/') . $endpoint . '/' . $remoteId . '/' . $feedback . '?format=' . \OCP\Share::RESPONSE_FORMAT; + $url = rtrim($remote, '/') . $endpoint . '/' . $remoteId . '/' . $feedback . '?format=' . Share::RESPONSE_FORMAT; $fields = array('token' => $token); $client = $this->clientService->newClient(); @@ -430,28 +515,33 @@ class Manager { $hash = md5($mountPoint); $getShare = $this->connection->prepare(' - SELECT `remote`, `share_token`, `remote_id` + SELECT `remote`, `share_token`, `remote_id`, `share_type`, `id` FROM `*PREFIX*share_external` WHERE `mountpoint_hash` = ? AND `user` = ?'); $result = $getShare->execute(array($hash, $this->uid)); - if ($result) { + $share = $getShare->fetch(); + $getShare->closeCursor(); + if ($result && (int)$share['share_type'] === Share::SHARE_TYPE_USER) { try { - $share = $getShare->fetch(); $this->sendFeedbackToRemote($share['remote'], $share['share_token'], $share['remote_id'], 'decline'); } catch (\Exception $e) { // if we fail to notify the remote (probably cause the remote is down) // we still want the share to be gone to prevent undeletable remotes } - } - $getShare->closeCursor(); - $query = $this->connection->prepare(' + $query = $this->connection->prepare(' DELETE FROM `*PREFIX*share_external` - WHERE `mountpoint_hash` = ? - AND `user` = ? - '); - $result = (bool)$query->execute(array($hash, $this->uid)); + WHERE `id` = ? + '); + $result = (bool)$query->execute(array((int)$share['id'])); + } else if ($result && (int)$share['share_type'] === Share::SHARE_TYPE_GROUP) { + $query = $this->connection->prepare(' + UPDATE `*PREFIX*share_external` + SET `accepted` = ? + WHERE `id` = ?'); + $result = (bool)$query->execute(array(0, (int)$share['id'])); + } if($result) { $this->removeReShares($id); @@ -537,10 +627,17 @@ class Manager { * @return array list of open server-to-server shares */ private function getShares($accepted) { + $user = $this->userManager->get($this->uid); + $groups = $this->groupManager->getUserGroups($user); + $userGroups = []; + foreach ($groups as $group) { + $userGroups[] = $group->getGID(); + } + $query = 'SELECT `id`, `remote`, `remote_id`, `share_token`, `name`, `owner`, `user`, `mountpoint`, `accepted` FROM `*PREFIX*share_external` - WHERE `user` = ?'; - $parameters = [$this->uid]; + WHERE (`user` = ? OR `user` IN (?))'; + $parameters = [$this->uid, implode(',',$userGroups)]; if (!is_null($accepted)) { $query .= ' AND `accepted` = ?'; $parameters[] = (int) $accepted; diff --git a/apps/files_sharing/lib/Hooks.php b/apps/files_sharing/lib/Hooks.php index cd66fd7702e..99e876eaaf0 100644 --- a/apps/files_sharing/lib/Hooks.php +++ b/apps/files_sharing/lib/Hooks.php @@ -42,6 +42,8 @@ class Hooks { \OC::$server->query(\OCP\OCS\IDiscoveryService::class), \OC::$server->getCloudFederationProviderManager(), \OC::$server->getCloudFederationFactory(), + \OC::$server->getGroupManager(), + \OC::$server->getUserManager(), $params['uid']); $manager->removeUserShares($params['uid']); diff --git a/apps/files_sharing/lib/ShareBackend/File.php b/apps/files_sharing/lib/ShareBackend/File.php index bb28c1a33ac..bd32741e67e 100644 --- a/apps/files_sharing/lib/ShareBackend/File.php +++ b/apps/files_sharing/lib/ShareBackend/File.php @@ -195,6 +195,10 @@ class File implements \OCP\Share_Backend_File_Dependent { return $this->federatedShareProvider->isOutgoingServer2serverShareEnabled(); } + if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) { + return $this->federatedShareProvider->isOutgoingServer2serverGroupShareEnabled(); + } + return true; } diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php index 2c638fe4ed6..4a2c486765f 100644 --- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php @@ -2088,6 +2088,47 @@ class ShareAPIControllerTest extends TestCase { [], $share, [], true ]; + $share = \OC::$server->getShareManager()->newShare(); + $share->setShareType(\OCP\Share::SHARE_TYPE_EMAIL) + ->setSharedBy('initiator') + ->setSharedWith('user@server.com') + ->setShareOwner('owner') + ->setPermissions(\OCP\Constants::PERMISSION_READ) + ->setNode($folder) + ->setShareTime(new \DateTime('2000-01-01T00:01:02')) + ->setTarget('myTarget') + ->setId(42) + ->setPassword('password'); + + $result[] = [ + [ + 'id' => 42, + 'share_type' => \OCP\Share::SHARE_TYPE_EMAIL, + 'uid_owner' => 'initiator', + 'displayname_owner' => 'initiator', + 'permissions' => 1, + 'stime' => 946684862, + 'parent' => null, + 'expiration' => null, + 'token' => null, + 'uid_file_owner' => 'owner', + 'displayname_file_owner' => 'owner', + 'path' => 'folder', + 'item_type' => 'folder', + 'storage_id' => 'storageId', + 'storage' => 100, + 'item_source' => 2, + 'file_source' => 2, + 'file_parent' => 1, + 'file_target' => 'myTarget', + 'share_with' => 'user@server.com', + 'share_with_displayname' => 'mail display name', + 'mail_send' => 0, + 'mimetype' => 'myFolderMimeType', + 'password' => 'password' + ], $share, [], false + ]; + return $result; } @@ -2131,15 +2172,28 @@ class ShareAPIControllerTest extends TestCase { $this->overwriteService(\OCP\Contacts\IManager::class, $cm); $cm->method('search') - ->with('user@server.com', ['CLOUD']) - ->willReturn([ - [ - 'CLOUD' => [ - 'user@server.com', + ->will($this->returnValueMap([ + ['user@server.com', ['CLOUD'], [], + [ + [ + 'CLOUD' => [ + 'user@server.com', + ], + 'FN' => 'foobar', + ], ], - 'FN' => 'foobar', ], - ]); + ['user@server.com', ['EMAIL'], [], + [ + [ + 'EMAIL' => [ + 'user@server.com', + ], + 'FN' => 'mail display name', + ], + ], + ], + ])); try { $result = $this->invokePrivate($this->ocs, 'formatShare', [$share]); diff --git a/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php index 98ae953a318..d8c706da03c 100644 --- a/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareesAPIControllerTest.php @@ -85,120 +85,125 @@ class ShareesAPIControllerTest extends TestCase { public function dataSearch() { $noRemote = [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_EMAIL]; - $allTypes = [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE, Share::SHARE_TYPE_EMAIL]; + $allTypes = [Share::SHARE_TYPE_USER, Share::SHARE_TYPE_GROUP, Share::SHARE_TYPE_REMOTE, Share::SHARE_TYPE_REMOTE_GROUP, Share::SHARE_TYPE_EMAIL]; return [ - [[], '', 'yes', true, true, $noRemote, false, true, true], + [[], '', 'yes', true, true, true, $noRemote, false, true, true], // Test itemType [[ 'search' => '', - ], '', 'yes', true, true, $noRemote, false, true, true], + ], '', 'yes', true, true, true, $noRemote, false, true, true], [[ 'search' => 'foobar', - ], '', 'yes', true, true, $noRemote, false, true, true], + ], '', 'yes', true, true, true, $noRemote, false, true, true], [[ 'search' => 0, - ], '', 'yes', true, true, $noRemote, false, true, true], + ], '', 'yes', true, true, true, $noRemote, false, true, true], // Test itemType [[ 'itemType' => '', - ], '', 'yes', true, true, $noRemote, false, true, true], + ], '', 'yes', true, true, true, $noRemote, false, true, true], [[ 'itemType' => 'folder', - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 0, - ], '', 'yes', true, true, $noRemote, false, true, true], - + ], '', 'yes', true, true , true, $noRemote, false, true, true], // Test shareType [[ 'itemType' => 'call', - ], '', 'yes', true, true, $noRemote, false, true, true], + ], '', 'yes', true, true, true, $noRemote, false, true, true], [[ 'itemType' => 'folder', - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 'folder', 'shareType' => 0, - ], '', 'yes', true, false, [0], false, true, true], + ], '', 'yes', true, true, false, [0], false, true, true], [[ 'itemType' => 'folder', 'shareType' => '0', - ], '', 'yes', true, false, [0], false, true, true], + ], '', 'yes', true, true, false, [0], false, true, true], [[ 'itemType' => 'folder', 'shareType' => 1, - ], '', 'yes', true, false, [1], false, true, true], + ], '', 'yes', true, true, false, [1], false, true, true], [[ 'itemType' => 'folder', 'shareType' => 12, - ], '', 'yes', true, false, [], false, true, true], + ], '', 'yes', true, true, false, [], false, true, true], [[ 'itemType' => 'folder', 'shareType' => 'foobar', - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], + [[ 'itemType' => 'folder', 'shareType' => [0, 1, 2], - ], '', 'yes', false, false, [0, 1], false, true, true], + ], '', 'yes', false, false, false, [0, 1], false, true, true], [[ 'itemType' => 'folder', 'shareType' => [0, 1], - ], '', 'yes', false, false, [0, 1], false, true, true], + ], '', 'yes', false, false, false, [0, 1], false, true, true], + [[ + 'itemType' => 'folder', + 'shareType' => $allTypes, + ], '', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 'folder', 'shareType' => $allTypes, - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', false, false, false, [0, 1], false, true, true], [[ 'itemType' => 'folder', 'shareType' => $allTypes, - ], '', 'yes', false, false, [0, 1], false, true, true], + ], '', 'yes', true, false, false, [0, 6], false, true, false], [[ 'itemType' => 'folder', 'shareType' => $allTypes, - ], '', 'yes', true, false, [0, 6], false, true, false], + ], '', 'yes', false, false, true, [0, 4], false, true, false], [[ 'itemType' => 'folder', 'shareType' => $allTypes, - ], '', 'yes', false, true, [0, 4], false, true, false], + ], '', 'yes', true, true, false, [0, 6, 9], false, true, false], // Test pagination [[ 'itemType' => 'folder', 'page' => 1, - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 'folder', 'page' => 10, - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], // Test perPage [[ 'itemType' => 'folder', 'perPage' => 1, - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 'folder', 'perPage' => 10, - ], '', 'yes', true, true, $allTypes, false, true, true], + ], '', 'yes', true, true, true, $allTypes, false, true, true], // Test $shareWithGroupOnly setting [[ 'itemType' => 'folder', - ], 'no', 'yes', true, true, $allTypes, false, true, true], + ], 'no', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 'folder', - ], 'yes', 'yes', true, true, $allTypes, true, true, true], + ], 'yes', 'yes', true, true, true, $allTypes, true, true, true], // Test $shareeEnumeration setting [[ 'itemType' => 'folder', - ], 'no', 'yes', true, true, $allTypes, false, true, true], + ], 'no', 'yes', true, true, true, $allTypes, false, true, true], [[ 'itemType' => 'folder', - ], 'no', 'no', true, true, $allTypes, false, false, true], + ], 'no', 'no', true, true, true, $allTypes, false, false, true], + ]; } @@ -209,13 +214,15 @@ class ShareesAPIControllerTest extends TestCase { * @param string $apiSetting * @param string $enumSetting * @param bool $remoteSharingEnabled + * @param bool $isRemoteGroupSharingEnabled * @param bool $emailSharingEnabled * @param array $shareTypes * @param bool $shareWithGroupOnly * @param bool $shareeEnumeration * @param bool $allowGroupSharing + * @throws OCSBadRequestException */ - public function testSearch($getData, $apiSetting, $enumSetting, $remoteSharingEnabled, $emailSharingEnabled, $shareTypes, $shareWithGroupOnly, $shareeEnumeration, $allowGroupSharing) { + public function testSearch($getData, $apiSetting, $enumSetting, $remoteSharingEnabled, $isRemoteGroupSharingEnabled, $emailSharingEnabled, $shareTypes, $shareWithGroupOnly, $shareeEnumeration, $allowGroupSharing) { $search = isset($getData['search']) ? $getData['search'] : ''; $itemType = isset($getData['itemType']) ? $getData['itemType'] : 'irrelevant'; $page = isset($getData['page']) ? $getData['page'] : 1; @@ -251,7 +258,7 @@ class ShareesAPIControllerTest extends TestCase { $this->shareManager, $this->collaboratorSearch ]) - ->setMethods(['isRemoteSharingAllowed', 'shareProviderExists']) + ->setMethods(['isRemoteSharingAllowed', 'shareProviderExists', 'isRemoteGroupSharingAllowed']) ->getMock(); $this->collaboratorSearch->expects($this->once()) @@ -264,6 +271,13 @@ class ShareesAPIControllerTest extends TestCase { ->with($itemType) ->willReturn($remoteSharingEnabled); + + $sharees->expects($this->any()) + ->method('isRemoteGroupSharingAllowed') + ->with($itemType) + ->willReturn($isRemoteGroupSharingEnabled); + + $this->shareManager->expects($this->any()) ->method('shareProviderExists') ->with(\OCP\Share::SHARE_TYPE_EMAIL) diff --git a/apps/files_sharing/tests/External/ManagerTest.php b/apps/files_sharing/tests/External/ManagerTest.php index 2cc88160a8c..93c17ca10cf 100644 --- a/apps/files_sharing/tests/External/ManagerTest.php +++ b/apps/files_sharing/tests/External/ManagerTest.php @@ -35,6 +35,8 @@ use OCA\Files_Sharing\Tests\TestCase; use OCP\Federation\ICloudFederationFactory; use OCP\Federation\ICloudFederationProviderManager; use OCP\Http\Client\IClientService; +use OCP\IGroupManager; +use OCP\IUserManager; use Test\Traits\UserTrait; /** @@ -62,6 +64,12 @@ class ManagerTest extends TestCase { /** @var ICloudFederationFactory|\PHPUnit_Framework_MockObject_MockObject */ private $cloudFederationFactory; + /** @var \PHPUnit_Framework_MockObject_MockObject|IGroupManager */ + private $groupManager; + + /** @var \PHPUnit_Framework_MockObject_MockObject|IUserManager */ + private $userManager; + private $uid; /** @@ -81,6 +89,8 @@ class ManagerTest extends TestCase { ->disableOriginalConstructor()->getMock(); $this->cloudFederationProviderManager = $this->createMock(ICloudFederationProviderManager::class); $this->cloudFederationFactory = $this->createMock(ICloudFederationFactory::class); + $this->groupManager = $this->createMock(IGroupManager::class); + $this->userManager = $this->createMock(IUserManager::class); $this->manager = $this->getMockBuilder(Manager::class) ->setConstructorArgs( @@ -93,6 +103,8 @@ class ManagerTest extends TestCase { \OC::$server->query(\OCP\OCS\IDiscoveryService::class), $this->cloudFederationProviderManager, $this->cloudFederationFactory, + $this->groupManager, + $this->userManager, $this->uid ] )->setMethods(['tryOCMEndPoint'])->getMock(); @@ -117,6 +129,7 @@ class ManagerTest extends TestCase { 'password' => '', 'name' => '/SharedFolder', 'owner' => 'foobar', + 'shareType' => \OCP\Share::SHARE_TYPE_USER, 'accepted' => false, 'user' => $this->uid, ]; @@ -125,6 +138,9 @@ class ManagerTest extends TestCase { $shareData3 = $shareData1; $shareData3['token'] = 'token3'; + $this->userManager->expects($this->any())->method('get')->willReturn($this->user); + $this->groupManager->expects($this->any())->method(('getUserGroups'))->willReturn([]); + $this->manager->expects($this->at(0))->method('tryOCMEndPoint')->with('http://localhost', 'token1', -1, 'accept')->willReturn(false); $this->manager->expects($this->at(1))->method('tryOCMEndPoint')->with('http://localhost', 'token3', -1, 'decline')->willReturn(false); diff --git a/apps/files_trashbin/l10n/fi.js b/apps/files_trashbin/l10n/fi.js index a8758c77050..65109f0082b 100644 --- a/apps/files_trashbin/l10n/fi.js +++ b/apps/files_trashbin/l10n/fi.js @@ -11,11 +11,13 @@ OC.L10N.register( "This operation is forbidden" : "Tämä toiminto on kielletty", "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.", "restored" : "palautettu", + "This application enables users to restore files that were deleted from the system." : "Tämä sovellus mahdollistaa käyttäjien palauttaa järjestelmästä poistettuja tiedostoja.", "No deleted files" : "Ei poistettuja tiedostoja", "You will be able to recover deleted files from here" : "Voit palauttaa poistettuja tiedostoja tätä kautta", "No entries found in this folder" : "Ei kohteita tässä kansiossa", "Select all" : "Valitse kaikki", "Name" : "Nimi", + "Actions" : "Toiminnot", "Deleted" : "Poistettu" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/fi.json b/apps/files_trashbin/l10n/fi.json index c4ead30d036..91c40f64f77 100644 --- a/apps/files_trashbin/l10n/fi.json +++ b/apps/files_trashbin/l10n/fi.json @@ -9,11 +9,13 @@ "This operation is forbidden" : "Tämä toiminto on kielletty", "This directory is unavailable, please check the logs or contact the administrator" : "Hakemisto ei ole käytettävissä. Tarkista lokit tai ole yhteydessä ylläpitoon.", "restored" : "palautettu", + "This application enables users to restore files that were deleted from the system." : "Tämä sovellus mahdollistaa käyttäjien palauttaa järjestelmästä poistettuja tiedostoja.", "No deleted files" : "Ei poistettuja tiedostoja", "You will be able to recover deleted files from here" : "Voit palauttaa poistettuja tiedostoja tätä kautta", "No entries found in this folder" : "Ei kohteita tässä kansiossa", "Select all" : "Valitse kaikki", "Name" : "Nimi", + "Actions" : "Toiminnot", "Deleted" : "Poistettu" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/fr.js b/apps/files_trashbin/l10n/fr.js index e2d1cb6dad1..682a5385282 100644 --- a/apps/files_trashbin/l10n/fr.js +++ b/apps/files_trashbin/l10n/fr.js @@ -12,6 +12,7 @@ OC.L10N.register( "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", "restored" : "restauré", "This application enables users to restore files that were deleted from the system." : "Cette application permet aux utilisateurs de restaurer des fichiers qui ont été supprimés du système.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Cette application permet aux utilisateurs de restaurer les fichiers qui ont été supprimés du système. Il affiche une liste de fichiers supprimés dans l'interface Web et dispose d'options pour restaurer ces fichiers supprimés dans les répertoires de fichiers des utilisateurs ou les supprimer définitivement du système. La restauration d'un fichier restaure également les versions de fichiers associées, si l'application de versions est activée. Lorsqu'un fichier est supprimé d'un partage, il peut être restauré de la même manière, bien qu'il ne soit plus partagé. Par défaut, ces fichiers restent dans la corbeille pendant 30 jours.\n\nPour empêcher un utilisateur de manquer d'espace disque, l'application Fichiers supprimés n'utilisera pas plus de 50% du quota gratuit actuellement disponible pour les fichiers supprimés. Si les fichiers supprimés dépassent cette limite, l'application supprime les fichiers les plus anciens jusqu'à ce qu'elle soit inférieure à cette limite. Plus d'informations sont disponibles dans la documentation Fichiers supprimés.", "No deleted files" : "Aucun fichier supprimé", "You will be able to recover deleted files from here" : "Ici, vous verrez et pourrez restaurer vos fichiers supprimés", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", diff --git a/apps/files_trashbin/l10n/fr.json b/apps/files_trashbin/l10n/fr.json index c0af194389e..295be467465 100644 --- a/apps/files_trashbin/l10n/fr.json +++ b/apps/files_trashbin/l10n/fr.json @@ -10,6 +10,7 @@ "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", "restored" : "restauré", "This application enables users to restore files that were deleted from the system." : "Cette application permet aux utilisateurs de restaurer des fichiers qui ont été supprimés du système.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Cette application permet aux utilisateurs de restaurer les fichiers qui ont été supprimés du système. Il affiche une liste de fichiers supprimés dans l'interface Web et dispose d'options pour restaurer ces fichiers supprimés dans les répertoires de fichiers des utilisateurs ou les supprimer définitivement du système. La restauration d'un fichier restaure également les versions de fichiers associées, si l'application de versions est activée. Lorsqu'un fichier est supprimé d'un partage, il peut être restauré de la même manière, bien qu'il ne soit plus partagé. Par défaut, ces fichiers restent dans la corbeille pendant 30 jours.\n\nPour empêcher un utilisateur de manquer d'espace disque, l'application Fichiers supprimés n'utilisera pas plus de 50% du quota gratuit actuellement disponible pour les fichiers supprimés. Si les fichiers supprimés dépassent cette limite, l'application supprime les fichiers les plus anciens jusqu'à ce qu'elle soit inférieure à cette limite. Plus d'informations sont disponibles dans la documentation Fichiers supprimés.", "No deleted files" : "Aucun fichier supprimé", "You will be able to recover deleted files from here" : "Ici, vous verrez et pourrez restaurer vos fichiers supprimés", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", diff --git a/apps/files_trashbin/l10n/he.js b/apps/files_trashbin/l10n/he.js index 8c2329f4392..27b95c2a6a3 100644 --- a/apps/files_trashbin/l10n/he.js +++ b/apps/files_trashbin/l10n/he.js @@ -17,6 +17,7 @@ OC.L10N.register( "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Select all" : "לבחור הכול", "Name" : "שם", + "Actions" : "פעולולת", "Deleted" : "נמחק" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files_trashbin/l10n/he.json b/apps/files_trashbin/l10n/he.json index 584c56d9861..04dced8f9dc 100644 --- a/apps/files_trashbin/l10n/he.json +++ b/apps/files_trashbin/l10n/he.json @@ -15,6 +15,7 @@ "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Select all" : "לבחור הכול", "Name" : "שם", + "Actions" : "פעולולת", "Deleted" : "נמחק" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_trashbin/l10n/sr.js b/apps/files_trashbin/l10n/sr.js index 2a2e6b3a5a9..33c944613eb 100644 --- a/apps/files_trashbin/l10n/sr.js +++ b/apps/files_trashbin/l10n/sr.js @@ -11,6 +11,8 @@ OC.L10N.register( "This operation is forbidden" : "Ова радња је забрањена", "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан. Проверите записнике или контактирајте администратора", "restored" : "враћено", + "This application enables users to restore files that were deleted from the system." : "Ова апликација омогућава корисницима да поврате избрисане фајлове.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Ова апликација омогућава корисницима да поврате избрисане фајлове. Из веб интерфејса приказује списак избрисаних фајлова и има опцију да поврати избрисане фајлове назад у корисничке директоријуме или да их непобратно обрише из система. Враћање такође враћа и везану верзију фајла, ако је апликација за верзионисање укључена. Када се фајл избрише из дељене фасцикле, може се повратити на исти начин, али више није дељен. Подразумевано је да фајлови остају у канти за ђубре 30 дана.\nДа би спречили да корисник остане без места на диску, апликација за Обрисане фајлове неће користити више од 50% тренутно доступне квоте за обрисане фајлове. Ако обрисани фајлови пређу ову границу, апликација брише редом фајлове почевши од најстаријих док величина заузетих фајлова не падне испод ове границе. Више информација је доступно у документацији за Обрисане фајлове.", "No deleted files" : "Нема обрисаних фајлова", "You will be able to recover deleted files from here" : "Одавде ћете моћи да повратите обрисане фајлове", "No entries found in this folder" : "Нема ничега у овој фасцикли", diff --git a/apps/files_trashbin/l10n/sr.json b/apps/files_trashbin/l10n/sr.json index 73d531bd165..52822b45f2d 100644 --- a/apps/files_trashbin/l10n/sr.json +++ b/apps/files_trashbin/l10n/sr.json @@ -9,6 +9,8 @@ "This operation is forbidden" : "Ова радња је забрањена", "This directory is unavailable, please check the logs or contact the administrator" : "Овај директоријум није доступан. Проверите записнике или контактирајте администратора", "restored" : "враћено", + "This application enables users to restore files that were deleted from the system." : "Ова апликација омогућава корисницима да поврате избрисане фајлове.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Ова апликација омогућава корисницима да поврате избрисане фајлове. Из веб интерфејса приказује списак избрисаних фајлова и има опцију да поврати избрисане фајлове назад у корисничке директоријуме или да их непобратно обрише из система. Враћање такође враћа и везану верзију фајла, ако је апликација за верзионисање укључена. Када се фајл избрише из дељене фасцикле, може се повратити на исти начин, али више није дељен. Подразумевано је да фајлови остају у канти за ђубре 30 дана.\nДа би спречили да корисник остане без места на диску, апликација за Обрисане фајлове неће користити више од 50% тренутно доступне квоте за обрисане фајлове. Ако обрисани фајлови пређу ову границу, апликација брише редом фајлове почевши од најстаријих док величина заузетих фајлова не падне испод ове границе. Више информација је доступно у документацији за Обрисане фајлове.", "No deleted files" : "Нема обрисаних фајлова", "You will be able to recover deleted files from here" : "Одавде ћете моћи да повратите обрисане фајлове", "No entries found in this folder" : "Нема ничега у овој фасцикли", diff --git a/apps/files_versions/l10n/de.js b/apps/files_versions/l10n/de.js index 2aed09c4791..833c48b20b8 100644 --- a/apps/files_versions/l10n/de.js +++ b/apps/files_versions/l10n/de.js @@ -9,7 +9,7 @@ OC.L10N.register( "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", "More versions …" : "Weitere Versionen…", "This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung pflegt automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\nIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung pflegt automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/de.json b/apps/files_versions/l10n/de.json index ce5730aedb4..62eb5f9c6cf 100644 --- a/apps/files_versions/l10n/de.json +++ b/apps/files_versions/l10n/de.json @@ -7,7 +7,7 @@ "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", "More versions …" : "Weitere Versionen…", "This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung pflegt automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\nIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung pflegt automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\n\t\tZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/de_DE.js b/apps/files_versions/l10n/de_DE.js index 97959ba10a1..f09530c7c36 100644 --- a/apps/files_versions/l10n/de_DE.js +++ b/apps/files_versions/l10n/de_DE.js @@ -8,6 +8,8 @@ OC.L10N.register( "Restore" : "Wiederherstellen", "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", "More versions …" : "Weitere Versionen…", - "This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien." + "This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\nIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_versions/l10n/de_DE.json b/apps/files_versions/l10n/de_DE.json index 4e99352d904..8f578e3f45d 100644 --- a/apps/files_versions/l10n/de_DE.json +++ b/apps/files_versions/l10n/de_DE.json @@ -6,6 +6,8 @@ "Restore" : "Wiederherstellen", "No earlier versions available" : "Keine Vorgänger-Versionen vorhanden", "More versions …" : "Weitere Versionen…", - "This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien." + "This application automatically maintains older versions of files that are changed." : "Diese App verwaltet automatisch ältere Versionen geänderter Dateien.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\nIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Diese Anwendung verwaltet automatisch ältere Versionen von Dateien, die geändert werden. Wenn aktiviert, wird ein Ordner mit versteckten Versionen im Verzeichnis jedes Benutzers bereitgestellt und wird zum Speichern alter Dateiversionen verwendet. Ein Benutzer kann jederzeit über das Webinterface auf eine ältere Version zurückgreifen, wobei die ersetzte Datei dann eine Version wird. Die App verwaltet automatisch den Versionsordner, um sicherzustellen, dass dem Benutzer nicht der Speicherplatz aufgrund von zu vielen Versionen ausgeht.\nZusätzlich zum Ablauf der Versionen stellt die Versions-App sicher, dass nie mehr als 50% des derzeit verfügbaren freien Speicherplatzes des Benutzers für die Versionierung genutzt werden. Wenn gespeicherte Versionen diese Grenze überschreiten, löscht die App zuerst die ältesten Versionen, bis sie die 50% Grenze erreicht hat. Weitere Informationen finden Sie in der Versionsdokumentation." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/fr.js b/apps/files_versions/l10n/fr.js index 52f72e32d13..c49a952e595 100644 --- a/apps/files_versions/l10n/fr.js +++ b/apps/files_versions/l10n/fr.js @@ -8,6 +8,8 @@ OC.L10N.register( "Restore" : "Restaurer", "No earlier versions available" : "Aucune version antérieure disponible", "More versions …" : "Plus de versions ...", - "This application automatically maintains older versions of files that are changed." : "Cette application conserve automatiquement des anciennes versions de fichiers qui ont été modifiés." + "This application automatically maintains older versions of files that are changed." : "Cette application conserve automatiquement des anciennes versions de fichiers qui ont été modifiés.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'elle est activée, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne manque pas de place à cause des versions stockées.\nEn plus de l'expiration des versions, l'application veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\nIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'il est activé, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne dépasse pas son quota en raison des versions stockées.\nEn plus de l'expiration des versions, l'application des versions veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/files_versions/l10n/fr.json b/apps/files_versions/l10n/fr.json index 8f891e4a517..67e99c3f310 100644 --- a/apps/files_versions/l10n/fr.json +++ b/apps/files_versions/l10n/fr.json @@ -6,6 +6,8 @@ "Restore" : "Restaurer", "No earlier versions available" : "Aucune version antérieure disponible", "More versions …" : "Plus de versions ...", - "This application automatically maintains older versions of files that are changed." : "Cette application conserve automatiquement des anciennes versions de fichiers qui ont été modifiés." + "This application automatically maintains older versions of files that are changed." : "Cette application conserve automatiquement des anciennes versions de fichiers qui ont été modifiés.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'elle est activée, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne manque pas de place à cause des versions stockées.\nEn plus de l'expiration des versions, l'application veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\nIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Cette application maintient automatiquement les anciennes versions des fichiers qui sont modifiés. Lorsqu'il est activé, un dossier de versions cachées est provisionné dans le répertoire de chaque utilisateur et est utilisé pour stocker les anciennes versions de fichiers. Un utilisateur peut à tout moment revenir à une ancienne version via l'interface Web, le fichier remplacé devenant une version. L'application gère automatiquement le dossier des versions pour s'assurer que l'utilisateur ne dépasse pas son quota en raison des versions stockées.\nEn plus de l'expiration des versions, l'application des versions veille à ne jamais utiliser plus de 50% de l'espace libre actuellement disponible pour l'utilisateur. Si les versions stockées dépassent cette limite, l'application supprime les versions les plus anciennes en premier jusqu'à ce qu'elle atteigne cette limite. Plus d'informations sont disponibles dans la documentation Versions." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/he.js b/apps/files_versions/l10n/he.js index e733b773329..c31d36cf089 100644 --- a/apps/files_versions/l10n/he.js +++ b/apps/files_versions/l10n/he.js @@ -7,6 +7,7 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"], "Restore" : "שחזור", "No earlier versions available" : "אין גרסאות קודמות זמינות", - "More versions …" : "גרסאות נוספות…" + "More versions …" : "גרסאות נוספות…", + "This application automatically maintains older versions of files that are changed." : "יישומון זה שומר אוטומטית על גרסאות קודמות של קבצים שהשתנו." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/files_versions/l10n/he.json b/apps/files_versions/l10n/he.json index 0d26f145c72..552aecc9397 100644 --- a/apps/files_versions/l10n/he.json +++ b/apps/files_versions/l10n/he.json @@ -5,6 +5,7 @@ "_%n byte_::_%n bytes_" : ["%n בייט","%n בייטים","%n בייטים","%n בייטים"], "Restore" : "שחזור", "No earlier versions available" : "אין גרסאות קודמות זמינות", - "More versions …" : "גרסאות נוספות…" + "More versions …" : "גרסאות נוספות…", + "This application automatically maintains older versions of files that are changed." : "יישומון זה שומר אוטומטית על גרסאות קודמות של קבצים שהשתנו." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/pl.js b/apps/files_versions/l10n/pl.js index 603cac001a0..289a30810b0 100644 --- a/apps/files_versions/l10n/pl.js +++ b/apps/files_versions/l10n/pl.js @@ -7,6 +7,6 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtów","%n bajtów","%n bajtów"], "Restore" : "Przywróć", "No earlier versions available" : "Brak dostępnych wcześniejszych wersji", - "More versions …" : "Więcej wersji..." + "More versions …" : "Więcej wersji…" }, "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);"); diff --git a/apps/files_versions/l10n/pl.json b/apps/files_versions/l10n/pl.json index 78043af8c40..4690f9ca722 100644 --- a/apps/files_versions/l10n/pl.json +++ b/apps/files_versions/l10n/pl.json @@ -5,6 +5,6 @@ "_%n byte_::_%n bytes_" : ["%n bajt","%n bajtów","%n bajtów","%n bajtów"], "Restore" : "Przywróć", "No earlier versions available" : "Brak dostępnych wcześniejszych wersji", - "More versions …" : "Więcej wersji..." + "More versions …" : "Więcej wersji…" },"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);" }
\ No newline at end of file diff --git a/apps/oauth2/l10n/de.js b/apps/oauth2/l10n/de.js index 891fe89b0d8..ec099ed1bb1 100644 --- a/apps/oauth2/l10n/de.js +++ b/apps/oauth2/l10n/de.js @@ -1,7 +1,7 @@ OC.L10N.register( "oauth2", { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Erlaubt OAuth2 komplatible authentifizierung durch andere WEb-Anwendungen.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Die OAuth2-App ermöglicht es Administratoren den eingebauten Authenztifizierungsablauf dahingehend zu konfigurieren, das auch ein OAuth2 komplatible Authentifizierung von anderen Web-Anwendungen aus möglich ist.", diff --git a/apps/oauth2/l10n/de.json b/apps/oauth2/l10n/de.json index df7fa28c4b1..4e23f8efdd5 100644 --- a/apps/oauth2/l10n/de.json +++ b/apps/oauth2/l10n/de.json @@ -1,5 +1,5 @@ { "translations": { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Erlaubt OAuth2 komplatible authentifizierung durch andere WEb-Anwendungen.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Die OAuth2-App ermöglicht es Administratoren den eingebauten Authenztifizierungsablauf dahingehend zu konfigurieren, das auch ein OAuth2 komplatible Authentifizierung von anderen Web-Anwendungen aus möglich ist.", diff --git a/apps/oauth2/l10n/de_DE.js b/apps/oauth2/l10n/de_DE.js index 891fe89b0d8..ec099ed1bb1 100644 --- a/apps/oauth2/l10n/de_DE.js +++ b/apps/oauth2/l10n/de_DE.js @@ -1,7 +1,7 @@ OC.L10N.register( "oauth2", { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Erlaubt OAuth2 komplatible authentifizierung durch andere WEb-Anwendungen.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Die OAuth2-App ermöglicht es Administratoren den eingebauten Authenztifizierungsablauf dahingehend zu konfigurieren, das auch ein OAuth2 komplatible Authentifizierung von anderen Web-Anwendungen aus möglich ist.", diff --git a/apps/oauth2/l10n/de_DE.json b/apps/oauth2/l10n/de_DE.json index df7fa28c4b1..4e23f8efdd5 100644 --- a/apps/oauth2/l10n/de_DE.json +++ b/apps/oauth2/l10n/de_DE.json @@ -1,5 +1,5 @@ { "translations": { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Die Weiterleitungs-URL muss eine vollständige URL sein. Beispiel: https://deinedomain.com/pfad", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Erlaubt OAuth2 komplatible authentifizierung durch andere WEb-Anwendungen.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Die OAuth2-App ermöglicht es Administratoren den eingebauten Authenztifizierungsablauf dahingehend zu konfigurieren, das auch ein OAuth2 komplatible Authentifizierung von anderen Web-Anwendungen aus möglich ist.", diff --git a/apps/oauth2/l10n/es.js b/apps/oauth2/l10n/es.js index 5f7c4cc7cfa..7844062a667 100644 --- a/apps/oauth2/l10n/es.js +++ b/apps/oauth2/l10n/es.js @@ -1,6 +1,7 @@ OC.L10N.register( "oauth2", { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Tu URL de redirección debe ser una URL completa, por ejemplo: https://tudominio.com/ruta", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Permite autenticación compatible con OAuth2 desde otras aplicaciones web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "La app OAuth2 permite a los administradores configurar el flujo de trabajo de autenticación incorporado para permitir también autenticación compatible con OAuth2 desde otras aplicaciones web.", diff --git a/apps/oauth2/l10n/es.json b/apps/oauth2/l10n/es.json index 89912b8ffc3..ec4807f2a6c 100644 --- a/apps/oauth2/l10n/es.json +++ b/apps/oauth2/l10n/es.json @@ -1,4 +1,5 @@ { "translations": { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Tu URL de redirección debe ser una URL completa, por ejemplo: https://tudominio.com/ruta", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Permite autenticación compatible con OAuth2 desde otras aplicaciones web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "La app OAuth2 permite a los administradores configurar el flujo de trabajo de autenticación incorporado para permitir también autenticación compatible con OAuth2 desde otras aplicaciones web.", diff --git a/apps/oauth2/l10n/fi.js b/apps/oauth2/l10n/fi.js index e0c2769c2d7..2e70299fc9c 100644 --- a/apps/oauth2/l10n/fi.js +++ b/apps/oauth2/l10n/fi.js @@ -2,6 +2,7 @@ OC.L10N.register( "oauth2", { "OAuth 2.0" : "OAuth 2.0", + "Allows OAuth2 compatible authentication from other web applications." : "Sallii OAuth2-yhteensopivan tunnistautumisen muista verkkosovelluksista.", "OAuth 2.0 clients" : "OAuth 2.0 -asiakkaat", "Name" : "Nimi", "Client Identifier" : "Asiakkaan tunniste", diff --git a/apps/oauth2/l10n/fi.json b/apps/oauth2/l10n/fi.json index 2936860941d..01ad2307448 100644 --- a/apps/oauth2/l10n/fi.json +++ b/apps/oauth2/l10n/fi.json @@ -1,5 +1,6 @@ { "translations": { "OAuth 2.0" : "OAuth 2.0", + "Allows OAuth2 compatible authentication from other web applications." : "Sallii OAuth2-yhteensopivan tunnistautumisen muista verkkosovelluksista.", "OAuth 2.0 clients" : "OAuth 2.0 -asiakkaat", "Name" : "Nimi", "Client Identifier" : "Asiakkaan tunniste", diff --git a/apps/oauth2/l10n/fr.js b/apps/oauth2/l10n/fr.js index bfe61edf7dd..49447311b49 100644 --- a/apps/oauth2/l10n/fr.js +++ b/apps/oauth2/l10n/fr.js @@ -1,6 +1,7 @@ OC.L10N.register( "oauth2", { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Votre adresse de redirection doit être une URL complète, par exemple: https://example.com/chemin", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Autoriser l'authentification compatible OAuth2 depuis d'autres applications web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "L'application OAuth2 permet aux administrateurs de configurer l'authentification intégrée afin d'autoriser l'authentification compatible OAuth2 depuis d'autres applications web.", diff --git a/apps/oauth2/l10n/fr.json b/apps/oauth2/l10n/fr.json index 08a518d8157..92610a63409 100644 --- a/apps/oauth2/l10n/fr.json +++ b/apps/oauth2/l10n/fr.json @@ -1,4 +1,5 @@ { "translations": { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Votre adresse de redirection doit être une URL complète, par exemple: https://example.com/chemin", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Autoriser l'authentification compatible OAuth2 depuis d'autres applications web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "L'application OAuth2 permet aux administrateurs de configurer l'authentification intégrée afin d'autoriser l'authentification compatible OAuth2 depuis d'autres applications web.", diff --git a/apps/oauth2/l10n/he.js b/apps/oauth2/l10n/he.js index f315174fd10..a28c3cf0de9 100644 --- a/apps/oauth2/l10n/he.js +++ b/apps/oauth2/l10n/he.js @@ -1,6 +1,7 @@ OC.L10N.register( "oauth2", { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "כתובת ההפניה שלך חייבת להיות כתובת מלאה, למשל: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "מאפשר אימות תואם OAuth2 מיישומי אינטרנט אחרים.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "יישומון OAuth2 מאפשר למנהלים להגדיר את הסדר האימות המובנה כדי לאפשר אימות תואם OAuth2 מיישומים אחרים.", diff --git a/apps/oauth2/l10n/he.json b/apps/oauth2/l10n/he.json index 504f0563eee..6ea7de5b589 100644 --- a/apps/oauth2/l10n/he.json +++ b/apps/oauth2/l10n/he.json @@ -1,4 +1,5 @@ { "translations": { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "כתובת ההפניה שלך חייבת להיות כתובת מלאה, למשל: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "מאפשר אימות תואם OAuth2 מיישומי אינטרנט אחרים.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "יישומון OAuth2 מאפשר למנהלים להגדיר את הסדר האימות המובנה כדי לאפשר אימות תואם OAuth2 מיישומים אחרים.", diff --git a/apps/oauth2/l10n/it.js b/apps/oauth2/l10n/it.js index 083837a1db1..1c1b04bba9a 100644 --- a/apps/oauth2/l10n/it.js +++ b/apps/oauth2/l10n/it.js @@ -1,7 +1,7 @@ OC.L10N.register( "oauth2", { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Il tuo URL di redirezione deve essere un URL completo, ad esempio: https://tuodominio.com/percorso", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Il tuo URL di redirezione deve essere un URL completo, ad esempio: https://tuodominio.com/percorso", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Consente l'autenticazione compatibile con OAuth2 da altre applicazioni web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "L'applicazione OAuth2 consente agli amministratori di configurare la procedura di autenticazione per consentire anche l'autenticazione compatibile con OAuth2 da altre applicazioni web.", diff --git a/apps/oauth2/l10n/it.json b/apps/oauth2/l10n/it.json index 312042bf563..641e830b81d 100644 --- a/apps/oauth2/l10n/it.json +++ b/apps/oauth2/l10n/it.json @@ -1,5 +1,5 @@ { "translations": { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Il tuo URL di redirezione deve essere un URL completo, ad esempio: https://tuodominio.com/percorso", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Il tuo URL di redirezione deve essere un URL completo, ad esempio: https://tuodominio.com/percorso", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Consente l'autenticazione compatibile con OAuth2 da altre applicazioni web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "L'applicazione OAuth2 consente agli amministratori di configurare la procedura di autenticazione per consentire anche l'autenticazione compatibile con OAuth2 da altre applicazioni web.", diff --git a/apps/oauth2/l10n/pt_BR.js b/apps/oauth2/l10n/pt_BR.js index b5f420848c8..374a5c04ac4 100644 --- a/apps/oauth2/l10n/pt_BR.js +++ b/apps/oauth2/l10n/pt_BR.js @@ -1,7 +1,7 @@ OC.L10N.register( "oauth2", { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "A URL de redirecionamento precisa ser completa, por exemplo: https://yourdomain.com/path", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "A URL de redirecionamento precisa ser completa, por exemplo: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Permite autenticação compatível com OAuth2 de outras aplicações web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "O aplicativo OAuth2 permite que os administradores configurem a autenticação integrada para permitir também a autenticação compatível com OAuth2 de outros aplicativos da Web.", diff --git a/apps/oauth2/l10n/pt_BR.json b/apps/oauth2/l10n/pt_BR.json index 978f309029f..675ef750526 100644 --- a/apps/oauth2/l10n/pt_BR.json +++ b/apps/oauth2/l10n/pt_BR.json @@ -1,5 +1,5 @@ { "translations": { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "A URL de redirecionamento precisa ser completa, por exemplo: https://yourdomain.com/path", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "A URL de redirecionamento precisa ser completa, por exemplo: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Permite autenticação compatível com OAuth2 de outras aplicações web.", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "O aplicativo OAuth2 permite que os administradores configurem a autenticação integrada para permitir também a autenticação compatível com OAuth2 de outros aplicativos da Web.", diff --git a/apps/oauth2/l10n/ru.js b/apps/oauth2/l10n/ru.js index 1b3e7c65340..36d55044603 100644 --- a/apps/oauth2/l10n/ru.js +++ b/apps/oauth2/l10n/ru.js @@ -1,7 +1,10 @@ OC.L10N.register( "oauth2", { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Ваш перенаправляющий URL должен быть полным, например: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", + "Allows OAuth2 compatible authentication from other web applications." : "Разрешает аутентификацию, совместимую с OAuth2, из других веб-приложений.", + "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Приложение OAuth2 позволяет администраторам настраивать встроенный процесс проверки подлинности, чтобы также обеспечить совместимость OAuth2 с другими веб-приложениями.", "OAuth 2.0 clients" : "Клиенты OAuth 2.0", "Name" : "Имя", "Client Identifier" : "Идентификатор клиента", diff --git a/apps/oauth2/l10n/ru.json b/apps/oauth2/l10n/ru.json index 7af219d6964..e7b39c356ab 100644 --- a/apps/oauth2/l10n/ru.json +++ b/apps/oauth2/l10n/ru.json @@ -1,5 +1,8 @@ { "translations": { + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Ваш перенаправляющий URL должен быть полным, например: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", + "Allows OAuth2 compatible authentication from other web applications." : "Разрешает аутентификацию, совместимую с OAuth2, из других веб-приложений.", + "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "Приложение OAuth2 позволяет администраторам настраивать встроенный процесс проверки подлинности, чтобы также обеспечить совместимость OAuth2 с другими веб-приложениями.", "OAuth 2.0 clients" : "Клиенты OAuth 2.0", "Name" : "Имя", "Client Identifier" : "Идентификатор клиента", diff --git a/apps/oauth2/l10n/sr.js b/apps/oauth2/l10n/sr.js index 27ce0d11880..16479cb11f9 100644 --- a/apps/oauth2/l10n/sr.js +++ b/apps/oauth2/l10n/sr.js @@ -1,7 +1,7 @@ OC.L10N.register( "oauth2", { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Адреса преусмеравања мора бити пуна адреса, на пример:\nhttps://yourdomain.com/path", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Адреса за преусмеравање мора бити пуна адреса, нпр: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Дозвољава OAuth2 компатибилну идентификацију са других веб апликација,", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "OAuth2 апликација дозвољава администраторима да подесе уграђени след индетификације тако да дозвољава и OAuth2 компатибилну идентификацију са других веб апликација.", diff --git a/apps/oauth2/l10n/sr.json b/apps/oauth2/l10n/sr.json index 203d38f2ba3..9e6ebf00dbd 100644 --- a/apps/oauth2/l10n/sr.json +++ b/apps/oauth2/l10n/sr.json @@ -1,5 +1,5 @@ { "translations": { - "Your redirect url needs to be a full url for example: https://yourdomain.com/path" : "Адреса преусмеравања мора бити пуна адреса, на пример:\nhttps://yourdomain.com/path", + "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "Адреса за преусмеравање мора бити пуна адреса, нпр: https://yourdomain.com/path", "OAuth 2.0" : "OAuth 2.0", "Allows OAuth2 compatible authentication from other web applications." : "Дозвољава OAuth2 компатибилну идентификацију са других веб апликација,", "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "OAuth2 апликација дозвољава администраторима да подесе уграђени след индетификације тако да дозвољава и OAuth2 компатибилну идентификацију са других веб апликација.", diff --git a/apps/oauth2/package-lock.json b/apps/oauth2/package-lock.json index bdea13031a0..a37da6df32c 100644 --- a/apps/oauth2/package-lock.json +++ b/apps/oauth2/package-lock.json @@ -89,58 +89,58 @@ } }, "@webassemblyjs/ast": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.12.tgz", - "integrity": "sha512-bmTBEKuuhSU6dC95QIW250xO769cdYGx9rWn3uBLTw2pUpud0Z5kVuMw9m9fqbNzGeuOU2HpyuZa+yUt2CTEDA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/wast-parser": "1.5.12", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", "debug": "^3.1.0", "mamacro": "^0.0.3" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.12.tgz", - "integrity": "sha512-epTvkdwOIPpTE9edHS+V+shetYzpTbd91XOzUli1zAS0+NSgSe6ZsNggIqUNzhma1s4bN2f/m8c6B1NMdCERAg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.12.tgz", - "integrity": "sha512-Goxag86JvLq8ucHLXFNSLYzf9wrR+CJr37DsESTAzSnGoqDTgw5eqiXSQVd/D9Biih7+DIn8UIQCxMs8emRRwg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.12.tgz", - "integrity": "sha512-tJNUjttL5CxiiS/KLxT4/Zk0Nbl/poFhztFxktb46zoQEUWaGHR9ZJ0SnvE7DbFX5PY5JNJDMZ0Li4lm246fWw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", "dev": true, "requires": { "debug": "^3.1.0" } }, "@webassemblyjs/helper-code-frame": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.12.tgz", - "integrity": "sha512-0FrJgiST+MQDMvPigzs+UIk1vslLIqGadkEWdn53Lr0NsUC2JbheG9QaO3Zf6ycK2JwsHiUpGaMFcHYXStTPMA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.5.12" + "@webassemblyjs/wast-printer": "1.5.13" } }, "@webassemblyjs/helper-fsm": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.12.tgz", - "integrity": "sha512-QBHZ45VPUJ7UyYKvUFoaxrSS9H5hbkC9U7tdWgFHmnTMutkXSEgDg2gZg3I/QTsiKOCIwx4qJUJwPd7J4D5CNQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.12.tgz", - "integrity": "sha512-SCXR8hPI4JOG3cdy9HAO8W5/VQ68YXG/Hfs7qDf1cd64zWuMNshyEour5NYnLMVkrrtc0XzfVS/MdeV94woFHA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", "dev": true, "requires": { "debug": "^3.1.0", @@ -148,128 +148,136 @@ } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.12.tgz", - "integrity": "sha512-0Gz5lQcyvElNVbOTKwjEmIxGwdWf+zpAW/WGzGo95B7IgMEzyyfZU+PrGHDwiSH9c0knol9G7smQnY0ljrSA6g==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.12.tgz", - "integrity": "sha512-ge/CKVKBGpiJhFN9PIOQ7sPtGYJhxm/mW1Y3SpG1L6XBunfRz0YnLjW3TmhcOEFozIVyODPS1HZ9f7VR3GBGow==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", "debug": "^3.1.0" } }, "@webassemblyjs/ieee754": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.12.tgz", - "integrity": "sha512-F+PEv9QBzPi1ThLBouUJbuxhEr+Sy/oua1ftXFKHiaYYS5Z9tKPvK/hgCxlSdq+RY4MSG15jU2JYb/K5pkoybg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", "dev": true, "requires": { "ieee754": "^1.1.11" } }, "@webassemblyjs/leb128": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.12.tgz", - "integrity": "sha512-cCOx/LVGiWyCwVrVlvGmTdnwHzIP4+zflLjGkZxWpYCpdNax9krVIJh1Pm7O86Ox/c5PrJpbvZU1cZLxndlPEw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", "dev": true, "requires": { - "leb": "^0.3.0" + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } } }, "@webassemblyjs/utf8": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.12.tgz", - "integrity": "sha512-FX8NYQMiTRU0TfK/tJVntsi9IEKsedSsna8qtsndWVE0x3zLndugiApxdNMIOoElBV9o4j0BUqR+iwU58QfPxQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.12.tgz", - "integrity": "sha512-r/oZAyC4EZl0ToOYJgvj+b0X6gVEKQMLT34pNNbtvWBehQOnaSXvVUA5FIYlH8ubWjFNAFqYaVGgQTjR1yuJdQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/helper-wasm-section": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", - "@webassemblyjs/wasm-opt": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", - "@webassemblyjs/wast-printer": "1.5.12", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", "debug": "^3.1.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.12.tgz", - "integrity": "sha512-LTu+cr1YRxGGiVIXWhei/35lXXEwTnQU18x4V/gE+qCSJN21QcVTMjJuasTUh8WtmBZtOlqJbOQIeN7fGnHWhg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/ieee754": "1.5.12", - "@webassemblyjs/leb128": "1.5.12", - "@webassemblyjs/utf8": "1.5.12" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, "@webassemblyjs/wasm-opt": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.12.tgz", - "integrity": "sha512-LBwG5KPA9u/uigZVyTsDpS3CVxx3AePCnTItVL+OPkRCp5LqmLsOp4a3/c5CQE0Lecm0Ss9hjUTDcbYFZkXlfQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", "debug": "^3.1.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.12.tgz", - "integrity": "sha512-xset3+1AtoFYEfMg30nzCGBnhKmTBzbIKvMyLhqJT06TvYV+kA884AOUpUvhSmP6XPF3G+HVZPm/PbCGxH4/VQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-api-error": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/ieee754": "1.5.12", - "@webassemblyjs/leb128": "1.5.12", - "@webassemblyjs/utf8": "1.5.12" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, "@webassemblyjs/wast-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.12.tgz", - "integrity": "sha512-QWUtzhvfY7Ue9GlJ3HeOB6w5g9vNYUUnG+Y96TWPkFHJTxZlcvGfNrUoACCw6eDb9gKaHrjt77aPq41a7y8svg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/floating-point-hex-parser": "1.5.12", - "@webassemblyjs/helper-api-error": "1.5.12", - "@webassemblyjs/helper-code-frame": "1.5.12", - "@webassemblyjs/helper-fsm": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", "long": "^3.2.0", "mamacro": "^0.0.3" } }, "@webassemblyjs/wast-printer": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.12.tgz", - "integrity": "sha512-XF9RTeckFgDyl196uRKZWHFFfbkzsMK96QTXp+TC0R9gsV9DMiDGMSIllgy/WdrZ3y3dsQp4fTA5r4GoaOBchA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/wast-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", "long": "^3.2.0" } }, @@ -306,12 +314,6 @@ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -346,15 +348,6 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -434,20 +427,6 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - } - }, "axios": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", @@ -468,12 +447,6 @@ "js-tokens": "^3.0.2" } }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", @@ -682,16 +655,6 @@ "pako": "~1.0.5" } }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -765,24 +728,6 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000851", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000851.tgz", - "integrity": "sha1-ig08pN3nIGhWCsyYus91o1no0+M=", - "dev": true - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -848,15 +793,6 @@ "safe-buffer": "^5.0.1" } }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "^1.1.3" - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -923,21 +859,6 @@ } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -954,17 +875,6 @@ "object-visit": "^1.0.0" } }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -980,32 +890,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "^1.0.0" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, "commander": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", @@ -1161,26 +1045,18 @@ "randomfill": "^1.0.3" } }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, "css-loader": { - "version": "0.28.11", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", - "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", + "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", "css-selector-tokenizer": "^0.7.0", - "cssnano": "^3.10.0", "icss-utils": "^2.1.0", "loader-utils": "^1.0.2", "lodash.camelcase": "^4.3.0", - "object-assign": "^4.1.1", - "postcss": "^5.0.6", + "postcss": "^6.0.23", "postcss-modules-extract-imports": "^1.2.0", "postcss-modules-local-by-default": "^1.2.0", "postcss-modules-scope": "^1.1.0", @@ -1206,56 +1082,6 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -1335,12 +1161,6 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1389,12 +1209,6 @@ "stream-shift": "^1.0.0" } }, - "electron-to-chromium": { - "version": "1.3.48", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", - "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", - "dev": true - }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -1461,12 +1275,6 @@ "estraverse": "^4.1.1" } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -1753,12 +1561,6 @@ "locate-path": "^2.0.0" } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -1840,8 +1642,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2256,8 +2057,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -2313,7 +2113,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2357,23 +2156,15 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -2439,15 +2230,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2458,9 +2240,9 @@ } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-value": { @@ -2538,12 +2320,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -2572,60 +2348,6 @@ "dev": true, "requires": { "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "ieee754": { @@ -2769,12 +2491,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -2901,12 +2617,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -2928,15 +2638,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -2961,28 +2662,12 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "js-base64": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", - "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", - "dev": true - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", @@ -3022,12 +2707,6 @@ "invert-kv": "^1.0.0" } }, - "leb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", - "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", - "dev": true - }, "loader-runner": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", @@ -3073,18 +2752,6 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "long": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", @@ -3131,12 +2798,6 @@ "object-visit": "^1.0.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -3406,24 +3067,6 @@ "remove-trailing-separator": "^1.0.1" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -3433,24 +3076,12 @@ "path-key": "^2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -3672,206 +3303,14 @@ "dev": true }, "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "^5.0.16" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", - "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", - "dev": true, - "requires": { - "postcss": "^6.0.1" + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" }, "dependencies": { "ansi-styles": { @@ -3894,23 +3333,6 @@ "supports-color": "^5.3.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -3928,6 +3350,15 @@ } } }, + "postcss-modules-extract-imports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, "postcss-modules-local-by-default": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", @@ -3936,60 +3367,6 @@ "requires": { "css-selector-tokenizer": "^0.7.0", "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-scope": { @@ -4000,60 +3377,6 @@ "requires": { "css-selector-tokenizer": "^0.7.0", "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "postcss-modules-values": { @@ -4064,155 +3387,6 @@ "requires": { "icss-replace-symbols": "^1.1.0", "postcss": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "^5.0.5" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" } }, "postcss-value-parser": { @@ -4221,23 +3395,6 @@ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", "dev": true }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "prettier": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.4.tgz", @@ -4314,22 +3471,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -4388,26 +3529,6 @@ "set-immediate-shim": "^1.0.1" } }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2" - } - }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -4584,12 +3705,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "schema-utils": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", @@ -4800,15 +3915,6 @@ } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", @@ -4849,12 +3955,6 @@ "extend-shallow": "^3.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "ssri": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", @@ -4924,12 +4024,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -4987,21 +4081,6 @@ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - } - }, "tapable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", @@ -5191,12 +4270,6 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "unique-filename": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", @@ -5324,12 +4397,6 @@ "integrity": "sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg==", "dev": true }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -5401,16 +4468,16 @@ } }, "webpack": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.14.0.tgz", - "integrity": "sha512-CgZPUwobJbQlZqpylDNtEazZLfNnGuyFmpk1dHIP2kFchtyMWB+W2wBKPImSnSQ2rbX/WZMKiQax+SZmlUXuQQ==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.15.1.tgz", + "integrity": "sha512-UwfFQ2plA5EMhhzwi/hl5xpLk7mNK7p0853Ml04z1Bqw553pY+oS8Xke3funcVy7eG/yMpZPvnlFTUyGKyKoyw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-module-context": "1.5.12", - "@webassemblyjs/wasm-edit": "1.5.12", - "@webassemblyjs/wasm-opt": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", "acorn": "^5.6.2", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", @@ -5529,12 +4596,6 @@ } } }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/apps/oauth2/package.json b/apps/oauth2/package.json index 4a848d63212..8f8d78ccde0 100644 --- a/apps/oauth2/package.json +++ b/apps/oauth2/package.json @@ -20,11 +20,11 @@ "vue": "^2.5.16" }, "devDependencies": { - "css-loader": "^0.28.11", + "css-loader": "^1.0.0", "file-loader": "^1.1.11", "vue-loader": "^15.2.4", "vue-template-compiler": "^2.5.16", - "webpack": "^4.14.0", + "webpack": "^4.15.1", "webpack-cli": "^3.0.8", "webpack-merge": "^4.1.3" } diff --git a/apps/sharebymail/l10n/fr.js b/apps/sharebymail/l10n/fr.js index 0a66fce6b54..25e9b9afe75 100644 --- a/apps/sharebymail/l10n/fr.js +++ b/apps/sharebymail/l10n/fr.js @@ -35,6 +35,7 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.", "Could not find share" : "Impossible de trouver le partage", "Share by mail" : "Partage par e-mail", + "Share provider which allows you to share files by mail" : "Vous permet de partager des fichiers par courriel", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Autoriser les utilisateurs de partager un lien personnalisé vers un fichier ou un dossier en renseignant une adresse e-mail.", "Send password by mail" : "Envoyer le mot de passe par e-mail", "Enforce password protection" : "Imposer la protection par mot de passe", diff --git a/apps/sharebymail/l10n/fr.json b/apps/sharebymail/l10n/fr.json index 23cd35032a3..168d2a4108f 100644 --- a/apps/sharebymail/l10n/fr.json +++ b/apps/sharebymail/l10n/fr.json @@ -33,6 +33,7 @@ "You can choose a different password at any time in the share dialog." : "Vous pouvez choisir un mot de passe différent à n'importe quel moment dans la boîte de dialogue de partage.", "Could not find share" : "Impossible de trouver le partage", "Share by mail" : "Partage par e-mail", + "Share provider which allows you to share files by mail" : "Vous permet de partager des fichiers par courriel", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Autoriser les utilisateurs de partager un lien personnalisé vers un fichier ou un dossier en renseignant une adresse e-mail.", "Send password by mail" : "Envoyer le mot de passe par e-mail", "Enforce password protection" : "Imposer la protection par mot de passe", diff --git a/apps/sharebymail/l10n/he.js b/apps/sharebymail/l10n/he.js index a51f845e26b..eddb858814c 100644 --- a/apps/sharebymail/l10n/he.js +++ b/apps/sharebymail/l10n/he.js @@ -3,10 +3,14 @@ OC.L10N.register( { "Shared with %1$s" : "משותף עם %1$s", "Shared with {email}" : "משותף עם {email}", + "Shared with %1$s by %2$s" : "שותף עם %1$s על ידי %2$s", + "Shared with {email} by {actor}" : "שותף עם {email} על ידי {actor}", + "Password for mail share sent to %1$s" : "הססמה לשיתוף דוא״ל נשלחה אל %1$s", "Password for mail share sent to {email}" : "ססמת השיתוף בדוא״ל נשלחה אל {email}", "Password for mail share sent to you" : "ססמת השיתוף בדוא״ל נשלחה אליך", "You shared %1$s with %2$s by mail" : "שיתפת את %1$s עם %2$s בדוא״ל", "You shared {file} with {email} by mail" : "שיתפת את {file} עם {email} בדוא״ל", + "%3$s shared %1$s with %2$s by mail" : "%1$s שותף עם %2$s על ידי %3$s בדוא״ל", "Password to access %1$s was sent to %2s" : "ססמת הגישה אל %1$s נשלחה אל %2s", "Password to access {file} was sent to {email}" : "ססמת הגישה אל {file} נשלחה אל {email}", "Password to access %1$s was sent to you" : "ססמת הגישה אל %1$s נשלחה אליך", diff --git a/apps/sharebymail/l10n/he.json b/apps/sharebymail/l10n/he.json index 4b75e694400..0e1c0befd46 100644 --- a/apps/sharebymail/l10n/he.json +++ b/apps/sharebymail/l10n/he.json @@ -1,10 +1,14 @@ { "translations": { "Shared with %1$s" : "משותף עם %1$s", "Shared with {email}" : "משותף עם {email}", + "Shared with %1$s by %2$s" : "שותף עם %1$s על ידי %2$s", + "Shared with {email} by {actor}" : "שותף עם {email} על ידי {actor}", + "Password for mail share sent to %1$s" : "הססמה לשיתוף דוא״ל נשלחה אל %1$s", "Password for mail share sent to {email}" : "ססמת השיתוף בדוא״ל נשלחה אל {email}", "Password for mail share sent to you" : "ססמת השיתוף בדוא״ל נשלחה אליך", "You shared %1$s with %2$s by mail" : "שיתפת את %1$s עם %2$s בדוא״ל", "You shared {file} with {email} by mail" : "שיתפת את {file} עם {email} בדוא״ל", + "%3$s shared %1$s with %2$s by mail" : "%1$s שותף עם %2$s על ידי %3$s בדוא״ל", "Password to access %1$s was sent to %2s" : "ססמת הגישה אל %1$s נשלחה אל %2s", "Password to access {file} was sent to {email}" : "ססמת הגישה אל {file} נשלחה אל {email}", "Password to access %1$s was sent to you" : "ססמת הגישה אל %1$s נשלחה אליך", diff --git a/apps/sharebymail/l10n/pt_BR.js b/apps/sharebymail/l10n/pt_BR.js index 9800e8ade1d..4d3b2f7ccea 100644 --- a/apps/sharebymail/l10n/pt_BR.js +++ b/apps/sharebymail/l10n/pt_BR.js @@ -7,25 +7,25 @@ OC.L10N.register( "Shared with {email} by {actor}" : "Compartilhado com {email} por {actor}", "Password for mail share sent to %1$s" : "Senha para o correio compartilhado enviado para %1$s", "Password for mail share sent to {email}" : "Senha para o correio compartilhado enviado para {email}", - "Password for mail share sent to you" : "Senha do compartilhamento por email foi enviado para você", - "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por email", - "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por email", - "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por email", - "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por email", + "Password for mail share sent to you" : "Senha do compartilhamento por e-mail foi enviado para você", + "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por e-mail", + "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por e-mail", + "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por e-mail", + "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por e-mail", "Password to access %1$s was sent to %2s" : "A senha para acesso %1$s foi enviada para %2s", "Password to access {file} was sent to {email}" : "A senha para acesso {file} foi enviada para {email}", "Password to access %1$s was sent to you" : "A senha para acesso %1$s foi enviada para você", "Password to access {file} was sent to you" : "A senha para acesso {file} foi enviada para você", "Sharing %s failed, this item is already shared with %s" : "O compartilhamento %s falhou, pois este item já está compartilhado com %s", - "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um email válido em sua configuração e tente novamente.", - "Failed to send share by email" : "Falha ao enviar compartilhamento via email", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um e-mail válido em sua configuração e tente novamente.", + "Failed to send share by email" : "Falha ao enviar compartilhamento via e-mail", "%s shared »%s« with you" : "%s compartilhou »%s« com você", "%s shared »%s« with you." : "%s compartilhou »%s« com você.", "Click the button below to open it." : "Clique no botão abaixo para abrí-lo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s via %s", - "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um email com um link para acessá-lo.\n", - "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um email com um link para acessá-lo.", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um e-mail com um link para acessá-lo.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um e-mail com um link para acessá-lo.", "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", "Password to access »%s«" : "Senha para acessar »%s«", "It is protected with the following password: %s" : "Está protegido com a seguinte senha: %s", @@ -34,11 +34,11 @@ OC.L10N.register( "This is the password: %s" : "Essa é a senha: %s", "You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.", "Could not find share" : "Não foi possível encontrar o compartilhamento", - "Share by mail" : "Compartilhamento por email", - "Share provider which allows you to share files by mail" : "Provedor de compartilhamento que permite compartilhar arquivos por email", - "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite que os usuários compartilhem um link personalizado para um arquivo ou pasta, inserindo um endereço de email.", - "Send password by mail" : "Enviar senha por email", + "Share by mail" : "Compartilhamento por e-mail", + "Share provider which allows you to share files by mail" : "Provedor de compartilhamento que permite compartilhar arquivos por e-mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite que os usuários compartilhem um link personalizado para um arquivo ou pasta, inserindo um endereço de e-mail.", + "Send password by mail" : "Enviar senha por e-mail", "Enforce password protection" : "Reforce a proteção por senha", - "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por email" + "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por e-mail" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/sharebymail/l10n/pt_BR.json b/apps/sharebymail/l10n/pt_BR.json index d58ae08113e..8267de1a540 100644 --- a/apps/sharebymail/l10n/pt_BR.json +++ b/apps/sharebymail/l10n/pt_BR.json @@ -5,25 +5,25 @@ "Shared with {email} by {actor}" : "Compartilhado com {email} por {actor}", "Password for mail share sent to %1$s" : "Senha para o correio compartilhado enviado para %1$s", "Password for mail share sent to {email}" : "Senha para o correio compartilhado enviado para {email}", - "Password for mail share sent to you" : "Senha do compartilhamento por email foi enviado para você", - "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por email", - "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por email", - "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por email", - "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por email", + "Password for mail share sent to you" : "Senha do compartilhamento por e-mail foi enviado para você", + "You shared %1$s with %2$s by mail" : "Você compartilhou %1$s com %2$s por e-mail", + "You shared {file} with {email} by mail" : "Você compartilhou {file} com {email} por e-mail", + "%3$s shared %1$s with %2$s by mail" : "%3$s compartilou %1$s com %2$s por e-mail", + "{actor} shared {file} with {email} by mail" : "{actor} compartilhou {file} com {email} por e-mail", "Password to access %1$s was sent to %2s" : "A senha para acesso %1$s foi enviada para %2s", "Password to access {file} was sent to {email}" : "A senha para acesso {file} foi enviada para {email}", "Password to access %1$s was sent to you" : "A senha para acesso %1$s foi enviada para você", "Password to access {file} was sent to you" : "A senha para acesso {file} foi enviada para você", "Sharing %s failed, this item is already shared with %s" : "O compartilhamento %s falhou, pois este item já está compartilhado com %s", - "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um email válido em sua configuração e tente novamente.", - "Failed to send share by email" : "Falha ao enviar compartilhamento via email", + "We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Não pudemos enviar a você a senha auto-gerada. por favor defina um e-mail válido em sua configuração e tente novamente.", + "Failed to send share by email" : "Falha ao enviar compartilhamento via e-mail", "%s shared »%s« with you" : "%s compartilhou »%s« com você", "%s shared »%s« with you." : "%s compartilhou »%s« com você.", "Click the button below to open it." : "Clique no botão abaixo para abrí-lo.", "Open »%s«" : "Abrir »%s«", "%s via %s" : "%s via %s", - "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um email com um link para acessá-lo.\n", - "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um email com um link para acessá-lo.", + "%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n" : "%s compartilhou »%s« com você.\nVocê já deve ter recebido um e-mail com um link para acessá-lo.\n", + "%s shared »%s« with you. You should have already received a separate mail with a link to access it." : "%s compartilhou »%s« com você. Você já deve ter recebido um e-mail com um link para acessá-lo.", "Password to access »%s« shared to you by %s" : "Senha para acessar %s compartilhado com você por %s", "Password to access »%s«" : "Senha para acessar »%s«", "It is protected with the following password: %s" : "Está protegido com a seguinte senha: %s", @@ -32,11 +32,11 @@ "This is the password: %s" : "Essa é a senha: %s", "You can choose a different password at any time in the share dialog." : "Você pode escolher uma senha diferente a qualquer momento no diálogo compartilhamento.", "Could not find share" : "Não foi possível encontrar o compartilhamento", - "Share by mail" : "Compartilhamento por email", - "Share provider which allows you to share files by mail" : "Provedor de compartilhamento que permite compartilhar arquivos por email", - "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite que os usuários compartilhem um link personalizado para um arquivo ou pasta, inserindo um endereço de email.", - "Send password by mail" : "Enviar senha por email", + "Share by mail" : "Compartilhamento por e-mail", + "Share provider which allows you to share files by mail" : "Provedor de compartilhamento que permite compartilhar arquivos por e-mail", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Permite que os usuários compartilhem um link personalizado para um arquivo ou pasta, inserindo um endereço de e-mail.", + "Send password by mail" : "Enviar senha por e-mail", "Enforce password protection" : "Reforce a proteção por senha", - "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por email" + "Failed to send share by E-mail" : "Falha ao enviar compartilhamento por e-mail" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/bg.js b/apps/systemtags/l10n/bg.js index 8c9dd811524..2c1508f8e6c 100644 --- a/apps/systemtags/l10n/bg.js +++ b/apps/systemtags/l10n/bg.js @@ -40,9 +40,9 @@ OC.L10N.register( "{actor} removed system tag {systemtag} from {file}" : "{actor} премахна системен таг {systemtag} от {file}", "<strong>System tags</strong> for a file have been modified" : "Промяна на <strong>системни тагове</strong> за файл", "Name" : "Име", - "Delete" : "Изтриване", "Public" : "Публичен", "Restricted" : "Ограничен", + "Delete" : "Изтриване", "Reset" : "Възстанови", "No files in here" : "Тук няма файлове", "No entries found in this folder" : "Няма намерени записи в тази папка", diff --git a/apps/systemtags/l10n/bg.json b/apps/systemtags/l10n/bg.json index 40f5efa97da..732da7f6b88 100644 --- a/apps/systemtags/l10n/bg.json +++ b/apps/systemtags/l10n/bg.json @@ -38,9 +38,9 @@ "{actor} removed system tag {systemtag} from {file}" : "{actor} премахна системен таг {systemtag} от {file}", "<strong>System tags</strong> for a file have been modified" : "Промяна на <strong>системни тагове</strong> за файл", "Name" : "Име", - "Delete" : "Изтриване", "Public" : "Публичен", "Restricted" : "Ограничен", + "Delete" : "Изтриване", "Reset" : "Възстанови", "No files in here" : "Тук няма файлове", "No entries found in this folder" : "Няма намерени записи в тази папка", diff --git a/apps/systemtags/l10n/ca.js b/apps/systemtags/l10n/ca.js index aa098858184..c65a57b0619 100644 --- a/apps/systemtags/l10n/ca.js +++ b/apps/systemtags/l10n/ca.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", "Collaborative tags" : "Etiquetes col·laboratives", - "Create and edit collaborative tags. These tags affect all users." : "Creeu i editeu etiquetes col·laboratives. Aquestes etiquetes afecten a tots els usuaris.", "Select tag …" : "Selecciona etiqueta...", "Name" : "Nom", - "Delete" : "Esborra", "Public" : "Públic", "Restricted" : "Restringit", "Invisible" : "Invisible", + "Delete" : "Esborra", "Reset" : "Canvia", "No files in here" : "No hi ha arxius", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Size" : "Mida", - "Modified" : "Modificat" + "Modified" : "Modificat", + "Create and edit collaborative tags. These tags affect all users." : "Creeu i editeu etiquetes col·laboratives. Aquestes etiquetes afecten a tots els usuaris." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/ca.json b/apps/systemtags/l10n/ca.json index 12a18285956..28aebae7174 100644 --- a/apps/systemtags/l10n/ca.json +++ b/apps/systemtags/l10n/ca.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", "Collaborative tags" : "Etiquetes col·laboratives", - "Create and edit collaborative tags. These tags affect all users." : "Creeu i editeu etiquetes col·laboratives. Aquestes etiquetes afecten a tots els usuaris.", "Select tag …" : "Selecciona etiqueta...", "Name" : "Nom", - "Delete" : "Esborra", "Public" : "Públic", "Restricted" : "Restringit", "Invisible" : "Invisible", + "Delete" : "Esborra", "Reset" : "Canvia", "No files in here" : "No hi ha arxius", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Size" : "Mida", - "Modified" : "Modificat" + "Modified" : "Modificat", + "Create and edit collaborative tags. These tags affect all users." : "Creeu i editeu etiquetes col·laboratives. Aquestes etiquetes afecten a tots els usuaris." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js index e4fcc16ccaa..c923b68560d 100644 --- a/apps/systemtags/l10n/cs.js +++ b/apps/systemtags/l10n/cs.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (neviditelný)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny", "Collaborative tags" : "Značky pro spolupráci", - "Create and edit collaborative tags. These tags affect all users." : "Vytvářejte a upravujte značky pro spolupráci. Tyto značky ovlivní všechny uživatele.", "Select tag …" : "Vyberte štítek…", "Name" : "Název", - "Delete" : "Smazat", "Public" : "Veřejné", "Restricted" : "Omezené", "Invisible" : "Neviditelné", + "Delete" : "Smazat", "Reset" : "Obnovit", "No files in here" : "Žádné soubory", "No entries found in this folder" : "V tomto adresáři nebylo nic nalezeno", "Size" : "Velikost", - "Modified" : "Upraveno" + "Modified" : "Upraveno", + "Create and edit collaborative tags. These tags affect all users." : "Vytvářejte a upravujte značky pro spolupráci. Tyto značky ovlivní všechny uživatele." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json index 61e1244873a..4f644d1d3ff 100644 --- a/apps/systemtags/l10n/cs.json +++ b/apps/systemtags/l10n/cs.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (neviditelný)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové tagy</strong> souboru byly upraveny", "Collaborative tags" : "Značky pro spolupráci", - "Create and edit collaborative tags. These tags affect all users." : "Vytvářejte a upravujte značky pro spolupráci. Tyto značky ovlivní všechny uživatele.", "Select tag …" : "Vyberte štítek…", "Name" : "Název", - "Delete" : "Smazat", "Public" : "Veřejné", "Restricted" : "Omezené", "Invisible" : "Neviditelné", + "Delete" : "Smazat", "Reset" : "Obnovit", "No files in here" : "Žádné soubory", "No entries found in this folder" : "V tomto adresáři nebylo nic nalezeno", "Size" : "Velikost", - "Modified" : "Upraveno" + "Modified" : "Upraveno", + "Create and edit collaborative tags. These tags affect all users." : "Vytvářejte a upravujte značky pro spolupráci. Tyto značky ovlivní všechny uživatele." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/da.js b/apps/systemtags/l10n/da.js index 7e3325d2bb0..0a945992d93 100644 --- a/apps/systemtags/l10n/da.js +++ b/apps/systemtags/l10n/da.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "En fils <strong>systemmærkning</strong> er blevet ændret", "Collaborative tags" : "Kollaborativ tags", - "Create and edit collaborative tags. These tags affect all users." : "Tilføj og rediger kollaborative tags. Disse tags berøre alle brugere.", "Select tag …" : "Vælg tag...", "Name" : "Navn", - "Delete" : "Slet", "Public" : "Offentlig", "Restricted" : "Begrænset", "Invisible" : "Usynlig", + "Delete" : "Slet", "Reset" : "Reset", "No files in here" : "Her er ingen filer", "No entries found in this folder" : "Der blev ikke fundet poster i denne mappe", "Size" : "Størrelse", - "Modified" : "Ændret" + "Modified" : "Ændret", + "Create and edit collaborative tags. These tags affect all users." : "Tilføj og rediger kollaborative tags. Disse tags berøre alle brugere." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/da.json b/apps/systemtags/l10n/da.json index 69ecdafd7fb..22691fc91dc 100644 --- a/apps/systemtags/l10n/da.json +++ b/apps/systemtags/l10n/da.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "En fils <strong>systemmærkning</strong> er blevet ændret", "Collaborative tags" : "Kollaborativ tags", - "Create and edit collaborative tags. These tags affect all users." : "Tilføj og rediger kollaborative tags. Disse tags berøre alle brugere.", "Select tag …" : "Vælg tag...", "Name" : "Navn", - "Delete" : "Slet", "Public" : "Offentlig", "Restricted" : "Begrænset", "Invisible" : "Usynlig", + "Delete" : "Slet", "Reset" : "Reset", "No files in here" : "Her er ingen filer", "No entries found in this folder" : "Der blev ikke fundet poster i denne mappe", "Size" : "Størrelse", - "Modified" : "Ændret" + "Modified" : "Ændret", + "Create and edit collaborative tags. These tags affect all users." : "Tilføj og rediger kollaborative tags. Disse tags berøre alle brugere." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js index 8af8ad4df29..07e9529e84e 100644 --- a/apps/systemtags/l10n/de.js +++ b/apps/systemtags/l10n/de.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags-Funktionalität, welche Tags unter den Benutzern teilt.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Kollaborative Tags-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)", - "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Tags. Diese Schlagworte betreffen alle Benutzer.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Gemeinschaftliche Schlagworte sind für alle Benutzer verfügbar. Eingeschränkte Schlagworte sind für alle Benutzer sichtbar, können jedoch nicht zugewiesen werden. Nichtsichtbare Schlagworte sind für interne Verwendung und können vom Benutzer nicht eingesehen und nicht zugewiesen werden.", "Select tag …" : "Tag wählen…", + "Create a new tag" : "Neues Schlagwort erstellen", "Name" : "Name", - "Delete" : "Löschen", "Public" : "Öffentlich", "Restricted" : "Eingeschränkt", "Invisible" : "Nicht sichtbar", + "Delete" : "Löschen", "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", - "Modified" : "Geändert" + "Modified" : "Geändert", + "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Tags. Diese Schlagworte betreffen alle Benutzer." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json index 2887c54bd25..10b3131b047 100644 --- a/apps/systemtags/l10n/de.json +++ b/apps/systemtags/l10n/de.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags-Funktionalität, welche Tags unter den Benutzern teilt.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Kollaborative Tags-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)", - "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Tags. Diese Schlagworte betreffen alle Benutzer.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Gemeinschaftliche Schlagworte sind für alle Benutzer verfügbar. Eingeschränkte Schlagworte sind für alle Benutzer sichtbar, können jedoch nicht zugewiesen werden. Nichtsichtbare Schlagworte sind für interne Verwendung und können vom Benutzer nicht eingesehen und nicht zugewiesen werden.", "Select tag …" : "Tag wählen…", + "Create a new tag" : "Neues Schlagwort erstellen", "Name" : "Name", - "Delete" : "Löschen", "Public" : "Öffentlich", "Restricted" : "Eingeschränkt", "Invisible" : "Nicht sichtbar", + "Delete" : "Löschen", "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", - "Modified" : "Geändert" + "Modified" : "Geändert", + "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Tags. Diese Schlagworte betreffen alle Benutzer." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/de_DE.js b/apps/systemtags/l10n/de_DE.js index e31d571055f..c95de5c7a9f 100644 --- a/apps/systemtags/l10n/de_DE.js +++ b/apps/systemtags/l10n/de_DE.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags-Funktionalität, welche Tags unter den Benutzern teilt.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Kollaborative Tags-Funktionalität, welche Tags unter den Benutzern teilt. Sehr gut für Gruppen.\n\t(Wenn Sie ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Tags mit allen Kunden geteilt werden.)", - "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie kollaborative Tags. Diese Tags betreffen alle Benutzer.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Gemeinschaftliche Schlagworte sind für alle Benutzer verfügbar. Eingeschränkte Schlagworte sind für alle Benutzer sichtbar, können jedoch nicht zugewiesen werden. Nichtsichtbare Schlagworte sind für interne Verwendung und können vom Benutzer nicht eingesehen und nicht zugewiesen werden.", "Select tag …" : "Tag wählen …", + "Create a new tag" : "Neues Schlagwort erstellen", "Name" : "Name", - "Delete" : "Löschen", "Public" : "Öffentlich", "Restricted" : "Eingeschränkt", "Invisible" : "Nicht sichtbar", + "Delete" : "Löschen", "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", - "Modified" : "Geändert" + "Modified" : "Geändert", + "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie kollaborative Tags. Diese Tags betreffen alle Benutzer." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/de_DE.json b/apps/systemtags/l10n/de_DE.json index c5c24147781..cc4ed446b51 100644 --- a/apps/systemtags/l10n/de_DE.json +++ b/apps/systemtags/l10n/de_DE.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Kollaborative Tags", "Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags-Funktionalität, welche Tags unter den Benutzern teilt.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Kollaborative Tags-Funktionalität, welche Tags unter den Benutzern teilt. Sehr gut für Gruppen.\n\t(Wenn Sie ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Tags mit allen Kunden geteilt werden.)", - "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie kollaborative Tags. Diese Tags betreffen alle Benutzer.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Gemeinschaftliche Schlagworte sind für alle Benutzer verfügbar. Eingeschränkte Schlagworte sind für alle Benutzer sichtbar, können jedoch nicht zugewiesen werden. Nichtsichtbare Schlagworte sind für interne Verwendung und können vom Benutzer nicht eingesehen und nicht zugewiesen werden.", "Select tag …" : "Tag wählen …", + "Create a new tag" : "Neues Schlagwort erstellen", "Name" : "Name", - "Delete" : "Löschen", "Public" : "Öffentlich", "Restricted" : "Eingeschränkt", "Invisible" : "Nicht sichtbar", + "Delete" : "Löschen", "Reset" : "Zurücksetzen", "No files in here" : "Keine Dateien vorhanden", "No entries found in this folder" : "Keine Einträge in diesem Ordner gefunden", "Size" : "Größe", - "Modified" : "Geändert" + "Modified" : "Geändert", + "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie kollaborative Tags. Diese Tags betreffen alle Benutzer." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/el.js b/apps/systemtags/l10n/el.js index 73ea875397f..ac32a3b89ce 100644 --- a/apps/systemtags/l10n/el.js +++ b/apps/systemtags/l10n/el.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (αόρατο)", "<strong>System tags</strong> for a file have been modified" : "<strong>Οι ετικέτες συστήματος</strong> για ένα αρχείο έχουν τροποποιηθεί", "Collaborative tags" : "Ετικέτες συνεργασίας", - "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες.", "Select tag …" : "Επιλογή ετικέτας ...", "Name" : "Όνομα", - "Delete" : "Διαγραφή", "Public" : "Δημόσιο", "Restricted" : "Περιορισμένο", "Invisible" : "Αόρατο", + "Delete" : "Διαγραφή", "Reset" : "Επαναφορά", "No files in here" : "Δεν υπάρχουν αρχεία", "No entries found in this folder" : "Δεν βρέθηκαν καταχωρήσεις σε αυτόν το φάκελο", "Size" : "Μέγεθος", - "Modified" : "Τροποποιήθηκε" + "Modified" : "Τροποποιήθηκε", + "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/el.json b/apps/systemtags/l10n/el.json index e9c61b16026..bfe8fcdc618 100644 --- a/apps/systemtags/l10n/el.json +++ b/apps/systemtags/l10n/el.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (αόρατο)", "<strong>System tags</strong> for a file have been modified" : "<strong>Οι ετικέτες συστήματος</strong> για ένα αρχείο έχουν τροποποιηθεί", "Collaborative tags" : "Ετικέτες συνεργασίας", - "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες.", "Select tag …" : "Επιλογή ετικέτας ...", "Name" : "Όνομα", - "Delete" : "Διαγραφή", "Public" : "Δημόσιο", "Restricted" : "Περιορισμένο", "Invisible" : "Αόρατο", + "Delete" : "Διαγραφή", "Reset" : "Επαναφορά", "No files in here" : "Δεν υπάρχουν αρχεία", "No entries found in this folder" : "Δεν βρέθηκαν καταχωρήσεις σε αυτόν το φάκελο", "Size" : "Μέγεθος", - "Modified" : "Τροποποιήθηκε" + "Modified" : "Τροποποιήθηκε", + "Create and edit collaborative tags. These tags affect all users." : "Δημιουργήστε και διορθώστε συνεργατικές ετικέτες. Αυτές οι ετικέτες επηρεάζουν όλους τους χρήστες." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/en_GB.js b/apps/systemtags/l10n/en_GB.js index 2b4fd8ad329..c822d0f64ea 100644 --- a/apps/systemtags/l10n/en_GB.js +++ b/apps/systemtags/l10n/en_GB.js @@ -44,17 +44,17 @@ OC.L10N.register( "Collaborative tags" : "Collaborative tags", "Collaborative tagging functionality which shares tags among users." : "Collaborative tagging functionality which shares tags among users.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)", - "Create and edit collaborative tags. These tags affect all users." : "Create and edit collaborative tags. These tags affect all users.", "Select tag …" : "Select tag …", "Name" : "Name", - "Delete" : "Delete", "Public" : "Public", "Restricted" : "Restricted", "Invisible" : "Invisible", + "Delete" : "Delete", "Reset" : "Reset", "No files in here" : "No files in here", "No entries found in this folder" : "No entries found in this folder", "Size" : "Size", - "Modified" : "Modified" + "Modified" : "Modified", + "Create and edit collaborative tags. These tags affect all users." : "Create and edit collaborative tags. These tags affect all users." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/en_GB.json b/apps/systemtags/l10n/en_GB.json index fef088a896a..4dedc38bf02 100644 --- a/apps/systemtags/l10n/en_GB.json +++ b/apps/systemtags/l10n/en_GB.json @@ -42,17 +42,17 @@ "Collaborative tags" : "Collaborative tags", "Collaborative tagging functionality which shares tags among users." : "Collaborative tagging functionality which shares tags among users.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)", - "Create and edit collaborative tags. These tags affect all users." : "Create and edit collaborative tags. These tags affect all users.", "Select tag …" : "Select tag …", "Name" : "Name", - "Delete" : "Delete", "Public" : "Public", "Restricted" : "Restricted", "Invisible" : "Invisible", + "Delete" : "Delete", "Reset" : "Reset", "No files in here" : "No files in here", "No entries found in this folder" : "No entries found in this folder", "Size" : "Size", - "Modified" : "Modified" + "Modified" : "Modified", + "Create and edit collaborative tags. These tags affect all users." : "Create and edit collaborative tags. These tags affect all users." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es.js b/apps/systemtags/l10n/es.js index 52c15a67665..70e322ab4c7 100644 --- a/apps/systemtags/l10n/es.js +++ b/apps/systemtags/l10n/es.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Etiquetas colaborativas", "Collaborative tagging functionality which shares tags among users." : "Funcionalidad de etiquetado colaborativo que comparte las etiquetas entre usuarios.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funcionalidad de etiquetado colaborativo que comparte las etiquetas entre usuarios. Adecuado para equipos.\n\n(Si eres un proveedor con una instalación en multitenencia), se aconseja desactivar esta app pues las etiquetas se comparten).", - "Create and edit collaborative tags. These tags affect all users." : "Crea y edita etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Las etiquetas colaborativas están disponibles para todos los usuarios. Las etiquetas restringidas son visibles para los usuarios, pero no pueden ser asignadas por ellos. Las etiquetas invisibles son para uso interno, pues los usuarios no pueden verlas ni asignarlas.", "Select tag …" : "Selecciona etiqueta...", + "Create a new tag" : "Crear una etiqueta nueva", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restablecer", "No files in here" : "Aquí no hay archivos", "No entries found in this folder" : "No hay entradas en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crea y edita etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es.json b/apps/systemtags/l10n/es.json index 2553d032118..9add5fa015c 100644 --- a/apps/systemtags/l10n/es.json +++ b/apps/systemtags/l10n/es.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Etiquetas colaborativas", "Collaborative tagging functionality which shares tags among users." : "Funcionalidad de etiquetado colaborativo que comparte las etiquetas entre usuarios.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funcionalidad de etiquetado colaborativo que comparte las etiquetas entre usuarios. Adecuado para equipos.\n\n(Si eres un proveedor con una instalación en multitenencia), se aconseja desactivar esta app pues las etiquetas se comparten).", - "Create and edit collaborative tags. These tags affect all users." : "Crea y edita etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Las etiquetas colaborativas están disponibles para todos los usuarios. Las etiquetas restringidas son visibles para los usuarios, pero no pueden ser asignadas por ellos. Las etiquetas invisibles son para uso interno, pues los usuarios no pueden verlas ni asignarlas.", "Select tag …" : "Selecciona etiqueta...", + "Create a new tag" : "Crear una etiqueta nueva", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restablecer", "No files in here" : "Aquí no hay archivos", "No entries found in this folder" : "No hay entradas en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crea y edita etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_419.js b/apps/systemtags/l10n/es_419.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_419.js +++ b/apps/systemtags/l10n/es_419.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_419.json b/apps/systemtags/l10n/es_419.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_419.json +++ b/apps/systemtags/l10n/es_419.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_AR.js b/apps/systemtags/l10n/es_AR.js index cc0f3ed3b93..a69ca103118 100644 --- a/apps/systemtags/l10n/es_AR.js +++ b/apps/systemtags/l10n/es_AR.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_AR.json b/apps/systemtags/l10n/es_AR.json index 39d40dd6d9b..3be83fab9f5 100644 --- a/apps/systemtags/l10n/es_AR.json +++ b/apps/systemtags/l10n/es_AR.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_CL.js b/apps/systemtags/l10n/es_CL.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_CL.js +++ b/apps/systemtags/l10n/es_CL.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_CL.json b/apps/systemtags/l10n/es_CL.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_CL.json +++ b/apps/systemtags/l10n/es_CL.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_CO.js b/apps/systemtags/l10n/es_CO.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_CO.js +++ b/apps/systemtags/l10n/es_CO.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_CO.json b/apps/systemtags/l10n/es_CO.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_CO.json +++ b/apps/systemtags/l10n/es_CO.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_CR.js b/apps/systemtags/l10n/es_CR.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_CR.js +++ b/apps/systemtags/l10n/es_CR.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_CR.json b/apps/systemtags/l10n/es_CR.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_CR.json +++ b/apps/systemtags/l10n/es_CR.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_DO.js b/apps/systemtags/l10n/es_DO.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_DO.js +++ b/apps/systemtags/l10n/es_DO.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_DO.json b/apps/systemtags/l10n/es_DO.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_DO.json +++ b/apps/systemtags/l10n/es_DO.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_EC.js b/apps/systemtags/l10n/es_EC.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_EC.js +++ b/apps/systemtags/l10n/es_EC.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_EC.json b/apps/systemtags/l10n/es_EC.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_EC.json +++ b/apps/systemtags/l10n/es_EC.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_GT.js b/apps/systemtags/l10n/es_GT.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_GT.js +++ b/apps/systemtags/l10n/es_GT.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_GT.json b/apps/systemtags/l10n/es_GT.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_GT.json +++ b/apps/systemtags/l10n/es_GT.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_HN.js b/apps/systemtags/l10n/es_HN.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_HN.js +++ b/apps/systemtags/l10n/es_HN.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_HN.json b/apps/systemtags/l10n/es_HN.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_HN.json +++ b/apps/systemtags/l10n/es_HN.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_MX.js b/apps/systemtags/l10n/es_MX.js index ccc5df094b0..0d948cfd043 100644 --- a/apps/systemtags/l10n/es_MX.js +++ b/apps/systemtags/l10n/es_MX.js @@ -44,17 +44,17 @@ OC.L10N.register( "Collaborative tags" : "Etiquetas colaborativas", "Collaborative tagging functionality which shares tags among users." : "Funcionalidad de etiquetas colaborativas que comparte las etiquetas entre usuarios.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funcionalidad de etiquetear collaborativamente que comparte las etiquetas entre usuarios. Grandioso para equipos.\n\t(Si eres un proveedor con una instalación multi subarrendada, se recomienda desactivar esta aplicación ya que las etiquetas son compartidas.)", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_MX.json b/apps/systemtags/l10n/es_MX.json index 7584ee57a15..65ed18f215c 100644 --- a/apps/systemtags/l10n/es_MX.json +++ b/apps/systemtags/l10n/es_MX.json @@ -42,17 +42,17 @@ "Collaborative tags" : "Etiquetas colaborativas", "Collaborative tagging functionality which shares tags among users." : "Funcionalidad de etiquetas colaborativas que comparte las etiquetas entre usuarios.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funcionalidad de etiquetear collaborativamente que comparte las etiquetas entre usuarios. Grandioso para equipos.\n\t(Si eres un proveedor con una instalación multi subarrendada, se recomienda desactivar esta aplicación ya que las etiquetas son compartidas.)", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_NI.js b/apps/systemtags/l10n/es_NI.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_NI.js +++ b/apps/systemtags/l10n/es_NI.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_NI.json b/apps/systemtags/l10n/es_NI.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_NI.json +++ b/apps/systemtags/l10n/es_NI.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_PA.js b/apps/systemtags/l10n/es_PA.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_PA.js +++ b/apps/systemtags/l10n/es_PA.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_PA.json b/apps/systemtags/l10n/es_PA.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_PA.json +++ b/apps/systemtags/l10n/es_PA.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_PE.js b/apps/systemtags/l10n/es_PE.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_PE.js +++ b/apps/systemtags/l10n/es_PE.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_PE.json b/apps/systemtags/l10n/es_PE.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_PE.json +++ b/apps/systemtags/l10n/es_PE.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_PR.js b/apps/systemtags/l10n/es_PR.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_PR.js +++ b/apps/systemtags/l10n/es_PR.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_PR.json b/apps/systemtags/l10n/es_PR.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_PR.json +++ b/apps/systemtags/l10n/es_PR.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_PY.js b/apps/systemtags/l10n/es_PY.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_PY.js +++ b/apps/systemtags/l10n/es_PY.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_PY.json b/apps/systemtags/l10n/es_PY.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_PY.json +++ b/apps/systemtags/l10n/es_PY.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_SV.js b/apps/systemtags/l10n/es_SV.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_SV.js +++ b/apps/systemtags/l10n/es_SV.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_SV.json b/apps/systemtags/l10n/es_SV.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_SV.json +++ b/apps/systemtags/l10n/es_SV.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/es_UY.js b/apps/systemtags/l10n/es_UY.js index 77f45fe1268..331a8fcdac0 100644 --- a/apps/systemtags/l10n/es_UY.js +++ b/apps/systemtags/l10n/es_UY.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/es_UY.json b/apps/systemtags/l10n/es_UY.json index 9a8e4adf3f8..3b1ea41bf04 100644 --- a/apps/systemtags/l10n/es_UY.json +++ b/apps/systemtags/l10n/es_UY.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (invisible) ", "<strong>System tags</strong> for a file have been modified" : "Las <strong>etiquetas del sistema</strong> para un archivo han sido modificadas", "Collaborative tags" : "Etiquetas colaborativas", - "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. ", "Select tag …" : "Seleccionar etiqueta ...", "Name" : "Nombre", - "Delete" : "Borrar", "Public" : "Público", "Restricted" : "Restringido", "Invisible" : "Invisible", + "Delete" : "Borrar", "Reset" : "Restaurar", "No files in here" : "No hay archivos aquí", "No entries found in this folder" : "No se encontraron elementos en esta carpeta", "Size" : "Tamaño", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crear y editar etiquetas colaborativas. Estas etiquetas afectan a todos los usuarios. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/et_EE.js b/apps/systemtags/l10n/et_EE.js index d2af006af9d..380d6701828 100644 --- a/apps/systemtags/l10n/et_EE.js +++ b/apps/systemtags/l10n/et_EE.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (nähtamatu)", "<strong>System tags</strong> for a file have been modified" : "<strong>Süsteemi sildid</strong> sellele failile on muudetud", "Collaborative tags" : "Koostöö sildid", - "Create and edit collaborative tags. These tags affect all users." : "Loo ja muuda koostöö silte. Need sildid kohalduvad kõigile kasutajatele.", "Select tag …" : "Vali silt ...", "Name" : "Nimi", - "Delete" : "Kustuta", "Public" : "Avalik", "Restricted" : "Piiratud", "Invisible" : "Nähtamatu", + "Delete" : "Kustuta", "Reset" : "Lähtesta", "No files in here" : "Siin ei ole faile", "No entries found in this folder" : "Selles kaustast ei leitud kirjeid", "Size" : "Suurus", - "Modified" : "Muudetud" + "Modified" : "Muudetud", + "Create and edit collaborative tags. These tags affect all users." : "Loo ja muuda koostöö silte. Need sildid kohalduvad kõigile kasutajatele." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/et_EE.json b/apps/systemtags/l10n/et_EE.json index fe327cfbddc..19fb7975405 100644 --- a/apps/systemtags/l10n/et_EE.json +++ b/apps/systemtags/l10n/et_EE.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (nähtamatu)", "<strong>System tags</strong> for a file have been modified" : "<strong>Süsteemi sildid</strong> sellele failile on muudetud", "Collaborative tags" : "Koostöö sildid", - "Create and edit collaborative tags. These tags affect all users." : "Loo ja muuda koostöö silte. Need sildid kohalduvad kõigile kasutajatele.", "Select tag …" : "Vali silt ...", "Name" : "Nimi", - "Delete" : "Kustuta", "Public" : "Avalik", "Restricted" : "Piiratud", "Invisible" : "Nähtamatu", + "Delete" : "Kustuta", "Reset" : "Lähtesta", "No files in here" : "Siin ei ole faile", "No entries found in this folder" : "Selles kaustast ei leitud kirjeid", "Size" : "Suurus", - "Modified" : "Muudetud" + "Modified" : "Muudetud", + "Create and edit collaborative tags. These tags affect all users." : "Loo ja muuda koostöö silte. Need sildid kohalduvad kõigile kasutajatele." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/fi.js b/apps/systemtags/l10n/fi.js index e74088bbc7c..084a682f4f7 100644 --- a/apps/systemtags/l10n/fi.js +++ b/apps/systemtags/l10n/fi.js @@ -42,17 +42,18 @@ OC.L10N.register( "%s (invisible)" : "%s (näkymätön)", "<strong>System tags</strong> for a file have been modified" : "Tiedoston <strong>järjestelmätunnisteita</strong> on muokattu", "Collaborative tags" : "Yhteistyölliset tunnisteet", - "Create and edit collaborative tags. These tags affect all users." : "Luo ja muokkaa yhteisiä tunnisteita. Nämä tunnisteet vaikuttavat kaikkiin käyttäjiin.", "Select tag …" : "Valitse tunniste ...", + "Create a new tag" : "Luo uusi tunniste", "Name" : "Nimi", - "Delete" : "Poista", "Public" : "Julkinen", "Restricted" : "Rajoitettu", "Invisible" : "Näkymätön", + "Delete" : "Poista", "Reset" : "Palauta", "No files in here" : "Täällä ei ole tiedostoja", "No entries found in this folder" : "Ei kohteita tässä kansiossa", "Size" : "Koko", - "Modified" : "Muokattu" + "Modified" : "Muokattu", + "Create and edit collaborative tags. These tags affect all users." : "Luo ja muokkaa yhteisiä tunnisteita. Nämä tunnisteet vaikuttavat kaikkiin käyttäjiin." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/fi.json b/apps/systemtags/l10n/fi.json index 25f26f7c87f..96aca1667e5 100644 --- a/apps/systemtags/l10n/fi.json +++ b/apps/systemtags/l10n/fi.json @@ -40,17 +40,18 @@ "%s (invisible)" : "%s (näkymätön)", "<strong>System tags</strong> for a file have been modified" : "Tiedoston <strong>järjestelmätunnisteita</strong> on muokattu", "Collaborative tags" : "Yhteistyölliset tunnisteet", - "Create and edit collaborative tags. These tags affect all users." : "Luo ja muokkaa yhteisiä tunnisteita. Nämä tunnisteet vaikuttavat kaikkiin käyttäjiin.", "Select tag …" : "Valitse tunniste ...", + "Create a new tag" : "Luo uusi tunniste", "Name" : "Nimi", - "Delete" : "Poista", "Public" : "Julkinen", "Restricted" : "Rajoitettu", "Invisible" : "Näkymätön", + "Delete" : "Poista", "Reset" : "Palauta", "No files in here" : "Täällä ei ole tiedostoja", "No entries found in this folder" : "Ei kohteita tässä kansiossa", "Size" : "Koko", - "Modified" : "Muokattu" + "Modified" : "Muokattu", + "Create and edit collaborative tags. These tags affect all users." : "Luo ja muokkaa yhteisiä tunnisteita. Nämä tunnisteet vaikuttavat kaikkiin käyttäjiin." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/fr.js b/apps/systemtags/l10n/fr.js index 56335c2abf8..eb195807fe9 100644 --- a/apps/systemtags/l10n/fr.js +++ b/apps/systemtags/l10n/fr.js @@ -42,17 +42,21 @@ OC.L10N.register( "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "<strong>Les étiquettes collaboratives</strong> pour un fichier ont été modifiées", "Collaborative tags" : "Étiquettes collaboratives ", - "Create and edit collaborative tags. These tags affect all users." : "Créer et modifier des étiquettes collaboratives. Ces étiquettes vont affecter tous les utilisateurs.", + "Collaborative tagging functionality which shares tags among users." : "Fonctionnalité de marquage collaboratif qui partage des tags entre utilisateurs.", + "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Fonctionnalité de marquage collaboratif qui partage des tags entre utilisateurs. Idéal pour les équipes.\n(Si vous êtes un fournisseur avec une installation à locations multiples , il est conseillé de désactiver cette application car les tags sont partagés.)", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Les tags collaboratifs sont disponibles pour tous les utilisateurs. Les tags restreints sont visibles par les utilisateurs mais ne peuvent pas être attribués par eux. Les balises invisibles sont à usage interne, car les utilisateurs ne peuvent pas les voir ou les assigner.", "Select tag …" : "Sélectionner une étiquette…", + "Create a new tag" : "Créer une nouvelle étiquette", "Name" : "Nom", - "Delete" : "Supprimer", "Public" : "Public", "Restricted" : "Restreint", "Invisible" : "Invisible", + "Delete" : "Supprimer", "Reset" : "Réinitialiser", "No files in here" : "Aucun fichier", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Size" : "Taille", - "Modified" : "Modifié" + "Modified" : "Modifié", + "Create and edit collaborative tags. These tags affect all users." : "Créer et modifier des étiquettes collaboratives. Ces étiquettes vont affecter tous les utilisateurs." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/systemtags/l10n/fr.json b/apps/systemtags/l10n/fr.json index 2d2396dc785..caf04d1f222 100644 --- a/apps/systemtags/l10n/fr.json +++ b/apps/systemtags/l10n/fr.json @@ -40,17 +40,21 @@ "%s (invisible)" : "%s (invisible)", "<strong>System tags</strong> for a file have been modified" : "<strong>Les étiquettes collaboratives</strong> pour un fichier ont été modifiées", "Collaborative tags" : "Étiquettes collaboratives ", - "Create and edit collaborative tags. These tags affect all users." : "Créer et modifier des étiquettes collaboratives. Ces étiquettes vont affecter tous les utilisateurs.", + "Collaborative tagging functionality which shares tags among users." : "Fonctionnalité de marquage collaboratif qui partage des tags entre utilisateurs.", + "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Fonctionnalité de marquage collaboratif qui partage des tags entre utilisateurs. Idéal pour les équipes.\n(Si vous êtes un fournisseur avec une installation à locations multiples , il est conseillé de désactiver cette application car les tags sont partagés.)", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Les tags collaboratifs sont disponibles pour tous les utilisateurs. Les tags restreints sont visibles par les utilisateurs mais ne peuvent pas être attribués par eux. Les balises invisibles sont à usage interne, car les utilisateurs ne peuvent pas les voir ou les assigner.", "Select tag …" : "Sélectionner une étiquette…", + "Create a new tag" : "Créer une nouvelle étiquette", "Name" : "Nom", - "Delete" : "Supprimer", "Public" : "Public", "Restricted" : "Restreint", "Invisible" : "Invisible", + "Delete" : "Supprimer", "Reset" : "Réinitialiser", "No files in here" : "Aucun fichier", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", "Size" : "Taille", - "Modified" : "Modifié" + "Modified" : "Modifié", + "Create and edit collaborative tags. These tags affect all users." : "Créer et modifier des étiquettes collaboratives. Ces étiquettes vont affecter tous les utilisateurs." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/he.js b/apps/systemtags/l10n/he.js index 43b7aa105d4..6c60ddfef09 100644 --- a/apps/systemtags/l10n/he.js +++ b/apps/systemtags/l10n/he.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "תגיות שיתופיות", "Collaborative tagging functionality which shares tags among users." : "תכונת התיוג השיתופי שמשתפת תגיות בין משתמשים.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "תכונת התיוג השיתופי שמשתפת תגיות בין משתמשים. מעולה לעבודת צוות.\n\t(אם בבעלותך התקנה עם מגוון מערכות נפרדות, מוטב להשבית את היישומון הזה כיוון שהתגיות משותפות.)", - "Create and edit collaborative tags. These tags affect all users." : "יצירה ועריכה של תגיות שיתופיות. תגיות אלו משפיעות על כל המשתמשים.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "תגיות שיתופיות זמינות לכל המשתמשים. תגיות מוגבלות חשופות למשתמשים אך אין להם אפשרות להקצות אותן. תגיות בלתי נראות הן לשימוש פנימי כיוון שמשתמשים לא יכולים לראות אות להקצות אותן.", "Select tag …" : "מחיקת תגית…", + "Create a new tag" : "יצירת תגית חדשה", "Name" : "שם", - "Delete" : "מחיקה", "Public" : "ציבורית", "Restricted" : "מוגבלת", "Invisible" : "נסתרת", + "Delete" : "מחיקה", "Reset" : "איפוס", "No files in here" : "אין כאן קבצים", "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Size" : "גודל", - "Modified" : "זמן שינוי" + "Modified" : "זמן שינוי", + "Create and edit collaborative tags. These tags affect all users." : "יצירה ועריכה של תגיות שיתופיות. תגיות אלו משפיעות על כל המשתמשים." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"); diff --git a/apps/systemtags/l10n/he.json b/apps/systemtags/l10n/he.json index 4d0c4175041..b6c5cfcff80 100644 --- a/apps/systemtags/l10n/he.json +++ b/apps/systemtags/l10n/he.json @@ -42,17 +42,19 @@ "Collaborative tags" : "תגיות שיתופיות", "Collaborative tagging functionality which shares tags among users." : "תכונת התיוג השיתופי שמשתפת תגיות בין משתמשים.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "תכונת התיוג השיתופי שמשתפת תגיות בין משתמשים. מעולה לעבודת צוות.\n\t(אם בבעלותך התקנה עם מגוון מערכות נפרדות, מוטב להשבית את היישומון הזה כיוון שהתגיות משותפות.)", - "Create and edit collaborative tags. These tags affect all users." : "יצירה ועריכה של תגיות שיתופיות. תגיות אלו משפיעות על כל המשתמשים.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "תגיות שיתופיות זמינות לכל המשתמשים. תגיות מוגבלות חשופות למשתמשים אך אין להם אפשרות להקצות אותן. תגיות בלתי נראות הן לשימוש פנימי כיוון שמשתמשים לא יכולים לראות אות להקצות אותן.", "Select tag …" : "מחיקת תגית…", + "Create a new tag" : "יצירת תגית חדשה", "Name" : "שם", - "Delete" : "מחיקה", "Public" : "ציבורית", "Restricted" : "מוגבלת", "Invisible" : "נסתרת", + "Delete" : "מחיקה", "Reset" : "איפוס", "No files in here" : "אין כאן קבצים", "No entries found in this folder" : "לא נמצאו כניסות לתיקייה זו", "Size" : "גודל", - "Modified" : "זמן שינוי" + "Modified" : "זמן שינוי", + "Create and edit collaborative tags. These tags affect all users." : "יצירה ועריכה של תגיות שיתופיות. תגיות אלו משפיעות על כל המשתמשים." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/hu.js b/apps/systemtags/l10n/hu.js index a8843c60538..fe38fb31f64 100644 --- a/apps/systemtags/l10n/hu.js +++ b/apps/systemtags/l10n/hu.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (láthatatlan)", "<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett", "Collaborative tags" : "Együttműködési címkék", - "Create and edit collaborative tags. These tags affect all users." : "Kollaboratív címke létrehozása és szerkesztése. Ezek minden felhasználóra érvényesülnek.", "Select tag …" : "Címke választás...", "Name" : "Név", - "Delete" : "Törlés", "Public" : "Nyilvános", "Restricted" : "Korlátozott", "Invisible" : "Láthatatlan", + "Delete" : "Törlés", "Reset" : "Visszaállítás", "No files in here" : "Itt nincsenek fájlok", "No entries found in this folder" : "Nincsenek bejegyzések ebben a mappában", "Size" : "Méret", - "Modified" : "Módosítva" + "Modified" : "Módosítva", + "Create and edit collaborative tags. These tags affect all users." : "Kollaboratív címke létrehozása és szerkesztése. Ezek minden felhasználóra érvényesülnek." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/hu.json b/apps/systemtags/l10n/hu.json index 42b0b7df129..63e4a3132a4 100644 --- a/apps/systemtags/l10n/hu.json +++ b/apps/systemtags/l10n/hu.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (láthatatlan)", "<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett", "Collaborative tags" : "Együttműködési címkék", - "Create and edit collaborative tags. These tags affect all users." : "Kollaboratív címke létrehozása és szerkesztése. Ezek minden felhasználóra érvényesülnek.", "Select tag …" : "Címke választás...", "Name" : "Név", - "Delete" : "Törlés", "Public" : "Nyilvános", "Restricted" : "Korlátozott", "Invisible" : "Láthatatlan", + "Delete" : "Törlés", "Reset" : "Visszaállítás", "No files in here" : "Itt nincsenek fájlok", "No entries found in this folder" : "Nincsenek bejegyzések ebben a mappában", "Size" : "Méret", - "Modified" : "Módosítva" + "Modified" : "Módosítva", + "Create and edit collaborative tags. These tags affect all users." : "Kollaboratív címke létrehozása és szerkesztése. Ezek minden felhasználóra érvényesülnek." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/ia.js b/apps/systemtags/l10n/ia.js index 74e139f3033..9d7688824bd 100644 --- a/apps/systemtags/l10n/ia.js +++ b/apps/systemtags/l10n/ia.js @@ -43,10 +43,10 @@ OC.L10N.register( "<strong>System tags</strong> for a file have been modified" : "<strong>Le etiquettas de systema</strong> de un file esseva modificate", "Collaborative tags" : "Etiquettas collaborative", "Name" : "Nomine", - "Delete" : "Deler", "Public" : "Public", "Restricted" : "Restringite", "Invisible" : "Invisibile", + "Delete" : "Deler", "Reset" : "Reinitialisar", "No files in here" : "Nulle files ci", "No entries found in this folder" : "Nulle entratas trovate in iste dossier", diff --git a/apps/systemtags/l10n/ia.json b/apps/systemtags/l10n/ia.json index 713f918ccb8..7f1def19c7f 100644 --- a/apps/systemtags/l10n/ia.json +++ b/apps/systemtags/l10n/ia.json @@ -41,10 +41,10 @@ "<strong>System tags</strong> for a file have been modified" : "<strong>Le etiquettas de systema</strong> de un file esseva modificate", "Collaborative tags" : "Etiquettas collaborative", "Name" : "Nomine", - "Delete" : "Deler", "Public" : "Public", "Restricted" : "Restringite", "Invisible" : "Invisibile", + "Delete" : "Deler", "Reset" : "Reinitialisar", "No files in here" : "Nulle files ci", "No entries found in this folder" : "Nulle entratas trovate in iste dossier", diff --git a/apps/systemtags/l10n/is.js b/apps/systemtags/l10n/is.js index 57a121de3e9..19a988902a0 100644 --- a/apps/systemtags/l10n/is.js +++ b/apps/systemtags/l10n/is.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (ósýnilegt)", "<strong>System tags</strong> for a file have been modified" : "<strong>Kerfismerkjum</strong> á skrá hefur verið breytt", "Collaborative tags" : "Samstarfsmerkingar", - "Create and edit collaborative tags. These tags affect all users." : "Búðu til og breyttu merkjum fyrir samstarfsupplýsingar. Þessi merki hafa áhrif á alla notendur.", "Select tag …" : "Veldu merki ...", "Name" : "Heiti", - "Delete" : "Eyða", "Public" : "Opinbert", "Restricted" : "Takmarkað", "Invisible" : "Ósýnilegt", + "Delete" : "Eyða", "Reset" : "Endurstilla", "No files in here" : "Engar skrár hér", "No entries found in this folder" : "Engar skrár fundust í þessari möppu", "Size" : "Stærð", - "Modified" : "Breytt" + "Modified" : "Breytt", + "Create and edit collaborative tags. These tags affect all users." : "Búðu til og breyttu merkjum fyrir samstarfsupplýsingar. Þessi merki hafa áhrif á alla notendur." }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/systemtags/l10n/is.json b/apps/systemtags/l10n/is.json index de25ad69d13..ece3ff46ae7 100644 --- a/apps/systemtags/l10n/is.json +++ b/apps/systemtags/l10n/is.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (ósýnilegt)", "<strong>System tags</strong> for a file have been modified" : "<strong>Kerfismerkjum</strong> á skrá hefur verið breytt", "Collaborative tags" : "Samstarfsmerkingar", - "Create and edit collaborative tags. These tags affect all users." : "Búðu til og breyttu merkjum fyrir samstarfsupplýsingar. Þessi merki hafa áhrif á alla notendur.", "Select tag …" : "Veldu merki ...", "Name" : "Heiti", - "Delete" : "Eyða", "Public" : "Opinbert", "Restricted" : "Takmarkað", "Invisible" : "Ósýnilegt", + "Delete" : "Eyða", "Reset" : "Endurstilla", "No files in here" : "Engar skrár hér", "No entries found in this folder" : "Engar skrár fundust í þessari möppu", "Size" : "Stærð", - "Modified" : "Breytt" + "Modified" : "Breytt", + "Create and edit collaborative tags. These tags affect all users." : "Búðu til og breyttu merkjum fyrir samstarfsupplýsingar. Þessi merki hafa áhrif á alla notendur." },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/it.js b/apps/systemtags/l10n/it.js index 5e6719ccc8d..b0e02f3efdd 100644 --- a/apps/systemtags/l10n/it.js +++ b/apps/systemtags/l10n/it.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Etichette collaborative", "Collaborative tagging functionality which shares tags among users." : "Funzionalità di etichettatura collaborativa che condivide le etichette tra gli utenti.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funzionalità di etichettatura collaborativa che condivide le etichette tra gli utenti. Ottima per le squadre.\n\t(Se sei un fornitore con un'installazione multi-tenant, ti consigliamo di disattivare questa applicazione poiché le etichette sono condivise.)", - "Create and edit collaborative tags. These tags affect all users." : "Crea e modifica etichette collaborative. Queste etichette interessano tutti gli utenti.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Le etichette collaborative sono disponibili per tutti gli utenti. Le etichette limitate sono visibili agli utenti, ma non possono essere assegnate da essi. Le etichette invisibili sono per iso interno, poiché gli utenti non possono vederle o assegnarle.", "Select tag …" : "Seleziona etichetta...", + "Create a new tag" : "Crea una nuova etichetta", "Name" : "Nome", - "Delete" : "Elimina", "Public" : "Pubblico", "Restricted" : "Limitato", "Invisible" : "invisibile", + "Delete" : "Elimina", "Reset" : "Ripristina", "No files in here" : "Qui non c'è alcun file", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", "Size" : "Dimensione", - "Modified" : "Modificato" + "Modified" : "Modificato", + "Create and edit collaborative tags. These tags affect all users." : "Crea e modifica etichette collaborative. Queste etichette interessano tutti gli utenti." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/it.json b/apps/systemtags/l10n/it.json index f657e36070b..145f7fbc0f3 100644 --- a/apps/systemtags/l10n/it.json +++ b/apps/systemtags/l10n/it.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Etichette collaborative", "Collaborative tagging functionality which shares tags among users." : "Funzionalità di etichettatura collaborativa che condivide le etichette tra gli utenti.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funzionalità di etichettatura collaborativa che condivide le etichette tra gli utenti. Ottima per le squadre.\n\t(Se sei un fornitore con un'installazione multi-tenant, ti consigliamo di disattivare questa applicazione poiché le etichette sono condivise.)", - "Create and edit collaborative tags. These tags affect all users." : "Crea e modifica etichette collaborative. Queste etichette interessano tutti gli utenti.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Le etichette collaborative sono disponibili per tutti gli utenti. Le etichette limitate sono visibili agli utenti, ma non possono essere assegnate da essi. Le etichette invisibili sono per iso interno, poiché gli utenti non possono vederle o assegnarle.", "Select tag …" : "Seleziona etichetta...", + "Create a new tag" : "Crea una nuova etichetta", "Name" : "Nome", - "Delete" : "Elimina", "Public" : "Pubblico", "Restricted" : "Limitato", "Invisible" : "invisibile", + "Delete" : "Elimina", "Reset" : "Ripristina", "No files in here" : "Qui non c'è alcun file", "No entries found in this folder" : "Nessuna voce trovata in questa cartella", "Size" : "Dimensione", - "Modified" : "Modificato" + "Modified" : "Modificato", + "Create and edit collaborative tags. These tags affect all users." : "Crea e modifica etichette collaborative. Queste etichette interessano tutti gli utenti." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/ja.js b/apps/systemtags/l10n/ja.js index 1cfef7359e6..d669eed877c 100644 --- a/apps/systemtags/l10n/ja.js +++ b/apps/systemtags/l10n/ja.js @@ -42,17 +42,19 @@ OC.L10N.register( "%s (invisible)" : "%s (不可視)", "<strong>System tags</strong> for a file have been modified" : "ファイルの<strong>タグ</strong>が変更されたとき", "Collaborative tags" : "コラボタグ", - "Create and edit collaborative tags. These tags affect all users." : "共同作業タグの作成と編集をします。このタグはすべてのユーザーに影響します", + "Collaborative tagging functionality which shares tags among users." : "ユーザー間でタグを共有するコラボタグ機能", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "コラボタグはすべてのユーザーで利用できます。制限付きタグは、ユーザーから見えますが、ユーザが割り当てることはできません。不可視タグは、ユーザが見ることも割り当てることもできないので、内部利用のためのものです。", "Select tag …" : "タグを選択...", "Name" : "名前", - "Delete" : "削除", "Public" : "公開", "Restricted" : "制限付き", "Invisible" : "不可視", + "Delete" : "削除", "Reset" : "リセット", "No files in here" : "ファイルがありません", "No entries found in this folder" : "このフォルダーにはエントリーがありません", "Size" : "サイズ", - "Modified" : "更新日時" + "Modified" : "更新日時", + "Create and edit collaborative tags. These tags affect all users." : "コラボタグの作成と編集をします。このタグはすべてのユーザーに影響します。" }, "nplurals=1; plural=0;"); diff --git a/apps/systemtags/l10n/ja.json b/apps/systemtags/l10n/ja.json index 7b92e1a08bd..6bb460a57f4 100644 --- a/apps/systemtags/l10n/ja.json +++ b/apps/systemtags/l10n/ja.json @@ -40,17 +40,19 @@ "%s (invisible)" : "%s (不可視)", "<strong>System tags</strong> for a file have been modified" : "ファイルの<strong>タグ</strong>が変更されたとき", "Collaborative tags" : "コラボタグ", - "Create and edit collaborative tags. These tags affect all users." : "共同作業タグの作成と編集をします。このタグはすべてのユーザーに影響します", + "Collaborative tagging functionality which shares tags among users." : "ユーザー間でタグを共有するコラボタグ機能", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "コラボタグはすべてのユーザーで利用できます。制限付きタグは、ユーザーから見えますが、ユーザが割り当てることはできません。不可視タグは、ユーザが見ることも割り当てることもできないので、内部利用のためのものです。", "Select tag …" : "タグを選択...", "Name" : "名前", - "Delete" : "削除", "Public" : "公開", "Restricted" : "制限付き", "Invisible" : "不可視", + "Delete" : "削除", "Reset" : "リセット", "No files in here" : "ファイルがありません", "No entries found in this folder" : "このフォルダーにはエントリーがありません", "Size" : "サイズ", - "Modified" : "更新日時" + "Modified" : "更新日時", + "Create and edit collaborative tags. These tags affect all users." : "コラボタグの作成と編集をします。このタグはすべてのユーザーに影響します。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/ka_GE.js b/apps/systemtags/l10n/ka_GE.js index bd653e6d3ca..8a4c8390d10 100644 --- a/apps/systemtags/l10n/ka_GE.js +++ b/apps/systemtags/l10n/ka_GE.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (უჩინარი)", "<strong>System tags</strong> for a file have been modified" : "<strong>სისტემური ტეგები</strong> ფაილისთვის შეიცვალა", "Collaborative tags" : "თანამშრომლობის ტეგები", - "Create and edit collaborative tags. These tags affect all users." : "შეგიძლიათ შექმნათ და შეცვალოთ თანამშრომლობის ტეგები. ეს ტეგები ეხება ყველა მომხმარებელს.", "Select tag …" : "ტეგის არჩევა …", "Name" : "სახელი", - "Delete" : "გაუქმება", "Public" : "ღია", "Restricted" : "აკრძალული", "Invisible" : "უჩინარი", + "Delete" : "გაუქმება", "Reset" : "საწყის მდომგარეობაში დაბრუნება", "No files in here" : "აქ ფაილები არაა", "No entries found in this folder" : "ამ დირექტორიაში შენატანების მოძებნა ვერ მოხერხდა", "Size" : "ზომა", - "Modified" : "შეცვლილია" + "Modified" : "შეცვლილია", + "Create and edit collaborative tags. These tags affect all users." : "შეგიძლიათ შექმნათ და შეცვალოთ თანამშრომლობის ტეგები. ეს ტეგები ეხება ყველა მომხმარებელს." }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/systemtags/l10n/ka_GE.json b/apps/systemtags/l10n/ka_GE.json index 49c6bdcfb81..c87ba2e4dd2 100644 --- a/apps/systemtags/l10n/ka_GE.json +++ b/apps/systemtags/l10n/ka_GE.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (უჩინარი)", "<strong>System tags</strong> for a file have been modified" : "<strong>სისტემური ტეგები</strong> ფაილისთვის შეიცვალა", "Collaborative tags" : "თანამშრომლობის ტეგები", - "Create and edit collaborative tags. These tags affect all users." : "შეგიძლიათ შექმნათ და შეცვალოთ თანამშრომლობის ტეგები. ეს ტეგები ეხება ყველა მომხმარებელს.", "Select tag …" : "ტეგის არჩევა …", "Name" : "სახელი", - "Delete" : "გაუქმება", "Public" : "ღია", "Restricted" : "აკრძალული", "Invisible" : "უჩინარი", + "Delete" : "გაუქმება", "Reset" : "საწყის მდომგარეობაში დაბრუნება", "No files in here" : "აქ ფაილები არაა", "No entries found in this folder" : "ამ დირექტორიაში შენატანების მოძებნა ვერ მოხერხდა", "Size" : "ზომა", - "Modified" : "შეცვლილია" + "Modified" : "შეცვლილია", + "Create and edit collaborative tags. These tags affect all users." : "შეგიძლიათ შექმნათ და შეცვალოთ თანამშრომლობის ტეგები. ეს ტეგები ეხება ყველა მომხმარებელს." },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/ko.js b/apps/systemtags/l10n/ko.js index ad00ec504b3..ce5b78f95e0 100644 --- a/apps/systemtags/l10n/ko.js +++ b/apps/systemtags/l10n/ko.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s(숨겨짐)", "<strong>System tags</strong> for a file have been modified" : "파일의 <strong>시스템 태그</strong>가 수정됨", "Collaborative tags" : "협업 태그", - "Create and edit collaborative tags. These tags affect all users." : "협업 태그를 만들고 수정합니다. 이 태그는 모든 사용자에게 영향을 줍니다.", "Select tag …" : "태그 선택 …", "Name" : "이름", - "Delete" : "삭제", "Public" : "공개", "Restricted" : "제한됨", "Invisible" : "숨겨짐", + "Delete" : "삭제", "Reset" : "재설정", "No files in here" : "여기에 파일 없음", "No entries found in this folder" : "이 폴더에 항목 없음", "Size" : "크기", - "Modified" : "수정됨" + "Modified" : "수정됨", + "Create and edit collaborative tags. These tags affect all users." : "협업 태그를 만들고 수정합니다. 이 태그는 모든 사용자에게 영향을 줍니다." }, "nplurals=1; plural=0;"); diff --git a/apps/systemtags/l10n/ko.json b/apps/systemtags/l10n/ko.json index 8b5b630333c..f54ea89270c 100644 --- a/apps/systemtags/l10n/ko.json +++ b/apps/systemtags/l10n/ko.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s(숨겨짐)", "<strong>System tags</strong> for a file have been modified" : "파일의 <strong>시스템 태그</strong>가 수정됨", "Collaborative tags" : "협업 태그", - "Create and edit collaborative tags. These tags affect all users." : "협업 태그를 만들고 수정합니다. 이 태그는 모든 사용자에게 영향을 줍니다.", "Select tag …" : "태그 선택 …", "Name" : "이름", - "Delete" : "삭제", "Public" : "공개", "Restricted" : "제한됨", "Invisible" : "숨겨짐", + "Delete" : "삭제", "Reset" : "재설정", "No files in here" : "여기에 파일 없음", "No entries found in this folder" : "이 폴더에 항목 없음", "Size" : "크기", - "Modified" : "수정됨" + "Modified" : "수정됨", + "Create and edit collaborative tags. These tags affect all users." : "협업 태그를 만들고 수정합니다. 이 태그는 모든 사용자에게 영향을 줍니다." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/lt_LT.js b/apps/systemtags/l10n/lt_LT.js index 2c8da23c365..05c6c66c017 100644 --- a/apps/systemtags/l10n/lt_LT.js +++ b/apps/systemtags/l10n/lt_LT.js @@ -42,17 +42,18 @@ OC.L10N.register( "%s (invisible)" : "%s (nematoma)", "<strong>System tags</strong> for a file have been modified" : "Failo <strong>sistemos žymės</strong> buvo pakeistos.", "Collaborative tags" : "Žymės", - "Create and edit collaborative tags. These tags affect all users." : "Bendrų žymių visiems sistemos vartotojams kūrimas", "Select tag …" : "Pasirinkite žymę…", + "Create a new tag" : "Sukurti naują žymę", "Name" : "Pavadinimas", - "Delete" : "Ištrinti", "Public" : "Vieša", "Restricted" : "Riboto naudojimo", "Invisible" : "Nematoma", + "Delete" : "Ištrinti", "Reset" : "Atstatyti", "No files in here" : "Aplankas tuščias", "No entries found in this folder" : "Aplankas tuščias", "Size" : "Dydis", - "Modified" : "Pakeista" + "Modified" : "Pakeista", + "Create and edit collaborative tags. These tags affect all users." : "Bendrų žymių visiems sistemos vartotojams kūrimas" }, "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);"); diff --git a/apps/systemtags/l10n/lt_LT.json b/apps/systemtags/l10n/lt_LT.json index c65b0470439..b3df261f59e 100644 --- a/apps/systemtags/l10n/lt_LT.json +++ b/apps/systemtags/l10n/lt_LT.json @@ -40,17 +40,18 @@ "%s (invisible)" : "%s (nematoma)", "<strong>System tags</strong> for a file have been modified" : "Failo <strong>sistemos žymės</strong> buvo pakeistos.", "Collaborative tags" : "Žymės", - "Create and edit collaborative tags. These tags affect all users." : "Bendrų žymių visiems sistemos vartotojams kūrimas", "Select tag …" : "Pasirinkite žymę…", + "Create a new tag" : "Sukurti naują žymę", "Name" : "Pavadinimas", - "Delete" : "Ištrinti", "Public" : "Vieša", "Restricted" : "Riboto naudojimo", "Invisible" : "Nematoma", + "Delete" : "Ištrinti", "Reset" : "Atstatyti", "No files in here" : "Aplankas tuščias", "No entries found in this folder" : "Aplankas tuščias", "Size" : "Dydis", - "Modified" : "Pakeista" + "Modified" : "Pakeista", + "Create and edit collaborative tags. These tags affect all users." : "Bendrų žymių visiems sistemos vartotojams kūrimas" },"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);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/lv.js b/apps/systemtags/l10n/lv.js index cc3f8f49898..993da5f2878 100644 --- a/apps/systemtags/l10n/lv.js +++ b/apps/systemtags/l10n/lv.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (neredzams)", "<strong>System tags</strong> for a file have been modified" : "<strong>Sistēmas atzīmes</strong> failam tikušas mainītas", "Collaborative tags" : "Sadarbības atzīmes", - "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.", "Select tag …" : "Izvēlies atzīmi...", "Name" : "Nosaukums", - "Delete" : "Dzēst", "Public" : "Publisks", "Restricted" : "Ierobežots", "Invisible" : "Neredzams", + "Delete" : "Dzēst", "Reset" : "Atiestatīt", "No files in here" : "Šeit nav datņu", "No entries found in this folder" : "Šajā mapē nekas nav atrasts", "Size" : "Izmērs", - "Modified" : "Mainīts" + "Modified" : "Mainīts", + "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"); diff --git a/apps/systemtags/l10n/lv.json b/apps/systemtags/l10n/lv.json index 9dd5a05233b..b5fed7e73a9 100644 --- a/apps/systemtags/l10n/lv.json +++ b/apps/systemtags/l10n/lv.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (neredzams)", "<strong>System tags</strong> for a file have been modified" : "<strong>Sistēmas atzīmes</strong> failam tikušas mainītas", "Collaborative tags" : "Sadarbības atzīmes", - "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus.", "Select tag …" : "Izvēlies atzīmi...", "Name" : "Nosaukums", - "Delete" : "Dzēst", "Public" : "Publisks", "Restricted" : "Ierobežots", "Invisible" : "Neredzams", + "Delete" : "Dzēst", "Reset" : "Atiestatīt", "No files in here" : "Šeit nav datņu", "No entries found in this folder" : "Šajā mapē nekas nav atrasts", "Size" : "Izmērs", - "Modified" : "Mainīts" + "Modified" : "Mainīts", + "Create and edit collaborative tags. These tags affect all users." : "Izveido un rediģē sadarbības atzīmes. Šīs atzīmes ietekmē visus lietotājus." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/nb.js b/apps/systemtags/l10n/nb.js index 3414b982ab0..239257c9229 100644 --- a/apps/systemtags/l10n/nb.js +++ b/apps/systemtags/l10n/nb.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "Endringer av en fils <strong>System-merkelapper</strong>", "Collaborative tags" : "Samarbeidsmerkelapper", - "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmerkelapper. Disse har innvirkning på alle brukere.", "Select tag …" : "Velg merkelapp…", "Name" : "Navn", - "Delete" : "Slett", "Public" : "Offentlig", "Restricted" : "Begrenset", "Invisible" : "Usynlig", + "Delete" : "Slett", "Reset" : "Tilbakestill", "No files in here" : "Ingen filer her", "No entries found in this folder" : "Ingen oppføringer funnet i denne mappen", "Size" : "Størrelse", - "Modified" : "Endret" + "Modified" : "Endret", + "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmerkelapper. Disse har innvirkning på alle brukere." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/nb.json b/apps/systemtags/l10n/nb.json index bf5047e205d..17aced80bb2 100644 --- a/apps/systemtags/l10n/nb.json +++ b/apps/systemtags/l10n/nb.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (usynlig)", "<strong>System tags</strong> for a file have been modified" : "Endringer av en fils <strong>System-merkelapper</strong>", "Collaborative tags" : "Samarbeidsmerkelapper", - "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmerkelapper. Disse har innvirkning på alle brukere.", "Select tag …" : "Velg merkelapp…", "Name" : "Navn", - "Delete" : "Slett", "Public" : "Offentlig", "Restricted" : "Begrenset", "Invisible" : "Usynlig", + "Delete" : "Slett", "Reset" : "Tilbakestill", "No files in here" : "Ingen filer her", "No entries found in this folder" : "Ingen oppføringer funnet i denne mappen", "Size" : "Størrelse", - "Modified" : "Endret" + "Modified" : "Endret", + "Create and edit collaborative tags. These tags affect all users." : "Opprett og rediger samarbeidsmerkelapper. Disse har innvirkning på alle brukere." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/nl.js b/apps/systemtags/l10n/nl.js index 0f7aed6ffc5..57bbf88f862 100644 --- a/apps/systemtags/l10n/nl.js +++ b/apps/systemtags/l10n/nl.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (onzichtbaar)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systeemmarkeringen</strong> voor een bestand zijn gewijzigd", "Collaborative tags" : "Systeemtags", - "Create and edit collaborative tags. These tags affect all users." : "Maak en bewerk systeemtags. Deze tags raken alle gebruikers.", "Select tag …" : "Selecteer tag …", "Name" : "Tag", - "Delete" : "Verwijder", "Public" : "Standaard", "Restricted" : "Beschermd", "Invisible" : "Verborgen", + "Delete" : "Verwijder", "Reset" : "Herstellen", "No files in here" : "Hier geen bestanden", "No entries found in this folder" : "Niets gevonden in deze map", "Size" : "Grootte", - "Modified" : "Aangepast" + "Modified" : "Aangepast", + "Create and edit collaborative tags. These tags affect all users." : "Maak en bewerk systeemtags. Deze tags raken alle gebruikers." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/nl.json b/apps/systemtags/l10n/nl.json index feac7b8cc93..d1a6e9210c0 100644 --- a/apps/systemtags/l10n/nl.json +++ b/apps/systemtags/l10n/nl.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (onzichtbaar)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systeemmarkeringen</strong> voor een bestand zijn gewijzigd", "Collaborative tags" : "Systeemtags", - "Create and edit collaborative tags. These tags affect all users." : "Maak en bewerk systeemtags. Deze tags raken alle gebruikers.", "Select tag …" : "Selecteer tag …", "Name" : "Tag", - "Delete" : "Verwijder", "Public" : "Standaard", "Restricted" : "Beschermd", "Invisible" : "Verborgen", + "Delete" : "Verwijder", "Reset" : "Herstellen", "No files in here" : "Hier geen bestanden", "No entries found in this folder" : "Niets gevonden in deze map", "Size" : "Grootte", - "Modified" : "Aangepast" + "Modified" : "Aangepast", + "Create and edit collaborative tags. These tags affect all users." : "Maak en bewerk systeemtags. Deze tags raken alle gebruikers." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/pl.js b/apps/systemtags/l10n/pl.js index 21a2e90a8b1..a4bb196b30e 100644 --- a/apps/systemtags/l10n/pl.js +++ b/apps/systemtags/l10n/pl.js @@ -4,7 +4,7 @@ OC.L10N.register( "Tags" : "Etykiety", "Update" : "Uaktualnij", "Create" : "Utwórz", - "Select tag…" : "Wybierz etykietę...", + "Select tag…" : "Wybierz etykietę…", "Tagged files" : "Otagowane pliki", "Select tags to filter by" : "Wybierz tagi do filtru", "No tags found" : "Nie znaleziono etykiet", @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (niewidoczny)", "<strong>System tags</strong> for a file have been modified" : "<strong>Etykieta systemowa</strong> dla pliku została zmieniona", "Collaborative tags" : "Wspólne etykiety", - "Create and edit collaborative tags. These tags affect all users." : "Utwórz i edytuj tagi współpracy. Te tagi mają wpływ na wszystkich użytkowników.", - "Select tag …" : "Wybierz tag ...", + "Select tag …" : "Wybierz tag…", "Name" : "Nazwa", - "Delete" : "Usuń", "Public" : "Publiczne", "Restricted" : "Ograniczone", "Invisible" : "Niewidoczne", + "Delete" : "Usuń", "Reset" : "Reset", "No files in here" : "Brak plików", "No entries found in this folder" : "Brak wpisów w tym folderze", "Size" : "Rozmiar", - "Modified" : "Modyfikacja" + "Modified" : "Modyfikacja", + "Create and edit collaborative tags. These tags affect all users." : "Utwórz i edytuj tagi współpracy. Te tagi mają wpływ na wszystkich użytkowników." }, "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);"); diff --git a/apps/systemtags/l10n/pl.json b/apps/systemtags/l10n/pl.json index 3deb73300b3..ab66e5ef762 100644 --- a/apps/systemtags/l10n/pl.json +++ b/apps/systemtags/l10n/pl.json @@ -2,7 +2,7 @@ "Tags" : "Etykiety", "Update" : "Uaktualnij", "Create" : "Utwórz", - "Select tag…" : "Wybierz etykietę...", + "Select tag…" : "Wybierz etykietę…", "Tagged files" : "Otagowane pliki", "Select tags to filter by" : "Wybierz tagi do filtru", "No tags found" : "Nie znaleziono etykiet", @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (niewidoczny)", "<strong>System tags</strong> for a file have been modified" : "<strong>Etykieta systemowa</strong> dla pliku została zmieniona", "Collaborative tags" : "Wspólne etykiety", - "Create and edit collaborative tags. These tags affect all users." : "Utwórz i edytuj tagi współpracy. Te tagi mają wpływ na wszystkich użytkowników.", - "Select tag …" : "Wybierz tag ...", + "Select tag …" : "Wybierz tag…", "Name" : "Nazwa", - "Delete" : "Usuń", "Public" : "Publiczne", "Restricted" : "Ograniczone", "Invisible" : "Niewidoczne", + "Delete" : "Usuń", "Reset" : "Reset", "No files in here" : "Brak plików", "No entries found in this folder" : "Brak wpisów w tym folderze", "Size" : "Rozmiar", - "Modified" : "Modyfikacja" + "Modified" : "Modyfikacja", + "Create and edit collaborative tags. These tags affect all users." : "Utwórz i edytuj tagi współpracy. Te tagi mają wpływ na wszystkich użytkowników." },"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);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/pt_BR.js b/apps/systemtags/l10n/pt_BR.js index 629aae8a8ec..e9d76062a04 100644 --- a/apps/systemtags/l10n/pt_BR.js +++ b/apps/systemtags/l10n/pt_BR.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Etiquetas colaborativas", "Collaborative tagging functionality which shares tags among users." : "Funcionalidade de etiquetamento colaborativo que compartilha etiquetas entre usuários.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funcionalidade de etiquetamento colaborativo que compartilha etiquetas entre usuários. Muito bom para equipes.\n\t(Se você for um provedor com uma instalação de multilocação, é aconselhável desativar este aplicativo, pois as etiquetas são compartilhadas.)", - "Create and edit collaborative tags. These tags affect all users." : "Crie e edite etiquetas colaborativas. Estas etiquetas afetam todos os usuários.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Etiquetas colaborativas estão disponíveis para todos os usuários. As etiquetas restritas são visíveis para os usuários, mas não podem ser atribuídas por eles. Etiquetas invisíveis são para uso interno, já que os usuários não podem vê-las ou atribuí-las.", "Select tag …" : "Selecionar etiqueta...", + "Create a new tag" : "Criar uma nova etiqueta", "Name" : "Nome", - "Delete" : "Excluir", "Public" : "Público", "Restricted" : "Restrito", "Invisible" : "Invisível", + "Delete" : "Excluir", "Reset" : "Redefinir", "No files in here" : "Nenhum arquivo aqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Size" : "Tamanho", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crie e edite etiquetas colaborativas. Estas etiquetas afetam todos os usuários." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/systemtags/l10n/pt_BR.json b/apps/systemtags/l10n/pt_BR.json index 5075d5073cc..144a32a804d 100644 --- a/apps/systemtags/l10n/pt_BR.json +++ b/apps/systemtags/l10n/pt_BR.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Etiquetas colaborativas", "Collaborative tagging functionality which shares tags among users." : "Funcionalidade de etiquetamento colaborativo que compartilha etiquetas entre usuários.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funcionalidade de etiquetamento colaborativo que compartilha etiquetas entre usuários. Muito bom para equipes.\n\t(Se você for um provedor com uma instalação de multilocação, é aconselhável desativar este aplicativo, pois as etiquetas são compartilhadas.)", - "Create and edit collaborative tags. These tags affect all users." : "Crie e edite etiquetas colaborativas. Estas etiquetas afetam todos os usuários.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Etiquetas colaborativas estão disponíveis para todos os usuários. As etiquetas restritas são visíveis para os usuários, mas não podem ser atribuídas por eles. Etiquetas invisíveis são para uso interno, já que os usuários não podem vê-las ou atribuí-las.", "Select tag …" : "Selecionar etiqueta...", + "Create a new tag" : "Criar uma nova etiqueta", "Name" : "Nome", - "Delete" : "Excluir", "Public" : "Público", "Restricted" : "Restrito", "Invisible" : "Invisível", + "Delete" : "Excluir", "Reset" : "Redefinir", "No files in here" : "Nenhum arquivo aqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", "Size" : "Tamanho", - "Modified" : "Modificado" + "Modified" : "Modificado", + "Create and edit collaborative tags. These tags affect all users." : "Crie e edite etiquetas colaborativas. Estas etiquetas afetam todos os usuários." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/ru.js b/apps/systemtags/l10n/ru.js index 8500398091a..92e7d86a9ce 100644 --- a/apps/systemtags/l10n/ru.js +++ b/apps/systemtags/l10n/ru.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Метки совместной работы", "Collaborative tagging functionality which shares tags among users." : "Совместная функция тегов, которая разделяет теги среди пользователей.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Совместная функция тегов, которая разделяет теги среди пользователей. Отлично подходит для команд.\n(Если вы являетесь поставщиком с многоуровневой установкой, рекомендуется отключить это приложение по мере совместного использования тегов).", - "Create and edit collaborative tags. These tags affect all users." : "Создание и изменение меток совместной работы. Действие таких меток распространяется на всех пользователей.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Совместные теги доступны для всех пользователей. Ограниченные теги видны пользователям, но не могут быть назначены ими. Невидимые теги предназначены для внутреннего использования, поскольку пользователи не могут их видеть или назначать.", "Select tag …" : "Выберите метку…", + "Create a new tag" : "Создать новый тег", "Name" : "Имя", - "Delete" : "Удалить", "Public" : "Общая", "Restricted" : "Ограниченная", "Invisible" : "Невидимая", + "Delete" : "Удалить", "Reset" : "Сбросить", "No files in here" : "Здесь нет файлов", "No entries found in this folder" : "В этой папке не найдено ни одной записи", "Size" : "Размер", - "Modified" : "Изменён" + "Modified" : "Изменён", + "Create and edit collaborative tags. These tags affect all users." : "Создание и изменение меток совместной работы. Действие таких меток распространяется на всех пользователей." }, "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);"); diff --git a/apps/systemtags/l10n/ru.json b/apps/systemtags/l10n/ru.json index 912cd5ed46e..c1337eaa598 100644 --- a/apps/systemtags/l10n/ru.json +++ b/apps/systemtags/l10n/ru.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Метки совместной работы", "Collaborative tagging functionality which shares tags among users." : "Совместная функция тегов, которая разделяет теги среди пользователей.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Совместная функция тегов, которая разделяет теги среди пользователей. Отлично подходит для команд.\n(Если вы являетесь поставщиком с многоуровневой установкой, рекомендуется отключить это приложение по мере совместного использования тегов).", - "Create and edit collaborative tags. These tags affect all users." : "Создание и изменение меток совместной работы. Действие таких меток распространяется на всех пользователей.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Совместные теги доступны для всех пользователей. Ограниченные теги видны пользователям, но не могут быть назначены ими. Невидимые теги предназначены для внутреннего использования, поскольку пользователи не могут их видеть или назначать.", "Select tag …" : "Выберите метку…", + "Create a new tag" : "Создать новый тег", "Name" : "Имя", - "Delete" : "Удалить", "Public" : "Общая", "Restricted" : "Ограниченная", "Invisible" : "Невидимая", + "Delete" : "Удалить", "Reset" : "Сбросить", "No files in here" : "Здесь нет файлов", "No entries found in this folder" : "В этой папке не найдено ни одной записи", "Size" : "Размер", - "Modified" : "Изменён" + "Modified" : "Изменён", + "Create and edit collaborative tags. These tags affect all users." : "Создание и изменение меток совместной работы. Действие таких меток распространяется на всех пользователей." },"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);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/sk.js b/apps/systemtags/l10n/sk.js index e5add97c9fc..d86622062e9 100644 --- a/apps/systemtags/l10n/sk.js +++ b/apps/systemtags/l10n/sk.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (neviditeľné)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové štítky</strong> súboru boli upravené", "Collaborative tags" : "Značky pre spoluprácu", - "Create and edit collaborative tags. These tags affect all users." : "Vytvárajte a upravujte štítky pre spoluprácu. Tieto značky ovplyvnia všetkých používateľov.", "Select tag …" : "Vybrať štítok ...", "Name" : "Názov", - "Delete" : "Zmazať", "Public" : "Verejné", "Restricted" : "Obmedzené", "Invisible" : "Neviditeľné", + "Delete" : "Zmazať", "Reset" : "Vynulovať", "No files in here" : "Žiadne súbory", "No entries found in this folder" : "V tomto priečinku sa nič nenašlo", "Size" : "Veľkosť", - "Modified" : "Upravené" + "Modified" : "Upravené", + "Create and edit collaborative tags. These tags affect all users." : "Vytvárajte a upravujte štítky pre spoluprácu. Tieto značky ovplyvnia všetkých používateľov." }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/systemtags/l10n/sk.json b/apps/systemtags/l10n/sk.json index 43738ca3bca..810d7df65ff 100644 --- a/apps/systemtags/l10n/sk.json +++ b/apps/systemtags/l10n/sk.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (neviditeľné)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systémové štítky</strong> súboru boli upravené", "Collaborative tags" : "Značky pre spoluprácu", - "Create and edit collaborative tags. These tags affect all users." : "Vytvárajte a upravujte štítky pre spoluprácu. Tieto značky ovplyvnia všetkých používateľov.", "Select tag …" : "Vybrať štítok ...", "Name" : "Názov", - "Delete" : "Zmazať", "Public" : "Verejné", "Restricted" : "Obmedzené", "Invisible" : "Neviditeľné", + "Delete" : "Zmazať", "Reset" : "Vynulovať", "No files in here" : "Žiadne súbory", "No entries found in this folder" : "V tomto priečinku sa nič nenašlo", "Size" : "Veľkosť", - "Modified" : "Upravené" + "Modified" : "Upravené", + "Create and edit collaborative tags. These tags affect all users." : "Vytvárajte a upravujte štítky pre spoluprácu. Tieto značky ovplyvnia všetkých používateľov." },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/sq.js b/apps/systemtags/l10n/sq.js index 775fb16dc7b..3cbf0794c60 100644 --- a/apps/systemtags/l10n/sq.js +++ b/apps/systemtags/l10n/sq.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (e padukshme)", "<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë", "Collaborative tags" : "Etiketa bashkëpunuese", - "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit.", "Select tag …" : "Zgjidh etiketimin", "Name" : "Emër", - "Delete" : "Fshije", "Public" : "Publik", "Restricted" : "I/E kufizuar", "Invisible" : "I padukshëm", + "Delete" : "Fshije", "Reset" : "Rivendos", "No files in here" : "S’ka kartela këtu", "No entries found in this folder" : "S’u gjetën zëra në këtë dosje", "Size" : "Madhësi", - "Modified" : "Ndryshuar më" + "Modified" : "Ndryshuar më", + "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/sq.json b/apps/systemtags/l10n/sq.json index e4cbc8ddcd3..b0074773e50 100644 --- a/apps/systemtags/l10n/sq.json +++ b/apps/systemtags/l10n/sq.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (e padukshme)", "<strong>System tags</strong> for a file have been modified" : "U ndryshyan <strong>etiketa sistemi</strong>për një kartelë", "Collaborative tags" : "Etiketa bashkëpunuese", - "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit.", "Select tag …" : "Zgjidh etiketimin", "Name" : "Emër", - "Delete" : "Fshije", "Public" : "Publik", "Restricted" : "I/E kufizuar", "Invisible" : "I padukshëm", + "Delete" : "Fshije", "Reset" : "Rivendos", "No files in here" : "S’ka kartela këtu", "No entries found in this folder" : "S’u gjetën zëra në këtë dosje", "Size" : "Madhësi", - "Modified" : "Ndryshuar më" + "Modified" : "Ndryshuar më", + "Create and edit collaborative tags. These tags affect all users." : "Krijo dhe ndrysho etiketa bashkëpunuese. Këto etiketa ndikojnë tek të gjithë përdoruesit." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/sr.js b/apps/systemtags/l10n/sr.js index eba782ff6a7..1d7b3f48b35 100644 --- a/apps/systemtags/l10n/sr.js +++ b/apps/systemtags/l10n/sr.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "Тимске ознаке", "Collaborative tagging functionality which shares tags among users." : "Могућност заједничког означавања којим се деле ознаке међу корисницима.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Могућност заједничког означавања којим се деле ознаке међу корисницима. Сјајно за тимове.\n\t(ако сте провајдер инсталације за одвојене кориснике/предузећа, саветује се да иксључите ову апликацију пошто су ознаке дељене.)", - "Create and edit collaborative tags. These tags affect all users." : "Правите и мењајте тимске ознаке. Ове ознаке се тичу свих корисника.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Заједниче ознаке су доступне свим корисницима. Заштићене ознаке су доступне свим корисницима, али их они не могу додељивати. Невидљиве ознаке су за интерну употребу, пошто их корисници не могу ни видети ни додељивати.", "Select tag …" : "Одаберите ознаку …", + "Create a new tag" : "Направи нову ознаку", "Name" : "Назив", - "Delete" : "Обриши", "Public" : "Јавна", "Restricted" : "Ограничена", "Invisible" : "Невидљива", + "Delete" : "Обриши", "Reset" : "Ресетуј", "No files in here" : "Овде нема фајлова", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Size" : "Величина", - "Modified" : "Измењен" + "Modified" : "Измењен", + "Create and edit collaborative tags. These tags affect all users." : "Правите и мењајте тимске ознаке. Ове ознаке се тичу свих корисника." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/systemtags/l10n/sr.json b/apps/systemtags/l10n/sr.json index 12c3cf02f5e..6f3ac4c80f0 100644 --- a/apps/systemtags/l10n/sr.json +++ b/apps/systemtags/l10n/sr.json @@ -42,17 +42,19 @@ "Collaborative tags" : "Тимске ознаке", "Collaborative tagging functionality which shares tags among users." : "Могућност заједничког означавања којим се деле ознаке међу корисницима.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Могућност заједничког означавања којим се деле ознаке међу корисницима. Сјајно за тимове.\n\t(ако сте провајдер инсталације за одвојене кориснике/предузећа, саветује се да иксључите ову апликацију пошто су ознаке дељене.)", - "Create and edit collaborative tags. These tags affect all users." : "Правите и мењајте тимске ознаке. Ове ознаке се тичу свих корисника.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Заједниче ознаке су доступне свим корисницима. Заштићене ознаке су доступне свим корисницима, али их они не могу додељивати. Невидљиве ознаке су за интерну употребу, пошто их корисници не могу ни видети ни додељивати.", "Select tag …" : "Одаберите ознаку …", + "Create a new tag" : "Направи нову ознаку", "Name" : "Назив", - "Delete" : "Обриши", "Public" : "Јавна", "Restricted" : "Ограничена", "Invisible" : "Невидљива", + "Delete" : "Обриши", "Reset" : "Ресетуј", "No files in here" : "Овде нема фајлова", "No entries found in this folder" : "Нема ничега у овој фасцикли", "Size" : "Величина", - "Modified" : "Измењен" + "Modified" : "Измењен", + "Create and edit collaborative tags. These tags affect all users." : "Правите и мењајте тимске ознаке. Ове ознаке се тичу свих корисника." },"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);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/sv.js b/apps/systemtags/l10n/sv.js index 1d34b48b496..25c04cb43a6 100644 --- a/apps/systemtags/l10n/sv.js +++ b/apps/systemtags/l10n/sv.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (osynlig)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systemtaggar</strong> för en fil har blivit ändrade", "Collaborative tags" : "Samverkande taggar", - "Create and edit collaborative tags. These tags affect all users." : "Skapa och redigera samverkanstaggar. Dessa taggar påverkar alla användare.", "Select tag …" : "Välj tagg ...", "Name" : "Namn", - "Delete" : "Radera", "Public" : "Offentlig", "Restricted" : "Begränsad", "Invisible" : "Osynlig", + "Delete" : "Radera", "Reset" : "Återställ", "No files in here" : "Inga filer här inne", "No entries found in this folder" : "Ingenting hittades i denna mapp", "Size" : "Storlek", - "Modified" : "Modifierad" + "Modified" : "Modifierad", + "Create and edit collaborative tags. These tags affect all users." : "Skapa och redigera samverkanstaggar. Dessa taggar påverkar alla användare." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/systemtags/l10n/sv.json b/apps/systemtags/l10n/sv.json index 57c97153d59..7b34680c3e6 100644 --- a/apps/systemtags/l10n/sv.json +++ b/apps/systemtags/l10n/sv.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (osynlig)", "<strong>System tags</strong> for a file have been modified" : "<strong>Systemtaggar</strong> för en fil har blivit ändrade", "Collaborative tags" : "Samverkande taggar", - "Create and edit collaborative tags. These tags affect all users." : "Skapa och redigera samverkanstaggar. Dessa taggar påverkar alla användare.", "Select tag …" : "Välj tagg ...", "Name" : "Namn", - "Delete" : "Radera", "Public" : "Offentlig", "Restricted" : "Begränsad", "Invisible" : "Osynlig", + "Delete" : "Radera", "Reset" : "Återställ", "No files in here" : "Inga filer här inne", "No entries found in this folder" : "Ingenting hittades i denna mapp", "Size" : "Storlek", - "Modified" : "Modifierad" + "Modified" : "Modifierad", + "Create and edit collaborative tags. These tags affect all users." : "Skapa och redigera samverkanstaggar. Dessa taggar påverkar alla användare." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/tr.js b/apps/systemtags/l10n/tr.js index 2727a84e4b5..1ed570c1f7a 100644 --- a/apps/systemtags/l10n/tr.js +++ b/apps/systemtags/l10n/tr.js @@ -44,17 +44,19 @@ OC.L10N.register( "Collaborative tags" : "İşbirliği etiketleri", "Collaborative tagging functionality which shares tags among users." : "Etiketlerin kullanıcılar arasında paylaşılabilmesini sağlayan işbirlikli etiketleme özelliği.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "İşbirlikli etiketleme özelliği etiketlerin kullanıcılar arasında paylaşılabilmesini sağlar. Takımlar için harikadır. \n\t(Birden çok kuruluşun olduğu bir kurulumda etiketler zaten paylaşıldığı için bu uygulamanın devre dışı bırakılması önerilir).", - "Create and edit collaborative tags. These tags affect all users." : "İşbirliği etiketlerini oluşturun ve düzenleyin. Bu etiketler tüm kullanıcıları etkiler.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "İşbirliği etiketlerini tüm kullanıcılar kullanabilir. Kısıtlı etiketleri kullanıcılar görebilir ancak atayamaz. Görünmeyen etiketler iç kullanım içindir ve kullanıcılar tarafından görülüp ve atanamaz.", "Select tag …" : "Etiket seçin...", + "Create a new tag" : "Etiket ekle", "Name" : "Ad", - "Delete" : "Sil", "Public" : "Herkese açık", "Restricted" : "Kısıtlı", "Invisible" : "Gizli", + "Delete" : "Sil", "Reset" : "Sıfırla", "No files in here" : "Burada herhangi bir dosya yok", "No entries found in this folder" : "Bu klasörde herhangi bir kayıt bulunamadı", "Size" : "Boyut", - "Modified" : "Değiştirilme" + "Modified" : "Değiştirilme", + "Create and edit collaborative tags. These tags affect all users." : "İşbirliği etiketlerini oluşturun ve düzenleyin. Bu etiketler tüm kullanıcıları etkiler." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/systemtags/l10n/tr.json b/apps/systemtags/l10n/tr.json index dec0e4365f3..3c049ce196e 100644 --- a/apps/systemtags/l10n/tr.json +++ b/apps/systemtags/l10n/tr.json @@ -42,17 +42,19 @@ "Collaborative tags" : "İşbirliği etiketleri", "Collaborative tagging functionality which shares tags among users." : "Etiketlerin kullanıcılar arasında paylaşılabilmesini sağlayan işbirlikli etiketleme özelliği.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "İşbirlikli etiketleme özelliği etiketlerin kullanıcılar arasında paylaşılabilmesini sağlar. Takımlar için harikadır. \n\t(Birden çok kuruluşun olduğu bir kurulumda etiketler zaten paylaşıldığı için bu uygulamanın devre dışı bırakılması önerilir).", - "Create and edit collaborative tags. These tags affect all users." : "İşbirliği etiketlerini oluşturun ve düzenleyin. Bu etiketler tüm kullanıcıları etkiler.", + "Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "İşbirliği etiketlerini tüm kullanıcılar kullanabilir. Kısıtlı etiketleri kullanıcılar görebilir ancak atayamaz. Görünmeyen etiketler iç kullanım içindir ve kullanıcılar tarafından görülüp ve atanamaz.", "Select tag …" : "Etiket seçin...", + "Create a new tag" : "Etiket ekle", "Name" : "Ad", - "Delete" : "Sil", "Public" : "Herkese açık", "Restricted" : "Kısıtlı", "Invisible" : "Gizli", + "Delete" : "Sil", "Reset" : "Sıfırla", "No files in here" : "Burada herhangi bir dosya yok", "No entries found in this folder" : "Bu klasörde herhangi bir kayıt bulunamadı", "Size" : "Boyut", - "Modified" : "Değiştirilme" + "Modified" : "Değiştirilme", + "Create and edit collaborative tags. These tags affect all users." : "İşbirliği etiketlerini oluşturun ve düzenleyin. Bu etiketler tüm kullanıcıları etkiler." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/vi.js b/apps/systemtags/l10n/vi.js index 3d42ed6fa59..80c8e417b55 100644 --- a/apps/systemtags/l10n/vi.js +++ b/apps/systemtags/l10n/vi.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (vô hình)", "<strong>System tags</strong> for a file have been modified" : "<strong>Nhãn</strong> cho một tập tin đã được sửa đổi", "Collaborative tags" : "Thẻ cộng tác", - "Create and edit collaborative tags. These tags affect all users." : "Tạo và hiệu chỉnh các thẻ cộng tác. Những thẻ này ảnh hưởng tới toàn bộ người dùng.", "Select tag …" : "Lựa chọn thẻ", "Name" : "Tên", - "Delete" : "Xóa bỏ", "Public" : "Công khai", "Restricted" : "Bị giới hạn", "Invisible" : "Vô hình", + "Delete" : "Xóa bỏ", "Reset" : "Đặt lại", "No files in here" : "Không có tệp ở đây", "No entries found in this folder" : "Chưa có mục nào trong thư mục", "Size" : "Kích cỡ", - "Modified" : "Thay đổi" + "Modified" : "Thay đổi", + "Create and edit collaborative tags. These tags affect all users." : "Tạo và hiệu chỉnh các thẻ cộng tác. Những thẻ này ảnh hưởng tới toàn bộ người dùng." }, "nplurals=1; plural=0;"); diff --git a/apps/systemtags/l10n/vi.json b/apps/systemtags/l10n/vi.json index 187aa101071..70465adb5e8 100644 --- a/apps/systemtags/l10n/vi.json +++ b/apps/systemtags/l10n/vi.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (vô hình)", "<strong>System tags</strong> for a file have been modified" : "<strong>Nhãn</strong> cho một tập tin đã được sửa đổi", "Collaborative tags" : "Thẻ cộng tác", - "Create and edit collaborative tags. These tags affect all users." : "Tạo và hiệu chỉnh các thẻ cộng tác. Những thẻ này ảnh hưởng tới toàn bộ người dùng.", "Select tag …" : "Lựa chọn thẻ", "Name" : "Tên", - "Delete" : "Xóa bỏ", "Public" : "Công khai", "Restricted" : "Bị giới hạn", "Invisible" : "Vô hình", + "Delete" : "Xóa bỏ", "Reset" : "Đặt lại", "No files in here" : "Không có tệp ở đây", "No entries found in this folder" : "Chưa có mục nào trong thư mục", "Size" : "Kích cỡ", - "Modified" : "Thay đổi" + "Modified" : "Thay đổi", + "Create and edit collaborative tags. These tags affect all users." : "Tạo và hiệu chỉnh các thẻ cộng tác. Những thẻ này ảnh hưởng tới toàn bộ người dùng." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/zh_CN.js b/apps/systemtags/l10n/zh_CN.js index 4d998b335bb..c9f27ff8da0 100644 --- a/apps/systemtags/l10n/zh_CN.js +++ b/apps/systemtags/l10n/zh_CN.js @@ -42,17 +42,17 @@ OC.L10N.register( "%s (invisible)" : "%s (不可见)", "<strong>System tags</strong> for a file have been modified" : "已更改的文件的<strong>系统标签</strong> ", "Collaborative tags" : "协同标签", - "Create and edit collaborative tags. These tags affect all users." : "创建并编辑协同标签. 这些标签影响全部用户.", "Select tag …" : "选择标签...", "Name" : "名称", - "Delete" : "删除", "Public" : "公开", "Restricted" : "受限", "Invisible" : "不可见", + "Delete" : "删除", "Reset" : "重置", "No files in here" : "无文件", "No entries found in this folder" : "此文件夹中无项目", "Size" : "大小", - "Modified" : "修改日期" + "Modified" : "修改日期", + "Create and edit collaborative tags. These tags affect all users." : "创建并编辑协同标签. 这些标签影响全部用户." }, "nplurals=1; plural=0;"); diff --git a/apps/systemtags/l10n/zh_CN.json b/apps/systemtags/l10n/zh_CN.json index 4d53fabe757..b03001ec9ab 100644 --- a/apps/systemtags/l10n/zh_CN.json +++ b/apps/systemtags/l10n/zh_CN.json @@ -40,17 +40,17 @@ "%s (invisible)" : "%s (不可见)", "<strong>System tags</strong> for a file have been modified" : "已更改的文件的<strong>系统标签</strong> ", "Collaborative tags" : "协同标签", - "Create and edit collaborative tags. These tags affect all users." : "创建并编辑协同标签. 这些标签影响全部用户.", "Select tag …" : "选择标签...", "Name" : "名称", - "Delete" : "删除", "Public" : "公开", "Restricted" : "受限", "Invisible" : "不可见", + "Delete" : "删除", "Reset" : "重置", "No files in here" : "无文件", "No entries found in this folder" : "此文件夹中无项目", "Size" : "大小", - "Modified" : "修改日期" + "Modified" : "修改日期", + "Create and edit collaborative tags. These tags affect all users." : "创建并编辑协同标签. 这些标签影响全部用户." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/systemtags/l10n/zh_TW.js b/apps/systemtags/l10n/zh_TW.js index 5638d565c05..4b4fb34208c 100644 --- a/apps/systemtags/l10n/zh_TW.js +++ b/apps/systemtags/l10n/zh_TW.js @@ -33,17 +33,17 @@ OC.L10N.register( "%s (invisible)" : "%s (隱藏)", "<strong>System tags</strong> for a file have been modified" : "一個檔案的<strong>系統標籤</strong>已經被修改", "Collaborative tags" : "協作標籤", - "Create and edit collaborative tags. These tags affect all users." : "新增和編輯協作標籤,這些標籤將影響所有使用者", "Select tag …" : "選擇標籤…", "Name" : "名稱", - "Delete" : "移除", "Public" : "公開", "Restricted" : "受限", "Invisible" : "隱藏", + "Delete" : "移除", "Reset" : "重設", "No files in here" : "沒有任何檔案", "No entries found in this folder" : "在此資料夾中沒有任何項目", "Size" : "大小", - "Modified" : "修改時間" + "Modified" : "修改時間", + "Create and edit collaborative tags. These tags affect all users." : "新增和編輯協作標籤,這些標籤將影響所有使用者" }, "nplurals=1; plural=0;"); diff --git a/apps/systemtags/l10n/zh_TW.json b/apps/systemtags/l10n/zh_TW.json index 20858a6f2fb..6836b7608bf 100644 --- a/apps/systemtags/l10n/zh_TW.json +++ b/apps/systemtags/l10n/zh_TW.json @@ -31,17 +31,17 @@ "%s (invisible)" : "%s (隱藏)", "<strong>System tags</strong> for a file have been modified" : "一個檔案的<strong>系統標籤</strong>已經被修改", "Collaborative tags" : "協作標籤", - "Create and edit collaborative tags. These tags affect all users." : "新增和編輯協作標籤,這些標籤將影響所有使用者", "Select tag …" : "選擇標籤…", "Name" : "名稱", - "Delete" : "移除", "Public" : "公開", "Restricted" : "受限", "Invisible" : "隱藏", + "Delete" : "移除", "Reset" : "重設", "No files in here" : "沒有任何檔案", "No entries found in this folder" : "在此資料夾中沒有任何項目", "Size" : "大小", - "Modified" : "修改時間" + "Modified" : "修改時間", + "Create and edit collaborative tags. These tags affect all users." : "新增和編輯協作標籤,這些標籤將影響所有使用者" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/theming/appinfo/app.php b/apps/theming/appinfo/app.php index 3d4b993f7bc..dc8e00f4ed5 100644 --- a/apps/theming/appinfo/app.php +++ b/apps/theming/appinfo/app.php @@ -26,38 +26,32 @@ */ $app = new \OCP\AppFramework\App('theming'); -/** @var \OCA\Theming\Util $util */ -$util = $app->getContainer()->query(\OCA\Theming\Util::class); -if(!$util->isAlreadyThemed()) { +$app->getContainer()->registerCapability(\OCA\Theming\Capabilities::class); - $app->getContainer()->registerCapability(\OCA\Theming\Capabilities::class); +$linkToCSS = \OC::$server->getURLGenerator()->linkToRoute( + 'theming.Theming.getStylesheet', + [ + 'v' => \OC::$server->getConfig()->getAppValue('theming', 'cachebuster', '0'), + ] +); +\OCP\Util::addHeader( + 'link', + [ + 'rel' => 'stylesheet', + 'href' => $linkToCSS, + ] +); - $linkToCSS = \OC::$server->getURLGenerator()->linkToRoute( - 'theming.Theming.getStylesheet', - [ - 'v' => \OC::$server->getConfig()->getAppValue('theming', 'cachebuster', '0'), - ] - ); - \OCP\Util::addHeader( - 'link', - [ - 'rel' => 'stylesheet', - 'href' => $linkToCSS, - ] - ); - - $linkToJs = \OC::$server->getURLGenerator()->linkToRoute( - 'theming.Theming.getJavascript', - [ - 'v' => \OC::$server->getConfig()->getAppValue('theming', 'cachebuster', '0'), - ] - ); - \OCP\Util::addHeader( - 'script', - [ - 'src' => $linkToJs, - 'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce() - ], '' - ); - -}
\ No newline at end of file +$linkToJs = \OC::$server->getURLGenerator()->linkToRoute( + 'theming.Theming.getJavascript', + [ + 'v' => \OC::$server->getConfig()->getAppValue('theming', 'cachebuster', '0'), + ] +); +\OCP\Util::addHeader( + 'script', + [ + 'src' => $linkToJs, + 'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce() + ], '' +);
\ No newline at end of file diff --git a/apps/theming/l10n/fi.js b/apps/theming/l10n/fi.js index 80087c68de1..150c802d1bd 100644 --- a/apps/theming/l10n/fi.js +++ b/apps/theming/l10n/fi.js @@ -8,6 +8,7 @@ OC.L10N.register( "Name cannot be empty" : "Nimi ei voi olla tyhjä", "The given name is too long" : "Nimi on liian pitkä", "The given web address is too long" : "Verkko-osoite on liian pitkä", + "The given legal notice address is too long" : "Annettu lainopillisen huomautuksen osoite on liian pitkä", "The given privacy policy address is too long" : "Annettu yksityiskäytännön osoite on liian pitkä", "The given slogan is too long" : "Slogani on liian pitkä", "The given color is invalid" : "Väri on virheellinen", @@ -21,6 +22,7 @@ OC.L10N.register( "No file uploaded" : "Ei tiedostoa lähetetty", "Unsupported image type" : "Ei-tuettu kuvatiedostomuoto", "Theming" : "Teema", + "Legal notice" : "Lainopillinen huomautus", "Privacy policy" : "Yksityisyyskäytäntö", "Adjust the Nextcloud theme" : "Mukauta Nextcloudin teemaa", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teeman avulla voit helposti kustomoida web-käyttöliittymän ja tuettujen sovelluksien ulkonäköä ja tuntumaa. Teema näkyy kaikille käyttäjille.", @@ -35,6 +37,7 @@ OC.L10N.register( "Upload new login background" : "Lähetä uusi kirjautumissivun taustakuva", "Remove background image" : "Poista taustakuva", "Advanced options" : "Lisävalinnat", + "Legal notice link" : "Lainopillisen huomautuksen linkki", "Privacy policy link" : "Yksityisyyskäytännön linkki", "Header logo" : "Otsakelogo", "Upload new header logo" : "Lähetä uusi otsakelogo", diff --git a/apps/theming/l10n/fi.json b/apps/theming/l10n/fi.json index d13c9718b3d..fa224c04bac 100644 --- a/apps/theming/l10n/fi.json +++ b/apps/theming/l10n/fi.json @@ -6,6 +6,7 @@ "Name cannot be empty" : "Nimi ei voi olla tyhjä", "The given name is too long" : "Nimi on liian pitkä", "The given web address is too long" : "Verkko-osoite on liian pitkä", + "The given legal notice address is too long" : "Annettu lainopillisen huomautuksen osoite on liian pitkä", "The given privacy policy address is too long" : "Annettu yksityiskäytännön osoite on liian pitkä", "The given slogan is too long" : "Slogani on liian pitkä", "The given color is invalid" : "Väri on virheellinen", @@ -19,6 +20,7 @@ "No file uploaded" : "Ei tiedostoa lähetetty", "Unsupported image type" : "Ei-tuettu kuvatiedostomuoto", "Theming" : "Teema", + "Legal notice" : "Lainopillinen huomautus", "Privacy policy" : "Yksityisyyskäytäntö", "Adjust the Nextcloud theme" : "Mukauta Nextcloudin teemaa", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teeman avulla voit helposti kustomoida web-käyttöliittymän ja tuettujen sovelluksien ulkonäköä ja tuntumaa. Teema näkyy kaikille käyttäjille.", @@ -33,6 +35,7 @@ "Upload new login background" : "Lähetä uusi kirjautumissivun taustakuva", "Remove background image" : "Poista taustakuva", "Advanced options" : "Lisävalinnat", + "Legal notice link" : "Lainopillisen huomautuksen linkki", "Privacy policy link" : "Yksityisyyskäytännön linkki", "Header logo" : "Otsakelogo", "Upload new header logo" : "Lähetä uusi otsakelogo", diff --git a/apps/theming/l10n/he.js b/apps/theming/l10n/he.js index 90822fecf2a..2c5c5bc2723 100644 --- a/apps/theming/l10n/he.js +++ b/apps/theming/l10n/he.js @@ -46,6 +46,7 @@ OC.L10N.register( "Upload new header logo" : "העלאת לוגו כותרת", "Favicon" : "סמל כותרת", "Upload new favicon" : "העלאת סמל כותרת חדש", + "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "יש להתקין את הרחבת ה־PHP של Imagemagick עם תמיכה בתמונות SVG כדי לייצר תמונות מועדפים אוטומטיות על בסיס הלוגו שהועלה והצבע.", "You are already using a custom theme" : "כבר החלת ערכת עיצוב בהתאמה אישית", "reset to default" : "איפוס לבררת מחדל", "Web address" : "כתובת", diff --git a/apps/theming/l10n/he.json b/apps/theming/l10n/he.json index 146b9b8049e..6585fee9a02 100644 --- a/apps/theming/l10n/he.json +++ b/apps/theming/l10n/he.json @@ -44,6 +44,7 @@ "Upload new header logo" : "העלאת לוגו כותרת", "Favicon" : "סמל כותרת", "Upload new favicon" : "העלאת סמל כותרת חדש", + "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "יש להתקין את הרחבת ה־PHP של Imagemagick עם תמיכה בתמונות SVG כדי לייצר תמונות מועדפים אוטומטיות על בסיס הלוגו שהועלה והצבע.", "You are already using a custom theme" : "כבר החלת ערכת עיצוב בהתאמה אישית", "reset to default" : "איפוס לבררת מחדל", "Web address" : "כתובת", diff --git a/apps/theming/l10n/pl.js b/apps/theming/l10n/pl.js index 2f6db33cc0d..2295532df99 100644 --- a/apps/theming/l10n/pl.js +++ b/apps/theming/l10n/pl.js @@ -1,7 +1,7 @@ OC.L10N.register( "theming", { - "Loading preview…" : "Ładowanie podglądu...", + "Loading preview…" : "Ładowanie podglądu…", "Saved" : "Zapisano", "Admin" : "Admin", "a safe home for all your data" : "bezpieczna schowek dla wszystkich twoich danych", @@ -31,7 +31,7 @@ OC.L10N.register( "You are already using a custom theme" : "Używasz już motywu niestandarowego", "reset to default" : "przywróć domyślne", "Web address" : "adres internetowy", - "Web address https://…" : "adres internetowy https://...", + "Web address https://…" : "adres internetowy https://…", "There is no error, the file uploaded with success" : "Brak błędów, plik wysłano poprawnie.", "The uploaded file was only partially uploaded" : "Załadowany plik został wysłany tylko częściowo.", "Failed to write file to disk." : "Błąd zapisu na dysk.", diff --git a/apps/theming/l10n/pl.json b/apps/theming/l10n/pl.json index a4a06388cfa..89cb37ea122 100644 --- a/apps/theming/l10n/pl.json +++ b/apps/theming/l10n/pl.json @@ -1,5 +1,5 @@ { "translations": { - "Loading preview…" : "Ładowanie podglądu...", + "Loading preview…" : "Ładowanie podglądu…", "Saved" : "Zapisano", "Admin" : "Admin", "a safe home for all your data" : "bezpieczna schowek dla wszystkich twoich danych", @@ -29,7 +29,7 @@ "You are already using a custom theme" : "Używasz już motywu niestandarowego", "reset to default" : "przywróć domyślne", "Web address" : "adres internetowy", - "Web address https://…" : "adres internetowy https://...", + "Web address https://…" : "adres internetowy https://…", "There is no error, the file uploaded with success" : "Brak błędów, plik wysłano poprawnie.", "The uploaded file was only partially uploaded" : "Załadowany plik został wysłany tylko częściowo.", "Failed to write file to disk." : "Błąd zapisu na dysk.", diff --git a/apps/theming/l10n/sv.js b/apps/theming/l10n/sv.js index 1437a4d9e5d..034392bbe10 100644 --- a/apps/theming/l10n/sv.js +++ b/apps/theming/l10n/sv.js @@ -17,9 +17,12 @@ OC.L10N.register( "No file uploaded" : "Ingen fil uppladdad", "Unsupported image type" : "Filtypen är ej giltig", "Theming" : "Teman", + "Legal notice" : "Rättsligt meddelande", + "Privacy policy" : "Integritetspolicy", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teman gör det möjligt att enkelt skräddarsy utseendet på ditt moln. Detta kommer att synas för alla användare.", "Name" : "Namn", "Reset to default" : "Återställ till grundinställningar", + "Web link" : "Webblänk", "Slogan" : "Slogan", "Color" : "Färg", "Logo" : "Logotyp", @@ -27,6 +30,9 @@ OC.L10N.register( "Login image" : "Inloggningsbild", "Upload new login background" : "Ladda upp ny bakgrundsbild", "Remove background image" : "Ta bort bakgrundsbild", + "Advanced options" : "Avancerade inställningar", + "Legal notice link" : "Länk rättsligt meddelande", + "Privacy policy link" : "Länk integritetspolicy", "You are already using a custom theme" : "Du använder redan ett annat tema", "reset to default" : "Återställ till standard", "Web address" : "Webbadress", diff --git a/apps/theming/l10n/sv.json b/apps/theming/l10n/sv.json index 60efd285876..4bfc458e73d 100644 --- a/apps/theming/l10n/sv.json +++ b/apps/theming/l10n/sv.json @@ -15,9 +15,12 @@ "No file uploaded" : "Ingen fil uppladdad", "Unsupported image type" : "Filtypen är ej giltig", "Theming" : "Teman", + "Legal notice" : "Rättsligt meddelande", + "Privacy policy" : "Integritetspolicy", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Teman gör det möjligt att enkelt skräddarsy utseendet på ditt moln. Detta kommer att synas för alla användare.", "Name" : "Namn", "Reset to default" : "Återställ till grundinställningar", + "Web link" : "Webblänk", "Slogan" : "Slogan", "Color" : "Färg", "Logo" : "Logotyp", @@ -25,6 +28,9 @@ "Login image" : "Inloggningsbild", "Upload new login background" : "Ladda upp ny bakgrundsbild", "Remove background image" : "Ta bort bakgrundsbild", + "Advanced options" : "Avancerade inställningar", + "Legal notice link" : "Länk rättsligt meddelande", + "Privacy policy link" : "Länk integritetspolicy", "You are already using a custom theme" : "Du använder redan ett annat tema", "reset to default" : "Återställ till standard", "Web address" : "Webbadress", diff --git a/apps/twofactor_backupcodes/l10n/fr.js b/apps/twofactor_backupcodes/l10n/fr.js index 275bd61c0da..ab916b03152 100644 --- a/apps/twofactor_backupcodes/l10n/fr.js +++ b/apps/twofactor_backupcodes/l10n/fr.js @@ -14,6 +14,7 @@ OC.L10N.register( "Backup code" : "Code de récupération", "Use backup code" : "Utiliser un code de récupération", "Two factor backup codes" : "Code de secours pour l'authentification double facteur.", + "A two-factor auth backup codes provider" : "Un fournisseur de codes de récupération d'authentification à deux facteurs", "Second-factor backup codes" : "Codes de récupération pour l'authentification en deux étapes" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/twofactor_backupcodes/l10n/fr.json b/apps/twofactor_backupcodes/l10n/fr.json index eed66675b5a..94d7e35f2bd 100644 --- a/apps/twofactor_backupcodes/l10n/fr.json +++ b/apps/twofactor_backupcodes/l10n/fr.json @@ -12,6 +12,7 @@ "Backup code" : "Code de récupération", "Use backup code" : "Utiliser un code de récupération", "Two factor backup codes" : "Code de secours pour l'authentification double facteur.", + "A two-factor auth backup codes provider" : "Un fournisseur de codes de récupération d'authentification à deux facteurs", "Second-factor backup codes" : "Codes de récupération pour l'authentification en deux étapes" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/af.js b/apps/updatenotification/l10n/af.js index 680a398ae70..c065f992057 100644 --- a/apps/updatenotification/l10n/af.js +++ b/apps/updatenotification/l10n/af.js @@ -2,14 +2,6 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} is beskikbaar. Kry meer inligting oor hoe om by te werk.", - "Open updater" : "Open bywerker", - "Your version is up to date." : "U weergawe is op datum.", - "Update channel:" : "Werk kanaal by:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kan altyd na ’n nuwer weergawe / eksperimentele kanaal bywerk. U kan egter nooit na ’n stabieler kanaal afgradeer nie.", - "Notify members of the following groups about available updates:" : "Stel lede van die volgende groepe in kennis van beskikbare bywerkings:", - "Only notification for app updates are available." : "Slegs kennisgewing vir toepbywerking is beskikbaar.", - "The selected update channel does not support updates of the server." : "Die gekose bywerkkanaal ondersteun nie bedienerbywerkings nie.", - "Could not start updater, please try the manual update" : "Bywerker kon nie begin nie, probeer handmatig bywerk", "Update notifications" : "Werk kennisgewings by", "Channel updated" : "Kanaal bygewerk", "The update server could not be reached since %d days to check for new updates." : "Die bywerkingsbediener kan al vir %d dae nie bereik word om nuwe bywerkings te soek nie.", @@ -17,8 +9,16 @@ OC.L10N.register( "Update to %1$s is available." : "Bywerking vir %1$s is beskikbaar.", "Update for %1$s to version %2$s is available." : "Bywerking vir %1$s na weergawe %2$s is beskikbaar.", "Update for {app} to version %s is available." : "Bywerking vir {app} na weergawe %s is beskikbaar.", + "Open updater" : "Open bywerker", + "Update channel:" : "Werk kanaal by:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kan altyd na ’n nuwer weergawe / eksperimentele kanaal bywerk. U kan egter nooit na ’n stabieler kanaal afgradeer nie.", + "Notify members of the following groups about available updates:" : "Stel lede van die volgende groepe in kennis van beskikbare bywerkings:", + "Only notification for app updates are available." : "Slegs kennisgewing vir toepbywerking is beskikbaar.", + "The selected update channel does not support updates of the server." : "Die gekose bywerkkanaal ondersteun nie bedienerbywerkings nie.", + "Could not start updater, please try the manual update" : "Bywerker kon nie begin nie, probeer handmatig bywerk", "A new version is available: %s" : "’n nuwe weergawe is beskikbaar: %s", "Download now" : "Laai nou af", + "Your version is up to date." : "U weergawe is op datum.", "Checked on %s" : "Gekyk op %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Die gekose bywerkingskanaal maak toegewyde bedienerkennisgewings oorbodig." }, diff --git a/apps/updatenotification/l10n/af.json b/apps/updatenotification/l10n/af.json index 48e1ec6d070..bb57fea9ad5 100644 --- a/apps/updatenotification/l10n/af.json +++ b/apps/updatenotification/l10n/af.json @@ -1,13 +1,5 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} is beskikbaar. Kry meer inligting oor hoe om by te werk.", - "Open updater" : "Open bywerker", - "Your version is up to date." : "U weergawe is op datum.", - "Update channel:" : "Werk kanaal by:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kan altyd na ’n nuwer weergawe / eksperimentele kanaal bywerk. U kan egter nooit na ’n stabieler kanaal afgradeer nie.", - "Notify members of the following groups about available updates:" : "Stel lede van die volgende groepe in kennis van beskikbare bywerkings:", - "Only notification for app updates are available." : "Slegs kennisgewing vir toepbywerking is beskikbaar.", - "The selected update channel does not support updates of the server." : "Die gekose bywerkkanaal ondersteun nie bedienerbywerkings nie.", - "Could not start updater, please try the manual update" : "Bywerker kon nie begin nie, probeer handmatig bywerk", "Update notifications" : "Werk kennisgewings by", "Channel updated" : "Kanaal bygewerk", "The update server could not be reached since %d days to check for new updates." : "Die bywerkingsbediener kan al vir %d dae nie bereik word om nuwe bywerkings te soek nie.", @@ -15,8 +7,16 @@ "Update to %1$s is available." : "Bywerking vir %1$s is beskikbaar.", "Update for %1$s to version %2$s is available." : "Bywerking vir %1$s na weergawe %2$s is beskikbaar.", "Update for {app} to version %s is available." : "Bywerking vir {app} na weergawe %s is beskikbaar.", + "Open updater" : "Open bywerker", + "Update channel:" : "Werk kanaal by:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kan altyd na ’n nuwer weergawe / eksperimentele kanaal bywerk. U kan egter nooit na ’n stabieler kanaal afgradeer nie.", + "Notify members of the following groups about available updates:" : "Stel lede van die volgende groepe in kennis van beskikbare bywerkings:", + "Only notification for app updates are available." : "Slegs kennisgewing vir toepbywerking is beskikbaar.", + "The selected update channel does not support updates of the server." : "Die gekose bywerkkanaal ondersteun nie bedienerbywerkings nie.", + "Could not start updater, please try the manual update" : "Bywerker kon nie begin nie, probeer handmatig bywerk", "A new version is available: %s" : "’n nuwe weergawe is beskikbaar: %s", "Download now" : "Laai nou af", + "Your version is up to date." : "U weergawe is op datum.", "Checked on %s" : "Gekyk op %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Die gekose bywerkingskanaal maak toegewyde bedienerkennisgewings oorbodig." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/updatenotification/l10n/ast.js b/apps/updatenotification/l10n/ast.js index edb0ceb2d45..07a2854c59c 100644 --- a/apps/updatenotification/l10n/ast.js +++ b/apps/updatenotification/l10n/ast.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Ta disponible {version}. Consigui más infromación tocante a cómo anovar.", + "Update notifications" : "Avisos d'anovamientu", + "Channel updated" : "Anovóse la canal", + "The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.", + "Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.", + "Update to %1$s is available." : "Ta disponible l'anovamientu a %1$s", + "Update for %1$s to version %2$s is available." : "Ta disponible l'anovamientu pa %1$s a la versión %2$s.", + "Update for {app} to version %s is available." : "Ta disponible l'anovamientu pa {app} a la versión %s.", "Open updater" : "Abrir anovador", - "Your version is up to date." : "La to versión ta anovada", + "The update check is not yet finished. Please refresh the page." : "Entá nun finó la comprobación d'anovamientu. Refresca la páxina, por favor.", "A non-default update server is in use to be checked for updates:" : "Úsase un sirvidor non predetermináu pa comprobar anovamientos:", "Update channel:" : "Canal d'anovamientu:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempres pues anovar a una canal esperimental pero enxamás nun afites una canal más estable.", @@ -11,17 +18,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Namái tán disponibles los avisos pa los anovamientos d'aplicaciones.", "The selected update channel does not support updates of the server." : "El canal esbilláu d'anovamientu nun sofita anovamientos del sirvidor.", "Could not start updater, please try the manual update" : "Nun pudo aniciase l'anovador, por favor prueba l'anovamientu manual", - "Update notifications" : "Avisos d'anovamientu", - "Channel updated" : "Anovóse la canal", - "The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.", - "Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.", - "Update to %1$s is available." : "Ta disponible l'anovamientu a %1$s", - "Update for %1$s to version %2$s is available." : "Ta disponible l'anovamientu pa %1$s a la versión %2$s.", - "Update for {app} to version %s is available." : "Ta disponible l'anovamientu pa {app} a la versión %s.", "A new version is available: %s" : "Ta disponible una versión más nueva: %s", "Download now" : "Baxar agora", + "Your version is up to date." : "La to versión ta anovada", "Checked on %s" : "Comprobóse'l %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "La canal esbillada d'anovamientu fai avisos dedicaos pa lo obsoleto del sirvidor.", - "The update check is not yet finished. Please refresh the page." : "Entá nun finó la comprobación d'anovamientu. Refresca la páxina, por favor." + "The selected update channel makes dedicated notifications for the server obsolete." : "La canal esbillada d'anovamientu fai avisos dedicaos pa lo obsoleto del sirvidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/ast.json b/apps/updatenotification/l10n/ast.json index 500b59d9e23..eea934c4a6d 100644 --- a/apps/updatenotification/l10n/ast.json +++ b/apps/updatenotification/l10n/ast.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "Ta disponible {version}. Consigui más infromación tocante a cómo anovar.", + "Update notifications" : "Avisos d'anovamientu", + "Channel updated" : "Anovóse la canal", + "The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.", + "Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.", + "Update to %1$s is available." : "Ta disponible l'anovamientu a %1$s", + "Update for %1$s to version %2$s is available." : "Ta disponible l'anovamientu pa %1$s a la versión %2$s.", + "Update for {app} to version %s is available." : "Ta disponible l'anovamientu pa {app} a la versión %s.", "Open updater" : "Abrir anovador", - "Your version is up to date." : "La to versión ta anovada", + "The update check is not yet finished. Please refresh the page." : "Entá nun finó la comprobación d'anovamientu. Refresca la páxina, por favor.", "A non-default update server is in use to be checked for updates:" : "Úsase un sirvidor non predetermináu pa comprobar anovamientos:", "Update channel:" : "Canal d'anovamientu:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempres pues anovar a una canal esperimental pero enxamás nun afites una canal más estable.", @@ -9,17 +16,10 @@ "Only notification for app updates are available." : "Namái tán disponibles los avisos pa los anovamientos d'aplicaciones.", "The selected update channel does not support updates of the server." : "El canal esbilláu d'anovamientu nun sofita anovamientos del sirvidor.", "Could not start updater, please try the manual update" : "Nun pudo aniciase l'anovador, por favor prueba l'anovamientu manual", - "Update notifications" : "Avisos d'anovamientu", - "Channel updated" : "Anovóse la canal", - "The update server could not be reached since %d days to check for new updates." : "Nun pudo algamase'l sirvidor d'anovamientu dende hai %d díes pa comprobar anovamientos.", - "Please check the Nextcloud and server log files for errors." : "Comprueba los fallos de los ficheros de rexistru del sirvidor y Nextcloud, por favor.", - "Update to %1$s is available." : "Ta disponible l'anovamientu a %1$s", - "Update for %1$s to version %2$s is available." : "Ta disponible l'anovamientu pa %1$s a la versión %2$s.", - "Update for {app} to version %s is available." : "Ta disponible l'anovamientu pa {app} a la versión %s.", "A new version is available: %s" : "Ta disponible una versión más nueva: %s", "Download now" : "Baxar agora", + "Your version is up to date." : "La to versión ta anovada", "Checked on %s" : "Comprobóse'l %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "La canal esbillada d'anovamientu fai avisos dedicaos pa lo obsoleto del sirvidor.", - "The update check is not yet finished. Please refresh the page." : "Entá nun finó la comprobación d'anovamientu. Refresca la páxina, por favor." + "The selected update channel makes dedicated notifications for the server obsolete." : "La canal esbillada d'anovamientu fai avisos dedicaos pa lo obsoleto del sirvidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ca.js b/apps/updatenotification/l10n/ca.js index 23b1afca189..2a843d044ae 100644 --- a/apps/updatenotification/l10n/ca.js +++ b/apps/updatenotification/l10n/ca.js @@ -2,8 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.", + "Update notifications" : "Notificacions d'actualització", + "Channel updated" : "Canal actualitzat", + "The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.", + "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.", + "Update to %1$s is available." : "Actualització per %1$s està disponible.", + "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", + "Update for {app} to version %s is available." : "Actualització per {app} a la versió %s està disponible.", + "Update notification" : "Notificació d'actualització", "Open updater" : "Obrir actualitzador", - "Your version is up to date." : "La teva versió està actualitzada.", + "What's new?" : "Què hi ha de nou?", + "The update check is not yet finished. Please refresh the page." : "Actualitzeu la pàgina.", "A non-default update server is in use to be checked for updates:" : "S'utilitza un servidor d'actualització no predeterminat per comprovar si hi ha actualitzacions:", "Update channel:" : "Actualitzar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", @@ -11,19 +20,12 @@ OC.L10N.register( "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", "Only notification for app updates are available." : "Només notificació d'actualitzacions d'apps estan disponibles.", "The selected update channel does not support updates of the server." : "El canal d'actualització seleccionat no admet actualitzacions del servidor.", + "View changelog" : "Mostra el registre de canvis", "Could not start updater, please try the manual update" : "No s'ha pogut iniciar actualitzador, provi l'actualització manual", - "Update notifications" : "Notificacions d'actualització", - "Channel updated" : "Canal actualitzat", - "The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.", - "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.", - "Update to %1$s is available." : "Actualització per %1$s està disponible.", - "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", - "Update for {app} to version %s is available." : "Actualització per {app} a la versió %s està disponible.", - "Update notification" : "Notificació d'actualització", "A new version is available: %s" : "Una nova versió està disponible: %s", "Download now" : "Descarrega ara", + "Your version is up to date." : "La teva versió està actualitzada.", "Checked on %s" : "Comprovat en %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor.", - "The update check is not yet finished. Please refresh the page." : "Actualitzeu la pàgina." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/ca.json b/apps/updatenotification/l10n/ca.json index c06ef1ec531..9ce72d949d4 100644 --- a/apps/updatenotification/l10n/ca.json +++ b/apps/updatenotification/l10n/ca.json @@ -1,7 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.", + "Update notifications" : "Notificacions d'actualització", + "Channel updated" : "Canal actualitzat", + "The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.", + "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.", + "Update to %1$s is available." : "Actualització per %1$s està disponible.", + "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", + "Update for {app} to version %s is available." : "Actualització per {app} a la versió %s està disponible.", + "Update notification" : "Notificació d'actualització", "Open updater" : "Obrir actualitzador", - "Your version is up to date." : "La teva versió està actualitzada.", + "What's new?" : "Què hi ha de nou?", + "The update check is not yet finished. Please refresh the page." : "Actualitzeu la pàgina.", "A non-default update server is in use to be checked for updates:" : "S'utilitza un servidor d'actualització no predeterminat per comprovar si hi ha actualitzacions:", "Update channel:" : "Actualitzar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", @@ -9,19 +18,12 @@ "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", "Only notification for app updates are available." : "Només notificació d'actualitzacions d'apps estan disponibles.", "The selected update channel does not support updates of the server." : "El canal d'actualització seleccionat no admet actualitzacions del servidor.", + "View changelog" : "Mostra el registre de canvis", "Could not start updater, please try the manual update" : "No s'ha pogut iniciar actualitzador, provi l'actualització manual", - "Update notifications" : "Notificacions d'actualització", - "Channel updated" : "Canal actualitzat", - "The update server could not be reached since %d days to check for new updates." : "El servidor d'actualització no es va poder arribar des %d dies per comprovar si hi ha noves actualitzacions.", - "Please check the Nextcloud and server log files for errors." : "Si us plau, comproveu els fitxers de log del servidor i de Nextcloud per detectar errors.", - "Update to %1$s is available." : "Actualització per %1$s està disponible.", - "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", - "Update for {app} to version %s is available." : "Actualització per {app} a la versió %s està disponible.", - "Update notification" : "Notificació d'actualització", "A new version is available: %s" : "Una nova versió està disponible: %s", "Download now" : "Descarrega ara", + "Your version is up to date." : "La teva versió està actualitzada.", "Checked on %s" : "Comprovat en %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor.", - "The update check is not yet finished. Please refresh the page." : "Actualitzeu la pàgina." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal d'actualització seleccionat deixa obsoletes les notificacions específiques del servidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/cs.js b/apps/updatenotification/l10n/cs.js index e5977ae56f1..1623898fc1e 100644 --- a/apps/updatenotification/l10n/cs.js +++ b/apps/updatenotification/l10n/cs.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.", + "Update notifications" : "Aktualizovat upozornění", + "Channel updated" : "Kanál aktualizován", + "The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.", + "Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.", + "Update to %1$s is available." : "Je dostupná aktualizace na %1$s.", + "Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.", + "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.", + "Update notification" : "Upozornění na aktualizaci", "Apps with available updates" : "Aplikace s dostupnými aktualizacemi", "Open updater" : "Otevřít aktualizátor", - "Your version is up to date." : "Používáte nejnovější verzi.", + "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku.", "A non-default update server is in use to be checked for updates:" : "Pro kontrolu aktualizací se používá jiný než výchozí server:", "Update channel:" : "Aktualizovat kanál:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy můžete aktualizovat na novější verzi / experimentální kanál. Poté ale nelze nikdy provést downgrade zpět na nižší stabilní kanál.", @@ -16,18 +24,10 @@ OC.L10N.register( "Checked on {lastCheckedDate}" : "Zkontrolováno {lastCheckedDate}", "Checking apps for compatible updates" : "Zjišťuje se dostupnost kompatibilních aktualizací aplikací", "Could not start updater, please try the manual update" : "Nepodařilo se spustit aktualizátor, zkuste ruční aktualizaci", - "Update notifications" : "Aktualizovat upozornění", - "Channel updated" : "Kanál aktualizován", - "The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.", - "Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.", - "Update to %1$s is available." : "Je dostupná aktualizace na %1$s.", - "Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.", - "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.", - "Update notification" : "Upozornění na aktualizaci", "A new version is available: %s" : "Je dostupná nová verze: %s", "Download now" : "Stáhnout nyní", + "Your version is up to date." : "Používáte nejnovější verzi.", "Checked on %s" : "Zkontrolováno %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.", - "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku." + "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/updatenotification/l10n/cs.json b/apps/updatenotification/l10n/cs.json index 5c3f07c1da1..671a060edb4 100644 --- a/apps/updatenotification/l10n/cs.json +++ b/apps/updatenotification/l10n/cs.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "Je dostupná {version}. Přečtěte si více informací jak aktualizovat.", + "Update notifications" : "Aktualizovat upozornění", + "Channel updated" : "Kanál aktualizován", + "The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.", + "Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.", + "Update to %1$s is available." : "Je dostupná aktualizace na %1$s.", + "Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.", + "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.", + "Update notification" : "Upozornění na aktualizaci", "Apps with available updates" : "Aplikace s dostupnými aktualizacemi", "Open updater" : "Otevřít aktualizátor", - "Your version is up to date." : "Používáte nejnovější verzi.", + "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku.", "A non-default update server is in use to be checked for updates:" : "Pro kontrolu aktualizací se používá jiný než výchozí server:", "Update channel:" : "Aktualizovat kanál:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy můžete aktualizovat na novější verzi / experimentální kanál. Poté ale nelze nikdy provést downgrade zpět na nižší stabilní kanál.", @@ -14,18 +22,10 @@ "Checked on {lastCheckedDate}" : "Zkontrolováno {lastCheckedDate}", "Checking apps for compatible updates" : "Zjišťuje se dostupnost kompatibilních aktualizací aplikací", "Could not start updater, please try the manual update" : "Nepodařilo se spustit aktualizátor, zkuste ruční aktualizaci", - "Update notifications" : "Aktualizovat upozornění", - "Channel updated" : "Kanál aktualizován", - "The update server could not be reached since %d days to check for new updates." : "Aktualizační server nebyl dosažen %d dní pro kontrolu aktualizací.", - "Please check the Nextcloud and server log files for errors." : "Po chybách se podívejte v protokolech Nextcloudu a webového serveru.", - "Update to %1$s is available." : "Je dostupná aktualizace na %1$s.", - "Update for %1$s to version %2$s is available." : "Je dostupná aktualizace pro %1$s na verzi %2$s.", - "Update for {app} to version %s is available." : "Pro {app} je dostupná aktualizace na verzi %s.", - "Update notification" : "Upozornění na aktualizaci", "A new version is available: %s" : "Je dostupná nová verze: %s", "Download now" : "Stáhnout nyní", + "Your version is up to date." : "Používáte nejnovější verzi.", "Checked on %s" : "Zkontrolováno %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.", - "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizací ještě neskončila. Obnovte stránku." + "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/da.js b/apps/updatenotification/l10n/da.js index dd02bca5295..889570027d3 100644 --- a/apps/updatenotification/l10n/da.js +++ b/apps/updatenotification/l10n/da.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} er tilgængelig. Få mere information om hvordan du opdaterer.", + "Update notifications" : "Opdaterings notifikationer", + "Channel updated" : "Kanal opdateret", + "The update server could not be reached since %d days to check for new updates." : "Har ikke været forbundet til opdateringsserveren i %d dage for at tjekke efter nye opdateringer.", + "Please check the Nextcloud and server log files for errors." : "Tjek venligst Nextcloud server log for fejl.", + "Update to %1$s is available." : "Opdatering til %1$s er tilgængelig.", + "Update for %1$s to version %2$s is available." : "Opdatering af %1$s til version %2$s er tilgængelig.", + "Update for {app} to version %s is available." : "Opdatering af {app} til version %s er tilgængelig.", "Open updater" : "Åbn for opdatering", - "Your version is up to date." : "Du har seneste version.", + "The update check is not yet finished. Please refresh the page." : "Opdateringstjek er ikke færdigt. Genindlæs venligst siden.", "A non-default update server is in use to be checked for updates:" : "En ikke standard opdateringsserver bliver brugt for at tjekke efter opdateringer:", "Update channel:" : "Opdatér kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan altid opdatere til en nyere version / eksperimentel kanal. Men du kan aldrig nedgradere til en mere stabil kanal", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Kun notifikation for app opdateringer tilgængelige.", "The selected update channel does not support updates of the server." : "Den valgte opdateringskanal understøtter ikke opdatering af serveren.", "Could not start updater, please try the manual update" : "Kunne ikke starte opdateringen, prøv venligst med en manual opdatering", - "Update notifications" : "Opdaterings notifikationer", - "Channel updated" : "Kanal opdateret", - "The update server could not be reached since %d days to check for new updates." : "Har ikke været forbundet til opdateringsserveren i %d dage for at tjekke efter nye opdateringer.", - "Please check the Nextcloud and server log files for errors." : "Tjek venligst Nextcloud server log for fejl.", - "Update to %1$s is available." : "Opdatering til %1$s er tilgængelig.", - "Update for %1$s to version %2$s is available." : "Opdatering af %1$s til version %2$s er tilgængelig.", - "Update for {app} to version %s is available." : "Opdatering af {app} til version %s er tilgængelig.", "A new version is available: %s" : "Der er en ny version tligængelig: %s", "Download now" : "Hent nu", + "Your version is up to date." : "Du har seneste version.", "Checked on %s" : "Tjekket per %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte kanal lave dedikerede notifikationer for serveren ligegyldige.", - "The update check is not yet finished. Please refresh the page." : "Opdateringstjek er ikke færdigt. Genindlæs venligst siden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte kanal lave dedikerede notifikationer for serveren ligegyldige." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/da.json b/apps/updatenotification/l10n/da.json index f127f7a6bb5..9ce4b4c1431 100644 --- a/apps/updatenotification/l10n/da.json +++ b/apps/updatenotification/l10n/da.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} er tilgængelig. Få mere information om hvordan du opdaterer.", + "Update notifications" : "Opdaterings notifikationer", + "Channel updated" : "Kanal opdateret", + "The update server could not be reached since %d days to check for new updates." : "Har ikke været forbundet til opdateringsserveren i %d dage for at tjekke efter nye opdateringer.", + "Please check the Nextcloud and server log files for errors." : "Tjek venligst Nextcloud server log for fejl.", + "Update to %1$s is available." : "Opdatering til %1$s er tilgængelig.", + "Update for %1$s to version %2$s is available." : "Opdatering af %1$s til version %2$s er tilgængelig.", + "Update for {app} to version %s is available." : "Opdatering af {app} til version %s er tilgængelig.", "Open updater" : "Åbn for opdatering", - "Your version is up to date." : "Du har seneste version.", + "The update check is not yet finished. Please refresh the page." : "Opdateringstjek er ikke færdigt. Genindlæs venligst siden.", "A non-default update server is in use to be checked for updates:" : "En ikke standard opdateringsserver bliver brugt for at tjekke efter opdateringer:", "Update channel:" : "Opdatér kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan altid opdatere til en nyere version / eksperimentel kanal. Men du kan aldrig nedgradere til en mere stabil kanal", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Kun notifikation for app opdateringer tilgængelige.", "The selected update channel does not support updates of the server." : "Den valgte opdateringskanal understøtter ikke opdatering af serveren.", "Could not start updater, please try the manual update" : "Kunne ikke starte opdateringen, prøv venligst med en manual opdatering", - "Update notifications" : "Opdaterings notifikationer", - "Channel updated" : "Kanal opdateret", - "The update server could not be reached since %d days to check for new updates." : "Har ikke været forbundet til opdateringsserveren i %d dage for at tjekke efter nye opdateringer.", - "Please check the Nextcloud and server log files for errors." : "Tjek venligst Nextcloud server log for fejl.", - "Update to %1$s is available." : "Opdatering til %1$s er tilgængelig.", - "Update for %1$s to version %2$s is available." : "Opdatering af %1$s til version %2$s er tilgængelig.", - "Update for {app} to version %s is available." : "Opdatering af {app} til version %s er tilgængelig.", "A new version is available: %s" : "Der er en ny version tligængelig: %s", "Download now" : "Hent nu", + "Your version is up to date." : "Du har seneste version.", "Checked on %s" : "Tjekket per %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte kanal lave dedikerede notifikationer for serveren ligegyldige.", - "The update check is not yet finished. Please refresh the page." : "Opdateringstjek er ikke færdigt. Genindlæs venligst siden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte kanal lave dedikerede notifikationer for serveren ligegyldige." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js index 907f95260a4..4723498b198 100644 --- a/apps/updatenotification/l10n/de.js +++ b/apps/updatenotification/l10n/de.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", + "Update notifications" : "Update-Benachrichtigungen", + "Channel updated" : "Kanal aktualisiert", + "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", + "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", + "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", + "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", + "Update notification" : "Aktualisierungs-Benachrichtigung", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "Apps with available updates" : "Für diese Apps gibt es Aktualisierungen", "Open updater" : "Updater öffnen", - "Your version is up to date." : "Deine Version ist aktuell.", + "What's new?" : "Was ist neu?", + "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Es kann immer auf eine neuere Version / experimentellen Kanal aktualisiert werden. Allerdings kann kein Downgrade auf einen stabileren Kanal durchgeführt werden.", @@ -22,21 +32,13 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>Produktion</strong> bietet immer die neuesten Patch-Stände an, jedoch nicht sofort die nächste Hauptversion. Diese Aktualisierung erfolgt normalerweise nach der zweiten kleineren Aktualisierung (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stabil</strong> ist die aktuellste stabile Version. Die stabile Version ist für den normalen Gebrauch gedacht und wird jeweils auf die aktuelle Hauptversion aktualisiert.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>Beta</strong> bietet eine Vorabversion an und dient zum Testen von neuen Funktionen. Nicht für den Einsatz in Produktivumgebungen geeignet.", + "View changelog" : "Liste der Änderungen anschauen", "Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuche ein manuelles Update", - "Update notifications" : "Update-Benachrichtigungen", - "Channel updated" : "Kanal aktualisiert", - "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", - "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", - "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", - "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", - "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", - "Update notification" : "Aktualisierungs-Benachrichtigung", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Deine installierte Version wird nicht mehr unterstützt. Bitte aktualisiere baldmöglichst auf eine unterstützte Version.", "Download now" : "Jetzt herunterladen", + "Your version is up to date." : "Deine Version ist aktuell.", "Checked on %s" : "Geprüft am %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.", - "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json index da1dc9a429f..8c14d616aef 100644 --- a/apps/updatenotification/l10n/de.json +++ b/apps/updatenotification/l10n/de.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", + "Update notifications" : "Update-Benachrichtigungen", + "Channel updated" : "Kanal aktualisiert", + "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", + "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", + "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", + "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", + "Update notification" : "Aktualisierungs-Benachrichtigung", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "Apps with available updates" : "Für diese Apps gibt es Aktualisierungen", "Open updater" : "Updater öffnen", - "Your version is up to date." : "Deine Version ist aktuell.", + "What's new?" : "Was ist neu?", + "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Es kann immer auf eine neuere Version / experimentellen Kanal aktualisiert werden. Allerdings kann kein Downgrade auf einen stabileren Kanal durchgeführt werden.", @@ -20,21 +30,13 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>Produktion</strong> bietet immer die neuesten Patch-Stände an, jedoch nicht sofort die nächste Hauptversion. Diese Aktualisierung erfolgt normalerweise nach der zweiten kleineren Aktualisierung (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stabil</strong> ist die aktuellste stabile Version. Die stabile Version ist für den normalen Gebrauch gedacht und wird jeweils auf die aktuelle Hauptversion aktualisiert.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>Beta</strong> bietet eine Vorabversion an und dient zum Testen von neuen Funktionen. Nicht für den Einsatz in Produktivumgebungen geeignet.", + "View changelog" : "Liste der Änderungen anschauen", "Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuche ein manuelles Update", - "Update notifications" : "Update-Benachrichtigungen", - "Channel updated" : "Kanal aktualisiert", - "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", - "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", - "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", - "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", - "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", - "Update notification" : "Aktualisierungs-Benachrichtigung", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Deine installierte Version wird nicht mehr unterstützt. Bitte aktualisiere baldmöglichst auf eine unterstützte Version.", "Download now" : "Jetzt herunterladen", + "Your version is up to date." : "Deine Version ist aktuell.", "Checked on %s" : "Geprüft am %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.", - "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js index d86fd30cb0e..9cad901b227 100644 --- a/apps/updatenotification/l10n/de_DE.js +++ b/apps/updatenotification/l10n/de_DE.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", + "Update notifications" : "Update-Benachrichtigungen", + "Channel updated" : "Kanal aktualisiert", + "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", + "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", + "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", + "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", + "Update notification" : "Aktualisierungs-Benachrichtigung", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "Apps with available updates" : "Für diese Apps gibt es Aktualisierungen", "Open updater" : "Updater öffnen", - "Your version is up to date." : "Ihre Version ist aktuell.", + "What's new?" : "Was ist neu?", + "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sie können immer auf eine neuere Version / experimentellen Kanal updaten, aber kein Downgrade auf einen stabileren Kanal durchführen.", @@ -22,21 +32,13 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>Produktion</strong> bietet immer die neuesten Patch-Stände an, jedoch nicht sofort die nächste Hauptversion. Diese Aktualisierung erfolgt normalerweise nach der zweiten kleineren Aktualisierung (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stabil</strong> ist die aktuellste stabile Version. Die stabile Version ist für den normalen Gebrauch gedacht und wird jeweils auf die aktuelle Hauptversion aktualisiert.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>Beta</strong> bietet eine Vorabversion an und dient zum Testen von neuen Funktionen. Nicht für den Einsatz in Produktivumgebungen geeignet.", + "View changelog" : "Liste der Änderungen anschauen", "Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuchen Sie ein manuelles Update", - "Update notifications" : "Update-Benachrichtigungen", - "Channel updated" : "Kanal aktualisiert", - "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", - "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", - "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", - "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", - "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", - "Update notification" : "Aktualisierungs-Benachrichtigung", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Ihre installierte Version wird nicht mehr unterstützt. Bitte aktualisieren Sie baldmöglichst auf eine unterstützte Version.", "Download now" : "Jetzt herunterladen", + "Your version is up to date." : "Ihre Version ist aktuell.", "Checked on %s" : "Überprüft am %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.", - "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json index 821fa0a62c8..7d9fc6ef28b 100644 --- a/apps/updatenotification/l10n/de_DE.json +++ b/apps/updatenotification/l10n/de_DE.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", + "Update notifications" : "Update-Benachrichtigungen", + "Channel updated" : "Kanal aktualisiert", + "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", + "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", + "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", + "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", + "Update notification" : "Aktualisierungs-Benachrichtigung", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "Apps with available updates" : "Für diese Apps gibt es Aktualisierungen", "Open updater" : "Updater öffnen", - "Your version is up to date." : "Ihre Version ist aktuell.", + "What's new?" : "Was ist neu?", + "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden.", "A non-default update server is in use to be checked for updates:" : "Es wird ein Nicht-Standard-Aktualisierungsserver zum Prüfen auf Aktualisierungen verwendet:", "Update channel:" : "Update-Kanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sie können immer auf eine neuere Version / experimentellen Kanal updaten, aber kein Downgrade auf einen stabileren Kanal durchführen.", @@ -20,21 +30,13 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>Produktion</strong> bietet immer die neuesten Patch-Stände an, jedoch nicht sofort die nächste Hauptversion. Diese Aktualisierung erfolgt normalerweise nach der zweiten kleineren Aktualisierung (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stabil</strong> ist die aktuellste stabile Version. Die stabile Version ist für den normalen Gebrauch gedacht und wird jeweils auf die aktuelle Hauptversion aktualisiert.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>Beta</strong> bietet eine Vorabversion an und dient zum Testen von neuen Funktionen. Nicht für den Einsatz in Produktivumgebungen geeignet.", + "View changelog" : "Liste der Änderungen anschauen", "Could not start updater, please try the manual update" : "Der Updater konnte nicht gestartet werden, bitte versuchen Sie ein manuelles Update", - "Update notifications" : "Update-Benachrichtigungen", - "Channel updated" : "Kanal aktualisiert", - "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", - "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server- und Nextcloud-Logdateien auf Fehler.", - "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", - "Update for %1$s to version %2$s is available." : "Eine Aktualisierung von %1$s auf Version %2$s ist verfügbar.", - "Update for {app} to version %s is available." : "Eine Aktualisierung für {app} auf Version %s ist verfügbar.", - "Update notification" : "Aktualisierungs-Benachrichtigung", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zeigt Benachrichtigungen für Aktualisierungen von Nextcloud an und bietet SSO für den Aktualisierer.", "A new version is available: %s" : "Eine neue Version ist verfügbar: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Ihre installierte Version wird nicht mehr unterstützt. Bitte aktualisieren Sie baldmöglichst auf eine unterstützte Version.", "Download now" : "Jetzt herunterladen", + "Your version is up to date." : "Ihre Version ist aktuell.", "Checked on %s" : "Überprüft am %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.", - "The update check is not yet finished. Please refresh the page." : "Die Aktualisierungsprüfung ist noch nicht abgeschlossen. Bitte die Seite neu laden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/el.js b/apps/updatenotification/l10n/el.js index 0daa702ad34..369638fcf63 100644 --- a/apps/updatenotification/l10n/el.js +++ b/apps/updatenotification/l10n/el.js @@ -2,9 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Η έκδοση {version} είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες για το πως να κάνετε την ενημέρωση.", + "Update notifications" : "Ειδοποιήσεις ενημέρωσης", + "Channel updated" : "Ενημερωμένο κανάλι", + "The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ", + "Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.", + "Update to %1$s is available." : "Είναι διαθέσιμη η ενημέρωση σε %1$s.", + "Update for %1$s to version %2$s is available." : "Είναι διαθέσιμη η ενημέρωση από την έκδοση %1$s στην %2$s.", + "Update for {app} to version %s is available." : "Είναι διαθέσιμη η ενημέρωση της εφαρμογής {app} στην έκδοση %s", "Apps with available updates" : "Εφαρμογές με διαθέσιμες ενημερώσεις", "Open updater" : "Άνοιγμα εφαρμογής ενημέρωσης", - "Your version is up to date." : "Έχετε την τελευταία έκδοση.", "Update channel:" : "Ενημέρωση καναλιού:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Μπορείτε πάντα να περάσετε σε νεότερη / πειραματική έκδοση. Αλλά ποτέ δεν μπορείτε να γυρίσετε πίσω σε πιο σταθερό κανάλι.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Σημειώστε ότι μετά από μια νέα διανομή μπορεί να περάσει λίγος καιρός πριν εμφανιστεί εδώ. Κυκλοφορούμε κατά διαστήματα νέες εκδόσεις στους χρήστες μας και κάποιες φορές παραλείπουμε κάποια έκδοση αν βρεθούν προβλήματα.", @@ -13,15 +19,9 @@ OC.L10N.register( "The selected update channel does not support updates of the server." : "Το συγκεκριμένο κανάλι ενημέρωσης δεν υποστηρίζει ενημερώσεις διακομιστή.", "Checking apps for compatible updates" : "Έλεγχος εφαρμογών για συμβατές ενημερώσεις", "Could not start updater, please try the manual update" : "Δεν μπορεί να εκκινήσει η εφαρμογή ενημέρωσης, παρακαλώ δοκιμάστε την χειροκίνητη ενημέρωση", - "Update notifications" : "Ειδοποιήσεις ενημέρωσης", - "Channel updated" : "Ενημερωμένο κανάλι", - "The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ", - "Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.", - "Update to %1$s is available." : "Είναι διαθέσιμη η ενημέρωση σε %1$s.", - "Update for %1$s to version %2$s is available." : "Είναι διαθέσιμη η ενημέρωση από την έκδοση %1$s στην %2$s.", - "Update for {app} to version %s is available." : "Είναι διαθέσιμη η ενημέρωση της εφαρμογής {app} στην έκδοση %s", "A new version is available: %s" : "Μία νέα έκδοση είναι διαθέσιμη: %s", "Download now" : "Λήψη τώρα", + "Your version is up to date." : "Έχετε την τελευταία έκδοση.", "Checked on %s" : "Ελέγχθηκε στις %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Το συγκεκριμένο κανάλι ενημέρωσης καθιστά παρωχημένες τις ειδοποιήσεις που προορίζονται για τον διακομιστή." }, diff --git a/apps/updatenotification/l10n/el.json b/apps/updatenotification/l10n/el.json index 9c527494e88..3cdfae3ac08 100644 --- a/apps/updatenotification/l10n/el.json +++ b/apps/updatenotification/l10n/el.json @@ -1,8 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "Η έκδοση {version} είναι διαθέσιμη. Δείτε περισσότερες πληροφορίες για το πως να κάνετε την ενημέρωση.", + "Update notifications" : "Ειδοποιήσεις ενημέρωσης", + "Channel updated" : "Ενημερωμένο κανάλι", + "The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ", + "Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.", + "Update to %1$s is available." : "Είναι διαθέσιμη η ενημέρωση σε %1$s.", + "Update for %1$s to version %2$s is available." : "Είναι διαθέσιμη η ενημέρωση από την έκδοση %1$s στην %2$s.", + "Update for {app} to version %s is available." : "Είναι διαθέσιμη η ενημέρωση της εφαρμογής {app} στην έκδοση %s", "Apps with available updates" : "Εφαρμογές με διαθέσιμες ενημερώσεις", "Open updater" : "Άνοιγμα εφαρμογής ενημέρωσης", - "Your version is up to date." : "Έχετε την τελευταία έκδοση.", "Update channel:" : "Ενημέρωση καναλιού:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Μπορείτε πάντα να περάσετε σε νεότερη / πειραματική έκδοση. Αλλά ποτέ δεν μπορείτε να γυρίσετε πίσω σε πιο σταθερό κανάλι.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Σημειώστε ότι μετά από μια νέα διανομή μπορεί να περάσει λίγος καιρός πριν εμφανιστεί εδώ. Κυκλοφορούμε κατά διαστήματα νέες εκδόσεις στους χρήστες μας και κάποιες φορές παραλείπουμε κάποια έκδοση αν βρεθούν προβλήματα.", @@ -11,15 +17,9 @@ "The selected update channel does not support updates of the server." : "Το συγκεκριμένο κανάλι ενημέρωσης δεν υποστηρίζει ενημερώσεις διακομιστή.", "Checking apps for compatible updates" : "Έλεγχος εφαρμογών για συμβατές ενημερώσεις", "Could not start updater, please try the manual update" : "Δεν μπορεί να εκκινήσει η εφαρμογή ενημέρωσης, παρακαλώ δοκιμάστε την χειροκίνητη ενημέρωση", - "Update notifications" : "Ειδοποιήσεις ενημέρωσης", - "Channel updated" : "Ενημερωμένο κανάλι", - "The update server could not be reached since %d days to check for new updates." : "Ο διακομιστής ενημέρωσης δεν ήταν προσβάσιμος από %dημέρες για να ελέγξει για νέες ενημερώσεις. ", - "Please check the Nextcloud and server log files for errors." : "Παρακαλούμε ελέγξτε για σφάλματα στα αρχεία ιστορικού του Nextcloud και του διακομιστή σας.", - "Update to %1$s is available." : "Είναι διαθέσιμη η ενημέρωση σε %1$s.", - "Update for %1$s to version %2$s is available." : "Είναι διαθέσιμη η ενημέρωση από την έκδοση %1$s στην %2$s.", - "Update for {app} to version %s is available." : "Είναι διαθέσιμη η ενημέρωση της εφαρμογής {app} στην έκδοση %s", "A new version is available: %s" : "Μία νέα έκδοση είναι διαθέσιμη: %s", "Download now" : "Λήψη τώρα", + "Your version is up to date." : "Έχετε την τελευταία έκδοση.", "Checked on %s" : "Ελέγχθηκε στις %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Το συγκεκριμένο κανάλι ενημέρωσης καθιστά παρωχημένες τις ειδοποιήσεις που προορίζονται για τον διακομιστή." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/updatenotification/l10n/en_GB.js b/apps/updatenotification/l10n/en_GB.js index bdef11fe037..3ad90398aa0 100644 --- a/apps/updatenotification/l10n/en_GB.js +++ b/apps/updatenotification/l10n/en_GB.js @@ -2,9 +2,18 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} is available. Get more information on how to update.", + "Update notifications" : "Update notifications", + "Channel updated" : "Channel updated", + "The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.", + "Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.", + "Update to %1$s is available." : "Update to %1$s is available.", + "Update for %1$s to version %2$s is available." : "Update for %1$s to version %2$s is available.", + "Update for {app} to version %s is available." : "Update for {app} to version %s is available.", + "Update notification" : "Update notification", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Displays update notifications for Nextcloud and provides the SSO for the updater.", "Apps with available updates" : "Apps with available updates", "Open updater" : "Open updater", - "Your version is up to date." : "Your version is up to date.", + "The update check is not yet finished. Please refresh the page." : "The update check is not yet finished. Please refresh the page.", "A non-default update server is in use to be checked for updates:" : "A non-default update server is in use to be checked for updates:", "Update channel:" : "Update channel:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.", @@ -22,20 +31,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2).", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments.", "Could not start updater, please try the manual update" : "Could not start updater, please try the manual update", - "Update notifications" : "Update notifications", - "Channel updated" : "Channel updated", - "The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.", - "Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.", - "Update to %1$s is available." : "Update to %1$s is available.", - "Update for %1$s to version %2$s is available." : "Update for %1$s to version %2$s is available.", - "Update for {app} to version %s is available." : "Update for {app} to version %s is available.", - "Update notification" : "Update notification", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Displays update notifications for Nextcloud and provides the SSO for the updater.", "A new version is available: %s" : "A new version is available: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible.", "Download now" : "Download now", + "Your version is up to date." : "Your version is up to date.", "Checked on %s" : "Checked on %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "The selected update channel makes dedicated notifications for the server obsolete.", - "The update check is not yet finished. Please refresh the page." : "The update check is not yet finished. Please refresh the page." + "The selected update channel makes dedicated notifications for the server obsolete." : "The selected update channel makes dedicated notifications for the server obsolete." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/en_GB.json b/apps/updatenotification/l10n/en_GB.json index 45a791af154..7c7da884b2d 100644 --- a/apps/updatenotification/l10n/en_GB.json +++ b/apps/updatenotification/l10n/en_GB.json @@ -1,8 +1,17 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} is available. Get more information on how to update.", + "Update notifications" : "Update notifications", + "Channel updated" : "Channel updated", + "The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.", + "Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.", + "Update to %1$s is available." : "Update to %1$s is available.", + "Update for %1$s to version %2$s is available." : "Update for %1$s to version %2$s is available.", + "Update for {app} to version %s is available." : "Update for {app} to version %s is available.", + "Update notification" : "Update notification", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Displays update notifications for Nextcloud and provides the SSO for the updater.", "Apps with available updates" : "Apps with available updates", "Open updater" : "Open updater", - "Your version is up to date." : "Your version is up to date.", + "The update check is not yet finished. Please refresh the page." : "The update check is not yet finished. Please refresh the page.", "A non-default update server is in use to be checked for updates:" : "A non-default update server is in use to be checked for updates:", "Update channel:" : "Update channel:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel.", @@ -20,20 +29,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2).", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments.", "Could not start updater, please try the manual update" : "Could not start updater, please try the manual update", - "Update notifications" : "Update notifications", - "Channel updated" : "Channel updated", - "The update server could not be reached since %d days to check for new updates." : "The update server could not be reached since %d days to check for new updates.", - "Please check the Nextcloud and server log files for errors." : "Please check the Nextcloud and server log files for errors.", - "Update to %1$s is available." : "Update to %1$s is available.", - "Update for %1$s to version %2$s is available." : "Update for %1$s to version %2$s is available.", - "Update for {app} to version %s is available." : "Update for {app} to version %s is available.", - "Update notification" : "Update notification", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Displays update notifications for Nextcloud and provides the SSO for the updater.", "A new version is available: %s" : "A new version is available: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible.", "Download now" : "Download now", + "Your version is up to date." : "Your version is up to date.", "Checked on %s" : "Checked on %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "The selected update channel makes dedicated notifications for the server obsolete.", - "The update check is not yet finished. Please refresh the page." : "The update check is not yet finished. Please refresh the page." + "The selected update channel makes dedicated notifications for the server obsolete." : "The selected update channel makes dedicated notifications for the server obsolete." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es.js b/apps/updatenotification/l10n/es.js index da33107efd6..411be15e2b7 100644 --- a/apps/updatenotification/l10n/es.js +++ b/apps/updatenotification/l10n/es.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "No se ha podido contactar con el servidor de actualizaciones desde hace %d días para comprobar nuevas actualizaciones.", + "Please check the Nextcloud and server log files for errors." : "Por favor, revisa que no haya errores en Nextcloud y en los archivos de registro.", + "Update to %1$s is available." : "La actualización a %1$s está disponible.", + "Update for %1$s to version %2$s is available." : "La actualización de %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización de {app} a la versión %s disponible.", + "Update notification" : "Notificación de actualización", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Muestra notificaciones de actualizaciones para Nexcloud y provee el SSO para el actualizador.", "Apps with available updates" : "Apps con actualizaciones disponibles", "Open updater" : "Abrir el actualizador", - "Your version is up to date." : "Su versión está actualizada.", + "What's new?" : "¿Qué hay de nuevo?", + "The update check is not yet finished. Please refresh the page." : "La comprobación de actuliazaciones no ha finalizado aún. Por favor, recarga la página.", "A non-default update server is in use to be checked for updates:" : "Se está usando un servidor de actualización no estándar para comprobar actualizaciones:", "Update channel:" : "Canal de actualización: ", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre podrás actualizar a la versión más reciente o al canal experimental, pero nunca podrás volver a un canal más estable.", @@ -20,22 +30,15 @@ OC.L10N.register( "<strong>All</strong> apps have an update for this version available" : "<strong>Todas</strong> las apps tienen disponible una actualización para esta versión", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> app no tiene actualización disponible para esta versión.","<strong>%n</strong> apps no tienen actualización disponible para esta versión."], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>production</strong> siempre proporcionará el último nivel de parches, pero no se actualizará a la próxima versión principal de inmediato. Esa actualización generalmente ocurre con la segunda versión menor (x.0.2).", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stable</strong> es la versión estable más reciente. Es adecuada para uso en producción y siempre se actualizará a la última versión principal.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión preliminar solo para probar nuevas características, no para entornos de producción.", + "View changelog" : "Ver registro de cambios", "Could not start updater, please try the manual update" : "No se ha podido iniciar el actualizador. Por favor, prueba a realizar la actualización de forma manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "No se ha podido contactar con el servidor de actualizaciones desde hace %d días para comprobar nuevas actualizaciones.", - "Please check the Nextcloud and server log files for errors." : "Por favor, revisa que no haya errores en Nextcloud y en los archivos de registro.", - "Update to %1$s is available." : "La actualización a %1$s está disponible.", - "Update for %1$s to version %2$s is available." : "La actualización de %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización de {app} a la versión %s disponible.", - "Update notification" : "Notificación de actualización", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Muestra notificaciones de actualizaciones para Nexcloud y provee el SSO para el actualizador.", "A new version is available: %s" : "Hay una nueva versión disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que usas yo no está mantenida. Por favor, asegúrate de actualizar a una versión soportada tan pronto como sea posible.", "Download now" : "Descargar ahora", + "Your version is up to date." : "Su versión está actualizada.", "Checked on %s" : "Comprobado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace obsoletas las notificaciones dedicadas para el servidor.", - "The update check is not yet finished. Please refresh the page." : "La comprobación de actuliazaciones no ha finalizado aún. Por favor, recarga la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace obsoletas las notificaciones dedicadas para el servidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es.json b/apps/updatenotification/l10n/es.json index 9a7159bb3db..e11fe45e025 100644 --- a/apps/updatenotification/l10n/es.json +++ b/apps/updatenotification/l10n/es.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "No se ha podido contactar con el servidor de actualizaciones desde hace %d días para comprobar nuevas actualizaciones.", + "Please check the Nextcloud and server log files for errors." : "Por favor, revisa que no haya errores en Nextcloud y en los archivos de registro.", + "Update to %1$s is available." : "La actualización a %1$s está disponible.", + "Update for %1$s to version %2$s is available." : "La actualización de %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización de {app} a la versión %s disponible.", + "Update notification" : "Notificación de actualización", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Muestra notificaciones de actualizaciones para Nexcloud y provee el SSO para el actualizador.", "Apps with available updates" : "Apps con actualizaciones disponibles", "Open updater" : "Abrir el actualizador", - "Your version is up to date." : "Su versión está actualizada.", + "What's new?" : "¿Qué hay de nuevo?", + "The update check is not yet finished. Please refresh the page." : "La comprobación de actuliazaciones no ha finalizado aún. Por favor, recarga la página.", "A non-default update server is in use to be checked for updates:" : "Se está usando un servidor de actualización no estándar para comprobar actualizaciones:", "Update channel:" : "Canal de actualización: ", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre podrás actualizar a la versión más reciente o al canal experimental, pero nunca podrás volver a un canal más estable.", @@ -18,22 +28,15 @@ "<strong>All</strong> apps have an update for this version available" : "<strong>Todas</strong> las apps tienen disponible una actualización para esta versión", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> app no tiene actualización disponible para esta versión.","<strong>%n</strong> apps no tienen actualización disponible para esta versión."], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>production</strong> siempre proporcionará el último nivel de parches, pero no se actualizará a la próxima versión principal de inmediato. Esa actualización generalmente ocurre con la segunda versión menor (x.0.2).", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stable</strong> es la versión estable más reciente. Es adecuada para uso en producción y siempre se actualizará a la última versión principal.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión preliminar solo para probar nuevas características, no para entornos de producción.", + "View changelog" : "Ver registro de cambios", "Could not start updater, please try the manual update" : "No se ha podido iniciar el actualizador. Por favor, prueba a realizar la actualización de forma manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "No se ha podido contactar con el servidor de actualizaciones desde hace %d días para comprobar nuevas actualizaciones.", - "Please check the Nextcloud and server log files for errors." : "Por favor, revisa que no haya errores en Nextcloud y en los archivos de registro.", - "Update to %1$s is available." : "La actualización a %1$s está disponible.", - "Update for %1$s to version %2$s is available." : "La actualización de %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización de {app} a la versión %s disponible.", - "Update notification" : "Notificación de actualización", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Muestra notificaciones de actualizaciones para Nexcloud y provee el SSO para el actualizador.", "A new version is available: %s" : "Hay una nueva versión disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que usas yo no está mantenida. Por favor, asegúrate de actualizar a una versión soportada tan pronto como sea posible.", "Download now" : "Descargar ahora", + "Your version is up to date." : "Su versión está actualizada.", "Checked on %s" : "Comprobado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace obsoletas las notificaciones dedicadas para el servidor.", - "The update check is not yet finished. Please refresh the page." : "La comprobación de actuliazaciones no ha finalizado aún. Por favor, recarga la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace obsoletas las notificaciones dedicadas para el servidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_419.js b/apps/updatenotification/l10n/es_419.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_419.js +++ b/apps/updatenotification/l10n/es_419.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_419.json b/apps/updatenotification/l10n/es_419.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_419.json +++ b/apps/updatenotification/l10n/es_419.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_AR.js b/apps/updatenotification/l10n/es_AR.js index df35135b4d3..bd30efc5896 100644 --- a/apps/updatenotification/l10n/es_AR.js +++ b/apps/updatenotification/l10n/es_AR.js @@ -2,14 +2,6 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} no está disponible. Obtenga más información acerca de cómo actualizar. ", - "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Su verisón está actualizada.", - "Update channel:" : "Actualizar el canal:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puede actualizar a una versión más reciente / canal experimental. Sinembargo nunca podrá desactualizar la versión a un canal más estable. ", - "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", - "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", - "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", - "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual", "Update notifications" : "Actualizar notificaciones", "Channel updated" : "Canal actualizado", "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", @@ -17,8 +9,16 @@ OC.L10N.register( "Update to %1$s is available." : "La actualización a %1$s está disponible. ", "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Open updater" : "Abrir actualizador", + "Update channel:" : "Actualizar el canal:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puede actualizar a una versión más reciente / canal experimental. Sinembargo nunca podrá desactualizar la versión a un canal más estable. ", + "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", + "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", + "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", + "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Su verisón está actualizada.", "Checked on %s" : "Verificado el %s", "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, diff --git a/apps/updatenotification/l10n/es_AR.json b/apps/updatenotification/l10n/es_AR.json index 7c707f5ddae..44370d6c47e 100644 --- a/apps/updatenotification/l10n/es_AR.json +++ b/apps/updatenotification/l10n/es_AR.json @@ -1,13 +1,5 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} no está disponible. Obtenga más información acerca de cómo actualizar. ", - "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Su verisón está actualizada.", - "Update channel:" : "Actualizar el canal:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puede actualizar a una versión más reciente / canal experimental. Sinembargo nunca podrá desactualizar la versión a un canal más estable. ", - "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", - "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", - "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", - "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual", "Update notifications" : "Actualizar notificaciones", "Channel updated" : "Canal actualizado", "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", @@ -15,8 +7,16 @@ "Update to %1$s is available." : "La actualización a %1$s está disponible. ", "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Open updater" : "Abrir actualizador", + "Update channel:" : "Actualizar el canal:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puede actualizar a una versión más reciente / canal experimental. Sinembargo nunca podrá desactualizar la versión a un canal más estable. ", + "Notify members of the following groups about available updates:" : "Notificar a los miembros de los siguientes grupos de las actualizaciones disponibles:", + "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", + "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", + "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, favor de intentar la actualización manual", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Su verisón está actualizada.", "Checked on %s" : "Verificado el %s", "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/updatenotification/l10n/es_CL.js b/apps/updatenotification/l10n/es_CL.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_CL.js +++ b/apps/updatenotification/l10n/es_CL.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_CL.json b/apps/updatenotification/l10n/es_CL.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_CL.json +++ b/apps/updatenotification/l10n/es_CL.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_CO.js b/apps/updatenotification/l10n/es_CO.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_CO.js +++ b/apps/updatenotification/l10n/es_CO.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_CO.json b/apps/updatenotification/l10n/es_CO.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_CO.json +++ b/apps/updatenotification/l10n/es_CO.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_CR.js b/apps/updatenotification/l10n/es_CR.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_CR.js +++ b/apps/updatenotification/l10n/es_CR.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_CR.json b/apps/updatenotification/l10n/es_CR.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_CR.json +++ b/apps/updatenotification/l10n/es_CR.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_DO.js b/apps/updatenotification/l10n/es_DO.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_DO.js +++ b/apps/updatenotification/l10n/es_DO.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_DO.json b/apps/updatenotification/l10n/es_DO.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_DO.json +++ b/apps/updatenotification/l10n/es_DO.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_EC.js b/apps/updatenotification/l10n/es_EC.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_EC.js +++ b/apps/updatenotification/l10n/es_EC.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_EC.json b/apps/updatenotification/l10n/es_EC.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_EC.json +++ b/apps/updatenotification/l10n/es_EC.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_GT.js b/apps/updatenotification/l10n/es_GT.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_GT.js +++ b/apps/updatenotification/l10n/es_GT.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_GT.json b/apps/updatenotification/l10n/es_GT.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_GT.json +++ b/apps/updatenotification/l10n/es_GT.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_HN.js b/apps/updatenotification/l10n/es_HN.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_HN.js +++ b/apps/updatenotification/l10n/es_HN.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_HN.json b/apps/updatenotification/l10n/es_HN.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_HN.json +++ b/apps/updatenotification/l10n/es_HN.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_MX.js b/apps/updatenotification/l10n/es_MX.js index 465bc4d0bc9..cb57749d79f 100644 --- a/apps/updatenotification/l10n/es_MX.js +++ b/apps/updatenotification/l10n/es_MX.js @@ -2,9 +2,18 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Despliega las notifiaciones de actualización para Nextcloud y provee el SSO para el actualizador.", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,20 +31,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Despliega las notifiaciones de actualización para Nextcloud y provee el SSO para el actualizador.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_MX.json b/apps/updatenotification/l10n/es_MX.json index 3a30a2bb08b..851dfae9373 100644 --- a/apps/updatenotification/l10n/es_MX.json +++ b/apps/updatenotification/l10n/es_MX.json @@ -1,8 +1,17 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Despliega las notifiaciones de actualización para Nextcloud y provee el SSO para el actualizador.", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,20 +29,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Despliega las notifiaciones de actualización para Nextcloud y provee el SSO para el actualizador.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_NI.js b/apps/updatenotification/l10n/es_NI.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_NI.js +++ b/apps/updatenotification/l10n/es_NI.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_NI.json b/apps/updatenotification/l10n/es_NI.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_NI.json +++ b/apps/updatenotification/l10n/es_NI.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_PA.js b/apps/updatenotification/l10n/es_PA.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_PA.js +++ b/apps/updatenotification/l10n/es_PA.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_PA.json b/apps/updatenotification/l10n/es_PA.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_PA.json +++ b/apps/updatenotification/l10n/es_PA.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_PE.js b/apps/updatenotification/l10n/es_PE.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_PE.js +++ b/apps/updatenotification/l10n/es_PE.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_PE.json b/apps/updatenotification/l10n/es_PE.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_PE.json +++ b/apps/updatenotification/l10n/es_PE.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_PR.js b/apps/updatenotification/l10n/es_PR.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_PR.js +++ b/apps/updatenotification/l10n/es_PR.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_PR.json b/apps/updatenotification/l10n/es_PR.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_PR.json +++ b/apps/updatenotification/l10n/es_PR.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_PY.js b/apps/updatenotification/l10n/es_PY.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_PY.js +++ b/apps/updatenotification/l10n/es_PY.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_PY.json b/apps/updatenotification/l10n/es_PY.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_PY.json +++ b/apps/updatenotification/l10n/es_PY.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_SV.js b/apps/updatenotification/l10n/es_SV.js index c409707c5eb..8159e5c1d30 100644 --- a/apps/updatenotification/l10n/es_SV.js +++ b/apps/updatenotification/l10n/es_SV.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_SV.json b/apps/updatenotification/l10n/es_SV.json index 6ad8e7688f3..ca21060da53 100644 --- a/apps/updatenotification/l10n/es_SV.json +++ b/apps/updatenotification/l10n/es_SV.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", + "Update notification" : "Notificación de actualización", "Apps with available updates" : "Aplicaciones con actualizaciones disponibles", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>producción</strong> siempre contará el más reciente nivel de parches, pero no actualizará a la siguiente liberación mayor inmediatamente. Esta actualización siempre sucede en la segunda liberación menor (x.0.2)", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> es una versión de pre-liberación sólo para probar nuevas características, no para ambientes de producción. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", - "Update notification" : "Notificación de actualización", "A new version is available: %s" : "Una nueva versión está disponible: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versión que estas corriendo ya no cuenta con mantenimiento. Por favor asegurate de actualizar a una versión soportada lo antes posible. ", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/es_UY.js b/apps/updatenotification/l10n/es_UY.js index c5f27640c95..8dc3ac6e4ca 100644 --- a/apps/updatenotification/l10n/es_UY.js +++ b/apps/updatenotification/l10n/es_UY.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/es_UY.json b/apps/updatenotification/l10n/es_UY.json index 35a0f910f75..a1efcdff4c0 100644 --- a/apps/updatenotification/l10n/es_UY.json +++ b/apps/updatenotification/l10n/es_UY.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponible. Obten más información de cómo actualizar. ", + "Update notifications" : "Actualizar notificaciones", + "Channel updated" : "Canal actualizado", + "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", + "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", + "Update to %1$s is available." : "La actualización a %1$s está disponible. ", + "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", + "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "Open updater" : "Abrir actualizador", - "Your version is up to date." : "Tu verisón está actualizada.", + "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página.", "A non-default update server is in use to be checked for updates:" : "Un servidor de actualizaciones no-predeterminado está en uso para ser verficiado por actualizaciones:", "Update channel:" : "Actualizar el canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre puedes actualizar a una versión más reciente / canal experimental. Sin embargo nunca podrás desactualizar la versión a un canal más estable. ", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Sólo se tienen disponibles notificaciones de actualizaciones de la aplicación.", "The selected update channel does not support updates of the server." : "El canal de actualización seleccionado no soporta actualizaciones del servidor. ", "Could not start updater, please try the manual update" : "No fue posible iniciar el actualizador, por favor intenta la actualización manual", - "Update notifications" : "Actualizar notificaciones", - "Channel updated" : "Canal actualizado", - "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no ha podido ser alcanzado desde %d días para verificar actualizaciones. ", - "Please check the Nextcloud and server log files for errors." : "Por favor verifica los archivos de bitacoras de Nextcloud y del servidor por errores. ", - "Update to %1$s is available." : "La actualización a %1$s está disponible. ", - "Update for %1$s to version %2$s is available." : "La actualización para %1$s a la versión %2$s está disponible.", - "Update for {app} to version %s is available." : "Actualización para {app} a la versión %s está disponible.", "A new version is available: %s" : "Una nueva versión está disponible: %s", "Download now" : "Descargar ahora", + "Your version is up to date." : "Tu verisón está actualizada.", "Checked on %s" : "Verificado el %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. ", - "The update check is not yet finished. Please refresh the page." : "La verificación de actualización aún no termina. Por favor actualiza la página." + "The selected update channel makes dedicated notifications for the server obsolete." : "El canal de actualización seleccionado hace que las notificaciones dedicadas al servidor sean obsoletas. " },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/fi.js b/apps/updatenotification/l10n/fi.js index 7b3b8098573..e2dccc6b6b1 100644 --- a/apps/updatenotification/l10n/fi.js +++ b/apps/updatenotification/l10n/fi.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.", + "Update notifications" : "Päivitysilmoitukset", + "Channel updated" : "Päivityskanava päivitetty", + "The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei ole tavoitettu %d päivään; uusia päivityksiä ei voida tarkistaa.", + "Please check the Nextcloud and server log files for errors." : "Tarkista Nextcloud- ja palvelinlokitiedostot virheiden osalta.", + "Update to %1$s is available." : "Kohteen %1$s päivitys on saatavilla.", + "Update for %1$s to version %2$s is available." : "Kohteen %1$s päivitys versioon %2$s on saatavilla.", + "Update for {app} to version %s is available." : "Sovelluksen {app} päivitys versioon %s on saatavilla.", + "Update notification" : "Päivitysilmoitus", "Apps with available updates" : "Sovellukset, joihin saatavilla päivityksiä", "Open updater" : "Avaa päivittäjä", - "Your version is up to date." : "Versiosi on ajan tasalla.", + "The update check is not yet finished. Please refresh the page." : "Päivitystarkistus ei ole vielä valmis. Päivitä sivu.", "Update channel:" : "Päivityskanava:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Voit aina päivittää uudempaan versioon tai kokeellisen jakelukanavan versioon. Et voi kuitenkaan palata aiempaan, vakaan julkaisukanavan versioon.", "Notify members of the following groups about available updates:" : "Ilmoita seuraavien ryhmien jäsenille saatavilla olevista päivityksistä:", @@ -13,18 +21,10 @@ OC.L10N.register( "A new version is available: <strong>{newVersionString}</strong>" : "Uusi versio on saatavilla: <strong>{newVersionString}</strong>", "Checked on {lastCheckedDate}" : "Tarkistettu {lastCheckedDate}", "Could not start updater, please try the manual update" : "Ei voitu aloittaa päivitystä, kokeile päivittämistä manuaalisesti", - "Update notifications" : "Päivitysilmoitukset", - "Channel updated" : "Päivityskanava päivitetty", - "The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei ole tavoitettu %d päivään; uusia päivityksiä ei voida tarkistaa.", - "Please check the Nextcloud and server log files for errors." : "Tarkista Nextcloud- ja palvelinlokitiedostot virheiden osalta.", - "Update to %1$s is available." : "Kohteen %1$s päivitys on saatavilla.", - "Update for %1$s to version %2$s is available." : "Kohteen %1$s päivitys versioon %2$s on saatavilla.", - "Update for {app} to version %s is available." : "Sovelluksen {app} päivitys versioon %s on saatavilla.", - "Update notification" : "Päivitysilmoitus", "A new version is available: %s" : "Uusi versio on saatavilla: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Käyttämäsi versio ei ole enää tuettu. Varmista, että päivität tuettuun versioon mahdollisimman pian.", "Download now" : "Lataa heti", - "Checked on %s" : "Tarkistettu %s", - "The update check is not yet finished. Please refresh the page." : "Päivitystarkistus ei ole vielä valmis. Päivitä sivu." + "Your version is up to date." : "Versiosi on ajan tasalla.", + "Checked on %s" : "Tarkistettu %s" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/fi.json b/apps/updatenotification/l10n/fi.json index 3411ddb6e36..49e37899442 100644 --- a/apps/updatenotification/l10n/fi.json +++ b/apps/updatenotification/l10n/fi.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} on saatavilla. Tarjolla on lisätietoja päivittämisestä.", + "Update notifications" : "Päivitysilmoitukset", + "Channel updated" : "Päivityskanava päivitetty", + "The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei ole tavoitettu %d päivään; uusia päivityksiä ei voida tarkistaa.", + "Please check the Nextcloud and server log files for errors." : "Tarkista Nextcloud- ja palvelinlokitiedostot virheiden osalta.", + "Update to %1$s is available." : "Kohteen %1$s päivitys on saatavilla.", + "Update for %1$s to version %2$s is available." : "Kohteen %1$s päivitys versioon %2$s on saatavilla.", + "Update for {app} to version %s is available." : "Sovelluksen {app} päivitys versioon %s on saatavilla.", + "Update notification" : "Päivitysilmoitus", "Apps with available updates" : "Sovellukset, joihin saatavilla päivityksiä", "Open updater" : "Avaa päivittäjä", - "Your version is up to date." : "Versiosi on ajan tasalla.", + "The update check is not yet finished. Please refresh the page." : "Päivitystarkistus ei ole vielä valmis. Päivitä sivu.", "Update channel:" : "Päivityskanava:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Voit aina päivittää uudempaan versioon tai kokeellisen jakelukanavan versioon. Et voi kuitenkaan palata aiempaan, vakaan julkaisukanavan versioon.", "Notify members of the following groups about available updates:" : "Ilmoita seuraavien ryhmien jäsenille saatavilla olevista päivityksistä:", @@ -11,18 +19,10 @@ "A new version is available: <strong>{newVersionString}</strong>" : "Uusi versio on saatavilla: <strong>{newVersionString}</strong>", "Checked on {lastCheckedDate}" : "Tarkistettu {lastCheckedDate}", "Could not start updater, please try the manual update" : "Ei voitu aloittaa päivitystä, kokeile päivittämistä manuaalisesti", - "Update notifications" : "Päivitysilmoitukset", - "Channel updated" : "Päivityskanava päivitetty", - "The update server could not be reached since %d days to check for new updates." : "Päivityspalvelinta ei ole tavoitettu %d päivään; uusia päivityksiä ei voida tarkistaa.", - "Please check the Nextcloud and server log files for errors." : "Tarkista Nextcloud- ja palvelinlokitiedostot virheiden osalta.", - "Update to %1$s is available." : "Kohteen %1$s päivitys on saatavilla.", - "Update for %1$s to version %2$s is available." : "Kohteen %1$s päivitys versioon %2$s on saatavilla.", - "Update for {app} to version %s is available." : "Sovelluksen {app} päivitys versioon %s on saatavilla.", - "Update notification" : "Päivitysilmoitus", "A new version is available: %s" : "Uusi versio on saatavilla: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Käyttämäsi versio ei ole enää tuettu. Varmista, että päivität tuettuun versioon mahdollisimman pian.", "Download now" : "Lataa heti", - "Checked on %s" : "Tarkistettu %s", - "The update check is not yet finished. Please refresh the page." : "Päivitystarkistus ei ole vielä valmis. Päivitä sivu." + "Your version is up to date." : "Versiosi on ajan tasalla.", + "Checked on %s" : "Tarkistettu %s" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js index 61e7141d74f..806ebbb6404 100644 --- a/apps/updatenotification/l10n/fr.js +++ b/apps/updatenotification/l10n/fr.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.", + "Update notifications" : "Notifications de mises à jour", + "Channel updated" : "Canal de mise à jour modifié", + "The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.", + "Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.", + "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", + "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", + "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", + "Update notification" : "Notification mise à jour", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Affiche les notifications de mise à jour pour Nextcloud et fournit l'authentification unique SSO pour le programme de mise à jour.", "Apps with available updates" : "Applications avec des mises à jour disponibles", "Open updater" : "Ouvrir le système de mise à jour", - "Your version is up to date." : "Votre version est à jour.", + "What's new?" : "Quoi de neuf ?", + "The update check is not yet finished. Please refresh the page." : "La vérification de la mise-à-jour n'est pas encore terminée. Veuillez rafraîchir la page.", "A non-default update server is in use to be checked for updates:" : "Un serveur spécifique est actuellement configuré pour la vérification des mises-à-jour :", "Update channel:" : "Canal de mise à jour :", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vous pouvez à tout moment mettre à jour votre instance Nextcloud vers une version plus récente ou un canal expérimental. Vous ne pourrez cependant jamais revenir à une version antérieure en sélectionnant un canal plus stable.", @@ -20,22 +30,15 @@ OC.L10N.register( "<strong>All</strong> apps have an update for this version available" : "<strong>Toutes</strong> les applications ont une mise à jour disponible pour cette version", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> application n'a pas de mise à jour disponible pour cette version","<strong>%n</strong> applications n'ont pas de mise à jour disponible pour cette version"], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>production</strong> fournira toujours le correctif le plus récent, mais ne mettra pas immédiatement à jour vers la version majeure suivante. Cette mise à jour se produit généralement avec la deuxième version mineure (x.0.2).", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stable</strong> est la version stable la plus récente. Elle est adapté pour une utilisation régulière et sera toujours mise à jour vers la dernière version majeure.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> est une version préliminaire utilisée seulement pour tester les nouvelles fonctionnalités, n'est pas adaptée dans un environnement de production.", + "View changelog" : "Voir le journal des modifications", "Could not start updater, please try the manual update" : "Impossible de démarrer le système de mise à jour, veuillez essayer de mettre à jour manuellement", - "Update notifications" : "Notifications de mises à jour", - "Channel updated" : "Canal de mise à jour modifié", - "The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.", - "Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.", - "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", - "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", - "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", - "Update notification" : "Notification mise à jour", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Affiche les notifications de mise à jour pour Nextcloud et fournit l'authentification unique SSO pour le programme de mise à jour.", "A new version is available: %s" : "Une nouvelle version est disponible : %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La version que vous utilisez n'est plus maintenue. Assurez vous d'effectuer une mise à jour vers une version prise en charge dès que possible.", "Download now" : "Télécharger maintenant", + "Your version is up to date." : "Votre version est à jour.", "Checked on %s" : "Vérifié le %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur.", - "The update check is not yet finished. Please refresh the page." : "La vérification de la mise-à-jour n'est pas encore terminée. Veuillez rafraîchir la page." + "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json index 9ca0a5e2e85..822d052ef4e 100644 --- a/apps/updatenotification/l10n/fr.json +++ b/apps/updatenotification/l10n/fr.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.", + "Update notifications" : "Notifications de mises à jour", + "Channel updated" : "Canal de mise à jour modifié", + "The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.", + "Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.", + "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", + "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", + "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", + "Update notification" : "Notification mise à jour", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Affiche les notifications de mise à jour pour Nextcloud et fournit l'authentification unique SSO pour le programme de mise à jour.", "Apps with available updates" : "Applications avec des mises à jour disponibles", "Open updater" : "Ouvrir le système de mise à jour", - "Your version is up to date." : "Votre version est à jour.", + "What's new?" : "Quoi de neuf ?", + "The update check is not yet finished. Please refresh the page." : "La vérification de la mise-à-jour n'est pas encore terminée. Veuillez rafraîchir la page.", "A non-default update server is in use to be checked for updates:" : "Un serveur spécifique est actuellement configuré pour la vérification des mises-à-jour :", "Update channel:" : "Canal de mise à jour :", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vous pouvez à tout moment mettre à jour votre instance Nextcloud vers une version plus récente ou un canal expérimental. Vous ne pourrez cependant jamais revenir à une version antérieure en sélectionnant un canal plus stable.", @@ -18,22 +28,15 @@ "<strong>All</strong> apps have an update for this version available" : "<strong>Toutes</strong> les applications ont une mise à jour disponible pour cette version", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> application n'a pas de mise à jour disponible pour cette version","<strong>%n</strong> applications n'ont pas de mise à jour disponible pour cette version"], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>production</strong> fournira toujours le correctif le plus récent, mais ne mettra pas immédiatement à jour vers la version majeure suivante. Cette mise à jour se produit généralement avec la deuxième version mineure (x.0.2).", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stable</strong> est la version stable la plus récente. Elle est adapté pour une utilisation régulière et sera toujours mise à jour vers la dernière version majeure.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> est une version préliminaire utilisée seulement pour tester les nouvelles fonctionnalités, n'est pas adaptée dans un environnement de production.", + "View changelog" : "Voir le journal des modifications", "Could not start updater, please try the manual update" : "Impossible de démarrer le système de mise à jour, veuillez essayer de mettre à jour manuellement", - "Update notifications" : "Notifications de mises à jour", - "Channel updated" : "Canal de mise à jour modifié", - "The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.", - "Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.", - "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", - "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", - "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", - "Update notification" : "Notification mise à jour", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Affiche les notifications de mise à jour pour Nextcloud et fournit l'authentification unique SSO pour le programme de mise à jour.", "A new version is available: %s" : "Une nouvelle version est disponible : %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La version que vous utilisez n'est plus maintenue. Assurez vous d'effectuer une mise à jour vers une version prise en charge dès que possible.", "Download now" : "Télécharger maintenant", + "Your version is up to date." : "Votre version est à jour.", "Checked on %s" : "Vérifié le %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur.", - "The update check is not yet finished. Please refresh the page." : "La vérification de la mise-à-jour n'est pas encore terminée. Veuillez rafraîchir la page." + "The selected update channel makes dedicated notifications for the server obsolete." : "Le canal de mise à jour sélectionné rend obsolètes les notifications dédiées au serveur." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/gl.js b/apps/updatenotification/l10n/gl.js index 3b9f1091dbc..4004a543b23 100644 --- a/apps/updatenotification/l10n/gl.js +++ b/apps/updatenotification/l10n/gl.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está dispoñíbel. Obteña máis información sobre como actualizar.", + "Update notifications" : "Actualizar as notificacións", + "Channel updated" : "Canle actualizada", + "The update server could not be reached since %d days to check for new updates." : "Non foi posíbel conectar co servidor de actualizacións dende vai %d días para comprobar se hai novas actualizacións.", + "Please check the Nextcloud and server log files for errors." : "Por favor comprobe os ficheiros de rexistro de Nextcloud e do servidor na procura de erros.", + "Update to %1$s is available." : "Está dispoñíbel unha actualización para %1$s.", + "Update for %1$s to version %2$s is available." : "Está dispoñíbel unha actualización para %1$s á versión %2$s.", + "Update for {app} to version %s is available." : "Está dispoñíbel unha actualización para {app} á versión %s.", "Open updater" : "Abrir o actualizador", - "Your version is up to date." : "A súa versión está actualizada.", + "The update check is not yet finished. Please refresh the page." : "A comprobación de actualización aínda non rematou. Por favor recargue a páxina.", "A non-default update server is in use to be checked for updates:" : "Está en uso un servidor de actualizacións que non é o predeterminado para comprobar as actualizacións:", "Update channel:" : "Canle de actualización:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre poderá actualizar á unha versión máis nova ou á canle experimental, mais nunca poderá voltar atrás a unha canle máis estábel.", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Só están dispoñíbeis as notificacións para actualizacións de aplicacións.", "The selected update channel does not support updates of the server." : "A canle de actualización seleccionada non admite actualizacións do servidor.", "Could not start updater, please try the manual update" : "Non foi posíbel iniciar o actualizador, por favor tente a actualización manual", - "Update notifications" : "Actualizar as notificacións", - "Channel updated" : "Canle actualizada", - "The update server could not be reached since %d days to check for new updates." : "Non foi posíbel conectar co servidor de actualizacións dende vai %d días para comprobar se hai novas actualizacións.", - "Please check the Nextcloud and server log files for errors." : "Por favor comprobe os ficheiros de rexistro de Nextcloud e do servidor na procura de erros.", - "Update to %1$s is available." : "Está dispoñíbel unha actualización para %1$s.", - "Update for %1$s to version %2$s is available." : "Está dispoñíbel unha actualización para %1$s á versión %2$s.", - "Update for {app} to version %s is available." : "Está dispoñíbel unha actualización para {app} á versión %s.", "A new version is available: %s" : "Hai dispoñíbel unha nova versión: %s", "Download now" : "Descargar agora", + "Your version is up to date." : "A súa versión está actualizada.", "Checked on %s" : "Comprobado en %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "A canle de actualización seleccionada fai obsoletas as notificacións dedicadas para o servidor.", - "The update check is not yet finished. Please refresh the page." : "A comprobación de actualización aínda non rematou. Por favor recargue a páxina." + "The selected update channel makes dedicated notifications for the server obsolete." : "A canle de actualización seleccionada fai obsoletas as notificacións dedicadas para o servidor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/gl.json b/apps/updatenotification/l10n/gl.json index 1db20f22d93..94b988ad5d5 100644 --- a/apps/updatenotification/l10n/gl.json +++ b/apps/updatenotification/l10n/gl.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está dispoñíbel. Obteña máis información sobre como actualizar.", + "Update notifications" : "Actualizar as notificacións", + "Channel updated" : "Canle actualizada", + "The update server could not be reached since %d days to check for new updates." : "Non foi posíbel conectar co servidor de actualizacións dende vai %d días para comprobar se hai novas actualizacións.", + "Please check the Nextcloud and server log files for errors." : "Por favor comprobe os ficheiros de rexistro de Nextcloud e do servidor na procura de erros.", + "Update to %1$s is available." : "Está dispoñíbel unha actualización para %1$s.", + "Update for %1$s to version %2$s is available." : "Está dispoñíbel unha actualización para %1$s á versión %2$s.", + "Update for {app} to version %s is available." : "Está dispoñíbel unha actualización para {app} á versión %s.", "Open updater" : "Abrir o actualizador", - "Your version is up to date." : "A súa versión está actualizada.", + "The update check is not yet finished. Please refresh the page." : "A comprobación de actualización aínda non rematou. Por favor recargue a páxina.", "A non-default update server is in use to be checked for updates:" : "Está en uso un servidor de actualizacións que non é o predeterminado para comprobar as actualizacións:", "Update channel:" : "Canle de actualización:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre poderá actualizar á unha versión máis nova ou á canle experimental, mais nunca poderá voltar atrás a unha canle máis estábel.", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Só están dispoñíbeis as notificacións para actualizacións de aplicacións.", "The selected update channel does not support updates of the server." : "A canle de actualización seleccionada non admite actualizacións do servidor.", "Could not start updater, please try the manual update" : "Non foi posíbel iniciar o actualizador, por favor tente a actualización manual", - "Update notifications" : "Actualizar as notificacións", - "Channel updated" : "Canle actualizada", - "The update server could not be reached since %d days to check for new updates." : "Non foi posíbel conectar co servidor de actualizacións dende vai %d días para comprobar se hai novas actualizacións.", - "Please check the Nextcloud and server log files for errors." : "Por favor comprobe os ficheiros de rexistro de Nextcloud e do servidor na procura de erros.", - "Update to %1$s is available." : "Está dispoñíbel unha actualización para %1$s.", - "Update for %1$s to version %2$s is available." : "Está dispoñíbel unha actualización para %1$s á versión %2$s.", - "Update for {app} to version %s is available." : "Está dispoñíbel unha actualización para {app} á versión %s.", "A new version is available: %s" : "Hai dispoñíbel unha nova versión: %s", "Download now" : "Descargar agora", + "Your version is up to date." : "A súa versión está actualizada.", "Checked on %s" : "Comprobado en %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "A canle de actualización seleccionada fai obsoletas as notificacións dedicadas para o servidor.", - "The update check is not yet finished. Please refresh the page." : "A comprobación de actualización aínda non rematou. Por favor recargue a páxina." + "The selected update channel makes dedicated notifications for the server obsolete." : "A canle de actualización seleccionada fai obsoletas as notificacións dedicadas para o servidor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/hu.js b/apps/updatenotification/l10n/hu.js index e1604ef23f6..0c583910c4a 100644 --- a/apps/updatenotification/l10n/hu.js +++ b/apps/updatenotification/l10n/hu.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.", + "Update notifications" : "Frissítési értesítés", + "Channel updated" : "Csatorna frissítve", + "The update server could not be reached since %d days to check for new updates." : "A frissítési szerver %d napja nem elérhető a frissítések kereséséhez.", + "Please check the Nextcloud and server log files for errors." : "Kérlek nézd meg a Nextcloud és a szervernaplókat a hibák miatt.", + "Update to %1$s is available." : "%1$s frissítés elérhető.", + "Update for %1$s to version %2$s is available." : "%1$s frissíthető %2$s verzióra.", + "Update for {app} to version %s is available." : "{app} %s verzió frissítése elérhető", + "Update notification" : "Frissítési értesítés", "Apps with available updates" : "Alkalmazások frissítéssel", "Open updater" : "Frissítő megnyitása", - "Your version is up to date." : "Verzió frissítve.", + "The update check is not yet finished. Please refresh the page." : "A frissítéskeresés még nem ért véget. Kérjük frissítsd az oldalt.", "A non-default update server is in use to be checked for updates:" : "Egy nem alapértelmezett szervert használunk a frissítések kereséséhez:", "Update channel:" : "Frissítési csatorna:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mindig frissíthetsz az újabb verzióra vagy kísérleti csatornára, de visszafelé sosem frissíthetsz egy jóval stabilabb verzióra.", @@ -20,18 +28,10 @@ OC.L10N.register( "<strong>All</strong> apps have an update for this version available" : "<strong>Minden</strong> alkalmazás felfrissítve a legújabb verzióra.", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> alkalmazásnak nincs elérhető frissítése ehhez a verzióhoz","<strong>%n</strong> alkalmazásnak nincs elérhető frissítése ehhez a verzióhoz"], "Could not start updater, please try the manual update" : "Nem sikerült elindítani a frissítőt, kérlek próbáld a manuális frissítést", - "Update notifications" : "Frissítési értesítés", - "Channel updated" : "Csatorna frissítve", - "The update server could not be reached since %d days to check for new updates." : "A frissítési szerver %d napja nem elérhető a frissítések kereséséhez.", - "Please check the Nextcloud and server log files for errors." : "Kérlek nézd meg a Nextcloud és a szervernaplókat a hibák miatt.", - "Update to %1$s is available." : "%1$s frissítés elérhető.", - "Update for %1$s to version %2$s is available." : "%1$s frissíthető %2$s verzióra.", - "Update for {app} to version %s is available." : "{app} %s verzió frissítése elérhető", - "Update notification" : "Frissítési értesítés", "A new version is available: %s" : "Új verzió érhető el: %s", "Download now" : "Letöltés most", + "Your version is up to date." : "Verzió frissítve.", "Checked on %s" : "Ellenőrizve: %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor.", - "The update check is not yet finished. Please refresh the page." : "A frissítéskeresés még nem ért véget. Kérjük frissítsd az oldalt." + "The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/hu.json b/apps/updatenotification/l10n/hu.json index 57e1c3c727e..ed16968bb6a 100644 --- a/apps/updatenotification/l10n/hu.json +++ b/apps/updatenotification/l10n/hu.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.", + "Update notifications" : "Frissítési értesítés", + "Channel updated" : "Csatorna frissítve", + "The update server could not be reached since %d days to check for new updates." : "A frissítési szerver %d napja nem elérhető a frissítések kereséséhez.", + "Please check the Nextcloud and server log files for errors." : "Kérlek nézd meg a Nextcloud és a szervernaplókat a hibák miatt.", + "Update to %1$s is available." : "%1$s frissítés elérhető.", + "Update for %1$s to version %2$s is available." : "%1$s frissíthető %2$s verzióra.", + "Update for {app} to version %s is available." : "{app} %s verzió frissítése elérhető", + "Update notification" : "Frissítési értesítés", "Apps with available updates" : "Alkalmazások frissítéssel", "Open updater" : "Frissítő megnyitása", - "Your version is up to date." : "Verzió frissítve.", + "The update check is not yet finished. Please refresh the page." : "A frissítéskeresés még nem ért véget. Kérjük frissítsd az oldalt.", "A non-default update server is in use to be checked for updates:" : "Egy nem alapértelmezett szervert használunk a frissítések kereséséhez:", "Update channel:" : "Frissítési csatorna:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mindig frissíthetsz az újabb verzióra vagy kísérleti csatornára, de visszafelé sosem frissíthetsz egy jóval stabilabb verzióra.", @@ -18,18 +26,10 @@ "<strong>All</strong> apps have an update for this version available" : "<strong>Minden</strong> alkalmazás felfrissítve a legújabb verzióra.", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> alkalmazásnak nincs elérhető frissítése ehhez a verzióhoz","<strong>%n</strong> alkalmazásnak nincs elérhető frissítése ehhez a verzióhoz"], "Could not start updater, please try the manual update" : "Nem sikerült elindítani a frissítőt, kérlek próbáld a manuális frissítést", - "Update notifications" : "Frissítési értesítés", - "Channel updated" : "Csatorna frissítve", - "The update server could not be reached since %d days to check for new updates." : "A frissítési szerver %d napja nem elérhető a frissítések kereséséhez.", - "Please check the Nextcloud and server log files for errors." : "Kérlek nézd meg a Nextcloud és a szervernaplókat a hibák miatt.", - "Update to %1$s is available." : "%1$s frissítés elérhető.", - "Update for %1$s to version %2$s is available." : "%1$s frissíthető %2$s verzióra.", - "Update for {app} to version %s is available." : "{app} %s verzió frissítése elérhető", - "Update notification" : "Frissítési értesítés", "A new version is available: %s" : "Új verzió érhető el: %s", "Download now" : "Letöltés most", + "Your version is up to date." : "Verzió frissítve.", "Checked on %s" : "Ellenőrizve: %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor.", - "The update check is not yet finished. Please refresh the page." : "A frissítéskeresés még nem ért véget. Kérjük frissítsd az oldalt." + "The selected update channel makes dedicated notifications for the server obsolete." : "A kiválasztott frissítési csatorna dedikált értesítéseket jelenít meg a szerver elavulásakor." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/is.js b/apps/updatenotification/l10n/is.js index ace76999139..4283a74611e 100644 --- a/apps/updatenotification/l10n/is.js +++ b/apps/updatenotification/l10n/is.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.", + "Update notifications" : "Tilkynningar um uppfærslu", + "Channel updated" : "Rás uppfærð", + "The update server could not be reached since %d days to check for new updates." : "Ekki hefur verið hægt að nálgast uppfærsluþjóninn í %d daga til að athuga með nýjar uppfærslur.", + "Please check the Nextcloud and server log files for errors." : "Skoðaðu hvort einhver villuboð séu í annálaskrám Nextcloud þjónsins.", + "Update to %1$s is available." : "Uppfærsla fyrir %1$s er tiltæk.", + "Update for %1$s to version %2$s is available." : "Uppfærsla %1$s í útgáfu %2$s er tiltæk.", + "Update for {app} to version %s is available." : "Uppfærsla fyrir {app} í útgáfu %s er tiltæk.", + "Update notification" : "Tilkynning um uppfærslu", "Apps with available updates" : "Forrit með tiltækar uppfærslur", "Open updater" : "Opna uppfærslustýringu", - "Your version is up to date." : "Útgáfan þín er af nýjustu gerð.", + "The update check is not yet finished. Please refresh the page." : "Athugun á uppfærslum er ekki ennþá lokið. Endurlestu síðuna.", "A non-default update server is in use to be checked for updates:" : "Uppfærsluþjónn sem ekki er sjálfgefinn er núna í notkun til að athuga með uppfærslur:", "Update channel:" : "Uppfærslurás:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.", @@ -22,19 +30,11 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>vinnsla</strong> mun alltaf vera á nýjasta stigi endurbóta (öryggisviðbætur o.fl.), en ekki uppfærast samstundis í næstu aðalútgáfu. Sú uppfærsla á sér yfirleitt stað við undirútgáfu númer tvö (x.0.2).", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> er for-útgáfa sem einungis er hugsuð til að prófa nýja eiginleika, og er alls ekki ætluð fyrir alvöru vinnslu.", "Could not start updater, please try the manual update" : "Gat ekki ræst uppfærslustýringu, prófaðu að uppfæra handvirkt", - "Update notifications" : "Tilkynningar um uppfærslu", - "Channel updated" : "Rás uppfærð", - "The update server could not be reached since %d days to check for new updates." : "Ekki hefur verið hægt að nálgast uppfærsluþjóninn í %d daga til að athuga með nýjar uppfærslur.", - "Please check the Nextcloud and server log files for errors." : "Skoðaðu hvort einhver villuboð séu í annálaskrám Nextcloud þjónsins.", - "Update to %1$s is available." : "Uppfærsla fyrir %1$s er tiltæk.", - "Update for %1$s to version %2$s is available." : "Uppfærsla %1$s í útgáfu %2$s er tiltæk.", - "Update for {app} to version %s is available." : "Uppfærsla fyrir {app} í útgáfu %s er tiltæk.", - "Update notification" : "Tilkynning um uppfærslu", "A new version is available: %s" : "Ný útgáfa er tiltæk: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Útgáfunni sem þú ert að keyra er ekki legur viðhaldið. Uppfærðu í studda útgáfu við fyrsta tækifæri.", "Download now" : "Sækja núna", + "Your version is up to date." : "Útgáfan þín er af nýjustu gerð.", "Checked on %s" : "Athugað þann %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.", - "The update check is not yet finished. Please refresh the page." : "Athugun á uppfærslum er ekki ennþá lokið. Endurlestu síðuna." + "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn." }, "nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"); diff --git a/apps/updatenotification/l10n/is.json b/apps/updatenotification/l10n/is.json index ab7a32c9436..21fccf6ce8f 100644 --- a/apps/updatenotification/l10n/is.json +++ b/apps/updatenotification/l10n/is.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} er í boði. Fáðu frekari upplýsingar um hvernig á að uppfæra.", + "Update notifications" : "Tilkynningar um uppfærslu", + "Channel updated" : "Rás uppfærð", + "The update server could not be reached since %d days to check for new updates." : "Ekki hefur verið hægt að nálgast uppfærsluþjóninn í %d daga til að athuga með nýjar uppfærslur.", + "Please check the Nextcloud and server log files for errors." : "Skoðaðu hvort einhver villuboð séu í annálaskrám Nextcloud þjónsins.", + "Update to %1$s is available." : "Uppfærsla fyrir %1$s er tiltæk.", + "Update for %1$s to version %2$s is available." : "Uppfærsla %1$s í útgáfu %2$s er tiltæk.", + "Update for {app} to version %s is available." : "Uppfærsla fyrir {app} í útgáfu %s er tiltæk.", + "Update notification" : "Tilkynning um uppfærslu", "Apps with available updates" : "Forrit með tiltækar uppfærslur", "Open updater" : "Opna uppfærslustýringu", - "Your version is up to date." : "Útgáfan þín er af nýjustu gerð.", + "The update check is not yet finished. Please refresh the page." : "Athugun á uppfærslum er ekki ennþá lokið. Endurlestu síðuna.", "A non-default update server is in use to be checked for updates:" : "Uppfærsluþjónn sem ekki er sjálfgefinn er núna í notkun til að athuga með uppfærslur:", "Update channel:" : "Uppfærslurás:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Þú getur alltaf uppfært í nýrri útgáfu eða tilraunaútgáfurás. En þú getur aldrei niðurfært í stöðugri rás.", @@ -20,19 +28,11 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>vinnsla</strong> mun alltaf vera á nýjasta stigi endurbóta (öryggisviðbætur o.fl.), en ekki uppfærast samstundis í næstu aðalútgáfu. Sú uppfærsla á sér yfirleitt stað við undirútgáfu númer tvö (x.0.2).", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> er for-útgáfa sem einungis er hugsuð til að prófa nýja eiginleika, og er alls ekki ætluð fyrir alvöru vinnslu.", "Could not start updater, please try the manual update" : "Gat ekki ræst uppfærslustýringu, prófaðu að uppfæra handvirkt", - "Update notifications" : "Tilkynningar um uppfærslu", - "Channel updated" : "Rás uppfærð", - "The update server could not be reached since %d days to check for new updates." : "Ekki hefur verið hægt að nálgast uppfærsluþjóninn í %d daga til að athuga með nýjar uppfærslur.", - "Please check the Nextcloud and server log files for errors." : "Skoðaðu hvort einhver villuboð séu í annálaskrám Nextcloud þjónsins.", - "Update to %1$s is available." : "Uppfærsla fyrir %1$s er tiltæk.", - "Update for %1$s to version %2$s is available." : "Uppfærsla %1$s í útgáfu %2$s er tiltæk.", - "Update for {app} to version %s is available." : "Uppfærsla fyrir {app} í útgáfu %s er tiltæk.", - "Update notification" : "Tilkynning um uppfærslu", "A new version is available: %s" : "Ný útgáfa er tiltæk: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Útgáfunni sem þú ert að keyra er ekki legur viðhaldið. Uppfærðu í studda útgáfu við fyrsta tækifæri.", "Download now" : "Sækja núna", + "Your version is up to date." : "Útgáfan þín er af nýjustu gerð.", "Checked on %s" : "Athugað þann %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn.", - "The update check is not yet finished. Please refresh the page." : "Athugun á uppfærslum er ekki ennþá lokið. Endurlestu síðuna." + "The selected update channel makes dedicated notifications for the server obsolete." : "Valda uppfærslurásin gerir úreltar sértækar tilkynningar fyrir vefþjóninn." },"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/it.js b/apps/updatenotification/l10n/it.js index 38799e47b8c..a54ea4175f6 100644 --- a/apps/updatenotification/l10n/it.js +++ b/apps/updatenotification/l10n/it.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.", + "Update notifications" : "Notifiche degli aggiornamenti", + "Channel updated" : "Canale aggiornato", + "The update server could not be reached since %d days to check for new updates." : "Il server degli aggiornamenti non è raggiungibile da %d giorni per controllare la presenza di nuovi aggiornamenti.", + "Please check the Nextcloud and server log files for errors." : "Controlla i file di log di Nextcloud e del server alla ricerca di errori.", + "Update to %1$s is available." : "Aggiornamento a %1$s disponibile.", + "Update for %1$s to version %2$s is available." : "È disponibile l'aggiornamento di %1$s alla versione %2$s.", + "Update for {app} to version %s is available." : "È disponibile l'aggiornamento di {app} alla versione %s.", + "Update notification" : "Notifica di aggiornamento", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Visualizza le notifiche degli aggiornamenti per Nextcloud e fornisce il SSO per lo strumento di aggiornamento.", "Apps with available updates" : "Applicazioni con aggiornamenti disponibili", "Open updater" : "Apri strumento di aggiornamento", - "Your version is up to date." : "La tua versione è aggiornata.", + "What's new?" : "Cosa c'è di nuovo?", + "The update check is not yet finished. Please refresh the page." : "Il controllo degli aggiornamenti non è ancora terminato. Aggiorna la pagina.", "A non-default update server is in use to be checked for updates:" : "Stai utilizzando un server non predefinito per controllare gli aggiornamenti:", "Update channel:" : "Canale di aggiornamento:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Puoi aggiornare sempre a una nuova versione / canale sperimentale. Ma non puoi mai tornare a una versione precedente.", @@ -22,21 +32,13 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>produzione</strong> fornirà sempre l'ultimo livello di patch, ma non aggiornerà immediatamente alla successiva versione principale. Tale aggiornamento di solito avviene con la seconda versione minore (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stabile</strong> è la versione stabile più recente. È appropriata per l'utilizzo di tutti i giorni e sarà sempre aggiornata all'ultima versione principale.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> è una versione pre-rilascio solo per provare le nuove funzionalità, non per ambienti di produzione.", + "View changelog" : "Visualizza le novità", "Could not start updater, please try the manual update" : "Impossibile avviare lo strumento di aggiornamento, prova l'aggiornamento manuale", - "Update notifications" : "Notifiche degli aggiornamenti", - "Channel updated" : "Canale aggiornato", - "The update server could not be reached since %d days to check for new updates." : "Il server degli aggiornamenti non è raggiungibile da %d giorni per controllare la presenza di nuovi aggiornamenti.", - "Please check the Nextcloud and server log files for errors." : "Controlla i file di log di Nextcloud e del server alla ricerca di errori.", - "Update to %1$s is available." : "Aggiornamento a %1$s disponibile.", - "Update for %1$s to version %2$s is available." : "È disponibile l'aggiornamento di %1$s alla versione %2$s.", - "Update for {app} to version %s is available." : "È disponibile l'aggiornamento di {app} alla versione %s.", - "Update notification" : "Notifica di aggiornamento", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Visualizza le notifiche degli aggiornamenti per Nextcloud e fornisce il SSO per lo strumento di aggiornamento.", "A new version is available: %s" : "Una nuova versione è disponibile: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versione che stai eseguendo non è più mantenuta. Assicurati di aggiornare a una versione supportata non appena possibile.", "Download now" : "Scarica ora", + "Your version is up to date." : "La tua versione è aggiornata.", "Checked on %s" : "Controllato il %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server.", - "The update check is not yet finished. Please refresh the page." : "Il controllo degli aggiornamenti non è ancora terminato. Aggiorna la pagina." + "The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/it.json b/apps/updatenotification/l10n/it.json index 734692254c4..4c3a882878b 100644 --- a/apps/updatenotification/l10n/it.json +++ b/apps/updatenotification/l10n/it.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} è disponibile. Ottieni ulteriori informazioni su come eseguire l'aggiornamento.", + "Update notifications" : "Notifiche degli aggiornamenti", + "Channel updated" : "Canale aggiornato", + "The update server could not be reached since %d days to check for new updates." : "Il server degli aggiornamenti non è raggiungibile da %d giorni per controllare la presenza di nuovi aggiornamenti.", + "Please check the Nextcloud and server log files for errors." : "Controlla i file di log di Nextcloud e del server alla ricerca di errori.", + "Update to %1$s is available." : "Aggiornamento a %1$s disponibile.", + "Update for %1$s to version %2$s is available." : "È disponibile l'aggiornamento di %1$s alla versione %2$s.", + "Update for {app} to version %s is available." : "È disponibile l'aggiornamento di {app} alla versione %s.", + "Update notification" : "Notifica di aggiornamento", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Visualizza le notifiche degli aggiornamenti per Nextcloud e fornisce il SSO per lo strumento di aggiornamento.", "Apps with available updates" : "Applicazioni con aggiornamenti disponibili", "Open updater" : "Apri strumento di aggiornamento", - "Your version is up to date." : "La tua versione è aggiornata.", + "What's new?" : "Cosa c'è di nuovo?", + "The update check is not yet finished. Please refresh the page." : "Il controllo degli aggiornamenti non è ancora terminato. Aggiorna la pagina.", "A non-default update server is in use to be checked for updates:" : "Stai utilizzando un server non predefinito per controllare gli aggiornamenti:", "Update channel:" : "Canale di aggiornamento:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Puoi aggiornare sempre a una nuova versione / canale sperimentale. Ma non puoi mai tornare a una versione precedente.", @@ -20,21 +30,13 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>produzione</strong> fornirà sempre l'ultimo livello di patch, ma non aggiornerà immediatamente alla successiva versione principale. Tale aggiornamento di solito avviene con la seconda versione minore (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>stabile</strong> è la versione stabile più recente. È appropriata per l'utilizzo di tutti i giorni e sarà sempre aggiornata all'ultima versione principale.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> è una versione pre-rilascio solo per provare le nuove funzionalità, non per ambienti di produzione.", + "View changelog" : "Visualizza le novità", "Could not start updater, please try the manual update" : "Impossibile avviare lo strumento di aggiornamento, prova l'aggiornamento manuale", - "Update notifications" : "Notifiche degli aggiornamenti", - "Channel updated" : "Canale aggiornato", - "The update server could not be reached since %d days to check for new updates." : "Il server degli aggiornamenti non è raggiungibile da %d giorni per controllare la presenza di nuovi aggiornamenti.", - "Please check the Nextcloud and server log files for errors." : "Controlla i file di log di Nextcloud e del server alla ricerca di errori.", - "Update to %1$s is available." : "Aggiornamento a %1$s disponibile.", - "Update for %1$s to version %2$s is available." : "È disponibile l'aggiornamento di %1$s alla versione %2$s.", - "Update for {app} to version %s is available." : "È disponibile l'aggiornamento di {app} alla versione %s.", - "Update notification" : "Notifica di aggiornamento", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Visualizza le notifiche degli aggiornamenti per Nextcloud e fornisce il SSO per lo strumento di aggiornamento.", "A new version is available: %s" : "Una nuova versione è disponibile: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "La versione che stai eseguendo non è più mantenuta. Assicurati di aggiornare a una versione supportata non appena possibile.", "Download now" : "Scarica ora", + "Your version is up to date." : "La tua versione è aggiornata.", "Checked on %s" : "Controllato il %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server.", - "The update check is not yet finished. Please refresh the page." : "Il controllo degli aggiornamenti non è ancora terminato. Aggiorna la pagina." + "The selected update channel makes dedicated notifications for the server obsolete." : "Il canale di aggiornamento selezionato rende obsolete le notifiche dedicate al server." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ja.js b/apps/updatenotification/l10n/ja.js index 01a46479f9c..60d1aceba79 100644 --- a/apps/updatenotification/l10n/ja.js +++ b/apps/updatenotification/l10n/ja.js @@ -2,8 +2,16 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。", + "Update notifications" : "アップデート通知", + "Channel updated" : "チャンネルを更新しました", + "The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。", + "Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。", + "Update to %1$s is available." : "%1$s への更新が利用可能です。", + "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", + "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", + "Apps with available updates" : "アップデート可能なアプリ", "Open updater" : "アップデーターを開く", - "Your version is up to date." : "最新版です。", + "The update check is not yet finished. Please refresh the page." : "アップデートチェックが完了していません。ページを更新してください。", "A non-default update server is in use to be checked for updates:" : "更新のチェックにデフォルト以外の更新サーバーが利用されています:", "Update channel:" : "アップデートチャンネル:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "開発版の新しいバージョンにアップデートできます。ただし、アップデート後は安定版にダウングレードできません。", @@ -12,17 +20,10 @@ OC.L10N.register( "Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。", "The selected update channel does not support updates of the server." : "選択したチャンネルでは、サーバーのアップデートをサポートしていません。", "Could not start updater, please try the manual update" : "アップデータを起動できませんでした。手動アップデートをお試しください", - "Update notifications" : "アップデート通知", - "Channel updated" : "チャンネルが更新されました", - "The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。", - "Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。", - "Update to %1$s is available." : "%1$s への更新が利用可能です。", - "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", - "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", "A new version is available: %s" : "新しいバージョンが利用可能: %s", "Download now" : "今すぐダウンロード", + "Your version is up to date." : "最新版です。", "Checked on %s" : "%s に確認", - "The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。", - "The update check is not yet finished. Please refresh the page." : "アップデートチェックが完了していません。ページを更新してください。" + "The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。" }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/ja.json b/apps/updatenotification/l10n/ja.json index dbedb9e3c34..55c4ca84867 100644 --- a/apps/updatenotification/l10n/ja.json +++ b/apps/updatenotification/l10n/ja.json @@ -1,7 +1,15 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} が利用可能です。アップデート方法について詳細情報を確認してください。", + "Update notifications" : "アップデート通知", + "Channel updated" : "チャンネルを更新しました", + "The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。", + "Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。", + "Update to %1$s is available." : "%1$s への更新が利用可能です。", + "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", + "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", + "Apps with available updates" : "アップデート可能なアプリ", "Open updater" : "アップデーターを開く", - "Your version is up to date." : "最新版です。", + "The update check is not yet finished. Please refresh the page." : "アップデートチェックが完了していません。ページを更新してください。", "A non-default update server is in use to be checked for updates:" : "更新のチェックにデフォルト以外の更新サーバーが利用されています:", "Update channel:" : "アップデートチャンネル:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "開発版の新しいバージョンにアップデートできます。ただし、アップデート後は安定版にダウングレードできません。", @@ -10,17 +18,10 @@ "Only notification for app updates are available." : "アプリ更新情報があるときのみ通知する。", "The selected update channel does not support updates of the server." : "選択したチャンネルでは、サーバーのアップデートをサポートしていません。", "Could not start updater, please try the manual update" : "アップデータを起動できませんでした。手動アップデートをお試しください", - "Update notifications" : "アップデート通知", - "Channel updated" : "チャンネルが更新されました", - "The update server could not be reached since %d days to check for new updates." : "%d日以降、新しい更新をチェックする更新サーバーにアクセスできませんでした。", - "Please check the Nextcloud and server log files for errors." : "Nextcloudとサーバーログファイルでエラーがないか確認してください。", - "Update to %1$s is available." : "%1$s への更新が利用可能です。", - "Update for %1$s to version %2$s is available." : "%1$s に対するバージョン %2$s へアップデートが利用可能です。", - "Update for {app} to version %s is available." : " {app} に対するバージョン %s へアップデートが利用可能です。", "A new version is available: %s" : "新しいバージョンが利用可能: %s", "Download now" : "今すぐダウンロード", + "Your version is up to date." : "最新版です。", "Checked on %s" : "%s に確認", - "The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。", - "The update check is not yet finished. Please refresh the page." : "アップデートチェックが完了していません。ページを更新してください。" + "The selected update channel makes dedicated notifications for the server obsolete." : "選択した更新チャネルでは、廃止サーバーについて専用の通知を行います。" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ka_GE.js b/apps/updatenotification/l10n/ka_GE.js index 6036fc2428e..d7eb7fc84bb 100644 --- a/apps/updatenotification/l10n/ka_GE.js +++ b/apps/updatenotification/l10n/ka_GE.js @@ -2,8 +2,16 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} ხელმისაწვდომია. მოიპოვეთ მეტი ინფორმაცია იმაზე, თუ როგორ განაახლოთ.", + "Update notifications" : "განახლების შეტყობინებები", + "Channel updated" : "განახლების შეჩერება", + "The update server could not be reached since %d days to check for new updates." : "განახლების სერვერი გალახლებების შესამოწმებლად %d დღე მიუწვდომელია.", + "Please check the Nextcloud and server log files for errors." : "შეცდომებისთვის გთხოვთ შეამოწმოთ Nextcloud-ი სერვერის ლოგები.", + "Update to %1$s is available." : "განახლება %1$s-ზე ხელმისაწვდომია.", + "Update for %1$s to version %2$s is available." : "%1$s-ის განახლება %2$s ვერსიაზე ხელმისაწვდომია.", + "Update for {app} to version %s is available." : "განახლება აპლიკაციისთვის {app} ვერსიაზე %s ხელმისაწვდომია.", + "Update notification" : "შეტყობინების განახლება", "Open updater" : "განმანახლებლის ჩართვა", - "Your version is up to date." : "თქვენ იყენბთ ბოლო ვერსიას.", + "The update check is not yet finished. Please refresh the page." : "განახლება ჯერ არ დასრულებულა. გთხოვთ განაახლოთ გვერდი.", "A non-default update server is in use to be checked for updates:" : "განახლებების შესამოწმებლად მოქმედია არა-საწყისი სერვერი:", "Update channel:" : "განახლების არხი:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "ყოველთვის შეგიძლიათ განაახლოთ უფრო ახალ ვერსიაზე / ექსპერიმენტალურ არხზე. თუმცა სტაბილურ ვერსიაზე ჩამოსვლა ვერ მოხერხდება.", @@ -13,18 +21,10 @@ OC.L10N.register( "The selected update channel does not support updates of the server." : "არჩეული განახლების არხი არ უჭერს მხარს სერვერის განახლებას.", "Checked on {lastCheckedDate}" : "შემოწმდა {lastCheckedDate}-ზე", "Could not start updater, please try the manual update" : "განმანახმებლის გაშვება ვერ მოხერხდა, გთხოვთ სცადოთ განახლება მექანიკურ რეჯიმში", - "Update notifications" : "განახლების შეტყობინებები", - "Channel updated" : "განახლების შეჩერება", - "The update server could not be reached since %d days to check for new updates." : "განახლების სერვერი გალახლებების შესამოწმებლად %d დღე მიუწვდომელია.", - "Please check the Nextcloud and server log files for errors." : "შეცდომებისთვის გთხოვთ შეამოწმოთ Nextcloud-ი სერვერის ლოგები.", - "Update to %1$s is available." : "განახლება %1$s-ზე ხელმისაწვდომია.", - "Update for %1$s to version %2$s is available." : "%1$s-ის განახლება %2$s ვერსიაზე ხელმისაწვდომია.", - "Update for {app} to version %s is available." : "განახლება აპლიკაციისთვის {app} ვერსიაზე %s ხელმისაწვდომია.", - "Update notification" : "შეტყობინების განახლება", "A new version is available: %s" : "ხელმისაწვდომია ახალი ვერსია: %s", "Download now" : "ჩამოტვირთვა", + "Your version is up to date." : "თქვენ იყენბთ ბოლო ვერსიას.", "Checked on %s" : "შემოწმდა %s-ზე", - "The selected update channel makes dedicated notifications for the server obsolete." : "არჩეული განახლების არხი მოძველებული სერვერის შესახებ საჭიროებს გამოყოფილ შეტყობინებებს.", - "The update check is not yet finished. Please refresh the page." : "განახლება ჯერ არ დასრულებულა. გთხოვთ განაახლოთ გვერდი." + "The selected update channel makes dedicated notifications for the server obsolete." : "არჩეული განახლების არხი მოძველებული სერვერის შესახებ საჭიროებს გამოყოფილ შეტყობინებებს." }, "nplurals=2; plural=(n!=1);"); diff --git a/apps/updatenotification/l10n/ka_GE.json b/apps/updatenotification/l10n/ka_GE.json index dc7567a23d5..e1b8142bd8f 100644 --- a/apps/updatenotification/l10n/ka_GE.json +++ b/apps/updatenotification/l10n/ka_GE.json @@ -1,7 +1,15 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} ხელმისაწვდომია. მოიპოვეთ მეტი ინფორმაცია იმაზე, თუ როგორ განაახლოთ.", + "Update notifications" : "განახლების შეტყობინებები", + "Channel updated" : "განახლების შეჩერება", + "The update server could not be reached since %d days to check for new updates." : "განახლების სერვერი გალახლებების შესამოწმებლად %d დღე მიუწვდომელია.", + "Please check the Nextcloud and server log files for errors." : "შეცდომებისთვის გთხოვთ შეამოწმოთ Nextcloud-ი სერვერის ლოგები.", + "Update to %1$s is available." : "განახლება %1$s-ზე ხელმისაწვდომია.", + "Update for %1$s to version %2$s is available." : "%1$s-ის განახლება %2$s ვერსიაზე ხელმისაწვდომია.", + "Update for {app} to version %s is available." : "განახლება აპლიკაციისთვის {app} ვერსიაზე %s ხელმისაწვდომია.", + "Update notification" : "შეტყობინების განახლება", "Open updater" : "განმანახლებლის ჩართვა", - "Your version is up to date." : "თქვენ იყენბთ ბოლო ვერსიას.", + "The update check is not yet finished. Please refresh the page." : "განახლება ჯერ არ დასრულებულა. გთხოვთ განაახლოთ გვერდი.", "A non-default update server is in use to be checked for updates:" : "განახლებების შესამოწმებლად მოქმედია არა-საწყისი სერვერი:", "Update channel:" : "განახლების არხი:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "ყოველთვის შეგიძლიათ განაახლოთ უფრო ახალ ვერსიაზე / ექსპერიმენტალურ არხზე. თუმცა სტაბილურ ვერსიაზე ჩამოსვლა ვერ მოხერხდება.", @@ -11,18 +19,10 @@ "The selected update channel does not support updates of the server." : "არჩეული განახლების არხი არ უჭერს მხარს სერვერის განახლებას.", "Checked on {lastCheckedDate}" : "შემოწმდა {lastCheckedDate}-ზე", "Could not start updater, please try the manual update" : "განმანახმებლის გაშვება ვერ მოხერხდა, გთხოვთ სცადოთ განახლება მექანიკურ რეჯიმში", - "Update notifications" : "განახლების შეტყობინებები", - "Channel updated" : "განახლების შეჩერება", - "The update server could not be reached since %d days to check for new updates." : "განახლების სერვერი გალახლებების შესამოწმებლად %d დღე მიუწვდომელია.", - "Please check the Nextcloud and server log files for errors." : "შეცდომებისთვის გთხოვთ შეამოწმოთ Nextcloud-ი სერვერის ლოგები.", - "Update to %1$s is available." : "განახლება %1$s-ზე ხელმისაწვდომია.", - "Update for %1$s to version %2$s is available." : "%1$s-ის განახლება %2$s ვერსიაზე ხელმისაწვდომია.", - "Update for {app} to version %s is available." : "განახლება აპლიკაციისთვის {app} ვერსიაზე %s ხელმისაწვდომია.", - "Update notification" : "შეტყობინების განახლება", "A new version is available: %s" : "ხელმისაწვდომია ახალი ვერსია: %s", "Download now" : "ჩამოტვირთვა", + "Your version is up to date." : "თქვენ იყენბთ ბოლო ვერსიას.", "Checked on %s" : "შემოწმდა %s-ზე", - "The selected update channel makes dedicated notifications for the server obsolete." : "არჩეული განახლების არხი მოძველებული სერვერის შესახებ საჭიროებს გამოყოფილ შეტყობინებებს.", - "The update check is not yet finished. Please refresh the page." : "განახლება ჯერ არ დასრულებულა. გთხოვთ განაახლოთ გვერდი." + "The selected update channel makes dedicated notifications for the server obsolete." : "არჩეული განახლების არხი მოძველებული სერვერის შესახებ საჭიროებს გამოყოფილ შეტყობინებებს." },"pluralForm" :"nplurals=2; plural=(n!=1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ko.js b/apps/updatenotification/l10n/ko.js index a72d91de2e0..74e41632368 100644 --- a/apps/updatenotification/l10n/ko.js +++ b/apps/updatenotification/l10n/ko.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version}을(를) 사용할 수 있습니다. 업데이트하는 방법에 대해서 알아보십시오.", + "Update notifications" : "업데이트 알림", + "Channel updated" : "채널 업데이트됨", + "The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.", + "Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.", + "Update to %1$s is available." : "%1$s(으)로 업데이트할 수 있습니다.", + "Update for %1$s to version %2$s is available." : "%1$s을(를) 버전 %2$s(으)로 업데이트할 수 있습니다.", + "Update for {app} to version %s is available." : "{app}을(를) 버전 %s(으)로 업데이트할 수 있습니다.", "Open updater" : "업데이터 열기", - "Your version is up to date." : "최신 버전을 사용하고 있습니다.", + "The update check is not yet finished. Please refresh the page." : "업데이트 확인이 아직 끝나지 않았습니다. 페이지를 새로 고치십시오.", "A non-default update server is in use to be checked for updates:" : "기본 업데이트 서버가 아닌 곳에서 업데이트를 확인하고 있음:", "Update channel:" : "업데이트 채널:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다.", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "앱 업데이트 알림만 사용할 수 있습니다.", "The selected update channel does not support updates of the server." : "선택한 업데이트 채널은 서버 업데이트를 지원하지 않습니다.", "Could not start updater, please try the manual update" : "업데이트를 시작할 수 없습니다. 수동 업데이트를 시도하십시오.", - "Update notifications" : "업데이트 알림", - "Channel updated" : "채널 업데이트됨", - "The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.", - "Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.", - "Update to %1$s is available." : "%1$s(으)로 업데이트할 수 있습니다.", - "Update for %1$s to version %2$s is available." : "%1$s을(를) 버전 %2$s(으)로 업데이트할 수 있습니다.", - "Update for {app} to version %s is available." : "{app}을(를) 버전 %s(으)로 업데이트할 수 있습니다.", "A new version is available: %s" : "새 버전을 사용할 수 있습니다: %s", "Download now" : "지금 다운로드", + "Your version is up to date." : "최신 버전을 사용하고 있습니다.", "Checked on %s" : "%s에 확인함", - "The selected update channel makes dedicated notifications for the server obsolete." : "선택한 업데이트 채널은 서버 알림을 사용하지 않습니다.", - "The update check is not yet finished. Please refresh the page." : "업데이트 확인이 아직 끝나지 않았습니다. 페이지를 새로 고치십시오." + "The selected update channel makes dedicated notifications for the server obsolete." : "선택한 업데이트 채널은 서버 알림을 사용하지 않습니다." }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/ko.json b/apps/updatenotification/l10n/ko.json index 1ba2e9e54de..1939ce1097b 100644 --- a/apps/updatenotification/l10n/ko.json +++ b/apps/updatenotification/l10n/ko.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version}을(를) 사용할 수 있습니다. 업데이트하는 방법에 대해서 알아보십시오.", + "Update notifications" : "업데이트 알림", + "Channel updated" : "채널 업데이트됨", + "The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.", + "Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.", + "Update to %1$s is available." : "%1$s(으)로 업데이트할 수 있습니다.", + "Update for %1$s to version %2$s is available." : "%1$s을(를) 버전 %2$s(으)로 업데이트할 수 있습니다.", + "Update for {app} to version %s is available." : "{app}을(를) 버전 %s(으)로 업데이트할 수 있습니다.", "Open updater" : "업데이터 열기", - "Your version is up to date." : "최신 버전을 사용하고 있습니다.", + "The update check is not yet finished. Please refresh the page." : "업데이트 확인이 아직 끝나지 않았습니다. 페이지를 새로 고치십시오.", "A non-default update server is in use to be checked for updates:" : "기본 업데이트 서버가 아닌 곳에서 업데이트를 확인하고 있음:", "Update channel:" : "업데이트 채널:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "항상 새로운 버전이나 실험 채널로 업그레이드할 수 있지만, 안정 채널로 다운그레이드할 수는 없습니다.", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "앱 업데이트 알림만 사용할 수 있습니다.", "The selected update channel does not support updates of the server." : "선택한 업데이트 채널은 서버 업데이트를 지원하지 않습니다.", "Could not start updater, please try the manual update" : "업데이트를 시작할 수 없습니다. 수동 업데이트를 시도하십시오.", - "Update notifications" : "업데이트 알림", - "Channel updated" : "채널 업데이트됨", - "The update server could not be reached since %d days to check for new updates." : "업데이트 서버에 %d일 동안 접근할 수 없어서 새 업데이트를 확인할 수 없습니다.", - "Please check the Nextcloud and server log files for errors." : "Nextcloud 및 서버 로그에서 오류 정보를 확인하십시오.", - "Update to %1$s is available." : "%1$s(으)로 업데이트할 수 있습니다.", - "Update for %1$s to version %2$s is available." : "%1$s을(를) 버전 %2$s(으)로 업데이트할 수 있습니다.", - "Update for {app} to version %s is available." : "{app}을(를) 버전 %s(으)로 업데이트할 수 있습니다.", "A new version is available: %s" : "새 버전을 사용할 수 있습니다: %s", "Download now" : "지금 다운로드", + "Your version is up to date." : "최신 버전을 사용하고 있습니다.", "Checked on %s" : "%s에 확인함", - "The selected update channel makes dedicated notifications for the server obsolete." : "선택한 업데이트 채널은 서버 알림을 사용하지 않습니다.", - "The update check is not yet finished. Please refresh the page." : "업데이트 확인이 아직 끝나지 않았습니다. 페이지를 새로 고치십시오." + "The selected update channel makes dedicated notifications for the server obsolete." : "선택한 업데이트 채널은 서버 알림을 사용하지 않습니다." },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/lt_LT.js b/apps/updatenotification/l10n/lt_LT.js index a87493aae63..d9cf34e447b 100644 --- a/apps/updatenotification/l10n/lt_LT.js +++ b/apps/updatenotification/l10n/lt_LT.js @@ -2,8 +2,16 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.", + "Update notifications" : "Atnaujinimų pranešimai", + "Channel updated" : "Kanalas atnaujintas", + "The update server could not be reached since %d days to check for new updates." : " Atnaujinimo serveris nepasiekiamas %d dienas.", + "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.", + "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.", + "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.", + "Update for {app} to version %s is available." : "Yra prieinamas {app} atnaujinimas į versiją %s.", "Open updater" : "Atverti atnaujinimo programą", - "Your version is up to date." : "Jūsų versija yra naujausia.", + "What's new?" : "Kas naujo?", + "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo.", "A non-default update server is in use to be checked for updates:" : "Atnaujinimų aptikimui yra naudojamas ne nenumatytasis serveris: ", "Update channel:" : "Atnaujinimo kanalas:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.", @@ -11,17 +19,12 @@ OC.L10N.register( "Notify members of the following groups about available updates:" : "Apie galimus atnaujinimus informuoti narius iš grupių:", "Only notification for app updates are available." : "Yra prieinami tik pranešimai apie programėlių atnaujinimus.", "The selected update channel does not support updates of the server." : "Pasirinktas kanalas nepalaiko serverio atnaujinimų.", + "A new version is available: <strong>{newVersionString}</strong>" : "Yra prieinama nauja versija: <strong>{newVersionString}</strong>", + "Checked on {lastCheckedDate}" : "Tikrinta {lastCheckedDate}", "Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome bandyti atnaujinimą rankiniu būdu", - "Update notifications" : "Atnaujinimų pranešimai", - "Channel updated" : "Kanalas atnaujintas", - "The update server could not be reached since %d days to check for new updates." : " Atnaujinimo serveris nepasiekiamas %d dienas.", - "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.", - "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.", - "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.", - "Update for {app} to version %s is available." : "Yra prieinamas {app} atnaujinimas į versiją %s.", "A new version is available: %s" : "Yra prieinama nauja versija: %s", "Download now" : "Atsisiųsti dabar", - "Checked on %s" : "Tikrinta %s", - "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo." + "Your version is up to date." : "Jūsų versija yra naujausia.", + "Checked on %s" : "Tikrinta %s" }, "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);"); diff --git a/apps/updatenotification/l10n/lt_LT.json b/apps/updatenotification/l10n/lt_LT.json index 7bc1838b681..63d076ab2b7 100644 --- a/apps/updatenotification/l10n/lt_LT.json +++ b/apps/updatenotification/l10n/lt_LT.json @@ -1,7 +1,15 @@ { "translations": { "{version} is available. Get more information on how to update." : "Yra prieinama {version}. Gaukite daugiau informacijos apie tai kaip atnaujinti.", + "Update notifications" : "Atnaujinimų pranešimai", + "Channel updated" : "Kanalas atnaujintas", + "The update server could not be reached since %d days to check for new updates." : " Atnaujinimo serveris nepasiekiamas %d dienas.", + "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.", + "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.", + "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.", + "Update for {app} to version %s is available." : "Yra prieinamas {app} atnaujinimas į versiją %s.", "Open updater" : "Atverti atnaujinimo programą", - "Your version is up to date." : "Jūsų versija yra naujausia.", + "What's new?" : "Kas naujo?", + "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo.", "A non-default update server is in use to be checked for updates:" : "Atnaujinimų aptikimui yra naudojamas ne nenumatytasis serveris: ", "Update channel:" : "Atnaujinimo kanalas:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Visada galite atnaujinti į naujesnę versiją / eksperimentinį kanalą. Tačiau niekada negalite sendinti versijos ar persijungti į stabilų kanalą.", @@ -9,17 +17,12 @@ "Notify members of the following groups about available updates:" : "Apie galimus atnaujinimus informuoti narius iš grupių:", "Only notification for app updates are available." : "Yra prieinami tik pranešimai apie programėlių atnaujinimus.", "The selected update channel does not support updates of the server." : "Pasirinktas kanalas nepalaiko serverio atnaujinimų.", + "A new version is available: <strong>{newVersionString}</strong>" : "Yra prieinama nauja versija: <strong>{newVersionString}</strong>", + "Checked on {lastCheckedDate}" : "Tikrinta {lastCheckedDate}", "Could not start updater, please try the manual update" : "Nepavyko paleisti atnaujinimo programos, prašome bandyti atnaujinimą rankiniu būdu", - "Update notifications" : "Atnaujinimų pranešimai", - "Channel updated" : "Kanalas atnaujintas", - "The update server could not be reached since %d days to check for new updates." : " Atnaujinimo serveris nepasiekiamas %d dienas.", - "Please check the Nextcloud and server log files for errors." : "Prašome patikrinti Nextcloud ir serverio žurnalų įrašus apie galimas klaidas.", - "Update to %1$s is available." : "Yra prieinamas atnaujinimas į %1$s.", - "Update for %1$s to version %2$s is available." : "Yra prieinamas %1$s atnaujinimas į versiją %2$s.", - "Update for {app} to version %s is available." : "Yra prieinamas {app} atnaujinimas į versiją %s.", "A new version is available: %s" : "Yra prieinama nauja versija: %s", "Download now" : "Atsisiųsti dabar", - "Checked on %s" : "Tikrinta %s", - "The update check is not yet finished. Please refresh the page." : "Atnaujinimų patikrinimas dar neužbaigtas. Prašome įkelti puslapį iš naujo." + "Your version is up to date." : "Jūsų versija yra naujausia.", + "Checked on %s" : "Tikrinta %s" },"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);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/lv.js b/apps/updatenotification/l10n/lv.js index 27e63c27191..67eda0316c2 100644 --- a/apps/updatenotification/l10n/lv.js +++ b/apps/updatenotification/l10n/lv.js @@ -2,8 +2,12 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} ir pieejama. Iegūstiet vairāk informācijas par to, kā atjaunināt.", + "Update notifications" : "Atjauninājumu paziņojumi", + "Channel updated" : "Kanāls atjaunots", + "Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.", + "Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.", + "Update for {app} to version %s is available." : "Atjauninājums {app} uz versiju %s ir pieejams.", "Open updater" : "Atveriet atjauninātāju", - "Your version is up to date." : "Jums ir jaunākā versija.", "Update channel:" : "Atjaunināt kanālu:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Jūs vienmēr varat atjaunināt to uz jaunāku versiju / eksperimentālo versiju. Bet nekad nevar atgriezties uz stabilāku versiju.", "Notify members of the following groups about available updates:" : "Paziņot šo grupu locekļiem par pieejamajiem atjauninājumiem:", @@ -12,13 +16,9 @@ OC.L10N.register( "A new version is available: <strong>{newVersionString}</strong>" : "Ir pieejama jauna versija: <strong>{newVersionString}</strong>", "Checked on {lastCheckedDate}" : "Pārbaudīts {lastCheckedDate}", "Could not start updater, please try the manual update" : "Nevar sākt atjauninājumu, lūdzu, mēģiniet manuālo atjauninājumu", - "Update notifications" : "Atjauninājumu paziņojumi", - "Channel updated" : "Kanāls atjaunots", - "Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.", - "Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.", - "Update for {app} to version %s is available." : "Atjauninājums {app} uz versiju %s ir pieejams.", "A new version is available: %s" : "Ir pieejama jauna versija: %s", "Download now" : "Lejupielādēt tagad", + "Your version is up to date." : "Jums ir jaunākā versija.", "Checked on %s" : "Pārbaudīts %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Izvēlētais atjauninājumu kanāls rādīs īpašus paziņojumus ja serveris novecojis." }, diff --git a/apps/updatenotification/l10n/lv.json b/apps/updatenotification/l10n/lv.json index 928b89b956b..3f746921100 100644 --- a/apps/updatenotification/l10n/lv.json +++ b/apps/updatenotification/l10n/lv.json @@ -1,7 +1,11 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} ir pieejama. Iegūstiet vairāk informācijas par to, kā atjaunināt.", + "Update notifications" : "Atjauninājumu paziņojumi", + "Channel updated" : "Kanāls atjaunots", + "Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.", + "Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.", + "Update for {app} to version %s is available." : "Atjauninājums {app} uz versiju %s ir pieejams.", "Open updater" : "Atveriet atjauninātāju", - "Your version is up to date." : "Jums ir jaunākā versija.", "Update channel:" : "Atjaunināt kanālu:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Jūs vienmēr varat atjaunināt to uz jaunāku versiju / eksperimentālo versiju. Bet nekad nevar atgriezties uz stabilāku versiju.", "Notify members of the following groups about available updates:" : "Paziņot šo grupu locekļiem par pieejamajiem atjauninājumiem:", @@ -10,13 +14,9 @@ "A new version is available: <strong>{newVersionString}</strong>" : "Ir pieejama jauna versija: <strong>{newVersionString}</strong>", "Checked on {lastCheckedDate}" : "Pārbaudīts {lastCheckedDate}", "Could not start updater, please try the manual update" : "Nevar sākt atjauninājumu, lūdzu, mēģiniet manuālo atjauninājumu", - "Update notifications" : "Atjauninājumu paziņojumi", - "Channel updated" : "Kanāls atjaunots", - "Update to %1$s is available." : "Atjauninājums uz %1$s ir pieejams.", - "Update for %1$s to version %2$s is available." : "Atjauninājums %1$s uz versiju %2$s ir pieejams.", - "Update for {app} to version %s is available." : "Atjauninājums {app} uz versiju %s ir pieejams.", "A new version is available: %s" : "Ir pieejama jauna versija: %s", "Download now" : "Lejupielādēt tagad", + "Your version is up to date." : "Jums ir jaunākā versija.", "Checked on %s" : "Pārbaudīts %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Izvēlētais atjauninājumu kanāls rādīs īpašus paziņojumus ja serveris novecojis." },"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" diff --git a/apps/updatenotification/l10n/nb.js b/apps/updatenotification/l10n/nb.js index 361ea3c65cb..6a1b86b8300 100644 --- a/apps/updatenotification/l10n/nb.js +++ b/apps/updatenotification/l10n/nb.js @@ -2,8 +2,16 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.", + "Update notifications" : "Oppdateringsvarsel", + "Channel updated" : "Kanal oppdatert", + "The update server could not be reached since %d days to check for new updates." : "Har ikke oppnådd kontakt med oppdateringstjeneren på %d dager for å se etter nye oppdateringer.", + "Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.", + "Update to %1$s is available." : "Oppdatering til %1$s er tilgjengelig.", + "Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.", + "Update for {app} to version %s is available." : "Oppdatering for {app} til versjon %s er tilgjengelig.", + "Update notification" : "Oppdateringsvarsel", "Open updater" : "Åpne oppdaterer", - "Your version is up to date." : "Du har nyeste versjon.", + "The update check is not yet finished. Please refresh the page." : "Oppdateringssjekken er ikke ferdig, vennligst oppdater siden.", "A non-default update server is in use to be checked for updates:" : "En ikke-forvalgt oppdateringstjener brukes for å se etter oppdateringer:", "Update channel:" : "Oppdateringskanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid oppdatere til en nyere versjon / eksperimentell kanal. Men du kan aldri nedgradere til en mer stabil kanal.", @@ -14,18 +22,10 @@ OC.L10N.register( "A new version is available: <strong>{newVersionString}</strong>" : "En ny versjon er tilgjengelig: <strong>{newVersionString}</strong>", "Checked on {lastCheckedDate}" : "Sist sjekket {lastCheckedDate}", "Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, prøv å oppdatere manuelt", - "Update notifications" : "Oppdateringsvarsel", - "Channel updated" : "Kanal oppdatert", - "The update server could not be reached since %d days to check for new updates." : "Har ikke oppnådd kontakt med oppdateringstjeneren på %d dager for å se etter nye oppdateringer.", - "Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.", - "Update to %1$s is available." : "Oppdatering til %1$s er tilgjengelig.", - "Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.", - "Update for {app} to version %s is available." : "Oppdatering for {app} til versjon %s er tilgjengelig.", - "Update notification" : "Oppdateringsvarsel", "A new version is available: %s" : "En ny versjon er tilgjengelig: %s", "Download now" : "Last ned nå", + "Your version is up to date." : "Du har nyeste versjon.", "Checked on %s" : "Sjekket %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør dedikerte varsler til denne tjeneren utdatert.", - "The update check is not yet finished. Please refresh the page." : "Oppdateringssjekken er ikke ferdig, vennligst oppdater siden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør dedikerte varsler til denne tjeneren utdatert." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/nb.json b/apps/updatenotification/l10n/nb.json index 00946c3a317..e6d9a719256 100644 --- a/apps/updatenotification/l10n/nb.json +++ b/apps/updatenotification/l10n/nb.json @@ -1,7 +1,15 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.", + "Update notifications" : "Oppdateringsvarsel", + "Channel updated" : "Kanal oppdatert", + "The update server could not be reached since %d days to check for new updates." : "Har ikke oppnådd kontakt med oppdateringstjeneren på %d dager for å se etter nye oppdateringer.", + "Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.", + "Update to %1$s is available." : "Oppdatering til %1$s er tilgjengelig.", + "Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.", + "Update for {app} to version %s is available." : "Oppdatering for {app} til versjon %s er tilgjengelig.", + "Update notification" : "Oppdateringsvarsel", "Open updater" : "Åpne oppdaterer", - "Your version is up to date." : "Du har nyeste versjon.", + "The update check is not yet finished. Please refresh the page." : "Oppdateringssjekken er ikke ferdig, vennligst oppdater siden.", "A non-default update server is in use to be checked for updates:" : "En ikke-forvalgt oppdateringstjener brukes for å se etter oppdateringer:", "Update channel:" : "Oppdateringskanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid oppdatere til en nyere versjon / eksperimentell kanal. Men du kan aldri nedgradere til en mer stabil kanal.", @@ -12,18 +20,10 @@ "A new version is available: <strong>{newVersionString}</strong>" : "En ny versjon er tilgjengelig: <strong>{newVersionString}</strong>", "Checked on {lastCheckedDate}" : "Sist sjekket {lastCheckedDate}", "Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, prøv å oppdatere manuelt", - "Update notifications" : "Oppdateringsvarsel", - "Channel updated" : "Kanal oppdatert", - "The update server could not be reached since %d days to check for new updates." : "Har ikke oppnådd kontakt med oppdateringstjeneren på %d dager for å se etter nye oppdateringer.", - "Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.", - "Update to %1$s is available." : "Oppdatering til %1$s er tilgjengelig.", - "Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.", - "Update for {app} to version %s is available." : "Oppdatering for {app} til versjon %s er tilgjengelig.", - "Update notification" : "Oppdateringsvarsel", "A new version is available: %s" : "En ny versjon er tilgjengelig: %s", "Download now" : "Last ned nå", + "Your version is up to date." : "Du har nyeste versjon.", "Checked on %s" : "Sjekket %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør dedikerte varsler til denne tjeneren utdatert.", - "The update check is not yet finished. Please refresh the page." : "Oppdateringssjekken er ikke ferdig, vennligst oppdater siden." + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valgte oppdateringskanalen gjør dedikerte varsler til denne tjeneren utdatert." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/nl.js b/apps/updatenotification/l10n/nl.js index b3cb7c8e273..b208d0f45d9 100644 --- a/apps/updatenotification/l10n/nl.js +++ b/apps/updatenotification/l10n/nl.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.", + "Update notifications" : "Bijwerken meldingen", + "Channel updated" : "Kanaal bijgewerkt", + "The update server could not be reached since %d days to check for new updates." : "De updateserver kon sinds %d dagen niet meer worden bereikt om op updates te controleren.", + "Please check the Nextcloud and server log files for errors." : "Controleer de Nextcloud en server logbestanden op fouten.", + "Update to %1$s is available." : "Update naar %1$s is beschikbaar.", + "Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.", + "Update for {app} to version %s is available." : "Update voor {app} naar versie %s is beschikbaar.", + "Update notification" : "Bijwerkmelding", "Apps with available updates" : "Apps met beschikbare updates", "Open updater" : "Open updater", - "Your version is up to date." : "Je versie is up to date.", + "The update check is not yet finished. Please refresh the page." : "De update controle is niet afgerond. Ververs de pagina.", "A non-default update server is in use to be checked for updates:" : "Een niet-standaard updateserver is in gebruik om te worden gecontroleerd op updates:", "Update channel:" : "Bijwerkkanaal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Je kunt altijd updaten naar een nieuwere versie of experimenteel kanaal. Maar terug naar een oudere versie of een stabieler kanaal is niet mogelijk.", @@ -22,18 +30,10 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>productie</strong> heeft altijd de laatste patches, maar de update naar de volgende grote release nog niet onmiddellijk. Die update gebeurt meestal bij de tweede kleine release (x.0.2).", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>bèta</strong> is een versie om nieuwe functies uit te testen, niet om te gebruiken in een productieomgeving.", "Could not start updater, please try the manual update" : "Kon de updater niet starten, probeer alsjeblieft de handmatige update", - "Update notifications" : "Bijwerken meldingen", - "Channel updated" : "Kanaal bijgewerkt", - "The update server could not be reached since %d days to check for new updates." : "De updateserver kon sinds %d dagen niet meer worden bereikt om op updates te controleren.", - "Please check the Nextcloud and server log files for errors." : "Controleer de Nextcloud en server logbestanden op fouten.", - "Update to %1$s is available." : "Update naar %1$s is beschikbaar.", - "Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.", - "Update for {app} to version %s is available." : "Update voor {app} naar versie %s is beschikbaar.", - "Update notification" : "Bijwerkmelding", "A new version is available: %s" : "Er is een nieuwe versie beschikbaar: %s", "Download now" : "Download nu", + "Your version is up to date." : "Je versie is up to date.", "Checked on %s" : "Gecontroleerd op %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren.", - "The update check is not yet finished. Please refresh the page." : "De update controle is niet afgerond. Ververs de pagina." + "The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/nl.json b/apps/updatenotification/l10n/nl.json index 26d42126616..866b2e6fa08 100644 --- a/apps/updatenotification/l10n/nl.json +++ b/apps/updatenotification/l10n/nl.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.", + "Update notifications" : "Bijwerken meldingen", + "Channel updated" : "Kanaal bijgewerkt", + "The update server could not be reached since %d days to check for new updates." : "De updateserver kon sinds %d dagen niet meer worden bereikt om op updates te controleren.", + "Please check the Nextcloud and server log files for errors." : "Controleer de Nextcloud en server logbestanden op fouten.", + "Update to %1$s is available." : "Update naar %1$s is beschikbaar.", + "Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.", + "Update for {app} to version %s is available." : "Update voor {app} naar versie %s is beschikbaar.", + "Update notification" : "Bijwerkmelding", "Apps with available updates" : "Apps met beschikbare updates", "Open updater" : "Open updater", - "Your version is up to date." : "Je versie is up to date.", + "The update check is not yet finished. Please refresh the page." : "De update controle is niet afgerond. Ververs de pagina.", "A non-default update server is in use to be checked for updates:" : "Een niet-standaard updateserver is in gebruik om te worden gecontroleerd op updates:", "Update channel:" : "Bijwerkkanaal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Je kunt altijd updaten naar een nieuwere versie of experimenteel kanaal. Maar terug naar een oudere versie of een stabieler kanaal is niet mogelijk.", @@ -20,18 +28,10 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>productie</strong> heeft altijd de laatste patches, maar de update naar de volgende grote release nog niet onmiddellijk. Die update gebeurt meestal bij de tweede kleine release (x.0.2).", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>bèta</strong> is een versie om nieuwe functies uit te testen, niet om te gebruiken in een productieomgeving.", "Could not start updater, please try the manual update" : "Kon de updater niet starten, probeer alsjeblieft de handmatige update", - "Update notifications" : "Bijwerken meldingen", - "Channel updated" : "Kanaal bijgewerkt", - "The update server could not be reached since %d days to check for new updates." : "De updateserver kon sinds %d dagen niet meer worden bereikt om op updates te controleren.", - "Please check the Nextcloud and server log files for errors." : "Controleer de Nextcloud en server logbestanden op fouten.", - "Update to %1$s is available." : "Update naar %1$s is beschikbaar.", - "Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.", - "Update for {app} to version %s is available." : "Update voor {app} naar versie %s is beschikbaar.", - "Update notification" : "Bijwerkmelding", "A new version is available: %s" : "Er is een nieuwe versie beschikbaar: %s", "Download now" : "Download nu", + "Your version is up to date." : "Je versie is up to date.", "Checked on %s" : "Gecontroleerd op %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren.", - "The update check is not yet finished. Please refresh the page." : "De update controle is niet afgerond. Ververs de pagina." + "The selected update channel makes dedicated notifications for the server obsolete." : "Het geselecteerde updatekanaal maakt overbodig om serverspecifieke meldingen apart te genereren." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js index f9f0b44d223..7a79bf95a6d 100644 --- a/apps/updatenotification/l10n/pl.js +++ b/apps/updatenotification/l10n/pl.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.", + "Update notifications" : "Powiadomienia o aktualizacji", + "Channel updated" : "Kanał zaktualizowany", + "The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.", + "Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu znalezienia błędów.", + "Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.", + "Update for %1$s to version %2$s is available." : "Dostępna jest aktualizacja dla %1$s do wersji %2$s", + "Update for {app} to version %s is available." : "Aktualizacja dla {app} do wersji %s jest dostępna.", "Open updater" : "Otwórz aktualizator", - "Your version is up to date." : "Posiadasz aktualną wersję.", + "The update check is not yet finished. Please refresh the page." : "Sprawdzanie aktualizacji nie zostało jeszcze zakończone. Odśwież stronę.", "A non-default update server is in use to be checked for updates:" : "Do sprawdzania aktualizacji nie są używane domyślne serwery aktualizacji:", "Update channel:" : "Kanał aktualizacji:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Zawsze możesz zaktualizować do nowszej wersji z eksperymentalnego kanału. Ale nigdy nie możesz powrócić do wersji ze stabilnego kanału.", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Tylko powiadomienia o aktualizacjach aplikacji są dostępne.", "The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera.", "Could not start updater, please try the manual update" : "Nie można uruchomić aktualizacji, spróbuj z aktualizować ręcznie", - "Update notifications" : "Powiadomienia o aktualizacji", - "Channel updated" : "Kanał zaktualizowany", - "The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.", - "Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu znalezienia błędów.", - "Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.", - "Update for %1$s to version %2$s is available." : "Dostępna jest aktualizacja dla %1$s do wersji %2$s", - "Update for {app} to version %s is available." : "Aktualizacja dla {app} do wersji %s jest dostępna.", "A new version is available: %s" : "Dostępna jest nowa wersja: %s", "Download now" : "Pobierz teraz", + "Your version is up to date." : "Posiadasz aktualną wersję.", "Checked on %s" : "Sprawdzono: %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny.", - "The update check is not yet finished. Please refresh the page." : "Sprawdzanie aktualizacji nie zostało jeszcze zakończone. Odśwież stronę." + "The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny." }, "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);"); diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json index 9353de55e1e..7a322ad5eef 100644 --- a/apps/updatenotification/l10n/pl.json +++ b/apps/updatenotification/l10n/pl.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.", + "Update notifications" : "Powiadomienia o aktualizacji", + "Channel updated" : "Kanał zaktualizowany", + "The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.", + "Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu znalezienia błędów.", + "Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.", + "Update for %1$s to version %2$s is available." : "Dostępna jest aktualizacja dla %1$s do wersji %2$s", + "Update for {app} to version %s is available." : "Aktualizacja dla {app} do wersji %s jest dostępna.", "Open updater" : "Otwórz aktualizator", - "Your version is up to date." : "Posiadasz aktualną wersję.", + "The update check is not yet finished. Please refresh the page." : "Sprawdzanie aktualizacji nie zostało jeszcze zakończone. Odśwież stronę.", "A non-default update server is in use to be checked for updates:" : "Do sprawdzania aktualizacji nie są używane domyślne serwery aktualizacji:", "Update channel:" : "Kanał aktualizacji:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Zawsze możesz zaktualizować do nowszej wersji z eksperymentalnego kanału. Ale nigdy nie możesz powrócić do wersji ze stabilnego kanału.", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "Tylko powiadomienia o aktualizacjach aplikacji są dostępne.", "The selected update channel does not support updates of the server." : "Wybrany kanał aktualizacji nie obsługuje danego serwera.", "Could not start updater, please try the manual update" : "Nie można uruchomić aktualizacji, spróbuj z aktualizować ręcznie", - "Update notifications" : "Powiadomienia o aktualizacji", - "Channel updated" : "Kanał zaktualizowany", - "The update server could not be reached since %d days to check for new updates." : "Połączenie z serwerem z aktualizacjami w celu sprawdzenia nowych aktualizacji nie powiodło się od %d dni.", - "Please check the Nextcloud and server log files for errors." : "Proszę sprawdzić pliki z logami Nextcloud i serwera w celu znalezienia błędów.", - "Update to %1$s is available." : "Aktualizacja do %1$s jest dostępna.", - "Update for %1$s to version %2$s is available." : "Dostępna jest aktualizacja dla %1$s do wersji %2$s", - "Update for {app} to version %s is available." : "Aktualizacja dla {app} do wersji %s jest dostępna.", "A new version is available: %s" : "Dostępna jest nowa wersja: %s", "Download now" : "Pobierz teraz", + "Your version is up to date." : "Posiadasz aktualną wersję.", "Checked on %s" : "Sprawdzono: %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny.", - "The update check is not yet finished. Please refresh the page." : "Sprawdzanie aktualizacji nie zostało jeszcze zakończone. Odśwież stronę." + "The selected update channel makes dedicated notifications for the server obsolete." : "Wybrany kanał aktualizacji dla dedykowanych powiadomień dla serwera jest nieaktualny." },"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);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js index 5d3942f791c..6eba4486f14 100644 --- a/apps/updatenotification/l10n/pt_BR.js +++ b/apps/updatenotification/l10n/pt_BR.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.", + "Update notifications" : "Notificações de atualização", + "Channel updated" : "Canal atualizado", + "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.", + "Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ", + "Update to %1$s is available." : "Atualização para %1$s está disponível.", + "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", + "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", + "Update notification" : "Notificação de atualização", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Exibe notificações de atualização para o Nextcloud e fornece o SSO para o atualizador.", "Apps with available updates" : "Aplicativos com atualizações disponíveis", "Open updater" : "Abrir atualizador", - "Your version is up to date." : "Sua versão está atualizada.", + "What's new?" : "O que há de novo?", + "The update check is not yet finished. Please refresh the page." : "A verificação de atualização ainda não acabou. Atualize a página.", "A non-default update server is in use to be checked for updates:" : "Um servidor de atualização não padrão está sendo verificado por atualizações:", "Update channel:" : "Atualizar para:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode atualizar para uma versão mais nova ou experimental. No entanto, nunca poderá voltar para uma versão estável ou antiga.", @@ -22,21 +32,13 @@ OC.L10N.register( "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>produção</strong> sempre fornecerá o nível de patch mais recente, mas não será atualizada para a próxima versão principal imediatamente. Essa atualização geralmente acontece com o segundo lançamento menor (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>estável</strong> é a versão estável mais recente. É adequado para uso regular e será sempre atualizado para a versão principal mais recente.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> é uma versão de pré-lançamento apenas para testar novos recursos, não para ambientes de produção.", + "View changelog" : "Visualizar registro de alterações", "Could not start updater, please try the manual update" : "Não foi possível iniciar o atualizador, tente a atualização manual", - "Update notifications" : "Notificações de atualização", - "Channel updated" : "Canal atualizado", - "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.", - "Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ", - "Update to %1$s is available." : "Atualização para %1$s está disponível.", - "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", - "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", - "Update notification" : "Notificação de atualização", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Exibe notificações de atualização para o Nextcloud e fornece o SSO para o atualizador.", "A new version is available: %s" : "Uma nova versão está disponível: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "A versão que você está executando não é mais mantida. Por favor, atualize para uma versão suportada o mais rápido possível.", "Download now" : "Baixar agora", + "Your version is up to date." : "Sua versão está atualizada.", "Checked on %s" : "Verificada em %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "A atualização selecionada fornece notificações dedicadas para o servidor desatualizado.", - "The update check is not yet finished. Please refresh the page." : "A verificação de atualização ainda não acabou. Atualize a página." + "The selected update channel makes dedicated notifications for the server obsolete." : "A atualização selecionada fornece notificações dedicadas para o servidor desatualizado." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json index 3281d874baa..8c24535295e 100644 --- a/apps/updatenotification/l10n/pt_BR.json +++ b/apps/updatenotification/l10n/pt_BR.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.", + "Update notifications" : "Notificações de atualização", + "Channel updated" : "Canal atualizado", + "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.", + "Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ", + "Update to %1$s is available." : "Atualização para %1$s está disponível.", + "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", + "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", + "Update notification" : "Notificação de atualização", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Exibe notificações de atualização para o Nextcloud e fornece o SSO para o atualizador.", "Apps with available updates" : "Aplicativos com atualizações disponíveis", "Open updater" : "Abrir atualizador", - "Your version is up to date." : "Sua versão está atualizada.", + "What's new?" : "O que há de novo?", + "The update check is not yet finished. Please refresh the page." : "A verificação de atualização ainda não acabou. Atualize a página.", "A non-default update server is in use to be checked for updates:" : "Um servidor de atualização não padrão está sendo verificado por atualizações:", "Update channel:" : "Atualizar para:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode atualizar para uma versão mais nova ou experimental. No entanto, nunca poderá voltar para uma versão estável ou antiga.", @@ -20,21 +30,13 @@ "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>produção</strong> sempre fornecerá o nível de patch mais recente, mas não será atualizada para a próxima versão principal imediatamente. Essa atualização geralmente acontece com o segundo lançamento menor (x.0.2).", "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>estável</strong> é a versão estável mais recente. É adequado para uso regular e será sempre atualizado para a versão principal mais recente.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> é uma versão de pré-lançamento apenas para testar novos recursos, não para ambientes de produção.", + "View changelog" : "Visualizar registro de alterações", "Could not start updater, please try the manual update" : "Não foi possível iniciar o atualizador, tente a atualização manual", - "Update notifications" : "Notificações de atualização", - "Channel updated" : "Canal atualizado", - "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.", - "Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ", - "Update to %1$s is available." : "Atualização para %1$s está disponível.", - "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", - "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", - "Update notification" : "Notificação de atualização", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Exibe notificações de atualização para o Nextcloud e fornece o SSO para o atualizador.", "A new version is available: %s" : "Uma nova versão está disponível: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "A versão que você está executando não é mais mantida. Por favor, atualize para uma versão suportada o mais rápido possível.", "Download now" : "Baixar agora", + "Your version is up to date." : "Sua versão está atualizada.", "Checked on %s" : "Verificada em %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "A atualização selecionada fornece notificações dedicadas para o servidor desatualizado.", - "The update check is not yet finished. Please refresh the page." : "A verificação de atualização ainda não acabou. Atualize a página." + "The selected update channel makes dedicated notifications for the server obsolete." : "A atualização selecionada fornece notificações dedicadas para o servidor desatualizado." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js index e236c9ab79e..618d5892f23 100644 --- a/apps/updatenotification/l10n/ru.js +++ b/apps/updatenotification/l10n/ru.js @@ -2,9 +2,19 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.", + "Update notifications" : "Уведомления об обновлениях", + "Channel updated" : "Канал обновлен.", + "The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.", + "Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.", + "Update to %1$s is available." : "Доступно обновление до версии %1$s.", + "Update for %1$s to version %2$s is available." : "Для приложения «%1$s» доступно обновление до версии %2$s.", + "Update for {app} to version %s is available." : "Для приложения «{app}» доступно обновление до версии %s.", + "Update notification" : "Уведомление о новой версии", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).", "Apps with available updates" : "Приложения с доступными обновлениями", "Open updater" : "Открыть окно обновления", - "Your version is up to date." : "Версия не требует обновления.", + "What's new?" : "Что нового?", + "The update check is not yet finished. Please refresh the page." : "Проверка обновлений ещё не закончена. Пожалуйста обновите страницу.", "A non-default update server is in use to be checked for updates:" : "Не сервер по умолчанию используется как сервер для проверки обновлений:", "Update channel:" : "Канал обновлений:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Вы всегда можете переключиться на экспериментальный канал обновлений для получения новейших версий. Но учтите, что вы не сможете переключиться обратно на канал обновлений для стабильных версий.", @@ -20,22 +30,15 @@ OC.L10N.register( "<strong>All</strong> apps have an update for this version available" : "<strong>Все</strong> приложения имеют доступные обновления для этой версии", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> приложение не имеет доступного обновления для этой версии","<strong>%n</strong> приложений не имеют доступные обновления для этой версии","<strong>%n</strong> приложений не имеют доступные обновления для этой версии","<strong>%n</strong> приложений не имеют доступные обновления для этой версии"], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>промышленная</strong> всегда обеспечит последний уровень патча, но не будет сразу обновляться на следующий глобальный уровень. Такое обновление обычно происходит со вторым минорным выпуском (x.0.2).", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>стабильная</strong> - самая последняя стабильная версия. Она подходит для регулярного использования и всегда будет обновляться до последней крупной версии.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> это пред-релизная версия только для тестирования новых возможностей, не для промышленной эксплуатации.", + "View changelog" : "Смотреть изменения", "Could not start updater, please try the manual update" : "Не удалось обновить. Выполните обновление вручную.", - "Update notifications" : "Уведомления об обновлениях", - "Channel updated" : "Канал обновлен.", - "The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.", - "Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.", - "Update to %1$s is available." : "Доступно обновление до версии %1$s.", - "Update for %1$s to version %2$s is available." : "Для приложения «%1$s» доступно обновление до версии %2$s.", - "Update for {app} to version %s is available." : "Для приложения «{app}» доступно обновление до версии %s.", - "Update notification" : "Уведомление о новой версии", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).", "A new version is available: %s" : "Доступна новая версия: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Версия, которой вы пользуетесь, больше не обслуживается. Пожалуйста, обновитесь до поддерживаемой версии как можно скорее.", "Download now" : "Скачать сейчас", + "Your version is up to date." : "Версия не требует обновления.", "Checked on %s" : "Проверено %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел.", - "The update check is not yet finished. Please refresh the page." : "Проверка обновлений ещё не закончена. Пожалуйста обновите страницу." + "The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел." }, "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);"); diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json index 9bd81b86b1a..0909740f77d 100644 --- a/apps/updatenotification/l10n/ru.json +++ b/apps/updatenotification/l10n/ru.json @@ -1,8 +1,18 @@ { "translations": { "{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.", + "Update notifications" : "Уведомления об обновлениях", + "Channel updated" : "Канал обновлен.", + "The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.", + "Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.", + "Update to %1$s is available." : "Доступно обновление до версии %1$s.", + "Update for %1$s to version %2$s is available." : "Для приложения «%1$s» доступно обновление до версии %2$s.", + "Update for {app} to version %s is available." : "Для приложения «{app}» доступно обновление до версии %s.", + "Update notification" : "Уведомление о новой версии", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).", "Apps with available updates" : "Приложения с доступными обновлениями", "Open updater" : "Открыть окно обновления", - "Your version is up to date." : "Версия не требует обновления.", + "What's new?" : "Что нового?", + "The update check is not yet finished. Please refresh the page." : "Проверка обновлений ещё не закончена. Пожалуйста обновите страницу.", "A non-default update server is in use to be checked for updates:" : "Не сервер по умолчанию используется как сервер для проверки обновлений:", "Update channel:" : "Канал обновлений:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Вы всегда можете переключиться на экспериментальный канал обновлений для получения новейших версий. Но учтите, что вы не сможете переключиться обратно на канал обновлений для стабильных версий.", @@ -18,22 +28,15 @@ "<strong>All</strong> apps have an update for this version available" : "<strong>Все</strong> приложения имеют доступные обновления для этой версии", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> приложение не имеет доступного обновления для этой версии","<strong>%n</strong> приложений не имеют доступные обновления для этой версии","<strong>%n</strong> приложений не имеют доступные обновления для этой версии","<strong>%n</strong> приложений не имеют доступные обновления для этой версии"], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>промышленная</strong> всегда обеспечит последний уровень патча, но не будет сразу обновляться на следующий глобальный уровень. Такое обновление обычно происходит со вторым минорным выпуском (x.0.2).", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>стабильная</strong> - самая последняя стабильная версия. Она подходит для регулярного использования и всегда будет обновляться до последней крупной версии.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>beta</strong> это пред-релизная версия только для тестирования новых возможностей, не для промышленной эксплуатации.", + "View changelog" : "Смотреть изменения", "Could not start updater, please try the manual update" : "Не удалось обновить. Выполните обновление вручную.", - "Update notifications" : "Уведомления об обновлениях", - "Channel updated" : "Канал обновлен.", - "The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.", - "Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.", - "Update to %1$s is available." : "Доступно обновление до версии %1$s.", - "Update for %1$s to version %2$s is available." : "Для приложения «%1$s» доступно обновление до версии %2$s.", - "Update for {app} to version %s is available." : "Для приложения «{app}» доступно обновление до версии %s.", - "Update notification" : "Уведомление о новой версии", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).", "A new version is available: %s" : "Доступна новая версия: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Версия, которой вы пользуетесь, больше не обслуживается. Пожалуйста, обновитесь до поддерживаемой версии как можно скорее.", "Download now" : "Скачать сейчас", + "Your version is up to date." : "Версия не требует обновления.", "Checked on %s" : "Проверено %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел.", - "The update check is not yet finished. Please refresh the page." : "Проверка обновлений ещё не закончена. Пожалуйста обновите страницу." + "The selected update channel makes dedicated notifications for the server obsolete." : "Выбранный канал обновлений высылает специальные уведомления, если сервер устарел." },"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);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/sk.js b/apps/updatenotification/l10n/sk.js index a0c36afb569..f7ceb53aeeb 100644 --- a/apps/updatenotification/l10n/sk.js +++ b/apps/updatenotification/l10n/sk.js @@ -2,8 +2,16 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} je dostupná. Získajte viac informácií o postupe aktualizácie.", + "Update notifications" : "Aktualizovať hlásenia", + "Channel updated" : "Kanál bol aktualizovaný", + "The update server could not be reached since %d days to check for new updates." : "Aktualizačný server je nedostupný %d dní pre kontrolu aktualizácií.", + "Please check the Nextcloud and server log files for errors." : "Chyby skontrolujte prosím v logoch Nextcloud a webového servera", + "Update to %1$s is available." : "Je dostupná aktualizácia na verziu %1$s.", + "Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.", + "Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.", + "Update notification" : "Aktualizovať hlásenie", "Open updater" : "Otvoriť aktualizátor", - "Your version is up to date." : "Vaša verzia je atuálna.", + "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku.", "A non-default update server is in use to be checked for updates:" : "Pre kontrolu aktualizácií sa používa iný než predvolený server:", "Update channel:" : "Aktualizačný kanál:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy je možné prejsť na novšiu verziu / experimentálny kanál. Ale následne nie je možné prejsť naspäť na staršiu verziu / stabilnejší kanál.", @@ -13,19 +21,11 @@ OC.L10N.register( "The selected update channel does not support updates of the server." : "Vybraný aktualizačný kanál nepodporuje aktualizácie servera.", "A new version is available: <strong>{newVersionString}</strong>" : "Je dostupná nová verzia: <strong>{newVersionString}</strong>", "Could not start updater, please try the manual update" : "Nebolo možné spustiť aktualizátor, skúste prosím manuálnu aktualizáciu", - "Update notifications" : "Aktualizovať hlásenia", - "Channel updated" : "Kanál bol aktualizovaný", - "The update server could not be reached since %d days to check for new updates." : "Aktualizačný server je nedostupný %d dní pre kontrolu aktualizácií.", - "Please check the Nextcloud and server log files for errors." : "Chyby skontrolujte prosím v logoch Nextcloud a webového servera", - "Update to %1$s is available." : "Je dostupná aktualizácia na verziu %1$s.", - "Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.", - "Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.", - "Update notification" : "Aktualizovať hlásenie", "A new version is available: %s" : "Je dostupná nová verzia: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Verzia, ktorú používate už nie je podporovaná. Čím skôr aktualizujte na podporovanú verziu prosím.", "Download now" : "Stiahnuť teraz", + "Your version is up to date." : "Vaša verzia je atuálna.", "Checked on %s" : "Skontrolované %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané.", - "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku." + "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané." }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/updatenotification/l10n/sk.json b/apps/updatenotification/l10n/sk.json index f0a15730d3e..108e3032904 100644 --- a/apps/updatenotification/l10n/sk.json +++ b/apps/updatenotification/l10n/sk.json @@ -1,7 +1,15 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} je dostupná. Získajte viac informácií o postupe aktualizácie.", + "Update notifications" : "Aktualizovať hlásenia", + "Channel updated" : "Kanál bol aktualizovaný", + "The update server could not be reached since %d days to check for new updates." : "Aktualizačný server je nedostupný %d dní pre kontrolu aktualizácií.", + "Please check the Nextcloud and server log files for errors." : "Chyby skontrolujte prosím v logoch Nextcloud a webového servera", + "Update to %1$s is available." : "Je dostupná aktualizácia na verziu %1$s.", + "Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.", + "Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.", + "Update notification" : "Aktualizovať hlásenie", "Open updater" : "Otvoriť aktualizátor", - "Your version is up to date." : "Vaša verzia je atuálna.", + "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku.", "A non-default update server is in use to be checked for updates:" : "Pre kontrolu aktualizácií sa používa iný než predvolený server:", "Update channel:" : "Aktualizačný kanál:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy je možné prejsť na novšiu verziu / experimentálny kanál. Ale následne nie je možné prejsť naspäť na staršiu verziu / stabilnejší kanál.", @@ -11,19 +19,11 @@ "The selected update channel does not support updates of the server." : "Vybraný aktualizačný kanál nepodporuje aktualizácie servera.", "A new version is available: <strong>{newVersionString}</strong>" : "Je dostupná nová verzia: <strong>{newVersionString}</strong>", "Could not start updater, please try the manual update" : "Nebolo možné spustiť aktualizátor, skúste prosím manuálnu aktualizáciu", - "Update notifications" : "Aktualizovať hlásenia", - "Channel updated" : "Kanál bol aktualizovaný", - "The update server could not be reached since %d days to check for new updates." : "Aktualizačný server je nedostupný %d dní pre kontrolu aktualizácií.", - "Please check the Nextcloud and server log files for errors." : "Chyby skontrolujte prosím v logoch Nextcloud a webového servera", - "Update to %1$s is available." : "Je dostupná aktualizácia na verziu %1$s.", - "Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.", - "Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.", - "Update notification" : "Aktualizovať hlásenie", "A new version is available: %s" : "Je dostupná nová verzia: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Verzia, ktorú používate už nie je podporovaná. Čím skôr aktualizujte na podporovanú verziu prosím.", "Download now" : "Stiahnuť teraz", + "Your version is up to date." : "Vaša verzia je atuálna.", "Checked on %s" : "Skontrolované %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané.", - "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku." + "The selected update channel makes dedicated notifications for the server obsolete." : "Pre vybraný aktualizačný kanál budú priradené upozornenia pre server zastarané." },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/sq.js b/apps/updatenotification/l10n/sq.js index 4e5779aa406..3f5420c3e38 100644 --- a/apps/updatenotification/l10n/sq.js +++ b/apps/updatenotification/l10n/sq.js @@ -2,8 +2,14 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.", + "Update notifications" : "Njoftime përditësimesh", + "Channel updated" : "Kanali u përditësua", + "The update server could not be reached since %d days to check for new updates." : "Përditësimi i serverit nuk mund të arrihej deri sa %dtë kontrollohen për përditësime të reja.", + "Please check the Nextcloud and server log files for errors." : "Ju lutemi kontrolloni dosjet e Nextcloud dhe te server log-ut per gabimet", + "Update to %1$s is available." : "Përditësimi te%1$s është në dispozicion.", + "Update for %1$s to version %2$s is available." : "Është gati përditësimi për %1$s në version %2$s.", + "Update for {app} to version %s is available." : "Përditësimi për {app} në versionin %s është në dispozicion", "Open updater" : "Hape përditësuesin", - "Your version is up to date." : "Versioni juaj është i përditësuar.", "Update channel:" : "Kanal përditësimesh:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Vini re se pas një lëshimi të ri mund të duhet pak kohë para se të shfaqet këtu. Ne hapim versione të reja të shpërndara me kalimin e kohës tek përdoruesit tanë dhe nganjëherë kalojmë një version kur gjenden çështjet.", @@ -11,15 +17,9 @@ OC.L10N.register( "Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.", "The selected update channel does not support updates of the server." : "Kanali i zgjdhur i përditësimit nuk mbështet përditësime të shvrbyesit.", "Could not start updater, please try the manual update" : "Nuk mundi të filloj përditësuesi, ju lutemi të provoni përditësimin manual", - "Update notifications" : "Njoftime përditësimesh", - "Channel updated" : "Kanali u përditësua", - "The update server could not be reached since %d days to check for new updates." : "Përditësimi i serverit nuk mund të arrihej deri sa %dtë kontrollohen për përditësime të reja.", - "Please check the Nextcloud and server log files for errors." : "Ju lutemi kontrolloni dosjet e Nextcloud dhe te server log-ut per gabimet", - "Update to %1$s is available." : "Përditësimi te%1$s është në dispozicion.", - "Update for %1$s to version %2$s is available." : "Është gati përditësimi për %1$s në version %2$s.", - "Update for {app} to version %s is available." : "Përditësimi për {app} në versionin %s është në dispozicion", "A new version is available: %s" : "Ka gati një version të ri: %s", "Download now" : "Shkarko tani", + "Your version is up to date." : "Versioni juaj është i përditësuar.", "Checked on %s" : "Kontrolluar më %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme." }, diff --git a/apps/updatenotification/l10n/sq.json b/apps/updatenotification/l10n/sq.json index 6a98cb02931..aee803b246b 100644 --- a/apps/updatenotification/l10n/sq.json +++ b/apps/updatenotification/l10n/sq.json @@ -1,7 +1,13 @@ { "translations": { "{version} is available. Get more information on how to update." : "Është gati {version}. Merrni më tepër informacion se si ta përditësoni.", + "Update notifications" : "Njoftime përditësimesh", + "Channel updated" : "Kanali u përditësua", + "The update server could not be reached since %d days to check for new updates." : "Përditësimi i serverit nuk mund të arrihej deri sa %dtë kontrollohen për përditësime të reja.", + "Please check the Nextcloud and server log files for errors." : "Ju lutemi kontrolloni dosjet e Nextcloud dhe te server log-ut per gabimet", + "Update to %1$s is available." : "Përditësimi te%1$s është në dispozicion.", + "Update for %1$s to version %2$s is available." : "Është gati përditësimi për %1$s në version %2$s.", + "Update for {app} to version %s is available." : "Përditësimi për {app} në versionin %s është në dispozicion", "Open updater" : "Hape përditësuesin", - "Your version is up to date." : "Versioni juaj është i përditësuar.", "Update channel:" : "Kanal përditësimesh:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mundeni përherë ta përditësoni me një version të ri / kanal eksperimental. Por nuk mund ta ulni kurrë versionin në një version më të qëndrueshëm.", "Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Vini re se pas një lëshimi të ri mund të duhet pak kohë para se të shfaqet këtu. Ne hapim versione të reja të shpërndara me kalimin e kohës tek përdoruesit tanë dhe nganjëherë kalojmë një version kur gjenden çështjet.", @@ -9,15 +15,9 @@ "Only notification for app updates are available." : "Vetëm njoftime për përditësime aplikacionesh janë të disponueshme.", "The selected update channel does not support updates of the server." : "Kanali i zgjdhur i përditësimit nuk mbështet përditësime të shvrbyesit.", "Could not start updater, please try the manual update" : "Nuk mundi të filloj përditësuesi, ju lutemi të provoni përditësimin manual", - "Update notifications" : "Njoftime përditësimesh", - "Channel updated" : "Kanali u përditësua", - "The update server could not be reached since %d days to check for new updates." : "Përditësimi i serverit nuk mund të arrihej deri sa %dtë kontrollohen për përditësime të reja.", - "Please check the Nextcloud and server log files for errors." : "Ju lutemi kontrolloni dosjet e Nextcloud dhe te server log-ut per gabimet", - "Update to %1$s is available." : "Përditësimi te%1$s është në dispozicion.", - "Update for %1$s to version %2$s is available." : "Është gati përditësimi për %1$s në version %2$s.", - "Update for {app} to version %s is available." : "Përditësimi për {app} në versionin %s është në dispozicion", "A new version is available: %s" : "Ka gati një version të ri: %s", "Download now" : "Shkarko tani", + "Your version is up to date." : "Versioni juaj është i përditësuar.", "Checked on %s" : "Kontrolluar më %s", "The selected update channel makes dedicated notifications for the server obsolete." : "Kanali i zgjedhur i përditësimit i bën njoftimet për shërbyesin të papërdorshme." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/updatenotification/l10n/sr.js b/apps/updatenotification/l10n/sr.js index f09dd0b92ed..374020abc85 100644 --- a/apps/updatenotification/l10n/sr.js +++ b/apps/updatenotification/l10n/sr.js @@ -2,9 +2,18 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "Верзија {version} је доступна. Сазнајте како да ажурирате.", + "Update notifications" : "Обавештења о ажурирању", + "Channel updated" : "Канал ажуриран", + "The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.", + "Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.", + "Update to %1$s is available." : "Доступно је ажурирање на %1$s. ", + "Update for %1$s to version %2$s is available." : "Доступно је ажурирање апликације %1$s на верзију %2$s.", + "Update for {app} to version %s is available." : "Доступно је ажурирање апликације {app} на верзију %s.", + "Update notification" : "Обавештење о ажурирању", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Приказује обавештавања о ажурирањима за Некстклауд и омогућава јединствену пријаву за програм ажурирања.", "Apps with available updates" : "Апликације са доступним ажурирањима", "Open updater" : "Отвори програм за ажурирање", - "Your version is up to date." : "Ваша верзија је ажурна.", + "The update check is not yet finished. Please refresh the page." : "Провера за новим верзијама још није готова. Освежите страну.", "A non-default update server is in use to be checked for updates:" : "Неподразумевани сервер за ажурирање је коришћен да провери нове верзије:", "Update channel:" : "Канал за ажурирање:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Увек можете да надоградите на новију верзију/експериментални канал. Али не можете се вратити на стабилни канал.", @@ -23,20 +32,11 @@ OC.L10N.register( "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>стабилна</strong> је најновија стабилна верзија. Прикладна за свакодневну употребу и увек се ажурира на најновију главну верзију.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>бета</strong> је пред-издање и служи само за тестирање нових могућности, не за свакодневни рад.", "Could not start updater, please try the manual update" : "Не могу да покренем програм за ажурирање, покушајте ручно ажурирање", - "Update notifications" : "Обавештења о ажурирању", - "Channel updated" : "Канал ажуриран", - "The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.", - "Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.", - "Update to %1$s is available." : "Доступно је ажурирање на %1$s. ", - "Update for %1$s to version %2$s is available." : "Доступно је ажурирање апликације %1$s на верзију %2$s.", - "Update for {app} to version %s is available." : "Доступно је ажурирање апликације {app} на верзију %s.", - "Update notification" : "Обавештење о ажурирању", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Приказује обавештавања о ажурирањима за Некстклауд и омогућава јединствену пријаву за програм ажурирања.", "A new version is available: %s" : "Доступна је нова верзија: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Верзија коју тренутно користите се више не одржава. Постарајте се да ажурирате инсталацију на неку подржану верзију што је пре могуће.", "Download now" : "Скини сада", + "Your version is up to date." : "Ваша верзија је ажурна.", "Checked on %s" : "Проверено %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Уз означени канал за ажурирање нема смисла да имате обавештења о новим верзијама.", - "The update check is not yet finished. Please refresh the page." : "Провера за новим верзијама још није готова. Освежите страну." + "The selected update channel makes dedicated notifications for the server obsolete." : "Уз означени канал за ажурирање нема смисла да имате обавештења о новим верзијама." }, "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/updatenotification/l10n/sr.json b/apps/updatenotification/l10n/sr.json index 576ad98a979..108f0885399 100644 --- a/apps/updatenotification/l10n/sr.json +++ b/apps/updatenotification/l10n/sr.json @@ -1,8 +1,17 @@ { "translations": { "{version} is available. Get more information on how to update." : "Верзија {version} је доступна. Сазнајте како да ажурирате.", + "Update notifications" : "Обавештења о ажурирању", + "Channel updated" : "Канал ажуриран", + "The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.", + "Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.", + "Update to %1$s is available." : "Доступно је ажурирање на %1$s. ", + "Update for %1$s to version %2$s is available." : "Доступно је ажурирање апликације %1$s на верзију %2$s.", + "Update for {app} to version %s is available." : "Доступно је ажурирање апликације {app} на верзију %s.", + "Update notification" : "Обавештење о ажурирању", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Приказује обавештавања о ажурирањима за Некстклауд и омогућава јединствену пријаву за програм ажурирања.", "Apps with available updates" : "Апликације са доступним ажурирањима", "Open updater" : "Отвори програм за ажурирање", - "Your version is up to date." : "Ваша верзија је ажурна.", + "The update check is not yet finished. Please refresh the page." : "Провера за новим верзијама још није готова. Освежите страну.", "A non-default update server is in use to be checked for updates:" : "Неподразумевани сервер за ажурирање је коришћен да провери нове верзије:", "Update channel:" : "Канал за ажурирање:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Увек можете да надоградите на новију верзију/експериментални канал. Али не можете се вратити на стабилни канал.", @@ -21,20 +30,11 @@ "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>стабилна</strong> је најновија стабилна верзија. Прикладна за свакодневну употребу и увек се ажурира на најновију главну верзију.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>бета</strong> је пред-издање и служи само за тестирање нових могућности, не за свакодневни рад.", "Could not start updater, please try the manual update" : "Не могу да покренем програм за ажурирање, покушајте ручно ажурирање", - "Update notifications" : "Обавештења о ажурирању", - "Channel updated" : "Канал ажуриран", - "The update server could not be reached since %d days to check for new updates." : "Сервер за ажурирања није доступан пошто је прошло %d дана од последње провере ажурирања.", - "Please check the Nextcloud and server log files for errors." : "Проверите логове од сервера и од Некстклауда за грешке.", - "Update to %1$s is available." : "Доступно је ажурирање на %1$s. ", - "Update for %1$s to version %2$s is available." : "Доступно је ажурирање апликације %1$s на верзију %2$s.", - "Update for {app} to version %s is available." : "Доступно је ажурирање апликације {app} на верзију %s.", - "Update notification" : "Обавештење о ажурирању", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Приказује обавештавања о ажурирањима за Некстклауд и омогућава јединствену пријаву за програм ажурирања.", "A new version is available: %s" : "Доступна је нова верзија: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Верзија коју тренутно користите се више не одржава. Постарајте се да ажурирате инсталацију на неку подржану верзију што је пре могуће.", "Download now" : "Скини сада", + "Your version is up to date." : "Ваша верзија је ажурна.", "Checked on %s" : "Проверено %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Уз означени канал за ажурирање нема смисла да имате обавештења о новим верзијама.", - "The update check is not yet finished. Please refresh the page." : "Провера за новим верзијама још није готова. Освежите страну." + "The selected update channel makes dedicated notifications for the server obsolete." : "Уз означени канал за ажурирање нема смисла да имате обавештења о новим верзијама." },"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);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/sv.js b/apps/updatenotification/l10n/sv.js index a4e55cc8a19..2bb60020a56 100644 --- a/apps/updatenotification/l10n/sv.js +++ b/apps/updatenotification/l10n/sv.js @@ -2,9 +2,17 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.", + "Update notifications" : "Uppdateringsnotifikationer", + "Channel updated" : "Uppdateringskanal uppdaterad", + "The update server could not be reached since %d days to check for new updates." : "Uppdateringsservern kunde inte nås. Senaste kontakt för %d dagar sedan.", + "Please check the Nextcloud and server log files for errors." : "Vänligen kontrollera ditt moln och dess serverloggar för felmeddelanden.", + "Update to %1$s is available." : "Uppdatering till %1$s är tillgänglig.", + "Update for %1$s to version %2$s is available." : "Uppdatering för %1$s till version %2$s är tillgänglig.", + "Update for {app} to version %s is available." : "Uppdatering för {app} till version %s är tillgänglig.", + "Update notification" : "Uppdatera notifikation", "Apps with available updates" : "Appar med tillgängliga uppdateringar", "Open updater" : "Öppna uppdateraren", - "Your version is up to date." : "Din version är uppdaterad.", + "The update check is not yet finished. Please refresh the page." : "Uppdateringskontrollen är inte färdig ännu. Var god uppdatera sidan.", "A non-default update server is in use to be checked for updates:" : "En icke-standard updateringsserver används för att kolla efter uppdateringar:", "Update channel:" : "Uppdateringskanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal.", @@ -13,18 +21,10 @@ OC.L10N.register( "Only notification for app updates are available." : "Endast notifikation för app-uppdateringar är tillgängliga.", "The selected update channel does not support updates of the server." : "Den valda uppdateringskanalen stödjer inte uppdateringar för servern.", "Could not start updater, please try the manual update" : "Kunde inte starta uppdateraren, vänligen försök uppdatera manuellt", - "Update notifications" : "Uppdateringsnotifikationer", - "Channel updated" : "Uppdateringskanal uppdaterad", - "The update server could not be reached since %d days to check for new updates." : "Uppdateringsservern kunde inte nås. Senaste kontakt för %d dagar sedan.", - "Please check the Nextcloud and server log files for errors." : "Vänligen kontrollera ditt moln och dess serverloggar för felmeddelanden.", - "Update to %1$s is available." : "Uppdatering till %1$s är tillgänglig.", - "Update for %1$s to version %2$s is available." : "Uppdatering för %1$s till version %2$s är tillgänglig.", - "Update for {app} to version %s is available." : "Uppdatering för {app} till version %s är tillgänglig.", - "Update notification" : "Uppdatera notifikation", "A new version is available: %s" : "En ny version är tillgänglig: %s", "Download now" : "Ladda ned nu", + "Your version is up to date." : "Din version är uppdaterad.", "Checked on %s" : "Senast kontrollerad %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valda uppdateringskanalen gör dedikerade notiser för servern förlegade.", - "The update check is not yet finished. Please refresh the page." : "Uppdateringskontrollen är inte färdig ännu. Var god uppdatera sidan." + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valda uppdateringskanalen gör dedikerade notiser för servern förlegade." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/sv.json b/apps/updatenotification/l10n/sv.json index 137a825d77e..0c4596bbce8 100644 --- a/apps/updatenotification/l10n/sv.json +++ b/apps/updatenotification/l10n/sv.json @@ -1,8 +1,16 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.", + "Update notifications" : "Uppdateringsnotifikationer", + "Channel updated" : "Uppdateringskanal uppdaterad", + "The update server could not be reached since %d days to check for new updates." : "Uppdateringsservern kunde inte nås. Senaste kontakt för %d dagar sedan.", + "Please check the Nextcloud and server log files for errors." : "Vänligen kontrollera ditt moln och dess serverloggar för felmeddelanden.", + "Update to %1$s is available." : "Uppdatering till %1$s är tillgänglig.", + "Update for %1$s to version %2$s is available." : "Uppdatering för %1$s till version %2$s är tillgänglig.", + "Update for {app} to version %s is available." : "Uppdatering för {app} till version %s är tillgänglig.", + "Update notification" : "Uppdatera notifikation", "Apps with available updates" : "Appar med tillgängliga uppdateringar", "Open updater" : "Öppna uppdateraren", - "Your version is up to date." : "Din version är uppdaterad.", + "The update check is not yet finished. Please refresh the page." : "Uppdateringskontrollen är inte färdig ännu. Var god uppdatera sidan.", "A non-default update server is in use to be checked for updates:" : "En icke-standard updateringsserver används för att kolla efter uppdateringar:", "Update channel:" : "Uppdateringskanal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal.", @@ -11,18 +19,10 @@ "Only notification for app updates are available." : "Endast notifikation för app-uppdateringar är tillgängliga.", "The selected update channel does not support updates of the server." : "Den valda uppdateringskanalen stödjer inte uppdateringar för servern.", "Could not start updater, please try the manual update" : "Kunde inte starta uppdateraren, vänligen försök uppdatera manuellt", - "Update notifications" : "Uppdateringsnotifikationer", - "Channel updated" : "Uppdateringskanal uppdaterad", - "The update server could not be reached since %d days to check for new updates." : "Uppdateringsservern kunde inte nås. Senaste kontakt för %d dagar sedan.", - "Please check the Nextcloud and server log files for errors." : "Vänligen kontrollera ditt moln och dess serverloggar för felmeddelanden.", - "Update to %1$s is available." : "Uppdatering till %1$s är tillgänglig.", - "Update for %1$s to version %2$s is available." : "Uppdatering för %1$s till version %2$s är tillgänglig.", - "Update for {app} to version %s is available." : "Uppdatering för {app} till version %s är tillgänglig.", - "Update notification" : "Uppdatera notifikation", "A new version is available: %s" : "En ny version är tillgänglig: %s", "Download now" : "Ladda ned nu", + "Your version is up to date." : "Din version är uppdaterad.", "Checked on %s" : "Senast kontrollerad %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Den valda uppdateringskanalen gör dedikerade notiser för servern förlegade.", - "The update check is not yet finished. Please refresh the page." : "Uppdateringskontrollen är inte färdig ännu. Var god uppdatera sidan." + "The selected update channel makes dedicated notifications for the server obsolete." : "Den valda uppdateringskanalen gör dedikerade notiser för servern förlegade." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index 9da0e1e41be..49bf95006e3 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -2,9 +2,18 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} sürümü yayınlanmış. Güncelleme hakkında ayrıntılı bilgi alın.", + "Update notifications" : "Güncelleme bildirimleri", + "Channel updated" : "Kanal güncellendi", + "The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.", + "Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.", + "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", + "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", + "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", + "Update notification" : "Güncelleme bildirimi", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Nextcloud güncelleme bildirimlerini görüntüler ve güncelleyici için Tek Oturum Açma (SSO) bilgilerini sağlar.", "Apps with available updates" : "Güncellenebilecek uygulamalar", "Open updater" : "Güncelleyici aç", - "Your version is up to date." : "Sürümünüz güncel.", + "The update check is not yet finished. Please refresh the page." : "Güncelleme denetimi henüz tamamlanmadı. Lütfen sayfayı yenileyin.", "A non-default update server is in use to be checked for updates:" : "Güncelleme denetimi için varsayılan sunucudan başka bir sunucu kullanılıyor:", "Update channel:" : "Güncelleme kanalı:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "İstediğiniz zaman yeni / deneysel bir güncelleme kanalına geçebilirsiniz. Daha kararlı bir kanala geri dönemezsiniz.", @@ -20,22 +29,14 @@ OC.L10N.register( "<strong>All</strong> apps have an update for this version available" : "<strong>Tüm</strong> uygulamaların bu sürüm için kullanılabilecek bir güncellemesi var", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> uygulamanın bu sürüm için kullanılabilecek bir güncellemesi yok","<strong>%n</strong> uygulamanın bu sürüm için kullanılabilecek bir güncellemesi yok"], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>Üretim</strong> her zaman en son yama düzeyini sağlar ancak sonraki büyük sürüme hemen güncellemez. Bu güncelleme genellikle ikinci küçük sürüm kullanılarak yapılır (x.0.2)", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>Kararlı</strong> son kararlı sürümü sağlar. Normal kullanımına uygundur ve her zaman son büyük sürüme günceller.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>Beta</strong> yeni özelliklerin denenebileceği yayım öncesi sürümüdür. Üretim ortamlarında kullanılması önerilmez.", "Could not start updater, please try the manual update" : "Güncelleyici başlatılamadı lütfen el ile güncellemeyi deneyin", - "Update notifications" : "Güncelleme bildirimleri", - "Channel updated" : "Kanal güncellendi", - "The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.", - "Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.", - "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", - "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", - "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", - "Update notification" : "Güncelleme bildirimi", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Nextcloud güncelleme bildirimlerini görüntüler ve güncelleyici için Tek Oturum Açma (SSO) bilgilerini sağlar.", "A new version is available: %s" : "Yeni bir sürüm yayınlanmış: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Kullanmakta olduğunuz sürüm artık desteklenmiyor. Lütfen en kısa sürede desteklenen bir sürüme güncellemeyi ihmal etmeyin.", "Download now" : "İndir", + "Your version is up to date." : "Sürümünüz güncel.", "Checked on %s" : "Son denetim: %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.", - "The update check is not yet finished. Please refresh the page." : "Güncelleme denetimi henüz tamamlanmadı. Lütfen sayfayı yenileyin." + "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index e564e69a1ad..a155d41eeec 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -1,8 +1,17 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} sürümü yayınlanmış. Güncelleme hakkında ayrıntılı bilgi alın.", + "Update notifications" : "Güncelleme bildirimleri", + "Channel updated" : "Kanal güncellendi", + "The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.", + "Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.", + "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", + "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", + "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", + "Update notification" : "Güncelleme bildirimi", + "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Nextcloud güncelleme bildirimlerini görüntüler ve güncelleyici için Tek Oturum Açma (SSO) bilgilerini sağlar.", "Apps with available updates" : "Güncellenebilecek uygulamalar", "Open updater" : "Güncelleyici aç", - "Your version is up to date." : "Sürümünüz güncel.", + "The update check is not yet finished. Please refresh the page." : "Güncelleme denetimi henüz tamamlanmadı. Lütfen sayfayı yenileyin.", "A non-default update server is in use to be checked for updates:" : "Güncelleme denetimi için varsayılan sunucudan başka bir sunucu kullanılıyor:", "Update channel:" : "Güncelleme kanalı:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "İstediğiniz zaman yeni / deneysel bir güncelleme kanalına geçebilirsiniz. Daha kararlı bir kanala geri dönemezsiniz.", @@ -18,22 +27,14 @@ "<strong>All</strong> apps have an update for this version available" : "<strong>Tüm</strong> uygulamaların bu sürüm için kullanılabilecek bir güncellemesi var", "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> uygulamanın bu sürüm için kullanılabilecek bir güncellemesi yok","<strong>%n</strong> uygulamanın bu sürüm için kullanılabilecek bir güncellemesi yok"], "<strong>production</strong> will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2)." : "<strong>Üretim</strong> her zaman en son yama düzeyini sağlar ancak sonraki büyük sürüme hemen güncellemez. Bu güncelleme genellikle ikinci küçük sürüm kullanılarak yapılır (x.0.2)", + "<strong>stable</strong> is the most recent stable version. It is suited for regular use and will always update to the latest major version." : "<strong>Kararlı</strong> son kararlı sürümü sağlar. Normal kullanımına uygundur ve her zaman son büyük sürüme günceller.", "<strong>beta</strong> is a pre-release version only for testing new features, not for production environments." : "<strong>Beta</strong> yeni özelliklerin denenebileceği yayım öncesi sürümüdür. Üretim ortamlarında kullanılması önerilmez.", "Could not start updater, please try the manual update" : "Güncelleyici başlatılamadı lütfen el ile güncellemeyi deneyin", - "Update notifications" : "Güncelleme bildirimleri", - "Channel updated" : "Kanal güncellendi", - "The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.", - "Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.", - "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", - "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", - "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", - "Update notification" : "Güncelleme bildirimi", - "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Nextcloud güncelleme bildirimlerini görüntüler ve güncelleyici için Tek Oturum Açma (SSO) bilgilerini sağlar.", "A new version is available: %s" : "Yeni bir sürüm yayınlanmış: %s", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Kullanmakta olduğunuz sürüm artık desteklenmiyor. Lütfen en kısa sürede desteklenen bir sürüme güncellemeyi ihmal etmeyin.", "Download now" : "İndir", + "Your version is up to date." : "Sürümünüz güncel.", "Checked on %s" : "Son denetim: %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.", - "The update check is not yet finished. Please refresh the page." : "Güncelleme denetimi henüz tamamlanmadı. Lütfen sayfayı yenileyin." + "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js index 19267208680..7f02e4f10b2 100644 --- a/apps/updatenotification/l10n/zh_CN.js +++ b/apps/updatenotification/l10n/zh_CN.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。", + "Update notifications" : "升级通知", + "Channel updated" : "更新通道", + "The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。", + "Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。", + "Update to %1$s is available." : " 可以更新到 %1$s 。", + "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。", + "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。", "Open updater" : "打开更新器", - "Your version is up to date." : "您的版本已是最新。", + "The update check is not yet finished. Please refresh the page." : "更新检查未完成。请刷新页面。", "A non-default update server is in use to be checked for updates:" : "检查更新使用了一个非默认的服务器:", "Update channel:" : "更新通道:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。", @@ -13,17 +20,10 @@ OC.L10N.register( "The selected update channel does not support updates of the server." : "选中的更新通道不支持服务器升级。", "A new version is available: <strong>{newVersionString}</strong>" : "有可用的新版本: <strong>{newVersionString}</strong>", "Could not start updater, please try the manual update" : "无法启动自动更新,请尝试手动更新", - "Update notifications" : "升级通知", - "Channel updated" : "更新通道", - "The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。", - "Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。", - "Update to %1$s is available." : " 可以更新到 %1$s 。", - "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。", - "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。", "A new version is available: %s" : "有可用的新版本: %s", "Download now" : "开始下载", + "Your version is up to date." : "您的版本已是最新。", "Checked on %s" : "检查于 %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器", - "The update check is not yet finished. Please refresh the page." : "更新检查未完成。请刷新页面。" + "The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器" }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json index 0f8ea25851f..f957ab7b482 100644 --- a/apps/updatenotification/l10n/zh_CN.json +++ b/apps/updatenotification/l10n/zh_CN.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。", + "Update notifications" : "升级通知", + "Channel updated" : "更新通道", + "The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。", + "Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。", + "Update to %1$s is available." : " 可以更新到 %1$s 。", + "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。", + "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。", "Open updater" : "打开更新器", - "Your version is up to date." : "您的版本已是最新。", + "The update check is not yet finished. Please refresh the page." : "更新检查未完成。请刷新页面。", "A non-default update server is in use to be checked for updates:" : "检查更新使用了一个非默认的服务器:", "Update channel:" : "更新通道:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。", @@ -11,17 +18,10 @@ "The selected update channel does not support updates of the server." : "选中的更新通道不支持服务器升级。", "A new version is available: <strong>{newVersionString}</strong>" : "有可用的新版本: <strong>{newVersionString}</strong>", "Could not start updater, please try the manual update" : "无法启动自动更新,请尝试手动更新", - "Update notifications" : "升级通知", - "Channel updated" : "更新通道", - "The update server could not be reached since %d days to check for new updates." : "更新服务器自 1%d 天前起无法访问以检查更新。", - "Please check the Nextcloud and server log files for errors." : "请检查 nextcloud 和服务器的日志中的错误。", - "Update to %1$s is available." : " 可以更新到 %1$s 。", - "Update for %1$s to version %2$s is available." : "可以从 %1$s 版本更新到 %2$s 版本。", - "Update for {app} to version %s is available." : "可以将您的 {app} 更新到版本 %s 。", "A new version is available: %s" : "有可用的新版本: %s", "Download now" : "开始下载", + "Your version is up to date." : "您的版本已是最新。", "Checked on %s" : "检查于 %s", - "The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器", - "The update check is not yet finished. Please refresh the page." : "更新检查未完成。请刷新页面。" + "The selected update channel makes dedicated notifications for the server obsolete." : "被选中的升级通道将会通知未更新的服务器" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/zh_TW.js b/apps/updatenotification/l10n/zh_TW.js index 3e0ae388da7..2544f84ceb2 100644 --- a/apps/updatenotification/l10n/zh_TW.js +++ b/apps/updatenotification/l10n/zh_TW.js @@ -2,8 +2,15 @@ OC.L10N.register( "updatenotification", { "{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新", + "Update notifications" : "更新通知", + "Channel updated" : "頻道已更新", + "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新", + "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。", + "Update to %1$s is available." : "更新版 %1$s 已經釋出", + "Update for %1$s to version %2$s is available." : "%1$s 到 %2$s 的更新已經釋出", + "Update for {app} to version %s is available." : "{app} 已有 %s 版本的更新", "Open updater" : "打開更新程式", - "Your version is up to date." : "您的版本是最新版", + "The update check is not yet finished. Please refresh the page." : "更新檢查未完成,請刷新這個頁面", "A non-default update server is in use to be checked for updates:" : "沒有預設的更新伺服器以至於無法檢查更新:", "Update channel:" : "更新通道:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以隨時更新至較新的版本 / 實驗通道,但您不能降版至更穩定的通道。", @@ -12,17 +19,10 @@ OC.L10N.register( "Only notification for app updates are available." : "僅提供應用程式更新的通知", "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新", "Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新", - "Update notifications" : "更新通知", - "Channel updated" : "頻道已更新", - "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新", - "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。", - "Update to %1$s is available." : "更新版 %1$s 已經釋出", - "Update for %1$s to version %2$s is available." : "%1$s 到 %2$s 的更新已經釋出", - "Update for {app} to version %s is available." : "{app} 已有 %s 版本的更新", "A new version is available: %s" : "新版本可用:%s", "Download now" : "現在下載", + "Your version is up to date." : "您的版本是最新版", "Checked on %s" : "於 %s 檢查過", - "The selected update channel makes dedicated notifications for the server obsolete." : "選擇的更新管道會導致伺服器專門的通知過期", - "The update check is not yet finished. Please refresh the page." : "更新檢查未完成,請刷新這個頁面" + "The selected update channel makes dedicated notifications for the server obsolete." : "選擇的更新管道會導致伺服器專門的通知過期" }, "nplurals=1; plural=0;"); diff --git a/apps/updatenotification/l10n/zh_TW.json b/apps/updatenotification/l10n/zh_TW.json index 2a8c4eac233..551b4ddc5f0 100644 --- a/apps/updatenotification/l10n/zh_TW.json +++ b/apps/updatenotification/l10n/zh_TW.json @@ -1,7 +1,14 @@ { "translations": { "{version} is available. Get more information on how to update." : "{version} 釋出了,可以更新", + "Update notifications" : "更新通知", + "Channel updated" : "頻道已更新", + "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新", + "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。", + "Update to %1$s is available." : "更新版 %1$s 已經釋出", + "Update for %1$s to version %2$s is available." : "%1$s 到 %2$s 的更新已經釋出", + "Update for {app} to version %s is available." : "{app} 已有 %s 版本的更新", "Open updater" : "打開更新程式", - "Your version is up to date." : "您的版本是最新版", + "The update check is not yet finished. Please refresh the page." : "更新檢查未完成,請刷新這個頁面", "A non-default update server is in use to be checked for updates:" : "沒有預設的更新伺服器以至於無法檢查更新:", "Update channel:" : "更新通道:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以隨時更新至較新的版本 / 實驗通道,但您不能降版至更穩定的通道。", @@ -10,17 +17,10 @@ "Only notification for app updates are available." : "僅提供應用程式更新的通知", "The selected update channel does not support updates of the server." : "所選的更新頻道不提供伺服器軟體的更新", "Could not start updater, please try the manual update" : "無法啟動更新程式,請嘗試手動更新", - "Update notifications" : "更新通知", - "Channel updated" : "頻道已更新", - "The update server could not be reached since %d days to check for new updates." : "更新伺服器在%d天前已經無法連線檢查更新", - "Please check the Nextcloud and server log files for errors." : "請確認伺服器log檔以查看錯誤。", - "Update to %1$s is available." : "更新版 %1$s 已經釋出", - "Update for %1$s to version %2$s is available." : "%1$s 到 %2$s 的更新已經釋出", - "Update for {app} to version %s is available." : "{app} 已有 %s 版本的更新", "A new version is available: %s" : "新版本可用:%s", "Download now" : "現在下載", + "Your version is up to date." : "您的版本是最新版", "Checked on %s" : "於 %s 檢查過", - "The selected update channel makes dedicated notifications for the server obsolete." : "選擇的更新管道會導致伺服器專門的通知過期", - "The update check is not yet finished. Please refresh the page." : "更新檢查未完成,請刷新這個頁面" + "The selected update channel makes dedicated notifications for the server obsolete." : "選擇的更新管道會導致伺服器專門的通知過期" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/updatenotification/package-lock.json b/apps/updatenotification/package-lock.json index 59fdbcdd167..b12e4034131 100644 --- a/apps/updatenotification/package-lock.json +++ b/apps/updatenotification/package-lock.json @@ -95,58 +95,58 @@ } }, "@webassemblyjs/ast": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.12.tgz", - "integrity": "sha512-bmTBEKuuhSU6dC95QIW250xO769cdYGx9rWn3uBLTw2pUpud0Z5kVuMw9m9fqbNzGeuOU2HpyuZa+yUt2CTEDA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/wast-parser": "1.5.12", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", "debug": "^3.1.0", "mamacro": "^0.0.3" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.12.tgz", - "integrity": "sha512-epTvkdwOIPpTE9edHS+V+shetYzpTbd91XOzUli1zAS0+NSgSe6ZsNggIqUNzhma1s4bN2f/m8c6B1NMdCERAg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.12.tgz", - "integrity": "sha512-Goxag86JvLq8ucHLXFNSLYzf9wrR+CJr37DsESTAzSnGoqDTgw5eqiXSQVd/D9Biih7+DIn8UIQCxMs8emRRwg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.12.tgz", - "integrity": "sha512-tJNUjttL5CxiiS/KLxT4/Zk0Nbl/poFhztFxktb46zoQEUWaGHR9ZJ0SnvE7DbFX5PY5JNJDMZ0Li4lm246fWw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", "dev": true, "requires": { "debug": "^3.1.0" } }, "@webassemblyjs/helper-code-frame": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.12.tgz", - "integrity": "sha512-0FrJgiST+MQDMvPigzs+UIk1vslLIqGadkEWdn53Lr0NsUC2JbheG9QaO3Zf6ycK2JwsHiUpGaMFcHYXStTPMA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.5.12" + "@webassemblyjs/wast-printer": "1.5.13" } }, "@webassemblyjs/helper-fsm": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.12.tgz", - "integrity": "sha512-QBHZ45VPUJ7UyYKvUFoaxrSS9H5hbkC9U7tdWgFHmnTMutkXSEgDg2gZg3I/QTsiKOCIwx4qJUJwPd7J4D5CNQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.12.tgz", - "integrity": "sha512-SCXR8hPI4JOG3cdy9HAO8W5/VQ68YXG/Hfs7qDf1cd64zWuMNshyEour5NYnLMVkrrtc0XzfVS/MdeV94woFHA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", "dev": true, "requires": { "debug": "^3.1.0", @@ -154,128 +154,136 @@ } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.12.tgz", - "integrity": "sha512-0Gz5lQcyvElNVbOTKwjEmIxGwdWf+zpAW/WGzGo95B7IgMEzyyfZU+PrGHDwiSH9c0knol9G7smQnY0ljrSA6g==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.12.tgz", - "integrity": "sha512-ge/CKVKBGpiJhFN9PIOQ7sPtGYJhxm/mW1Y3SpG1L6XBunfRz0YnLjW3TmhcOEFozIVyODPS1HZ9f7VR3GBGow==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", "debug": "^3.1.0" } }, "@webassemblyjs/ieee754": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.12.tgz", - "integrity": "sha512-F+PEv9QBzPi1ThLBouUJbuxhEr+Sy/oua1ftXFKHiaYYS5Z9tKPvK/hgCxlSdq+RY4MSG15jU2JYb/K5pkoybg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", "dev": true, "requires": { "ieee754": "^1.1.11" } }, "@webassemblyjs/leb128": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.12.tgz", - "integrity": "sha512-cCOx/LVGiWyCwVrVlvGmTdnwHzIP4+zflLjGkZxWpYCpdNax9krVIJh1Pm7O86Ox/c5PrJpbvZU1cZLxndlPEw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", "dev": true, "requires": { - "leb": "^0.3.0" + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } } }, "@webassemblyjs/utf8": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.12.tgz", - "integrity": "sha512-FX8NYQMiTRU0TfK/tJVntsi9IEKsedSsna8qtsndWVE0x3zLndugiApxdNMIOoElBV9o4j0BUqR+iwU58QfPxQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.12.tgz", - "integrity": "sha512-r/oZAyC4EZl0ToOYJgvj+b0X6gVEKQMLT34pNNbtvWBehQOnaSXvVUA5FIYlH8ubWjFNAFqYaVGgQTjR1yuJdQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/helper-wasm-section": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", - "@webassemblyjs/wasm-opt": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", - "@webassemblyjs/wast-printer": "1.5.12", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", "debug": "^3.1.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.12.tgz", - "integrity": "sha512-LTu+cr1YRxGGiVIXWhei/35lXXEwTnQU18x4V/gE+qCSJN21QcVTMjJuasTUh8WtmBZtOlqJbOQIeN7fGnHWhg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/ieee754": "1.5.12", - "@webassemblyjs/leb128": "1.5.12", - "@webassemblyjs/utf8": "1.5.12" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, "@webassemblyjs/wasm-opt": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.12.tgz", - "integrity": "sha512-LBwG5KPA9u/uigZVyTsDpS3CVxx3AePCnTItVL+OPkRCp5LqmLsOp4a3/c5CQE0Lecm0Ss9hjUTDcbYFZkXlfQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-buffer": "1.5.12", - "@webassemblyjs/wasm-gen": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", "debug": "^3.1.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.12.tgz", - "integrity": "sha512-xset3+1AtoFYEfMg30nzCGBnhKmTBzbIKvMyLhqJT06TvYV+kA884AOUpUvhSmP6XPF3G+HVZPm/PbCGxH4/VQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-api-error": "1.5.12", - "@webassemblyjs/helper-wasm-bytecode": "1.5.12", - "@webassemblyjs/ieee754": "1.5.12", - "@webassemblyjs/leb128": "1.5.12", - "@webassemblyjs/utf8": "1.5.12" + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" } }, "@webassemblyjs/wast-parser": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.12.tgz", - "integrity": "sha512-QWUtzhvfY7Ue9GlJ3HeOB6w5g9vNYUUnG+Y96TWPkFHJTxZlcvGfNrUoACCw6eDb9gKaHrjt77aPq41a7y8svg==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/floating-point-hex-parser": "1.5.12", - "@webassemblyjs/helper-api-error": "1.5.12", - "@webassemblyjs/helper-code-frame": "1.5.12", - "@webassemblyjs/helper-fsm": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", "long": "^3.2.0", "mamacro": "^0.0.3" } }, "@webassemblyjs/wast-printer": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.12.tgz", - "integrity": "sha512-XF9RTeckFgDyl196uRKZWHFFfbkzsMK96QTXp+TC0R9gsV9DMiDGMSIllgy/WdrZ3y3dsQp4fTA5r4GoaOBchA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/wast-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", "long": "^3.2.0" } }, @@ -312,12 +320,6 @@ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -355,15 +357,6 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -443,82 +436,6 @@ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -548,12 +465,6 @@ "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -763,16 +674,6 @@ "pako": "~1.0.5" } }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", @@ -846,24 +747,6 @@ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000846", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000846.tgz", - "integrity": "sha1-2chvkUc4202gmO7e2ZdBPERWG9I=", - "dev": true - }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -938,42 +821,6 @@ "safe-buffer": "^5.0.1" } }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "^1.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1040,21 +887,6 @@ } } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1071,17 +903,6 @@ "object-visit": "^1.0.0" } }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -1097,32 +918,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "^1.0.0" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, "commander": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", @@ -1278,94 +1073,24 @@ "randomfill": "^1.0.3" } }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, "css-loader": { - "version": "0.28.11", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", - "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", + "integrity": "sha512-tMXlTYf3mIMt3b0dDCOQFJiVvxbocJ5Ho577WiGPYPZcqVEO218L2iU22pDXzkTZCLDE+9AmGSUkWxeh/nZReA==", "dev": true, "requires": { "babel-code-frame": "^6.26.0", "css-selector-tokenizer": "^0.7.0", - "cssnano": "^3.10.0", "icss-utils": "^2.1.0", "loader-utils": "^1.0.2", "lodash.camelcase": "^4.3.0", - "object-assign": "^4.1.1", - "postcss": "^5.0.6", + "postcss": "^6.0.23", "postcss-modules-extract-imports": "^1.2.0", "postcss-modules-local-by-default": "^1.2.0", "postcss-modules-scope": "^1.1.0", "postcss-modules-values": "^1.3.0", "postcss-value-parser": "^3.3.0", "source-list-map": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } } }, "css-selector-tokenizer": { @@ -1385,126 +1110,6 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -1585,12 +1190,6 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -1639,12 +1238,6 @@ "stream-shift": "^1.0.0" } }, - "electron-to-chromium": { - "version": "1.3.48", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", - "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", - "dev": true - }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -1997,12 +1590,6 @@ "locate-path": "^2.0.0" } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, "flush-write-stream": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", @@ -2599,12 +2186,6 @@ } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -2670,15 +2251,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "^1.0.2" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2769,12 +2341,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -2911,12 +2477,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -3044,12 +2604,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3071,15 +2625,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3104,12 +2649,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "js-base64": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", - "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==", - "dev": true - }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -3155,12 +2694,6 @@ "invert-kv": "^1.0.0" } }, - "leb": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", - "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", - "dev": true - }, "loader-runner": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", @@ -3206,18 +2739,6 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, "long": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", @@ -3264,12 +2785,6 @@ "object-visit": "^1.0.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", @@ -3366,6 +2881,12 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, "mississippi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", @@ -3412,14 +2933,6 @@ "dev": true, "requires": { "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } } }, "move-concurrently": { @@ -3534,24 +3047,6 @@ "remove-trailing-separator": "^1.0.1" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -3561,24 +3056,12 @@ "path-key": "^2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -3800,1175 +3283,49 @@ "dev": true }, "postcss": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", - "integrity": "sha1-ES4v4qbSEJvglXaHJDFw6lWJ4UY=", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", "dev": true, "requires": { - "chalk": "^2.3.0", + "chalk": "^2.4.1", "source-map": "^0.6.1", - "supports-color": "^5.1.0" - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "^5.0.16" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", - "dev": true, - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" + "supports-color": "^5.4.0" }, "dependencies": { "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "color-convert": "^1.9.0" } - } - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "^3.0.0" } } } @@ -5012,682 +3369,12 @@ "postcss": "^6.0.1" } }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "^5.0.5" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, "postcss-value-parser": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", "dev": true }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, "prettier": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.4.tgz", @@ -5764,22 +3451,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -5838,42 +3509,6 @@ "set-immediate-shim": "^1.0.1" } }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -6050,12 +3685,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "schema-utils": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", @@ -6272,15 +3901,6 @@ } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", @@ -6321,12 +3941,6 @@ "extend-shallow": "^3.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "ssri": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", @@ -6396,12 +4010,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -6454,46 +4062,10 @@ "dev": true }, "supports-color": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", - "integrity": "sha1-BYoCHRthn33fOYDXEuo1kM5949U=", - "dev": true, - "requires": { - "has-flag": "^2.0.0" - } - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", - "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - } - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tapable": { "version": "1.0.0", @@ -6668,12 +4240,6 @@ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, "unique-filename": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", @@ -6801,12 +4367,6 @@ "integrity": "sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg==", "dev": true }, - "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", - "dev": true - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -6888,16 +4448,16 @@ } }, "webpack": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.14.0.tgz", - "integrity": "sha512-CgZPUwobJbQlZqpylDNtEazZLfNnGuyFmpk1dHIP2kFchtyMWB+W2wBKPImSnSQ2rbX/WZMKiQax+SZmlUXuQQ==", + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.15.1.tgz", + "integrity": "sha512-UwfFQ2plA5EMhhzwi/hl5xpLk7mNK7p0853Ml04z1Bqw553pY+oS8Xke3funcVy7eG/yMpZPvnlFTUyGKyKoyw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.5.12", - "@webassemblyjs/helper-module-context": "1.5.12", - "@webassemblyjs/wasm-edit": "1.5.12", - "@webassemblyjs/wasm-opt": "1.5.12", - "@webassemblyjs/wasm-parser": "1.5.12", + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", "acorn": "^5.6.2", "acorn-dynamic-import": "^3.0.0", "ajv": "^6.1.0", @@ -7008,12 +4568,6 @@ "source-map": "~0.6.1" } }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/apps/updatenotification/package.json b/apps/updatenotification/package.json index 84b08001f1c..0c50edf2c44 100644 --- a/apps/updatenotification/package.json +++ b/apps/updatenotification/package.json @@ -28,11 +28,11 @@ "vue-select": "^2.4.0" }, "devDependencies": { - "css-loader": "^0.28.11", + "css-loader": "^1.0.0", "file-loader": "^1.1.11", "vue-loader": "^15.2.4", "vue-template-compiler": "^2.5.16", - "webpack": "^4.14.0", + "webpack": "^4.15.1", "webpack-cli": "^3.0.8", "webpack-merge": "^4.1.3" } diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index 08173a137a1..34a1827fde1 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -66,6 +66,7 @@ OC.L10N.register( "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte non valide", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Cette application permet aux administrateurs de connecter Nextcloud à un répertoire utilisateur basé sur LDAP.", + "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Cette application permet aux administrateurs de connecter Nextcloud à un annuaire d'utilisateurs LDAP pour l'authentification et la configuration des utilisateurs, des groupes et des attributs utilisateur. Les administrateurs peuvent configurer cette application pour se connecter à un ou plusieurs annuaires LDAP ou à des répertoires actifs via une interface LDAP. Les attributs tels que le quota utilisateur, les e-mails, les images d'avatar, les appartenances aux groupes et bien d'autres peuvent être extraits dans Nextcloud à partir d'un répertoire contenant les requêtes et filtres appropriés\n\nUn utilisateur se connecte à Nextcloud avec ses informations d'identification LDAP ou AD et dispose d'un accès basé sur une demande d'authentification gérée par le serveur LDAP ou AD. Nextcloud ne stocke pas les mots de passe LDAP ou AD, mais ces informations d'identification sont utilisées pour authentifier un utilisateur, puis Nextcloud utilise une session pour l'ID utilisateur. Plus d'informations sont disponibles dans la documentation LDAP User and Group Backend.", "Test Configuration" : "Tester la configuration", "Help" : "Aide", "Groups meeting these criteria are available in %s:" : "Les groupes respectant ces critères sont disponibles dans %s :", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index d693ee6e52d..dabc5c16873 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -64,6 +64,7 @@ "Could not find the desired feature" : "Impossible de trouver la fonction souhaitée", "Invalid Host" : "Hôte non valide", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Cette application permet aux administrateurs de connecter Nextcloud à un répertoire utilisateur basé sur LDAP.", + "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Cette application permet aux administrateurs de connecter Nextcloud à un annuaire d'utilisateurs LDAP pour l'authentification et la configuration des utilisateurs, des groupes et des attributs utilisateur. Les administrateurs peuvent configurer cette application pour se connecter à un ou plusieurs annuaires LDAP ou à des répertoires actifs via une interface LDAP. Les attributs tels que le quota utilisateur, les e-mails, les images d'avatar, les appartenances aux groupes et bien d'autres peuvent être extraits dans Nextcloud à partir d'un répertoire contenant les requêtes et filtres appropriés\n\nUn utilisateur se connecte à Nextcloud avec ses informations d'identification LDAP ou AD et dispose d'un accès basé sur une demande d'authentification gérée par le serveur LDAP ou AD. Nextcloud ne stocke pas les mots de passe LDAP ou AD, mais ces informations d'identification sont utilisées pour authentifier un utilisateur, puis Nextcloud utilise une session pour l'ID utilisateur. Plus d'informations sont disponibles dans la documentation LDAP User and Group Backend.", "Test Configuration" : "Tester la configuration", "Help" : "Aide", "Groups meeting these criteria are available in %s:" : "Les groupes respectant ces critères sont disponibles dans %s :", diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js index d6aa7e688cd..8cae171d675 100644 --- a/apps/user_ldap/l10n/he.js +++ b/apps/user_ldap/l10n/he.js @@ -3,11 +3,22 @@ OC.L10N.register( { "Failed to clear the mappings." : "כשל בניקוי המיפויים.", "Failed to delete the server configuration" : "כשל במחיקת הגדרות השרת", + "Invalid configuration: Anonymous binding is not allowed." : "תצורה שגויה: איגוד אלמוני אסור.", + "Valid configuration, connection established!" : "התצורה תקפה, התבצע חיבור!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "התצורה תקפה, אך האיגוד נכשל. נא לבדוק את הגדרות השרת ואת פרטי הגישה.", + "Invalid configuration. Please have a look at the logs for further details." : "תצורה שגויה. נא לעיין ברישום לקבלת פרטים נוספים.", "No action specified" : "לא צויינה פעולה", "No configuration specified" : "לא הוגדרה תצורה", "No data specified" : "לא הוגדר מידע", " Could not set configuration %s" : " לא ניתן היה לקבוע הגדרות %s", "Action does not exist" : "פעולה לא קיימת", + "LDAP user and group backend" : "מנגנון משתמשים וקבוצות מול LDAP", + "Renewing …" : "מתבצע חידוש…", + "Very weak password" : "ססמה חלשה מאוד", + "Weak password" : "ססמה חלשה", + "So-so password" : "ססמה בסדר", + "Good password" : "ססמה טובה", + "Strong password" : "ססמה חזקה", "The Base DN appears to be wrong" : "בסיס DN נראה כשגוי", "Testing configuration…" : "בדיקת תצורה...", "Configuration incorrect" : "הגדרה שגויה", @@ -38,6 +49,12 @@ OC.L10N.register( "A connection error to LDAP / AD occurred, please check host, port and credentials." : "אירעה שגיאת חיבור ל- LDAP / AD, יש לבדוק את השרת, שער החיבור - פורט ופרטי הכניסה. ", "Please provide a login name to test against" : "יש לספק שם משתמש לבדיקה מולו", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "שדה הקבוצה נוטרל, כיוון ששרת ה- LDAP / AD לא תומך ב- memberOf.", + "Password change rejected. Hint: " : "שינוי הססמה נדחה. רמז:", + "Please login with the new password" : "נא להיכנס עם הססמה החדשה", + "Your password will expire tomorrow." : "הססמה שלך תפוג מחר.", + "Your password will expire today." : "הססמה שלך תפוג היום.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["הססמה שלך תפוג בעוד יום.","הססמה שלך תפוג בעוד יומיים.","הססמה שלך תפוג בעוד %n ימים.","הססמה שלך תפוג בעוד %n ימים."], + "LDAP / AD integration" : "שילוב של LDAP / AD", "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות","אותרו %s קבוצות","אותרו %s קבוצות"], "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים","אותרו %s משתמשים","אותרו %s משתמשים"], "Could not find the desired feature" : "לא אותרה התכונה הרצויה", @@ -53,6 +70,7 @@ OC.L10N.register( "Edit LDAP Query" : "עריכת שאילתת LDAP", "LDAP Filter:" : "מסנן LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "המסנן הקובע לאיזו קבוצת LDAP תהיה יכולת כניסה למקרה %s.", + "Verify settings and count the groups" : "אימות ההגדרות וספירת הקבוצות", "When logging in, %s will find the user based on the following attributes:" : "כאשר מתחברים, %s יחפש את המשתמש על פי המאפיינים הבאים:", "LDAP / AD Username:" : "שם משתמש LDAP / AD:", "LDAP / AD Email Address:" : "כתובת דואר אלקטרוני LDAP / AD:", @@ -61,15 +79,18 @@ OC.L10N.register( "Verify settings" : "מאמת הגדרות", "1. Server" : "1. שרת", "%s. Server:" : "%s. שרת:", + "Add a new configuration" : "הוספת תצורה חדשה", "Copy current configuration into new directory binding" : "מעתיק תצורה נוכחית אל תוך תיקייה חדשה", "Delete the current configuration" : "מחיקת תצורה נוכחית", "Host" : "מארח", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "ניתן להשמיט את הפרוטוקול, אלא אם כן צריך SSL. אם זה המצב, יש להתחיל ב־ldaps://", "Port" : "פורט", "Detect Port" : "מחיקת שער - פורט", "User DN" : "DN משתמש", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "ה- DN של משתמש הלקוח שבו החיבור יעשה, למשל uid=agent,dc=example,dc=com. לחיבור אנונימי, יש להשאיר את ה- DN והסיסמא ריקים.", "Password" : "סיסמא", "For anonymous access, leave DN and Password empty." : "לגישה אנונימית, השאר את הDM והסיסמא ריקים.", + "Save Credentials" : "שמירת פרטי הגישה", "One Base DN per line" : "DN בסיסי אחד לשורה", "You can specify Base DN for users and groups in the Advanced tab" : "ניתן לציין DN בסיסי למשתמשים ולקבוצות בלשונית מתקדם", "Detect Base DN" : "גילוי DN בסיסי", @@ -81,6 +102,14 @@ OC.L10N.register( "Saving" : "שמירה", "Back" : "אחורה", "Continue" : "המשך", + "Please renew your password." : "נא לחדש את הססמה שלך.", + "An internal error occurred." : "אירעה שגיאה פנימית.", + "Please try again or contact your administrator." : "נא לנסות ליצור קשר עם מנהל המערכת.", + "Current password" : "ססמה נוכחית", + "New password" : "ססמה חדשה", + "Renew password" : "חידוש ססמה", + "Wrong password." : "ססמה שגויה.", + "Cancel" : "ביטול", "Server" : "שרת", "Users" : "משתמשים", "Login Attributes" : "פרטי כניסה", @@ -117,6 +146,7 @@ OC.L10N.register( "Nested Groups" : "קבוצות משנה", "Paging chunksize" : "Paging chunksize", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize משמש לחיפושי paged LDAP שעלולים להחזיר תוצאות גסות כמו ספירת משתמש או קבוצה. (הגדרה כ- 0 מנטרל חיפושי paged LDAP במצבים אלה.)", + "(New password is sent as plain text to LDAP)" : "(הססמה החדשה נשלחת כטקסט בלתי מוצפן ל־LDAP)", "Special Attributes" : "מאפיינים מיוחדים", "Quota Field" : "שדה מכסה", "Quota Default" : "ברירת מחדל מכסה", @@ -131,6 +161,7 @@ OC.L10N.register( "Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:", "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:", " entries available within the provided Base DN" : " קיימות רשומות מתוך בסיס ה- DN שסופק", + "Wrong password. Reset it?" : "ססמה שגויה. לאפס אותה?", "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>אזהרה:</b> יישומים user_ldap ו- user_webdavauth אינם תואמים. תופעות לא מוסברות עלולות להתקיים. כדאי לפנות למנהל המערכת כדי שינטרל אחד מהם." }, diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json index 5f383fc0ee9..96c5164528d 100644 --- a/apps/user_ldap/l10n/he.json +++ b/apps/user_ldap/l10n/he.json @@ -1,11 +1,22 @@ { "translations": { "Failed to clear the mappings." : "כשל בניקוי המיפויים.", "Failed to delete the server configuration" : "כשל במחיקת הגדרות השרת", + "Invalid configuration: Anonymous binding is not allowed." : "תצורה שגויה: איגוד אלמוני אסור.", + "Valid configuration, connection established!" : "התצורה תקפה, התבצע חיבור!", + "Valid configuration, but binding failed. Please check the server settings and credentials." : "התצורה תקפה, אך האיגוד נכשל. נא לבדוק את הגדרות השרת ואת פרטי הגישה.", + "Invalid configuration. Please have a look at the logs for further details." : "תצורה שגויה. נא לעיין ברישום לקבלת פרטים נוספים.", "No action specified" : "לא צויינה פעולה", "No configuration specified" : "לא הוגדרה תצורה", "No data specified" : "לא הוגדר מידע", " Could not set configuration %s" : " לא ניתן היה לקבוע הגדרות %s", "Action does not exist" : "פעולה לא קיימת", + "LDAP user and group backend" : "מנגנון משתמשים וקבוצות מול LDAP", + "Renewing …" : "מתבצע חידוש…", + "Very weak password" : "ססמה חלשה מאוד", + "Weak password" : "ססמה חלשה", + "So-so password" : "ססמה בסדר", + "Good password" : "ססמה טובה", + "Strong password" : "ססמה חזקה", "The Base DN appears to be wrong" : "בסיס DN נראה כשגוי", "Testing configuration…" : "בדיקת תצורה...", "Configuration incorrect" : "הגדרה שגויה", @@ -36,6 +47,12 @@ "A connection error to LDAP / AD occurred, please check host, port and credentials." : "אירעה שגיאת חיבור ל- LDAP / AD, יש לבדוק את השרת, שער החיבור - פורט ופרטי הכניסה. ", "Please provide a login name to test against" : "יש לספק שם משתמש לבדיקה מולו", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "שדה הקבוצה נוטרל, כיוון ששרת ה- LDAP / AD לא תומך ב- memberOf.", + "Password change rejected. Hint: " : "שינוי הססמה נדחה. רמז:", + "Please login with the new password" : "נא להיכנס עם הססמה החדשה", + "Your password will expire tomorrow." : "הססמה שלך תפוג מחר.", + "Your password will expire today." : "הססמה שלך תפוג היום.", + "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["הססמה שלך תפוג בעוד יום.","הססמה שלך תפוג בעוד יומיים.","הססמה שלך תפוג בעוד %n ימים.","הססמה שלך תפוג בעוד %n ימים."], + "LDAP / AD integration" : "שילוב של LDAP / AD", "_%s group found_::_%s groups found_" : ["אותרה %s קבוצה","אותרו %s קבוצות","אותרו %s קבוצות","אותרו %s קבוצות"], "_%s user found_::_%s users found_" : ["אותר %s משתמש","אותרו %s משתמשים","אותרו %s משתמשים","אותרו %s משתמשים"], "Could not find the desired feature" : "לא אותרה התכונה הרצויה", @@ -51,6 +68,7 @@ "Edit LDAP Query" : "עריכת שאילתת LDAP", "LDAP Filter:" : "מסנן LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "המסנן הקובע לאיזו קבוצת LDAP תהיה יכולת כניסה למקרה %s.", + "Verify settings and count the groups" : "אימות ההגדרות וספירת הקבוצות", "When logging in, %s will find the user based on the following attributes:" : "כאשר מתחברים, %s יחפש את המשתמש על פי המאפיינים הבאים:", "LDAP / AD Username:" : "שם משתמש LDAP / AD:", "LDAP / AD Email Address:" : "כתובת דואר אלקטרוני LDAP / AD:", @@ -59,15 +77,18 @@ "Verify settings" : "מאמת הגדרות", "1. Server" : "1. שרת", "%s. Server:" : "%s. שרת:", + "Add a new configuration" : "הוספת תצורה חדשה", "Copy current configuration into new directory binding" : "מעתיק תצורה נוכחית אל תוך תיקייה חדשה", "Delete the current configuration" : "מחיקת תצורה נוכחית", "Host" : "מארח", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "ניתן להשמיט את הפרוטוקול, אלא אם כן צריך SSL. אם זה המצב, יש להתחיל ב־ldaps://", "Port" : "פורט", "Detect Port" : "מחיקת שער - פורט", "User DN" : "DN משתמש", "The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." : "ה- DN של משתמש הלקוח שבו החיבור יעשה, למשל uid=agent,dc=example,dc=com. לחיבור אנונימי, יש להשאיר את ה- DN והסיסמא ריקים.", "Password" : "סיסמא", "For anonymous access, leave DN and Password empty." : "לגישה אנונימית, השאר את הDM והסיסמא ריקים.", + "Save Credentials" : "שמירת פרטי הגישה", "One Base DN per line" : "DN בסיסי אחד לשורה", "You can specify Base DN for users and groups in the Advanced tab" : "ניתן לציין DN בסיסי למשתמשים ולקבוצות בלשונית מתקדם", "Detect Base DN" : "גילוי DN בסיסי", @@ -79,6 +100,14 @@ "Saving" : "שמירה", "Back" : "אחורה", "Continue" : "המשך", + "Please renew your password." : "נא לחדש את הססמה שלך.", + "An internal error occurred." : "אירעה שגיאה פנימית.", + "Please try again or contact your administrator." : "נא לנסות ליצור קשר עם מנהל המערכת.", + "Current password" : "ססמה נוכחית", + "New password" : "ססמה חדשה", + "Renew password" : "חידוש ססמה", + "Wrong password." : "ססמה שגויה.", + "Cancel" : "ביטול", "Server" : "שרת", "Users" : "משתמשים", "Login Attributes" : "פרטי כניסה", @@ -115,6 +144,7 @@ "Nested Groups" : "קבוצות משנה", "Paging chunksize" : "Paging chunksize", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize משמש לחיפושי paged LDAP שעלולים להחזיר תוצאות גסות כמו ספירת משתמש או קבוצה. (הגדרה כ- 0 מנטרל חיפושי paged LDAP במצבים אלה.)", + "(New password is sent as plain text to LDAP)" : "(הססמה החדשה נשלחת כטקסט בלתי מוצפן ל־LDAP)", "Special Attributes" : "מאפיינים מיוחדים", "Quota Field" : "שדה מכסה", "Quota Default" : "ברירת מחדל מכסה", @@ -129,6 +159,7 @@ "Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:", "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:", " entries available within the provided Base DN" : " קיימות רשומות מתוך בסיס ה- DN שסופק", + "Wrong password. Reset it?" : "ססמה שגויה. לאפס אותה?", "LDAP" : "LDAP", "<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behavior. Please ask your system administrator to disable one of them." : "<b>אזהרה:</b> יישומים user_ldap ו- user_webdavauth אינם תואמים. תופעות לא מוסברות עלולות להתקיים. כדאי לפנות למנהל המערכת כדי שינטרל אחד מהם." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" diff --git a/apps/user_ldap/l10n/ja.js b/apps/user_ldap/l10n/ja.js index 0355f5cef56..2471358fddf 100644 --- a/apps/user_ldap/l10n/ja.js +++ b/apps/user_ldap/l10n/ja.js @@ -169,7 +169,7 @@ OC.L10N.register( "Quota Field" : "クォータ属性", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ユーザーのデフォルトのクォータを空のままにしてください。 または、LDAP/ADの属性を指定してください。", "Quota Default" : "クォータのデフォルト", - "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "クォータフィールドでクォータが設定されていないLDAPユーザーのデフォルトクォータを上書きします。", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "クォータフィールドでクォータが設定されていないLDAPユーザーのデフォルトのクォータを上書きします。", "Email Field" : "メール属性", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "LDAP属性からユーザーのメールを設定します。 デフォルト動作では空のままにします。", "User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則", diff --git a/apps/user_ldap/l10n/ja.json b/apps/user_ldap/l10n/ja.json index 5b8822006ff..c6c05262019 100644 --- a/apps/user_ldap/l10n/ja.json +++ b/apps/user_ldap/l10n/ja.json @@ -167,7 +167,7 @@ "Quota Field" : "クォータ属性", "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "ユーザーのデフォルトのクォータを空のままにしてください。 または、LDAP/ADの属性を指定してください。", "Quota Default" : "クォータのデフォルト", - "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "クォータフィールドでクォータが設定されていないLDAPユーザーのデフォルトクォータを上書きします。", + "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "クォータフィールドでクォータが設定されていないLDAPユーザーのデフォルトのクォータを上書きします。", "Email Field" : "メール属性", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "LDAP属性からユーザーのメールを設定します。 デフォルト動作では空のままにします。", "User Home Folder Naming Rule" : "ユーザーのホームフォルダー命名規則", diff --git a/apps/user_ldap/l10n/pl.js b/apps/user_ldap/l10n/pl.js index 1aab60898a3..1a23233a6ca 100644 --- a/apps/user_ldap/l10n/pl.js +++ b/apps/user_ldap/l10n/pl.js @@ -13,14 +13,14 @@ OC.L10N.register( " Could not set configuration %s" : "Nie można ustawić konfiguracji %s", "Action does not exist" : "Akcja nie istnieje", "LDAP user and group backend" : "Zaplecze użytkowników i grup LDAP", - "Renewing …" : "Odnawianie ...", + "Renewing …" : "Odnawianie…", "Very weak password" : "Bardzo słabe hasło", "Weak password" : "Słabe hasło", "So-so password" : "Mało skomplikowane hasło", "Good password" : "Dobre hasło", "Strong password" : "Silne hasło", "The Base DN appears to be wrong" : "Base DN wygląda na błedne", - "Testing configuration…" : "Testowanie konfiguracji...", + "Testing configuration…" : "Testowanie konfiguracji…", "Configuration incorrect" : "Konfiguracja niepoprawna", "Configuration incomplete" : "Konfiguracja niekompletna", "Configuration OK" : "Konfiguracja poprawna", diff --git a/apps/user_ldap/l10n/pl.json b/apps/user_ldap/l10n/pl.json index 096498559ea..1d17da22464 100644 --- a/apps/user_ldap/l10n/pl.json +++ b/apps/user_ldap/l10n/pl.json @@ -11,14 +11,14 @@ " Could not set configuration %s" : "Nie można ustawić konfiguracji %s", "Action does not exist" : "Akcja nie istnieje", "LDAP user and group backend" : "Zaplecze użytkowników i grup LDAP", - "Renewing …" : "Odnawianie ...", + "Renewing …" : "Odnawianie…", "Very weak password" : "Bardzo słabe hasło", "Weak password" : "Słabe hasło", "So-so password" : "Mało skomplikowane hasło", "Good password" : "Dobre hasło", "Strong password" : "Silne hasło", "The Base DN appears to be wrong" : "Base DN wygląda na błedne", - "Testing configuration…" : "Testowanie konfiguracji...", + "Testing configuration…" : "Testowanie konfiguracji…", "Configuration incorrect" : "Konfiguracja niepoprawna", "Configuration incomplete" : "Konfiguracja niekompletna", "Configuration OK" : "Konfiguracja poprawna", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index 858531d25c6..d947d1c84a4 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -66,7 +66,7 @@ OC.L10N.register( "Could not find the desired feature" : "Não foi possível encontrar o recurso desejado", "Invalid Host" : "Host inválido", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Este aplicativo permite que os administradores conectem o Nextcloud a um diretório de usuários baseado em LDAP.", - "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esse aplicativo permite que os administradores conectem o Nextcloud a um diretório de usuários baseado em LDAP para autenticação, provisionamento de usuários, grupos e atributos do usuário. Os administradores podem configurar este aplicativo para se conectar a um ou mais diretórios LDAP ou Diretórios Ativos por meio de uma interface LDAP. Atributos como cota de usuários, email, imagens de avatar, associações a grupos e muito mais podem ser acessados no Nextcloud a partir de um diretório com as consultas e filtros apropriados.\n\nUm usuário efetua login no Nextcloud com suas credenciais LDAP ou AD e recebe acesso com base em uma solicitação de autenticação manipulada pelo servidor LDAP ou AD. O Nextcloud não armazena senhas LDAP ou AD, mas essas credenciais são usadas para autenticar um usuário e, em seguida, o Nextcloud usa uma sessão para o ID do usuário. Mais informações estão disponíveis na documentação do Sistema de Usuários e Grupos LDAP.", + "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esse aplicativo permite que os administradores conectem o Nextcloud a um diretório de usuários baseado em LDAP para autenticação, provisionamento de usuários, grupos e atributos do usuário. Os administradores podem configurar este aplicativo para se conectar a um ou mais diretórios LDAP ou Diretórios Ativos por meio de uma interface LDAP. Atributos como cota de usuários, e-mail, imagens de avatar, associações a grupos e muito mais podem ser acessados no Nextcloud a partir de um diretório com as consultas e filtros apropriados.\n\nUm usuário efetua login no Nextcloud com suas credenciais LDAP ou AD e recebe acesso com base em uma solicitação de autenticação manipulada pelo servidor LDAP ou AD. O Nextcloud não armazena senhas LDAP ou AD, mas essas credenciais são usadas para autenticar um usuário e, em seguida, o Nextcloud usa uma sessão para o ID do usuário. Mais informações estão disponíveis na documentação do Sistema de Usuários e Grupos LDAP.", "Test Configuration" : "Teste de Configuração", "Help" : "Ajuda", "Groups meeting these criteria are available in %s:" : "Grupos que satisfazem estes critérios estão disponíveis em %s:", @@ -82,8 +82,8 @@ OC.L10N.register( "When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:", "LDAP / AD Username:" : "Nome do usuário LDAP / AD:", "Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permite login com o nome de usuário LDAP / AD, o qual é \"uid\" ou \"sAMAccountName\" e será detectado.", - "LDAP / AD Email Address:" : "Endereço de email LDAP / AD:", - "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de email. \"Mail\" e \"mailPrimaryAddress\" são permitidos.", + "LDAP / AD Email Address:" : "Endereço de e-mail LDAP / AD:", + "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de e-mail. \"Mail\" e \"mailPrimaryAddress\" são permitidos.", "Other Attributes:" : "Outros Atributos:", "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a aplicar quando o login é tentado. \"%%uid\" substitui o nome de usuário durante o login. Por exemplo: \"uid=%%uid\"", "Test Loginname" : "Testar Loginname", @@ -173,8 +173,8 @@ OC.L10N.register( "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para a cota padrão do usuário. Caso contrário, especifique um atributo LDAP/AD", "Quota Default" : "Cota Padrão", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituir a cota padrão para usuários LDAP que não têm um conjunto de cotas no Campo Cota.", - "Email Field" : "Campo de email", - "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o email do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", + "Email Field" : "Campo de e-mail", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o e-mail do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", "User Home Folder Naming Rule" : "Regra de nomeação de pasta de usuário Home", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", "Internal Username" : "Nome de usuário interno", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index ad723ee5aef..1ec62665e25 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -64,7 +64,7 @@ "Could not find the desired feature" : "Não foi possível encontrar o recurso desejado", "Invalid Host" : "Host inválido", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Este aplicativo permite que os administradores conectem o Nextcloud a um diretório de usuários baseado em LDAP.", - "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esse aplicativo permite que os administradores conectem o Nextcloud a um diretório de usuários baseado em LDAP para autenticação, provisionamento de usuários, grupos e atributos do usuário. Os administradores podem configurar este aplicativo para se conectar a um ou mais diretórios LDAP ou Diretórios Ativos por meio de uma interface LDAP. Atributos como cota de usuários, email, imagens de avatar, associações a grupos e muito mais podem ser acessados no Nextcloud a partir de um diretório com as consultas e filtros apropriados.\n\nUm usuário efetua login no Nextcloud com suas credenciais LDAP ou AD e recebe acesso com base em uma solicitação de autenticação manipulada pelo servidor LDAP ou AD. O Nextcloud não armazena senhas LDAP ou AD, mas essas credenciais são usadas para autenticar um usuário e, em seguida, o Nextcloud usa uma sessão para o ID do usuário. Mais informações estão disponíveis na documentação do Sistema de Usuários e Grupos LDAP.", + "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Esse aplicativo permite que os administradores conectem o Nextcloud a um diretório de usuários baseado em LDAP para autenticação, provisionamento de usuários, grupos e atributos do usuário. Os administradores podem configurar este aplicativo para se conectar a um ou mais diretórios LDAP ou Diretórios Ativos por meio de uma interface LDAP. Atributos como cota de usuários, e-mail, imagens de avatar, associações a grupos e muito mais podem ser acessados no Nextcloud a partir de um diretório com as consultas e filtros apropriados.\n\nUm usuário efetua login no Nextcloud com suas credenciais LDAP ou AD e recebe acesso com base em uma solicitação de autenticação manipulada pelo servidor LDAP ou AD. O Nextcloud não armazena senhas LDAP ou AD, mas essas credenciais são usadas para autenticar um usuário e, em seguida, o Nextcloud usa uma sessão para o ID do usuário. Mais informações estão disponíveis na documentação do Sistema de Usuários e Grupos LDAP.", "Test Configuration" : "Teste de Configuração", "Help" : "Ajuda", "Groups meeting these criteria are available in %s:" : "Grupos que satisfazem estes critérios estão disponíveis em %s:", @@ -80,8 +80,8 @@ "When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:", "LDAP / AD Username:" : "Nome do usuário LDAP / AD:", "Allows login against the LDAP / AD username, which is either \"uid\" or \"sAMAccountName\" and will be detected." : "Permite login com o nome de usuário LDAP / AD, o qual é \"uid\" ou \"sAMAccountName\" e será detectado.", - "LDAP / AD Email Address:" : "Endereço de email LDAP / AD:", - "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de email. \"Mail\" e \"mailPrimaryAddress\" são permitidos.", + "LDAP / AD Email Address:" : "Endereço de e-mail LDAP / AD:", + "Allows login against an email attribute. \"mail\" and \"mailPrimaryAddress\" allowed." : "Permite login com um atributo de e-mail. \"Mail\" e \"mailPrimaryAddress\" são permitidos.", "Other Attributes:" : "Outros Atributos:", "Defines the filter to apply, when login is attempted. \"%%uid\" replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a aplicar quando o login é tentado. \"%%uid\" substitui o nome de usuário durante o login. Por exemplo: \"uid=%%uid\"", "Test Loginname" : "Testar Loginname", @@ -171,8 +171,8 @@ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para a cota padrão do usuário. Caso contrário, especifique um atributo LDAP/AD", "Quota Default" : "Cota Padrão", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Substituir a cota padrão para usuários LDAP que não têm um conjunto de cotas no Campo Cota.", - "Email Field" : "Campo de email", - "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o email do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", + "Email Field" : "Campo de e-mail", + "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Defina o e-mail do usuário de seu atributo LDAP. Deixe vazio para o comportamento padrão.", "User Home Folder Naming Rule" : "Regra de nomeação de pasta de usuário Home", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", "Internal Username" : "Nome de usuário interno", diff --git a/apps/user_ldap/lib/Configuration.php b/apps/user_ldap/lib/Configuration.php index 6240e8d8f57..25d64859596 100644 --- a/apps/user_ldap/lib/Configuration.php +++ b/apps/user_ldap/lib/Configuration.php @@ -35,8 +35,13 @@ namespace OCA\User_LDAP; /** * @property int ldapPagingSize holds an integer + * @property string ldapUserAvatarRule */ class Configuration { + const AVATAR_PREFIX_DEFAULT = 'default'; + const AVATAR_PREFIX_NONE = 'none'; + const AVATAR_PREFIX_DATA_ATTRIBUTE = 'data:'; + protected $configPrefix = null; protected $configRead = false; /** @@ -61,6 +66,7 @@ class Configuration { 'ldapIgnoreNamingRules' => null, 'ldapUserDisplayName' => null, 'ldapUserDisplayName2' => null, + 'ldapUserAvatarRule' => null, 'ldapGidNumber' => null, 'ldapUserFilterObjectclass' => null, 'ldapUserFilterGroups' => null, @@ -472,6 +478,7 @@ class Configuration { 'ldap_experienced_admin' => 0, 'ldap_dynamic_group_member_url' => '', 'ldap_default_ppolicy_dn' => '', + 'ldap_user_avatar_rule' => 'default', ); } @@ -495,6 +502,7 @@ class Configuration { 'ldap_userfilter_groups' => 'ldapUserFilterGroups', 'ldap_userlist_filter' => 'ldapUserFilter', 'ldap_user_filter_mode' => 'ldapUserFilterMode', + 'ldap_user_avatar_rule' => 'ldapUserAvatarRule', 'ldap_login_filter' => 'ldapLoginFilter', 'ldap_login_filter_mode' => 'ldapLoginFilterMode', 'ldap_loginfilter_email' => 'ldapLoginFilterEmail', @@ -536,4 +544,36 @@ class Configuration { return $array; } + /** + * @param string $rule + * @return array + * @throws \RuntimeException + */ + public function resolveRule($rule) { + if($rule === 'avatar') { + return $this->getAvatarAttributes(); + } + throw new \RuntimeException('Invalid rule'); + } + + public function getAvatarAttributes() { + $value = $this->ldapUserAvatarRule ?: self::AVATAR_PREFIX_DEFAULT; + $defaultAttributes = ['jpegphoto', 'thumbnailphoto']; + + if($value === self::AVATAR_PREFIX_NONE) { + return []; + } + if(strpos($value, self::AVATAR_PREFIX_DATA_ATTRIBUTE) === 0) { + $attribute = trim(substr($value, strlen(self::AVATAR_PREFIX_DATA_ATTRIBUTE))); + if($attribute === '') { + return $defaultAttributes; + } + return [strtolower($attribute)]; + } + if($value !== self::AVATAR_PREFIX_DEFAULT) { + \OC::$server->getLogger()->warning('Invalid config value to ldapUserAvatarRule; falling back to default.'); + } + return $defaultAttributes; + } + } diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php index 977b7c54425..c912d9f89f8 100644 --- a/apps/user_ldap/lib/Connection.php +++ b/apps/user_ldap/lib/Connection.php @@ -48,6 +48,7 @@ use OCP\ILogger; * @property string ldapUserFilter * @property string ldapUserDisplayName * @property string ldapUserDisplayName2 + * @property string ldapUserAvatarRule * @property boolean turnOnPasswordChange * @property boolean hasPagedResultSupport * @property string[] ldapBaseUsers @@ -170,6 +171,15 @@ class Connection extends LDAPUtility { } /** + * @param string $rule + * @return array + * @throws \RuntimeException + */ + public function resolveRule($rule) { + return $this->configuration->resolveRule($rule); + } + + /** * sets whether the result of the configuration validation shall * be ignored when establishing the connection. Used by the Wizard * in early configuration state. @@ -566,8 +576,8 @@ class Connection extends LDAPUtility { if (!$isOverrideMainServer) { $this->doConnect($this->configuration->ldapHost, $this->configuration->ldapPort); + return $this->bind(); } - return $this->bind(); } catch (ServerNotAvailableException $e) { if(!$isBackupHost) { throw $e; diff --git a/apps/user_ldap/lib/User/Manager.php b/apps/user_ldap/lib/User/Manager.php index 55fc7499beb..c48193c7ad9 100644 --- a/apps/user_ldap/lib/User/Manager.php +++ b/apps/user_ldap/lib/User/Manager.php @@ -163,6 +163,7 @@ class Manager { /** * returns a list of attributes that will be processed further, e.g. quota, * email, displayname, or others. + * * @param bool $minimal - optional, set to true to skip attributes with big * payload * @return string[] @@ -190,10 +191,10 @@ class Manager { if(!$minimal) { // attributes that are not really important but may come with big // payload. - $attributes = array_merge($attributes, array( - 'jpegphoto', - 'thumbnailphoto' - )); + $attributes = array_merge( + $attributes, + $this->access->getConnection()->resolveRule('avatar') + ); } return $attributes; diff --git a/apps/user_ldap/lib/User/User.php b/apps/user_ldap/lib/User/User.php index f64c0b4b447..02764a72eca 100644 --- a/apps/user_ldap/lib/User/User.php +++ b/apps/user_ldap/lib/User/User.php @@ -245,10 +245,12 @@ class User { $this->connection->writeToCache($cacheKey, $groups); //Avatar - $attrs = array('jpegphoto', 'thumbnailphoto'); - foreach ($attrs as $attr) { - if(isset($ldapEntry[$attr])) { - $this->avatarImage = $ldapEntry[$attr][0]; + /** @var Connection $connection */ + $connection = $this->access->getConnection(); + $attributes = $connection->resolveRule('avatar'); + foreach ($attributes as $attribute) { + if(isset($ldapEntry[$attribute])) { + $this->avatarImage = $ldapEntry[$attribute][0]; // the call to the method that saves the avatar in the file // system must be postponed after the login. It is to ensure // external mounts are mounted properly (e.g. with login @@ -348,7 +350,9 @@ class User { } $this->avatarImage = false; - $attributes = array('jpegPhoto', 'thumbnailPhoto'); + /** @var Connection $connection */ + $connection = $this->access->getConnection(); + $attributes = $connection->resolveRule('avatar'); foreach($attributes as $attribute) { $result = $this->access->readAttribute($this->dn, $attribute); if($result !== false && is_array($result) && isset($result[0])) { @@ -575,7 +579,7 @@ class User { */ private function setOwnCloudAvatar() { if(!$this->image->valid()) { - $this->log->log('jpegPhoto data invalid for '.$this->dn, ILogger::ERROR); + $this->log->log('avatar image data from LDAP invalid for '.$this->dn, ILogger::ERROR); return false; } //make sure it is a square and not bigger than 128x128 diff --git a/apps/user_ldap/lib/User_LDAP.php b/apps/user_ldap/lib/User_LDAP.php index 1b0c07f0ca3..ca7e0b304ea 100644 --- a/apps/user_ldap/lib/User_LDAP.php +++ b/apps/user_ldap/lib/User_LDAP.php @@ -103,6 +103,10 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn return $this->userPluginManager->canChangeAvatar($uid); } + if(!$this->implementsActions(Backend::PROVIDE_AVATAR)) { + return true; + } + $user = $this->access->userManager->get($uid); if(!$user instanceof User) { return false; @@ -550,7 +554,7 @@ class User_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn return (bool)((Backend::CHECK_PASSWORD | Backend::GET_HOME | Backend::GET_DISPLAYNAME - | Backend::PROVIDE_AVATAR + | (($this->access->connection->ldapUserAvatarRule !== 'none') ? Backend::PROVIDE_AVATAR : 0) | Backend::COUNT_USERS | (((int)$this->access->connection->turnOnPasswordChange === 1)? Backend::SET_PASSWORD :0) | $this->userPluginManager->getImplementedActions()) diff --git a/apps/user_ldap/tests/ConfigurationTest.php b/apps/user_ldap/tests/ConfigurationTest.php index 797d2598be4..ab1312860fa 100644 --- a/apps/user_ldap/tests/ConfigurationTest.php +++ b/apps/user_ldap/tests/ConfigurationTest.php @@ -23,7 +23,16 @@ namespace OCA\User_LDAP\Tests; +use OCA\User_LDAP\Configuration; + class ConfigurationTest extends \Test\TestCase { + /** @var Configuration */ + protected $configuration; + + public function setUp() { + parent::setUp(); + $this->configuration = new Configuration('t01', false); + } public function configurationDataProvider() { $inputWithDN = array( @@ -84,6 +93,10 @@ class ConfigurationTest extends \Test\TestCase { // default behaviour, one case is enough, special needs must be tested // individually 'set string value' => array('ldapHost', $inputString, $expectedString), + + 'set avatar rule, default' => ['ldapUserAvatarRule', 'default', 'default'], + 'set avatar rule, none' => ['ldapUserAvatarRule', 'none', 'none'], + 'set avatar rule, data attribute' => ['ldapUserAvatarRule', 'data:jpegPhoto', 'data:jpegPhoto'], ); } @@ -91,10 +104,36 @@ class ConfigurationTest extends \Test\TestCase { * @dataProvider configurationDataProvider */ public function testSetValue($key, $input, $expected) { - $configuration = new \OCA\User_LDAP\Configuration('t01', false); + $this->configuration->setConfiguration([$key => $input]); + $this->assertSame($this->configuration->$key, $expected); + } + + public function avatarRuleValueProvider() { + return [ + ['none', []], + ['data:selfie', ['selfie']], + ['data:sELFie', ['selfie']], + ['data:', ['jpegphoto', 'thumbnailphoto']], + ['default', ['jpegphoto', 'thumbnailphoto']], + ['invalid#', ['jpegphoto', 'thumbnailphoto']], + ]; + } - $configuration->setConfiguration([$key => $input]); - $this->assertSame($configuration->$key, $expected); + /** + * @dataProvider avatarRuleValueProvider + */ + public function testGetAvatarAttributes($setting, $expected) { + $this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]); + $this->assertSame($expected, $this->configuration->getAvatarAttributes()); + } + + /** + * @dataProvider avatarRuleValueProvider + */ + public function testResolveRule($setting, $expected) { + $this->configuration->setConfiguration(['ldapUserAvatarRule' => $setting]); + // so far the only thing that can get resolved :) + $this->assertSame($expected, $this->configuration->resolveRule('avatar')); } } diff --git a/apps/user_ldap/tests/ConnectionTest.php b/apps/user_ldap/tests/ConnectionTest.php index c6c1fe11922..7a5da72fcdb 100644 --- a/apps/user_ldap/tests/ConnectionTest.php +++ b/apps/user_ldap/tests/ConnectionTest.php @@ -110,7 +110,7 @@ class ConnectionTest extends \Test\TestCase { ->method('setOption') ->will($this->returnValue(true)); - $this->ldap->expects($this->exactly(2)) + $this->ldap->expects($this->exactly(3)) ->method('connect') ->will($this->returnValue('ldapResource')); @@ -119,7 +119,7 @@ class ConnectionTest extends \Test\TestCase { ->will($this->returnValue(0)); // Not called often enough? Then, the fallback to the backup server is broken. - $this->connection->expects($this->exactly(3)) + $this->connection->expects($this->exactly(4)) ->method('getFromCache') ->with('overrideMainServer') ->will($this->onConsecutiveCalls(false, false, true, true)); diff --git a/apps/user_ldap/tests/User/ManagerTest.php b/apps/user_ldap/tests/User/ManagerTest.php index da30b210b17..5399aa95a6a 100644 --- a/apps/user_ldap/tests/User/ManagerTest.php +++ b/apps/user_ldap/tests/User/ManagerTest.php @@ -238,7 +238,17 @@ class ManagerTest extends \Test\TestCase { $this->assertNull($user); } - public function testGetAttributesAll() { + public function attributeRequestProvider() { + return [ + [ false ], + [ true ], + ]; + } + + /** + * @dataProvider attributeRequestProvider + */ + public function testGetAttributes($minimal) { list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) = $this->getTestInstances(); @@ -246,28 +256,14 @@ class ManagerTest extends \Test\TestCase { $manager->setLdapAccess($access); $connection = $access->getConnection(); - $connection->setConfiguration(array('ldapEmailAttribute' => 'mail')); + $connection->setConfiguration(['ldapEmailAttribute' => 'mail', 'ldapUserAvatarRule' => 'default']); - $attributes = $manager->getAttributes(); + $attributes = $manager->getAttributes($minimal); $this->assertTrue(in_array('dn', $attributes)); $this->assertTrue(in_array($access->getConnection()->ldapEmailAttribute, $attributes)); - $this->assertTrue(in_array('jpegphoto', $attributes)); - $this->assertTrue(in_array('thumbnailphoto', $attributes)); - } - - public function testGetAttributesMinimal() { - list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) = - $this->getTestInstances(); - - $manager = new Manager($config, $filesys, $log, $avaMgr, $image, $dbc, $userMgr, $notiMgr); - $manager->setLdapAccess($access); - - $attributes = $manager->getAttributes(true); - - $this->assertTrue(in_array('dn', $attributes)); - $this->assertTrue(!in_array('jpegphoto', $attributes)); - $this->assertTrue(!in_array('thumbnailphoto', $attributes)); + $this->assertSame(!$minimal, in_array('jpegphoto', $attributes)); + $this->assertSame(!$minimal, in_array('thumbnailphoto', $attributes)); } } diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php index aa6498be082..837c72a3a31 100644 --- a/apps/user_ldap/tests/User/UserTest.php +++ b/apps/user_ldap/tests/User/UserTest.php @@ -503,7 +503,7 @@ class UserTest extends \Test\TestCase { $this->access->expects($this->once()) ->method('readAttribute') ->with($this->equalTo($this->dn), - $this->equalTo('jpegPhoto')) + $this->equalTo('jpegphoto')) ->will($this->returnValue(['this is a photo'])); $this->image->expects($this->once()) @@ -536,6 +536,11 @@ class UserTest extends \Test\TestCase { ->with($this->equalTo($this->uid)) ->will($this->returnValue($avatar)); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + $this->user->updateAvatar(); } @@ -544,11 +549,11 @@ class UserTest extends \Test\TestCase { ->method('readAttribute') ->willReturnCallback(function($dn, $attr) { if($dn === $this->dn - && $attr === 'jpegPhoto') + && $attr === 'jpegphoto') { return false; } elseif($dn === $this->dn - && $attr === 'thumbnailPhoto') + && $attr === 'thumbnailphoto') { return ['this is a photo']; } @@ -585,6 +590,11 @@ class UserTest extends \Test\TestCase { ->with($this->equalTo($this->uid)) ->will($this->returnValue($avatar)); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + $this->user->updateAvatar(); } @@ -593,11 +603,11 @@ class UserTest extends \Test\TestCase { ->method('readAttribute') ->willReturnCallback(function($dn, $attr) { if($dn === $this->dn - && $attr === 'jpegPhoto') + && $attr === 'jpegphoto') { return false; } elseif($dn === $this->dn - && $attr === 'thumbnailPhoto') + && $attr === 'thumbnailphoto') { return ['this is a photo']; } @@ -626,6 +636,11 @@ class UserTest extends \Test\TestCase { $this->avatarManager->expects($this->never()) ->method('getAvatar'); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + $this->user->updateAvatar(); } @@ -634,11 +649,11 @@ class UserTest extends \Test\TestCase { ->method('readAttribute') ->willReturnCallback(function($dn, $attr) { if($dn === $this->dn - && $attr === 'jpegPhoto') + && $attr === 'jpegphoto') { return false; } elseif($dn === $this->dn - && $attr === 'thumbnailPhoto') + && $attr === 'thumbnailphoto') { return ['this is a photo']; } @@ -676,6 +691,11 @@ class UserTest extends \Test\TestCase { ->with($this->equalTo($this->uid)) ->will($this->returnValue($avatar)); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + $this->assertFalse($this->user->updateAvatar()); } @@ -710,6 +730,11 @@ class UserTest extends \Test\TestCase { $this->avatarManager->expects($this->never()) ->method('getAvatar'); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + $this->user->updateAvatar(); } @@ -756,6 +781,11 @@ class UserTest extends \Test\TestCase { $this->anything()) ->will($this->returnValue(true)); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + $this->user->update(); } @@ -802,8 +832,12 @@ class UserTest extends \Test\TestCase { $this->access->expects($this->once()) ->method('readAttribute') ->with($this->equalTo($this->dn), - $this->equalTo('jpegPhoto')) + $this->equalTo('jpegphoto')) ->will($this->returnValue(['this is a photo'])); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); $photo = $this->user->getAvatarImage(); $this->assertSame('this is a photo', $photo); @@ -812,6 +846,18 @@ class UserTest extends \Test\TestCase { $this->user->getAvatarImage(); } + public function testGetAvatarImageDisabled() { + $this->access->expects($this->never()) + ->method('readAttribute') + ->with($this->equalTo($this->dn), $this->anything()); + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn([]); + + $this->assertFalse($this->user->getAvatarImage()); + } + public function imageDataProvider() { return [ [ false, false ], @@ -859,16 +905,20 @@ class UserTest extends \Test\TestCase { } return $name; })); - - $record = array( - strtolower($this->connection->ldapQuotaAttribute) => array('4096'), - strtolower($this->connection->ldapEmailAttribute) => array('alice@wonderland.org'), - strtolower($this->connection->ldapUserDisplayName) => array('Aaaaalice'), + $this->connection->expects($this->any()) + ->method('resolveRule') + ->with('avatar') + ->willReturn(['jpegphoto', 'thumbnailphoto']); + + $record = [ + strtolower($this->connection->ldapQuotaAttribute) => ['4096'], + strtolower($this->connection->ldapEmailAttribute) => ['alice@wonderland.org'], + strtolower($this->connection->ldapUserDisplayName) => ['Aaaaalice'], 'uid' => [$this->uid], - 'homedirectory' => array('Alice\'s Folder'), - 'memberof' => array('cn=groupOne', 'cn=groupTwo'), - 'jpegphoto' => array('here be an image') - ); + 'homedirectory' => ['Alice\'s Folder'], + 'memberof' => ['cn=groupOne', 'cn=groupTwo'], + 'jpegphoto' => ['here be an image'] + ]; foreach($requiredMethods as $method) { $userMock->expects($this->once()) diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php index 927a7550f60..447b91decff 100644 --- a/apps/user_ldap/tests/User_LDAPTest.php +++ b/apps/user_ldap/tests/User_LDAPTest.php @@ -1396,4 +1396,31 @@ class User_LDAPTest extends TestCase { $this->assertFalse($this->backend->createUser('uid', 'password')); } + + public function actionProvider() { + return [ + [ 'ldapUserAvatarRule', 'default', Backend::PROVIDE_AVATAR, true] , + [ 'ldapUserAvatarRule', 'data:selfiePhoto', Backend::PROVIDE_AVATAR, true], + [ 'ldapUserAvatarRule', 'none', Backend::PROVIDE_AVATAR, false], + [ 'turnOnPasswordChange', 0, Backend::SET_PASSWORD, false], + [ 'turnOnPasswordChange', 1, Backend::SET_PASSWORD, true], + ]; + } + + /** + * @dataProvider actionProvider + */ + public function testImplementsAction($configurable, $value, $actionCode, $expected) { + $this->pluginManager->expects($this->once()) + ->method('getImplementedActions') + ->willReturn(0); + + $this->connection->expects($this->any()) + ->method('__get') + ->willReturnMap([ + [$configurable, $value], + ]); + + $this->assertSame($expected, $this->backend->implementsActions($actionCode)); + } } diff --git a/apps/workflowengine/l10n/fi.js b/apps/workflowengine/l10n/fi.js index 038e661d3a7..0fd9ee1f648 100644 --- a/apps/workflowengine/l10n/fi.js +++ b/apps/workflowengine/l10n/fi.js @@ -1,6 +1,8 @@ OC.L10N.register( "workflowengine", { + "Group list is empty" : "Ryhmälista on tyhjä", + "Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa", "Saved" : "Tallennettu", "Saving failed:" : "Tallennus epäonnistui:", "File MIME type" : "Tiedoston MIME-tyyppi", @@ -41,15 +43,19 @@ OC.L10N.register( "is member of" : "on jäsen", "is not member of" : "ei ole jäsen", "The given operator is invalid" : "Annettu operaattori on virheellinen", + "The given regular expression is invalid" : "Määritetty säännöllinen lauseke on virheellinen", "The given file size is invalid" : "Annettu tiedoston koko on virheellinen", "The given tag id is invalid" : "Annettu tag id on virheellinen", - "The given IP range is invalid" : "Annetut IP arvot ovat virheelliset", - "The given IP range is not valid for IPv4" : "Annetut IP arvot eivät käy IPv4 osoitteisiin", - "The given IP range is not valid for IPv6" : "Annetut IP arvot eivät käy IPv6 osoitteisiin", + "The given IP range is invalid" : "Annetut IP-arvot ovat virheelliset", + "The given IP range is not valid for IPv4" : "Annetut IP-arvot eivät käy IPv4-osoitteisiin", + "The given IP range is not valid for IPv6" : "Annetut IP-arvot eivät käy IPv6-osoitteisiin", "The given time span is invalid" : "Annettu aikaväli on virheellinen", "The given start time is invalid" : "Annettu aloitusaika on virheellinen", "The given end time is invalid" : "Annettu päättymisaika on virheellinen", "The given group does not exist" : "Annettua ryhmää ei ole", + "Operation #%s does not exist" : "Toimenpidettä #%s ei ole olemassa", + "Operation %s does not exist" : "Toimenpidettä %s ei ole olemassa", + "Operation %s is invalid" : "Toimenpide %s on virheellinen", "Workflow" : "Työnkulku", "Open documentation" : "Avaa dokumentaatio", "Add rule group" : "Lisää sääntöryhmä", diff --git a/apps/workflowengine/l10n/fi.json b/apps/workflowengine/l10n/fi.json index d9f5b72b6e0..f4947e2cc17 100644 --- a/apps/workflowengine/l10n/fi.json +++ b/apps/workflowengine/l10n/fi.json @@ -1,4 +1,6 @@ { "translations": { + "Group list is empty" : "Ryhmälista on tyhjä", + "Unable to retrieve the group list" : "Ryhmälistaa ei voitu noutaa", "Saved" : "Tallennettu", "Saving failed:" : "Tallennus epäonnistui:", "File MIME type" : "Tiedoston MIME-tyyppi", @@ -39,15 +41,19 @@ "is member of" : "on jäsen", "is not member of" : "ei ole jäsen", "The given operator is invalid" : "Annettu operaattori on virheellinen", + "The given regular expression is invalid" : "Määritetty säännöllinen lauseke on virheellinen", "The given file size is invalid" : "Annettu tiedoston koko on virheellinen", "The given tag id is invalid" : "Annettu tag id on virheellinen", - "The given IP range is invalid" : "Annetut IP arvot ovat virheelliset", - "The given IP range is not valid for IPv4" : "Annetut IP arvot eivät käy IPv4 osoitteisiin", - "The given IP range is not valid for IPv6" : "Annetut IP arvot eivät käy IPv6 osoitteisiin", + "The given IP range is invalid" : "Annetut IP-arvot ovat virheelliset", + "The given IP range is not valid for IPv4" : "Annetut IP-arvot eivät käy IPv4-osoitteisiin", + "The given IP range is not valid for IPv6" : "Annetut IP-arvot eivät käy IPv6-osoitteisiin", "The given time span is invalid" : "Annettu aikaväli on virheellinen", "The given start time is invalid" : "Annettu aloitusaika on virheellinen", "The given end time is invalid" : "Annettu päättymisaika on virheellinen", "The given group does not exist" : "Annettua ryhmää ei ole", + "Operation #%s does not exist" : "Toimenpidettä #%s ei ole olemassa", + "Operation %s does not exist" : "Toimenpidettä %s ei ole olemassa", + "Operation %s is invalid" : "Toimenpide %s on virheellinen", "Workflow" : "Työnkulku", "Open documentation" : "Avaa dokumentaatio", "Add rule group" : "Lisää sääntöryhmä", diff --git a/apps/workflowengine/l10n/hu.js b/apps/workflowengine/l10n/hu.js index 9407bb10a12..95ae5ab223b 100644 --- a/apps/workflowengine/l10n/hu.js +++ b/apps/workflowengine/l10n/hu.js @@ -1,6 +1,7 @@ OC.L10N.register( "workflowengine", { + "Group list is empty" : "Csoport lista üres", "Unable to retrieve the group list" : "Csoportlista betöltése sikertelen", "Saved" : "Elmentve", "Saving failed:" : "Mentés sikertelen:", diff --git a/apps/workflowengine/l10n/hu.json b/apps/workflowengine/l10n/hu.json index b6eebf6e99c..53e9ac33c09 100644 --- a/apps/workflowengine/l10n/hu.json +++ b/apps/workflowengine/l10n/hu.json @@ -1,4 +1,5 @@ { "translations": { + "Group list is empty" : "Csoport lista üres", "Unable to retrieve the group list" : "Csoportlista betöltése sikertelen", "Saved" : "Elmentve", "Saving failed:" : "Mentés sikertelen:", diff --git a/apps/workflowengine/l10n/ja.js b/apps/workflowengine/l10n/ja.js index b60801f8914..05b786aa552 100644 --- a/apps/workflowengine/l10n/ja.js +++ b/apps/workflowengine/l10n/ja.js @@ -1,13 +1,15 @@ OC.L10N.register( "workflowengine", { + "Group list is empty" : "グループリストが空です", + "Unable to retrieve the group list" : "グループリストを取得できません", "Saved" : "保存しました", "Saving failed:" : "保存に失敗しました:", "File MIME type" : "ファイルMIMEタイプ", "is" : "は", "is not" : "は異なる", "matches" : "合致", - "does not match" : "合致しない", + "does not match" : "一致しない", "Example: {placeholder}" : "例: {プレースホルダー}", "File size (upload)" : "ファイルサイズ(アップロード)", "less" : "より小さい", diff --git a/apps/workflowengine/l10n/ja.json b/apps/workflowengine/l10n/ja.json index 080a9fb026a..c383c4fdf5f 100644 --- a/apps/workflowengine/l10n/ja.json +++ b/apps/workflowengine/l10n/ja.json @@ -1,11 +1,13 @@ { "translations": { + "Group list is empty" : "グループリストが空です", + "Unable to retrieve the group list" : "グループリストを取得できません", "Saved" : "保存しました", "Saving failed:" : "保存に失敗しました:", "File MIME type" : "ファイルMIMEタイプ", "is" : "は", "is not" : "は異なる", "matches" : "合致", - "does not match" : "合致しない", + "does not match" : "一致しない", "Example: {placeholder}" : "例: {プレースホルダー}", "File size (upload)" : "ファイルサイズ(アップロード)", "less" : "より小さい", diff --git a/apps/workflowengine/l10n/pl.js b/apps/workflowengine/l10n/pl.js index 6f13648aaac..375f6a88268 100644 --- a/apps/workflowengine/l10n/pl.js +++ b/apps/workflowengine/l10n/pl.js @@ -19,7 +19,7 @@ OC.L10N.register( "File system tag" : "Etykieta systemu plików", "is tagged with" : "jest oznaczony", "is not tagged with" : "Nie jest oznaczony", - "Select tag…" : "Wybierz etykietę...", + "Select tag…" : "Wybierz etykietę…", "Request remote address" : "Uzyskaj zdalny adres", "matches IPv4" : "pasuje IPv4", "does not match IPv4" : "nie pasuje IPv4", @@ -30,7 +30,7 @@ OC.L10N.register( "not between" : "nie pomiędzy", "Start" : "Start", "End" : "Koniec", - "Select timezone…" : "Wybierz strefę czasową...", + "Select timezone…" : "Wybierz strefę czasową…", "Request URL" : "Żądanie URL", "Predefined URLs" : "Przedefiniowanie URLs", "Files WebDAV" : "Pliki WebDAV", @@ -68,7 +68,7 @@ OC.L10N.register( "Add rule" : "Dodaj regułę", "Reset" : "Zresetuj", "Save" : "Zapisz", - "Saving…" : "Zapisywanie...", - "Loading…" : "Wczytywanie..." + "Saving…" : "Zapisywanie…", + "Loading…" : "Wczytywanie…" }, "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);"); diff --git a/apps/workflowengine/l10n/pl.json b/apps/workflowengine/l10n/pl.json index 39b140b8b5c..735d712da4a 100644 --- a/apps/workflowengine/l10n/pl.json +++ b/apps/workflowengine/l10n/pl.json @@ -17,7 +17,7 @@ "File system tag" : "Etykieta systemu plików", "is tagged with" : "jest oznaczony", "is not tagged with" : "Nie jest oznaczony", - "Select tag…" : "Wybierz etykietę...", + "Select tag…" : "Wybierz etykietę…", "Request remote address" : "Uzyskaj zdalny adres", "matches IPv4" : "pasuje IPv4", "does not match IPv4" : "nie pasuje IPv4", @@ -28,7 +28,7 @@ "not between" : "nie pomiędzy", "Start" : "Start", "End" : "Koniec", - "Select timezone…" : "Wybierz strefę czasową...", + "Select timezone…" : "Wybierz strefę czasową…", "Request URL" : "Żądanie URL", "Predefined URLs" : "Przedefiniowanie URLs", "Files WebDAV" : "Pliki WebDAV", @@ -66,7 +66,7 @@ "Add rule" : "Dodaj regułę", "Reset" : "Zresetuj", "Save" : "Zapisz", - "Saving…" : "Zapisywanie...", - "Loading…" : "Wczytywanie..." + "Saving…" : "Zapisywanie…", + "Loading…" : "Wczytywanie…" },"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);" }
\ No newline at end of file |