Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ea506847e | |||
| 4c5e7d089d | |||
| d9d1d04e2e | |||
| f81948690d | |||
| 26f40c457b | |||
| dd26a8b7eb | |||
| dd8b274550 | |||
| e5c08cca40 | |||
| 407d7cb101 | |||
| 4e2e49b3dd | |||
| ed7fb12b3f | |||
| d8b05ec6c3 | |||
| 4ca9fb836d | |||
| 985b66c64f | |||
| 871f037dda | |||
| 3f9849d921 | |||
| 95ee9a0b7d | |||
| dde6681542 | |||
| ce8a97b1c7 | |||
| 5e35fdd380 | |||
| 1d78386806 | |||
| 9530b810f1 | |||
| 2ae3988c23 | |||
| afb0446435 | |||
| bd39402570 | |||
| 34fc215133 | |||
| b4315066b1 | |||
| 94f33463ff | |||
| 43a9335355 | |||
| d71c6796ca |
@@ -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
@@ -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
|
||||
|
||||
@@ -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}}"
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -26,6 +26,7 @@ jobs:
|
||||
matrix:
|
||||
branches:
|
||||
- ${{ github.event.repository.default_branch }}
|
||||
- 'stable33'
|
||||
- 'stable32'
|
||||
- 'stable31'
|
||||
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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: >
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-1
Submodule 3rdparty updated: bdfd429725...8f97d8cef3
@@ -5,13 +5,13 @@
|
||||
-->
|
||||
# Nextcloud Server ☁
|
||||
[](https://api.reuse.software/info/github.com/nextcloud/server)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://codecov.io/gh/nextcloud/server)
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/209)
|
||||
[](https://contribute.design/nextcloud/server)
|
||||
|
||||
**A safe home for all your data.**
|
||||
|
||||

|
||||

|
||||
|
||||
## 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.
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);");
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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);");
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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"],
|
||||
|
||||
@@ -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"],
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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;");
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,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;"
|
||||
}
|
||||
@@ -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,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);"
|
||||
}
|
||||
@@ -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);");
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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;");
|
||||
|
||||
@@ -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;"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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);");
|
||||
|
||||
@@ -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);"
|
||||
}
|
||||
@@ -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 d’altitude provenant d’OpenTopoData"
|
||||
"elevation data from OpenTopoData" : "Données d’altitude provenant 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." : "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;");
|
||||
|
||||
@@ -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 d’altitude provenant d’OpenTopoData"
|
||||
"elevation data from OpenTopoData" : "Données d’altitude provenant 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." : "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;"
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user