Compare commits
144 Commits
fix-metada
...
29
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48bf63addb | ||
|
|
c334eba9b7 | ||
|
|
5b7d8cb3ef | ||
|
|
bd92748ddd | ||
|
|
aad5c3bada | ||
|
|
b2753103c6 | ||
|
|
e3f3baadb0 | ||
|
|
0b69d1c147 | ||
|
|
5a51ad3622 | ||
|
|
664c99278a | ||
|
|
184e142d87 | ||
|
|
8b00578c7b | ||
|
|
7562088fac | ||
|
|
79d4ce2d6d | ||
|
|
983f656a6b | ||
|
|
ab2a7006f9 | ||
|
|
1f18fe31f0 | ||
|
|
a373034629 | ||
|
|
5dac315af7 | ||
|
|
8309b73a02 | ||
|
|
e440cbe353 | ||
|
|
5548eb0dad | ||
|
|
3bec8dc337 | ||
|
|
5bcb58c3e7 | ||
|
|
c62fc155c8 | ||
|
|
40e3322b25 | ||
|
|
25f2b9602f | ||
|
|
ae6653392e | ||
|
|
d7a782da34 | ||
|
|
08b5952c87 | ||
|
|
584e5894bf | ||
|
|
52d4b2fe57 | ||
|
|
92f0973a46 | ||
|
|
75c83cb704 | ||
|
|
0b22d3348e | ||
|
|
abde0fbe60 | ||
|
|
eaa0e07329 | ||
|
|
9fd2c5220d | ||
|
|
7fcab4b251 | ||
|
|
e3995fb5f4 | ||
|
|
6d3f3d8616 | ||
|
|
4412680679 | ||
|
|
7df2c9c905 | ||
|
|
7a1e8ce6d8 | ||
|
|
8aea07b750 | ||
|
|
94dba29298 | ||
|
|
9e49783e49 | ||
|
|
43e3075f93 | ||
|
|
d03647904b | ||
|
|
206545356d | ||
|
|
3e372500b0 | ||
|
|
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 |
@@ -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}
|
FROM ${BASEIMAGE}
|
||||||
|
|
||||||
# Flutter SDK
|
# 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 -diff -merge
|
||||||
mobile/lib/**/*.g.dart linguist-generated=true
|
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 -diff -merge
|
||||||
open-api/typescript-sdk/fetch-client.ts linguist-generated=true
|
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.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3
|
uses: github/codeql-action/init@45775bd8235c68ba998cffa5171334d58593da47 # v3
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# 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).
|
# 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)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- 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.
|
# ℹ️ 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
|
# 📚 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
|
# ./location_of_script_within_repo/buildscript.sh
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3
|
uses: github/codeql-action/analyze@45775bd8235c68ba998cffa5171334d58593da47 # v3
|
||||||
with:
|
with:
|
||||||
category: '/language:${{matrix.language}}'
|
category: '/language:${{matrix.language}}'
|
||||||
|
|||||||
2
.github/workflows/fix-format.yml
vendored
2
.github/workflows/fix-format.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@af35edadc00be37caa72ed9f3e6d5f7801bfdf09 # v1
|
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
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:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@af35edadc00be37caa72ed9f3e6d5f7801bfdf09 # v1
|
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
token: ${{ steps.generate-token.outputs.token }}
|
token: ${{ steps.generate-token.outputs.token }}
|
||||||
|
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@22695119d769bdb6f7032ad67b9bca0ef8c4a174 # v5
|
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
|
||||||
|
|
||||||
- name: Bump version
|
- name: Bump version
|
||||||
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"
|
run: misc/release/pump-version.sh -s "${{ inputs.serverBump }}" -m "${{ inputs.mobileBump }}"
|
||||||
@@ -70,7 +70,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@af35edadc00be37caa72ed9f3e6d5f7801bfdf09 # v1
|
uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
app-id: ${{ secrets.PUSH_O_MATIC_APP_ID }}
|
||||||
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
private-key: ${{ secrets.PUSH_O_MATIC_APP_KEY }}
|
||||||
|
|||||||
6
.github/workflows/test.yml
vendored
6
.github/workflows/test.yml
vendored
@@ -384,7 +384,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
||||||
- name: Install uv
|
- name: Install uv
|
||||||
uses: astral-sh/setup-uv@22695119d769bdb6f7032ad67b9bca0ef8c4a174 # v5
|
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
|
||||||
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5
|
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5
|
||||||
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
|
# TODO: add caching when supported (https://github.com/actions/setup-python/pull/818)
|
||||||
# with:
|
# with:
|
||||||
@@ -518,7 +518,7 @@ jobs:
|
|||||||
run: npm run build
|
run: npm run build
|
||||||
|
|
||||||
- name: Run existing migrations
|
- name: Run existing migrations
|
||||||
run: npm run typeorm:migrations:run
|
run: npm run migrations:run
|
||||||
|
|
||||||
- name: Test npm run schema:reset command works
|
- name: Test npm run schema:reset command works
|
||||||
run: npm run typeorm:schema:reset
|
run: npm run typeorm:schema:reset
|
||||||
@@ -532,7 +532,7 @@ jobs:
|
|||||||
id: verify-changed-files
|
id: verify-changed-files
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
server/src/migrations/
|
server/src
|
||||||
- name: Verify migration files have not changed
|
- name: Verify migration files have not changed
|
||||||
if: steps.verify-changed-files.outputs.files_changed == 'true'
|
if: steps.verify-changed-files.outputs.files_changed == 'true'
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -39,6 +39,7 @@
|
|||||||
],
|
],
|
||||||
"explorer.fileNesting.enabled": true,
|
"explorer.fileNesting.enabled": true,
|
||||||
"explorer.fileNesting.patterns": {
|
"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
|
## 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.
|
Access the demo [here](https://demo.immich.app). For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoint URL`.
|
||||||
|
|
||||||
For the mobile app, you can use `https://demo.immich.app` for the `Server Endpoint URL`
|
|
||||||
|
|
||||||
### Login credentials
|
### Login credentials
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +1,29 @@
|
|||||||
import { FlatCompat } from '@eslint/eslintrc';
|
|
||||||
import js from '@eslint/js';
|
import js from '@eslint/js';
|
||||||
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
|
||||||
import tsParser from '@typescript-eslint/parser';
|
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
|
||||||
import globals from 'globals';
|
import globals from 'globals';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
|
import typescriptEslint from 'typescript-eslint';
|
||||||
|
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
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'],
|
ignores: ['eslint.config.mjs', 'dist'],
|
||||||
},
|
},
|
||||||
...compat.extends(
|
|
||||||
'plugin:@typescript-eslint/recommended',
|
|
||||||
'plugin:prettier/recommended',
|
|
||||||
'plugin:unicorn/recommended',
|
|
||||||
),
|
|
||||||
{
|
{
|
||||||
plugins: {
|
|
||||||
'@typescript-eslint': typescriptEslint,
|
|
||||||
},
|
|
||||||
|
|
||||||
languageOptions: {
|
languageOptions: {
|
||||||
globals: {
|
globals: {
|
||||||
...globals.node,
|
...globals.node,
|
||||||
},
|
},
|
||||||
|
|
||||||
parser: tsParser,
|
parser: typescriptEslint.parser,
|
||||||
ecmaVersion: 5,
|
ecmaVersion: 5,
|
||||||
sourceType: 'module',
|
sourceType: 'module',
|
||||||
|
|
||||||
@@ -58,4 +48,4 @@ export default [
|
|||||||
'object-shorthand': ['error', 'always'],
|
'object-shorthand': ['error', 'always'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
]);
|
||||||
|
|||||||
980
cli/package-lock.json
generated
980
cli/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@immich/cli",
|
"name": "@immich/cli",
|
||||||
"version": "2.2.57",
|
"version": "2.2.61",
|
||||||
"description": "Command Line Interface (CLI) for Immich",
|
"description": "Command Line Interface (CLI) for Immich",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"exports": "./dist/index.js",
|
"exports": "./dist/index.js",
|
||||||
@@ -21,9 +21,7 @@
|
|||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/micromatch": "^4.0.9",
|
"@types/micromatch": "^4.0.9",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
"@types/node": "^22.13.10",
|
"@types/node": "^22.14.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
|
||||||
"@vitest/coverage-v8": "^3.0.0",
|
"@vitest/coverage-v8": "^3.0.0",
|
||||||
"byte-size": "^9.0.0",
|
"byte-size": "^9.0.0",
|
||||||
"cli-progress": "^3.12.0",
|
"cli-progress": "^3.12.0",
|
||||||
@@ -31,12 +29,13 @@
|
|||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^10.0.0",
|
"eslint-config-prettier": "^10.0.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^56.0.1",
|
"eslint-plugin-unicorn": "^57.0.0",
|
||||||
"globals": "^16.0.0",
|
"globals": "^16.0.0",
|
||||||
"mock-fs": "^5.2.0",
|
"mock-fs": "^5.2.0",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
"prettier-plugin-organize-imports": "^4.0.0",
|
"prettier-plugin-organize-imports": "^4.0.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
|
"typescript-eslint": "^8.28.0",
|
||||||
"vite": "^6.0.0",
|
"vite": "^6.0.0",
|
||||||
"vite-tsconfig-paths": "^5.0.0",
|
"vite-tsconfig-paths": "^5.0.0",
|
||||||
"vitest": "^3.0.0",
|
"vitest": "^3.0.0",
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
@@ -102,7 +102,7 @@ services:
|
|||||||
command: [ './run.sh', '-disable-reporting' ]
|
command: [ './run.sh', '-disable-reporting' ]
|
||||||
ports:
|
ports:
|
||||||
- 3000:3000
|
- 3000:3000
|
||||||
image: grafana/grafana:11.5.2-ubuntu@sha256:8b5858c447e06fd7a89006b562ba7bba7c4d5813600c7982374c41852adefaeb
|
image: grafana/grafana:11.6.0-ubuntu@sha256:fd8fa48213c624e1a95122f1d93abbf1cf1cbe85fc73212c1e599dbd76c63ff8
|
||||||
volumes:
|
volumes:
|
||||||
- grafana-data:/var/lib/grafana
|
- grafana-data:/var/lib/grafana
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ services:
|
|||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: docker.io/redis:6.2-alpine@sha256:148bb5411c184abd288d9aaed139c98123eeb8824c5d3fce03cf721db58066d8
|
image: docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: redis-cli ping || exit 1
|
test: redis-cli ping || exit 1
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
# The location where your uploaded files are stored
|
# The location where your uploaded files are stored
|
||||||
UPLOAD_LOCATION=./library
|
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
|
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
|
# 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.
|
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
|
:::tip
|
||||||
The system administrator can see the usage quota percentage of all users in Server Stats page.
|
The system administrator can see the usage quota percentage of all users in Server Stats page.
|
||||||
|
|||||||
@@ -63,6 +63,13 @@ If you only want to do web development connected to an existing, remote backend,
|
|||||||
IMMICH_SERVER_URL=https://demo.immich.app/ npm run dev
|
IMMICH_SERVER_URL=https://demo.immich.app/ npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you're using PowerShell on Windows you may need to set the env var separately like so:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$env:IMMICH_SERVER_URL = "https://demo.immich.app/"
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
#### `@immich/ui`
|
#### `@immich/ui`
|
||||||
|
|
||||||
To see local changes to `@immich/ui` in Immich, do the following:
|
To see local changes to `@immich/ui` in Immich, do the following:
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ You begin by authenticating to your Immich server. For instance:
|
|||||||
immich login http://192.168.1.216:2283/api HFEJ38DNSDUEG
|
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.
|
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>
|
||||||
<TabItem value="Mobile" label="Mobile">
|
<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>
|
</TabItem>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
@@ -56,7 +56,20 @@ Navigating to `Administration > Settings > Machine Learning Settings > Smart Sea
|
|||||||
|
|
||||||
### CLIP models
|
### 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:
|
Once you've chosen a model, follow these steps:
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 100
|
||||||
|
---
|
||||||
|
|
||||||
# Config File
|
# Config File
|
||||||
|
|
||||||
A config file can be provided as an alternative to the UI configuration.
|
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
|
## Next Steps
|
||||||
|
|
||||||
Read the [Post Installation](/docs/install/post-install.mdx) steps or setup optional features below.
|
Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md).
|
||||||
|
|
||||||
### 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
|
|
||||||
```
|
|
||||||
|
|
||||||
[compose-file]: https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
[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
|
[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
|
## Step 7 - Setup Server Backups
|
||||||
|
|
||||||
<ServerBackup />
|
<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
|
## Next Steps
|
||||||
|
|
||||||
Read the [Post Installation](/docs/install/post-install.mdx) steps or setup optional features below.
|
Read the [Post Installation](/docs/install/post-install.mdx) steps and [upgrade instructions](/docs/install/upgrading.md).
|
||||||
|
|
||||||
### 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
|
|
||||||
|
|||||||
@@ -247,6 +247,10 @@ Some examples are: `IMMICH_VERSION`, `UPLOAD_LOCATION`, `DB_DATA_LOCATION`, `TZ`
|
|||||||
|
|
||||||
## Updating the App
|
## 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.
|
When updates become available, SCALE alerts and provides easy updates.
|
||||||
To update the app to the latest version:
|
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
|
## 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.
|
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
|
<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.
|
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).
|
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.
|
||||||
|
:::
|
||||||
|
|||||||
16
docs/static/archived-versions.json
vendored
16
docs/static/archived-versions.json
vendored
@@ -1,4 +1,20 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"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",
|
"label": "v1.130.3",
|
||||||
"url": "https://v1.130.3.archive.immich.app"
|
"url": "https://v1.130.3.archive.immich.app"
|
||||||
|
|||||||
@@ -1,39 +1,29 @@
|
|||||||
import { FlatCompat } from '@eslint/eslintrc';
|
|
||||||
import js from '@eslint/js';
|
import js from '@eslint/js';
|
||||||
import typescriptEslint from '@typescript-eslint/eslint-plugin';
|
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
|
||||||
import tsParser from '@typescript-eslint/parser';
|
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
|
||||||
import globals from 'globals';
|
import globals from 'globals';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
|
import typescriptEslint from 'typescript-eslint';
|
||||||
|
|
||||||
const __filename = fileURLToPath(import.meta.url);
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
const __dirname = path.dirname(__filename);
|
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'],
|
ignores: ['eslint.config.mjs'],
|
||||||
},
|
},
|
||||||
...compat.extends(
|
|
||||||
'plugin:@typescript-eslint/recommended',
|
|
||||||
'plugin:prettier/recommended',
|
|
||||||
'plugin:unicorn/recommended',
|
|
||||||
),
|
|
||||||
{
|
{
|
||||||
plugins: {
|
|
||||||
'@typescript-eslint': typescriptEslint,
|
|
||||||
},
|
|
||||||
|
|
||||||
languageOptions: {
|
languageOptions: {
|
||||||
globals: {
|
globals: {
|
||||||
...globals.node,
|
...globals.node,
|
||||||
},
|
},
|
||||||
|
|
||||||
parser: tsParser,
|
parser: typescriptEslint.parser,
|
||||||
ecmaVersion: 5,
|
ecmaVersion: 5,
|
||||||
sourceType: 'module',
|
sourceType: 'module',
|
||||||
|
|
||||||
@@ -62,4 +52,4 @@ export default [
|
|||||||
'object-shorthand': ['error', 'always'],
|
'object-shorthand': ['error', 'always'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
]);
|
||||||
|
|||||||
1371
e2e/package-lock.json
generated
1371
e2e/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "immich-e2e",
|
"name": "immich-e2e",
|
||||||
"version": "1.130.3",
|
"version": "1.131.3",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -25,18 +25,16 @@
|
|||||||
"@immich/sdk": "file:../open-api/typescript-sdk",
|
"@immich/sdk": "file:../open-api/typescript-sdk",
|
||||||
"@playwright/test": "^1.44.1",
|
"@playwright/test": "^1.44.1",
|
||||||
"@types/luxon": "^3.4.2",
|
"@types/luxon": "^3.4.2",
|
||||||
"@types/node": "^22.13.10",
|
"@types/node": "^22.14.0",
|
||||||
"@types/oidc-provider": "^8.5.1",
|
"@types/oidc-provider": "^8.5.1",
|
||||||
"@types/pg": "^8.11.0",
|
"@types/pg": "^8.11.0",
|
||||||
"@types/pngjs": "^6.0.4",
|
"@types/pngjs": "^6.0.4",
|
||||||
"@types/supertest": "^6.0.2",
|
"@types/supertest": "^6.0.2",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
||||||
"@typescript-eslint/parser": "^8.15.0",
|
|
||||||
"@vitest/coverage-v8": "^3.0.0",
|
"@vitest/coverage-v8": "^3.0.0",
|
||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"eslint-config-prettier": "^10.0.0",
|
"eslint-config-prettier": "^10.0.0",
|
||||||
"eslint-plugin-prettier": "^5.1.3",
|
"eslint-plugin-prettier": "^5.1.3",
|
||||||
"eslint-plugin-unicorn": "^56.0.1",
|
"eslint-plugin-unicorn": "^57.0.0",
|
||||||
"exiftool-vendored": "^28.3.1",
|
"exiftool-vendored": "^28.3.1",
|
||||||
"globals": "^16.0.0",
|
"globals": "^16.0.0",
|
||||||
"jose": "^5.6.3",
|
"jose": "^5.6.3",
|
||||||
@@ -49,6 +47,7 @@
|
|||||||
"socket.io-client": "^4.7.4",
|
"socket.io-client": "^4.7.4",
|
||||||
"supertest": "^7.0.0",
|
"supertest": "^7.0.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
|
"typescript-eslint": "^8.28.0",
|
||||||
"utimes": "^5.2.1",
|
"utimes": "^5.2.1",
|
||||||
"vitest": "^3.0.0"
|
"vitest": "^3.0.0"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1141,7 +1141,7 @@ describe('/asset', () => {
|
|||||||
fNumber: 8,
|
fNumber: 8,
|
||||||
focalLength: 97,
|
focalLength: 97,
|
||||||
iso: 100,
|
iso: 100,
|
||||||
lensModel: 'E PZ 18-105mm F4 G OSS',
|
lensModel: 'Sony E PZ 18-105mm F4 G OSS',
|
||||||
fileSizeInByte: 25_001_984,
|
fileSizeInByte: 25_001_984,
|
||||||
dateTimeOriginal: '2016-09-27T10:51:44+00:00',
|
dateTimeOriginal: '2016-09-27T10:51:44+00:00',
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
@@ -1163,7 +1163,7 @@ describe('/asset', () => {
|
|||||||
fNumber: 22,
|
fNumber: 22,
|
||||||
focalLength: 25,
|
focalLength: 25,
|
||||||
iso: 100,
|
iso: 100,
|
||||||
lensModel: 'E 25mm F2',
|
lensModel: 'Zeiss Batis 25mm F2',
|
||||||
fileSizeInByte: 49_512_448,
|
fileSizeInByte: 49_512_448,
|
||||||
dateTimeOriginal: '2016-01-08T14:08:01+00:00',
|
dateTimeOriginal: '2016-01-08T14:08:01+00:00',
|
||||||
orientation: '1',
|
orientation: '1',
|
||||||
@@ -1234,7 +1234,7 @@ describe('/asset', () => {
|
|||||||
focalLength: 18.3,
|
focalLength: 18.3,
|
||||||
iso: 100,
|
iso: 100,
|
||||||
latitude: 36.613_24,
|
latitude: 36.613_24,
|
||||||
lensModel: 'GR LENS 18.3mm F2.8',
|
lensModel: '18.3mm F2.8',
|
||||||
longitude: -121.897_85,
|
longitude: -121.897_85,
|
||||||
make: 'RICOH IMAGING COMPANY, LTD.',
|
make: 'RICOH IMAGING COMPANY, LTD.',
|
||||||
model: 'RICOH GR III',
|
model: 'RICOH GR III',
|
||||||
@@ -1257,6 +1257,7 @@ describe('/asset', () => {
|
|||||||
|
|
||||||
for (const { id, status } of assets) {
|
for (const { id, status } of assets) {
|
||||||
expect(status).toBe(AssetMediaStatus.Created);
|
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 });
|
await utils.waitForWebsocketEvent({ event: 'assetUpload', id });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -329,7 +329,7 @@ describe('/libraries', () => {
|
|||||||
const library = await utils.createLibrary(admin.accessToken, {
|
const library = await utils.createLibrary(admin.accessToken, {
|
||||||
ownerId: admin.userId,
|
ownerId: admin.userId,
|
||||||
importPaths: [`${testAssetDirInternal}/temp`],
|
importPaths: [`${testAssetDirInternal}/temp`],
|
||||||
exclusionPatterns: ['**/directoryA'],
|
exclusionPatterns: ['**/directoryA/**'],
|
||||||
});
|
});
|
||||||
|
|
||||||
await utils.scan(admin.accessToken, library.id);
|
await utils.scan(admin.accessToken, library.id);
|
||||||
@@ -337,7 +337,82 @@ describe('/libraries', () => {
|
|||||||
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
const { assets } = await utils.searchAssets(admin.accessToken, { libraryId: library.id });
|
||||||
|
|
||||||
expect(assets.count).toBe(1);
|
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 () => {
|
it('should scan multiple import paths', async () => {
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ describe('/shared-links', () => {
|
|||||||
const resp = await request(shareUrl).get(`/${linkWithAssets.key}`);
|
const resp = await request(shareUrl).get(`/${linkWithAssets.key}`);
|
||||||
expect(resp.status).toBe(200);
|
expect(resp.status).toBe(200);
|
||||||
expect(resp.header['content-type']).toContain('text/html');
|
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 });
|
const { status, body } = await request(app).get('/shared-links/me').query({ key: linkWithMetadata.key });
|
||||||
|
|
||||||
expect(status).toBe(200);
|
expect(status).toBe(200);
|
||||||
expect(body.assets).toHaveLength(1);
|
expect(body.assets).toHaveLength(0);
|
||||||
expect(body.assets[0]).toEqual(
|
|
||||||
expect.objectContaining({
|
|
||||||
originalFileName: 'example.png',
|
|
||||||
localDateTime: expect.any(String),
|
|
||||||
fileCreatedAt: expect.any(String),
|
|
||||||
exifInfo: expect.any(Object),
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
expect(body.album).toBeDefined();
|
expect(body.album).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const tests: Test[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: 'should support paths with an asterisk',
|
test: 'should support paths with an asterisk',
|
||||||
paths: [`/photos\*/image1.jpg`],
|
paths: [`/photos*/image1.jpg`],
|
||||||
files: {
|
files: {
|
||||||
'/photos*/image1.jpg': true,
|
'/photos*/image1.jpg': true,
|
||||||
'/photos*/image2.jpg': false,
|
'/photos*/image2.jpg': false,
|
||||||
@@ -40,7 +40,7 @@ const tests: Test[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: 'should support paths with a single quote',
|
test: 'should support paths with a single quote',
|
||||||
paths: [`/photos\'/image1.jpg`],
|
paths: [`/photos'/image1.jpg`],
|
||||||
files: {
|
files: {
|
||||||
"/photos'/image1.jpg": true,
|
"/photos'/image1.jpg": true,
|
||||||
"/photos'/image2.jpg": false,
|
"/photos'/image2.jpg": false,
|
||||||
@@ -49,7 +49,7 @@ const tests: Test[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: 'should support paths with a double quote',
|
test: 'should support paths with a double quote',
|
||||||
paths: [`/photos\"/image1.jpg`],
|
paths: [`/photos"/image1.jpg`],
|
||||||
files: {
|
files: {
|
||||||
'/photos"/image1.jpg': true,
|
'/photos"/image1.jpg': true,
|
||||||
'/photos"/image2.jpg': false,
|
'/photos"/image2.jpg': false,
|
||||||
@@ -67,7 +67,7 @@ const tests: Test[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: 'should support paths with an opening brace',
|
test: 'should support paths with an opening brace',
|
||||||
paths: [`/photos\{/image1.jpg`],
|
paths: [`/photos{/image1.jpg`],
|
||||||
files: {
|
files: {
|
||||||
'/photos{/image1.jpg': true,
|
'/photos{/image1.jpg': true,
|
||||||
'/photos{/image2.jpg': false,
|
'/photos{/image2.jpg': false,
|
||||||
@@ -76,7 +76,7 @@ const tests: Test[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: 'should support paths with a closing brace',
|
test: 'should support paths with a closing brace',
|
||||||
paths: [`/photos\}/image1.jpg`],
|
paths: [`/photos}/image1.jpg`],
|
||||||
files: {
|
files: {
|
||||||
'/photos}/image1.jpg': true,
|
'/photos}/image1.jpg': true,
|
||||||
'/photos}/image2.jpg': false,
|
'/photos}/image2.jpg': false,
|
||||||
|
|||||||
@@ -537,6 +537,7 @@ export const utils = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
waitForQueueFinish: (accessToken: string, queue: keyof AllJobStatusResponseDto, ms?: number) => {
|
waitForQueueFinish: (accessToken: string, queue: keyof AllJobStatusResponseDto, ms?: number) => {
|
||||||
|
// eslint-disable-next-line no-async-promise-executor
|
||||||
return new Promise<void>(async (resolve, reject) => {
|
return new Promise<void>(async (resolve, reject) => {
|
||||||
const timeout = setTimeout(() => reject(new Error('Timed out waiting for queue to empty')), ms || 10_000);
|
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', () => {
|
test.describe('Photo Viewer', () => {
|
||||||
let admin: LoginResponseDto;
|
let admin: LoginResponseDto;
|
||||||
let asset: AssetMediaResponseDto;
|
let asset: AssetMediaResponseDto;
|
||||||
|
let rawAsset: AssetMediaResponseDto;
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
test.beforeAll(async () => {
|
||||||
utils.initSdk();
|
utils.initSdk();
|
||||||
await utils.resetDatabase();
|
await utils.resetDatabase();
|
||||||
admin = await utils.adminSetup();
|
admin = await utils.adminSetup();
|
||||||
asset = await utils.createAsset(admin.accessToken);
|
asset = await utils.createAsset(admin.accessToken);
|
||||||
|
rawAsset = await utils.createAsset(admin.accessToken, { assetData: { filename: 'test.arw' } });
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ context, page }) => {
|
test.beforeEach(async ({ context, page }) => {
|
||||||
@@ -36,7 +38,7 @@ test.describe('Photo Viewer', () => {
|
|||||||
await expect(page.getByTestId('loading-spinner')).toBeVisible();
|
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 page.goto(`/photos/${asset.id}`);
|
||||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||||
const box = await imageLocator(page).boundingBox();
|
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');
|
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 }) => {
|
test('reloads photo when checksum changes', async ({ page }) => {
|
||||||
await page.goto(`/photos/${asset.id}`);
|
await page.goto(`/photos/${asset.id}`);
|
||||||
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
await expect.poll(async () => await imageLocator(page).getAttribute('src')).toContain('thumbnail');
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ test.describe('Shared Links', () => {
|
|||||||
await page.waitForSelector('[data-group] svg');
|
await page.waitForSelector('[data-group] svg');
|
||||||
await page.getByRole('checkbox').click();
|
await page.getByRole('checkbox').click();
|
||||||
await page.getByRole('button', { name: 'Download' }).click();
|
await page.getByRole('button', { name: 'Download' }).click();
|
||||||
await page.getByText('DOWNLOADING', { exact: true }).waitFor();
|
await page.waitForEvent('download');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('download all from shared link', async ({ page }) => {
|
test('download all from shared link', async ({ page }) => {
|
||||||
@@ -56,6 +56,7 @@ test.describe('Shared Links', () => {
|
|||||||
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
await page.getByRole('heading', { name: 'Test Album' }).waitFor();
|
||||||
await page.getByRole('button', { name: 'Download' }).click();
|
await page.getByRole('button', { name: 'Download' }).click();
|
||||||
await page.getByText('DOWNLOADING', { exact: true }).waitFor();
|
await page.getByText('DOWNLOADING', { exact: true }).waitFor();
|
||||||
|
await page.waitForEvent('download');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('enter password for a shared link', async ({ page }) => {
|
test('enter password for a shared link', async ({ page }) => {
|
||||||
|
|||||||
785
i18n/ar.json
785
i18n/ar.json
File diff suppressed because it is too large
Load Diff
30
i18n/bi.json
30
i18n/bi.json
@@ -1,20 +1,22 @@
|
|||||||
{
|
{
|
||||||
"account": "",
|
"about": "abaot",
|
||||||
"account_settings": "",
|
"account": "Akaont",
|
||||||
"acknowledge": "",
|
"account_settings": "Seting blo Akaont",
|
||||||
|
"acknowledge": "Akcept",
|
||||||
"action": "",
|
"action": "",
|
||||||
"actions": "",
|
"actions": "",
|
||||||
"active": "",
|
"active": "Stap Mekem",
|
||||||
"activity": "",
|
"activity": "Wanem hemi Mekem",
|
||||||
"add": "",
|
"activity_changed": "WAnem hemi Mekem hemi",
|
||||||
"add_a_description": "",
|
"add": "Ad",
|
||||||
"add_a_location": "",
|
"add_a_description": "Putem Description blo hem",
|
||||||
"add_a_name": "",
|
"add_a_location": "Putem place blo hem",
|
||||||
"add_a_title": "",
|
"add_a_name": "Putem nam blo hem",
|
||||||
"add_exclusion_pattern": "",
|
"add_a_title": "Putem wan name blo hem",
|
||||||
"add_import_path": "",
|
"add_exclusion_pattern": "Putem wan paten wae hemi karem aot",
|
||||||
"add_location": "",
|
"add_import_path": "Putem wan pat blo import",
|
||||||
"add_more_users": "",
|
"add_location": "Putem wan place blo hem",
|
||||||
|
"add_more_users": "Putem mor man",
|
||||||
"add_partner": "",
|
"add_partner": "",
|
||||||
"add_path": "",
|
"add_path": "",
|
||||||
"add_photos": "",
|
"add_photos": "",
|
||||||
|
|||||||
782
i18n/ca.json
782
i18n/ca.json
File diff suppressed because it is too large
Load Diff
791
i18n/cs.json
791
i18n/cs.json
File diff suppressed because it is too large
Load Diff
781
i18n/da.json
781
i18n/da.json
File diff suppressed because it is too large
Load Diff
787
i18n/de.json
787
i18n/de.json
File diff suppressed because it is too large
Load Diff
787
i18n/el.json
787
i18n/el.json
File diff suppressed because it is too large
Load Diff
819
i18n/en.json
819
i18n/en.json
File diff suppressed because it is too large
Load Diff
797
i18n/es.json
797
i18n/es.json
File diff suppressed because it is too large
Load Diff
@@ -66,6 +66,11 @@
|
|||||||
"forcing_refresh_library_files": "Kogu kõigi failide sundvärskendamine",
|
"forcing_refresh_library_files": "Kogu kõigi failide sundvärskendamine",
|
||||||
"image_format": "Formaat",
|
"image_format": "Formaat",
|
||||||
"image_format_description": "WebP failid on väiksemad kui JPEG, aga kodeerimine on aeglasem.",
|
"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": "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_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",
|
"image_prefer_wide_gamut": "Eelista laia värvigammat",
|
||||||
@@ -859,6 +864,7 @@
|
|||||||
"loop_videos": "Taasesita videod",
|
"loop_videos": "Taasesita videod",
|
||||||
"loop_videos_description": "Lülita sisse, et detailvaates videot automaatselt taasesitada.",
|
"loop_videos_description": "Lülita sisse, et detailvaates videot automaatselt taasesitada.",
|
||||||
"main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!",
|
"main_branch_warning": "Sa kasutad arendusversiooni; soovitame tungivalt kasutada väljalaskeversiooni!",
|
||||||
|
"main_menu": "Peamenüü",
|
||||||
"make": "Mark",
|
"make": "Mark",
|
||||||
"manage_shared_links": "Halda jagatud linke",
|
"manage_shared_links": "Halda jagatud linke",
|
||||||
"manage_sharing_with_partners": "Halda partneritega jagamist",
|
"manage_sharing_with_partners": "Halda partneritega jagamist",
|
||||||
|
|||||||
1
i18n/eu.json
Normal file
1
i18n/eu.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
788
i18n/fi.json
788
i18n/fi.json
File diff suppressed because it is too large
Load Diff
787
i18n/fr.json
787
i18n/fr.json
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"about": "Acerca de",
|
||||||
|
"account": "Conta",
|
||||||
|
"account_settings": "Configuración da conta",
|
||||||
|
"acknowledge": "De acordo",
|
||||||
|
"action": "Acción",
|
||||||
"action_common_back": "Back",
|
"action_common_back": "Back",
|
||||||
"action_common_cancel": "Cancel",
|
"action_common_cancel": "Cancel",
|
||||||
"action_common_clear": "Clear",
|
"action_common_clear": "Clear",
|
||||||
@@ -6,10 +11,56 @@
|
|||||||
"action_common_save": "Save",
|
"action_common_save": "Save",
|
||||||
"action_common_select": "Select",
|
"action_common_select": "Select",
|
||||||
"action_common_update": "Update",
|
"action_common_update": "Update",
|
||||||
"add_a_name": "Add a name",
|
"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_endpoint": "Add endpoint",
|
"add_endpoint": "Add endpoint",
|
||||||
|
"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_album_bottom_sheet_added": "Added to {album}",
|
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||||
|
"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}}"
|
||||||
|
},
|
||||||
"advanced_settings_log_level_title": "Log level: {}",
|
"advanced_settings_log_level_title": "Log level: {}",
|
||||||
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
|
"advanced_settings_prefer_remote_subtitle": "Some devices are painfully slow to load thumbnails from assets on the device. Activate this setting to load remote images instead.",
|
||||||
"advanced_settings_prefer_remote_title": "Prefer remote images",
|
"advanced_settings_prefer_remote_title": "Prefer remote images",
|
||||||
@@ -21,14 +72,16 @@
|
|||||||
"advanced_settings_tile_title": "Advanced",
|
"advanced_settings_tile_title": "Advanced",
|
||||||
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
|
"advanced_settings_troubleshooting_subtitle": "Enable additional features for troubleshooting",
|
||||||
"advanced_settings_troubleshooting_title": "Troubleshooting",
|
"advanced_settings_troubleshooting_title": "Troubleshooting",
|
||||||
|
"album_info": "{} items",
|
||||||
"album_info_card_backup_album_excluded": "EXCLUDED",
|
"album_info_card_backup_album_excluded": "EXCLUDED",
|
||||||
"album_info_card_backup_album_included": "INCLUDED",
|
"album_info_card_backup_album_included": "INCLUDED",
|
||||||
"albums": "Albums",
|
"album_info_shared": "{} items · Shared",
|
||||||
"album_thumbnail_card_item": "1 item",
|
"album_thumbnail_card_item": "1 item",
|
||||||
"album_thumbnail_card_items": "{} items",
|
"album_thumbnail_card_items": "{} items",
|
||||||
"album_thumbnail_card_shared": " · Shared",
|
"album_thumbnail_card_shared": " · Shared",
|
||||||
"album_thumbnail_owned": "Owned",
|
"album_thumbnail_owned": "Owned",
|
||||||
"album_thumbnail_shared_by": "Shared by {}",
|
"album_thumbnail_shared_by": "Shared by {}",
|
||||||
|
"album_thumbnails": "Library page thumbnails ({} assets)",
|
||||||
"album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
|
"album_viewer_appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
|
||||||
"album_viewer_appbar_share_delete": "Delete album",
|
"album_viewer_appbar_share_delete": "Delete album",
|
||||||
"album_viewer_appbar_share_err_delete": "Failed to delete album",
|
"album_viewer_appbar_share_err_delete": "Failed to delete album",
|
||||||
@@ -39,15 +92,26 @@
|
|||||||
"album_viewer_appbar_share_remove": "Remove from album",
|
"album_viewer_appbar_share_remove": "Remove from album",
|
||||||
"album_viewer_appbar_share_to": "Share To",
|
"album_viewer_appbar_share_to": "Share To",
|
||||||
"album_viewer_page_share_add_users": "Add users",
|
"album_viewer_page_share_add_users": "Add users",
|
||||||
|
"albums": "Backup Albums",
|
||||||
"all": "All",
|
"all": "All",
|
||||||
"all_people_page_title": "People",
|
"all_people_page_title": "People",
|
||||||
"all_videos_page_title": "Videos",
|
"all_videos_page_title": "Videos",
|
||||||
"app_bar_signout_dialog_content": "Are you sure you want to sign out?",
|
"app_bar_signout_dialog_content": "Are you sure you want to sign out?",
|
||||||
"app_bar_signout_dialog_ok": "Yes",
|
"app_bar_signout_dialog_ok": "Yes",
|
||||||
"app_bar_signout_dialog_title": "Sign out",
|
"app_bar_signout_dialog_title": "Sign out",
|
||||||
"archived": "Archived",
|
"appbar_delete_confirm": "Are you sure you want to delete this album from your account?",
|
||||||
|
"appbar_share_delete": "Delete album",
|
||||||
|
"appbar_share_err_delete": "Failed to delete album",
|
||||||
|
"appbar_share_err_leave": "Failed to leave album",
|
||||||
|
"appbar_share_err_remove": "There are problems in removing assets from album",
|
||||||
|
"appbar_share_err_title": "Failed to change album title",
|
||||||
|
"appbar_share_leave": "Leave album",
|
||||||
|
"appbar_share_remove": "Remove from album",
|
||||||
|
"appbar_share_to": "Share To",
|
||||||
|
"archive": "Archive",
|
||||||
"archive_page_no_archived_assets": "No archived assets found",
|
"archive_page_no_archived_assets": "No archived assets found",
|
||||||
"archive_page_title": "Archive ({})",
|
"archive_page_title": "Archive ({})",
|
||||||
|
"archived": "Archived",
|
||||||
"asset_action_delete_err_read_only": "Cannot delete read only asset(s), skipping",
|
"asset_action_delete_err_read_only": "Cannot delete read only asset(s), skipping",
|
||||||
"asset_action_share_err_offline": "Cannot fetch offline asset(s), skipping",
|
"asset_action_share_err_offline": "Cannot fetch offline asset(s), skipping",
|
||||||
"asset_list_group_by_sub_title": "Group by",
|
"asset_list_group_by_sub_title": "Group by",
|
||||||
@@ -59,19 +123,41 @@
|
|||||||
"asset_list_layout_sub_title": "Layout",
|
"asset_list_layout_sub_title": "Layout",
|
||||||
"asset_list_settings_subtitle": "Photo grid layout settings",
|
"asset_list_settings_subtitle": "Photo grid layout settings",
|
||||||
"asset_list_settings_title": "Photo Grid",
|
"asset_list_settings_title": "Photo Grid",
|
||||||
|
"asset_list_storage_indicator_title": "Show storage indicator on asset tiles",
|
||||||
|
"asset_list_tiles_per_row_title": "Number of assets per row ({})",
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
"asset_restored_successfully": "Asset restored successfully",
|
||||||
|
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
||||||
|
"asset_viewer_settings_title": "Asset Viewer",
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
"assets_restored_successfully": "{} asset(s) restored successfully",
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
"assets_trashed": "{} asset(s) trashed",
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
||||||
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
|
||||||
"asset_viewer_settings_title": "Asset Viewer",
|
|
||||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
||||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
"automatic_endpoint_switching_title": "Automatic URL switching",
|
||||||
|
"back": "Back",
|
||||||
|
"background_app_refresh_disabled_content": "Enable background app refresh in Settings > General > Background App Refresh in order to use background backup.",
|
||||||
|
"background_app_refresh_disabled_title": "Background app refresh disabled",
|
||||||
|
"background_app_refresh_enable_button_text": "Go to settings",
|
||||||
|
"background_battery_info_link": "Show me how",
|
||||||
|
"background_battery_info_message": "For the best background backup experience, please disable any battery optimizations restricting background activity for Immich.\n\nSince this is device-specific, please lookup the required information for your device manufacturer.",
|
||||||
|
"background_battery_info_ok": "OK",
|
||||||
|
"background_battery_info_title": "Battery optimizations",
|
||||||
|
"background_charging": "Only while charging",
|
||||||
|
"background_configure_error": "Failed to configure the background service",
|
||||||
|
"background_delay": "Delay new assets backup: {}",
|
||||||
|
"background_description": "Turn on the background service to automatically backup any new assets without needing to open the app",
|
||||||
|
"background_is_off": "Automatic background backup is off",
|
||||||
|
"background_is_on": "Automatic background backup is on",
|
||||||
"background_location_permission": "Background location permission",
|
"background_location_permission": "Background location permission",
|
||||||
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
|
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
|
||||||
|
"background_turn_off": "Turn off background service",
|
||||||
|
"background_turn_on": "Turn on background service",
|
||||||
|
"background_wifi": "Only on WiFi",
|
||||||
|
"backup": "Backup",
|
||||||
|
"backup_album_excluded": "EXCLUDED",
|
||||||
|
"backup_album_included": "INCLUDED",
|
||||||
"backup_album_selection_page_albums_device": "Albums on device ({})",
|
"backup_album_selection_page_albums_device": "Albums on device ({})",
|
||||||
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
|
"backup_album_selection_page_albums_tap": "Tap to include, double tap to exclude",
|
||||||
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
|
"backup_album_selection_page_assets_scatter": "Assets can scatter across multiple albums. Thus, albums can be included or excluded during the backup process.",
|
||||||
@@ -137,7 +223,9 @@
|
|||||||
"backup_manual_success": "Success",
|
"backup_manual_success": "Success",
|
||||||
"backup_manual_title": "Upload status",
|
"backup_manual_title": "Upload status",
|
||||||
"backup_options_page_title": "Backup options",
|
"backup_options_page_title": "Backup options",
|
||||||
|
"backup_selected": "Selected: ",
|
||||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
||||||
|
"backup_sub": "Backed up photos and videos",
|
||||||
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
|
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
|
||||||
"cache_settings_clear_cache_button": "Clear cache",
|
"cache_settings_clear_cache_button": "Clear cache",
|
||||||
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
|
"cache_settings_clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
|
||||||
@@ -158,6 +246,7 @@
|
|||||||
"cache_settings_title": "Caching Settings",
|
"cache_settings_title": "Caching Settings",
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"canceled": "Canceled",
|
"canceled": "Canceled",
|
||||||
|
"categories": "Categories",
|
||||||
"change_display_order": "Change display order",
|
"change_display_order": "Change display order",
|
||||||
"change_password_form_confirm_password": "Confirm Password",
|
"change_password_form_confirm_password": "Confirm Password",
|
||||||
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
|
"change_password_form_description": "Hi {name},\n\nThis is either the first time you are signing into the system or a request has been made to change your password. Please enter the new password below.",
|
||||||
@@ -167,6 +256,9 @@
|
|||||||
"check_corrupt_asset_backup": "Check for corrupt asset backups",
|
"check_corrupt_asset_backup": "Check for corrupt asset backups",
|
||||||
"check_corrupt_asset_backup_button": "Perform check",
|
"check_corrupt_asset_backup_button": "Perform check",
|
||||||
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
|
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
|
||||||
|
"clear": "Clear",
|
||||||
|
"clear_cache_button": "Clear cache",
|
||||||
|
"clear_cache_button_title": "Clears the app's cache. This will significantly impact the app's performance until the cache has rebuilt.",
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
"client_cert_dialog_msg_confirm": "OK",
|
||||||
"client_cert_enter_password": "Enter Password",
|
"client_cert_enter_password": "Enter Password",
|
||||||
"client_cert_import": "Import",
|
"client_cert_import": "Import",
|
||||||
@@ -176,12 +268,15 @@
|
|||||||
"client_cert_remove_msg": "Client certificate is removed",
|
"client_cert_remove_msg": "Client certificate is removed",
|
||||||
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
||||||
"client_cert_title": "SSL Client Certificate (EXPERIMENTAL)",
|
"client_cert_title": "SSL Client Certificate (EXPERIMENTAL)",
|
||||||
|
"colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
||||||
|
"colorful_interface_title": "Colorful interface",
|
||||||
"common_add_to_album": "Add to album",
|
"common_add_to_album": "Add to album",
|
||||||
"common_change_password": "Change Password",
|
"common_change_password": "Change Password",
|
||||||
"common_create_new_album": "Create new album",
|
"common_create_new_album": "Create new album",
|
||||||
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
|
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
|
||||||
"common_shared": "Shared",
|
"common_shared": "Shared",
|
||||||
"completed": "Completed",
|
"completed": "Completed",
|
||||||
|
"confirm": "Confirm",
|
||||||
"contextual_search": "Sunrise on the beach",
|
"contextual_search": "Sunrise on the beach",
|
||||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||||
"control_bottom_app_bar_album_info": "{} items",
|
"control_bottom_app_bar_album_info": "{} items",
|
||||||
@@ -206,17 +301,21 @@
|
|||||||
"create_album": "Create album",
|
"create_album": "Create album",
|
||||||
"create_album_page_untitled": "Untitled",
|
"create_album_page_untitled": "Untitled",
|
||||||
"create_new": "CREATE NEW",
|
"create_new": "CREATE NEW",
|
||||||
|
"create_new_album": "Create new album",
|
||||||
"create_shared_album_page_create": "Create",
|
"create_shared_album_page_create": "Create",
|
||||||
"create_shared_album_page_share": "Share",
|
"create_shared_album_page_share": "Share",
|
||||||
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
"create_shared_album_page_share_add_assets": "ADD ASSETS",
|
||||||
"create_shared_album_page_share_select_photos": "Select Photos",
|
"create_shared_album_page_share_select_photos": "Select Photos",
|
||||||
|
"created": "Created on: {}",
|
||||||
"crop": "Crop",
|
"crop": "Crop",
|
||||||
"curated_location_page_title": "Places",
|
"curated_location_page_title": "Places",
|
||||||
"curated_object_page_title": "Things",
|
"curated_object_page_title": "Things",
|
||||||
"current_server_address": "Current server address",
|
"current_server_address": "Current server address",
|
||||||
"daily_title_text_date": "E, MMM dd",
|
"daily_title_text_date": "E, MMM dd",
|
||||||
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
||||||
|
"dark_mode_switch": "Dark mode",
|
||||||
"date_format": "E, LLL d, y • h:mm a",
|
"date_format": "E, LLL d, y • h:mm a",
|
||||||
|
"delete": "Delete",
|
||||||
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
|
"delete_dialog_alert": "These items will be permanently deleted from Immich and from your device",
|
||||||
"delete_dialog_alert_local": "These items will be permanently removed from your device but still be available on the Immich server",
|
"delete_dialog_alert_local": "These items will be permanently removed from your device but still be available on the Immich server",
|
||||||
"delete_dialog_alert_local_non_backed_up": "Some of the items aren't backed up to Immich and will be permanently removed from your device",
|
"delete_dialog_alert_local_non_backed_up": "Some of the items aren't backed up to Immich and will be permanently removed from your device",
|
||||||
@@ -225,12 +324,16 @@
|
|||||||
"delete_dialog_ok": "Delete",
|
"delete_dialog_ok": "Delete",
|
||||||
"delete_dialog_ok_force": "Delete Anyway",
|
"delete_dialog_ok_force": "Delete Anyway",
|
||||||
"delete_dialog_title": "Delete Permanently",
|
"delete_dialog_title": "Delete Permanently",
|
||||||
|
"delete_from_immich": "Delete from Immich",
|
||||||
|
"delete_from_local": "Delete from device",
|
||||||
"delete_local_dialog_ok_backed_up_only": "Delete Backed Up Only",
|
"delete_local_dialog_ok_backed_up_only": "Delete Backed Up Only",
|
||||||
"delete_local_dialog_ok_force": "Delete Anyway",
|
"delete_local_dialog_ok_force": "Delete Anyway",
|
||||||
"delete_shared_link_dialog_content": "Are you sure you want to delete this shared link?",
|
"delete_shared_link_dialog_content": "Are you sure you want to delete this shared link?",
|
||||||
"delete_shared_link_dialog_title": "Delete Shared Link",
|
"delete_shared_link_dialog_title": "Delete Shared Link",
|
||||||
|
"desc_backup": "Turn on foreground backup to automatically upload new assets to the server when opening the app.",
|
||||||
"description_input_hint_text": "Add description...",
|
"description_input_hint_text": "Add description...",
|
||||||
"description_input_submit_error": "Error updating description, check the log for more details",
|
"description_input_submit_error": "Error updating description, check the log for more details",
|
||||||
|
"download": "Download",
|
||||||
"download_canceled": "Download canceled",
|
"download_canceled": "Download canceled",
|
||||||
"download_complete": "Download complete",
|
"download_complete": "Download complete",
|
||||||
"download_enqueue": "Download enqueued",
|
"download_enqueue": "Download enqueued",
|
||||||
@@ -238,23 +341,30 @@
|
|||||||
"download_failed": "Download failed",
|
"download_failed": "Download failed",
|
||||||
"download_filename": "file: {}",
|
"download_filename": "file: {}",
|
||||||
"download_finished": "Download finished",
|
"download_finished": "Download finished",
|
||||||
"downloading": "Downloading...",
|
|
||||||
"downloading_media": "Downloading media",
|
|
||||||
"download_notfound": "Download not found",
|
"download_notfound": "Download not found",
|
||||||
"download_paused": "Download paused",
|
"download_paused": "Download paused",
|
||||||
"download_started": "Download started",
|
"download_started": "Download started",
|
||||||
"download_sucess": "Download success",
|
"download_sucess": "Download success",
|
||||||
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
||||||
"download_waiting_to_retry": "Waiting to retry",
|
"download_waiting_to_retry": "Waiting to retry",
|
||||||
|
"downloading": "Downloading...",
|
||||||
|
"downloading_media": "Downloading media",
|
||||||
|
"duplicated_assets_clear_button": "CLEAR",
|
||||||
|
"duplicated_assets_subtitle": "Photos and videos that are black listed by the app",
|
||||||
|
"duplicated_assets_title": "Duplicated Assets ({})",
|
||||||
|
"edit": "Edit",
|
||||||
"edit_date_time_dialog_date_time": "Date and Time",
|
"edit_date_time_dialog_date_time": "Date and Time",
|
||||||
"edit_date_time_dialog_timezone": "Timezone",
|
"edit_date_time_dialog_timezone": "Timezone",
|
||||||
"edit_image_title": "Edit",
|
"edit_image_title": "Edit",
|
||||||
|
"edit_location": "Edit Location",
|
||||||
"edit_location_dialog_title": "Location",
|
"edit_location_dialog_title": "Location",
|
||||||
|
"edit_time": "Edit Date & Time",
|
||||||
"end_date": "End date",
|
"end_date": "End date",
|
||||||
"enqueued": "Enqueued",
|
"enqueued": "Enqueued",
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
"enter_wifi_name": "Enter WiFi name",
|
||||||
"error_change_sort_album": "Failed to change album sort order",
|
"error_change_sort_album": "Failed to change album sort order",
|
||||||
"error_saving_image": "Error: {}",
|
"error_saving_image": "Error: {}",
|
||||||
|
"excluded": "Excluded: ",
|
||||||
"exif_bottom_sheet_description": "Add Description...",
|
"exif_bottom_sheet_description": "Add Description...",
|
||||||
"exif_bottom_sheet_details": "DETAILS",
|
"exif_bottom_sheet_details": "DETAILS",
|
||||||
"exif_bottom_sheet_location": "LOCATION",
|
"exif_bottom_sheet_location": "LOCATION",
|
||||||
@@ -268,13 +378,16 @@
|
|||||||
"external_network": "External network",
|
"external_network": "External network",
|
||||||
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
||||||
"failed": "Failed",
|
"failed": "Failed",
|
||||||
|
"favorite": "Favorite",
|
||||||
"favorites": "Favorites",
|
"favorites": "Favorites",
|
||||||
"favorites_page_no_favorites": "No favorite assets found",
|
"favorites_page_no_favorites": "No favorite assets found",
|
||||||
"favorites_page_title": "Favorites",
|
"favorites_page_title": "Favorites",
|
||||||
|
"filename": "File name: {} [{}]",
|
||||||
"filename_search": "File name or extension",
|
"filename_search": "File name or extension",
|
||||||
"filter": "Filter",
|
"filter": "Filter",
|
||||||
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
||||||
"grant_permission": "Grant permission",
|
"grant_permission": "Grant permission",
|
||||||
|
"group_by_sub_title": "Group by",
|
||||||
"haptic_feedback_switch": "Enable haptic feedback",
|
"haptic_feedback_switch": "Enable haptic feedback",
|
||||||
"haptic_feedback_title": "Haptic Feedback",
|
"haptic_feedback_title": "Haptic Feedback",
|
||||||
"header_settings_add_header_tip": "Add Header",
|
"header_settings_add_header_tip": "Add Header",
|
||||||
@@ -298,15 +411,26 @@
|
|||||||
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
"home_page_first_time_notice": "If this is your first time using the app, please make sure to choose a backup album(s) so that the timeline can populate photos and videos in the album(s).",
|
||||||
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
"home_page_share_err_local": "Can not share local assets via link, skipping",
|
||||||
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
"home_page_upload_err_limit": "Can only upload a maximum of 30 assets at a time, skipping",
|
||||||
|
"id": "ID: {}",
|
||||||
"ignore_icloud_photos": "Ignore iCloud photos",
|
"ignore_icloud_photos": "Ignore iCloud photos",
|
||||||
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
|
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
|
||||||
|
"image_cache_size": "Image cache size ({} assets)",
|
||||||
"image_saved_successfully": "Image saved",
|
"image_saved_successfully": "Image saved",
|
||||||
"image_viewer_page_state_provider_download_error": "Download Error",
|
"image_viewer_page_state_provider_download_error": "Download Error",
|
||||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||||
|
"image_viewer_quality_subtitle": "Adjust the quality of the detail image viewer",
|
||||||
|
"image_viewer_quality_title": "Image viewer quality",
|
||||||
|
"info": "Backup Information",
|
||||||
"invalid_date": "Invalid date",
|
"invalid_date": "Invalid date",
|
||||||
"invalid_date_format": "Invalid date format",
|
"invalid_date_format": "Invalid date format",
|
||||||
|
"layout_settings_dynamic_layout_title": "Dynamic layout",
|
||||||
|
"layout_settings_group_automatically": "Automatic",
|
||||||
|
"layout_settings_group_by": "Group assets by",
|
||||||
|
"layout_settings_group_by_month": "Month",
|
||||||
|
"layout_settings_group_by_month_day": "Month + day",
|
||||||
|
"layout_sub_title": "Layout",
|
||||||
"library": "Library",
|
"library": "Library",
|
||||||
"library_page_albums": "Albums",
|
"library_page_albums": "Albums",
|
||||||
"library_page_archive": "Archive",
|
"library_page_archive": "Archive",
|
||||||
@@ -389,6 +513,7 @@
|
|||||||
"memories_year_ago": "A year ago",
|
"memories_year_ago": "A year ago",
|
||||||
"memories_years_ago": "{} years ago",
|
"memories_years_ago": "{} years ago",
|
||||||
"monthly_title_text_date_format": "MMMM y",
|
"monthly_title_text_date_format": "MMMM y",
|
||||||
|
"motion_photos": "Motion Photos",
|
||||||
"motion_photos_page_title": "Motion Photos",
|
"motion_photos_page_title": "Motion Photos",
|
||||||
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
|
"multiselect_grid_edit_date_time_err_read_only": "Cannot edit date of read only asset(s), skipping",
|
||||||
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
|
"multiselect_grid_edit_gps_err_read_only": "Cannot edit location of read only asset(s), skipping",
|
||||||
@@ -397,14 +522,18 @@
|
|||||||
"networking_subtitle": "Manage the server endpoint settings",
|
"networking_subtitle": "Manage the server endpoint settings",
|
||||||
"no_assets_to_show": "No assets to show",
|
"no_assets_to_show": "No assets to show",
|
||||||
"no_name": "No name",
|
"no_name": "No name",
|
||||||
|
"no_objects": "No Objects Info Available",
|
||||||
|
"no_places": "No Places Info Available",
|
||||||
|
"none_selected": "None selected",
|
||||||
|
"not_selected": "Not selected",
|
||||||
"notification_permission_dialog_cancel": "Cancel",
|
"notification_permission_dialog_cancel": "Cancel",
|
||||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||||
"notification_permission_dialog_settings": "Settings",
|
"notification_permission_dialog_settings": "Settings",
|
||||||
"notification_permission_list_tile_content": "Grant permission to enable notifications.",
|
"notification_permission_list_tile_content": "Grant permission to enable notifications.",
|
||||||
"notification_permission_list_tile_enable_button": "Enable Notifications",
|
"notification_permission_list_tile_enable_button": "Enable Notifications",
|
||||||
"notification_permission_list_tile_title": "Notification Permission",
|
"notification_permission_list_tile_title": "Notification Permission",
|
||||||
"not_selected": "Not selected",
|
|
||||||
"on_this_device": "On this device",
|
"on_this_device": "On this device",
|
||||||
|
"page_share_add_users": "Add users",
|
||||||
"partner_list_user_photos": "{user}'s photos",
|
"partner_list_user_photos": "{user}'s photos",
|
||||||
"partner_list_view_all": "View all",
|
"partner_list_view_all": "View all",
|
||||||
"partner_page_add_partner": "Add partner",
|
"partner_page_add_partner": "Add partner",
|
||||||
@@ -429,9 +558,18 @@
|
|||||||
"permission_onboarding_permission_granted": "Permission granted! You are all set.",
|
"permission_onboarding_permission_granted": "Permission granted! You are all set.",
|
||||||
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
|
"permission_onboarding_permission_limited": "Permission limited. To let Immich backup and manage your entire gallery collection, grant photo and video permissions in Settings.",
|
||||||
"permission_onboarding_request": "Immich requires permission to view your photos and videos.",
|
"permission_onboarding_request": "Immich requires permission to view your photos and videos.",
|
||||||
|
"person_add_name_dialog_cancel": "Cancel",
|
||||||
|
"person_add_name_dialog_hint": "Name",
|
||||||
|
"person_add_name_dialog_save": "Save",
|
||||||
|
"person_add_name_dialog_title": "Add a name",
|
||||||
|
"person_add_name_subtitle": "Find them fast by name with search",
|
||||||
|
"person_add_name_title": "Add a name",
|
||||||
|
"person_edit_name": "Edit name",
|
||||||
"places": "Places",
|
"places": "Places",
|
||||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
"preferences_settings_subtitle": "Manage the app's preferences",
|
||||||
"preferences_settings_title": "Preferences",
|
"preferences_settings_title": "Preferences",
|
||||||
|
"primary_color_subtitle": "Pick a color for primary actions and accents.",
|
||||||
|
"primary_color_title": "Primary color",
|
||||||
"profile_drawer_app_logs": "Logs",
|
"profile_drawer_app_logs": "Logs",
|
||||||
"profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
|
"profile_drawer_client_out_of_date_major": "Mobile App is out of date. Please update to the latest major version.",
|
||||||
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
|
"profile_drawer_client_out_of_date_minor": "Mobile App is out of date. Please update to the latest minor version.",
|
||||||
@@ -445,9 +583,12 @@
|
|||||||
"profile_drawer_trash": "Trash",
|
"profile_drawer_trash": "Trash",
|
||||||
"recently_added": "Recently added",
|
"recently_added": "Recently added",
|
||||||
"recently_added_page_title": "Recently Added",
|
"recently_added_page_title": "Recently Added",
|
||||||
|
"remainder": "Remainder",
|
||||||
|
"remainder_sub": "Remaining photos and videos to back up from selection",
|
||||||
"save": "Save",
|
"save": "Save",
|
||||||
"save_to_gallery": "Save to gallery",
|
"save_to_gallery": "Save to gallery",
|
||||||
"scaffold_body_error_occurred": "Error occurred",
|
"scaffold_body_error_occurred": "Error occurred",
|
||||||
|
"screenshots": "Screenshots",
|
||||||
"search_albums": "Search albums",
|
"search_albums": "Search albums",
|
||||||
"search_bar_hint": "Search your photos",
|
"search_bar_hint": "Search your photos",
|
||||||
"search_filter_apply": "Apply filter",
|
"search_filter_apply": "Apply filter",
|
||||||
@@ -498,17 +639,21 @@
|
|||||||
"search_page_view_all_button": "View all",
|
"search_page_view_all_button": "View all",
|
||||||
"search_page_your_activity": "Your activity",
|
"search_page_your_activity": "Your activity",
|
||||||
"search_page_your_map": "Your Map",
|
"search_page_your_map": "Your Map",
|
||||||
|
"search_photos_videos": "Search for your photos and videos",
|
||||||
"search_result_page_new_search_hint": "New Search",
|
"search_result_page_new_search_hint": "New Search",
|
||||||
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ",
|
"search_suggestion_list_smart_search_hint_1": "Smart search is enabled by default, to search for metadata use the syntax ",
|
||||||
"search_suggestion_list_smart_search_hint_2": "m:your-search-term",
|
"search_suggestion_list_smart_search_hint_2": "m:your-search-term",
|
||||||
|
"select": "Select",
|
||||||
"select_additional_user_for_sharing_page_suggestions": "Suggestions",
|
"select_additional_user_for_sharing_page_suggestions": "Suggestions",
|
||||||
"select_user_for_sharing_page_err_album": "Failed to create album",
|
"select_user_for_sharing_page_err_album": "Failed to create album",
|
||||||
"select_user_for_sharing_page_share_suggestions": "Suggestions",
|
"select_user_for_sharing_page_share_suggestions": "Suggestions",
|
||||||
|
"selfies": "Selfies",
|
||||||
"server_endpoint": "Server Endpoint",
|
"server_endpoint": "Server Endpoint",
|
||||||
"server_info_box_app_version": "App Version",
|
"server_info_box_app_version": "App Version",
|
||||||
"server_info_box_latest_release": "Latest Version",
|
"server_info_box_latest_release": "Latest Version",
|
||||||
"server_info_box_server_url": "Server URL",
|
"server_info_box_server_url": "Server URL",
|
||||||
"server_info_box_server_version": "Server Version",
|
"server_info_box_server_version": "Server Version",
|
||||||
|
"server_storage": "Server Storage",
|
||||||
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
|
"setting_image_viewer_help": "The detail viewer loads the small thumbnail first, then loads the medium-size preview (if enabled), finally loads the original (if enabled).",
|
||||||
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
|
"setting_image_viewer_original_subtitle": "Enable to load the original full-resolution image (large!). Disable to reduce data usage (both network and on device cache).",
|
||||||
"setting_image_viewer_original_title": "Load original image",
|
"setting_image_viewer_original_title": "Load original image",
|
||||||
@@ -531,17 +676,24 @@
|
|||||||
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
|
"setting_notifications_total_progress_subtitle": "Overall upload progress (done/total assets)",
|
||||||
"setting_notifications_total_progress_title": "Show background backup total progress",
|
"setting_notifications_total_progress_title": "Show background backup total progress",
|
||||||
"setting_pages_app_bar_settings": "Settings",
|
"setting_pages_app_bar_settings": "Settings",
|
||||||
"settings_require_restart": "Please restart Immich to apply this setting",
|
|
||||||
"setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.",
|
"setting_video_viewer_looping_subtitle": "Enable to automatically loop a video in the detail viewer.",
|
||||||
"setting_video_viewer_looping_title": "Looping",
|
"setting_video_viewer_looping_title": "Looping",
|
||||||
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
|
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
|
||||||
"setting_video_viewer_original_video_title": "Force original video",
|
"setting_video_viewer_original_video_title": "Force original video",
|
||||||
"setting_video_viewer_title": "Videos",
|
"setting_video_viewer_title": "Videos",
|
||||||
|
"settings_require_restart": "Please restart Immich to apply this setting",
|
||||||
|
"settings_subtitle": "Photo grid layout settings",
|
||||||
|
"settings_title": "Photo Grid",
|
||||||
|
"share": "Share",
|
||||||
"share_add": "Add",
|
"share_add": "Add",
|
||||||
"share_add_photos": "Add photos",
|
"share_add_photos": "Add photos",
|
||||||
"share_add_title": "Add a title",
|
"share_add_title": "Add a title",
|
||||||
"share_assets_selected": "{} selected",
|
"share_assets_selected": "{} selected",
|
||||||
"share_create_album": "Create album",
|
"share_create_album": "Create album",
|
||||||
|
"share_dialog_preparing": "Preparing...",
|
||||||
|
"share_done": "Done",
|
||||||
|
"share_invite": "Invite to album",
|
||||||
|
"share_to": "Share To",
|
||||||
"shared_album_activities_input_disable": "Comment is disabled",
|
"shared_album_activities_input_disable": "Comment is disabled",
|
||||||
"shared_album_activities_input_hint": "Say something",
|
"shared_album_activities_input_hint": "Say something",
|
||||||
"shared_album_activity_remove_content": "Do you want to delete this activity?",
|
"shared_album_activity_remove_content": "Do you want to delete this activity?",
|
||||||
@@ -553,7 +705,6 @@
|
|||||||
"shared_album_section_people_action_remove_user": "Remove user from album",
|
"shared_album_section_people_action_remove_user": "Remove user from album",
|
||||||
"shared_album_section_people_owner_label": "Owner",
|
"shared_album_section_people_owner_label": "Owner",
|
||||||
"shared_album_section_people_title": "PEOPLE",
|
"shared_album_section_people_title": "PEOPLE",
|
||||||
"share_dialog_preparing": "Preparing...",
|
|
||||||
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
|
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
|
||||||
"shared_link_app_bar_title": "Shared Links",
|
"shared_link_app_bar_title": "Shared Links",
|
||||||
"shared_link_clipboard_copied_massage": "Copied to clipboard",
|
"shared_link_clipboard_copied_massage": "Copied to clipboard",
|
||||||
@@ -601,20 +752,32 @@
|
|||||||
"shared_link_manage_links": "Manage Shared links",
|
"shared_link_manage_links": "Manage Shared links",
|
||||||
"shared_link_public_album": "Public album",
|
"shared_link_public_album": "Public album",
|
||||||
"shared_links": "Shared links",
|
"shared_links": "Shared links",
|
||||||
"share_done": "Done",
|
|
||||||
"shared_with_me": "Shared with me",
|
"shared_with_me": "Shared with me",
|
||||||
"share_invite": "Invite to album",
|
|
||||||
"sharing_page_album": "Shared albums",
|
"sharing_page_album": "Shared albums",
|
||||||
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
|
"sharing_page_description": "Create shared albums to share photos and videos with people in your network.",
|
||||||
"sharing_page_empty_list": "EMPTY LIST",
|
"sharing_page_empty_list": "EMPTY LIST",
|
||||||
"sharing_silver_appbar_create_shared_album": "New shared album",
|
"sharing_silver_appbar_create_shared_album": "New shared album",
|
||||||
"sharing_silver_appbar_shared_links": "Shared links",
|
|
||||||
"sharing_silver_appbar_share_partner": "Share with partner",
|
"sharing_silver_appbar_share_partner": "Share with partner",
|
||||||
|
"sharing_silver_appbar_shared_links": "Shared links",
|
||||||
|
"stack": "Stack",
|
||||||
|
"start_backup": "Start Backup",
|
||||||
"start_date": "Start date",
|
"start_date": "Start date",
|
||||||
|
"statistics_album": "Library thumbnails",
|
||||||
|
"statistics_assets": "{} assets ({})",
|
||||||
|
"statistics_full": "Full images",
|
||||||
|
"statistics_shared": "Shared album thumbnails",
|
||||||
|
"statistics_thumbnail": "Thumbnails",
|
||||||
|
"statistics_title": "Cache usage",
|
||||||
|
"status_off": "Automatic foreground backup is off",
|
||||||
|
"status_on": "Automatic foreground backup is on",
|
||||||
|
"storage_format": "{} of {} used",
|
||||||
|
"subtitle": "Control the caching behaviour of the Immich mobile application",
|
||||||
"sync": "Sync",
|
"sync": "Sync",
|
||||||
"sync_albums": "Sync albums",
|
"sync_albums": "Sync albums",
|
||||||
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
||||||
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
||||||
|
"system_primary_color_title": "Use system color",
|
||||||
|
"system_theme_switch": "Automatic (Follow system setting)",
|
||||||
"tab_controller_nav_library": "Library",
|
"tab_controller_nav_library": "Library",
|
||||||
"tab_controller_nav_photos": "Photos",
|
"tab_controller_nav_photos": "Photos",
|
||||||
"tab_controller_nav_search": "Search",
|
"tab_controller_nav_search": "Search",
|
||||||
@@ -634,9 +797,22 @@
|
|||||||
"theme_setting_theme_title": "Theme",
|
"theme_setting_theme_title": "Theme",
|
||||||
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
|
"theme_setting_three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
|
||||||
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
|
"theme_setting_three_stage_loading_title": "Enable three-stage loading",
|
||||||
|
"theme_subtitle": "Choose the app's theme setting",
|
||||||
|
"theme_title": "Theme",
|
||||||
|
"things": "Things",
|
||||||
|
"three_stage_loading_subtitle": "Three-stage loading might increase the loading performance but causes significantly higher network load",
|
||||||
|
"three_stage_loading_title": "Enable three-stage loading",
|
||||||
|
"thumbnail_size": "Thumbnail cache size ({} assets)",
|
||||||
|
"tile_subtitle": "Control the local storage behaviour",
|
||||||
|
"tile_title": "Local Storage",
|
||||||
|
"title": "Caching Settings",
|
||||||
|
"to_backup": "Albums to be backed up",
|
||||||
|
"total": "Total",
|
||||||
|
"total_sub": "All unique photos and videos from selected albums",
|
||||||
"translated_text_options": "Options",
|
"translated_text_options": "Options",
|
||||||
"trash": "Trash",
|
"trash": "Trash",
|
||||||
"trash_emptied": "Emptied trash",
|
"trash_emptied": "Emptied trash",
|
||||||
|
"trash_from_immich": "Move to Trash",
|
||||||
"trash_page_delete": "Delete",
|
"trash_page_delete": "Delete",
|
||||||
"trash_page_delete_all": "Delete All",
|
"trash_page_delete_all": "Delete All",
|
||||||
"trash_page_empty_trash_btn": "Empty trash",
|
"trash_page_empty_trash_btn": "Empty trash",
|
||||||
@@ -649,13 +825,19 @@
|
|||||||
"trash_page_select_assets_btn": "Select assets",
|
"trash_page_select_assets_btn": "Select assets",
|
||||||
"trash_page_select_btn": "Select",
|
"trash_page_select_btn": "Select",
|
||||||
"trash_page_title": "Trash ({})",
|
"trash_page_title": "Trash ({})",
|
||||||
|
"turn_off": "Turn off foreground backup",
|
||||||
|
"turn_on": "Turn on foreground backup",
|
||||||
|
"unarchive": "Unarchive",
|
||||||
|
"unfavorite": "Unfavorite",
|
||||||
|
"update": "Update",
|
||||||
"upload": "Upload",
|
"upload": "Upload",
|
||||||
"upload_dialog_cancel": "Cancel",
|
"upload_dialog_cancel": "Cancel",
|
||||||
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
|
"upload_dialog_info": "Do you want to backup the selected Asset(s) to the server?",
|
||||||
"upload_dialog_ok": "Upload",
|
"upload_dialog_ok": "Upload",
|
||||||
"upload_dialog_title": "Upload Asset",
|
"upload_dialog_title": "Upload Asset",
|
||||||
"uploading": "Uploading",
|
|
||||||
"upload_to_immich": "Upload to Immich ({})",
|
"upload_to_immich": "Upload to Immich ({})",
|
||||||
|
"uploading": "Uploading",
|
||||||
|
"uploading_file_info": "Uploading file info",
|
||||||
"use_current_connection": "use current connection",
|
"use_current_connection": "use current connection",
|
||||||
"validate_endpoint_error": "Please enter a valid URL",
|
"validate_endpoint_error": "Please enter a valid URL",
|
||||||
"version_announcement_overlay_ack": "Acknowledge",
|
"version_announcement_overlay_ack": "Acknowledge",
|
||||||
@@ -663,11 +845,17 @@
|
|||||||
"version_announcement_overlay_text_1": "Hi friend, there is a new release of",
|
"version_announcement_overlay_text_1": "Hi friend, there is a new release of",
|
||||||
"version_announcement_overlay_text_2": "please take your time to visit the ",
|
"version_announcement_overlay_text_2": "please take your time to visit the ",
|
||||||
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
||||||
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
|
"version_announcement_overlay_title": "New Server Version Available 🎉",
|
||||||
"videos": "Videos",
|
"videos": "Videos",
|
||||||
|
"view_all_button": "View all",
|
||||||
"viewer_remove_from_stack": "Remove from Stack",
|
"viewer_remove_from_stack": "Remove from Stack",
|
||||||
"viewer_stack_use_as_main_asset": "Use as Main Asset",
|
"viewer_stack_use_as_main_asset": "Use as Main Asset",
|
||||||
"viewer_unstack": "Un-Stack",
|
"viewer_unstack": "Un-Stack",
|
||||||
"wifi_name": "WiFi Name",
|
"wifi_name": "WiFi Name",
|
||||||
"your_wifi_name": "Your WiFi name"
|
"year": "Ano",
|
||||||
|
"yes": "Si",
|
||||||
|
"your_activity": "Your activity",
|
||||||
|
"your_map": "Your Map",
|
||||||
|
"your_wifi_name": "Your WiFi name",
|
||||||
|
"zoom_image": "Acercar imaxe"
|
||||||
}
|
}
|
||||||
787
i18n/he.json
787
i18n/he.json
File diff suppressed because it is too large
Load Diff
789
i18n/hi.json
789
i18n/hi.json
File diff suppressed because it is too large
Load Diff
789
i18n/hu.json
789
i18n/hu.json
File diff suppressed because it is too large
Load Diff
781
i18n/id.json
781
i18n/id.json
File diff suppressed because it is too large
Load Diff
787
i18n/it.json
787
i18n/it.json
File diff suppressed because it is too large
Load Diff
928
i18n/ja.json
928
i18n/ja.json
File diff suppressed because it is too large
Load Diff
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 @@
|
|||||||
|
{}
|
||||||
852
i18n/ko.json
852
i18n/ko.json
File diff suppressed because it is too large
Load Diff
784
i18n/lt.json
784
i18n/lt.json
File diff suppressed because it is too large
Load Diff
799
i18n/lv.json
799
i18n/lv.json
File diff suppressed because it is too large
Load Diff
786
i18n/mn.json
786
i18n/mn.json
File diff suppressed because it is too large
Load Diff
783
i18n/nb_NO.json
783
i18n/nb_NO.json
File diff suppressed because it is too large
Load Diff
789
i18n/nl.json
789
i18n/nl.json
File diff suppressed because it is too large
Load Diff
1
i18n/pa.json
Normal file
1
i18n/pa.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
787
i18n/pl.json
787
i18n/pl.json
File diff suppressed because it is too large
Load Diff
793
i18n/pt.json
793
i18n/pt.json
File diff suppressed because it is too large
Load Diff
255
i18n/pt_BR.json
255
i18n/pt_BR.json
@@ -66,8 +66,13 @@
|
|||||||
"forcing_refresh_library_files": "Forçando a atualização de todos os arquivos da biblioteca",
|
"forcing_refresh_library_files": "Forçando a atualização de todos os arquivos da biblioteca",
|
||||||
"image_format": "Formato",
|
"image_format": "Formato",
|
||||||
"image_format_description": "WebP produz arquivos menores que JPEG, mas é mais lento para codificar.",
|
"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": "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": "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_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",
|
"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",
|
||||||
@@ -371,6 +376,8 @@
|
|||||||
"album_cover_updated": "Capa do álbum atualizada",
|
"album_cover_updated": "Capa do álbum atualizada",
|
||||||
"album_delete_confirmation": "Tem certeza de que deseja excluir o álbum {album}?",
|
"album_delete_confirmation": "Tem certeza de que deseja excluir o álbum {album}?",
|
||||||
"album_delete_confirmation_description": "Se este álbum é compartilhado, os outros usuários não conseguiram mais acessá-lo.",
|
"album_delete_confirmation_description": "Se este álbum é compartilhado, os outros usuários não conseguiram mais acessá-lo.",
|
||||||
|
"album_info_card_backup_album_excluded": "EXCLUÍDO",
|
||||||
|
"album_info_card_backup_album_included": "INCLUÍDO",
|
||||||
"album_info_updated": "Informações do álbum atualizadas",
|
"album_info_updated": "Informações do álbum atualizadas",
|
||||||
"album_leave": "Sair do álbum?",
|
"album_leave": "Sair do álbum?",
|
||||||
"album_leave_confirmation": "Tem certeza de que deseja sair de {album}?",
|
"album_leave_confirmation": "Tem certeza de que deseja sair de {album}?",
|
||||||
@@ -379,10 +386,21 @@
|
|||||||
"album_remove_user": "Remover usuário?",
|
"album_remove_user": "Remover usuário?",
|
||||||
"album_remove_user_confirmation": "Tem certeza de que deseja remover {user}?",
|
"album_remove_user_confirmation": "Tem certeza de que deseja remover {user}?",
|
||||||
"album_share_no_users": "Parece que você já compartilhou este álbum com todos os usuários ou não há nenhum usuário para compartilhar.",
|
"album_share_no_users": "Parece que você já compartilhou este álbum com todos os usuários ou não há nenhum usuário para compartilhar.",
|
||||||
|
"album_thumbnail_card_item": "1 item",
|
||||||
|
"album_thumbnail_card_items": "{} items",
|
||||||
|
"album_thumbnail_card_shared": " · Compartilhado",
|
||||||
"album_updated": "Álbum atualizado",
|
"album_updated": "Álbum atualizado",
|
||||||
"album_updated_setting_description": "Receba uma notificação por e-mail quando um álbum compartilhado tiver novos recursos",
|
"album_updated_setting_description": "Receba uma notificação por e-mail quando um álbum compartilhado tiver novos recursos",
|
||||||
"album_user_left": "Saiu do álbum {album}",
|
"album_user_left": "Saiu do álbum {album}",
|
||||||
"album_user_removed": "Usuário {user} foi removido",
|
"album_user_removed": "Usuário {user} foi removido",
|
||||||
|
"album_viewer_appbar_share_delete": "Excluir álbum",
|
||||||
|
"album_viewer_appbar_share_err_delete": "Falha ao excluir álbum",
|
||||||
|
"album_viewer_appbar_share_err_leave": "Falha ao sair do álbum",
|
||||||
|
"album_viewer_appbar_share_err_remove": "Há problemas ao remover recursos do álbum",
|
||||||
|
"album_viewer_appbar_share_err_title": "Falha ao alterar o título do álbum",
|
||||||
|
"album_viewer_appbar_share_leave": "Sair do álbum",
|
||||||
|
"album_viewer_appbar_share_remove": "Remover do álbum",
|
||||||
|
"album_viewer_page_share_add_users": "Adicionar usuários",
|
||||||
"album_with_link_access": "Permitir que qualquer pessoa com o link veja as fotos e as pessoas neste álbum.",
|
"album_with_link_access": "Permitir que qualquer pessoa com o link veja as fotos e as pessoas neste álbum.",
|
||||||
"albums": "Álbuns",
|
"albums": "Álbuns",
|
||||||
"albums_count": "{count, plural, one {{count, number} Álbum} other {{count, number} Álbuns}}",
|
"albums_count": "{count, plural, one {{count, number} Álbum} other {{count, number} Álbuns}}",
|
||||||
@@ -401,6 +419,13 @@
|
|||||||
"api_key_empty": "O nome da sua chave de API não deve estar vazio",
|
"api_key_empty": "O nome da sua chave de API não deve estar vazio",
|
||||||
"api_keys": "Chaves de API",
|
"api_keys": "Chaves de API",
|
||||||
"app_settings": "Configurações do Aplicativo",
|
"app_settings": "Configurações do Aplicativo",
|
||||||
|
"appbar_share_delete": "Excluir álbum",
|
||||||
|
"appbar_share_err_delete": "Falha ao excluir álbum",
|
||||||
|
"appbar_share_err_leave": "Falha ao sair do álbum",
|
||||||
|
"appbar_share_err_remove": "Há problemas ao remover recursos do álbum",
|
||||||
|
"appbar_share_err_title": "Falha ao alterar o título do álbum",
|
||||||
|
"appbar_share_leave": "Sair do álbum",
|
||||||
|
"appbar_share_remove": "Remover do álbum",
|
||||||
"appears_in": "Aparece em",
|
"appears_in": "Aparece em",
|
||||||
"archive": "Arquivados",
|
"archive": "Arquivados",
|
||||||
"archive_or_unarchive_photo": "Arquivar ou desarquivar foto",
|
"archive_or_unarchive_photo": "Arquivar ou desarquivar foto",
|
||||||
@@ -436,6 +461,67 @@
|
|||||||
"authorized_devices": "Dispositivos Autorizados",
|
"authorized_devices": "Dispositivos Autorizados",
|
||||||
"back": "Voltar",
|
"back": "Voltar",
|
||||||
"back_close_deselect": "Voltar, fechar ou desmarcar",
|
"back_close_deselect": "Voltar, fechar ou desmarcar",
|
||||||
|
"background_charging": "Apenas durante o carregamento",
|
||||||
|
"background_configure_error": "Falha ao configurar o serviço em segundo plano",
|
||||||
|
"background_description": "Ative o serviço em segundo plano para fazer backup automático de novos ativos sem precisar abrir o aplicativo",
|
||||||
|
"background_is_off": "O backup automático em segundo plano está desativado",
|
||||||
|
"background_is_on": "O backup automático em segundo plano está ativado",
|
||||||
|
"background_turn_off": "Desativar o serviço em segundo plano",
|
||||||
|
"background_turn_on": "Ativar o serviço em segundo plano",
|
||||||
|
"background_wifi": "Apenas em Wi-Fi",
|
||||||
|
"backup": "Backup",
|
||||||
|
"backup_album_excluded": "EXCLUÍDO",
|
||||||
|
"backup_album_included": "INCLUÍDO",
|
||||||
|
"backup_album_selection_page_albums_device": "Álbuns no dispositivo ({})",
|
||||||
|
"backup_album_selection_page_albums_tap": "Toque para incluir, toque duas vezes para excluir",
|
||||||
|
"backup_album_selection_page_assets_scatter": "Os recursos podem se espalhar por vários álbuns. Assim, os álbuns podem ser incluídos ou excluídos durante o processo de backup.",
|
||||||
|
"backup_album_selection_page_select_albums": "Selecionar álbuns",
|
||||||
|
"backup_album_selection_page_selection_info": "Informações da Seleção",
|
||||||
|
"backup_album_selection_page_total_assets": "Total de recursos exclusivos",
|
||||||
|
"backup_all": "Todos",
|
||||||
|
"backup_background_service_current_upload_notification": "Enviando {}",
|
||||||
|
"backup_background_service_default_notification": "Checking for new assets…",
|
||||||
|
"backup_background_service_in_progress_notification": "Fazendo backup de seus ativos…",
|
||||||
|
"backup_background_service_upload_failure_notification": "Falha ao carregar {}",
|
||||||
|
"backup_controller_page_albums": "Álbuns de backup",
|
||||||
|
"backup_controller_page_background_charging": "Apenas durante o carregamento",
|
||||||
|
"backup_controller_page_background_configure_error": "Falha ao configurar o serviço em segundo plano",
|
||||||
|
"backup_controller_page_background_description": "Ative o serviço em segundo plano para fazer backup automático de novos ativos sem precisar abrir o aplicativo",
|
||||||
|
"backup_controller_page_background_is_off": "O backup automático em segundo plano está desativado",
|
||||||
|
"backup_controller_page_background_is_on": "O backup automático em segundo plano está ativado",
|
||||||
|
"backup_controller_page_background_turn_off": "Desativar o serviço em segundo plano",
|
||||||
|
"backup_controller_page_background_turn_on": "Ativar o serviço em segundo plano",
|
||||||
|
"backup_controller_page_background_wifi": "Apenas em Wi-Fi",
|
||||||
|
"backup_controller_page_backup": "Backup",
|
||||||
|
"backup_controller_page_backup_selected": "Selecionado: ",
|
||||||
|
"backup_controller_page_backup_sub": "Backup de fotos e vídeos",
|
||||||
|
"backup_controller_page_cancel": "Cancelar",
|
||||||
|
"backup_controller_page_created": "Criado em: {}",
|
||||||
|
"backup_controller_page_desc_backup": "Ative o backup para carregar automaticamente novos ativos no servidor.",
|
||||||
|
"backup_controller_page_excluded": "Excluído: ",
|
||||||
|
"backup_controller_page_failed": "Falhou ({})",
|
||||||
|
"backup_controller_page_filename": "Nome do arquivo: {} [{}]",
|
||||||
|
"backup_controller_page_id": "ID: {}",
|
||||||
|
"backup_controller_page_info": "Informações de backup",
|
||||||
|
"backup_controller_page_none_selected": "Nenhum selecionado",
|
||||||
|
"backup_controller_page_remainder": "Restante",
|
||||||
|
"backup_controller_page_remainder_sub": "Fotos e vídeos restantes para fazer backup da seleção",
|
||||||
|
"backup_controller_page_select": "Selecionar",
|
||||||
|
"backup_controller_page_server_storage": "Armazenamento do servidor",
|
||||||
|
"backup_controller_page_start_backup": "Iniciar backup",
|
||||||
|
"backup_controller_page_status_off": "O backup está desativado",
|
||||||
|
"backup_controller_page_status_on": "O backup está ativado",
|
||||||
|
"backup_controller_page_storage_format": "{} de {} usado",
|
||||||
|
"backup_controller_page_to_backup": "Álbuns para backup",
|
||||||
|
"backup_controller_page_total": "Total",
|
||||||
|
"backup_controller_page_total_sub": "Todas as fotos e vídeos únicos dos álbuns selecionados",
|
||||||
|
"backup_controller_page_turn_off": "Desativar o backup",
|
||||||
|
"backup_controller_page_turn_on": "Ativar Backup",
|
||||||
|
"backup_controller_page_uploading_file_info": "Carregando informações do arquivo",
|
||||||
|
"backup_err_only_album": "Não é possível remover o único álbum",
|
||||||
|
"backup_info_card_assets": "ativos",
|
||||||
|
"backup_selected": "Selecionado: ",
|
||||||
|
"backup_sub": "Backup de fotos e vídeos",
|
||||||
"backward": "Para trás",
|
"backward": "Para trás",
|
||||||
"birthdate_saved": "Data de nascimento salva com sucesso",
|
"birthdate_saved": "Data de nascimento salva com sucesso",
|
||||||
"birthdate_set_description": "A data de nascimento é usada para calcular a idade da pessoa no momento em que a foto foi tirada.",
|
"birthdate_set_description": "A data de nascimento é usada para calcular a idade da pessoa no momento em que a foto foi tirada.",
|
||||||
@@ -492,6 +578,8 @@
|
|||||||
"contain": "Caber",
|
"contain": "Caber",
|
||||||
"context": "Contexto",
|
"context": "Contexto",
|
||||||
"continue": "Continuar",
|
"continue": "Continuar",
|
||||||
|
"control_bottom_app_bar_delete": "Excluir",
|
||||||
|
"control_bottom_app_bar_share": "Compartilhar",
|
||||||
"copied_image_to_clipboard": "Imagem copiada para a área de transferência.",
|
"copied_image_to_clipboard": "Imagem copiada para a área de transferência.",
|
||||||
"copied_to_clipboard": "Copiado para a área de transferência!",
|
"copied_to_clipboard": "Copiado para a área de transferência!",
|
||||||
"copy_error": "Copiar erro",
|
"copy_error": "Copiar erro",
|
||||||
@@ -506,6 +594,7 @@
|
|||||||
"covers": "Capas",
|
"covers": "Capas",
|
||||||
"create": "Criar",
|
"create": "Criar",
|
||||||
"create_album": "Criar álbum",
|
"create_album": "Criar álbum",
|
||||||
|
"create_album_page_untitled": "Sem título",
|
||||||
"create_library": "Criar biblioteca",
|
"create_library": "Criar biblioteca",
|
||||||
"create_link": "Criar link",
|
"create_link": "Criar link",
|
||||||
"create_link_to_share": "Criar link para partilhar",
|
"create_link_to_share": "Criar link para partilhar",
|
||||||
@@ -513,6 +602,10 @@
|
|||||||
"create_new_person": "Criar nova pessoa",
|
"create_new_person": "Criar nova pessoa",
|
||||||
"create_new_person_hint": "Atribuir arquivos selecionados a uma nova pessoa",
|
"create_new_person_hint": "Atribuir arquivos selecionados a uma nova pessoa",
|
||||||
"create_new_user": "Criar novo usuário",
|
"create_new_user": "Criar novo usuário",
|
||||||
|
"create_shared_album_page_create": "Criar",
|
||||||
|
"create_shared_album_page_share": "Compartilhar",
|
||||||
|
"create_shared_album_page_share_add_assets": "ADICIONAR FOTOS",
|
||||||
|
"create_shared_album_page_share_select_photos": "Selecionar fotos",
|
||||||
"create_tag": "Criar marcador",
|
"create_tag": "Criar marcador",
|
||||||
"create_tag_description": "Cria um novo marcador. Para marcadores multi nível, digite o caminho completo do marcador, inclusive as barras.",
|
"create_tag_description": "Cria um novo marcador. Para marcadores multi nível, digite o caminho completo do marcador, inclusive as barras.",
|
||||||
"create_user": "Criar usuário",
|
"create_user": "Criar usuário",
|
||||||
@@ -520,10 +613,14 @@
|
|||||||
"current_device": "Dispositivo atual",
|
"current_device": "Dispositivo atual",
|
||||||
"custom_locale": "Localização Customizada",
|
"custom_locale": "Localização Customizada",
|
||||||
"custom_locale_description": "Formatar datas e números baseados na linguagem e região",
|
"custom_locale_description": "Formatar datas e números baseados na linguagem e região",
|
||||||
|
"daily_title_text_date": "E, MMM dd",
|
||||||
|
"daily_title_text_date_year": "E, MMM dd, yyyy",
|
||||||
"dark": "Escuro",
|
"dark": "Escuro",
|
||||||
|
"dark_mode_switch": "Dark mode",
|
||||||
"date_after": "Data após",
|
"date_after": "Data após",
|
||||||
"date_and_time": "Data e Hora",
|
"date_and_time": "Data e Hora",
|
||||||
"date_before": "Data antes",
|
"date_before": "Data antes",
|
||||||
|
"date_format": "E, LLL d, y • h:mm a",
|
||||||
"date_of_birth_saved": "Data de nascimento salvo com sucesso",
|
"date_of_birth_saved": "Data de nascimento salvo com sucesso",
|
||||||
"date_range": "Intervalo de datas",
|
"date_range": "Intervalo de datas",
|
||||||
"day": "Dia",
|
"day": "Dia",
|
||||||
@@ -537,6 +634,10 @@
|
|||||||
"delete": "Excluir",
|
"delete": "Excluir",
|
||||||
"delete_album": "Excluir álbum",
|
"delete_album": "Excluir álbum",
|
||||||
"delete_api_key_prompt": "Tem certeza de que deseja excluir esta chave de API?",
|
"delete_api_key_prompt": "Tem certeza de que deseja excluir esta chave de API?",
|
||||||
|
"delete_dialog_alert": "Esses itens serão excluídos permanentemente do Immich e do seu dispositivo",
|
||||||
|
"delete_dialog_cancel": "Cancelar",
|
||||||
|
"delete_dialog_ok": "Excluir",
|
||||||
|
"delete_dialog_title": "Excluir permanentemente",
|
||||||
"delete_duplicates_confirmation": "Tem certeza de que deseja excluir permanentemente estas duplicidades?",
|
"delete_duplicates_confirmation": "Tem certeza de que deseja excluir permanentemente estas duplicidades?",
|
||||||
"delete_face": "Remover face",
|
"delete_face": "Remover face",
|
||||||
"delete_key": "Excluir chave",
|
"delete_key": "Excluir chave",
|
||||||
@@ -549,6 +650,7 @@
|
|||||||
"delete_user": "Excluir usuário",
|
"delete_user": "Excluir usuário",
|
||||||
"deleted_shared_link": "Link de compartilhamento excluído",
|
"deleted_shared_link": "Link de compartilhamento excluído",
|
||||||
"deletes_missing_assets": "Excluir arquivos não encontrados",
|
"deletes_missing_assets": "Excluir arquivos não encontrados",
|
||||||
|
"desc_backup": "Ative o backup para carregar automaticamente novos ativos no servidor.",
|
||||||
"description": "Descrição",
|
"description": "Descrição",
|
||||||
"details": "Detalhes",
|
"details": "Detalhes",
|
||||||
"direction": "Direção",
|
"direction": "Direção",
|
||||||
@@ -735,7 +837,11 @@
|
|||||||
"unable_to_update_user": "Não foi possível atualizar o usuário",
|
"unable_to_update_user": "Não foi possível atualizar o usuário",
|
||||||
"unable_to_upload_file": "Não foi possível carregar o arquivo"
|
"unable_to_upload_file": "Não foi possível carregar o arquivo"
|
||||||
},
|
},
|
||||||
|
"excluded": "Excluído: ",
|
||||||
"exif": "Exif",
|
"exif": "Exif",
|
||||||
|
"exif_bottom_sheet_description": "Adicionar descrição...",
|
||||||
|
"exif_bottom_sheet_details": "DETALHES",
|
||||||
|
"exif_bottom_sheet_location": "LOCALIZAÇÃO",
|
||||||
"exit_slideshow": "Sair da apresentação",
|
"exit_slideshow": "Sair da apresentação",
|
||||||
"expand_all": "Expandir tudo",
|
"expand_all": "Expandir tudo",
|
||||||
"expire_after": "Expira depois",
|
"expire_after": "Expira depois",
|
||||||
@@ -749,6 +855,7 @@
|
|||||||
"external": "Externo",
|
"external": "Externo",
|
||||||
"external_libraries": "Bibliotecas externas",
|
"external_libraries": "Bibliotecas externas",
|
||||||
"face_unassigned": "Sem nome",
|
"face_unassigned": "Sem nome",
|
||||||
|
"failed": "Falhou ({})",
|
||||||
"failed_to_load_assets": "Falha ao carregar arquivos",
|
"failed_to_load_assets": "Falha ao carregar arquivos",
|
||||||
"favorite": "Favorito",
|
"favorite": "Favorito",
|
||||||
"favorite_or_unfavorite_photo": "Marque ou desmarque a foto como favorita",
|
"favorite_or_unfavorite_photo": "Marque ou desmarque a foto como favorita",
|
||||||
@@ -788,6 +895,7 @@
|
|||||||
"hide_unnamed_people": "Esconder pessoas sem nome",
|
"hide_unnamed_people": "Esconder pessoas sem nome",
|
||||||
"host": "Host",
|
"host": "Host",
|
||||||
"hour": "Hora",
|
"hour": "Hora",
|
||||||
|
"id": "ID: {}",
|
||||||
"image": "Imagem",
|
"image": "Imagem",
|
||||||
"image_alt_text_date": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {date}",
|
"image_alt_text_date": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {date}",
|
||||||
"image_alt_text_date_1_person": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} com {person1} em {date}",
|
"image_alt_text_date_1_person": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} com {person1} em {date}",
|
||||||
@@ -799,6 +907,8 @@
|
|||||||
"image_alt_text_date_place_2_people": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {city}, {country} com {person1} e {person2} em {date}",
|
"image_alt_text_date_place_2_people": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {city}, {country} com {person1} e {person2} em {date}",
|
||||||
"image_alt_text_date_place_3_people": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {city}, {country} com {person1}, {person2}, e {person3} em {date}",
|
"image_alt_text_date_place_3_people": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {city}, {country} com {person1}, {person2}, e {person3} em {date}",
|
||||||
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {city}, {country} com {person1}, {person2}, e {additionalCount, number} outros em {date}",
|
"image_alt_text_date_place_4_or_more_people": "{isVideo, select, true {Vídeo gravado} other {Foto tirada}} em {city}, {country} com {person1}, {person2}, e {additionalCount, number} outros em {date}",
|
||||||
|
"image_viewer_quality_subtitle": "Ajuste a qualidade de imagens detalhadas do visualizador",
|
||||||
|
"image_viewer_quality_title": "Qualidade das imagens do visualizador",
|
||||||
"immich_logo": "Logo do Immich",
|
"immich_logo": "Logo do Immich",
|
||||||
"immich_web_interface": "Interface Web do Immich",
|
"immich_web_interface": "Interface Web do Immich",
|
||||||
"import_from_json": "Importar do JSON",
|
"import_from_json": "Importar do JSON",
|
||||||
@@ -837,6 +947,8 @@
|
|||||||
"level": "Nível",
|
"level": "Nível",
|
||||||
"library": "Biblioteca",
|
"library": "Biblioteca",
|
||||||
"library_options": "Opções da biblioteca",
|
"library_options": "Opções da biblioteca",
|
||||||
|
"library_page_albums": "Albums",
|
||||||
|
"library_page_new_album": "Novo album",
|
||||||
"light": "Claro",
|
"light": "Claro",
|
||||||
"like_deleted": "Curtida excluída",
|
"like_deleted": "Curtida excluída",
|
||||||
"link_motion_video": "Relacionar video animado",
|
"link_motion_video": "Relacionar video animado",
|
||||||
@@ -851,6 +963,19 @@
|
|||||||
"logged_out_all_devices": "Saiu de todos os dispositivos",
|
"logged_out_all_devices": "Saiu de todos os dispositivos",
|
||||||
"logged_out_device": "Dispositivo desconectado",
|
"logged_out_device": "Dispositivo desconectado",
|
||||||
"login": "Iniciar sessão",
|
"login": "Iniciar sessão",
|
||||||
|
"login_form_button_text": "Login",
|
||||||
|
"login_form_email_hint": "youremail@email.com",
|
||||||
|
"login_form_endpoint_hint": "http://your-server-ip:port",
|
||||||
|
"login_form_endpoint_url": "Server Endpoint URL",
|
||||||
|
"login_form_err_http": "Please specify http:// or https://",
|
||||||
|
"login_form_err_invalid_email": "E-mail inválido",
|
||||||
|
"login_form_err_leading_whitespace": "Leading whitespace",
|
||||||
|
"login_form_err_trailing_whitespace": "Trailing whitespace",
|
||||||
|
"login_form_failed_login": "Erro ao fazer login, verifique a url do servidor, e-mail e senha",
|
||||||
|
"login_form_label_email": "Email",
|
||||||
|
"login_form_label_password": "Password",
|
||||||
|
"login_form_password_hint": "password",
|
||||||
|
"login_form_save_login": "Permaneçer conectado",
|
||||||
"login_has_been_disabled": "Login foi desativado.",
|
"login_has_been_disabled": "Login foi desativado.",
|
||||||
"logout_all_device_confirmation": "Tem certeza de que deseja sair de todos os dispositivos?",
|
"logout_all_device_confirmation": "Tem certeza de que deseja sair de todos os dispositivos?",
|
||||||
"logout_this_device_confirmation": "Tem certeza de que deseja sair deste dispositivo?",
|
"logout_this_device_confirmation": "Tem certeza de que deseja sair deste dispositivo?",
|
||||||
@@ -889,6 +1014,7 @@
|
|||||||
"missing": "Faltando",
|
"missing": "Faltando",
|
||||||
"model": "Modelo",
|
"model": "Modelo",
|
||||||
"month": "Mês",
|
"month": "Mês",
|
||||||
|
"monthly_title_text_date_format": "MMMM y",
|
||||||
"more": "Mais",
|
"more": "Mais",
|
||||||
"moved_to_trash": "Enviado para a lixeira",
|
"moved_to_trash": "Enviado para a lixeira",
|
||||||
"mute_memories": "Silenciar memórias",
|
"mute_memories": "Silenciar memórias",
|
||||||
@@ -917,10 +1043,12 @@
|
|||||||
"no_favorites_message": "Adicione aos favoritos para encontrar suas melhores fotos e vídeos rapidamente",
|
"no_favorites_message": "Adicione aos favoritos para encontrar suas melhores fotos e vídeos rapidamente",
|
||||||
"no_libraries_message": "Crie uma biblioteca externa para ver suas fotos e vídeos",
|
"no_libraries_message": "Crie uma biblioteca externa para ver suas fotos e vídeos",
|
||||||
"no_name": "Sem Nome",
|
"no_name": "Sem Nome",
|
||||||
|
"no_objects": "Nenhuma informação de objeto disponível",
|
||||||
"no_places": "Sem lugares",
|
"no_places": "Sem lugares",
|
||||||
"no_results": "Sem resultados",
|
"no_results": "Sem resultados",
|
||||||
"no_results_description": "Tente um sinônimo ou uma palavra-chave mais geral",
|
"no_results_description": "Tente um sinônimo ou uma palavra-chave mais geral",
|
||||||
"no_shared_albums_message": "Crie um álbum para compartilhar fotos e vídeos com pessoas em sua rede",
|
"no_shared_albums_message": "Crie um álbum para compartilhar fotos e vídeos com pessoas em sua rede",
|
||||||
|
"none_selected": "Nenhum selecionado",
|
||||||
"not_in_any_album": "Fora de álbum",
|
"not_in_any_album": "Fora de álbum",
|
||||||
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o rótulo de armazenamento a arquivos carregados anteriormente, execute o",
|
"note_apply_storage_label_to_previously_uploaded assets": "Nota: Para aplicar o rótulo de armazenamento a arquivos carregados anteriormente, execute o",
|
||||||
"note_unlimited_quota": "Nota: Digite 0 para cota ilimitada",
|
"note_unlimited_quota": "Nota: Digite 0 para cota ilimitada",
|
||||||
@@ -954,6 +1082,7 @@
|
|||||||
"other_variables": "Outras variáveis",
|
"other_variables": "Outras variáveis",
|
||||||
"owned": "Seu",
|
"owned": "Seu",
|
||||||
"owner": "Dono",
|
"owner": "Dono",
|
||||||
|
"page_share_add_users": "Adicionar usuários",
|
||||||
"partner": "Parceiro",
|
"partner": "Parceiro",
|
||||||
"partner_can_access": "{partner} pode acessar",
|
"partner_can_access": "{partner} pode acessar",
|
||||||
"partner_can_access_assets": "Todas suas fotos e vídeos, excetos os Arquivados ou Excluídos",
|
"partner_can_access_assets": "Todas suas fotos e vídeos, excetos os Arquivados ou Excluídos",
|
||||||
@@ -1010,6 +1139,9 @@
|
|||||||
"previous_or_next_photo": "Foto anterior ou próxima",
|
"previous_or_next_photo": "Foto anterior ou próxima",
|
||||||
"primary": "Primário",
|
"primary": "Primário",
|
||||||
"privacy": "Privacidade",
|
"privacy": "Privacidade",
|
||||||
|
"profile_drawer_client_server_up_to_date": "Cliente e Servidor estão atualizados",
|
||||||
|
"profile_drawer_settings": "Configurações",
|
||||||
|
"profile_drawer_sign_out": "Sair",
|
||||||
"profile_image_of_user": "Imagem do perfil de {user}",
|
"profile_image_of_user": "Imagem do perfil de {user}",
|
||||||
"profile_picture_set": "Foto de perfil definida.",
|
"profile_picture_set": "Foto de perfil definida.",
|
||||||
"public_album": "Álbum público",
|
"public_album": "Álbum público",
|
||||||
@@ -1070,6 +1202,8 @@
|
|||||||
"refreshing_faces": "Atualizando rostos",
|
"refreshing_faces": "Atualizando rostos",
|
||||||
"refreshing_metadata": "Atualizando metadados",
|
"refreshing_metadata": "Atualizando metadados",
|
||||||
"regenerating_thumbnails": "Regenerando miniaturas",
|
"regenerating_thumbnails": "Regenerando miniaturas",
|
||||||
|
"remainder": "Restante",
|
||||||
|
"remainder_sub": "Fotos e vídeos restantes para fazer backup da seleção",
|
||||||
"remove": "Remover",
|
"remove": "Remover",
|
||||||
"remove_assets_album_confirmation": "Tem certeza de que deseja remover {count, plural, one {# arquivo} other {# arquivos}} do álbum?",
|
"remove_assets_album_confirmation": "Tem certeza de que deseja remover {count, plural, one {# arquivo} other {# arquivos}} do álbum?",
|
||||||
"remove_assets_shared_link_confirmation": "Tem certeza de que deseja remover {count, plural, one {# arquivo} other {# arquivos}} desse link compartilhado?",
|
"remove_assets_shared_link_confirmation": "Tem certeza de que deseja remover {count, plural, one {# arquivo} other {# arquivos}} desse link compartilhado?",
|
||||||
@@ -1125,6 +1259,7 @@
|
|||||||
"scanning_for_album": "Escaneando por álbum...",
|
"scanning_for_album": "Escaneando por álbum...",
|
||||||
"search": "Pesquisar",
|
"search": "Pesquisar",
|
||||||
"search_albums": "Pesquisar álbuns",
|
"search_albums": "Pesquisar álbuns",
|
||||||
|
"search_bar_hint": "Procurar fotos",
|
||||||
"search_by_context": "Pesquisar por contexto",
|
"search_by_context": "Pesquisar por contexto",
|
||||||
"search_by_description": "Pesquisar por descrição",
|
"search_by_description": "Pesquisar por descrição",
|
||||||
"search_by_description_example": "Dia de caminhada no Ibirapuera",
|
"search_by_description_example": "Dia de caminhada no Ibirapuera",
|
||||||
@@ -1139,9 +1274,14 @@
|
|||||||
"search_no_people": "Nenhuma pessoa",
|
"search_no_people": "Nenhuma pessoa",
|
||||||
"search_no_people_named": "Nenhuma pessoa chamada \"{name}\"",
|
"search_no_people_named": "Nenhuma pessoa chamada \"{name}\"",
|
||||||
"search_options": "Opções de pesquisa",
|
"search_options": "Opções de pesquisa",
|
||||||
|
"search_page_no_objects": "Nenhuma informação de objeto disponível",
|
||||||
|
"search_page_no_places": "Nenhuma informação de lugares disponível",
|
||||||
|
"search_page_places": "Lugares",
|
||||||
|
"search_page_things": "Coisas",
|
||||||
"search_people": "Pesquisar pessoas",
|
"search_people": "Pesquisar pessoas",
|
||||||
"search_places": "Pesquisar lugares",
|
"search_places": "Pesquisar lugares",
|
||||||
"search_rating": "Pesquisar por classificação...",
|
"search_rating": "Pesquisar por classificação...",
|
||||||
|
"search_result_page_new_search_hint": "Nova pesquisa",
|
||||||
"search_settings": "Configurações de pesquisa",
|
"search_settings": "Configurações de pesquisa",
|
||||||
"search_state": "Pesquisar estado...",
|
"search_state": "Pesquisar estado...",
|
||||||
"search_tags": "Procurar marcadores...",
|
"search_tags": "Procurar marcadores...",
|
||||||
@@ -1152,6 +1292,7 @@
|
|||||||
"second": "Segundo",
|
"second": "Segundo",
|
||||||
"see_all_people": "Ver todas as pessoas",
|
"see_all_people": "Ver todas as pessoas",
|
||||||
"select": "Selecionar",
|
"select": "Selecionar",
|
||||||
|
"select_additional_user_for_sharing_page_suggestions": "Sugestões",
|
||||||
"select_album_cover": "Escolher capa do álbum",
|
"select_album_cover": "Escolher capa do álbum",
|
||||||
"select_all": "Selecionar todos",
|
"select_all": "Selecionar todos",
|
||||||
"select_all_duplicates": "Selecionar todas as duplicatas",
|
"select_all_duplicates": "Selecionar todas as duplicatas",
|
||||||
@@ -1164,6 +1305,8 @@
|
|||||||
"select_new_face": "Selecionar novo rosto",
|
"select_new_face": "Selecionar novo rosto",
|
||||||
"select_photos": "Selecionar fotos",
|
"select_photos": "Selecionar fotos",
|
||||||
"select_trash_all": "Marcar lixo em todos",
|
"select_trash_all": "Marcar lixo em todos",
|
||||||
|
"select_user_for_sharing_page_err_album": "Falha ao criar álbum",
|
||||||
|
"select_user_for_sharing_page_share_suggestions": "Sugestões",
|
||||||
"selected": "Selecionados",
|
"selected": "Selecionados",
|
||||||
"selected_count": "{count, plural, one {# selecionado} other {# selecionados}}",
|
"selected_count": "{count, plural, one {# selecionado} other {# selecionados}}",
|
||||||
"send_message": "Enviar mensagem",
|
"send_message": "Enviar mensagem",
|
||||||
@@ -1171,30 +1314,43 @@
|
|||||||
"server_offline": "Servidor Indisponível",
|
"server_offline": "Servidor Indisponível",
|
||||||
"server_online": "Servidor Disponível",
|
"server_online": "Servidor Disponível",
|
||||||
"server_stats": "Status do servidor",
|
"server_stats": "Status do servidor",
|
||||||
|
"server_storage": "Armazenamento do servidor",
|
||||||
"server_version": "Versão do servidor",
|
"server_version": "Versão do servidor",
|
||||||
"set": "Definir",
|
"set": "Definir",
|
||||||
"set_as_album_cover": "Definir como capa do álbum",
|
"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_as_profile_picture": "Definir como foto de perfil",
|
||||||
"set_date_of_birth": "Definir data de nascimento",
|
"set_date_of_birth": "Definir data de nascimento",
|
||||||
"set_profile_picture": "Definir foto de perfil",
|
"set_profile_picture": "Definir foto de perfil",
|
||||||
"set_slideshow_to_fullscreen": "Apresentação em tela cheia",
|
"set_slideshow_to_fullscreen": "Apresentação em tela cheia",
|
||||||
|
"setting_pages_app_bar_settings": "Configurações",
|
||||||
"settings": "Configurações",
|
"settings": "Configurações",
|
||||||
"settings_saved": "Configurações salvas",
|
"settings_saved": "Configurações salvas",
|
||||||
"share": "Compartilhar",
|
"share": "Compartilhar",
|
||||||
|
"share_add": "Adicionar",
|
||||||
|
"share_add_photos": "Adicionar fotos",
|
||||||
|
"share_add_title": "Adicione um título",
|
||||||
|
"share_create_album": "Criar álbum",
|
||||||
|
"share_dialog_preparing": "Preparando...",
|
||||||
|
"share_invite": "Convidar para o álbum",
|
||||||
"shared": "Compartilhado",
|
"shared": "Compartilhado",
|
||||||
"shared_by": "Compartilhado por",
|
"shared_by": "Compartilhado por",
|
||||||
"shared_by_user": "Compartilhado por {user}",
|
"shared_by_user": "Compartilhado por {user}",
|
||||||
"shared_by_you": "Compartilhado por você",
|
"shared_by_you": "Compartilhado por você",
|
||||||
"shared_from_partner": "Fotos de {partner}",
|
"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": "Links compartilhados",
|
||||||
"shared_links_description": "Compartilhar fotos e videos com um link",
|
"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}",
|
"shared_with_partner": "Compartilhado com {partner}",
|
||||||
"sharing": "Compartilhar",
|
"sharing": "Compartilhamento",
|
||||||
"sharing_enter_password": "Digite a senha para visualizar esta página.",
|
"sharing_enter_password": "Digite a senha para visualizar esta página.",
|
||||||
"sharing_sidebar_description": "Exibe o link Compartilhar na barra lateral",
|
"sharing_page_album": "Álbuns compartilhados",
|
||||||
|
"sharing_page_description": "Crie álbuns compartilhados para compartilhar fotos e vídeos com pessoas em sua rede.",
|
||||||
|
"sharing_page_empty_list": "LISTA VAZIA",
|
||||||
|
"sharing_sidebar_description": "Exibe um link para Compartilhamento na barra lateral",
|
||||||
|
"sharing_silver_appbar_create_shared_album": "Criar álbum compartilhado",
|
||||||
|
"sharing_silver_appbar_share_partner": "Compartilhe com o parceiro",
|
||||||
"shift_to_permanent_delete": "pressione ⇧ para excluir permanentemente o arquivo",
|
"shift_to_permanent_delete": "pressione ⇧ para excluir permanentemente o arquivo",
|
||||||
"show_album_options": "Exibir opções do álbum",
|
"show_album_options": "Exibir opções do álbum",
|
||||||
"show_albums": "Exibir álbuns",
|
"show_albums": "Exibir álbuns",
|
||||||
@@ -1214,15 +1370,15 @@
|
|||||||
"show_search_options": "Exibir opções de pesquisa",
|
"show_search_options": "Exibir opções de pesquisa",
|
||||||
"show_shared_links": "Mostrar links compartilhados",
|
"show_shared_links": "Mostrar links compartilhados",
|
||||||
"show_slideshow_transition": "Usar transições no modo de apresentação",
|
"show_slideshow_transition": "Usar transições no modo de apresentação",
|
||||||
"show_supporter_badge": "Insígnia de Contribuidor",
|
"show_supporter_badge": "Insígnia de apoiador",
|
||||||
"show_supporter_badge_description": "Mostrar a insígnia de contribuidor",
|
"show_supporter_badge_description": "Mostrar uma insígnia de apoiador",
|
||||||
"shuffle": "Aleatório",
|
"shuffle": "Aleatório",
|
||||||
"sidebar": "Barra lateral",
|
"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_out": "Sair",
|
||||||
"sign_up": "Registrar",
|
"sign_up": "Registrar",
|
||||||
"size": "Tamanho",
|
"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_folders": "Ir para pastas",
|
||||||
"skip_to_tags": "Ir para os marcadores",
|
"skip_to_tags": "Ir para os marcadores",
|
||||||
"slideshow": "Apresentação",
|
"slideshow": "Apresentação",
|
||||||
@@ -1240,19 +1396,23 @@
|
|||||||
"stack_duplicates": "Empilhar duplicados",
|
"stack_duplicates": "Empilhar duplicados",
|
||||||
"stack_select_one_photo": "Selecione uma foto principal para a pilha",
|
"stack_select_one_photo": "Selecione uma foto principal para a pilha",
|
||||||
"stack_selected_photos": "Empilhar fotos selecionadas",
|
"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",
|
"stacktrace": "Rastreamento de pilha",
|
||||||
"start": "Início",
|
"start": "Início",
|
||||||
|
"start_backup": "Iniciar backup",
|
||||||
"start_date": "Data inicial",
|
"start_date": "Data inicial",
|
||||||
"state": "Estado",
|
"state": "Estado",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
"status_off": "O backup está desativado",
|
||||||
|
"status_on": "O backup está ativado",
|
||||||
"stop_motion_photo": "Parar foto em movimento",
|
"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_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": "Espaço de armazenamento",
|
||||||
|
"storage_format": "{} de {} usado",
|
||||||
"storage_label": "Rótulo de armazenamento",
|
"storage_label": "Rótulo de armazenamento",
|
||||||
"storage_usage": "utilizado {used} de {available}",
|
"storage_usage": "Utilizado {used} de {available}",
|
||||||
"submit": "Enviar",
|
"submit": "Enviar",
|
||||||
"suggestions": "Sugestões",
|
"suggestions": "Sugestões",
|
||||||
"sunrise_on_the_beach": "Nascer do sol na praia",
|
"sunrise_on_the_beach": "Nascer do sol na praia",
|
||||||
@@ -1261,33 +1421,53 @@
|
|||||||
"support_third_party_description": "Sua instalação do Immich é fornecida por terceiros. É possível que problemas sejam causados por eles, por isso, se tiver problemas, procure primeiro ajuda com eles utilizando os links abaixo.",
|
"support_third_party_description": "Sua instalação do Immich é fornecida por terceiros. É possível que problemas sejam causados por eles, por isso, se tiver problemas, procure primeiro ajuda com eles utilizando os links abaixo.",
|
||||||
"swap_merge_direction": "Alternar direção da mesclagem",
|
"swap_merge_direction": "Alternar direção da mesclagem",
|
||||||
"sync": "Sincronizar",
|
"sync": "Sincronizar",
|
||||||
|
"system_theme_switch": "Automático (seguir a configuração do sistema)",
|
||||||
|
"tab_controller_nav_library": "Biblioteca",
|
||||||
|
"tab_controller_nav_photos": "Fotos",
|
||||||
|
"tab_controller_nav_search": "Procurar",
|
||||||
|
"tab_controller_nav_sharing": "Compartilhamento",
|
||||||
"tag": "Marcador",
|
"tag": "Marcador",
|
||||||
"tag_assets": "Marcar arquivos",
|
"tag_assets": "Marcar arquivos",
|
||||||
"tag_created": "Marcador criado: {tag}",
|
"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_not_found_question": "Não consegue encontrar o marcador? <link>Crie uma novo aqui.</link>",
|
||||||
"tag_people": "Marcar pessoas",
|
"tag_people": "Marcar pessoas",
|
||||||
"tag_updated": "Marcador foi atualizado: {tag}",
|
"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",
|
"tags": "Marcadores",
|
||||||
"template": "Modelo",
|
"template": "Modelo",
|
||||||
"theme": "Tema",
|
"theme": "Tema",
|
||||||
"theme_selection": "Selecionar tema",
|
"theme_selection": "Selecionar tema",
|
||||||
"theme_selection_description": "Defina automaticamente o tema como claro ou escuro com base na preferência do sistema do seu navegador",
|
"theme_selection_description": "Defina automaticamente o tema como claro ou escuro com base na preferência do sistema do seu navegador",
|
||||||
|
"theme_setting_dark_mode_switch": "Dark mode",
|
||||||
|
"theme_setting_image_viewer_quality_subtitle": "Ajuste a qualidade de imagens detalhadas do visualizador",
|
||||||
|
"theme_setting_image_viewer_quality_title": "Qualidade das imagens do visualizador",
|
||||||
|
"theme_setting_system_theme_switch": "Automático (seguir a configuração do sistema)",
|
||||||
|
"theme_setting_theme_subtitle": "Escolha a configuração de tema do app",
|
||||||
|
"theme_setting_theme_title": "Tema",
|
||||||
|
"theme_setting_three_stage_loading_subtitle": "O carregamento em três estágios oferece a imagem de melhor qualidade em troca de uma velocidade de carregamento mais lenta",
|
||||||
|
"theme_setting_three_stage_loading_title": "Ative o carregamento em três estágios",
|
||||||
|
"theme_subtitle": "Escolha a configuração de tema do app",
|
||||||
|
"theme_title": "Tema",
|
||||||
"they_will_be_merged_together": "Eles serão mesclados",
|
"they_will_be_merged_together": "Eles serão mesclados",
|
||||||
|
"things": "Coisas",
|
||||||
"third_party_resources": "Recursos de terceiros",
|
"third_party_resources": "Recursos de terceiros",
|
||||||
"time_based_memories": "Memórias baseada no tempo",
|
"three_stage_loading_subtitle": "O carregamento em três estágios oferece a imagem de melhor qualidade em troca de uma velocidade de carregamento mais lenta",
|
||||||
|
"three_stage_loading_title": "Ative o carregamento em três estágios",
|
||||||
|
"time_based_memories": "Memórias baseadas no tempo",
|
||||||
"timeline": "Linha do tempo",
|
"timeline": "Linha do tempo",
|
||||||
"timezone": "Fuso horário",
|
"timezone": "Fuso horário",
|
||||||
"to_archive": "Arquivar",
|
"to_archive": "Arquivar",
|
||||||
|
"to_backup": "Álbuns para backup",
|
||||||
"to_change_password": "Alterar senha",
|
"to_change_password": "Alterar senha",
|
||||||
"to_favorite": "Favorito",
|
"to_favorite": "Favorito",
|
||||||
"to_login": "Iniciar sessão",
|
"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",
|
"to_trash": "Mover para a lixeira",
|
||||||
"toggle_settings": "Alternar configurações",
|
"toggle_settings": "Alternar configurações",
|
||||||
"toggle_theme": "Alternar tema escuro",
|
"toggle_theme": "Alternar tema escuro",
|
||||||
"total": "Total",
|
"total": "Total",
|
||||||
|
"total_sub": "Todas as fotos e vídeos únicos dos álbuns selecionados",
|
||||||
"total_usage": "Utilização total",
|
"total_usage": "Utilização total",
|
||||||
"trash": "Lixeira",
|
"trash": "Lixeira",
|
||||||
"trash_all": "Mover todos para o lixo",
|
"trash_all": "Mover todos para o lixo",
|
||||||
@@ -1295,9 +1475,11 @@
|
|||||||
"trash_delete_asset": "Jogar na lixeira/Excluir Arquivo",
|
"trash_delete_asset": "Jogar na lixeira/Excluir Arquivo",
|
||||||
"trash_no_results_message": "Fotos e vídeos enviados para o lixo aparecem aqui.",
|
"trash_no_results_message": "Fotos e vídeos enviados para o lixo aparecem aqui.",
|
||||||
"trashed_items_will_be_permanently_deleted_after": "Os itens da lixeira serão deletados permanentemente após {days, plural, one {# dia} other {# dias}}.",
|
"trashed_items_will_be_permanently_deleted_after": "Os itens da lixeira serão deletados permanentemente após {days, plural, one {# dia} other {# dias}}.",
|
||||||
|
"turn_off": "Desativar o backup",
|
||||||
|
"turn_on": "Ativar Backup",
|
||||||
"type": "Tipo",
|
"type": "Tipo",
|
||||||
"unarchive": "Desarquivar",
|
"unarchive": "Desarquivar",
|
||||||
"unarchived_count": "{count, plural, one {# desarquivado} other {# desarquivados}}",
|
"unarchived_count": "{count, plural, one {# Desarquivado} other {# Desarquivados}}",
|
||||||
"unfavorite": "Remover favorito",
|
"unfavorite": "Remover favorito",
|
||||||
"unhide_person": "Exibir pessoa",
|
"unhide_person": "Exibir pessoa",
|
||||||
"unknown": "Desconhecido",
|
"unknown": "Desconhecido",
|
||||||
@@ -1312,45 +1494,52 @@
|
|||||||
"unnamed_album_delete_confirmation": "Tem certeza que deseja excluir este álbum?",
|
"unnamed_album_delete_confirmation": "Tem certeza que deseja excluir este álbum?",
|
||||||
"unnamed_share": "Compartilhamento sem nome",
|
"unnamed_share": "Compartilhamento sem nome",
|
||||||
"unsaved_change": "Alteração não salva",
|
"unsaved_change": "Alteração não salva",
|
||||||
"unselect_all": "Limpar seleção",
|
"unselect_all": "Desselecionar todos",
|
||||||
"unselect_all_duplicates": "Desselecionar todas as duplicatas",
|
"unselect_all_duplicates": "Desselecionar todas as duplicatas",
|
||||||
"unstack": "Desempilhar",
|
"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": "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",
|
"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",
|
"up_next": "A seguir",
|
||||||
"updated_password": "Senha atualizada",
|
"updated_password": "Senha atualizada",
|
||||||
"upload": "Carregar",
|
"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_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_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_skipped_duplicates": "{count, plural, one {# Arquivo duplicado foi ignorado} other {# Arquivos duplicados foram ignorados}}",
|
||||||
"upload_status_duplicates": "Duplicados",
|
"upload_status_duplicates": "Duplicados",
|
||||||
"upload_status_errors": "Erros",
|
"upload_status_errors": "Erros",
|
||||||
"upload_status_uploaded": "Carregado",
|
"upload_status_uploaded": "Carregado",
|
||||||
"upload_success": "Carregado com sucesso, atualize a página para ver os novos arquivos.",
|
"upload_success": "Carregado com sucesso, atualize a página para ver os novos arquivos.",
|
||||||
|
"uploading_file_info": "Carregando informações do arquivo",
|
||||||
"url": "URL",
|
"url": "URL",
|
||||||
"usage": "Uso",
|
"usage": "Uso",
|
||||||
"use_custom_date_range": "Usar intervalo de datas personalizado",
|
"use_custom_date_range": "Usar intervalo de datas personalizado",
|
||||||
"user": "Usuário",
|
"user": "Usuário",
|
||||||
"user_id": "ID do 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": "Comprar",
|
||||||
"user_purchase_settings_description": "Gerenciar sua compra",
|
"user_purchase_settings_description": "Gerenciar sua compra",
|
||||||
"user_role_set": "Definir {user} como {role}",
|
"user_role_set": "Definir {user} como {role}",
|
||||||
"user_usage_detail": "Detalhes de uso do usuário",
|
"user_usage_detail": "Detalhes de uso do usuário",
|
||||||
"user_usage_stats": "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 de conta",
|
"user_usage_stats_description": "Ver estatísticas de utilização da conta",
|
||||||
"username": "Nome do usuário",
|
"username": "Nome do usuário",
|
||||||
"users": "Usuários",
|
"users": "Usuários",
|
||||||
"utilities": "Utilitários",
|
"utilities": "Ferramentas",
|
||||||
"validate": "Validar",
|
"validate": "Validar",
|
||||||
"variables": "Variáveis",
|
"variables": "Variáveis",
|
||||||
"version": "Versão",
|
"version": "Versão",
|
||||||
"version_announcement_closing": "De seu amigo, Alex",
|
"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_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_announcement_overlay_ack": "Confirmar",
|
||||||
|
"version_announcement_overlay_release_notes": "notas de lançamento",
|
||||||
|
"version_announcement_overlay_text_1": "Oi amigo, há um novo lançamento de",
|
||||||
|
"version_announcement_overlay_text_2": "reserve um tempo para visitar o ",
|
||||||
|
"version_announcement_overlay_text_3": " e verifique se a configuração do docker-compose e do .env está atualizada para evitar configurações incorretas, especialmente se você usar o WatchTower ou qualquer mecanismo que lide com a atualização automática do aplicativo do servidor.",
|
||||||
|
"version_announcement_overlay_title": "Nova versão do servidor disponível 🎉",
|
||||||
"version_history": "Histórico de versões",
|
"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": "Vídeo",
|
||||||
"video_hover_setting": "Reproduzir miniatura do vídeo ao passar o mouse",
|
"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.",
|
"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 +1548,15 @@
|
|||||||
"view": "Ver",
|
"view": "Ver",
|
||||||
"view_album": "Ver álbum",
|
"view_album": "Ver álbum",
|
||||||
"view_all": "Ver tudo",
|
"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_in_timeline": "Ver na linha do tempo",
|
||||||
"view_link": "Ver link",
|
"view_link": "Ver link",
|
||||||
"view_links": "Ver links",
|
"view_links": "Ver links",
|
||||||
"view_name": "Ver",
|
"view_name": "Ver",
|
||||||
"view_next_asset": "Ver próximo arquivo",
|
"view_next_asset": "Ver próximo arquivo",
|
||||||
"view_previous_asset": "Ver arquivo anterior",
|
"view_previous_asset": "Ver arquivo anterior",
|
||||||
"view_stack": "Exibir Pilha",
|
"view_stack": "Ver Pilha",
|
||||||
"visibility_changed": "A visibilidade de {count, plural, one {# pessoa foi alterada} other {# pessoas foram alteradas}}",
|
"visibility_changed": "A visibilidade {count, plural, one {# da pessoa foi alterada} other {# das pessoas foi alterada}}",
|
||||||
"waiting": "Aguardando",
|
"waiting": "Aguardando",
|
||||||
"warning": "Aviso",
|
"warning": "Aviso",
|
||||||
"week": "Semana",
|
"week": "Semana",
|
||||||
@@ -1376,6 +1565,6 @@
|
|||||||
"year": "Ano",
|
"year": "Ano",
|
||||||
"years_ago": "{years, plural, one {# ano} other {# anos}} atrás",
|
"years_ago": "{years, plural, one {# ano} other {# anos}} atrás",
|
||||||
"yes": "Sim",
|
"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"
|
"zoom_image": "Ampliar imagem"
|
||||||
}
|
}
|
||||||
782
i18n/ro.json
782
i18n/ro.json
File diff suppressed because it is too large
Load Diff
799
i18n/ru.json
799
i18n/ru.json
File diff suppressed because it is too large
Load Diff
783
i18n/sk.json
783
i18n/sk.json
File diff suppressed because it is too large
Load Diff
789
i18n/sl.json
789
i18n/sl.json
File diff suppressed because it is too large
Load Diff
1
i18n/sq.json
Normal file
1
i18n/sq.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
789
i18n/sv.json
789
i18n/sv.json
File diff suppressed because it is too large
Load Diff
955
i18n/te.json
955
i18n/te.json
File diff suppressed because it is too large
Load Diff
848
i18n/th.json
848
i18n/th.json
File diff suppressed because it is too large
Load Diff
784
i18n/tr.json
784
i18n/tr.json
File diff suppressed because it is too large
Load Diff
827
i18n/uk.json
827
i18n/uk.json
File diff suppressed because it is too large
Load Diff
784
i18n/vi.json
784
i18n/vi.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
ARG DEVICE=cpu
|
ARG DEVICE=cpu
|
||||||
|
|
||||||
FROM python:3.11-bookworm@sha256:ebfa8696e47a68cffebb31e370a93ce57c01bc753f246ceaaef72801d1661351 AS builder-cpu
|
FROM python:3.11-bookworm@sha256:0a9d314ae6e976351bd37b702bf6b0a89bb58e6304e5df35b960059b12531419 AS builder-cpu
|
||||||
|
|
||||||
FROM builder-cpu AS builder-openvino
|
FROM builder-cpu AS builder-openvino
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ ENV PYTHONDONTWRITEBYTECODE=1 \
|
|||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends g++
|
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:0b6dc79013b689f3bc0cbf12807cb1c901beaafe80f2ee10a1d76aa3842afb92 /uv /uvx /bin/
|
||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
--mount=type=bind,source=uv.lock,target=uv.lock \
|
--mount=type=bind,source=uv.lock,target=uv.lock \
|
||||||
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||||
@@ -63,11 +63,11 @@ RUN if [ "$DEVICE" = "rocm" ]; then \
|
|||||||
uv pip install /opt/onnxruntime_rocm-*.whl; \
|
uv pip install /opt/onnxruntime_rocm-*.whl; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FROM python:3.11-slim-bookworm@sha256:7029b00486ac40bed03e36775b864d3f3d39dcbdf19cd45e6a52d541e6c178f0 AS prod-cpu
|
FROM python:3.11-slim-bookworm@sha256:49d73c49616929b0a4f37c50fee0056eb4b0f15de624591e8d9bf84b4dfdd3ce AS prod-cpu
|
||||||
|
|
||||||
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
|
ENV LD_PRELOAD=/usr/lib/libmimalloc.so.2
|
||||||
|
|
||||||
FROM prod-cpu AS prod-openvino
|
FROM python:3.11-slim-bookworm@sha256:49d73c49616929b0a4f37c50fee0056eb4b0f15de624591e8d9bf84b4dfdd3ce AS prod-openvino
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \
|
apt-get install --no-install-recommends -yqq ocl-icd-libopencl1 wget && \
|
||||||
@@ -82,6 +82,8 @@ RUN apt-get update && \
|
|||||||
|
|
||||||
FROM nvidia/cuda:12.2.2-runtime-ubuntu22.04@sha256:94c1577b2cd9dd6c0312dc04dff9cb2fdce2b268018abc3d7c2dbcacf1155000 AS prod-cuda
|
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 && \
|
RUN apt-get update && \
|
||||||
apt-get install --no-install-recommends -yqq libcudnn9-cuda-12 && \
|
apt-get install --no-install-recommends -yqq libcudnn9-cuda-12 && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
@@ -140,7 +142,6 @@ ENV TRANSFORMERS_CACHE=/cache \
|
|||||||
PYTHONPATH=/usr/src \
|
PYTHONPATH=/usr/src \
|
||||||
DEVICE=${DEVICE} \
|
DEVICE=${DEVICE} \
|
||||||
VIRTUAL_ENV=/opt/venv \
|
VIRTUAL_ENV=/opt/venv \
|
||||||
LD_BIND_NOW=1 \
|
|
||||||
MACHINE_LEARNING_CACHE_FOLDER=/cache
|
MACHINE_LEARNING_CACHE_FOLDER=/cache
|
||||||
|
|
||||||
# prevent core dumps
|
# prevent core dumps
|
||||||
@@ -149,6 +150,7 @@ RUN echo "hard core 0" >> /etc/security/limits.conf && \
|
|||||||
echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile
|
echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile
|
||||||
|
|
||||||
COPY --from=builder /opt/venv /opt/venv
|
COPY --from=builder /opt/venv /opt/venv
|
||||||
|
COPY scripts/healthcheck.py .
|
||||||
COPY immich_ml immich_ml
|
COPY immich_ml immich_ml
|
||||||
|
|
||||||
ARG BUILD_ID
|
ARG BUILD_ID
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from tokenizers import Encoding, Tokenizer
|
|||||||
|
|
||||||
from immich_ml.config import log
|
from immich_ml.config import log
|
||||||
from immich_ml.models.base import InferenceModel
|
from immich_ml.models.base import InferenceModel
|
||||||
|
from immich_ml.models.constants import WEBLATE_TO_FLORES200
|
||||||
from immich_ml.models.transforms import clean_text, serialize_np_array
|
from immich_ml.models.transforms import clean_text, serialize_np_array
|
||||||
from immich_ml.schemas import ModelSession, ModelTask, ModelType
|
from immich_ml.schemas import ModelSession, ModelTask, ModelType
|
||||||
|
|
||||||
@@ -18,8 +19,9 @@ class BaseCLIPTextualEncoder(InferenceModel):
|
|||||||
depends = []
|
depends = []
|
||||||
identity = (ModelType.TEXTUAL, ModelTask.SEARCH)
|
identity = (ModelType.TEXTUAL, ModelTask.SEARCH)
|
||||||
|
|
||||||
def _predict(self, inputs: str, **kwargs: Any) -> str:
|
def _predict(self, inputs: str, language: str | None = None, **kwargs: Any) -> str:
|
||||||
res: NDArray[np.float32] = self.session.run(None, self.tokenize(inputs))[0][0]
|
tokens = self.tokenize(inputs, language=language)
|
||||||
|
res: NDArray[np.float32] = self.session.run(None, tokens)[0][0]
|
||||||
return serialize_np_array(res)
|
return serialize_np_array(res)
|
||||||
|
|
||||||
def _load(self) -> ModelSession:
|
def _load(self) -> ModelSession:
|
||||||
@@ -28,6 +30,7 @@ class BaseCLIPTextualEncoder(InferenceModel):
|
|||||||
self.tokenizer = self._load_tokenizer()
|
self.tokenizer = self._load_tokenizer()
|
||||||
tokenizer_kwargs: dict[str, Any] | None = self.text_cfg.get("tokenizer_kwargs")
|
tokenizer_kwargs: dict[str, Any] | None = self.text_cfg.get("tokenizer_kwargs")
|
||||||
self.canonicalize = tokenizer_kwargs is not None and tokenizer_kwargs.get("clean") == "canonicalize"
|
self.canonicalize = tokenizer_kwargs is not None and tokenizer_kwargs.get("clean") == "canonicalize"
|
||||||
|
self.is_nllb = self.model_name.startswith("nllb")
|
||||||
log.debug(f"Loaded tokenizer for CLIP model '{self.model_name}'")
|
log.debug(f"Loaded tokenizer for CLIP model '{self.model_name}'")
|
||||||
|
|
||||||
return session
|
return session
|
||||||
@@ -37,7 +40,7 @@ class BaseCLIPTextualEncoder(InferenceModel):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def tokenize(self, text: str) -> dict[str, NDArray[np.int32]]:
|
def tokenize(self, text: str, language: str | None = None) -> dict[str, NDArray[np.int32]]:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -92,14 +95,23 @@ class OpenClipTextualEncoder(BaseCLIPTextualEncoder):
|
|||||||
|
|
||||||
return tokenizer
|
return tokenizer
|
||||||
|
|
||||||
def tokenize(self, text: str) -> dict[str, NDArray[np.int32]]:
|
def tokenize(self, text: str, language: str | None = None) -> dict[str, NDArray[np.int32]]:
|
||||||
text = clean_text(text, canonicalize=self.canonicalize)
|
text = clean_text(text, canonicalize=self.canonicalize)
|
||||||
|
if self.is_nllb and language is not None:
|
||||||
|
flores_code = WEBLATE_TO_FLORES200.get(language)
|
||||||
|
if flores_code is None:
|
||||||
|
no_country = language.split("-")[0]
|
||||||
|
flores_code = WEBLATE_TO_FLORES200.get(no_country)
|
||||||
|
if flores_code is None:
|
||||||
|
log.warning(f"Language '{language}' not found, defaulting to 'en'")
|
||||||
|
flores_code = "eng_Latn"
|
||||||
|
text = f"{flores_code}{text}"
|
||||||
tokens: Encoding = self.tokenizer.encode(text)
|
tokens: Encoding = self.tokenizer.encode(text)
|
||||||
return {"text": np.array([tokens.ids], dtype=np.int32)}
|
return {"text": np.array([tokens.ids], dtype=np.int32)}
|
||||||
|
|
||||||
|
|
||||||
class MClipTextualEncoder(OpenClipTextualEncoder):
|
class MClipTextualEncoder(OpenClipTextualEncoder):
|
||||||
def tokenize(self, text: str) -> dict[str, NDArray[np.int32]]:
|
def tokenize(self, text: str, language: str | None = None) -> dict[str, NDArray[np.int32]]:
|
||||||
text = clean_text(text, canonicalize=self.canonicalize)
|
text = clean_text(text, canonicalize=self.canonicalize)
|
||||||
tokens: Encoding = self.tokenizer.encode(text)
|
tokens: Encoding = self.tokenizer.encode(text)
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -86,6 +86,66 @@ RKNN_SUPPORTED_SOCS = ["rk3566", "rk3568", "rk3576", "rk3588"]
|
|||||||
RKNN_COREMASK_SUPPORTED_SOCS = ["rk3576", "rk3588"]
|
RKNN_COREMASK_SUPPORTED_SOCS = ["rk3576", "rk3588"]
|
||||||
|
|
||||||
|
|
||||||
|
WEBLATE_TO_FLORES200 = {
|
||||||
|
"af": "afr_Latn",
|
||||||
|
"ar": "arb_Arab",
|
||||||
|
"az": "azj_Latn",
|
||||||
|
"be": "bel_Cyrl",
|
||||||
|
"bg": "bul_Cyrl",
|
||||||
|
"ca": "cat_Latn",
|
||||||
|
"cs": "ces_Latn",
|
||||||
|
"da": "dan_Latn",
|
||||||
|
"de": "deu_Latn",
|
||||||
|
"el": "ell_Grek",
|
||||||
|
"en": "eng_Latn",
|
||||||
|
"es": "spa_Latn",
|
||||||
|
"et": "est_Latn",
|
||||||
|
"fa": "pes_Arab",
|
||||||
|
"fi": "fin_Latn",
|
||||||
|
"fr": "fra_Latn",
|
||||||
|
"he": "heb_Hebr",
|
||||||
|
"hi": "hin_Deva",
|
||||||
|
"hr": "hrv_Latn",
|
||||||
|
"hu": "hun_Latn",
|
||||||
|
"hy": "hye_Armn",
|
||||||
|
"id": "ind_Latn",
|
||||||
|
"it": "ita_Latn",
|
||||||
|
"ja": "jpn_Hira",
|
||||||
|
"kmr": "kmr_Latn",
|
||||||
|
"ko": "kor_Hang",
|
||||||
|
"lb": "ltz_Latn",
|
||||||
|
"lt": "lit_Latn",
|
||||||
|
"lv": "lav_Latn",
|
||||||
|
"mfa": "zsm_Latn",
|
||||||
|
"mk": "mkd_Cyrl",
|
||||||
|
"mn": "khk_Cyrl",
|
||||||
|
"mr": "mar_Deva",
|
||||||
|
"ms": "zsm_Latn",
|
||||||
|
"nb-NO": "nob_Latn",
|
||||||
|
"nn": "nno_Latn",
|
||||||
|
"nl": "nld_Latn",
|
||||||
|
"pl": "pol_Latn",
|
||||||
|
"pt-BR": "por_Latn",
|
||||||
|
"pt": "por_Latn",
|
||||||
|
"ro": "ron_Latn",
|
||||||
|
"ru": "rus_Cyrl",
|
||||||
|
"sk": "slk_Latn",
|
||||||
|
"sl": "slv_Latn",
|
||||||
|
"sr-Cyrl": "srp_Cyrl",
|
||||||
|
"sv": "swe_Latn",
|
||||||
|
"ta": "tam_Taml",
|
||||||
|
"te": "tel_Telu",
|
||||||
|
"th": "tha_Thai",
|
||||||
|
"tr": "tur_Latn",
|
||||||
|
"uk": "ukr_Cyrl",
|
||||||
|
"ur": "urd_Arab",
|
||||||
|
"vi": "vie_Latn",
|
||||||
|
"zh-CN": "zho_Hans",
|
||||||
|
"zh-Hans": "zho_Hans",
|
||||||
|
"zh-TW": "zho_Hant",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_model_source(model_name: str) -> ModelSource | None:
|
def get_model_source(model_name: str) -> ModelSource | None:
|
||||||
cleaned_name = clean_name(model_name)
|
cleaned_name = clean_name(model_name)
|
||||||
|
|
||||||
|
|||||||
@@ -278,8 +278,8 @@ class TestOrtSession:
|
|||||||
|
|
||||||
assert session.provider_options == []
|
assert session.provider_options == []
|
||||||
|
|
||||||
def test_sets_default_sess_options(self) -> None:
|
def test_sets_default_sess_options_if_cpu(self) -> None:
|
||||||
session = OrtSession("ViT-B-32__openai")
|
session = OrtSession("ViT-B-32__openai", providers=["CPUExecutionProvider"])
|
||||||
|
|
||||||
assert session.sess_options.execution_mode == ort.ExecutionMode.ORT_SEQUENTIAL
|
assert session.sess_options.execution_mode == ort.ExecutionMode.ORT_SEQUENTIAL
|
||||||
assert session.sess_options.inter_op_num_threads == 1
|
assert session.sess_options.inter_op_num_threads == 1
|
||||||
@@ -494,6 +494,88 @@ class TestCLIP:
|
|||||||
assert np.allclose(tokens["text"], np.array([mock_ids], dtype=np.int32), atol=0)
|
assert np.allclose(tokens["text"], np.array([mock_ids], dtype=np.int32), atol=0)
|
||||||
mock_tokenizer.encode.assert_called_once_with("test search query")
|
mock_tokenizer.encode.assert_called_once_with("test search query")
|
||||||
|
|
||||||
|
def test_openclip_tokenizer_adds_flores_token_for_nllb(
|
||||||
|
self,
|
||||||
|
mocker: MockerFixture,
|
||||||
|
clip_model_cfg: dict[str, Any],
|
||||||
|
clip_tokenizer_cfg: Callable[[Path], dict[str, Any]],
|
||||||
|
) -> None:
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "download")
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "model_cfg", clip_model_cfg)
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "tokenizer_cfg", clip_tokenizer_cfg)
|
||||||
|
mocker.patch.object(InferenceModel, "_make_session", autospec=True).return_value
|
||||||
|
mock_tokenizer = mocker.patch("immich_ml.models.clip.textual.Tokenizer.from_file", autospec=True).return_value
|
||||||
|
mock_ids = [randint(0, 50000) for _ in range(77)]
|
||||||
|
mock_tokenizer.encode.return_value = SimpleNamespace(ids=mock_ids)
|
||||||
|
|
||||||
|
clip_encoder = OpenClipTextualEncoder("nllb-clip-base-siglip__mrl", cache_dir="test_cache")
|
||||||
|
clip_encoder._load()
|
||||||
|
clip_encoder.tokenize("test search query", language="de")
|
||||||
|
|
||||||
|
mock_tokenizer.encode.assert_called_once_with("deu_Latntest search query")
|
||||||
|
|
||||||
|
def test_openclip_tokenizer_removes_country_code_from_language_for_nllb_if_not_found(
|
||||||
|
self,
|
||||||
|
mocker: MockerFixture,
|
||||||
|
clip_model_cfg: dict[str, Any],
|
||||||
|
clip_tokenizer_cfg: Callable[[Path], dict[str, Any]],
|
||||||
|
) -> None:
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "download")
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "model_cfg", clip_model_cfg)
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "tokenizer_cfg", clip_tokenizer_cfg)
|
||||||
|
mocker.patch.object(InferenceModel, "_make_session", autospec=True).return_value
|
||||||
|
mock_tokenizer = mocker.patch("immich_ml.models.clip.textual.Tokenizer.from_file", autospec=True).return_value
|
||||||
|
mock_ids = [randint(0, 50000) for _ in range(77)]
|
||||||
|
mock_tokenizer.encode.return_value = SimpleNamespace(ids=mock_ids)
|
||||||
|
|
||||||
|
clip_encoder = OpenClipTextualEncoder("nllb-clip-base-siglip__mrl", cache_dir="test_cache")
|
||||||
|
clip_encoder._load()
|
||||||
|
clip_encoder.tokenize("test search query", language="de-CH")
|
||||||
|
|
||||||
|
mock_tokenizer.encode.assert_called_once_with("deu_Latntest search query")
|
||||||
|
|
||||||
|
def test_openclip_tokenizer_falls_back_to_english_for_nllb_if_language_code_not_found(
|
||||||
|
self,
|
||||||
|
mocker: MockerFixture,
|
||||||
|
clip_model_cfg: dict[str, Any],
|
||||||
|
clip_tokenizer_cfg: Callable[[Path], dict[str, Any]],
|
||||||
|
warning: mock.Mock,
|
||||||
|
) -> None:
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "download")
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "model_cfg", clip_model_cfg)
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "tokenizer_cfg", clip_tokenizer_cfg)
|
||||||
|
mocker.patch.object(InferenceModel, "_make_session", autospec=True).return_value
|
||||||
|
mock_tokenizer = mocker.patch("immich_ml.models.clip.textual.Tokenizer.from_file", autospec=True).return_value
|
||||||
|
mock_ids = [randint(0, 50000) for _ in range(77)]
|
||||||
|
mock_tokenizer.encode.return_value = SimpleNamespace(ids=mock_ids)
|
||||||
|
|
||||||
|
clip_encoder = OpenClipTextualEncoder("nllb-clip-base-siglip__mrl", cache_dir="test_cache")
|
||||||
|
clip_encoder._load()
|
||||||
|
clip_encoder.tokenize("test search query", language="unknown")
|
||||||
|
|
||||||
|
mock_tokenizer.encode.assert_called_once_with("eng_Latntest search query")
|
||||||
|
warning.assert_called_once_with("Language 'unknown' not found, defaulting to 'en'")
|
||||||
|
|
||||||
|
def test_openclip_tokenizer_does_not_add_flores_token_for_non_nllb_model(
|
||||||
|
self,
|
||||||
|
mocker: MockerFixture,
|
||||||
|
clip_model_cfg: dict[str, Any],
|
||||||
|
clip_tokenizer_cfg: Callable[[Path], dict[str, Any]],
|
||||||
|
) -> None:
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "download")
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "model_cfg", clip_model_cfg)
|
||||||
|
mocker.patch.object(OpenClipTextualEncoder, "tokenizer_cfg", clip_tokenizer_cfg)
|
||||||
|
mocker.patch.object(InferenceModel, "_make_session", autospec=True).return_value
|
||||||
|
mock_tokenizer = mocker.patch("immich_ml.models.clip.textual.Tokenizer.from_file", autospec=True).return_value
|
||||||
|
mock_ids = [randint(0, 50000) for _ in range(77)]
|
||||||
|
mock_tokenizer.encode.return_value = SimpleNamespace(ids=mock_ids)
|
||||||
|
|
||||||
|
clip_encoder = OpenClipTextualEncoder("ViT-B-32__openai", cache_dir="test_cache")
|
||||||
|
clip_encoder._load()
|
||||||
|
clip_encoder.tokenize("test search query", language="de")
|
||||||
|
|
||||||
|
mock_tokenizer.encode.assert_called_once_with("test search query")
|
||||||
|
|
||||||
def test_mclip_tokenizer(
|
def test_mclip_tokenizer(
|
||||||
self,
|
self,
|
||||||
mocker: MockerFixture,
|
mocker: MockerFixture,
|
||||||
|
|||||||
359
machine-learning/uv.lock
generated
359
machine-learning/uv.lock
generated
@@ -508,16 +508,16 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fastapi"
|
name = "fastapi"
|
||||||
version = "0.115.11"
|
version = "0.115.12"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "pydantic" },
|
{ name = "pydantic" },
|
||||||
{ name = "starlette" },
|
{ name = "starlette" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/b5/28/c5d26e5860df807241909a961a37d45e10533acef95fc368066c7dd186cd/fastapi-0.115.11.tar.gz", hash = "sha256:cc81f03f688678b92600a65a5e618b93592c65005db37157147204d8924bf94f", size = 294441 }
|
sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/b3/5d/4d8bbb94f0dbc22732350c06965e40740f4a92ca560e90bb566f4f73af41/fastapi-0.115.11-py3-none-any.whl", hash = "sha256:32e1541b7b74602e4ef4a0260ecaf3aadf9d4f19590bba3e1bf2ac4666aa2c64", size = 94926 },
|
{ url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -876,7 +876,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "huggingface-hub"
|
name = "huggingface-hub"
|
||||||
version = "0.29.3"
|
version = "0.30.2"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "filelock" },
|
{ name = "filelock" },
|
||||||
@@ -887,9 +887,9 @@ dependencies = [
|
|||||||
{ name = "tqdm" },
|
{ name = "tqdm" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/e5/f9/851f34b02970e8143d41d4001b2d49e54ef113f273902103823b8bc95ada/huggingface_hub-0.29.3.tar.gz", hash = "sha256:64519a25716e0ba382ba2d3fb3ca082e7c7eb4a2fc634d200e8380006e0760e5", size = 390123 }
|
sdist = { url = "https://files.pythonhosted.org/packages/df/22/8eb91736b1dcb83d879bd49050a09df29a57cc5cd9f38e48a4b1c45ee890/huggingface_hub-0.30.2.tar.gz", hash = "sha256:9a7897c5b6fd9dad3168a794a8998d6378210f5b9688d0dfc180b1a228dc2466", size = 400868 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/40/0c/37d380846a2e5c9a3c6a73d26ffbcfdcad5fc3eacf42fdf7cff56f2af634/huggingface_hub-0.29.3-py3-none-any.whl", hash = "sha256:0b25710932ac649c08cdbefa6c6ccb8e88eef82927cacdb048efb726429453aa", size = 468997 },
|
{ url = "https://files.pythonhosted.org/packages/93/27/1fb384a841e9661faad1c31cbfa62864f59632e876df5d795234da51c395/huggingface_hub-0.30.2-py3-none-any.whl", hash = "sha256:68ff05969927058cfa41df4f2155d4bb48f5f54f719dd0390103eefa9b191e28", size = 481433 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1583,62 +1583,64 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "orjson"
|
name = "orjson"
|
||||||
version = "3.10.15"
|
version = "3.10.16"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/ae/f9/5dea21763eeff8c1590076918a446ea3d6140743e0e36f58f369928ed0f4/orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e", size = 5282482 }
|
sdist = { url = "https://files.pythonhosted.org/packages/98/c7/03913cc4332174071950acf5b0735463e3f63760c80585ef369270c2b372/orjson-3.10.16.tar.gz", hash = "sha256:d2aaa5c495e11d17b9b93205f5fa196737ee3202f000aaebf028dc9a73750f10", size = 5410415 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/52/09/e5ff18ad009e6f97eb7edc5f67ef98b3ce0c189da9c3eaca1f9587cd4c61/orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04", size = 249532 },
|
{ url = "https://files.pythonhosted.org/packages/9d/a6/22cb9b03baf167bc2d659c9e74d7580147f36e6a155e633801badfd5a74d/orjson-3.10.16-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4cb473b8e79154fa778fb56d2d73763d977be3dcc140587e07dbc545bbfc38f8", size = 249179 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bd/b8/a75883301fe332bd433d9b0ded7d2bb706ccac679602c3516984f8814fb5/orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8", size = 125229 },
|
{ url = "https://files.pythonhosted.org/packages/d7/ce/3e68cc33020a6ebd8f359b8628b69d2132cd84fea68155c33057e502ee51/orjson-3.10.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:622a8e85eeec1948690409a19ca1c7d9fd8ff116f4861d261e6ae2094fe59a00", size = 138510 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/83/4b/22f053e7a364cc9c685be203b1e40fc5f2b3f164a9b2284547504eec682e/orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8", size = 150148 },
|
{ url = "https://files.pythonhosted.org/packages/dc/12/63bee7764ce12052f7c1a1393ce7f26dc392c93081eb8754dd3dce9b7c6b/orjson-3.10.16-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c682d852d0ce77613993dc967e90e151899fe2d8e71c20e9be164080f468e370", size = 132373 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/63/64/1b54fc75ca328b57dd810541a4035fe48c12a161d466e3cf5b11a8c25649/orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814", size = 139748 },
|
{ url = "https://files.pythonhosted.org/packages/b3/d5/2998c2f319adcd572f2b03ba2083e8176863d1055d8d713683ddcf927b71/orjson-3.10.16-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c520ae736acd2e32df193bcff73491e64c936f3e44a2916b548da048a48b46b", size = 136774 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/5e/ff/ff0c5da781807bb0a5acd789d9a7fbcb57f7b0c6e1916595da1f5ce69f3c/orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164", size = 154559 },
|
{ url = "https://files.pythonhosted.org/packages/00/03/88c236ae307bd0604623204d4a835e15fbf9c75b8535c8f13ef45abd413f/orjson-3.10.16-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:134f87c76bfae00f2094d85cfab261b289b76d78c6da8a7a3b3c09d362fd1e06", size = 138030 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/4e/9a/11e2974383384ace8495810d4a2ebef5f55aacfc97b333b65e789c9d362d/orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf", size = 130349 },
|
{ url = "https://files.pythonhosted.org/packages/66/ba/3e256ddfeb364f98fd6ac65774844090d356158b2d1de8998db2bf984503/orjson-3.10.16-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b59afde79563e2cf37cfe62ee3b71c063fd5546c8e662d7fcfc2a3d5031a5c4c", size = 142677 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2d/c4/dd9583aea6aefee1b64d3aed13f51d2aadb014028bc929fe52936ec5091f/orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061", size = 138514 },
|
{ url = "https://files.pythonhosted.org/packages/2c/71/73a1214bd27baa2ea5184fff4aa6193a114dfb0aa5663dad48fe63e8cd29/orjson-3.10.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:113602f8241daaff05d6fad25bd481d54c42d8d72ef4c831bb3ab682a54d9e15", size = 132798 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/53/3e/dcf1729230654f5c5594fc752de1f43dcf67e055ac0d300c8cdb1309269a/orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3", size = 130940 },
|
{ url = "https://files.pythonhosted.org/packages/53/ac/0b2f41c0a1e8c095439d0fab3b33103cf41a39be8e6aa2c56298a6034259/orjson-3.10.16-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4fc0077d101f8fab4031e6554fc17b4c2ad8fdbc56ee64a727f3c95b379e31da", size = 135450 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/e8/2b/b9759fe704789937705c8a56a03f6c03e50dff7df87d65cba9a20fec5282/orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d", size = 414713 },
|
{ url = "https://files.pythonhosted.org/packages/d9/ca/7524c7b0bc815d426ca134dab54cad519802287b808a3846b047a5b2b7a3/orjson-3.10.16-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:9c6bf6ff180cd69e93f3f50380224218cfab79953a868ea3908430bcfaf9cb5e", size = 412356 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a7/6b/b9dfdbd4b6e20a59238319eb203ae07c3f6abf07eef909169b7a37ae3bba/orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182", size = 141028 },
|
{ url = "https://files.pythonhosted.org/packages/05/1d/3ae2367c255276bf16ff7e1b210dd0af18bc8da20c4e4295755fc7de1268/orjson-3.10.16-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5673eadfa952f95a7cd76418ff189df11b0a9c34b1995dff43a6fdbce5d63bf4", size = 152769 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7c/b5/40f5bbea619c7caf75eb4d652a9821875a8ed04acc45fe3d3ef054ca69fb/orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e", size = 129715 },
|
{ url = "https://files.pythonhosted.org/packages/d3/2d/8eb10b6b1d30bb69c35feb15e5ba5ac82466cf743d562e3e8047540efd2f/orjson-3.10.16-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5fe638a423d852b0ae1e1a79895851696cb0d9fa0946fdbfd5da5072d9bb9551", size = 137223 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/38/60/2272514061cbdf4d672edbca6e59c7e01cd1c706e881427d88f3c3e79761/orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab", size = 142473 },
|
{ url = "https://files.pythonhosted.org/packages/47/42/f043717930cb2de5fbebe47f308f101bed9ec2b3580b1f99c8284b2f5fe8/orjson-3.10.16-cp310-cp310-win32.whl", hash = "sha256:33af58f479b3c6435ab8f8b57999874b4b40c804c7a36b5cc6b54d8f28e1d3dd", size = 141734 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/11/5d/be1490ff7eafe7fef890eb4527cf5bcd8cfd6117f3efe42a3249ec847b60/orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806", size = 133564 },
|
{ url = "https://files.pythonhosted.org/packages/67/99/795ad7282b425b9fddcfb8a31bded5dcf84dba78ecb1e7ae716e84e794da/orjson-3.10.16-cp310-cp310-win_amd64.whl", hash = "sha256:0338356b3f56d71293c583350af26f053017071836b07e064e92819ecf1aa055", size = 133779 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7a/a2/21b25ce4a2c71dbb90948ee81bd7a42b4fbfc63162e57faf83157d5540ae/orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6", size = 249533 },
|
{ url = "https://files.pythonhosted.org/packages/97/29/43f91a5512b5d2535594438eb41c5357865fd5e64dec745d90a588820c75/orjson-3.10.16-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44fcbe1a1884f8bc9e2e863168b0f84230c3d634afe41c678637d2728ea8e739", size = 249180 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b2/85/2076fc12d8225698a51278009726750c9c65c846eda741e77e1761cfef33/orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef", size = 125230 },
|
{ url = "https://files.pythonhosted.org/packages/0c/36/2a72d55e266473c19a86d97b7363bb8bf558ab450f75205689a287d5ce61/orjson-3.10.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78177bf0a9d0192e0b34c3d78bcff7fe21d1b5d84aeb5ebdfe0dbe637b885225", size = 138510 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/06/df/a85a7955f11274191eccf559e8481b2be74a7c6d43075d0a9506aa80284d/orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334", size = 150148 },
|
{ url = "https://files.pythonhosted.org/packages/bb/ad/f86d6f55c1a68b57ff6ea7966bce5f4e5163f2e526ddb7db9fc3c2c8d1c4/orjson-3.10.16-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:12824073a010a754bb27330cad21d6e9b98374f497f391b8707752b96f72e741", size = 132373 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/37/b3/94c55625a29b8767c0eed194cb000b3787e3c23b4cdd13be17bae6ccbb4b/orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d", size = 139749 },
|
{ url = "https://files.pythonhosted.org/packages/5e/8b/d18f2711493a809f3082a88fda89342bc8e16767743b909cd3c34989fba3/orjson-3.10.16-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddd41007e56284e9867864aa2f29f3136bb1dd19a49ca43c0b4eda22a579cf53", size = 136773 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/53/ba/c608b1e719971e8ddac2379f290404c2e914cf8e976369bae3cad88768b1/orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0", size = 154558 },
|
{ url = "https://files.pythonhosted.org/packages/a1/dc/ce025f002f8e0749e3f057c4d773a4d4de32b7b4c1fc5a50b429e7532586/orjson-3.10.16-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0877c4d35de639645de83666458ca1f12560d9fa7aa9b25d8bb8f52f61627d14", size = 138029 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b2/c4/c1fb835bb23ad788a39aa9ebb8821d51b1c03588d9a9e4ca7de5b354fdd5/orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13", size = 130349 },
|
{ url = "https://files.pythonhosted.org/packages/0e/1b/cf9df85852b91160029d9f26014230366a2b4deb8cc51fabe68e250a8c1a/orjson-3.10.16-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9a09a539e9cc3beead3e7107093b4ac176d015bec64f811afb5965fce077a03c", size = 142677 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/78/14/bb2b48b26ab3c570b284eb2157d98c1ef331a8397f6c8bd983b270467f5c/orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5", size = 138513 },
|
{ url = "https://files.pythonhosted.org/packages/92/18/5b1e1e995bffad49dc4311a0bdfd874bc6f135fd20f0e1f671adc2c9910e/orjson-3.10.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31b98bc9b40610fec971d9a4d67bb2ed02eec0a8ae35f8ccd2086320c28526ca", size = 132800 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/4a/97/d5b353a5fe532e92c46467aa37e637f81af8468aa894cd77d2ec8a12f99e/orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b", size = 130942 },
|
{ url = "https://files.pythonhosted.org/packages/d6/eb/467f25b580e942fcca1344adef40633b7f05ac44a65a63fc913f9a805d58/orjson-3.10.16-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0ce243f5a8739f3a18830bc62dc2e05b69a7545bafd3e3249f86668b2bcd8e50", size = 135451 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b5/5d/a067bec55293cca48fea8b9928cfa84c623be0cce8141d47690e64a6ca12/orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399", size = 414717 },
|
{ url = "https://files.pythonhosted.org/packages/8d/4b/9d10888038975cb375982e9339d9495bac382d5c976c500b8d6f2c8e2e4e/orjson-3.10.16-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:64792c0025bae049b3074c6abe0cf06f23c8e9f5a445f4bab31dc5ca23dbf9e1", size = 412358 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/6f/9a/1485b8b05c6b4c4db172c438cf5db5dcfd10e72a9bc23c151a1137e763e0/orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388", size = 141033 },
|
{ url = "https://files.pythonhosted.org/packages/3b/e2/cfbcfcc4fbe619e0ca9bdbbfccb2d62b540bbfe41e0ee77d44a628594f59/orjson-3.10.16-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ea53f7e68eec718b8e17e942f7ca56c6bd43562eb19db3f22d90d75e13f0431d", size = 152772 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/f8/d2/fc67523656e43a0c7eaeae9007c8b02e86076b15d591e9be11554d3d3138/orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c", size = 129720 },
|
{ url = "https://files.pythonhosted.org/packages/b9/d6/627a1b00569be46173007c11dde3da4618c9bfe18409325b0e3e2a82fe29/orjson-3.10.16-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a741ba1a9488c92227711bde8c8c2b63d7d3816883268c808fbeada00400c164", size = 137225 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/79/42/f58c7bd4e5b54da2ce2ef0331a39ccbbaa7699b7f70206fbf06737c9ed7d/orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e", size = 142473 },
|
{ url = "https://files.pythonhosted.org/packages/0a/7b/a73c67b505021af845b9f05c7c848793258ea141fa2058b52dd9b067c2b4/orjson-3.10.16-cp311-cp311-win32.whl", hash = "sha256:c7ed2c61bb8226384c3fdf1fb01c51b47b03e3f4536c985078cccc2fd19f1619", size = 141733 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/00/f8/bb60a4644287a544ec81df1699d5b965776bc9848d9029d9f9b3402ac8bb/orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e", size = 133570 },
|
{ url = "https://files.pythonhosted.org/packages/f4/22/5e8217c48d68c0adbfb181e749d6a733761074e598b083c69a1383d18147/orjson-3.10.16-cp311-cp311-win_amd64.whl", hash = "sha256:cd67d8b3e0e56222a2e7b7f7da9031e30ecd1fe251c023340b9f12caca85ab60", size = 133784 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/66/85/22fe737188905a71afcc4bf7cc4c79cd7f5bbe9ed1fe0aac4ce4c33edc30/orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a", size = 249504 },
|
{ url = "https://files.pythonhosted.org/packages/5d/15/67ce9d4c959c83f112542222ea3b9209c1d424231d71d74c4890ea0acd2b/orjson-3.10.16-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6d3444abbfa71ba21bb042caa4b062535b122248259fdb9deea567969140abca", size = 249325 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/48/b7/2622b29f3afebe938a0a9037e184660379797d5fd5234e5998345d7a5b43/orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d", size = 125080 },
|
{ url = "https://files.pythonhosted.org/packages/da/2c/1426b06f30a1b9ada74b6f512c1ddf9d2760f53f61cdb59efeb9ad342133/orjson-3.10.16-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:30245c08d818fdcaa48b7d5b81499b8cae09acabb216fe61ca619876b128e184", size = 133621 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ce/8f/0b72a48f4403d0b88b2a41450c535b3e8989e8a2d7800659a967efc7c115/orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0", size = 150121 },
|
{ url = "https://files.pythonhosted.org/packages/9e/88/18d26130954bc73bee3be10f95371ea1dfb8679e0e2c46b0f6d8c6289402/orjson-3.10.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0ba1d0baa71bf7579a4ccdcf503e6f3098ef9542106a0eca82395898c8a500a", size = 138270 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/06/ec/acb1a20cd49edb2000be5a0404cd43e3c8aad219f376ac8c60b870518c03/orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4", size = 139796 },
|
{ url = "https://files.pythonhosted.org/packages/4f/f9/6d8b64fcd58fae072e80ee7981be8ba0d7c26ace954e5cd1d027fc80518f/orjson-3.10.16-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb0beefa5ef3af8845f3a69ff2a4aa62529b5acec1cfe5f8a6b4141033fd46ef", size = 132346 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/33/e1/f7840a2ea852114b23a52a1c0b2bea0a1ea22236efbcdb876402d799c423/orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767", size = 154636 },
|
{ url = "https://files.pythonhosted.org/packages/16/3f/2513fd5bc786f40cd12af569c23cae6381aeddbefeed2a98f0a666eb5d0d/orjson-3.10.16-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6daa0e1c9bf2e030e93c98394de94506f2a4d12e1e9dadd7c53d5e44d0f9628e", size = 136845 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fa/da/31543337febd043b8fa80a3b67de627669b88c7b128d9ad4cc2ece005b7a/orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41", size = 130621 },
|
{ url = "https://files.pythonhosted.org/packages/6d/42/b0e7b36720f5ab722b48e8ccf06514d4f769358dd73c51abd8728ef58d0b/orjson-3.10.16-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9da9019afb21e02410ef600e56666652b73eb3e4d213a0ec919ff391a7dd52aa", size = 138078 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ed/78/66115dc9afbc22496530d2139f2f4455698be444c7c2475cb48f657cefc9/orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514", size = 138516 },
|
{ url = "https://files.pythonhosted.org/packages/a3/a8/d220afb8a439604be74fc755dbc740bded5ed14745ca536b304ed32eb18a/orjson-3.10.16-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:daeb3a1ee17b69981d3aae30c3b4e786b0f8c9e6c71f2b48f1aef934f63f38f4", size = 142712 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/22/84/cd4f5fb5427ffcf823140957a47503076184cb1ce15bcc1165125c26c46c/orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17", size = 130762 },
|
{ url = "https://files.pythonhosted.org/packages/8c/88/7e41e9883c00f84f92fe357a8371edae816d9d7ef39c67b5106960c20389/orjson-3.10.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80fed80eaf0e20a31942ae5d0728849862446512769692474be5e6b73123a23b", size = 133136 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/93/1f/67596b711ba9f56dd75d73b60089c5c92057f1130bb3a25a0f53fb9a583b/orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b", size = 414700 },
|
{ url = "https://files.pythonhosted.org/packages/e9/ca/61116095307ad0be828ea26093febaf59e38596d84a9c8d765c3c5e4934f/orjson-3.10.16-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:73390ed838f03764540a7bdc4071fe0123914c2cc02fb6abf35182d5fd1b7a42", size = 135258 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7c/0c/6a3b3271b46443d90efb713c3e4fe83fa8cd71cda0d11a0f69a03f437c6e/orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7", size = 141077 },
|
{ url = "https://files.pythonhosted.org/packages/dc/1b/09493cf7d801505f094c9295f79c98c1e0af2ac01c7ed8d25b30fcb19ada/orjson-3.10.16-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a22bba012a0c94ec02a7768953020ab0d3e2b884760f859176343a36c01adf87", size = 412326 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/3b/9b/33c58e0bfc788995eccd0d525ecd6b84b40d7ed182dd0751cd4c1322ac62/orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a", size = 129898 },
|
{ url = "https://files.pythonhosted.org/packages/ea/02/125d7bbd7f7a500190ddc8ae5d2d3c39d87ed3ed28f5b37cfe76962c678d/orjson-3.10.16-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5385bbfdbc90ff5b2635b7e6bebf259652db00a92b5e3c45b616df75b9058e88", size = 152800 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/01/c1/d577ecd2e9fa393366a1ea0a9267f6510d86e6c4bb1cdfb9877104cac44c/orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665", size = 142566 },
|
{ url = "https://files.pythonhosted.org/packages/f9/09/7658a9e3e793d5b3b00598023e0fb6935d0e7bbb8ff72311c5415a8ce677/orjson-3.10.16-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:02c6279016346e774dd92625d46c6c40db687b8a0d685aadb91e26e46cc33e1e", size = 137516 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ed/eb/a85317ee1732d1034b92d56f89f1de4d7bf7904f5c8fb9dcdd5b1c83917f/orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa", size = 133732 },
|
{ url = "https://files.pythonhosted.org/packages/29/87/32b7a4831e909d347278101a48d4cf9f3f25901b2295e7709df1651f65a1/orjson-3.10.16-cp312-cp312-win32.whl", hash = "sha256:7ca55097a11426db80f79378e873a8c51f4dde9ffc22de44850f9696b7eb0e8c", size = 141759 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/06/10/fe7d60b8da538e8d3d3721f08c1b7bff0491e8fa4dd3bf11a17e34f4730e/orjson-3.10.15-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6", size = 249399 },
|
{ url = "https://files.pythonhosted.org/packages/35/ce/81a27e7b439b807bd393585271364cdddf50dc281fc57c4feef7ccb186a6/orjson-3.10.16-cp312-cp312-win_amd64.whl", hash = "sha256:86d127efdd3f9bf5f04809b70faca1e6836556ea3cc46e662b44dab3fe71f3d6", size = 133944 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/6b/83/52c356fd3a61abd829ae7e4366a6fe8e8863c825a60d7ac5156067516edf/orjson-3.10.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a", size = 125044 },
|
{ url = "https://files.pythonhosted.org/packages/87/b9/ff6aa28b8c86af9526160905593a2fe8d004ac7a5e592ee0b0ff71017511/orjson-3.10.16-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:148a97f7de811ba14bc6dbc4a433e0341ffd2cc285065199fb5f6a98013744bd", size = 249289 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/55/b2/d06d5901408e7ded1a74c7c20d70e3a127057a6d21355f50c90c0f337913/orjson-3.10.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9", size = 150066 },
|
{ url = "https://files.pythonhosted.org/packages/6c/81/6d92a586149b52684ab8fd70f3623c91d0e6a692f30fd8c728916ab2263c/orjson-3.10.16-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:1d960c1bf0e734ea36d0adc880076de3846aaec45ffad29b78c7f1b7962516b8", size = 133640 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/75/8c/60c3106e08dc593a861755781c7c675a566445cc39558677d505878d879f/orjson-3.10.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0", size = 139737 },
|
{ url = "https://files.pythonhosted.org/packages/c2/88/b72443f4793d2e16039ab85d0026677932b15ab968595fb7149750d74134/orjson-3.10.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a318cd184d1269f68634464b12871386808dc8b7c27de8565234d25975a7a137", size = 138286 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/6a/8c/ae00d7d0ab8a4490b1efeb01ad4ab2f1982e69cc82490bf8093407718ff5/orjson-3.10.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307", size = 154804 },
|
{ url = "https://files.pythonhosted.org/packages/c3/3c/72a22d4b28c076c4016d5a52bd644a8e4d849d3bb0373d9e377f9e3b2250/orjson-3.10.16-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df23f8df3ef9223d1d6748bea63fca55aae7da30a875700809c500a05975522b", size = 132307 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/22/86/65dc69bd88b6dd254535310e97bc518aa50a39ef9c5a2a5d518e7a223710/orjson-3.10.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e", size = 130583 },
|
{ url = "https://files.pythonhosted.org/packages/8a/a2/f1259561bdb6ad7061ff1b95dab082fe32758c4bc143ba8d3d70831f0a06/orjson-3.10.16-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b94dda8dd6d1378f1037d7f3f6b21db769ef911c4567cbaa962bb6dc5021cf90", size = 136739 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bb/00/6fe01ededb05d52be42fabb13d93a36e51f1fd9be173bd95707d11a8a860/orjson-3.10.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7", size = 138465 },
|
{ url = "https://files.pythonhosted.org/packages/3d/af/c7583c4b34f33d8b8b90cfaab010ff18dd64e7074cc1e117a5f1eff20dcf/orjson-3.10.16-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f12970a26666a8775346003fd94347d03ccb98ab8aa063036818381acf5f523e", size = 138076 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/db/2f/4cc151c4b471b0cdc8cb29d3eadbce5007eb0475d26fa26ed123dca93b33/orjson-3.10.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8", size = 130742 },
|
{ url = "https://files.pythonhosted.org/packages/d7/59/d7fc7fbdd3d4a64c2eae4fc7341a5aa39cf9549bd5e2d7f6d3c07f8b715b/orjson-3.10.16-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15a1431a245d856bd56e4d29ea0023eb4d2c8f71efe914beb3dee8ab3f0cd7fb", size = 142643 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9f/13/8a6109e4b477c518498ca37963d9c0eb1508b259725553fb53d53b20e2ea/orjson-3.10.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca", size = 414669 },
|
{ url = "https://files.pythonhosted.org/packages/92/0e/3bd8f2197d27601f16b4464ae948826da2bcf128af31230a9dbbad7ceb57/orjson-3.10.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c83655cfc247f399a222567d146524674a7b217af7ef8289c0ff53cfe8db09f0", size = 133168 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/22/7b/1d229d6d24644ed4d0a803de1b0e2df832032d5beda7346831c78191b5b2/orjson-3.10.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561", size = 141043 },
|
{ url = "https://files.pythonhosted.org/packages/af/a8/351fd87b664b02f899f9144d2c3dc848b33ac04a5df05234cbfb9e2a7540/orjson-3.10.16-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fa59ae64cb6ddde8f09bdbf7baf933c4cd05734ad84dcf4e43b887eb24e37652", size = 135271 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/cc/d3/6dc91156cf12ed86bed383bcb942d84d23304a1e57b7ab030bf60ea130d6/orjson-3.10.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825", size = 129826 },
|
{ url = "https://files.pythonhosted.org/packages/ba/b0/a6d42a7d412d867c60c0337d95123517dd5a9370deea705ea1be0f89389e/orjson-3.10.16-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ca5426e5aacc2e9507d341bc169d8af9c3cbe88f4cd4c1cf2f87e8564730eb56", size = 412444 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b3/38/c47c25b86f6996f1343be721b6ea4367bc1c8bc0fc3f6bbcd995d18cb19d/orjson-3.10.15-cp313-cp313-win32.whl", hash = "sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890", size = 142542 },
|
{ url = "https://files.pythonhosted.org/packages/79/ec/7572cd4e20863f60996f3f10bc0a6da64a6fd9c35954189a914cec0b7377/orjson-3.10.16-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6fd5da4edf98a400946cd3a195680de56f1e7575109b9acb9493331047157430", size = 152737 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/27/f1/1d7ec15b20f8ce9300bc850de1e059132b88990e46cd0ccac29cbf11e4f9/orjson-3.10.15-cp313-cp313-win_amd64.whl", hash = "sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf", size = 133444 },
|
{ url = "https://files.pythonhosted.org/packages/a9/19/ceb9e8fed5403b2e76a8ac15f581b9d25780a3be3c9b3aa54b7777a210d5/orjson-3.10.16-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:980ecc7a53e567169282a5e0ff078393bac78320d44238da4e246d71a4e0e8f5", size = 137482 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/1b/78/a78bb810f3786579dbbbd94768284cbe8f2fd65167cd7020260679665c17/orjson-3.10.16-cp313-cp313-win32.whl", hash = "sha256:28f79944dd006ac540a6465ebd5f8f45dfdf0948ff998eac7a908275b4c1add6", size = 141714 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/81/9c/b66ce9245ff319df2c3278acd351a3f6145ef34b4a2d7f4b0f739368370f/orjson-3.10.16-cp313-cp313-win_amd64.whl", hash = "sha256:fe0a145e96d51971407cb8ba947e63ead2aa915db59d6631a355f5f2150b56b7", size = 133954 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1787,91 +1789,104 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic"
|
name = "pydantic"
|
||||||
version = "2.10.6"
|
version = "2.11.3"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "annotated-types" },
|
{ name = "annotated-types" },
|
||||||
{ name = "pydantic-core" },
|
{ name = "pydantic-core" },
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
|
{ name = "typing-inspection" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 }
|
sdist = { url = "https://files.pythonhosted.org/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3", size = 785513 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 },
|
{ url = "https://files.pythonhosted.org/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f", size = 443591 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic-core"
|
name = "pydantic-core"
|
||||||
version = "2.27.2"
|
version = "2.33.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "typing-extensions" },
|
{ name = "typing-extensions" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 }
|
sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 },
|
{ url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 },
|
{ url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 },
|
{ url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 },
|
{ url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 },
|
{ url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 },
|
{ url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 },
|
{ url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 },
|
{ url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 },
|
{ url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 },
|
{ url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 },
|
{ url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 },
|
{ url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 },
|
{ url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c2/89/f3450af9d09d44eea1f2c369f49e8f181d742f28220f88cc4dfaae91ea6e/pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc", size = 1893421 },
|
{ url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7", size = 1814998 },
|
{ url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a6/3c/724039e0d848fd69dbf5806894e26479577316c6f0f112bacaf67aa889ac/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15", size = 1826167 },
|
{ url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2b/5b/1b29e8c1fb5f3199a9a57c1452004ff39f494bbe9bdbe9a81e18172e40d3/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306", size = 1865071 },
|
{ url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/89/6c/3985203863d76bb7d7266e36970d7e3b6385148c18a68cc8915fd8c84d57/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99", size = 2036244 },
|
{ url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/0e/41/f15316858a246b5d723f7d7f599f79e37493b2e84bfc789e58d88c209f8a/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459", size = 2737470 },
|
{ url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048", size = 1992291 },
|
{ url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bf/73/42c3742a391eccbeab39f15213ecda3104ae8682ba3c0c28069fbcb8c10d/pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d", size = 1994613 },
|
{ url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/94/7a/941e89096d1175d56f59340f3a8ebaf20762fef222c298ea96d36a6328c5/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b", size = 2002355 },
|
{ url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/6e/95/2359937a73d49e336a5a19848713555605d4d8d6940c3ec6c6c0ca4dcf25/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474", size = 2126661 },
|
{ url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/2b/4c/ca02b7bdb6012a1adef21a50625b14f43ed4d11f1fc237f9d7490aa5078c/pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6", size = 2153261 },
|
{ url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361 },
|
{ url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484 },
|
{ url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102 },
|
{ url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 },
|
{ url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 },
|
{ url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 },
|
{ url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 },
|
{ url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 },
|
{ url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 },
|
{ url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 },
|
{ url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 },
|
{ url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 },
|
{ url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 },
|
{ url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 },
|
{ url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 },
|
{ url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 },
|
{ url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 },
|
{ url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 },
|
{ url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 },
|
{ url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 },
|
{ url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 },
|
{ url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 },
|
{ url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 },
|
{ url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 },
|
{ url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 },
|
{ url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 },
|
{ url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 },
|
{ url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 },
|
{ url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 },
|
{ url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 },
|
{ url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 },
|
{ url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 },
|
{ url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 },
|
{ url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 },
|
{ url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 },
|
{ url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 },
|
{ url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 },
|
{ url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 },
|
{ url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 },
|
{ url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 },
|
{ url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674 },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1933,27 +1948,27 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest-asyncio"
|
name = "pytest-asyncio"
|
||||||
version = "0.25.3"
|
version = "0.26.0"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "pytest" },
|
{ name = "pytest" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/f2/a8/ecbc8ede70921dd2f544ab1cadd3ff3bf842af27f87bbdea774c7baa1d38/pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a", size = 54239 }
|
sdist = { url = "https://files.pythonhosted.org/packages/8e/c4/453c52c659521066969523e87d85d54139bbd17b78f09532fb8eb8cdb58e/pytest_asyncio-0.26.0.tar.gz", hash = "sha256:c4df2a697648241ff39e7f0e4a73050b03f123f760673956cf0d72a4990e312f", size = 54156 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/67/17/3493c5624e48fd97156ebaec380dcaafee9506d7e2c46218ceebbb57d7de/pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3", size = 19467 },
|
{ url = "https://files.pythonhosted.org/packages/20/7f/338843f449ace853647ace35870874f69a764d251872ed1b4de9f234822c/pytest_asyncio-0.26.0-py3-none-any.whl", hash = "sha256:7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0", size = 19694 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest-cov"
|
name = "pytest-cov"
|
||||||
version = "6.0.0"
|
version = "6.1.1"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "coverage", extra = ["toml"] },
|
{ name = "coverage", extra = ["toml"] },
|
||||||
{ name = "pytest" },
|
{ name = "pytest" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", size = 66945 }
|
sdist = { url = "https://files.pythonhosted.org/packages/25/69/5f1e57f6c5a39f81411b550027bf72842c4567ff5fd572bed1edc9e4b5d9/pytest_cov-6.1.1.tar.gz", hash = "sha256:46935f7aaefba760e716c2ebfbe1c216240b9592966e7da99ea8292d4d3e2a0a", size = 66857 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 },
|
{ url = "https://files.pythonhosted.org/packages/28/d0/def53b4a790cfb21483016430ed828f64830dd981ebe1089971cd10cab25/pytest_cov-6.1.1-py3-none-any.whl", hash = "sha256:bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde", size = 23841 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2210,27 +2225,27 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.11.2"
|
version = "0.11.4"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/90/61/fb87430f040e4e577e784e325351186976516faef17d6fcd921fe28edfd7/ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94", size = 3857511 }
|
sdist = { url = "https://files.pythonhosted.org/packages/e8/5b/3ae20f89777115944e89c2d8c2e795dcc5b9e04052f76d5347e35e0da66e/ruff-0.11.4.tar.gz", hash = "sha256:f45bd2fb1a56a5a85fae3b95add03fb185a0b30cf47f5edc92aa0355ca1d7407", size = 3933063 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/62/99/102578506f0f5fa29fd7e0df0a273864f79af044757aef73d1cae0afe6ad/ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477", size = 10113146 },
|
{ url = "https://files.pythonhosted.org/packages/9c/db/baee59ac88f57527fcbaad3a7b309994e42329c6bc4d4d2b681a3d7b5426/ruff-0.11.4-py3-none-linux_armv6l.whl", hash = "sha256:d9f4a761ecbde448a2d3e12fb398647c7f0bf526dbc354a643ec505965824ed2", size = 10106493 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/74/ad/5cd4ba58ab602a579997a8494b96f10f316e874d7c435bcc1a92e6da1b12/ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272", size = 10867092 },
|
{ url = "https://files.pythonhosted.org/packages/c1/d6/9a0962cbb347f4ff98b33d699bf1193ff04ca93bed4b4222fd881b502154/ruff-0.11.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8c1747d903447d45ca3d40c794d1a56458c51e5cc1bc77b7b64bd2cf0b1626cc", size = 10876382 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/fc/3e/d3f13619e1d152c7b600a38c1a035e833e794c6625c9a6cea6f63dbf3af4/ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9", size = 10224082 },
|
{ url = "https://files.pythonhosted.org/packages/3a/8f/62bab0c7d7e1ae3707b69b157701b41c1ccab8f83e8501734d12ea8a839f/ruff-0.11.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:51a6494209cacca79e121e9b244dc30d3414dac8cc5afb93f852173a2ecfc906", size = 10237050 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/90/06/f77b3d790d24a93f38e3806216f263974909888fd1e826717c3ec956bbcd/ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb", size = 10394818 },
|
{ url = "https://files.pythonhosted.org/packages/09/96/e296965ae9705af19c265d4d441958ed65c0c58fc4ec340c27cc9d2a1f5b/ruff-0.11.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f171605f65f4fc49c87f41b456e882cd0c89e4ac9d58e149a2b07930e1d466f", size = 10424984 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/99/7f/78aa431d3ddebfc2418cd95b786642557ba8b3cb578c075239da9ce97ff9/ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3", size = 9952251 },
|
{ url = "https://files.pythonhosted.org/packages/e5/56/644595eb57d855afed6e54b852e2df8cd5ca94c78043b2f29bdfb29882d5/ruff-0.11.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebf99ea9af918878e6ce42098981fc8c1db3850fef2f1ada69fb1dcdb0f8e79e", size = 9957438 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/30/3e/f11186d1ddfaca438c3bbff73c6a2fdb5b60e6450cc466129c694b0ab7a2/ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74", size = 11563566 },
|
{ url = "https://files.pythonhosted.org/packages/86/83/9d3f3bed0118aef3e871ded9e5687fb8c5776bde233427fd9ce0a45db2d4/ruff-0.11.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edad2eac42279df12e176564a23fc6f4aaeeb09abba840627780b1bb11a9d223", size = 11547282 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/22/6c/6ca91befbc0a6539ee133d9a9ce60b1a354db12c3c5d11cfdbf77140f851/ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608", size = 12208721 },
|
{ url = "https://files.pythonhosted.org/packages/40/e6/0c6e4f5ae72fac5ccb44d72c0111f294a5c2c8cc5024afcb38e6bda5f4b3/ruff-0.11.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f103a848be9ff379fc19b5d656c1f911d0a0b4e3e0424f9532ececf319a4296e", size = 12182020 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/19/b0/24516a3b850d55b17c03fc399b681c6a549d06ce665915721dc5d6458a5c/ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f", size = 11662274 },
|
{ url = "https://files.pythonhosted.org/packages/b5/92/4aed0e460aeb1df5ea0c2fbe8d04f9725cccdb25d8da09a0d3f5b8764bf8/ruff-0.11.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:193e6fac6eb60cc97b9f728e953c21cc38a20077ed64f912e9d62b97487f3f2d", size = 11679154 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d7/65/76be06d28ecb7c6070280cef2bcb20c98fbf99ff60b1c57d2fb9b8771348/ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147", size = 13792284 },
|
{ url = "https://files.pythonhosted.org/packages/1b/d3/7316aa2609f2c592038e2543483eafbc62a0e1a6a6965178e284808c095c/ruff-0.11.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7af4e5f69b7c138be8dcffa5b4a061bf6ba6a3301f632a6bce25d45daff9bc99", size = 13905985 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/ce/d2/4ceed7147e05852876f3b5f3fdc23f878ce2b7e0b90dd6e698bda3d20787/ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b", size = 11327861 },
|
{ url = "https://files.pythonhosted.org/packages/63/80/734d3d17546e47ff99871f44ea7540ad2bbd7a480ed197fe8a1c8a261075/ruff-0.11.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:126b1bf13154aa18ae2d6c3c5efe144ec14b97c60844cfa6eb960c2a05188222", size = 11348343 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/c4/78/4935ecba13706fd60ebe0e3dc50371f2bdc3d9bc80e68adc32ff93914534/ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9", size = 10276560 },
|
{ url = "https://files.pythonhosted.org/packages/04/7b/70fc7f09a0161dce9613a4671d198f609e653d6f4ff9eee14d64c4c240fb/ruff-0.11.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8806daaf9dfa881a0ed603f8a0e364e4f11b6ed461b56cae2b1c0cab0645304", size = 10308487 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/81/7f/1b2435c3f5245d410bb5dc80f13ec796454c21fbda12b77d7588d5cf4e29/ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab", size = 9945091 },
|
{ url = "https://files.pythonhosted.org/packages/1a/22/1cdd62dabd678d75842bf4944fd889cf794dc9e58c18cc547f9eb28f95ed/ruff-0.11.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5d94bb1cc2fc94a769b0eb975344f1b1f3d294da1da9ddbb5a77665feb3a3019", size = 9929091 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/39/c4/692284c07e6bf2b31d82bb8c32f8840f9d0627d92983edaac991a2b66c0a/ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630", size = 10977133 },
|
{ url = "https://files.pythonhosted.org/packages/9f/20/40e0563506332313148e783bbc1e4276d657962cc370657b2fff20e6e058/ruff-0.11.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:995071203d0fe2183fc7a268766fd7603afb9996785f086b0d76edee8755c896", size = 10924659 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/94/cf/8ab81cb7dd7a3b0a3960c2769825038f3adcd75faf46dd6376086df8b128/ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f", size = 11378514 },
|
{ url = "https://files.pythonhosted.org/packages/b5/41/eef9b7aac8819d9e942f617f9db296f13d2c4576806d604aba8db5a753f1/ruff-0.11.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7a37ca937e307ea18156e775a6ac6e02f34b99e8c23fe63c1996185a4efe0751", size = 11428160 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d9/3a/a647fa4f316482dacf2fd68e8a386327a33d6eabd8eb2f9a0c3d291ec549/ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc", size = 10319835 },
|
{ url = "https://files.pythonhosted.org/packages/ff/61/c488943414fb2b8754c02f3879de003e26efdd20f38167ded3fb3fc1cda3/ruff-0.11.4-py3-none-win32.whl", hash = "sha256:0e9365a7dff9b93af933dab8aebce53b72d8f815e131796268709890b4a83270", size = 10311496 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/86/54/3c12d3af58012a5e2cd7ebdbe9983f4834af3f8cbea0e8a8c74fa1e23b2b/ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080", size = 11373713 },
|
{ url = "https://files.pythonhosted.org/packages/b6/2b/2a1c8deb5f5dfa3871eb7daa41492c4d2b2824a74d2b38e788617612a66d/ruff-0.11.4-py3-none-win_amd64.whl", hash = "sha256:5a9fa1c69c7815e39fcfb3646bbfd7f528fa8e2d4bebdcf4c2bd0fa037a255fb", size = 11399146 },
|
||||||
{ url = "https://files.pythonhosted.org/packages/d6/d4/dd813703af8a1e2ac33bf3feb27e8a5ad514c9f219df80c64d69807e7f71/ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4", size = 10441990 },
|
{ url = "https://files.pythonhosted.org/packages/4f/03/3aec4846226d54a37822e4c7ea39489e4abd6f88388fba74e3d4abe77300/ruff-0.11.4-py3-none-win_arm64.whl", hash = "sha256:d435db6b9b93d02934cf61ef332e66af82da6d8c69aefdea5994c89997c7a0fc", size = 10450306 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2444,23 +2459,23 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-pyyaml"
|
name = "types-pyyaml"
|
||||||
version = "6.0.12.20241230"
|
version = "6.0.12.20250402"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/9a/f9/4d566925bcf9396136c0a2e5dc7e230ff08d86fa011a69888dd184469d80/types_pyyaml-6.0.12.20241230.tar.gz", hash = "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c", size = 17078 }
|
sdist = { url = "https://files.pythonhosted.org/packages/2d/68/609eed7402f87c9874af39d35942744e39646d1ea9011765ec87b01b2a3c/types_pyyaml-6.0.12.20250402.tar.gz", hash = "sha256:d7c13c3e6d335b6af4b0122a01ff1d270aba84ab96d1a1a1063ecba3e13ec075", size = 17282 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/e8/c1/48474fbead512b70ccdb4f81ba5eb4a58f69d100ba19f17c92c0c4f50ae6/types_PyYAML-6.0.12.20241230-py3-none-any.whl", hash = "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6", size = 20029 },
|
{ url = "https://files.pythonhosted.org/packages/ed/56/1fe61db05685fbb512c07ea9323f06ea727125951f1eb4dff110b3311da3/types_pyyaml-6.0.12.20250402-py3-none-any.whl", hash = "sha256:652348fa9e7a203d4b0d21066dfb00760d3cbd5a15ebb7cf8d33c88a49546681", size = 20329 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-requests"
|
name = "types-requests"
|
||||||
version = "2.32.0.20250306"
|
version = "2.32.0.20250328"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "urllib3" },
|
{ name = "urllib3" },
|
||||||
]
|
]
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/09/1a/beaeff79ef9efd186566ba5f0d95b44ae21f6d31e9413bcfbef3489b6ae3/types_requests-2.32.0.20250306.tar.gz", hash = "sha256:0962352694ec5b2f95fda877ee60a159abdf84a0fc6fdace599f20acb41a03d1", size = 23012 }
|
sdist = { url = "https://files.pythonhosted.org/packages/00/7d/eb174f74e3f5634eaacb38031bbe467dfe2e545bc255e5c90096ec46bc46/types_requests-2.32.0.20250328.tar.gz", hash = "sha256:c9e67228ea103bd811c96984fac36ed2ae8da87a36a633964a21f199d60baf32", size = 22995 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/99/26/645d89f56004aa0ba3b96fec27793e3c7e62b40982ee069e52568922b6db/types_requests-2.32.0.20250306-py3-none-any.whl", hash = "sha256:25f2cbb5c8710b2022f8bbee7b2b66f319ef14aeea2f35d80f18c9dbf3b60a0b", size = 20673 },
|
{ url = "https://files.pythonhosted.org/packages/cc/15/3700282a9d4ea3b37044264d3e4d1b1f0095a4ebf860a99914fd544e3be3/types_requests-2.32.0.20250328-py3-none-any.whl", hash = "sha256:72ff80f84b15eb3aa7a8e2625fffb6a93f2ad5a0c20215fc1dcfa61117bcb2a2", size = 20663 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2477,20 +2492,20 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-simplejson"
|
name = "types-simplejson"
|
||||||
version = "3.20.0.20250318"
|
version = "3.20.0.20250326"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/b7/bb/c19c0863ce03b950a2e6319e668a3e3f51c977368d6a1da529893e794162/types_simplejson-3.20.0.20250318.tar.gz", hash = "sha256:5ada2caa2f76826a90b97985f7b0caf55088a23ed4eb9c39fc1f5cb00b985e09", size = 9966 }
|
sdist = { url = "https://files.pythonhosted.org/packages/af/14/e26fc55e1ea56f9ea470917d3e2f8240e6d043ca914181021d04115ae0f7/types_simplejson-3.20.0.20250326.tar.gz", hash = "sha256:b2689bc91e0e672d7a5a947b4cb546b76ae7ddc2899c6678e72a10bf96cd97d2", size = 10489 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/02/5a/adb04301014b18324ec88d5fcfe0ffc262ffc68c443cfe79e32b6cc68a35/types_simplejson-3.20.0.20250318-py3-none-any.whl", hash = "sha256:e8c9cdb06b566b6ca1c7bf3d4c97fbd69a6f6a5aea760ef127f31e638a094c26", size = 10336 },
|
{ url = "https://files.pythonhosted.org/packages/76/bf/d3f3a5ba47fd18115e8446d39f025b85905d2008677c29ee4d03b4cddd57/types_simplejson-3.20.0.20250326-py3-none-any.whl", hash = "sha256:db1ddea7b8f7623b27a137578f22fc6c618db8c83ccfb1828ca0d2f0ec11efa7", size = 10462 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "types-ujson"
|
name = "types-ujson"
|
||||||
version = "5.10.0.20240515"
|
version = "5.10.0.20250326"
|
||||||
source = { registry = "https://pypi.org/simple" }
|
source = { registry = "https://pypi.org/simple" }
|
||||||
sdist = { url = "https://files.pythonhosted.org/packages/12/49/abb4bcb9f2258f785edbf236b517c3e7ba8a503a8cbce6b5895930586cc0/types-ujson-5.10.0.20240515.tar.gz", hash = "sha256:ceae7127f0dafe4af5dd0ecf98ee13e9d75951ef963b5c5a9b7ea92e0d71f0d7", size = 3571 }
|
sdist = { url = "https://files.pythonhosted.org/packages/cc/5c/c974451c4babdb4ae3588925487edde492d59a8403010b4642a554d09954/types_ujson-5.10.0.20250326.tar.gz", hash = "sha256:5469e05f2c31ecb3c4c0267cc8fe41bcd116826fbb4ded69801a645c687dd014", size = 8340 }
|
||||||
wheels = [
|
wheels = [
|
||||||
{ url = "https://files.pythonhosted.org/packages/3f/1f/9d018cee3d09ab44a5211f0b5ed9b0422ad9a8c226bf3967f5884498d8f0/types_ujson-5.10.0.20240515-py3-none-any.whl", hash = "sha256:02bafc36b3a93d2511757a64ff88bd505e0a57fba08183a9150fbcfcb2015310", size = 2757 },
|
{ url = "https://files.pythonhosted.org/packages/3e/c9/8a73a5f8fa6e70fc02eed506d5ac0ae9ceafbd2b8c9ad34a7de0f29900d6/types_ujson-5.10.0.20250326-py3-none-any.whl", hash = "sha256:acc0913f569def62ef6a892c8a47703f65d05669a3252391a97765cf207dca5b", size = 7644 },
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2502,6 +2517,18 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 },
|
{ url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "typing-inspection"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "typing-extensions" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "urllib3"
|
name = "urllib3"
|
||||||
version = "2.1.0"
|
version = "2.1.0"
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ analyzer:
|
|||||||
exclude:
|
exclude:
|
||||||
- openapi/**
|
- openapi/**
|
||||||
- lib/generated_plugin_registrant.dart
|
- lib/generated_plugin_registrant.dart
|
||||||
|
- lib/**/*.g.dart
|
||||||
|
- lib/**/*.drift.dart
|
||||||
|
|
||||||
plugins:
|
plugins:
|
||||||
- custom_lint
|
- custom_lint
|
||||||
@@ -59,6 +61,7 @@ custom_lint:
|
|||||||
# refactor to make the providers and services testable
|
# refactor to make the providers and services testable
|
||||||
- lib/providers/backup/{backup,manual_upload}.provider.dart # uses only PMProgressHandler
|
- lib/providers/backup/{backup,manual_upload}.provider.dart # uses only PMProgressHandler
|
||||||
- lib/services/{background,backup}.service.dart # uses only PMProgressHandler
|
- lib/services/{background,backup}.service.dart # uses only PMProgressHandler
|
||||||
|
- test/**.dart
|
||||||
- import_rule_isar:
|
- import_rule_isar:
|
||||||
message: isar must only be used in entities and repositories
|
message: isar must only be used in entities and repositories
|
||||||
restrict: package:isar
|
restrict: package:isar
|
||||||
@@ -148,7 +151,6 @@ dart_code_metrics:
|
|||||||
- avoid-unnecessary-continue
|
- avoid-unnecessary-continue
|
||||||
- avoid-unnecessary-nullable-return-type: false
|
- avoid-unnecessary-nullable-return-type: false
|
||||||
- binary-expression-operand-order
|
- binary-expression-operand-order
|
||||||
- move-variable-outside-iteration
|
|
||||||
- pattern-fields-ordering
|
- pattern-fields-ordering
|
||||||
- prefer-abstract-final-static-class
|
- prefer-abstract-final-static-class
|
||||||
- prefer-commenting-future-delayed
|
- prefer-commenting-future-delayed
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
android:maxSdkVersion="32" />
|
android:maxSdkVersion="32" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
android:maxSdkVersion="32" />
|
android:maxSdkVersion="32" />
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.MANAGE_MEDIA" />
|
<uses-permission android:name="android.permission.MANAGE_MEDIA" />
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||||
|
|||||||
@@ -1,25 +1,40 @@
|
|||||||
package app.alextran.immich
|
package app.alextran.immich
|
||||||
|
|
||||||
|
import android.content.ContentResolver
|
||||||
|
import android.content.ContentUris
|
||||||
|
import android.content.ContentValues
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.os.Environment
|
||||||
|
import android.provider.MediaStore
|
||||||
|
import android.provider.Settings
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
||||||
|
import io.flutter.embedding.engine.plugins.activity.ActivityAware
|
||||||
|
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
|
||||||
import io.flutter.plugin.common.BinaryMessenger
|
import io.flutter.plugin.common.BinaryMessenger
|
||||||
import io.flutter.plugin.common.MethodCall
|
import io.flutter.plugin.common.MethodCall
|
||||||
import io.flutter.plugin.common.MethodChannel
|
import io.flutter.plugin.common.MethodChannel
|
||||||
|
import io.flutter.plugin.common.MethodChannel.Result
|
||||||
|
import io.flutter.plugin.common.PluginRegistry
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Android plugin for Dart `BackgroundService`
|
* Android plugin for Dart `BackgroundService` and file trash operations
|
||||||
*
|
|
||||||
* Receives messages/method calls from the foreground Dart side to manage
|
|
||||||
* the background service, e.g. start (enqueue), stop (cancel)
|
|
||||||
*/
|
*/
|
||||||
class BackgroundServicePlugin : FlutterPlugin, MethodChannel.MethodCallHandler {
|
class BackgroundServicePlugin : FlutterPlugin, MethodChannel.MethodCallHandler, ActivityAware, PluginRegistry.ActivityResultListener {
|
||||||
|
|
||||||
private var methodChannel: MethodChannel? = null
|
private var methodChannel: MethodChannel? = null
|
||||||
|
private var fileTrashChannel: MethodChannel? = null
|
||||||
private var context: Context? = null
|
private var context: Context? = null
|
||||||
|
private var pendingResult: Result? = null
|
||||||
|
private val PERMISSION_REQUEST_CODE = 1001
|
||||||
|
private var activityBinding: ActivityPluginBinding? = null
|
||||||
|
|
||||||
override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
onAttachedToEngine(binding.applicationContext, binding.binaryMessenger)
|
onAttachedToEngine(binding.applicationContext, binding.binaryMessenger)
|
||||||
@@ -29,6 +44,10 @@ class BackgroundServicePlugin : FlutterPlugin, MethodChannel.MethodCallHandler {
|
|||||||
context = ctx
|
context = ctx
|
||||||
methodChannel = MethodChannel(messenger, "immich/foregroundChannel")
|
methodChannel = MethodChannel(messenger, "immich/foregroundChannel")
|
||||||
methodChannel?.setMethodCallHandler(this)
|
methodChannel?.setMethodCallHandler(this)
|
||||||
|
|
||||||
|
// Add file trash channel
|
||||||
|
fileTrashChannel = MethodChannel(messenger, "file_trash")
|
||||||
|
fileTrashChannel?.setMethodCallHandler(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) {
|
||||||
@@ -38,11 +57,14 @@ class BackgroundServicePlugin : FlutterPlugin, MethodChannel.MethodCallHandler {
|
|||||||
private fun onDetachedFromEngine() {
|
private fun onDetachedFromEngine() {
|
||||||
methodChannel?.setMethodCallHandler(null)
|
methodChannel?.setMethodCallHandler(null)
|
||||||
methodChannel = null
|
methodChannel = null
|
||||||
|
fileTrashChannel?.setMethodCallHandler(null)
|
||||||
|
fileTrashChannel = null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
|
override fun onMethodCall(call: MethodCall, result: Result) {
|
||||||
val ctx = context!!
|
val ctx = context!!
|
||||||
when (call.method) {
|
when (call.method) {
|
||||||
|
// Existing BackgroundService methods
|
||||||
"enable" -> {
|
"enable" -> {
|
||||||
val args = call.arguments<ArrayList<*>>()!!
|
val args = call.arguments<ArrayList<*>>()!!
|
||||||
ctx.getSharedPreferences(BackupWorker.SHARED_PREF_NAME, Context.MODE_PRIVATE)
|
ctx.getSharedPreferences(BackupWorker.SHARED_PREF_NAME, Context.MODE_PRIVATE)
|
||||||
@@ -114,10 +136,180 @@ class BackgroundServicePlugin : FlutterPlugin, MethodChannel.MethodCallHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// File Trash methods moved from MainActivity
|
||||||
|
"moveToTrash" -> {
|
||||||
|
val fileName = call.argument<String>("fileName")
|
||||||
|
if (fileName != null) {
|
||||||
|
if (hasManageStoragePermission()) {
|
||||||
|
val success = moveToTrash(fileName)
|
||||||
|
result.success(success)
|
||||||
|
} else {
|
||||||
|
result.error("PERMISSION_DENIED", "Storage permission required", null)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result.error("INVALID_NAME", "The file name is not specified.", null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
"restoreFromTrash" -> {
|
||||||
|
val fileName = call.argument<String>("fileName")
|
||||||
|
if (fileName != null) {
|
||||||
|
if (hasManageStoragePermission()) {
|
||||||
|
val success = untrashImage(fileName)
|
||||||
|
result.success(success)
|
||||||
|
} else {
|
||||||
|
result.error("PERMISSION_DENIED", "Storage permission required", null)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result.error("INVALID_NAME", "The file name is not specified.", null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
"requestManageStoragePermission" -> {
|
||||||
|
if (!hasManageStoragePermission()) {
|
||||||
|
requestManageStoragePermission(result)
|
||||||
|
} else {
|
||||||
|
Log.e("Manage storage permission", "Permission already granted")
|
||||||
|
result.success(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
else -> result.notImplemented()
|
else -> result.notImplemented()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// File Trash methods moved from MainActivity
|
||||||
|
private fun hasManageStoragePermission(): Boolean {
|
||||||
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
Environment.isExternalStorageManager()
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun requestManageStoragePermission(result: Result) {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
pendingResult = result // Store the result callback
|
||||||
|
val activity = activityBinding?.activity ?: return
|
||||||
|
|
||||||
|
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
|
||||||
|
intent.data = Uri.parse("package:${activity.packageName}")
|
||||||
|
activity.startActivityForResult(intent, PERMISSION_REQUEST_CODE)
|
||||||
|
} else {
|
||||||
|
result.success(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun moveToTrash(fileName: String): Boolean {
|
||||||
|
val contentResolver = context?.contentResolver ?: return false
|
||||||
|
val uri = getFileUri(fileName)
|
||||||
|
Log.e("FILE_URI", uri.toString())
|
||||||
|
return uri?.let { moveToTrash(it) } ?: false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun moveToTrash(contentUri: Uri): Boolean {
|
||||||
|
val contentResolver = context?.contentResolver ?: return false
|
||||||
|
return try {
|
||||||
|
val values = ContentValues().apply {
|
||||||
|
put(MediaStore.MediaColumns.IS_TRASHED, 1) // Move to trash
|
||||||
|
}
|
||||||
|
val updated = contentResolver.update(contentUri, values, null, null)
|
||||||
|
updated > 0
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e("TrashError", "Error moving to trash", e)
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getFileUri(fileName: String): Uri? {
|
||||||
|
val contentResolver = context?.contentResolver ?: return null
|
||||||
|
val contentUri = MediaStore.Files.getContentUri("external")
|
||||||
|
val projection = arrayOf(MediaStore.Images.Media._ID)
|
||||||
|
val selection = "${MediaStore.Images.Media.DISPLAY_NAME} = ?"
|
||||||
|
val selectionArgs = arrayOf(fileName)
|
||||||
|
var fileUri: Uri? = null
|
||||||
|
|
||||||
|
contentResolver.query(contentUri, projection, selection, selectionArgs, null)?.use { cursor ->
|
||||||
|
if (cursor.moveToFirst()) {
|
||||||
|
val id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID))
|
||||||
|
fileUri = ContentUris.withAppendedId(contentUri, id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fileUri
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun untrashImage(name: String): Boolean {
|
||||||
|
val contentResolver = context?.contentResolver ?: return false
|
||||||
|
val uri = getTrashedFileUri(contentResolver, name)
|
||||||
|
Log.e("FILE_URI", uri.toString())
|
||||||
|
return uri?.let { untrashImage(it) } ?: false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun untrashImage(contentUri: Uri): Boolean {
|
||||||
|
val contentResolver = context?.contentResolver ?: return false
|
||||||
|
return try {
|
||||||
|
val values = ContentValues().apply {
|
||||||
|
put(MediaStore.MediaColumns.IS_TRASHED, 0) // Restore file
|
||||||
|
}
|
||||||
|
val updated = contentResolver.update(contentUri, values, null, null)
|
||||||
|
updated > 0
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e("TrashError", "Error restoring file", e)
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getTrashedFileUri(contentResolver: ContentResolver, fileName: String): Uri? {
|
||||||
|
val contentUri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL)
|
||||||
|
val projection = arrayOf(MediaStore.Files.FileColumns._ID)
|
||||||
|
|
||||||
|
val queryArgs = Bundle().apply {
|
||||||
|
putString(ContentResolver.QUERY_ARG_SQL_SELECTION, "${MediaStore.Files.FileColumns.DISPLAY_NAME} = ?")
|
||||||
|
putStringArray(ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS, arrayOf(fileName))
|
||||||
|
putInt(MediaStore.QUERY_ARG_MATCH_TRASHED, MediaStore.MATCH_ONLY)
|
||||||
|
}
|
||||||
|
|
||||||
|
contentResolver.query(contentUri, projection, queryArgs, null)?.use { cursor ->
|
||||||
|
if (cursor.moveToFirst()) {
|
||||||
|
val id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID))
|
||||||
|
return ContentUris.withAppendedId(contentUri, id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActivityAware implementation
|
||||||
|
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
|
||||||
|
activityBinding = binding
|
||||||
|
binding.addActivityResultListener(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDetachedFromActivityForConfigChanges() {
|
||||||
|
activityBinding?.removeActivityResultListener(this)
|
||||||
|
activityBinding = null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
|
||||||
|
activityBinding = binding
|
||||||
|
binding.addActivityResultListener(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDetachedFromActivity() {
|
||||||
|
activityBinding?.removeActivityResultListener(this)
|
||||||
|
activityBinding = null
|
||||||
|
}
|
||||||
|
|
||||||
|
// ActivityResultListener implementation
|
||||||
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
|
||||||
|
if (requestCode == PERMISSION_REQUEST_CODE) {
|
||||||
|
val granted = hasManageStoragePermission()
|
||||||
|
pendingResult?.success(granted)
|
||||||
|
pendingResult = null
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private const val TAG = "BackgroundServicePlugin"
|
private const val TAG = "BackgroundServicePlugin"
|
||||||
private const val BUFFER_SIZE = 2 * 1024 * 1024;
|
private const val BUFFER_SIZE = 2 * 1024 * 1024
|
||||||
|
|||||||
@@ -2,14 +2,12 @@ package app.alextran.immich
|
|||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
import io.flutter.embedding.engine.FlutterEngine
|
import io.flutter.embedding.engine.FlutterEngine
|
||||||
import android.os.Bundle
|
import androidx.annotation.NonNull
|
||||||
import android.content.Intent
|
|
||||||
|
|
||||||
class MainActivity : FlutterActivity() {
|
class MainActivity : FlutterActivity() {
|
||||||
|
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
||||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
|
||||||
super.configureFlutterEngine(flutterEngine)
|
super.configureFlutterEngine(flutterEngine)
|
||||||
flutterEngine.plugins.add(BackgroundServicePlugin())
|
flutterEngine.plugins.add(BackgroundServicePlugin())
|
||||||
|
// No need to set up method channel here as it's now handled in the plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ platform :android do
|
|||||||
task: 'bundle',
|
task: 'bundle',
|
||||||
build_type: 'Release',
|
build_type: 'Release',
|
||||||
properties: {
|
properties: {
|
||||||
"android.injected.version.code" => 191,
|
"android.injected.version.code" => 193,
|
||||||
"android.injected.version.name" => "1.130.3",
|
"android.injected.version.name" => "1.131.3",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
upload_to_play_store(skip_upload_apk: true, skip_upload_images: true, skip_upload_screenshots: true, aab: '../build/app/outputs/bundle/release/app-release.aab')
|
||||||
|
|||||||
@@ -1,692 +0,0 @@
|
|||||||
{
|
|
||||||
"action_common_back": "خلف",
|
|
||||||
"action_common_cancel": "يلغي",
|
|
||||||
"action_common_clear": "مسح",
|
|
||||||
"action_common_confirm": "تأكيد",
|
|
||||||
"action_common_save": "Save",
|
|
||||||
"action_common_select": "Select",
|
|
||||||
"action_common_update": "تحديث",
|
|
||||||
"add_a_name": "Add a name",
|
|
||||||
"add_endpoint": "Add endpoint",
|
|
||||||
"add_to_album_bottom_sheet_added": "تمت الاضافة{album}",
|
|
||||||
"add_to_album_bottom_sheet_already_exists": "موجودة مسبقا {album}",
|
|
||||||
"advanced_settings_log_level_title": "Log level: {}",
|
|
||||||
"advanced_settings_prefer_remote_subtitle": "تكون بعض الأجهزة بطيئة للغاية في تحميل الصور المصغرة من الأصول الموجودة على الجهاز. قم بتنشيط هذا الإعداد لتحميل الصور البعيدة بدلاً من ذلك.",
|
|
||||||
"advanced_settings_prefer_remote_title": "تفضل الصور البعيدة",
|
|
||||||
"advanced_settings_proxy_headers_subtitle": "Define proxy headers Immich should send with each network request",
|
|
||||||
"advanced_settings_proxy_headers_title": "Proxy Headers",
|
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Skips SSL certificate verification for the server endpoint. Required for self-signed certificates.",
|
|
||||||
"advanced_settings_self_signed_ssl_title": "السماح بشهادات SSL الموقعة ذاتيًا",
|
|
||||||
"advanced_settings_tile_subtitle": "إعدادات المستخدم المتقدمة",
|
|
||||||
"advanced_settings_tile_title": "متقدم",
|
|
||||||
"advanced_settings_troubleshooting_subtitle": "تمكين الميزات الإضافية لاستكشاف الأخطاء وإصلاحها",
|
|
||||||
"advanced_settings_troubleshooting_title": "استكشاف الأخطاء وإصلاحها",
|
|
||||||
"album_info_card_backup_album_excluded": "مستبعد",
|
|
||||||
"album_info_card_backup_album_included": "متضمنة",
|
|
||||||
"albums": "Albums",
|
|
||||||
"album_thumbnail_card_item": "عنصر واحد",
|
|
||||||
"album_thumbnail_card_items": "{} items",
|
|
||||||
"album_thumbnail_card_shared": " · . مشترك",
|
|
||||||
"album_thumbnail_owned": "مملوكة",
|
|
||||||
"album_thumbnail_shared_by": "Shared by {}",
|
|
||||||
"album_viewer_appbar_delete_confirm": "هل أنت متأكد أنك تريد حذف هذا الألبوم من حسابك؟",
|
|
||||||
"album_viewer_appbar_share_delete": "حذف الألبوم",
|
|
||||||
"album_viewer_appbar_share_err_delete": "فشل في حذف الألبوم",
|
|
||||||
"album_viewer_appbar_share_err_leave": "فشل في ترك الألبوم",
|
|
||||||
"album_viewer_appbar_share_err_remove": "هناك مشاكل في إزالة الأصول من الألبوم",
|
|
||||||
"album_viewer_appbar_share_err_title": "فشل في تغيير عنوان الألبوم",
|
|
||||||
"album_viewer_appbar_share_leave": "ترك الألبوم",
|
|
||||||
"album_viewer_appbar_share_remove": "إزالة من الألبوم",
|
|
||||||
"album_viewer_appbar_share_to": "حصة ل",
|
|
||||||
"album_viewer_page_share_add_users": "اضافة مستخدمين",
|
|
||||||
"all": "All",
|
|
||||||
"all_people_page_title": "الناس",
|
|
||||||
"all_videos_page_title": "أشرطة فيديو",
|
|
||||||
"app_bar_signout_dialog_content": "هل أنت متأكد أنك تريد الخروج",
|
|
||||||
"app_bar_signout_dialog_ok": "نعم",
|
|
||||||
"app_bar_signout_dialog_title": "خروج",
|
|
||||||
"archived": "Archived",
|
|
||||||
"archive_page_no_archived_assets": "لم يتم العثور على الأصول المؤرشفة",
|
|
||||||
"archive_page_title": "Archive ({})",
|
|
||||||
"asset_action_delete_err_read_only": "لا يمكن حذف الأصول ذات للقراءة فقط، وسوف يتم التخطي",
|
|
||||||
"asset_action_share_err_offline": "لا يمكن جلب الأصول غير المتصلة بالإنترنت، وسوف يتم التخطي",
|
|
||||||
"asset_list_group_by_sub_title": "تنظيم بواسطة",
|
|
||||||
"asset_list_layout_settings_dynamic_layout_title": "تخطيط ديناميكي",
|
|
||||||
"asset_list_layout_settings_group_automatically": "تلقائي",
|
|
||||||
"asset_list_layout_settings_group_by": "مجموعة الأصول حسب",
|
|
||||||
"asset_list_layout_settings_group_by_month": "شهر",
|
|
||||||
"asset_list_layout_settings_group_by_month_day": "شهر + يوم",
|
|
||||||
"asset_list_layout_sub_title": "تصميم",
|
|
||||||
"asset_list_settings_subtitle": "إعدادات تخطيط شبكة الصور",
|
|
||||||
"asset_list_settings_title": "شبكة الصور",
|
|
||||||
"asset_restored_successfully": "Asset restored successfully",
|
|
||||||
"assets_deleted_permanently": "{} asset(s) deleted permanently",
|
|
||||||
"assets_deleted_permanently_from_server": "{} asset(s) deleted permanently from the Immich server",
|
|
||||||
"assets_removed_permanently_from_device": "{} asset(s) removed permanently from your device",
|
|
||||||
"assets_restored_successfully": "{} asset(s) restored successfully",
|
|
||||||
"assets_trashed": "{} asset(s) trashed",
|
|
||||||
"assets_trashed_from_server": "{} asset(s) trashed from the Immich server",
|
|
||||||
"asset_viewer_settings_subtitle": "Manage your gallery viewer settings",
|
|
||||||
"asset_viewer_settings_title": "عارض الأصول",
|
|
||||||
"automatic_endpoint_switching_subtitle": "Connect locally over designated Wi-Fi when available and use alternative connections elsewhere",
|
|
||||||
"automatic_endpoint_switching_title": "Automatic URL switching",
|
|
||||||
"background_location_permission": "Background location permission",
|
|
||||||
"background_location_permission_content": "In order to switch networks when running in the background, Immich must *always* have precise location access so the app can read the Wi-Fi network's name",
|
|
||||||
"backup_album_selection_page_albums_device": "Albums on device ({})",
|
|
||||||
"backup_album_selection_page_albums_tap": "انقر للتضمين، وانقر نقرًا مزدوجًا للاستثناء",
|
|
||||||
"backup_album_selection_page_assets_scatter": "يمكن أن تنتشر الأصول عبر ألبومات متعددة. وبالتالي، يمكن تضمين الألبومات أو استبعادها أثناء عملية النسخ الاحتياطي.",
|
|
||||||
"backup_album_selection_page_select_albums": "حدد الألبومات",
|
|
||||||
"backup_album_selection_page_selection_info": "معلومات الاختيار",
|
|
||||||
"backup_album_selection_page_total_assets": "إجمالي الأصول الفريدة",
|
|
||||||
"backup_all": "الجميع",
|
|
||||||
"backup_background_service_backup_failed_message": "فشل في النسخ الاحتياطي للأصول. جارٍ إعادة المحاولة...",
|
|
||||||
"backup_background_service_connection_failed_message": "فشل في الاتصال بالخادم. جارٍ إعادة المحاولة...",
|
|
||||||
"backup_background_service_current_upload_notification": "Uploading {}",
|
|
||||||
"backup_background_service_default_notification": "التحقق من الأصول الجديدة ...",
|
|
||||||
"backup_background_service_error_title": "خطأ في النسخ الاحتياطي",
|
|
||||||
"backup_background_service_in_progress_notification": "النسخ الاحتياطي للأصول الخاصة بك...",
|
|
||||||
"backup_background_service_upload_failure_notification": "Failed to upload {}",
|
|
||||||
"backup_controller_page_albums": "ألبومات احتياطية",
|
|
||||||
"backup_controller_page_background_app_refresh_disabled_content": "قم بتمكين تحديث تطبيق الخلفية في الإعدادات > عام > تحديث تطبيق الخلفية لاستخدام النسخ الاحتياطي في الخلفية.",
|
|
||||||
"backup_controller_page_background_app_refresh_disabled_title": "تم تعطيل تحديث التطبيق في الخلفية",
|
|
||||||
"backup_controller_page_background_app_refresh_enable_button_text": "اذهب للاعدادات",
|
|
||||||
"backup_controller_page_background_battery_info_link": "أرني كيف",
|
|
||||||
"backup_controller_page_background_battery_info_message": "للحصول على أفضل تجربة نسخ احتياطي في الخلفية، يرجى تعطيل أي تحسينات للبطارية تقيد نشاط الخلفية لـ تطبيق.\n\nنظرًا لأن هذا خاص بالجهاز، يرجى البحث عن المعلومات المطلوبة للشركة المصنعة لجهازك.",
|
|
||||||
"backup_controller_page_background_battery_info_ok": "نعم",
|
|
||||||
"backup_controller_page_background_battery_info_title": "تحسين البطارية",
|
|
||||||
"backup_controller_page_background_charging": "فقط أثناء الشحن",
|
|
||||||
"backup_controller_page_background_configure_error": "فشل في تكوين خدمة الخلفية",
|
|
||||||
"backup_controller_page_background_delay": "Delay new assets backup: {}",
|
|
||||||
"backup_controller_page_background_description": "قم بتشغيل خدمة الخلفية لإجراء نسخ احتياطي لأي أصول جديدة تلقائيًا دون الحاجة إلى فتح التطبيق",
|
|
||||||
"backup_controller_page_background_is_off": "تم إيقاف النسخ الاحتياطي التلقائي للخلفية",
|
|
||||||
"backup_controller_page_background_is_on": "النسخ الاحتياطي التلقائي للخلفية قيد التشغيل",
|
|
||||||
"backup_controller_page_background_turn_off": "قم بإيقاف تشغيل خدمة الخلفية",
|
|
||||||
"backup_controller_page_background_turn_on": "قم بتشغيل خدمة الخلفية",
|
|
||||||
"backup_controller_page_background_wifi": "فقط على واي فاي",
|
|
||||||
"backup_controller_page_backup": "دعم",
|
|
||||||
"backup_controller_page_backup_selected": "المحدد: ",
|
|
||||||
"backup_controller_page_backup_sub": "النسخ الاحتياطي للصور ومقاطع الفيديو",
|
|
||||||
"backup_controller_page_cancel": "يلغي",
|
|
||||||
"backup_controller_page_created": "Created on: {}",
|
|
||||||
"backup_controller_page_desc_backup": "قم بتشغيل النسخ الاحتياطي الأمامي لتحميل الأصول الجديدة تلقائيًا إلى الخادم عند فتح التطبيق.",
|
|
||||||
"backup_controller_page_excluded": "مستبعد: ",
|
|
||||||
"backup_controller_page_failed": "Failed ({})",
|
|
||||||
"backup_controller_page_filename": "File name: {} [{}]",
|
|
||||||
"backup_controller_page_id": "ID: {}",
|
|
||||||
"backup_controller_page_info": "معلومات النسخ الاحتياطي",
|
|
||||||
"backup_controller_page_none_selected": "لم يتم التحديد",
|
|
||||||
"backup_controller_page_remainder": "بقية",
|
|
||||||
"backup_controller_page_remainder_sub": "الصور ومقاطع الفيديو المتبقية للنسخ الاحتياطي من التحديد",
|
|
||||||
"backup_controller_page_select": "يختار",
|
|
||||||
"backup_controller_page_server_storage": "ذاكرة الجهاز",
|
|
||||||
"backup_controller_page_start_backup": "بدء النسخ الاحتياطي",
|
|
||||||
"backup_controller_page_status_off": "النسخة الاحتياطية التلقائية غير فعالة",
|
|
||||||
"backup_controller_page_status_on": "النسخة الاحتياطية التلقائية فعالة",
|
|
||||||
"backup_controller_page_storage_format": "{} of {} used",
|
|
||||||
"backup_controller_page_to_backup": "الألبومات الاحتياطية",
|
|
||||||
"backup_controller_page_total": "المجموع",
|
|
||||||
"backup_controller_page_total_sub": "جميع الصور ومقاطع الفيديو الفريدة من ألبومات مختارة",
|
|
||||||
"backup_controller_page_turn_off": "قم بإيقاف تشغيل النسخ الاحتياطي المقدمة",
|
|
||||||
"backup_controller_page_turn_on": "قم بتشغيل النسخ الاحتياطي المقدمة",
|
|
||||||
"backup_controller_page_uploading_file_info": "تحميل معلومات الملف",
|
|
||||||
"backup_err_only_album": "لا يمكن إزالة الألبوم الوحيد",
|
|
||||||
"backup_info_card_assets": "أصول",
|
|
||||||
"backup_manual_cancelled": "ملغي",
|
|
||||||
"backup_manual_failed": "فشل",
|
|
||||||
"backup_manual_in_progress": "قيد التحميل حاول مره اخرى",
|
|
||||||
"backup_manual_success": "نجاح",
|
|
||||||
"backup_manual_title": "حالة التحميل",
|
|
||||||
"backup_options_page_title": "خيارات النسخ الاحتياطي",
|
|
||||||
"backup_setting_subtitle": "Manage background and foreground upload settings",
|
|
||||||
"cache_settings_album_thumbnails": "Library page thumbnails ({} assets)",
|
|
||||||
"cache_settings_clear_cache_button": "مسح ذاكرة التخزين المؤقت",
|
|
||||||
"cache_settings_clear_cache_button_title": "يقوم بمسح ذاكرة التخزين المؤقت للتطبيق.سيؤثر هذا بشكل كبير على أداء التطبيق حتى إعادة بناء ذاكرة التخزين المؤقت.",
|
|
||||||
"cache_settings_duplicated_assets_clear_button": "واضح",
|
|
||||||
"cache_settings_duplicated_assets_subtitle": "الصور ومقاطع الفيديو اللتي تم تجاهلها المدرجة في التطبيق",
|
|
||||||
"cache_settings_duplicated_assets_title": "Duplicated Assets ({})",
|
|
||||||
"cache_settings_image_cache_size": "Image cache size ({} assets)",
|
|
||||||
"cache_settings_statistics_album": "مكتبه الصور المصغره",
|
|
||||||
"cache_settings_statistics_assets": "{} assets ({})",
|
|
||||||
"cache_settings_statistics_full": "صور كاملة",
|
|
||||||
"cache_settings_statistics_shared": "صورة ألبوم مشتركة",
|
|
||||||
"cache_settings_statistics_thumbnail": "الصورة المصغرة",
|
|
||||||
"cache_settings_statistics_title": "استخدام ذاكرة التخزين المؤقت",
|
|
||||||
"cache_settings_subtitle": "تحكم في سلوك التخزين المؤقت لتطبيق الجوال.",
|
|
||||||
"cache_settings_thumbnail_size": "Thumbnail cache size ({} assets)",
|
|
||||||
"cache_settings_tile_subtitle": "التحكم في سلوك التخزين المحلي",
|
|
||||||
"cache_settings_tile_title": "التخزين المحلي",
|
|
||||||
"cache_settings_title": "إعدادات التخزين المؤقت",
|
|
||||||
"cancel": "Cancel",
|
|
||||||
"canceled": "Canceled",
|
|
||||||
"change_display_order": "Change display order",
|
|
||||||
"change_password_form_confirm_password": "تأكيد كلمة المرور",
|
|
||||||
"change_password_form_description": "مرحبًا ،هذه هي المرة الأولى التي تقوم فيها بالتسجيل في النظام أو تم تقديم طلب لتغيير كلمة المرور الخاصة بك.الرجاء إدخال كلمة المرور الجديدة أدناه",
|
|
||||||
"change_password_form_new_password": "كلمة المرور الجديدة",
|
|
||||||
"change_password_form_password_mismatch": "كلمة المرور غير مطابقة",
|
|
||||||
"change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة",
|
|
||||||
"check_corrupt_asset_backup": "Check for corrupt asset backups",
|
|
||||||
"check_corrupt_asset_backup_button": "Perform check",
|
|
||||||
"check_corrupt_asset_backup_description": "Run this check only over Wi-Fi and once all assets have been backed-up. The procedure might take a few minutes.",
|
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
|
||||||
"client_cert_enter_password": "Enter Password",
|
|
||||||
"client_cert_import": "Import",
|
|
||||||
"client_cert_import_success_msg": "Client certificate is imported",
|
|
||||||
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
|
||||||
"client_cert_remove": "Remove",
|
|
||||||
"client_cert_remove_msg": "Client certificate is removed",
|
|
||||||
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
|
||||||
"client_cert_title": "SSL Client Certificate",
|
|
||||||
"common_add_to_album": "أضف إلى الألبوم",
|
|
||||||
"common_change_password": "تغيير كلمة المرور",
|
|
||||||
"common_create_new_album": "إنشاء ألبوم جديد",
|
|
||||||
"common_server_error": "يرجى التحقق من اتصال الشبكة الخاص بك ، والتأكد من أن الجهاز قابل للوصول وإصدارات التطبيق/الجهاز متوافقة.",
|
|
||||||
"common_shared": "مشترك",
|
|
||||||
"completed": "Completed",
|
|
||||||
"contextual_search": "Sunrise on the beach",
|
|
||||||
"control_bottom_app_bar_add_to_album": "أضف إلى الألبوم",
|
|
||||||
"control_bottom_app_bar_album_info": "{} items",
|
|
||||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
|
||||||
"control_bottom_app_bar_archive": "أرشيف",
|
|
||||||
"control_bottom_app_bar_create_new_album": "إنشاء ألبوم جديد",
|
|
||||||
"control_bottom_app_bar_delete": "يمسح",
|
|
||||||
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
|
|
||||||
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
|
|
||||||
"control_bottom_app_bar_download": "Download",
|
|
||||||
"control_bottom_app_bar_edit": "Edit",
|
|
||||||
"control_bottom_app_bar_edit_location": "تحديد الوجهة",
|
|
||||||
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
|
|
||||||
"control_bottom_app_bar_favorite": "مفضل",
|
|
||||||
"control_bottom_app_bar_share": "يشارك",
|
|
||||||
"control_bottom_app_bar_share_link": "Share Link",
|
|
||||||
"control_bottom_app_bar_share_to": "مشاركة إلى",
|
|
||||||
"control_bottom_app_bar_stack": "تجميع",
|
|
||||||
"control_bottom_app_bar_trash_from_immich": "حذفه ونقله في سله المهملات",
|
|
||||||
"control_bottom_app_bar_unarchive": "غير محفوظ في الارشيف",
|
|
||||||
"control_bottom_app_bar_unfavorite": "غير مفضل",
|
|
||||||
"control_bottom_app_bar_upload": "رفع وتحميل",
|
|
||||||
"create_album": "Create album",
|
|
||||||
"create_album_page_untitled": "بدون اسم",
|
|
||||||
"create_new": "CREATE NEW",
|
|
||||||
"create_shared_album_page_create": "انشاء",
|
|
||||||
"create_shared_album_page_share": "يشارك",
|
|
||||||
"create_shared_album_page_share_add_assets": "إضافة الأصول",
|
|
||||||
"create_shared_album_page_share_select_photos": "حدد الصور",
|
|
||||||
"crop": "Crop",
|
|
||||||
"curated_location_page_title": "أماكن",
|
|
||||||
"curated_object_page_title": "أشياء",
|
|
||||||
"current_server_address": "Current server address",
|
|
||||||
"daily_title_text_date": "E ، MMM DD",
|
|
||||||
"daily_title_text_date_year": "E ، MMM DD ، yyyy",
|
|
||||||
"date_format": "E ، Lll D ، Y • H: MM A",
|
|
||||||
"delete_dialog_alert": " هذه العناصر سيتم حذفها بشكل دائم من جهازك ومن تطبيق",
|
|
||||||
"delete_dialog_alert_local": " العناصر التي تم حذفها من جهازك ولكنها موجوده في تطبيق",
|
|
||||||
"delete_dialog_alert_local_non_backed_up": "بعض العناصر التي سيتم حذفها بشكل دائم ولا يوجد لها نسخه احتياطيه في تطبيق ",
|
|
||||||
"delete_dialog_alert_remote": "العناصر التي سيتم حذفها بشكل دائم من تطبيق",
|
|
||||||
"delete_dialog_cancel": "يلغي",
|
|
||||||
"delete_dialog_ok": "يمسح",
|
|
||||||
"delete_dialog_ok_force": "احذف على أي حال",
|
|
||||||
"delete_dialog_title": "الحذف بشكل نهائي",
|
|
||||||
"delete_local_dialog_ok_backed_up_only": "حذف النسخة الاحتياطية فقط",
|
|
||||||
"delete_local_dialog_ok_force": "احذف على أي حال",
|
|
||||||
"delete_shared_link_dialog_content": "هل أنت متأكد من أنك تريد حذف هذا الرابط المشترك؟",
|
|
||||||
"delete_shared_link_dialog_title": "حذف الرابط المشترك",
|
|
||||||
"description_input_hint_text": "اضف وصفا...",
|
|
||||||
"description_input_submit_error": "خطأ تحديث الوصف ، تحقق من السجل لمزيد من التفاصيل",
|
|
||||||
"description_search": "Hiking day in Sapa",
|
|
||||||
"download_canceled": "Download canceled",
|
|
||||||
"download_complete": "Download complete",
|
|
||||||
"download_enqueue": "Download enqueued",
|
|
||||||
"download_error": "Download Error",
|
|
||||||
"download_failed": "Download failed",
|
|
||||||
"download_filename": "file: {}",
|
|
||||||
"download_finished": "Download finished",
|
|
||||||
"downloading": "Downloading...",
|
|
||||||
"downloading_media": "Downloading media",
|
|
||||||
"download_notfound": "Download not found",
|
|
||||||
"download_paused": "Download paused",
|
|
||||||
"download_started": "Download started",
|
|
||||||
"download_sucess": "Download success",
|
|
||||||
"download_sucess_android": "The media has been downloaded to DCIM/Immich",
|
|
||||||
"download_waiting_to_retry": "Waiting to retry",
|
|
||||||
"edit_date_time_dialog_date_time": "التاريخ و الوقت",
|
|
||||||
"edit_date_time_dialog_search_timezone": "Search timezone...",
|
|
||||||
"edit_date_time_dialog_timezone": "وحدة زمنية",
|
|
||||||
"edit_image_title": "Edit",
|
|
||||||
"edit_location_dialog_title": "موقع",
|
|
||||||
"empty_folder": "This folder is empty",
|
|
||||||
"end_date": "End date",
|
|
||||||
"enqueued": "Enqueued",
|
|
||||||
"enter_wifi_name": "Enter WiFi name",
|
|
||||||
"error_change_sort_album": "Failed to change album sort order",
|
|
||||||
"error_saving_image": "Error: {}",
|
|
||||||
"exif_bottom_sheet_description": "اضف وصفا...",
|
|
||||||
"exif_bottom_sheet_details": "تفاصيل",
|
|
||||||
"exif_bottom_sheet_location": "موقع",
|
|
||||||
"exif_bottom_sheet_location_add": "إضافة موقع",
|
|
||||||
"exif_bottom_sheet_people": "الناس",
|
|
||||||
"exif_bottom_sheet_person_add_person": "اضف اسما",
|
|
||||||
"exif_bottom_sheet_person_age": "Age {}",
|
|
||||||
"exif_bottom_sheet_person_age_months": "Age {} months",
|
|
||||||
"exif_bottom_sheet_person_age_year_months": "Age 1 year, {} months",
|
|
||||||
"exif_bottom_sheet_person_age_years": "Age {}",
|
|
||||||
"experimental_settings_new_asset_list_subtitle": "أعمال جارية",
|
|
||||||
"experimental_settings_new_asset_list_title": "تمكين شبكة الصور التجريبية",
|
|
||||||
"experimental_settings_subtitle": "استخدام على مسؤوليتك الخاصة!",
|
|
||||||
"experimental_settings_title": "تجريبي",
|
|
||||||
"external_network": "External network",
|
|
||||||
"external_network_sheet_info": "When not on the preferred WiFi network, the app will connect to the server through the first of the below URLs it can reach, starting from top to bottom",
|
|
||||||
"failed": "Failed",
|
|
||||||
"failed_to_load_assets": "Failed to load assets",
|
|
||||||
"failed_to_load_folder": "Failed to load folder",
|
|
||||||
"favorites": "Favorites",
|
|
||||||
"favorites_page_no_favorites": "لم يتم العثور على الأصول المفضلة",
|
|
||||||
"favorites_page_title": "المفضلة",
|
|
||||||
"filename_search": "File name or extension",
|
|
||||||
"filter": "Filter",
|
|
||||||
"folder": "Folder",
|
|
||||||
"folder_not_found": "Folder not found",
|
|
||||||
"folders": "Folders",
|
|
||||||
"get_wifiname_error": "Could not get Wi-Fi name. Make sure you have granted the necessary permissions and are connected to a Wi-Fi network",
|
|
||||||
"grant_permission": "Grant permission",
|
|
||||||
"haptic_feedback_switch": "تمكين ردود الفعل اللمسية",
|
|
||||||
"haptic_feedback_title": "ردود فعل لمسية",
|
|
||||||
"header_settings_add_header_tip": "Add Header",
|
|
||||||
"header_settings_field_validator_msg": "Value cannot be empty",
|
|
||||||
"header_settings_header_name_input": "Header name",
|
|
||||||
"header_settings_header_value_input": "Header value",
|
|
||||||
"header_settings_page_title": "Proxy Headers",
|
|
||||||
"headers_settings_tile_subtitle": "Define proxy headers the app should send with each network request",
|
|
||||||
"headers_settings_tile_title": "Custom proxy headers",
|
|
||||||
"home_page_add_to_album_conflicts": "تمت إضافة {تمت إضافة} الأصول إلى الألبوم {الألبوم}.{فشل} الأصول موجودة بالفعل في الألبوم.",
|
|
||||||
"home_page_add_to_album_err_local": "لا يمكن إضافة الأصول المحلية إلى الألبومات حتى الآن ، سوف يتخطى",
|
|
||||||
"home_page_add_to_album_success": "تمت إضافة {تمت إضافة} الأصول إلى الألبوم {الألبوم}.",
|
|
||||||
"home_page_album_err_partner": "لا يمكن إضافة أصول شريكة إلى ألبوم حتى الآن ، سوف يتخطى",
|
|
||||||
"home_page_archive_err_local": "لا يمكن أرشفة الأصول المحلية حتى الآن ، سوف يتخطى",
|
|
||||||
"home_page_archive_err_partner": "لا يمكن أرشفة الأصول الشريكة ، سوف يتخطى",
|
|
||||||
"home_page_building_timeline": "بناء الجدول الزمني",
|
|
||||||
"home_page_delete_err_partner": "لا يمكن حذف الأصول الشريكة ,سوف يتخطى",
|
|
||||||
"home_page_delete_remote_err_local": "الأصول المحلية في التحديد البعيد المحذوف، سوف يتخطى",
|
|
||||||
"home_page_favorite_err_local": "لا يمكن تفضيل الأصول المحلية بعد، سوف يتخطى",
|
|
||||||
"home_page_favorite_err_partner": "لا يمكن الأصول الشريكة المفضلة بعد ، سوف يتخطى",
|
|
||||||
"home_page_first_time_notice": "إذا كانت هذه هي المرة الأولى التي تستخدم فيها التطبيق، فيرجى التأكد من اختيار ألبوم (ألبومات) احتياطية حتى يتمكن المخطط الزمني من ملء الصور ومقاطع الفيديو في الألبوم (الألبومات).",
|
|
||||||
"home_page_share_err_local": "لا يمكن مشاركة الأصول المحلية عبر الرابط ، سوف يتخطى",
|
|
||||||
"home_page_upload_err_limit": "لا يمكن إلا تحميل 30 أحد الأصول في وقت واحد ، سوف يتخطى",
|
|
||||||
"ignore_icloud_photos": "Ignore iCloud photos",
|
|
||||||
"ignore_icloud_photos_description": "Photos that are stored on iCloud will not be uploaded to the Immich server",
|
|
||||||
"image_saved_successfully": "Image saved",
|
|
||||||
"image_viewer_page_state_provider_download_error": "خطا في التحميل",
|
|
||||||
"image_viewer_page_state_provider_download_started": "بدأ التنزيل",
|
|
||||||
"image_viewer_page_state_provider_download_success": "تم التنزيل بنجاح",
|
|
||||||
"image_viewer_page_state_provider_share_error": "خطأ في المشاركة",
|
|
||||||
"invalid_date": "Invalid date",
|
|
||||||
"invalid_date_format": "Invalid date format",
|
|
||||||
"library": "Library",
|
|
||||||
"library_page_albums": "ألبومات",
|
|
||||||
"library_page_archive": "أرشيف",
|
|
||||||
"library_page_device_albums": "ألبومات على الجهاز",
|
|
||||||
"library_page_favorites": "المفضلة",
|
|
||||||
"library_page_new_album": "البوم جديد",
|
|
||||||
"library_page_sharing": "مشاركة",
|
|
||||||
"library_page_sort_asset_count": "عدد الأصول",
|
|
||||||
"library_page_sort_created": "تاريخ الإنشاء",
|
|
||||||
"library_page_sort_last_modified": "آخر تعديل",
|
|
||||||
"library_page_sort_most_oldest_photo": "أقدم صورة",
|
|
||||||
"library_page_sort_most_recent_photo": "أحدث الصور",
|
|
||||||
"library_page_sort_title": "عنوان الألبوم",
|
|
||||||
"local_network": "Local network",
|
|
||||||
"local_network_sheet_info": "The app will connect to the server through this URL when using the specified Wi-Fi network",
|
|
||||||
"location_permission": "Location permission",
|
|
||||||
"location_permission_content": "In order to use the auto-switching feature, Immich needs precise location permission so it can read the current WiFi network's name",
|
|
||||||
"location_picker_choose_on_map": "اختر على الخريطة",
|
|
||||||
"location_picker_latitude": "خط العرض",
|
|
||||||
"location_picker_latitude_error": "أدخل خط عرض صالح",
|
|
||||||
"location_picker_latitude_hint": "أدخل خط العرض الخاص بك هنا",
|
|
||||||
"location_picker_longitude": "خط الطول",
|
|
||||||
"location_picker_longitude_error": "أدخل خط الطول الصحيح",
|
|
||||||
"location_picker_longitude_hint": "أدخل خط الطول هنا",
|
|
||||||
"login_disabled": "تم تعطيل تسجيل الدخول",
|
|
||||||
"login_form_api_exception": " استثناء برمجة التطبيقات. يرجى التحقق من عنوان الخادم والمحاولة مرة أخرى ",
|
|
||||||
"login_form_back_button_text": "الرجوع للخلف",
|
|
||||||
"login_form_button_text": "تسجيل الدخول",
|
|
||||||
"login_form_email_hint": "yoursemail@email.com",
|
|
||||||
"login_form_endpoint_hint": "http://your-server-ip:port",
|
|
||||||
"login_form_endpoint_url": "url نقطة نهاية الخادم",
|
|
||||||
"login_form_err_http": "يرجى تحديد http:// أو https://",
|
|
||||||
"login_form_err_invalid_email": "بريد إلكتروني خاطئ",
|
|
||||||
"login_form_err_invalid_url": "URL غير صالح",
|
|
||||||
"login_form_err_leading_whitespace": "قيادة المساحة البيضاء",
|
|
||||||
"login_form_err_trailing_whitespace": "زائدة بيضاء",
|
|
||||||
"login_form_failed_get_oauth_server_config": "تسجيل الخطأ باستخدام OAUTH ، تحقق من عنوان URL لخادم",
|
|
||||||
"login_form_failed_get_oauth_server_disable": "ميزة OAuth غير متوفرة على هذا الخادم",
|
|
||||||
"login_form_failed_login": "خطأ في تسجيل الدخول ، تحقق من عنوان URL للخادم والبريد الإلكتروني وكلمة المرور",
|
|
||||||
"login_form_handshake_exception": "كان هناك استثناء مصافحة مع الخادم.تمكين دعم الشهادة الموقعة ذاتيا في الإعدادات إذا كنت تستخدم شهادة موقعة ذاتيا.",
|
|
||||||
"login_form_label_email": "بريد إلكتروني",
|
|
||||||
"login_form_label_password": "كلمة المرور",
|
|
||||||
"login_form_next_button": "التالي",
|
|
||||||
"login_form_password_hint": "كلمة المرور",
|
|
||||||
"login_form_save_login": "ابق متصلا",
|
|
||||||
"login_form_server_empty": "أدخل عنوان URL الخادم.",
|
|
||||||
"login_form_server_error": "لا يمكن الاتصال بالخادم.",
|
|
||||||
"login_password_changed_error": "كان هناك خطأ في تحديث كلمة المرور الخاصة بك",
|
|
||||||
"login_password_changed_success": "تم تحديث كلمة السر بنجاح",
|
|
||||||
"map_assets_in_bound": "{} photo",
|
|
||||||
"map_assets_in_bounds": "{} photos",
|
|
||||||
"map_cannot_get_user_location": "لا يمكن الحصول على موقع المستخدم",
|
|
||||||
"map_location_dialog_cancel": "يلغي",
|
|
||||||
"map_location_dialog_yes": "نعم",
|
|
||||||
"map_location_picker_page_use_location": "استخدم هذا الموقع",
|
|
||||||
"map_location_service_disabled_content": "يجب تمكين خدمة الموقع لعرض الأصول من موقعك الحالي.هل تريد تمكينه الآن؟",
|
|
||||||
"map_location_service_disabled_title": "خدمة الموقع معطل",
|
|
||||||
"map_no_assets_in_bounds": "لا توجد صور في هذا المجال",
|
|
||||||
"map_no_location_permission_content": "هناك حاجة إلى إذن الموقع لعرض الأصول من موقعك الحالي.هل تريد السماح به الآن؟",
|
|
||||||
"map_no_location_permission_title": "تم رفض إذن الموقع",
|
|
||||||
"map_settings_dark_mode": "الوضع المظلم",
|
|
||||||
"map_settings_date_range_option_all": "الجميع",
|
|
||||||
"map_settings_date_range_option_day": "24 ساعة الماضية",
|
|
||||||
"map_settings_date_range_option_days": "Past {} days",
|
|
||||||
"map_settings_date_range_option_year": "السنة الفائتة",
|
|
||||||
"map_settings_date_range_option_years": "Past {} years",
|
|
||||||
"map_settings_dialog_cancel": "يلغي",
|
|
||||||
"map_settings_dialog_save": "يحفظ",
|
|
||||||
"map_settings_dialog_title": "إعدادات الخريطة",
|
|
||||||
"map_settings_include_show_archived": "تشمل الأرشفة",
|
|
||||||
"map_settings_include_show_partners": "تضمين الشركاء",
|
|
||||||
"map_settings_only_relative_range": "نطاق الموعد",
|
|
||||||
"map_settings_only_show_favorites": "اظهار المفضلة فقط",
|
|
||||||
"map_settings_theme_settings": "مظهر الخريطة",
|
|
||||||
"map_zoom_to_see_photos": "قم بتصغيرها لرؤية الصور",
|
|
||||||
"memories_all_caught_up": "كل شيء محدث",
|
|
||||||
"memories_check_back_tomorrow": "التحقق مرة أخرى غدا لمزيد من الذكريات",
|
|
||||||
"memories_start_over": "ابدأ من جديد",
|
|
||||||
"memories_swipe_to_close": "اسحب لأعلى للإغلاق",
|
|
||||||
"memories_year_ago": "A year ago",
|
|
||||||
"memories_years_ago": "{} years ago",
|
|
||||||
"monthly_title_text_date_format": "ط ط ط",
|
|
||||||
"motion_photos_page_title": "الصور المتحركة",
|
|
||||||
"multiselect_grid_edit_date_time_err_read_only": "لا يمكن تعديل تاريخ الأصول (المواد) للقراءة فقط، سوف يتخطى",
|
|
||||||
"multiselect_grid_edit_gps_err_read_only": "لا يمكن تعديل موقع الأصول (المواد) للقراءة فقط، سوف يتخطى",
|
|
||||||
"my_albums": "My albums",
|
|
||||||
"networking_settings": "Networking",
|
|
||||||
"networking_subtitle": "Manage the server endpoint settings",
|
|
||||||
"no_assets_to_show": "لا توجد أصول لعرضها",
|
|
||||||
"no_name": "No name",
|
|
||||||
"notification_permission_dialog_cancel": "يلغي",
|
|
||||||
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
|
|
||||||
"notification_permission_dialog_settings": "إعدادات",
|
|
||||||
"notification_permission_list_tile_content": "منح إذن لتمكين الإخطارات.",
|
|
||||||
"notification_permission_list_tile_enable_button": "تمكين الإخطارات",
|
|
||||||
"notification_permission_list_tile_title": "إذن الإخطار",
|
|
||||||
"not_selected": "Not selected",
|
|
||||||
"on_this_device": "On this device",
|
|
||||||
"partner_list_user_photos": "{user}'s photos",
|
|
||||||
"partner_list_view_all": "عرض الكل",
|
|
||||||
"partner_page_add_partner": "أضف شريكًا",
|
|
||||||
"partner_page_empty_message": "لم يتم مشاركة صورك بعد مع أي شريك.",
|
|
||||||
"partner_page_no_more_users": "لا مزيد من المستخدمين لإضافة",
|
|
||||||
"partner_page_partner_add_failed": "فشل في إضافة شريك",
|
|
||||||
"partner_page_select_partner": "حدد شريكًا",
|
|
||||||
"partner_page_shared_to_title": "مشترك ل",
|
|
||||||
"partner_page_stop_sharing_content": "{} will no longer be able to access your photos.",
|
|
||||||
"partner_page_stop_sharing_title": "توقف عن مشاركة صورك؟",
|
|
||||||
"partner_page_title": "شريك",
|
|
||||||
"partners": "Partners",
|
|
||||||
"paused": "Paused",
|
|
||||||
"people": "People",
|
|
||||||
"permission_onboarding_back": "خلف",
|
|
||||||
"permission_onboarding_continue_anyway": "تواصل على أي حال",
|
|
||||||
"permission_onboarding_get_started": "البدء",
|
|
||||||
"permission_onboarding_go_to_settings": "اذهب للاعدادات",
|
|
||||||
"permission_onboarding_grant_permission": "يعطي الأذن",
|
|
||||||
"permission_onboarding_log_out": "تسجيل خروج",
|
|
||||||
"permission_onboarding_permission_denied": "تم رفض الإذن. لاستخدام التطبيق، قم بمنح أذونات الصور والفيديو في الإعدادات ",
|
|
||||||
"permission_onboarding_permission_granted": "تم تأمين التصريح! وضعك تمام.",
|
|
||||||
"permission_onboarding_permission_limited": "إذن محدود. للسماح بالنسخ الاحتياطي للتطبيق وإدارة مجموعة المعرض بالكامل، امنح أذونات الصور والفيديو في الإعدادات.",
|
|
||||||
"permission_onboarding_request": "يتطلب التطبيق إذنًا لعرض الصور ومقاطع الفيديو الخاصة بك",
|
|
||||||
"places": "Places",
|
|
||||||
"preferences_settings_subtitle": "Manage the app's preferences",
|
|
||||||
"preferences_settings_title": "التفضيلات",
|
|
||||||
"profile_drawer_app_logs": "السجلات",
|
|
||||||
"profile_drawer_client_out_of_date_major": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
|
|
||||||
"profile_drawer_client_out_of_date_minor": "تطبيق الهاتف المحمول قديم.يرجى التحديث إلى أحدث إصدار صغير.",
|
|
||||||
"profile_drawer_client_server_up_to_date": "العميل والخادم محدثان",
|
|
||||||
"profile_drawer_documentation": "توثيق",
|
|
||||||
"profile_drawer_github": "Github",
|
|
||||||
"profile_drawer_server_out_of_date_major": "الخادم قديم.يرجى التحديث إلى أحدث إصدار رئيسي.",
|
|
||||||
"profile_drawer_server_out_of_date_minor": "الخادم قديم.يرجى التحديث إلى أحدث إصدار صغير.",
|
|
||||||
"profile_drawer_settings": "إعدادات",
|
|
||||||
"profile_drawer_sign_out": "خروج",
|
|
||||||
"profile_drawer_trash": "نفايات",
|
|
||||||
"recently_added": "Recently added",
|
|
||||||
"recently_added_page_title": "أضيف مؤخرا",
|
|
||||||
"save": "Save",
|
|
||||||
"save_to_gallery": "Save to gallery",
|
|
||||||
"scaffold_body_error_occurred": "حدث خطأ",
|
|
||||||
"search_albums": "Search albums",
|
|
||||||
"search_bar_hint": "ابحث عن صورك",
|
|
||||||
"search_filter_apply": "اختار الفلتر ",
|
|
||||||
"search_filter_camera": "Camera",
|
|
||||||
"search_filter_camera_make": "صنع",
|
|
||||||
"search_filter_camera_model": "نموذج",
|
|
||||||
"search_filter_camera_title": "Select camera type",
|
|
||||||
"search_filter_contextual": "Search by context",
|
|
||||||
"search_filter_date": "Date",
|
|
||||||
"search_filter_date_interval": "{start} to {end}",
|
|
||||||
"search_filter_date_title": "Select a date range",
|
|
||||||
"search_filter_description": "Search by description",
|
|
||||||
"search_filter_display_option_archive": "أرشيف",
|
|
||||||
"search_filter_display_option_favorite": "مفضل",
|
|
||||||
"search_filter_display_option_not_in_album": "ليس في الألبوم",
|
|
||||||
"search_filter_display_options": "Display Options",
|
|
||||||
"search_filter_display_options_title": "Display options",
|
|
||||||
"search_filter_filename": "Search by file name",
|
|
||||||
"search_filter_location": "Location",
|
|
||||||
"search_filter_location_city": "مدينة",
|
|
||||||
"search_filter_location_country": "دولة",
|
|
||||||
"search_filter_location_state": "ولاية",
|
|
||||||
"search_filter_location_title": "Select location",
|
|
||||||
"search_filter_media_type": "Media Type",
|
|
||||||
"search_filter_media_type_all": "الجميع",
|
|
||||||
"search_filter_media_type_image": "صورة",
|
|
||||||
"search_filter_media_type_title": "Select media type",
|
|
||||||
"search_filter_media_type_video": "شريط فيديو",
|
|
||||||
"search_filter_people": "People",
|
|
||||||
"search_filter_people_hint": "Filter people",
|
|
||||||
"search_filter_people_title": "Select people",
|
|
||||||
"search_no_more_result": "No more results",
|
|
||||||
"search_no_result": "No results found, try a different search term or combination",
|
|
||||||
"search_page_categories": "فئات",
|
|
||||||
"search_page_favorites": "المفضلة",
|
|
||||||
"search_page_motion_photos": "الصور المتحركه",
|
|
||||||
"search_page_no_objects": "لا توجد معلومات عن أشياء متاحة",
|
|
||||||
"search_page_no_places": "لا توجد معلومات متوفرة للأماكن",
|
|
||||||
"search_page_people": "الناس",
|
|
||||||
"search_page_person_add_name_dialog_cancel": "يلغي",
|
|
||||||
"search_page_person_add_name_dialog_hint": "اسم",
|
|
||||||
"search_page_person_add_name_dialog_save": "يحفظ",
|
|
||||||
"search_page_person_add_name_dialog_title": "أضف اسمًا",
|
|
||||||
"search_page_person_add_name_subtitle": "ابحث عنهم سريعًا بالاسم مع البحث",
|
|
||||||
"search_page_person_add_name_title": "أضف اسمًا",
|
|
||||||
"search_page_person_edit_name": "تعديل الاسم",
|
|
||||||
"search_page_places": "أماكن",
|
|
||||||
"search_page_recently_added": "أضيف مؤخرا",
|
|
||||||
"search_page_screenshots": "لقطات الشاشة",
|
|
||||||
"search_page_search_photos_videos": "Search for your photos and videos",
|
|
||||||
"search_page_selfies": " صور ذاتيه",
|
|
||||||
"search_page_things": "أشياء",
|
|
||||||
"search_page_videos": "أشرطة فيديو",
|
|
||||||
"search_page_view_all_button": "عرض الكل",
|
|
||||||
"search_page_your_activity": "نشاطك",
|
|
||||||
"search_page_your_map": "خريطتك",
|
|
||||||
"search_result_page_new_search_hint": "بحث جديد",
|
|
||||||
"search_suggestion_list_smart_search_hint_1": "يتم تمكين البحث الذكي افتراضيًا ، للبحث عن البيانات الوصفية ، استخدم بناء الجملة",
|
|
||||||
"search_suggestion_list_smart_search_hint_2": "م: البحث الخاص بك",
|
|
||||||
"select_additional_user_for_sharing_page_suggestions": "اقتراحات",
|
|
||||||
"select_user_for_sharing_page_err_album": "فشل في إنشاء ألبوم",
|
|
||||||
"select_user_for_sharing_page_share_suggestions": "اقتراحات",
|
|
||||||
"server_endpoint": "Server Endpoint",
|
|
||||||
"server_info_box_app_version": "نسخة التطبيق",
|
|
||||||
"server_info_box_latest_release": "احدث اصدار",
|
|
||||||
"server_info_box_server_url": "عنوان URL الخادم",
|
|
||||||
"server_info_box_server_version": "إصدار الخادم",
|
|
||||||
"setting_image_viewer_help": "يقوم عارض التفاصيل بتحميل الصورة المصغرة الصغيرة أولاً ، ثم يقوم بتحميل المعاينة متوسطة الحجم (إذا تم تمكينها) ، ويقوم أخيرًا بتحميل الأصل (إذا تم تمكينه).",
|
|
||||||
"setting_image_viewer_original_subtitle": "تمكين تحميل الصورة الكاملة الدقة الأصلية (كبيرة!).تعطيل لتقليل استخدام البيانات (كل من الشبكة وعلى ذاكرة التخزين المؤقت للجهاز).",
|
|
||||||
"setting_image_viewer_original_title": "تحميل الصورة الأصلية",
|
|
||||||
"setting_image_viewer_preview_subtitle": "تمكين تحميل صورة متوسطة الدقة.تعطيل إما لتحميل مباشرة أو استخدام الصورة المصغرة مباشرة.",
|
|
||||||
"setting_image_viewer_preview_title": "تحميل صورة معاينة",
|
|
||||||
"setting_image_viewer_title": "الصور",
|
|
||||||
"setting_languages_apply": "تغيير الإعدادات",
|
|
||||||
"setting_languages_subtitle": "Change the app's language",
|
|
||||||
"setting_languages_title": "اللغات",
|
|
||||||
"setting_notifications_notify_failures_grace_period": "Notify background backup failures: {}",
|
|
||||||
"setting_notifications_notify_hours": "{} hours",
|
|
||||||
"setting_notifications_notify_immediately": "في الحال",
|
|
||||||
"setting_notifications_notify_minutes": "{} minutes",
|
|
||||||
"setting_notifications_notify_never": "أبداً",
|
|
||||||
"setting_notifications_notify_seconds": "{} seconds",
|
|
||||||
"setting_notifications_single_progress_subtitle": "معلومات التقدم التفصيلية تحميل لكل أصل",
|
|
||||||
"setting_notifications_single_progress_title": "إظهار تقدم التفاصيل الاحتياطية الخلفية",
|
|
||||||
"setting_notifications_subtitle": "اضبط تفضيلات الإخطار",
|
|
||||||
"setting_notifications_title": "إشعارات",
|
|
||||||
"setting_notifications_total_progress_subtitle": "التقدم التحميل العام (تم القيام به/إجمالي الأصول)",
|
|
||||||
"setting_notifications_total_progress_title": "إظهار النسخ الاحتياطي الخلفية التقدم المحرز",
|
|
||||||
"setting_pages_app_bar_settings": "إعدادات",
|
|
||||||
"settings_require_restart": "يرجى إعادة تشغيل لتطبيق هذا الإعداد",
|
|
||||||
"setting_video_viewer_looping_subtitle": "تمكين تكرار مقطع فيديو تلقائيًا في عارض التفاصيل.",
|
|
||||||
"setting_video_viewer_looping_title": "تكرار مقطع فيديو تلقائيًا",
|
|
||||||
"setting_video_viewer_original_video_subtitle": "When streaming a video from the server, play the original even when a transcode is available. May lead to buffering. Videos available locally are played in original quality regardless of this setting.",
|
|
||||||
"setting_video_viewer_original_video_title": "Force original video",
|
|
||||||
"setting_video_viewer_title": "أشرطة فيديو",
|
|
||||||
"share_add": "يضيف",
|
|
||||||
"share_add_photos": "إضافة الصور",
|
|
||||||
"share_add_title": "إضافة عنوان",
|
|
||||||
"share_assets_selected": "{} selected",
|
|
||||||
"share_create_album": "إنشاء ألبوم",
|
|
||||||
"shared_album_activities_input_disable": "التعليق معطل",
|
|
||||||
"shared_album_activities_input_hint": "قل شيئا",
|
|
||||||
"shared_album_activity_remove_content": "هل تريد حذف هذا النشاط؟",
|
|
||||||
"shared_album_activity_remove_title": "حذف النشاط",
|
|
||||||
"shared_album_activity_setting_subtitle": "دع الآخرين يستجيبون",
|
|
||||||
"shared_album_activity_setting_title": "التعليقات والأحب",
|
|
||||||
"shared_album_section_people_action_error": "خطأ ترك/إزالة من الألبوم",
|
|
||||||
"shared_album_section_people_action_leave": "إزالة المستخدم من الألبوم",
|
|
||||||
"shared_album_section_people_action_remove_user": "إزالة المستخدم من الألبوم",
|
|
||||||
"shared_album_section_people_owner_label": "مالك",
|
|
||||||
"shared_album_section_people_title": "الناس",
|
|
||||||
"share_dialog_preparing": "تحضير...",
|
|
||||||
"shared_intent_upload_button_progress_text": "{} / {} Uploaded",
|
|
||||||
"shared_link_app_bar_title": "روابط مشتركة",
|
|
||||||
"shared_link_clipboard_copied_massage": "نسخ إلى الحافظة",
|
|
||||||
"shared_link_clipboard_text": "Link: {}\nPassword: {}",
|
|
||||||
"shared_link_create_app_bar_title": "إنشاء رابط للمشاركة",
|
|
||||||
"shared_link_create_error": "خطأ أثناء إنشاء رابط مشترك",
|
|
||||||
"shared_link_create_info": "دع أي شخص لديه الرابط يرى الصور المحددة)",
|
|
||||||
"shared_link_create_submit_button": "إنشاء رابط",
|
|
||||||
"shared_link_edit_allow_download": "السماح للمستخدم العام بالتنزيل",
|
|
||||||
"shared_link_edit_allow_upload": "السماح للمستخدم العام بالتحميل",
|
|
||||||
"shared_link_edit_app_bar_title": "تغيير الرابط",
|
|
||||||
"shared_link_edit_change_expiry": "تغيير وقت انتهاء الصلاحية",
|
|
||||||
"shared_link_edit_description": "وصف",
|
|
||||||
"shared_link_edit_description_hint": "أدخل وصف المشاركة",
|
|
||||||
"shared_link_edit_expire_after": "تنتهي بعد",
|
|
||||||
"shared_link_edit_expire_after_option_day": "يوم 1",
|
|
||||||
"shared_link_edit_expire_after_option_days": "{} days",
|
|
||||||
"shared_link_edit_expire_after_option_hour": "1 ساعة",
|
|
||||||
"shared_link_edit_expire_after_option_hours": "{} hours",
|
|
||||||
"shared_link_edit_expire_after_option_minute": "1 دقيقة",
|
|
||||||
"shared_link_edit_expire_after_option_minutes": "{} minutes",
|
|
||||||
"shared_link_edit_expire_after_option_months": "{} months",
|
|
||||||
"shared_link_edit_expire_after_option_never": "أبداً",
|
|
||||||
"shared_link_edit_expire_after_option_year": "{} year",
|
|
||||||
"shared_link_edit_password": "كلمة المرور",
|
|
||||||
"shared_link_edit_password_hint": "أدخل كلمة مرور المشاركة",
|
|
||||||
"shared_link_edit_show_meta": "عرض البيانات الوصفية",
|
|
||||||
"shared_link_edit_submit_button": "تحديث الرابط",
|
|
||||||
"shared_link_empty": "ليس لديك أي روابط مشتركة",
|
|
||||||
"shared_link_error_server_url_fetch": "لا يمكن جلب عنوان الخادم",
|
|
||||||
"shared_link_expired": "منتهي الصلاحية",
|
|
||||||
"shared_link_expires_day": "Expires in {} day",
|
|
||||||
"shared_link_expires_days": "Expires in {} days",
|
|
||||||
"shared_link_expires_hour": "Expires in {} hour",
|
|
||||||
"shared_link_expires_hours": "Expires in {} hours",
|
|
||||||
"shared_link_expires_minute": "Expires in {} minute",
|
|
||||||
"shared_link_expires_minutes": "Expires in {} minutes",
|
|
||||||
"shared_link_expires_never": "تنتهي ∞",
|
|
||||||
"shared_link_expires_second": "Expires in {} second",
|
|
||||||
"shared_link_expires_seconds": "Expires in {} seconds",
|
|
||||||
"shared_link_individual_shared": "Individual shared",
|
|
||||||
"shared_link_info_chip_download": "تحميل",
|
|
||||||
"shared_link_info_chip_metadata": "EXIF",
|
|
||||||
"shared_link_info_chip_upload": "رفع",
|
|
||||||
"shared_link_manage_links": "إدارة الروابط المشتركة",
|
|
||||||
"shared_link_public_album": "الألبوم العام",
|
|
||||||
"shared_links": "Shared links",
|
|
||||||
"share_done": "منتهي",
|
|
||||||
"shared_with_me": "Shared with me",
|
|
||||||
"share_invite": "دعوة إلى الألبوم",
|
|
||||||
"sharing_page_album": "ألبومات مشتركة",
|
|
||||||
"sharing_page_description": "قم بإنشاء ألبومات مشتركة لمشاركة الصور ومقاطع الفيديو مع أشخاص في شبكتك.",
|
|
||||||
"sharing_page_empty_list": "قائمة فارغة",
|
|
||||||
"sharing_silver_appbar_create_shared_album": "ألبوم مشترك جديد",
|
|
||||||
"sharing_silver_appbar_shared_links": "روابط مشتركة",
|
|
||||||
"sharing_silver_appbar_share_partner": "شارك مع الشريك",
|
|
||||||
"start_date": "Start date",
|
|
||||||
"sync": "Sync",
|
|
||||||
"sync_albums": "Sync albums",
|
|
||||||
"sync_albums_manual_subtitle": "Sync all uploaded videos and photos to the selected backup albums",
|
|
||||||
"sync_upload_album_setting_subtitle": "Create and upload your photos and videos to the selected albums on Immich",
|
|
||||||
"tab_controller_nav_library": "مكتبة",
|
|
||||||
"tab_controller_nav_photos": "الصور",
|
|
||||||
"tab_controller_nav_search": "يبحث",
|
|
||||||
"tab_controller_nav_sharing": "مشاركة",
|
|
||||||
"theme_setting_asset_list_storage_indicator_title": "عرض مؤشر التخزين على بلاط الأصول",
|
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Number of assets per row ({})",
|
|
||||||
"theme_setting_colorful_interface_subtitle": "Apply primary color to background surfaces.",
|
|
||||||
"theme_setting_colorful_interface_title": "Colorful interface",
|
|
||||||
"theme_setting_dark_mode_switch": "الوضع المظلم",
|
|
||||||
"theme_setting_image_viewer_quality_subtitle": "اضبط جودة عارض الصورة التفصيلية",
|
|
||||||
"theme_setting_image_viewer_quality_title": "جودة عارض الصورة",
|
|
||||||
"theme_setting_primary_color_subtitle": "Pick a color for primary actions and accents.",
|
|
||||||
"theme_setting_primary_color_title": "Primary color",
|
|
||||||
"theme_setting_system_primary_color_title": "Use system color",
|
|
||||||
"theme_setting_system_theme_switch": "تلقائي (اتبع إعداد النظام)",
|
|
||||||
"theme_setting_theme_subtitle": "اختر إعدادات مظهر التطبيق",
|
|
||||||
"theme_setting_theme_title": "مظهر",
|
|
||||||
"theme_setting_three_stage_loading_subtitle": "قد يزيد التحميل من ثلاث مراحل من أداء التحميل ولكنه يسبب تحميل شبكة أعلى بكثير",
|
|
||||||
"theme_setting_three_stage_loading_title": "تمكين تحميل ثلاث مراحل",
|
|
||||||
"translated_text_options": "خيارات",
|
|
||||||
"trash": "Trash",
|
|
||||||
"trash_emptied": "Emptied trash",
|
|
||||||
"trash_page_delete": "مسح",
|
|
||||||
"trash_page_delete_all": "حذف الكل",
|
|
||||||
"trash_page_empty_trash_btn": "افرغ سله المهملات ",
|
|
||||||
"trash_page_empty_trash_dialog_content": "هل تريد تفريغ أصولك المهملة؟ ستتم إزالة هذه العناصر نهائيًا من التطبيق",
|
|
||||||
"trash_page_empty_trash_dialog_ok": "نعم",
|
|
||||||
"trash_page_info": "Trashed items will be permanently deleted after {} days",
|
|
||||||
"trash_page_no_assets": "لا توجد اصول في سله المهملات",
|
|
||||||
"trash_page_restore": "الترجيع من سله المهملات",
|
|
||||||
"trash_page_restore_all": "استعادة الكل",
|
|
||||||
"trash_page_select_assets_btn": "اختر الأصول ",
|
|
||||||
"trash_page_select_btn": "يختار",
|
|
||||||
"trash_page_title": "Trash ({})",
|
|
||||||
"upload": "Upload",
|
|
||||||
"upload_dialog_cancel": "يلغي",
|
|
||||||
"upload_dialog_info": "هل تريد النسخ الاحتياطي للأصول (الأصول) المحددة إلى الخادم؟",
|
|
||||||
"upload_dialog_ok": "رفع",
|
|
||||||
"upload_dialog_title": "تحميل الأصول",
|
|
||||||
"uploading": "Uploading",
|
|
||||||
"upload_to_immich": "Upload to Immich ({})",
|
|
||||||
"use_current_connection": "use current connection",
|
|
||||||
"validate_endpoint_error": "Please enter a valid URL",
|
|
||||||
"version_announcement_overlay_ack": "يُقرّ",
|
|
||||||
"version_announcement_overlay_release_notes": "ملاحظات الإصدار",
|
|
||||||
"version_announcement_overlay_text_1": "مرحبًا يا صديقي ، هناك إصدار جديد",
|
|
||||||
"version_announcement_overlay_text_2": "من فضلك خذ وقتك لزيارة",
|
|
||||||
"version_announcement_overlay_text_3": " and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
|
|
||||||
"version_announcement_overlay_title": "نسخه جديده متاحه للخادم ",
|
|
||||||
"videos": "Videos",
|
|
||||||
"viewer_remove_from_stack": "حذف من الكومه أو المجموعة",
|
|
||||||
"viewer_stack_use_as_main_asset": "استخدم كأصل رئيسي",
|
|
||||||
"viewer_unstack": "فك الكومه",
|
|
||||||
"wifi_name": "WiFi Name",
|
|
||||||
"your_wifi_name": "Your WiFi name"
|
|
||||||
}
|
|
||||||
@@ -1,692 +0,0 @@
|
|||||||
{
|
|
||||||
"action_common_back": "Enrere",
|
|
||||||
"action_common_cancel": "Cancel·lar",
|
|
||||||
"action_common_clear": "Buida",
|
|
||||||
"action_common_confirm": "Confirmar",
|
|
||||||
"action_common_save": "Desa",
|
|
||||||
"action_common_select": "Selecciona",
|
|
||||||
"action_common_update": "Actualitzar",
|
|
||||||
"add_a_name": "Afegeix un nom",
|
|
||||||
"add_endpoint": "afegir endpoint",
|
|
||||||
"add_to_album_bottom_sheet_added": "Afegit a {album}",
|
|
||||||
"add_to_album_bottom_sheet_already_exists": "Ja està a {album}",
|
|
||||||
"advanced_settings_log_level_title": "Nivell de registre: {}",
|
|
||||||
"advanced_settings_prefer_remote_subtitle": "Alguns dispositius són molt lents en carregar miniatures dels elements del dispositiu. Activeu aquest paràmetre per carregar imatges remotes en el seu lloc.",
|
|
||||||
"advanced_settings_prefer_remote_title": "Prefereix imatges remotes",
|
|
||||||
"advanced_settings_proxy_headers_subtitle": "Definiu les capçaleres de proxy que Immich per enviar amb cada sol·licitud de xarxa",
|
|
||||||
"advanced_settings_proxy_headers_title": "Capçaleres de proxy",
|
|
||||||
"advanced_settings_self_signed_ssl_subtitle": "Omet la verificació del certificat SSL del servidor. Requerit per a certificats autosignats.",
|
|
||||||
"advanced_settings_self_signed_ssl_title": "Permet certificats SSL autosignats",
|
|
||||||
"advanced_settings_tile_subtitle": "Configuració avançada de l'usuari",
|
|
||||||
"advanced_settings_tile_title": "Avançat",
|
|
||||||
"advanced_settings_troubleshooting_subtitle": "Habilita funcions addicionals per a la resolució de problemes",
|
|
||||||
"advanced_settings_troubleshooting_title": "Resolució de problemes",
|
|
||||||
"album_info_card_backup_album_excluded": "Exclosos",
|
|
||||||
"album_info_card_backup_album_included": "Inclosos",
|
|
||||||
"albums": "Àlbums",
|
|
||||||
"album_thumbnail_card_item": "1 element",
|
|
||||||
"album_thumbnail_card_items": "{} elements",
|
|
||||||
"album_thumbnail_card_shared": " · Compartit",
|
|
||||||
"album_thumbnail_owned": "Propi",
|
|
||||||
"album_thumbnail_shared_by": "Compartit per {}",
|
|
||||||
"album_viewer_appbar_delete_confirm": "Confirmes que vols suprimir aquest àlbum del teu compte?",
|
|
||||||
"album_viewer_appbar_share_delete": "Esborra l'àlbum",
|
|
||||||
"album_viewer_appbar_share_err_delete": "Error al esborrar l'àlbum",
|
|
||||||
"album_viewer_appbar_share_err_leave": "Error al sortir de l'àlbum",
|
|
||||||
"album_viewer_appbar_share_err_remove": "Hi ha hagut problemes al treure elements de l'àlbum",
|
|
||||||
"album_viewer_appbar_share_err_title": "Error al modificar el títol de l'àlbum",
|
|
||||||
"album_viewer_appbar_share_leave": "Surt de l'àlbum",
|
|
||||||
"album_viewer_appbar_share_remove": "Treu de l'àlbum",
|
|
||||||
"album_viewer_appbar_share_to": "Comparteix amb",
|
|
||||||
"album_viewer_page_share_add_users": "Afegeix usuaris",
|
|
||||||
"all": "Tot",
|
|
||||||
"all_people_page_title": "Persones",
|
|
||||||
"all_videos_page_title": "Vídeos",
|
|
||||||
"app_bar_signout_dialog_content": "Estàs segur que vols tancar la sessió?",
|
|
||||||
"app_bar_signout_dialog_ok": "Sí",
|
|
||||||
"app_bar_signout_dialog_title": "Tanca la sessió",
|
|
||||||
"archived": "Arxivat",
|
|
||||||
"archive_page_no_archived_assets": "No s'ha trobat res arxivat",
|
|
||||||
"archive_page_title": "Arxiu({})",
|
|
||||||
"asset_action_delete_err_read_only": "No es poden esborrar el fitxer(s) de només lectura, ometent",
|
|
||||||
"asset_action_share_err_offline": "No s'ha pogut obtenir el fitxer(s) sense connexió, ometent",
|
|
||||||
"asset_list_group_by_sub_title": "Agrupar per",
|
|
||||||
"asset_list_layout_settings_dynamic_layout_title": "Disseny dinàmic",
|
|
||||||
"asset_list_layout_settings_group_automatically": "Automàtic",
|
|
||||||
"asset_list_layout_settings_group_by": "Agrupa elements per",
|
|
||||||
"asset_list_layout_settings_group_by_month": "Mes",
|
|
||||||
"asset_list_layout_settings_group_by_month_day": "Mes + dia",
|
|
||||||
"asset_list_layout_sub_title": "Disseny",
|
|
||||||
"asset_list_settings_subtitle": "Configuració del disseny de la graella de fotos",
|
|
||||||
"asset_list_settings_title": "Graella de fotos",
|
|
||||||
"asset_restored_successfully": "Element recuperat correctament",
|
|
||||||
"assets_deleted_permanently": "{} element(s) esborrats permanentment",
|
|
||||||
"assets_deleted_permanently_from_server": "{} element(s) esborrats permanentment del servidor d'Immich",
|
|
||||||
"assets_removed_permanently_from_device": "{} element(s) esborrat permanentment del dispositiu",
|
|
||||||
"assets_restored_successfully": "{} element(s) recuperats correctament",
|
|
||||||
"assets_trashed": "{} element(s) enviat a la paperera",
|
|
||||||
"assets_trashed_from_server": "{} element(s) enviat a la paperera del servidor d'Immich",
|
|
||||||
"asset_viewer_settings_subtitle": "Gestiona la configuració del visualitzador de la galeria",
|
|
||||||
"asset_viewer_settings_title": "Visor d'arxius",
|
|
||||||
"automatic_endpoint_switching_subtitle": "Connecteu-vos localment a través de la Wi-Fi designada quan estigui disponible i utilitzeu connexions alternatives en altres llocs",
|
|
||||||
"automatic_endpoint_switching_title": "Canvi automàtic d'URL",
|
|
||||||
"background_location_permission": "Permís d'ubicació en segon pla",
|
|
||||||
"background_location_permission_content": "Per canviar de xarxa quan s'executa en segon pla, Immich ha de *sempre* tenir accés a la ubicació precisa perquè l'aplicació pugui llegir el nom de la xarxa Wi-Fi",
|
|
||||||
"backup_album_selection_page_albums_device": "Àlbums al dispositiu ({})",
|
|
||||||
"backup_album_selection_page_albums_tap": "Un toc per incloure, doble toc per excloure",
|
|
||||||
"backup_album_selection_page_assets_scatter": "Els elements poden dispersar-se en diversos àlbums. Per tant, els àlbums es poden incloure o excloure durant el procés de còpia de seguretat.",
|
|
||||||
"backup_album_selection_page_select_albums": "Selecciona àlbums",
|
|
||||||
"backup_album_selection_page_selection_info": "Informació de la selecció",
|
|
||||||
"backup_album_selection_page_total_assets": "Total d'elements únics",
|
|
||||||
"backup_all": "Tots",
|
|
||||||
"backup_background_service_backup_failed_message": "No s'ha pogut copiar els elements. Tornant a intentar…",
|
|
||||||
"backup_background_service_connection_failed_message": "No s'ha pogut connectar al servidor. Tornant a intentar…",
|
|
||||||
"backup_background_service_current_upload_notification": "Pujant {}",
|
|
||||||
"backup_background_service_default_notification": "Cercant nous elements...",
|
|
||||||
"backup_background_service_error_title": "Error copiant",
|
|
||||||
"backup_background_service_in_progress_notification": "Copiant els teus elements",
|
|
||||||
"backup_background_service_upload_failure_notification": "Error al pujar {}",
|
|
||||||
"backup_controller_page_albums": "Copia els àlbums",
|
|
||||||
"backup_controller_page_background_app_refresh_disabled_content": "Activa l'actualització en segon pla de l'aplicació a Configuració > General > Actualització en segon pla per utilitzar la copia de seguretat en segon pla.",
|
|
||||||
"backup_controller_page_background_app_refresh_disabled_title": "Actualització en segon pla desactivada",
|
|
||||||
"backup_controller_page_background_app_refresh_enable_button_text": "Vés a configuració",
|
|
||||||
"backup_controller_page_background_battery_info_link": "Mostra'm com",
|
|
||||||
"backup_controller_page_background_battery_info_message": "Per obtenir la millor experiència de copia de seguretat en segon pla, desactiveu qualsevol optimització de bateria que restringeixi l'activitat en segon pla per a Immich.\n\nAtès que això és específic del dispositiu, busqueu la informació necessària per al fabricant del vostre dispositiu",
|
|
||||||
"backup_controller_page_background_battery_info_ok": "D'acord",
|
|
||||||
"backup_controller_page_background_battery_info_title": "Optimitzacions de bateria",
|
|
||||||
"backup_controller_page_background_charging": "Només mentre es carrega",
|
|
||||||
"backup_controller_page_background_configure_error": "No s'ha pogut configurar el servei en segon pla",
|
|
||||||
"backup_controller_page_background_delay": "Retard en la copia de seguretat de nous elements: {}",
|
|
||||||
"backup_controller_page_background_description": "Activeu el servei en segon pla per copiar automàticament tots els nous elements sense haver d'obrir l'aplicació.",
|
|
||||||
"backup_controller_page_background_is_off": "La còpia automàtica en segon pla està desactivada",
|
|
||||||
"backup_controller_page_background_is_on": "La còpia automàtica en segon pla està activada",
|
|
||||||
"backup_controller_page_background_turn_off": "Desactiva el servei en segon pla",
|
|
||||||
"backup_controller_page_background_turn_on": "Activa el servei en segon pla",
|
|
||||||
"backup_controller_page_background_wifi": "Només amb WiFi",
|
|
||||||
"backup_controller_page_backup": "Còpia",
|
|
||||||
"backup_controller_page_backup_selected": "Seleccionat: ",
|
|
||||||
"backup_controller_page_backup_sub": "Fotografies i vídeos copiats",
|
|
||||||
"backup_controller_page_cancel": "Cancel·la",
|
|
||||||
"backup_controller_page_created": "Creat el: {}",
|
|
||||||
"backup_controller_page_desc_backup": "Activeu la còpia de seguretat per pujar automàticament els nous elements al servidor en obrir l'aplicació.",
|
|
||||||
"backup_controller_page_excluded": "Exclosos:",
|
|
||||||
"backup_controller_page_failed": "Fallats ({})",
|
|
||||||
"backup_controller_page_filename": "Nom de l'arxiu: {} [{}]",
|
|
||||||
"backup_controller_page_id": "ID: {}",
|
|
||||||
"backup_controller_page_info": "Informació de la còpia",
|
|
||||||
"backup_controller_page_none_selected": "Cap seleccionat",
|
|
||||||
"backup_controller_page_remainder": "Restant",
|
|
||||||
"backup_controller_page_remainder_sub": "Fotografies i vídeos restants per copiar de la selecció",
|
|
||||||
"backup_controller_page_select": "Selecciona",
|
|
||||||
"backup_controller_page_server_storage": "Emmagatzematge del servidor",
|
|
||||||
"backup_controller_page_start_backup": "Inicia la còpia",
|
|
||||||
"backup_controller_page_status_off": "La copia de seguretat està desactivada",
|
|
||||||
"backup_controller_page_status_on": "La copia de seguretat està activada",
|
|
||||||
"backup_controller_page_storage_format": "{} de {} utilitzats",
|
|
||||||
"backup_controller_page_to_backup": "Àlbums a copiar",
|
|
||||||
"backup_controller_page_total": "Total",
|
|
||||||
"backup_controller_page_total_sub": "Totes les fotografies i vídeos dels àlbums seleccionats",
|
|
||||||
"backup_controller_page_turn_off": "Desactiva la còpia de seguretat",
|
|
||||||
"backup_controller_page_turn_on": "Activa la còpia de seguretat",
|
|
||||||
"backup_controller_page_uploading_file_info": "S'està pujant la informació del fitxer",
|
|
||||||
"backup_err_only_album": "No es pot eliminar l'únic àlbum",
|
|
||||||
"backup_info_card_assets": "elements",
|
|
||||||
"backup_manual_cancelled": "Cancel·lat",
|
|
||||||
"backup_manual_failed": "Fallat",
|
|
||||||
"backup_manual_in_progress": "La pujada ja està en curs. Torneu-ho a provar més tard",
|
|
||||||
"backup_manual_success": "Èxit",
|
|
||||||
"backup_manual_title": "Estat de pujada",
|
|
||||||
"backup_options_page_title": "Opcions de còpia de seguretat",
|
|
||||||
"backup_setting_subtitle": "Gestiona la configuració de càrrega en segon pla i en primer pla",
|
|
||||||
"cache_settings_album_thumbnails": "Miniatures de la pàgina de la biblioteca ({} elements)",
|
|
||||||
"cache_settings_clear_cache_button": "Neteja la memòria cau",
|
|
||||||
"cache_settings_clear_cache_button_title": "Neteja la memòria cau de l'aplicació. Això impactarà significativament el rendiment fins que la memòria cau es torni a reconstruir.",
|
|
||||||
"cache_settings_duplicated_assets_clear_button": "NETEJA",
|
|
||||||
"cache_settings_duplicated_assets_subtitle": "Fotos i vídeos que estan a la llista negra de l'aplicació.",
|
|
||||||
"cache_settings_duplicated_assets_title": "Elements duplicats ({})",
|
|
||||||
"cache_settings_image_cache_size": "Mida de la memòria cau de imatges ({} elements)",
|
|
||||||
"cache_settings_statistics_album": "Miniatures de la biblioteca",
|
|
||||||
"cache_settings_statistics_assets": "{} elements ({})",
|
|
||||||
"cache_settings_statistics_full": "Imatges completes",
|
|
||||||
"cache_settings_statistics_shared": "Miniatures d'àlbums compartits",
|
|
||||||
"cache_settings_statistics_thumbnail": "Miniatures",
|
|
||||||
"cache_settings_statistics_title": "Ús de memòria cau",
|
|
||||||
"cache_settings_subtitle": "Controla el comportament de la memòria cau de l'aplicació mòbil Immich",
|
|
||||||
"cache_settings_thumbnail_size": "Mida de la memòria cau de les miniatures ({} elements)",
|
|
||||||
"cache_settings_tile_subtitle": "Controla el comportament de l'emmagatzematge local",
|
|
||||||
"cache_settings_tile_title": "Emmagatzematge local",
|
|
||||||
"cache_settings_title": "Configuració de la memòria cau",
|
|
||||||
"cancel": "Cancel·la",
|
|
||||||
"canceled": "Cancel·lat",
|
|
||||||
"change_display_order": "Canvia l'ordre de visualització",
|
|
||||||
"change_password_form_confirm_password": "Confirma la contrasenya",
|
|
||||||
"change_password_form_description": "Hola {name},\n\nAquesta és la primera vegada que inicies sessió al sistema o bé s'ha sol·licitat canviar la teva contrasenya. Si us plau, introdueix la nova contrasenya a continuació.",
|
|
||||||
"change_password_form_new_password": "Nova contrasenya",
|
|
||||||
"change_password_form_password_mismatch": "Les contrasenyes no coincideixen",
|
|
||||||
"change_password_form_reenter_new_password": "Torna a introduir la nova contrasenya",
|
|
||||||
"check_corrupt_asset_backup": "Comprovar les còpies de seguretat corruptes",
|
|
||||||
"check_corrupt_asset_backup_button": "Realitzar comprovació",
|
|
||||||
"check_corrupt_asset_backup_description": "Executeu aquesta comprovació només mitjançant Wi-Fi i un cop s'hagi fet una còpia de seguretat de tots els actius. El procediment pot trigar uns minuts.",
|
|
||||||
"client_cert_dialog_msg_confirm": "OK",
|
|
||||||
"client_cert_enter_password": "Introdueix la contrasenya",
|
|
||||||
"client_cert_import": "Importar",
|
|
||||||
"client_cert_import_success_msg": "S'ha importat el certificat del client",
|
|
||||||
"client_cert_invalid_msg": "Fitxer de certificat no vàlid o contrasenya incorrecta",
|
|
||||||
"client_cert_remove": "Eliminar",
|
|
||||||
"client_cert_remove_msg": "S'ha eliminat el certificat del client",
|
|
||||||
"client_cert_subtitle": "Només admet el format PKCS12 (.p12, .pfx). La importació/eliminació de certificats només està disponible abans d'iniciar sessió",
|
|
||||||
"client_cert_title": "Certificat de client SSL",
|
|
||||||
"common_add_to_album": "Afegir a l'àlbum",
|
|
||||||
"common_change_password": "Canvia la contrasenya",
|
|
||||||
"common_create_new_album": "Crea un àlbum nou",
|
|
||||||
"common_server_error": "Si us plau, comproveu la vostra connexió de xarxa, assegureu-vos que el servidor és accessible i que les versions de l'aplicació i del servidor són compatibles.",
|
|
||||||
"common_shared": "Compartit",
|
|
||||||
"completed": "Completat",
|
|
||||||
"contextual_search": "Sortida del sol a la platja",
|
|
||||||
"control_bottom_app_bar_add_to_album": "Afegir a l'àlbum",
|
|
||||||
"control_bottom_app_bar_album_info": "{} elements",
|
|
||||||
"control_bottom_app_bar_album_info_shared": "{} elements - Compartits",
|
|
||||||
"control_bottom_app_bar_archive": "Arxiu",
|
|
||||||
"control_bottom_app_bar_create_new_album": "Crea un àlbum nou",
|
|
||||||
"control_bottom_app_bar_delete": "Esborra",
|
|
||||||
"control_bottom_app_bar_delete_from_immich": "Suprimeix del Immich",
|
|
||||||
"control_bottom_app_bar_delete_from_local": "Suprimeix del dispositiu",
|
|
||||||
"control_bottom_app_bar_download": "Descarrega",
|
|
||||||
"control_bottom_app_bar_edit": "Edita",
|
|
||||||
"control_bottom_app_bar_edit_location": "Edita la ubicació",
|
|
||||||
"control_bottom_app_bar_edit_time": "Edita data i hora",
|
|
||||||
"control_bottom_app_bar_favorite": "Preferit",
|
|
||||||
"control_bottom_app_bar_share": "Comparteix",
|
|
||||||
"control_bottom_app_bar_share_link": "Comparteix l'enllaç",
|
|
||||||
"control_bottom_app_bar_share_to": "Comparteix a",
|
|
||||||
"control_bottom_app_bar_stack": "Apilar",
|
|
||||||
"control_bottom_app_bar_trash_from_immich": "Mou a paperera",
|
|
||||||
"control_bottom_app_bar_unarchive": "Desarxiva",
|
|
||||||
"control_bottom_app_bar_unfavorite": "No preferit",
|
|
||||||
"control_bottom_app_bar_upload": "Puja",
|
|
||||||
"create_album": "Crear àlbum",
|
|
||||||
"create_album_page_untitled": "Sense títol",
|
|
||||||
"create_new": "CREAR NOU",
|
|
||||||
"create_shared_album_page_create": "Crea",
|
|
||||||
"create_shared_album_page_share": "Comparteix",
|
|
||||||
"create_shared_album_page_share_add_assets": "AFEGEIX ELEMENTS",
|
|
||||||
"create_shared_album_page_share_select_photos": "Escull fotografies",
|
|
||||||
"crop": "Retalla",
|
|
||||||
"curated_location_page_title": "Localitzacions",
|
|
||||||
"curated_object_page_title": "Coses",
|
|
||||||
"current_server_address": "Adreça actual del servidor",
|
|
||||||
"daily_title_text_date": "E, dd MMM",
|
|
||||||
"daily_title_text_date_year": "E, dd MMM, yyyy",
|
|
||||||
"date_format": "E, d LLL, y • hh:mm",
|
|
||||||
"delete_dialog_alert": "Aquests elements seran eliminats de manera permanent d'Immich i del vostre dispositiu.",
|
|
||||||
"delete_dialog_alert_local": "Aquests elements s'eliminaran permanentment del vostre dispositiu, però encara estaran disponibles al servidor Immich",
|
|
||||||
"delete_dialog_alert_local_non_backed_up": "Alguns dels elements no tenen còpia de seguretat a Immich i s'eliminaran permanentment del dispositiu",
|
|
||||||
"delete_dialog_alert_remote": "Aquests elements s'eliminaran permanentment del servidor Immich",
|
|
||||||
"delete_dialog_cancel": "Cancel·la",
|
|
||||||
"delete_dialog_ok": "Esborra",
|
|
||||||
"delete_dialog_ok_force": "Suprimeix de totes maneres",
|
|
||||||
"delete_dialog_title": "Esborra permanentment",
|
|
||||||
"delete_local_dialog_ok_backed_up_only": "Esborrar només les que tinguin còpia de seguretat",
|
|
||||||
"delete_local_dialog_ok_force": "Suprimeix de totes maneres",
|
|
||||||
"delete_shared_link_dialog_content": "Esteu segurs que voleu eliminar aquest enllaç compartit?",
|
|
||||||
"delete_shared_link_dialog_title": "Suprimeix l'enllaç compartit",
|
|
||||||
"description_input_hint_text": "Afegeix descripció...",
|
|
||||||
"description_input_submit_error": "S'ha produït un error en actualitzar la descripció, comproveu el registre per a més detalls",
|
|
||||||
"description_search": "Jornada de senderisme al Pedraforca",
|
|
||||||
"download_canceled": "Descàrrega cancel·lada",
|
|
||||||
"download_complete": "Descàrrega completada",
|
|
||||||
"download_enqueue": "Descàrrega en cua",
|
|
||||||
"download_error": "Error de descàrrega",
|
|
||||||
"download_failed": "Descàrrega ha fallat",
|
|
||||||
"download_filename": "arxiu: {}",
|
|
||||||
"download_finished": "Descàrrega acabada",
|
|
||||||
"downloading": "Descarregant...",
|
|
||||||
"downloading_media": "Descàrrega multimèdia",
|
|
||||||
"download_notfound": "No s'ha trobat la descàrrega",
|
|
||||||
"download_paused": "Descàrrega pausada",
|
|
||||||
"download_started": "Descàrrega ha començat",
|
|
||||||
"download_sucess": "Descarregat amb èxit",
|
|
||||||
"download_sucess_android": "El multimedia s'ha descarregat a DCIM/Immich",
|
|
||||||
"download_waiting_to_retry": "Esperant per tornar-ho a intentar",
|
|
||||||
"edit_date_time_dialog_date_time": "Data i Hora",
|
|
||||||
"edit_date_time_dialog_search_timezone": "Cerca zona horària...",
|
|
||||||
"edit_date_time_dialog_timezone": "Zona horària",
|
|
||||||
"edit_image_title": "Editar",
|
|
||||||
"edit_location_dialog_title": "Ubicació",
|
|
||||||
"empty_folder": "Aquesta carpeta és buida",
|
|
||||||
"end_date": "Data final",
|
|
||||||
"enqueued": "En cua",
|
|
||||||
"enter_wifi_name": "Introdueix el nom de WiFi",
|
|
||||||
"error_change_sort_album": "No s'ha pogut canviar l'ordre d'ordenació dels àlbums",
|
|
||||||
"error_saving_image": "Error: {}",
|
|
||||||
"exif_bottom_sheet_description": "Afegeix descripció",
|
|
||||||
"exif_bottom_sheet_details": "DETALLS",
|
|
||||||
"exif_bottom_sheet_location": "UBICACIÓ",
|
|
||||||
"exif_bottom_sheet_location_add": "Afegeix una ubicació",
|
|
||||||
"exif_bottom_sheet_people": "PERSONES",
|
|
||||||
"exif_bottom_sheet_person_add_person": "Afegir nom",
|
|
||||||
"exif_bottom_sheet_person_age": "Edat {}",
|
|
||||||
"exif_bottom_sheet_person_age_months": "Edat {} mesos",
|
|
||||||
"exif_bottom_sheet_person_age_year_months": "Edat 1 any, {} mesos",
|
|
||||||
"exif_bottom_sheet_person_age_years": "Edat {}",
|
|
||||||
"experimental_settings_new_asset_list_subtitle": "Treball en curs",
|
|
||||||
"experimental_settings_new_asset_list_title": "Habilita la graella de fotos experimental",
|
|
||||||
"experimental_settings_subtitle": "Utilitzeu-ho sota la vostra responsabilitat!",
|
|
||||||
"experimental_settings_title": "Experimental",
|
|
||||||
"external_network": "Xarxa externa",
|
|
||||||
"external_network_sheet_info": "Quan no estigui a la xarxa WiFi preferida, l'aplicació es connectarà al servidor mitjançant el primer dels URL següents a què pot arribar, començant de dalt a baix.",
|
|
||||||
"failed": "Fallat",
|
|
||||||
"failed_to_load_assets": "No s'han pogut carregar els elements",
|
|
||||||
"failed_to_load_folder": "No s'ha pogut carregar la carpeta",
|
|
||||||
"favorites": "Preferits",
|
|
||||||
"favorites_page_no_favorites": "No s'han trobat preferits",
|
|
||||||
"favorites_page_title": "Preferits",
|
|
||||||
"filename_search": "Nom o extensió del fitxer",
|
|
||||||
"filter": "Filtrar",
|
|
||||||
"folder": "Carpeta",
|
|
||||||
"folder_not_found": "Carpeta no trobada",
|
|
||||||
"folders": "Carpetes",
|
|
||||||
"get_wifiname_error": "No s'ha pogut obtenir el nom de la Wi-Fi. Assegureu-vos que heu concedit els permisos necessaris i que esteu connectat a una xarxa Wi-Fi",
|
|
||||||
"grant_permission": "Concedir permís",
|
|
||||||
"haptic_feedback_switch": "Activa la resposta hàptica",
|
|
||||||
"haptic_feedback_title": "Resposta Hàptica",
|
|
||||||
"header_settings_add_header_tip": "Afegeix Capçalera",
|
|
||||||
"header_settings_field_validator_msg": "El valor no pot estar buit",
|
|
||||||
"header_settings_header_name_input": "Nom de la capçalera",
|
|
||||||
"header_settings_header_value_input": "Valor de la capçalera",
|
|
||||||
"header_settings_page_title": "Capçaleres de proxy",
|
|
||||||
"headers_settings_tile_subtitle": "Definiu les capçaleres de proxy que l'aplicació hauria d'enviar amb cada sol·licitud de xarxa",
|
|
||||||
"headers_settings_tile_title": "Capçaleres proxy personalitzades",
|
|
||||||
"home_page_add_to_album_conflicts": "S'han afegit {added} elements a l'àlbum {album}. {failed} elements ja existeixen a l'àlbum.",
|
|
||||||
"home_page_add_to_album_err_local": "Encara no es poden afegir elements locals als àlbums, ometent",
|
|
||||||
"home_page_add_to_album_success": "S'han afegit {added} elements a l'àlbum {album}.",
|
|
||||||
"home_page_album_err_partner": "Encara no es poden afegir elements dels companys als àlbums, ometent",
|
|
||||||
"home_page_archive_err_local": "Encara no es poden arxivar elements locals, ometent",
|
|
||||||
"home_page_archive_err_partner": "No es poden arxivar els elements de companys, ometent",
|
|
||||||
"home_page_building_timeline": "Construint la línia de temps",
|
|
||||||
"home_page_delete_err_partner": "No es poden suprimir els elements de companys, ometent",
|
|
||||||
"home_page_delete_remote_err_local": "Elements locals a la selecció d'eliminació remota, ometent",
|
|
||||||
"home_page_favorite_err_local": "Encara no es pot afegir a preferits elements locals, ometent",
|
|
||||||
"home_page_favorite_err_partner": "Encara no es pot afegir a preferits elements de companys, ometent",
|
|
||||||
"home_page_first_time_notice": "Si és la primera vegada que utilitzes l'app, si us plau, assegura't d'escollir un àlbum de còpia de seguretat perquè la línia de temps pugui carregar fotos i vídeos als àlbums.",
|
|
||||||
"home_page_share_err_local": "No es poden compartir els elements locals a través d'un enllaç, ometent",
|
|
||||||
"home_page_upload_err_limit": "Només es poden pujar un màxim de 30 elements alhora, ometent",
|
|
||||||
"ignore_icloud_photos": "Ignora fotos d'iCloud",
|
|
||||||
"ignore_icloud_photos_description": "Les fotos emmagatzemades a iCloud no es penjaran al servidor Immich",
|
|
||||||
"image_saved_successfully": "Imatge desada",
|
|
||||||
"image_viewer_page_state_provider_download_error": "Error de baixada",
|
|
||||||
"image_viewer_page_state_provider_download_started": "Baixada començada",
|
|
||||||
"image_viewer_page_state_provider_download_success": "Baixada amb èxit",
|
|
||||||
"image_viewer_page_state_provider_share_error": "Error en compartir",
|
|
||||||
"invalid_date": "Data invàlida",
|
|
||||||
"invalid_date_format": "Format de data invàlid",
|
|
||||||
"library": "Llibreria",
|
|
||||||
"library_page_albums": "Àlbums",
|
|
||||||
"library_page_archive": "Arxiu",
|
|
||||||
"library_page_device_albums": "Àlbums al Dispositiu",
|
|
||||||
"library_page_favorites": "Preferits",
|
|
||||||
"library_page_new_album": "Nou àlbum",
|
|
||||||
"library_page_sharing": "Compartint",
|
|
||||||
"library_page_sort_asset_count": "Nombre d'elements",
|
|
||||||
"library_page_sort_created": "Creat més recentment",
|
|
||||||
"library_page_sort_last_modified": "Darrera modificació",
|
|
||||||
"library_page_sort_most_oldest_photo": "Foto més antiga",
|
|
||||||
"library_page_sort_most_recent_photo": "Foto més recent",
|
|
||||||
"library_page_sort_title": "Títol de l'àlbum",
|
|
||||||
"local_network": "Xarxa local",
|
|
||||||
"local_network_sheet_info": "L'aplicació es connectarà al servidor mitjançant aquest URL quan utilitzeu la xarxa Wi-Fi especificada",
|
|
||||||
"location_permission": "Permís d'ubicació",
|
|
||||||
"location_permission_content": "Per utilitzar la funció de canvi automàtic, Immich necessita un permís de ubicació precisa perquè pugui llegir el nom de la xarxa WiFi actual",
|
|
||||||
"location_picker_choose_on_map": "Escollir en el mapa",
|
|
||||||
"location_picker_latitude": "Latitud",
|
|
||||||
"location_picker_latitude_error": "Introdueix una latitud vàlida",
|
|
||||||
"location_picker_latitude_hint": "Introdueix aquí la latitud",
|
|
||||||
"location_picker_longitude": "Longitud",
|
|
||||||
"location_picker_longitude_error": "Introdueix una longitud vàlida",
|
|
||||||
"location_picker_longitude_hint": "Introdueix aquí la longitud",
|
|
||||||
"login_disabled": "S'ha desactivat l'inici de sessió",
|
|
||||||
"login_form_api_exception": "Excepció de l'API. Comproveu l'URL del servidor i torneu-ho a provar.",
|
|
||||||
"login_form_back_button_text": "Enrere",
|
|
||||||
"login_form_button_text": "Entra",
|
|
||||||
"login_form_email_hint": "elteu@correu.cat",
|
|
||||||
"login_form_endpoint_hint": "http://ip-del-servidor:port",
|
|
||||||
"login_form_endpoint_url": "URL del servidor",
|
|
||||||
"login_form_err_http": "Especifica http:// o https://",
|
|
||||||
"login_form_err_invalid_email": "Adreça de correu electrònic no vàlida",
|
|
||||||
"login_form_err_invalid_url": "URL no vàlid",
|
|
||||||
"login_form_err_leading_whitespace": "Espai en blanc al principi",
|
|
||||||
"login_form_err_trailing_whitespace": "Espai en blanc al final",
|
|
||||||
"login_form_failed_get_oauth_server_config": "Error en iniciar sessió amb OAuth, comprova l'URL del servidor",
|
|
||||||
"login_form_failed_get_oauth_server_disable": "La funcionalitat OAuth no està disponible en aquest servidor",
|
|
||||||
"login_form_failed_login": "Error en iniciar sessió, comprova l'URL del servidor, el correu electrònic i la contrasenya.",
|
|
||||||
"login_form_handshake_exception": "S'ha produït una excepció de handshake amb el servidor. Activa el suport per certificats autofirmats a la configuració si estàs fent servir un certificat autofirmat.",
|
|
||||||
"login_form_label_email": "Correu electrònic",
|
|
||||||
"login_form_label_password": "Contrasenya",
|
|
||||||
"login_form_next_button": "Següent",
|
|
||||||
"login_form_password_hint": "contrasenya",
|
|
||||||
"login_form_save_login": "Mantingues identificat",
|
|
||||||
"login_form_server_empty": "Introdueix l'URL del servidor.",
|
|
||||||
"login_form_server_error": "No s'ha pogut connectar al servidor.",
|
|
||||||
"login_password_changed_error": "S'ha produït un error en actualitzar la contrasenya",
|
|
||||||
"login_password_changed_success": "La contrasenya s'ha canviat correctament",
|
|
||||||
"map_assets_in_bound": "{} foto",
|
|
||||||
"map_assets_in_bounds": "{} fotos",
|
|
||||||
"map_cannot_get_user_location": "No es pot obtenir la ubicació de l'usuari",
|
|
||||||
"map_location_dialog_cancel": "Cancel·la",
|
|
||||||
"map_location_dialog_yes": "Sí",
|
|
||||||
"map_location_picker_page_use_location": "Utilitzar aquesta ubicació",
|
|
||||||
"map_location_service_disabled_content": "El servei de localització s'ha d'activar per mostrar els elements de la teva ubicació actual. Vols activar-lo ara?",
|
|
||||||
"map_location_service_disabled_title": "Servei de localització desactivat",
|
|
||||||
"map_no_assets_in_bounds": "No hi ha fotos en aquesta zona",
|
|
||||||
"map_no_location_permission_content": "Es necessita el permís de localització per mostrar els elements de la teva ubicació actual. Vols permetre-ho ara?",
|
|
||||||
"map_no_location_permission_title": "Permís de localització denegat",
|
|
||||||
"map_settings_dark_mode": "Mode fosc",
|
|
||||||
"map_settings_date_range_option_all": "Tot",
|
|
||||||
"map_settings_date_range_option_day": "Últimes 24 hores",
|
|
||||||
"map_settings_date_range_option_days": "Darrers {} dies",
|
|
||||||
"map_settings_date_range_option_year": "Any passat",
|
|
||||||
"map_settings_date_range_option_years": "Darrers {} anys",
|
|
||||||
"map_settings_dialog_cancel": "Cancel·la",
|
|
||||||
"map_settings_dialog_save": "Desa",
|
|
||||||
"map_settings_dialog_title": "Configuració del mapa",
|
|
||||||
"map_settings_include_show_archived": "Incloure arxivats",
|
|
||||||
"map_settings_include_show_partners": "Incloure companys",
|
|
||||||
"map_settings_only_relative_range": "Rang de dates",
|
|
||||||
"map_settings_only_show_favorites": "Mostra només preferits",
|
|
||||||
"map_settings_theme_settings": "Tema del Mapa",
|
|
||||||
"map_zoom_to_see_photos": "Allunya per veure fotos",
|
|
||||||
"memories_all_caught_up": "Posat al dia",
|
|
||||||
"memories_check_back_tomorrow": "Torna demà per veure més records",
|
|
||||||
"memories_start_over": "Torna a començar",
|
|
||||||
"memories_swipe_to_close": "Llisca per tancar",
|
|
||||||
"memories_year_ago": "Fa un any",
|
|
||||||
"memories_years_ago": "Fa {} anys",
|
|
||||||
"monthly_title_text_date_format": "MMMM y",
|
|
||||||
"motion_photos_page_title": "Fotos en moviment",
|
|
||||||
"multiselect_grid_edit_date_time_err_read_only": "No es pot canviar la data del fitxer(s) de només lectura, ometent",
|
|
||||||
"multiselect_grid_edit_gps_err_read_only": "No es pot canviar la localització de fitxers de només lectura. Saltant.",
|
|
||||||
"my_albums": "Els meus àlbums",
|
|
||||||
"networking_settings": "Xarxes",
|
|
||||||
"networking_subtitle": "Gestiona la configuració del endpoint del servidor",
|
|
||||||
"no_assets_to_show": "No hi ha elements per mostrar",
|
|
||||||
"no_name": "Sense nom",
|
|
||||||
"notification_permission_dialog_cancel": "Cancel·la",
|
|
||||||
"notification_permission_dialog_content": "Per activar les notificacions, aneu a Configuració i seleccioneu permet.",
|
|
||||||
"notification_permission_dialog_settings": "Configuració",
|
|
||||||
"notification_permission_list_tile_content": "Atorga permís per a activar les notificacions.",
|
|
||||||
"notification_permission_list_tile_enable_button": "Activa les notificacions",
|
|
||||||
"notification_permission_list_tile_title": "Permís de notificacions",
|
|
||||||
"not_selected": "No seleccionat",
|
|
||||||
"on_this_device": "En aquest dispositiu",
|
|
||||||
"partner_list_user_photos": "fotos de {user}",
|
|
||||||
"partner_list_view_all": "Veure tot",
|
|
||||||
"partner_page_add_partner": "Afegeix company",
|
|
||||||
"partner_page_empty_message": "Les teves fotos encara no estan compartides amb cap company.",
|
|
||||||
"partner_page_no_more_users": "No hi ha més usuaris a afegir",
|
|
||||||
"partner_page_partner_add_failed": "No s'ha pogut afegir el company",
|
|
||||||
"partner_page_select_partner": "Escull company",
|
|
||||||
"partner_page_shared_to_title": "Compartit amb",
|
|
||||||
"partner_page_stop_sharing_content": "{} ja no podrà accedir a les teves fotos.",
|
|
||||||
"partner_page_stop_sharing_title": "Vols deixar de compartir les teves fotos?",
|
|
||||||
"partner_page_title": "Company",
|
|
||||||
"partners": "Companys",
|
|
||||||
"paused": "Pausat",
|
|
||||||
"people": "Persones",
|
|
||||||
"permission_onboarding_back": "Torna",
|
|
||||||
"permission_onboarding_continue_anyway": "Continua de totes maneres",
|
|
||||||
"permission_onboarding_get_started": "Comença",
|
|
||||||
"permission_onboarding_go_to_settings": "Ves a la configuració",
|
|
||||||
"permission_onboarding_grant_permission": "Dona permisos",
|
|
||||||
"permission_onboarding_log_out": "Tanca la sessió",
|
|
||||||
"permission_onboarding_permission_denied": "S'ha denegat el permís. Per utilitzar Immich, concediu permisos de fotos i vídeos a Configuració.",
|
|
||||||
"permission_onboarding_permission_granted": "Permís concedit! Tot a punt.",
|
|
||||||
"permission_onboarding_permission_limited": "Permís limitat. Per a permetre que Immich faci còpies de seguretat i gestioni tota la col·lecció de la galeria, concediu permisos de fotos i vídeos a Configuració.",
|
|
||||||
"permission_onboarding_request": "Immich requereix permís per veure les vostres fotos i vídeos.",
|
|
||||||
"places": "Llocs",
|
|
||||||
"preferences_settings_subtitle": "Gestiona les preferències de l'aplicació",
|
|
||||||
"preferences_settings_title": "Preferències",
|
|
||||||
"profile_drawer_app_logs": "Registres",
|
|
||||||
"profile_drawer_client_out_of_date_major": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió major.",
|
|
||||||
"profile_drawer_client_out_of_date_minor": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió menor.",
|
|
||||||
"profile_drawer_client_server_up_to_date": "El Client i el Servidor estan actualitzats",
|
|
||||||
"profile_drawer_documentation": "Documentació",
|
|
||||||
"profile_drawer_github": "GitHub",
|
|
||||||
"profile_drawer_server_out_of_date_major": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió major.",
|
|
||||||
"profile_drawer_server_out_of_date_minor": "L'aplicació mòbil està desactualitzada. Si us plau, actualitzeu a l'última versió menor.",
|
|
||||||
"profile_drawer_settings": "Configuració",
|
|
||||||
"profile_drawer_sign_out": "Tanca la sessió",
|
|
||||||
"profile_drawer_trash": "Paperera",
|
|
||||||
"recently_added": "Afegit recentment",
|
|
||||||
"recently_added_page_title": "Afegit recentment",
|
|
||||||
"save": "Desa",
|
|
||||||
"save_to_gallery": "Desa a galeria",
|
|
||||||
"scaffold_body_error_occurred": "S'ha produït un error",
|
|
||||||
"search_albums": "Cerca àlbums",
|
|
||||||
"search_bar_hint": "Cerca les teves fotos",
|
|
||||||
"search_filter_apply": "Aplicar filtre",
|
|
||||||
"search_filter_camera": "Càmera",
|
|
||||||
"search_filter_camera_make": "Marca",
|
|
||||||
"search_filter_camera_model": "Model",
|
|
||||||
"search_filter_camera_title": "Selecciona el tipus de càmera",
|
|
||||||
"search_filter_contextual": "Cerca per contexte",
|
|
||||||
"search_filter_date": "Data",
|
|
||||||
"search_filter_date_interval": "{start} a {end}",
|
|
||||||
"search_filter_date_title": "Selecciona un rang de dates",
|
|
||||||
"search_filter_description": "Cerca per descripció",
|
|
||||||
"search_filter_display_option_archive": "Arxivat",
|
|
||||||
"search_filter_display_option_favorite": "Preferit",
|
|
||||||
"search_filter_display_option_not_in_album": "No en àlbum",
|
|
||||||
"search_filter_display_options": "Opcions de Visualització",
|
|
||||||
"search_filter_display_options_title": "Opcions de visualització",
|
|
||||||
"search_filter_filename": "Cerca pel nom del fitxer",
|
|
||||||
"search_filter_location": "Ubicació",
|
|
||||||
"search_filter_location_city": "Ciutat",
|
|
||||||
"search_filter_location_country": "País",
|
|
||||||
"search_filter_location_state": "Estat",
|
|
||||||
"search_filter_location_title": "Selecciona l'ubicació",
|
|
||||||
"search_filter_media_type": "Tipus de multimèdia",
|
|
||||||
"search_filter_media_type_all": "Tot",
|
|
||||||
"search_filter_media_type_image": "Imatge",
|
|
||||||
"search_filter_media_type_title": "Selecciona tipus de multimèdia",
|
|
||||||
"search_filter_media_type_video": "Vídeo",
|
|
||||||
"search_filter_people": "Persones",
|
|
||||||
"search_filter_people_hint": "Filtra persones",
|
|
||||||
"search_filter_people_title": "Selecciona persones",
|
|
||||||
"search_no_more_result": "No més resultats",
|
|
||||||
"search_no_result": "No s'han trobat resultats, proveu un terme de cerca o una combinació diferents",
|
|
||||||
"search_page_categories": "Categories",
|
|
||||||
"search_page_favorites": "Preferides",
|
|
||||||
"search_page_motion_photos": "Fotografies animades",
|
|
||||||
"search_page_no_objects": "No hi ha informació d'objectes disponibles",
|
|
||||||
"search_page_no_places": "No hi ha informació de llocs disponibles",
|
|
||||||
"search_page_people": "Persones",
|
|
||||||
"search_page_person_add_name_dialog_cancel": "Cancel·la",
|
|
||||||
"search_page_person_add_name_dialog_hint": "Nom",
|
|
||||||
"search_page_person_add_name_dialog_save": "Desa",
|
|
||||||
"search_page_person_add_name_dialog_title": "Afegeix un nom",
|
|
||||||
"search_page_person_add_name_subtitle": "Troba'ls ràpid buscant per nom",
|
|
||||||
"search_page_person_add_name_title": "Afegeix un nom",
|
|
||||||
"search_page_person_edit_name": "Edita el nom",
|
|
||||||
"search_page_places": "Llocs",
|
|
||||||
"search_page_recently_added": "Afegit recentment",
|
|
||||||
"search_page_screenshots": "Captures de pantalla",
|
|
||||||
"search_page_search_photos_videos": "Cerca les teves fotos i vídeos",
|
|
||||||
"search_page_selfies": "Autofotos",
|
|
||||||
"search_page_things": "Coses",
|
|
||||||
"search_page_videos": "Vídeos",
|
|
||||||
"search_page_view_all_button": "Veure tot",
|
|
||||||
"search_page_your_activity": "La teva activitat",
|
|
||||||
"search_page_your_map": "El teu mapa",
|
|
||||||
"search_result_page_new_search_hint": "Cerca nova",
|
|
||||||
"search_suggestion_list_smart_search_hint_1": "La cerca intel·ligent està habilitada per defecte, per a cercar metadades utilitzeu la sintaxi ",
|
|
||||||
"search_suggestion_list_smart_search_hint_2": "m:el-teu-terme-de-cerca",
|
|
||||||
"select_additional_user_for_sharing_page_suggestions": "Suggeriments",
|
|
||||||
"select_user_for_sharing_page_err_album": "Error al crear l'àlbum",
|
|
||||||
"select_user_for_sharing_page_share_suggestions": "Suggeriments",
|
|
||||||
"server_endpoint": "Endpoint de Servidor",
|
|
||||||
"server_info_box_app_version": "Versió de l'aplicació",
|
|
||||||
"server_info_box_latest_release": "Última versió",
|
|
||||||
"server_info_box_server_url": "URL del servidor",
|
|
||||||
"server_info_box_server_version": "Versió del servidor",
|
|
||||||
"setting_image_viewer_help": "El visor de detalls carrega primer la miniatura petita, després carrega la vista prèvia de mida mitjana (si està habilitada), finalment carrega l'original (si està habilitada).",
|
|
||||||
"setting_image_viewer_original_subtitle": "Activa per carregar la imatge en resolució original (molt gran!). Desactiva per reduir el consum de dades (tant de xarxa com de memòria cau).",
|
|
||||||
"setting_image_viewer_original_title": "Carrega la imatge original",
|
|
||||||
"setting_image_viewer_preview_subtitle": "Activa per carregar una imatge de resolució mitjana. Desactiva per carregar directament la imatge original, o bé utilitzar només la miniatura.",
|
|
||||||
"setting_image_viewer_preview_title": "Carrega la imatge de vista prèvia",
|
|
||||||
"setting_image_viewer_title": "Imatges",
|
|
||||||
"setting_languages_apply": "Aplicar",
|
|
||||||
"setting_languages_subtitle": "Canvia el llenguatge de l'aplicació",
|
|
||||||
"setting_languages_title": "Idiomes",
|
|
||||||
"setting_notifications_notify_failures_grace_period": "Notifica les fallades de la còpia de seguretat en segon pla: {}",
|
|
||||||
"setting_notifications_notify_hours": "{} hores",
|
|
||||||
"setting_notifications_notify_immediately": "immediatament",
|
|
||||||
"setting_notifications_notify_minutes": "{} minuts",
|
|
||||||
"setting_notifications_notify_never": "mai",
|
|
||||||
"setting_notifications_notify_seconds": "{} segons",
|
|
||||||
"setting_notifications_single_progress_subtitle": "Informació detallada del progrés de la pujada de cada fitxer",
|
|
||||||
"setting_notifications_single_progress_title": "Mostra el progrés detallat de la còpia de seguretat en segon pla",
|
|
||||||
"setting_notifications_subtitle": "Ajusta les preferències de notificació",
|
|
||||||
"setting_notifications_title": "Notificacions",
|
|
||||||
"setting_notifications_total_progress_subtitle": "Progrés general de la pujada (elements completats/total)",
|
|
||||||
"setting_notifications_total_progress_title": "Mostra el progrés total de la còpia de seguretat en segon pla",
|
|
||||||
"setting_pages_app_bar_settings": "Configuració",
|
|
||||||
"settings_require_restart": "Si us plau, reinicieu Immich per a aplicar aquest canvi",
|
|
||||||
"setting_video_viewer_looping_subtitle": "Habilita per reproduir automàticament un vídeo al visualitzador de detalls.",
|
|
||||||
"setting_video_viewer_looping_title": "Bucle",
|
|
||||||
"setting_video_viewer_original_video_subtitle": "Quan reproduïu un vídeo des del servidor, reproduïu l'original encara que hi hagi una transcodificació disponible. Pot conduir a l'amortització. Els vídeos disponibles localment es reprodueixen en qualitat original independentment d'aquesta configuració.",
|
|
||||||
"setting_video_viewer_original_video_title": "Força el vídeo original",
|
|
||||||
"setting_video_viewer_title": "Vídeos",
|
|
||||||
"share_add": "Afegeix",
|
|
||||||
"share_add_photos": "Afegeix fotografies",
|
|
||||||
"share_add_title": "Afegeix un títol",
|
|
||||||
"share_assets_selected": "{} seleccionats",
|
|
||||||
"share_create_album": "Crea un àlbum",
|
|
||||||
"shared_album_activities_input_disable": "Els comentaris estan desactivats",
|
|
||||||
"shared_album_activities_input_hint": "Digues alguna cosa",
|
|
||||||
"shared_album_activity_remove_content": "Voleu eliminar aquesta activitat?",
|
|
||||||
"shared_album_activity_remove_title": "Elimina l'activitat",
|
|
||||||
"shared_album_activity_setting_subtitle": "Permet que altres responguin",
|
|
||||||
"shared_album_activity_setting_title": "Comentaris i m'agrada",
|
|
||||||
"shared_album_section_people_action_error": "S'ha produït un error en retirar-se/eliminar l'àlbum",
|
|
||||||
"shared_album_section_people_action_leave": "Elimina l'usuari de l'àlbum",
|
|
||||||
"shared_album_section_people_action_remove_user": "Elimina l'usuari de l'àlbum",
|
|
||||||
"shared_album_section_people_owner_label": "Amo",
|
|
||||||
"shared_album_section_people_title": "PERSONES",
|
|
||||||
"share_dialog_preparing": "S'està preparant...",
|
|
||||||
"shared_intent_upload_button_progress_text": "{} / {} Pujat",
|
|
||||||
"shared_link_app_bar_title": "Enllaços compartits",
|
|
||||||
"shared_link_clipboard_copied_massage": "S'ha copiat al porta-retalls",
|
|
||||||
"shared_link_clipboard_text": "Enllaç: {}\nContrasenya: {}",
|
|
||||||
"shared_link_create_app_bar_title": "Crea un enllaç per compartir",
|
|
||||||
"shared_link_create_error": "S'ha produït un error en crear l'enllaç compartit",
|
|
||||||
"shared_link_create_info": "Permet que qualsevol persona amb l'enllaç vegi les fotografies seleccionades",
|
|
||||||
"shared_link_create_submit_button": "Crea enllaç",
|
|
||||||
"shared_link_edit_allow_download": "Permet que usuaris públics descarreguin",
|
|
||||||
"shared_link_edit_allow_upload": "Permet que usuaris públics publiquin",
|
|
||||||
"shared_link_edit_app_bar_title": "Edita l'enllaç",
|
|
||||||
"shared_link_edit_change_expiry": "Canvia la data de caducitat",
|
|
||||||
"shared_link_edit_description": "Descripció",
|
|
||||||
"shared_link_edit_description_hint": "Introduïu la descripció de compartició",
|
|
||||||
"shared_link_edit_expire_after": "Caduca després de",
|
|
||||||
"shared_link_edit_expire_after_option_day": "1 dia",
|
|
||||||
"shared_link_edit_expire_after_option_days": "{} dies",
|
|
||||||
"shared_link_edit_expire_after_option_hour": "1 hora",
|
|
||||||
"shared_link_edit_expire_after_option_hours": "{} hores",
|
|
||||||
"shared_link_edit_expire_after_option_minute": "1 minut",
|
|
||||||
"shared_link_edit_expire_after_option_minutes": "{} minuts",
|
|
||||||
"shared_link_edit_expire_after_option_months": "{} mesos",
|
|
||||||
"shared_link_edit_expire_after_option_never": "Mai",
|
|
||||||
"shared_link_edit_expire_after_option_year": "any {}",
|
|
||||||
"shared_link_edit_password": "Contrasenya",
|
|
||||||
"shared_link_edit_password_hint": "Introduïu la contrasenya de compartició",
|
|
||||||
"shared_link_edit_show_meta": "Mostra metadades",
|
|
||||||
"shared_link_edit_submit_button": "Actualitza l'enllaç",
|
|
||||||
"shared_link_empty": "No tens cap enllaç compartit",
|
|
||||||
"shared_link_error_server_url_fetch": "No s'ha pogut obtenir l'URL del servidor",
|
|
||||||
"shared_link_expired": "Caducat",
|
|
||||||
"shared_link_expires_day": "Caduca d'aquí a {} dia",
|
|
||||||
"shared_link_expires_days": "Caduca d'aquí a {} dies",
|
|
||||||
"shared_link_expires_hour": "Caduca d'aquí a {} hora",
|
|
||||||
"shared_link_expires_hours": "Caduca d'aquí a {} hores",
|
|
||||||
"shared_link_expires_minute": "Caduca d'aquí a {} minut",
|
|
||||||
"shared_link_expires_minutes": "Caduca d'aquí a {} minuts",
|
|
||||||
"shared_link_expires_never": "Caduca ∞",
|
|
||||||
"shared_link_expires_second": "Caduca d'aquí a {} segon",
|
|
||||||
"shared_link_expires_seconds": "Caduca d'aquí a {} segons",
|
|
||||||
"shared_link_individual_shared": "Individual compartit",
|
|
||||||
"shared_link_info_chip_download": "Baixa",
|
|
||||||
"shared_link_info_chip_metadata": "EXIF",
|
|
||||||
"shared_link_info_chip_upload": "Puja",
|
|
||||||
"shared_link_manage_links": "Gestiona els enllaços compartits",
|
|
||||||
"shared_link_public_album": "Àlbum públic",
|
|
||||||
"shared_links": "Enllaços compartits",
|
|
||||||
"share_done": "Fet",
|
|
||||||
"shared_with_me": "Compartit amb mi",
|
|
||||||
"share_invite": "Convida a l'àlbum",
|
|
||||||
"sharing_page_album": "Àlbums compartits",
|
|
||||||
"sharing_page_description": "Crea àlbums compartits per compartir fotos i vídeos amb persones de la teva xarxa.",
|
|
||||||
"sharing_page_empty_list": "LLISTA BUIDA",
|
|
||||||
"sharing_silver_appbar_create_shared_album": "Crea àlbum compartit",
|
|
||||||
"sharing_silver_appbar_shared_links": "Enllaços compartits",
|
|
||||||
"sharing_silver_appbar_share_partner": "Comparteix amb un company",
|
|
||||||
"start_date": "Data inicial",
|
|
||||||
"sync": "Sincronitzar",
|
|
||||||
"sync_albums": "Sincronitzar àlbums",
|
|
||||||
"sync_albums_manual_subtitle": "Sincronitza tots els vídeos i fotos penjats amb els àlbums de còpia de seguretat seleccionats",
|
|
||||||
"sync_upload_album_setting_subtitle": "Creeu i pugeu les seves fotos i vídeos als àlbums seleccionats a Immich",
|
|
||||||
"tab_controller_nav_library": "Llibreria",
|
|
||||||
"tab_controller_nav_photos": "Fotografies",
|
|
||||||
"tab_controller_nav_search": "Cerca",
|
|
||||||
"tab_controller_nav_sharing": "Compartint",
|
|
||||||
"theme_setting_asset_list_storage_indicator_title": "Mostra l'indicador d'emmagatzematge als títols dels elements",
|
|
||||||
"theme_setting_asset_list_tiles_per_row_title": "Nombre d'elements per fila ({})",
|
|
||||||
"theme_setting_colorful_interface_subtitle": "Apliqueu color primari a les superfícies de fons.",
|
|
||||||
"theme_setting_colorful_interface_title": "Interfície colorida",
|
|
||||||
"theme_setting_dark_mode_switch": "Tema fosc",
|
|
||||||
"theme_setting_image_viewer_quality_subtitle": "Ajusta la qualitat del visor de detalls d'imatges",
|
|
||||||
"theme_setting_image_viewer_quality_title": "Qualitat del visor d'imatges",
|
|
||||||
"theme_setting_primary_color_subtitle": "Trieu un color per a les accions i els accents principals.",
|
|
||||||
"theme_setting_primary_color_title": "Color primari",
|
|
||||||
"theme_setting_system_primary_color_title": "Utilitza color de sistema",
|
|
||||||
"theme_setting_system_theme_switch": "Automàtic (Segueix la configuració del sistema)",
|
|
||||||
"theme_setting_theme_subtitle": "Trieu la configuració del tema de l'aplicació",
|
|
||||||
"theme_setting_theme_title": "Tema",
|
|
||||||
"theme_setting_three_stage_loading_subtitle": "La càrrega en tres etapes podria augmentar el rendiment de càrrega, però causa un consum de xarxa significativament més alt",
|
|
||||||
"theme_setting_three_stage_loading_title": "Activa la càrrega en tres etapes",
|
|
||||||
"translated_text_options": "Opcions",
|
|
||||||
"trash": "Paperera",
|
|
||||||
"trash_emptied": "Paperera buidada",
|
|
||||||
"trash_page_delete": "Elimina",
|
|
||||||
"trash_page_delete_all": "Eliminar-ho tot",
|
|
||||||
"trash_page_empty_trash_btn": "Buida la paperera",
|
|
||||||
"trash_page_empty_trash_dialog_content": "Segur que voleu eliminar els elements? Aquests elements seran eliminats permanentment de Immich",
|
|
||||||
"trash_page_empty_trash_dialog_ok": "Sí",
|
|
||||||
"trash_page_info": "Els elements que s'enviïn a la paperera s'eliminaran permanentment després de {} dies",
|
|
||||||
"trash_page_no_assets": "No hi ha elements a la paperera",
|
|
||||||
"trash_page_restore": "Restaura",
|
|
||||||
"trash_page_restore_all": "Restaura-ho tot",
|
|
||||||
"trash_page_select_assets_btn": "Selecciona elements",
|
|
||||||
"trash_page_select_btn": "Selecciona",
|
|
||||||
"trash_page_title": "Paperera ({})",
|
|
||||||
"upload": "Puja",
|
|
||||||
"upload_dialog_cancel": "Cancel·la",
|
|
||||||
"upload_dialog_info": "Vols fer còpia de seguretat dels elements seleccionats al servidor?",
|
|
||||||
"upload_dialog_ok": "Puja",
|
|
||||||
"upload_dialog_title": "Puja elements",
|
|
||||||
"uploading": "Pujant",
|
|
||||||
"upload_to_immich": "Puja a Immich ({})",
|
|
||||||
"use_current_connection": "utilitzar la connexió actual",
|
|
||||||
"validate_endpoint_error": "Per favor introdueix un URL vàlid",
|
|
||||||
"version_announcement_overlay_ack": "D'acord",
|
|
||||||
"version_announcement_overlay_release_notes": "notes de llançament",
|
|
||||||
"version_announcement_overlay_text_1": "Hola amic, hi ha una nova versió d'",
|
|
||||||
"version_announcement_overlay_text_2": "si us plau, pren-te una estona per visitar les ",
|
|
||||||
"version_announcement_overlay_text_3": " i assegura't que la teva configuració de docker-compose i .env estiguin actualitzades per evitar qualsevol error de configuració, especialment si utilitzes WatchTower o qualsevol mecanisme que gestioni l'actualització automàtica de l'aplicació del servidor.",
|
|
||||||
"version_announcement_overlay_title": "Nova versió del servidor disponible \uD83C\uDF89",
|
|
||||||
"videos": "Vídeos",
|
|
||||||
"viewer_remove_from_stack": "Elimina de la pila",
|
|
||||||
"viewer_stack_use_as_main_asset": "Fes servir com a element principal",
|
|
||||||
"viewer_unstack": "Desapila",
|
|
||||||
"wifi_name": "Nom WiFi",
|
|
||||||
"your_wifi_name": "El teu nom WiFi"
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user