Compare commits

..

30 Commits

Author SHA1 Message Date
Git'Fellow 4ea506847e fix: typo
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-01-23 16:53:10 +01:00
Git'Fellow 4c5e7d089d perf(cache): Optimize folder contents fetch
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-01-23 16:46:37 +01:00
Joas Schilling d9d1d04e2e Merge pull request #57750 from nextcloud/carl/fix-cacheentry-groupfolder
fix(cache): Fix parsing cache entry from groupfolder
2026-01-23 12:51:40 +01:00
Joas Schilling f81948690d Merge pull request #57726 from nextcloud/fix/noid/add-since-for-param
fix: add since param for activity manager
2026-01-23 12:47:28 +01:00
Joas Schilling 26f40c457b Merge pull request #57735 from nextcloud/fix/add-missing-translator-hint
fix: Add translator hints to avoid confusion between big and large
2026-01-23 12:46:59 +01:00
Carl Schwan dd26a8b7eb fix(cache): Fix parsing cache entry from groupfolder and collectives
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-23 10:52:44 +01:00
Nextcloud bot dd8b274550 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-23 00:21:28 +00:00
Ferdinand Thiessen e5c08cca40 Merge pull request #57664 from nextcloud/feat/filters
feat(files): render file list filters in top bar and allow to collapse into overflow menu
2026-01-22 21:15:55 +01:00
Côme Chilliet 407d7cb101 fix: Add translator hints to avoid confusion between big and large
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-22 17:16:09 +01:00
Ferdinand Thiessen 4e2e49b3dd chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-22 16:34:05 +01:00
Ferdinand Thiessen ed7fb12b3f test: adjust Cypress tests for refactored files app UI
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-22 16:31:48 +01:00
Ferdinand Thiessen d8b05ec6c3 refactor(files): re-position "new"-menu and make it primary
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-22 16:31:48 +01:00
Ferdinand Thiessen 4ca9fb836d feat(files): move "reload" and "share" breadcrumb actions to menu
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-22 16:31:48 +01:00
Ferdinand Thiessen 985b66c64f feat(files): render filters in top bar
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-22 16:31:48 +01:00
Ferdinand Thiessen 871f037dda refactor(files): handle file list width break points in one central point
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-22 16:31:47 +01:00
Robin Appelman 3f9849d921 Merge pull request #57295 from nextcloud/share-mount-validation-on-share
feat: perform share mount validation on share instead of on mount
2026-01-22 13:32:11 +01:00
Anna Larch 95ee9a0b7d fix: add since param for activity manager
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-22 11:32:38 +01:00
Joas Schilling dde6681542 Merge pull request #57684 from nextcloud/master-is-now-34
Master is now 34
2026-01-22 10:15:51 +01:00
Joas Schilling ce8a97b1c7 chore(assets): Recompile assets
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 09:35:19 +01:00
Joas Schilling 5e35fdd380 chore: Bump 3rdparty to last master commit
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 09:34:56 +01:00
Joas Schilling 1d78386806 chore: Bump app versions and requirements
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 08:59:28 +01:00
Joas Schilling 9530b810f1 chore(release): Bump version to 34
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 08:44:56 +01:00
Joas Schilling 2ae3988c23 fix(security): Update Expires time
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 08:43:39 +01:00
Joas Schilling afb0446435 ci(actions): Update stable33
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 08:42:11 +01:00
Joas Schilling bd39402570 ci(dependabot): Update stable33
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-22 08:38:13 +01:00
Robin Appelman 34fc215133 fix: adjust SharesUpdatedListener to event change
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-21 16:35:56 +01:00
Robin Appelman b4315066b1 perf: only update shares for users once
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-21 16:35:56 +01:00
Robin Appelman 94f33463ff test: adjust tests
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-21 16:35:55 +01:00
Robin Appelman 43a9335355 fix: attempt to make share conflict resolution more resilient to false positives
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-21 16:35:54 +01:00
Robin Appelman d71c6796ca feat: perform share mount validation on share instead of on mount
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-21 16:35:53 +01:00
3422 changed files with 43856 additions and 57322 deletions
+2 -2
View File
@@ -71,9 +71,8 @@ body:
Select Nextcloud Server version.
_Versions not listed here are not maintained and not supported anymore_
options:
- "30"
- "31"
- "32"
- "33"
- "master"
validations:
required: true
@@ -96,6 +95,7 @@ body:
Select PHP engine version serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "PHP 8.5"
- "PHP 8.4"
- "PHP 8.3"
- "PHP 8.2"
+61 -5
View File
@@ -21,7 +21,7 @@ updates:
- package-ecosystem: composer
directories:
- "/"
- "/build/integration"
- "/vendor-bin/behat"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
@@ -64,9 +64,10 @@ updates:
- "@vitest/*"
# Latest stable release
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable32
target-branch: stable33
directories:
- "/"
- "/vendor-bin/behat"
@@ -74,6 +75,7 @@ updates:
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
- "/vendor-bin/rector"
schedule:
interval: weekly
day: saturday
@@ -87,11 +89,13 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Latest stable branch
# frontend dependencies
- package-ecosystem: npm
target-branch: stable32
directory: "/"
target-branch: stable33
directories:
- "/"
- "/build/frontend"
- "/build/frontend-legacy"
schedule:
interval: weekly
day: saturday
@@ -103,6 +107,15 @@ updates:
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
groups:
vite:
patterns:
- "vite"
- "@nextcloud/vite-config"
vitest:
patterns:
- "vitest"
- "@vitest/*"
ignore:
# no major updates on stable branches
- dependency-name: "*"
@@ -110,6 +123,49 @@ updates:
# Older stable releases
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable32
directories:
- "/"
- "/vendor-bin/behat"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
schedule:
interval: weekly
day: saturday
time: "04:30"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
ignore:
# only patch updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# frontend dependencies
- package-ecosystem: npm
target-branch: stable32
directory: "/"
schedule:
interval: weekly
day: saturday
time: "04:30"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
ignore:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable31
+2 -2
View File
@@ -37,13 +37,13 @@ jobs:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
uses: github/codeql-action/init@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql-config.yml
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@89a39a4e59826350b863aa6b6252a07ad50cf83e # v4.32.4
uses: github/codeql-action/analyze@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v4.31.10
with:
category: "/language:${{matrix.language}}"
+7 -7
View File
@@ -107,7 +107,7 @@ jobs:
services:
mysql:
# Only start mysql if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-mysql-8.4:latest' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-mysql-8.4:latest' || ''}}
ports:
- '3306/tcp'
env:
@@ -119,7 +119,7 @@ jobs:
mariadb:
# Only start mariadb if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'mariadb:11.4' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'mariadb:11.4' || ''}}
ports:
- '3306/tcp'
env:
@@ -131,7 +131,7 @@ jobs:
postgres:
# Only start postgres if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-postgres-17:latest' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-postgres-17:latest' || ''}}
ports:
- '5432/tcp'
env:
@@ -142,7 +142,7 @@ jobs:
oracle:
# Only start oracle if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/gvenzl/oracle-free:23' || ''}} # zizmor: ignore[unpinned-images]
image: ${{matrix.containers == 'setup' && 'ghcr.io/gvenzl/oracle-free:23' || ''}}
ports:
- '1521'
env:
@@ -171,7 +171,7 @@ jobs:
run: ./node_modules/cypress/bin/cypress install
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
uses: cypress-io/github-action@bc22e01685c56e89e7813fd8e26f33dc47f87e15 # v7.1.5
uses: cypress-io/github-action@2ad32e649e4db26c07674ebae31a297601dbcbaf # v6.10.8
with:
# We already installed the dependencies in the init job
install: false
@@ -195,7 +195,7 @@ jobs:
SETUP_TESTING: ${{ matrix.containers == 'setup' && 'true' || '' }}
- name: Upload snapshots and videos
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
if: always()
with:
name: snapshots_${{ matrix.containers }}
@@ -218,7 +218,7 @@ jobs:
run: docker exec nextcloud-e2e-test-server_${{ env.APP_NAME }} tar -cvjf - data > data.tar
- name: Upload data archive
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
if: failure() && matrix.containers != 'component'
with:
name: nc_data_${{ matrix.containers }}
+1 -1
View File
@@ -71,7 +71,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Python
uses: LizardByte/actions/actions/setup_python@70bb8d394d1c92f6113aeec6ae9cc959a5763d15 # v2026.227.200013
uses: LizardByte/actions/actions/setup_python@e6bc045033a5614035b66daafc38ff86faecb23a # v2026.116.208
with:
python-version: '2.7'
+2 -2
View File
@@ -75,8 +75,8 @@ jobs:
- 'videoverification_features'
php-versions: ['8.4']
spreed-versions: ['stable33']
activity-versions: ['stable33']
spreed-versions: ['main']
activity-versions: ['master']
services:
redis:
+1
View File
@@ -26,6 +26,7 @@ jobs:
matrix:
branches:
- ${{ github.event.repository.default_branch }}
- 'stable33'
- 'stable32'
- 'stable31'
+5 -5
View File
@@ -63,7 +63,7 @@ jobs:
ref: ${{ github.event.pull_request.head.ref }}
- name: Run before measurements
uses: nextcloud/profiler@6a74c915048285b35b8e1cd96c0835a635945044
uses: nextcloud/profiler@6801ee10fc80f10b444388fb6ca9b36ad8a2ea83
with:
run: |
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
@@ -72,7 +72,7 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: before.json
profiler-branch: stable33
profiler-branch: master
- name: Apply PR # zizmor: ignore[template-injection]
run: |
@@ -85,7 +85,7 @@ jobs:
- name: Run after measurements
id: compare
uses: nextcloud/profiler@6a74c915048285b35b8e1cd96c0835a635945044
uses: nextcloud/profiler@6801ee10fc80f10b444388fb6ca9b36ad8a2ea83
with:
run: |
curl -s -X PROPFIND -u test:test http://localhost:8080/remote.php/dav/files/test
@@ -94,12 +94,12 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: after.json
profiler-branch: stable33
profiler-branch: master
compare-with: before.json
- name: Upload profiles
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: profiles
path: |
+3 -8
View File
@@ -86,17 +86,14 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up dependencies
run: |
sudo apt-get update
sudo apt-get install -y ghostscript
composer i
run: composer i
- name: Set up Nextcloud
run: |
@@ -110,7 +107,7 @@ jobs:
run: ./occ app:list && echo "======= System config =======" && ./occ config:list system
- name: PHPUnit database tests
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }} tests/lib/Preview/PostscriptTest.php
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
@@ -128,8 +125,6 @@ jobs:
- name: Print logs
if: always()
run: |
gs --version
cat /etc/ImageMagick-6/policy.xml
cat data/nextcloud.log
summary:
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
issues: write
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v9
- uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v9
with:
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
stale-issue-message: >
+2 -4
View File
@@ -15,6 +15,7 @@ on:
permissions:
contents: read
security-events: write
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
@@ -58,9 +59,6 @@ jobs:
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
permissions:
security-events: write
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
@@ -88,7 +86,7 @@ jobs:
- name: Upload Security Analysis results to GitHub
if: always()
uses: github/codeql-action/upload-sarif@89a39a4e59826350b863aa6b6252a07ad50cf83e # v3
uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v3
with:
sarif_file: results.sarif
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable33', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-ca-certificate-bundle-${{ matrix.branches }}
@@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable33', 'stable32', 'stable31', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-code-signing-crl-${{ matrix.branches }}
-35
View File
@@ -4,7 +4,6 @@
# Global exclude
.editorconfig
.envrc
.git
.git-blame-ignore-revs
.gitattributes
@@ -12,44 +11,12 @@
.gitignore
.gitmodules
.idea
.jshint
.jshintrc
.l10nignore
.mailmap
.nextcloudignore
.noopenapi
.npmignore
.php-cs-fixer*
.pre-commit-config.yaml
.tag
.tx
CHANGELOG.md
CODE_OF_CONDUCT.md
COPYING-README
DESIGN.md
Makefile
README.md
SECURITY.md
codecov.yml
cs-fixer
csfixer
custom.d.ts
cypress
cypress.config.ts
eslint.config.js
flake.lock
flake.nix
openapi-extractor
phpunit
psalm
psalm*.xml
rector
stylelint.config.js
tests
tsconfig.json
vite.config.ts
vitest.config.ts
window.d.ts
# Server specific
/.devcontainer
@@ -60,5 +27,3 @@ window.d.ts
/config/config.php
/contribute
/data
/openapi.json
/vendor-bin
+4 -4
View File
@@ -5,13 +5,13 @@
-->
# Nextcloud Server ☁
[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/server)](https://api.reuse.software/info/github.com/nextcloud/server)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/stable33/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
[![Design](https://contribute.design/api/shield/nextcloud/server)](https://contribute.design/nextcloud/server)
**A safe home for all your data.**
![](https://raw.githubusercontent.com/nextcloud/screenshots/stable33/nextcloud-hub-25-files.png)
![](https://raw.githubusercontent.com/nextcloud/screenshots/master/nextcloud-hub-25-files.png)
## Why is this so awesome? 🤩
@@ -35,8 +35,8 @@ Enterprise? Public Sector or Education user? You may want to have a look into [*
## Get in touch 💬
* [📋 Forum](https://help.nextcloud.com)
* [🦋 Bluesky](https://bsky.app/profile/nextcloud.bsky.social)
* [👥 Facebook](https://www.facebook.com/nextclouders)
* [🐣 Twitter](https://twitter.com/Nextclouders)
* [🐘 Mastodon](https://mastodon.xyz/@nextcloud)
You can also [get support for Nextcloud](https://nextcloud.com/support)!
@@ -58,7 +58,7 @@ There are many ways to contribute, of which development is only one! Find out [h
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
Several apps that are included by default in regular releases such as [First run wizard](https://github.com/nextcloud/firstrunwizard) or [Activity](https://github.com/nextcloud/activity) are missing in `stable33` and have to be installed manually by cloning them into the `apps` subfolder.
Several apps that are included by default in regular releases such as [First run wizard](https://github.com/nextcloud/firstrunwizard) or [Activity](https://github.com/nextcloud/activity) are missing in `master` and have to be installed manually by cloning them into the `apps` subfolder.
Otherwise, git checkouts can be handled the same as release archives, by using the `stable*` branches. Note they should never be used on production systems.
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.23.0</version>
<version>1.24.0</version>
<licence>agpl</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
@@ -20,7 +20,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="33" max-version="33"/>
<nextcloud min-version="34" max-version="34"/>
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "নিরীক্ষা",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "নেক্সটক্লাউডের নিরীক্ষামূলক সক্ষমতা প্রদান করে যেমন লগিং ফাইল অ্যাক্সেস বা অন্য কোনো জরুরী পদক্ষেপসমূহ"
},
"nplurals=2; plural=(n != 1);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "নিরীক্ষা",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "নেক্সটক্লাউডের নিরীক্ষামূলক সক্ষমতা প্রদান করে যেমন লগিং ফাইল অ্যাক্সেস বা অন্য কোনো জরুরী পদক্ষেপসমূহ"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Аудит / Лог",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud-д файл нэвтрэлт болон мэдрэмтгий үйлдлүүдийг бүртгэх зэрэг лог хөтлөх чадварыг олгодог."
},
"nplurals=2; plural=(n != 1);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "Аудит / Лог",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud-д файл нэвтрэлт болон мэдрэмтгий үйлдлүүдийг бүртгэх зэрэг лог хөтлөх чадварыг олгодог."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -9,7 +9,7 @@
<name>Cloud Federation API</name>
<summary>Enable clouds to communicate with each other and exchange data</summary>
<description>The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.</description>
<version>1.17.0</version>
<version>1.18.0</version>
<licence>agpl</licence>
<author>Bjoern Schiessle</author>
<namespace>CloudFederationAPI</namespace>
@@ -19,6 +19,6 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="33" max-version="33"/>
<nextcloud min-version="34" max-version="34"/>
</dependencies>
</info>
-8
View File
@@ -1,8 +0,0 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "Үүлнүүдийг хоорондоо холбогдож өгөгдөл солилцох боломжтой болгох",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API нь янз бүрийн Nextcloud инстанцуудад хоорондоо харилцах болон өгөгдөл солилцох боломжийг олгодог."
},
"nplurals=2; plural=(n != 1);");
-6
View File
@@ -1,6 +0,0 @@
{ "translations": {
"Cloud Federation API" : "Cloud Federation API",
"Enable clouds to communicate with each other and exchange data" : "Үүлнүүдийг хоорондоо холбогдож өгөгдөл солилцох боломжтой болгох",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API нь янз бүрийн Nextcloud инстанцуудад хоорондоо харилцах болон өгөгдөл солилцох боломжийг олгодог."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -1,8 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Jamg'armaning bulutli APIsi",
"Cloud Federation API" : "Asl faylni o'chirishda kutilmagan xatolik yuz berdi.",
"Enable clouds to communicate with each other and exchange data" : "Bulutlar bir-biri bilan aloqa qilish va ma'lumot almashish imkonini beradi",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Jamoada API turli xil Nextcloud misollariga bir-biri bilan muloqot qilish va ma'lumotlarni almashish imkonini beradi."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API turli xil Nextcloud misollariga bir-biri bilan muloqot qilish va ma'lumotlarni almashish imkonini beradi."
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "Jamg'armaning bulutli APIsi",
"Cloud Federation API" : "Asl faylni o'chirishda kutilmagan xatolik yuz berdi.",
"Enable clouds to communicate with each other and exchange data" : "Bulutlar bir-biri bilan aloqa qilish va ma'lumot almashish imkonini beradi",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Jamoada API turli xil Nextcloud misollariga bir-biri bilan muloqot qilish va ma'lumotlarni almashish imkonini beradi."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API turli xil Nextcloud misollariga bir-biri bilan muloqot qilish va ma'lumotlarni almashish imkonini beradi."
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Comments</name>
<summary>Files app plugin to add comments to files</summary>
<description>Files app plugin to add comments to files</description>
<version>1.23.0</version>
<version>1.24.0</version>
<licence>agpl</licence>
<author>Arthur Schiwon</author>
<author>Vincent Petry</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="33" max-version="33"/>
<nextcloud min-version="34" max-version="34"/>
</dependencies>
<activity>
+1 -1
View File
@@ -32,6 +32,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Einen Kommentar schreiben …"
"Write a comment …" : "Einen Kommentar schreiben …"
},
"nplurals=2; plural=(n != 1);");
+1 -1
View File
@@ -30,6 +30,6 @@
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Einen Kommentar schreiben …"
"Write a comment …" : "Einen Kommentar schreiben …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+1 -1
View File
@@ -32,6 +32,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Einen Kommentar schreiben …"
"Write a comment …" : "Schreiben Sie einen Kommentar …"
},
"nplurals=2; plural=(n != 1);");
+1 -1
View File
@@ -30,6 +30,6 @@
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"Write a comment …" : "Einen Kommentar schreiben …"
"Write a comment …" : "Schreiben Sie einen Kommentar …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+1 -9
View File
@@ -10,18 +10,11 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} je komentirao {file}",
"<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke",
"Files" : "Datoteke",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Spomenuti ste u komentaru na „{file}” od računa koji je u međuvremenu izbrisan.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vas je spomenuo u komentaru na „{file}”",
"Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke",
"Edit comment" : "Uredi komentar",
"Delete comment" : "Izbriši komentar",
"Cancel edit" : "Otkaži uređivanje",
"New comment" : "Novi komentar",
"Write a comment …" : "Napiši komentar …",
"Post comment" : "Objavi komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ za spominjanje, : za emoji, / za pametni odabir",
"Could not reload comments" : "Nije moguće ponovno učitati komentare",
"Failed to mark comments as read" : "Nije uspjelo označavanje komentara kao pročitani",
"Unable to load the comments list" : "Nije moguće učitati popis komentara",
"No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!",
"No more messages" : "Nema više poruka",
@@ -31,7 +24,6 @@ OC.L10N.register(
"An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara",
"Comment deleted" : "Komentar izbrisan",
"An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara",
"Write a comment …" : "Napiši komentar …"
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
+1 -9
View File
@@ -8,18 +8,11 @@
"{author} commented on {file}" : "{author} je komentirao {file}",
"<strong>Comments</strong> for files" : "<strong>Komentari</strong> za datoteke",
"Files" : "Datoteke",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Spomenuti ste u komentaru na „{file}” od računa koji je u međuvremenu izbrisan.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vas je spomenuo u komentaru na „{file}”",
"Files app plugin to add comments to files" : "Dodatak za aplikaciju Datoteke za dodavanje komentara na datoteke",
"Edit comment" : "Uredi komentar",
"Delete comment" : "Izbriši komentar",
"Cancel edit" : "Otkaži uređivanje",
"New comment" : "Novi komentar",
"Write a comment …" : "Napiši komentar …",
"Post comment" : "Objavi komentar",
"@ for mentions, : for emoji, / for smart picker" : "@ za spominjanje, : za emoji, / za pametni odabir",
"Could not reload comments" : "Nije moguće ponovno učitati komentare",
"Failed to mark comments as read" : "Nije uspjelo označavanje komentara kao pročitani",
"Unable to load the comments list" : "Nije moguće učitati popis komentara",
"No comments yet, start the conversation!" : "Još nema komentara, započnite razgovor!",
"No more messages" : "Nema više poruka",
@@ -29,7 +22,6 @@
"An error occurred while trying to edit the comment" : "Došlo je do pogreške prilikom uređivanja komentara",
"Comment deleted" : "Komentar izbrisan",
"An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara",
"Write a comment …" : "Napiši komentar …"
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara"
},"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;"
}
+1 -9
View File
@@ -10,28 +10,20 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} pakomentavo {file}",
"<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
"Files" : "Failai",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Buvote paminėtas „{file}“, komentare, kuris buvo parašytas iš paskyros, kuri vėliau buvo ištrinta.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} minėjo jus \"{file}\" komentare",
"Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
"Edit comment" : "Taisyti komentarą",
"Delete comment" : "Ištrinti komentarą",
"Cancel edit" : "Atsisakyti taisymo",
"New comment" : "Naujas komentaras",
"Write a comment …" : "Rašyti komentarą ...",
"Post comment" : "Paskelbti komentarą",
"@ for mentions, : for emoji, / for smart picker" : "@ paminėjimams, : jaustukams, / išmaniajam rinkikliui",
"Could not reload comments" : "Nepavyko įkelti komentarų iš naujo",
"Failed to mark comments as read" : "Nepavyko pažymėti komentarų kaip perskaitytų",
"Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
"No more messages" : "Daugiau jokių pranešimų",
"Retry" : "Bandyti dar kartą",
"_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
"Comment" : "Komentaras",
"An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
"Comment deleted" : "Komentaras ištrintas",
"An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida",
"Write a comment …" : "Rašyti komentarą..."
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
},
"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);");
+1 -9
View File
@@ -8,28 +8,20 @@
"{author} commented on {file}" : "{author} pakomentavo {file}",
"<strong>Comments</strong> for files" : "Failų <strong>komentarai</strong>",
"Files" : "Failai",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Buvote paminėtas „{file}“, komentare, kuris buvo parašytas iš paskyros, kuri vėliau buvo ištrinta.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} minėjo jus \"{file}\" komentare",
"Files app plugin to add comments to files" : "Failų programėlės įskiepis, skirtas prie failų pridėti komentarus",
"Edit comment" : "Taisyti komentarą",
"Delete comment" : "Ištrinti komentarą",
"Cancel edit" : "Atsisakyti taisymo",
"New comment" : "Naujas komentaras",
"Write a comment …" : "Rašyti komentarą ...",
"Post comment" : "Paskelbti komentarą",
"@ for mentions, : for emoji, / for smart picker" : "@ paminėjimams, : jaustukams, / išmaniajam rinkikliui",
"Could not reload comments" : "Nepavyko įkelti komentarų iš naujo",
"Failed to mark comments as read" : "Nepavyko pažymėti komentarų kaip perskaitytų",
"Unable to load the comments list" : "Nepavyko įkelti komentarų sąrašo",
"No comments yet, start the conversation!" : "Komentarų kol kas nėra, pradėkite pokalbį!",
"No more messages" : "Daugiau jokių pranešimų",
"Retry" : "Bandyti dar kartą",
"_1 new comment_::_{unread} new comments_" : ["1 neskaitytas komentaras","{unread} neskaityti komentarai","{unread} neskaitytų komentarų","{unread} neskaitytas komentaras"],
"Comment" : "Komentaras",
"An error occurred while trying to edit the comment" : "Bandant taisyti komentarą, įvyko klaida",
"Comment deleted" : "Komentaras ištrintas",
"An error occurred while trying to delete the comment" : "Bandant ištrinti komentarą, įvyko klaida",
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida",
"Write a comment …" : "Rašyti komentarą..."
"An error occurred while trying to create the comment" : "Bandant sukurti komentarą, įvyko klaida"
},"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);"
}
-37
View File
@@ -1,37 +0,0 @@
OC.L10N.register(
"comments",
{
"Comments" : "Сэтгэгдэл",
"You commented" : "Та сэтгэгдэл бичсэн байна",
"{author} commented" : "{author} сэтгэгдэл бичсэн",
"You commented on %1$s" : "Та %1$s нийтлэл дээр сэтгэгдэл бичсэн байна",
"You commented on {file}" : "Та {file} сэтгэгдэл бичсэн байна",
"%1$s commented on %2$s" : "%1$s нь %2$s-д сэтгэгдэл бичсэн",
"{author} commented on {file}" : "{author} нь {file}-д сэтгэгдэл бичсэн",
"<strong>Comments</strong> for files" : "Файлууд дахь<strong>Сэтгэгдэлүүд</strong>",
"Files" : "Файлууд",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Та \"{file}\" дээр, устгагдсан акаунтын сэтгэгдэлд дурдагдсан байна",
"{user} mentioned you in a comment on \"{file}\"" : "{user} таныг \"{file}\" дээрх сэтгэгдэлд дурдсан",
"Files app plugin to add comments to files" : "Файлд сэтгэгдэл нэмэх Файлын апп плагин",
"Edit comment" : "Сэтгэгдэл засах",
"Delete comment" : "Сэтгэгдэл устгах",
"Cancel edit" : "Засварлахыг болих",
"New comment" : "Шинэ сэтгэгдэл",
"Write a comment …" : "Сэтгэгдэл бичих …",
"Post comment" : "Сэтгэгдэл илгээх",
"@ for mentions, : for emoji, / for smart picker" : "@ дурдахад, : эможид, / ухаалаг сонгогчид",
"Could not reload comments" : "Сэтгэгдлүүдийг дахин ачаалж чадсангүй",
"Failed to mark comments as read" : "Сэтгэгдлүүдийг уншсан гэж тэмдэглэж чадсангүй",
"Unable to load the comments list" : "Сэтгэгдлүүдийн жагсаалтыг ачаалж чадсангүй",
"No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна",
"No more messages" : "Илүү мессеж байхгүй",
"Retry" : "Дахин оролдох",
"_1 new comment_::_{unread} new comments_" : ["1 шинэ сэтгэгдэл","{unread} шинэ сэтгэгдэл"],
"Comment" : "Сэтгэгдэл",
"An error occurred while trying to edit the comment" : "Сэтгэгдэл засварлах үед алдаа гарлаа",
"Comment deleted" : "Сэтгэгдэл устгагдсан",
"An error occurred while trying to delete the comment" : "Сэтгэгдэл устгах үед алдаа гарлаа",
"An error occurred while trying to create the comment" : "Сэтгэгдэл үүсгэх үед алдаа гарлаа",
"Write a comment …" : "Сэтгэгдэл бичих …"
},
"nplurals=2; plural=(n != 1);");
-35
View File
@@ -1,35 +0,0 @@
{ "translations": {
"Comments" : "Сэтгэгдэл",
"You commented" : "Та сэтгэгдэл бичсэн байна",
"{author} commented" : "{author} сэтгэгдэл бичсэн",
"You commented on %1$s" : "Та %1$s нийтлэл дээр сэтгэгдэл бичсэн байна",
"You commented on {file}" : "Та {file} сэтгэгдэл бичсэн байна",
"%1$s commented on %2$s" : "%1$s нь %2$s-д сэтгэгдэл бичсэн",
"{author} commented on {file}" : "{author} нь {file}-д сэтгэгдэл бичсэн",
"<strong>Comments</strong> for files" : "Файлууд дахь<strong>Сэтгэгдэлүүд</strong>",
"Files" : "Файлууд",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Та \"{file}\" дээр, устгагдсан акаунтын сэтгэгдэлд дурдагдсан байна",
"{user} mentioned you in a comment on \"{file}\"" : "{user} таныг \"{file}\" дээрх сэтгэгдэлд дурдсан",
"Files app plugin to add comments to files" : "Файлд сэтгэгдэл нэмэх Файлын апп плагин",
"Edit comment" : "Сэтгэгдэл засах",
"Delete comment" : "Сэтгэгдэл устгах",
"Cancel edit" : "Засварлахыг болих",
"New comment" : "Шинэ сэтгэгдэл",
"Write a comment …" : "Сэтгэгдэл бичих …",
"Post comment" : "Сэтгэгдэл илгээх",
"@ for mentions, : for emoji, / for smart picker" : "@ дурдахад, : эможид, / ухаалаг сонгогчид",
"Could not reload comments" : "Сэтгэгдлүүдийг дахин ачаалж чадсангүй",
"Failed to mark comments as read" : "Сэтгэгдлүүдийг уншсан гэж тэмдэглэж чадсангүй",
"Unable to load the comments list" : "Сэтгэгдлүүдийн жагсаалтыг ачаалж чадсангүй",
"No comments yet, start the conversation!" : "Сэтгэгдэл байхгүй байна",
"No more messages" : "Илүү мессеж байхгүй",
"Retry" : "Дахин оролдох",
"_1 new comment_::_{unread} new comments_" : ["1 шинэ сэтгэгдэл","{unread} шинэ сэтгэгдэл"],
"Comment" : "Сэтгэгдэл",
"An error occurred while trying to edit the comment" : "Сэтгэгдэл засварлах үед алдаа гарлаа",
"Comment deleted" : "Сэтгэгдэл устгагдсан",
"An error occurred while trying to delete the comment" : "Сэтгэгдэл устгах үед алдаа гарлаа",
"An error occurred while trying to create the comment" : "Сэтгэгдэл үүсгэх үед алдаа гарлаа",
"Write a comment …" : "Сэтгэгдэл бичих …"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+3 -3
View File
@@ -10,20 +10,20 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} reageerde op {file}",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
"Files" : "Bestanden",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een reactie van een account dat intussen is verwijderd",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd",
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
"Edit comment" : "Reactie bewerken",
"Delete comment" : "Reactie verwijderen",
"Cancel edit" : "Bewerking annuleren",
"New comment" : "Nieuwe reactie",
"Write a comment …" : "Schrijf een reactie …",
"Write a comment …" : "Schrijf een commentaar …",
"Post comment" : "Reactie plaatsen",
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
"Could not reload comments" : "Kon reactie niet opnieuw laden",
"Failed to mark comments as read" : "Kon reacties niet als gelezen markeren",
"Unable to load the comments list" : "Kan reactielijst niet laden",
"No comments yet, start the conversation!" : "Nog geen reacties, start het gesprek!",
"No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
"No more messages" : "Geen berichten meer",
"Retry" : "Opnieuw proberen",
"_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"],
+3 -3
View File
@@ -8,20 +8,20 @@
"{author} commented on {file}" : "{author} reageerde op {file}",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
"Files" : "Bestanden",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een reactie van een account dat intussen is verwijderd",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Je werd genoemd op \"{file}\", in een opmerking van een account dat intussen is verwijderd",
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
"Edit comment" : "Reactie bewerken",
"Delete comment" : "Reactie verwijderen",
"Cancel edit" : "Bewerking annuleren",
"New comment" : "Nieuwe reactie",
"Write a comment …" : "Schrijf een reactie …",
"Write a comment …" : "Schrijf een commentaar …",
"Post comment" : "Reactie plaatsen",
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor Smart Picker",
"Could not reload comments" : "Kon reactie niet opnieuw laden",
"Failed to mark comments as read" : "Kon reacties niet als gelezen markeren",
"Unable to load the comments list" : "Kan reactielijst niet laden",
"No comments yet, start the conversation!" : "Nog geen reacties, start het gesprek!",
"No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
"No more messages" : "Geen berichten meer",
"Retry" : "Opnieuw proberen",
"_1 new comment_::_{unread} new comments_" : ["1 nieuwe reactie","{unread} nieuwe reacties"],
-1
View File
@@ -17,7 +17,6 @@ OC.L10N.register(
"Delete comment" : "Zmazať komentár",
"Cancel edit" : "Zrušiť upravovanie",
"New comment" : "Nový komentár",
"Write a comment …" : "Napísať komentár ...",
"Post comment" : "Odoslať komentár",
"@ for mentions, : for emoji, / for smart picker" : "@ pre spomienky, : pre emotikony, / pre inteligentný výber",
"Could not reload comments" : "Nepodarilo sa obnoviť komentáre",
-1
View File
@@ -15,7 +15,6 @@
"Delete comment" : "Zmazať komentár",
"Cancel edit" : "Zrušiť upravovanie",
"New comment" : "Nový komentár",
"Write a comment …" : "Napísať komentár ...",
"Post comment" : "Odoslať komentár",
"@ for mentions, : for emoji, / for smart picker" : "@ pre spomienky, : pre emotikony, / pre inteligentný výber",
"Could not reload comments" : "Nepodarilo sa obnoviť komentáre",
-37
View File
@@ -1,37 +0,0 @@
OC.L10N.register(
"comments",
{
"Comments" : "Izohlar",
"You commented" : "Siz fikr bildirgansiz",
"{author} commented" : "{author} izoh qoldirdi",
"You commented on %1$s" : "Siz %1$s haqida fikr bildirdingiz",
"You commented on {file}" : "Siz {file} ga izoh qoldirdingiz",
"%1$s commented on %2$s" : "%1$s %2$s haqida fikr bildirdi",
"{author} commented on {file}" : "{author} {file} ga izoh qoldirdi",
"<strong>Comments</strong> for files" : "Fayllar uchun <strong>Izohlar</strong>",
"Files" : "Fayllar",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Siz \"{file}\"da, keyinchalik o'chirilgan hisob tomonidan izohda tilga olingansiz",
"{user} mentioned you in a comment on \"{file}\"" : "{user} sizni \"{file}\" dagi izohda tilga oldi",
"Files app plugin to add comments to files" : "Fayllarga izohlar qo'shish ilova plagini",
"Edit comment" : "Izohni tahrirlash",
"Delete comment" : "Izohni o'chirish",
"Cancel edit" : "Tahrirni bekor qilish",
"New comment" : "Yangi izoh",
"Write a comment …" : "Fikr yozing…",
"Post comment" : "Fikr qoldirish",
"@ for mentions, : for emoji, / for smart picker" : "@ eslatmalar uchun, : emojilar uchun, / aqlli tanlovclar uchun",
"Could not reload comments" : "Izohlarni qayta yuklab bo'lmadi",
"Failed to mark comments as read" : "Izohlarni o'qilgan deb belgilashda xatolik yuz berdi",
"Unable to load the comments list" : "Izohlar ro'yxatini yuklab bo'lmadi",
"No comments yet, start the conversation!" : "Hali izohlar yo'q, suhbatni boshlang!",
"No more messages" : "Boshqa xabarlar yo'q",
"Retry" : "Qayta urinish",
"_1 new comment_::_{unread} new comments_" : ["{unread} ta yangi izoh"],
"Comment" : "Izoh",
"An error occurred while trying to edit the comment" : "Izohni tahrirlashda xatolik yuz berdi",
"Comment deleted" : "Izoh o'chirildi",
"An error occurred while trying to delete the comment" : "Izohni o'chirishda xatolik yuz berdi",
"An error occurred while trying to create the comment" : "Izoh yaratishda xatolik yuz berdi",
"Write a comment …" : "Izoh yozing..."
},
"nplurals=1; plural=0;");
-35
View File
@@ -1,35 +0,0 @@
{ "translations": {
"Comments" : "Izohlar",
"You commented" : "Siz fikr bildirgansiz",
"{author} commented" : "{author} izoh qoldirdi",
"You commented on %1$s" : "Siz %1$s haqida fikr bildirdingiz",
"You commented on {file}" : "Siz {file} ga izoh qoldirdingiz",
"%1$s commented on %2$s" : "%1$s %2$s haqida fikr bildirdi",
"{author} commented on {file}" : "{author} {file} ga izoh qoldirdi",
"<strong>Comments</strong> for files" : "Fayllar uchun <strong>Izohlar</strong>",
"Files" : "Fayllar",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Siz \"{file}\"da, keyinchalik o'chirilgan hisob tomonidan izohda tilga olingansiz",
"{user} mentioned you in a comment on \"{file}\"" : "{user} sizni \"{file}\" dagi izohda tilga oldi",
"Files app plugin to add comments to files" : "Fayllarga izohlar qo'shish ilova plagini",
"Edit comment" : "Izohni tahrirlash",
"Delete comment" : "Izohni o'chirish",
"Cancel edit" : "Tahrirni bekor qilish",
"New comment" : "Yangi izoh",
"Write a comment …" : "Fikr yozing…",
"Post comment" : "Fikr qoldirish",
"@ for mentions, : for emoji, / for smart picker" : "@ eslatmalar uchun, : emojilar uchun, / aqlli tanlovclar uchun",
"Could not reload comments" : "Izohlarni qayta yuklab bo'lmadi",
"Failed to mark comments as read" : "Izohlarni o'qilgan deb belgilashda xatolik yuz berdi",
"Unable to load the comments list" : "Izohlar ro'yxatini yuklab bo'lmadi",
"No comments yet, start the conversation!" : "Hali izohlar yo'q, suhbatni boshlang!",
"No more messages" : "Boshqa xabarlar yo'q",
"Retry" : "Qayta urinish",
"_1 new comment_::_{unread} new comments_" : ["{unread} ta yangi izoh"],
"Comment" : "Izoh",
"An error occurred while trying to edit the comment" : "Izohni tahrirlashda xatolik yuz berdi",
"Comment deleted" : "Izoh o'chirildi",
"An error occurred while trying to delete the comment" : "Izohni o'chirishda xatolik yuz berdi",
"An error occurred while trying to create the comment" : "Izoh yaratishda xatolik yuz berdi",
"Write a comment …" : "Izoh yozing..."
},"pluralForm" :"nplurals=1; plural=0;"
}
+5 -2
View File
@@ -12,6 +12,7 @@ use OCP\App\IAppManager;
use OCP\Comments\CommentsEvent;
use OCP\Files\Config\IMountProviderCollection;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Share\IShareHelper;
@@ -46,8 +47,10 @@ class Listener {
foreach ($mounts as $mount) {
$owner = $mount->getUser()->getUID();
$ownerFolder = $this->rootFolder->getUserFolder($owner);
$node = $ownerFolder->getFirstNodeById((int)$event->getComment()->getObjectId());
if ($node !== null) {
$nodes = $ownerFolder->getById((int)$event->getComment()->getObjectId());
if (!empty($nodes)) {
/** @var Node $node */
$node = array_shift($nodes);
$al = $this->shareHelper->getPathsForAccessList($node);
$users += $al['users'];
}
@@ -70,11 +70,11 @@ class NotificationsController extends Controller {
return new NotFoundResponse();
}
$userFolder = $this->rootFolder->getUserFolder($currentUser->getUID());
$file = $userFolder->getFirstNodeById((int)$comment->getObjectId());
$files = $userFolder->getById((int)$comment->getObjectId());
$this->markProcessed($comment, $currentUser);
if ($file === null) {
if (empty($files)) {
return new NotFoundResponse();
}
@@ -32,8 +32,8 @@ class CommentsEntityEventListener implements IEventListener {
}
$event->addEntityCollection('files', function ($name): bool {
$node = $this->rootFolder->getUserFolder($this->userId)->getFirstNodeById((int)$name);
return $node !== null;
$nodes = $this->rootFolder->getUserFolder($this->userId)->getById((int)$name);
return !empty($nodes);
});
}
}
+3 -2
View File
@@ -84,10 +84,11 @@ class Notifier implements INotifier {
throw new UnknownNotificationException('Unsupported comment object');
}
$userFolder = $this->rootFolder->getUserFolder($notification->getUser());
$node = $userFolder->getFirstNodeById((int)$parameters[1]);
if ($node === null) {
$nodes = $userFolder->getById((int)$parameters[1]);
if (empty($nodes)) {
throw new AlreadyProcessedException();
}
$node = $nodes[0];
$path = rtrim($node->getPath(), '/');
if (str_starts_with($path, '/' . $notification->getUser() . '/files/')) {
@@ -116,11 +116,11 @@ class CommentsSearchProvider implements IProvider {
* @throws NotFoundException
*/
protected function getFileForComment(Folder $userFolder, IComment $comment): Node {
$node = $userFolder->getFirstNodeById((int)$comment->getObjectId());
if ($node === null) {
$nodes = $userFolder->getById((int)$comment->getObjectId());
if (empty($nodes)) {
throw new NotFoundException('File not found');
}
return $node;
return array_shift($nodes);
}
}
@@ -1,11 +1,11 @@
/*!
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { IFolder, IView } from '@nextcloud/files'
import type { Folder, View } from '@nextcloud/files'
import { File, Permission } from '@nextcloud/files'
import { File, FileAction, Permission } from '@nextcloud/files'
import { describe, expect, test, vi } from 'vitest'
import logger from '../logger.js'
import { action } from './inlineUnreadCommentsAction.ts'
@@ -13,7 +13,7 @@ import { action } from './inlineUnreadCommentsAction.ts'
const view = {
id: 'files',
name: 'Files',
} as IView
} as View
describe('Inline unread comments action display name tests', () => {
test('Default values', () => {
@@ -29,35 +29,36 @@ describe('Inline unread comments action display name tests', () => {
root: '/files/admin',
})
expect(action).toBeInstanceOf(FileAction)
expect(action.id).toBe('comments-unread')
expect(action.displayName({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe('')
expect(action.title!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe('1 new comment')
expect(action.iconSvgInline({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toMatch(/<svg.+<\/svg>/)
expect(action.enabled!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe(true)
expect(action.inline!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe(true)
expect(action.default).toBeUndefined()
@@ -80,13 +81,13 @@ describe('Inline unread comments action display name tests', () => {
expect(action.displayName({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe('')
expect(action.title!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe('2 new comments')
})
@@ -107,7 +108,7 @@ describe('Inline unread comments action enabled tests', () => {
expect(action.enabled!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe(false)
})
@@ -128,7 +129,7 @@ describe('Inline unread comments action enabled tests', () => {
expect(action.enabled!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe(false)
})
@@ -149,7 +150,7 @@ describe('Inline unread comments action enabled tests', () => {
expect(action.enabled!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe(true)
})
@@ -170,7 +171,7 @@ describe('Inline unread comments action enabled tests', () => {
expect(action.enabled!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})).toBe(true)
})
@@ -203,7 +204,7 @@ describe('Inline unread comments action execute tests', () => {
const result = await action.exec!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})
@@ -240,7 +241,7 @@ describe('Inline unread comments action execute tests', () => {
const result = await action.exec!({
nodes: [file],
view,
folder: {} as IFolder,
folder: {} as Folder,
contents: [],
})
@@ -3,15 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { IFileAction } from '@nextcloud/files'
import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw'
import { getSidebar } from '@nextcloud/files'
import { FileAction, getSidebar } from '@nextcloud/files'
import { n, t } from '@nextcloud/l10n'
import logger from '../logger.js'
import { isUsingActivityIntegration } from '../utils/activity.js'
export const action: IFileAction = {
export const action = new FileAction({
id: 'comments-unread',
title({ nodes }) {
@@ -39,13 +36,7 @@ export const action: IFileAction = {
try {
const sidebar = getSidebar()
const sidebarTabId = isUsingActivityIntegration() ? 'activity' : 'comments'
if (sidebar.isOpen && sidebar.node?.source === nodes[0].source) {
logger.debug('Sidebar already open for this node, just activating comments tab')
sidebar.setActiveTab(sidebarTabId)
return null
}
sidebar.open(nodes[0], sidebarTabId)
sidebar.open(nodes[0], 'comments')
return null
} catch (error) {
logger.error('Error while opening sidebar', { error })
@@ -56,4 +47,4 @@ export const action: IFileAction = {
inline: () => true,
order: -140,
}
})
+3 -3
View File
@@ -1,4 +1,4 @@
/*!
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
@@ -6,18 +6,18 @@
import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
import { getCSPNonce } from '@nextcloud/auth'
import { registerSidebarTab } from '@nextcloud/files'
import { loadState } from '@nextcloud/initial-state'
import { t } from '@nextcloud/l10n'
import wrap from '@vue/web-component-wrapper'
import { createPinia, PiniaVuePlugin } from 'pinia'
import Vue from 'vue'
import { registerCommentsPlugins } from './comments-activity-tab.ts'
import { isUsingActivityIntegration } from './utils/activity.ts'
__webpack_nonce__ = getCSPNonce()
const tagName = 'comments_files-sidebar-tab'
if (isUsingActivityIntegration()) {
if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {
// Do not mount own tab but mount into activity
window.addEventListener('DOMContentLoaded', function() {
registerCommentsPlugins()
-13
View File
@@ -1,13 +0,0 @@
/*!
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { loadState } from '@nextcloud/initial-state'
/**
* Check if the comments app is using the Activity app integration for the sidebar.
*/
export function isUsingActivityIntegration() {
return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined
}
@@ -92,11 +92,12 @@ class ListenerTest extends TestCase {
->willReturn($userMountCache);
$node = $this->createMock(Node::class);
$nodes = [ $node ];
$ownerFolder = $this->createMock(Folder::class);
$ownerFolder->expects($this->any())
->method('getFirstNodeById')
->willReturn($node);
->method('getById')
->willReturn($nodes);
$this->rootFolder->expects($this->any())
->method('getUserFolder')
@@ -107,8 +107,8 @@ class NotificationsTest extends TestCase {
->willReturn($folder);
$folder->expects($this->once())
->method('getFirstNodeById')
->willReturn($file);
->method('getById')
->willReturn([$file]);
$this->session->expects($this->once())
->method('getUser')
@@ -183,8 +183,8 @@ class NotificationsTest extends TestCase {
->willReturn($folder);
$folder->expects($this->once())
->method('getFirstNodeById')
->willReturn(null);
->method('getById')
->willReturn([]);
$user = $this->createMock(IUser::class);
@@ -86,9 +86,9 @@ class NotifierTest extends TestCase {
->with('you')
->willReturn($userFolder);
$userFolder->expects($this->once())
->method('getFirstNodeById')
->method('getById')
->with('678')
->willReturn($node);
->willReturn([$node]);
$this->notification->expects($this->exactly(2))
->method('getUser')
@@ -202,9 +202,9 @@ class NotifierTest extends TestCase {
->with('you')
->willReturn($userFolder);
$userFolder->expects($this->once())
->method('getFirstNodeById')
->method('getById')
->with('678')
->willReturn($node);
->willReturn([$node]);
$this->notification->expects($this->exactly(2))
->method('getUser')
@@ -301,7 +301,7 @@ class NotifierTest extends TestCase {
$this->folder
->expects($this->never())
->method('getFirstNodeById');
->method('getById');
$this->notification
->expects($this->once())
@@ -338,7 +338,7 @@ class NotifierTest extends TestCase {
$this->folder
->expects($this->never())
->method('getFirstNodeById');
->method('getById');
$this->notification
->expects($this->once())
@@ -378,7 +378,7 @@ class NotifierTest extends TestCase {
$this->folder
->expects($this->never())
->method('getFirstNodeById');
->method('getById');
$this->notification
->expects($this->once())
@@ -435,7 +435,7 @@ class NotifierTest extends TestCase {
$this->folder
->expects($this->never())
->method('getFirstNodeById');
->method('getById');
$this->notification
->expects($this->once())
@@ -497,9 +497,9 @@ class NotifierTest extends TestCase {
->with('you')
->willReturn($userFolder);
$userFolder->expects($this->once())
->method('getFirstNodeById')
->method('getById')
->with('678')
->willReturn(null);
->willReturn([]);
$this->notification->expects($this->once())
->method('getUser')
+2 -2
View File
@@ -9,7 +9,7 @@
<name>Contacts Interaction</name>
<summary>Manages interaction between accounts and contacts</summary>
<description>Collect data about accounts and contacts interactions and provide an address book for the data</description>
<version>1.14.1</version>
<version>1.15.0</version>
<licence>agpl</licence>
<author>Christoph Wurst</author>
<author homepage="https://github.com/nextcloud/groupware">Nextcloud Groupware Team</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="33" max-version="33"/>
<nextcloud min-version="34" max-version="34"/>
</dependencies>
<background-jobs>
<job>OCA\ContactsInteraction\BackgroundJob\CleanupJob</job>
+1 -3
View File
@@ -2,8 +2,6 @@ OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Nedavno kontaktiran",
"Contacts Interaction" : "Interakcija kontakata",
"Manages interaction between accounts and contacts" : "Upravlja interakcijom između računa i kontakata",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Prikuplja podatke o interakcijama između računa i kontakata te pruža adresar za te podatke"
"Contacts Interaction" : "Interakcija kontakata"
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");
+1 -3
View File
@@ -1,7 +1,5 @@
{ "translations": {
"Recently contacted" : "Nedavno kontaktiran",
"Contacts Interaction" : "Interakcija kontakata",
"Manages interaction between accounts and contacts" : "Upravlja interakcijom između računa i kontakata",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Prikuplja podatke o interakcijama između računa i kontakata te pruža adresar za te podatke"
"Contacts Interaction" : "Interakcija kontakata"
},"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;"
}
+1 -3
View File
@@ -2,8 +2,6 @@ OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Paskiausiai susisiekta",
"Contacts Interaction" : "Sąveika su adresatais",
"Manages interaction between accounts and contacts" : "Tvarko sąveiką tarp paskyrų ir kontaktų",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Rinkti duomenis apie klientų ir kontaktų sąveiką ir pateikti adresų knygą duomenims"
"Contacts Interaction" : "Sąveika su adresatais"
},
"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);");
+1 -3
View File
@@ -1,7 +1,5 @@
{ "translations": {
"Recently contacted" : "Paskiausiai susisiekta",
"Contacts Interaction" : "Sąveika su adresatais",
"Manages interaction between accounts and contacts" : "Tvarko sąveiką tarp paskyrų ir kontaktų",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Rinkti duomenis apie klientų ir kontaktų sąveiką ir pateikti adresų knygą duomenims"
"Contacts Interaction" : "Sąveika su adresatais"
},"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);"
}
-9
View File
@@ -1,9 +0,0 @@
OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Саяхан холбоо барьсан",
"Contacts Interaction" : "Харилцагчийн харилцан үйлдэл",
"Manages interaction between accounts and contacts" : "Бүртгэл ба харилцагчдын хоорондын харилцааг удирддаг",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Бүртгэл болон харилцагчдын харилцан үйлчлэлийн өгөгдлийг цуглуулж, тэдгээр өгөгдлийн хаягийн дэвтрийг хангана"
},
"nplurals=2; plural=(n != 1);");
-7
View File
@@ -1,7 +0,0 @@
{ "translations": {
"Recently contacted" : "Саяхан холбоо барьсан",
"Contacts Interaction" : "Харилцагчийн харилцан үйлдэл",
"Manages interaction between accounts and contacts" : "Бүртгэл ба харилцагчдын хоорондын харилцааг удирддаг",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Бүртгэл болон харилцагчдын харилцан үйлчлэлийн өгөгдлийг цуглуулж, тэдгээр өгөгдлийн хаягийн дэвтрийг хангана"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -12,7 +12,7 @@
The Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking.]]>
</description>
<version>7.13.0</version>
<version>7.14.0</version>
<licence>agpl</licence>
<author>Julius Härtl</author>
<namespace>Dashboard</namespace>
@@ -22,7 +22,7 @@ The Nextcloud Dashboard is your starting point of the day, giving you an overvie
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="33" max-version="33"/>
<nextcloud min-version="34" max-version="34"/>
</dependencies>
<navigations>
+2 -1
View File
@@ -22,6 +22,7 @@ OC.L10N.register(
"Weather service" : "خدمة الطقس",
"Weather data from Met.no" : "بيانات الطقس من Met.no",
"geocoding with Nominatim" : "الترميز الجغرافي مع Nominatim",
"elevation data from OpenTopoData" : "بيانات التقييم من OpenTopoData"
"elevation data from OpenTopoData" : "بيانات التقييم من OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "للحفاظ على خصوصيتك، يتم استدعاء بيانات حالة الطقس عبر خادم NextCloud الخاص بك نيابه عنك، وبالتالي فإن خدمة حالة الطقس لا تشارك معلوماتك الشخصية."
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
+2 -1
View File
@@ -20,6 +20,7 @@
"Weather service" : "خدمة الطقس",
"Weather data from Met.no" : "بيانات الطقس من Met.no",
"geocoding with Nominatim" : "الترميز الجغرافي مع Nominatim",
"elevation data from OpenTopoData" : "بيانات التقييم من OpenTopoData"
"elevation data from OpenTopoData" : "بيانات التقييم من OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "للحفاظ على خصوصيتك، يتم استدعاء بيانات حالة الطقس عبر خادم NextCloud الخاص بك نيابه عنك، وبالتالي فإن خدمة حالة الطقس لا تشارك معلوماتك الشخصية."
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}
+2 -1
View File
@@ -20,6 +20,7 @@ OC.L10N.register(
"Weather service" : "Serviciu del clima",
"Weather data from Met.no" : "datos del clima de Met.no",
"geocoding with Nominatim" : "xeocodificación con Nominatim",
"elevation data from OpenTopoData" : "datos d'elevaciones d'OpenTopoData"
"elevation data from OpenTopoData" : "datos d'elevaciones d'OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Pa la to privacidá, los datos del clima solicítense dende esta instancia de Nextcloud y, polo tanto, el serviciu del clima no recibe nenguna información personal."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -18,6 +18,7 @@
"Weather service" : "Serviciu del clima",
"Weather data from Met.no" : "datos del clima de Met.no",
"geocoding with Nominatim" : "xeocodificación con Nominatim",
"elevation data from OpenTopoData" : "datos d'elevaciones d'OpenTopoData"
"elevation data from OpenTopoData" : "datos d'elevaciones d'OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Pa la to privacidá, los datos del clima solicítense dende esta instancia de Nextcloud y, polo tanto, el serviciu del clima no recibe nenguna información personal."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -19,6 +19,7 @@ OC.L10N.register(
"Weather service" : "Метеорологична услуга",
"Weather data from Met.no" : "Данни за времето от Met.no",
"geocoding with Nominatim" : "геокодиране с Nominatim",
"elevation data from OpenTopoData" : " кота данни от OpenTopoData"
"elevation data from OpenTopoData" : " кота данни от OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "За вашата поверителност данните за времето се изискват от Nextcloud сървъра ви от ваше име, така че метеорологичната служба не получава лична информация."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -17,6 +17,7 @@
"Weather service" : "Метеорологична услуга",
"Weather data from Met.no" : "Данни за времето от Met.no",
"geocoding with Nominatim" : "геокодиране с Nominatim",
"elevation data from OpenTopoData" : " кота данни от OpenTopoData"
"elevation data from OpenTopoData" : " кота данни от OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "За вашата поверителност данните за времето се изискват от Nextcloud сървъра ви от ваше име, така че метеорологичната служба не получава лична информация."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -22,6 +22,7 @@ OC.L10N.register(
"Weather service" : "Servei meteorològic",
"Weather data from Met.no" : "Dades meteorològiques de Met.no",
"geocoding with Nominatim" : "codis geogràfics amb Nominatim",
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData"
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la vostra privadesa, les dades meteorològiques les sol·licita el servidor del Nextcloud en nom vostre perquè el servei meteorològic no rebi cap informació personal."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -20,6 +20,7 @@
"Weather service" : "Servei meteorològic",
"Weather data from Met.no" : "Dades meteorològiques de Met.no",
"geocoding with Nominatim" : "codis geogràfics amb Nominatim",
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData"
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la vostra privadesa, les dades meteorològiques les sol·licita el servidor del Nextcloud en nom vostre perquè el servei meteorològic no rebi cap informació personal."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Vaše soukromí je chráněno tím, že komunikaci se službou předpovědi počasí zprostředkovává vámi využívaný {productName} server. Díky tomu služba, která tyto údaje poskytuje, neobdrží z vašeho počítače žádné osobní údaje.",
"Weather data from Met.no" : "Údaje o počasí z Met.no",
"geocoding with Nominatim" : "z popisu polohy na souřadnice převáděno službou Nominatim",
"elevation data from OpenTopoData" : "data o nadmořských výškách z OpenTopoData"
"elevation data from OpenTopoData" : "data o nadmořských výškách z OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Vaše soukromí je chráněno tím, že komunikaci se službou předpovědi počasí zprostředkovává vámi využívaný Nextcloud server. Díky tomu služba, která tyto údaje poskytuje, neobdrží z vašeho počítače žádné osobní údaje."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Vaše soukromí je chráněno tím, že komunikaci se službou předpovědi počasí zprostředkovává vámi využívaný {productName} server. Díky tomu služba, která tyto údaje poskytuje, neobdrží z vašeho počítače žádné osobní údaje.",
"Weather data from Met.no" : "Údaje o počasí z Met.no",
"geocoding with Nominatim" : "z popisu polohy na souřadnice převáděno službou Nominatim",
"elevation data from OpenTopoData" : "data o nadmořských výškách z OpenTopoData"
"elevation data from OpenTopoData" : "data o nadmořských výškách z OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Vaše soukromí je chráněno tím, že komunikaci se službou předpovědi počasí zprostředkovává vámi využívaný Nextcloud server. Díky tomu služba, která tyto údaje poskytuje, neobdrží z vašeho počítače žádné osobní údaje."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Af hensyn til dit privatliv anmoder din {productName} server om vejrdata på dine vegne, så vejrtjenesten ikke modtager personlige oplysninger.",
"Weather data from Met.no" : "Vejr-data leveres af Met.no",
"geocoding with Nominatim" : "Geocoding med Nominatim",
"elevation data from OpenTopoData" : "Højde-data fra OpenTopoData"
"elevation data from OpenTopoData" : "Højde-data fra OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Af hensyn til dit privatliv, er det din Nextcloud-server der henter vejr-data og udbyderen modtager således ingen oplysninger om dig."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Af hensyn til dit privatliv anmoder din {productName} server om vejrdata på dine vegne, så vejrtjenesten ikke modtager personlige oplysninger.",
"Weather data from Met.no" : "Vejr-data leveres af Met.no",
"geocoding with Nominatim" : "Geocoding med Nominatim",
"elevation data from OpenTopoData" : "Højde-data fra OpenTopoData"
"elevation data from OpenTopoData" : "Højde-data fra OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Af hensyn til dit privatliv, er det din Nextcloud-server der henter vejr-data og udbyderen modtager således ingen oplysninger om dig."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Zu deinem Datenschutz werden die Wetterdaten von deinem {productName}-Server für dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
"Weather data from Met.no" : "Wetterdaten von Met.no",
"geocoding with Nominatim" : "Geokodierung mit Nominatim",
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData"
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu deinem Datenschutz werden die Wetterdaten von deinem Nextcloud-Server für dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Zu deinem Datenschutz werden die Wetterdaten von deinem {productName}-Server für dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
"Weather data from Met.no" : "Wetterdaten von Met.no",
"geocoding with Nominatim" : "Geokodierung mit Nominatim",
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData"
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu deinem Datenschutz werden die Wetterdaten von deinem Nextcloud-Server für dich angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Zu Ihrem Datenschutz werden die Wetterdaten von Ihrem {productName}-Server für Sie angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
"Weather data from Met.no" : "Wetterdaten von Met.no",
"geocoding with Nominatim" : "Geokodierung mit Nominatim",
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData"
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu Ihrem Datenschutz werden die Wetterdaten von Ihrem Nextcloud-Server für Sie angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Zu Ihrem Datenschutz werden die Wetterdaten von Ihrem {productName}-Server für Sie angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält.",
"Weather data from Met.no" : "Wetterdaten von Met.no",
"geocoding with Nominatim" : "Geokodierung mit Nominatim",
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData"
"elevation data from OpenTopoData" : "Höhendaten von OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zu Ihrem Datenschutz werden die Wetterdaten von Ihrem Nextcloud-Server für Sie angefordert, so dass der Wetterdienst keine persönlichen Informationen erhält."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Για το απόρρητό σας, τα δεδομένα καιρού ζητούνται από τον διακομιστή {productName} εκ μέρους σας, ώστε η υπηρεσία καιρού να μην λαμβάνει προσωπικές πληροφορίες.",
"Weather data from Met.no" : "Δεδομένα καιρού από το Met.no",
"geocoding with Nominatim" : "γεωκωδικοποίηση με Nominatim",
"elevation data from OpenTopoData" : "δεδομένα υψομέτρου από OpenTopoData"
"elevation data from OpenTopoData" : "δεδομένα υψομέτρου από OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Για το απόρρητό σας, τα δεδομένα καιρού ζητούνται από τον διακομιστή Nextcloud για λογαριασμό σας, ώστε η υπηρεσία καιρού να μην λαμβάνει προσωπικά στοιχεία."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Για το απόρρητό σας, τα δεδομένα καιρού ζητούνται από τον διακομιστή {productName} εκ μέρους σας, ώστε η υπηρεσία καιρού να μην λαμβάνει προσωπικές πληροφορίες.",
"Weather data from Met.no" : "Δεδομένα καιρού από το Met.no",
"geocoding with Nominatim" : "γεωκωδικοποίηση με Nominatim",
"elevation data from OpenTopoData" : "δεδομένα υψομέτρου από OpenTopoData"
"elevation data from OpenTopoData" : "δεδομένα υψομέτρου από OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Για το απόρρητό σας, τα δεδομένα καιρού ζητούνται από τον διακομιστή Nextcloud για λογαριασμό σας, ώστε η υπηρεσία καιρού να μην λαμβάνει προσωπικά στοιχεία."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information.",
"Weather data from Met.no" : "Weather data from Met.no",
"geocoding with Nominatim" : "geocoding with Nominatim",
"elevation data from OpenTopoData" : "elevation data from OpenTopoData"
"elevation data from OpenTopoData" : "elevation data from OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information.",
"Weather data from Met.no" : "Weather data from Met.no",
"geocoding with Nominatim" : "geocoding with Nominatim",
"elevation data from OpenTopoData" : "elevation data from OpenTopoData"
"elevation data from OpenTopoData" : "elevation data from OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Para su privacidad, los datos meteorológicos son solicitados por su servidor {productName} en su nombre, de tal forma que el servicio no reciba información personal.",
"Weather data from Met.no" : "Datos meteorológicos de Met.no",
"geocoding with Nominatim" : "geocoding con Nominatim",
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData"
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Para su privacidad, los datos meteorológicos son solicitados por su servidor Nextcloud en su nombre, de tal forma que el servicio no reciba información personal."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Para su privacidad, los datos meteorológicos son solicitados por su servidor {productName} en su nombre, de tal forma que el servicio no reciba información personal.",
"Weather data from Met.no" : "Datos meteorológicos de Met.no",
"geocoding with Nominatim" : "geocoding con Nominatim",
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData"
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Para su privacidad, los datos meteorológicos son solicitados por su servidor Nextcloud en su nombre, de tal forma que el servicio no reciba información personal."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -1
View File
@@ -19,6 +19,7 @@ OC.L10N.register(
"Weather service" : "Servicio meteorológico",
"Weather data from Met.no" : "Datos meteorológicos de Met.no",
"geocoding with Nominatim" : "geocoding con Nominatim",
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData"
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Por privacidad, los datos meteorológicos son solicitados por tu servidor Nextcloud en tu nombre de tal forma que el servicio no recibe información personal."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -1
View File
@@ -17,6 +17,7 @@
"Weather service" : "Servicio meteorológico",
"Weather data from Met.no" : "Datos meteorológicos de Met.no",
"geocoding with Nominatim" : "geocoding con Nominatim",
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData"
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Por privacidad, los datos meteorológicos son solicitados por tu servidor Nextcloud en tu nombre de tal forma que el servicio no recibe información personal."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -1
View File
@@ -20,6 +20,7 @@ OC.L10N.register(
"Weather service" : "Servicio metereológico",
"Weather data from Met.no" : "Datos meteorológicos de Met.no",
"geocoding with Nominatim" : "geocoding con Nominatim",
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData"
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Por privacidad, los datos meteorológicos son solicitados por tu servidor Nextcloud en tu nombre de tal forma que el servicio no recibe información personal."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -1
View File
@@ -18,6 +18,7 @@
"Weather service" : "Servicio metereológico",
"Weather data from Met.no" : "Datos meteorológicos de Met.no",
"geocoding with Nominatim" : "geocoding con Nominatim",
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData"
"elevation data from OpenTopoData" : "datos de elevación de OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Por privacidad, los datos meteorológicos son solicitados por tu servidor Nextcloud en tu nombre de tal forma que el servicio no recibe información personal."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid {productName}i server, nii et ilmateenistus ei saa sinu kohta isiklikku teavet.",
"Weather data from Met.no" : "Met.no ilmaennustus",
"geocoding with Nominatim" : "geoprogrammeerimine Nominatimiga",
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast"
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid Nextcloudi server, nii et ilmateenistus ei saa isiklikku teavet."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid {productName}i server, nii et ilmateenistus ei saa sinu kohta isiklikku teavet.",
"Weather data from Met.no" : "Met.no ilmaennustus",
"geocoding with Nominatim" : "geoprogrammeerimine Nominatimiga",
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast"
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid Nextcloudi server, nii et ilmateenistus ei saa isiklikku teavet."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Zure pribatutasunerako, eguraldiaren datuak zure {productName}zerbitzariak eskatzen ditu zure izenean, beraz, meteorologia zerbitzuak ez du informazio pertsonalik jasotzen.",
"Weather data from Met.no" : "Met.no-ko eguraldiaren datuak",
"geocoding with Nominatim" : "geokodetzea Nominatim-ekin",
"elevation data from OpenTopoData" : "altitude datuak OpenTopoData-tik"
"elevation data from OpenTopoData" : "altitude datuak OpenTopoData-tik",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zure pribatutasunaren mesedetan, eguraldiaren datuak Nextcloud zerbitzariak eskatzen ditu zure izenean, eguraldi zerbitzuak informazio pertsonalik ez jasotzeko."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Zure pribatutasunerako, eguraldiaren datuak zure {productName}zerbitzariak eskatzen ditu zure izenean, beraz, meteorologia zerbitzuak ez du informazio pertsonalik jasotzen.",
"Weather data from Met.no" : "Met.no-ko eguraldiaren datuak",
"geocoding with Nominatim" : "geokodetzea Nominatim-ekin",
"elevation data from OpenTopoData" : "altitude datuak OpenTopoData-tik"
"elevation data from OpenTopoData" : "altitude datuak OpenTopoData-tik",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Zure pribatutasunaren mesedetan, eguraldiaren datuak Nextcloud zerbitzariak eskatzen ditu zure izenean, eguraldi zerbitzuak informazio pertsonalik ez jasotzeko."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -22,6 +22,7 @@ OC.L10N.register(
"Weather service" : "خدمت هواشناسی",
"Weather data from Met.no" : "اطلاعات هواشناسی از Met.no",
"geocoding with Nominatim" : "کدگذاری جغرافیایی با Nominatim",
"elevation data from OpenTopoData" : "داده‌های ارتفاع از OpenTopoData"
"elevation data from OpenTopoData" : "داده‌های ارتفاع از OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "برای محرمانگیتان، داده‌های آب و هوا از طرف کارساز نکست‌کلودتان درخواست می‌شود تا خدمت آب و هوا هیچ اطّلاعات شخصی‌ای دریافت نکند."
},
"nplurals=2; plural=(n > 1);");
+2 -1
View File
@@ -20,6 +20,7 @@
"Weather service" : "خدمت هواشناسی",
"Weather data from Met.no" : "اطلاعات هواشناسی از Met.no",
"geocoding with Nominatim" : "کدگذاری جغرافیایی با Nominatim",
"elevation data from OpenTopoData" : "داده‌های ارتفاع از OpenTopoData"
"elevation data from OpenTopoData" : "داده‌های ارتفاع از OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "برای محرمانگیتان، داده‌های آب و هوا از طرف کارساز نکست‌کلودتان درخواست می‌شود تا خدمت آب و هوا هیچ اطّلاعات شخصی‌ای دریافت نکند."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
}
+2 -1
View File
@@ -19,6 +19,7 @@ OC.L10N.register(
"Weather service" : "Sääpalvelu",
"Weather data from Met.no" : "Säätiedot tarjoaa Met.no",
"geocoding with Nominatim" : "geokoodauksen Nominatim",
"elevation data from OpenTopoData" : "korkeustiedot OpenTopoData"
"elevation data from OpenTopoData" : "korkeustiedot OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Yksityisyytesi vuoksi Nextcloud-palvelin hakee säätiedot, joten sääpalvelulle ei lähetetä henkilökohtaisia tietojasi."
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -17,6 +17,7 @@
"Weather service" : "Sääpalvelu",
"Weather data from Met.no" : "Säätiedot tarjoaa Met.no",
"geocoding with Nominatim" : "geokoodauksen Nominatim",
"elevation data from OpenTopoData" : "korkeustiedot OpenTopoData"
"elevation data from OpenTopoData" : "korkeustiedot OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Yksityisyytesi vuoksi Nextcloud-palvelin hakee säätiedot, joten sääpalvelulle ei lähetetä henkilökohtaisia tietojasi."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Afin de protéger votre vie privée, les données météorologiques sont demandées par votre serveur {productName} à votre place afin que le service météo ne reçoive aucune information personnelle.",
"Weather data from Met.no" : "Données météo fournies par Met.no",
"geocoding with Nominatim" : "Géocodage avec Nominatim",
"elevation data from OpenTopoData" : "Données daltitude provenant dOpenTopoData"
"elevation data from OpenTopoData" : "Données daltitude provenant dOpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Afin de protéger votre vie privée, les données météorologiques sont demandées par votre serveur Nextcloud à votre place afin que le service météo ne reçoive aucune information personnelle."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -1
View File
@@ -21,6 +21,7 @@
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Afin de protéger votre vie privée, les données météorologiques sont demandées par votre serveur {productName} à votre place afin que le service météo ne reçoive aucune information personnelle.",
"Weather data from Met.no" : "Données météo fournies par Met.no",
"geocoding with Nominatim" : "Géocodage avec Nominatim",
"elevation data from OpenTopoData" : "Données daltitude provenant dOpenTopoData"
"elevation data from OpenTopoData" : "Données daltitude provenant dOpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Afin de protéger votre vie privée, les données météorologiques sont demandées par votre serveur Nextcloud à votre place afin que le service météo ne reçoive aucune information personnelle."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -1
View File
@@ -23,6 +23,7 @@ OC.L10N.register(
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Ar mhaithe le do phríobháideacht, iarrann do fhreastalaí {productName} na sonraí aimsire ar do shon agus mar sin ní fhaigheann an tseirbhís aimsire aon fhaisnéis phearsanta.",
"Weather data from Met.no" : "Sonraí aimsire ó Met.no",
"geocoding with Nominatim" : "geochódú le Nominatim",
"elevation data from OpenTopoData" : "sonraí ardaithe ó OpenTopoData"
"elevation data from OpenTopoData" : "sonraí ardaithe ó OpenTopoData",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Ar mhaithe le do phríobháideachas, iarrann do fhreastalaí Nextcloud na sonraí aimsire ar do shon agus mar sin ní fhaigheann an tseirbhís aimsire aon fhaisnéis phearsanta."
},
"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");

Some files were not shown because too many files have changed in this diff Show More