mirror of
https://github.com/immich-app/immich.git
synced 2025-12-09 22:30:59 -08:00
Compare commits
116 Commits
fix-17167
...
update-exi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
edac67acd2 | ||
|
|
f410b58035 | ||
|
|
8943ec23ba | ||
|
|
04b03f2924 | ||
|
|
cf2c0260a6 | ||
|
|
ae8af84101 | ||
|
|
4794eeca88 | ||
|
|
ac65d46ec6 | ||
|
|
e5ca79dd44 | ||
|
|
49be6d7fd8 | ||
|
|
15c6506aee | ||
|
|
2c31a11e41 | ||
|
|
b6c5a03533 | ||
|
|
75bc32b47b | ||
|
|
fdbe6d649f | ||
|
|
2b131fe935 | ||
|
|
6ae24fbbd4 | ||
|
|
7f116d8e98 | ||
|
|
bd0840c411 | ||
|
|
a5123dec1a | ||
|
|
ffd18c5459 | ||
|
|
8242ff9bab | ||
|
|
8203b6c450 | ||
|
|
b352cf3336 | ||
|
|
96ed9a8c4a | ||
|
|
e7a5b96ed0 | ||
|
|
51c2c60231 | ||
|
|
43d585ce55 | ||
|
|
042da669d1 | ||
|
|
a724f147fe | ||
|
|
1e4b9ae5b7 | ||
|
|
99cddf1fd6 | ||
|
|
30d33f968f | ||
|
|
31ee19181a | ||
|
|
b58a450152 | ||
|
|
b87ba6865b | ||
|
|
565cceb323 | ||
|
|
f096dd0cc0 | ||
|
|
a3c3f9cfcb | ||
|
|
7b6a4be30c | ||
|
|
720189e2c2 | ||
|
|
dfab32c8f2 | ||
|
|
60174d662d | ||
|
|
8b6a765e12 | ||
|
|
2248a38567 | ||
|
|
97e52c5156 | ||
|
|
e8b4ac0522 | ||
|
|
548298b0c7 | ||
|
|
40cff2893c | ||
|
|
b621281351 | ||
|
|
4336afd6bf | ||
|
|
5a456ef277 | ||
|
|
5cb5fcbf62 | ||
|
|
95e3b15776 | ||
|
|
50335dc363 | ||
|
|
6e62c09d84 | ||
|
|
00d3b8d83a | ||
|
|
d911b76c08 | ||
|
|
502854cee1 | ||
|
|
59e5c82569 | ||
|
|
e4b0c00885 | ||
|
|
946507231d | ||
|
|
20ba800a50 | ||
|
|
f434e858ed | ||
|
|
3e03c47fbf | ||
|
|
9aa3850769 | ||
|
|
628dcdeebf | ||
|
|
11bfde2aa8 | ||
|
|
69b1ac47ea | ||
|
|
4f81265694 | ||
|
|
3428a876c7 | ||
|
|
bd822657d3 | ||
|
|
9e7744a9ab | ||
|
|
7729fe80fa | ||
|
|
68e24ad168 | ||
|
|
186c573565 | ||
|
|
5b63b9fc8b | ||
|
|
5c80e8734b | ||
|
|
a5093a9434 | ||
|
|
637ad1fdcb | ||
|
|
6789c2ac19 | ||
|
|
838a8dd9a6 | ||
|
|
d71c5602c3 | ||
|
|
8c50e3e80e | ||
|
|
efcb1129ce | ||
|
|
faabda4446 | ||
|
|
b8b2898c87 | ||
|
|
b25914c2a5 | ||
|
|
d613f15606 | ||
|
|
a831876fdc | ||
|
|
09f4476f97 | ||
|
|
238c151ac3 | ||
|
|
e4f83680d9 | ||
|
|
74f7fd4b53 | ||
|
|
f4dbfd856e | ||
|
|
55a3c30664 | ||
|
|
6fa0cb534a | ||
|
|
9f0dbfc150 | ||
|
|
6419ac74af | ||
|
|
d2bcf5d716 | ||
|
|
c8331f111f | ||
|
|
4b4bcd23f4 | ||
|
|
3fde5a8328 | ||
|
|
cc3ea32cd2 | ||
|
|
431cf281da | ||
|
|
8f786fd7dd | ||
|
|
3e73765375 | ||
|
|
411521b21d | ||
|
|
e163808348 | ||
|
|
411772123f | ||
|
|
84c35e35d6 | ||
|
|
f7d730eb05 | ||
|
|
16e0166d22 | ||
|
|
43f8f473e9 | ||
|
|
cc393b2b7b | ||
|
|
6341962de4 |
@@ -1,4 +1,4 @@
|
||||
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:2ef23730ec68d8511ec8e6e0b82550ca728b256805d81f60ed890f3bfb21cfb9
|
||||
ARG BASEIMAGE=mcr.microsoft.com/devcontainers/typescript-node:22@sha256:b0b88ef6a5abf21194343d2c5b2829dddd9be1142f65f6a5e4390a51d5a70dd8
|
||||
FROM ${BASEIMAGE}
|
||||
|
||||
# Flutter SDK
|
||||
|
||||
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -6,6 +6,9 @@ mobile/openapi/**/*.dart linguist-generated=true
|
||||
mobile/lib/**/*.g.dart -diff -merge
|
||||
mobile/lib/**/*.g.dart linguist-generated=true
|
||||
|
||||
mobile/lib/**/*.drift.dart -diff -merge
|
||||
mobile/lib/**/*.drift.dart linguist-generated=true
|
||||
|
||||
open-api/typescript-sdk/fetch-client.ts -diff -merge
|
||||
open-api/typescript-sdk/fetch-client.ts linguist-generated=true
|
||||
|
||||
|
||||
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@@ -46,7 +46,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3
|
||||
uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3
|
||||
uses: github/codeql-action/autobuild@45775bd8235c68ba998cffa5171334d58593da47 # v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
@@ -72,6 +72,6 @@ jobs:
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3
|
||||
uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3
|
||||
with:
|
||||
category: '/language:${{matrix.language}}'
|
||||
|
||||
2
.github/workflows/fix-format.yml
vendored
2
.github/workflows/fix-format.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@af35edadc00be37caa72ed9f3e6d5f7801bfdf09 # v1
|
||||
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
6
.github/workflows/prepare-release.yml
vendored
6
.github/workflows/prepare-release.yml
vendored
@@ -31,7 +31,7 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@af35edadc00be37caa72ed9f3e6d5f7801bfdf09 # v1
|
||||
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
token: ${{ steps.generate-token.outputs.token }}
|
||||
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@22695119d769bdb6f7032ad67b9bca0ef8c4a174 # v5
|
||||
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
|
||||
|
||||
- name: Bump version
|
||||
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@af35edadc00be37caa72ed9f3e6d5f7801bfdf09 # v1
|
||||
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1
|
||||
with:
|
||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||
|
||||
18
.github/workflows/test.yml
vendored
18
.github/workflows/test.yml
vendored
@@ -384,7 +384,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||
- name: Install uv
|
||||
uses: astral-sh/setup-uv@22695119d769bdb6f7032ad67b9bca0ef8c4a174 # v5
|
||||
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
|
||||
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5
|
||||
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
|
||||
# with:
|
||||
@@ -395,16 +395,16 @@ jobs:
|
||||
uv sync --extra cpu
|
||||
- name: Lint with ruff
|
||||
run: |
|
||||
uv run ruff check --output-format=github app export
|
||||
uv run ruff check --output-format=github immich_ml
|
||||
- name: Check black formatting
|
||||
run: |
|
||||
uv run black --check app export
|
||||
uv run black --check immich_ml
|
||||
- name: Run mypy type checking
|
||||
run: |
|
||||
uv run mypy --strict app/
|
||||
uv run mypy --strict immich_ml/
|
||||
- name: Run tests and coverage
|
||||
run: |
|
||||
uv run pytest app --cov=app --cov-report term-missing
|
||||
uv run pytest --cov=immich_ml --cov-report term-missing
|
||||
|
||||
github-files-formatting:
|
||||
name: .github Files Formatting
|
||||
@@ -518,27 +518,27 @@ jobs:
|
||||
run: npm run build
|
||||
|
||||
- name: Run existing migrations
|
||||
run: npm run typeorm:migrations:run
|
||||
run: npm run migrations:run
|
||||
|
||||
- name: Test npm run schema:reset command works
|
||||
run: npm run typeorm:schema:reset
|
||||
|
||||
- name: Generate new migrations
|
||||
continue-on-error: true
|
||||
run: npm run typeorm:migrations:generate ./src/migrations/TestMigration
|
||||
run: npm run migrations:generate TestMigration
|
||||
|
||||
- name: Find file changes
|
||||
uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20
|
||||
id: verify-changed-files
|
||||
with:
|
||||
files: |
|
||||
server/src/migrations/
|
||||
server/src
|
||||
- name: Verify migration files have not changed
|
||||
if: steps.verify-changed-files.outputs.files_changed == 'true'
|
||||
run: |
|
||||
echo "ERROR: Generated migration files not up to date!"
|
||||
echo "Changed files: ${{ steps.verify-changed-files.outputs.changed_files }}"
|
||||
cat ./src/migrations/*-TestMigration.ts
|
||||
cat ./src/*-TestMigration.ts
|
||||
exit 1
|
||||
|
||||
- name: Run SQL generation
|
||||
|
||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -39,6 +39,7 @@
|
||||
],
|
||||
"explorer.fileNesting.enabled": true,
|
||||
"explorer.fileNesting.patterns": {
|
||||
"*.ts": "${capture}.spec.ts,${capture}.mock.ts"
|
||||
"*.ts": "${capture}.spec.ts,${capture}.mock.ts",
|
||||
"*.dart": "${capture}.g.dart,${capture}.gr.dart,${capture}.drift.dart"
|
||||
}
|
||||
}
|
||||
@@ -61,9 +61,7 @@
|
||||
|
||||
## Demo
|
||||
|
||||
Access the demo [here](https://demo.immich.app). The demo is running on a Free-tier Oracle VM in Amsterdam with a 2.4Ghz quad-core ARM64 CPU and 24GB RAM.
|
||||
|
||||
For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoint URL`
|
||||
Access the demo [here](https://demo.immich.app). For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoint URL`.
|
||||
|
||||
### Login credentials
|
||||
|
||||
@@ -104,7 +102,7 @@ For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoi
|
||||
| Read-only gallery | Yes | Yes |
|
||||
| Stacked Photos | Yes | Yes |
|
||||
| Tags | No | Yes |
|
||||
| Folder View | No | Yes |
|
||||
| Folder View | Yes | Yes |
|
||||
|
||||
## Translations
|
||||
|
||||
|
||||
@@ -1,39 +1,29 @@
|
||||
import { FlatCompat } from '@eslint/eslintrc';
|
||||
import js from '@eslint/js';
|
||||
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
||||
import tsParser from '@typescript-eslint/parser';
|
||||
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
|
||||
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
|
||||
import globals from 'globals';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import typescriptEslint from 'typescript-eslint';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
recommendedConfig: js.configs.recommended,
|
||||
allConfig: js.configs.all,
|
||||
});
|
||||
|
||||
export default [
|
||||
export default typescriptEslint.config([
|
||||
eslintPluginUnicorn.configs.recommended,
|
||||
eslintPluginPrettierRecommended,
|
||||
js.configs.recommended,
|
||||
typescriptEslint.configs.recommended,
|
||||
{
|
||||
ignores: ['eslint.config.mjs', 'dist'],
|
||||
},
|
||||
...compat.extends(
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:prettier/recommended',
|
||||
'plugin:unicorn/recommended',
|
||||
),
|
||||
{
|
||||
plugins: {
|
||||
'@typescript-eslint': typescriptEslint,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
},
|
||||
|
||||
parser: tsParser,
|
||||
parser: typescriptEslint.parser,
|
||||
ecmaVersion: 5,
|
||||
sourceType: 'module',
|
||||
|
||||
@@ -58,4 +48,4 @@ export default [
|
||||
'object-shorthand': ['error', 'always'],
|
||||
},
|
||||
},
|
||||
];
|
||||
]);
|
||||
|
||||
1008
cli/package-lock.json
generated
1008
cli/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.56",
|
||||
"version": "2.2.61",
|
||||
"description": "Command Line Interface (CLI) for Immich",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
@@ -21,9 +21,7 @@
|
||||
"@types/lodash-es": "^4.17.12",
|
||||
"@types/micromatch": "^4.0.9",
|
||||
"@types/mock-fs": "^4.13.1",
|
||||
"@types/node": "^22.13.10",
|
||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||
"@typescript-eslint/parser": "^8.15.0",
|
||||
"@types/node": "^22.14.0",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
@@ -31,12 +29,13 @@
|
||||
"eslint": "^9.14.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^56.0.1",
|
||||
"eslint-plugin-unicorn": "^57.0.0",
|
||||
"globals": "^16.0.0",
|
||||
"mock-fs": "^5.2.0",
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-plugin-organize-imports": "^4.0.0",
|
||||
"typescript": "^5.3.3",
|
||||
"typescript-eslint": "^8.28.0",
|
||||
"vite": "^6.0.0",
|
||||
"vite-tsconfig-paths": "^5.0.0",
|
||||
"vitest": "^3.0.0",
|
||||
|
||||
@@ -116,7 +116,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
@@ -102,7 +102,7 @@ services:
|
||||
command: [ './run.sh', '-disable-reporting' ]
|
||||
ports:
|
||||
- 3000:3000
|
||||
image: grafana/grafana:11.5.2-ubuntu@sha256:8b5858c447e06fd7a89006b562ba7bba7c4d5813600c7982374c41852adefaeb
|
||||
image: grafana/grafana:11.6.0-ubuntu@sha256:fd8fa48213c624e1a95122f1d93abbf1cf1cbe85fc73212c1e599dbd76c63ff8
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
||||
image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
# The location where your uploaded files are stored
|
||||
UPLOAD_LOCATION=./library
|
||||
# The location where your database files are stored
|
||||
|
||||
# The location where your database files are stored. Network shares are not supported for the database
|
||||
DB_DATA_LOCATION=./postgres
|
||||
|
||||
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 16 KiB |
@@ -31,7 +31,7 @@ Admin can send a welcome email if the Email option is set, you can learn here ho
|
||||
|
||||
Admin can specify the storage quota for the user as the instance's admin; once the limit is reached, the user won't be able to upload to the instance anymore.
|
||||
|
||||
In order to select a storage quota, click on the pencil icon and enter the storage quota in GiB. You can choose an unlimited quota using the value 0 (default).
|
||||
In order to select a storage quota, click on the pencil icon and enter the storage quota in GiB. You can choose an unlimited quota by leaving it empty (default).
|
||||
|
||||
:::tip
|
||||
The system administrator can see the usage quota percentage of all users in Server Stats page.
|
||||
|
||||
@@ -112,7 +112,7 @@ You begin by authenticating to your Immich server. For instance:
|
||||
immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG
|
||||
```
|
||||
|
||||
This will store your credentials in a `auth.yml` file in the configuration directory which defaults to `~/.config/`. The directory can be set with the `-d` option or the environment variable `IMMICH_CONFIG_DIR`. Please keep the file secure, either by performing the logout command after you are done, or deleting it manually.
|
||||
This will store your credentials in a `auth.yml` file in the configuration directory which defaults to `~/.config/immich/`. The directory can be set with the `-d` option or the environment variable `IMMICH_CONFIG_DIR`. Please keep the file secure, either by performing the logout command after you are done, or deleting it manually.
|
||||
|
||||
Once you are authenticated, you can upload assets to your Immich server.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 4.9 MiB After Width: | Height: | Size: 4.9 MiB |
@@ -45,7 +45,7 @@ Some search examples:
|
||||
</TabItem>
|
||||
<TabItem value="Mobile" label="Mobile">
|
||||
|
||||
<img src={require('./img/moblie-smart-serach.webp').default} width="30%" title='Smart search on mobile' />
|
||||
<img src={require('./img/mobile-smart-search.webp').default} width="30%" title='Smart search on mobile' />
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -56,7 +56,20 @@ Navigating to `Administration > Settings > Machine Learning Settings > Smart Sea
|
||||
|
||||
### CLIP models
|
||||
|
||||
More powerful models can be used for more accurate search results, but are slower and can require more server resources. Check the dropdowns below to see how they compare in memory usage, speed and quality by language.
|
||||
The default search model is fast, but there are many other options that can provide better search results. The tradeoff of using these models is that they're slower and/or use more memory (both when indexing images with background Smart Search jobs and when searching).
|
||||
|
||||
The first step of choosing the right model for you is to know which languages your users will search in.
|
||||
|
||||
If your users will only search in English, then the [CLIP][huggingface-clip] section is the first place to look. This is a curated list of the models that generally perform the best for their size class. The models here are ordered from higher to lower quality. This means that the top models will generally rank the most relevant results higher and have a higher capacity to understand descriptive, detailed, and/or niche queries. The models are also generally ordered from larger to smaller, so consider the impact on memory usage, job processing and search speed when deciding on one. The smaller models in this list are not too different in quality and many times faster.
|
||||
|
||||
[Multilingual models][huggingface-multilingual-clip] are also available so users can search in their native language. Use these models if you expect non-English searches to be common. They can be separated into two search patterns:
|
||||
|
||||
- `nllb` models expect the search query to be in the language specified in the user settings
|
||||
- `xlm` and `siglip2` models understand search text regardless of the current language setting
|
||||
|
||||
`nllb` models tend to perform the best and are recommended when users primarily searches in their native, non-English language. `xlm` and `siglip2` models are more flexible and are recommended for mixed language search, where the same user might search in different languages at different times.
|
||||
|
||||
For more details, check the tables below to see how they compare in memory usage, speed and quality by language.
|
||||
|
||||
Once you've chosen a model, follow these steps:
|
||||
|
||||
@@ -81,7 +94,7 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
|
||||
**Memory (MiB)**: The peak RSS usage of the process afer performing the above timing benchmark. Does not include image decoding, concurrent processing, the web server, etc., which are relatively constant factors.
|
||||
|
||||
**Recall (%)**: Evaluated on Crossmodal-3600, the average of the recall@1, recall@5 and recall@10 results for zeroshot image retrieval.
|
||||
**Recall (%)**: Evaluated on Crossmodal-3600, the average of the recall@1, recall@5 and recall@10 results for zeroshot image retrieval. Chinese (Simplified), English, French, German, Italian, Japanese, Korean, Polish, Russian, Spanish and Turkish are additionally tested on XTD-10. Chinese (Simplified) and English are additionally tested on Flickr30k. The recall metrics are the average across all tested datasets.
|
||||
|
||||
**Pareto Optimal**: Whether the model is not completely outclassed by another model. Try to use models that are optimal for the languages relevant to you. Specifically, for a given model and language, if there's another model that's better for that language in at least one respect (memory usage, execution time, recall) while being at least as good for that language in every other way, then the model is not optimal for that language.
|
||||
|
||||
@@ -93,59 +106,59 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>English</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 75.73 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 75.44 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 75.19 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 75.09 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 75.07 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 75.01 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 74.92 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 74.9 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 74.87 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 74.87 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 74.77 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 74.28 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 74.26 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 73.15 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 72.78 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 72.58 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 72.57 | ❌ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 72.47 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 72.45 | ✅ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 72.44 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 72.37 | ❌ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 71.64 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 71.63 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 71.45 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 71.33 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 71.19 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 69.86 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 69.66 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 69.38 | ❌ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 68.78 | ✅ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 68.53 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 68.53 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 68.53 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 68.51 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 68.41 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 68.41 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 68.33 | ❌ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 66.96 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 66.95 | ✅ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 65.65 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 65.49 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 60.12 | ❌ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 59.37 | ✅ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 59.36 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 59.17 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 59.09 | ❌ |
|
||||
| RN50__openai | 913 | 2.39 | 58.32 | ✅ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 58.27 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 57.88 | ❌ |
|
||||
| RN50__cc12m | 914 | 2.37 | 57.75 | ✅ |
|
||||
| RN101__openai | 1111 | 3.21 | 57.7 | ❌ |
|
||||
| RN101__yfcc15m | 1111 | 3.22 | 50.11 | ❌ |
|
||||
| RN50__yfcc15m | 908 | 2.34 | 48.28 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 85.99 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 85.96 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 85.96 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 85.93 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 85.78 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 85.75 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 85.62 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 85.53 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 85.48 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 85.47 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 85.09 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 85.03 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 84.86 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 84.61 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 84.17 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 83.51 | ❌ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 83.28 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 83.24 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 83.23 | ❌ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 83.19 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 82.54 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 82.43 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 82.36 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 82.28 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 81.9 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 81.9 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 80.82 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 80.65 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 80.16 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 79.78 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 78.64 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 78.6 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 78.06 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 78.06 | ❌ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 77.62 | ✅ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 77.47 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 76.91 | ❌ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 76.43 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 76.35 | ❌ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 73.83 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 73.62 | ❌ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 73.34 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 72.99 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 72.76 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 72.59 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 70.8 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 70.01 | ❌ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 69.9 | ✅ |
|
||||
| RN101__openai | 1111 | 3.21 | 69.3 | ❌ |
|
||||
| RN50__openai | 913 | 2.39 | 69.02 | ✅ |
|
||||
| RN50__cc12m | 914 | 2.37 | 64.59 | ✅ |
|
||||
| RN101__yfcc15m | 1111 | 3.22 | 55.21 | ❌ |
|
||||
| RN50__yfcc15m | 908 | 2.34 | 53.63 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Arabic</summary>
|
||||
@@ -156,8 +169,8 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 74.03 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 73.19 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 69.31 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 69.29 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 69.29 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 69.29 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 68.64 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 68.35 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 68.25 | ✅ |
|
||||
@@ -195,25 +208,25 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>Chinese (Simplified)</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 77.49 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 77.19 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 76.98 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 72.89 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 72.65 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 72.52 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 67.83 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 67.81 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 67.51 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 67.39 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 67.33 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 67.23 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 67.05 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 66.87 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 66.24 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 66.1 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 65.56 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 64.39 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 62.56 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 79.7 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 78.94 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 75.22 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 74.8 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 73.91 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 72.8 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 72.77 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 72.41 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 72.36 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 71.59 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 71.37 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 71.3 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 71.11 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 70.95 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 70.51 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 67.48 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 66.84 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 65.7 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 63.38 | ❌ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Croatian</summary>
|
||||
@@ -324,8 +337,8 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 80.05 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 79.81 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 79.72 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 79.72 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 79.72 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 79.64 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 79.49 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 79.41 | ❌ |
|
||||
@@ -357,8 +370,8 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 29.56 | ❌ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 29.54 | ✅ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 29.36 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 27.76 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 27.76 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 27.76 | ❌ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 25.67 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 25.59 | ❌ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 25.53 | ❌ |
|
||||
@@ -384,8 +397,8 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 34.27 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 34.14 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 33.98 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 30.57 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 30.57 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 30.57 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 30.05 | ✅ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 24.92 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 24.02 | ❌ |
|
||||
@@ -422,110 +435,111 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>French</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 88.01 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 87.74 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 87.69 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 87.6 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 87.58 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 87.51 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 87.23 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 86.9 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 86.9 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 86.44 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 86.44 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 86.28 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 86.11 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 86.08 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 84.49 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 84.3 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 83.03 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 82.93 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 82.27 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 82.14 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 80.96 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 80.64 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 80.28 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 79.65 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 77.4 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 76.88 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 76.3 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 75.68 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 69.59 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 68.36 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 61.78 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 58.4 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 58.35 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 57.17 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 57.17 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 57.05 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 56.08 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 52.96 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 52.83 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 51.88 | ❌ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 51.82 | ✅ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 42.86 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 42.81 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 42.54 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 41.72 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 38.85 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 36.79 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 36.47 | ❌ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 35.17 | ✅ |
|
||||
| RN50__openai | 913 | 2.39 | 34.44 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 86.5 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 86.5 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 86.39 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 86.15 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 86.1 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 86.07 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 86.06 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 85.89 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 85.67 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 85.67 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 85.63 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 85.39 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 85.35 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 84.97 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 83.8 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 82.96 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 82.91 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 82.52 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 81.21 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 80.23 | ✅ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 79.85 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 79.47 | ✅ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 79.3 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 77.49 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 76.82 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 75.94 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 75.3 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 75.24 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 69.33 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 64.41 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 62.86 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 59.27 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 59.09 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 58.25 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 58.25 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 56.97 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 56.21 | ✅ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 53.36 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 53.33 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 53.26 | ❌ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 53.22 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 46.34 | ❌ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 46.3 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 45.95 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 45.69 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 42.48 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 40.16 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 40.1 | ❌ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 38.27 | ✅ |
|
||||
| RN50__openai | 913 | 2.39 | 37.8 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>German</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 90.04 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 89.97 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 89.85 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 89.81 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 89.77 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 89.69 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 89.45 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 89.44 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 89.39 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 89.35 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 89.03 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 88.82 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 88.55 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 88.42 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 87.19 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 86.44 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 84.81 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 84.81 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 84.58 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 84.44 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 83.33 | ✅ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 82.75 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 82.32 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 81.63 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 76.76 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 76.33 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 75.19 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 75.07 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 64.61 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 52.81 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 42.88 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 38.65 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 38.37 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 37.65 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 36.6 | ✅ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 35.44 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 35.44 | ❌ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 32.46 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 32.31 | ✅ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 31.85 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 31.81 | ❌ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 28.41 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 27.63 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 27.09 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 24.48 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 23.49 | ❌ |
|
||||
| RN50__openai | 913 | 2.39 | 20.91 | ✅ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 20.83 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 20.39 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 87.32 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 87.29 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 87.29 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 87.21 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 87.18 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 87.14 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 87.07 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 86.83 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 86.81 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 86.75 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 86.74 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 86.68 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 86.56 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 86.16 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 84.54 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 84.41 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 84.25 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 83.8 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 82.59 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 81.53 | ✅ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 81.34 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 81.15 | ✅ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 81.05 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 78.35 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 76.56 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 76.0 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 75.21 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 75.14 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 65.86 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 56.87 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 47.19 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 43.36 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 43.0 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 41.81 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 40.43 | ✅ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 40.41 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 40.41 | ❌ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 37.71 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 37.64 | ✅ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 36.04 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 35.9 | ❌ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 34.19 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 33.1 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 32.25 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 30.56 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 29.2 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 25.77 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 25.46 | ❌ |
|
||||
| RN50__openai | 913 | 2.39 | 24.92 | ✅ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 24.13 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Greek</summary>
|
||||
@@ -542,10 +556,10 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 60.63 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 60.41 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 60.1 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 60.06 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 60.06 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 59.44 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 60.06 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 59.44 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 59.44 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 59.43 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 58.78 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 53.42 | ❌ |
|
||||
@@ -670,99 +684,104 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>Italian</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 88.6 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 88.25 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 88.12 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 88.04 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 87.97 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 87.69 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 87.29 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 87.06 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 86.91 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 86.88 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 86.68 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 86.61 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 85.55 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 85.37 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 83.78 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 83.0 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 81.81 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 81.77 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 81.32 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 80.97 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 80.53 | ✅ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 80.1 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 79.71 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 77.31 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 75.19 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 74.49 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 74.04 | ❌ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 73.68 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 73.57 | ✅ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 51.04 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 41.73 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 36.87 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 36.84 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 34.68 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 34.68 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 34.64 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 33.8 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 30.11 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 30.04 | ❌ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 29.89 | ❌ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 29.88 | ✅ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 26.67 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 25.51 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 25.3 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 21.37 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 87.17 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 86.91 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 86.83 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 86.77 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 86.67 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 86.42 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 86.35 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 86.34 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 86.18 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 86.17 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 85.84 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 85.8 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 85.7 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 85.67 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 83.32 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 82.95 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 82.73 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 82.72 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 81.07 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 80.8 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 80.6 | ✅ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 80.35 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 78.79 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 76.62 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 76.51 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 76.08 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 75.29 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 75.29 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 74.84 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 56.32 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 47.25 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 43.09 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 42.99 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 40.29 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 40.29 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 39.67 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 39.03 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 36.14 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 35.89 | ❌ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 35.59 | ❌ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 35.56 | ✅ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 33.53 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 32.19 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 30.95 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 28.85 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 25.75 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 25.18 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 24.48 | ❌ |
|
||||
| RN50__openai | 913 | 2.39 | 23.89 | ✅ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 23.39 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Japanese</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 86.97 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 85.15 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 84.69 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 81.77 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 81.26 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 81.19 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 69.99 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 68.58 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 68.35 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 68.29 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 67.99 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 67.68 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 67.67 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 66.85 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 66.54 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 65.77 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 61.48 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 58.1 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 55.31 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 83.95 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 82.21 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 81.55 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 78.72 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 78.53 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 75.93 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 66.86 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 65.59 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 65.48 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 65.36 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 64.47 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 64.17 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 64.08 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 63.69 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 63.33 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 63.02 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 58.39 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 56.38 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 53.16 | ❌ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Korean</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 77.21 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 76.89 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 75.72 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 75.06 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 74.94 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 74.36 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 74.09 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 73.61 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 73.55 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 73.41 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 73.18 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 72.79 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 72.27 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 71.73 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 71.12 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 70.25 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 67.54 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 67.37 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 65.44 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 80.56 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 80.53 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 77.09 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 77.08 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 76.97 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 76.92 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 76.58 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 76.2 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 75.95 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 75.86 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 75.67 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 75.49 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 74.6 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 74.52 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 73.88 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 71.09 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 68.87 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 67.94 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 66.39 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Maori</summary>
|
||||
@@ -834,34 +853,34 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>Polish</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 80.6 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 80.17 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 80.06 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 80.04 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 79.98 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 79.8 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 79.72 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 79.66 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 79.45 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 79.26 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 79.21 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 79.14 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 78.23 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 75.33 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 74.7 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 74.63 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 73.69 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 73.44 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 70.34 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 59.4 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 59.14 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 48.74 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 48.35 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 40.76 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 39.13 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 39.09 | ❌ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 38.55 | ❌ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 38.46 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 83.49 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 83.45 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 83.11 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 82.99 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 82.96 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 82.93 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 82.61 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 82.26 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 82.24 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 82.03 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 82.03 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 81.92 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 81.27 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 80.0 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 79.65 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 76.75 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 76.52 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 75.1 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 73.9 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 65.03 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 64.89 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 51.6 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 51.29 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 46.15 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 41.55 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 41.17 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 40.9 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 40.76 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Portuguese</summary>
|
||||
@@ -955,84 +974,87 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>Russian</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 87.65 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 87.62 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 87.4 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 87.39 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 86.88 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 86.87 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 86.74 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 86.26 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 85.98 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 85.66 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 85.54 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 84.69 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 84.29 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 84.24 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 82.86 | ✅ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 81.59 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 80.56 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 80.44 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 79.99 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 39.51 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 39.16 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 23.33 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 22.4 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 84.54 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 84.41 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 84.36 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 84.31 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 84.22 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 83.9 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 83.69 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 83.5 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 83.31 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 83.21 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 83.11 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 82.7 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 82.69 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 80.91 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 79.75 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 79.35 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 78.91 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 78.06 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 76.44 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 42.81 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 42.1 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 24.95 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 24.25 | ❌ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 20.85 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 20.44 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 20.41 | ❌ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Spanish</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 84.24 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 83.94 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 83.91 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 83.78 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 83.71 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 83.59 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 83.2 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 83.0 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 82.91 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 82.58 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 82.5 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 82.48 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 82.22 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 81.34 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 80.18 | ❌ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 80.14 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 78.99 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 78.19 | ✅ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 78.15 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 77.93 | ✅ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 77.64 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 77.21 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 76.36 | ❌ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 75.73 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 75.56 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 75.01 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 74.62 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 74.6 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 70.31 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 58.31 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 49.56 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 46.69 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 46.53 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 44.05 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 44.05 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 43.67 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 42.5 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 41.03 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 40.91 | ❌ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 40.3 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 40.3 | ❌ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 37.92 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 37.7 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 37.59 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 34.75 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 32.1 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 32.08 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 30.77 | ❌ |
|
||||
| RN50__openai | 913 | 2.39 | 30.2 | ✅ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 29.84 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 85.47 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 85.44 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 85.32 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 85.22 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 85.15 | ❌ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 84.81 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 84.68 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 84.6 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 84.55 | ✅ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 84.27 | ❌ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 84.15 | ✅ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 83.87 | ❌ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 83.74 | ❌ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 83.61 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 83.15 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 81.7 | ❌ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 80.91 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 80.73 | ✅ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 80.69 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 80.3 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 79.8 | ❌ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 79.71 | ✅ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 79.64 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 78.0 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 77.83 | ❌ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 76.87 | ✅ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 76.66 | ❌ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 75.99 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP-384__webli | 4417 | 72.19 | 71.96 | ❌ |
|
||||
| ViT-H-14__laion2b-s32b-b79k | 4676 | 39.06 | 62.06 | ❌ |
|
||||
| ViT-L-14__laion2b-s32b-b82k | 2233 | 20.56 | 53.78 | ❌ |
|
||||
| ViT-L-14__laion400m_e32 | 2218 | 19.73 | 50.13 | ❌ |
|
||||
| ViT-L-14__laion400m_e31 | 2183 | 19.87 | 50.0 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e32 | 1246 | 6.95 | 47.39 | ❌ |
|
||||
| ViT-B-16-plus-240__laion400m_e31 | 1263 | 6.94 | 47.39 | ❌ |
|
||||
| ViT-B-32__laion2b_e16 | 1004 | 2.38 | 46.47 | ✅ |
|
||||
| ViT-B-32__laion2b-s34b-b79k | 1001 | 2.29 | 45.68 | ✅ |
|
||||
| ViT-B-16__laion400m_e31 | 991 | 5.04 | 44.0 | ✅ |
|
||||
| ViT-B-16__laion400m_e32 | 975 | 4.98 | 43.98 | ✅ |
|
||||
| ViT-B-32__laion400m_e32 | 1003 | 2.35 | 43.8 | ❌ |
|
||||
| ViT-B-32__laion400m_e31 | 999 | 2.28 | 43.73 | ✅ |
|
||||
| RN50x64__openai | 5079 | 48.79 | 43.01 | ❌ |
|
||||
| ViT-L-14__openai | 2212 | 19.91 | 42.96 | ❌ |
|
||||
| ViT-L-14-336__openai | 2616 | 43.45 | 41.67 | ❌ |
|
||||
| RN50x16__openai | 2221 | 15.87 | 40.21 | ❌ |
|
||||
| RN50x4__openai | 1416 | 5.85 | 36.06 | ❌ |
|
||||
| ViT-B-16__openai | 985 | 5.03 | 35.67 | ❌ |
|
||||
| RN101__openai | 1111 | 3.21 | 34.62 | ❌ |
|
||||
| ViT-B-32__openai | 1004 | 2.26 | 32.6 | ✅ |
|
||||
| RN50__openai | 913 | 2.39 | 31.79 | ✅ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Swahili</summary>
|
||||
@@ -1057,8 +1079,8 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 72.1 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 72.06 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 71.84 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 71.7 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 71.7 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 71.7 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 71.61 | ❌ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 71.51 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 71.45 | ✅ |
|
||||
@@ -1115,31 +1137,34 @@ Memory and execution time estimates were obtained without acceleration on a 7800
|
||||
<summary>Turkish</summary>
|
||||
| Model | Memory (MiB) | Execution Time (ms) | Recall (%) | Pareto Optimal |
|
||||
|------------------------------------------------------|--------------|---------------------|------------|----------------|
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 81.15 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 80.89 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 78.11 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 77.51 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 77.36 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 77.28 | ❌ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 77.24 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 77.01 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 76.37 | ❌ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 75.92 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 75.69 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 75.68 | ❌ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 75.54 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 75.16 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 73.83 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 70.15 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 69.19 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 66.72 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 64.76 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 38.8 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 38.48 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 30.83 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 30.28 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 21.31 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 20.08 | ✅ |
|
||||
| nllb-clip-large-siglip__mrl | 4248 | 75.44 | 83.91 | ✅ |
|
||||
| nllb-clip-large-siglip__v1 | 4226 | 75.05 | 83.74 | ✅ |
|
||||
| nllb-clip-base-siglip__mrl | 4696 | 16.95 | 81.26 | ✅ |
|
||||
| nllb-clip-base-siglip__v1 | 4675 | 15.17 | 80.21 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-512__webli | 4050 | 107.67 | 79.34 | ✅ |
|
||||
| ViT-SO400M-14-SigLIP2-378__webli | 3940 | 72.25 | 79.22 | ✅ |
|
||||
| XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b90k | 4014 | 39.14 | 78.9 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-384__webli | 3854 | 56.57 | 78.85 | ✅ |
|
||||
| ViT-SO400M-16-SigLIP2-256__webli | 3611 | 27.84 | 78.29 | ✅ |
|
||||
| ViT-gopt-16-SigLIP2-384__webli | 6585 | 146.84 | 78.27 | ❌ |
|
||||
| ViT-gopt-16-SigLIP2-256__webli | 6475 | 64.51 | 78.0 | ❌ |
|
||||
| ViT-SO400M-14-SigLIP2__webli | 3622 | 27.63 | 77.81 | ✅ |
|
||||
| ViT-L-16-SigLIP2-512__webli | 3358 | 92.59 | 77.67 | ✅ |
|
||||
| ViT-L-16-SigLIP2-384__webli | 3057 | 51.7 | 77.33 | ✅ |
|
||||
| ViT-L-16-SigLIP2-256__webli | 2830 | 23.77 | 76.42 | ✅ |
|
||||
| ViT-B-16-SigLIP-i18n-256__webli | 3029 | 6.87 | 72.44 | ✅ |
|
||||
| XLM-Roberta-Base-ViT-B-32__laion5b_s13b_b90k | 3030 | 3.2 | 69.84 | ✅ |
|
||||
| ViT-B-16-SigLIP2__webli | 3038 | 5.81 | 69.83 | ❌ |
|
||||
| ViT-B-32-SigLIP2-256__webli | 3061 | 3.31 | 67.13 | ❌ |
|
||||
| ViT-H-14-378-quickgelu__dfn5b | 5049 | 108.4 | 44.43 | ❌ |
|
||||
| ViT-H-14-quickgelu__dfn5b | 4701 | 38.74 | 43.87 | ❌ |
|
||||
| ViT-L-16-SigLIP-384__webli | 3396 | 47.6 | 35.1 | ❌ |
|
||||
| ViT-L-16-SigLIP-256__webli | 3160 | 23.84 | 34.92 | ❌ |
|
||||
| ViT-L-14-quickgelu__dfn2b | 2212 | 20.49 | 25.2 | ✅ |
|
||||
| ViT-B-16-SigLIP-512__webli | 1828 | 26.17 | 24.55 | ✅ |
|
||||
| ViT-B-16-SigLIP__webli | 1081 | 5.77 | 24.13 | ✅ |
|
||||
| ViT-B-16-SigLIP-384__webli | 1128 | 13.53 | 24.08 | ❌ |
|
||||
| ViT-B-16-SigLIP-256__webli | 1102 | 7.11 | 23.95 | ❌ |
|
||||
</details>
|
||||
<details>
|
||||
<summary>Ukrainian</summary>
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
sidebar_position: 100
|
||||
---
|
||||
|
||||
# Config File
|
||||
|
||||
A config file can be provided as an alternative to the UI configuration.
|
||||
|
||||
@@ -69,39 +69,7 @@ If you get an error `can't set healthcheck.start_interval as feature require Doc
|
||||
|
||||
## Next Steps
|
||||
|
||||
Read the [Post Installation](/docs/install/post-install.mdx) steps or setup optional features below.
|
||||
|
||||
### Setting up optional features
|
||||
|
||||
- [External Libraries](/docs/features/libraries.md): Adding your existing photo library to Immich
|
||||
- [Hardware Transcoding](/docs/features/hardware-transcoding.md): Speeding up video transcoding
|
||||
- [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md): Speeding up various machine learning tasks in Immich
|
||||
|
||||
### Upgrading
|
||||
|
||||
:::danger Read the release notes
|
||||
Immich is currently under heavy development, which means you can expect [breaking changes][breaking] and bugs. Therefore, we recommend reading the release notes prior to updating and to take special care when using automated tools like [Watchtower][watchtower].
|
||||
|
||||
You can see versions that had breaking changes [here][breaking].
|
||||
:::
|
||||
|
||||
If `IMMICH_VERSION` is set, it will need to be updated to the latest or desired version.
|
||||
|
||||
When a new version of Immich is [released][releases], the application can be upgraded and restarted with the following commands, run in the directory with the `docker-compose.yml` file:
|
||||
|
||||
```bash title="Upgrade and restart Immich"
|
||||
docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
To clean up disk space, the old version's obsolete container images can be deleted with the following command:
|
||||
|
||||
```bash title="Clean up unused Docker images"
|
||||
docker image prune
|
||||
```
|
||||
Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md).
|
||||
|
||||
[compose-file]: https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
[env-file]: https://github.com/immich-app/immich/releases/latest/download/example.env
|
||||
[watchtower]: https://containrrr.dev/watchtower/
|
||||
[breaking]: https://github.com/immich-app/immich/discussions?discussions_q=label%3Achangelog%3Abreaking-change+sort%3Adate_created
|
||||
[container-auth]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry
|
||||
[releases]: https://github.com/immich-app/immich/releases
|
||||
|
||||
@@ -41,3 +41,9 @@ A list of common steps to take after installing Immich include:
|
||||
## Step 7 - Setup Server Backups
|
||||
|
||||
<ServerBackup />
|
||||
|
||||
## Setting up optional features
|
||||
|
||||
- [External Libraries](/docs/features/libraries.md): Adding your existing photo library to Immich
|
||||
- [Hardware Transcoding](/docs/features/hardware-transcoding.md): Speeding up video transcoding
|
||||
- [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md): Speeding up various machine learning tasks in Immich
|
||||
|
||||
@@ -67,10 +67,4 @@ Click "**Edit Rules**" and add the following firewall rules:
|
||||
|
||||
## Next Steps
|
||||
|
||||
Read the [Post Installation](/docs/install/post-install.mdx) steps or setup optional features below.
|
||||
|
||||
### Setting up optional features
|
||||
|
||||
- [External Libraries](/docs/features/libraries.md): Adding your existing photo library to Immich
|
||||
- [Hardware Transcoding](/docs/features/hardware-transcoding.md): Speeding up video transcoding
|
||||
- [Hardware-Accelerated Machine Learning](/docs/features/ml-hardware-acceleration.md): Speeding up various machine learning tasks in Immich
|
||||
Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md).
|
||||
|
||||
@@ -247,6 +247,10 @@ Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`
|
||||
|
||||
## Updating the App
|
||||
|
||||
:::danger
|
||||
Make sure to read the general [upgrade instructions](/docs/install/upgrading.md).
|
||||
:::
|
||||
|
||||
When updates become available, SCALE alerts and provides easy updates.
|
||||
To update the app to the latest version:
|
||||
|
||||
|
||||
@@ -131,6 +131,10 @@ For more information on how to use the application once installed, please refer
|
||||
|
||||
## Updating Steps
|
||||
|
||||
:::danger
|
||||
Make sure to read the general [upgrade instructions](/docs/install/upgrading.md).
|
||||
:::
|
||||
|
||||
Updating is extremely easy however it's important to be aware that containers managed via the Docker Compose Manager plugin do not integrate with Unraid's native dockerman UI, the label "_update ready_" will always be present on containers installed via the Docker Compose Manager.
|
||||
|
||||
<img
|
||||
|
||||
29
docs/docs/install/upgrading.md
Normal file
29
docs/docs/install/upgrading.md
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
sidebar_position: 95
|
||||
---
|
||||
|
||||
# Upgrading
|
||||
|
||||
:::danger Read the release notes
|
||||
Immich is currently under heavy development, which means you can expect [breaking changes][breaking] and bugs. You should read the release notes prior to updating and take special care when using automated tools like [Watchtower][watchtower].
|
||||
|
||||
You can see versions that had breaking changes [here][breaking].
|
||||
:::
|
||||
|
||||
When a new version of Immich is [released][releases], you should read the release notes and account for any breaking changes noted (as mentioned above).
|
||||
If you use `IMMICH_VERSION` in your `.env` file, it will need to be updated to the latest or desired version.
|
||||
After that, the application can be upgraded and restarted with the following commands, run in the directory with the `docker-compose.yml` file:
|
||||
|
||||
```bash title="Upgrade and restart Immich"
|
||||
docker compose pull && docker compose up -d
|
||||
```
|
||||
|
||||
To clean up disk space, the old version's obsolete container images can be deleted with the following command:
|
||||
|
||||
```bash title="Clean up unused Docker images"
|
||||
docker image prune
|
||||
```
|
||||
|
||||
[watchtower]: https://containrrr.dev/watchtower/
|
||||
[breaking]: https://github.com/immich-app/immich/discussions?discussions_q=label%3Achangelog%3Abreaking-change+sort%3Adate_created
|
||||
[releases]: https://github.com/immich-app/immich/releases
|
||||
@@ -1,2 +1,7 @@
|
||||
Now that you have imported some pictures, you should setup server backups to preserve your memories.
|
||||
You can do so by following our [backup guide](/docs/administration/backup-and-restore.md).
|
||||
|
||||
:::danger
|
||||
Immich is still under heavy development _and_ handles very important data.
|
||||
It is essential that you set up good backups, and test them.
|
||||
:::
|
||||
|
||||
20
docs/static/archived-versions.json
vendored
20
docs/static/archived-versions.json
vendored
@@ -1,4 +1,24 @@
|
||||
[
|
||||
{
|
||||
"label": "v1.131.3",
|
||||
"url": "https://v1.131.3.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.131.2",
|
||||
"url": "https://v1.131.2.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.131.1",
|
||||
"url": "https://v1.131.1.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.131.0",
|
||||
"url": "https://v1.131.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.130.3",
|
||||
"url": "https://v1.130.3.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.130.2",
|
||||
"url": "https://v1.130.2.archive.immich.app"
|
||||
|
||||
@@ -1,39 +1,29 @@
|
||||
import { FlatCompat } from '@eslint/eslintrc';
|
||||
import js from '@eslint/js';
|
||||
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
||||
import tsParser from '@typescript-eslint/parser';
|
||||
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
|
||||
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
|
||||
import globals from 'globals';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import typescriptEslint from 'typescript-eslint';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
recommendedConfig: js.configs.recommended,
|
||||
allConfig: js.configs.all,
|
||||
});
|
||||
|
||||
export default [
|
||||
export default typescriptEslint.config([
|
||||
eslintPluginUnicorn.configs.recommended,
|
||||
eslintPluginPrettierRecommended,
|
||||
js.configs.recommended,
|
||||
typescriptEslint.configs.recommended,
|
||||
{
|
||||
ignores: ['eslint.config.mjs'],
|
||||
},
|
||||
...compat.extends(
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:prettier/recommended',
|
||||
'plugin:unicorn/recommended',
|
||||
),
|
||||
{
|
||||
plugins: {
|
||||
'@typescript-eslint': typescriptEslint,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
},
|
||||
|
||||
parser: tsParser,
|
||||
parser: typescriptEslint.parser,
|
||||
ecmaVersion: 5,
|
||||
sourceType: 'module',
|
||||
|
||||
@@ -62,4 +52,4 @@ export default [
|
||||
'object-shorthand': ['error', 'always'],
|
||||
},
|
||||
},
|
||||
];
|
||||
]);
|
||||
|
||||
1488
e2e/package-lock.json
generated
1488
e2e/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "1.130.2",
|
||||
"version": "1.131.3",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
@@ -25,19 +25,17 @@
|
||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||
"@playwright/test": "^1.44.1",
|
||||
"@types/luxon": "^3.4.2",
|
||||
"@types/node": "^22.13.10",
|
||||
"@types/node": "^22.14.0",
|
||||
"@types/oidc-provider": "^8.5.1",
|
||||
"@types/pg": "^8.11.0",
|
||||
"@types/pngjs": "^6.0.4",
|
||||
"@types/supertest": "^6.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
||||
"@typescript-eslint/parser": "^8.15.0",
|
||||
"@vitest/coverage-v8": "^3.0.0",
|
||||
"eslint": "^9.14.0",
|
||||
"eslint-config-prettier": "^10.0.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^56.0.1",
|
||||
"exiftool-vendored": "^28.3.1",
|
||||
"eslint-plugin-unicorn": "^57.0.0",
|
||||
"exiftool-vendored": "^29.3.0",
|
||||
"globals": "^16.0.0",
|
||||
"jose": "^5.6.3",
|
||||
"luxon": "^3.4.4",
|
||||
@@ -49,6 +47,7 @@
|
||||
"socket.io-client": "^4.7.4",
|
||||
"supertest": "^7.0.0",
|
||||
"typescript": "^5.3.3",
|
||||
"typescript-eslint": "^8.28.0",
|
||||
"utimes": "^5.2.1",
|
||||
"vitest": "^3.0.0"
|
||||
},
|
||||
|
||||
@@ -1257,6 +1257,7 @@ describe('/asset', () => {
|
||||
|
||||
for (const { id, status } of assets) {
|
||||
expect(status).toBe(AssetMediaStatus.Created);
|
||||
// longer timeout as the thumbnail generation from full-size raw files can take a while
|
||||
await utils.waitForWebsocketEvent({ event: 'assetUpload', id });
|
||||
}
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@ describe('/libraries', () => {
|
||||
const library = await utils.createLibrary(admin.accessToken, {
|
||||
ownerId: admin.userId,
|
||||
importPaths: [`${testAssetDirInternal}/temp`],
|
||||
exclusionPatterns: ['**/directoryA'],
|
||||
exclusionPatterns: ['**/directoryA/**'],
|
||||
});
|
||||
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
@@ -337,7 +337,82 @@ describe('/libraries', () => {
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
expect(assets.count).toBe(1);
|
||||
expect(assets.items[0].originalPath.includes('directoryB'));
|
||||
|
||||
expect(assets.items).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ originalPath: expect.stringContaining('directoryB/assetB.png') }),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
it('should scan external library with multiple exclusion patterns', async () => {
|
||||
const library = await utils.createLibrary(admin.accessToken, {
|
||||
ownerId: admin.userId,
|
||||
importPaths: [`${testAssetDirInternal}/temp`],
|
||||
exclusionPatterns: ['**/directoryA/**', '**/directoryB/**'],
|
||||
});
|
||||
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
expect(assets.count).toBe(0);
|
||||
|
||||
expect(assets.items).toEqual([]);
|
||||
});
|
||||
|
||||
it('should remove assets covered by a new exclusion pattern', async () => {
|
||||
const library = await utils.createLibrary(admin.accessToken, {
|
||||
ownerId: admin.userId,
|
||||
importPaths: [`${testAssetDirInternal}/temp`],
|
||||
});
|
||||
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
{
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
expect(assets.count).toBe(2);
|
||||
|
||||
expect(assets.items).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ originalPath: expect.stringContaining('directoryA/assetA.png') }),
|
||||
expect.objectContaining({ originalPath: expect.stringContaining('directoryB/assetB.png') }),
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
await utils.updateLibrary(admin.accessToken, library.id, {
|
||||
exclusionPatterns: ['**/directoryA/**'],
|
||||
});
|
||||
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
{
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
expect(assets.count).toBe(1);
|
||||
|
||||
expect(assets.items).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({ originalPath: expect.stringContaining('directoryB/assetB.png') }),
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
await utils.updateLibrary(admin.accessToken, library.id, {
|
||||
exclusionPatterns: ['**/directoryA/**', '**/directoryB/**'],
|
||||
});
|
||||
|
||||
await utils.scan(admin.accessToken, library.id);
|
||||
|
||||
{
|
||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||
|
||||
expect(assets.count).toBe(0);
|
||||
|
||||
expect(assets.items).toEqual([]);
|
||||
}
|
||||
});
|
||||
|
||||
it('should scan multiple import paths', async () => {
|
||||
|
||||
@@ -117,7 +117,7 @@ describe('/shared-links', () => {
|
||||
const resp = await request(shareUrl).get(`/${linkWithAssets.key}`);
|
||||
expect(resp.status).toBe(200);
|
||||
expect(resp.header['content-type']).toContain('text/html');
|
||||
expect(resp.text).toContain(`<meta property="og:image" content="http://`);
|
||||
expect(resp.text).toContain(`<meta property="og:image" content="https://my.immich.app`);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -246,15 +246,7 @@ describe('/shared-links', () => {
|
||||
const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithMetadata.key });
|
||||
|
||||
expect(status).toBe(200);
|
||||
expect(body.assets).toHaveLength(1);
|
||||
expect(body.assets[0]).toEqual(
|
||||
expect.objectContaining({
|
||||
originalFileName: 'example.png',
|
||||
localDateTime: expect.any(String),
|
||||
fileCreatedAt: expect.any(String),
|
||||
exifInfo: expect.any(Object),
|
||||
}),
|
||||
);
|
||||
expect(body.assets).toHaveLength(0);
|
||||
expect(body.album).toBeDefined();
|
||||
});
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ const tests: Test[] = [
|
||||
},
|
||||
{
|
||||
test: 'should support paths with an asterisk',
|
||||
paths: [`/photos\*/image1.jpg`],
|
||||
paths: [`/photos*/image1.jpg`],
|
||||
files: {
|
||||
'/photos*/image1.jpg': true,
|
||||
'/photos*/image2.jpg': false,
|
||||
@@ -40,7 +40,7 @@ const tests: Test[] = [
|
||||
},
|
||||
{
|
||||
test: 'should support paths with a single quote',
|
||||
paths: [`/photos\'/image1.jpg`],
|
||||
paths: [`/photos'/image1.jpg`],
|
||||
files: {
|
||||
"/photos'/image1.jpg": true,
|
||||
"/photos'/image2.jpg": false,
|
||||
@@ -49,7 +49,7 @@ const tests: Test[] = [
|
||||
},
|
||||
{
|
||||
test: 'should support paths with a double quote',
|
||||
paths: [`/photos\"/image1.jpg`],
|
||||
paths: [`/photos"/image1.jpg`],
|
||||
files: {
|
||||
'/photos"/image1.jpg': true,
|
||||
'/photos"/image2.jpg': false,
|
||||
@@ -67,7 +67,7 @@ const tests: Test[] = [
|
||||
},
|
||||
{
|
||||
test: 'should support paths with an opening brace',
|
||||
paths: [`/photos\{/image1.jpg`],
|
||||
paths: [`/photos{/image1.jpg`],
|
||||
files: {
|
||||
'/photos{/image1.jpg': true,
|
||||
'/photos{/image2.jpg': false,
|
||||
@@ -76,7 +76,7 @@ const tests: Test[] = [
|
||||
},
|
||||
{
|
||||
test: 'should support paths with a closing brace',
|
||||
paths: [`/photos\}/image1.jpg`],
|
||||
paths: [`/photos}/image1.jpg`],
|
||||
files: {
|
||||
'/photos}/image1.jpg': true,
|
||||
'/photos}/image2.jpg': false,
|
||||
|
||||
@@ -537,6 +537,7 @@ export const utils = {
|
||||
},
|
||||
|
||||
waitForQueueFinish: (accessToken: string, queue: keyof AllJobStatusResponseDto, ms?: number) => {
|
||||
// eslint-disable-next-line no-async-promise-executor
|
||||
return new Promise<void>(async (resolve, reject) => {
|
||||
const timeout = setTimeout(() => reject(new Error('Timed out waiting for queue to empty')), ms || 10_000);
|
||||
|
||||
|
||||
@@ -8,12 +8,14 @@ function imageLocator(page: Page) {
|
||||
test.describe('Photo Viewer', () => {
|
||||
let admin: LoginResponseDto;
|
||||
let asset: AssetMediaResponseDto;
|
||||
let rawAsset: AssetMediaResponseDto;
|
||||
|
||||
test.beforeAll(async () => {
|
||||
utils.initSdk();
|
||||
await utils.resetDatabase();
|
||||
admin = await utils.adminSetup();
|
||||
asset = await utils.createAsset(admin.accessToken);
|
||||
rawAsset = await utils.createAsset(admin.accessToken, { assetData: { filename: 'test.arw' } });
|
||||
});
|
||||
|
||||
test.beforeEach(async ({ context, page }) => {
|
||||
@@ -36,7 +38,7 @@ test.describe('Photo Viewer', () => {
|
||||
await expect(page.getByTestId('loading-spinner')).toBeVisible();
|
||||
});
|
||||
|
||||
test('loads high resolution photo when zoomed', async ({ page }) => {
|
||||
test('loads original photo when zoomed', async ({ page }) => {
|
||||
await page.goto(`/photos/${asset.id}`);
|
||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||
const box = await imageLocator(page).boundingBox();
|
||||
@@ -47,6 +49,17 @@ test.describe('Photo Viewer', () => {
|
||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('original');
|
||||
});
|
||||
|
||||
test('loads fullsize image when zoomed and original is web-incompatible', async ({ page }) => {
|
||||
await page.goto(`/photos/${rawAsset.id}`);
|
||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||
const box = await imageLocator(page).boundingBox();
|
||||
expect(box).toBeTruthy();
|
||||
const { x, y, width, height } = box!;
|
||||
await page.mouse.move(x + width / 2, y + height / 2);
|
||||
await page.mouse.wheel(0, -1);
|
||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('fullsize');
|
||||
});
|
||||
|
||||
test('reloads photo when checksum changes', async ({ page }) => {
|
||||
await page.goto(`/photos/${asset.id}`);
|
||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||
|
||||
@@ -987,6 +987,7 @@
|
||||
"permanently_deleted_asset": "تم حذف الأصل بشكل نهائي",
|
||||
"permanently_deleted_assets_count": "تم حذف {count, plural, one {# محتوى} other {# المحتويات}} نهائيًا",
|
||||
"person": "شخص",
|
||||
"person_birthdate": "تاريخ الميلاد {التاريخ}",
|
||||
"person_hidden": "{name}{hidden, select, true { (مخفي)} other {}}",
|
||||
"photo_shared_all_users": "يبدو أنك شاركت صورك مع جميع المستخدمين أو ليس لديك أي مستخدم للمشاركة معه.",
|
||||
"photos": "الصور",
|
||||
@@ -1078,6 +1079,8 @@
|
||||
"remove_from_album": "إزالة من الألبوم",
|
||||
"remove_from_favorites": "إزالة من المفضلة",
|
||||
"remove_from_shared_link": "إزالة من الرابط المشترك",
|
||||
"remove_memory": "إزالة الذاكرة",
|
||||
"remove_photo_from_memory": "إزالة الصورة من هذه الذكرى",
|
||||
"remove_url": "إزالة عنوان URL",
|
||||
"remove_user": "إزالة المستخدم",
|
||||
"removed_api_key": "تم إزالة مفتاح API: {name}",
|
||||
@@ -1148,6 +1151,7 @@
|
||||
"searching_locales": "جارٍ البحث في اللغات...",
|
||||
"second": "ثانية",
|
||||
"see_all_people": "عرض جميع الأشخاص",
|
||||
"select": "إختر",
|
||||
"select_album_cover": "تحديد غلاف الألبوم",
|
||||
"select_all": "تحديد الكل",
|
||||
"select_all_duplicates": "تحديد جميع النسخ المكررة",
|
||||
|
||||
@@ -1374,4 +1374,4 @@
|
||||
"yes": "Да",
|
||||
"you_dont_have_any_shared_links": "Нямате споделени връзки",
|
||||
"zoom_image": "Увеличаване на изображението"
|
||||
}
|
||||
}
|
||||
|
||||
30
i18n/bi.json
30
i18n/bi.json
@@ -1,20 +1,22 @@
|
||||
{
|
||||
"account": "",
|
||||
"account_settings": "",
|
||||
"acknowledge": "",
|
||||
"about": "abaot",
|
||||
"account": "Akaont",
|
||||
"account_settings": "Seting blo Akaont",
|
||||
"acknowledge": "Akcept",
|
||||
"action": "",
|
||||
"actions": "",
|
||||
"active": "",
|
||||
"activity": "",
|
||||
"add": "",
|
||||
"add_a_description": "",
|
||||
"add_a_location": "",
|
||||
"add_a_name": "",
|
||||
"add_a_title": "",
|
||||
"add_exclusion_pattern": "",
|
||||
"add_import_path": "",
|
||||
"add_location": "",
|
||||
"add_more_users": "",
|
||||
"active": "Stap Mekem",
|
||||
"activity": "Wanem hemi Mekem",
|
||||
"activity_changed": "WAnem hemi Mekem hemi",
|
||||
"add": "Ad",
|
||||
"add_a_description": "Putem Description blo hem",
|
||||
"add_a_location": "Putem place blo hem",
|
||||
"add_a_name": "Putem nam blo hem",
|
||||
"add_a_title": "Putem wan name blo hem",
|
||||
"add_exclusion_pattern": "Putem wan paten wae hemi karem aot",
|
||||
"add_import_path": "Putem wan pat blo import",
|
||||
"add_location": "Putem wan place blo hem",
|
||||
"add_more_users": "Putem mor man",
|
||||
"add_partner": "",
|
||||
"add_path": "",
|
||||
"add_photos": "",
|
||||
|
||||
@@ -1374,4 +1374,4 @@
|
||||
"yes": "Sí",
|
||||
"you_dont_have_any_shared_links": "No tens cap enllaç compartit",
|
||||
"zoom_image": "Ampliar Imatge"
|
||||
}
|
||||
}
|
||||
|
||||
10
i18n/cs.json
10
i18n/cs.json
@@ -66,8 +66,13 @@
|
||||
"forcing_refresh_library_files": "Vynucení obnovy všech souborů knihovny",
|
||||
"image_format": "Formát",
|
||||
"image_format_description": "WebP vytváří menší soubory než JPEG, ale je pomalejší při kódování.",
|
||||
"image_fullsize_description": "Obrázek v plné velikosti s odstraněnými metadaty, použito při přiblížení",
|
||||
"image_fullsize_enabled": "Povolit generování obrázků v plné velikosti",
|
||||
"image_fullsize_enabled_description": "Generovat obrázky v plné velikosti pro formáty, které nejsou vhodné pro web. Pokud je povolena možnost „Preferovat vložený náhled“, budou přímo použity vložené náhledy bez převodu. Neovlivňuje formáty vhodné pro web, jako je JPEG.",
|
||||
"image_fullsize_quality_description": "Kvalita obrázku v plné velikosti od 1 do 100. Vyšší je lepší, ale vytváří větší soubory.",
|
||||
"image_fullsize_title": "Nastavení obrázků v plné velikosti",
|
||||
"image_prefer_embedded_preview": "Preferovat vložený náhled",
|
||||
"image_prefer_embedded_preview_setting_description": "Použít vložené náhledy z RAW fotografií jako vstup pro zpracování snímků, pokud jsou k dispozici. U některých snímků tak lze dosáhnout přesnějších barev, ale kvalita náhledu závisí na fotoaparátu a snímek může obsahovat více kompresních artefaktů.",
|
||||
"image_prefer_embedded_preview_setting_description": "Použít vložené náhledy z RAW fotografií jako vstup pro zpracování snímků a pokud jsou k dispozici. U některých snímků tak lze dosáhnout přesnějších barev, ale kvalita náhledu závisí na fotoaparátu a snímek může obsahovat více kompresních artefaktů.",
|
||||
"image_prefer_wide_gamut": "Preferovat široký gamut",
|
||||
"image_prefer_wide_gamut_setting_description": "Použít Display P3 pro miniatury. To lépe zachovává živost obrázků s širokým barevným prostorem, ale obrázky se mohou na starých zařízeních se starou verzí prohlížeče zobrazovat jinak. sRGB obrázky jsou ponechány jako sRGB, aby se zabránilo posunům barev.",
|
||||
"image_preview_description": "Středně velký obrázek se zbavenými metadaty, který se používá při prohlížení jedné položky a pro strojové učení",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Videa ve smyčce",
|
||||
"loop_videos_description": "Povolit automatickou smyčku videa v prohlížeči.",
|
||||
"main_branch_warning": "Používáte vývojovou verzi; důrazně doporučujeme používat verzi z vydání!",
|
||||
"main_menu": "Hlavní nabídka",
|
||||
"make": "Výrobce",
|
||||
"manage_shared_links": "Spravovat sdílené odkazy",
|
||||
"manage_sharing_with_partners": "Správa sdílení s partnery",
|
||||
@@ -1234,7 +1240,7 @@
|
||||
"sort_oldest": "Nejstarší fotka",
|
||||
"sort_people_by_similarity": "Seřadit lidi podle podobnosti",
|
||||
"sort_recent": "Nejnovější fotka",
|
||||
"sort_title": "Název",
|
||||
"sort_title": "Název alba",
|
||||
"source": "Zdroj",
|
||||
"stack": "Seskupit",
|
||||
"stack_duplicates": "Seskupit duplicity",
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Erneutes Laden aller Bibliotheksdateien erzwingen",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP erzeugt kleinere Dateien als JPEG, ist aber etwas langsamer in der Erstellung.",
|
||||
"image_fullsize_description": "Hochauflösendes Bild mit entfernten Metadaten, das beim Zoomen verwendet wird",
|
||||
"image_fullsize_enabled": "Hochauflösende Vorschaubilder aktivieren",
|
||||
"image_fullsize_enabled_description": "Generiere Hochauflösende Vorschaubilder in Originalauflösung für nicht web-kompatibel Formate. Wenn \"Eingebettete Vorschau bevorzugen\" aktiviert ist, werden eingebettete Vorschaubilder direkt verwendet. Hat keinen Einfluss auf web-kompatible Formate wie JPEG.",
|
||||
"image_fullsize_quality_description": "Qualität der Hochauflösenden Vorschaubilder von 1-100. Höher ist besser, erzeugt aber größere Dateien.",
|
||||
"image_fullsize_title": "Hochauflösende Vorschaueinstellungen",
|
||||
"image_prefer_embedded_preview": "Eingebettete Vorschau bevorzugen",
|
||||
"image_prefer_embedded_preview_setting_description": "Verwende eingebettete Vorschaubilder in RAW-Fotos als Grundlage für die Bildverarbeitung, sofern diese zur Verfügung stehen. Dies kann bei einigen Bildern genauere Farben erzeugen, allerdings ist die Qualität der Vorschau kameraabhängig und das Bild kann mehr Kompressionsartefakte aufweisen.",
|
||||
"image_prefer_wide_gamut": "Breites Spektrum bevorzugen",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Loop-Videos",
|
||||
"loop_videos_description": "Aktiviere diese Option, um eine automatische Videoschleife in der Detailansicht zu erstellen.",
|
||||
"main_branch_warning": "Du benutzt eine Entwicklungsversion. Wir empfehlen dringend, eine Release-Version zu verwenden!",
|
||||
"main_menu": "Hauptmenü",
|
||||
"make": "Marke",
|
||||
"manage_shared_links": "Freigegebene Links verwalten",
|
||||
"manage_sharing_with_partners": "Gemeinsame Nutzung mit Partnern verwalten",
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
"albums_count": "{count, plural, one {{count, number} Άλμπουμ} other {{count, number} Άλμπουμ}}",
|
||||
"all": "Όλα",
|
||||
"all_albums": "Όλα τα άλμπουμ",
|
||||
"all_people": "Όλοι οι άνθρωποι",
|
||||
"all_people": "Όλα τα άτομα",
|
||||
"all_videos": "Όλα τα βίντεο",
|
||||
"allow_dark_mode": "Επιτρέψτε τη σκοτεινή λειτουργία",
|
||||
"allow_edits": "Επιτρέψτε τις τροποποιήσεις",
|
||||
@@ -452,7 +452,7 @@
|
||||
"camera_model": "Μοντέλο κάμερας",
|
||||
"cancel": "Ακύρωση",
|
||||
"cancel_search": "Ακύρωση αναζήτησης",
|
||||
"cannot_merge_people": "Αδύνατη η συγχώνευση προσώπων",
|
||||
"cannot_merge_people": "Αδύνατη η συγχώνευση ατόμων",
|
||||
"cannot_undo_this_action": "Δεν μπορείτε να αναιρέσετε αυτήν την ενέργεια!",
|
||||
"cannot_update_the_description": "Αδύνατη η ενημέρωση της περιγραφής",
|
||||
"change_date": "Αλλαγή ημερομηνίας",
|
||||
@@ -618,7 +618,7 @@
|
||||
"cant_change_metadata_assets_count": "Δεν μπορείτε να αλλάξετε τα μεταδεδομένα του {count, plural, one {# αρχείου} other {# αρχείων}}",
|
||||
"cant_get_faces": "Δεν είναι δυνατή η ανάκτηση προσώπων",
|
||||
"cant_get_number_of_comments": "Δεν είναι δυνατή η ανάκτηση του αριθμού των σχολίων",
|
||||
"cant_search_people": "Δεν μπορείτε να αναζητήσετε άτομα",
|
||||
"cant_search_people": "Αδύνατη η αναζήτηση ατόμων",
|
||||
"cant_search_places": "Δεν μπορείτε να αναζητήσετε τοποθεσίες",
|
||||
"cleared_jobs": "Εκκαθαρισμένες εργασίες για: {job}",
|
||||
"error_adding_assets_to_album": "Σφάλμα κατά την προσθήκη στοιχείων στο άλμπουμ",
|
||||
|
||||
12
i18n/en.json
12
i18n/en.json
@@ -65,8 +65,13 @@
|
||||
"forcing_refresh_library_files": "Forcing refresh of all library files",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP produces smaller files than JPEG, but is slower to encode.",
|
||||
"image_fullsize_enabled": "Enable full-size image generation",
|
||||
"image_fullsize_enabled_description": "Generate full-size image for non-web-friendly formats. When \"Prefer embedded preview\" is enabled, embedded previews are used directly without conversion. Does not affect web-friendly formats like JPEG.",
|
||||
"image_fullsize_quality_description": "Full-size image quality from 1-100. Higher is better, but produces larger files.",
|
||||
"image_fullsize_title": "Full-size Image Settings",
|
||||
"image_fullsize_description": "Full-size image with stripped metadata, used when zoomed in",
|
||||
"image_prefer_embedded_preview": "Prefer embedded preview",
|
||||
"image_prefer_embedded_preview_setting_description": "Use embedded previews in RAW photos as the input to image processing when available. This can produce more accurate colors for some images, but the quality of the preview is camera-dependent and the image may have more compression artifacts.",
|
||||
"image_prefer_embedded_preview_setting_description": "Use embedded previews in RAW photos as the input to image processing and when available. This can produce more accurate colors for some images, but the quality of the preview is camera-dependent and the image may have more compression artifacts.",
|
||||
"image_prefer_wide_gamut": "Prefer wide gamut",
|
||||
"image_prefer_wide_gamut_setting_description": "Use Display P3 for thumbnails. This better preserves the vibrance of images with wide colorspaces, but images may appear differently on old devices with an old browser version. sRGB images are kept as sRGB to avoid color shifts.",
|
||||
"image_preview_description": "Medium-size image with stripped metadata, used when viewing a single asset and for machine learning",
|
||||
@@ -159,7 +164,6 @@
|
||||
"no_pattern_added": "No pattern added",
|
||||
"note_apply_storage_label_previous_assets": "Note: To apply the Storage Label to previously uploaded assets, run the",
|
||||
"note_cannot_be_changed_later": "NOTE: This cannot be changed later!",
|
||||
"note_unlimited_quota": "Note: Enter 0 for unlimited quota",
|
||||
"notification_email_from_address": "From address",
|
||||
"notification_email_from_address_description": "Sender email address, for example: \"Immich Photo Server <noreply@example.com>\"",
|
||||
"notification_email_host_description": "Host of the email server (e.g. smtp.immich.app)",
|
||||
@@ -859,6 +863,7 @@
|
||||
"loop_videos": "Loop videos",
|
||||
"loop_videos_description": "Enable to automatically loop a video in the detail viewer.",
|
||||
"main_branch_warning": "You’re using a development version; we strongly recommend using a release version!",
|
||||
"main_menu": "Main menu",
|
||||
"make": "Make",
|
||||
"manage_shared_links": "Manage shared links",
|
||||
"manage_sharing_with_partners": "Manage sharing with partners",
|
||||
@@ -923,7 +928,6 @@
|
||||
"no_shared_albums_message": "Create an album to share photos and videos with people in your network",
|
||||
"not_in_any_album": "Not in any album",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "Note: To apply the Storage Label to previously uploaded assets, run the",
|
||||
"note_unlimited_quota": "Note: Enter 0 for unlimited quota",
|
||||
"notes": "Notes",
|
||||
"notification_toggle_setting_description": "Enable email notifications",
|
||||
"notifications": "Notifications",
|
||||
@@ -1378,4 +1382,4 @@
|
||||
"yes": "Yes",
|
||||
"you_dont_have_any_shared_links": "You don't have any shared links",
|
||||
"zoom_image": "Zoom Image"
|
||||
}
|
||||
}
|
||||
|
||||
16
i18n/es.json
16
i18n/es.json
@@ -66,8 +66,13 @@
|
||||
"forcing_refresh_library_files": "Forzando la recarga de todos los elementos en la biblioteca",
|
||||
"image_format": "Formato",
|
||||
"image_format_description": "WebP genera archivos más pequeños que JPEG, pero es más lento al codificarlos.",
|
||||
"image_fullsize_description": "Imagen de tamaño completo con metadatos removidos, usado cuando se hace zoom",
|
||||
"image_fullsize_enabled": "Activar generación de imágenes a tamaño completo",
|
||||
"image_fullsize_enabled_description": "Generar imágenes a tamaño completo para formatos no aptos para web. Cuando \"Preferir vista previa incrustada\" está activada, las vistas previas incrustadas se utilizan directamente sin conversión. No afecta a los formatos aptos para la web, como JPEG.",
|
||||
"image_fullsize_quality_description": "De 1 a 100, calidad de imágenes de tamaño completo. Mientras más alto es mejor, pero genera archivos de mayor tamaño.",
|
||||
"image_fullsize_title": "Configuraciones de imágenes de tamaño completo",
|
||||
"image_prefer_embedded_preview": "Preferir vista previa embebida",
|
||||
"image_prefer_embedded_preview_setting_description": "Usar vistas previas embebidas en fotos RAW como entrada para el procesamiento de imágenes cuando estén disponibles. Esto puede producir colores más precisos en algunas imágenes, pero la calidad de la vista previa depende de la cámara y la imagen puede tener más artefactos de compresión.",
|
||||
"image_prefer_embedded_preview_setting_description": "Usar vistas previas embebidas en fotos RAW como entrada para el procesamiento de imágenes y cuando estén disponibles. Esto puede producir colores más precisos en algunas imágenes, pero la calidad de la vista previa depende de la cámara y la imagen puede tener más artefactos de compresión.",
|
||||
"image_prefer_wide_gamut": "Preferir 'gamut' amplio",
|
||||
"image_prefer_wide_gamut_setting_description": "Usar \"Display P3\" para las miniaturas. Preserva mejor la vivacidad de las imágenes con espacios de color amplios pero las imágenes pueden aparecer de manera diferente en dispositivos antiguos con una versión antigua del navegador. Las imágenes sRGB se mantienen como sRGB para evitar cambios de color.",
|
||||
"image_preview_description": "Imagen de tamaño mediano con metadatos eliminados. Es utilizado al visualizar un solo activo y para el aprendizaje automático",
|
||||
@@ -414,7 +419,7 @@
|
||||
"asset_description_updated": "La descripción del elemento ha sido actualizada",
|
||||
"asset_filename_is_offline": "El archivo {filename} está offline",
|
||||
"asset_has_unassigned_faces": "El archivo no tiene rostros asignados",
|
||||
"asset_hashing": "Hashing…",
|
||||
"asset_hashing": "Calculando hash…",
|
||||
"asset_offline": "Archivos sin conexión",
|
||||
"asset_offline_description": "Este activo externo ya no se encuentra en el disco. Por favor, póngase en contacto con su administrador de Immich para obtener ayuda.",
|
||||
"asset_skipped": "Omitido",
|
||||
@@ -442,7 +447,7 @@
|
||||
"blurred_background": "Fondo borroso",
|
||||
"bugs_and_feature_requests": "Errores y solicitudes de funciones",
|
||||
"build": "Compilación",
|
||||
"build_image": "Crear imagen",
|
||||
"build_image": "Imagen de compilación",
|
||||
"bulk_delete_duplicates_confirmation": "¿Estás seguro de que deseas eliminar de forma masiva {count, plural, one {# elemento duplicado} other {# elementos duplicados}}? Esto mantendrá el activo más grande de cada grupo y eliminará permanentemente todos los demás duplicados. ¡Esta acción no se puede deshacer!",
|
||||
"bulk_keep_duplicates_confirmation": "¿Estas seguro de que desea mantener {count, plural, one {# duplicate asset} other {# duplicate assets}} archivos duplicados? Esto resolverá todos los grupos duplicados sin borrar nada.",
|
||||
"bulk_trash_duplicates_confirmation": "¿Estas seguro de que desea eliminar masivamente {count, plural, one {# duplicate asset} other {# duplicate assets}} archivos duplicados? Esto mantendrá el archivo más grande de cada grupo y eliminará todos los demás duplicados.",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Vídeos en bucle",
|
||||
"loop_videos_description": "Habilite la reproducción automática de un video en el visor de detalles.",
|
||||
"main_branch_warning": "Estás ejecutando una compilación desde la rama principal. ¡Recomendamos encarecidamente usar una versión de lanzamiento!",
|
||||
"main_menu": "Menú principal",
|
||||
"make": "Marca",
|
||||
"manage_shared_links": "Administrar enlaces compartidos",
|
||||
"manage_sharing_with_partners": "Administrar el uso compartido con invitados",
|
||||
@@ -1241,7 +1247,7 @@
|
||||
"stack_select_one_photo": "Selecciona una imagen principal para la pila",
|
||||
"stack_selected_photos": "Apilar fotos seleccionadas",
|
||||
"stacked_assets_count": "Apilado(s) {count, plural, one {# activo} other {# activos}}",
|
||||
"stacktrace": "Stacktrace",
|
||||
"stacktrace": "Seguimiento de pila",
|
||||
"start": "Inicio",
|
||||
"start_date": "Fecha de inicio",
|
||||
"state": "Estado",
|
||||
@@ -1350,7 +1356,7 @@
|
||||
"version_announcement_closing": "Tu amigo, Alex",
|
||||
"version_announcement_message": "¡Hola! Hay una nueva versión de Immich disponible. Tómese un tiempo para leer las <link> notas de la versión </link> para asegurarse de que su configuración esté actualizada y evitar errores de configuración, especialmente si utiliza WatchTower o cualquier mecanismo que se encargue de actualizar su instancia de Immich automáticamente.",
|
||||
"version_history": "Historial de versiones",
|
||||
"version_history_item": "Instalada la {version} el {date}",
|
||||
"version_history_item": "Instalada {version} el {date}",
|
||||
"video": "Vídeo",
|
||||
"video_hover_setting": "Iniciar vídeo al pasar por encima",
|
||||
"video_hover_setting_description": "Reproducir el vídeo cuando el ratón está encima de un vídeo. Aunque esté desactivado, se iniciará cuando el cursor del ratón esté sobre el icono de \"reproducir\".",
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Kogu kõigi failide sundvärskendamine",
|
||||
"image_format": "Formaat",
|
||||
"image_format_description": "WebP failid on väiksemad kui JPEG, aga kodeerimine on aeglasem.",
|
||||
"image_fullsize_description": "Täismõõdus pilt ilma metaandmeteta, kasutatakse sisse suumimisel",
|
||||
"image_fullsize_enabled": "Luba täismõõdus piltide genereerimine",
|
||||
"image_fullsize_enabled_description": "Genereeri mitte-veebisõbralike formaatide jaoks täismõõdus pilt. Kui \"Eelista manustatud eelvaadet\" on lubatud, kasutatakse manustatud eelvaateid otse ilma teisendamiseta. Ei mõjuta veebisõbralikke formaate nagu JPEG.",
|
||||
"image_fullsize_quality_description": "Täismõõdus pildi kvaliteet vahemikus 1-100. Kõrgem väärtus on parem, aga tulemuseks on suuremad failid.",
|
||||
"image_fullsize_title": "Täismõõdus pildi seaded",
|
||||
"image_prefer_embedded_preview": "Eelista manustatud eelvaadet",
|
||||
"image_prefer_embedded_preview_setting_description": "Kasuta pilditöötluse sisendina võimalusel RAW fotodesse manustatud eelvaateid. See võib mõnede piltide puhul anda tulemuseks täpsemad värvid, aga eelvaate kvaliteet sõltub konkreetsest kaamerast ning pildis võib olla rohkem tihendusmüra.",
|
||||
"image_prefer_wide_gamut": "Eelista laia värvigammat",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Taasesita videod",
|
||||
"loop_videos_description": "Lülita sisse, et detailvaates videot automaatselt taasesitada.",
|
||||
"main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!",
|
||||
"main_menu": "Peamenüü",
|
||||
"make": "Mark",
|
||||
"manage_shared_links": "Halda jagatud linke",
|
||||
"manage_sharing_with_partners": "Halda partneritega jagamist",
|
||||
|
||||
1
i18n/eu.json
Normal file
1
i18n/eu.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -926,4 +926,4 @@
|
||||
"yes": "بله",
|
||||
"you_dont_have_any_shared_links": "",
|
||||
"zoom_image": "بزرگنمایی تصویر"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
"reset_settings_to_default": "Nollaa asetukset oletuksille",
|
||||
"reset_settings_to_recent_saved": "Palauta aiemmin tallennetut asetukset",
|
||||
"scanning_library": "Kirjastoa skannataan",
|
||||
"search_jobs": "Etsi tehtäviä...",
|
||||
"search_jobs": "Etsi tehtäviä…",
|
||||
"send_welcome_email": "Lähetä tervetuloviesti",
|
||||
"server_external_domain_settings": "Ulkoinen osoite",
|
||||
"server_external_domain_settings_description": "Osoite julkisille linkeille, http(s):// mukaan lukien",
|
||||
@@ -406,11 +406,11 @@
|
||||
"are_these_the_same_person": "Ovatko he sama henkilö?",
|
||||
"are_you_sure_to_do_this": "Haluatko varmasti tehdä tämän?",
|
||||
"asset_added_to_album": "Lisätty albumiin",
|
||||
"asset_adding_to_album": "Lisätään albumiin...",
|
||||
"asset_adding_to_album": "Lisätään albumiin…",
|
||||
"asset_description_updated": "Kohteen kuvaus on päivitetty",
|
||||
"asset_filename_is_offline": "Kohde {filename} on offline-tilassa",
|
||||
"asset_has_unassigned_faces": "Kohteella on määrittämättömiä kasvoja",
|
||||
"asset_hashing": "Hajautetaan...",
|
||||
"asset_hashing": "Hajautetaan…",
|
||||
"asset_offline": "Aineisto offline-tilassa",
|
||||
"asset_offline_description": "Tätä ulkoista resurssia ei enää löydy levyltä. Ole hyvä ja ota yhteyttä Immich-järjestelmänvalvojaan saadaksesi apua.",
|
||||
"asset_skipped": "Ohitettu",
|
||||
@@ -1352,4 +1352,4 @@
|
||||
"yes": "Kyllä",
|
||||
"you_dont_have_any_shared_links": "Sinulla ei ole jaettuja linkkejä",
|
||||
"zoom_image": "Zoomaa kuvaa"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Forcer le rafraîchissement de tous les fichiers de la bibliothèque",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP produit des fichiers plus petits que JPEG, mais son encodage est plus lent.",
|
||||
"image_fullsize_description": "Image en taille réelle, sans métadonnées, utilisée lors d'un zoom",
|
||||
"image_fullsize_enabled": "Activer la génération d'image en taille d'origine",
|
||||
"image_fullsize_enabled_description": "Générer une image en taille réelle pour les formats non compatibles avec le web. Lorsque l'option « Préférer l'aperçu intégré » est activée, les aperçus intégrés sont utilisés directement sans conversion. Cette option n'affecte pas les formats compatibles avec le web tels que JPEG.",
|
||||
"image_fullsize_quality_description": "Qualité de l'image en taille réelle de 1 à 100. Une valeur plus élevée est meilleure, mais produit des fichiers plus volumineux.",
|
||||
"image_fullsize_title": "Paramètres des images en taille réelle",
|
||||
"image_prefer_embedded_preview": "Préférer l'aperçu intégré",
|
||||
"image_prefer_embedded_preview_setting_description": "Utiliser les miniatures intégrées dans les photos au format RAW comme entrées pour le traitement d'image quand elles sont disponibles. Cela peut donner des couleurs plus justes pour certaines images, mais la qualité des miniatures est dépendant de l'appareil photo et l'image peut avoir des artéfacts de compression.",
|
||||
"image_prefer_wide_gamut": "Préférer une gamme de couleurs étendue",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Vidéos en boucle",
|
||||
"loop_videos_description": "Activer pour voir la vidéo en boucle dans le lecteur détaillé.",
|
||||
"main_branch_warning": "Vous utilisez une version de développement. Nous vous recommandons fortement d'utiliser une version stable !",
|
||||
"main_menu": "Menu principal",
|
||||
"make": "Marque",
|
||||
"manage_shared_links": "Gérer les liens partagés",
|
||||
"manage_sharing_with_partners": "Gérer le partage avec les partenaires",
|
||||
|
||||
57
i18n/gl.json
Normal file
57
i18n/gl.json
Normal file
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"about": "Acerca de",
|
||||
"account": "Conta",
|
||||
"account_settings": "Configuración da conta",
|
||||
"acknowledge": "De acordo",
|
||||
"action": "Acción",
|
||||
"actions": "Accións",
|
||||
"active": "Activo",
|
||||
"activity": "Actividade",
|
||||
"activity_changed": "A actividade está {enabled, select, true {habilitada} other {deshabilitada}}",
|
||||
"add": "Engadir",
|
||||
"add_a_description": "Engadir unha descrición",
|
||||
"add_a_location": "Engadir unha localización",
|
||||
"add_a_name": "Engadir un nome",
|
||||
"add_a_title": "Engadir un título",
|
||||
"add_exclusion_pattern": "Engadir patrón de exclusión",
|
||||
"add_import_path": "Engadir ruta de importación",
|
||||
"add_location": "Engadir localización",
|
||||
"add_more_users": "Engadir máis usuarios",
|
||||
"add_partner": "Engadir compañeiro",
|
||||
"add_path": "Engadir ruta",
|
||||
"add_photos": "Engadir fotos",
|
||||
"add_to": "Engadir a…",
|
||||
"add_to_album": "Engadir ao álbum",
|
||||
"add_to_shared_album": "Engadir ao álbum compartido",
|
||||
"add_url": "Engadir URL",
|
||||
"added_to_archive": "Engadido ao arquivo",
|
||||
"added_to_favorites": "Engadido a favoritos",
|
||||
"added_to_favorites_count": "Engadidos {count, number} a favoritos",
|
||||
"admin": {
|
||||
"authentication_settings": "Configuración de autenticación",
|
||||
"authentication_settings_description": "Xestionar contrasinal, OAuth e outros parámetros de autenticación",
|
||||
"authentication_settings_disable_all": "Estás seguro de deshabilitar todos os métodos de inicio de sesión? Iniciar a sesión quedará completamente deshabilitado.",
|
||||
"authentication_settings_reenable": "Para rehabilitala, usa un <link>Comando do servidor</link>.",
|
||||
"background_task_job": "Tarefas en segundo plano",
|
||||
"backup_database": "Respaldo da base de datos",
|
||||
"backup_database_enable_description": "Habilitar as copias de seguridade da base de datos",
|
||||
"backup_keep_last_amount": "Cantidade de copias de seguridade previas a manter",
|
||||
"backup_settings": "Configuración de copias de seguridade",
|
||||
"backup_settings_description": "Xestionar a configuración das copias de seguridade da base de datos",
|
||||
"check_all": "Comprobar todo",
|
||||
"cleared_jobs": "Traballos borrados para: {job}",
|
||||
"config_set_by_file": "As configuracións están actualmente seleccionadas por un ficheiro de configuracións",
|
||||
"confirm_delete_library": "Estás seguro de que queres eliminar a biblioteca {library}?",
|
||||
"exclusion_pattern_description": "Os patróns de exclusión permítenche ignorar ficheiros e cartafoles ao escanear a túa biblioteca. Isto é útil se tes cartafoles que conteñen ficheiros que non queres importar, coma ficheiros RAW.",
|
||||
"external_library_created_at": "Biblioteca externa (creada o {date})",
|
||||
"external_library_management": "Xestión de bibliotecas externas",
|
||||
"face_detection": "Detección de caras",
|
||||
"job_settings": "Configuración de tarefas",
|
||||
"job_settings_description": "Administrar tarefas simultáneas",
|
||||
"job_status": "Estado da tarefa",
|
||||
"jobs_failed": "{jobCount, one {# errado}, plural, other {# errados}}"
|
||||
},
|
||||
"year": "Ano",
|
||||
"yes": "Si",
|
||||
"zoom_image": "Acercar imaxe"
|
||||
}
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "כפיית רענון של כל קבצי הספרייה",
|
||||
"image_format": "פורמט",
|
||||
"image_format_description": "WebP מפיק קבצים קטנים יותר מ JPEG, אך הוא איטי יותר לקידוד.",
|
||||
"image_fullsize_description": "תמונה בגודל מלא עם מטא נתונים מוסרים, בעת שימוש בהגדלה",
|
||||
"image_fullsize_enabled": "אפשר יצירה של תמונות באיכות מלאה",
|
||||
"image_fullsize_enabled_description": "צור תמונה בגודל מלא עבור פורמטים שאינם ידידותיים לאינטרנט. כאשר \"העדף תצוגה מקדימה מוטמעת\" מופעלת, תצוגות מקדימות מוטמעות משמשות ישירות ללא המרה. זה לא משפיע על פורמטים ידידותיים לאינטרנט כמו JPEG.",
|
||||
"image_fullsize_quality_description": "תמונה בגודל מלא באיכות מ 1-100. גבוהה יותר טוב יותר, אך מייצר קובץ גדול יותר.",
|
||||
"image_fullsize_title": "הגדרות תמונה בגודל מלא",
|
||||
"image_prefer_embedded_preview": "העדף תצוגה מקדימה מוטמעת",
|
||||
"image_prefer_embedded_preview_setting_description": "השתמש בתצוגות מקדימות מוטמעות בתמונות RAW כקלט לעיבוד תמונה כאשר זמינות. זה יכול להפיק צבעים מדויקים יותר עבור תמונות מסוימות, אבל האיכות של התצוגה המקדימה היא תלוית מצלמה ולתמונה עשויים להיות יותר פגמי דחיסה.",
|
||||
"image_prefer_wide_gamut": "העדף סולם צבעים רחב",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "הפעלה חוזרת של סרטונים",
|
||||
"loop_videos_description": "אפשר הפעלה חוזרת אוטומטית של סרטון במציג הפרטים.",
|
||||
"main_branch_warning": "את/ה משתמש/ת בגרסת פיתוח; אנחנו ממליצים בחום להשתמש בגרסה יציבה!",
|
||||
"main_menu": "תפריט ראשי",
|
||||
"make": "תוצרת",
|
||||
"manage_shared_links": "ניהול קישורים משותפים",
|
||||
"manage_sharing_with_partners": "ניהול שיתוף עם שותפים",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"confirm_user_password_reset": "क्या आप वाकई {user} का पासवर्ड रीसेट करना चाहते हैं?",
|
||||
"create_job": "जॉब बनाएँ",
|
||||
"cron_expression": "क्रॉन अभिव्यक्ति",
|
||||
"cron_expression_description": "क्रॉन प्रारूप का उपयोग करके स्कैनिंग अंतराल सेट करें। अधिक जानकारी के लिए कृपया <link>क्रोनटैब गुरु</link> देखें",
|
||||
"disable_login": "लॉगिन अक्षम करें",
|
||||
"duplicate_detection_job_description": "समान छवियों का पता लगाने के लिए संपत्तियों पर मशीन लर्निंग चलाएं। यह कार्यक्षमता स्मार्ट खोज पर निर्भर करती है",
|
||||
"exclusion_pattern_description": "Exclusion पैटर्न आपको अपनी लाइब्रेरी को स्कैन करते समय फ़ाइलों और फ़ोल्डरों को अनदेखा करने देता है। यह उपयोगी है यदि आपके पास ऐसे फ़ोल्डर हैं जिनमें ऐसी फ़ाइलें हैं जिन्हें आप आयात नहीं करना चाहते हैं, जैसे RAW फ़ाइलें।",
|
||||
@@ -61,11 +62,14 @@
|
||||
"failed_job_command": "कार्य {job} के लिए आदेश {command} विफल",
|
||||
"force_delete_user_warning": "चेतावनी: इससे उपयोगकर्ता और सारा डेटा तुरंत हट जाएगा। इसे पूर्ववत नहीं किया जा सकता और फ़ाइलें पुनर्प्राप्त नहीं की जा सकतीं।",
|
||||
"forcing_refresh_library_files": "सभी लाइब्रेरी फ़ाइलों को जबरन सामयिक करें",
|
||||
"image_format": "प्रारूप",
|
||||
"image_format_description": "वेबपी, जेपीईजी की तुलना में छोटी फ़ाइलें बनाता है, लेकिन एनकोड करने में धीमा है।",
|
||||
"image_prefer_embedded_preview": "एम्बेडेड पूर्वावलोकन को प्राथमिकता दें",
|
||||
"image_prefer_embedded_preview_setting_description": "जब उपलब्ध हो तो RAW फ़ोटो में एम्बेडेड पूर्वावलोकन का उपयोग इमेज प्रोसेसिंग के इनपुट के रूप में करें। यह कुछ छवियों के लिए अधिक सटीक रंग उत्पन्न कर सकता है, लेकिन पूर्वावलोकन की गुणवत्ता कैमरे पर निर्भर करती है और छवि में अधिक संपीड़न कलाकृतियाँ हो सकती हैं।",
|
||||
"image_prefer_wide_gamut": "विस्तृत सरगम को प्राथमिकता दें",
|
||||
"image_prefer_wide_gamut_setting_description": "थंबनेल के लिए डिस्प्ले P3 का उपयोग करें। यह विस्तृत कलरस्पेस वाली छवियों की जीवंतता को बेहतर ढंग से संरक्षित करता है, लेकिन पुराने ब्राउज़र संस्करण वाले पुराने डिवाइस पर छवियां अलग-अलग दिखाई दे सकती हैं। रंग परिवर्तन से बचने के लिए sRGB छवियों को sRGB के रूप में रखा जाता है।",
|
||||
"image_preview_description": "मेटाडेटा रहित मध्यम आकार की छवि, जिसका उपयोग एकल संपत्ति देखने और मशीन लर्निंग के लिए होता है",
|
||||
"image_preview_title": "पूर्वदर्शन सेटिंग्स",
|
||||
"image_quality": "गुणवत्ता",
|
||||
"image_settings": "छवि सेटिंग्स",
|
||||
"image_settings_description": "उत्पन्न छवियों की गुणवत्ता और रिज़ॉल्यूशन प्रबंधित करें",
|
||||
|
||||
@@ -1253,4 +1253,4 @@
|
||||
"yes": "",
|
||||
"you_dont_have_any_shared_links": "",
|
||||
"zoom_image": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"authentication_settings_disable_all": "Biztosan letiltod az összes bejelentkezési módot? A bejelentkezés teljesen le lesz tiltva.",
|
||||
"authentication_settings_reenable": "Az újbóli engedélyezéshez használj egy<link>Szerver Parancsot</link>.",
|
||||
"background_task_job": "Háttérfeladatok",
|
||||
"backup_database": "Tartalék Adatbázis",
|
||||
"backup_database": "Adatbázis Biztonsági Mentése",
|
||||
"backup_database_enable_description": "Adatbázis biztonsági mentések engedélyezése",
|
||||
"backup_keep_last_amount": "Megőrizendő korábbi biztonsági mentések száma",
|
||||
"backup_settings": "Biztonsági mentés beállításai",
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "A képtár összes fájljának frissítése",
|
||||
"image_format": "Formátum",
|
||||
"image_format_description": "WebP a JPEG-nél kisebb fájlokat készít, de lassabban.",
|
||||
"image_fullsize_description": "Teljes méretű kép eltávolított metaadatokkal, nagyításkor használva",
|
||||
"image_fullsize_enabled": "Teljes méretű képgenerálás engedélyezése",
|
||||
"image_fullsize_enabled_description": "Teljes méretű kép generálása nem webbarát formátumokhoz. Ha a „Beágyazott előnézet preferálása” engedélyezve van, a beágyazott előnézetek közvetlenül, átalakítás nélkül kerülnek felhasználásra. Nem érinti a webbarát formátumokat, például a JPEG-et.",
|
||||
"image_fullsize_quality_description": "Teljes méretű képminőség 1-100 között. A magasabb érték jobb minőséget eredményez, de nagyobb fájlméretet is.",
|
||||
"image_fullsize_title": "Teljes méretű képbeállítások",
|
||||
"image_prefer_embedded_preview": "Beágyazott előnézeti kép előnyben részesítése",
|
||||
"image_prefer_embedded_preview_setting_description": "Nyers (RAW) fotók esetén használja a beépített előnézeti képet (ha van) a képek feldogozásához. Ez néhány kép esetében pontosabb színeket eredményezhet, de az előnézeti kép minősége erősen fényképezőgép függő, és a képen előfordulhatnak tömörítési hibák.",
|
||||
"image_prefer_wide_gamut": "Széles színtér preferálása",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Videók ismétlése",
|
||||
"loop_videos_description": "Engedélyezi a videók folyamatosan ismételt lejátszását.",
|
||||
"main_branch_warning": "Fejlesztői verziót használsz. Javasoljuk a stabil verzió használatát!",
|
||||
"main_menu": "Főmenü",
|
||||
"make": "Gyártó",
|
||||
"manage_shared_links": "Megosztási linkek kezelése",
|
||||
"manage_sharing_with_partners": "Partnerekkel való megosztás kezelése",
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Forzando l'aggiornamento completo della libreria",
|
||||
"image_format": "Formato",
|
||||
"image_format_description": "WebP produce file più piccoli rispetto a JPEG, ma l'encoding è più lento.",
|
||||
"image_fullsize_description": "Le immagini con dimensioni reali senza metadati sono utilizzate durante lo zoom",
|
||||
"image_fullsize_enabled": "Abilita la generazione delle immagini con dimensioni reali",
|
||||
"image_fullsize_enabled_description": "Genera immagini con dimensioni reali per i formati non web-friendly. Quando \"Preferisci l'anteprima integrata\" è abilitata, le anteprime integrate saranno usate senza conversione. Non riguarda le immagini web-friendly come il JPEG.",
|
||||
"image_fullsize_quality_description": "Qualità delle immagini con dimensioni reali da 1 a 100. Più è alto il valore più la qualità sarà alta come anche la grandezza dei file.",
|
||||
"image_fullsize_title": "Impostazioni Immagini con dimensioni reali",
|
||||
"image_prefer_embedded_preview": "Preferisci l'anteprima integrata",
|
||||
"image_prefer_embedded_preview_setting_description": "Usa l'anteprima integrata nelle foto RAW come input per l'elaborazione delle immagini, se disponibile. Questo permette un miglioramento dei colori per alcune immagini, ma la qualità delle anteprime dipende dalla macchina fotografica. Inoltre le immagini potrebbero presentare artefatti di compressione.",
|
||||
"image_prefer_wide_gamut": "Preferisci gamut più ampio",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Riproduci video in loop",
|
||||
"loop_videos_description": "Abilita per riprodurre automaticamente un video in loop nella vista dettagli.",
|
||||
"main_branch_warning": "Stai usando una versione di sviluppo. Consigliamo vivamente di utilizzare una versione di rilascio!",
|
||||
"main_menu": "Menu Principale",
|
||||
"make": "Produttore",
|
||||
"manage_shared_links": "Gestisci link condivisi",
|
||||
"manage_sharing_with_partners": "Gestisci la condivisione con i compagni",
|
||||
|
||||
149
i18n/ja.json
149
i18n/ja.json
@@ -7,7 +7,7 @@
|
||||
"actions": "アクション",
|
||||
"active": "アクティブ",
|
||||
"activity": "アクティビティ",
|
||||
"activity_changed": "アクティビティは{enabled, select, true {有効化} other {無効化}}されました",
|
||||
"activity_changed": "アクティビティは{enabled, select, true {有効} other {無効}}になりました",
|
||||
"add": "追加",
|
||||
"add_a_description": "説明を追加",
|
||||
"add_a_location": "場所を追加",
|
||||
@@ -20,20 +20,28 @@
|
||||
"add_partner": "パートナーを追加",
|
||||
"add_path": "パスを追加",
|
||||
"add_photos": "写真を追加",
|
||||
"add_to": "追加先...",
|
||||
"add_to": "追加先…",
|
||||
"add_to_album": "アルバムに追加",
|
||||
"add_to_shared_album": "共有アルバムに追加",
|
||||
"add_url": "URLを追加",
|
||||
"added_to_archive": "アーカイブに追加済",
|
||||
"added_to_favorites": "お気に入りに追加済",
|
||||
"added_to_favorites_count": "{count, number} 枚の画像をお気に入りに追加済",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "除外パターンを追加します。ワイルドカード「*」「**」「?」を使用できます。すべてのディレクトリで「Raw」と名前が付いたファイルを無視するには、「**/Raw/**」を使用します。また、「.tif」で終わるファイルをすべて無視するには、「**/*.tif」を使用します。さらに、絶対パスを無視するには「/path/to/ignore/**」を使用します。",
|
||||
"asset_offline_description": "この外部ライブラリのアセットはディスク上に見つからなくなってゴミ箱に移動されました。ファイルがライブラリの中で移動された場合はタイムラインで新しい対応するアセットを確認してください。このアセットを復元するには以下のファイルパスがImmichからアクセスできるか確認してライブラリをスキャンしてください。",
|
||||
"authentication_settings": "認証設定",
|
||||
"authentication_settings_description": "認証設定の管理(パスワード、OAuth、その他)",
|
||||
"authentication_settings_disable_all": "本当に全てのログイン方法を無効にしますか? ログインは完全に無効になります。",
|
||||
"authentication_settings_reenable": "再び有効にするには、<link>サーバーコマンド</link>を使用してください。",
|
||||
"background_task_job": "バックグラウンドタスク",
|
||||
"backup_database": "データベースのバックアップ",
|
||||
"backup_database_enable_description": "データベースのバックアップを有効にする",
|
||||
"backup_keep_last_amount": "過去のバックアップの保持数",
|
||||
"backup_settings": "バックアップ設定",
|
||||
"backup_settings_description": "データベースのバックアップ設定の管理",
|
||||
"check_all": "すべてを選択",
|
||||
"cleanup": "クリーンアップ",
|
||||
"cleared_jobs": "{job}のジョブをクリアしました",
|
||||
"config_set_by_file": "設定は現在 Config File で設定されている",
|
||||
"confirm_delete_library": "本当に {library} を削除しますか?",
|
||||
@@ -41,6 +49,10 @@
|
||||
"confirm_email_below": "確認のため、以下に \"{email}\" と入力してください",
|
||||
"confirm_reprocess_all_faces": "本当にすべての顔を再処理しますか? これにより名前が付けられた人物も消去されます。",
|
||||
"confirm_user_password_reset": "本当に {user} のパスワードをリセットしますか?",
|
||||
"create_job": "ジョブの作成",
|
||||
"cron_expression": "Cron式",
|
||||
"cron_expression_description": "cronのフォーマットを使ってスキャン間隔を設定します。詳しくは<link>Crontab Guru</link>などを参照してください",
|
||||
"cron_expression_presets": "Cron式のプリセット",
|
||||
"disable_login": "ログインを無効にする",
|
||||
"duplicate_detection_job_description": "機械学習を用いて類似画像の検出を行います。(スマートサーチに依存)",
|
||||
"exclusion_pattern_description": "除外パターンを使用すると、ライブラリをスキャンする際にファイルやフォルダを無視することができます。RAWファイルなど、インポートしたくないファイルを含むフォルダがある場合に便利です。",
|
||||
@@ -52,15 +64,28 @@
|
||||
"failed_job_command": "ジョブ {job}のコマンド {command}が失敗しました",
|
||||
"force_delete_user_warning": "警告:この操作を行うと、ユーザーとすべてのアセットが直ちに削除されます。これは元に戻せず、ファイルも復元できません。",
|
||||
"forcing_refresh_library_files": "すべてのライブラリファイルを強制更新",
|
||||
"image_format": "フォーマット",
|
||||
"image_format_description": "WebPはJPEGよりもファイルサイズが小さいですが、エンコードに時間がかかります。",
|
||||
"image_fullsize_enabled": "原寸大画像生成を有効にする",
|
||||
"image_fullsize_quality_description": "1から100まで原寸大画像の質です。高いほうがいいがファイルが大きくなります。",
|
||||
"image_fullsize_title": "原寸大画像設定",
|
||||
"image_prefer_embedded_preview": "埋め込みプレビューを優先",
|
||||
"image_prefer_embedded_preview_setting_description": "RAW写真の埋め込みプレビューが利用可能な場合に画像処理の入力として使用します。これにより、いくつかの画像でより正確な色を得ることができますが、プレビューの品質はカメラによって異なり、画像により多くの圧縮アーティファクトが含まれる場合があります。",
|
||||
"image_prefer_wide_gamut": "広色域に対応させる",
|
||||
"image_prefer_wide_gamut_setting_description": "サムネイルにはDisplay P3を使用します。これにより、広色域の画像の鮮やかさをよりよく保つことができますが、古いデバイスや古いブラウザバージョンでは画像が異なって見える場合があります。sRGBの画像は、色の変化を避けるためにsRGBのままにします。",
|
||||
"image_preview_description": "単一のアセットを表示する時や機械学習に使われるメタデータを取り除いた中サイズの画像",
|
||||
"image_preview_quality_description": "プレビューの画質は1〜100で設定できます。値が高いほど品質は良くなりますがファイルサイズが大きくなってアプリの応答性が低下するおそれがあります。低い値を設定すると機械学習の品質に影響を与えるおそれがあります。",
|
||||
"image_preview_title": "プレビュー設定",
|
||||
"image_quality": "品質",
|
||||
"image_resolution": "解像度",
|
||||
"image_resolution_description": "解像度を上げるとより精細に保存できますが、エンコードに時間がかかりファイルサイズが大きくなってアプリの応答性が低下するおそれがあります。",
|
||||
"image_settings": "画像設定",
|
||||
"image_settings_description": "生成される画像の品質と解像度の設定",
|
||||
"image_thumbnail_description": "メインのタイムラインのような写真グループで表示する際に使われるメタデータを取り除いた小さなサムネイル",
|
||||
"image_thumbnail_quality_description": "サムネイルの画質を1〜100の間で設定できます。値が大きいほど良い品質ですがファイルサイズが大きくなりアプリの応答性が低下します。",
|
||||
"image_thumbnail_title": "サムネイル設定",
|
||||
"job_concurrency": "{job} の同時実行数",
|
||||
"job_created": "ジョブを作成しました",
|
||||
"job_not_concurrency_safe": "このジョブは安全に同時実行できません。",
|
||||
"job_settings": "ジョブ設定",
|
||||
"job_settings_description": "ジョブの同時実行を管理します",
|
||||
@@ -75,7 +100,7 @@
|
||||
"library_scanning_enable_description": "ライブラリ定期スキャンの有効化",
|
||||
"library_settings": "外部ライブラリ",
|
||||
"library_settings_description": "外部ライブラリ設定を管理します",
|
||||
"library_tasks_description": "ライブラリのタスクを実行する",
|
||||
"library_tasks_description": "アセットが追加または変更された外部ライブラリをスキャンする",
|
||||
"library_watching_enable_description": "外部ライブラリのファイル変更を監視",
|
||||
"library_watching_settings": "ライブラリ監視(実験的)",
|
||||
"library_watching_settings_description": "変更されたファイルを自動的に監視",
|
||||
@@ -110,7 +135,7 @@
|
||||
"machine_learning_smart_search_description": "CLIP埋め込みを使用して画像を意味的に検索します",
|
||||
"machine_learning_smart_search_enabled": "スマートサーチを有効にします",
|
||||
"machine_learning_smart_search_enabled_description": "無効にすると、画像はスマートサーチ用にエンコードされません。",
|
||||
"machine_learning_url_description": "機械学習サーバーのURL",
|
||||
"machine_learning_url_description": "機械学習サーバーのURL。複数のURLが設定された場合は1つずつサーバーが正常に応答するまで接続を試みます。応答のないサーバーはオンラインになるまで一時的に無視されます。",
|
||||
"manage_concurrency": "同時実行数の管理",
|
||||
"manage_log_settings": "ログ設定を管理します",
|
||||
"map_dark_style": "ダークモード",
|
||||
@@ -126,8 +151,14 @@
|
||||
"map_settings": "地図",
|
||||
"map_settings_description": "地図設定",
|
||||
"map_style_description": "マップテーマ(style.json)の参照先URL",
|
||||
"memory_cleanup_job": "メモリーのクリーンアップ",
|
||||
"memory_generate_job": "メモリーの生成",
|
||||
"metadata_extraction_job": "メタデータの展開",
|
||||
"metadata_extraction_job_description": "GPSや解像度などのメタデータを各アセットから抽出",
|
||||
"metadata_faces_import_setting": "顔のインポートを有効にする",
|
||||
"metadata_faces_import_setting_description": "画像のEXIFデータとサイドカーファイルから顔をインポート",
|
||||
"metadata_settings": "メタデータ設定",
|
||||
"metadata_settings_description": "メタデータの設定を管理します",
|
||||
"migration_job": "マイグレーション",
|
||||
"migration_job_description": "アセットおよび顔のサムネイルを最新のフォルダ構造に移行します",
|
||||
"no_paths_added": "パスが追加されていません",
|
||||
@@ -182,6 +213,7 @@
|
||||
"password_settings": "パスワード ログイン",
|
||||
"password_settings_description": "パスワード ログイン設定を管理します",
|
||||
"paths_validated_successfully": "すべてのパスが正常に検証されました",
|
||||
"person_cleanup_job": "人物のクリーンアップ",
|
||||
"quota_size_gib": "割り当て容量 (GiB)",
|
||||
"refreshing_all_libraries": "すべてのライブラリを更新",
|
||||
"registration": "管理者登録",
|
||||
@@ -192,9 +224,13 @@
|
||||
"require_password_change_on_login": "初回ログイン時にパスワード変更を要求する",
|
||||
"reset_settings_to_default": "設定をデフォルトにリセットします",
|
||||
"reset_settings_to_recent_saved": "前回の設定値に戻す",
|
||||
"scanning_library": "ライブラリのスキャン",
|
||||
"search_jobs": "ジョブを検索…",
|
||||
"send_welcome_email": "ウェルカム メール を送信します",
|
||||
"server_external_domain_settings": "外部ドメイン",
|
||||
"server_external_domain_settings_description": "公開共有リンク用のドメイン( http(s):// を含める)",
|
||||
"server_public_users": "公開ユーザー",
|
||||
"server_public_users_description": "共有アルバムにユーザーを追加するとすべてのユーザー (名前とメールアドレス) がリスト化されます。無効にするとユーザーリストは管理者のみ利用可能になります。",
|
||||
"server_settings": "サーバー設定",
|
||||
"server_settings_description": "サーバー設定を管理します",
|
||||
"server_welcome_message": "ウェルカム メッセージ",
|
||||
@@ -210,7 +246,7 @@
|
||||
"storage_template_hash_verification_enabled_description": "ハッシュ検証の有効化(よくわからなければ、有効にしてください)",
|
||||
"storage_template_migration": "ストレージ テンプレート の移行",
|
||||
"storage_template_migration_description": "現在の<link>{template}</link>を以前にアップロードされたアセットに適用",
|
||||
"storage_template_migration_info": "テンプレートの変更は新しいアセットにのみ適用されます。 以前にアップロードしたアセットにテンプレートを遡って適用するには、<link>{job}</link> を実行してください。",
|
||||
"storage_template_migration_info": "ストレージテンプレートは全ての拡張子を小文字に変換します。テンプレートの変更は新しいアセットにのみ適用されます。 以前にアップロードしたアセットにテンプレートを遡って適用するには、<link>{job}</link> を実行してください。",
|
||||
"storage_template_migration_job": "ストレージテンプレート移行ジョブ",
|
||||
"storage_template_more_details": "この機能の詳細については、<template-link>ストレージテンプレート</template-link>とその<implications-link>影響</implications-link>を参照してください",
|
||||
"storage_template_onboarding_description": "この機能を有効にすると、ユーザー定義のテンプレートに基づいてファイルが自動で整理されます。 安定性の問題のため、この機能はデフォルトでオフになっています。 詳細については、<link>ドキュメント</link>を参照してください。",
|
||||
@@ -219,6 +255,17 @@
|
||||
"storage_template_settings_description": "アップロードしたアセットのフォルダ構造とファイル名を管理します",
|
||||
"storage_template_user_label": "<code>{label}</code>はユーザーのストレージラベルです",
|
||||
"system_settings": "システム設定",
|
||||
"tag_cleanup_job": "タグのクリーンアップ",
|
||||
"template_email_available_tags": "テンプレートで次の変数を使えます: {tags}",
|
||||
"template_email_if_empty": "テンプレートが空の場合はデフォルトのメールが使われます。",
|
||||
"template_email_invite_album": "アルバム招待のテンプレート",
|
||||
"template_email_preview": "プレビュー",
|
||||
"template_email_settings": "メールテンプレート",
|
||||
"template_email_settings_description": "通知のメールテンプレートのカスタムを管理します",
|
||||
"template_email_update_album": "アルバム更新のテンプレート",
|
||||
"template_email_welcome": "ウェルカムメールのテンプレート",
|
||||
"template_settings": "通知テンプレート",
|
||||
"template_settings_description": "通知のためのカスタムテンプレートを管理します。",
|
||||
"theme_custom_css_settings": "カスタムCSS",
|
||||
"theme_custom_css_settings_description": "CSS を使って Immich のデザインをカスタマイズできます。",
|
||||
"theme_settings": "テーマ設定",
|
||||
@@ -248,6 +295,8 @@
|
||||
"transcoding_constant_rate_factor": "CRF値 (-crf)",
|
||||
"transcoding_constant_rate_factor_description": "出力動画の品質レベル。H.264の場合は23、HEVCの場合は28、VP9の場合は31、AV1の場合は35が一般的な値です。値が低いほど品質が良くなりますが、ファイルサイズが大きくなります。",
|
||||
"transcoding_disabled_description": "動画をトランスコードしない設定にしますが、これにより一部のクライアントで再生ができなくなる可能性があります",
|
||||
"transcoding_encoding_options": "エンコードオプション",
|
||||
"transcoding_encoding_options_description": "エンコードされた動画のコーデック、解像度、画質、その他オプションの設定します",
|
||||
"transcoding_hardware_acceleration": "ハードウェアアクセラレーション",
|
||||
"transcoding_hardware_acceleration_description": "より高速ですが、同じビットレートではより低品質になります(実験的)",
|
||||
"transcoding_hardware_decoding": "ハードウェアデコード",
|
||||
@@ -260,6 +309,8 @@
|
||||
"transcoding_max_keyframe_interval": "最大キーフレーム間隔",
|
||||
"transcoding_max_keyframe_interval_description": "キーフレーム間の最大フレーム間隔を設定します。値を低くすると圧縮効率が悪化しますが、シーク時間が改善され、動きの速いシーンの品質が向上する場合があります。\"0\" に設定すると、この値が自動的に設定されます。",
|
||||
"transcoding_optimal_description": "設定解像度を超える動画、または容認されていない形式の動画",
|
||||
"transcoding_policy": "トランスコードポリシー",
|
||||
"transcoding_policy_description": "動画がいつトランスコードされるかを設定します",
|
||||
"transcoding_preferred_hardware_device": "推奨ハードウェアデバイス",
|
||||
"transcoding_preferred_hardware_device_description": "VAAPI と QSV のみに適用されます。 ハードウェアトランスコードに使用されるdriノードを設定します。",
|
||||
"transcoding_preset_preset": "プリセット (-preset)",
|
||||
@@ -268,7 +319,7 @@
|
||||
"transcoding_reference_frames_description": "特定のフレームを圧縮するときに参照するフレームの数。より高い値は圧縮効率を改善しますが、エンコードが遅くなります。\"0\" に設定すると、この値が自動的に設定されます。",
|
||||
"transcoding_required_description": "許容されていない動画形式のみ",
|
||||
"transcoding_settings": "動画トランスコード設定",
|
||||
"transcoding_settings_description": "動画ファイルの解像度とエンコード情報を管理します",
|
||||
"transcoding_settings_description": "トランスコードする動画とその処理方法を管理します",
|
||||
"transcoding_target_resolution": "解像度",
|
||||
"transcoding_target_resolution_description": "解像度を高くすると細かなディテールを保持できますが、エンコードに時間がかかり、ファイルサイズが大きくなり、アプリの応答性が低下する可能性があります。",
|
||||
"transcoding_temporal_aq": "適応的量子化(Temporal AQ)",
|
||||
@@ -290,6 +341,7 @@
|
||||
"trash_settings_description": "ごみ箱の設定を管理します",
|
||||
"untracked_files": "追跡されていないファイル",
|
||||
"untracked_files_description": "これらのファイルはアプリケーションによって追跡されていません。これらは移動の失敗、アップロードの中断、またはバグにより取り残されたものである可能性があります",
|
||||
"user_cleanup_job": "ユーザーのクリーンアップ",
|
||||
"user_delete_delay": "<b>{user}</b>のアカウントとアセットは{delay, plural, one {#日} other {#日}}後に完全に削除されるように予定されます。",
|
||||
"user_delete_delay_settings": "遅延削除",
|
||||
"user_delete_delay_settings_description": "削除実行後、ユーザーのアカウントとアセットが完全に削除されるまでの日数。 ユーザー削除ジョブは深夜に実行され、削除の準備ができているユーザーを確認します。 この設定への変更は、次回の実行時に反映されます。",
|
||||
@@ -345,6 +397,7 @@
|
||||
"allow_edits": "編集を許可",
|
||||
"allow_public_user_to_download": "一般ユーザーによるダウンロードを許可",
|
||||
"allow_public_user_to_upload": "一般ユーザーによるアップロードを許可",
|
||||
"alt_text_qr_code": "QRコード画像",
|
||||
"anti_clockwise": "反時計回り",
|
||||
"api_key": "APIキー",
|
||||
"api_key_description": "この値は一回のみ表示されます。 ウィンドウを閉じる前に必ずコピーしてください。",
|
||||
@@ -368,8 +421,9 @@
|
||||
"asset_offline": "アセットはオフラインです",
|
||||
"asset_offline_description": "このアセットはオフラインです。 Immichはファイルの場所にアクセスできません。 アセットが利用可能であることを確認しライブラリを再スキャンしてください。",
|
||||
"asset_skipped": "スキップ済",
|
||||
"asset_skipped_in_trash": "ゴミ箱の中",
|
||||
"asset_uploaded": "アップロード済",
|
||||
"asset_uploading": "アップロード中...",
|
||||
"asset_uploading": "アップロード中…",
|
||||
"assets": "アセット",
|
||||
"assets_added_count": "{count, plural, one {#個} other {#個}}のアセットを追加しました",
|
||||
"assets_added_to_album_count": "{count, plural, one {#個} other {#個}}のアセットをアルバムに追加しました",
|
||||
@@ -378,7 +432,7 @@
|
||||
"assets_moved_to_trash_count": "{count, plural, one {#個} other {#個}}のアセットをごみ箱に移動しました",
|
||||
"assets_permanently_deleted_count": "{count, plural, one {#個} other {#個}}のアセットを完全に削除しました",
|
||||
"assets_removed_count": "{count, plural, one {#個} other {#個}}のアセットを削除しました",
|
||||
"assets_restore_confirmation": "ごみ箱のアセットをすべて復元してもよろしいですか? この操作を元に戻すことはできません!",
|
||||
"assets_restore_confirmation": "ごみ箱のアセットをすべて復元してもよろしいですか? この操作を元に戻すことはできません! オフラインのアセットはこの方法では復元できません。",
|
||||
"assets_restored_count": "{count, plural, one {#個} other {#個}}のアセットを復元しました",
|
||||
"assets_trashed_count": "{count, plural, one {#個} other {#個}}のアセットをごみ箱に移動しました",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {個} other {個}}のアセットは既にアルバムの一部です",
|
||||
@@ -389,6 +443,7 @@
|
||||
"birthdate_saved": "生年月日が正常に保存されました",
|
||||
"birthdate_set_description": "生年月日は、写真撮影時のこの人物の年齢を計算するために使用されます。",
|
||||
"blurred_background": "ぼやけた背景",
|
||||
"bugs_and_feature_requests": "バグと機能のリクエスト",
|
||||
"build": "ビルド",
|
||||
"build_image": "ビルドイメージ",
|
||||
"bulk_delete_duplicates_confirmation": "本当に {count, plural, one {#個} other {#個}}の重複したアセットを一括削除しますか?これにより各重複中の最大のアセットが保持され、他の全ての重複が削除されます。この操作を元に戻すことはできません!",
|
||||
@@ -433,7 +488,9 @@
|
||||
"comments_are_disabled": "コメントは無効化されています",
|
||||
"confirm": "確認",
|
||||
"confirm_admin_password": "管理者パスワードを確認",
|
||||
"confirm_delete_face": "本当に『{name}』の顔をアセットから削除しますか?",
|
||||
"confirm_delete_shared_link": "本当にこの共有リンクを削除しますか?",
|
||||
"confirm_keep_this_delete_others": "このアセット以外のアセットがスタックから削除されます。本当に削除しますか?",
|
||||
"confirm_password": "確認",
|
||||
"contain": "収める",
|
||||
"context": "状況",
|
||||
@@ -474,25 +531,33 @@
|
||||
"date_range": "日付",
|
||||
"day": "ライトモード",
|
||||
"deduplicate_all": "全て重複排除",
|
||||
"deduplication_criteria_1": "バイト単位の画像サイズ",
|
||||
"deduplication_criteria_2": "EXIFデータ数",
|
||||
"deduplication_info": "重複排除情報",
|
||||
"deduplication_info_description": "アセットを自動的に選択して重複を一括で削除するには次のようにします:",
|
||||
"default_locale": "デフォルトのロケール",
|
||||
"default_locale_description": "ブラウザのロケールに基づいて日付と数値をフォーマットします",
|
||||
"delete": "削除",
|
||||
"delete_album": "アルバムを削除",
|
||||
"delete_api_key_prompt": "本当にこのAPI キーを削除しますか?",
|
||||
"delete_duplicates_confirmation": "本当にこれらの重複を完全に削除しますか?",
|
||||
"delete_face": "顔の削除",
|
||||
"delete_key": "キーを削除",
|
||||
"delete_library": "ライブラリを削除",
|
||||
"delete_link": "リンクを削除",
|
||||
"delete_others": "ほかを削除",
|
||||
"delete_shared_link": "共有リンクを消す",
|
||||
"delete_tag": "タグを削除する",
|
||||
"delete_tag_confirmation_prompt": "本当に{tagName}タグを削除しますか?",
|
||||
"delete_user": "ユーザーを削除",
|
||||
"deleted_shared_link": "共有リンクを削除",
|
||||
"deletes_missing_assets": "ディスクからなくなったアセットを削除する",
|
||||
"description": "概要欄",
|
||||
"details": "詳細",
|
||||
"direction": "方向",
|
||||
"disabled": "無効",
|
||||
"disallow_edits": "編集を許可しない",
|
||||
"discord": "Discord",
|
||||
"discover": "探索",
|
||||
"dismiss_all_errors": "全てのエラーを無視",
|
||||
"dismiss_error": "エラーを無視",
|
||||
@@ -501,6 +566,7 @@
|
||||
"display_original_photos": "オリジナルの写真を表示",
|
||||
"display_original_photos_setting_description": "オリジナルのアセットが Web 互換である場合は、アセットを表示するときにサムネイルではなく元の写真を優先して表示します。これにより写真の表示速度が遅くなる可能性があります。",
|
||||
"do_not_show_again": "このメッセージを再び表示しない",
|
||||
"documentation": "ドキュメント",
|
||||
"done": "完了",
|
||||
"download": "ダウンロード",
|
||||
"download_include_embedded_motion_videos": "埋め込まれた動画",
|
||||
@@ -543,6 +609,7 @@
|
||||
"enabled": "有効",
|
||||
"end_date": "終了日",
|
||||
"error": "エラー",
|
||||
"error_delete_face": "アセットから顔の削除ができませんでした",
|
||||
"error_loading_image": "画像の読み込みエラー",
|
||||
"error_title": "エラー - 問題が発生しました",
|
||||
"errors": {
|
||||
@@ -570,6 +637,7 @@
|
||||
"failed_to_create_shared_link": "共有リンクを作成できませんでした",
|
||||
"failed_to_edit_shared_link": "共有リンクを編集できませんでした",
|
||||
"failed_to_get_people": "人物を取得できませんでした",
|
||||
"failed_to_keep_this_delete_others": "ほかのアセットを削除できませんでした",
|
||||
"failed_to_load_asset": "アセットを読み込めませんでした",
|
||||
"failed_to_load_assets": "アセットを読み込めませんでした",
|
||||
"failed_to_load_people": "人物を読み込めませんでした",
|
||||
@@ -621,6 +689,7 @@
|
||||
"unable_to_get_comments_number": "コメント数を取得できません",
|
||||
"unable_to_get_shared_link": "共有リンクの取得に失敗しました",
|
||||
"unable_to_hide_person": "人物を非表示にできません",
|
||||
"unable_to_link_motion_video": "モーションビデオをリンクできません",
|
||||
"unable_to_link_oauth_account": "OAuth アカウントをリンクできません",
|
||||
"unable_to_load_album": "アルバムを読み込めません",
|
||||
"unable_to_load_asset_activity": "アセットのアクティビティを読み込めません",
|
||||
@@ -659,6 +728,7 @@
|
||||
"unable_to_submit_job": "ジョブを送信できません",
|
||||
"unable_to_trash_asset": "アセットをゴミ箱に移動できません",
|
||||
"unable_to_unlink_account": "アカウントのリンクを解除できません",
|
||||
"unable_to_unlink_motion_video": "モーションビデオのリンクを解除できません",
|
||||
"unable_to_update_album_cover": "アルバムカバーを更新できません",
|
||||
"unable_to_update_album_info": "アルバム情報を更新できません",
|
||||
"unable_to_update_library": "ライブラリを更新できません",
|
||||
@@ -682,6 +752,7 @@
|
||||
"external": "外部",
|
||||
"external_libraries": "外部ライブラリ",
|
||||
"face_unassigned": "未割り当て",
|
||||
"failed_to_load_assets": "アセットのロードに失敗しました",
|
||||
"favorite": "お気に入り",
|
||||
"favorite_or_unfavorite_photo": "写真をお気に入りまたはお気に入り解除",
|
||||
"favorites": "お気に入り",
|
||||
@@ -702,10 +773,13 @@
|
||||
"get_help": "助けを求める",
|
||||
"getting_started": "はじめる",
|
||||
"go_back": "戻る",
|
||||
"go_to_folder": "フォルダへ",
|
||||
"go_to_search": "検索へ",
|
||||
"group_albums_by": "これでアルバムをグループ化…",
|
||||
"group_country": "国でグループ化",
|
||||
"group_no": "グループ化なし",
|
||||
"group_owner": "所有者でグループ化",
|
||||
"group_places_by": "グループ分け...",
|
||||
"group_year": "年でグループ化",
|
||||
"has_quota": "クォータ有り",
|
||||
"hi_user": "こんにちは、{name}( {email})さん",
|
||||
@@ -738,6 +812,7 @@
|
||||
"include_shared_albums": "共有アルバムを含める",
|
||||
"include_shared_partner_assets": "パートナーがシェアしたアセットを含める",
|
||||
"individual_share": "1枚の共有",
|
||||
"individual_shares": "個人の共有",
|
||||
"info": "情報",
|
||||
"interval": {
|
||||
"day_at_onepm": "毎日午後1時",
|
||||
@@ -751,6 +826,8 @@
|
||||
"jobs": "ジョブ",
|
||||
"keep": "保持",
|
||||
"keep_all": "全て保持",
|
||||
"keep_this_delete_others": "これを残してほかを削除する",
|
||||
"kept_this_deleted_others": "このアセットを残して{count, plural, other {#件のアセット}}を削除する",
|
||||
"keyboard_shortcuts": "キーボードショートカット",
|
||||
"language": "言語",
|
||||
"language_setting_description": "優先言語を選択してください",
|
||||
@@ -758,12 +835,14 @@
|
||||
"latest_version": "最新バージョン",
|
||||
"latitude": "緯度",
|
||||
"leave": "標高",
|
||||
"lens_model": "レンズモデル",
|
||||
"let_others_respond": "他のユーザーの返信を許可する",
|
||||
"level": "レベル",
|
||||
"library": "ライブラリ",
|
||||
"library_options": "ライブラリ設定",
|
||||
"light": "ライトモード",
|
||||
"like_deleted": "いいねが削除されました",
|
||||
"link_motion_video": "モーションビデオのリンク",
|
||||
"link_options": "リンクのオプション",
|
||||
"link_to_oauth": "OAuthへリンクする",
|
||||
"linked_oauth_account": "リンクされたOAuthアカウント",
|
||||
@@ -782,6 +861,8 @@
|
||||
"look": "見た目",
|
||||
"loop_videos": "動画をループ",
|
||||
"loop_videos_description": "有効にすると詳細表示で自動的に動画がループします。",
|
||||
"main_branch_warning": "開発版を使っているようです。リリース版の使用を強く推奨します!",
|
||||
"main_menu": "メインメニュー",
|
||||
"make": "メーカー",
|
||||
"manage_shared_links": "共有済みのリンクを管理",
|
||||
"manage_sharing_with_partners": "パートナーとの共有を管理します",
|
||||
@@ -814,6 +895,7 @@
|
||||
"month": "月",
|
||||
"more": "もっと表示",
|
||||
"moved_to_trash": "ゴミ箱に移動しました",
|
||||
"mute_memories": "メモリーのミュート",
|
||||
"my_albums": "私のアルバム",
|
||||
"name": "名前",
|
||||
"name_or_nickname": "名前またはニックネーム",
|
||||
@@ -843,7 +925,7 @@
|
||||
"no_results": "結果がありません",
|
||||
"no_results_description": "同義語やより一般的なキーワードを試してください",
|
||||
"no_shared_albums_message": "アルバムを作成して写真や動画を共有しましょう",
|
||||
"not_in_any_album": "どのアルバムにも入っていません",
|
||||
"not_in_any_album": "どのアルバムにも入っていない",
|
||||
"note_apply_storage_label_to_previously_uploaded assets": "注意: 以前にアップロードしたアセットにストレージラベルを適用するには以下を実行してください",
|
||||
"note_unlimited_quota": "注: 容量を無制限にするには0を入力してください",
|
||||
"notes": "注意",
|
||||
@@ -851,6 +933,7 @@
|
||||
"notifications": "通知",
|
||||
"notifications_setting_description": "通知を管理します",
|
||||
"oauth": "OAuth",
|
||||
"official_immich_resources": "公式Immichリソース",
|
||||
"offline": "オフライン",
|
||||
"offline_paths": "オフラインのパス",
|
||||
"offline_paths_description": "これらの結果は、外部ライブラリの一部ではないファイルを手動で削除したことが原因である可能性があります。",
|
||||
@@ -908,6 +991,7 @@
|
||||
"permanently_deleted_asset": "アセットを完全に削除しました",
|
||||
"permanently_deleted_assets_count": "{count, plural, one {#個} other {#個}}のアセットを完全に削除しました",
|
||||
"person": "人物",
|
||||
"person_birthdate": "{date}生まれ",
|
||||
"person_hidden": "{name}{hidden, select, true { (非表示)} other {}}",
|
||||
"photo_shared_all_users": "写真をすべてのユーザーと共有したか、共有するユーザーがいないようです。",
|
||||
"photos": "写真",
|
||||
@@ -917,6 +1001,7 @@
|
||||
"pick_a_location": "場所を選択",
|
||||
"place": "場所",
|
||||
"places": "撮影場所",
|
||||
"places_count": "{count, plural, other {{count, number}箇所}}",
|
||||
"play": "再生",
|
||||
"play_memories": "メモリーを再生",
|
||||
"play_motion_photo": "モーションビデオを再生",
|
||||
@@ -976,14 +1061,17 @@
|
||||
"reassigned_assets_to_new_person": "{count, plural, one {#個} other {#個}}のアセットを新しい人物に割り当てました",
|
||||
"reassing_hint": "選択されたアセットを既存の人物に割り当て",
|
||||
"recent": "最近",
|
||||
"recent-albums": "最近のアルバム",
|
||||
"recent_searches": "最近の検索",
|
||||
"refresh": "更新",
|
||||
"refresh_encoded_videos": "エンコードされた動画を更新",
|
||||
"refresh_faces": "顔認識を更新",
|
||||
"refresh_metadata": "メタデータを更新",
|
||||
"refresh_thumbnails": "サムネイルを更新",
|
||||
"refreshed": "更新済",
|
||||
"refreshes_every_file": "すべてのファイルを更新",
|
||||
"refreshing_encoded_video": "エンコードされた動画を更新中",
|
||||
"refreshing_faces": "顔認識を更新中",
|
||||
"refreshing_metadata": "メタデータを更新中",
|
||||
"regenerating_thumbnails": "サムネイルを再生成中",
|
||||
"remove": "削除",
|
||||
@@ -995,11 +1083,16 @@
|
||||
"remove_from_album": "アルバムから削除",
|
||||
"remove_from_favorites": "お気に入りから削除",
|
||||
"remove_from_shared_link": "共有リンクから削除",
|
||||
"remove_memory": "メモリーの削除",
|
||||
"remove_photo_from_memory": "メモリーから写真を削除",
|
||||
"remove_url": "URLの削除",
|
||||
"remove_user": "ユーザーを削除",
|
||||
"removed_api_key": "削除されたAPI キー: {name}",
|
||||
"removed_from_archive": "アーカイブから削除されました",
|
||||
"removed_from_favorites": "お気に入りから削除しました",
|
||||
"removed_from_favorites_count": "{count, plural, other {#項目}}お気に入りから削除しました",
|
||||
"removed_memory": "削除されたメモリー",
|
||||
"removed_photo_from_memory": "メモリーから削除された写真",
|
||||
"removed_tagged_assets": "{count, plural, one {#個のアセット} other {#個のアセット}}からタグを削除しました",
|
||||
"rename": "リネーム",
|
||||
"repair": "修復",
|
||||
@@ -1008,6 +1101,7 @@
|
||||
"repository": "リポジトリ",
|
||||
"require_password": "パスワードを要求",
|
||||
"require_user_to_change_password_on_first_login": "ユーザーに初回ログイン時にパスワードの変更を要求する",
|
||||
"rescan": "再スキャン",
|
||||
"reset": "リセット",
|
||||
"reset_password": "パスワードをリセット",
|
||||
"reset_people_visibility": "人物の非表示設定をリセット",
|
||||
@@ -1030,22 +1124,29 @@
|
||||
"saved_settings": "設定を保存しました",
|
||||
"say_something": "何か書き込みましょう",
|
||||
"scan_all_libraries": "全てのライブラリをスキャン",
|
||||
"scan_library": "スキャン",
|
||||
"scan_settings": "スキャン設定",
|
||||
"scanning_for_album": "アルバムをスキャン中…",
|
||||
"search": "検索",
|
||||
"search_albums": "アルバムを検索",
|
||||
"search_by_context": "状況で検索",
|
||||
"search_by_description": "概要で検索",
|
||||
"search_by_description_example": "サパでハイキングした日",
|
||||
"search_by_filename": "ファイル名もしくは拡張子で検索",
|
||||
"search_by_filename_example": "例: IMG_1234.JPG もしくは PNG",
|
||||
"search_camera_make": "カメラメーカーを検索…",
|
||||
"search_camera_model": "カメラのモデルを検索…",
|
||||
"search_city": "市町村を検索…",
|
||||
"search_country": "国を検索…",
|
||||
"search_for": "検索",
|
||||
"search_for_existing_person": "既存の人物を検索",
|
||||
"search_no_people": "人物がいません",
|
||||
"search_no_people_named": "「{name}」という名前の人物がいません",
|
||||
"search_options": "検索オプション",
|
||||
"search_people": "人物を検索",
|
||||
"search_places": "場所を検索",
|
||||
"search_rating": "レートで検索...",
|
||||
"search_settings": "検索設定",
|
||||
"search_state": "都道府県を検索…",
|
||||
"search_tags": "タグを検索...",
|
||||
"search_timezone": "タイムゾーンを検索…",
|
||||
@@ -1054,6 +1155,7 @@
|
||||
"searching_locales": "ロケールを検索…",
|
||||
"second": "秒",
|
||||
"see_all_people": "全ての人物を見る",
|
||||
"select": "選択",
|
||||
"select_album_cover": "アルバムカバーを選択",
|
||||
"select_all": "全て選択",
|
||||
"select_all_duplicates": "全ての重複を選択",
|
||||
@@ -1076,6 +1178,7 @@
|
||||
"server_version": "サーバーバージョン",
|
||||
"set": "設定",
|
||||
"set_as_album_cover": "アルバムカバーとして設定",
|
||||
"set_as_featured_photo": "人物写真に設定",
|
||||
"set_as_profile_picture": "プロフィール画像として設定",
|
||||
"set_date_of_birth": "生年月日を設定",
|
||||
"set_profile_picture": "プロフィール画像を設定",
|
||||
@@ -1090,6 +1193,7 @@
|
||||
"shared_from_partner": "{partner} による写真",
|
||||
"shared_link_options": "共有リンクのオプション",
|
||||
"shared_links": "共有リンク",
|
||||
"shared_links_description": "写真や動画をリンクで共有",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, other {#個の共有された写真と動画}}",
|
||||
"shared_with_partner": "{partner} と共有しました",
|
||||
"sharing": "共有",
|
||||
@@ -1112,6 +1216,8 @@
|
||||
"show_person_options": "人物設定を表示",
|
||||
"show_progress_bar": "プログレスバーを表示",
|
||||
"show_search_options": "検索オプションを表示",
|
||||
"show_shared_links": "共有リンクを表示",
|
||||
"show_slideshow_transition": "スライドショーのトランジションを表示",
|
||||
"show_supporter_badge": "サポーターバッジ",
|
||||
"show_supporter_badge_description": "サポーターバッジを表示",
|
||||
"shuffle": "ランダム",
|
||||
@@ -1121,6 +1227,8 @@
|
||||
"sign_up": "登録",
|
||||
"size": "サイズ",
|
||||
"skip_to_content": "コンテンツへスキップ",
|
||||
"skip_to_folders": "フォルダへスキップ",
|
||||
"skip_to_tags": "タグへスキップ",
|
||||
"slideshow": "スライドショー",
|
||||
"slideshow_settings": "スライドショー設定",
|
||||
"sort_albums_by": "この順序でアルバムをソート…",
|
||||
@@ -1128,6 +1236,7 @@
|
||||
"sort_items": "アイテムの数",
|
||||
"sort_modified": "変更日",
|
||||
"sort_oldest": "古い写真",
|
||||
"sort_people_by_similarity": "似ている順に人物を並び替える",
|
||||
"sort_recent": "最新の写真",
|
||||
"sort_title": "タイトル",
|
||||
"source": "ソース",
|
||||
@@ -1151,12 +1260,17 @@
|
||||
"submit": "送信",
|
||||
"suggestions": "ユーザーリスト",
|
||||
"sunrise_on_the_beach": "海岸の日の出",
|
||||
"support": "サポート",
|
||||
"support_and_feedback": "サポートとフィードバック",
|
||||
"support_third_party_description": "Immichのインストールはサードパーティーによってパッケージ化されています。遭遇した問題はそのパッケージに起因している可能性があるので以下のリンクを使って最初にそのパッケージに問題を提起してください。",
|
||||
"swap_merge_direction": "統合する方向を入れ替え",
|
||||
"sync": "同期",
|
||||
"tag": "タグ付けする",
|
||||
"tag_assets": "アセットにタグ付けする",
|
||||
"tag_created": "タグ: {tag} を作成しました",
|
||||
"tag_feature_description": "意味を持たせたタグトでグループ化して写真と動画を閲覧する",
|
||||
"tag_not_found_question": "タグが見つかりませんか? <link>こちら</link>からタグを作成できます",
|
||||
"tag_people": "人物タグ",
|
||||
"tag_updated": "タグ: {tag} を更新しました",
|
||||
"tagged_assets": "{count, plural, one {#個のアセット} other {#個のアセット}}をタグ付けしました",
|
||||
"tags": "タグ",
|
||||
@@ -1165,15 +1279,19 @@
|
||||
"theme_selection": "テーマ選択",
|
||||
"theme_selection_description": "ブラウザのシステム設定に基づいてテーマを明色または暗色に自動的に設定します",
|
||||
"they_will_be_merged_together": "これらは一緒に統合されます",
|
||||
"third_party_resources": "サードパーティーリソース",
|
||||
"time_based_memories": "時間によるメモリー",
|
||||
"timeline": "タイムライン",
|
||||
"timezone": "タイムゾーン",
|
||||
"to_archive": "アーカイブ",
|
||||
"to_change_password": "パスワードを変更",
|
||||
"to_favorite": "お気に入り",
|
||||
"to_login": "ログイン",
|
||||
"to_parent": "上位の階層へ",
|
||||
"to_trash": "ゴミ箱",
|
||||
"toggle_settings": "設定をトグル",
|
||||
"toggle_theme": "ダークテーマを切り替え",
|
||||
"total": "合計",
|
||||
"total_usage": "総使用量",
|
||||
"trash": "ゴミ箱",
|
||||
"trash_all": "全て削除",
|
||||
@@ -1187,10 +1305,13 @@
|
||||
"unfavorite": "お気に入りから外す",
|
||||
"unhide_person": "人物の非表示を解除",
|
||||
"unknown": "不明",
|
||||
"unknown_country": "不明な国",
|
||||
"unknown_year": "不明な年",
|
||||
"unlimited": "無制限",
|
||||
"unlink_motion_video": "モーションビデオのリンクを解除",
|
||||
"unlink_oauth": "OAuthのリンクを解除",
|
||||
"unlinked_oauth_account": "リンクが解除されたOAuthアカウント",
|
||||
"unmute_memories": "メモリーのミュートを解除",
|
||||
"unnamed_album": "無名のアルバム",
|
||||
"unnamed_album_delete_confirmation": "本当にこのアルバムを削除しますか?",
|
||||
"unnamed_share": "無名の共有",
|
||||
@@ -1231,7 +1352,9 @@
|
||||
"variables": "変数",
|
||||
"version": "バージョン",
|
||||
"version_announcement_closing": "あなたの友人、Alex",
|
||||
"version_announcement_message": "こんにちは、親愛なる皆様へ。アプリの新しいバージョンがありますので、構成の不整合を防ぐために<link>リリースノート</link>にアクセスし、<code>docker-compose.yml</code>、及び<code>.cnv</code>の設定が最新か確認してください。特に自動的にアプリの更新を制御するWatchTowerやその他システムを利用している場合に当てはまります。",
|
||||
"version_announcement_message": "こんにちは! 新しいバージョンのImmichがリリースされました。特にWatchTowerやImmichインスタンスを自動的に更新する仕組みを設けている場合は<link>リリースノート</link>をよく読んで設定が最新のものになっているか確認してください。",
|
||||
"version_history": "バージョン履歴",
|
||||
"version_history_item": "{date}に{version}をインストール",
|
||||
"video": "動画",
|
||||
"video_hover_setting": "ホバー時にサムネイルで動画を再生",
|
||||
"video_hover_setting_description": "マウスが項目の上にあるときに動画のサムネイルを再生します。無効時でも再生アイコンにカーソルを合わせると再生を開始できます。",
|
||||
@@ -1242,7 +1365,9 @@
|
||||
"view_all": "すべて見る",
|
||||
"view_all_users": "全てのユーザーを確認する",
|
||||
"view_in_timeline": "タイムラインで見る",
|
||||
"view_link": "リンクを見る",
|
||||
"view_links": "リンクを確認する",
|
||||
"view_name": "分類",
|
||||
"view_next_asset": "次のアセットを見る",
|
||||
"view_previous_asset": "前のアセットを見る",
|
||||
"view_stack": "ビュースタック",
|
||||
@@ -1251,10 +1376,10 @@
|
||||
"warning": "警告",
|
||||
"week": "週",
|
||||
"welcome": "ようこそ",
|
||||
"welcome_to_immich": "immichにようこそ",
|
||||
"welcome_to_immich": "Immichにようこそ",
|
||||
"year": "年",
|
||||
"years_ago": "{years, plural, one {#年} other {#年}}前",
|
||||
"yes": "はい",
|
||||
"you_dont_have_any_shared_links": "共有リンクはありません",
|
||||
"zoom_image": "画像を拡大"
|
||||
}
|
||||
}
|
||||
|
||||
165
i18n/ka.json
Normal file
165
i18n/ka.json
Normal file
@@ -0,0 +1,165 @@
|
||||
{
|
||||
"about": "შესახებ",
|
||||
"account": "ანგარიში",
|
||||
"account_settings": "ანგარიშის პარამეტრები",
|
||||
"acknowledge": "მიღება",
|
||||
"action": "ქმედება",
|
||||
"actions": "ქმედებები",
|
||||
"active": "აქტიური",
|
||||
"activity": "აქტივობა",
|
||||
"add": "დამატება",
|
||||
"add_a_description": "დაამატე აღწერა",
|
||||
"add_a_location": "დაამატე ადგილი",
|
||||
"add_a_name": "დაამატე სახელი",
|
||||
"add_a_title": "დაასათაურე",
|
||||
"add_import_path": "დაამატე საიმპორტო მისამართი",
|
||||
"add_location": "დაამატე ადგილი",
|
||||
"add_more_users": "დაამატე მომხმარებლები",
|
||||
"add_partner": "დაამატე პარტნიორი",
|
||||
"add_path": "დაამატე მისამართი",
|
||||
"add_photos": "დაამატე ფოტოები",
|
||||
"add_to_album": "დაამატე ალბომში",
|
||||
"add_to_shared_album": "დაამატე საზიარო ალბომში",
|
||||
"add_url": "დაამატე URL",
|
||||
"added_to_archive": "დაარქივდა",
|
||||
"added_to_favorites": "დაამატე რჩეულებში",
|
||||
"added_to_favorites_count": "{count, number} დაემატა რჩეულებში",
|
||||
"admin": {
|
||||
"authentication_settings": "ავთენტიკაციის პარამეტრები",
|
||||
"authentication_settings_description": "პაროლის, OAuth-ის და სხვა ავტენთიფიკაციის პარამეტრების მართვა",
|
||||
"authentication_settings_disable_all": "ნამდვილად გინდა ავტორიზაციის ყველა მეთოდის გამორთვა? ავტორიზაციას ვეღარანაირად შეძლებ.",
|
||||
"authentication_settings_reenable": "რეაქტივაციისთვის, გამოიყენე <link>სერვერის ბრძანება</link>.",
|
||||
"background_task_job": "ფონური დავალებები",
|
||||
"backup_database": "შექმენი სარეზერვო ასლი",
|
||||
"backup_database_enable_description": "ჩართე სარეზერვო ასლების ფუნქცია",
|
||||
"backup_keep_last_amount": "შესანახი სარეზერვო ასლების რაოდენობა",
|
||||
"backup_settings": "სარეზერვო ასლების პარამეტრები",
|
||||
"backup_settings_description": "მონაცემთა ბაზის სარეზერვო ასლების პარამეტრების მართვა",
|
||||
"check_all": "შეამოწმე ყველა",
|
||||
"cleanup": "გასუფთავება",
|
||||
"confirm_delete_library": "ნამდვილად გინდა {library} ბიბლიოთეკის წაშლა?",
|
||||
"confirm_email_below": "დასადასტურებლად, ქვემოთ აკრიფე \"{email}\"",
|
||||
"confirm_user_password_reset": "ნამდვილად გინდა {user}-(ი)ს პაროლის დარესეტება?",
|
||||
"disable_login": "გამორთე ავტორიზაცია",
|
||||
"external_library_management": "გარე ბიბლიოთეკების მართვა",
|
||||
"face_detection": "სახის ამოცნობა",
|
||||
"image_format": "ფორმატი",
|
||||
"image_fullsize_title": "სრული ზომის გამოსახულების პარამეტრები",
|
||||
"image_quality": "ხარისხი",
|
||||
"image_resolution": "გაფართოება",
|
||||
"image_settings": "გამოსახულების პარამეტრები",
|
||||
"image_settings_description": "გენერირებული ფოტოების ხარისხისა და რეზოლუციის მართვა",
|
||||
"image_thumbnail_description": "მინიატურა მეტაინფორმაციის გარეშე, რომელიც ფოტოები ჯგუფურად თვალიერებისას გამოიყენება(მაგ. მთავარ თაიმლაინზე)",
|
||||
"image_thumbnail_quality_description": "მინიატურის ხარისხი 1-დან 100-მდე. დიდი რიცხვი შეესაბამება უკეთეს ხარისხს, თუმცა, უფრო დიდ ფაილებს და აპლიკაციის შესაძლო შენელებას.",
|
||||
"image_thumbnail_title": "მინიატურის პარამეტრები",
|
||||
"library_created": "შეიქმნა ბიბლიოთეკა: {library}",
|
||||
"library_deleted": "ბიბლიოთეკა წაიშალა",
|
||||
"library_import_path_description": "აირჩიე დასაიმპორტებელი საქაღალდე. ფოტოები და ვიდეოები მოიძებნება ამ საქაღალდესა და მასში არსებულ საქაღალდეებში.",
|
||||
"library_settings_description": "გარე ბიბლიოთეკების პარამეტრების მართვა",
|
||||
"logging_settings": "ჟურნალი",
|
||||
"map_settings": "რუკა",
|
||||
"migration_job": "მიგრაცია",
|
||||
"oauth_scope": "დიაპაზონი",
|
||||
"oauth_settings": "OAuth",
|
||||
"template_email_preview": "მინიატურა",
|
||||
"transcoding_acceleration_vaapi": "VAAPI",
|
||||
"transcoding_threads": "ნაკადები",
|
||||
"transcoding_tone_mapping": "ტონების ასახვა"
|
||||
},
|
||||
"administration": "ადმინისტრაცია",
|
||||
"advanced": "დამატებით",
|
||||
"albums": "ალბომები",
|
||||
"all": "ყველა",
|
||||
"anti_clockwise": "საათის ისრის საწინააღმდეგო",
|
||||
"archive": "არქივი",
|
||||
"asset_hashing": "დაჰეშვა.…",
|
||||
"asset_skipped": "გამოტოვებულია",
|
||||
"asset_uploaded": "ატვირთულია",
|
||||
"asset_uploading": "მიმდინარეობს ატვირთვა…",
|
||||
"assets": "ობიექტები",
|
||||
"back": "უკან",
|
||||
"backward": "უკან გადასვლა",
|
||||
"build": "აგება",
|
||||
"camera": "კამერა",
|
||||
"cancel": "გაუქმება",
|
||||
"city": "ქალაქი",
|
||||
"clear": "გასუფთავება",
|
||||
"clockwise": "საათის ისრის მიმართულებით",
|
||||
"close": "დახურვა",
|
||||
"collapse": "აკეცვა",
|
||||
"color": "ფერი",
|
||||
"confirm": "დასტური",
|
||||
"contain": "შეიცავს",
|
||||
"context": "კონტექსტი",
|
||||
"continue": "გაგრძელება",
|
||||
"country": "ქვეყანა",
|
||||
"cover": "ყდა",
|
||||
"covers": "ყდები",
|
||||
"create": "შექმნა",
|
||||
"created": "შექმნილია",
|
||||
"dark": "მუქი",
|
||||
"day": "დღე",
|
||||
"delete": "წაშლა",
|
||||
"description": "აღწერა",
|
||||
"details": "დეტალები",
|
||||
"direction": "მიმართულება",
|
||||
"disabled": "გათიშულია",
|
||||
"discord": "Discord",
|
||||
"discover": "აღმოჩენა",
|
||||
"documentation": "დოკუმენტაცია",
|
||||
"done": "მზადაა",
|
||||
"download": "გადმოწერა",
|
||||
"download_settings": "გადმოწერა",
|
||||
"downloading": "მიმდინარეობს გადმოწერა",
|
||||
"duplicates": "დუბლიკატები",
|
||||
"duration": "ხანგრძლივობა",
|
||||
"edit": "ჩასწორება",
|
||||
"edited": "ჩასწორებულია",
|
||||
"editor": "რედაქტორი",
|
||||
"editor_crop_tool_h2_rotation": "ტრიალი",
|
||||
"email": "ელფოსტა",
|
||||
"enable": "ჩართვა",
|
||||
"enabled": "ჩართულია",
|
||||
"error": "შეცდომა",
|
||||
"exif": "Exif",
|
||||
"expired": "ვადაამოწურულია",
|
||||
"explore": "დათვალიერება",
|
||||
"explorer": "გამცილებელი",
|
||||
"export": "გატანა",
|
||||
"extension": "გაფართოება",
|
||||
"external": "გარე",
|
||||
"face_unassigned": "მიუნიჭებელი",
|
||||
"favorite": "რჩეული",
|
||||
"favorites": "რჩეულები",
|
||||
"features": "თვისებები",
|
||||
"filename": "ფაილის სახელი",
|
||||
"filetype": "ფაილის ტიპი",
|
||||
"folders": "საქაღალდეები",
|
||||
"forward": "წინ",
|
||||
"general": "ზოგადი",
|
||||
"host": "ჰოსტი",
|
||||
"hour": "საათი",
|
||||
"image": "გამოსახულება",
|
||||
"info": "ინფორმაცია",
|
||||
"jobs": "დავალებები",
|
||||
"keep": "შენარჩუნება",
|
||||
"language": "ენა",
|
||||
"latitude": "განედი",
|
||||
"leave": "გასვლა",
|
||||
"level": "დონე",
|
||||
"library": "ბიბლიოთეკა",
|
||||
"light": "ღია",
|
||||
"list": "სია",
|
||||
"loading": "ჩატვირთვა",
|
||||
"login": "შესვლა",
|
||||
"longitude": "გრძედი",
|
||||
"look": "შეხედვა",
|
||||
"make": "მწარმოებელი",
|
||||
"map": "რუკა",
|
||||
"matches": "დამთხვევები",
|
||||
"memories": "მოგონებები",
|
||||
"memory": "მეხსიერება",
|
||||
"menu": "მენიუ",
|
||||
"merge": "შერწყმა",
|
||||
"minimize": "დაპატარავება"
|
||||
}
|
||||
1
i18n/kk.json
Normal file
1
i18n/kk.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
1
i18n/kn.json
Normal file
1
i18n/kn.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
73
i18n/ko.json
73
i18n/ko.json
@@ -41,6 +41,7 @@
|
||||
"backup_settings": "백업 설정",
|
||||
"backup_settings_description": "데이터베이스 백업 설정 관리",
|
||||
"check_all": "모두 확인",
|
||||
"cleanup": "정리",
|
||||
"cleared_jobs": "작업 중단: {job}",
|
||||
"config_set_by_file": "현재 설정은 구성 파일에 의해 관리됩니다.",
|
||||
"confirm_delete_library": "{library} 라이브러리를 삭제하시겠습니까?",
|
||||
@@ -96,7 +97,7 @@
|
||||
"library_scanning_enable_description": "주기적인 라이브러리 스캔 활성화",
|
||||
"library_settings": "외부 라이브러리",
|
||||
"library_settings_description": "외부 라이브러리 설정 관리",
|
||||
"library_tasks_description": "라이브러리 구성 및 확인 작업 수행",
|
||||
"library_tasks_description": "외부 라이브러리에서 새 자산 및/또는 변경된 자산을 검색합니다",
|
||||
"library_watching_enable_description": "외부 라이브러리의 파일 변경 감시",
|
||||
"library_watching_settings": "라이브러리 감시 (실험 기능)",
|
||||
"library_watching_settings_description": "파일 변겅을 자동으로 감지",
|
||||
@@ -147,6 +148,8 @@
|
||||
"map_settings": "지도",
|
||||
"map_settings_description": "지도 설정 관리",
|
||||
"map_style_description": "지도 테마 style.json URL",
|
||||
"memory_cleanup_job": "메모리 정리",
|
||||
"memory_generate_job": "메모리 생성",
|
||||
"metadata_extraction_job": "메타데이터 추출",
|
||||
"metadata_extraction_job_description": "각 항목에서 GPS, 인물 및 해상도 등의 메타데이터 정보 추출",
|
||||
"metadata_faces_import_setting": "얼굴 가져오기 활성화",
|
||||
@@ -240,7 +243,7 @@
|
||||
"storage_template_hash_verification_enabled_description": "해시 검증을 활성화합니다. 이 설정의 결과를 확실히 이해하지 않는 한 비활성화하지 마세요.",
|
||||
"storage_template_migration": "스토리지 템플릿 마이그레이션",
|
||||
"storage_template_migration_description": "이전에 업로드된 항목에 현재 <link>{template}</link> 적용",
|
||||
"storage_template_migration_info": "템플릿 변경 사항은 새 업로드 항목부터 적용됩니다. 기존 항목에도 적용하려면 <link>{job}</link>을 실행하세요.",
|
||||
"storage_template_migration_info": "저장소 템플릿은 모든 확장자를 소문자로 변환합니다. 템플릿 변경 사항은 새 자산에만 적용됩니다. 이전에 업로드한 자산에 템플릿을 적용하려면 <link>{job}</link>를 실행하세요.",
|
||||
"storage_template_migration_job": "스토리지 템플릿 마이그레이션 작업",
|
||||
"storage_template_more_details": "이 기능에 대한 자세한 내용은 <template-link>스토리지 템플릿</template-link> 및 <implications-link>설명</implications-link>을 참조하세요.",
|
||||
"storage_template_onboarding_description": "이 기능을 활성화하면 사용자 정의 템플릿을 사용하여 파일을 자동으로 정리할 수 있습니다. 안정성 문제로 인해 해당 기능은 기본적으로 비활성화되어 있습니다. 자세한 내용은 <link>문서</link>를 참조하세요.",
|
||||
@@ -250,10 +253,16 @@
|
||||
"storage_template_user_label": "사용자의 스토리지 레이블: <code>{label}</code>",
|
||||
"system_settings": "시스템 설정",
|
||||
"tag_cleanup_job": "태그 정리",
|
||||
"template_email_available_tags": "템플릿에서 다음 변수를 사용할 수 있습니다: {tags}",
|
||||
"template_email_if_empty": "비어 있는 경우 기본 템플릿이 사용됩니다.",
|
||||
"template_email_invite_album": "앨범 템플릿 초대",
|
||||
"template_email_preview": "미리보기",
|
||||
"template_email_settings": "이메일 템플릿",
|
||||
"template_email_settings_description": "사용자 정의 이메일 템플릿 관리",
|
||||
"template_email_update_album": "앨범 템플릿 업데이트",
|
||||
"template_email_welcome": "이메일 템플릿에 오신것을 환영합니다",
|
||||
"template_settings": "알림 템플릿",
|
||||
"template_settings_description": "알림을 위한 사용자 지정 템플릿을 관리합니다.",
|
||||
"theme_custom_css_settings": "사용자 정의 CSS",
|
||||
"theme_custom_css_settings_description": "Immich에 적용할 사용자 정의 CSS(Cascading Style Sheets) 설정",
|
||||
"theme_settings": "테마 설정",
|
||||
@@ -278,11 +287,13 @@
|
||||
"transcoding_audio_codec_description": "Opus는 가장 좋은 품질의 옵션이지만 기기 및 소프트웨어가 오래된 경우 호환되지 않을 수 있습니다.",
|
||||
"transcoding_bitrate_description": "최대 비트레이트를 초과하는 동영상 또는 허용되지 않는 형식의 동영상",
|
||||
"transcoding_codecs_learn_more": "여기에서 사용되는 용어에 대한 자세한 내용은 FFmpeg 문서의 <h264-link>H.264 코덱</h264-link>, <hevc-link>HEVC 코덱</hevc-link> 및 <vp9-link>VP9 코덱</vp9-link> 항목을 참조하세요.",
|
||||
"transcoding_constant_quality_mode": "Constant quality mode",
|
||||
"transcoding_constant_quality_mode": "고정 품질 모드",
|
||||
"transcoding_constant_quality_mode_description": "ICQ는 CQP보다 나은 성능을 보이나 일부 기기의 하드웨어 가속에서 지원되지 않을 수 있습니다. 이 옵션을 설정하면 품질 기반 인코딩 시 지정된 모드를 우선적으로 사용합니다. NVENC에서는 ICQ를 지원하지 않아 이 설정이 적용되지 않습니다.",
|
||||
"transcoding_constant_rate_factor": "Constant rate factor (-crf)",
|
||||
"transcoding_constant_rate_factor": "상수 비율 계수(-CRF)",
|
||||
"transcoding_constant_rate_factor_description": "일반적으로 H.264는 23, HEVC는 28, VP9는 31, AV1는 35를 사용합니다. 값이 낮으면 품질이 향상되지만 파일 크기가 증가합니다.",
|
||||
"transcoding_disabled_description": "동영상을 트랜스코딩하지 않음. 일부 기기에서 재생이 불가능할 수 있습니다.",
|
||||
"transcoding_encoding_options": "인코딩 옵션",
|
||||
"transcoding_encoding_options_description": "인코딩된 동영상의 코덱, 해상도, 품질 및 기타 옵션을 설정합니다",
|
||||
"transcoding_hardware_acceleration": "하드웨어 가속",
|
||||
"transcoding_hardware_acceleration_description": "실험적인 기능입니다. 속도가 향상되지만 동일 비트레이트에서 품질이 상대적으로 낮을 수 있습니다.",
|
||||
"transcoding_hardware_decoding": "하드웨어 디코딩",
|
||||
@@ -295,6 +306,8 @@
|
||||
"transcoding_max_keyframe_interval": "최대 키프레임 간격",
|
||||
"transcoding_max_keyframe_interval_description": "키프레임 사이 최대 프레임 거리를 설정합니다. 값이 낮으면 압축 효율이 저하되지만 검색 시간이 개선되고 빠른 움직임이 있는 장면에서 품질이 향상됩니다. 0을 입력한 경우 자동으로 설정합니다.",
|
||||
"transcoding_optimal_description": "목표 해상도보다 높은 동영상 또는 허용되지 않는 형식의 동영상",
|
||||
"transcoding_policy": "트랜스코드 정책",
|
||||
"transcoding_policy_description": "동영상 트랜스코딩 시기 설정하기",
|
||||
"transcoding_preferred_hardware_device": "선호하는 하드웨어 기기",
|
||||
"transcoding_preferred_hardware_device_description": "하드웨어 트랜스코딩에 사용할 dri 노드를 설정합니다. (VAAPI와 QSV만 해당)",
|
||||
"transcoding_preset_preset": "프리셋 (-preset)",
|
||||
@@ -303,10 +316,10 @@
|
||||
"transcoding_reference_frames_description": "특정 프레임을 압축할 때 참조하는 프레임 수를 설정합니다. 값이 높으면 압축 효율이 향상되나 인코딩 속도가 저하됩니다. 0을 입력한 경우 자동으로 설정합니다.",
|
||||
"transcoding_required_description": "허용된 형식이 아닌 동영상만",
|
||||
"transcoding_settings": "동영상 트랜스코딩 설정",
|
||||
"transcoding_settings_description": "동영상 파일의 해상도 및 인코딩 정보 관리",
|
||||
"transcoding_settings_description": "트랜스코딩할 동영상과 처리 방법 관리하기",
|
||||
"transcoding_target_resolution": "목표 해상도",
|
||||
"transcoding_target_resolution_description": "높은 해상도를 선택한 경우 세부 묘사의 손실을 최소화할 수 있지만, 인코딩 시간과 파일 크기가 증가하여 앱의 반응 속도가 느려질 수 있습니다.",
|
||||
"transcoding_temporal_aq": "Temporal AQ",
|
||||
"transcoding_temporal_aq": "일시적 AQ",
|
||||
"transcoding_temporal_aq_description": "세부 묘사가 많고 움직임이 적은 장면의 품질이 향상됩니다. 오래된 기기와 호환되지 않을 수 있습니다. (NVENC만 해당)",
|
||||
"transcoding_threads": "스레드",
|
||||
"transcoding_threads_description": "값이 높으면 인코딩 속도가 향상되지만 리소스 사용량이 증가합니다. 값은 CPU 코어 수보다 작아야 하며, 설정하지 않으려면 0을 입력합니다.",
|
||||
@@ -381,6 +394,7 @@
|
||||
"allow_edits": "편집자로 설정",
|
||||
"allow_public_user_to_download": "모든 사용자의 다운로드 허용",
|
||||
"allow_public_user_to_upload": "모든 사용자의 업로드 허용",
|
||||
"alt_text_qr_code": "QR코드 이미지",
|
||||
"anti_clockwise": "반시계 방향",
|
||||
"api_key": "API 키",
|
||||
"api_key_description": "이 값은 한 번만 표시됩니다. 창을 닫기 전 반드시 복사해주세요.",
|
||||
@@ -471,7 +485,9 @@
|
||||
"comments_are_disabled": "댓글이 비활성화되었습니다.",
|
||||
"confirm": "확인",
|
||||
"confirm_admin_password": "관리자 비밀번호 확인",
|
||||
"confirm_delete_face": "에셋에서 {name} 얼굴을 삭제하시겠습니까?",
|
||||
"confirm_delete_shared_link": "이 공유 링크를 삭제하시겠습니까?",
|
||||
"confirm_keep_this_delete_others": "이 에셋을 제외한 스택의 다른 모든 에셋이 삭제됩니다. 계속하시겠습니까?",
|
||||
"confirm_password": "비밀번호 확인",
|
||||
"contain": "맞춤",
|
||||
"context": "내용",
|
||||
@@ -512,15 +528,21 @@
|
||||
"date_range": "날짜 범위",
|
||||
"day": "일",
|
||||
"deduplicate_all": "모두 삭제",
|
||||
"deduplication_criteria_1": "이미지 크기(바이트)",
|
||||
"deduplication_criteria_2": "EXIF 데이터 개수",
|
||||
"deduplication_info": "중복 제거 정보",
|
||||
"deduplication_info_description": "자산을 자동으로 미리 선택하고 일괄적으로 중복을 제거하려면 다음을 살펴보세요:",
|
||||
"default_locale": "기본 로케일",
|
||||
"default_locale_description": "브라우저 로케일에 따른 날짜 및 숫자 형식 지정",
|
||||
"delete": "삭제",
|
||||
"delete_album": "앨범 삭제",
|
||||
"delete_api_key_prompt": "API 키를 삭제하시겠습니까?",
|
||||
"delete_duplicates_confirmation": "비슷한 항목들을 영구적으로 삭제하시겠습니까?",
|
||||
"delete_face": "얼굴 삭제",
|
||||
"delete_key": "키 삭제",
|
||||
"delete_library": "라이브러리 삭제",
|
||||
"delete_link": "링크 삭제",
|
||||
"delete_others": "다른 사람 삭제",
|
||||
"delete_shared_link": "공유 링크 삭제",
|
||||
"delete_tag": "태그 삭제",
|
||||
"delete_tag_confirmation_prompt": "{tagName} 태그를 삭제하시겠습니까?",
|
||||
@@ -532,7 +554,7 @@
|
||||
"direction": "방향",
|
||||
"disabled": "비활성화됨",
|
||||
"disallow_edits": "뷰어로 설정",
|
||||
"discord": "Discord",
|
||||
"discord": "디스코드",
|
||||
"discover": "탐색",
|
||||
"dismiss_all_errors": "모든 오류 무시",
|
||||
"dismiss_error": "오류 무시",
|
||||
@@ -579,11 +601,12 @@
|
||||
"editor_crop_tool_h2_rotation": "회전",
|
||||
"email": "이메일",
|
||||
"empty_trash": "휴지통 비우기",
|
||||
"empty_trash_confirmation": "휴지통을 비우시겠습니까? 휴지통에 있는 모든 항목이 Immich에서 영구적으로 삭제됩니다. 이 작업은 되돌릴 수 없습니다!",
|
||||
"empty_trash_confirmation": "휴지통을 비우시겠습니까? 휴지통에 있는 모든 항목이 Immich에서 영구적으로 삭제됩니다.\n이 작업은 되돌릴 수 없습니다!",
|
||||
"enable": "활성화",
|
||||
"enabled": "활성화됨",
|
||||
"end_date": "종료일",
|
||||
"error": "오류",
|
||||
"error_delete_face": "에셋에서 얼굴 삭제 오류",
|
||||
"error_loading_image": "이미지 로드 오류",
|
||||
"error_title": "오류 - 문제가 발생했습니다",
|
||||
"errors": {
|
||||
@@ -611,6 +634,7 @@
|
||||
"failed_to_create_shared_link": "공유 링크를 생성하지 못했습니다.",
|
||||
"failed_to_edit_shared_link": "공유 링크를 수정하지 못했습니다.",
|
||||
"failed_to_get_people": "인물 로드 실패",
|
||||
"failed_to_keep_this_delete_others": "이 자산을 유지하고 다른 자산을 삭제하지 못했습니다",
|
||||
"failed_to_load_asset": "항목 로드 실패",
|
||||
"failed_to_load_assets": "항목 로드 실패",
|
||||
"failed_to_load_people": "인물 로드 실패",
|
||||
@@ -725,6 +749,7 @@
|
||||
"external": "외부",
|
||||
"external_libraries": "외부 라이브러리",
|
||||
"face_unassigned": "알 수 없음",
|
||||
"failed_to_load_assets": "에셋 로드에 실패했습니다",
|
||||
"favorite": "즐겨찾기",
|
||||
"favorite_or_unfavorite_photo": "즐겨찾기 추가/제거",
|
||||
"favorites": "즐겨찾기",
|
||||
@@ -745,10 +770,13 @@
|
||||
"get_help": "도움 요청",
|
||||
"getting_started": "시작하기",
|
||||
"go_back": "뒤로",
|
||||
"go_to_folder": "폴더로 이동",
|
||||
"go_to_search": "검색으로 이동",
|
||||
"group_albums_by": "다음으로 앨범 그룹화...",
|
||||
"group_country": "국가별 그룹화",
|
||||
"group_no": "그룹화 없음",
|
||||
"group_owner": "소유자로 그룹화",
|
||||
"group_places_by": "장소 그룹화 기준...",
|
||||
"group_year": "연도로 그룹화",
|
||||
"has_quota": "할당량",
|
||||
"hi_user": "안녕하세요 {name}님, ({email})",
|
||||
@@ -781,6 +809,7 @@
|
||||
"include_shared_albums": "공유 앨범 포함",
|
||||
"include_shared_partner_assets": "파트너가 공유한 항목 포함",
|
||||
"individual_share": "개인 공유",
|
||||
"individual_shares": "개별 공유",
|
||||
"info": "정보",
|
||||
"interval": {
|
||||
"day_at_onepm": "매일 오후 1시",
|
||||
@@ -794,6 +823,8 @@
|
||||
"jobs": "작업",
|
||||
"keep": "유지",
|
||||
"keep_all": "모두 유지",
|
||||
"keep_this_delete_others": "이 항목은 보관하고 다른 항목은 삭제",
|
||||
"kept_this_deleted_others": "이 자산을 유지하고 {count, plural, one {# asset} other {# assets}}을 삭제했습니다",
|
||||
"keyboard_shortcuts": "키보드 단축키",
|
||||
"language": "언어",
|
||||
"language_setting_description": "선호하는 언어 선택",
|
||||
@@ -801,6 +832,7 @@
|
||||
"latest_version": "최신 버전",
|
||||
"latitude": "위도",
|
||||
"leave": "나가기",
|
||||
"lens_model": "카메라 렌즈 모델",
|
||||
"let_others_respond": "다른 사용자의 반응 허용",
|
||||
"level": "레벨",
|
||||
"library": "라이브러리",
|
||||
@@ -859,6 +891,7 @@
|
||||
"month": "월",
|
||||
"more": "더보기",
|
||||
"moved_to_trash": "휴지통으로 이동되었습니다.",
|
||||
"mute_memories": "추억 음소거",
|
||||
"my_albums": "내 앨범",
|
||||
"name": "이름",
|
||||
"name_or_nickname": "이름 또는 닉네임",
|
||||
@@ -954,6 +987,7 @@
|
||||
"permanently_deleted_asset": "항목이 영구적으로 삭제되었습니다.",
|
||||
"permanently_deleted_assets_count": "항목 {count, plural, one {#개} other {#개}}가 영구적으로 삭제되었습니다.",
|
||||
"person": "인물",
|
||||
"person_birthdate": "{date} 출생",
|
||||
"person_hidden": "{name}{hidden, select, true { (숨김)} other {}}",
|
||||
"photo_shared_all_users": "이미 모든 사용자와 사진을 공유 중이거나 다른 사용자가 없는 것 같습니다.",
|
||||
"photos": "사진",
|
||||
@@ -963,6 +997,7 @@
|
||||
"pick_a_location": "위치 선택",
|
||||
"place": "장소",
|
||||
"places": "장소",
|
||||
"places_count": "{count, plural, one {{count, number} 장소} other {{count, number} 장소}}",
|
||||
"play": "재생",
|
||||
"play_memories": "추억 재생",
|
||||
"play_motion_photo": "모션 포토 재생",
|
||||
@@ -1022,6 +1057,7 @@
|
||||
"reassigned_assets_to_new_person": "항목 {count, plural, one {#개} other {#개}}가 새 인물에 할당되었습니다.",
|
||||
"reassing_hint": "기존 인물에 선택한 항목 할당",
|
||||
"recent": "최근",
|
||||
"recent-albums": "최근 앨범",
|
||||
"recent_searches": "최근 검색",
|
||||
"refresh": "새로고침",
|
||||
"refresh_encoded_videos": "동영상 재인코딩",
|
||||
@@ -1043,11 +1079,16 @@
|
||||
"remove_from_album": "앨범에서 제거",
|
||||
"remove_from_favorites": "즐겨찾기에서 제거",
|
||||
"remove_from_shared_link": "공유 링크에서 제거",
|
||||
"remove_memory": "추억 제거",
|
||||
"remove_photo_from_memory": "이 추억에서 사진 제거",
|
||||
"remove_url": "URL 제거",
|
||||
"remove_user": "사용자 삭제",
|
||||
"removed_api_key": "API 키 삭제: {name}",
|
||||
"removed_from_archive": "보관함에서 제거되었습니다.",
|
||||
"removed_from_favorites": "즐겨찾기에서 제거되었습니다.",
|
||||
"removed_from_favorites_count": "즐겨찾기에서 항목 {count, plural, other {#개}} 제거됨",
|
||||
"removed_memory": "추억 제거",
|
||||
"removed_photo_from_memory": "이 추억에서 사진 제거",
|
||||
"removed_tagged_assets": "항목 {count, plural, one {#개} other {#개}}에서 태그를 제거함",
|
||||
"rename": "이름 바꾸기",
|
||||
"repair": "수리",
|
||||
@@ -1056,6 +1097,7 @@
|
||||
"repository": "리포지터리",
|
||||
"require_password": "비밀번호 필요",
|
||||
"require_user_to_change_password_on_first_login": "사용자가 처음 로그인할 때 비밀번호를 변경하도록 요구",
|
||||
"rescan": "재검색",
|
||||
"reset": "초기화",
|
||||
"reset_password": "비밀번호 재설정",
|
||||
"reset_people_visibility": "인물 표시 여부 초기화",
|
||||
@@ -1092,12 +1134,14 @@
|
||||
"search_camera_model": "카메라 모델명 검색...",
|
||||
"search_city": "도시 검색...",
|
||||
"search_country": "국가 검색...",
|
||||
"search_for": "검색",
|
||||
"search_for_existing_person": "존재하는 인물 검색",
|
||||
"search_no_people": "인물이 없습니다.",
|
||||
"search_no_people_named": "\"{name}\" 인물을 찾을 수 없음",
|
||||
"search_options": "검색 옵션",
|
||||
"search_people": "인물 검색",
|
||||
"search_places": "장소 검색",
|
||||
"search_rating": "등급으로 검색...",
|
||||
"search_settings": "설정 검색",
|
||||
"search_state": "지역 검색...",
|
||||
"search_tags": "태그로 검색...",
|
||||
@@ -1107,6 +1151,7 @@
|
||||
"searching_locales": "로케일 검색...",
|
||||
"second": "초",
|
||||
"see_all_people": "모든 인물 보기",
|
||||
"select": "선택",
|
||||
"select_album_cover": "앨범 커버 변경",
|
||||
"select_all": "모두 선택",
|
||||
"select_all_duplicates": "모두 선택",
|
||||
@@ -1129,6 +1174,7 @@
|
||||
"server_version": "서버 버전",
|
||||
"set": "설정",
|
||||
"set_as_album_cover": "앨범 커버로 설정",
|
||||
"set_as_featured_photo": "추천 사진으로 설정",
|
||||
"set_as_profile_picture": "프로필 사진으로 설정",
|
||||
"set_date_of_birth": "생년월일 설정",
|
||||
"set_profile_picture": "프로필 사진으로 설정",
|
||||
@@ -1143,6 +1189,7 @@
|
||||
"shared_from_partner": "{partner}님의 사진",
|
||||
"shared_link_options": "공유 링크 옵션",
|
||||
"shared_links": "공유 링크",
|
||||
"shared_links_description": "링크를 통해 사진 및 동영상 공유",
|
||||
"shared_photos_and_videos_count": "사진 및 동영상 {assetCount, plural, other {#개를 공유했습니다.}}",
|
||||
"shared_with_partner": "{partner}님과 공유함",
|
||||
"sharing": "공유",
|
||||
@@ -1165,6 +1212,7 @@
|
||||
"show_person_options": "인물 옵션 표시",
|
||||
"show_progress_bar": "진행 표시줄 표시",
|
||||
"show_search_options": "검색 옵션 표시",
|
||||
"show_shared_links": "공유 링크 표시",
|
||||
"show_slideshow_transition": "슬라이드 전환 표시",
|
||||
"show_supporter_badge": "서포터 배지",
|
||||
"show_supporter_badge_description": "서포터 배지 표시",
|
||||
@@ -1184,6 +1232,7 @@
|
||||
"sort_items": "항목 수",
|
||||
"sort_modified": "수정된 날짜",
|
||||
"sort_oldest": "오래된 사진",
|
||||
"sort_people_by_similarity": "유사성을 기준으로 사람 정렬",
|
||||
"sort_recent": "최근 사진",
|
||||
"sort_title": "제목",
|
||||
"source": "소스",
|
||||
@@ -1217,6 +1266,7 @@
|
||||
"tag_created": "태그 생성됨: {tag}",
|
||||
"tag_feature_description": "사진 및 동영상을 주제별 그룹화된 태그로 탐색",
|
||||
"tag_not_found_question": "태그를 찾을 수 없나요? <link>새 태그를 생성하세요.</link>",
|
||||
"tag_people": "사람 태그",
|
||||
"tag_updated": "태그 업데이트됨: {tag}",
|
||||
"tagged_assets": "항목 {count, plural, one {#개} other {#개}}에 태그를 적용함",
|
||||
"tags": "태그",
|
||||
@@ -1237,6 +1287,7 @@
|
||||
"to_trash": "삭제",
|
||||
"toggle_settings": "설정 변경",
|
||||
"toggle_theme": "다크 모드 사용",
|
||||
"total": "합계",
|
||||
"total_usage": "총 사용량",
|
||||
"trash": "휴지통",
|
||||
"trash_all": "모두 삭제",
|
||||
@@ -1256,6 +1307,7 @@
|
||||
"unlink_motion_video": "모션 비디오 링크 해제",
|
||||
"unlink_oauth": "OAuth 연결 해제",
|
||||
"unlinked_oauth_account": "OAuth 계정 연결이 해제되었습니다.",
|
||||
"unmute_memories": "추억 음소거 해제",
|
||||
"unnamed_album": "이름 없는 앨범",
|
||||
"unnamed_album_delete_confirmation": "선텍한 앨범을 삭제하시겠습니까?",
|
||||
"unnamed_share": "이름 없는 공유",
|
||||
@@ -1287,6 +1339,7 @@
|
||||
"user_purchase_settings_description": "구매 및 제품 키 관리",
|
||||
"user_role_set": "{user}님에게 {role} 역할을 설정했습니다.",
|
||||
"user_usage_detail": "사용자 사용량 상세",
|
||||
"user_usage_stats": "계정 사용량 통계",
|
||||
"user_usage_stats_description": "계정 사용량 통계 보기",
|
||||
"username": "계정명",
|
||||
"users": "사용자",
|
||||
@@ -1308,7 +1361,9 @@
|
||||
"view_all": "모두 보기",
|
||||
"view_all_users": "모든 사용자 보기",
|
||||
"view_in_timeline": "타임라인에서 보기",
|
||||
"view_link": "링크 보기",
|
||||
"view_links": "링크 확인",
|
||||
"view_name": "보기",
|
||||
"view_next_asset": "다음 항목 보기",
|
||||
"view_previous_asset": "이전 항목 보기",
|
||||
"view_stack": "스택 보기",
|
||||
@@ -1323,4 +1378,4 @@
|
||||
"yes": "네",
|
||||
"you_dont_have_any_shared_links": "생성한 공유 링크가 없습니다.",
|
||||
"zoom_image": "이미지 확대"
|
||||
}
|
||||
}
|
||||
|
||||
14
i18n/lv.json
14
i18n/lv.json
@@ -29,6 +29,7 @@
|
||||
"added_to_favorites_count": "Pievienots {count, number} izlasei",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Pievienojiet izlaišanas shēmas. Aizstājējzīmju izmantoša *, **, un ? tiek atbalstīta. Lai ignorētu visus failus jebkurā direktorijā ar nosaukumu “RAW”, izmantojiet “**/RAW/**”. Lai ignorētu visus failus, kas beidzas ar “. tif”, izmantojiet “**/*. tif”. Lai ignorētu absolūto ceļu, izmantojiet “/path/to/ignore/**”.",
|
||||
"asset_offline_description": "Šis ārējās bibliotēkas resurss vairs nav atrodams diskā un ir pārvietots uz atkritumu grozu. Ja fails tika pārvietots bibliotēkas ietvaros, pārbaudiet, vai jūsu hronoloģijā ir jauns atbilstošais resurss. Lai atjaunotu šo resursu, pārliecinieties, vai Immich var piekļūt tālāk norādītajam faila ceļam un skenēt bibliotēku.",
|
||||
"authentication_settings": "Autentifikācijas iestatījumi",
|
||||
"authentication_settings_description": "Paroļu, OAuth un citu autentifikācijas iestatījumu pārvaldība",
|
||||
"authentication_settings_disable_all": "Vai tiešām vēlaties atspējot visas pieteikšanās metodes? Pieteikšanās tiks pilnībā atspējota.",
|
||||
@@ -316,6 +317,8 @@
|
||||
"birthdate_set_description": "Dzimšanas datums tiek izmantots, lai aprēķinātu šīs personas vecumu fotogrāfijas uzņemšanas brīdī.",
|
||||
"blurred_background": "",
|
||||
"bugs_and_feature_requests": "Kļūdas un funkciju pieprasījumi",
|
||||
"build": "Būvējums",
|
||||
"build_image": "Būvējuma attēls",
|
||||
"camera": "",
|
||||
"camera_brand": "",
|
||||
"camera_model": "",
|
||||
@@ -599,7 +602,7 @@
|
||||
"model": "Modelis",
|
||||
"month": "Mēnesis",
|
||||
"more": "Vairāk",
|
||||
"moved_to_trash": "",
|
||||
"moved_to_trash": "Pārvietots uz atkritni",
|
||||
"my_albums": "Mani albumi",
|
||||
"name": "Vārds",
|
||||
"name_or_nickname": "Vārds vai iesauka",
|
||||
@@ -696,12 +699,18 @@
|
||||
"purchase_button_remove_key": "Noņemt atslēgu",
|
||||
"purchase_button_select": "Izvēlēties",
|
||||
"purchase_individual_description_2": "Atbalstītāja statuss",
|
||||
"purchase_input_suggestion": "Vai tev ir produkta atslēga? Ievadi atslēgu zemāk",
|
||||
"purchase_license_subtitle": "Nopērc Immich licenci, lai atbalstītu turpmāku pakalpojuma attīstību",
|
||||
"purchase_lifetime_description": "Pirkums uz mūžu",
|
||||
"purchase_option_title": "IEGĀDES IESPĒJAS",
|
||||
"purchase_panel_title": "Atbalstīt projektu",
|
||||
"purchase_remove_product_key": "Noņemt produkta atslēgu",
|
||||
"purchase_remove_server_product_key": "Noņemt servera produkta atslēgu",
|
||||
"purchase_server_description_1": "Visam serverim",
|
||||
"purchase_server_description_2": "Atbalstītāja statuss",
|
||||
"purchase_server_title": "Serveris",
|
||||
"purchase_settings_server_activated": "Servera produkta atslēgu pārvalda administrators",
|
||||
"rating_clear": "Noņemt vērtējumu",
|
||||
"reaction_options": "",
|
||||
"read_changelog": "Lasīt izmaiņu sarakstu",
|
||||
"recent": "",
|
||||
@@ -824,7 +833,7 @@
|
||||
"sort_oldest": "Vecākā fotogrāfija",
|
||||
"sort_recent": "Nesenākā fotogrāfija",
|
||||
"sort_title": "Nosaukums",
|
||||
"source": "Avots",
|
||||
"source": "Pirmkods",
|
||||
"stack": "Apvienot kaudzē",
|
||||
"stack_selected_photos": "",
|
||||
"stacktrace": "",
|
||||
@@ -893,6 +902,7 @@
|
||||
"version": "Versija",
|
||||
"version_announcement_message": "Sveiki! Ir pieejama jauna Immich versija. Lūdzu, veltiet laiku, lai izlasītu <link>laidiena piezīmes</link> un pārliecinātos, ka jūsu iestatījumi ir atjaunināti, lai novērstu jebkādu nepareizu konfigurāciju, jo īpaši, ja izmantojat WatchTower vai citu mehānismu, kas automātiski atjaunina jūsu Immich instanci.",
|
||||
"version_history": "Versiju vēsture",
|
||||
"version_history_item": "{version} uzstādīta {date}",
|
||||
"video": "Videoklips",
|
||||
"video_hover_setting_description": "",
|
||||
"videos": "Videoklipi",
|
||||
|
||||
@@ -372,4 +372,4 @@
|
||||
"yes": "Ya",
|
||||
"you_dont_have_any_shared_links": "Anda tidak mempunyai apa-apa pautan yang dikongsi",
|
||||
"zoom_image": "Zum Gambar"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1374,7 +1374,7 @@
|
||||
"welcome": "Velkommen",
|
||||
"welcome_to_immich": "Velkommen til Immich",
|
||||
"year": "År",
|
||||
"years_ago": "{years, plural, one {# year} other {# years}} siden",
|
||||
"years_ago": "{years, plural, one {# år} other {# år}} siden",
|
||||
"yes": "Ja",
|
||||
"you_dont_have_any_shared_links": "Du har ingen delte lenker",
|
||||
"zoom_image": "Zoom Bilde"
|
||||
|
||||
@@ -66,8 +66,13 @@
|
||||
"forcing_refresh_library_files": "Geforceerd vernieuwen van alle bibliotheekbestanden",
|
||||
"image_format": "Formaat",
|
||||
"image_format_description": "WebP produceert kleinere bestanden dan JPEG, maar is langzamer om te verwerken.",
|
||||
"image_fullsize_description": "Afbeelding op ware grootte met gestripte metadata, gebruikt bij inzoomen",
|
||||
"image_fullsize_enabled": "Genereer afbeeldingen op ware grootte inschakelen",
|
||||
"image_fullsize_enabled_description": "Genereer afbeelding op volledig formaat voor niet-webvriendelijke formaten. Als “Ingebed voorvertoning verkiezen” is ingeschakeld, worden ingesloten voorvertoningen direct gebruikt zonder conversie. Heeft geen invloed op webvriendelijke formaten zoals JPEG.",
|
||||
"image_fullsize_quality_description": "Beeldkwaliteit op ware grootte van 1-100. Hoger is beter, maar genereert grotere bestanden.",
|
||||
"image_fullsize_title": "Instellingen afbeelding op ware grootte",
|
||||
"image_prefer_embedded_preview": "Ingebedde voorbeeldafbeelding gebruiken",
|
||||
"image_prefer_embedded_preview_setting_description": "Ingebedde voorbeeldafbeelding van RAW bestanden gebruiken als invoer voor beeldverwerking wanneer beschikbaar. Dit kan preciezere kleuren produceren voor sommige afbeeldingen, maar de kwaliteit van het voorbeeld is afhankelijk van de camera en de afbeelding kan mogelijk meer compressie-artefacten hebben.",
|
||||
"image_prefer_embedded_preview_setting_description": "Ingebedde voorbeeldafbeelding van RAW bestanden gebruiken als invoer voor beeldverwerking wanneer beschikbaar. Dit kan preciezere kleuren produceren voor sommige afbeeldingen, maar de kwaliteit van het voorbeeld is afhankelijk van de camera en de afbeelding kan mogelijk meer compressie-artefacten bevatten.",
|
||||
"image_prefer_wide_gamut": "Voorkeur geven aan wide gamut",
|
||||
"image_prefer_wide_gamut_setting_description": "Display P3 gebruiken voor voorbeeldafbeeldingen. Dit behoudt de levendigheid van afbeeldingen met brede kleurruimtes beter, maar afbeeldingen kunnen er anders uitzien op oude apparaten met een oude browserversie. sRGB-afbeeldingen blijven sRGB gebruiken om kleurverschuivingen te vermijden.",
|
||||
"image_preview_description": "Middelgrote afbeelding met verwijderde metadata, gebruikt bij het bekijken van een enkele asset en voor machine learning",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Video's herhalen",
|
||||
"loop_videos_description": "Inschakelen om video's automatisch te herhalen in de detailweergave.",
|
||||
"main_branch_warning": "U gebruikt een ontwikkelingsversie. Wij raden u ten zeerste aan een releaseversie te gebruiken!",
|
||||
"main_menu": "Hoofdmenu",
|
||||
"make": "Merk",
|
||||
"manage_shared_links": "Beheer gedeelde links",
|
||||
"manage_sharing_with_partners": "Beheer delen met partners",
|
||||
|
||||
1
i18n/pa.json
Normal file
1
i18n/pa.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -1047,7 +1047,7 @@
|
||||
"purchase_server_title": "Serwer",
|
||||
"purchase_settings_server_activated": "Klucz produktu serwera jest zarządzany przez administratora",
|
||||
"rating": "Ocena gwiazdkowa",
|
||||
"rating_clear": "Wyczyść oceną",
|
||||
"rating_clear": "Wyczyść ocenę",
|
||||
"rating_count": "{count, plural, one {# gwiazdka} other {# gwiazdek}}",
|
||||
"rating_description": "Wyświetl ocenę z EXIF w panelu informacji",
|
||||
"reaction_options": "Opcje reakcji",
|
||||
@@ -1077,8 +1077,10 @@
|
||||
"remove_custom_date_range": "Usuń niestandardowy zakres dat",
|
||||
"remove_deleted_assets": "Usuń Niedostępne Pliki",
|
||||
"remove_from_album": "Usuń z albumu",
|
||||
"remove_from_favorites": "Usuń z ulubionych",
|
||||
"remove_from_favorites": "Usuń z ulubionych",
|
||||
"remove_from_shared_link": "Usuń z udostępnionego linku",
|
||||
"remove_memory": "Usuń pamięć",
|
||||
"remove_photo_from_memory": "Usuń zdjęcia z tej pamięci",
|
||||
"remove_url": "Usuń URL",
|
||||
"remove_user": "Usuń użytkownika",
|
||||
"removed_api_key": "Usunięto Klucz API: {name}",
|
||||
|
||||
12
i18n/pt.json
12
i18n/pt.json
@@ -66,8 +66,13 @@
|
||||
"forcing_refresh_library_files": "A forçar a atualização de todos os ficheiros da biblioteca",
|
||||
"image_format": "Formato",
|
||||
"image_format_description": "WebP produz ficheiros mais pequenos do que JPEG, mas é mais lento para codificar.",
|
||||
"image_fullsize_description": "Imagem de tamanho inteiro sem meta dados, utilizada quando esta for ampliada",
|
||||
"image_fullsize_enabled": "Ativar geração de imagem em tamanho inteiro",
|
||||
"image_fullsize_enabled_description": "Gerar imagens de tamanho inteiro para formatos não compatíveis com a web. Quando a opção \"Preferir visualização incorporada\" está ativada, estas serão utilizadas diretamente sem serem convertidas. Não afeta formatos compatíveis com a web tais como JPEG.",
|
||||
"image_fullsize_quality_description": "Qualidade da imagem de tamanho inteiro de 1 a 100. Valores mais altos são melhores, mas produzem ficheiros maiores.",
|
||||
"image_fullsize_title": "Definições de imagem de tamanho inteiro",
|
||||
"image_prefer_embedded_preview": "Preferir visualização incorporada",
|
||||
"image_prefer_embedded_preview_setting_description": "Utilizar visualizações incorporadas em fotos RAW como entrada para processamento de imagem, quando disponível. Isto pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmara e a imagem pode ter mais artefatos de compressão.",
|
||||
"image_prefer_embedded_preview_setting_description": "Utilizar visualizações incorporadas em fotos RAW como entrada para processamento de imagem e quando disponível. Isto pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmara e a imagem pode ter mais artefatos de compressão.",
|
||||
"image_prefer_wide_gamut": "Prefira ampla gama",
|
||||
"image_prefer_wide_gamut_setting_description": "Utilizar Display P3 para miniaturas. Isso preserva melhor a vibrância das imagens com espaços de cores amplos, mas as imagens podem aparecer de maneira diferente em dispositivos antigos com uma versão antiga do navegador. As imagens sRGB são mantidas como sRGB para evitar mudanças de cores.",
|
||||
"image_preview_description": "Imagem de tamanho médio sem metadados, utilizada ao visualizar um único ficheiro e pela aprendizagem de máquina",
|
||||
@@ -467,7 +472,7 @@
|
||||
"check_all": "Verificar tudo",
|
||||
"check_logs": "Verificar registos",
|
||||
"choose_matching_people_to_merge": "Escolha pessoas correspondentes para unir",
|
||||
"city": "Cidade",
|
||||
"city": "Cidade/Localidade",
|
||||
"clear": "Limpar",
|
||||
"clear_all": "Limpar tudo",
|
||||
"clear_all_recent_searches": "Limpar todas as pesquisas recentes",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Repetir vídeos",
|
||||
"loop_videos_description": "Ativar para repetir os vídeos automaticamente durante a exibição.",
|
||||
"main_branch_warning": "Está a utilizar uma versão de desenvolvimento, recomendamos vivamente que utilize uma versão estável!",
|
||||
"main_menu": "Menu Principal",
|
||||
"make": "Marca",
|
||||
"manage_shared_links": "Gerir links partilhados",
|
||||
"manage_sharing_with_partners": "Gerir partilha com parceiros",
|
||||
@@ -1244,7 +1250,7 @@
|
||||
"stacktrace": "Stacktrace",
|
||||
"start": "Iniciar",
|
||||
"start_date": "Data de início",
|
||||
"state": "Estado",
|
||||
"state": "Estado/Distrito",
|
||||
"status": "Estado",
|
||||
"stop_motion_photo": "Parar foto em movimento",
|
||||
"stop_photo_sharing": "Deixar de partilhar as suas fotos?",
|
||||
|
||||
@@ -66,8 +66,13 @@
|
||||
"forcing_refresh_library_files": "Forçando a atualização de todos os arquivos da biblioteca",
|
||||
"image_format": "Formato",
|
||||
"image_format_description": "WebP produz arquivos menores que JPEG, mas é mais lento para codificar.",
|
||||
"image_fullsize_description": "Imagem em tamanho real sem os metadados exibida quando der zoom",
|
||||
"image_fullsize_enabled": "Ativar geração de imagem no tamanho real",
|
||||
"image_fullsize_enabled_description": "Gerar imagens no tamanho real para os formatos de arquivos não compatíveis com a web. Quando \"Preferir visualização incorporada\" estiver ativado, essas serão utilizadas sem conversão. Não afeta arquivos já em formatos para web, como JPEG.",
|
||||
"image_fullsize_quality_description": "Qualidade da imagem em tamanho real, de 1 a 100. Valores maiores tem melhor qualidade, mas gera arquivos maiores.",
|
||||
"image_fullsize_title": "Configurações de imagem em tamanho real",
|
||||
"image_prefer_embedded_preview": "Preferir visualização incorporada",
|
||||
"image_prefer_embedded_preview_setting_description": "Use visualizações incorporadas em fotos RAW como entrada para processamento de imagem, quando disponível. Isso pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmera e a imagem pode ter mais artefatos de compactação.",
|
||||
"image_prefer_embedded_preview_setting_description": "Use visualizações incorporadas em fotos RAW como a entrada para processamento de imagem e quando disponível. Isso pode produzir cores mais precisas para algumas imagens, mas a qualidade da visualização depende da câmera e a imagem pode ter mais artefatos de compactação.",
|
||||
"image_prefer_wide_gamut": "Prefira ampla gama",
|
||||
"image_prefer_wide_gamut_setting_description": "Use o Display P3 para miniaturas. Isso preserva melhor a vibração das imagens com espaços de cores amplos, mas as imagens podem aparecer de maneira diferente em dispositivos antigos com uma versão antiga do navegador. As imagens sRGB são mantidas como sRGB para evitar mudanças de cores.",
|
||||
"image_preview_description": "Imagem de tamanho médio sem os metadados, utilizado quando visualizando um único arquivo e também pelo aprendizado de máquina",
|
||||
@@ -1174,7 +1179,7 @@
|
||||
"server_version": "Versão do servidor",
|
||||
"set": "Definir",
|
||||
"set_as_album_cover": "Definir como capa do álbum",
|
||||
"set_as_featured_photo": "Definir como foto principal",
|
||||
"set_as_featured_photo": "Definir como foto em destaque",
|
||||
"set_as_profile_picture": "Definir como foto de perfil",
|
||||
"set_date_of_birth": "Definir data de nascimento",
|
||||
"set_profile_picture": "Definir foto de perfil",
|
||||
@@ -1187,14 +1192,14 @@
|
||||
"shared_by_user": "Compartilhado por {user}",
|
||||
"shared_by_you": "Compartilhado por você",
|
||||
"shared_from_partner": "Fotos de {partner}",
|
||||
"shared_link_options": "Opções do link compartilhado",
|
||||
"shared_link_options": "Opções de link compartilhado",
|
||||
"shared_links": "Links compartilhados",
|
||||
"shared_links_description": "Compartilhar fotos e videos com um link",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# arquivo compartilhado.} other {# arquivos compartilhados.}}",
|
||||
"shared_photos_and_videos_count": "{assetCount, plural, one {# Foto & vídeo compartilhado.} other {# Fotos & vídeos compartilhados.}}",
|
||||
"shared_with_partner": "Compartilhado com {partner}",
|
||||
"sharing": "Compartilhar",
|
||||
"sharing": "Compartilhamento",
|
||||
"sharing_enter_password": "Digite a senha para visualizar esta página.",
|
||||
"sharing_sidebar_description": "Exibe o link Compartilhar na barra lateral",
|
||||
"sharing_sidebar_description": "Exibe um link para Compartilhamento na barra lateral",
|
||||
"shift_to_permanent_delete": "pressione ⇧ para excluir permanentemente o arquivo",
|
||||
"show_album_options": "Exibir opções do álbum",
|
||||
"show_albums": "Exibir álbuns",
|
||||
@@ -1214,15 +1219,15 @@
|
||||
"show_search_options": "Exibir opções de pesquisa",
|
||||
"show_shared_links": "Mostrar links compartilhados",
|
||||
"show_slideshow_transition": "Usar transições no modo de apresentação",
|
||||
"show_supporter_badge": "Insígnia de Contribuidor",
|
||||
"show_supporter_badge_description": "Mostrar a insígnia de contribuidor",
|
||||
"show_supporter_badge": "Insígnia de apoiador",
|
||||
"show_supporter_badge_description": "Mostrar uma insígnia de apoiador",
|
||||
"shuffle": "Aleatório",
|
||||
"sidebar": "Barra lateral",
|
||||
"sidebar_display_description": "Exibir um link para visualizar na barra lateral",
|
||||
"sidebar_display_description": "Exibir um link para a visualização na barra lateral",
|
||||
"sign_out": "Sair",
|
||||
"sign_up": "Registrar",
|
||||
"size": "Tamanho",
|
||||
"skip_to_content": "Pular para o conteúdo",
|
||||
"skip_to_content": "Ir para o conteúdo",
|
||||
"skip_to_folders": "Ir para pastas",
|
||||
"skip_to_tags": "Ir para os marcadores",
|
||||
"slideshow": "Apresentação",
|
||||
@@ -1240,19 +1245,19 @@
|
||||
"stack_duplicates": "Empilhar duplicados",
|
||||
"stack_select_one_photo": "Selecione uma foto principal para a pilha",
|
||||
"stack_selected_photos": "Empilhar fotos selecionadas",
|
||||
"stacked_assets_count": "{count, plural, one {# arquivo empilhado} other {# arquivos empilhados}}",
|
||||
"stacked_assets_count": "{count, plural, one {# Arquivo empilhado} other {# Arquivos empilhados}}",
|
||||
"stacktrace": "Rastreamento de pilha",
|
||||
"start": "Início",
|
||||
"start_date": "Data inicial",
|
||||
"state": "Estado",
|
||||
"status": "Status",
|
||||
"stop_motion_photo": "Parar foto em movimento",
|
||||
"stop_photo_sharing": "Parar de partilhar as suas fotos?",
|
||||
"stop_photo_sharing": "Parar de compartilhar suas fotos?",
|
||||
"stop_photo_sharing_description": "{partner} não terá mais acesso às suas fotos.",
|
||||
"stop_sharing_photos_with_user": "Parar de compartilhar as fotos com este usuário",
|
||||
"stop_sharing_photos_with_user": "Parar de compartilhar suas fotos com este usuário",
|
||||
"storage": "Espaço de armazenamento",
|
||||
"storage_label": "Rótulo de armazenamento",
|
||||
"storage_usage": "utilizado {used} de {available}",
|
||||
"storage_usage": "Utilizado {used} de {available}",
|
||||
"submit": "Enviar",
|
||||
"suggestions": "Sugestões",
|
||||
"sunrise_on_the_beach": "Nascer do sol na praia",
|
||||
@@ -1264,11 +1269,11 @@
|
||||
"tag": "Marcador",
|
||||
"tag_assets": "Marcar arquivos",
|
||||
"tag_created": "Marcador criado: {tag}",
|
||||
"tag_feature_description": "Visualizar fotos e videos agrupados pelo tópico do marcador",
|
||||
"tag_feature_description": "Navegando por fotos e videos agrupados pelo tópico lógico do marcador",
|
||||
"tag_not_found_question": "Não consegue encontrar o marcador? <link>Crie uma novo aqui.</link>",
|
||||
"tag_people": "Marcar pessoas",
|
||||
"tag_updated": "Marcador foi atualizado: {tag}",
|
||||
"tagged_assets": "{count, plural, one {# arquivo marcado} other {# arquivos marcados}}",
|
||||
"tagged_assets": "{count, plural, one {# Arquivo marcado} other {# Arquivos marcados}}",
|
||||
"tags": "Marcadores",
|
||||
"template": "Modelo",
|
||||
"theme": "Tema",
|
||||
@@ -1276,14 +1281,14 @@
|
||||
"theme_selection_description": "Defina automaticamente o tema como claro ou escuro com base na preferência do sistema do seu navegador",
|
||||
"they_will_be_merged_together": "Eles serão mesclados",
|
||||
"third_party_resources": "Recursos de terceiros",
|
||||
"time_based_memories": "Memórias baseada no tempo",
|
||||
"time_based_memories": "Memórias baseadas no tempo",
|
||||
"timeline": "Linha do tempo",
|
||||
"timezone": "Fuso horário",
|
||||
"to_archive": "Arquivar",
|
||||
"to_change_password": "Alterar senha",
|
||||
"to_favorite": "Favorito",
|
||||
"to_login": "Iniciar sessão",
|
||||
"to_parent": "Voltar um nível acima",
|
||||
"to_parent": "Voltar para nível acima",
|
||||
"to_trash": "Mover para a lixeira",
|
||||
"toggle_settings": "Alternar configurações",
|
||||
"toggle_theme": "Alternar tema escuro",
|
||||
@@ -1297,7 +1302,7 @@
|
||||
"trashed_items_will_be_permanently_deleted_after": "Os itens da lixeira serão deletados permanentemente após {days, plural, one {# dia} other {# dias}}.",
|
||||
"type": "Tipo",
|
||||
"unarchive": "Desarquivar",
|
||||
"unarchived_count": "{count, plural, one {# desarquivado} other {# desarquivados}}",
|
||||
"unarchived_count": "{count, plural, one {# Desarquivado} other {# Desarquivados}}",
|
||||
"unfavorite": "Remover favorito",
|
||||
"unhide_person": "Exibir pessoa",
|
||||
"unknown": "Desconhecido",
|
||||
@@ -1312,19 +1317,19 @@
|
||||
"unnamed_album_delete_confirmation": "Tem certeza que deseja excluir este álbum?",
|
||||
"unnamed_share": "Compartilhamento sem nome",
|
||||
"unsaved_change": "Alteração não salva",
|
||||
"unselect_all": "Limpar seleção",
|
||||
"unselect_all": "Desselecionar todos",
|
||||
"unselect_all_duplicates": "Desselecionar todas as duplicatas",
|
||||
"unstack": "Desempilhar",
|
||||
"unstacked_assets_count": "{count, plural, one {# arquivo não empilhado} other {# arquivos não empilhados}}",
|
||||
"unstacked_assets_count": "{count, plural, one {# Arquivo desempilhado} other {# Arquivos desempilhados}}",
|
||||
"untracked_files": "Arquivos não monitorados",
|
||||
"untracked_files_decription": "Estes arquivos não são monitorados pela aplicação. Podem ser resultados de falhas em uma movimentação, carregamentos interrompidos, ou deixados para trás por causa de um problema",
|
||||
"up_next": "A seguir",
|
||||
"updated_password": "Senha atualizada",
|
||||
"upload": "Carregar",
|
||||
"upload_concurrency": "Carregar simultâneo",
|
||||
"upload_concurrency": "Envios simultâneos",
|
||||
"upload_errors": "Envio concluído com {count, plural, one {# erro} other {# erros}}, atualize a página para ver os novos arquivos carregados.",
|
||||
"upload_progress": "{remaining, number} processando - {processed, number}/{total, number} já processados",
|
||||
"upload_skipped_duplicates": "{count, plural, one {# arquivo duplicado foi ignorado} other {# arquivos duplicados foram ignorados}}",
|
||||
"upload_progress": "{remaining, number} restantes - {processed, number}/{total, number} já processados",
|
||||
"upload_skipped_duplicates": "{count, plural, one {# Arquivo duplicado foi ignorado} other {# Arquivos duplicados foram ignorados}}",
|
||||
"upload_status_duplicates": "Duplicados",
|
||||
"upload_status_errors": "Erros",
|
||||
"upload_status_uploaded": "Carregado",
|
||||
@@ -1334,23 +1339,23 @@
|
||||
"use_custom_date_range": "Usar intervalo de datas personalizado",
|
||||
"user": "Usuário",
|
||||
"user_id": "ID do usuário",
|
||||
"user_liked": "{user} curtiu {type, select, photo {a foto} video {o vídeo} asset {o arquivo} other {isso}}",
|
||||
"user_liked": "{user} curtiu {type, select, photo {esta foto} video {este vídeo} asset {este arquivo} other {isto}}",
|
||||
"user_purchase_settings": "Comprar",
|
||||
"user_purchase_settings_description": "Gerenciar sua compra",
|
||||
"user_role_set": "Definir {user} como {role}",
|
||||
"user_usage_detail": "Detalhes de uso do usuário",
|
||||
"user_usage_stats": "Estatísticas de utilização de conta",
|
||||
"user_usage_stats_description": "Ver estatísticas de utilização de conta",
|
||||
"user_usage_stats": "Estatísticas de utilização da conta",
|
||||
"user_usage_stats_description": "Ver estatísticas de utilização da conta",
|
||||
"username": "Nome do usuário",
|
||||
"users": "Usuários",
|
||||
"utilities": "Utilitários",
|
||||
"utilities": "Ferramentas",
|
||||
"validate": "Validar",
|
||||
"variables": "Variáveis",
|
||||
"version": "Versão",
|
||||
"version_announcement_closing": "De seu amigo, Alex",
|
||||
"version_announcement_message": "Olá! Uma nova versão do Immich está disponível. Para evitar configurações incorretas, leia com calma a página de <link>notas da versão</link> e verifique se é necessário alterar alguma configuração, principalmente se você usa o WatchTower ou qualquer outro mecanismo que faça atualizações automáticas do Immich.",
|
||||
"version_history": "Histórico de versões",
|
||||
"version_history_item": "Instalado {version} em {date}",
|
||||
"version_history_item": "Versão {version} instalada em {date}",
|
||||
"video": "Vídeo",
|
||||
"video_hover_setting": "Reproduzir miniatura do vídeo ao passar o mouse",
|
||||
"video_hover_setting_description": "Reproduzir a miniatura do vídeo ao passar o mouse sobre o item. Mesmo quando desativado, a reprodução pode ser iniciada ao passar o mouse sobre o ícone de reprodução.",
|
||||
@@ -1359,15 +1364,15 @@
|
||||
"view": "Ver",
|
||||
"view_album": "Ver álbum",
|
||||
"view_all": "Ver tudo",
|
||||
"view_all_users": "Ver todos usuários",
|
||||
"view_all_users": "Ver todos os usuários",
|
||||
"view_in_timeline": "Ver na linha do tempo",
|
||||
"view_link": "Ver link",
|
||||
"view_links": "Ver links",
|
||||
"view_name": "Ver",
|
||||
"view_next_asset": "Ver próximo arquivo",
|
||||
"view_previous_asset": "Ver arquivo anterior",
|
||||
"view_stack": "Exibir Pilha",
|
||||
"visibility_changed": "A visibilidade de {count, plural, one {# pessoa foi alterada} other {# pessoas foram alteradas}}",
|
||||
"view_stack": "Ver Pilha",
|
||||
"visibility_changed": "A visibilidade {count, plural, one {# da pessoa foi alterada} other {# das pessoas foi alterada}}",
|
||||
"waiting": "Aguardando",
|
||||
"warning": "Aviso",
|
||||
"week": "Semana",
|
||||
@@ -1376,6 +1381,6 @@
|
||||
"year": "Ano",
|
||||
"years_ago": "{years, plural, one {# ano} other {# anos}} atrás",
|
||||
"yes": "Sim",
|
||||
"you_dont_have_any_shared_links": "Não há links compartilhados",
|
||||
"you_dont_have_any_shared_links": "Você não possui links compartilhados",
|
||||
"zoom_image": "Ampliar imagem"
|
||||
}
|
||||
|
||||
@@ -1358,4 +1358,4 @@
|
||||
"yes": "Da",
|
||||
"you_dont_have_any_shared_links": "Nu aveți linkuri partajate",
|
||||
"zoom_image": "Măriți Imaginea"
|
||||
}
|
||||
}
|
||||
|
||||
18
i18n/ru.json
18
i18n/ru.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"about": "О продукте",
|
||||
"account": "Учётная запись",
|
||||
"account_settings": "Настройки аккаунта",
|
||||
"account_settings": "Настройки учётной записи",
|
||||
"acknowledge": "Подтвердить",
|
||||
"action": "Действие",
|
||||
"actions": "Действия",
|
||||
@@ -33,7 +33,7 @@
|
||||
"authentication_settings": "Настройки аутентификации",
|
||||
"authentication_settings_description": "Управление паролями, OAuth и другими настройками аутентификации",
|
||||
"authentication_settings_disable_all": "Вы уверены, что хотите отключить все методы входа? Вход будет полностью отключен.",
|
||||
"authentication_settings_reenable": "Чтобы снова включить, используйте <link>Команда Сервера</link>.",
|
||||
"authentication_settings_reenable": "Чтобы снова включить, используйте <link>Команду сервера</link>.",
|
||||
"background_task_job": "Фоновые задачи",
|
||||
"backup_database": "Резервное копирование базы данных",
|
||||
"backup_database_enable_description": "Включить резервное копирование базы данных",
|
||||
@@ -59,13 +59,18 @@
|
||||
"external_library_created_at": "Внешняя библиотека (создана {date})",
|
||||
"external_library_management": "Управление внешними библиотеками",
|
||||
"face_detection": "Обнаружение лиц",
|
||||
"face_detection_description": "Обнаруживает лица на медиа с помощью машинного обучения. Для видео учитывается только миниатюра. “Обновить” — обработать все медиа. “Сброс” — удалить все имеющиеся данные лиц и обработать заново. “Пропущенные” — добавить в очередь необработанные медиа. Обнаруженные лица будут помещены в очередь распознавания для привязки к существующим или новым людям.",
|
||||
"facial_recognition_job_description": "Группирует распознанные лица по людям. Этот шаг выполняется после завершения обнаружения лиц. “Сброс” - группирует все лица. “Пропущенные” - помещает в очередь лица, не привязанные к человеку.",
|
||||
"face_detection_description": "Обнаруживает лица на медиа с использованием машинного обучения. Для видео анализируется только миниатюра. \"Обновить\" повторно обрабатывает все медиа. \"Сброс\" дополнительно удаляет все имеющиеся данные о лицах. \"Отсутствующие\" ставит в очередь медиа, которые ещё не были обработаны. Обнаруженные лица будут переданы в очередь для распознавания после завершения процесса их обнаружения, привязываясь к существующим или новым людям.",
|
||||
"facial_recognition_job_description": "Группировка обнаруженных лиц по людям. Этот шаг выполняется после завершения обнаружения лиц. \"Сброс\" (пере)группирует все лица. \"Отсутствующие\" ставит в очередь лица, не привязанные к человеку.",
|
||||
"failed_job_command": "Команда {command} не выполнена для задачи: {job}",
|
||||
"force_delete_user_warning": "ПРЕДУПРЕЖДЕНИЕ: Это приведет к немедленному удалению пользователя и его ресурсов. Это действие невозможно отменить, и файлы не могут быть восстановлены.",
|
||||
"forcing_refresh_library_files": "Принудительное обновление всех файлов библиотеки",
|
||||
"image_format": "Формат",
|
||||
"image_format_description": "WebP создает файлы меньшего размера, чем JPEG, но кодирует медленнее.",
|
||||
"image_fullsize_description": "Полноразмерное изображение без метаданных, используется при увеличении",
|
||||
"image_fullsize_enabled": "Включить создание полноразмерного изображения",
|
||||
"image_fullsize_enabled_description": "Создавать полноразмерное изображение для форматов, не предназначенных для веба. Когда включен параметр «Предпочитать встроенное превью», встроенные превью используются напрямую без конверсии. Не влияет на веб-совместимые форматы, такие как JPEG.",
|
||||
"image_fullsize_quality_description": "Качество полноразмерного изображения от 1 до 100. Чем выше значение, тем лучше качество, но больше размер файла.",
|
||||
"image_fullsize_title": "Настройки полноразмерного изображения",
|
||||
"image_prefer_embedded_preview": "Предпочитать встроенное превью",
|
||||
"image_prefer_embedded_preview_setting_description": "Используйте встроенные превью в фотографиях RAW в качестве входных данных для обработки изображений, если они доступны. Это может обеспечить более точную цветопередачу для некоторых изображений, но качество предварительного просмотра зависит от камеры, и изображение может иметь больше артефактов сжатия.",
|
||||
"image_prefer_wide_gamut": "Предпочитаю широкую гамму",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Циклическое воспроизведение",
|
||||
"loop_videos_description": "Включить циклическое воспроизведение видео.",
|
||||
"main_branch_warning": "Вы используете версию для разработки; мы настоятельно рекомендуем использовать релизную версию!",
|
||||
"main_menu": "Главное меню",
|
||||
"make": "Производитель",
|
||||
"manage_shared_links": "Управление публичными ссылками",
|
||||
"manage_sharing_with_partners": "Управление обменом информацией с партнерами. Эта функция позволяет вашему партнеру видеть ваши фотографии и видеозаписи, кроме тех, которые находятся в Архиве и Корзине",
|
||||
@@ -886,7 +892,7 @@
|
||||
"merged_people_count": "Объединено {count, plural, one {# человек} few {# человека} many {# человек} other {# человека}}",
|
||||
"minimize": "Минимизировать",
|
||||
"minute": "Минута",
|
||||
"missing": "Пропущенные",
|
||||
"missing": "Отсутствующие",
|
||||
"model": "Модель",
|
||||
"month": "Месяц",
|
||||
"more": "Больше",
|
||||
@@ -1374,7 +1380,7 @@
|
||||
"welcome": "Добро пожаловать",
|
||||
"welcome_to_immich": "Добро пожаловать в Immich",
|
||||
"year": "Год",
|
||||
"years_ago": "{years, plural, one {# год} few {# года} many {# лет} other {# года}} назад",
|
||||
"years_ago": "{years, plural, one {# год} few {# года} many {# лет} other {# лет}} назад",
|
||||
"yes": "Да",
|
||||
"you_dont_have_any_shared_links": "У вас нет публичных ссылок",
|
||||
"zoom_image": "Приблизить"
|
||||
|
||||
@@ -1079,6 +1079,8 @@
|
||||
"remove_from_album": "Odstrániť z albumu",
|
||||
"remove_from_favorites": "Odstrániť z obľúbených",
|
||||
"remove_from_shared_link": "Odstrániť zo zdieľaného odkazu",
|
||||
"remove_memory": "Odstrániť spomienku",
|
||||
"remove_photo_from_memory": "Odstrániť fotografiu z tejto spomienky",
|
||||
"remove_url": "Odstrániť URL",
|
||||
"remove_user": "Odstrániť používateľa",
|
||||
"removed_api_key": "Odstrániť API kľúč: {name}",
|
||||
|
||||
@@ -66,8 +66,13 @@
|
||||
"forcing_refresh_library_files": "Vsiljena osvežitev vseh datotek knjižnice",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP ustvari manjše datoteke kot JPEG, vendar je počasnejši za kodiranje.",
|
||||
"image_fullsize_description": "Slika v polni velikosti brez metapodatkov, uporabljena pri povečavi",
|
||||
"image_fullsize_enabled": "Omogoči ustvarjanje slik v polni velikosti",
|
||||
"image_fullsize_enabled_description": "Ustvari sliko v polni velikosti za formate, ki niso prijazni spletu. Ko je omogočena možnost »Prednostno vdelani predogled«, se vdelani predogledi uporabljajo neposredno brez pretvorbe. Ne vpliva na spletu prijazne formate, kot je JPEG.",
|
||||
"image_fullsize_quality_description": "Kakovost slike v polni velikosti od 1 do 100. Višja vrednost pomeni boljšo kakovost, vendar ustvarja večje datoteke.",
|
||||
"image_fullsize_title": "Nastavitve slike v polni velikosti",
|
||||
"image_prefer_embedded_preview": "Uporabi raje vdelan predogled",
|
||||
"image_prefer_embedded_preview_setting_description": "Uporabite vdelane predoglede v fotografije RAW kot vhod za obdelavo slik, ko so na voljo. To lahko ustvari natančnejše barve za nekatere slike, vendar je kakovost predogleda odvisna od kamere in slika ima lahko več artefaktov stiskanja.",
|
||||
"image_prefer_embedded_preview_setting_description": "Uporabi vdelane predoglede v fotografijah RAW kot vhod za obdelavo slik, kadar so na voljo. To lahko pri nekaterih slikah zagotovi natančnejše barve, vendar je kakovost predogleda odvisna od fotoaparata, slika pa lahko vsebuje več artefaktov stiskanja.",
|
||||
"image_prefer_wide_gamut": "Uporabi raje širok razpon",
|
||||
"image_prefer_wide_gamut_setting_description": "Uporabite P3 Display za sličice. To bolje ohranja živahnost slik s širokimi barvnimi prostori, vendar so lahko slike videti drugače na starih napravah s staro različico brskalnika. Slike sRGB se ohranijo kot sRGB, da se izognejo barvnim zamikom.",
|
||||
"image_preview_description": "Slika srednje velikosti z odstranjenimi metapodatki, ki se uporablja pri ogledu posameznega sredstva in za strojno učenje",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Zanka videoposnetkov",
|
||||
"loop_videos_description": "Omogočite samodejno ponavljanje videoposnetka v pregledovalniku podrobnosti.",
|
||||
"main_branch_warning": "Uporabljate razvojno različico; močno priporočamo uporabo izdajne različice!",
|
||||
"main_menu": "Glavni meni",
|
||||
"make": "Izdelava",
|
||||
"manage_shared_links": "Upravljanje povezav v skupni rabi",
|
||||
"manage_sharing_with_partners": "Upravljajte skupno rabo s partnerji",
|
||||
|
||||
1
i18n/sq.json
Normal file
1
i18n/sq.json
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Принудно освежавање свих датотека библиотеке",
|
||||
"image_format": "Формат",
|
||||
"image_format_description": "WebP производи мање датотеке од ЈПЕГ, али се спорије кодира.",
|
||||
"image_fullsize_description": "Слика у пуној величини са огољеним метаподацима, користи се када је увећана",
|
||||
"image_fullsize_enabled": "Омогућите генерисање слике у пуној величини",
|
||||
"image_fullsize_enabled_description": "Генеришите слику пуне величине за формате који нису прилагођени вебу. Када је „Преферирај уграђени преглед“ омогућен, уграђени прегледи се користе директно без конверзије. Не утиче на формате прилагођене вебу као што је JPEG.",
|
||||
"image_fullsize_quality_description": "Квалитет слике у пуној величини од 1-100. Више је боље, али производи веће датотеке.",
|
||||
"image_fullsize_title": "Подешавања слике у пуној величини",
|
||||
"image_prefer_embedded_preview": "Преферирајте уграђени преглед",
|
||||
"image_prefer_embedded_preview_setting_description": "Користите уграђене прегледе у RAW фотографије као улаз за обраду слике када су доступне. Ово може да произведе прецизније боје за неке слике, али квалитет прегледа зависи од камере и слика може имати више неправилности компресије.",
|
||||
"image_prefer_wide_gamut": "Преферирајте широк спектар",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Понављајте видео записе",
|
||||
"loop_videos_description": "Омогућите за аутоматско понављање видео записа у прегледнику детаља.",
|
||||
"main_branch_warning": "Употребљавате развојну верзију; строго препоручујемо употребу издате верзије!",
|
||||
"main_menu": "Главни мени",
|
||||
"make": "Креирај",
|
||||
"manage_shared_links": "Управљајте дељеним везама",
|
||||
"manage_sharing_with_partners": "Управљајте дељењем са партнерима",
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Prinudno osvežavanje svih datoteka biblioteke",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP proizvodi manje datoteke od JPEG, ali se sporije kodira.",
|
||||
"image_fullsize_description": "Slika u punoj veličini sa ogoljenim metapodacima, koristi se kada je uvećana",
|
||||
"image_fullsize_enabled": "Omogućite generisanje slike u punoj veličini",
|
||||
"image_fullsize_enabled_description": "Generišite sliku pune veličine za formate koji nisu prilagođeni vebu. Kada je „Preferiraj ugrađeni pregled“ omogućen, ugrađeni pregledi se koriste direktno bez konverzije. Ne utiče na formate prilagođene vebu kao što je JPEG.",
|
||||
"image_fullsize_quality_description": "Kvalitet slike u punoj veličini od 1-100. Više je bolje, ali proizvodi veće datoteke.",
|
||||
"image_fullsize_title": "Podešavanja slike u punoj veličini",
|
||||
"image_prefer_embedded_preview": "Preferirajte ugrađeni pregled",
|
||||
"image_prefer_embedded_preview_setting_description": "Koristite ugrađene preglede u RAW fotografije kao ulaz za obradu slike kada su dostupne. Ovo može da proizvede preciznije boje za neke slike, ali kvalitet pregleda zavisi od kamere i slika može imati više nepravilnosti kompresije.",
|
||||
"image_prefer_wide_gamut": "Preferirajte širok spektar",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Ponavljajte video zapise",
|
||||
"loop_videos_description": "Omogućite za automatsko ponavljanje video zapisa u pregledniku detalja.",
|
||||
"main_branch_warning": "Upotrebljavate razvojnu verziju; strogo preporučujemo upotrebu izdate verzije!",
|
||||
"main_menu": "Glavni meni",
|
||||
"make": "Kreiraj",
|
||||
"manage_shared_links": "Upravljajte deljenim vezama",
|
||||
"manage_sharing_with_partners": "Upravljajte deljenjem sa partnerima",
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "Tvingar uppdatering av alla biblioteksfiler",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP producerar mindre filer än JPEG, men kodas långsammare.",
|
||||
"image_fullsize_description": "Fullstor bild med borttagen metadata, används vid inzoomning",
|
||||
"image_fullsize_enabled": "Använd fullstor bildgenerering",
|
||||
"image_fullsize_enabled_description": "Generera fullstor bild för icke webbvänliga format. När \"Använd inbäddade förhandsvisningar\" är aktiverat används inbäddad förhandsvisning utan konvertering. Påverkar inte webbvänliga format som JPEG.",
|
||||
"image_fullsize_quality_description": "Bildkvalitet för fullstora bilder 1-100. Högre värde ger bättre kvalitet men större filer.",
|
||||
"image_fullsize_title": "Inställningar för fullstora bilder",
|
||||
"image_prefer_embedded_preview": "Föredra inbäddad förhandsgranskning",
|
||||
"image_prefer_embedded_preview_setting_description": "Använd inbäddade förhandsvisningar i RAW-foton som indata till bildbehandling när det är tillgängligt. Detta kan ge mer exakta färger för vissa bilder, men kvaliteten på förhandsgranskningen är kameraberoende och bilden kan ha fler komprimeringsartefakter.",
|
||||
"image_prefer_wide_gamut": "Föredrar brett spektrum",
|
||||
@@ -246,7 +251,7 @@
|
||||
"storage_template_migration_info": "Lagringsmallen kommer konvertera alla filändelser till gemena bokstäver. Ändringar gäller endast för nya resurser, för att retoaktivt tillämpa mallen på befintliga resurser kör <link>{job}</link>.",
|
||||
"storage_template_migration_job": "Lagringsmall migreringsjobb",
|
||||
"storage_template_more_details": "För mer information om den här funktionen se <template-link>Lagringsmall</template-link> och dess <implications-link>konsekvenser</implications-link>",
|
||||
"storage_template_onboarding_description": "Vid aktivering organiserar denna funktion automatiskt filer baserat på en användardefinierad mall. På grunda av stabilitetsproblem är denna funktion avstängd som standard, för mer information se <link>dokumentation</link>.",
|
||||
"storage_template_onboarding_description": "Vid aktivering organiserar denna funktion automatiskt filer baserat på en användardefinierad mall. På grund av stabilitetsproblem är denna funktion avstängd som standard, för mer information se <link>dokumentation</link>.",
|
||||
"storage_template_path_length": "Uppskattad längdbegränsning på sökväg: <b>{length, number}</b>/{limit, number}",
|
||||
"storage_template_settings": "Lagringsmall",
|
||||
"storage_template_settings_description": "Hantera mappstruktur och filnamn för uppladdade resurser",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Loopa videor",
|
||||
"loop_videos_description": "Aktivera för att automatiskt loopa en video i detaljvisaren.",
|
||||
"main_branch_warning": "Du använder en utvecklingsversion. Vi rekommenderar starkt att du använder en utgiven version!",
|
||||
"main_menu": "Huvudmeny",
|
||||
"make": "Tillverkare",
|
||||
"manage_shared_links": "Hantera Delade länkar",
|
||||
"manage_sharing_with_partners": "Hantera delning med partner",
|
||||
|
||||
@@ -1339,4 +1339,4 @@
|
||||
"yes": "ஆம்",
|
||||
"you_dont_have_any_shared_links": "உங்களிடம் பகிரப்பட்ட இணைப்புகள் எதுவும் இல்லை",
|
||||
"zoom_image": "பெரிதாக்க படம்"
|
||||
}
|
||||
}
|
||||
|
||||
955
i18n/te.json
955
i18n/te.json
File diff suppressed because it is too large
Load Diff
67
i18n/th.json
67
i18n/th.json
@@ -41,6 +41,7 @@
|
||||
"backup_settings": "ตั้งค่าการสำรองข้อมูล",
|
||||
"backup_settings_description": "จัดการการตั้งค่าการสำรองฐานข้อมูล",
|
||||
"check_all": "ตรวจสอบทั้งหมด",
|
||||
"cleanup": "ทำความสะอาด",
|
||||
"cleared_jobs": "เคลียร์งานสำหรับ: {job}",
|
||||
"config_set_by_file": "การตั้งค่าคอนฟิกกำลังถูกกำหนดโดยไฟล์คอนฟิก",
|
||||
"confirm_delete_library": "คุณแน่ใจว่าอยากลบคลังภาพ {library} หรือไม่?",
|
||||
@@ -65,8 +66,12 @@
|
||||
"forcing_refresh_library_files": "บังคับรีเฟรชไฟล์ทั้งหมด",
|
||||
"image_format": "Format",
|
||||
"image_format_description": "WebP จะให้ไฟล์ที่เล็กกว่า JPEG แต่ใช้เวลาแปลงไฟล์นานกว่า",
|
||||
"image_fullsize_description": "รูปภาพขนาดเต็มที่ถูกถอดข้อมูล metadata ออก ใช้ในขณะทำการขยายรูปภาพดู",
|
||||
"image_fullsize_enabled": "เปิดใช้งานการสร้างรูปภาพขนาดเต็ม",
|
||||
"image_fullsize_quality_description": "คุณภาพรูปภาพขนาดเต็มจาก 1-100 ค่ายิ่งสูงคุณภาพยิ่งสูง แต่แลกมาด้วยขนาดไฟล์ที่ใหญ่ขึ้น",
|
||||
"image_fullsize_title": "ตั้งค่ารูปภาพขนาดเต็ม",
|
||||
"image_prefer_embedded_preview": "ใช้พรีวิวแบบฝังตัว",
|
||||
"image_prefer_embedded_preview_setting_description": "ใช้พรีวิวฝังตัวในรูปภาพ RAW ในการวิเคราะห์รูปภาพถ้ามี แต่คุณภาพรูปภาพขึ้นอยู่กับกล้อง และอาจจะมีสิ่งตกค้างจากการย่อขนาดไฟล์",
|
||||
"image_prefer_embedded_preview_setting_description": "ใช้การแสดงภาพแบบฝังตัวในรูปภาพ RAW ในการวิเคราะห์รูปภาพหากสามารถใช้ได้ สิ่งนี้จะช่วยให้รูปภาพมีสีสันที่ถูกต้องมากยิ่งขึ้น แต่อย่างไรก็ตาม คุณภาพรูปภาพขึ้นอยู่กับกล้องถ่ายรูป และอาจจะเกิดร่องรอย ลาย ที่ไม่พึงประสงค์บนรูปภาพ จากการย่อขนาดไฟล์",
|
||||
"image_prefer_wide_gamut": "ใช้ช่วงสีกว้าง",
|
||||
"image_prefer_wide_gamut_setting_description": "ใช้ Display P3 สำหรับภาพตัวอย่าง (thumbnails) เพื่อรักษาความสดใสของภาพที่มีช่วงสีที่กว้างขึ้น อย่างไรก็ตาม ภาพอาจแสดงผลแตกต่างกันบนอุปกรณ์เก่าที่ใช้เว็บเบราว์เซอร์เวอร์ชันเก่า สำหรับภาพที่อยู่ใน sRGB จะยังคงใช้ sRGB ต่อไปเพื่อหลีกเลี่ยงการเปลี่ยนแปลงของสี",
|
||||
"image_preview_description": "ภาพขนาดปานกลางที่ถูกลบข้อมูลเมตา ใช้สำหรับการดูแอสเซ็ตเดี่ยวและสำหรับการเรียนรู้ของเครื่อง (Machine Learning)",
|
||||
@@ -131,7 +136,7 @@
|
||||
"machine_learning_smart_search_description": "ค้นหาภาพโดยใช้ความหมายจากการใช้ CLIP",
|
||||
"machine_learning_smart_search_enabled": "เปิดใช้งานการค้นหาอัจฉริยะ",
|
||||
"machine_learning_smart_search_enabled_description": "หากปิดใช้งาน ภาพจะไม่ถูกใช้สําหรับการค้นหาอัจฉริยะ",
|
||||
"machine_learning_url_description": "URL ของเซิร์ฟเวอร์ machine learning",
|
||||
"machine_learning_url_description": "URL ของเซิร์ฟเวอร์ machine learning กรณีมี URL มากกว่าหนึ่ง URL จะทำการทดลองส่งข้อมูลเรียงไปทีละอันตามลำดับจนกว่าจะพบ URL ที่ตอบสนอง และจะเลิกส่งข้อมูลชั่วคราวในส่วนของ URL ที่ไม่ตอบสนอง",
|
||||
"manage_concurrency": "จัดการการทำงานพร้อมกัน",
|
||||
"manage_log_settings": "จัดการการตั้งค่าจดบันทึก",
|
||||
"map_dark_style": "แบบมืด",
|
||||
@@ -147,6 +152,8 @@
|
||||
"map_settings": "การตั้งค่าแผนที่และ GPS",
|
||||
"map_settings_description": "จัดการการตั้งค่าแผนที่",
|
||||
"map_style_description": "URL ไปยังธีมแผนที่ style.json",
|
||||
"memory_cleanup_job": "ล้างข้อมูลในหน่วยความจำ (memory)",
|
||||
"memory_generate_job": "การสร้างความทรงจำ",
|
||||
"metadata_extraction_job": "ดึงข้อมูล metadata",
|
||||
"metadata_extraction_job_description": "ดึงข้อมูล metadata จากสื่อ เช่น GPS และความคมชัด",
|
||||
"metadata_faces_import_setting": "เปิดการนำเข้าข้อมูลใบหน้า",
|
||||
@@ -219,7 +226,7 @@
|
||||
"reset_settings_to_default": "ตั้งค่าการตั้งค่าเป็นค่าเริ่มต้น",
|
||||
"reset_settings_to_recent_saved": "ตั้งค่าการตั้งค่าเป็นค่าล่าสุด",
|
||||
"scanning_library": "กำลังสแกนคลัง",
|
||||
"search_jobs": "ค้นหางาน",
|
||||
"search_jobs": "ค้นหางาน…",
|
||||
"send_welcome_email": "ส่งอีเมลต้อนรับ",
|
||||
"server_external_domain_settings": "โดเมนภายนอก",
|
||||
"server_external_domain_settings_description": "โดเมนสำหรับลิงก์แชร์สาธารณะ แบบมี http(s)://",
|
||||
@@ -240,7 +247,7 @@
|
||||
"storage_template_hash_verification_enabled_description": "เปิดใช้งานการตรวจสอบ hash ห้ามปิดใช้งานเว้นแต่คุณจะเข้าใจผลกระทบ",
|
||||
"storage_template_migration": "การย้ายเทมเพลตที่เก็บข้อมูล",
|
||||
"storage_template_migration_description": "ใช้<link>{template}</link>ปัจจุบันกับสื่อที่อัปโหลดก่อนหน้านี้",
|
||||
"storage_template_migration_info": "การเปลี่ยนแปลงเท็มเพลตจะมีผลกับแอสเซ็ตใหม่เท่านั้น หากต้องการนำเทมเพลตไปใช้กับ Asset ที่อัปโหลดก่อนหน้านี้ ให้รัน <link>{job}</link>.",
|
||||
"storage_template_migration_info": "เทมเพลตของการจัดเก็บข้อมูลจะเปลี่ยนตัวอักษรเป็นตัวพิมพ์เล็กทั้งหมด การเปลี่ยนแปลงเทมเพลตจะมีผลกับแอสเซ็ตใหม่เท่านั้น หากต้องการนำเทมเพลตไปใช้กับ Asset ที่อัปโหลดก่อนหน้านี้ ให้รัน <link>{job}</link>.",
|
||||
"storage_template_migration_job": "เทมเพลตการ Migration ข้อมูล",
|
||||
"storage_template_more_details": "สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ โปรดดูที่ <template-link>Storage Template</template-link> และ <implications-link>ผลกระทบ</implications-link>",
|
||||
"storage_template_onboarding_description": "เมื่อเปิดใช้งาน ฟีเจอร์นี้จะจัดระเบียบไฟล์โดยอัตโนมัติตามเทมเพลตที่ผู้ใช้กำหนด เนื่องจากปัญหาด้านความเสถียร ฟีเจอร์นี้จึงถูกปิดใช้งานเป็นค่าเริ่มต้น สำหรับข้อมูลเพิ่มเติม โปรดดูที่ <link>เอกสารประกอบ</link>",
|
||||
@@ -313,7 +320,7 @@
|
||||
"transcoding_reference_frames_description": "จำนวนเฟรมที่จะอ้างอิงเมื่อบีบอัดเฟรมที่กำหนด ค่าที่สูงขึ้นจะช่วยเพิ่มประสิทธิภาพในการบีบอัด แต่จะทำให้การเข้ารหัสช้าลง ค่า 0 จะตั้งค่านี้โดยอัตโนมัติ",
|
||||
"transcoding_required_description": "เฉพาะวิดีโอที่ไม่อยู่ในรูปแบบที่ยอมรับเท่านั้น",
|
||||
"transcoding_settings": "การตั้งค่าการแปลงไฟล์วิดีโอ",
|
||||
"transcoding_settings_description": "จัดการข้อมูลความคมชัดและแบบไฟล์วิดีโอ",
|
||||
"transcoding_settings_description": "จัดการว่าวีดีโอไหนจะถูกแปลงการเข้ารหัส (Transcode) และวิธีการประมวลผลไฟล์ดังกล่าว",
|
||||
"transcoding_target_resolution": "เป้าหมายความคมชัด",
|
||||
"transcoding_target_resolution_description": "ความคมชัดที่สูงกว่าจะเก็บรายละเอียดดีกว่าแต่ใช้เวลาแปลงไฟล์นานกว่า ขนาดไฟล์ใหญ่กว่า และลดการตอบสนองของแอป",
|
||||
"transcoding_temporal_aq": "AQ ชั่วคราว",
|
||||
@@ -353,6 +360,7 @@
|
||||
"version_check_implications": "การตรวจสอบเวอร์ชันใหม่จะต้องติดต่อกับ github.com เป็นระยะ",
|
||||
"version_check_settings": "ตรวจสอบรุ่น",
|
||||
"version_check_settings_description": "เปิด/ปิดการแจ้งเตือนรุ่นใหม่",
|
||||
"video_conversion_job": "เข้ารหัสวีดีโอ (transcode)",
|
||||
"video_conversion_job_description": "แปลงไฟล์วิดีโอเพึ่อรองรับบราวเซอร์และเครื่องเล่นอื่น ๆ มากขึ้น"
|
||||
},
|
||||
"admin_email": "อีเมลผู้ดูแลระบบ",
|
||||
@@ -369,7 +377,7 @@
|
||||
"album_delete_confirmation_description": "หากแชร์อัลบั้มนี้ ผู้ใช้รายอื่นจะไม่สามารถเข้าถึงได้อีก",
|
||||
"album_info_updated": "อัปเดทข้อมูลอัลบั้มแล้ว",
|
||||
"album_leave": "ออกจากอัลบั้ม ?",
|
||||
"album_leave_confirmation": "คุณต้องการออกจากอัลบั้ม {album} ใช่หรือไม่",
|
||||
"album_leave_confirmation": "คุณต้องการออกจากอัลบั้ม {album} ใช่หรือไม่?",
|
||||
"album_name": "ชื่ออัลบั้ม",
|
||||
"album_options": "ตัวเลือกอัลบั้ม",
|
||||
"album_remove_user": "ลบผู้ใช้ ?",
|
||||
@@ -390,6 +398,7 @@
|
||||
"allow_edits": "อนุญาตให้แก้ไขได้",
|
||||
"allow_public_user_to_download": "อนุญาตให้ผู้ใช้สาธารณะดาวน์โหลดได้",
|
||||
"allow_public_user_to_upload": "อนุญาตให้ผู้ใช้สาธารณะอัปโหลดได้",
|
||||
"alt_text_qr_code": "รูปภาพ QR code",
|
||||
"anti_clockwise": "ทวนเข็มนาฬิกา",
|
||||
"api_key": "API key",
|
||||
"api_key_description": "ค่านี้จะแสดงเพียงครั้งเดียว โปรดคัดลอกก่อนปิดหน้าต่าง",
|
||||
@@ -444,7 +453,7 @@
|
||||
"cancel": "ยกเลิก",
|
||||
"cancel_search": "ยกเลิกการค้นหา",
|
||||
"cannot_merge_people": "ไม่สามารถรวมกลุ่มคนได้",
|
||||
"cannot_undo_this_action": "ไม่สามารถย้อนกลับได้",
|
||||
"cannot_undo_this_action": "การกระทำนี้ไม่สามารถย้อนกลับได้!",
|
||||
"cannot_update_the_description": "ไม่สามารถอัพเดทรายละเอียดได้",
|
||||
"change_date": "เปลี่ยนวันที่",
|
||||
"change_expiration_time": "เปลี่ยนเวลาหมดอายุ",
|
||||
@@ -476,6 +485,7 @@
|
||||
"comments_are_disabled": "ความคิดเห็นถูกปิดใช้งาน",
|
||||
"confirm": "ยืนยัน",
|
||||
"confirm_admin_password": "ยืนยันรหัสผ่านผู้ดูแลระบบ",
|
||||
"confirm_delete_face": "คุณแน่ใจว่าต้องการลบใบหน้า{name}ออกหรือไม่?",
|
||||
"confirm_delete_shared_link": "คุณต้องการที่จะลบลิงก์ที่แชร์ใช่หรือไม่ ?",
|
||||
"confirm_keep_this_delete_others": "จะลบทั้งหมดในรายการ และยกเว้นสื่อนี้หรือไม่ คุณแน่ใจใช่ไหมที่ต้องการดำเนินการต่อ?",
|
||||
"confirm_password": "ยืนยันรหัสผ่าน",
|
||||
@@ -528,13 +538,14 @@
|
||||
"delete_album": "ลบอัลบั้ม",
|
||||
"delete_api_key_prompt": "คุณต้องการลบ API คีย์ นี้ใช่ไหม ?",
|
||||
"delete_duplicates_confirmation": "คุณแน่ใจที่ต้องการลบรายการซ้ำอย่างถาวรใช่ไหม ?",
|
||||
"delete_face": "ลบใบหน้า",
|
||||
"delete_key": "ลบกุญแจ",
|
||||
"delete_library": "ลบคลังภาพ",
|
||||
"delete_link": "ลบลิงก์",
|
||||
"delete_others": "ลบผู้อื่น",
|
||||
"delete_shared_link": "ลบลิงก์ที่แชร์",
|
||||
"delete_tag": "ลบแท็ก",
|
||||
"delete_tag_confirmation_prompt": "คุณต้องการลบแท็ก {tagName} ใช่หรือไม่",
|
||||
"delete_tag_confirmation_prompt": "คุณแน่ใจว่าต้องการลบแท็ก {tagName} ใช่หรือไม่?",
|
||||
"delete_user": "ลบผู้ใช้",
|
||||
"deleted_shared_link": "ลบลิงก์ที่แชร์แล้ว",
|
||||
"deletes_missing_assets": "ลบสื่อที่หายไปออกจากดิสถ์",
|
||||
@@ -543,7 +554,7 @@
|
||||
"direction": "เส้นทาง",
|
||||
"disabled": "ปิดการใช้งาน",
|
||||
"disallow_edits": "ไม่อนุญาตให้แก้ไข",
|
||||
"discord": "Discord",
|
||||
"discord": "ดิสคอร์ด",
|
||||
"discover": "ค้นพบ",
|
||||
"dismiss_all_errors": "ปฏิเสธข้อผิดพลาดทั้งหมด",
|
||||
"dismiss_error": "ปฏิเสธข้อผิดพลาด",
|
||||
@@ -595,6 +606,7 @@
|
||||
"enabled": "เปิดใช้งาน",
|
||||
"end_date": "วันสิ้นสุด",
|
||||
"error": "เกิดข้อผิดพลาด",
|
||||
"error_delete_face": "เกิดเออเรอร์ ไม่สามารถลบใบหน้าออกได้",
|
||||
"error_loading_image": "เกิดข้อผิดพลาดระหว่างโหลดภาพ",
|
||||
"error_title": "เกิดข้อผิดพลาด",
|
||||
"errors": {
|
||||
@@ -613,7 +625,7 @@
|
||||
"error_adding_users_to_album": "เกิดข้อผิดพลาดในการเพิ่มผู้ใช้ไปยังอัลบั้ม",
|
||||
"error_deleting_shared_user": "เกิดข้อผิดพลาดในการลบผู้ใช้ที่แชร์",
|
||||
"error_downloading": "ไม่สามารถดาวน์โหลด {filename} ได้",
|
||||
"error_hiding_buy_button": "Error hiding buy button",
|
||||
"error_hiding_buy_button": "เกิดข้อผิดพลาด ไม่สามารถซ่อนปุ่มซื้อได้",
|
||||
"error_removing_assets_from_album": "เกิดข้อผิดพลาดในการลบสื่อจากอัลบั้ม",
|
||||
"error_selecting_all_assets": "เกิดข้อผิดพลาดในการเลือกสื่อทั้งหมด",
|
||||
"exclusion_pattern_already_exists": "ข้อยกเว้นนี้มีอยู่แล้ว",
|
||||
@@ -626,7 +638,7 @@
|
||||
"failed_to_load_asset": "ไม่สามารถโหลดสื่อได้",
|
||||
"failed_to_load_assets": "ไม่สามารถโหลดสื่อได้",
|
||||
"failed_to_load_people": "ไม่สามารถโหลดบุคคลได้",
|
||||
"failed_to_remove_product_key": "Failed to remove product key",
|
||||
"failed_to_remove_product_key": "ไม่สามารถลบ product key ได้",
|
||||
"failed_to_stack_assets": "Failed to stack assets",
|
||||
"failed_to_unstack_assets": "Failed to un-stack assets",
|
||||
"import_path_already_exists": "พาธนำเข้านี้มีอยู่แล้ว",
|
||||
@@ -760,8 +772,10 @@
|
||||
"go_to_folder": "ไปที่โฟล์เดอร์",
|
||||
"go_to_search": "กลับไปยังการค้นหา",
|
||||
"group_albums_by": "จัดกลุ่มอัลบั้มตาม",
|
||||
"group_country": "จัดเรียงกลุ่มตามประเทศ",
|
||||
"group_no": "ไม่จัดกลุ่ม",
|
||||
"group_owner": "จัดกลุ่มโดยเจ้าของ",
|
||||
"group_places_by": "จัดเรียงกลุ่มของสถานที่ด้วยการ...",
|
||||
"group_year": "จัดกลุ่มตามปี",
|
||||
"has_quota": "เหลือพื้นที่",
|
||||
"hi_user": "สวัสดีคุณ {name} {email}",
|
||||
@@ -842,6 +856,7 @@
|
||||
"loop_videos": "วนวิดีโอ",
|
||||
"loop_videos_description": "เปิดเพื่อให้วิดีโอวนลูปในที่ดูรายละเอียด",
|
||||
"main_branch_warning": "คุณกำลังใช้เวอร์ชันการพัฒนา เราขอแนะนำอย่างยิ่งให้ใช้เวอร์ชันเสถียร !",
|
||||
"main_menu": "เมนูหลัก",
|
||||
"make": "สร้าง",
|
||||
"manage_shared_links": "จัดการลิงก์ที่แชร์",
|
||||
"manage_sharing_with_partners": "จัดการการแชร์กับคู่หู",
|
||||
@@ -969,6 +984,7 @@
|
||||
"permanently_deleted_asset": "ลบสื่อถาวรแล้ว",
|
||||
"permanently_deleted_assets_count": "ลบ {count, plural, one {# asset} other {# assets}} เรียบร้อยแล้ว",
|
||||
"person": "บุคคล",
|
||||
"person_birthdate": "เกิดวัน{date}",
|
||||
"photo_shared_all_users": "ดูเหมือนว่าคุณได้แชร์รูปภาพของคุณกับผู้ใช้ทั้งหมด หรือคุณไม่มีผู้ใช้ใดที่จะแชร์ด้วย",
|
||||
"photos": "รูปภาพ",
|
||||
"photos_and_videos": "รูปภาพ และ วิดีโอ",
|
||||
@@ -1058,12 +1074,16 @@
|
||||
"remove_from_album": "ลบออกจากอัลบั้ม",
|
||||
"remove_from_favorites": "เอาออกจากรายการโปรด",
|
||||
"remove_from_shared_link": "ลบออกจากลิงก์ที่แชร์",
|
||||
"remove_memory": "ลบความทรงจำ",
|
||||
"remove_photo_from_memory": "ลบรูปออกจากความทรงจำนี้",
|
||||
"remove_url": "ลบ URL",
|
||||
"remove_user": "ลบผู้ใช้",
|
||||
"removed_api_key": "API คีย์ของ: {name} ถูกลบแล้ว",
|
||||
"removed_from_archive": "ลบจากเก็บถาวรแล้ว",
|
||||
"removed_from_favorites": "ลบจากรายการโปรดแล้ว",
|
||||
"removed_from_favorites_count": "{count, plural, other {ถูกลบ#}} จากรายการโปรดแล้ว",
|
||||
"removed_memory": "ความทรงจำที่ถูกลบ",
|
||||
"removed_photo_from_memory": "รูปที่ถูกลบออกจากความทรงจำ",
|
||||
"removed_tagged_assets": "ลบแท็กจาก {count, plural, one {# สื่อ} other {# สื่อ}}",
|
||||
"rename": "เปลี่ยนชื่อ",
|
||||
"repair": "ซ่อมแซม",
|
||||
@@ -1071,6 +1091,7 @@
|
||||
"replace_with_upload": "อัปโหลดทับรูปหรือวิดีโอนี้",
|
||||
"require_password": "ต้องการรหัสผ่าน",
|
||||
"require_user_to_change_password_on_first_login": "จำเป็นต้องเปลี่ยนรหัสผ่าน ในการเข้าสู่ระบบครั้งแรก",
|
||||
"rescan": "สแกนใหม่",
|
||||
"reset": "รีเซ็ต",
|
||||
"reset_password": "ตั้งค่ารหัสผ่านใหม่",
|
||||
"reset_people_visibility": "ปรับการมองเห็นใหม่",
|
||||
@@ -1099,6 +1120,8 @@
|
||||
"search": "ค้นหา",
|
||||
"search_albums": "ค้นหาอัลบั้ม",
|
||||
"search_by_context": "ค้นหาตามบริบท",
|
||||
"search_by_description": "ค้นหาด้วยคำอธิบาย",
|
||||
"search_by_description_example": "วันปีนเขาในซาปา",
|
||||
"search_by_filename": "ค้นหาชื่อไฟล์ชื่อ หรือ ชนิดไฟล์",
|
||||
"search_by_filename_example": "ตัวอย่าง. IMG_1234.JPG หรือ PNG",
|
||||
"search_camera_make": "ค้นหายี่ห้อกล้อง",
|
||||
@@ -1112,6 +1135,7 @@
|
||||
"search_options": "ตัวเลือกการค้นหา",
|
||||
"search_people": "ค้นหาผู้คน",
|
||||
"search_places": "ค้นหาสถานที่",
|
||||
"search_rating": "ค้นหาตามเรตติ้ง...",
|
||||
"search_settings": "ตั้งค่าการค้นหา",
|
||||
"search_state": "ค้นหาตามรัฐ",
|
||||
"search_tags": "ค้นหาแท็ก",
|
||||
@@ -1121,6 +1145,7 @@
|
||||
"searching_locales": "ค้นหาตามภูมิภาค",
|
||||
"second": "วินาที",
|
||||
"see_all_people": "ดูบุคคลทั้งหมด",
|
||||
"select": "เลือก",
|
||||
"select_album_cover": "เลือกภาพปกอัลบั้ม",
|
||||
"select_all": "เลือกทั้งหมด",
|
||||
"select_all_duplicates": "เลือกรายการที่ซ้ำทั้งหมด",
|
||||
@@ -1158,6 +1183,7 @@
|
||||
"shared_from_partner": "รูปจาก {partner}",
|
||||
"shared_link_options": "ตั้งค่าลิงก์ที่แชร์",
|
||||
"shared_links": "ลิงก์ที่แชร์",
|
||||
"shared_links_description": "แบ่งปันรูปและวีดีโอด้วยลิ้งค์",
|
||||
"shared_with_partner": "แชร์กับ {partner}",
|
||||
"sharing": "การแชร์",
|
||||
"sharing_enter_password": "โปรดป้อนรหัสผ่าน สำหรับเปิดดูหน้านี้",
|
||||
@@ -1179,6 +1205,7 @@
|
||||
"show_person_options": "แสดงตัวเลือกของตัวบุคคล",
|
||||
"show_progress_bar": "แสดงความคืบหน้า แถบ",
|
||||
"show_search_options": "แสดงตัวเลือกการค้นหา",
|
||||
"show_shared_links": "แสดงลิ้งค์ที่ถูกแบ่งปัน",
|
||||
"show_slideshow_transition": "แสดงสไลค์โชว์",
|
||||
"show_supporter_badge": "เครื่องหมายผู้สนับสนุน",
|
||||
"show_supporter_badge_description": "แสดงเครื่องหมายผู้สนับสนุน",
|
||||
@@ -1203,17 +1230,21 @@
|
||||
"sort_title": "ไตเติ้ล",
|
||||
"source": "แหล่ง",
|
||||
"stack": "ซ้อน",
|
||||
"stack_selected_photos": "",
|
||||
"stack_duplicates": "นำสิ่งที่ซ้ำมาซ้อนอยู่ด้วยกัน",
|
||||
"stack_select_one_photo": "เลือกรูปหลักหนึ่งรูปสำหรับรูปที่ซ้อนกันนี้",
|
||||
"stack_selected_photos": "ซ้อนรูปที่ถูกเลือก",
|
||||
"stacktrace": "",
|
||||
"start": "เริ่มต้น",
|
||||
"start_date": "วันที่เริ่ม",
|
||||
"state": "รัฐ",
|
||||
"status": "สถานะ",
|
||||
"stop_motion_photo": "ภาพวัตถุเคลื่อนไหว",
|
||||
"stop_photo_sharing": "หยุดแชร์รูปภาพ?",
|
||||
"stop_photo_sharing_description": "{partner}จะไม่สามารถเข้าถึงรูปของคุณได้อีก",
|
||||
"stop_sharing_photos_with_user": "หยุดการแชร์รูปภาพของคุณกับผู้ใช้นี้",
|
||||
"storage": "พื้นที่จัดเก็บ",
|
||||
"storage_label": "เนื้อที่จัดเก็บ",
|
||||
"storage_usage": "ใช้ไป {used} จาก {available} ",
|
||||
"storage_usage": "ใช้ไป {used} จาก {available}",
|
||||
"submit": "ส่ง",
|
||||
"suggestions": "ข้อเสนอแนะ",
|
||||
"sunrise_on_the_beach": "พระอาทิตย์ขึ้นบนชายหาด",
|
||||
@@ -1224,22 +1255,28 @@
|
||||
"sync": "ซิงค์",
|
||||
"tag": "แท็ก",
|
||||
"tag_created": "สร้างแท็ก: {tag}",
|
||||
"tag_not_found_question": "ไม่สามารถหาแท็กได้ใช่หรือไม่?<link>สร้างแท็กใหม่</link>",
|
||||
"tag_people": "แท็กผู้คน",
|
||||
"tag_updated": "แท็กที่ถูกอัพเดต: {tag}",
|
||||
"tags": "แท็ก",
|
||||
"template": "เท็มเพลต",
|
||||
"theme": "ธีม",
|
||||
"theme_selection": "การเลือกธีม",
|
||||
"theme_selection_description": "ตั้งค่าธีมให้สว่างหรือมืดโดยอัตโนมัติ อิงจากค่าของเบราว์เซอร์ของคุณ",
|
||||
"they_will_be_merged_together": "จะถูกรวมเข้าด้วยกัน",
|
||||
"third_party_resources": "ทรัพยากรบุคคลที่สาม",
|
||||
"time_based_memories": "ความทรงจําตามเวลา",
|
||||
"timeline": "Timeline",
|
||||
"timeline": "ทามไลน์",
|
||||
"timezone": "เขตเวลา",
|
||||
"to_archive": "จัดเก็บถาวร",
|
||||
"to_change_password": "Change password",
|
||||
"to_change_password": "เปลี่ยนรหัสผ่าน",
|
||||
"to_favorite": "รายการโปรด",
|
||||
"to_login": "เข้าสู่ระบบ",
|
||||
"to_parent": "ไปยังบนสุด",
|
||||
"to_trash": "ถังขยะ",
|
||||
"toggle_settings": "สลับการตั้งค่า",
|
||||
"toggle_theme": "สลับธีม",
|
||||
"total": "ทั้งหมด",
|
||||
"total_usage": "การใช้งานรวม",
|
||||
"trash": "ถังขยะ",
|
||||
"trash_all": "ทิ้งทั้งหมด",
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
"machine_learning_smart_search_description": "Fotoğrafları CLIP kullanarak semantik olarak ara",
|
||||
"machine_learning_smart_search_enabled": "Akıllı aramayı etkinleştir",
|
||||
"machine_learning_smart_search_enabled_description": "Eğer devre dışı bırakılırsa fotoğraflar akıllı arama için işlenmeyecek.",
|
||||
"machine_learning_url_description": "Makine öğrenimi sunucusunun URL'si. Birden fazla URL sağlanırsa, ilkinden sonuna doğru, biri başarılı bir şekilde yanıt verene kadar her sunucu tek tek denenir.",
|
||||
"machine_learning_url_description": "Makine öğrenimi sunucusunun URL’si. Birden fazla URL sağlanırsa, her sunucu sırayla tek tek denenir ve biri başarılı yanıt verene kadar devam edilir. Yanıt vermeyen sunucular, çevrimiçi duruma gelene kadar geçici olarak yok sayılır.",
|
||||
"manage_concurrency": "Aynı anda çalışmayı yönet",
|
||||
"manage_log_settings": "Günlük ayarlarını yönet",
|
||||
"map_dark_style": "Koyu mod",
|
||||
|
||||
46
i18n/uk.json
46
i18n/uk.json
@@ -29,7 +29,7 @@
|
||||
"added_to_favorites_count": "Додано {count, number} до обраного",
|
||||
"admin": {
|
||||
"add_exclusion_pattern_description": "Додайте шаблони виключень. Підстановка з використанням *, ** та ? підтримується. Для ігнорування всіх файлів у будь-якому каталозі з ім'ям «Raw», використовуйте \"**/Raw/**\". Для ігнорування всіх файлів, що закінчуються на \".tif\", використовуйте \"**/*.tif\". Для ігнорування абсолютного шляху використовуйте \"/path/to/ignore/**\".",
|
||||
"asset_offline_description": "Цей зовнішній бібліотечний актив більше не знайдено на диску і був переміщений до кошика. Якщо файл був переміщений у межах бібліотеки, перевірте свій таймлайн на наявність нового відповідного активу. Щоб відновити цей актив, переконайтеся, що шлях файлу нижче доступний для Immich, і проскануйте бібліотеку.",
|
||||
"asset_offline_description": "Цей зовнішній бібліотечний актив більше не знайдено на диску і був переміщений до смітника. Якщо файл був переміщений у межах бібліотеки, перевірте свій таймлайн на наявність нового відповідного активу. Щоб відновити цей актив, переконайтеся, що шлях файлу нижче доступний для Immich, і проскануйте бібліотеку.",
|
||||
"authentication_settings": "Налаштування аутентифікації",
|
||||
"authentication_settings_description": "Управління паролями, OAuth та іншими налаштуваннями аутентифікації",
|
||||
"authentication_settings_disable_all": "Ви впевнені, що хочете вимкнути всі методи входу? Вхід буде повністю вимкнений.",
|
||||
@@ -66,18 +66,23 @@
|
||||
"forcing_refresh_library_files": "Примусове оновлення всіх файлів бібліотеки",
|
||||
"image_format": "Формат",
|
||||
"image_format_description": "Формат WebP виробляє меньші файлів, ніж JPEG, але його кодування вимагає більше часу.",
|
||||
"image_prefer_embedded_preview": "Надати перевагу вбудованому перегляду",
|
||||
"image_prefer_embedded_preview_setting_description": "Використовуйте вбудовані попередні перегляди у RAW фотографіях як вхідні дані для обробки зображень, коли це можливо. Це може забезпечити більш точні кольори для деяких зображень, але якість попереднього перегляду залежить від камери та зображення можуть мати більше артефактів стиснення.",
|
||||
"image_fullsize_description": "Повнорозмірне зображення з видаленими метаданими, які використовуються під час збільшення",
|
||||
"image_fullsize_enabled": "Увімкнути створення повнорозмірного зображення",
|
||||
"image_fullsize_enabled_description": "Генерувати зображення повного розміру для форматів, не призначених для вебу. Якщо увімкнено \"Надавати перевагу вбудованому прев’ю\", вбудовані прев’ю використовуються без конвертації. Не впливає на веб-дружні формати, такі як JPEG.",
|
||||
"image_fullsize_quality_description": "Якість повнорозмірного зображення від 1 до 100. Чим вище значення, тим краще якість, але більше розмір файлу.",
|
||||
"image_fullsize_title": "Налаштування повнорозмірного зображення",
|
||||
"image_prefer_embedded_preview": "Надавати перевагу вбудованому прев’ю",
|
||||
"image_prefer_embedded_preview_setting_description": "Використовувати вбудовані прев’ю в RAW-фотографіях як вхідні дані для обробки зображень, якщо вони доступні. Це може забезпечити точніші кольори для деяких зображень, але якість прев’ю залежить від камери і зображення може містити більше артефактів стиснення.",
|
||||
"image_prefer_wide_gamut": "Віддають перевагу широкій гамі",
|
||||
"image_prefer_wide_gamut_setting_description": "Для мініатюр використовуйте дисплей P3. Це краще зберігає яскравість зображень з широким колірним простором, але на старих пристроях зі старою версією браузера зображення можуть виглядати інакше. sRGB-зображення зберігаються у форматі sRGB, щоб уникнути зсуву кольорів.",
|
||||
"image_preview_description": "Зображення середнього розміру з видаленими метаданими, яке використовується при перегляді одного об'єкта та для машинного навчання",
|
||||
"image_preview_quality_description": "Якість попереднього перегляду від 1 до 100. Вища оцінка означає кращу якість, але створює більші файли та може зменшити швидкість роботи програми. Встановлення низького значення може вплинути на якість машинного навчання.",
|
||||
"image_preview_title": "Налаштування попереднього перегляду",
|
||||
"image_preview_quality_description": "Якість прев’ю від 1 до 100. Вища оцінка означає кращу якість, але створює більші файли та може зменшити швидкість роботи програми. Встановлення низького значення може вплинути на якість машинного навчання.",
|
||||
"image_preview_title": "Налаштування прев’ю",
|
||||
"image_quality": "Якість",
|
||||
"image_resolution": "Роздільність",
|
||||
"image_resolution_description": "Вища роздільність може зберігати більше деталей, але займає більше часу для кодування, має більші розміри файлів і може зменшити швидкість роботи програми.",
|
||||
"image_settings": "Налаштування зображення",
|
||||
"image_settings_description": "Керуйте якістю та роздільною здатністю згенерованих зображень",
|
||||
"image_settings_description": "Керувати якістю та роздільною здатністю згенерованих зображень",
|
||||
"image_thumbnail_description": "Маленька мініатюра із видаленими метаданими, що використовується для перегляду груп фотографій, наприклад, на основній лінії часу",
|
||||
"image_thumbnail_quality_description": "Якість мініатюри від 1 до 100. Вища оцінка означає кращу якість, але створює більші файли та може зменшити швидкість роботи програми.",
|
||||
"image_thumbnail_title": "Налаштування мініатюр",
|
||||
@@ -256,7 +261,7 @@
|
||||
"template_email_available_tags": "Ви можете використовувати наступні змінні у вашому шаблоні: {tags}",
|
||||
"template_email_if_empty": "Якщо шаблон порожній, буде використано стандартний ел. лист.",
|
||||
"template_email_invite_album": "Шаблон запрошення до альбому",
|
||||
"template_email_preview": "Попередній перегляд",
|
||||
"template_email_preview": "Прев’ю",
|
||||
"template_email_settings": "Шаблони ел. листів",
|
||||
"template_email_settings_description": "Керувати шаблонами сповіщень ел. пошти",
|
||||
"template_email_update_album": "Оновити шаблон альбому",
|
||||
@@ -331,11 +336,11 @@
|
||||
"transcoding_two_pass_encoding_setting_description": "Транскодування за двома проходами для отримання кращих закодованих відео. Коли ввімкнено максимальний бітрейт (необхідний для роботи з H.264 та HEVC), цей режим використовує діапазон бітрейту, заснований на максимальному бітрейті, і ігнорує CRF. Для VP9 можна використовувати CRF, якщо вимкнено максимальний бітрейт.",
|
||||
"transcoding_video_codec": "Відеокодек",
|
||||
"transcoding_video_codec_description": "VP9 має високу ефективність і сумісність з вебом, але потребує більше часу на транскодування. HEVC працює схоже, але має меншу сумісність з вебом. H.264 має широку сумісність і швидко транскодується, але створює значно більші файли. AV1 - найефективніший кодек, але не підтримується на старіших пристроях.",
|
||||
"trash_enabled_description": "Увімкнення кошика",
|
||||
"trash_enabled_description": "Увімкнення смітника",
|
||||
"trash_number_of_days": "Кількість днів",
|
||||
"trash_number_of_days_description": "Кількість днів, щоб залишити ресурси в кошику перед остаточним їх видаленням",
|
||||
"trash_settings": "Налаштування кошика",
|
||||
"trash_settings_description": "Керування налаштуваннями кошика",
|
||||
"trash_number_of_days_description": "Кількість днів, щоб залишити ресурси в смітнику перед остаточним їх видаленням",
|
||||
"trash_settings": "Налаштування смітника",
|
||||
"trash_settings_description": "Керування налаштуваннями смітника",
|
||||
"untracked_files": "Невідстежувані файли",
|
||||
"untracked_files_description": "Ці файли не відстежуються програмою. Вони можуть бути результатом невдалого переміщення, перерваного завантаження або залишитися через помилку програми",
|
||||
"user_cleanup_job": "Очищення користувача",
|
||||
@@ -426,12 +431,12 @@
|
||||
"assets_added_to_album_count": "Додано {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}} до альбому",
|
||||
"assets_added_to_name_count": "Додано {count, plural, one {# елемент} other {# елементів}} до {hasName, select, true {<b>{name}</b>} other {нового альбому}}",
|
||||
"assets_count": "{count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
|
||||
"assets_moved_to_trash_count": "Переміщено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}} у кошик",
|
||||
"assets_moved_to_trash_count": "Переміщено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}} у смітник",
|
||||
"assets_permanently_deleted_count": "Остаточно видалено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
|
||||
"assets_removed_count": "Вилучено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
|
||||
"assets_restore_confirmation": "Ви впевнені, що хочете відновити всі свої активи з кошика? Цю дію не можна скасувати! Зверніть увагу, що будь-які офлайн-активи не можуть бути відновлені таким чином.",
|
||||
"assets_restore_confirmation": "Ви впевнені, що хочете відновити всі свої активи з смітника? Цю дію не можна скасувати! Зверніть увагу, що будь-які офлайн-активи не можуть бути відновлені таким чином.",
|
||||
"assets_restored_count": "Відновлено {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
|
||||
"assets_trashed_count": "Поміщено в кошик {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
|
||||
"assets_trashed_count": "Поміщено в смітник {count, plural, one {# ресурс} few {# ресурси} other {# ресурсів}}",
|
||||
"assets_were_part_of_album_count": "{count, plural, one {Ресурс був} few {Ресурси були} other {Ресурси були}} вже частиною альбому",
|
||||
"authorized_devices": "Авторизовані пристрої",
|
||||
"back": "Назад",
|
||||
@@ -445,7 +450,7 @@
|
||||
"build_image": "Версія збірки",
|
||||
"bulk_delete_duplicates_confirmation": "Ви впевнені, що хочете масово видалити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дія залишить найбільший ресурс у кожній групі і остаточно видалить всі інші дублікати. Цю дію неможливо скасувати!",
|
||||
"bulk_keep_duplicates_confirmation": "Ви впевнені, що хочете залишити {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}}? Це дозволить вирішити всі групи дублікатів без видалення чого-небудь.",
|
||||
"bulk_trash_duplicates_confirmation": "Ви впевнені, що хочете викинути в кошик {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}} масово? Це залишить найбільший ресурс у кожній групі і викине в кошик всі інші дублікати.",
|
||||
"bulk_trash_duplicates_confirmation": "Ви впевнені, що хочете викинути в смітник {count, plural, one {# дубльований ресурс} few {# дубльовані ресурси} other {# дубльованих ресурсів}} масово? Це залишить найбільший ресурс у кожній групі і викине в смітник всі інші дублікати.",
|
||||
"buy": "Придбайте Immich",
|
||||
"camera": "Камера",
|
||||
"camera_brand": "Марка камери",
|
||||
@@ -600,8 +605,8 @@
|
||||
"editor_crop_tool_h2_aspect_ratios": "Пропорції зображення",
|
||||
"editor_crop_tool_h2_rotation": "Орієнтація",
|
||||
"email": "Електронна пошта",
|
||||
"empty_trash": "Очистити кошик",
|
||||
"empty_trash_confirmation": "Ви впевнені, що хочете очистити кошик? Це остаточно видалить всі ресурси в кошику з Immich.\nЦю дію не можна скасувати!",
|
||||
"empty_trash": "Очистити смітник",
|
||||
"empty_trash_confirmation": "Ви впевнені, що хочете очистити смітник? Це остаточно видалить всі ресурси в смітнику з Immich.\nЦю дію не можна скасувати!",
|
||||
"enable": "Увімкнути",
|
||||
"enabled": "Увімкнено",
|
||||
"end_date": "Дата завершення",
|
||||
@@ -680,7 +685,7 @@
|
||||
"unable_to_download_files": "Неможливо завантажити файли",
|
||||
"unable_to_edit_exclusion_pattern": "Не вдалося редагувати шаблон виключення",
|
||||
"unable_to_edit_import_path": "Неможливо відредагувати шлях імпорту",
|
||||
"unable_to_empty_trash": "Неможливо очистити кошик",
|
||||
"unable_to_empty_trash": "Неможливо очистити смітник",
|
||||
"unable_to_enter_fullscreen": "Неможливо увійти в повноекранний режим",
|
||||
"unable_to_exit_fullscreen": "Неможливо вийти з повноекранного режиму",
|
||||
"unable_to_get_comments_number": "Не вдалося отримати кількість коментарів",
|
||||
@@ -710,7 +715,7 @@
|
||||
"unable_to_reset_password": "Не вдається скинути пароль",
|
||||
"unable_to_resolve_duplicate": "Не вдається вирішити дублікат",
|
||||
"unable_to_restore_assets": "Неможливо відновити активи",
|
||||
"unable_to_restore_trash": "Неможливо відновити сміття",
|
||||
"unable_to_restore_trash": "Не вдалося відновити вміст",
|
||||
"unable_to_restore_user": "Не вдається відновити користувача",
|
||||
"unable_to_save_album": "Не вдається зберегти альбом",
|
||||
"unable_to_save_api_key": "Не вдається зберегти ключ API",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "Циклічні відео",
|
||||
"loop_videos_description": "Увімкнути циклічне відтворення відео.",
|
||||
"main_branch_warning": "Ви використовуєте версію для розробників; ми настійно рекомендуємо використовувати релізну версію!",
|
||||
"main_menu": "Головне меню",
|
||||
"make": "Виробник",
|
||||
"manage_shared_links": "Керування спільними посиланнями",
|
||||
"manage_sharing_with_partners": "Керуйте спільним використанням з партнерами",
|
||||
@@ -1289,7 +1295,7 @@
|
||||
"toggle_theme": "Перемикання теми",
|
||||
"total": "Усього",
|
||||
"total_usage": "Загальне використання",
|
||||
"trash": "Кошик",
|
||||
"trash": "Смітник",
|
||||
"trash_all": "Видалити все",
|
||||
"trash_count": "Видалити {count, number}",
|
||||
"trash_delete_asset": "Смітник/Видалити ресурс",
|
||||
|
||||
@@ -1317,4 +1317,4 @@
|
||||
"yes": "Có",
|
||||
"you_dont_have_any_shared_links": "Bạn không có liên kết chia sẻ nào",
|
||||
"zoom_image": "Thu phóng ảnh"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
"about": "關於",
|
||||
"account": "帳號",
|
||||
"account_settings": "帳號設定",
|
||||
"acknowledge": "明白",
|
||||
"acknowledge": "了解",
|
||||
"action": "操作",
|
||||
"actions": "操作",
|
||||
"actions": "進行動作",
|
||||
"active": "處理中",
|
||||
"activity": "動態",
|
||||
"activity_changed": "動態已{enabled, select, true {啟用} other {停用}}",
|
||||
"activity_changed": "動態{enabled, select, true {開啟} other {關閉}}",
|
||||
"add": "加入",
|
||||
"add_a_description": "加入文字說明",
|
||||
"add_a_location": "新增地點",
|
||||
@@ -23,8 +23,8 @@
|
||||
"add_to": "加入到…",
|
||||
"add_to_album": "加入到相簿",
|
||||
"add_to_shared_album": "加到共享相簿",
|
||||
"add_url": "新增URL",
|
||||
"added_to_archive": "已新增至封存",
|
||||
"add_url": "建立連結",
|
||||
"added_to_archive": "移至封存",
|
||||
"added_to_favorites": "加入收藏",
|
||||
"added_to_favorites_count": "將 {count, number} 個項目加入收藏",
|
||||
"admin": {
|
||||
@@ -33,7 +33,7 @@
|
||||
"authentication_settings": "驗證設定",
|
||||
"authentication_settings_description": "管理密碼、OAuth 與其他驗證設定",
|
||||
"authentication_settings_disable_all": "確定要停用所有登入方式嗎?這樣會完全無法登入。",
|
||||
"authentication_settings_reenable": "如需重新啟用,請使用 <link>伺服器指令</link>。",
|
||||
"authentication_settings_reenable": "如需重新啟用,請使用 <link> 伺服器指令 </link> 。",
|
||||
"background_task_job": "背景執行",
|
||||
"backup_database": "備份資料庫",
|
||||
"backup_database_enable_description": "啟用資料庫備份",
|
||||
@@ -485,7 +485,7 @@
|
||||
"comments_are_disabled": "留言已停用",
|
||||
"confirm": "確認",
|
||||
"confirm_admin_password": "確認管理者密碼",
|
||||
"confirm_delete_face": "您確定要從資產中刪除 {name} 的臉部嗎?",
|
||||
"confirm_delete_face": "您確定要從項目中刪除 {name} 的臉孔嗎?",
|
||||
"confirm_delete_shared_link": "確定刪除連結嗎?",
|
||||
"confirm_keep_this_delete_others": "所有的其他堆疊項目將被刪除。確定繼續嗎?",
|
||||
"confirm_password": "確認密碼",
|
||||
@@ -606,7 +606,7 @@
|
||||
"enabled": "己啟用",
|
||||
"end_date": "結束日期",
|
||||
"error": "錯誤",
|
||||
"error_delete_face": "從資產中刪除臉部時發生錯誤",
|
||||
"error_delete_face": "從項目中刪除臉孔時發生錯誤",
|
||||
"error_loading_image": "載入圖片時出錯",
|
||||
"error_title": "錯誤 - 出問題了",
|
||||
"errors": {
|
||||
@@ -618,7 +618,7 @@
|
||||
"cant_change_metadata_assets_count": "無法更改 {count, plural, other {# 個檔案}}的詳細資料",
|
||||
"cant_get_faces": "無法取得臉孔",
|
||||
"cant_get_number_of_comments": "無法取得留言數量",
|
||||
"cant_search_people": "無法搜尋人",
|
||||
"cant_search_people": "未搜尋到人物",
|
||||
"cant_search_places": "無法搜尋地點",
|
||||
"cleared_jobs": "已清除的作業:{job}",
|
||||
"error_adding_assets_to_album": "將檔案加入相簿時出錯",
|
||||
@@ -1374,4 +1374,4 @@
|
||||
"yes": "是",
|
||||
"you_dont_have_any_shared_links": "您沒有任何共享連結",
|
||||
"zoom_image": "縮放圖片"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,11 @@
|
||||
"forcing_refresh_library_files": "强制刷新所有图库文件",
|
||||
"image_format": "格式",
|
||||
"image_format_description": "WebP 文件体积较 JPEG 文件更小,但编码速度较慢。",
|
||||
"image_fullsize_description": "去除元数据的全尺寸图像,放大时使用",
|
||||
"image_fullsize_enabled": "启用全尺寸图像生成",
|
||||
"image_fullsize_enabled_description": "生成非网络友好格式的全尺寸图像。启用 “首选嵌入式预览 ”后,将直接使用嵌入式预览而无需转换。不影响 JPEG 等网络友好格式。",
|
||||
"image_fullsize_quality_description": "全尺寸图像质量从 1 到 100。越高越好,但生成的文件较大。",
|
||||
"image_fullsize_title": "全尺寸图像设置",
|
||||
"image_prefer_embedded_preview": "嵌入式预览",
|
||||
"image_prefer_embedded_preview_setting_description": "优先使用 RAW 照片的嵌入式预览作为图像处理的输入。可以提升某些影像的颜色准确度,但嵌入式预览的质量取决于相机,图像可能压缩失真更严重。",
|
||||
"image_prefer_wide_gamut": "广色域",
|
||||
@@ -859,6 +864,7 @@
|
||||
"loop_videos": "循环视频",
|
||||
"loop_videos_description": "启用在详细信息中自动循环播放视频。",
|
||||
"main_branch_warning": "您当前使用的是开发版;我们强烈建议您使用正式发行版(release版)!",
|
||||
"main_menu": "主菜单",
|
||||
"make": "品牌",
|
||||
"manage_shared_links": "管理共享链接",
|
||||
"manage_sharing_with_partners": "管理与同伴的共享",
|
||||
|
||||
@@ -51,11 +51,10 @@ ARG DEVICE
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
VIRTUAL_ENV=/opt/venv
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends g++
|
||||
|
||||
COPY --from=ghcr.io/astral-sh/uv:latest@sha256:57da96c4557243fc0a732817854084e81af9393f64dc7d172f39c16465b5e2ba /uv /uvx /bin/
|
||||
COPY --from=ghcr.io/astral-sh/uv:latest@sha256:fb91e82e8643382d5bce074ba0d167677d678faff4bd518dac670476d19b159c /uv /uvx /bin/
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||
@@ -66,7 +65,9 @@ RUN if [ "$DEVICE" = "rocm" ]; then \
|
||||
|
||||
FROM python:3.11-slim-bookworm@sha256:7029b00486ac40bed03e36775b864d3f3d39dcbdf19cd45e6a52d541e6c178f0 AS prod-cpu
|
||||
|
||||
FROM prod-cpu AS prod-openvino
|
||||
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
|
||||
|
||||
FROM python:3.11-slim-bookworm@sha256:7029b00486ac40bed03e36775b864d3f3d39dcbdf19cd45e6a52d541e6c178f0 AS prod-openvino
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \
|
||||
@@ -81,6 +82,8 @@ RUN apt-get update && \
|
||||
|
||||
FROM nvidia/cuda:12.2.2-runtime-ubuntu22.04@sha256:94c1577b2cd9dd6c0312dc04dff9cb2fdce2b268018abc3d7c2dbcacf1155000 AS prod-cuda
|
||||
|
||||
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install --no-install-recommends -yqq libcudnn9-cuda-12 && \
|
||||
apt-get clean && \
|
||||
@@ -94,7 +97,8 @@ FROM rocm/dev-ubuntu-22.04:6.3.4-complete@sha256:1f7e92ca7e3a3785680473329ed1091
|
||||
|
||||
FROM prod-cpu AS prod-armnn
|
||||
|
||||
ENV LD_LIBRARY_PATH=/opt/armnn
|
||||
ENV LD_LIBRARY_PATH=/opt/armnn \
|
||||
LD_PRELOAD=/usr/lib/libmimalloc.so.2
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends ocl-icd-libopencl1 mesa-opencl-icd libgomp1 && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
@@ -114,6 +118,8 @@ COPY --from=builder-armnn \
|
||||
|
||||
FROM prod-cpu AS prod-rknn
|
||||
|
||||
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
|
||||
|
||||
ADD --checksum=sha256:73993ed4b440460825f21611731564503cc1d5a0c123746477da6cd574f34885 https://github.com/airockchip/rknn-toolkit2/raw/refs/tags/v2.3.0/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so /usr/lib/
|
||||
|
||||
FROM prod-${DEVICE} AS prod
|
||||
@@ -126,14 +132,17 @@ RUN apt-get update && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
RUN ln -s "/usr/lib/$(arch)-linux-gnu/libmimalloc.so.2" /usr/lib/libmimalloc.so.2
|
||||
|
||||
WORKDIR /usr/src
|
||||
ENV TRANSFORMERS_CACHE=/cache \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1 \
|
||||
PATH="/opt/venv/bin:$PATH" \
|
||||
PYTHONPATH=/usr/src \
|
||||
DEVICE=${DEVICE} \
|
||||
VIRTUAL_ENV=/opt/venv
|
||||
VIRTUAL_ENV=/opt/venv \
|
||||
MACHINE_LEARNING_CACHE_FOLDER=/cache
|
||||
|
||||
# prevent core dumps
|
||||
RUN echo "hard core 0" >> /etc/security/limits.conf && \
|
||||
@@ -141,9 +150,8 @@ RUN echo "hard core 0" >> /etc/security/limits.conf && \
|
||||
echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile
|
||||
|
||||
COPY --from=builder /opt/venv /opt/venv
|
||||
COPY ann/ann.py /usr/src/ann/ann.py
|
||||
COPY start.sh log_conf.json gunicorn_conf.py ./
|
||||
COPY app .
|
||||
COPY scripts/healthcheck.py .
|
||||
COPY immich_ml immich_ml
|
||||
|
||||
ARG BUILD_ID
|
||||
ARG BUILD_IMAGE
|
||||
@@ -161,6 +169,6 @@ ENV IMMICH_SOURCE_COMMIT=${BUILD_SOURCE_COMMIT}
|
||||
ENV IMMICH_SOURCE_URL=https://github.com/immich-app/immich/commit/${BUILD_SOURCE_COMMIT}
|
||||
|
||||
ENTRYPOINT ["tini", "--"]
|
||||
CMD ["./start.sh"]
|
||||
CMD ["python", "-m", "immich_ml"]
|
||||
|
||||
HEALTHCHECK CMD python3 healthcheck.py
|
||||
HEALTHCHECK CMD python3 healthcheck.py
|
||||
|
||||
@@ -8,9 +8,8 @@ from fastapi.testclient import TestClient
|
||||
from numpy.typing import NDArray
|
||||
from PIL import Image
|
||||
|
||||
from app.config import log
|
||||
|
||||
from .main import app
|
||||
from immich_ml.config import log
|
||||
from immich_ml.main import app
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -25,7 +24,7 @@ def cv_image(pil_image: Image.Image) -> NDArray[np.float32]:
|
||||
|
||||
@pytest.fixture
|
||||
def mock_get_model() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.models.cache.from_model_type", autospec=True) as mocked:
|
||||
with mock.patch("immich_ml.models.cache.from_model_type", autospec=True) as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@@ -104,14 +103,14 @@ def providers(request: pytest.FixtureRequest) -> Iterator[mock.Mock]:
|
||||
raise ValueError("Missing marker 'providers'")
|
||||
|
||||
providers = marker.args[0]
|
||||
with mock.patch("app.sessions.ort.ort.get_available_providers") as mocked:
|
||||
with mock.patch("immich_ml.sessions.ort.ort.get_available_providers") as mocked:
|
||||
mocked.return_value = providers
|
||||
yield providers
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def ort_pybind() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.sessions.ort.ort.capi._pybind_state") as mocked:
|
||||
with mock.patch("immich_ml.sessions.ort.ort.capi._pybind_state") as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@@ -126,25 +125,25 @@ def ov_device_ids(request: pytest.FixtureRequest, ort_pybind: mock.Mock) -> Iter
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def ort_session() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.sessions.ort.ort.InferenceSession") as mocked:
|
||||
with mock.patch("immich_ml.sessions.ort.ort.InferenceSession") as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def ann_session() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.sessions.ann.Ann") as mocked:
|
||||
with mock.patch("immich_ml.sessions.ann.Ann") as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def rknn_session() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.sessions.rknn.RknnPoolExecutor") as mocked:
|
||||
with mock.patch("immich_ml.sessions.rknn.RknnPoolExecutor") as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def rmtree() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.models.base.rmtree", autospec=True) as mocked:
|
||||
with mock.patch("immich_ml.models.base.rmtree", autospec=True) as mocked:
|
||||
mocked.avoids_symlink_attacks = True
|
||||
yield mocked
|
||||
|
||||
@@ -158,7 +157,7 @@ def path() -> Iterator[mock.Mock]:
|
||||
path.with_suffix.return_value = path
|
||||
path.return_value = path
|
||||
|
||||
with mock.patch("app.models.base.Path", return_value=path) as mocked:
|
||||
with mock.patch("immich_ml.models.base.Path", return_value=path) as mocked:
|
||||
yield mocked
|
||||
|
||||
|
||||
@@ -182,5 +181,5 @@ def exception() -> Iterator[mock.Mock]:
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def snapshot_download() -> Iterator[mock.Mock]:
|
||||
with mock.patch("app.models.base.snapshot_download") as mocked:
|
||||
with mock.patch("immich_ml.models.base.snapshot_download") as mocked:
|
||||
yield mocked
|
||||
@@ -1 +0,0 @@
|
||||
3.12
|
||||
@@ -1,165 +0,0 @@
|
||||
import json
|
||||
import resource
|
||||
from pathlib import Path
|
||||
|
||||
import typer
|
||||
from tenacity import retry, stop_after_attempt, wait_fixed
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from .exporters.constants import DELETE_PATTERNS, SOURCE_TO_METADATA, ModelSource, ModelTask
|
||||
from .exporters.onnx import export as onnx_export
|
||||
from .exporters.rknn import export as rknn_export
|
||||
|
||||
app = typer.Typer(pretty_exceptions_show_locals=False)
|
||||
|
||||
|
||||
def generate_readme(model_name: str, model_source: ModelSource) -> str:
|
||||
(name, link, type) = SOURCE_TO_METADATA[model_source]
|
||||
match model_source:
|
||||
case ModelSource.MCLIP:
|
||||
tags = ["immich", "clip", "multilingual"]
|
||||
case ModelSource.OPENCLIP:
|
||||
tags = ["immich", "clip"]
|
||||
lowered = model_name.lower()
|
||||
if "xlm" in lowered or "nllb" in lowered:
|
||||
tags.append("multilingual")
|
||||
case ModelSource.INSIGHTFACE:
|
||||
tags = ["immich", "facial-recognition"]
|
||||
case _:
|
||||
raise ValueError(f"Unsupported model source {model_source}")
|
||||
|
||||
return f"""---
|
||||
tags:
|
||||
{" - " + "\n - ".join(tags)}
|
||||
---
|
||||
# Model Description
|
||||
|
||||
This repo contains ONNX exports for the associated {type} model by {name}. See the [{name}]({link}) repo for more info.
|
||||
|
||||
This repo is specifically intended for use with [Immich](https://immich.app/), a self-hosted photo library.
|
||||
"""
|
||||
|
||||
|
||||
def clean_name(model_name: str) -> str:
|
||||
hf_model_name = model_name.split("/")[-1]
|
||||
hf_model_name = hf_model_name.replace("xlm-roberta-large", "XLM-Roberta-Large")
|
||||
hf_model_name = hf_model_name.replace("xlm-roberta-base", "XLM-Roberta-Base")
|
||||
return hf_model_name
|
||||
|
||||
|
||||
@app.command()
|
||||
def export(model_name: str, model_source: ModelSource, output_dir: Path = Path("models"), cache: bool = True) -> None:
|
||||
hf_model_name = clean_name(model_name)
|
||||
output_dir = output_dir / hf_model_name
|
||||
match model_source:
|
||||
case ModelSource.MCLIP | ModelSource.OPENCLIP:
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
onnx_export(model_name, model_source, output_dir, cache=cache)
|
||||
case ModelSource.INSIGHTFACE:
|
||||
from huggingface_hub import snapshot_download
|
||||
|
||||
# TODO: start from insightface dump instead of downloading from HF
|
||||
snapshot_download(f"immich-app/{hf_model_name}", local_dir=output_dir)
|
||||
case _:
|
||||
raise ValueError(f"Unsupported model source {model_source}")
|
||||
|
||||
try:
|
||||
rknn_export(output_dir, cache=cache)
|
||||
except Exception as e:
|
||||
print(f"Failed to export model {model_name} to rknn: {e}")
|
||||
(output_dir / "rknpu").unlink(missing_ok=True)
|
||||
|
||||
readme_path = output_dir / "README.md"
|
||||
if not (cache or readme_path.exists()):
|
||||
with open(readme_path, "w") as f:
|
||||
f.write(generate_readme(model_name, model_source))
|
||||
|
||||
|
||||
@app.command()
|
||||
def profile(model_dir: Path, model_task: ModelTask, output_path: Path) -> None:
|
||||
from timeit import timeit
|
||||
|
||||
import numpy as np
|
||||
import onnxruntime as ort
|
||||
|
||||
np.random.seed(0)
|
||||
|
||||
sess_options = ort.SessionOptions()
|
||||
sess_options.enable_cpu_mem_arena = False
|
||||
providers = ["CPUExecutionProvider"]
|
||||
provider_options = [{"arena_extend_strategy": "kSameAsRequested"}]
|
||||
match model_task:
|
||||
case ModelTask.SEARCH:
|
||||
textual = ort.InferenceSession(
|
||||
model_dir / "textual" / "model.onnx",
|
||||
sess_options=sess_options,
|
||||
providers=providers,
|
||||
provider_options=provider_options,
|
||||
)
|
||||
tokens = {node.name: np.random.rand(*node.shape).astype(np.int32) for node in textual.get_inputs()}
|
||||
|
||||
visual = ort.InferenceSession(
|
||||
model_dir / "visual" / "model.onnx",
|
||||
sess_options=sess_options,
|
||||
providers=providers,
|
||||
provider_options=provider_options,
|
||||
)
|
||||
image = {node.name: np.random.rand(*node.shape).astype(np.float32) for node in visual.get_inputs()}
|
||||
|
||||
def predict() -> None:
|
||||
textual.run(None, tokens)
|
||||
visual.run(None, image)
|
||||
|
||||
case ModelTask.FACIAL_RECOGNITION:
|
||||
detection = ort.InferenceSession(
|
||||
model_dir / "detection" / "model.onnx",
|
||||
sess_options=sess_options,
|
||||
providers=providers,
|
||||
provider_options=provider_options,
|
||||
)
|
||||
image = {node.name: np.random.rand(1, 3, 640, 640).astype(np.float32) for node in detection.get_inputs()}
|
||||
|
||||
recognition = ort.InferenceSession(
|
||||
model_dir / "recognition" / "model.onnx",
|
||||
sess_options=sess_options,
|
||||
providers=providers,
|
||||
provider_options=provider_options,
|
||||
)
|
||||
face = {node.name: np.random.rand(1, 3, 112, 112).astype(np.float32) for node in recognition.get_inputs()}
|
||||
|
||||
def predict() -> None:
|
||||
detection.run(None, image)
|
||||
recognition.run(None, face)
|
||||
|
||||
case _:
|
||||
raise ValueError(f"Unsupported model task {model_task}")
|
||||
predict()
|
||||
ms = timeit(predict, number=100)
|
||||
rss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
|
||||
json.dump({"pretrained_model": model_dir.name, "peak_rss": rss, "exec_time_ms": ms}, output_path.open("w"))
|
||||
print(f"Model {model_dir.name} took {ms:.2f}ms per iteration using {rss / 1024:.2f}MiB of memory")
|
||||
|
||||
|
||||
@app.command()
|
||||
def upload(
|
||||
model_dir: Path,
|
||||
hf_organization: str = "immich-app",
|
||||
hf_auth_token: Annotated[str | None, typer.Option(envvar="HF_AUTH_TOKEN")] = None,
|
||||
) -> None:
|
||||
from huggingface_hub import create_repo, upload_folder
|
||||
|
||||
repo_id = f"{hf_organization}/{model_dir.name}"
|
||||
|
||||
@retry(stop=stop_after_attempt(5), wait=wait_fixed(5))
|
||||
def upload_model() -> None:
|
||||
create_repo(repo_id, exist_ok=True, token=hf_auth_token)
|
||||
upload_folder(
|
||||
repo_id=repo_id,
|
||||
folder_path=model_dir,
|
||||
# remote repo files to be deleted before uploading
|
||||
# deletion is in the same commit as the upload, so it's atomic
|
||||
delete_patterns=DELETE_PATTERNS,
|
||||
token=hf_auth_token,
|
||||
)
|
||||
|
||||
upload_model()
|
||||
@@ -1,3 +0,0 @@
|
||||
from immich_model_exporter import app
|
||||
|
||||
app()
|
||||
@@ -1,54 +0,0 @@
|
||||
from enum import StrEnum
|
||||
from typing import NamedTuple
|
||||
|
||||
|
||||
class ModelSource(StrEnum):
|
||||
INSIGHTFACE = "insightface"
|
||||
MCLIP = "mclip"
|
||||
OPENCLIP = "openclip"
|
||||
|
||||
|
||||
class ModelTask(StrEnum):
|
||||
FACIAL_RECOGNITION = "facial-recognition"
|
||||
SEARCH = "clip"
|
||||
|
||||
|
||||
class SourceMetadata(NamedTuple):
|
||||
name: str
|
||||
link: str
|
||||
type: str
|
||||
|
||||
|
||||
SOURCE_TO_METADATA = {
|
||||
ModelSource.MCLIP: SourceMetadata("M-CLIP", "https://huggingface.co/M-CLIP", "CLIP"),
|
||||
ModelSource.OPENCLIP: SourceMetadata("OpenCLIP", "https://github.com/mlfoundations/open_clip", "CLIP"),
|
||||
ModelSource.INSIGHTFACE: SourceMetadata(
|
||||
"InsightFace", "https://github.com/deepinsight/insightface/tree/master", "facial recognition"
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
SOURCE_TO_TASK = {
|
||||
ModelSource.MCLIP: ModelTask.SEARCH,
|
||||
ModelSource.OPENCLIP: ModelTask.SEARCH,
|
||||
ModelSource.INSIGHTFACE: ModelTask.FACIAL_RECOGNITION,
|
||||
}
|
||||
|
||||
RKNN_SOCS = ["rk3566", "rk3568", "rk3576", "rk3588"]
|
||||
|
||||
|
||||
# glob to delete old UUID blobs when reuploading models
|
||||
_uuid_char = "[a-fA-F0-9]"
|
||||
_uuid_glob = _uuid_char * 8 + "-" + _uuid_char * 4 + "-" + _uuid_char * 4 + "-" + _uuid_char * 4 + "-" + _uuid_char * 12
|
||||
DELETE_PATTERNS = [
|
||||
"**/*onnx*",
|
||||
"**/Constant*",
|
||||
"**/*.weight",
|
||||
"**/*.bias",
|
||||
"**/*.proj",
|
||||
"**/*in_proj_bias",
|
||||
"**/*.npy",
|
||||
"**/*.latent",
|
||||
"**/*.pos_embed",
|
||||
f"**/{_uuid_glob}",
|
||||
]
|
||||
@@ -1,20 +0,0 @@
|
||||
from pathlib import Path
|
||||
|
||||
from ..constants import ModelSource
|
||||
from .models import mclip, openclip
|
||||
|
||||
|
||||
def export(
|
||||
model_name: str, model_source: ModelSource, output_dir: Path, opset_version: int = 19, cache: bool = True
|
||||
) -> None:
|
||||
visual_dir = output_dir / "visual"
|
||||
textual_dir = output_dir / "textual"
|
||||
match model_source:
|
||||
case ModelSource.MCLIP:
|
||||
mclip.to_onnx(model_name, opset_version, visual_dir, textual_dir, cache=cache)
|
||||
case ModelSource.OPENCLIP:
|
||||
name, _, pretrained = model_name.partition("__")
|
||||
config = openclip.OpenCLIPModelConfig(name, pretrained)
|
||||
openclip.to_onnx(config, opset_version, visual_dir, textual_dir, cache=cache)
|
||||
case _:
|
||||
raise ValueError(f"Unsupported model source {model_source}")
|
||||
@@ -1,77 +0,0 @@
|
||||
import warnings
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from .openclip import OpenCLIPModelConfig
|
||||
from .openclip import to_onnx as openclip_to_onnx
|
||||
from .util import get_model_path
|
||||
|
||||
_MCLIP_TO_OPENCLIP = {
|
||||
"M-CLIP/XLM-Roberta-Large-Vit-B-32": OpenCLIPModelConfig("ViT-B-32", "openai"),
|
||||
"M-CLIP/XLM-Roberta-Large-Vit-B-16Plus": OpenCLIPModelConfig("ViT-B-16-plus-240", "laion400m_e32"),
|
||||
"M-CLIP/LABSE-Vit-L-14": OpenCLIPModelConfig("ViT-L-14", "openai"),
|
||||
"M-CLIP/XLM-Roberta-Large-Vit-L-14": OpenCLIPModelConfig("ViT-L-14", "openai"),
|
||||
}
|
||||
|
||||
|
||||
def to_onnx(
|
||||
model_name: str,
|
||||
opset_version: int,
|
||||
output_dir_visual: Path | str,
|
||||
output_dir_textual: Path | str,
|
||||
cache: bool = True,
|
||||
) -> tuple[Path, Path]:
|
||||
textual_path = get_model_path(output_dir_textual)
|
||||
if not cache or not textual_path.exists():
|
||||
import torch
|
||||
from multilingual_clip.pt_multilingual_clip import MultilingualCLIP
|
||||
from transformers import AutoTokenizer
|
||||
|
||||
torch.backends.mha.set_fastpath_enabled(False)
|
||||
|
||||
model = MultilingualCLIP.from_pretrained(model_name)
|
||||
AutoTokenizer.from_pretrained(model_name).save_pretrained(output_dir_textual)
|
||||
|
||||
model.eval()
|
||||
for param in model.parameters():
|
||||
param.requires_grad_(False)
|
||||
|
||||
_export_text_encoder(model, textual_path, opset_version)
|
||||
else:
|
||||
print(f"Model {textual_path} already exists, skipping")
|
||||
visual_path, _ = openclip_to_onnx(_MCLIP_TO_OPENCLIP[model_name], opset_version, output_dir_visual, cache=cache)
|
||||
assert visual_path is not None, "Visual model export failed"
|
||||
return visual_path, textual_path
|
||||
|
||||
|
||||
def _export_text_encoder(model: Any, output_path: Path | str, opset_version: int) -> None:
|
||||
import torch
|
||||
from multilingual_clip.pt_multilingual_clip import MultilingualCLIP
|
||||
|
||||
output_path = Path(output_path)
|
||||
|
||||
def forward(self: MultilingualCLIP, input_ids: torch.Tensor, attention_mask: torch.Tensor) -> torch.Tensor:
|
||||
embs = self.transformer(input_ids, attention_mask)[0]
|
||||
embs = (embs * attention_mask.unsqueeze(2)).sum(dim=1) / attention_mask.sum(dim=1)[:, None]
|
||||
embs = self.LinearTransformation(embs)
|
||||
return torch.nn.functional.normalize(embs, dim=-1)
|
||||
|
||||
# unfortunately need to monkeypatch for tracing to work here
|
||||
# otherwise it hits the 2GiB protobuf serialization limit
|
||||
MultilingualCLIP.forward = forward
|
||||
|
||||
args = (torch.ones(1, 77, dtype=torch.int32), torch.ones(1, 77, dtype=torch.int32))
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("ignore", UserWarning)
|
||||
torch.onnx.export(
|
||||
model,
|
||||
args,
|
||||
output_path.as_posix(),
|
||||
input_names=["input_ids", "attention_mask"],
|
||||
output_names=["embedding"],
|
||||
opset_version=opset_version,
|
||||
# dynamic_axes={
|
||||
# "input_ids": {0: "batch_size", 1: "sequence_length"},
|
||||
# "attention_mask": {0: "batch_size", 1: "sequence_length"},
|
||||
# },
|
||||
)
|
||||
@@ -1,151 +0,0 @@
|
||||
import warnings
|
||||
from dataclasses import dataclass
|
||||
from functools import cached_property
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from .util import get_model_path, save_config
|
||||
|
||||
|
||||
@dataclass
|
||||
class OpenCLIPModelConfig:
|
||||
name: str
|
||||
pretrained: str
|
||||
|
||||
@cached_property
|
||||
def model_config(self) -> dict[str, Any]:
|
||||
import open_clip
|
||||
|
||||
config: dict[str, Any] | None = open_clip.get_model_config(self.name)
|
||||
if config is None:
|
||||
raise ValueError(f"Unknown model {self.name}")
|
||||
return config
|
||||
|
||||
@property
|
||||
def image_size(self) -> int:
|
||||
image_size: int = self.model_config["vision_cfg"]["image_size"]
|
||||
return image_size
|
||||
|
||||
@property
|
||||
def sequence_length(self) -> int:
|
||||
context_length: int = self.model_config["text_cfg"].get("context_length", 77)
|
||||
return context_length
|
||||
|
||||
|
||||
def to_onnx(
|
||||
model_cfg: OpenCLIPModelConfig,
|
||||
opset_version: int,
|
||||
output_dir_visual: Path | str | None = None,
|
||||
output_dir_textual: Path | str | None = None,
|
||||
cache: bool = True,
|
||||
) -> tuple[Path | None, Path | None]:
|
||||
visual_path = None
|
||||
textual_path = None
|
||||
if output_dir_visual is not None:
|
||||
output_dir_visual = Path(output_dir_visual)
|
||||
visual_path = get_model_path(output_dir_visual)
|
||||
|
||||
if output_dir_textual is not None:
|
||||
output_dir_textual = Path(output_dir_textual)
|
||||
textual_path = get_model_path(output_dir_textual)
|
||||
|
||||
if cache and ((textual_path is None or textual_path.exists()) and (visual_path is None or visual_path.exists())):
|
||||
print(f"Models {textual_path} and {visual_path} already exist, skipping")
|
||||
return visual_path, textual_path
|
||||
|
||||
import open_clip
|
||||
import torch
|
||||
from transformers import AutoTokenizer
|
||||
|
||||
torch.backends.mha.set_fastpath_enabled(False)
|
||||
|
||||
model = open_clip.create_model(
|
||||
model_cfg.name,
|
||||
pretrained=model_cfg.pretrained,
|
||||
jit=False,
|
||||
require_pretrained=True,
|
||||
)
|
||||
|
||||
text_vision_cfg = open_clip.get_model_config(model_cfg.name)
|
||||
|
||||
model.eval()
|
||||
for param in model.parameters():
|
||||
param.requires_grad_(False)
|
||||
|
||||
if visual_path is not None and output_dir_visual is not None:
|
||||
if not cache or not visual_path.exists():
|
||||
save_config(
|
||||
open_clip.get_model_preprocess_cfg(model),
|
||||
output_dir_visual / "preprocess_cfg.json",
|
||||
)
|
||||
save_config(text_vision_cfg, output_dir_visual.parent / "config.json")
|
||||
_export_image_encoder(model, model_cfg, visual_path, opset_version)
|
||||
else:
|
||||
print(f"Model {visual_path} already exists, skipping")
|
||||
|
||||
if textual_path is not None and output_dir_textual is not None:
|
||||
if not cache or not textual_path.exists():
|
||||
tokenizer_name = text_vision_cfg["text_cfg"].get("hf_tokenizer_name", "openai/clip-vit-base-patch32")
|
||||
AutoTokenizer.from_pretrained(tokenizer_name).save_pretrained(output_dir_textual)
|
||||
_export_text_encoder(model, model_cfg, textual_path, opset_version)
|
||||
else:
|
||||
print(f"Model {textual_path} already exists, skipping")
|
||||
return visual_path, textual_path
|
||||
|
||||
|
||||
def _export_image_encoder(
|
||||
model: Any, model_cfg: OpenCLIPModelConfig, output_path: Path | str, opset_version: int
|
||||
) -> None:
|
||||
import torch
|
||||
|
||||
output_path = Path(output_path)
|
||||
|
||||
def encode_image(image: torch.Tensor) -> torch.Tensor:
|
||||
output = model.encode_image(image, normalize=True)
|
||||
assert isinstance(output, torch.Tensor)
|
||||
return output
|
||||
|
||||
model.forward = encode_image
|
||||
|
||||
args = (torch.randn(1, 3, model_cfg.image_size, model_cfg.image_size),)
|
||||
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("ignore", UserWarning)
|
||||
torch.onnx.export(
|
||||
model,
|
||||
args,
|
||||
output_path.as_posix(),
|
||||
input_names=["image"],
|
||||
output_names=["embedding"],
|
||||
opset_version=opset_version,
|
||||
# dynamic_axes={"image": {0: "batch_size"}},
|
||||
)
|
||||
|
||||
|
||||
def _export_text_encoder(
|
||||
model: Any, model_cfg: OpenCLIPModelConfig, output_path: Path | str, opset_version: int
|
||||
) -> None:
|
||||
import torch
|
||||
|
||||
output_path = Path(output_path)
|
||||
|
||||
def encode_text(text: torch.Tensor) -> torch.Tensor:
|
||||
output = model.encode_text(text, normalize=True)
|
||||
assert isinstance(output, torch.Tensor)
|
||||
return output
|
||||
|
||||
model.forward = encode_text
|
||||
|
||||
args = (torch.ones(1, model_cfg.sequence_length, dtype=torch.int32),)
|
||||
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("ignore", UserWarning)
|
||||
torch.onnx.export(
|
||||
model,
|
||||
args,
|
||||
output_path.as_posix(),
|
||||
input_names=["text"],
|
||||
output_names=["embedding"],
|
||||
opset_version=opset_version,
|
||||
# dynamic_axes={"text": {0: "batch_size"}},
|
||||
)
|
||||
@@ -1,15 +0,0 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
def get_model_path(output_dir: Path | str) -> Path:
|
||||
output_dir = Path(output_dir)
|
||||
output_dir.mkdir(parents=True, exist_ok=True)
|
||||
return output_dir / "model.onnx"
|
||||
|
||||
|
||||
def save_config(config: Any, output_path: Path | str) -> None:
|
||||
output_path = Path(output_path)
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
json.dump(config, output_path.open("w"))
|
||||
@@ -1,96 +0,0 @@
|
||||
from pathlib import Path
|
||||
|
||||
from .constants import RKNN_SOCS
|
||||
|
||||
|
||||
def _export_platform(
|
||||
model_dir: Path,
|
||||
target_platform: str,
|
||||
inputs: list[str] | None = None,
|
||||
input_size_list: list[list[int]] | None = None,
|
||||
fuse_matmul_softmax_matmul_to_sdpa: bool = True,
|
||||
cache: bool = True,
|
||||
) -> None:
|
||||
from rknn.api import RKNN
|
||||
|
||||
input_path = model_dir / "model.onnx"
|
||||
output_path = model_dir / "rknpu" / target_platform / "model.rknn"
|
||||
if cache and output_path.exists():
|
||||
print(f"Model {input_path} already exists at {output_path}, skipping")
|
||||
return
|
||||
|
||||
print(f"Exporting model {input_path} to {output_path}")
|
||||
|
||||
rknn = RKNN(verbose=False)
|
||||
|
||||
rknn.config(
|
||||
target_platform=target_platform,
|
||||
disable_rules=["fuse_matmul_softmax_matmul_to_sdpa"] if not fuse_matmul_softmax_matmul_to_sdpa else [],
|
||||
enable_flash_attention=False,
|
||||
model_pruning=True,
|
||||
)
|
||||
ret = rknn.load_onnx(model=input_path.as_posix(), inputs=inputs, input_size_list=input_size_list)
|
||||
|
||||
if ret != 0:
|
||||
raise RuntimeError("Load failed!")
|
||||
|
||||
ret = rknn.build(do_quantization=False)
|
||||
|
||||
if ret != 0:
|
||||
raise RuntimeError("Build failed!")
|
||||
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
ret = rknn.export_rknn(output_path.as_posix())
|
||||
if ret != 0:
|
||||
raise RuntimeError("Export rknn model failed!")
|
||||
|
||||
|
||||
def _export_platforms(
|
||||
model_dir: Path,
|
||||
inputs: list[str] | None = None,
|
||||
input_size_list: list[list[int]] | None = None,
|
||||
cache: bool = True,
|
||||
) -> None:
|
||||
fuse_matmul_softmax_matmul_to_sdpa = True
|
||||
for soc in RKNN_SOCS:
|
||||
try:
|
||||
_export_platform(
|
||||
model_dir,
|
||||
soc,
|
||||
inputs=inputs,
|
||||
input_size_list=input_size_list,
|
||||
fuse_matmul_softmax_matmul_to_sdpa=fuse_matmul_softmax_matmul_to_sdpa,
|
||||
cache=cache,
|
||||
)
|
||||
except Exception as e:
|
||||
print(f"Failed to export model for {soc}: {e}")
|
||||
if "inputs or 'outputs' must be set" in str(e):
|
||||
print("Retrying without fuse_matmul_softmax_matmul_to_sdpa")
|
||||
fuse_matmul_softmax_matmul_to_sdpa = False
|
||||
_export_platform(
|
||||
model_dir,
|
||||
soc,
|
||||
inputs=inputs,
|
||||
input_size_list=input_size_list,
|
||||
fuse_matmul_softmax_matmul_to_sdpa=fuse_matmul_softmax_matmul_to_sdpa,
|
||||
cache=cache,
|
||||
)
|
||||
|
||||
|
||||
def export(model_dir: Path, cache: bool = True) -> None:
|
||||
textual = model_dir / "textual"
|
||||
visual = model_dir / "visual"
|
||||
detection = model_dir / "detection"
|
||||
recognition = model_dir / "recognition"
|
||||
|
||||
if textual.is_dir():
|
||||
_export_platforms(textual, cache=cache)
|
||||
|
||||
if visual.is_dir():
|
||||
_export_platforms(visual, cache=cache)
|
||||
|
||||
if detection.is_dir():
|
||||
_export_platforms(detection, inputs=["input.1"], input_size_list=[[1, 3, 640, 640]], cache=cache)
|
||||
|
||||
if recognition.is_dir():
|
||||
_export_platforms(recognition, inputs=["input.1"], input_size_list=[[1, 3, 112, 112]], cache=cache)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user