Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
919fd7d41f | ||
|
|
c2fdb6aab8 | ||
|
|
b6c4da37fd | ||
|
|
17c3e8e8bf | ||
|
|
21d3f248da | ||
|
|
a29660aae3 | ||
|
|
6c81fa0f0a | ||
|
|
7156da502f | ||
|
|
13741410a7 | ||
|
|
3408e6b3cb | ||
|
|
434bcec5cc | ||
|
|
ebc71e428d | ||
|
|
a70cd368af | ||
|
|
3225e33fc1 | ||
|
|
85ab916ecf | ||
|
|
7445dad0dd | ||
|
|
0237f9baa3 | ||
|
|
2e059bfbfd | ||
|
|
7bb7f63d57 | ||
|
|
66a5a5718f | ||
|
|
ddc4d2f927 | ||
|
|
0beeb61f5c | ||
|
|
a321db9f48 | ||
|
|
827136fc8b | ||
|
|
088eea88e0 | ||
|
|
15503784c8 | ||
|
|
bc8e236598 | ||
|
|
909bd43e65 | ||
|
|
3330885bcc | ||
|
|
e1ac73718c | ||
|
|
a78eeb9b9c | ||
|
|
86b3e3ee13 | ||
|
|
4b2bc8e4ce | ||
|
|
f92aee204e | ||
|
|
7fd2b7965c | ||
|
|
32ba6e3e3f | ||
|
|
0a6e5e0ec1 | ||
|
|
65a4f86154 | ||
|
|
147c6e3600 | ||
|
|
ee6f1a010c | ||
|
|
a444ea7361 | ||
|
|
59b809012f | ||
|
|
c037a8b8fa | ||
|
|
ce15cf6065 |
@@ -1 +1 @@
|
||||
20.15.1
|
||||
20.16.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:20.16.0-alpine3.20@sha256:aada767bf3e4b4a1437642b81db7d8bb99a6dba27627088e4608772f1f02ebc0 as core
|
||||
FROM node:20.16.0-alpine3.20@sha256:eb8101caae9ac02229bd64c024919fe3d4504ff7f329da79ca60a04db08cef52 as core
|
||||
|
||||
WORKDIR /usr/src/open-api/typescript-sdk
|
||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||
|
||||
15
cli/package-lock.json
generated
15
cli/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
"fast-glob": "^3.3.2",
|
||||
@@ -26,7 +26,7 @@
|
||||
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
||||
"@typescript-eslint/parser": "^7.0.0",
|
||||
"@vitest/coverage-v8": "^1.2.2",
|
||||
"byte-size": "^8.1.1",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
"commander": "^12.0.0",
|
||||
"eslint": "^8.56.0",
|
||||
@@ -49,7 +49,7 @@
|
||||
},
|
||||
"../open-api/typescript-sdk": {
|
||||
"name": "@immich/sdk",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"dev": true,
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
@@ -1669,10 +1669,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/byte-size": {
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz",
|
||||
"integrity": "sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==",
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/byte-size/-/byte-size-9.0.0.tgz",
|
||||
"integrity": "sha512-xrJ8Hki7eQ6xew55mM6TG9zHI852OoAHcPfduWWtR6yxk2upTuIZy13VioRBDyHReHDdbeDPifUboeNkK/sXXA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12.17"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"description": "Command Line Interface (CLI) for Immich",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
@@ -22,7 +22,7 @@
|
||||
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
||||
"@typescript-eslint/parser": "^7.0.0",
|
||||
"@vitest/coverage-v8": "^1.2.2",
|
||||
"byte-size": "^8.1.1",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
"commander": "^12.0.0",
|
||||
"eslint": "^8.56.0",
|
||||
@@ -64,6 +64,6 @@
|
||||
"lodash-es": "^4.17.21"
|
||||
},
|
||||
"volta": {
|
||||
"node": "20.15.1"
|
||||
"node": "20.16.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,37 +2,37 @@
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||
version = "4.37.0"
|
||||
constraints = "4.37.0"
|
||||
version = "4.38.0"
|
||||
constraints = "4.38.0"
|
||||
hashes = [
|
||||
"h1:0gOI8arnh2CTcHfGH8iwAe6qz2BRSytmbOiNXZjnrHc=",
|
||||
"h1:0h0qRJYPHL92Dx3NYZO2WJ21cxyZGEoldzw9aYhPnew=",
|
||||
"h1:6ri7vZ1MLtQbooicIO4catyIuRq4LHAsIcgd3vGq3AE=",
|
||||
"h1:7BwVaqxSD9VsmLzs6jDJBJvHPq0dz4I8rCeJAK63Dc4=",
|
||||
"h1:8tVm+BJvzI14pRbEyt00AvH6oIyqiLRZQ9KxcBeSDhE=",
|
||||
"h1:FTll1M9rPA7RxEyLB6etQqaqynWWl3WkiwJtHMjPr3Y=",
|
||||
"h1:L7ysGftn0fstXMjCt3/XEz2giRdEwBsGrdvi4Zw8uzM=",
|
||||
"h1:PsbAKy7LdSpwZMJZ7bO3lI04hLDTlXke/LCkrKXYwwE=",
|
||||
"h1:Sjkpr8CKs0rXGcdis5q4Kbqmo5mmosgirnQi65G4sM8=",
|
||||
"h1:YxJRQdVSzMZR5Ce5M3Gs1SPutXpednxuRwtSSiReHDY=",
|
||||
"h1:bJrJeBKWEwt4hGQ+3VJR69dsqHORovE8LzuQt9+NTug=",
|
||||
"h1:hPC7Vk0ZGXCDJ1y5dOepVo1c0PoUulnJUarrMv4gQIQ=",
|
||||
"h1:joMURZCLUJ2eSlj645xqHWKYbRBYqvajCkhaz7qzi8g=",
|
||||
"h1:uqo0WgG5lCcG8+gf99VnsKKbJMM1urNZq1FbAT6u3S0=",
|
||||
"zh:012a6c3e8bf4aca0ebe0884e15bd42fd018659193f2159d5d2bf9948a9be1bc4",
|
||||
"zh:079666c0a079237af46ed19ffc4143655ee0e8920a274868e44fbc3db88f346d",
|
||||
"zh:08e7ff86f6848f3109d59ad46f8c0987178eff2f70c8ef03f2d44ae68e42dfb3",
|
||||
"zh:1ce8a499fdf8f484f7d18ec91566bc0759b07d0ca710990cd60d32b222e416b1",
|
||||
"zh:348e72338095bffccf7c46c7e6b9d0e063a22d9ae761061b0b31dea1aad22cd9",
|
||||
"zh:47d39343dea1ef469a2c8e51c8d5993687af427a132da5379796fec27acb5710",
|
||||
"zh:4cdf8e9579f9af3c72270088fc6e22208f0f91fd4382bc4a860d16040c86917b",
|
||||
"zh:4fbebb21ecebc7e5ac0ea9e341c5dbea3094fc0579e4dc5b40bfe693164e022e",
|
||||
"zh:778578dda7dd98576a3fe228132c8b60f646f4cf113638c94f1c40e2b11c027c",
|
||||
"h1:+27KAHKHBDvv3dqyJv5vhtdKQZJzoZXoMqIyronlHNw=",
|
||||
"h1:/uV9RgOUhkxElkHhWs8fs5ZbX9vj6RCBfP0oJO0JF30=",
|
||||
"h1:1DNAdMugJJOAWD/XYiZenYYZLy7fw2ctjT4YZmkRCVQ=",
|
||||
"h1:1wn4PmCLdT7mvd74JkCGmJDJxTQDkcxc+1jNbmwnMHA=",
|
||||
"h1:BIHB4fBxHg2bA9KbL92njhyctxKC8b6hNDp60y5QBss=",
|
||||
"h1:HCQpvKPsMsR4HO5eDqt+Kao7T7CYeEH7KZIO7xMcC6M=",
|
||||
"h1:HTomuzocukpNLwtWzeSF3yteCVsyVKbwKmN66u9iPac=",
|
||||
"h1:YDxsUBhBAwHSXLzVwrSlSBOwv1NvLyry7s5SfCV7VqQ=",
|
||||
"h1:dchVhxo+Acd1l2RuZ88tW9lWj4422QMfgtxKvKCjYrw=",
|
||||
"h1:eypa+P4ZpsEGMPFuCE+6VkRefu0TZRFmVBOpK+PDOPY=",
|
||||
"h1:f3yjse2OsRZj7ZhR7BLintJMlI4fpyt8HyDP/zcEavw=",
|
||||
"h1:mSJ7xj8K+xcnEmGg7lH0jjzyQb157wH94ULTAlIV+HQ=",
|
||||
"h1:tt+2J2Ze8VIdDq2Hr6uHlTJzAMBRpErBwTYx0uD5ilE=",
|
||||
"h1:uQW8SKxmulqrAisO+365mIf2FueINAp5PY28bqCPCug=",
|
||||
"zh:171ab67cccceead4514fafb2d39e4e708a90cce79000aaf3c29aab7ed4457071",
|
||||
"zh:18aa7228447baaaefc49a43e8eff970817a7491a63d8937e796357a3829dd979",
|
||||
"zh:2cbaab6092e81ba6f41fa60a50f14e980c8ec327ee11d0b21f16a478be4b7567",
|
||||
"zh:53b8e49c06f5b31a8c681f8c0669cf43e78abe71657b8182a221d096bb514965",
|
||||
"zh:6037cfc60b4b647aabae155fcb46d649ed7c650e0287f05db52b2068f1e27c8a",
|
||||
"zh:62460982ce1a869eebfca675603fbbd50416cf6b69459fb855bfbe5ae2b97607",
|
||||
"zh:65f6f3a8470917b6398baa5eb4f74b3932b213eac7c0202798bfad6fd1ee17df",
|
||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||
"zh:894071f0f42571f820918d1a4316704923e29c5b2392704c1cbd063a04a641b8",
|
||||
"zh:8d11dd73dd499c74d89f77a7e1b3d4a077ac88b0c9c3412e9a6a1b4efe17d107",
|
||||
"zh:991e088be8381a73872cd33bb659e9dd69d7ab1f1f8d89b3cd17ffe59dffc65f",
|
||||
"zh:9c0848b9c7e6799c9ffcf3afa70ad94a027f3e15a94679d56790714de0b072c5",
|
||||
"zh:ad71ae800065ffc24b94d994250136ae8a9f6da704cf91b0dc9e14989e947369",
|
||||
"zh:8b5cebe64bf04105a49178a165b6a8800a9a33bae6767143a47fe4977755f805",
|
||||
"zh:a5596635db0993ee3c3060fbc2227d91b239466e96d2d82642625a5aa2486988",
|
||||
"zh:b3a9c63038441f13c311fd4b2c7e69e571445e5a7365a20c7cc9046b7e6c8aba",
|
||||
"zh:b585e7e4d7648a540b14b9182819214896ca9337729eeb1f2034833b17db754d",
|
||||
"zh:d2c3c545318ac8542369e9fc8228e29ee585febdf203a450fad3e0eded71ce02",
|
||||
"zh:e95dd2d6c3525073af47d47b763cb81b6a51b20cabf76f789c69328922da9ecf",
|
||||
"zh:eee6e590b36d6c6168a7daae8afa74a8721fd7aa9f62a710f04a311975100722",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ terraform {
|
||||
required_providers {
|
||||
cloudflare = {
|
||||
source = "cloudflare/cloudflare"
|
||||
version = "4.37.0"
|
||||
version = "4.38.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,37 +2,37 @@
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.opentofu.org/cloudflare/cloudflare" {
|
||||
version = "4.37.0"
|
||||
constraints = "4.37.0"
|
||||
version = "4.38.0"
|
||||
constraints = "4.38.0"
|
||||
hashes = [
|
||||
"h1:0gOI8arnh2CTcHfGH8iwAe6qz2BRSytmbOiNXZjnrHc=",
|
||||
"h1:0h0qRJYPHL92Dx3NYZO2WJ21cxyZGEoldzw9aYhPnew=",
|
||||
"h1:6ri7vZ1MLtQbooicIO4catyIuRq4LHAsIcgd3vGq3AE=",
|
||||
"h1:7BwVaqxSD9VsmLzs6jDJBJvHPq0dz4I8rCeJAK63Dc4=",
|
||||
"h1:8tVm+BJvzI14pRbEyt00AvH6oIyqiLRZQ9KxcBeSDhE=",
|
||||
"h1:FTll1M9rPA7RxEyLB6etQqaqynWWl3WkiwJtHMjPr3Y=",
|
||||
"h1:L7ysGftn0fstXMjCt3/XEz2giRdEwBsGrdvi4Zw8uzM=",
|
||||
"h1:PsbAKy7LdSpwZMJZ7bO3lI04hLDTlXke/LCkrKXYwwE=",
|
||||
"h1:Sjkpr8CKs0rXGcdis5q4Kbqmo5mmosgirnQi65G4sM8=",
|
||||
"h1:YxJRQdVSzMZR5Ce5M3Gs1SPutXpednxuRwtSSiReHDY=",
|
||||
"h1:bJrJeBKWEwt4hGQ+3VJR69dsqHORovE8LzuQt9+NTug=",
|
||||
"h1:hPC7Vk0ZGXCDJ1y5dOepVo1c0PoUulnJUarrMv4gQIQ=",
|
||||
"h1:joMURZCLUJ2eSlj645xqHWKYbRBYqvajCkhaz7qzi8g=",
|
||||
"h1:uqo0WgG5lCcG8+gf99VnsKKbJMM1urNZq1FbAT6u3S0=",
|
||||
"zh:012a6c3e8bf4aca0ebe0884e15bd42fd018659193f2159d5d2bf9948a9be1bc4",
|
||||
"zh:079666c0a079237af46ed19ffc4143655ee0e8920a274868e44fbc3db88f346d",
|
||||
"zh:08e7ff86f6848f3109d59ad46f8c0987178eff2f70c8ef03f2d44ae68e42dfb3",
|
||||
"zh:1ce8a499fdf8f484f7d18ec91566bc0759b07d0ca710990cd60d32b222e416b1",
|
||||
"zh:348e72338095bffccf7c46c7e6b9d0e063a22d9ae761061b0b31dea1aad22cd9",
|
||||
"zh:47d39343dea1ef469a2c8e51c8d5993687af427a132da5379796fec27acb5710",
|
||||
"zh:4cdf8e9579f9af3c72270088fc6e22208f0f91fd4382bc4a860d16040c86917b",
|
||||
"zh:4fbebb21ecebc7e5ac0ea9e341c5dbea3094fc0579e4dc5b40bfe693164e022e",
|
||||
"zh:778578dda7dd98576a3fe228132c8b60f646f4cf113638c94f1c40e2b11c027c",
|
||||
"h1:+27KAHKHBDvv3dqyJv5vhtdKQZJzoZXoMqIyronlHNw=",
|
||||
"h1:/uV9RgOUhkxElkHhWs8fs5ZbX9vj6RCBfP0oJO0JF30=",
|
||||
"h1:1DNAdMugJJOAWD/XYiZenYYZLy7fw2ctjT4YZmkRCVQ=",
|
||||
"h1:1wn4PmCLdT7mvd74JkCGmJDJxTQDkcxc+1jNbmwnMHA=",
|
||||
"h1:BIHB4fBxHg2bA9KbL92njhyctxKC8b6hNDp60y5QBss=",
|
||||
"h1:HCQpvKPsMsR4HO5eDqt+Kao7T7CYeEH7KZIO7xMcC6M=",
|
||||
"h1:HTomuzocukpNLwtWzeSF3yteCVsyVKbwKmN66u9iPac=",
|
||||
"h1:YDxsUBhBAwHSXLzVwrSlSBOwv1NvLyry7s5SfCV7VqQ=",
|
||||
"h1:dchVhxo+Acd1l2RuZ88tW9lWj4422QMfgtxKvKCjYrw=",
|
||||
"h1:eypa+P4ZpsEGMPFuCE+6VkRefu0TZRFmVBOpK+PDOPY=",
|
||||
"h1:f3yjse2OsRZj7ZhR7BLintJMlI4fpyt8HyDP/zcEavw=",
|
||||
"h1:mSJ7xj8K+xcnEmGg7lH0jjzyQb157wH94ULTAlIV+HQ=",
|
||||
"h1:tt+2J2Ze8VIdDq2Hr6uHlTJzAMBRpErBwTYx0uD5ilE=",
|
||||
"h1:uQW8SKxmulqrAisO+365mIf2FueINAp5PY28bqCPCug=",
|
||||
"zh:171ab67cccceead4514fafb2d39e4e708a90cce79000aaf3c29aab7ed4457071",
|
||||
"zh:18aa7228447baaaefc49a43e8eff970817a7491a63d8937e796357a3829dd979",
|
||||
"zh:2cbaab6092e81ba6f41fa60a50f14e980c8ec327ee11d0b21f16a478be4b7567",
|
||||
"zh:53b8e49c06f5b31a8c681f8c0669cf43e78abe71657b8182a221d096bb514965",
|
||||
"zh:6037cfc60b4b647aabae155fcb46d649ed7c650e0287f05db52b2068f1e27c8a",
|
||||
"zh:62460982ce1a869eebfca675603fbbd50416cf6b69459fb855bfbe5ae2b97607",
|
||||
"zh:65f6f3a8470917b6398baa5eb4f74b3932b213eac7c0202798bfad6fd1ee17df",
|
||||
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||
"zh:894071f0f42571f820918d1a4316704923e29c5b2392704c1cbd063a04a641b8",
|
||||
"zh:8d11dd73dd499c74d89f77a7e1b3d4a077ac88b0c9c3412e9a6a1b4efe17d107",
|
||||
"zh:991e088be8381a73872cd33bb659e9dd69d7ab1f1f8d89b3cd17ffe59dffc65f",
|
||||
"zh:9c0848b9c7e6799c9ffcf3afa70ad94a027f3e15a94679d56790714de0b072c5",
|
||||
"zh:ad71ae800065ffc24b94d994250136ae8a9f6da704cf91b0dc9e14989e947369",
|
||||
"zh:8b5cebe64bf04105a49178a165b6a8800a9a33bae6767143a47fe4977755f805",
|
||||
"zh:a5596635db0993ee3c3060fbc2227d91b239466e96d2d82642625a5aa2486988",
|
||||
"zh:b3a9c63038441f13c311fd4b2c7e69e571445e5a7365a20c7cc9046b7e6c8aba",
|
||||
"zh:b585e7e4d7648a540b14b9182819214896ca9337729eeb1f2034833b17db754d",
|
||||
"zh:d2c3c545318ac8542369e9fc8228e29ee585febdf203a450fad3e0eded71ce02",
|
||||
"zh:e95dd2d6c3525073af47d47b763cb81b6a51b20cabf76f789c69328922da9ecf",
|
||||
"zh:eee6e590b36d6c6168a7daae8afa74a8721fd7aa9f62a710f04a311975100722",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ terraform {
|
||||
required_providers {
|
||||
cloudflare = {
|
||||
source = "cloudflare/cloudflare"
|
||||
version = "4.37.0"
|
||||
version = "4.38.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ services:
|
||||
# file: hwaccel.transcoding.yml
|
||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
env_file:
|
||||
@@ -43,7 +44,7 @@ services:
|
||||
|
||||
redis:
|
||||
container_name: immich_redis
|
||||
image: docker.io/redis:6.2-alpine@sha256:328fe6a5822256d065debb36617a8169dbfbd77b797c525288e465f56c1d392b
|
||||
image: docker.io/redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e
|
||||
healthcheck:
|
||||
test: redis-cli ping || exit 1
|
||||
restart: always
|
||||
@@ -57,6 +58,7 @@ services:
|
||||
POSTGRES_DB: ${DB_DATABASE_NAME}
|
||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||
volumes:
|
||||
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
|
||||
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
|
||||
|
||||
@@ -1 +1 @@
|
||||
20.15.1
|
||||
20.16.0
|
||||
|
||||
@@ -13,14 +13,14 @@ In our `.env` file, we will define variables that will help us in the future whe
|
||||
|
||||
# Custom location where your uploaded, thumbnails, and transcoded video files are stored
|
||||
- UPLOAD_LOCATION=./library
|
||||
+ UPLOAD_LOCATION=/custom/location/on/your/system/immich/immich_files
|
||||
+ THUMB_LOCATION=/custom/location/on/your/system/immich/thumbs
|
||||
+ ENCODED_VIDEO_LOCATION=/custom/location/on/your/system/immich/encoded-video
|
||||
+ PROFILE_LOCATION=/custom/location/on/your/system/immich/profile
|
||||
+ UPLOAD_LOCATION=/custom/path/immich/immich_files
|
||||
+ THUMB_LOCATION=/custom/path/immich/thumbs
|
||||
+ ENCODED_VIDEO_LOCATION=/custom/path/immich/encoded-video
|
||||
+ PROFILE_LOCATION=/custom/path/immich/profile
|
||||
...
|
||||
```
|
||||
|
||||
After defining the locations for these files, we will edit the `docker-compose.yml` file accordingly and add the new variables to the `immich-server` and `immich-microservices` containers.
|
||||
After defining the locations for these files, we will edit the `docker-compose.yml` file accordingly and add the new variables to the `immich-server` container.
|
||||
|
||||
```diff title="docker-compose.yml"
|
||||
services:
|
||||
@@ -29,16 +29,6 @@ services:
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
+ - ${THUMB_LOCATION}:/usr/src/app/upload/thumbs
|
||||
+ - ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video
|
||||
+ - ${PROFILE_LOCATION}:/usr/src/app/upload/profile
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
|
||||
...
|
||||
|
||||
immich-microservices:
|
||||
volumes:
|
||||
- ${UPLOAD_LOCATION}:/usr/src/app/upload
|
||||
+ - ${THUMB_LOCATION}:/usr/src/app/upload/thumbs
|
||||
+ - ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video
|
||||
+ - ${PROFILE_LOCATION}:/usr/src/app/upload/profile
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
```
|
||||
@@ -46,7 +36,6 @@ services:
|
||||
Restart Immich to register the changes.
|
||||
|
||||
```
|
||||
docker compose down
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Keep in mind that mucking around in the database might set the moon on fire. Avo
|
||||
:::
|
||||
|
||||
:::tip
|
||||
Run `docker exec -it immich_postgres psql immich <DB_USERNAME>` to connect to the database via the container directly.
|
||||
Run `docker exec -it immich_postgres psql --dbname=immich --username=<DB_USERNAME>` to connect to the database via the container directly.
|
||||
|
||||
(Replace `<DB_USERNAME>` with the value from your [`.env` file](/docs/install/environment-variables#database)).
|
||||
:::
|
||||
@@ -106,3 +106,9 @@ SELECT "key", "value" FROM "system_metadata" WHERE "key" = 'system-config';
|
||||
```sql title="Delete person and unset it for the faces it was associated with"
|
||||
DELETE FROM "person" WHERE "name" = 'PersonNameHere';
|
||||
```
|
||||
|
||||
## Postgres internal
|
||||
|
||||
```sql title="Change DB_PASSWORD"
|
||||
ALTER USER <DB_USERNAME> WITH ENCRYPTED PASSWORD 'newpasswordhere';
|
||||
```
|
||||
|
||||
@@ -56,6 +56,6 @@
|
||||
"node": ">=20"
|
||||
},
|
||||
"volta": {
|
||||
"node": "20.15.1"
|
||||
"node": "20.16.0"
|
||||
}
|
||||
}
|
||||
|
||||
4
docs/static/archived-versions.json
vendored
4
docs/static/archived-versions.json
vendored
@@ -1,4 +1,8 @@
|
||||
[
|
||||
{
|
||||
"label": "v1.111.0",
|
||||
"url": "https://v1.111.0.archive.immich.app"
|
||||
},
|
||||
{
|
||||
"label": "v1.110.0",
|
||||
"url": "https://v1.110.0.archive.immich.app"
|
||||
|
||||
@@ -1 +1 @@
|
||||
20.15.1
|
||||
20.16.0
|
||||
|
||||
36
e2e/package-lock.json
generated
36
e2e/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "immich-e2e",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"devDependencies": {
|
||||
"@immich/cli": "file:../cli",
|
||||
@@ -25,7 +25,7 @@
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^54.0.0",
|
||||
"exiftool-vendored": "^27.0.0",
|
||||
"exiftool-vendored": "^28.0.0",
|
||||
"jose": "^5.6.3",
|
||||
"luxon": "^3.4.4",
|
||||
"oidc-provider": "^8.5.1",
|
||||
@@ -37,12 +37,12 @@
|
||||
"supertest": "^7.0.0",
|
||||
"typescript": "^5.3.3",
|
||||
"utimes": "^5.2.1",
|
||||
"vitest": "^1.3.0"
|
||||
"vitest": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"../cli": {
|
||||
"name": "@immich/cli",
|
||||
"version": "2.2.12",
|
||||
"version": "2.2.13",
|
||||
"dev": true,
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
@@ -63,7 +63,7 @@
|
||||
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
||||
"@typescript-eslint/parser": "^7.0.0",
|
||||
"@vitest/coverage-v8": "^1.2.2",
|
||||
"byte-size": "^8.1.1",
|
||||
"byte-size": "^9.0.0",
|
||||
"cli-progress": "^3.12.0",
|
||||
"commander": "^12.0.0",
|
||||
"eslint": "^8.56.0",
|
||||
@@ -86,7 +86,7 @@
|
||||
},
|
||||
"../open-api/typescript-sdk": {
|
||||
"name": "@immich/sdk",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"dev": true,
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
@@ -3144,9 +3144,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/exiftool-vendored": {
|
||||
"version": "27.0.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-27.0.0.tgz",
|
||||
"integrity": "sha512-/jHX8Jjadj0YJzpqnuBo1Yy2ln2hnRbBIc+3jcVOLQ6qhHEKsLRlfJ145Ghn7k/EcnfpDzVX3V8AUCTC8juTow==",
|
||||
"version": "28.2.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.2.0.tgz",
|
||||
"integrity": "sha512-s2k92EB8LSeYjXv4agtpANeH8y1CsEThYqMm7AF1jP64PyFb40AoD0RGf69j28G6RqXkT5JGl4Xwk9kOy3IkjQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3157,14 +3157,14 @@
|
||||
"luxon": "^3.4.4"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"exiftool-vendored.exe": "12.85.0",
|
||||
"exiftool-vendored.pl": "12.85.0"
|
||||
"exiftool-vendored.exe": "12.91.0",
|
||||
"exiftool-vendored.pl": "12.91.0"
|
||||
}
|
||||
},
|
||||
"node_modules/exiftool-vendored.exe": {
|
||||
"version": "12.85.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.85.0.tgz",
|
||||
"integrity": "sha512-rWsKVp9oXsS79S3bfCNXKeEo4av0xcd7slk/TfPpCa5pojg8ZVXSVfPZMAAlhOuK63YXrKN/e3jRNReeGP+2Gw==",
|
||||
"version": "12.91.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.91.0.tgz",
|
||||
"integrity": "sha512-nxcoGBaJL/D+Wb0jVe8qwyV8QZpRcCzU0aCKhG0S1XNGWGjJJJ4QV851aobcfDwI4NluFOdqkjTSf32pVijvHg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
@@ -3173,9 +3173,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/exiftool-vendored.pl": {
|
||||
"version": "12.85.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.85.0.tgz",
|
||||
"integrity": "sha512-AelZQCCfl0a0g7PYx90TqbNGlSu2zDbRfCTjGw6bBBYnJF0NUfUWVhTpa8XGe2lHx1KYikH8AkJaey3esAxMAg==",
|
||||
"version": "12.91.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.91.0.tgz",
|
||||
"integrity": "sha512-GZMy9+Jiv8/C7R4uYe1kWtXsAaJdgVezTwYa+wDeoqvReHiX2t5uzkCrzWdjo4LGl5mPQkyKhN7/uPLYk5Ak6w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "immich-e2e",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-unicorn": "^54.0.0",
|
||||
"exiftool-vendored": "^27.0.0",
|
||||
"exiftool-vendored": "^28.0.0",
|
||||
"jose": "^5.6.3",
|
||||
"luxon": "^3.4.4",
|
||||
"oidc-provider": "^8.5.1",
|
||||
@@ -47,9 +47,9 @@
|
||||
"supertest": "^7.0.0",
|
||||
"typescript": "^5.3.3",
|
||||
"utimes": "^5.2.1",
|
||||
"vitest": "^1.3.0"
|
||||
"vitest": "^1.6.0"
|
||||
},
|
||||
"volta": {
|
||||
"node": "20.15.1"
|
||||
"node": "20.16.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,4 +159,75 @@ describe('/map', () => {
|
||||
expect(body).toEqual(expect.objectContaining({ id: 'immich-map-dark' }));
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /map/reverse-geocode', () => {
|
||||
it('should require authentication', async () => {
|
||||
const { status, body } = await request(app).get('/map/reverse-geocode');
|
||||
expect(status).toBe(401);
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
it('should throw an error if a lat is not provided', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/map/reverse-geocode?lon=123')
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest(['lat must be a number between -90 and 90']));
|
||||
});
|
||||
|
||||
it('should throw an error if a lat is not a number', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/map/reverse-geocode?lat=abc&lon=123.456')
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest(['lat must be a number between -90 and 90']));
|
||||
});
|
||||
|
||||
it('should throw an error if a lat is out of range', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/map/reverse-geocode?lat=91&lon=123.456')
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest(['lat must be a number between -90 and 90']));
|
||||
});
|
||||
|
||||
it('should throw an error if a lon is not provided', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.get('/map/reverse-geocode?lat=75')
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(errorDto.badRequest(['lon must be a number between -180 and 180']));
|
||||
});
|
||||
|
||||
const reverseGeocodeTestCases = [
|
||||
{
|
||||
name: 'Vaucluse',
|
||||
lat: -33.858_977_058_663_13,
|
||||
lon: 151.278_490_730_270_48,
|
||||
results: [{ city: 'Vaucluse', state: 'New South Wales', country: 'Australia' }],
|
||||
},
|
||||
{
|
||||
name: 'Ravenhall',
|
||||
lat: -37.765_732_399_174_75,
|
||||
lon: 144.752_453_164_883_3,
|
||||
results: [{ city: 'Ravenhall', state: 'Victoria', country: 'Australia' }],
|
||||
},
|
||||
{
|
||||
name: 'Scarborough',
|
||||
lat: -31.894_346_156_789_997,
|
||||
lon: 115.757_617_103_904_64,
|
||||
results: [{ city: 'Scarborough', state: 'Western Australia', country: 'Australia' }],
|
||||
},
|
||||
];
|
||||
|
||||
it.each(reverseGeocodeTestCases)(`should resolve to $name`, async ({ lat, lon, results }) => {
|
||||
const { status, body } = await request(app)
|
||||
.get(`/map/reverse-geocode?lat=${lat}&lon=${lon}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(status).toBe(200);
|
||||
expect(Array.isArray(body)).toBe(true);
|
||||
expect(body.length).toBe(results.length);
|
||||
expect(body).toEqual(results);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -6,10 +6,19 @@ import request from 'supertest';
|
||||
import { beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||
|
||||
const invalidBirthday = [
|
||||
{ birthDate: 'false', response: 'birthDate must be a date string' },
|
||||
{ birthDate: '123567', response: 'birthDate must be a date string' },
|
||||
{ birthDate: 123_567, response: 'birthDate must be a date string' },
|
||||
{ birthDate: new Date(9999, 0, 0).toISOString(), response: ['Birth date cannot be in the future'] },
|
||||
{
|
||||
birthDate: 'false',
|
||||
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
|
||||
},
|
||||
{
|
||||
birthDate: '123567',
|
||||
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
|
||||
},
|
||||
{
|
||||
birthDate: 123_567,
|
||||
response: ['birthDate must be a string in the format yyyy-MM-dd', 'Birth date cannot be in the future'],
|
||||
},
|
||||
{ birthDate: '9999-01-01', response: ['Birth date cannot be in the future'] },
|
||||
];
|
||||
|
||||
describe('/people', () => {
|
||||
@@ -185,13 +194,13 @@ describe('/people', () => {
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({
|
||||
name: 'New Person',
|
||||
birthDate: '1990-01-01T05:00:00.000Z',
|
||||
birthDate: '1990-01-01',
|
||||
});
|
||||
expect(status).toBe(201);
|
||||
expect(body).toMatchObject({
|
||||
id: expect.any(String),
|
||||
name: 'New Person',
|
||||
birthDate: '1990-01-01T05:00:00.000Z',
|
||||
birthDate: '1990-01-01',
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -233,7 +242,7 @@ describe('/people', () => {
|
||||
const { status, body } = await request(app)
|
||||
.put(`/people/${visiblePerson.id}`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ birthDate: '1990-01-01T05:00:00.000Z' });
|
||||
.send({ birthDate: '1990-01-01' });
|
||||
expect(status).toBe(200);
|
||||
expect(body).toMatchObject({ birthDate: '1990-01-01' });
|
||||
});
|
||||
|
||||
@@ -112,6 +112,13 @@ describe('/shared-links', () => {
|
||||
expect(resp.header['content-type']).toContain('text/html');
|
||||
expect(resp.text).toContain(`<meta name="description" content="1 shared photos & videos" />`);
|
||||
});
|
||||
|
||||
it('should have fqdn og:image meta tag for shared asset', async () => {
|
||||
const resp = await request(shareUrl).get(`/${linkWithAssets.key}`);
|
||||
expect(resp.status).toBe(200);
|
||||
expect(resp.header['content-type']).toContain('text/html');
|
||||
expect(resp.text).toContain(`<meta property="og:image" content="http://`);
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /shared-links', () => {
|
||||
|
||||
@@ -13,7 +13,7 @@ test.describe('Registration', () => {
|
||||
test('admin registration', async ({ page }) => {
|
||||
// welcome
|
||||
await page.goto('/');
|
||||
await page.getByRole('button', { name: 'Getting Started' }).click();
|
||||
await page.getByRole('link', { name: 'Getting Started' }).click();
|
||||
|
||||
// register
|
||||
await expect(page).toHaveTitle(/Admin Registration/);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "machine-learning"
|
||||
version = "1.110.0"
|
||||
version = "1.111.0"
|
||||
description = ""
|
||||
authors = ["Hau Tran <alex.tran1502@gmail.com>"]
|
||||
readme = "README.md"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"flutter": "3.22.2"
|
||||
"flutter": "3.22.3"
|
||||
}
|
||||
2
mobile/.vscode/settings.json
vendored
2
mobile/.vscode/settings.json
vendored
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"dart.flutterSdkPath": ".fvm/versions/3.22.1",
|
||||
"dart.flutterSdkPath": ".fvm/versions/3.22.3",
|
||||
"search.exclude": {
|
||||
"**/.fvm": true
|
||||
},
|
||||
|
||||
@@ -35,8 +35,8 @@ platform :android do
|
||||
task: 'bundle',
|
||||
build_type: 'Release',
|
||||
properties: {
|
||||
"android.injected.version.code" => 151,
|
||||
"android.injected.version.name" => "1.110.0",
|
||||
"android.injected.version.code" => 152,
|
||||
"android.injected.version.name" => "1.111.0",
|
||||
}
|
||||
)
|
||||
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')
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "يلغي",
|
||||
"action_common_clear": "مسح",
|
||||
"action_common_confirm": "تأكيد",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "تحديث",
|
||||
"add_to_album_bottom_sheet_added": "تمت الاضافة{album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "موجودة مسبقا {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "كلمة المرور الجديدة",
|
||||
"change_password_form_password_mismatch": "كلمة المرور غير مطابقة",
|
||||
"change_password_form_reenter_new_password": "أعد إدخال كلمة مرور جديدة",
|
||||
"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": "مشترك",
|
||||
"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",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "يمسح",
|
||||
"control_bottom_app_bar_delete_from_immich": " حذف منال تطبيق",
|
||||
"control_bottom_app_bar_delete_from_local": "حذف من الجهاز",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "تحديد الوجهة",
|
||||
"control_bottom_app_bar_edit_time": "تحرير التاريخ والوقت",
|
||||
"control_bottom_app_bar_favorite": "مفضل",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "تجريبي",
|
||||
"favorites_page_no_favorites": "لم يتم العثور على الأصول المفضلة",
|
||||
"favorites_page_title": "المفضلة",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "تمكين ردود الفعل اللمسية",
|
||||
"haptic_feedback_title": "ردود فعل لمسية",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_page_albums": "ألبومات",
|
||||
"library_page_archive": "أرشيف",
|
||||
"library_page_device_albums": "ألبومات على الجهاز",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "لا يمكن تعديل تاريخ الأصول (المواد) للقراءة فقط، سوف يتخطى",
|
||||
"multiselect_grid_edit_gps_err_read_only": "لا يمكن تعديل موقع الأصول (المواد) للقراءة فقط، سوف يتخطى",
|
||||
"no_assets_to_show": "لا توجد أصول لعرضها",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "يلغي",
|
||||
"notification_permission_dialog_content": "لتمكين الإخطارات ، انتقل إلى الإعدادات و اختار السماح.",
|
||||
"notification_permission_dialog_settings": "إعدادات",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "حدث خطأ",
|
||||
"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_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"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_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_title": "Select people",
|
||||
"search_page_categories": "فئات",
|
||||
"search_page_favorites": "المفضلة",
|
||||
"search_page_motion_photos": "الصور المتحركه",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Zrušit",
|
||||
"action_common_clear": "Vyčistit",
|
||||
"action_common_confirm": "Potvrdit",
|
||||
"action_common_save": "Uložit",
|
||||
"action_common_select": "Vybrat",
|
||||
"action_common_update": "Aktualizovat",
|
||||
"add_to_album_bottom_sheet_added": "Přidáno do {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Je již v {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nové heslo",
|
||||
"change_password_form_password_mismatch": "Hesla se neshodují",
|
||||
"change_password_form_reenter_new_password": "Znovu zadejte nové heslo",
|
||||
"client_cert_dialog_msg_confirm": "OK",
|
||||
"client_cert_enter_password": "Zadejte heslo",
|
||||
"client_cert_import": "Importovat",
|
||||
"client_cert_import_success_msg": "Klientský certifikát je importován",
|
||||
"client_cert_invalid_msg": "Neplatný soubor certifikátu nebo špatné heslo",
|
||||
"client_cert_remove": "Odstranit",
|
||||
"client_cert_remove_msg": "Klientský certifikát je odstraněn",
|
||||
"client_cert_subtitle": "Podpora pouze formátu PKCS12 (.p12, .pfx). Import/odstranění certifikátu je možné pouze před přihlášením",
|
||||
"client_cert_title": "Klientský SSL certifikát",
|
||||
"common_add_to_album": "Přidat do alba",
|
||||
"common_change_password": "Změnit heslo",
|
||||
"common_create_new_album": "Vytvořit nové album",
|
||||
"common_server_error": "Zkontrolujte připojení k internetu. Ujistěte se, že server je dostupný a aplikace/server jsou v kompatibilní verzi.",
|
||||
"common_shared": "Sdílené",
|
||||
"contextual_search": "Východ slunce na pláži",
|
||||
"control_bottom_app_bar_add_to_album": "Přidat do alba",
|
||||
"control_bottom_app_bar_album_info": "{} položek",
|
||||
"control_bottom_app_bar_album_info_shared": "{} položky – sdílené",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Smazat",
|
||||
"control_bottom_app_bar_delete_from_immich": "Smazat ze serveru Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Smazat ze zařízení",
|
||||
"control_bottom_app_bar_edit": "Upravit",
|
||||
"control_bottom_app_bar_edit_location": "Upravit polohu",
|
||||
"control_bottom_app_bar_edit_time": "Upravit datum a čas",
|
||||
"control_bottom_app_bar_favorite": "Oblíbené",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimentální",
|
||||
"favorites_page_no_favorites": "Nebyla nalezena žádná oblíbená média",
|
||||
"favorites_page_title": "Oblíbené",
|
||||
"filename_search": "Název nebo přípona souboru",
|
||||
"haptic_feedback_switch": "Povolit dotykovou zpětnou vazbu",
|
||||
"haptic_feedback_title": "Dotyková zpětná vazba",
|
||||
"header_settings_add_header_tip": "Přidat hlavičku",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Stahování zahájeno",
|
||||
"image_viewer_page_state_provider_download_success": "Stahování bylo úspěšné",
|
||||
"image_viewer_page_state_provider_share_error": "Chyba sdílení",
|
||||
"invalid_date": "Chybné datum",
|
||||
"invalid_date_format": "Chybný formát data",
|
||||
"library_page_albums": "Alba",
|
||||
"library_page_archive": "Archív",
|
||||
"library_page_device_albums": "Alba v zařízení",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Nelze upravit datum položek pouze pro čtení, přeskakuji",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Nelze upravit polohu položek pouze pro čtení, přeskakuji",
|
||||
"no_assets_to_show": "Žádné položky k zobrazení",
|
||||
"no_name": "Bez jména",
|
||||
"notification_permission_dialog_cancel": "Zrušit",
|
||||
"notification_permission_dialog_content": "Chcete-li povolit oznámení, přejděte do nastavení a vyberte možnost povolit.",
|
||||
"notification_permission_dialog_settings": "Nastavení",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Došlo k chybě",
|
||||
"search_bar_hint": "Prohledejte své fotky",
|
||||
"search_filter_apply": "Použít filtr",
|
||||
"search_filter_camera": "Fotoaparát",
|
||||
"search_filter_camera_make": "Výrobce",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Výběr typu fotoaparátu",
|
||||
"search_filter_date": "Datum",
|
||||
"search_filter_date_interval": "{start} až {end}",
|
||||
"search_filter_date_title": "Výběr rozmezí dat",
|
||||
"search_filter_display_option_archive": "Archiv",
|
||||
"search_filter_display_option_favorite": "Oblíbené",
|
||||
"search_filter_display_option_not_in_album": "Není v albu",
|
||||
"search_filter_display_options": "Možnost zobrazení",
|
||||
"search_filter_display_options_title": "Možnosti zobrazení",
|
||||
"search_filter_location": "Poloha",
|
||||
"search_filter_location_city": "Město",
|
||||
"search_filter_location_country": "Země",
|
||||
"search_filter_location_state": "Stát",
|
||||
"search_filter_location_title": "Výběr polohy",
|
||||
"search_filter_media_type": "Typ média",
|
||||
"search_filter_media_type_all": "Všechny",
|
||||
"search_filter_media_type_image": "Obrázek",
|
||||
"search_filter_media_type_title": "Výběr typu média",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "Lidé",
|
||||
"search_filter_people_title": "Výběr lidí",
|
||||
"search_page_categories": "Kategorie",
|
||||
"search_page_favorites": "Oblíbené",
|
||||
"search_page_motion_photos": "Pohyblivé fotky",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Annuller",
|
||||
"action_common_clear": "Ryd",
|
||||
"action_common_confirm": "Bekræft",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Opdater",
|
||||
"add_to_album_bottom_sheet_added": "Tilføjet til {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nyt kodeord",
|
||||
"change_password_form_password_mismatch": "Kodeord er ikke ens",
|
||||
"change_password_form_reenter_new_password": "Gentag nyt kodeord",
|
||||
"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": "Tilføj til album",
|
||||
"common_change_password": "Skift kodeord",
|
||||
"common_create_new_album": "Opret et nyt album",
|
||||
"common_server_error": "Tjek din internetforbindelse, sørg for at serveren er tilgængelig og at app- og serversioner er kompatible.",
|
||||
"common_shared": "Delt",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Tilføj til album",
|
||||
"control_bottom_app_bar_album_info": "{} genstande",
|
||||
"control_bottom_app_bar_album_info_shared": "{} genstande • Delt",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Slet",
|
||||
"control_bottom_app_bar_delete_from_immich": "Slet fra Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Slet fra enhed",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Rediger placering",
|
||||
"control_bottom_app_bar_edit_time": "Rediger tid og dato",
|
||||
"control_bottom_app_bar_favorite": "Favorit",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Eksperimentelle",
|
||||
"favorites_page_no_favorites": "Ingen favoritter blev fundet",
|
||||
"favorites_page_title": "Favoritter",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Slå haptisk feedback til",
|
||||
"haptic_feedback_title": "Haptisk feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download startet",
|
||||
"image_viewer_page_state_provider_download_success": "Download succesfuld",
|
||||
"image_viewer_page_state_provider_share_error": "Delingsfejl",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albummer",
|
||||
"library_page_archive": "Arkiv",
|
||||
"library_page_device_albums": "Albummer på enhed",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke redigere datoen på kun læselige elementer. Springer over",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Kan ikke redigere lokation af kun læselige elementer. Springer over",
|
||||
"no_assets_to_show": "Ingen elementer at vise",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Annuller",
|
||||
"notification_permission_dialog_content": "Gå til indstillinger for at slå notifikationer til.",
|
||||
"notification_permission_dialog_settings": "Indstillinger",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Der opstod en fejl",
|
||||
"search_bar_hint": "Søg i dine billeder",
|
||||
"search_filter_apply": "Tilføj filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Producent",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Arkiv",
|
||||
"search_filter_display_option_favorite": "Favorit",
|
||||
"search_filter_display_option_not_in_album": "Ikke i album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "By",
|
||||
"search_filter_location_country": "Land",
|
||||
"search_filter_location_state": "Stat",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Alle",
|
||||
"search_filter_media_type_image": "Billede",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategorier",
|
||||
"search_page_favorites": "Favoritter",
|
||||
"search_page_motion_photos": "Bevægelsesbilleder",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Abbrechen",
|
||||
"action_common_clear": "Leeren",
|
||||
"action_common_confirm": "Bestätigen",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Aktualisieren",
|
||||
"add_to_album_bottom_sheet_added": "Zu {album} hinzugefügt",
|
||||
"add_to_album_bottom_sheet_already_exists": "Bereits in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Neues Passwort",
|
||||
"change_password_form_password_mismatch": "Passwörter stimmen nicht überein",
|
||||
"change_password_form_reenter_new_password": "Passwort erneut eingeben",
|
||||
"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": "Zu Album hinzufügen",
|
||||
"common_change_password": "Passwort ändern",
|
||||
"common_create_new_album": "Neues Album erstellen",
|
||||
"common_server_error": "Bitte überprüfe Deine Netzwerkverbindung und stelle sicher, dass die App und Server Versionen kompatibel sind.",
|
||||
"common_shared": "Geteilt",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Zu Album hinzufügen",
|
||||
"control_bottom_app_bar_album_info": "{} Elemente",
|
||||
"control_bottom_app_bar_album_info_shared": "{} Elemente · Geteilt",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Löschen",
|
||||
"control_bottom_app_bar_delete_from_immich": "Aus Immich löschen",
|
||||
"control_bottom_app_bar_delete_from_local": "Vom Gerät löschen",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Ort bearbeiten",
|
||||
"control_bottom_app_bar_edit_time": "Datum und Uhrzeit bearbeiten",
|
||||
"control_bottom_app_bar_favorite": "Favorit",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimentell",
|
||||
"favorites_page_no_favorites": "Keine favorisierten Inhalte gefunden",
|
||||
"favorites_page_title": "Favoriten",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Haptisches Feedback aktivieren",
|
||||
"haptic_feedback_title": "Haptisches Feedback",
|
||||
"header_settings_add_header_tip": "Header hinzufügen",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download gestartet",
|
||||
"image_viewer_page_state_provider_download_success": "Erfolgreich heruntergeladen",
|
||||
"image_viewer_page_state_provider_share_error": "Fehler beim Teilen",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Alben",
|
||||
"library_page_archive": "Archiv",
|
||||
"library_page_device_albums": "Alben auf dem Gerät",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Das Datum und die Uhrzeit von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Der Aufnahmeort von schreibgeschützten Inhalten kann nicht verändert werden, überspringen...",
|
||||
"no_assets_to_show": "Keine Vorschau vorhanden",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Abbrechen",
|
||||
"notification_permission_dialog_content": "Um Benachrichtigungen zu aktivieren, navigiere zu Einstellungen und klicke \"Erlauben\"",
|
||||
"notification_permission_dialog_settings": "Einstellungen",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Ein Fehler ist aufgetreten",
|
||||
"search_bar_hint": "Durchsuche deine Fotos",
|
||||
"search_filter_apply": "Filter anwenden",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Marke",
|
||||
"search_filter_camera_model": "Modell",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archiv",
|
||||
"search_filter_display_option_favorite": "Favorit",
|
||||
"search_filter_display_option_not_in_album": "Nicht im Album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Stadt",
|
||||
"search_filter_location_country": "Land",
|
||||
"search_filter_location_state": "Bundesland",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Alle",
|
||||
"search_filter_media_type_image": "Bild",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategorien",
|
||||
"search_page_favorites": "Favoriten",
|
||||
"search_page_motion_photos": "Live-Fotos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Ακύρωση",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Ενημέρωση",
|
||||
"add_to_album_bottom_sheet_added": "Προστέθηκε στο {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Ήδη στο {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Νέος Κωδικός",
|
||||
"change_password_form_password_mismatch": "Οι κωδικοί δεν ταιριάζουν",
|
||||
"change_password_form_reenter_new_password": "Επανεισαγωγή Νέου Κωδικού",
|
||||
"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": "Κοινόχρηστο",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Προσθήκη στο άλμπουμ",
|
||||
"control_bottom_app_bar_album_info": "{} αντικείμενα",
|
||||
"control_bottom_app_bar_album_info_shared": "{} αντικείμενα · Κοινόχρηστα",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Διαγραφή",
|
||||
"control_bottom_app_bar_delete_from_immich": "Διαγραφή από το Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Διαγραφή από τη συσκευή",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Επεξεργασία Τοποθεσίας",
|
||||
"control_bottom_app_bar_edit_time": "Επεξεργασία Ημερομηνίας & Ώρας",
|
||||
"control_bottom_app_bar_favorite": "Προσθήκη στα αγαπημένα",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Πειραματικό",
|
||||
"favorites_page_no_favorites": "Δεν βρέθηκαν αγαπημένα στοιχεία",
|
||||
"favorites_page_title": "Αγαπημένα",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
@@ -531,19 +561,5 @@
|
||||
"version_announcement_overlay_title": "New Server Version Available \uD83C\uDF89",
|
||||
"viewer_remove_from_stack": "Remove from Stack",
|
||||
"viewer_stack_use_as_main_asset": "Use as Main Asset",
|
||||
"viewer_unstack": "Un-Stack",
|
||||
"header_settings_header_name_input": "Header name",
|
||||
"header_settings_header_value_input": "Header value",
|
||||
"header_settings_page_title": "Proxy Headers",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
"header_settings_field_validator_msg": "Value cannot be empty",
|
||||
"client_cert_title": "SSL Client Certificate",
|
||||
"client_cert_subtitle": "Supports PKCS12 (.p12, .pfx) format only. Certificate Import/Remove is available only before login",
|
||||
"client_cert_import": "Import",
|
||||
"client_cert_remove": "Remove",
|
||||
"client_cert_remove_msg": "Client certificate is removed",
|
||||
"client_cert_import_success_msg": "Client certificate is imported",
|
||||
"client_cert_invalid_msg": "Invalid certificate file or wrong password",
|
||||
"client_cert_dialog_msg_confirm": "OK",
|
||||
"client_cert_enter_password": "Enter Password"
|
||||
}
|
||||
"viewer_unstack": "Un-Stack"
|
||||
}
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancelar",
|
||||
"action_common_clear": "Limpiar",
|
||||
"action_common_confirm": "Confirmar",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Actualizar",
|
||||
"add_to_album_bottom_sheet_added": "Agregado a {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nueva Contraseña",
|
||||
"change_password_form_password_mismatch": "Las contraseñas no coinciden",
|
||||
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
|
||||
"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": "Agregar al álbum",
|
||||
"common_change_password": "Cambiar Contraseña",
|
||||
"common_create_new_album": "Crear nuevo álbum",
|
||||
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
|
||||
"common_shared": "Compartido",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Agregar al álbum",
|
||||
"control_bottom_app_bar_album_info": "{} elementos",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Eliminar",
|
||||
"control_bottom_app_bar_delete_from_immich": "Borrar de Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Borrar del dispositivo",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Editar ubicación",
|
||||
"control_bottom_app_bar_edit_time": "Editar fecha y hora",
|
||||
"control_bottom_app_bar_favorite": "Favorito",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No se encontraron elementos marcados como favoritos",
|
||||
"favorites_page_title": "Favoritos",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Activar respuesta háptica",
|
||||
"haptic_feedback_title": "Respuesta Háptica",
|
||||
"header_settings_add_header_tip": "Añadir cabecera",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Descarga Iniciada",
|
||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||
"image_viewer_page_state_provider_share_error": "Error al compartir",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Álbumes",
|
||||
"library_page_archive": "Archivo",
|
||||
"library_page_device_albums": "Álbumes en el dispositivo",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "No se puede cambiar la fecha del archivo(s) de solo lectura, omitiendo",
|
||||
"multiselect_grid_edit_gps_err_read_only": "No se puede cambiar la localización de archivos de solo lectura. Saltando.",
|
||||
"no_assets_to_show": "No hay elementos a mostrar",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancelar",
|
||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||
"notification_permission_dialog_settings": "Ajustes",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Ha ocurrido un error",
|
||||
"search_bar_hint": "Busca tus fotos",
|
||||
"search_filter_apply": "Aplicar filtros",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Marca",
|
||||
"search_filter_camera_model": "Modelo",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archivado",
|
||||
"search_filter_display_option_favorite": "Favorito",
|
||||
"search_filter_display_option_not_in_album": "No en álbum",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Ciudad",
|
||||
"search_filter_location_country": "País",
|
||||
"search_filter_location_state": "Estado",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Todos",
|
||||
"search_filter_media_type_image": "Imagen",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Vídeo",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categorías",
|
||||
"search_page_favorites": "Favoritos",
|
||||
"search_page_motion_photos": "Foto en Movimiento",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Agregado a {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nueva Contraseña",
|
||||
"change_password_form_password_mismatch": "Las contraseñas no coinciden",
|
||||
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
|
||||
"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": "Agregar al álbum",
|
||||
"common_change_password": "Cambiar Contraseña",
|
||||
"common_create_new_album": "Crear nuevo álbum",
|
||||
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
|
||||
"common_shared": "Compartido",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Agregar al álbum",
|
||||
"control_bottom_app_bar_album_info": "{} elementos",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Eliminar",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorito",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
|
||||
"favorites_page_title": "Favoritos",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||
"image_viewer_page_state_provider_share_error": "Error al compartir",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Álbumes",
|
||||
"library_page_archive": "Archivo",
|
||||
"library_page_device_albums": "Álbumes en el dispositivo",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancelar",
|
||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||
"notification_permission_dialog_settings": "Ajustes",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Busca tus fotos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categorías",
|
||||
"search_page_favorites": "Favoritos",
|
||||
"search_page_motion_photos": "Foto en Movimiento",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Agregado a {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nueva Contraseña",
|
||||
"change_password_form_password_mismatch": "Las contraseñas no coinciden",
|
||||
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
|
||||
"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": "Agregar al álbum",
|
||||
"common_change_password": "Cambiar Contraseña",
|
||||
"common_create_new_album": "Crear nuevo álbum",
|
||||
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
|
||||
"common_shared": "Compartido",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Agregar al álbum",
|
||||
"control_bottom_app_bar_album_info": "{} elementos",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartidos",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Eliminar",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorito",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
|
||||
"favorites_page_title": "Favoritos",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||
"image_viewer_page_state_provider_share_error": "Error al compartir",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Álbumes",
|
||||
"library_page_archive": "Archivo",
|
||||
"library_page_device_albums": "Álbumes en el dispositivo",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancelar",
|
||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||
"notification_permission_dialog_settings": "Ajustes",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Busca tus fotos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categorías",
|
||||
"search_page_favorites": "Favoritos",
|
||||
"search_page_motion_photos": "Foto en Movimiento",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Agregado a {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Ya se encuentra en {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nueva Contraseña",
|
||||
"change_password_form_password_mismatch": "Las contraseñas no coinciden",
|
||||
"change_password_form_reenter_new_password": "Vuelve a ingresar la nueva contraseña",
|
||||
"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": "Agregar al álbum",
|
||||
"common_change_password": "Cambiar Contraseña",
|
||||
"common_create_new_album": "Crear nuevo álbum",
|
||||
"common_server_error": "Por favor, verifica tu conexión de red, asegúrate de que el servidor esté accesible y las versiones de la aplicación y del servidor sean compatibles.",
|
||||
"common_shared": "Compartido",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Agregar al álbum",
|
||||
"control_bottom_app_bar_album_info": "{} elementos",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementos · Compartido",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Eliminar",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorito",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No se encontraron recursos marcados como favoritos",
|
||||
"favorites_page_title": "Favoritos",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Descarga exitosa",
|
||||
"image_viewer_page_state_provider_share_error": "Error al compartir",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Álbumes",
|
||||
"library_page_archive": "Archivo",
|
||||
"library_page_device_albums": "Álbumes en el dispositivo",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancelar",
|
||||
"notification_permission_dialog_content": "Para activar las notificaciones, ve a Configuración y selecciona permitir.",
|
||||
"notification_permission_dialog_settings": "Configuración",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Busca tus fotos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categorías",
|
||||
"search_page_favorites": "Favoritos",
|
||||
"search_page_motion_photos": "Fotos en .ovimiento",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Peruuta",
|
||||
"action_common_clear": "Tyhjennä",
|
||||
"action_common_confirm": "Vahvista",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Päivitä",
|
||||
"add_to_album_bottom_sheet_added": "Lisätty albumiin {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Kohde on jo albumissa {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Uusi salasana",
|
||||
"change_password_form_password_mismatch": "Salasanat eivät täsmää",
|
||||
"change_password_form_reenter_new_password": "Uusi salasana uudelleen",
|
||||
"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": "Lisää albumiin",
|
||||
"common_change_password": "Vaihda salasana",
|
||||
"common_create_new_album": "Luo uusi albumi",
|
||||
"common_server_error": "Tarkista internet-yhteytesi. Varmista että palvelin on saavutettavissa ja sovellus-/palvelinversiot ovat yhteensopivia.",
|
||||
"common_shared": "Jaettu",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Lisää albumiin",
|
||||
"control_bottom_app_bar_album_info": "{} kohdetta",
|
||||
"control_bottom_app_bar_album_info_shared": "{} kohdetta · Jaettu",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Poista",
|
||||
"control_bottom_app_bar_delete_from_immich": "Poista Immichistä",
|
||||
"control_bottom_app_bar_delete_from_local": "Poista laitteelta",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Muokkaa sijaintia",
|
||||
"control_bottom_app_bar_edit_time": "Muokkaa aikaa",
|
||||
"control_bottom_app_bar_favorite": "Suosikki",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Kokeellinen",
|
||||
"favorites_page_no_favorites": "Suosikkikohteita ei löytynyt",
|
||||
"favorites_page_title": "Suosikit",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Ota haptinen palaute käyttöön",
|
||||
"haptic_feedback_title": "Haptinen palaute",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Lataaminen aloitettu",
|
||||
"image_viewer_page_state_provider_download_success": "Lataus onnistui",
|
||||
"image_viewer_page_state_provider_share_error": "Jakovirhe",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumit",
|
||||
"library_page_archive": "Arkisto",
|
||||
"library_page_device_albums": "Laitteen albumit",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Vain luku -tilassa olevien kohteiden päivämäärää ei voitu muokata, ohitetaan",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Vain luku-tilassa olevien kohteiden sijantitietoja ei voitu muokata, ohitetaan",
|
||||
"no_assets_to_show": "Ei näytettäviä kohteita",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Peruuta",
|
||||
"notification_permission_dialog_content": "Ottaaksesi ilmoitukset käyttöön, siirry asetuksiin ja valitse 'salli'.",
|
||||
"notification_permission_dialog_settings": "Asetukset",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Tapahtui virhe",
|
||||
"search_bar_hint": "Etsi kuvia",
|
||||
"search_filter_apply": "Käytä",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Valmistaja",
|
||||
"search_filter_camera_model": "Malli",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Arkisto",
|
||||
"search_filter_display_option_favorite": "Suosikki",
|
||||
"search_filter_display_option_not_in_album": "Ei kuulu albumiin",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Kaupunki",
|
||||
"search_filter_location_country": "Maa",
|
||||
"search_filter_location_state": "Maakunta/osavaltio",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Kaikki",
|
||||
"search_filter_media_type_image": "Kuva",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategoriat",
|
||||
"search_page_favorites": "Suosikit",
|
||||
"search_page_motion_photos": "Liikekuvat",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Ajouté à {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nouveau mot de passe",
|
||||
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas",
|
||||
"change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
|
||||
"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": "Ajouter à l'album",
|
||||
"common_change_password": "Modifier le mot de passe",
|
||||
"common_create_new_album": "Créer un nouvel album",
|
||||
"common_server_error": "Veuillez vérifier votre connexion réseau, vous assurer que le serveur est accessible et que les versions de l'application et du serveur sont compatibles.",
|
||||
"common_shared": "Partagé",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Ajouter à l'album",
|
||||
"control_bottom_app_bar_album_info": "{} éléments",
|
||||
"control_bottom_app_bar_album_info_shared": "{} éléments - Partagés",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Supprimer",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favoris",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Expérimental",
|
||||
"favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
|
||||
"favorites_page_title": "Favoris",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Téléchargement réussi",
|
||||
"image_viewer_page_state_provider_share_error": "Erreur de partage",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums sur l'appareil",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Annuler",
|
||||
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
||||
"notification_permission_dialog_settings": "Paramètres",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Rechercher vos photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Catégories",
|
||||
"search_page_favorites": "Favoris",
|
||||
"search_page_motion_photos": "Photos avec mouvement",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Annuler",
|
||||
"action_common_clear": "Vider",
|
||||
"action_common_confirm": "Confirmer",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Mise à jour",
|
||||
"add_to_album_bottom_sheet_added": "Ajouté à {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Déjà dans {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nouveau mot de passe",
|
||||
"change_password_form_password_mismatch": "Les mots de passe ne correspondent pas",
|
||||
"change_password_form_reenter_new_password": "Saisissez à nouveau le nouveau mot de passe",
|
||||
"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": "Ajouter à l'album",
|
||||
"common_change_password": "Modifier le mot de passe",
|
||||
"common_create_new_album": "Créer un nouvel album",
|
||||
"common_server_error": "Veuillez vérifier votre connexion réseau, vous assurer que le serveur est accessible et que les versions de l'application et du serveur sont compatibles.",
|
||||
"common_shared": "Partagé",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Ajouter à l'album",
|
||||
"control_bottom_app_bar_album_info": "{} éléments",
|
||||
"control_bottom_app_bar_album_info_shared": "{} éléments - Partagés",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Supprimer",
|
||||
"control_bottom_app_bar_delete_from_immich": "Supprimer de Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Supprimer de l'appareil",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Modifier la localisation",
|
||||
"control_bottom_app_bar_edit_time": "Modifier la date et l'heure",
|
||||
"control_bottom_app_bar_favorite": "Favoris",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Expérimental",
|
||||
"favorites_page_no_favorites": "Aucun élément favori n'a été trouvé",
|
||||
"favorites_page_title": "Favoris",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Activer le retour haptique",
|
||||
"haptic_feedback_title": "Retour haptique",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Téléchargement Démarré",
|
||||
"image_viewer_page_state_provider_download_success": "Téléchargement réussi",
|
||||
"image_viewer_page_state_provider_share_error": "Erreur de partage",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums sur l'appareil",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Impossible de modifier la date d'un élément d'actif en lecture seule.",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Impossible de modifier l'emplacement d'un élément en lecture seule.",
|
||||
"no_assets_to_show": "Aucuns éléments à afficher",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Annuler",
|
||||
"notification_permission_dialog_content": "Pour activer les notifications, allez dans Paramètres et sélectionnez Autoriser.",
|
||||
"notification_permission_dialog_settings": "Paramètres",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Une erreur s'est produite",
|
||||
"search_bar_hint": "Rechercher vos photos",
|
||||
"search_filter_apply": "Appliquer le filtre",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Fabricant",
|
||||
"search_filter_camera_model": "Modéle",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Achive",
|
||||
"search_filter_display_option_favorite": "Favoris",
|
||||
"search_filter_display_option_not_in_album": "Pas dans un album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Ville",
|
||||
"search_filter_location_country": "Pays",
|
||||
"search_filter_location_state": "Région",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Tous",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Vidéo",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Catégories",
|
||||
"search_page_favorites": "Favoris",
|
||||
"search_page_motion_photos": "Photos animées",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "ביטול",
|
||||
"action_common_clear": "נקה",
|
||||
"action_common_confirm": "אישור",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "עדכון",
|
||||
"add_to_album_bottom_sheet_added": "נוסף ל {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "כבר ב {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "סיסמה חדשה",
|
||||
"change_password_form_password_mismatch": "סיסמאות לא תואמות",
|
||||
"change_password_form_reenter_new_password": "הכנס שוב סיסמה חדשה",
|
||||
"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": "משותף",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "הוסף לאלבום",
|
||||
"control_bottom_app_bar_album_info": "{} פריטים",
|
||||
"control_bottom_app_bar_album_info_shared": "{} פריטים · משותפים",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "מחק",
|
||||
"control_bottom_app_bar_delete_from_immich": "מחק מהשרת",
|
||||
"control_bottom_app_bar_delete_from_local": "מחק מהמכשיר",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "ערוך מיקום",
|
||||
"control_bottom_app_bar_edit_time": "ערוך תאריך & זמן",
|
||||
"control_bottom_app_bar_favorite": "הוסף למועדפים",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "נסיוני",
|
||||
"favorites_page_no_favorites": "לא נמצאו נכסים מועדפים",
|
||||
"favorites_page_title": "מועדפים",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "אפשר משוב ברטט",
|
||||
"haptic_feedback_title": "משוב ברטט",
|
||||
"header_settings_add_header_tip": "הוסף כותרת",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_page_albums": "אלבומים",
|
||||
"library_page_archive": "ארכיון",
|
||||
"library_page_device_albums": "אלבומים במכשיר",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "לא ניתן לערוך תאריך של נכס(ים) לקריאה בלבד, מדלג",
|
||||
"multiselect_grid_edit_gps_err_read_only": "לא ניתן לערוך מיקום של נכס(ים) לקריאה בלבד, מדלג",
|
||||
"no_assets_to_show": "אין נכסים להציג",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "ביטול",
|
||||
"notification_permission_dialog_content": "כדי לאפשר התראות, לך להגדרות ובחר התר",
|
||||
"notification_permission_dialog_settings": "הגדרות",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "אירעה שגיאה",
|
||||
"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_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"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_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_title": "Select people",
|
||||
"search_page_categories": "קטגוריות",
|
||||
"search_page_favorites": "מועדפים",
|
||||
"search_page_motion_photos": "תמונות עם תנועה",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Mégsem",
|
||||
"action_common_clear": "Kitöröl",
|
||||
"action_common_confirm": "Jóváhagy",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Frissít",
|
||||
"add_to_album_bottom_sheet_added": "Hozzáadva a(z) \"{album}\" albumhoz",
|
||||
"add_to_album_bottom_sheet_already_exists": "Már benne van a(z) \"{album}\" albumban",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Új Jelszó",
|
||||
"change_password_form_password_mismatch": "A beírt jelszavak nem egyeznek",
|
||||
"change_password_form_reenter_new_password": "Jelszó (még egyszer)",
|
||||
"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": "Albumhoz ad",
|
||||
"common_change_password": "Jelszócsere",
|
||||
"common_create_new_album": "Új album létrehozása",
|
||||
"common_server_error": "Kérjük, ellenőrizd a hálózati kapcsolatot, gondoskodj róla, hogy a szerver elérhető legyen, valamint az alkalmazás és a szerver kompatibilis verziójú legyen.",
|
||||
"common_shared": "Megosztva",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Albumhoz ad",
|
||||
"control_bottom_app_bar_album_info": "{} elem",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elemek · Megosztva",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Törlés",
|
||||
"control_bottom_app_bar_delete_from_immich": "Törlés az Immich-ből",
|
||||
"control_bottom_app_bar_delete_from_local": "Törlés az eszközről",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Hely Módosítása",
|
||||
"control_bottom_app_bar_edit_time": "Dátum és Idő Módosítása",
|
||||
"control_bottom_app_bar_favorite": "Kedvenc",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Kísérleti",
|
||||
"favorites_page_no_favorites": "Nem található kedvencnek jelölt elem",
|
||||
"favorites_page_title": "Kedvencek",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Rezgéses visszajelzés engedélyezése",
|
||||
"haptic_feedback_title": "Rezgéses Visszajelzés",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Letöltés Megkezdődött",
|
||||
"image_viewer_page_state_provider_download_success": "Letöltés Sikeres",
|
||||
"image_viewer_page_state_provider_share_error": "Megosztási Hiba",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumok",
|
||||
"library_page_archive": "Archívum",
|
||||
"library_page_device_albums": "Albumok az Eszközön",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Csak-olvasható elem(ek) dátuma nem módosítható, ezért kihagyjuk",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Csak-olvasható elem(ek) helyszíne nem módosítható, ezért kihagyjuk",
|
||||
"no_assets_to_show": "Nincs megjeleníthető elem",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Mégsem",
|
||||
"notification_permission_dialog_content": "Az értesítések bekapcsolásához a Beállítások menüben válaszd ki az Engedélyezés-t.",
|
||||
"notification_permission_dialog_settings": "Beállítások",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Hiba történt",
|
||||
"search_bar_hint": "Fotók keresése",
|
||||
"search_filter_apply": "Szűrő alkalmazása",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Gyártó",
|
||||
"search_filter_camera_model": "Modell",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archivált",
|
||||
"search_filter_display_option_favorite": "Kedvenc",
|
||||
"search_filter_display_option_not_in_album": "Nincs albumban",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Város",
|
||||
"search_filter_location_country": "Ország",
|
||||
"search_filter_location_state": "Állam",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Összes",
|
||||
"search_filter_media_type_image": "Kép",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Videó",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategóriák",
|
||||
"search_page_favorites": "Kedvencek",
|
||||
"search_page_motion_photos": "Mozgó Fotók",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Annulla",
|
||||
"action_common_clear": "Pulisci",
|
||||
"action_common_confirm": "Conferma",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Aggiorna",
|
||||
"add_to_album_bottom_sheet_added": "Aggiunto in {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Già presente in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nuova Password",
|
||||
"change_password_form_password_mismatch": "Le password non coincidono",
|
||||
"change_password_form_reenter_new_password": "Inserisci ancora la nuova password ",
|
||||
"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": "Aggiungi all'album",
|
||||
"common_change_password": "Cambia Password",
|
||||
"common_create_new_album": "Crea nuovo Album",
|
||||
"common_server_error": "Si prega di controllare la connessione network, che il server sia raggiungibile e che le versione del server e app sono gli stessi",
|
||||
"common_shared": "Condivisi",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Aggiungi all'album",
|
||||
"control_bottom_app_bar_album_info": "{} elementi",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementi · Condivisi",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Elimina",
|
||||
"control_bottom_app_bar_delete_from_immich": "Elimina da Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Elimina dal dispositivo",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Modifica posizione",
|
||||
"control_bottom_app_bar_edit_time": "Modifica data e ora",
|
||||
"control_bottom_app_bar_favorite": "Preferito",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Sperimentale",
|
||||
"favorites_page_no_favorites": "Nessun preferito",
|
||||
"favorites_page_title": "Preferiti",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Abilita feedback aptico",
|
||||
"haptic_feedback_title": "Feedback aptico",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download con successo",
|
||||
"image_viewer_page_state_provider_share_error": "Errore di condivisione",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Album",
|
||||
"library_page_archive": "Archivia",
|
||||
"library_page_device_albums": "Album sul dispositivo",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Non puoi modificare la data di risorse in sola lettura, azione ignorata",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Non puoi modificare la posizione di risorse in sola lettura, azione ignorata",
|
||||
"no_assets_to_show": "Nessuna risorsa da mostrare",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Annulla",
|
||||
"notification_permission_dialog_content": "Per attivare le notifiche, vai alle Impostazioni e seleziona concedi",
|
||||
"notification_permission_dialog_settings": "Impostazioni",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Si è verificato un errore.",
|
||||
"search_bar_hint": "Cerca le tue foto",
|
||||
"search_filter_apply": "Applica filtro",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Produttore",
|
||||
"search_filter_camera_model": "Modello",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archivia",
|
||||
"search_filter_display_option_favorite": "Preferito",
|
||||
"search_filter_display_option_not_in_album": "Non nell'album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Città",
|
||||
"search_filter_location_country": "Nazione",
|
||||
"search_filter_location_state": "Provincia",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Tutto",
|
||||
"search_filter_media_type_image": "Immagine",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "VIdeo",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categoria",
|
||||
"search_page_favorites": "Preferiti",
|
||||
"search_page_motion_photos": "Foto in movimento",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "キャンセル",
|
||||
"action_common_clear": "クリア",
|
||||
"action_common_confirm": "了解",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "更新",
|
||||
"add_to_album_bottom_sheet_added": "{album}に追加",
|
||||
"add_to_album_bottom_sheet_already_exists": "{album}に追加済み",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "新しいパスワード",
|
||||
"change_password_form_password_mismatch": "パスワードが一致しません",
|
||||
"change_password_form_reenter_new_password": "再度パスワードを入力してください",
|
||||
"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": "共有済み",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "アルバムに追加",
|
||||
"control_bottom_app_bar_album_info": "{}枚",
|
||||
"control_bottom_app_bar_album_info_shared": "{}枚 · 共有済",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "削除",
|
||||
"control_bottom_app_bar_delete_from_immich": "Immichから削除",
|
||||
"control_bottom_app_bar_delete_from_local": "デバイスから削除",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "位置情報を編集",
|
||||
"control_bottom_app_bar_edit_time": "日時を変更",
|
||||
"control_bottom_app_bar_favorite": "お気に入り",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "試験的機能",
|
||||
"favorites_page_no_favorites": "お気に入り登録された写真またはビデオがありません",
|
||||
"favorites_page_title": "お気に入り",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "ハプティックフィードバック",
|
||||
"haptic_feedback_title": "ハプティックフィードバックを有効にする",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_page_albums": "アルバム",
|
||||
"library_page_archive": "アーカイブ",
|
||||
"library_page_device_albums": "デバイス上のアルバム",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "読み取り専用の項目の日付を変更できません",
|
||||
"multiselect_grid_edit_gps_err_read_only": "読み取り専用の項目の位置情報を変更できません",
|
||||
"no_assets_to_show": "表示する項目がありません",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "キャンセル",
|
||||
"notification_permission_dialog_content": "通知を許可するには設定を開いてオンにしてください",
|
||||
"notification_permission_dialog_settings": "設定",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "エラーが発生しました",
|
||||
"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_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"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_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_title": "Select people",
|
||||
"search_page_categories": "カテゴリ",
|
||||
"search_page_favorites": "お気に入り",
|
||||
"search_page_motion_photos": "モーションフォト",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "취소",
|
||||
"action_common_clear": "지우기",
|
||||
"action_common_confirm": "확인",
|
||||
"action_common_save": "저장",
|
||||
"action_common_select": "선택",
|
||||
"action_common_update": "업데이트",
|
||||
"add_to_album_bottom_sheet_added": "{album}에 추가되었습니다.",
|
||||
"add_to_album_bottom_sheet_already_exists": "{album}에 이미 존재하는 항목입니다.",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "새 비밀번호 입력",
|
||||
"change_password_form_password_mismatch": "비밀번호가 일치하지 않습니다.",
|
||||
"change_password_form_reenter_new_password": "새 비밀번호 확인",
|
||||
"client_cert_dialog_msg_confirm": "확인",
|
||||
"client_cert_enter_password": "비밀번호 입력",
|
||||
"client_cert_import": "가져오기",
|
||||
"client_cert_import_success_msg": "클라이언트 인증서를 가져왔습니다.",
|
||||
"client_cert_invalid_msg": "올바르지 않은 인증서이거나 비밀번호가 일치하지 않습니다.",
|
||||
"client_cert_remove": "제거",
|
||||
"client_cert_remove_msg": "클라이언트 인증서가 제거되었습니다.",
|
||||
"client_cert_subtitle": "인증서 가져오기/제거는 로그인 전에만 가능합니다. PKCS12 (.p12, .pfx) 형식을 지원합니다.",
|
||||
"client_cert_title": "SSL 클라이언트 인증서",
|
||||
"common_add_to_album": "앨범에 추가",
|
||||
"common_change_password": "비밀번호 변경",
|
||||
"common_create_new_album": "앨범 생성",
|
||||
"common_server_error": "네트워크 연결 상태를 확인하고, 서버에 접속할 수 있는지, 앱/서버 버전이 호환되는지 확인해주세요.",
|
||||
"common_shared": "공유됨",
|
||||
"contextual_search": "동해안에서 맞이하는 새해 일출",
|
||||
"control_bottom_app_bar_add_to_album": "앨범에 추가",
|
||||
"control_bottom_app_bar_album_info": "{}개 항목",
|
||||
"control_bottom_app_bar_album_info_shared": "{}개 항목 · 공유됨",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "삭제",
|
||||
"control_bottom_app_bar_delete_from_immich": "Immich에서 삭제",
|
||||
"control_bottom_app_bar_delete_from_local": "기기에서 삭제",
|
||||
"control_bottom_app_bar_edit": "편집",
|
||||
"control_bottom_app_bar_edit_location": "위치 편집",
|
||||
"control_bottom_app_bar_edit_time": "날짜 및 시간 변경",
|
||||
"control_bottom_app_bar_favorite": "즐겨찾기",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "실험적",
|
||||
"favorites_page_no_favorites": "즐겨찾기된 항목 없음",
|
||||
"favorites_page_title": "즐겨찾기",
|
||||
"filename_search": "파일 이름 또는 확장자",
|
||||
"haptic_feedback_switch": "햅틱 피드백 활성화",
|
||||
"haptic_feedback_title": "햅틱 피드백",
|
||||
"header_settings_add_header_tip": "헤더 추가",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_format": "올바르지 않은 날짜 형식입니다.",
|
||||
"library_page_albums": "앨범",
|
||||
"library_page_archive": "보관함",
|
||||
"library_page_device_albums": "기기의 앨범",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "읽기 전용 항목의 날짜는 변경할 수 없습니다. 건너뜁니다.",
|
||||
"multiselect_grid_edit_gps_err_read_only": "읽기 전용 항목의 위치는 변경할 수 없습니다. 건너뜁니다.",
|
||||
"no_assets_to_show": "표시할 항목 없음",
|
||||
"no_name": "이름 없음",
|
||||
"notification_permission_dialog_cancel": "취소",
|
||||
"notification_permission_dialog_content": "알림을 활성화하려면 설정에서 알림 권한을 허용하세요.",
|
||||
"notification_permission_dialog_settings": "설정",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "문제가 발생했습니다.",
|
||||
"search_bar_hint": "사진 검색",
|
||||
"search_filter_apply": "필터 적용",
|
||||
"search_filter_camera": "카메라",
|
||||
"search_filter_camera_make": "제조사",
|
||||
"search_filter_camera_model": "모델명",
|
||||
"search_filter_camera_title": "카메라 종류 선택",
|
||||
"search_filter_date": "날짜\n",
|
||||
"search_filter_date_interval": "{start}에서 {end} 까지",
|
||||
"search_filter_date_title": "날짜 범위 선택\n",
|
||||
"search_filter_display_option_archive": "보관함",
|
||||
"search_filter_display_option_favorite": "즐겨찾기",
|
||||
"search_filter_display_option_not_in_album": "앨범에 없음",
|
||||
"search_filter_display_options": "표시 옵션",
|
||||
"search_filter_display_options_title": "표시 옵션",
|
||||
"search_filter_location": "위치",
|
||||
"search_filter_location_city": "도시",
|
||||
"search_filter_location_country": "국가",
|
||||
"search_filter_location_state": "지역",
|
||||
"search_filter_location_title": "위치 선택",
|
||||
"search_filter_media_type": "미디어 종류",
|
||||
"search_filter_media_type_all": "모두",
|
||||
"search_filter_media_type_image": "이미지",
|
||||
"search_filter_media_type_title": "미디어 종류 선택",
|
||||
"search_filter_media_type_video": "동영상",
|
||||
"search_filter_people": "인물",
|
||||
"search_filter_people_title": "인물 선택",
|
||||
"search_page_categories": "분류",
|
||||
"search_page_favorites": "즐겨찾기",
|
||||
"search_page_motion_photos": "모션 포토",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Atcelt",
|
||||
"action_common_clear": "Notīrīt",
|
||||
"action_common_confirm": "Apstiprināt",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Atjaunināt",
|
||||
"add_to_album_bottom_sheet_added": "Pievienots {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Jau pievienots {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Jauna Parole",
|
||||
"change_password_form_password_mismatch": "Paroles nesakrīt",
|
||||
"change_password_form_reenter_new_password": "Atkārtoti ievadīt jaunu paroli",
|
||||
"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": "Pievienot albumam",
|
||||
"common_change_password": "Nomainīt Paroli",
|
||||
"common_create_new_album": "Izveidot jaunu albumu",
|
||||
"common_server_error": "Lūdzu, pārbaudiet tīkla savienojumu, pārliecinieties, vai serveris ir sasniedzams un aplikācijas/servera versijas ir saderīgas.",
|
||||
"common_shared": "Kopīgots",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Pievienot albumam",
|
||||
"control_bottom_app_bar_album_info": "{} vienumi",
|
||||
"control_bottom_app_bar_album_info_shared": "{} vienumi · Koplietoti",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Dzēst",
|
||||
"control_bottom_app_bar_delete_from_immich": "Dzēst no Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Dzēst no ierīces",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Rediģēt Atrašanās Vietu",
|
||||
"control_bottom_app_bar_edit_time": "Rediģēt Datumu un Laiku",
|
||||
"control_bottom_app_bar_favorite": "Izlase",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Eksperimentāls",
|
||||
"favorites_page_no_favorites": "Nav atrasti iecienītākie aktīvi",
|
||||
"favorites_page_title": "Izlase",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Iestatīt haptisku reakciju",
|
||||
"haptic_feedback_title": "Haptiska Reakcija",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Lejupielāde Uzsākta",
|
||||
"image_viewer_page_state_provider_download_success": "Lejupielāde Izdevās",
|
||||
"image_viewer_page_state_provider_share_error": "Kopīgošanas Kļūda",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Arhīvs",
|
||||
"library_page_device_albums": "Albumi ierīcē",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Nevar rediģēt read only aktīva(-u) datumu, notiek izlaišana",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Nevar rediģēt atrašanās vietu read only aktīva(-u) datumu, notiek izlaišana",
|
||||
"no_assets_to_show": "Nav uzrādāmo aktīvu",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Atcelt",
|
||||
"notification_permission_dialog_content": "Lai iespējotu paziņojumus, atveriet Iestatījumi un atlasiet Atļaut.",
|
||||
"notification_permission_dialog_settings": "Iestatījumi",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Radās kļūda",
|
||||
"search_bar_hint": "Meklēt Jūsu fotoattēlus",
|
||||
"search_filter_apply": "Lietot filtru",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Firma",
|
||||
"search_filter_camera_model": "Modelis",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Arhīvs",
|
||||
"search_filter_display_option_favorite": "Izlase",
|
||||
"search_filter_display_option_not_in_album": "Nav albumā",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Pilsēta",
|
||||
"search_filter_location_country": "Valsts",
|
||||
"search_filter_location_state": "Štats",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Viss",
|
||||
"search_filter_media_type_image": "Attēls",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Videoklips",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategorijas",
|
||||
"search_page_favorites": "Izlase",
|
||||
"search_page_motion_photos": "Kustību Fotoattēli",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Цуцлах",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Тохиргоо",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Avbryt",
|
||||
"action_common_clear": "Tøm",
|
||||
"action_common_confirm": "Bekreft",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Oppdater",
|
||||
"add_to_album_bottom_sheet_added": "Lagt til i {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Allerede i {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nytt passord",
|
||||
"change_password_form_password_mismatch": "Passordene stemmer ikke",
|
||||
"change_password_form_reenter_new_password": "Skriv nytt passord igjen",
|
||||
"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": "Legg til i album",
|
||||
"common_change_password": "Endre passord",
|
||||
"common_create_new_album": "Lag nytt album",
|
||||
"common_server_error": "Sjekk nettverkstilkoblingen din, forsikre deg om at serveren er mulig å nå, og at app-/server-versjonene er kompatible.",
|
||||
"common_shared": "Delt",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Legg til i album",
|
||||
"control_bottom_app_bar_album_info": "{} objekter",
|
||||
"control_bottom_app_bar_album_info_shared": "{} objekter · Delt",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Slett",
|
||||
"control_bottom_app_bar_delete_from_immich": "Slett fra Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Slett fra enhet",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Endre lokasjon",
|
||||
"control_bottom_app_bar_edit_time": "Endre Dato og tid",
|
||||
"control_bottom_app_bar_favorite": "Favoritt",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Eksperimentelt",
|
||||
"favorites_page_no_favorites": "Ingen favorittobjekter funnet",
|
||||
"favorites_page_title": "Favoritter",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Aktivert haptisk tilbakemelding",
|
||||
"haptic_feedback_title": "Haptisk tilbakemelding",
|
||||
"header_settings_add_header_tip": "Legg til header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Nedlasting startet",
|
||||
"image_viewer_page_state_provider_download_success": "Nedlasting vellykket",
|
||||
"image_viewer_page_state_provider_share_error": "Delingsfeil",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumer",
|
||||
"library_page_archive": "Arkiv",
|
||||
"library_page_device_albums": "Albumer på enheten",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Kan ikke endre dato på objekt(er) med kun lese-rettigheter, hopper over",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Kan ikke endre lokasjon på objekt(er) med kun lese-rettigheter, hopper over",
|
||||
"no_assets_to_show": "Ingen objekter å vise",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Avbryt",
|
||||
"notification_permission_dialog_content": "For å aktivere notifikasjoner, gå til Innstillinger og velg tillat.",
|
||||
"notification_permission_dialog_settings": "Innstillinger",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Feil oppstått",
|
||||
"search_bar_hint": "Søk i dine bilder",
|
||||
"search_filter_apply": "Aktiver filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Merke",
|
||||
"search_filter_camera_model": "Modell",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Arkiver",
|
||||
"search_filter_display_option_favorite": "Favoritt",
|
||||
"search_filter_display_option_not_in_album": "Ikke i album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "By",
|
||||
"search_filter_location_country": "Land",
|
||||
"search_filter_location_state": "Fylke",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Alle",
|
||||
"search_filter_media_type_image": "Bilde",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategorier",
|
||||
"search_page_favorites": "Favoritter",
|
||||
"search_page_motion_photos": "Bevegelige bilder",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Annuleren",
|
||||
"action_common_clear": "Resetten",
|
||||
"action_common_confirm": "Bevestigen",
|
||||
"action_common_save": "Opslaan",
|
||||
"action_common_select": "Selecteren",
|
||||
"action_common_update": "Bijwerken",
|
||||
"add_to_album_bottom_sheet_added": "Toegevoegd aan {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Staat al in {album}",
|
||||
@@ -32,7 +34,7 @@
|
||||
"album_viewer_appbar_share_err_title": "Albumtitel wijzigen mislukt",
|
||||
"album_viewer_appbar_share_leave": "Verlaat album",
|
||||
"album_viewer_appbar_share_remove": "Verwijder uit album",
|
||||
"album_viewer_appbar_share_to": "Delen met",
|
||||
"album_viewer_appbar_share_to": "Delen via",
|
||||
"album_viewer_page_share_add_users": "Gebruikers toevoegen",
|
||||
"all_people_page_title": "Mensen",
|
||||
"all_videos_page_title": "Video's",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nieuw wachtwoord",
|
||||
"change_password_form_password_mismatch": "Wachtwoorden komen niet overeen",
|
||||
"change_password_form_reenter_new_password": "Vul het wachtwoord opnieuw in",
|
||||
"client_cert_dialog_msg_confirm": "Ok",
|
||||
"client_cert_enter_password": "Voer wachtwoord in",
|
||||
"client_cert_import": "Importeren",
|
||||
"client_cert_import_success_msg": "Clientcertificaat is geïmporteerd",
|
||||
"client_cert_invalid_msg": "Ongeldig certificaatbestand of verkeerd wachtwoord",
|
||||
"client_cert_remove": "Verwijderen",
|
||||
"client_cert_remove_msg": "Clientcertificaat is verwijderd",
|
||||
"client_cert_subtitle": "Ondersteunt alleen PKCS12 (.p12, .pfx) formaat. Certificaat importeren/verwijderen is alleen beschikbaar vóór het inloggen",
|
||||
"client_cert_title": "SSL clientcertificaat",
|
||||
"common_add_to_album": "Aan album toevoegen",
|
||||
"common_change_password": "Wachtwoord wijzigen",
|
||||
"common_create_new_album": "Nieuw album maken",
|
||||
"common_server_error": "Controleer je netwerkverbinding, zorg ervoor dat de server bereikbaar is en de app/server versies compatibel zijn.",
|
||||
"common_shared": "Gedeeld",
|
||||
"contextual_search": "Zonsopkomst op het strand",
|
||||
"control_bottom_app_bar_add_to_album": "Aan album toevoegen",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Gedeeld",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Verwijderen",
|
||||
"control_bottom_app_bar_delete_from_immich": "Verwijderen van Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Verwijderen van apparaat",
|
||||
"control_bottom_app_bar_edit": "Bewerken",
|
||||
"control_bottom_app_bar_edit_location": "Locatie bewerken",
|
||||
"control_bottom_app_bar_edit_time": "Datum & tijd bewerken",
|
||||
"control_bottom_app_bar_favorite": "Favoriet",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimenteel",
|
||||
"favorites_page_no_favorites": "Geen favoriete assets gevonden",
|
||||
"favorites_page_title": "Favorieten",
|
||||
"filename_search": "Bestandsnaam of extensie",
|
||||
"haptic_feedback_switch": "Aanraaktrillingen inschakelen",
|
||||
"haptic_feedback_title": "Aanraaktrillingen",
|
||||
"header_settings_add_header_tip": "Header toevoegen",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download gestart",
|
||||
"image_viewer_page_state_provider_download_success": "Download succesvol",
|
||||
"image_viewer_page_state_provider_share_error": "Deel Error",
|
||||
"invalid_date": "Ongeldige datum",
|
||||
"invalid_date_format": "Ongeldig datumformaat",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archief",
|
||||
"library_page_device_albums": "Albums op apparaat",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Kan datum van alleen-lezen asset(s) niet wijzigen, overslaan",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Kan locatie van alleen-lezen asset(s) niet wijzigen, overslaan",
|
||||
"no_assets_to_show": "Geen foto's om te laten zien",
|
||||
"no_name": "Geen naam",
|
||||
"notification_permission_dialog_cancel": "Annuleren",
|
||||
"notification_permission_dialog_content": "Om meldingen in te schakelen, ga naar Instellingen en selecteer toestaan.",
|
||||
"notification_permission_dialog_settings": "Instellingen",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Fout opgetreden",
|
||||
"search_bar_hint": "Foto's doorzoeken",
|
||||
"search_filter_apply": "Filter toepassen",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Merk",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Selecteer cameratype",
|
||||
"search_filter_date": "Datum",
|
||||
"search_filter_date_interval": "{start} tot {end}",
|
||||
"search_filter_date_title": "Selecteer datumbereik",
|
||||
"search_filter_display_option_archive": "Archief",
|
||||
"search_filter_display_option_favorite": "Favoriet",
|
||||
"search_filter_display_option_not_in_album": "Niet in album",
|
||||
"search_filter_display_options": "Weergaveopties",
|
||||
"search_filter_display_options_title": "Weergaveopties",
|
||||
"search_filter_location": "Locatie",
|
||||
"search_filter_location_city": "Stad",
|
||||
"search_filter_location_country": "Land",
|
||||
"search_filter_location_state": "Status",
|
||||
"search_filter_location_title": "Selecteer locatie",
|
||||
"search_filter_media_type": "Mediatype",
|
||||
"search_filter_media_type_all": "Alle",
|
||||
"search_filter_media_type_image": "Afbeelding",
|
||||
"search_filter_media_type_title": "Selecteer mediatype",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "Mensen",
|
||||
"search_filter_people_title": "Selecteer mensen",
|
||||
"search_page_categories": "Categorieën",
|
||||
"search_page_favorites": "Favorieten",
|
||||
"search_page_motion_photos": "Bewegende foto's",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Anuluj",
|
||||
"action_common_clear": "Wyrzuść",
|
||||
"action_common_confirm": "Potwierdzać",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Aktualizuj",
|
||||
"add_to_album_bottom_sheet_added": "Dodano do {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Już w {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nowe Hasło",
|
||||
"change_password_form_password_mismatch": "Hasła nie są zgodne",
|
||||
"change_password_form_reenter_new_password": "Wprowadź ponownie Nowe Hasło",
|
||||
"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": "Dodaj do albumu",
|
||||
"common_change_password": "Zmień Hasło",
|
||||
"common_create_new_album": "Utwórz nowy album",
|
||||
"common_server_error": "Sprawdź połączenie sieciowe, upewnij się, że serwer jest osiągalny i wersje aplikacji/serwera są kompatybilne.",
|
||||
"common_shared": "Udostępnione",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Dodaj do albumu",
|
||||
"control_bottom_app_bar_album_info": "{} pozycji",
|
||||
"control_bottom_app_bar_album_info_shared": "{} pozycji · Udostępnionych",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Usuń",
|
||||
"control_bottom_app_bar_delete_from_immich": "Usuń z Immicha",
|
||||
"control_bottom_app_bar_delete_from_local": "Usuń z urządzenia",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edytuj lokalizację",
|
||||
"control_bottom_app_bar_edit_time": "Edytuj datę i godzinę",
|
||||
"control_bottom_app_bar_favorite": "Ulubione",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Eksperymentalny",
|
||||
"favorites_page_no_favorites": "Nie znaleziono ulubionych zasobów",
|
||||
"favorites_page_title": "Ulubione",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Dodaj nagłówek",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Pobieranie rozpoczęte",
|
||||
"image_viewer_page_state_provider_download_success": "Pobieranie zakończone",
|
||||
"image_viewer_page_state_provider_share_error": "Udostępnij błąd",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumy",
|
||||
"library_page_archive": "Archiwum",
|
||||
"library_page_device_albums": "Albumy na Urządzeniu",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Nie można edytować daty zasobów tylko do odczytu, pomijanie",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Nie można edytować lokalizacji zasobów tylko do odczytu, pomijanie",
|
||||
"no_assets_to_show": "Brak zasobów do pokazania",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Anuluj",
|
||||
"notification_permission_dialog_content": "Aby włączyć powiadomienia, przejdź do Ustawień i wybierz opcję Zezwalaj.",
|
||||
"notification_permission_dialog_settings": "Ustawienia",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Wystąpił błąd",
|
||||
"search_bar_hint": "Szukaj swoich zdjęć",
|
||||
"search_filter_apply": "Zastosuj filtr",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archiwum",
|
||||
"search_filter_display_option_favorite": "Ulubiony",
|
||||
"search_filter_display_option_not_in_album": "Nie w albumie",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Miasto",
|
||||
"search_filter_location_country": "Kraj",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Wszystko",
|
||||
"search_filter_media_type_image": "Obrazy",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Filmy",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategorie",
|
||||
"search_page_favorites": "Ulubione",
|
||||
"search_page_motion_photos": "Zdjęcia ruchome",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancelar",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Atualizar",
|
||||
"add_to_album_bottom_sheet_added": "Adicionar a {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Já pertence a {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nova senha",
|
||||
"change_password_form_password_mismatch": "As senhas não coincidem",
|
||||
"change_password_form_reenter_new_password": "Re-introduza a nova senha",
|
||||
"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": "Adicionar ao álbum",
|
||||
"common_change_password": "Mudar a senha",
|
||||
"common_create_new_album": "Criar novo álbum",
|
||||
"common_server_error": "Verifique a sua ligação de rede, certifique-se de que o servidor está acessível e de que as versões da aplicação/servidor são compatíveis.",
|
||||
"common_shared": "Partilhado",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Adicionar ao álbum",
|
||||
"control_bottom_app_bar_album_info": "{} itens",
|
||||
"control_bottom_app_bar_album_info_shared": "{} itens · Partilhado",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Deletar",
|
||||
"control_bottom_app_bar_delete_from_immich": "Apagar do Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Apagar do dispositivo",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Editar Localização",
|
||||
"control_bottom_app_bar_edit_time": "Editar Data & Hora",
|
||||
"control_bottom_app_bar_favorite": "Favorito",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "Nenhum recurso favorito encontrado",
|
||||
"favorites_page_title": "Favoritos",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Descarregado",
|
||||
"image_viewer_page_state_provider_share_error": "Erro ao partilhar",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Álbuns",
|
||||
"library_page_archive": "Arquivo",
|
||||
"library_page_device_albums": "Álbuns no dispositivo",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Não é possível editar a data de recurso(s) só de leitura, ignorando",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Não é possível editar a localização de recurso(s) só de leitura, ignorando",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancelar",
|
||||
"notification_permission_dialog_content": "Para ativar as notificações, vá a Definições e selecione permitir.",
|
||||
"notification_permission_dialog_settings": "Definições",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Ocorreu um erro",
|
||||
"search_bar_hint": "Busque suas fotos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categorias",
|
||||
"search_page_favorites": "Favoritos",
|
||||
"search_page_motion_photos": "Fotos com movimento",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Anulează",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Actualizează",
|
||||
"add_to_album_bottom_sheet_added": "Adăugat în {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Deja în {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Parolă nouă",
|
||||
"change_password_form_password_mismatch": "Parolele nu se potrivesc",
|
||||
"change_password_form_reenter_new_password": "Reintrodu noua parolă",
|
||||
"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": "Adaugă în album",
|
||||
"common_change_password": "Schimbă parola",
|
||||
"common_create_new_album": "Creează album nou",
|
||||
"common_server_error": "Te rugăm să verifici conexiunea la rețea, asigura-te că server-ul este accesibil și că versiunile aplicației/server-ului sunt compatibile.",
|
||||
"common_shared": "Distribuit",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Adaugă în album",
|
||||
"control_bottom_app_bar_album_info": "{} elemente",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elemente · Distribuite",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Șterge",
|
||||
"control_bottom_app_bar_delete_from_immich": "Șterge din Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Șterge din dispozitiv",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Editează locație",
|
||||
"control_bottom_app_bar_edit_time": "Editează Data și Ora",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "Nu au fost găsite resurse favorite",
|
||||
"favorites_page_title": "Favorite",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Descărcare cu succes",
|
||||
"image_viewer_page_state_provider_share_error": "Eroare distribuire",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albume",
|
||||
"library_page_archive": "Arhivă",
|
||||
"library_page_device_albums": "Albume în dispozitiv",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Nu se poate edita data fișierului(lor) cu permisiuni doar pentru citire, omitere",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Nu se poate edita locația fișierului(lor) cu permisiuni doar pentru citire, omitere",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Anulează",
|
||||
"notification_permission_dialog_content": "Pentru a activa notificările, mergi în Setări > Immich și selectează permite.",
|
||||
"notification_permission_dialog_settings": "Setări",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "A apărut o eroare",
|
||||
"search_bar_hint": "Căutare fotografii",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categorii",
|
||||
"search_page_favorites": "Favorite",
|
||||
"search_page_motion_photos": "Fotografii în mișcare",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Отмена",
|
||||
"action_common_clear": "Очистить",
|
||||
"action_common_confirm": "Подтвердить",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Обновить",
|
||||
"add_to_album_bottom_sheet_added": "Добавлено в {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Уже в {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Новый пароль",
|
||||
"change_password_form_password_mismatch": "Пароли не совпадают",
|
||||
"change_password_form_reenter_new_password": "Повторно введите новый пароль",
|
||||
"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": "Общие",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Добавить в альбом",
|
||||
"control_bottom_app_bar_album_info": "{} файлов",
|
||||
"control_bottom_app_bar_album_info_shared": "{} файлов · Общий",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Удалить",
|
||||
"control_bottom_app_bar_delete_from_immich": "Удалить из Immich\n",
|
||||
"control_bottom_app_bar_delete_from_local": "Удалить с устройства",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Редактировать местоположение",
|
||||
"control_bottom_app_bar_edit_time": "Редактировать дату и время",
|
||||
"control_bottom_app_bar_favorite": "В избранное",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Экспериментальные функции",
|
||||
"favorites_page_no_favorites": "В избранном сейчас пусто",
|
||||
"favorites_page_title": "Избранное",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Включить тактильную отдачу",
|
||||
"haptic_feedback_title": "Тактильная отдача",
|
||||
"header_settings_add_header_tip": "Добавить заголовок",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_page_albums": "Альбомы",
|
||||
"library_page_archive": "Архив",
|
||||
"library_page_device_albums": "Альбомы на устройстве",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Невозможно редактировать дату объектов только для чтения, пропуск...",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Невозможно редактировать местоположение объектов только для чтения, пропуск...",
|
||||
"no_assets_to_show": "Объекты отсутствуют",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Отмена",
|
||||
"notification_permission_dialog_content": "Чтобы включить уведомления, перейдите в «Настройки» и выберите «Разрешить».",
|
||||
"notification_permission_dialog_settings": "Настройки",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Возникла ошибка",
|
||||
"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_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"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_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_title": "Select people",
|
||||
"search_page_categories": "Категории",
|
||||
"search_page_favorites": "Избранное",
|
||||
"search_page_motion_photos": "Динамические фото",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Zrušiť",
|
||||
"action_common_clear": "Vyčistiť",
|
||||
"action_common_confirm": "Potvrdiť",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Aktualizovať",
|
||||
"add_to_album_bottom_sheet_added": "Pridané do {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Už v {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nové heslo",
|
||||
"change_password_form_password_mismatch": "Heslá sa nezhodujú",
|
||||
"change_password_form_reenter_new_password": "Znova zadajte nové heslo",
|
||||
"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": "Pridať do albumu",
|
||||
"common_change_password": "Zmeniť heslo",
|
||||
"common_create_new_album": "Vytvoriť nový album",
|
||||
"common_server_error": "Skontrolujte svoje sieťové pripojenie, uistite sa, že server je dostupný a verzie aplikácie/server sú kompatibilné.",
|
||||
"common_shared": "Zdieľané",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Pridať do albumu",
|
||||
"control_bottom_app_bar_album_info": "{} položiek",
|
||||
"control_bottom_app_bar_album_info_shared": "{} položiek - zdieľané",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Vymazať",
|
||||
"control_bottom_app_bar_delete_from_immich": "Vymazať z Immichu",
|
||||
"control_bottom_app_bar_delete_from_local": "Vymazať zo zariadenia",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Upraviť polohu",
|
||||
"control_bottom_app_bar_edit_time": "Upraviť dátum a čas",
|
||||
"control_bottom_app_bar_favorite": "Obľúbené",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimentálne",
|
||||
"favorites_page_no_favorites": "Žiadne obľúbené médiá",
|
||||
"favorites_page_title": "Obľúbené",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Povoliť hmatovú odozvu",
|
||||
"haptic_feedback_title": "Hmatová odozva",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Sťahovanie sa začalo",
|
||||
"image_viewer_page_state_provider_download_success": "Sťahovanie bolo úspešné",
|
||||
"image_viewer_page_state_provider_share_error": "Chyba zdieľania",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumy",
|
||||
"library_page_archive": "Archív",
|
||||
"library_page_device_albums": "Albumy v zariadení",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Nemožno upraviť dátum položky len na čítanie, preskakujem",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Nemožno upraviť polohu položky len na čítanie, preskakujem",
|
||||
"no_assets_to_show": "Žiadne položky",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Zrušiť",
|
||||
"notification_permission_dialog_content": "Ak chcete povoliť upozornenia, prejdite do Nastavenia a vyberte možnosť Povoliť.",
|
||||
"notification_permission_dialog_settings": "Nastavenia",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Vyskytla sa chyba",
|
||||
"search_bar_hint": "Prehľadajte svoje obrázky",
|
||||
"search_filter_apply": "Použiť filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Spraviť",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archív",
|
||||
"search_filter_display_option_favorite": "Obľúbené",
|
||||
"search_filter_display_option_not_in_album": "Mimo albumu",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Mesto",
|
||||
"search_filter_location_country": "Oblasť",
|
||||
"search_filter_location_state": "Štát",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Všetky",
|
||||
"search_filter_media_type_image": "Obrázok",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategórie",
|
||||
"search_page_favorites": "Obľúbené",
|
||||
"search_page_motion_photos": "Pohyblivé fotky",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Prekliči",
|
||||
"action_common_clear": "Počisti",
|
||||
"action_common_confirm": "Potrdi",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Posodobi",
|
||||
"add_to_album_bottom_sheet_added": "Dodano v {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Že v {albumu}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Novo geslo",
|
||||
"change_password_form_password_mismatch": "Gesli se ne ujemata",
|
||||
"change_password_form_reenter_new_password": "Znova vnesi novo geslo",
|
||||
"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": "Dodaj v album",
|
||||
"common_change_password": "Zamenjaj geslo",
|
||||
"common_create_new_album": "Ustvari nov album",
|
||||
"common_server_error": "Preverite omrežno povezavo, preverite, ali je strežnik dosegljiv in ali sta različici aplikacije/strežnika združljivi.",
|
||||
"common_shared": "V skupni rabi",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Dodaj v album",
|
||||
"control_bottom_app_bar_album_info": "{} elementov",
|
||||
"control_bottom_app_bar_album_info_shared": "{} elementov · V skupni rabi",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Izbriši",
|
||||
"control_bottom_app_bar_delete_from_immich": "Izbriši iz Immicha",
|
||||
"control_bottom_app_bar_delete_from_local": "Izbriši iz naprave",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Uredi lokacijo",
|
||||
"control_bottom_app_bar_edit_time": "Uredi datum in uro",
|
||||
"control_bottom_app_bar_favorite": "Priljubljen",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Eksperimentalno",
|
||||
"favorites_page_no_favorites": "Ni priljubljenih sredstev",
|
||||
"favorites_page_title": "Priljubljene",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Uporabi haptičen odziv",
|
||||
"haptic_feedback_title": "Haptičen odziv",
|
||||
"header_settings_add_header_tip": "Dodaj glavo",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Prenos se je začel",
|
||||
"image_viewer_page_state_provider_download_success": "Prenos je uspel",
|
||||
"image_viewer_page_state_provider_share_error": "Napaka skupne rabe",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumi",
|
||||
"library_page_archive": "Arhiv",
|
||||
"library_page_device_albums": "Albumi v napravi",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Ni mogoče urediti datuma sredstev samo za branje, preskočim",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Ni mogoče urediti lokacije sredstev samo za branje, preskočim",
|
||||
"no_assets_to_show": "Ni sredstev za prikaz",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Prekliči",
|
||||
"notification_permission_dialog_content": "Če želite omogočiti obvestila, pojdite v Nastavitve in izberite Dovoli.",
|
||||
"notification_permission_dialog_settings": "Nastavitve",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Prišlo je do napake",
|
||||
"search_bar_hint": "Poišči svoje fotografije",
|
||||
"search_filter_apply": "Uporabi filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Izdelava",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Arhiv",
|
||||
"search_filter_display_option_favorite": "Priljubljen",
|
||||
"search_filter_display_option_not_in_album": "Ni v albumu",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Mesto",
|
||||
"search_filter_location_country": "Država",
|
||||
"search_filter_location_state": "Dežela",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Vse",
|
||||
"search_filter_media_type_image": "Slika",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Kategorije",
|
||||
"search_page_favorites": "Priljubljene",
|
||||
"search_page_motion_photos": "Fotografije v gibanju",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Dodato u {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Već u {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nova šifra",
|
||||
"change_password_form_password_mismatch": "Šifre se ne podudaraju",
|
||||
"change_password_form_reenter_new_password": "Ponovo unesite novu šifru",
|
||||
"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": "Dodaj u album",
|
||||
"common_change_password": "Promeni Šifru",
|
||||
"common_create_new_album": "Kreiraj novi album",
|
||||
"common_server_error": "Please check your network connection, make sure the server is reachable and app/server versions are compatible.",
|
||||
"common_shared": "Deljeno",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Dodaj u album",
|
||||
"control_bottom_app_bar_album_info": "{} stvari",
|
||||
"control_bottom_app_bar_album_info_shared": "{} stvari podeljeno",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Obriši",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Omliljeno",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Eksperimentalno",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Omiljeno",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Preuzimanje Uspešno",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albumi",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Odustani",
|
||||
"notification_permission_dialog_content": "Da bi ukljucili notifikacije, idite u Opcije i odaberite Dozvoli",
|
||||
"notification_permission_dialog_settings": "Podešavanja",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Pretražite Vaše fotografije",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Avbryt",
|
||||
"action_common_clear": "Rensa",
|
||||
"action_common_confirm": "Bekräfta",
|
||||
"action_common_save": "Spara",
|
||||
"action_common_select": "Välj",
|
||||
"action_common_update": "Uppdatera",
|
||||
"add_to_album_bottom_sheet_added": "Tillagd till {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Redan i {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Nytt lösenord",
|
||||
"change_password_form_password_mismatch": "Lösenorden matchar inte",
|
||||
"change_password_form_reenter_new_password": "Ange Nytt Lösenord Igen",
|
||||
"client_cert_dialog_msg_confirm": "OK",
|
||||
"client_cert_enter_password": "Ange Lösenord",
|
||||
"client_cert_import": "Importera",
|
||||
"client_cert_import_success_msg": "Klientcertifikatet är importerat",
|
||||
"client_cert_invalid_msg": "Felaktig certifikatfil eller fel lösenord",
|
||||
"client_cert_remove": "Ta bort",
|
||||
"client_cert_remove_msg": "Klientcertifikatet är borttaget",
|
||||
"client_cert_subtitle": "Stödjer endast formatet PKCS12 (.p12, .pfx). Import/borttagning av certifikat är tillgängligt endast före inloggning",
|
||||
"client_cert_title": "SSL-Klientcertifikat",
|
||||
"common_add_to_album": "Lägg till, till album",
|
||||
"common_change_password": "Ändra lösenord",
|
||||
"common_create_new_album": "Skapa ett nytt album",
|
||||
"common_server_error": "Kontrollera din nätverksanslutning, se till att servern går att nå och att app- och server-versioner är kompatibla.",
|
||||
"common_shared": "Delad",
|
||||
"contextual_search": "Soluppgång på stranden",
|
||||
"control_bottom_app_bar_add_to_album": "Lägg till i album",
|
||||
"control_bottom_app_bar_album_info": "{} objekt",
|
||||
"control_bottom_app_bar_album_info_shared": "{} objekt • Delat",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Radera",
|
||||
"control_bottom_app_bar_delete_from_immich": "Ta bort från Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Ta bort från enhet",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Redigera plats",
|
||||
"control_bottom_app_bar_edit_time": "Redigera Datum & Tid",
|
||||
"control_bottom_app_bar_favorite": "Favorit",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimentellt",
|
||||
"favorites_page_no_favorites": "Inga favoritobjekt hittades",
|
||||
"favorites_page_title": "Favoriter",
|
||||
"filename_search": "Filnamn eller filändelse",
|
||||
"haptic_feedback_switch": "Aktivera haptisk feedback",
|
||||
"haptic_feedback_title": "Haptisk Feedback",
|
||||
"header_settings_add_header_tip": "Lägg Till Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Nedladdning Påbörjad",
|
||||
"image_viewer_page_state_provider_download_success": "Nedladdningen Lyckades",
|
||||
"image_viewer_page_state_provider_share_error": "Delningsfel",
|
||||
"invalid_date": "Felaktigt datum",
|
||||
"invalid_date_format": "Felaktigt datumformat",
|
||||
"library_page_albums": "Album",
|
||||
"library_page_archive": "Arkiv",
|
||||
"library_page_device_albums": "Album på Enheten",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Kan inte ändra datum på skrivskyddade objekt, hoppar över",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Kan inte ändra plats på skrivskyddade objekt, hoppar över",
|
||||
"no_assets_to_show": "Inga objekt att visa",
|
||||
"no_name": "Inget namn",
|
||||
"notification_permission_dialog_cancel": "Avbryt",
|
||||
"notification_permission_dialog_content": "För att aktivera notiser, gå till Inställningar och välj tillåt",
|
||||
"notification_permission_dialog_settings": "Inställningar",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Fel uppstod",
|
||||
"search_bar_hint": "Sök bland dina foton",
|
||||
"search_filter_apply": "Aktivera filter",
|
||||
"search_filter_camera": "Kamera",
|
||||
"search_filter_camera_make": "Tillverkare",
|
||||
"search_filter_camera_model": "Modell",
|
||||
"search_filter_camera_title": "Välj kameratyp",
|
||||
"search_filter_date": "Datum",
|
||||
"search_filter_date_interval": "{start} till {end}",
|
||||
"search_filter_date_title": "Välj datumintervall",
|
||||
"search_filter_display_option_archive": "Arkiv",
|
||||
"search_filter_display_option_favorite": "Favorit",
|
||||
"search_filter_display_option_not_in_album": "Ej i album",
|
||||
"search_filter_display_options": "Visningsalternativ",
|
||||
"search_filter_display_options_title": "Visningsalternativ",
|
||||
"search_filter_location": "Plats",
|
||||
"search_filter_location_city": "Stad",
|
||||
"search_filter_location_country": "Land",
|
||||
"search_filter_location_state": "Stat",
|
||||
"search_filter_location_title": "Välj plats",
|
||||
"search_filter_media_type": "Mediatyp",
|
||||
"search_filter_media_type_all": "Alla",
|
||||
"search_filter_media_type_image": "Bild",
|
||||
"search_filter_media_type_title": "Välj mediatyp",
|
||||
"search_filter_media_type_video": "Videor",
|
||||
"search_filter_people": "Personer",
|
||||
"search_filter_people_title": "Välj personer",
|
||||
"search_page_categories": "Kategorier",
|
||||
"search_page_favorites": "Favoriter",
|
||||
"search_page_motion_photos": "Rörelsefoton",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "ยกเลิก",
|
||||
"action_common_clear": "เคลียร์",
|
||||
"action_common_confirm": "ยืนยัน",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "อัปเดต",
|
||||
"add_to_album_bottom_sheet_added": "เพิ่มไปยัง {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "อยู่ใน {album} อยู่แล้ว",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "รหัสผ่านใหม่",
|
||||
"change_password_form_password_mismatch": "รหัสผ่านไม่ตรงกัน",
|
||||
"change_password_form_reenter_new_password": "กรอกรหัสผ่านใหม่",
|
||||
"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": "แชร์",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "เพิ่มลงอัลบั้ม",
|
||||
"control_bottom_app_bar_album_info": "{} รายการ",
|
||||
"control_bottom_app_bar_album_info_shared": "{} รายการ · ถูกแชร์",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "ลบออก",
|
||||
"control_bottom_app_bar_delete_from_immich": "ลบจาก Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "ลบจากเรื่อง",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "แก้ไขตำแหน่ง",
|
||||
"control_bottom_app_bar_edit_time": "แก้ไขวันและเวลา",
|
||||
"control_bottom_app_bar_favorite": "รายการโปรด",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "ทดลอง",
|
||||
"favorites_page_no_favorites": "ไม่พบทรัพยากรในรายการโปรด",
|
||||
"favorites_page_title": "รายการโปรด",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "เปิดการตอบสนองแบบสัมผัส",
|
||||
"haptic_feedback_title": "การตอบสนองแบบสัมผัส",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_page_albums": "อัลบั้ม",
|
||||
"library_page_archive": "เก็บถาวร",
|
||||
"library_page_device_albums": "อัลบั้มบนเครื่อง",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "ไม่สามารถแก้ไขวันที่ทรัพยากรแบบอ่านอย่างเดียว กำลังข้าม",
|
||||
"multiselect_grid_edit_gps_err_read_only": "ไม่สามารถแก้ตำแหน่งของทรัพยากรแบบอ่านอย่างเดียว กำลังข้าม",
|
||||
"no_assets_to_show": "ไม่มีทรัพยากรให้แสดง",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "ยกเลิก",
|
||||
"notification_permission_dialog_content": "เพื่อเปิดการแจ้งเตือน เข้าตั้งค่าแล้วกดอนุญาต",
|
||||
"notification_permission_dialog_settings": "ตั้งค่า",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "เกิดข้อผิดพลาด",
|
||||
"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_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"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_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_title": "Select people",
|
||||
"search_page_categories": "หมวดหมู่",
|
||||
"search_page_favorites": "รายการโปรด",
|
||||
"search_page_motion_photos": "ภาพเคลื่อนไหว",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Скасувати",
|
||||
"action_common_clear": "Очистити",
|
||||
"action_common_confirm": "Підтвердити",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Оновити",
|
||||
"add_to_album_bottom_sheet_added": "Додати до {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Вже є в {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Новий пароль",
|
||||
"change_password_form_password_mismatch": "Паролі не співпадають",
|
||||
"change_password_form_reenter_new_password": "Повторіть новий пароль",
|
||||
"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": "Спільні",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Додати у альбом",
|
||||
"control_bottom_app_bar_album_info": "{} елементи",
|
||||
"control_bottom_app_bar_album_info_shared": "{} елементи · Спільні",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Видалити",
|
||||
"control_bottom_app_bar_delete_from_immich": "Видалити з Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Видалити з пристрою",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Редагувати місцезнаходження",
|
||||
"control_bottom_app_bar_edit_time": "Редагувати дату та час",
|
||||
"control_bottom_app_bar_favorite": "До улюблених",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Експериментальні",
|
||||
"favorites_page_no_favorites": "Немає улюблених елементів",
|
||||
"favorites_page_title": "Улюблені",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Увімкнути тактильну віддачу",
|
||||
"haptic_feedback_title": "Тактильна віддача",
|
||||
"header_settings_add_header_tip": "Додати заголовок",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_page_albums": "Альбоми",
|
||||
"library_page_archive": "Архів",
|
||||
"library_page_device_albums": "Альбоми на пристрої",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Неможливо редагувати дату елементів лише для читання, пропущено",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Неможливо редагувати місцезнаходження елементів лише для читання, пропущено",
|
||||
"no_assets_to_show": "Елементи відсутні",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Скасувати",
|
||||
"notification_permission_dialog_content": "Щоб увімкнути сповіщення, перейдіть до Налаштувань і надайте дозвіл.",
|
||||
"notification_permission_dialog_settings": "Налаштування",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Виникла помилка",
|
||||
"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_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"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_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_title": "Select people",
|
||||
"search_page_categories": "Категорії",
|
||||
"search_page_favorites": "Улюблені",
|
||||
"search_page_motion_photos": "Рухомі знімки",
|
||||
|
||||
@@ -3,13 +3,15 @@
|
||||
"action_common_cancel": "Từ chối",
|
||||
"action_common_clear": "Xoá",
|
||||
"action_common_confirm": "Xác nhận",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Cập nhật",
|
||||
"add_to_album_bottom_sheet_added": "Thêm vào {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Đã có sẵn trong {album}",
|
||||
"advanced_settings_log_level_title": "Phân loại nhật ký: {}",
|
||||
"advanced_settings_prefer_remote_subtitle": "Trên một số thiết bị, việc tải hình thu nhỏ từ ảnh trên thiết bị diễn ra chậm. Kích hoạt cài đặt này để tải ảnh từ máy chủ.",
|
||||
"advanced_settings_prefer_remote_title": "Ưu tiên ảnh từ máy chủ",
|
||||
"advanced_settings_proxy_headers_subtitle": "Xác định các header của proxy Immich sẽ gửi kèm theo mỗi yêu cầu mạng.",
|
||||
"advanced_settings_proxy_headers_subtitle": "Xác định các header của proxy mà Immich sẽ gửi kèm theo mỗi yêu cầu mạng.",
|
||||
"advanced_settings_proxy_headers_title": "Các header của proxy",
|
||||
"advanced_settings_self_signed_ssl_subtitle": "Bỏ qua xác minh chứng chỉ SSL cho máy chủ cuối. Yêu cầu cho chứng chỉ tự ký.",
|
||||
"advanced_settings_self_signed_ssl_title": "Cho phép chứng chỉ SSL tự ký",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "Mật khẩu mới",
|
||||
"change_password_form_password_mismatch": "Mật khẩu không giống nhau",
|
||||
"change_password_form_reenter_new_password": "Nhập lại mật khẩu mới",
|
||||
"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": "Thêm vào album",
|
||||
"common_change_password": "Thay đổi mật khẩu",
|
||||
"common_create_new_album": "Tạo album mới",
|
||||
"common_server_error": "Vui lòng kiểm tra kết nối mạng của bạn, đảm bảo máy chủ có thể truy cập được và các phiên bản ứng dụng/máy chủ phải tương thích với nhau",
|
||||
"common_shared": "Chia sẻ",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Thêm vào album",
|
||||
"control_bottom_app_bar_album_info": "{} mục",
|
||||
"control_bottom_app_bar_album_info_shared": "{} mục chia sẻ",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Xoá",
|
||||
"control_bottom_app_bar_delete_from_immich": "Xóa khỏi Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Xóa khỏi thiết bị\n",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Chỉnh sửa vị trí",
|
||||
"control_bottom_app_bar_edit_time": "Chỉnh sửa Ngày và Giờ",
|
||||
"control_bottom_app_bar_favorite": "Yêu thích",
|
||||
@@ -203,12 +216,13 @@
|
||||
"experimental_settings_title": "Chưa hoàn thiện",
|
||||
"favorites_page_no_favorites": "Không tìm thấy ảnh yêu thích",
|
||||
"favorites_page_title": "Ảnh yêu thích",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Bật haptic feedback\n",
|
||||
"haptic_feedback_title": "Haptic Feedback\n",
|
||||
"header_settings_add_header_tip": "Thêm Header",
|
||||
"header_settings_field_validator_msg": "Trường này không được để trống",
|
||||
"header_settings_header_name_input": "Tên header",
|
||||
"header_settings_header_value_input": "Giá trị header",
|
||||
"header_settings_header_name_input": "Tên Header",
|
||||
"header_settings_header_value_input": "Giá trị Header",
|
||||
"header_settings_page_title": "Các header của proxy",
|
||||
"headers_settings_tile_subtitle": "Xác định proxy header ứng dụng sẽ gửi kèm theo mỗi yêu cầu mạng.",
|
||||
"headers_settings_tile_title": "Tuỳ chỉnh các header của proxy",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Đã bắt đầu tải xuống",
|
||||
"image_viewer_page_state_provider_download_success": "Tải xuống thành công",
|
||||
"image_viewer_page_state_provider_share_error": "Chia sẻ không thành công",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Album",
|
||||
"library_page_archive": "Kho lưu trữ",
|
||||
"library_page_device_albums": "Album trên thiết bị",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "Không thể chỉnh sửa ngày của ảnh chỉ có quyền đọc, bỏ qua",
|
||||
"multiselect_grid_edit_gps_err_read_only": "Không thể chỉnh sửa vị trí của ảnh chỉ có quyền đọc, bỏ qua",
|
||||
"no_assets_to_show": "Không có mục nào để hiển thị",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Từ chối",
|
||||
"notification_permission_dialog_content": "Để bật thông báo, chuyển tới Cài đặt và chọn cho phép",
|
||||
"notification_permission_dialog_settings": "Cài đặt",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Xảy ra lỗi",
|
||||
"search_bar_hint": "Tìm kiếm ảnh của bạn",
|
||||
"search_filter_apply": "Áp dụng bộ lọc",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Chụp bởi",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Kho lưu trữ",
|
||||
"search_filter_display_option_favorite": "Yêu thích",
|
||||
"search_filter_display_option_not_in_album": "Không nằm trong album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "Thành phố",
|
||||
"search_filter_location_country": "Quốc gia",
|
||||
"search_filter_location_state": "Tỉnh",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "Tất cả",
|
||||
"search_filter_media_type_image": "Ảnh",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Danh mục",
|
||||
"search_page_favorites": "Ảnh yêu thích",
|
||||
"search_page_motion_photos": "Ảnh động",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "取消",
|
||||
"action_common_clear": "清空",
|
||||
"action_common_confirm": "确定",
|
||||
"action_common_save": "保存",
|
||||
"action_common_select": "选择",
|
||||
"action_common_update": "更新",
|
||||
"add_to_album_bottom_sheet_added": "添加到 {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "已在 {album} 中",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "新密码",
|
||||
"change_password_form_password_mismatch": "密码不匹配",
|
||||
"change_password_form_reenter_new_password": "再次输入新密码",
|
||||
"client_cert_dialog_msg_confirm": "确定",
|
||||
"client_cert_enter_password": "输入密码",
|
||||
"client_cert_import": "导入",
|
||||
"client_cert_import_success_msg": "客户端证书已导入",
|
||||
"client_cert_invalid_msg": "无效的证书文件或密码错误",
|
||||
"client_cert_remove": "移除",
|
||||
"client_cert_remove_msg": "客户端证书已移除",
|
||||
"client_cert_subtitle": "仅支持PKCS12 (.p12, .pfx)格式。仅可在登录前进行证书的导入和移除",
|
||||
"client_cert_title": "SSL客户端证书",
|
||||
"common_add_to_album": "添加到相册",
|
||||
"common_change_password": "更改密码",
|
||||
"common_create_new_album": "新建相册",
|
||||
"common_server_error": "请检查您的网络连接,确保服务器可访问且该应用程序与服务器版本兼容。",
|
||||
"common_shared": "共享",
|
||||
"contextual_search": "海滩上的日出",
|
||||
"control_bottom_app_bar_add_to_album": "添加到相册",
|
||||
"control_bottom_app_bar_album_info": "{} 项",
|
||||
"control_bottom_app_bar_album_info_shared": "{} 项 · 已共享",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "删除",
|
||||
"control_bottom_app_bar_delete_from_immich": "从Immich服务器中删除",
|
||||
"control_bottom_app_bar_delete_from_local": "从移动设备中删除",
|
||||
"control_bottom_app_bar_edit": "编辑",
|
||||
"control_bottom_app_bar_edit_location": "编辑位置信息",
|
||||
"control_bottom_app_bar_edit_time": "编辑日期和时间",
|
||||
"control_bottom_app_bar_favorite": "收藏",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "实验性功能",
|
||||
"favorites_page_no_favorites": "未找到收藏项目",
|
||||
"favorites_page_title": "收藏",
|
||||
"filename_search": "文件名或扩展名",
|
||||
"haptic_feedback_switch": "启用振动反馈",
|
||||
"haptic_feedback_title": "振动反馈",
|
||||
"header_settings_add_header_tip": "添加标头",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_format": "无效的日期格式",
|
||||
"library_page_albums": "相册",
|
||||
"library_page_archive": "归档",
|
||||
"library_page_device_albums": "设备上的相册",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "无法编辑只读项目的日期,跳过",
|
||||
"multiselect_grid_edit_gps_err_read_only": "无法编辑只读项目的位置信息,跳过",
|
||||
"no_assets_to_show": "无项目展示",
|
||||
"no_name": "无姓名",
|
||||
"notification_permission_dialog_cancel": "取消",
|
||||
"notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。",
|
||||
"notification_permission_dialog_settings": "设置",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "发生错误",
|
||||
"search_bar_hint": "搜索照片",
|
||||
"search_filter_apply": "应用筛选",
|
||||
"search_filter_camera": "相机",
|
||||
"search_filter_camera_make": "制造商",
|
||||
"search_filter_camera_model": "型号",
|
||||
"search_filter_camera_title": "选择相机类型",
|
||||
"search_filter_date": "日期",
|
||||
"search_filter_date_interval": "从{start}到{end}",
|
||||
"search_filter_date_title": "选择日期范围",
|
||||
"search_filter_display_option_archive": "归档",
|
||||
"search_filter_display_option_favorite": "收藏",
|
||||
"search_filter_display_option_not_in_album": "不在相册中",
|
||||
"search_filter_display_options": "显示选项",
|
||||
"search_filter_display_options_title": "显示选项",
|
||||
"search_filter_location": "位置",
|
||||
"search_filter_location_city": "城市",
|
||||
"search_filter_location_country": "国家",
|
||||
"search_filter_location_state": "省",
|
||||
"search_filter_location_title": "选择位置",
|
||||
"search_filter_media_type": "媒体类型",
|
||||
"search_filter_media_type_all": "所有",
|
||||
"search_filter_media_type_image": "照片",
|
||||
"search_filter_media_type_title": "选择媒体类型",
|
||||
"search_filter_media_type_video": "视频",
|
||||
"search_filter_people": "人物",
|
||||
"search_filter_people_title": "选择人物",
|
||||
"search_page_categories": "类别",
|
||||
"search_page_favorites": "收藏",
|
||||
"search_page_motion_photos": "动图",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "取消",
|
||||
"action_common_clear": "清空",
|
||||
"action_common_confirm": "确定",
|
||||
"action_common_save": "保存",
|
||||
"action_common_select": "选择",
|
||||
"action_common_update": "更新",
|
||||
"add_to_album_bottom_sheet_added": "添加到 {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "已在 {album} 中",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "新密码",
|
||||
"change_password_form_password_mismatch": "密码不匹配",
|
||||
"change_password_form_reenter_new_password": "再次输入新密码",
|
||||
"client_cert_dialog_msg_confirm": "确定",
|
||||
"client_cert_enter_password": "输入密码",
|
||||
"client_cert_import": "导入",
|
||||
"client_cert_import_success_msg": "客户端证书已导入",
|
||||
"client_cert_invalid_msg": "无效的证书文件或密码错误",
|
||||
"client_cert_remove": "移除",
|
||||
"client_cert_remove_msg": "客户端证书已移除",
|
||||
"client_cert_subtitle": "仅支持PKCS12 (.p12, .pfx)格式。仅可在登录前进行证书的导入和移除",
|
||||
"client_cert_title": "SSL客户端证书",
|
||||
"common_add_to_album": "添加到相册",
|
||||
"common_change_password": "更改密码",
|
||||
"common_create_new_album": "新建相册",
|
||||
"common_server_error": "请检查您的网络连接,确保服务器可访问且该应用程序与服务器版本兼容。",
|
||||
"common_shared": "共享",
|
||||
"contextual_search": "海滩上的日出",
|
||||
"control_bottom_app_bar_add_to_album": "添加到相册",
|
||||
"control_bottom_app_bar_album_info": "{} 项",
|
||||
"control_bottom_app_bar_album_info_shared": "{} 项 · 已共享",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "删除",
|
||||
"control_bottom_app_bar_delete_from_immich": "从Immich服务器中删除",
|
||||
"control_bottom_app_bar_delete_from_local": "从移动设备中删除",
|
||||
"control_bottom_app_bar_edit": "编辑",
|
||||
"control_bottom_app_bar_edit_location": "编辑位置信息",
|
||||
"control_bottom_app_bar_edit_time": "编辑日期和时间",
|
||||
"control_bottom_app_bar_favorite": "收藏",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "实验性功能",
|
||||
"favorites_page_no_favorites": "未找到收藏项目",
|
||||
"favorites_page_title": "收藏",
|
||||
"filename_search": "文件名或扩展名",
|
||||
"haptic_feedback_switch": "启用振动反馈",
|
||||
"haptic_feedback_title": "振动反馈",
|
||||
"header_settings_add_header_tip": "添加标头",
|
||||
@@ -230,6 +244,8 @@
|
||||
"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_format": "无效的日期格式",
|
||||
"library_page_albums": "相册",
|
||||
"library_page_archive": "归档",
|
||||
"library_page_device_albums": "设备上的相册",
|
||||
@@ -311,6 +327,7 @@
|
||||
"multiselect_grid_edit_date_time_err_read_only": "无法编辑只读项目的日期,跳过",
|
||||
"multiselect_grid_edit_gps_err_read_only": "无法编辑只读项目的位置信息,跳过",
|
||||
"no_assets_to_show": "无项目展示",
|
||||
"no_name": "无姓名",
|
||||
"notification_permission_dialog_cancel": "取消",
|
||||
"notification_permission_dialog_content": "要启用通知,请转到“设置”,并选择“允许”。",
|
||||
"notification_permission_dialog_settings": "设置",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "发生错误",
|
||||
"search_bar_hint": "搜索照片",
|
||||
"search_filter_apply": "应用筛选",
|
||||
"search_filter_camera": "相机",
|
||||
"search_filter_camera_make": "制造商",
|
||||
"search_filter_camera_model": "型号",
|
||||
"search_filter_camera_title": "选择相机类型",
|
||||
"search_filter_date": "日期",
|
||||
"search_filter_date_interval": "从{start}到{end}",
|
||||
"search_filter_date_title": "选择日期范围",
|
||||
"search_filter_display_option_archive": "归档",
|
||||
"search_filter_display_option_favorite": "收藏",
|
||||
"search_filter_display_option_not_in_album": "不在相册中",
|
||||
"search_filter_display_options": "显示选项",
|
||||
"search_filter_display_options_title": "显示选项",
|
||||
"search_filter_location": "位置",
|
||||
"search_filter_location_city": "城市",
|
||||
"search_filter_location_country": "国家",
|
||||
"search_filter_location_state": "省",
|
||||
"search_filter_location_title": "选择位置",
|
||||
"search_filter_media_type": "媒体类型",
|
||||
"search_filter_media_type_all": "所有",
|
||||
"search_filter_media_type_image": "照片",
|
||||
"search_filter_media_type_title": "选择媒体类型",
|
||||
"search_filter_media_type_video": "视频",
|
||||
"search_filter_people": "人物",
|
||||
"search_filter_people_title": "选择人物",
|
||||
"search_page_categories": "类别",
|
||||
"search_page_favorites": "收藏",
|
||||
"search_page_motion_photos": "动图",
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
"action_common_cancel": "Cancel",
|
||||
"action_common_clear": "Clear",
|
||||
"action_common_confirm": "Confirm",
|
||||
"action_common_save": "Save",
|
||||
"action_common_select": "Select",
|
||||
"action_common_update": "Update",
|
||||
"add_to_album_bottom_sheet_added": "Added to {album}",
|
||||
"add_to_album_bottom_sheet_already_exists": "Already in {album}",
|
||||
@@ -141,11 +143,21 @@
|
||||
"change_password_form_new_password": "New Password",
|
||||
"change_password_form_password_mismatch": "Passwords do not match",
|
||||
"change_password_form_reenter_new_password": "Re-enter New Password",
|
||||
"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": "Add to album",
|
||||
"common_change_password": "Change Password",
|
||||
"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_shared": "Shared",
|
||||
"contextual_search": "Sunrise on the beach",
|
||||
"control_bottom_app_bar_add_to_album": "Add to album",
|
||||
"control_bottom_app_bar_album_info": "{} items",
|
||||
"control_bottom_app_bar_album_info_shared": "{} items · Shared",
|
||||
@@ -154,6 +166,7 @@
|
||||
"control_bottom_app_bar_delete": "Delete",
|
||||
"control_bottom_app_bar_delete_from_immich": "Delete from Immich",
|
||||
"control_bottom_app_bar_delete_from_local": "Delete from device",
|
||||
"control_bottom_app_bar_edit": "Edit",
|
||||
"control_bottom_app_bar_edit_location": "Edit Location",
|
||||
"control_bottom_app_bar_edit_time": "Edit Date & Time",
|
||||
"control_bottom_app_bar_favorite": "Favorite",
|
||||
@@ -203,6 +216,7 @@
|
||||
"experimental_settings_title": "Experimental",
|
||||
"favorites_page_no_favorites": "No favorite assets found",
|
||||
"favorites_page_title": "Favorites",
|
||||
"filename_search": "File name or extension",
|
||||
"haptic_feedback_switch": "Enable haptic feedback",
|
||||
"haptic_feedback_title": "Haptic Feedback",
|
||||
"header_settings_add_header_tip": "Add Header",
|
||||
@@ -230,6 +244,8 @@
|
||||
"image_viewer_page_state_provider_download_started": "Download Started",
|
||||
"image_viewer_page_state_provider_download_success": "Download Success",
|
||||
"image_viewer_page_state_provider_share_error": "Share Error",
|
||||
"invalid_date": "Invalid date",
|
||||
"invalid_date_format": "Invalid date format",
|
||||
"library_page_albums": "Albums",
|
||||
"library_page_archive": "Archive",
|
||||
"library_page_device_albums": "Albums on Device",
|
||||
@@ -311,6 +327,7 @@
|
||||
"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",
|
||||
"no_assets_to_show": "No assets to show",
|
||||
"no_name": "No name",
|
||||
"notification_permission_dialog_cancel": "Cancel",
|
||||
"notification_permission_dialog_content": "To enable notifications, go to Settings and select allow.",
|
||||
"notification_permission_dialog_settings": "Settings",
|
||||
@@ -354,17 +371,30 @@
|
||||
"scaffold_body_error_occurred": "Error occurred",
|
||||
"search_bar_hint": "Search your photos",
|
||||
"search_filter_apply": "Apply filter",
|
||||
"search_filter_camera": "Camera",
|
||||
"search_filter_camera_make": "Make",
|
||||
"search_filter_camera_model": "Model",
|
||||
"search_filter_camera_title": "Select camera type",
|
||||
"search_filter_date": "Date",
|
||||
"search_filter_date_interval": "{start} to {end}",
|
||||
"search_filter_date_title": "Select a date range",
|
||||
"search_filter_display_option_archive": "Archive",
|
||||
"search_filter_display_option_favorite": "Favorite",
|
||||
"search_filter_display_option_not_in_album": "Not in album",
|
||||
"search_filter_display_options": "Display Options",
|
||||
"search_filter_display_options_title": "Display options",
|
||||
"search_filter_location": "Location",
|
||||
"search_filter_location_city": "City",
|
||||
"search_filter_location_country": "Country",
|
||||
"search_filter_location_state": "State",
|
||||
"search_filter_location_title": "Select location",
|
||||
"search_filter_media_type": "Media Type",
|
||||
"search_filter_media_type_all": "All",
|
||||
"search_filter_media_type_image": "Image",
|
||||
"search_filter_media_type_title": "Select media type",
|
||||
"search_filter_media_type_video": "Video",
|
||||
"search_filter_people": "People",
|
||||
"search_filter_people_title": "Select people",
|
||||
"search_page_categories": "Categories",
|
||||
"search_page_favorites": "Favorites",
|
||||
"search_page_motion_photos": "Motion Photos",
|
||||
|
||||
@@ -383,7 +383,7 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 164;
|
||||
CURRENT_PROJECT_VERSION = 165;
|
||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
@@ -525,7 +525,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 164;
|
||||
CURRENT_PROJECT_VERSION = 165;
|
||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
@@ -553,7 +553,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 164;
|
||||
CURRENT_PROJECT_VERSION = 165;
|
||||
DEVELOPMENT_TEAM = 2F67MQ8R79;
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
|
||||
@@ -58,11 +58,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.109.0</string>
|
||||
<string>1.110.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>164</string>
|
||||
<string>165</string>
|
||||
<key>FLTEnableImpeller</key>
|
||||
<true/>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
|
||||
@@ -19,7 +19,7 @@ platform :ios do
|
||||
desc "iOS Release"
|
||||
lane :release do
|
||||
increment_version_number(
|
||||
version_number: "1.110.0"
|
||||
version_number: "1.111.0"
|
||||
)
|
||||
increment_build_number(
|
||||
build_number: latest_testflight_build_number + 1,
|
||||
|
||||
@@ -9,7 +9,6 @@ import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/entities/store.entity.dart';
|
||||
import 'package:immich_mobile/providers/api.provider.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:openapi/api.dart';
|
||||
|
||||
@RoutePage()
|
||||
class SplashScreenPage extends HookConsumerWidget {
|
||||
@@ -19,45 +18,22 @@ class SplashScreenPage extends HookConsumerWidget {
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final apiService = ref.watch(apiServiceProvider);
|
||||
final serverUrl = Store.tryGet(StoreKey.serverUrl);
|
||||
final endpoint = Store.tryGet(StoreKey.serverEndpoint);
|
||||
final accessToken = Store.tryGet(StoreKey.accessToken);
|
||||
final log = Logger("SplashScreenPage");
|
||||
|
||||
void performLoggingIn() async {
|
||||
bool isSuccess = false;
|
||||
bool deviceIsOffline = false;
|
||||
bool isAuthSuccess = false;
|
||||
|
||||
if (accessToken != null && serverUrl != null) {
|
||||
try {
|
||||
// Resolve API server endpoint from user provided serverUrl
|
||||
await apiService.resolveAndSetEndpoint(serverUrl);
|
||||
} on ApiException catch (error, stackTrace) {
|
||||
log.severe(
|
||||
"Failed to resolve endpoint [ApiException]",
|
||||
error,
|
||||
stackTrace,
|
||||
);
|
||||
// okay, try to continue anyway if offline
|
||||
if (error.code == 503) {
|
||||
deviceIsOffline = true;
|
||||
log.warning("Device seems to be offline upon launch");
|
||||
} else {
|
||||
log.severe("Failed to resolve endpoint", error);
|
||||
}
|
||||
} catch (error, stackTrace) {
|
||||
log.severe(
|
||||
"Failed to resolve endpoint [Catch All]",
|
||||
error,
|
||||
stackTrace,
|
||||
);
|
||||
}
|
||||
if (accessToken != null && serverUrl != null && endpoint != null) {
|
||||
apiService.setEndpoint(endpoint);
|
||||
|
||||
try {
|
||||
isSuccess = await ref
|
||||
isAuthSuccess = await ref
|
||||
.read(authenticationProvider.notifier)
|
||||
.setSuccessLoginInfo(
|
||||
accessToken: accessToken,
|
||||
serverUrl: serverUrl,
|
||||
offlineLogin: deviceIsOffline,
|
||||
);
|
||||
} catch (error, stackTrace) {
|
||||
log.severe(
|
||||
@@ -66,39 +42,35 @@ class SplashScreenPage extends HookConsumerWidget {
|
||||
stackTrace,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
isAuthSuccess = false;
|
||||
log.severe(
|
||||
'Missing authentication, server, or endpoint info from the local store',
|
||||
);
|
||||
}
|
||||
|
||||
// If the device is offline and there is a currentUser stored locallly
|
||||
// Proceed into the app
|
||||
if (deviceIsOffline && Store.tryGet(StoreKey.currentUser) != null) {
|
||||
context.replaceRoute(const TabControllerRoute());
|
||||
} else if (isSuccess) {
|
||||
// If device was able to login through the internet successfully
|
||||
final hasPermission =
|
||||
await ref.read(galleryPermissionNotifier.notifier).hasPermission;
|
||||
if (hasPermission) {
|
||||
// Resume backup (if enable) then navigate
|
||||
ref.watch(backupProvider.notifier).resumeBackup();
|
||||
}
|
||||
context.replaceRoute(const TabControllerRoute());
|
||||
} else {
|
||||
if (!isAuthSuccess) {
|
||||
log.severe(
|
||||
'Unable to login through offline or online methods - logging out completely',
|
||||
'Unable to login using offline or online methods - Logging out completely',
|
||||
);
|
||||
|
||||
ref.read(authenticationProvider.notifier).logout();
|
||||
// User was unable to login through either offline or online methods
|
||||
context.replaceRoute(const LoginRoute());
|
||||
return;
|
||||
}
|
||||
|
||||
context.replaceRoute(const TabControllerRoute());
|
||||
|
||||
final hasPermission =
|
||||
await ref.read(galleryPermissionNotifier.notifier).hasPermission;
|
||||
if (hasPermission) {
|
||||
// Resume backup (if enable) then navigate
|
||||
ref.watch(backupProvider.notifier).resumeBackup();
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(
|
||||
() {
|
||||
if (serverUrl != null && accessToken != null) {
|
||||
performLoggingIn();
|
||||
} else {
|
||||
context.replaceRoute(const LoginRoute());
|
||||
}
|
||||
performLoggingIn();
|
||||
return null;
|
||||
},
|
||||
[],
|
||||
|
||||
203
mobile/lib/pages/editing/crop.page.dart
Normal file
203
mobile/lib/pages/editing/crop.page.dart
Normal file
@@ -0,0 +1,203 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:crop_image/crop_image.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:immich_mobile/utils/hooks/crop_controller_hook.dart';
|
||||
import 'edit.page.dart';
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
|
||||
/// A widget for cropping an image.
|
||||
/// This widget uses [HookWidget] to manage its lifecycle and state. It allows
|
||||
/// users to crop an image and then navigate to the [EditImagePage] with the
|
||||
/// cropped image.
|
||||
|
||||
@RoutePage()
|
||||
class CropImagePage extends HookWidget {
|
||||
final Image image;
|
||||
const CropImagePage({super.key, required this.image});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final cropController = useCropController();
|
||||
final aspectRatio = useState<double?>(null);
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
backgroundColor: Theme.of(context).bottomAppBarTheme.color,
|
||||
leading: CloseButton(color: Theme.of(context).iconTheme.color),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
Icons.done_rounded,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
size: 24,
|
||||
),
|
||||
onPressed: () async {
|
||||
final croppedImage = await cropController.croppedImage();
|
||||
context.pushRoute(EditImageRoute(image: croppedImage));
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
body: LayoutBuilder(
|
||||
builder: (BuildContext context, BoxConstraints constraints) {
|
||||
return Column(
|
||||
children: [
|
||||
Container(
|
||||
padding: const EdgeInsets.only(top: 20),
|
||||
width: double.infinity,
|
||||
height: constraints.maxHeight * 0.6,
|
||||
child: CropImage(
|
||||
controller: cropController,
|
||||
image: image,
|
||||
gridColor: Colors.white,
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).bottomAppBarTheme.color,
|
||||
borderRadius: const BorderRadius.only(
|
||||
topLeft: Radius.circular(20),
|
||||
topRight: Radius.circular(20),
|
||||
),
|
||||
),
|
||||
child: Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 20,
|
||||
right: 20,
|
||||
bottom: 10,
|
||||
),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
Icons.rotate_left,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
),
|
||||
onPressed: () {
|
||||
cropController.rotateLeft();
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
Icons.rotate_right,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
),
|
||||
onPressed: () {
|
||||
cropController.rotateRight();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: <Widget>[
|
||||
_AspectRatioButton(
|
||||
cropController: cropController,
|
||||
aspectRatio: aspectRatio,
|
||||
ratio: null,
|
||||
label: 'Free',
|
||||
),
|
||||
_AspectRatioButton(
|
||||
cropController: cropController,
|
||||
aspectRatio: aspectRatio,
|
||||
ratio: 1.0,
|
||||
label: '1:1',
|
||||
),
|
||||
_AspectRatioButton(
|
||||
cropController: cropController,
|
||||
aspectRatio: aspectRatio,
|
||||
ratio: 16.0 / 9.0,
|
||||
label: '16:9',
|
||||
),
|
||||
_AspectRatioButton(
|
||||
cropController: cropController,
|
||||
aspectRatio: aspectRatio,
|
||||
ratio: 3.0 / 2.0,
|
||||
label: '3:2',
|
||||
),
|
||||
_AspectRatioButton(
|
||||
cropController: cropController,
|
||||
aspectRatio: aspectRatio,
|
||||
ratio: 7.0 / 5.0,
|
||||
label: '7:5',
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _AspectRatioButton extends StatelessWidget {
|
||||
final CropController cropController;
|
||||
final ValueNotifier<double?> aspectRatio;
|
||||
final double? ratio;
|
||||
final String label;
|
||||
|
||||
const _AspectRatioButton({
|
||||
required this.cropController,
|
||||
required this.aspectRatio,
|
||||
required this.ratio,
|
||||
required this.label,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
IconData iconData;
|
||||
switch (label) {
|
||||
case 'Free':
|
||||
iconData = Icons.crop_free_rounded;
|
||||
break;
|
||||
case '1:1':
|
||||
iconData = Icons.crop_square_rounded;
|
||||
break;
|
||||
case '16:9':
|
||||
iconData = Icons.crop_16_9_rounded;
|
||||
break;
|
||||
case '3:2':
|
||||
iconData = Icons.crop_3_2_rounded;
|
||||
break;
|
||||
case '7:5':
|
||||
iconData = Icons.crop_7_5_rounded;
|
||||
break;
|
||||
default:
|
||||
iconData = Icons.crop_free_rounded;
|
||||
}
|
||||
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
iconData,
|
||||
color: aspectRatio.value == ratio
|
||||
? Colors.indigo
|
||||
: Theme.of(context).iconTheme.color,
|
||||
),
|
||||
onPressed: () {
|
||||
aspectRatio.value = ratio;
|
||||
cropController.aspectRatio = ratio;
|
||||
},
|
||||
),
|
||||
Text(label, style: Theme.of(context).textTheme.bodyMedium),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
158
mobile/lib/pages/editing/edit.page.dart
Normal file
158
mobile/lib/pages/editing/edit.page.dart
Normal file
@@ -0,0 +1,158 @@
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
import 'dart:async';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:fluttertoast/fluttertoast.dart';
|
||||
import 'package:immich_mobile/entities/asset.entity.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_image.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:immich_mobile/routing/router.dart';
|
||||
import 'package:photo_manager/photo_manager.dart';
|
||||
import 'package:immich_mobile/providers/album/album.provider.dart';
|
||||
|
||||
/// A stateless widget that provides functionality for editing an image.
|
||||
///
|
||||
/// This widget allows users to edit an image provided either as an [Asset] or
|
||||
/// directly as an [Image]. It ensures that exactly one of these is provided.
|
||||
///
|
||||
/// It also includes a conversion method to convert an [Image] to a [Uint8List] to save the image on the user's phone
|
||||
/// They automatically navigate to the [HomePage] with the edited image saved and they eventually get backed up to the server.
|
||||
@immutable
|
||||
@RoutePage()
|
||||
class EditImagePage extends ConsumerWidget {
|
||||
final Asset? asset;
|
||||
final Image? image;
|
||||
|
||||
const EditImagePage({
|
||||
super.key,
|
||||
this.image,
|
||||
this.asset,
|
||||
}) : assert(
|
||||
(image != null && asset == null) || (image == null && asset != null),
|
||||
'Must supply one of asset or image',
|
||||
);
|
||||
|
||||
Future<Uint8List> _imageToUint8List(Image image) async {
|
||||
final Completer<Uint8List> completer = Completer();
|
||||
image.image.resolve(const ImageConfiguration()).addListener(
|
||||
ImageStreamListener(
|
||||
(ImageInfo info, bool _) {
|
||||
info.image
|
||||
.toByteData(format: ImageByteFormat.png)
|
||||
.then((byteData) {
|
||||
if (byteData != null) {
|
||||
completer.complete(byteData.buffer.asUint8List());
|
||||
} else {
|
||||
completer.completeError('Failed to convert image to bytes');
|
||||
}
|
||||
});
|
||||
},
|
||||
onError: (exception, stackTrace) =>
|
||||
completer.completeError(exception),
|
||||
),
|
||||
);
|
||||
return completer.future;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final ImageProvider provider = (asset != null)
|
||||
? ImmichImage.imageProvider(asset: asset!)
|
||||
: (image != null)
|
||||
? image!.image
|
||||
: throw Exception('Invalid image source type');
|
||||
|
||||
final Image imageWidget = (asset != null)
|
||||
? Image(image: ImmichImage.imageProvider(asset: asset!))
|
||||
: (image != null)
|
||||
? image!
|
||||
: throw Exception('Invalid image source type');
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
backgroundColor: Theme.of(context).appBarTheme.backgroundColor,
|
||||
leading: IconButton(
|
||||
icon: Icon(
|
||||
Icons.close_rounded,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
size: 24,
|
||||
),
|
||||
onPressed: () =>
|
||||
Navigator.of(context).popUntil((route) => route.isFirst),
|
||||
),
|
||||
actions: <Widget>[
|
||||
if (image != null)
|
||||
TextButton(
|
||||
onPressed: () async {
|
||||
try {
|
||||
final Uint8List imageData = await _imageToUint8List(image!);
|
||||
ImmichToast.show(
|
||||
durationInSecond: 3,
|
||||
context: context,
|
||||
msg: 'Image Saved!',
|
||||
gravity: ToastGravity.CENTER,
|
||||
);
|
||||
|
||||
await PhotoManager.editor
|
||||
.saveImage(imageData, title: "_edited.jpg");
|
||||
await ref.read(albumProvider.notifier).getDeviceAlbums();
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
} catch (e) {
|
||||
ImmichToast.show(
|
||||
durationInSecond: 6,
|
||||
context: context,
|
||||
msg: 'Error: ${e.toString()}',
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
'Save to gallery',
|
||||
style: Theme.of(context).textTheme.displayMedium,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
body: Column(
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Image(image: provider),
|
||||
),
|
||||
Container(
|
||||
height: 80,
|
||||
color: Theme.of(context).bottomAppBarTheme.color,
|
||||
),
|
||||
],
|
||||
),
|
||||
bottomNavigationBar: Container(
|
||||
height: 80,
|
||||
margin: const EdgeInsets.only(bottom: 20, right: 10, left: 10, top: 10),
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).bottomAppBarTheme.color,
|
||||
borderRadius: BorderRadius.circular(30),
|
||||
),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
IconButton(
|
||||
icon: Icon(
|
||||
Platform.isAndroid
|
||||
? Icons.crop_rotate_rounded
|
||||
: Icons.crop_rotate_rounded,
|
||||
color: Theme.of(context).iconTheme.color,
|
||||
),
|
||||
onPressed: () {
|
||||
context.pushRoute(CropImageRoute(image: imageWidget));
|
||||
},
|
||||
),
|
||||
Text('Crop', style: Theme.of(context).textTheme.displayMedium),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
@@ -114,7 +115,7 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
);
|
||||
|
||||
peopleCurrentFilterWidget.value = Text(
|
||||
value.map((e) => e.name != '' ? e.name : "No name").join(', '),
|
||||
value.map((e) => e.name != '' ? e.name : 'no_name'.tr()).join(', '),
|
||||
style: context.textTheme.labelLarge,
|
||||
);
|
||||
}
|
||||
@@ -134,7 +135,7 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
child: FractionallySizedBox(
|
||||
heightFactor: 0.8,
|
||||
child: FilterBottomSheetScaffold(
|
||||
title: 'Select people',
|
||||
title: 'search_filter_people_title'.tr(),
|
||||
expanded: true,
|
||||
onSearch: search,
|
||||
onClear: handleClear,
|
||||
@@ -190,7 +191,7 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
isScrollControlled: true,
|
||||
isDismissible: false,
|
||||
child: FilterBottomSheetScaffold(
|
||||
title: 'Select location',
|
||||
title: 'search_filter_location_title'.tr(),
|
||||
onSearch: search,
|
||||
onClear: handleClear,
|
||||
child: Padding(
|
||||
@@ -241,7 +242,7 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
isScrollControlled: true,
|
||||
isDismissible: false,
|
||||
child: FilterBottomSheetScaffold(
|
||||
title: 'Select camera type',
|
||||
title: 'search_filter_camera_title'.tr(),
|
||||
onSearch: search,
|
||||
onClear: handleClear,
|
||||
child: Padding(
|
||||
@@ -268,14 +269,14 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
start: filter.value.date.takenAfter ?? lastDate,
|
||||
end: filter.value.date.takenBefore ?? lastDate,
|
||||
),
|
||||
helpText: 'Select a date range',
|
||||
cancelText: 'Cancel',
|
||||
confirmText: 'Select',
|
||||
saveText: 'Save',
|
||||
errorFormatText: 'Invalid date format',
|
||||
errorInvalidText: 'Invalid date',
|
||||
fieldStartHintText: 'Start date',
|
||||
fieldEndHintText: 'End date',
|
||||
helpText: 'search_filter_date_title'.tr(),
|
||||
cancelText: 'action_common_cancel'.tr(),
|
||||
confirmText: 'action_common_select'.tr(),
|
||||
saveText: 'action_common_save'.tr(),
|
||||
errorFormatText: 'invalid_date_format'.tr(),
|
||||
errorInvalidText: 'invalid_date'.tr(),
|
||||
fieldStartHintText: 'start_date'.tr(),
|
||||
fieldEndHintText: 'end_date'.tr(),
|
||||
initialEntryMode: DatePickerEntryMode.input,
|
||||
);
|
||||
|
||||
@@ -305,12 +306,17 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
// If date range is less than 24 hours, set the end date to the end of the day
|
||||
if (date.end.difference(date.start).inHours < 24) {
|
||||
dateRangeCurrentFilterWidget.value = Text(
|
||||
date.start.toLocal().toIso8601String().split('T').first,
|
||||
DateFormat.yMMMd().format(date.start.toLocal()),
|
||||
style: context.textTheme.labelLarge,
|
||||
);
|
||||
} else {
|
||||
dateRangeCurrentFilterWidget.value = Text(
|
||||
'${date.start.toLocal().toIso8601String().split('T').first} to ${date.end.toLocal().toIso8601String().split('T').first}',
|
||||
'search_filter_date_interval'.tr(
|
||||
namedArgs: {
|
||||
"start": DateFormat.yMMMd().format(date.start.toLocal()),
|
||||
"end": DateFormat.yMMMd().format(date.end.toLocal()),
|
||||
},
|
||||
),
|
||||
style: context.textTheme.labelLarge,
|
||||
);
|
||||
}
|
||||
@@ -326,7 +332,11 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
);
|
||||
|
||||
mediaTypeCurrentFilterWidget.value = Text(
|
||||
assetType == AssetType.image ? 'Image' : 'Video',
|
||||
assetType == AssetType.image
|
||||
? 'search_filter_media_type_image'.tr()
|
||||
: assetType == AssetType.video
|
||||
? 'search_filter_media_type_video'.tr()
|
||||
: 'search_filter_media_type_all'.tr(),
|
||||
style: context.textTheme.labelLarge,
|
||||
);
|
||||
}
|
||||
@@ -343,7 +353,7 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
showFilterBottomSheet(
|
||||
context: context,
|
||||
child: FilterBottomSheetScaffold(
|
||||
title: 'Select media type',
|
||||
title: 'search_filter_media_type_title'.tr(),
|
||||
onSearch: search,
|
||||
onClear: handleClear,
|
||||
child: MediaTypePicker(
|
||||
@@ -367,7 +377,10 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
isNotInAlbum: value,
|
||||
),
|
||||
);
|
||||
if (value) filterText.add('Not in album');
|
||||
if (value) {
|
||||
filterText
|
||||
.add('search_filter_display_option_not_in_album'.tr());
|
||||
}
|
||||
break;
|
||||
case DisplayOption.archive:
|
||||
filter.value = filter.value.copyWith(
|
||||
@@ -375,7 +388,9 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
isArchive: value,
|
||||
),
|
||||
);
|
||||
if (value) filterText.add('Archive');
|
||||
if (value) {
|
||||
filterText.add('search_filter_display_option_archive'.tr());
|
||||
}
|
||||
break;
|
||||
case DisplayOption.favorite:
|
||||
filter.value = filter.value.copyWith(
|
||||
@@ -383,7 +398,9 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
isFavorite: value,
|
||||
),
|
||||
);
|
||||
if (value) filterText.add('Favorite');
|
||||
if (value) {
|
||||
filterText.add('search_filter_display_option_favorite'.tr());
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
@@ -410,7 +427,7 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
showFilterBottomSheet(
|
||||
context: context,
|
||||
child: FilterBottomSheetScaffold(
|
||||
title: 'Display options',
|
||||
title: 'search_filter_display_options_title'.tr(),
|
||||
onSearch: search,
|
||||
onClear: handleClear,
|
||||
child: DisplayOptionPicker(
|
||||
@@ -489,8 +506,8 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
controller: textSearchController,
|
||||
decoration: InputDecoration(
|
||||
hintText: isContextualSearch.value
|
||||
? 'Sunrise on the beach'
|
||||
: 'File name or extension',
|
||||
? 'contextual_search'.tr()
|
||||
: 'filename_search'.tr(),
|
||||
hintStyle: context.textTheme.bodyLarge?.copyWith(
|
||||
color: context.themeData.colorScheme.onSurface.withOpacity(0.75),
|
||||
fontWeight: FontWeight.w500,
|
||||
@@ -519,37 +536,37 @@ class SearchInputPage extends HookConsumerWidget {
|
||||
SearchFilterChip(
|
||||
icon: Icons.people_alt_rounded,
|
||||
onTap: showPeoplePicker,
|
||||
label: 'People',
|
||||
label: 'search_filter_people'.tr(),
|
||||
currentFilter: peopleCurrentFilterWidget.value,
|
||||
),
|
||||
SearchFilterChip(
|
||||
icon: Icons.location_pin,
|
||||
onTap: showLocationPicker,
|
||||
label: 'Location',
|
||||
label: 'search_filter_location'.tr(),
|
||||
currentFilter: locationCurrentFilterWidget.value,
|
||||
),
|
||||
SearchFilterChip(
|
||||
icon: Icons.camera_alt_rounded,
|
||||
onTap: showCameraPicker,
|
||||
label: 'Camera',
|
||||
label: 'search_filter_camera'.tr(),
|
||||
currentFilter: cameraCurrentFilterWidget.value,
|
||||
),
|
||||
SearchFilterChip(
|
||||
icon: Icons.date_range_rounded,
|
||||
onTap: showDatePicker,
|
||||
label: 'Date',
|
||||
label: 'search_filter_date'.tr(),
|
||||
currentFilter: dateRangeCurrentFilterWidget.value,
|
||||
),
|
||||
SearchFilterChip(
|
||||
icon: Icons.video_collection_outlined,
|
||||
onTap: showMediaTypePicker,
|
||||
label: 'Media Type',
|
||||
label: 'search_filter_media_type'.tr(),
|
||||
currentFilter: mediaTypeCurrentFilterWidget.value,
|
||||
),
|
||||
SearchFilterChip(
|
||||
icon: Icons.display_settings_outlined,
|
||||
onTap: showDisplayOptionPicker,
|
||||
label: 'Display Options',
|
||||
label: 'search_filter_display_options'.tr(),
|
||||
currentFilter: displayOptionCurrentFilterWidget.value,
|
||||
),
|
||||
],
|
||||
|
||||
@@ -101,7 +101,7 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
||||
try {
|
||||
String? userEmail = Store.tryGet(StoreKey.currentUser)?.email;
|
||||
|
||||
_apiService.authenticationApi
|
||||
await _apiService.authenticationApi
|
||||
.logout()
|
||||
.then((_) => log.info("Logout was successful for $userEmail"))
|
||||
.onError(
|
||||
@@ -156,7 +156,6 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
||||
Future<bool> setSuccessLoginInfo({
|
||||
required String accessToken,
|
||||
required String serverUrl,
|
||||
bool offlineLogin = false,
|
||||
}) async {
|
||||
_apiService.setAccessToken(accessToken);
|
||||
|
||||
@@ -165,57 +164,56 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
||||
Store.tryGet(StoreKey.deviceId) ?? await FlutterUdid.consistentUdid;
|
||||
|
||||
bool shouldChangePassword = false;
|
||||
User? user;
|
||||
User? user = Store.tryGet(StoreKey.currentUser);
|
||||
|
||||
bool retResult = false;
|
||||
User? offlineUser = Store.tryGet(StoreKey.currentUser);
|
||||
|
||||
// If the user is offline and there is a user saved on the device,
|
||||
// if not try an online login
|
||||
if (offlineLogin && offlineUser != null) {
|
||||
user = offlineUser;
|
||||
retResult = false;
|
||||
} else {
|
||||
UserAdminResponseDto? userResponseDto;
|
||||
UserPreferencesResponseDto? userPreferences;
|
||||
try {
|
||||
userResponseDto = await _apiService.usersApi.getMyUser();
|
||||
userPreferences = await _apiService.usersApi.getMyPreferences();
|
||||
} on ApiException catch (error, stackTrace) {
|
||||
_log.severe(
|
||||
"Error getting user information from the server [API EXCEPTION]",
|
||||
error,
|
||||
stackTrace,
|
||||
);
|
||||
if (error.innerException is SocketException) {
|
||||
state = state.copyWith(isAuthenticated: true);
|
||||
}
|
||||
} catch (error, stackTrace) {
|
||||
_log.severe(
|
||||
"Error getting user information from the server [CATCH ALL]",
|
||||
error,
|
||||
stackTrace,
|
||||
);
|
||||
}
|
||||
|
||||
if (userResponseDto != null) {
|
||||
Store.put(StoreKey.deviceId, deviceId);
|
||||
Store.put(StoreKey.deviceIdHash, fastHash(deviceId));
|
||||
Store.put(
|
||||
StoreKey.currentUser,
|
||||
User.fromUserDto(userResponseDto, userPreferences),
|
||||
);
|
||||
Store.put(StoreKey.serverUrl, serverUrl);
|
||||
Store.put(StoreKey.accessToken, accessToken);
|
||||
|
||||
shouldChangePassword = userResponseDto.shouldChangePassword;
|
||||
user = User.fromUserDto(userResponseDto, userPreferences);
|
||||
|
||||
retResult = true;
|
||||
} else {
|
||||
_log.severe("Unable to get user information from the server.");
|
||||
UserAdminResponseDto? userResponse;
|
||||
UserPreferencesResponseDto? userPreferences;
|
||||
try {
|
||||
final responses = await Future.wait([
|
||||
_apiService.usersApi.getMyUser(),
|
||||
_apiService.usersApi.getMyPreferences(),
|
||||
]);
|
||||
userResponse = responses[0] as UserAdminResponseDto;
|
||||
userPreferences = responses[1] as UserPreferencesResponseDto;
|
||||
} on ApiException catch (error, stackTrace) {
|
||||
if (error.code == 401) {
|
||||
_log.severe("Unauthorized access, token likely expired. Logging out.");
|
||||
return false;
|
||||
}
|
||||
_log.severe(
|
||||
"Error getting user information from the server [API EXCEPTION]",
|
||||
stackTrace,
|
||||
);
|
||||
} catch (error, stackTrace) {
|
||||
_log.severe(
|
||||
"Error getting user information from the server [CATCH ALL]",
|
||||
error,
|
||||
stackTrace,
|
||||
);
|
||||
}
|
||||
|
||||
// If the user information is successfully retrieved, update the store
|
||||
// Due to the flow of the code, this will always happen on first login
|
||||
if (userResponse != null) {
|
||||
Store.put(StoreKey.deviceId, deviceId);
|
||||
Store.put(StoreKey.deviceIdHash, fastHash(deviceId));
|
||||
Store.put(
|
||||
StoreKey.currentUser,
|
||||
User.fromUserDto(userResponse, userPreferences),
|
||||
);
|
||||
Store.put(StoreKey.serverUrl, serverUrl);
|
||||
Store.put(StoreKey.accessToken, accessToken);
|
||||
|
||||
shouldChangePassword = userResponse.shouldChangePassword;
|
||||
user = User.fromUserDto(userResponse, userPreferences);
|
||||
} else {
|
||||
_log.severe("Unable to get user information from the server.");
|
||||
}
|
||||
|
||||
// If the user is null, the login was not successful
|
||||
// and we don't have a local copy of the user from a prior successful login
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
state = state.copyWith(
|
||||
@@ -229,7 +227,7 @@ class AuthenticationNotifier extends StateNotifier<AuthenticationState> {
|
||||
deviceId: deviceId,
|
||||
);
|
||||
|
||||
return retResult;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,8 @@ import 'package:immich_mobile/pages/common/headers_settings.page.dart';
|
||||
import 'package:immich_mobile/pages/common/settings.page.dart';
|
||||
import 'package:immich_mobile/pages/common/splash_screen.page.dart';
|
||||
import 'package:immich_mobile/pages/common/tab_controller.page.dart';
|
||||
import 'package:immich_mobile/pages/editing/edit.page.dart';
|
||||
import 'package:immich_mobile/pages/editing/crop.page.dart';
|
||||
import 'package:immich_mobile/pages/library/archive.page.dart';
|
||||
import 'package:immich_mobile/pages/library/favorite.page.dart';
|
||||
import 'package:immich_mobile/pages/library/library.page.dart';
|
||||
@@ -133,6 +135,8 @@ class AppRouter extends _$AppRouter {
|
||||
page: CreateAlbumRoute.page,
|
||||
guards: [_authGuard, _duplicateGuard],
|
||||
),
|
||||
AutoRoute(page: EditImageRoute.page),
|
||||
AutoRoute(page: CropImageRoute.page),
|
||||
AutoRoute(page: FavoritesRoute.page, guards: [_authGuard, _duplicateGuard]),
|
||||
AutoRoute(page: AllVideosRoute.page, guards: [_authGuard, _duplicateGuard]),
|
||||
AutoRoute(
|
||||
|
||||
@@ -165,6 +165,28 @@ abstract class _$AppRouter extends RootStackRouter {
|
||||
),
|
||||
);
|
||||
},
|
||||
CropImageRoute.name: (routeData) {
|
||||
final args = routeData.argsAs<CropImageRouteArgs>();
|
||||
return AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: CropImagePage(
|
||||
key: args.key,
|
||||
image: args.image,
|
||||
),
|
||||
);
|
||||
},
|
||||
EditImageRoute.name: (routeData) {
|
||||
final args = routeData.argsAs<EditImageRouteArgs>(
|
||||
orElse: () => const EditImageRouteArgs());
|
||||
return AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: EditImagePage(
|
||||
key: args.key,
|
||||
image: args.image,
|
||||
asset: args.asset,
|
||||
),
|
||||
);
|
||||
},
|
||||
FailedBackupStatusRoute.name: (routeData) {
|
||||
return AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
@@ -836,6 +858,87 @@ class CreateAlbumRouteArgs {
|
||||
}
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [CropImagePage]
|
||||
class CropImageRoute extends PageRouteInfo<CropImageRouteArgs> {
|
||||
CropImageRoute({
|
||||
Key? key,
|
||||
required Image image,
|
||||
List<PageRouteInfo>? children,
|
||||
}) : super(
|
||||
CropImageRoute.name,
|
||||
args: CropImageRouteArgs(
|
||||
key: key,
|
||||
image: image,
|
||||
),
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'CropImageRoute';
|
||||
|
||||
static const PageInfo<CropImageRouteArgs> page =
|
||||
PageInfo<CropImageRouteArgs>(name);
|
||||
}
|
||||
|
||||
class CropImageRouteArgs {
|
||||
const CropImageRouteArgs({
|
||||
this.key,
|
||||
required this.image,
|
||||
});
|
||||
|
||||
final Key? key;
|
||||
|
||||
final Image image;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'CropImageRouteArgs{key: $key, image: $image}';
|
||||
}
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [EditImagePage]
|
||||
class EditImageRoute extends PageRouteInfo<EditImageRouteArgs> {
|
||||
EditImageRoute({
|
||||
Key? key,
|
||||
Image? image,
|
||||
Asset? asset,
|
||||
List<PageRouteInfo>? children,
|
||||
}) : super(
|
||||
EditImageRoute.name,
|
||||
args: EditImageRouteArgs(
|
||||
key: key,
|
||||
image: image,
|
||||
asset: asset,
|
||||
),
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'EditImageRoute';
|
||||
|
||||
static const PageInfo<EditImageRouteArgs> page =
|
||||
PageInfo<EditImageRouteArgs>(name);
|
||||
}
|
||||
|
||||
class EditImageRouteArgs {
|
||||
const EditImageRouteArgs({
|
||||
this.key,
|
||||
this.image,
|
||||
this.asset,
|
||||
});
|
||||
|
||||
final Key? key;
|
||||
|
||||
final Image? image;
|
||||
|
||||
final Asset? asset;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'EditImageRouteArgs{key: $key, image: $image, asset: $asset}';
|
||||
}
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [FailedBackupStatusPage]
|
||||
class FailedBackupStatusRoute extends PageRouteInfo<void> {
|
||||
|
||||
12
mobile/lib/utils/hooks/crop_controller_hook.dart
Normal file
12
mobile/lib/utils/hooks/crop_controller_hook.dart
Normal file
@@ -0,0 +1,12 @@
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:crop_image/crop_image.dart';
|
||||
import 'dart:ui'; // Import the dart:ui library for Rect
|
||||
|
||||
/// A hook that provides a [CropController] instance.
|
||||
CropController useCropController() {
|
||||
return useMemoized(
|
||||
() => CropController(
|
||||
defaultCrop: const Rect.fromLTRB(0.1, 0.1, 0.9, 0.9),
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -25,9 +25,7 @@ class HttpSSLCertOverride extends HttpOverrides {
|
||||
try {
|
||||
_log.info("Setting client certificate");
|
||||
ctx.usePrivateKeyBytes(cert.data, password: cert.password);
|
||||
if (!Platform.isIOS) {
|
||||
ctx.useCertificateChainBytes(cert.data, password: cert.password);
|
||||
}
|
||||
ctx.useCertificateChainBytes(cert.data, password: cert.password);
|
||||
} catch (e) {
|
||||
_log.severe("Failed to set SSL client cert: $e");
|
||||
return false;
|
||||
|
||||
@@ -21,6 +21,7 @@ import 'package:immich_mobile/providers/asset.provider.dart';
|
||||
import 'package:immich_mobile/providers/server_info.provider.dart';
|
||||
import 'package:immich_mobile/providers/user.provider.dart';
|
||||
import 'package:immich_mobile/widgets/common/immich_toast.dart';
|
||||
import 'package:immich_mobile/pages/editing/edit.page.dart';
|
||||
|
||||
class BottomGalleryBar extends ConsumerWidget {
|
||||
final Asset asset;
|
||||
@@ -69,6 +70,12 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||
label: 'control_bottom_app_bar_share'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_share'.tr(),
|
||||
),
|
||||
if (asset.isImage)
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.tune_outlined),
|
||||
label: 'control_bottom_app_bar_edit'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_edit'.tr(),
|
||||
),
|
||||
if (isOwner)
|
||||
asset.isArchived
|
||||
? BottomNavigationBarItem(
|
||||
@@ -87,7 +94,7 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||
label: 'control_bottom_app_bar_stack'.tr(),
|
||||
tooltip: 'control_bottom_app_bar_stack'.tr(),
|
||||
),
|
||||
if (isOwner)
|
||||
if (isOwner && !isInAlbum)
|
||||
BottomNavigationBarItem(
|
||||
icon: const Icon(Icons.delete_outline),
|
||||
label: 'control_bottom_app_bar_delete'.tr(),
|
||||
@@ -280,6 +287,24 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||
ref.read(imageViewerStateProvider.notifier).shareAsset(asset, context);
|
||||
}
|
||||
|
||||
void handleEdit() async {
|
||||
if (asset.isOffline) {
|
||||
ImmichToast.show(
|
||||
durationInSecond: 1,
|
||||
context: context,
|
||||
msg: 'asset_action_edit_err_offline'.tr(),
|
||||
gravity: ToastGravity.BOTTOM,
|
||||
);
|
||||
return;
|
||||
}
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) =>
|
||||
EditImagePage(asset: asset), // Send the Asset object
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
handleArchive() {
|
||||
ref.read(assetProvider.notifier).toggleArchive([asset]);
|
||||
if (isParent) {
|
||||
@@ -343,6 +368,7 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||
|
||||
List<Function(int)> actionslist = [
|
||||
(_) => shareAsset(),
|
||||
if (asset.isImage) (_) => handleEdit(),
|
||||
if (isOwner) (_) => handleArchive(),
|
||||
if (isOwner && stack.isNotEmpty) (_) => showStackActionItems(),
|
||||
if (isOwner) (_) => handleDelete(),
|
||||
@@ -365,10 +391,22 @@ class BottomGalleryBar extends ConsumerWidget {
|
||||
backgroundColor: Colors.black.withOpacity(0.4),
|
||||
unselectedIconTheme: const IconThemeData(color: Colors.white),
|
||||
selectedIconTheme: const IconThemeData(color: Colors.white),
|
||||
unselectedLabelStyle: const TextStyle(color: Colors.black),
|
||||
selectedLabelStyle: const TextStyle(color: Colors.black),
|
||||
showSelectedLabels: false,
|
||||
showUnselectedLabels: false,
|
||||
unselectedLabelStyle: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w500,
|
||||
height: 2.3,
|
||||
),
|
||||
selectedLabelStyle: const TextStyle(
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w500,
|
||||
height: 2.3,
|
||||
),
|
||||
unselectedFontSize: 14,
|
||||
selectedFontSize: 14,
|
||||
selectedItemColor: Colors.white,
|
||||
unselectedItemColor: Colors.white,
|
||||
showSelectedLabels: true,
|
||||
showUnselectedLabels: true,
|
||||
items: itemsList,
|
||||
onTap: (index) {
|
||||
if (index < actionslist.length) {
|
||||
|
||||
4
mobile/openapi/README.md
generated
4
mobile/openapi/README.md
generated
@@ -3,7 +3,7 @@ Immich API
|
||||
|
||||
This Dart package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
||||
|
||||
- API version: 1.110.0
|
||||
- API version: 1.111.0
|
||||
- Generator version: 7.5.0
|
||||
- Build package: org.openapitools.codegen.languages.DartClientCodegen
|
||||
|
||||
@@ -146,6 +146,7 @@ Class | Method | HTTP request | Description
|
||||
*LibrariesApi* | [**validate**](doc//LibrariesApi.md#validate) | **POST** /libraries/{id}/validate |
|
||||
*MapApi* | [**getMapMarkers**](doc//MapApi.md#getmapmarkers) | **GET** /map/markers |
|
||||
*MapApi* | [**getMapStyle**](doc//MapApi.md#getmapstyle) | **GET** /map/style.json |
|
||||
*MapApi* | [**reverseGeocode**](doc//MapApi.md#reversegeocode) | **GET** /map/reverse-geocode |
|
||||
*MemoriesApi* | [**addMemoryAssets**](doc//MemoriesApi.md#addmemoryassets) | **PUT** /memories/{id}/assets |
|
||||
*MemoriesApi* | [**createMemory**](doc//MemoriesApi.md#creatememory) | **POST** /memories |
|
||||
*MemoriesApi* | [**deleteMemory**](doc//MemoriesApi.md#deletememory) | **DELETE** /memories/{id} |
|
||||
@@ -339,6 +340,7 @@ Class | Method | HTTP request | Description
|
||||
- [LoginResponseDto](doc//LoginResponseDto.md)
|
||||
- [LogoutResponseDto](doc//LogoutResponseDto.md)
|
||||
- [MapMarkerResponseDto](doc//MapMarkerResponseDto.md)
|
||||
- [MapReverseGeocodeResponseDto](doc//MapReverseGeocodeResponseDto.md)
|
||||
- [MapTheme](doc//MapTheme.md)
|
||||
- [MemoryCreateDto](doc//MemoryCreateDto.md)
|
||||
- [MemoryLaneResponseDto](doc//MemoryLaneResponseDto.md)
|
||||
|
||||
1
mobile/openapi/lib/api.dart
generated
1
mobile/openapi/lib/api.dart
generated
@@ -152,6 +152,7 @@ part 'model/login_credential_dto.dart';
|
||||
part 'model/login_response_dto.dart';
|
||||
part 'model/logout_response_dto.dart';
|
||||
part 'model/map_marker_response_dto.dart';
|
||||
part 'model/map_reverse_geocode_response_dto.dart';
|
||||
part 'model/map_theme.dart';
|
||||
part 'model/memory_create_dto.dart';
|
||||
part 'model/memory_lane_response_dto.dart';
|
||||
|
||||
57
mobile/openapi/lib/api/map_api.dart
generated
57
mobile/openapi/lib/api/map_api.dart
generated
@@ -160,4 +160,61 @@ class MapApi {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Performs an HTTP 'GET /map/reverse-geocode' operation and returns the [Response].
|
||||
/// Parameters:
|
||||
///
|
||||
/// * [double] lat (required):
|
||||
///
|
||||
/// * [double] lon (required):
|
||||
Future<Response> reverseGeocodeWithHttpInfo(double lat, double lon,) async {
|
||||
// ignore: prefer_const_declarations
|
||||
final path = r'/map/reverse-geocode';
|
||||
|
||||
// ignore: prefer_final_locals
|
||||
Object? postBody;
|
||||
|
||||
final queryParams = <QueryParam>[];
|
||||
final headerParams = <String, String>{};
|
||||
final formParams = <String, String>{};
|
||||
|
||||
queryParams.addAll(_queryParams('', 'lat', lat));
|
||||
queryParams.addAll(_queryParams('', 'lon', lon));
|
||||
|
||||
const contentTypes = <String>[];
|
||||
|
||||
|
||||
return apiClient.invokeAPI(
|
||||
path,
|
||||
'GET',
|
||||
queryParams,
|
||||
postBody,
|
||||
headerParams,
|
||||
formParams,
|
||||
contentTypes.isEmpty ? null : contentTypes.first,
|
||||
);
|
||||
}
|
||||
|
||||
/// Parameters:
|
||||
///
|
||||
/// * [double] lat (required):
|
||||
///
|
||||
/// * [double] lon (required):
|
||||
Future<List<MapReverseGeocodeResponseDto>?> reverseGeocode(double lat, double lon,) async {
|
||||
final response = await reverseGeocodeWithHttpInfo(lat, lon,);
|
||||
if (response.statusCode >= HttpStatus.badRequest) {
|
||||
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||
}
|
||||
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||
// FormatException when trying to decode an empty string.
|
||||
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||
final responseBody = await _decodeBodyBytes(response);
|
||||
return (await apiClient.deserializeAsync(responseBody, 'List<MapReverseGeocodeResponseDto>') as List)
|
||||
.cast<MapReverseGeocodeResponseDto>()
|
||||
.toList(growable: false);
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
2
mobile/openapi/lib/api_client.dart
generated
2
mobile/openapi/lib/api_client.dart
generated
@@ -362,6 +362,8 @@ class ApiClient {
|
||||
return LogoutResponseDto.fromJson(value);
|
||||
case 'MapMarkerResponseDto':
|
||||
return MapMarkerResponseDto.fromJson(value);
|
||||
case 'MapReverseGeocodeResponseDto':
|
||||
return MapReverseGeocodeResponseDto.fromJson(value);
|
||||
case 'MapTheme':
|
||||
return MapThemeTypeTransformer().decode(value);
|
||||
case 'MemoryCreateDto':
|
||||
|
||||
126
mobile/openapi/lib/model/map_reverse_geocode_response_dto.dart
generated
Normal file
126
mobile/openapi/lib/model/map_reverse_geocode_response_dto.dart
generated
Normal file
@@ -0,0 +1,126 @@
|
||||
//
|
||||
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
||||
//
|
||||
// @dart=2.18
|
||||
|
||||
// ignore_for_file: unused_element, unused_import
|
||||
// ignore_for_file: always_put_required_named_parameters_first
|
||||
// ignore_for_file: constant_identifier_names
|
||||
// ignore_for_file: lines_longer_than_80_chars
|
||||
|
||||
part of openapi.api;
|
||||
|
||||
class MapReverseGeocodeResponseDto {
|
||||
/// Returns a new [MapReverseGeocodeResponseDto] instance.
|
||||
MapReverseGeocodeResponseDto({
|
||||
required this.city,
|
||||
required this.country,
|
||||
required this.state,
|
||||
});
|
||||
|
||||
String? city;
|
||||
|
||||
String? country;
|
||||
|
||||
String? state;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) => identical(this, other) || other is MapReverseGeocodeResponseDto &&
|
||||
other.city == city &&
|
||||
other.country == country &&
|
||||
other.state == state;
|
||||
|
||||
@override
|
||||
int get hashCode =>
|
||||
// ignore: unnecessary_parenthesis
|
||||
(city == null ? 0 : city!.hashCode) +
|
||||
(country == null ? 0 : country!.hashCode) +
|
||||
(state == null ? 0 : state!.hashCode);
|
||||
|
||||
@override
|
||||
String toString() => 'MapReverseGeocodeResponseDto[city=$city, country=$country, state=$state]';
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final json = <String, dynamic>{};
|
||||
if (this.city != null) {
|
||||
json[r'city'] = this.city;
|
||||
} else {
|
||||
// json[r'city'] = null;
|
||||
}
|
||||
if (this.country != null) {
|
||||
json[r'country'] = this.country;
|
||||
} else {
|
||||
// json[r'country'] = null;
|
||||
}
|
||||
if (this.state != null) {
|
||||
json[r'state'] = this.state;
|
||||
} else {
|
||||
// json[r'state'] = null;
|
||||
}
|
||||
return json;
|
||||
}
|
||||
|
||||
/// Returns a new [MapReverseGeocodeResponseDto] instance and imports its values from
|
||||
/// [value] if it's a [Map], null otherwise.
|
||||
// ignore: prefer_constructors_over_static_methods
|
||||
static MapReverseGeocodeResponseDto? fromJson(dynamic value) {
|
||||
if (value is Map) {
|
||||
final json = value.cast<String, dynamic>();
|
||||
|
||||
return MapReverseGeocodeResponseDto(
|
||||
city: mapValueOfType<String>(json, r'city'),
|
||||
country: mapValueOfType<String>(json, r'country'),
|
||||
state: mapValueOfType<String>(json, r'state'),
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
static List<MapReverseGeocodeResponseDto> listFromJson(dynamic json, {bool growable = false,}) {
|
||||
final result = <MapReverseGeocodeResponseDto>[];
|
||||
if (json is List && json.isNotEmpty) {
|
||||
for (final row in json) {
|
||||
final value = MapReverseGeocodeResponseDto.fromJson(row);
|
||||
if (value != null) {
|
||||
result.add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result.toList(growable: growable);
|
||||
}
|
||||
|
||||
static Map<String, MapReverseGeocodeResponseDto> mapFromJson(dynamic json) {
|
||||
final map = <String, MapReverseGeocodeResponseDto>{};
|
||||
if (json is Map && json.isNotEmpty) {
|
||||
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
||||
for (final entry in json.entries) {
|
||||
final value = MapReverseGeocodeResponseDto.fromJson(entry.value);
|
||||
if (value != null) {
|
||||
map[entry.key] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
// maps a json object with a list of MapReverseGeocodeResponseDto-objects as value to a dart map
|
||||
static Map<String, List<MapReverseGeocodeResponseDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
|
||||
final map = <String, List<MapReverseGeocodeResponseDto>>{};
|
||||
if (json is Map && json.isNotEmpty) {
|
||||
// ignore: parameter_assignments
|
||||
json = json.cast<String, dynamic>();
|
||||
for (final entry in json.entries) {
|
||||
map[entry.key] = MapReverseGeocodeResponseDto.listFromJson(entry.value, growable: growable,);
|
||||
}
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/// The list of required keys that must be present in a JSON.
|
||||
static const requiredKeys = <String>{
|
||||
'city',
|
||||
'country',
|
||||
'state',
|
||||
};
|
||||
}
|
||||
|
||||
@@ -273,6 +273,14 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
crop_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: crop_image
|
||||
sha256: "6cf20655ecbfba99c369d43ec7adcfa49bf135af88fb75642173d6224a95d3f1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.13"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1813,4 +1821,4 @@ packages:
|
||||
version: "3.1.2"
|
||||
sdks:
|
||||
dart: ">=3.4.0 <4.0.0"
|
||||
flutter: ">=3.22.2"
|
||||
flutter: ">=3.22.3"
|
||||
|
||||
@@ -2,11 +2,11 @@ name: immich_mobile
|
||||
description: Immich - selfhosted backup media file on mobile phone
|
||||
|
||||
publish_to: 'none'
|
||||
version: 1.110.0+151
|
||||
version: 1.111.0+152
|
||||
|
||||
environment:
|
||||
sdk: '>=3.3.0 <4.0.0'
|
||||
flutter: 3.22.2
|
||||
flutter: 3.22.3
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
@@ -62,6 +62,8 @@ dependencies:
|
||||
thumbhash: 0.1.0+1
|
||||
async: ^2.11.0
|
||||
|
||||
#image editing packages
|
||||
crop_image: ^1.0.13
|
||||
openapi:
|
||||
path: openapi
|
||||
|
||||
|
||||
@@ -3109,6 +3109,60 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/map/reverse-geocode": {
|
||||
"get": {
|
||||
"operationId": "reverseGeocode",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "lat",
|
||||
"required": true,
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"format": "double",
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lon",
|
||||
"required": true,
|
||||
"in": "query",
|
||||
"schema": {
|
||||
"format": "double",
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/MapReverseGeocodeResponseDto"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"bearer": []
|
||||
},
|
||||
{
|
||||
"cookie": []
|
||||
},
|
||||
{
|
||||
"api_key": []
|
||||
}
|
||||
],
|
||||
"tags": [
|
||||
"Map"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/map/style.json": {
|
||||
"get": {
|
||||
"operationId": "getMapStyle",
|
||||
@@ -7033,7 +7087,7 @@
|
||||
"info": {
|
||||
"title": "Immich",
|
||||
"description": "Immich API",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"contact": {}
|
||||
},
|
||||
"tags": [],
|
||||
@@ -9128,6 +9182,28 @@
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"MapReverseGeocodeResponseDto": {
|
||||
"properties": {
|
||||
"city": {
|
||||
"nullable": true,
|
||||
"type": "string"
|
||||
},
|
||||
"country": {
|
||||
"nullable": true,
|
||||
"type": "string"
|
||||
},
|
||||
"state": {
|
||||
"nullable": true,
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"city",
|
||||
"country",
|
||||
"state"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"MapTheme": {
|
||||
"enum": [
|
||||
"light",
|
||||
|
||||
@@ -1 +1 @@
|
||||
20.15.1
|
||||
20.16.0
|
||||
|
||||
4
open-api/typescript-sdk/package-lock.json
generated
4
open-api/typescript-sdk/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@immich/sdk",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@immich/sdk",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
"@oazapfts/runtime": "^1.0.2"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@immich/sdk",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"description": "Auto-generated TypeScript SDK for the Immich API",
|
||||
"type": "module",
|
||||
"main": "./build/index.js",
|
||||
@@ -28,6 +28,6 @@
|
||||
"directory": "open-api/typescript-sdk"
|
||||
},
|
||||
"volta": {
|
||||
"node": "20.15.1"
|
||||
"node": "20.16.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Immich
|
||||
* 1.110.0
|
||||
* 1.111.0
|
||||
* DO NOT MODIFY - This file has been generated using oazapfts.
|
||||
* See https://www.npmjs.com/package/oazapfts
|
||||
*/
|
||||
@@ -554,6 +554,11 @@ export type MapMarkerResponseDto = {
|
||||
lon: number;
|
||||
state: string | null;
|
||||
};
|
||||
export type MapReverseGeocodeResponseDto = {
|
||||
city: string | null;
|
||||
country: string | null;
|
||||
state: string | null;
|
||||
};
|
||||
export type OnThisDayDto = {
|
||||
year: number;
|
||||
};
|
||||
@@ -1991,6 +1996,20 @@ export function getMapMarkers({ fileCreatedAfter, fileCreatedBefore, isArchived,
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
export function reverseGeocode({ lat, lon }: {
|
||||
lat: number;
|
||||
lon: number;
|
||||
}, opts?: Oazapfts.RequestOpts) {
|
||||
return oazapfts.ok(oazapfts.fetchJson<{
|
||||
status: 200;
|
||||
data: MapReverseGeocodeResponseDto[];
|
||||
}>(`/map/reverse-geocode${QS.query(QS.explode({
|
||||
lat,
|
||||
lon
|
||||
}))}`, {
|
||||
...opts
|
||||
}));
|
||||
}
|
||||
export function getMapStyle({ key, theme }: {
|
||||
key?: string;
|
||||
theme: MapTheme;
|
||||
|
||||
@@ -1 +1 @@
|
||||
20.15.1
|
||||
20.16.0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# dev build
|
||||
FROM ghcr.io/immich-app/base-server-dev:20240723@sha256:78ecd6ffa8808fab3e4062840f814633c296cb0ec98c4cb8f98b302088f3ea64 as dev
|
||||
FROM ghcr.io/immich-app/base-server-dev:20240730@sha256:3e03f236d7669d0b27fbd49bc617df69fbb719cec2310a1c7ed8291236648c22 as dev
|
||||
|
||||
RUN apt-get install --no-install-recommends -yqq tini
|
||||
WORKDIR /usr/src/app
|
||||
@@ -25,7 +25,7 @@ COPY --from=dev /usr/src/app/node_modules/@img ./node_modules/@img
|
||||
COPY --from=dev /usr/src/app/node_modules/exiftool-vendored.pl ./node_modules/exiftool-vendored.pl
|
||||
|
||||
# web build
|
||||
FROM node:20.16.0-alpine3.20@sha256:aada767bf3e4b4a1437642b81db7d8bb99a6dba27627088e4608772f1f02ebc0 as web
|
||||
FROM node:20.16.0-alpine3.20@sha256:eb8101caae9ac02229bd64c024919fe3d4504ff7f329da79ca60a04db08cef52 as web
|
||||
|
||||
WORKDIR /usr/src/open-api/typescript-sdk
|
||||
COPY open-api/typescript-sdk/package*.json open-api/typescript-sdk/tsconfig*.json ./
|
||||
@@ -41,7 +41,7 @@ RUN npm run build
|
||||
|
||||
|
||||
# prod build
|
||||
FROM ghcr.io/immich-app/base-server-prod:20240723@sha256:6f687ab6d8ba5ca4b134bdc3f1538dfe7de7d32bebb3939fbf46fa592609a554
|
||||
FROM ghcr.io/immich-app/base-server-prod:20240730@sha256:40efde970c4dfb1ace5a10211b8ca1b5f04bff5da4b7537c9f76a0454a05f47d
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
ENV NODE_ENV=production \
|
||||
|
||||
309
server/package-lock.json
generated
309
server/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "immich",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "immich",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"license": "GNU Affero General Public License version 3",
|
||||
"dependencies": {
|
||||
"@nestjs/bullmq": "^10.0.1",
|
||||
@@ -60,6 +60,7 @@
|
||||
"semver": "^7.6.2",
|
||||
"sharp": "^0.33.0",
|
||||
"sirv": "^2.0.4",
|
||||
"tailwindcss-preset-email": "^1.3.2",
|
||||
"thumbhash": "^0.1.1",
|
||||
"typeorm": "^0.3.17",
|
||||
"ua-parser-js": "^1.0.35"
|
||||
@@ -82,7 +83,7 @@
|
||||
"@types/multer": "^1.4.7",
|
||||
"@types/node": "^20.14.12",
|
||||
"@types/nodemailer": "^6.4.14",
|
||||
"@types/picomatch": "^2.3.3",
|
||||
"@types/picomatch": "^3.0.0",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/supertest": "^6.0.0",
|
||||
"@types/ua-parser-js": "^0.7.36",
|
||||
@@ -103,7 +104,8 @@
|
||||
"typescript": "^5.3.3",
|
||||
"unplugin-swc": "^1.4.5",
|
||||
"utimes": "^5.2.1",
|
||||
"vitest": "^1.5.0"
|
||||
"vite-tsconfig-paths": "^4.3.2",
|
||||
"vitest": "^1.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aashutoshrathi/word-wrap": {
|
||||
@@ -6309,9 +6311,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/picomatch": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.4.tgz",
|
||||
"integrity": "sha512-0so8lU8O5zatZS/2Fi4zrwks+vZv7e0dygrgEZXljODXBig97l4cPQD+9LabXfGJOWwoRkTVz6Q4edZvD12UOA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-3.0.0.tgz",
|
||||
"integrity": "sha512-iX/Qwk9vU17N/5Q7QrV46wzciloTdCqTRt6z8A7uFFADM2+Sy5oQh9ldZhAiTXH+l0sM/EkXatEhJIs8FUyOBQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/prismjs": {
|
||||
@@ -9549,9 +9551,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/exiftool-vendored": {
|
||||
"version": "28.1.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.1.0.tgz",
|
||||
"integrity": "sha512-Anlfl16gv0QuaNbkMuwutCfhzzPn/33Lio2fKCgIHk4m+udz5dsatwv1+tjk4eDMNT1Oj/zwG3hKhSX5zlHzAw==",
|
||||
"version": "28.2.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.2.0.tgz",
|
||||
"integrity": "sha512-s2k92EB8LSeYjXv4agtpANeH8y1CsEThYqMm7AF1jP64PyFb40AoD0RGf69j28G6RqXkT5JGl4Xwk9kOy3IkjQ==",
|
||||
"dependencies": {
|
||||
"@photostructure/tz-lookup": "^10.0.0",
|
||||
"@types/luxon": "^3.4.2",
|
||||
@@ -9560,23 +9562,23 @@
|
||||
"luxon": "^3.4.4"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"exiftool-vendored.exe": "12.89.0",
|
||||
"exiftool-vendored.pl": "12.89.0"
|
||||
"exiftool-vendored.exe": "12.91.0",
|
||||
"exiftool-vendored.pl": "12.91.0"
|
||||
}
|
||||
},
|
||||
"node_modules/exiftool-vendored.exe": {
|
||||
"version": "12.89.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.89.0.tgz",
|
||||
"integrity": "sha512-GyayTRwH6v/3SCV7g80zV5oMw66AQFnPJVfPc/At9PMAe90/9N7GCM1o6U1FGOpa1ZvmSm38RvvBEMr667vnnw==",
|
||||
"version": "12.91.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.91.0.tgz",
|
||||
"integrity": "sha512-nxcoGBaJL/D+Wb0jVe8qwyV8QZpRcCzU0aCKhG0S1XNGWGjJJJ4QV851aobcfDwI4NluFOdqkjTSf32pVijvHg==",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/exiftool-vendored.pl": {
|
||||
"version": "12.89.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.89.0.tgz",
|
||||
"integrity": "sha512-pkkWBRmeylUEAfBOg/e6NO8dZ572yDA6kTsnw1gGiAhJUxgoLGP+ageuOD6Oxywag5/HFcT2syJ+L1/ch5hjfg==",
|
||||
"version": "12.91.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.91.0.tgz",
|
||||
"integrity": "sha512-GZMy9+Jiv8/C7R4uYe1kWtXsAaJdgVezTwYa+wDeoqvReHiX2t5uzkCrzWdjo4LGl5mPQkyKhN7/uPLYk5Ak6w==",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"!win32"
|
||||
@@ -10373,6 +10375,12 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/globrex": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
|
||||
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||
@@ -13831,6 +13839,11 @@
|
||||
"csstype": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/react-email/node_modules/arg": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
|
||||
},
|
||||
"node_modules/react-email/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
@@ -13981,6 +13994,53 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-email/node_modules/tailwindcss": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz",
|
||||
"integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==",
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
"arg": "^5.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"didyoumean": "^1.2.2",
|
||||
"dlv": "^1.1.3",
|
||||
"fast-glob": "^3.3.0",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"jiti": "^1.19.1",
|
||||
"lilconfig": "^2.1.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
"object-hash": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.4.23",
|
||||
"postcss-import": "^15.1.0",
|
||||
"postcss-js": "^4.0.1",
|
||||
"postcss-load-config": "^4.0.1",
|
||||
"postcss-nested": "^6.0.1",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"resolve": "^1.22.2",
|
||||
"sucrase": "^3.32.0"
|
||||
},
|
||||
"bin": {
|
||||
"tailwind": "lib/cli.js",
|
||||
"tailwindcss": "lib/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-email/node_modules/tailwindcss/node_modules/glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-email/node_modules/typescript": {
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
|
||||
@@ -15507,9 +15567,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz",
|
||||
"integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==",
|
||||
"version": "3.4.6",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz",
|
||||
"integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
"arg": "^5.0.2",
|
||||
@@ -15519,7 +15580,7 @@
|
||||
"fast-glob": "^3.3.0",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"jiti": "^1.19.1",
|
||||
"jiti": "^1.21.0",
|
||||
"lilconfig": "^2.1.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
@@ -15542,15 +15603,48 @@
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss-email-variants": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss-email-variants/-/tailwindcss-email-variants-3.0.1.tgz",
|
||||
"integrity": "sha512-bRk4R2jnfaW7BBaL2kDgOdBl0SpVP/JPDE/yCkZb1n3YrPK9ZQyQGZoVX3OX06GxjMOrNO3wZACVdHJce7dm8w==",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"tailwindcss": ">=3.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss-mso": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss-mso/-/tailwindcss-mso-1.4.3.tgz",
|
||||
"integrity": "sha512-8YfZ4xnIComDrhoSr8FUwm7EGz1FkxsZy07Fs4Jm/JxHrFiubdiZjyxLuHMc3S8o02+U4fjRGHPOzoVXRus10A==",
|
||||
"peerDependencies": {
|
||||
"tailwindcss": ">=3.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss-preset-email": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss-preset-email/-/tailwindcss-preset-email-1.3.2.tgz",
|
||||
"integrity": "sha512-kSPNZM5+tSi+uhCb4rk1XF9Q6zp8lhoNLCa3GQqe6gKmfI/nTqY8Y+5/DYNpwqhmUPCSHULlyI/LUCaF/q8sLg==",
|
||||
"dependencies": {
|
||||
"tailwindcss-email-variants": "^3.0.0",
|
||||
"tailwindcss-mso": "^1.4.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"tailwindcss": ">=3.4.6"
|
||||
}
|
||||
},
|
||||
"node_modules/tailwindcss/node_modules/arg": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/tailwindcss/node_modules/glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.3"
|
||||
},
|
||||
@@ -16147,6 +16241,26 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/tsconfck": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz",
|
||||
"integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsconfck": "bin/tsconfck.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^18 || >=20"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^5.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/tsconfig-paths": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
|
||||
@@ -16792,6 +16906,25 @@
|
||||
"url": "https://opencollective.com/vitest"
|
||||
}
|
||||
},
|
||||
"node_modules/vite-tsconfig-paths": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz",
|
||||
"integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"debug": "^4.1.1",
|
||||
"globrex": "^0.1.2",
|
||||
"tsconfck": "^3.0.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vite": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"vite": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/vitest": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz",
|
||||
@@ -21055,9 +21188,9 @@
|
||||
}
|
||||
},
|
||||
"@types/picomatch": {
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-2.3.4.tgz",
|
||||
"integrity": "sha512-0so8lU8O5zatZS/2Fi4zrwks+vZv7e0dygrgEZXljODXBig97l4cPQD+9LabXfGJOWwoRkTVz6Q4edZvD12UOA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-3.0.0.tgz",
|
||||
"integrity": "sha512-iX/Qwk9vU17N/5Q7QrV46wzciloTdCqTRt6z8A7uFFADM2+Sy5oQh9ldZhAiTXH+l0sM/EkXatEhJIs8FUyOBQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/prismjs": {
|
||||
@@ -23433,29 +23566,29 @@
|
||||
}
|
||||
},
|
||||
"exiftool-vendored": {
|
||||
"version": "28.1.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.1.0.tgz",
|
||||
"integrity": "sha512-Anlfl16gv0QuaNbkMuwutCfhzzPn/33Lio2fKCgIHk4m+udz5dsatwv1+tjk4eDMNT1Oj/zwG3hKhSX5zlHzAw==",
|
||||
"version": "28.2.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored/-/exiftool-vendored-28.2.0.tgz",
|
||||
"integrity": "sha512-s2k92EB8LSeYjXv4agtpANeH8y1CsEThYqMm7AF1jP64PyFb40AoD0RGf69j28G6RqXkT5JGl4Xwk9kOy3IkjQ==",
|
||||
"requires": {
|
||||
"@photostructure/tz-lookup": "^10.0.0",
|
||||
"@types/luxon": "^3.4.2",
|
||||
"batch-cluster": "^13.0.0",
|
||||
"exiftool-vendored.exe": "12.89.0",
|
||||
"exiftool-vendored.pl": "12.89.0",
|
||||
"exiftool-vendored.exe": "12.91.0",
|
||||
"exiftool-vendored.pl": "12.91.0",
|
||||
"he": "^1.2.0",
|
||||
"luxon": "^3.4.4"
|
||||
}
|
||||
},
|
||||
"exiftool-vendored.exe": {
|
||||
"version": "12.89.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.89.0.tgz",
|
||||
"integrity": "sha512-GyayTRwH6v/3SCV7g80zV5oMw66AQFnPJVfPc/At9PMAe90/9N7GCM1o6U1FGOpa1ZvmSm38RvvBEMr667vnnw==",
|
||||
"version": "12.91.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.exe/-/exiftool-vendored.exe-12.91.0.tgz",
|
||||
"integrity": "sha512-nxcoGBaJL/D+Wb0jVe8qwyV8QZpRcCzU0aCKhG0S1XNGWGjJJJ4QV851aobcfDwI4NluFOdqkjTSf32pVijvHg==",
|
||||
"optional": true
|
||||
},
|
||||
"exiftool-vendored.pl": {
|
||||
"version": "12.89.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.89.0.tgz",
|
||||
"integrity": "sha512-pkkWBRmeylUEAfBOg/e6NO8dZ572yDA6kTsnw1gGiAhJUxgoLGP+ageuOD6Oxywag5/HFcT2syJ+L1/ch5hjfg==",
|
||||
"version": "12.91.0",
|
||||
"resolved": "https://registry.npmjs.org/exiftool-vendored.pl/-/exiftool-vendored.pl-12.91.0.tgz",
|
||||
"integrity": "sha512-GZMy9+Jiv8/C7R4uYe1kWtXsAaJdgVezTwYa+wDeoqvReHiX2t5uzkCrzWdjo4LGl5mPQkyKhN7/uPLYk5Ak6w==",
|
||||
"optional": true
|
||||
},
|
||||
"express": {
|
||||
@@ -24050,6 +24183,12 @@
|
||||
"slash": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"globrex": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
|
||||
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
|
||||
"dev": true
|
||||
},
|
||||
"gopd": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
|
||||
@@ -26373,6 +26512,11 @@
|
||||
"csstype": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"arg": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
@@ -26476,6 +26620,45 @@
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
|
||||
},
|
||||
"tailwindcss": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz",
|
||||
"integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==",
|
||||
"requires": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
"arg": "^5.0.2",
|
||||
"chokidar": "^3.5.3",
|
||||
"didyoumean": "^1.2.2",
|
||||
"dlv": "^1.1.3",
|
||||
"fast-glob": "^3.3.0",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"jiti": "^1.19.1",
|
||||
"lilconfig": "^2.1.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
"object-hash": "^3.0.0",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.4.23",
|
||||
"postcss-import": "^15.1.0",
|
||||
"postcss-js": "^4.0.1",
|
||||
"postcss-load-config": "^4.0.1",
|
||||
"postcss-nested": "^6.0.1",
|
||||
"postcss-selector-parser": "^6.0.11",
|
||||
"resolve": "^1.22.2",
|
||||
"sucrase": "^3.32.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"requires": {
|
||||
"is-glob": "^4.0.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
|
||||
@@ -27591,9 +27774,10 @@
|
||||
}
|
||||
},
|
||||
"tailwindcss": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.0.tgz",
|
||||
"integrity": "sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==",
|
||||
"version": "3.4.6",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz",
|
||||
"integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@alloc/quick-lru": "^5.2.0",
|
||||
"arg": "^5.0.2",
|
||||
@@ -27603,7 +27787,7 @@
|
||||
"fast-glob": "^3.3.0",
|
||||
"glob-parent": "^6.0.2",
|
||||
"is-glob": "^4.0.3",
|
||||
"jiti": "^1.19.1",
|
||||
"jiti": "^1.21.0",
|
||||
"lilconfig": "^2.1.0",
|
||||
"micromatch": "^4.0.5",
|
||||
"normalize-path": "^3.0.0",
|
||||
@@ -27622,18 +27806,41 @@
|
||||
"arg": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
|
||||
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
|
||||
"peer": true
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"is-glob": "^4.0.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tailwindcss-email-variants": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss-email-variants/-/tailwindcss-email-variants-3.0.1.tgz",
|
||||
"integrity": "sha512-bRk4R2jnfaW7BBaL2kDgOdBl0SpVP/JPDE/yCkZb1n3YrPK9ZQyQGZoVX3OX06GxjMOrNO3wZACVdHJce7dm8w==",
|
||||
"requires": {}
|
||||
},
|
||||
"tailwindcss-mso": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss-mso/-/tailwindcss-mso-1.4.3.tgz",
|
||||
"integrity": "sha512-8YfZ4xnIComDrhoSr8FUwm7EGz1FkxsZy07Fs4Jm/JxHrFiubdiZjyxLuHMc3S8o02+U4fjRGHPOzoVXRus10A==",
|
||||
"requires": {}
|
||||
},
|
||||
"tailwindcss-preset-email": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/tailwindcss-preset-email/-/tailwindcss-preset-email-1.3.2.tgz",
|
||||
"integrity": "sha512-kSPNZM5+tSi+uhCb4rk1XF9Q6zp8lhoNLCa3GQqe6gKmfI/nTqY8Y+5/DYNpwqhmUPCSHULlyI/LUCaF/q8sLg==",
|
||||
"requires": {
|
||||
"tailwindcss-email-variants": "^3.0.0",
|
||||
"tailwindcss-mso": "^1.4.3"
|
||||
}
|
||||
},
|
||||
"tapable": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
|
||||
@@ -28090,6 +28297,13 @@
|
||||
"yn": "3.1.1"
|
||||
}
|
||||
},
|
||||
"tsconfck": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz",
|
||||
"integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"tsconfig-paths": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
|
||||
@@ -28435,6 +28649,17 @@
|
||||
"vite": "^5.0.0"
|
||||
}
|
||||
},
|
||||
"vite-tsconfig-paths": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz",
|
||||
"integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"globrex": "^0.1.2",
|
||||
"tsconfck": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"vitest": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "immich",
|
||||
"version": "1.110.0",
|
||||
"version": "1.111.0",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
@@ -86,6 +86,7 @@
|
||||
"semver": "^7.6.2",
|
||||
"sharp": "^0.33.0",
|
||||
"sirv": "^2.0.4",
|
||||
"tailwindcss-preset-email": "^1.3.2",
|
||||
"thumbhash": "^0.1.1",
|
||||
"typeorm": "^0.3.17",
|
||||
"ua-parser-js": "^1.0.35"
|
||||
@@ -108,7 +109,7 @@
|
||||
"@types/multer": "^1.4.7",
|
||||
"@types/node": "^20.14.12",
|
||||
"@types/nodemailer": "^6.4.14",
|
||||
"@types/picomatch": "^2.3.3",
|
||||
"@types/picomatch": "^3.0.0",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/supertest": "^6.0.0",
|
||||
"@types/ua-parser-js": "^0.7.36",
|
||||
@@ -129,9 +130,10 @@
|
||||
"typescript": "^5.3.3",
|
||||
"unplugin-swc": "^1.4.5",
|
||||
"utimes": "^5.2.1",
|
||||
"vitest": "^1.5.0"
|
||||
"vitest": "^1.6.0",
|
||||
"vite-tsconfig-paths": "^4.3.2"
|
||||
},
|
||||
"volta": {
|
||||
"node": "20.15.1"
|
||||
"node": "20.16.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import { Controller, Get, Query } from '@nestjs/common';
|
||||
import { Controller, Get, HttpCode, HttpStatus, Query } from '@nestjs/common';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { MapMarkerDto, MapMarkerResponseDto } from 'src/dtos/search.dto';
|
||||
import {
|
||||
MapMarkerDto,
|
||||
MapMarkerResponseDto,
|
||||
MapReverseGeocodeDto,
|
||||
MapReverseGeocodeResponseDto,
|
||||
} from 'src/dtos/map.dto';
|
||||
import { MapThemeDto } from 'src/dtos/system-config.dto';
|
||||
import { Auth, Authenticated } from 'src/middleware/auth.guard';
|
||||
import { MapService } from 'src/services/map.service';
|
||||
@@ -22,4 +27,11 @@ export class MapController {
|
||||
getMapStyle(@Query() dto: MapThemeDto) {
|
||||
return this.service.getMapStyle(dto.theme);
|
||||
}
|
||||
|
||||
@Authenticated()
|
||||
@Get('reverse-geocode')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
reverseGeocode(@Query() dto: MapReverseGeocodeDto): Promise<MapReverseGeocodeResponseDto[]> {
|
||||
return this.service.reverseGeocode(dto);
|
||||
}
|
||||
}
|
||||
|
||||
67
server/src/dtos/map.dto.ts
Normal file
67
server/src/dtos/map.dto.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { Type } from 'class-transformer';
|
||||
import { IsLatitude, IsLongitude } from 'class-validator';
|
||||
import { ValidateBoolean, ValidateDate } from 'src/validation';
|
||||
|
||||
export class MapReverseGeocodeDto {
|
||||
@ApiProperty({ format: 'double' })
|
||||
@Type(() => Number)
|
||||
@IsLatitude({ message: ({ property }) => `${property} must be a number between -90 and 90` })
|
||||
lat!: number;
|
||||
|
||||
@ApiProperty({ format: 'double' })
|
||||
@Type(() => Number)
|
||||
@IsLongitude({ message: ({ property }) => `${property} must be a number between -180 and 180` })
|
||||
lon!: number;
|
||||
}
|
||||
|
||||
export class MapReverseGeocodeResponseDto {
|
||||
@ApiProperty()
|
||||
city!: string | null;
|
||||
|
||||
@ApiProperty()
|
||||
state!: string | null;
|
||||
|
||||
@ApiProperty()
|
||||
country!: string | null;
|
||||
}
|
||||
|
||||
export class MapMarkerDto {
|
||||
@ValidateBoolean({ optional: true })
|
||||
isArchived?: boolean;
|
||||
|
||||
@ValidateBoolean({ optional: true })
|
||||
isFavorite?: boolean;
|
||||
|
||||
@ValidateDate({ optional: true })
|
||||
fileCreatedAfter?: Date;
|
||||
|
||||
@ValidateDate({ optional: true })
|
||||
fileCreatedBefore?: Date;
|
||||
|
||||
@ValidateBoolean({ optional: true })
|
||||
withPartners?: boolean;
|
||||
|
||||
@ValidateBoolean({ optional: true })
|
||||
withSharedAlbums?: boolean;
|
||||
}
|
||||
|
||||
export class MapMarkerResponseDto {
|
||||
@ApiProperty()
|
||||
id!: string;
|
||||
|
||||
@ApiProperty({ format: 'double' })
|
||||
lat!: number;
|
||||
|
||||
@ApiProperty({ format: 'double' })
|
||||
lon!: number;
|
||||
|
||||
@ApiProperty()
|
||||
city!: string | null;
|
||||
|
||||
@ApiProperty()
|
||||
state!: string | null;
|
||||
|
||||
@ApiProperty()
|
||||
country!: string | null;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
|
||||
import { Type } from 'class-transformer';
|
||||
import { IsArray, IsInt, IsNotEmpty, IsString, Max, MaxDate, Min, ValidateNested } from 'class-validator';
|
||||
import { IsArray, IsInt, IsNotEmpty, IsString, Max, Min, ValidateNested } from 'class-validator';
|
||||
import { PropertyLifecycle } from 'src/decorators';
|
||||
import { AuthDto } from 'src/dtos/auth.dto';
|
||||
import { AssetFaceEntity } from 'src/entities/asset-face.entity';
|
||||
import { PersonEntity } from 'src/entities/person.entity';
|
||||
import { Optional, ValidateBoolean, ValidateDate, ValidateUUID } from 'src/validation';
|
||||
import { IsDateStringFormat, MaxDateString, Optional, ValidateBoolean, ValidateUUID } from 'src/validation';
|
||||
|
||||
export class PersonCreateDto {
|
||||
/**
|
||||
@@ -19,9 +19,11 @@ export class PersonCreateDto {
|
||||
* Person date of birth.
|
||||
* Note: the mobile app cannot currently set the birth date to null.
|
||||
*/
|
||||
@MaxDate(() => new Date(), { message: 'Birth date cannot be in the future' })
|
||||
@ValidateDate({ optional: true, nullable: true, format: 'date' })
|
||||
birthDate?: Date | null;
|
||||
@ApiProperty({ format: 'date' })
|
||||
@MaxDateString(() => new Date(), { message: 'Birth date cannot be in the future' })
|
||||
@IsDateStringFormat('yyyy-MM-dd')
|
||||
@Optional({ nullable: true })
|
||||
birthDate?: string | null;
|
||||
|
||||
/**
|
||||
* Person visibility
|
||||
@@ -84,7 +86,7 @@ export class PersonResponseDto {
|
||||
id!: string;
|
||||
name!: string;
|
||||
@ApiProperty({ format: 'date' })
|
||||
birthDate!: Date | null;
|
||||
birthDate!: string | null;
|
||||
thumbnailPath!: string;
|
||||
isHidden!: boolean;
|
||||
@PropertyLifecycle({ addedAt: 'v1.107.0' })
|
||||
|
||||
@@ -289,26 +289,6 @@ export class SearchExploreResponseDto {
|
||||
items!: SearchExploreItem[];
|
||||
}
|
||||
|
||||
export class MapMarkerDto {
|
||||
@ValidateBoolean({ optional: true })
|
||||
isArchived?: boolean;
|
||||
|
||||
@ValidateBoolean({ optional: true })
|
||||
isFavorite?: boolean;
|
||||
|
||||
@ValidateDate({ optional: true })
|
||||
fileCreatedAfter?: Date;
|
||||
|
||||
@ValidateDate({ optional: true })
|
||||
fileCreatedBefore?: Date;
|
||||
|
||||
@ValidateBoolean({ optional: true })
|
||||
withPartners?: boolean;
|
||||
|
||||
@ValidateBoolean({ optional: true })
|
||||
withSharedAlbums?: boolean;
|
||||
}
|
||||
|
||||
export class MemoryLaneDto {
|
||||
@IsInt()
|
||||
@Type(() => Number)
|
||||
@@ -324,22 +304,3 @@ export class MemoryLaneDto {
|
||||
@ApiProperty({ type: 'integer' })
|
||||
month!: number;
|
||||
}
|
||||
export class MapMarkerResponseDto {
|
||||
@ApiProperty()
|
||||
id!: string;
|
||||
|
||||
@ApiProperty({ format: 'double' })
|
||||
lat!: number;
|
||||
|
||||
@ApiProperty({ format: 'double' })
|
||||
lon!: number;
|
||||
|
||||
@ApiProperty()
|
||||
city!: string | null;
|
||||
|
||||
@ApiProperty()
|
||||
state!: string | null;
|
||||
|
||||
@ApiProperty()
|
||||
country!: string | null;
|
||||
}
|
||||
|
||||
@@ -1,21 +1,8 @@
|
||||
import {
|
||||
Body,
|
||||
Button,
|
||||
Column,
|
||||
Container,
|
||||
Head,
|
||||
Hr,
|
||||
Html,
|
||||
Img,
|
||||
Link,
|
||||
Preview,
|
||||
Row,
|
||||
Section,
|
||||
Text,
|
||||
} from '@react-email/components';
|
||||
import * as CSS from 'csstype';
|
||||
import { Img, Link, Section, Text } from '@react-email/components';
|
||||
import * as React from 'react';
|
||||
import { AlbumInviteEmailProps } from 'src/interfaces/notification.interface';
|
||||
import { ImmichButton } from './components/button.component';
|
||||
import ImmichLayout from './components/immich.layout';
|
||||
|
||||
export const AlbumInviteEmail = ({
|
||||
baseUrl,
|
||||
@@ -25,122 +12,37 @@ export const AlbumInviteEmail = ({
|
||||
albumId,
|
||||
cid,
|
||||
}: AlbumInviteEmailProps) => (
|
||||
<Html>
|
||||
<Head />
|
||||
<Preview>You have been added to a shared album.</Preview>
|
||||
<Body
|
||||
style={{
|
||||
margin: 0,
|
||||
padding: 0,
|
||||
backgroundColor: '#ffffff',
|
||||
color: 'rgb(28,28,28)',
|
||||
fontFamily: 'Overpass, sans-serif',
|
||||
fontSize: '18px',
|
||||
lineHeight: '24px',
|
||||
}}
|
||||
>
|
||||
<Container
|
||||
style={{
|
||||
width: '540px',
|
||||
maxWidth: '100%',
|
||||
padding: '10px',
|
||||
margin: '0 auto',
|
||||
}}
|
||||
>
|
||||
<Section
|
||||
<ImmichLayout preview="You have been added to a shared album.">
|
||||
<Text className="m-0">
|
||||
Hey <strong>{recipientName}</strong>!
|
||||
</Text>
|
||||
|
||||
<Text>
|
||||
{senderName} has added you to the album <strong>{albumName}</strong>.
|
||||
</Text>
|
||||
|
||||
{cid && (
|
||||
<Section className="flex justify-center my-0">
|
||||
<Img
|
||||
className="max-w-[300px] w-full rounded-lg"
|
||||
src={`cid:${cid}`}
|
||||
style={{
|
||||
padding: '36px',
|
||||
tableLayout: 'fixed',
|
||||
backgroundColor: 'rgb(226, 232, 240)',
|
||||
border: 'solid 0px rgb(248 113 113)',
|
||||
borderRadius: '50px',
|
||||
textAlign: 'center' as const,
|
||||
boxShadow: 'rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px',
|
||||
}}
|
||||
>
|
||||
<Img
|
||||
src="https://immich.app/img/immich-logo-inline-light.png"
|
||||
alt="Immich"
|
||||
style={{
|
||||
height: 'auto',
|
||||
margin: '0 auto 48px auto',
|
||||
width: '50%',
|
||||
alignSelf: 'center',
|
||||
color: 'white',
|
||||
}}
|
||||
/>
|
||||
/>
|
||||
</Section>
|
||||
)}
|
||||
|
||||
<Text style={text}>Hey {recipientName}!</Text>
|
||||
<Section className="flex justify-center my-6">
|
||||
<ImmichButton href={`${baseUrl}/albums/${albumId}`}>View Album</ImmichButton>
|
||||
</Section>
|
||||
|
||||
<Text style={text}>
|
||||
{senderName} has added you to the album <strong>{albumName}</strong>.
|
||||
</Text>
|
||||
|
||||
{cid && (
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Img
|
||||
src={`cid:${cid}`}
|
||||
width="300"
|
||||
style={{
|
||||
borderRadius: '20px',
|
||||
boxShadow: 'rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px',
|
||||
}}
|
||||
/>
|
||||
</Column>
|
||||
</Row>
|
||||
)}
|
||||
|
||||
<Row style={{ marginBottom: '36px', marginTop: '36px' }}>
|
||||
<Text style={{ ...text }}>To view the album, open the link in a browser, or click the button below.</Text>
|
||||
</Row>
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Link style={{ marginTop: '50px' }} href={`${baseUrl}/albums/${albumId}`}>
|
||||
{baseUrl}/albums/{albumId}
|
||||
</Link>
|
||||
</Column>
|
||||
</Row>
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Button style={button} href={`${baseUrl}/albums/${albumId}`}>
|
||||
View album
|
||||
</Button>
|
||||
</Column>
|
||||
</Row>
|
||||
</Section>
|
||||
|
||||
<Hr style={{ color: 'rgb(66, 80, 175)', marginTop: '24px' }} />
|
||||
|
||||
<Section style={{ textAlign: 'center' }}>
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Link href="https://play.google.com/store/apps/details?id=app.alextran.immich">
|
||||
<Img src={`https://immich.app/img/google-play-badge.png`} height="96px" alt="Immich" />
|
||||
</Link>
|
||||
<Link href="https://apps.apple.com/sg/app/immich/id1613945652">
|
||||
<Img
|
||||
src={`https://immich.app/img/ios-app-store-badge.png`}
|
||||
alt="Immich"
|
||||
style={{ height: '72px', padding: '14px' }}
|
||||
/>
|
||||
</Link>
|
||||
</Column>
|
||||
</Row>
|
||||
</Section>
|
||||
|
||||
<Text
|
||||
style={{
|
||||
color: '#6a737d',
|
||||
fontSize: '0.8rem',
|
||||
textAlign: 'center' as const,
|
||||
marginTop: '12px',
|
||||
}}
|
||||
>
|
||||
<Link href="https://immich.app">Immich</Link> project is available under GNU AGPL v3 license.
|
||||
</Text>
|
||||
</Container>
|
||||
</Body>
|
||||
</Html>
|
||||
<Text className="text-xs">
|
||||
If you cannot click the button use the link below to view the album.
|
||||
<br />
|
||||
<Link href={`${baseUrl}/albums/${albumId}`}>{`${baseUrl}/albums/${albumId}`}</Link>
|
||||
</Text>
|
||||
</ImmichLayout>
|
||||
);
|
||||
|
||||
AlbumInviteEmail.PreviewProps = {
|
||||
@@ -148,27 +50,7 @@ AlbumInviteEmail.PreviewProps = {
|
||||
albumName: 'Trip to Europe',
|
||||
albumId: 'b63f6dae-e1c9-401b-9a85-9dbbf5612539',
|
||||
senderName: 'Owner User',
|
||||
recipientName: 'Guest User',
|
||||
cid: '',
|
||||
recipientName: 'Alan Turing',
|
||||
} as AlbumInviteEmailProps;
|
||||
|
||||
export default AlbumInviteEmail;
|
||||
|
||||
const text = {
|
||||
margin: '0 0 24px 0',
|
||||
textAlign: 'left' as const,
|
||||
fontSize: '18px',
|
||||
lineHeight: '24px',
|
||||
};
|
||||
|
||||
const button: CSS.Properties = {
|
||||
backgroundColor: 'rgb(66, 80, 175)',
|
||||
margin: '1em 0',
|
||||
padding: '0.75em 3em',
|
||||
color: '#fff',
|
||||
fontSize: '1em',
|
||||
fontWeight: 700,
|
||||
lineHeight: 1.5,
|
||||
textTransform: 'uppercase',
|
||||
borderRadius: '9999px',
|
||||
};
|
||||
|
||||
@@ -1,165 +1,49 @@
|
||||
import {
|
||||
Body,
|
||||
Button,
|
||||
Column,
|
||||
Container,
|
||||
Head,
|
||||
Hr,
|
||||
Html,
|
||||
Img,
|
||||
Link,
|
||||
Preview,
|
||||
Row,
|
||||
Section,
|
||||
Text,
|
||||
} from '@react-email/components';
|
||||
import * as CSS from 'csstype';
|
||||
import { Img, Link, Section, Text } from '@react-email/components';
|
||||
import * as React from 'react';
|
||||
import { AlbumUpdateEmailProps } from 'src/interfaces/notification.interface';
|
||||
import { ImmichButton } from './components/button.component';
|
||||
import ImmichLayout from './components/immich.layout';
|
||||
|
||||
export const AlbumUpdateEmail = ({ baseUrl, albumName, recipientName, albumId, cid }: AlbumUpdateEmailProps) => (
|
||||
<Html>
|
||||
<Head />
|
||||
<Preview>New media has been added to a shared album.</Preview>
|
||||
<Body
|
||||
style={{
|
||||
margin: 0,
|
||||
padding: 0,
|
||||
backgroundColor: '#ffffff',
|
||||
color: 'rgb(28,28,28)',
|
||||
fontFamily: 'Overpass, sans-serif',
|
||||
fontSize: '18px',
|
||||
lineHeight: '24px',
|
||||
}}
|
||||
>
|
||||
<Container
|
||||
style={{
|
||||
width: '540px',
|
||||
maxWidth: '100%',
|
||||
padding: '10px',
|
||||
margin: '0 auto',
|
||||
}}
|
||||
>
|
||||
<Section
|
||||
<ImmichLayout preview="New media has been added to a shared album.">
|
||||
<Text className="m-0">
|
||||
Hey <strong>{recipientName}</strong>!
|
||||
</Text>
|
||||
|
||||
<Text>
|
||||
New media has been added to <strong>{albumName}</strong>,
|
||||
<br /> check it out!
|
||||
</Text>
|
||||
|
||||
{cid && (
|
||||
<Section className="flex justify-center my-0">
|
||||
<Img
|
||||
className="max-w-[300px] w-full rounded-lg"
|
||||
src={`cid:${cid}`}
|
||||
style={{
|
||||
padding: '36px',
|
||||
tableLayout: 'fixed',
|
||||
backgroundColor: 'rgb(226, 232, 240)',
|
||||
border: 'solid 0px rgb(248 113 113)',
|
||||
borderRadius: '50px',
|
||||
textAlign: 'center' as const,
|
||||
boxShadow: 'rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px',
|
||||
}}
|
||||
>
|
||||
<Img
|
||||
src="https://immich.app/img/immich-logo-inline-light.png"
|
||||
alt="Immich"
|
||||
style={{
|
||||
height: 'auto',
|
||||
margin: '0 auto 48px auto',
|
||||
width: '50%',
|
||||
alignSelf: 'center',
|
||||
color: 'white',
|
||||
}}
|
||||
/>
|
||||
/>
|
||||
</Section>
|
||||
)}
|
||||
|
||||
<Text style={text}>Hey {recipientName}!</Text>
|
||||
<Section className="flex justify-center my-6">
|
||||
<ImmichButton href={`${baseUrl}/albums/${albumId}`}>View Album</ImmichButton>
|
||||
</Section>
|
||||
|
||||
<Text style={text}>
|
||||
New media has been added to <strong>{albumName}</strong>, check it out!
|
||||
</Text>
|
||||
|
||||
{cid && (
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Img
|
||||
src={`cid:${cid}`}
|
||||
width="300"
|
||||
style={{
|
||||
borderRadius: '20px',
|
||||
boxShadow: 'rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px',
|
||||
}}
|
||||
/>
|
||||
</Column>
|
||||
</Row>
|
||||
)}
|
||||
|
||||
<Row style={{ marginBottom: '36px', marginTop: '36px' }}>
|
||||
<Text style={{ ...text }}>To view the album, open the link in a browser, or click the button below.</Text>
|
||||
</Row>
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Link style={{ marginTop: '50px' }} href={`${baseUrl}/albums/${albumId}`}>
|
||||
{baseUrl}/albums/{albumId}
|
||||
</Link>
|
||||
</Column>
|
||||
</Row>
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Button style={button} href={`${baseUrl}/albums/${albumId}`}>
|
||||
View album
|
||||
</Button>
|
||||
</Column>
|
||||
</Row>
|
||||
</Section>
|
||||
|
||||
<Hr style={{ color: 'rgb(66, 80, 175)', marginTop: '24px' }} />
|
||||
|
||||
<Section style={{ textAlign: 'center' }}>
|
||||
<Row>
|
||||
<Column align="center">
|
||||
<Link href="https://play.google.com/store/apps/details?id=app.alextran.immich">
|
||||
<Img src={`https://immich.app/img/google-play-badge.png`} height="96px" alt="Immich" />
|
||||
</Link>
|
||||
<Link href="https://apps.apple.com/sg/app/immich/id1613945652">
|
||||
<Img
|
||||
src={`https://immich.app/img/ios-app-store-badge.png`}
|
||||
alt="Immich"
|
||||
style={{ height: '72px', padding: '14px' }}
|
||||
/>
|
||||
</Link>
|
||||
</Column>
|
||||
</Row>
|
||||
</Section>
|
||||
|
||||
<Text
|
||||
style={{
|
||||
color: '#6a737d',
|
||||
fontSize: '0.8rem',
|
||||
textAlign: 'center' as const,
|
||||
marginTop: '12px',
|
||||
}}
|
||||
>
|
||||
<Link href="https://immich.app">Immich</Link> project is available under GNU AGPL v3 license.
|
||||
</Text>
|
||||
</Container>
|
||||
</Body>
|
||||
</Html>
|
||||
<Text className="text-xs">
|
||||
If you cannot click the button use the link below to view the album.
|
||||
<br />
|
||||
<Link href={`${baseUrl}/albums/${albumId}`}>{`${baseUrl}/albums/${albumId}`}</Link>
|
||||
</Text>
|
||||
</ImmichLayout>
|
||||
);
|
||||
|
||||
AlbumUpdateEmail.PreviewProps = {
|
||||
baseUrl: 'https://demo.immich.app',
|
||||
albumName: 'Trip to Europe',
|
||||
albumId: 'b63f6dae-e1c9-401b-9a85-9dbbf5612539',
|
||||
recipientName: 'Alex Tran',
|
||||
recipientName: 'Alan Turing',
|
||||
} as AlbumUpdateEmailProps;
|
||||
|
||||
export default AlbumUpdateEmail;
|
||||
|
||||
const text = {
|
||||
margin: '0 0 24px 0',
|
||||
textAlign: 'left' as const,
|
||||
fontSize: '18px',
|
||||
lineHeight: '24px',
|
||||
};
|
||||
|
||||
const button: CSS.Properties = {
|
||||
backgroundColor: 'rgb(66, 80, 175)',
|
||||
margin: '1em 0',
|
||||
padding: '0.75em 3em',
|
||||
color: '#fff',
|
||||
fontSize: '1em',
|
||||
fontWeight: 700,
|
||||
lineHeight: 1.5,
|
||||
textTransform: 'uppercase',
|
||||
borderRadius: '9999px',
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user