diff --git a/.github/workflows/cluster-faces-test.yml b/.github/workflows/cluster-faces-test.yml index 0885ef9c..a8bebcf9 100644 --- a/.github/workflows/cluster-faces-test.yml +++ b/.github/workflows/cluster-faces-test.yml @@ -140,21 +140,21 @@ jobs: id: photos-cache with: path: data/admin/files/ - key: https://cloud.marcelklehr.de/s/PkNYbmKnwMiQMFD/download/IMDb-Face.zip + key: https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face.zip - name: Upload photos if: steps.photos-cache.outputs.cache-hit != 'true' run: | mkdir -p data/admin/files/ cd data/admin/files - wget https://cloud.marcelklehr.de/s/PkNYbmKnwMiQMFD/download/IMDb-Face.zip + wget https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face.zip unzip IMDb-Face.zip rm IMDb-Face.zip - uses: actions/cache/save@v3 with: path: data/admin/files/ - key: https://cloud.marcelklehr.de/s/PkNYbmKnwMiQMFD/download/IMDb-Face.zip + key: https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face.zip - name: Set config run: | @@ -259,7 +259,7 @@ jobs: - name: Download IMDb-Face.csv working-directory: apps/${{ env.APP_NAME }}/tests/res run: | - wget https://cloud.marcelklehr.de/s/ZKe7MY7gZRRxBPq/download/IMDb-Face-csv.zip + wget https://cloud.nextcloud.com/s/4JqQdPy3dicQRPr/download/IMDb-Face-csv.zip unzip IMDb-Face-csv.zip rm IMDb-Face-csv.zip diff --git a/.github/workflows/files-scan-test.yml b/.github/workflows/files-scan-test.yml index af7a5e91..b16f8477 100644 --- a/.github/workflows/files-scan-test.yml +++ b/.github/workflows/files-scan-test.yml @@ -138,6 +138,7 @@ jobs: - name: Run scan env: GITHUB_REF: ${{ github.ref }} + GITHUB_REPOSITORY: ${{ github.repository }} run: | ./occ files:scan admin -vvv rm data/admin/files/res/alpine.JPG diff --git a/.github/workflows/psalm-matrix.yml b/.github/workflows/psalm-matrix.yml index 840f8c3f..01a9c035 100644 --- a/.github/workflows/psalm-matrix.yml +++ b/.github/workflows/psalm-matrix.yml @@ -21,34 +21,27 @@ concurrency: cancel-in-progress: true jobs: - matrix: - runs-on: ubuntu-latest-low - outputs: - ocp-matrix: ${{ steps.versions.outputs.ocp-matrix }} - steps: - - name: Checkout app - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - name: Get version matrix - id: versions - uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - static-analysis: runs-on: ubuntu-latest - needs: matrix - strategy: - # do not stop on another job's failure - fail-fast: false - matrix: ${{ fromJson(needs.matrix.outputs.ocp-matrix) }} - name: static-psalm-analysis ${{ matrix.ocp-version }} + name: static-psalm-analysis steps: - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: Get php version + id: versions + uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1 - - name: Set up php${{ matrix.php-versions }} + - name: Check enforcement of minimum PHP version ${{ steps.versions.outputs.php-min }} in psalm.xml + run: grep 'phpVersion="${{ steps.versions.outputs.php-min }}' psalm.xml + + - name: Set up php${{ steps.versions.outputs.php-available }} uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 # v2.31.1 with: - php-version: ${{ matrix.php-versions }} + php-version: ${{ steps.versions.outputs.php-available }} extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite coverage: none ini-file: development @@ -60,21 +53,8 @@ jobs: composer remove nextcloud/ocp --dev composer i - - - name: Install dependencies - run: composer require --dev 'nextcloud/ocp:${{ matrix.ocp-version }}' --ignore-platform-reqs --with-dependencies + - name: Install nextcloud/ocp + run: composer require --dev nextcloud/ocp:dev-${{ steps.versions.outputs.branches-max }} --ignore-platform-reqs --with-dependencies - name: Run coding standards check - run: composer run psalm - - summary: - runs-on: ubuntu-latest-low - needs: static-analysis - - if: always() - - name: static-psalm-analysis-summary - - steps: - - name: Summary status - run: if ${{ needs.static-analysis.result != 'success' }}; then exit 1; fi + run: composer run psalm -- --threads=1 --monochrome --no-progress --output-format=github \ No newline at end of file diff --git a/.gitignore b/.gitignore index b5e7fa64..2922ebce 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ build /vendor-bin/*/vendor /lib/Vendor /lib/autoload +/js/ +/vendor-bin/ \ No newline at end of file diff --git a/appinfo/info.xml b/appinfo/info.xml index 71624f2c..ae59c62e 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -76,7 +76,7 @@ Requirements: The app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js. ]]> - 9.0.0-dev.0 + 10.0.0-dev.0 agpl Marcel Klehr @@ -92,7 +92,7 @@ The app does not send any sensitive data to cloud providers or similar services. https://raw.githubusercontent.com/nextcloud/recognize/main/screenshots/Logo.png https://raw.githubusercontent.com/nextcloud/recognize/main/screenshots/imagenet_examples.jpg - + OCA\Recognize\BackgroundJobs\MaintenanceJob diff --git a/l10n/da.js b/l10n/da.js index 980993ff..640c93b2 100644 --- a/l10n/da.js +++ b/l10n/da.js @@ -30,7 +30,7 @@ OC.L10N.register( "Pizza" : "Pizza", "Info" : "Info", "Document" : "Dokument", - "Bucket" : "Bucket", + "Bucket" : "Spand", "Festival" : "Festival", "Event" : "Begivenhed", "Gallery" : "Galleri", diff --git a/l10n/da.json b/l10n/da.json index c3f14b55..f3db6a02 100644 --- a/l10n/da.json +++ b/l10n/da.json @@ -28,7 +28,7 @@ "Pizza" : "Pizza", "Info" : "Info", "Document" : "Dokument", - "Bucket" : "Bucket", + "Bucket" : "Spand", "Festival" : "Festival", "Event" : "Begivenhed", "Gallery" : "Galleri", diff --git a/l10n/de.js b/l10n/de.js index a540c8a0..56e5dd5f 100644 --- a/l10n/de.js +++ b/l10n/de.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Kollaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Kollaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -90,7 +90,7 @@ OC.L10N.register( "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit deinem Setup nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf deinem System aus irgendeinem Grund nicht funktioniert, kannst du den Pfad zu einer benutzerdefinierten Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Node.js-Bibliothek konnte nicht gefunden werden. Möglicherweise musst du den Pfad zu einer funktionierenden Bibliothek manuell festlegen.", diff --git a/l10n/de.json b/l10n/de.json index 69e8cc42..a5689c3b 100644 --- a/l10n/de.json +++ b/l10n/de.json @@ -1,7 +1,7 @@ { "translations": { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Kollaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht deine Mediensammlung und fügt passende Schlagworte hinzu, um deine Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Höre deine verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachte deineverschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahre mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation kannst du das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Kollaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn weniger verfügbar ist, stelle sicher, dass du etwas Swap zur Verfügung hast)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. du kannst nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf deinem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -88,7 +88,7 @@ "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit deinem Setup nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf deinem System aus irgendeinem Grund nicht funktioniert, kannst du den Pfad zu einer benutzerdefinierten Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer musst du diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stelle es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Node.js-Bibliothek konnte nicht gefunden werden. Möglicherweise musst du den Pfad zu einer funktionierenden Bibliothek manuell festlegen.", diff --git a/l10n/de_DE.js b/l10n/de_DE.js index eddcc89d..1d908809 100644 --- a/l10n/de_DE.js +++ b/l10n/de_DE.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Collaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Collaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -90,7 +90,7 @@ OC.L10N.register( "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit den Einstellungen nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf Ihrem System aus irgendeinem Grund nicht funktioniert, können Sie den Pfad zu einer benutzerdefinierte Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Nice-Binärdatei konnte nicht gefunden werden. Möglicherweise müssen Sie den Pfad zu einer funktionierenden Binärdatei manuell festlegen.", diff --git a/l10n/de_DE.json b/l10n/de_DE.json index 306437a3..f8e629ef 100644 --- a/l10n/de_DE.json +++ b/l10n/de_DE.json @@ -1,7 +1,7 @@ { "translations": { "Recognize" : "Recognize", "Smart media tagging and face recognition with on-premises machine learning models" : "Intelligente Medienverschlagwortung und Gesichtserkennung mit vor Ort installierten Modellen für maschinelles Lernen", - "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App „Collaborative Tags“ aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", + "Smart media tagging and face recognition with on-premises machine learning models.\nThis app goes through your media collection and adds fitting tags, automatically categorizing your photos and music.\n\n* 📷 👪 Recognizes faces from contact photos\n* 📷 🏔 Recognizes animals, landscapes, food, vehicles, buildings and other objects\n* 📷 🗼 Recognizes landmarks and monuments\n* 👂 🎵 Recognizes music genres\n* 🎥 🤸 Recognizes human actions on video\n\n⚡ Tagging works via Nextcloud's Collaborative Tags\n * 👂 listen to your tagged music with the audioplayer app\n * 📷 view your tagged photos and videos with the photos app\n\nModel sizes:\n\n * Object recognition: 1GB\n * Landmark recognition: 300MB\n * Video action recognition: 50MB\n * Music genre recognition: 50MB\n\n## Ethical AI Rating\n### Rating for Photo object detection: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Photo face recognition: 🟢\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n### Rating for Video action recognition: 🟢\n\nPositive:\n* the software for training and inferencing of this model is open source\n* the trained model is freely available, and thus can be ran on-premises\n* the training data is freely available, making it possible to check or correct for bias or optimise the performance and CO2 usage.\n\n## Ethical AI Rating\n### Rating Music genre recognition: 🟡\n\nPositive:\n* the software for training and inference of this model is open source\n* the trained model is freely available, and thus can be run on-premises\n\nNegative:\n* the training data is not freely available, limiting the ability of external parties to check and correct for bias or optimise the model’s performance and CO2 usage.\n\nLearn more about the Nextcloud Ethical AI Rating [in our blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nAfter installation, you can enable tagging in the admin settings.\n\nRequirements:\n- php 7.4 and above\n- App \"collaborative tags\" enabled\n- For native speed:\n - Processor: x86 64-bit (with support for AVX instructions)\n - System with glibc (usually the norm on Linux; FreeBSD, Alpine linux and thus also the official Nextcloud Docker container and Nextcloud AIO are *not* such systems)\n- For sub-native speed (using WASM mode)\n - Processor: x86 64-bit, arm64, armv7l (no AVX needed)\n - System with glibc or musl (incl. Alpine linux and thus also the official Nextcloud Docker container and also Nextcloud AIO)\n- ~4GB of free RAM (if you're cutting it close, make sure you have some swap available)\n- This app is currently incompatible with the *Suspicious Login* app due to a dependency conflict (ie. you can only have one of the two installed)\n\nThe app does not send any sensitive data to cloud providers or similar services. All processing is done on your Nextcloud machine, using Tensorflow.js running in Node.js." : "Intelligente Medienverschlagwortung und Gesichtserkennung mit lokalen maschinellen Lernmodellen.\nDiese App durchsucht Ihre Mediensammlung und fügt passende Schlagworte hinzu, um Ihre Fotos und Musik automatisch zu kategorisieren.\n\n* 📷 👪 Erkennt Gesichter anhand von Kontaktfotos\n* 📷 🏔 Erkennt Tiere, Landschaften, Lebensmittel, Fahrzeuge, Gebäude und andere Objekte\n* 📷 🗼 Erkennt Wahrzeichen und Denkmäler\n* 👂 🎵 Erkennt Musikgenres\n* 🎥 🤸 Erkennt menschliche Handlungen im Video\n\n⚡ Verschlagwortung funktioniert über die kollaborativen Schlagworte von Nextcloud\n* 👂 Hören Sie Ihre verschlagwortete Musik mit der Audioplayer-App.\n* 📷 Betrachten Sie Ihre verschlagworteten Fotos und Videos mit der Fotos-App\n\nModellgrößen:\n\n* Objekterkennung: 1GB\n* Landmark-Erkennung: 300MB\n* Video-Aktionserkennung: 50MB\n* Musikgenre-Erkennung: 50MB\n\n## Ethische KI-Bewertung\n### Bewertung für Fotoobjekterkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Foto-Gesichtserkennung: 🟢\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n### Bewertung für Video-Aktionserkennung: 🟢\n\nPositiv:\n* Die Software zum Trainieren und Inferenzieren dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n* Die Trainingsdaten sind frei verfügbar und ermöglichen die Überprüfung oder Korrektur von Verzerrungen sowie die Optimierung der Leistung und des CO2-Verbrauchs.\n\n## Ethische KI-Bewertung\n### Bewertung Erkennung des Musikgenres: 🟡\n\nPositiv:\n* Die Software für Training und Inferenz dieses Modells ist Open Source\n* Das trainierte Modell ist frei verfügbar und kann daher vor Ort ausgeführt werden\n\nNegativ:\n* Die Trainingsdaten sind nicht frei verfügbar, was die Möglichkeiten externer Parteien einschränkt, die Leistung des Modells und den CO2-Verbrauch zu überprüfen und auf Verzerrungen zu korrigieren oder sie zu optimieren.\n\nErfahren Sie mehr über das Nextcloud Ethical AI Rating [in unserem Blog](https://nextcloud.com/blog/nextcloud-ethical-ai-rating/).\n\nNach der Installation können Sie das Tagging in den Admin-Einstellungen aktivieren.\n\nAnforderungen:\n- PHP 7.4 und höher\n- App \"Collaborative Tags\" aktiviert\n- Für native Geschwindigkeit:\n- Prozessor: x86 64-Bit (mit Unterstützung für AVX-Anweisungen)\n- System mit glibc (normalerweise die Norm unter Linux; FreeBSD, Alpine Linux und damit auch der offizielle Nextcloud Docker-Container und Nextcloud AIO sind *keine* solchen Systeme)\n- Für subnative Geschwindigkeit (im WASM-Modus)\n- Prozessor: x86 64-bit, arm64, armv7l (kein AVX erforderlich)\n- System mit glibc oder musl (inkl. Alpine Linux und damit auch der offizielle Nextcloud Docker Container und auch Nextcloud AIO)\n- ~4 GB freier RAM (wenn Sie es knapp machen, stellen Sie sicher, dass Sie etwas Swap zur Verfügung haben)\n- Diese App ist derzeit aufgrund eines Abhängigkeitskonflikts nicht mit der App *Suspicious Login* kompatibel (d. h. Sie können nur eine der beiden installiert haben).\n\nDie App sendet keine sensiblen Daten an Cloud-Anbieter oder ähnliche Dienste. Die gesamte Verarbeitung erfolgt auf Ihrem Nextcloud-Computer mithilfe von Tensorflow.js, das in Node.js ausgeführt wird.", "Status" : "Status", "The machine learning models have been downloaded successfully." : "Die Modelle für maschinelles Lernen wurden erfolgreich heruntergeladen.", "The machine learning models still need to be downloaded." : "Die Modelle für maschinelles Lernen müssen noch heruntergeladen werden.", @@ -88,7 +88,7 @@ "Could not load Tensorflow WASM in Node.js. Something is wrong with your setup." : "Tensorflow WASM konnte nicht in Node.js geladen werden. Irgendetwas stimmt mit den Einstellungen nicht.", "Tensorflow WASM was loaded successfully into Node.js." : "Tensorflow WASM wurde erfolgreich in Node.js geladen.", "If the shipped Node.js binary doesn't work on your system for some reason you can set the path to a custom node.js binary. Currently supported is Node v20.9 and newer v20 releases." : "Wenn die mitgelieferte Node.js-Binärdatei auf Ihrem System aus irgendeinem Grund nicht funktioniert, können Sie den Pfad zu einer benutzerdefinierte Node.js-Binärdatei festlegen. Derzeit werden Node v20.9 und neuere v20-Versionen unterstützt.", - "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das „aktuelle“ Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf „/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node“ anstelle von „/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node“ ein.", + "For Nextcloud Snap users, you need to adjust this path to point to the snap's \"current\" directory as the pre-configured path will change with each update. For example, set it to \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" instead of \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\"" : "Für Nextcloud Snap-Benutzer müssen Sie diesen Pfad so anpassen, dass er auf das \"aktuelle\" Verzeichnis des Snaps verweist, da sich der vorkonfigurierte Pfad mit jedem Update ändert. Stellen Sie es beispielsweise auf \"/var/snap/nextcloud/current/nextcloud/extra-apps/recognize/bin/node\" anstelle von \"/var/snap/nextcloud/9337974/nextcloud/extra-apps/recognize/bin/node\" ein.", "Classifier process priority" : "Priorität des Klassifikationsprozesses", "Checking Nice binary" : "Überprüfung der Nice-Binärdatei", "Could not find the Nice binary. You may need to set the path to a working binary manually." : "Die Nice-Binärdatei konnte nicht gefunden werden. Möglicherweise müssen Sie den Pfad zu einer funktionierenden Binärdatei manuell festlegen.", diff --git a/l10n/et_EE.js b/l10n/et_EE.js new file mode 100644 index 00000000..c7b2ed3a --- /dev/null +++ b/l10n/et_EE.js @@ -0,0 +1,21 @@ +OC.L10N.register( + "recognize", + { + "Status" : "Staatus", + "Reset" : "Lähtesta", + "never" : "mitte kunagi", + "Landscape" : "Horisontaalne", + "Portrait" : "Vertikaalne", + "People" : "Inimese", + "Office" : "Kontor", + "Car" : "Auto", + "Display" : "Vaade", + "Camping" : "Telkimine", + "Pizza" : "Pitsa", + "Info" : "Info", + "Bucket" : "Korv", + "Event" : "Sündmus", + "Gallery" : "Galerii", + "Park" : "Park" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/l10n/et_EE.json b/l10n/et_EE.json new file mode 100644 index 00000000..5f00f6e3 --- /dev/null +++ b/l10n/et_EE.json @@ -0,0 +1,19 @@ +{ "translations": { + "Status" : "Staatus", + "Reset" : "Lähtesta", + "never" : "mitte kunagi", + "Landscape" : "Horisontaalne", + "Portrait" : "Vertikaalne", + "People" : "Inimese", + "Office" : "Kontor", + "Car" : "Auto", + "Display" : "Vaade", + "Camping" : "Telkimine", + "Pizza" : "Pitsa", + "Info" : "Info", + "Bucket" : "Korv", + "Event" : "Sündmus", + "Gallery" : "Galerii", + "Park" : "Park" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +} \ No newline at end of file diff --git a/lib/BackgroundJobs/ClassifierJob.php b/lib/BackgroundJobs/ClassifierJob.php index 144efbd9..d4d43a45 100644 --- a/lib/BackgroundJobs/ClassifierJob.php +++ b/lib/BackgroundJobs/ClassifierJob.php @@ -1,4 +1,5 @@ clusterAnalyzer->calculateClusters($userId, self::BATCH_SIZE); diff --git a/lib/BackgroundJobs/MaintenanceJob.php b/lib/BackgroundJobs/MaintenanceJob.php index 87b44f60..52bfd359 100644 --- a/lib/BackgroundJobs/MaintenanceJob.php +++ b/lib/BackgroundJobs/MaintenanceJob.php @@ -1,4 +1,5 @@ addType('height', 'float'); $this->addType('width', 'float'); $this->addType('vector', 'json'); - $this->addType('clusterId', 'int'); + $this->addType('clusterId', 'integer'); $this->addType('threshold', 'float'); } diff --git a/lib/Db/FaceDetectionMapper.php b/lib/Db/FaceDetectionMapper.php index 75faf836..9f7cbb38 100644 --- a/lib/Db/FaceDetectionMapper.php +++ b/lib/Db/FaceDetectionMapper.php @@ -1,4 +1,5 @@ */ public static function calculateCentroidOfDetections(array $detections): array { - // init 128 dimensional vector + // init 1024 dimensional vector /** @var list $sum */ $sum = []; for ($i = 0; $i < self::DIMENSIONS; $i++) { diff --git a/lib/Service/IgnoreService.php b/lib/Service/IgnoreService.php index 60c305c7..38b8c407 100644 --- a/lib/Service/IgnoreService.php +++ b/lib/Service/IgnoreService.php @@ -1,4 +1,5 @@ cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->emergency($message, $context); + $this->logger->emergency((string)$message, $context); } /** * @inheritDoc */ - public function alert(Stringable|string $message, array $context = array()): void { + public function alert($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->alert($message, $context); + $this->logger->alert((string)$message, $context); } /** * @inheritDoc */ - public function critical(Stringable|string $message, array $context = array()): void { + public function critical($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->critical($message, $context); + $this->logger->critical((string)$message, $context); } /** * @inheritDoc */ - public function error(Stringable|string $message, array $context = array()): void { + public function error($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->error($message, $context); + $this->logger->error((string)$message, $context); } /** * @inheritDoc */ - public function warning(Stringable|string $message, array $context = array()): void { + public function warning($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->warning($message, $context); + $this->logger->warning((string)$message, $context); } /** * @inheritDoc */ - public function notice(Stringable|string $message, array $context = array()): void { + public function notice($message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->notice($message, $context); + $this->logger->notice((string)$message, $context); } /** * @inheritDoc */ - public function info(Stringable|string $message, array $context = array()): void { + public function info($message, array $context = array()): void { if (isset($this->cliOutput) && !$this->cliOutput->isQuiet()) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } $this->logger->info($message, $context); } @@ -101,20 +101,20 @@ public function info(Stringable|string $message, array $context = array()): void /** * @inheritDoc */ - public function debug(Stringable|string $message, array $context = array()): void { + public function debug($message, array $context = array()): void { if (isset($this->cliOutput) && !$this->cliOutput->isQuiet()) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->debug($message, $context); + $this->logger->debug((string)$message, $context); } /** * @inheritDoc */ - public function log($level, Stringable|string $message, array $context = array()): void { + public function log($level, $message, array $context = array()): void { if (isset($this->cliOutput)) { - $this->cliOutput->writeln($message); + $this->cliOutput->writeln((string)$message); } - $this->logger->log($level, $message, $context); + $this->logger->log($level, (string)$message, $context); } } diff --git a/lib/Service/QueueService.php b/lib/Service/QueueService.php index 98094abc..9f94dc55 100644 --- a/lib/Service/QueueService.php +++ b/lib/Service/QueueService.php @@ -1,4 +1,5 @@ =14.0.0" } diff --git a/package.json b/package.json index a618417e..5bee1bef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "recognize", - "version": "9.0.0-dev.0", + "version": "10.0.0-dev.0", "description": "Image recognition in nextcloud", "main": "src/classifier_imagenet.js", "directories": { @@ -29,7 +29,7 @@ "@tensorflow/tfjs-backend-wasm": "4.x", "@tensorflow/tfjs-node": "4.x", "@tensorflow/tfjs-node-gpu": "4.x", - "@vladmandic/face-api": "^1.7.11", + "@vladmandic/human": "^3.3.4", "download": "^8.0.0", "execa": "^5.1.1", "exifer": "^1.0.0-beta.2", diff --git a/psalm-baseline.xml b/psalm-baseline.xml index d66b43c4..d2818a79 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,5 +1,5 @@ - + getContainer()]]> @@ -84,6 +84,9 @@ + + + @@ -767,6 +770,9 @@ + + + @@ -1050,6 +1056,22 @@ + + + + + + + + + + + + + + + + diff --git a/psalm.xml b/psalm.xml index da15746f..a88c55e6 100644 --- a/psalm.xml +++ b/psalm.xml @@ -6,6 +6,7 @@ xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" errorBaseline="psalm-baseline.xml" + phpVersion="8.1" > diff --git a/src/classifier_faces.js b/src/classifier_faces.js index c573ec5a..526fde67 100644 --- a/src/classifier_faces.js +++ b/src/classifier_faces.js @@ -1,36 +1,59 @@ -const path = require('path') const fs = require('fs/promises') -let tf, faceapi, Jimp +let tf, Human, Jimp, wasm let PUREJS = false if (process.env.RECOGNIZE_PUREJS === 'true') { tf = require('@tensorflow/tfjs') - require('@tensorflow/tfjs-backend-wasm') - faceapi = require('@vladmandic/face-api/dist/face-api.node-wasm.js') + wasm = require('@tensorflow/tfjs-backend-wasm') + Human = require('@vladmandic/human/dist/human.node-wasm.js') Jimp = require('jimp') PUREJS = true } else { try { if (process.env.RECOGNIZE_GPU === 'true') { tf = require('@tensorflow/tfjs-node-gpu') - faceapi = require('@vladmandic/face-api/dist/face-api.node-gpu.js') + Human = require('@vladmandic/human/dist/human.node-gpu.js') } else { tf = require('@tensorflow/tfjs-node') - faceapi = require('@vladmandic/face-api/dist/face-api.node.js') + Human = require('@vladmandic/human/dist/human.node.js') } } catch (e) { console.error(e) console.error('Trying js-only mode') tf = require('@tensorflow/tfjs') - require('@tensorflow/tfjs-backend-wasm') - faceapi = require('@vladmandic/face-api/dist/face-api.node-wasm.js') + wasm = require('@tensorflow/tfjs-backend-wasm') + Human = require('@vladmandic/human/dist/human.node-wasm.js') Jimp = require('jimp') PUREJS = true } } - if (process.argv.length < 3) throw new Error('Incorrect arguments: node classifier_faces.js ... | node classify.js -') +const config = { + cacheSensitivity: 0.01, + // modelBasePath: 'file://node_modules/@vladmandic/human/models/', + modelBasePath: 'https://vladmandic.github.io/human-models/models/', + backend: PUREJS ? 'wasm' : 'tensorflow', + // wasmPath: 'file://node_modules/@tensorflow/tfjs-backend-wasm/dist/', + wasmPath: `https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${tf.version_core}/dist/`, + debug: false, + async: false, + softwareKernels: true, + face: { + enabled: true, + detector: { rotation: false, maxDetected: 100 }, + iris: { enabled: true }, + description: { enabled: true }, + antispoof: { enabled: true }, + liveness: { enabled: true }, + }, + hand: { enabled: false }, + body: { enabled: false }, + object: { enabled: false }, + segmentation: { enabled: false }, + filter: { enabled: false }, +} + /** * */ @@ -43,9 +66,8 @@ async function main() { paths = process.argv.slice(2) } - await faceapi.nets.ssdMobilenetv1.loadFromDisk(path.resolve(__dirname, '..', 'node_modules/@vladmandic/face-api/model')) - await faceapi.nets.faceLandmark68Net.loadFromDisk(path.resolve(__dirname, '..', 'node_modules/@vladmandic/face-api/model')) - await faceapi.nets.faceRecognitionNet.loadFromDisk(path.resolve(__dirname, '..', 'node_modules/@vladmandic/face-api/model')) + Human.env.updateBackend() + const human = new Human.Human(config) for (const path of paths) { try { @@ -55,19 +77,18 @@ async function main() { } else { tensor = await tf.node.decodeImage(await fs.readFile(path), 3) } - const results = await faceapi.detectAllFaces(tensor).withFaceLandmarks().withFaceDescriptors() + const results = await human.detect(tensor) tensor.dispose() - const vectors = results + const vectors = results.face .map(result => ({ - angle: result.angle, - vector: result.descriptor, - x: result.detection.relativeBox.x, - y: result.detection.relativeBox.y, - height: result.detection.relativeBox.height, - width: result.detection.relativeBox.width, - score: result.detection.score, + angle: result.rotation.angle, + vector: result.embedding, + x: result.boxRaw[0], + y: result.boxRaw[1], + height: result.boxRaw[3], + width: result.boxRaw[2], + score: result.score, })) - console.log(JSON.stringify(vectors)) } catch (e) { console.error(e) @@ -76,6 +97,9 @@ async function main() { } } +if (PUREJS) { + wasm.setWasmPaths(config.wasmPath, true) +} tf.setBackend(PUREJS ? 'wasm' : 'tensorflow') .then(() => main()) .catch(e => { diff --git a/src/model-manager.js b/src/model-manager.js index fe20c27a..73740f10 100644 --- a/src/model-manager.js +++ b/src/model-manager.js @@ -3,10 +3,11 @@ const path = require('path') const tar = require('tar') const VERSION = require('../package.json').version const ref = process.env.GITHUB_REF ? process.env.GITHUB_REF : `refs/tags/v${VERSION}` +const repository = process.env.GITHUB_REPOSITORY ?? 'nextcloud/recognize' exports.downloadAll = async () => { await download( - `https://github.com/nextcloud/recognize/archive/${ref}.tar.gz`, + `https://github.com/${repository}/archive/${ref}.tar.gz`, path.resolve(__dirname, '..'), { filename: 'recognize.tar.gz' } ) diff --git a/vendor-bin/php-scoper/composer.json b/vendor-bin/php-scoper/composer.json index 61735d40..84babd30 100644 --- a/vendor-bin/php-scoper/composer.json +++ b/vendor-bin/php-scoper/composer.json @@ -1,5 +1,23 @@ { - "require-dev": { - "humbug/php-scoper": "^0.18.7" + "require": { + "humbug/php-scoper": "^0.18", + "cweagans/composer-patches": "^1.7" + }, + "config": { + "platform": { + "php": "8.1" + }, + "allow-plugins": { + "cweagans/composer-patches": true + } + }, + "extra": { + "patches": { + "thecodingmachine/safe": { + "PHP 8.4 compatibility, patch 1": "https://patch-diff.githubusercontent.com/raw/thecodingmachine/safe/pull/464.patch", + "PHP 8.4 compatibility, patch 2": "https://patch-diff.githubusercontent.com/raw/thecodingmachine/safe/pull/466.patch", + "PHP 8.4 compatibility, patch 3": "https://github.com/blizzz/safe/commit/6eeee2a20ffb2be3456ae8615b227c78e1ca8a20.patch" + } + } } -} +} \ No newline at end of file diff --git a/vendor-bin/php-scoper/composer.lock b/vendor-bin/php-scoper/composer.lock index de81ac68..40f188f7 100644 --- a/vendor-bin/php-scoper/composer.lock +++ b/vendor-bin/php-scoper/composer.lock @@ -161,16 +161,16 @@ }, { "name": "humbug/php-scoper", - "version": "0.18.15", + "version": "0.18.16", "source": { "type": "git", "url": "https://github.com/humbug/php-scoper.git", - "reference": "79b2b4e0fbc1d1ef6ae99c4e078137b42bd43d19" + "reference": "aff0ef968d8a07ea5be8a2fe797dbf4927e750af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/humbug/php-scoper/zipball/79b2b4e0fbc1d1ef6ae99c4e078137b42bd43d19", - "reference": "79b2b4e0fbc1d1ef6ae99c4e078137b42bd43d19", + "url": "https://api.github.com/repos/humbug/php-scoper/zipball/aff0ef968d8a07ea5be8a2fe797dbf4927e750af", + "reference": "aff0ef968d8a07ea5be8a2fe797dbf4927e750af", "shasum": "" }, "require": { @@ -191,7 +191,7 @@ "fidry/makefile": "^1.0", "humbug/box": "^4.6.2", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^10.0 || ^11.0", "symfony/yaml": "^6.4 || ^7.0" }, "bin": [ @@ -239,29 +239,29 @@ "description": "Prefixes all PHP namespaces in a file or directory.", "support": { "issues": "https://github.com/humbug/php-scoper/issues", - "source": "https://github.com/humbug/php-scoper/tree/0.18.15" + "source": "https://github.com/humbug/php-scoper/tree/0.18.16" }, - "time": "2024-09-02T13:35:10+00:00" + "time": "2025-01-12T15:48:25+00:00" }, { "name": "jetbrains/phpstorm-stubs", - "version": "v2024.2", + "version": "v2024.3", "source": { "type": "git", "url": "https://github.com/JetBrains/phpstorm-stubs.git", - "reference": "cf7e447ddfa7f0cbab0c1dd38392f0cb05f9881c" + "reference": "0e82bdfe850c71857ee4ee3501ed82a9fc5d043c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/cf7e447ddfa7f0cbab0c1dd38392f0cb05f9881c", - "reference": "cf7e447ddfa7f0cbab0c1dd38392f0cb05f9881c", + "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/0e82bdfe850c71857ee4ee3501ed82a9fc5d043c", + "reference": "0e82bdfe850c71857ee4ee3501ed82a9fc5d043c", "shasum": "" }, "require-dev": { - "friendsofphp/php-cs-fixer": "v3.46.0", - "nikic/php-parser": "v5.0.0", - "phpdocumentor/reflection-docblock": "5.3.0", - "phpunit/phpunit": "10.5.5" + "friendsofphp/php-cs-fixer": "v3.64.0", + "nikic/php-parser": "v5.3.1", + "phpdocumentor/reflection-docblock": "5.6.0", + "phpunit/phpunit": "11.4.3" }, "type": "library", "autoload": { @@ -286,22 +286,22 @@ "type" ], "support": { - "source": "https://github.com/JetBrains/phpstorm-stubs/tree/v2024.2" + "source": "https://github.com/JetBrains/phpstorm-stubs/tree/v2024.3" }, - "time": "2024-06-17T19:18:18+00:00" + "time": "2024-12-14T08:03:12+00:00" }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -344,9 +344,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "psr/container", @@ -503,16 +503,16 @@ }, { "name": "symfony/console", - "version": "v7.1.5", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee" + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0fa539d12b3ccf068a722bbbffa07ca7079af9ee", - "reference": "0fa539d12b3ccf068a722bbbffa07ca7079af9ee", + "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", "shasum": "" }, "require": { @@ -576,7 +576,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.5" + "source": "https://github.com/symfony/console/tree/v7.2.1" }, "funding": [ { @@ -592,20 +592,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-12-11T03:49:26+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -613,12 +613,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -643,7 +643,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -659,20 +659,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -681,12 +681,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -719,7 +719,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -735,20 +735,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/61fe0566189bf32e8cfee78335d8776f64a66f5a", - "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { @@ -785,7 +785,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.1.5" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -801,20 +801,20 @@ "type": "tidelift" } ], - "time": "2024-09-17T09:16:35+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/finder", - "version": "v7.1.4", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d95bbf319f7d052082fb7af147e0f835a695e823" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d95bbf319f7d052082fb7af147e0f835a695e823", - "reference": "d95bbf319f7d052082fb7af147e0f835a695e823", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { @@ -849,7 +849,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.4" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -865,7 +865,7 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:28:19+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/polyfill-ctype", @@ -893,8 +893,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -969,8 +969,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1047,8 +1047,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1131,8 +1131,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1187,16 +1187,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -1209,12 +1209,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -1250,7 +1250,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -1266,20 +1266,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", - "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { @@ -1337,7 +1337,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.5" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -1353,20 +1353,20 @@ "type": "tidelift" } ], - "time": "2024-09-20T08:28:38+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.1.5", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "e20e03889539fd4e4211e14d2179226c513c010d" + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e20e03889539fd4e4211e14d2179226c513c010d", - "reference": "e20e03889539fd4e4211e14d2179226c513c010d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", + "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", "shasum": "" }, "require": { @@ -1382,7 +1382,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/process": "^6.4|^7.0", "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "twig/twig": "^3.12" }, "bin": [ "Resources/bin/var-dump-server" @@ -1420,7 +1420,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.1.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" }, "funding": [ { @@ -1436,7 +1436,7 @@ "type": "tidelift" } ], - "time": "2024-09-16T10:07:02+00:00" + "time": "2024-11-08T15:48:14+00:00" }, { "name": "thecodingmachine/safe", @@ -1638,10 +1638,10 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [], + "platform": {}, + "platform-dev": {}, "plugin-api-version": "2.6.0" }